Example #1
0
def doPlot():

    #print "Read Ploting Region information"
    #print "===============================\n"

    vars = (config.get(section, 'vars')).split(
        ',')  #get the variables to be ploted in each region
    #print "The variables are", vars, "\n"
    data = eval(config.get(
        section, 'Datas'))  # read the data corresponding to each CR (section)
    mc = eval(config.get('Plot_general',
                         'samples'))  # read the list of mc samples
    total_lumi = eval(config.get('Plot_general', 'lumi'))
    #print 'total lumi is', total_lumi
    print "The list of mc samples is", mc

    #print "Check if is Signal Region"
    #print "=========================\n"
    SignalRegion = False
    if config.has_option(section, 'Signal'):
        mc.append(config.get(section, 'Signal'))
        SignalRegion = True
    #print "After addind the signal, the mc is", mc

    #print "Getting information on data and mc samples"
    #print "==========================================\n"

    #print "Getting data sample"
    datasamples = info.get_samples(data)
    #print "datasamples is\n", datasamples
    #print "Getting mc sample"
    mcsamples = info.get_samples(mc)
    #print "mc sample is\n"
    #for sample in mcsamples:
    #print "sample name", sample.name

    GroupDict = eval(
        config.get('Plot_general', 'Group')
    )  #Contained in plots. Listed in general, under Group [Samples] group. This is a dictionnary that descriebes what samples should share the same color under the stack plot.

    #GETALL AT ONCE
    options = []
    Stacks = []
    #print "Start Loop over the list of variables(to fill the StackMaker )" print "==============================================================\n"
    for i in range(
            len(vars)
    ):  # loop over the list of variables to be ploted in each reagion
        #print "The variable is ", vars[i], "\n"
        Stacks.append(
            StackMaker(config, vars[i], region, SignalRegion)
        )  # defined in myutils DoubleStackMaker. The StackMaker merge together all the informations necessary to perform the plot (plot region, variables, samples and signal region ). "options" contains the variables information, including the cuts.
        options.append(Stacks[i].options)
    #print "Finished Loop over the list of variables(to fill the StackMaker )"
    #print "================================================================\n"
    #print 'loop options',options
    # print 'options',options

    #Prepare cached files in the temporary (tmpSamples) folder.
    Plotter = HistoMaker(mcsamples + datasamples, path, config, options,
                         GroupDict, filelist, opts.mergeplot)
    if len(filelist) > 0 or opts.mergeplot:
        print('ONLY CACHING PERFORMED, EXITING')
        sys.exit(1)

    #print '\nProducing Plot of %s\n'%vars[v]
    Lhistos = [[] for _ in range(0, len(vars))]
    Ltyps = [[] for _ in range(0, len(vars))]
    Ldatas = [[] for _ in range(0, len(vars))]
    Ldatatyps = [[] for _ in range(0, len(vars))]
    Ldatanames = [[] for _ in range(0, len(vars))]
    Ljobnames = [[] for _ in range(0, len(vars))]

    #print "Summing up the Luminosity"
    #print "=========================\n"

    #! Sums up the luminosity of the data:
    lumicounter = 0.
    lumi = 0.
    if datasamples == []:
        lumi = total_lumi
    else:
        print "Will run over datasamples to sum up the lumi"
        for job in datasamples:
            print "Datasample is", job
            lumi += float(job.lumi)
            lumicounter += 1.
        if lumicounter > 0:
            lumi = lumi / lumicounter

    print "The lumi is", lumi, "\n"

    Plotter.lumi = lumi
    mass = Stacks[0].mass

    #print 'mcsamples',mcsamples
    inputs = []
    for job in mcsamples:
        #        print 'job.name'
        #        cutOverWrite = None
        #        if addBlindingCut:
        #            cutOverWrite = config.get('Cuts',region)+' & ' + addBlindingCut
        inputs.append((Plotter, "get_histos_from_tree", (job, True)))

    #print 'inputs are', inputs

    # if('pisa' in config.get('Configuration','whereToLaunch')):
    multiprocess = int(config.get('Configuration', 'nprocesses'))
    #    multiprocess=0
    outputs = []
    if multiprocess > 1:
        from multiprocessing import Pool
        from myutils import GlobalFunction
        p = Pool(multiprocess)
        #print 'launching get_histos_from_tree with ',multiprocess,' processes'
        outputs = p.map(GlobalFunction, inputs)
    else:
        #print 'launching get_histos_from_tree with ',multiprocess,' processes'
        for input_ in inputs:
            outputs.append(getattr(
                input_[0],
                input_[1])(*input_[2]))  #ie. Plotter.get_histos_from_tree(job)
    #print 'get_histos_from_tree DONE'
    Overlaylist = []
    for i, job in enumerate(mcsamples):
        #print 'job.name',job.name,"mass==",mass
        #hTempList, typList = Plotter.get_histos_from_tree(job)
        hDictList = outputs[i]
        if job.name in mass:
            #print 'job.name == mass'
            histoList = []
            for v in range(0, len(vars)):
                histoCopy = deepcopy(hDictList[v].values()[0])
                histoCopy.SetTitle(job.name)
                histoList.append(histoCopy)
            Overlaylist.append(histoList)
#            Overlaylist.append(deepcopy([hDictList[v].values()[0] for v in range(0,len(vars))]))
# >>>>>>> silviodonato/master
        for v in range(0, len(vars)):
            Lhistos[v].append(hDictList[v].values()[0])
            Ltyps[v].append(hDictList[v].keys()[0])
            Ljobnames[v].append(job.name)

    #print "len(vars)=",len(vars)
    #print "Ltyps is", Ltyps
    ##invert Overlaylist[variable][job] -> Overlaylist[job][variable]
    #print "len(Overlaylist) before: ",len(Overlaylist)
    #print "Overlaylist",Overlaylist
#    newOverlaylist = [[None]*len(Overlaylist)]*len(vars)
#    for i,OverlaySameSample in enumerate(Overlaylist):
#            for j,Overlay in enumerate(OverlaySameSample):
#                newOverlaylist[j][i] = Overlay
#    Overlaylist = newOverlaylist
    Overlaylist = [list(a) for a in zip(*Overlaylist)]
    #print "len(Overlaylist) after: ",len(Overlaylist)
    #print "Overlaylist",Overlaylist

    ##merge overlays in groups
    for i in range(len(Overlaylist)):
        newhistos = {}
        #print "len(Overlaylist[i]):",Overlaylist[i]
        for histo in Overlaylist[i]:
            #print "histo.GetName()",histo.GetName(),
            #print "histo.GetTitle()",histo.GetTitle(),
            group = GroupDict[histo.GetTitle()]
            if not group in newhistos.keys():
                histo.SetTitle(group)
                newhistos[group] = histo
            else:
                #print "Before newhistos[group].Integral()",newhistos[group].Integral(),
                newhistos[group].Add(histo)
                #print "After newhistos[group].Integral()",newhistos[group].Integral()
        Overlaylist[i] = newhistos.values()

#   ### ORIGINAL ###
#    print 'mcsamples',mcsamples
#    for job in mcsamples:
#        print 'job.name',job.name
#        #hTempList, typList = Plotter.get_histos_from_tree(job)
#        if addBlindingCut:
#            hDictList = Plotter.get_histos_from_tree(job,config.get('Cuts',region)+' & ' + addBlindingCut)
#        else:
#            print 'going to get_histos_from_tree'
#            hDictList = Plotter.get_histos_from_tree(job)
#        if job.name == mass:
#            print 'job.name', job.name
#            Overlaylist= deepcopy([hDictList[v].values()[0] for v in range(0,len(vars))])
#        for v in range(0,len(vars)):
#            Lhistos[v].append(hDictList[v].values()[0])
#            Ltyps[v].append(hDictList[v].keys()[0])
#            Ljobnames[v].append(job.name)

#print "DATA samples\n"
#! Get the data histograms
    for job in datasamples:
        if addBlindingCut:
            dDictList = Plotter.get_histos_from_tree(
                job,
                config.get('Cuts', region) + ' & ' + addBlindingCut)
        else:
            dDictList = Plotter.get_histos_from_tree(job)
        #! add the variables list for each job (Samples)
        for v in range(0, len(vars)):
            Ldatas[v].append(dDictList[v].values()[0])
            Ldatatyps[v].append(dDictList[v].keys()[0])
            Ldatanames[v].append(job.name)

    for v in range(0, len(vars)):

        #print "Ltyps[v]:",Ltyps[v]
        #print "Lhistos[v]:",Lhistos[v]
        #print "Ldatas[v]:",Ldatas[v]
        #print "Ldatatyps[v]:",Ldatatyps[v]
        #print "Ldatanames[v]:",Ldatanames[v]
        #print "lumi:",lumi

        histos = Lhistos[v]
        typs = Ltyps[v]
        Stacks[v].histos = Lhistos[v]
        Stacks[v].typs = Ltyps[v]
        Stacks[v].datas = Ldatas[v]
        Stacks[v].datatyps = Ldatatyps[v]
        Stacks[v].datanames = Ldatanames[v]
        if SignalRegion:
            Stacks[v].overlay = Overlaylist[v]  ## from
        Stacks[v].lumi = lumi
        Stacks[v].jobnames = Ljobnames[v]
        Stacks[v].normalize = eval(config.get(section, 'Normalize'))
        Stacks[v].doPlot()
        ##FIXME##
        #        Stacks[v].histos = Lhistos[v]
        #        Stacks[v].typs = Ltyps[v]
        #        Stacks[v].datas = Ldatas[v]
        #        Stacks[v].datatyps = Ldatatyps[v]
        #        Stacks[v].datanames= Ldatanames[v]
        #        Stacks[v].normalize = True
        #        Stacks[v].options['pdfName'] = Stacks[v].options['pdfName'].replace('.pdf','_norm.pdf')
        #        Stacks[v].doPlot()
        print 'i am done!\n'
    print 'DOPLOT END'
Example #2
0
def doPlot():
    #print "Read Ploting Region information"
    #print "===============================\n"

    if var_to_plot_:
        vars = [var_to_plot_]
    else:
        vars = (config.get(section, 'vars')).split(',')#get the variables to be ploted in each region
    print "The variables are", vars, "\n"
    data = eval(config.get(section,'Datas'))# read the data corresponding to each CR (section)
    mc = eval(config.get('Plot_general','samples'))# read the list of mc samples
    total_lumi = eval(config.get('Plot_general','lumi'))
    #print 'total lumi is', total_lumi
    print "The list of mc samples is", mc

    remove_sys_ = eval(config.get('Plot_general','remove_sys'))
    #print "Check if is Signal Region"
    #print "=========================\n"
    SignalRegion = False
    if config.has_option(section,'Signal'):
        mc.append(config.get(section,'Signal'))
        SignalRegion = True
    #print "After addind the signal, the mc is", mc

    #print "Getting information on data and mc samples"
    #print "==========================================\n"
           
    #print "Getting data sample"
    datasamples = info.get_samples(data)
    #print "datasamples is\n", datasamples
    #print "Getting mc sample"
    mcsamples = info.get_samples(mc)
    #print "mc sample is\n"
    #for sample in mcsamples:
      #print "sample name", sample.name

    GroupDict = eval(config.get('Plot_general','Group'))#Contained in plots. Listed in general, under Group [Samples] group. This is a dictionnary that descriebes what samples should share the same color under the stack plot.


    #GETALL AT ONCE
    options = []
    Stacks = []
    #print "Start Loop over the list of variables(to fill the StackMaker )" print "==============================================================\n"
    for i in range(len(vars)):# loop over the list of variables to be ploted in each reagion
        #print "The variable is ", vars[i], "\n"
        Stacks.append(StackMaker(config,vars[i],region,SignalRegion, None, '_'+subcut_plotname))# defined in myutils DoubleStackMaker. The StackMaker merge together all the informations necessary to perform the plot (plot region, variables, samples and signal region ). "options" contains the variables information, including the cuts.
        options.append(Stacks[i].options)
    #print "Finished Loop over the list of variables(to fill the StackMaker )"
    #print "================================================================\n"

    #Prepare cached files in the temporary (tmpSamples) folder.
    #def __init__(self, samples, path, config, optionsList, GroupDict=None, filelist=None, mergeplot=False, sample_to_merge=None, mergecaching=False):

    Plotter=HistoMaker(samples=mcsamples+datasamples, path=path, config=config, optionsList=options, GroupDict=GroupDict, filelist=filelist, mergeplot=opts.mergeplot, sample_to_merge=sample_to_merge_, mergeCachingPart=mergeCachingPart, plotMergeCached = opts.mergecachingplot, branch_to_keep=None, dccut=None,remove_sys=remove_sys_)
    if len(filelist)>0 or opts.mergeplot:
        print('ONLY CACHING PERFORMED, EXITING');
        sys.exit(1)

    #print '\nProducing Plot of %s\n'%vars[v]
    Lhistos = [[] for _ in range(0,len(vars))]
    Ltyps = [[] for _ in range(0,len(vars))]
    Ldatas = [[] for _ in range(0,len(vars))]
    Ldatatyps = [[] for _ in range(0,len(vars))]
    Ldatanames = [[] for _ in range(0,len(vars))]
    Ljobnames = [[] for _ in range(0,len(vars))]

    #print "Summing up the Luminosity"
    #print "=========================\n"

    #! Sums up the luminosity of the data:
    lumicounter=0.
    lumi=0.
    if datasamples == []:
        lumi = total_lumi
    else:
        print "Will run over datasamples to sum up the lumi"
        for job in datasamples:
            print "Datasample is", job
            lumi+=float(job.lumi)
            lumicounter+=1.
        if lumicounter > 0:
            lumi=lumi/lumicounter
    
    print "The lumi is", lumi, "\n"

    Plotter.lumi=lumi
    mass = Stacks[0].mass

    #print 'mcsamples',mcsamples
    inputs=[]
    for job in mcsamples:
#        print 'job.name'
#        cutOverWrite = None
#        if addBlindingCut:
#            cutOverWrite = config.get('Cuts',region)+' & ' + addBlindingCut
        inputs.append((Plotter,"get_histos_from_tree",(job,True, subcut_, '1')))

    #print 'inputs are', inputs
    
    # if('pisa' in config.get('Configuration','whereToLaunch')):
    multiprocess=int(config.get('Configuration','nprocesses'))
#    multiprocess=0

    start_time = time.time()
    outputs = []
    if multiprocess>1:
        from multiprocessing import Pool
        from myutils import GlobalFunction
        p = Pool(multiprocess)
        #print 'launching get_histos_from_tree with ',multiprocess,' processes'
        outputs = p.map(GlobalFunction, inputs)
    else:
        #print 'launching get_histos_from_tree with ',multiprocess,' processes'
        for input_ in  inputs:
            outputs.append(getattr(input_[0],input_[1])(*input_[2])) #ie. Plotter.get_histos_from_tree(job)
    #print 'get_histos_from_tree DONE'
    Overlaylist = []

    print "All histograms retrived. DONE in ", str(time.time() - start_time)," s."

    start_time = time.time()

    for i,job in enumerate(mcsamples):
        hDictList = outputs[i]
        if job.name in mass:
            histoList = []
            for v in range(0,len(vars)):
                histoCopy = deepcopy(hDictList[v].values()[0])
                histoCopy.SetTitle(job.name)
                histoList.append(histoCopy)
            Overlaylist.append(histoList)
        for v in range(0,len(vars)):
            Lhistos[v].append(hDictList[v].values()[0])
            Ltyps[v].append(hDictList[v].keys()[0])
            Ljobnames[v].append(job.name)
    
    #print "len(vars)=",len(vars)
    #print "Ltyps is", Ltyps
    ##invert Overlaylist[variable][job] -> Overlaylist[job][variable]
    #print "len(Overlaylist) before: ",len(Overlaylist)
    #print "Overlaylist",Overlaylist
#    newOverlaylist = [[None]*len(Overlaylist)]*len(vars)
#    for i,OverlaySameSample in enumerate(Overlaylist):
#            for j,Overlay in enumerate(OverlaySameSample):
#                newOverlaylist[j][i] = Overlay    
#    Overlaylist = newOverlaylist
    Overlaylist = [list(a) for a in zip(*Overlaylist)]
    #print "len(Overlaylist) after: ",len(Overlaylist)
    #print "Overlaylist",Overlaylist
    
    ##merge overlays in groups 
    for i in range(len(Overlaylist)):
        newhistos = {}
        #print "len(Overlaylist[i]):",Overlaylist[i]
        for histo in Overlaylist[i]:
            #print "histo.GetName()",histo.GetName(),
            #print "histo.GetTitle()",histo.GetTitle(),
            group = GroupDict[histo.GetTitle()]
            if not group in newhistos.keys():
                histo.SetTitle(group)
                newhistos[group]=histo
            else:
                #print "Before newhistos[group].Integral()",newhistos[group].Integral(),
                newhistos[group].Add(histo)
                #print "After newhistos[group].Integral()",newhistos[group].Integral()
        Overlaylist[i] = newhistos.values()
        


#   ### ORIGINAL ###
#    print 'mcsamples',mcsamples
#    for job in mcsamples:
#        print 'job.name',job.name
#        #hTempList, typList = Plotter.get_histos_from_tree(job)
#        if addBlindingCut:
#            hDictList = Plotter.get_histos_from_tree(job,config.get('Cuts',region)+' & ' + addBlindingCut)
#        else:
#            print 'going to get_histos_from_tree'
#            hDictList = Plotter.get_histos_from_tree(job)
#        if job.name == mass:
#            print 'job.name', job.name
#            Overlaylist= deepcopy([hDictList[v].values()[0] for v in range(0,len(vars))])
#        for v in range(0,len(vars)):
#            Lhistos[v].append(hDictList[v].values()[0])
#            Ltyps[v].append(hDictList[v].keys()[0])
#            Ljobnames[v].append(job.name)


    #print "DATA samples\n"
    #! Get the data histograms
    for job in datasamples:
        if addBlindingCut:
            if subcut_: dDictList = Plotter.get_histos_from_tree(job,True, config.get('Cuts',region)+' & ' + addBlindingCut +' & ' + subcut_)
            else: dDictList = Plotter.get_histos_from_tree(job, True, config.get('Cuts',region)+' & ' + addBlindingCut, '1')
        else:
            if subcut_: dDictList = Plotter.get_histos_from_tree(job, True, config.get('Cuts',region)+' & ' + subcut_)
            else: dDictList = Plotter.get_histos_from_tree(job, True, None, '1')
        #! add the variables list for each job (Samples)
        for v in range(0,len(vars)):
            Ldatas[v].append(dDictList[v].values()[0])
            Ldatatyps[v].append(dDictList[v].keys()[0])
            Ldatanames[v].append(job.name)

    for v in range(0,len(vars)):

        #print "Ltyps[v]:",Ltyps[v]
        #print "Lhistos[v]:",Lhistos[v]
        #print "Ldatas[v]:",Ldatas[v]
        #print "Ldatatyps[v]:",Ldatatyps[v]
        #print "Ldatanames[v]:",Ldatanames[v]
        #print "lumi:",lumi

        histos = Lhistos[v]
        typs = Ltyps[v]
        Stacks[v].histos = Lhistos[v]
        Stacks[v].typs = Ltyps[v]
        Stacks[v].datas = Ldatas[v]
        Stacks[v].datatyps = Ldatatyps[v]
        Stacks[v].datanames= Ldatanames[v]
        try:
          if SignalRegion:
            Stacks[v].overlay = Overlaylist[v] ## from
        except Exception as e:
            print "NO OVERLAY LIST:", e

        Stacks[v].lumi = lumi
        Stacks[v].jobnames= Ljobnames[v]
        Stacks[v].normalize = eval(config.get(section,'Normalize'))
        #print 'Stack[v].subcut is', Stacks[v].subcut
        #if subcut_plotname: Stacks[v].subcut = '_'+subcut_plotname
        #print 'again, Stack[v].subcut is', Stacks[v].subcut
        Stacks[v].doPlot()
        ##FIXME##
#        Stacks[v].histos = Lhistos[v]
#        Stacks[v].typs = Ltyps[v]
#        Stacks[v].datas = Ldatas[v]
#        Stacks[v].datatyps = Ldatatyps[v]
#        Stacks[v].datanames= Ldatanames[v]
#        Stacks[v].normalize = True
#        Stacks[v].options['pdfName'] = Stacks[v].options['pdfName'].replace('.pdf','_norm.pdf')
#        Stacks[v].doPlot()
        print 'i am done!\n'

    print "Last part DONE in ", str(time.time() - start_time)," s."
    print "tree_stack done in ", str(time.time() - begin_time)," s."
    print 'DOPLOT END'
Example #3
0
    print 'launching get_histos_from_tree with ', multiprocess, ' processes'
    outputs = p.map(GlobalFunction, inputs)
else:
    print 'launching get_histos_from_tree with ', multiprocess, ' processes'
    for input_ in inputs:
        outputs.append(getattr(
            input_[0],
            input_[1])(*input_[2]))  #ie. mc_hMaker.get_histos_from_tree(job)

print "job.name and all_histos[job.name]:"
for i, job in enumerate(all_samples):
    all_histos[job.name] = outputs[i]

for job in data_samples:
    print '\t- %s' % job
    data_histos[job.name] = data_hMaker.get_histos_from_tree(job)[0]['DATA']

print '\t> done <\n'

print 'Get the bkg histo'
print '=================\n'
i = 0
for job in background_samples:
    print job.name
    htree = all_histos[job.name][0].values()[0]
    if not i:
        hDummy = copy(htree)
    else:
        hDummy.Add(htree, 1)
    del htree
    i += 1
Example #4
0
    data_hMaker._rebin = copy(mc_hMaker._rebin)
    data_hMaker.mybinning = deepcopy(mc_hMaker.mybinning)

all_histos = {}
data_histos = {}

print '\n----> Fetching Histograms....'

for job in all_samples:
    
    print '\n----> job.name:', job.name 

    if not GroupDict[job.name] in sys_cut_include:
        # manual overwrite
        if addBlindingCut:
            all_histos[job.name] = mc_hMaker.get_histos_from_tree(job,treecut+'& %s'%addBlindingCut)
        else:
            all_histos[job.name] = mc_hMaker.get_histos_from_tree(job,treecut)
    else:
        all_histos[job.name] = mc_hMaker.get_histos_from_tree(job)
  
for job in data_samples:
    print '\t-----> Data Histogram: ', job 
    data_histos[job.name] = data_hMaker.get_histos_from_tree(job)[0]['DATA']
    #data_histos[job.name] = data_hMaker.get_histos_from_tree(job)
    
i=0
for job in background_samples: 
    print job.name
    htree = all_histos[job.name][0].values()[0]
    if not i: 
Example #5
0
def doPlot():

    vars = (config.get(section, 'vars')).split(',')
    data = config.get(section, 'Datas')
    mc = eval(config.get('Plot_general', 'samples'))

    print '  with Vars:', vars
    print '  Using MC samples: ', mc
    print '  and Data samples: ', data

    # Is set in plots.  Can be the mass of ZH/ggZH.
    SignalRegion = False
    if config.has_option(section, 'Signal'):
        mc.append(config.get(section, 'Signal'))
        SignalRegion = True

    #print '\n\n\t\t=====SignalRegion:', SignalRegion

    datasamples = info.get_samples(data)
    mcsamples = info.get_samples(mc)

    GroupDict = eval(config.get('Plot_general', 'Group'))

    #GETALL AT ONCE
    options = []
    Stacks = []
    for i in range(len(vars)):
        Stacks.append(StackMaker(config, vars[i], region, SignalRegion))
        options.append(Stacks[i].options)

# Init the HistoMaker class
    Plotter = HistoMaker(mcsamples + datasamples, path, config, options,
                         GroupDict)

    #print '\nProducing Plot of %s\n'%vars[v]
    Lhistos = [[] for _ in range(0, len(vars))]
    Ltyps = [[] for _ in range(0, len(vars))]
    Ldatas = [[] for _ in range(0, len(vars))]
    Ldatatyps = [[] for _ in range(0, len(vars))]
    Ldatanames = [[] for _ in range(0, len(vars))]

    #Find out Lumi:
    lumicounter = 0.
    lumi = 0.
    for job in datasamples:
        lumi += float(job.lumi)
        lumicounter += 1.

    if lumicounter > 0:
        lumi = lumi / lumicounter

    print '\n\t\t Luminosity Auto Calculation: ', lumi

    # temp hack
    #lumi = 3000.
    Plotter.lumi = lumi
    mass = Stacks[0].mass

    # Define the counters for statistics counting
    mass_count = Counter()
    bdt_count = Counter()

    for job in mcsamples:

        # hDictList returns list of TH1Fs of the specified vars to plot
        if addBlindingCut:
            hDictList = Plotter.get_histos_from_tree(
                job,
                config.get('Cuts', region) + ' & ' + addBlindingCut)
        else:
            hDictList = Plotter.get_histos_from_tree(job)

        #print '\n\n\t\tJob name: ', job.name
        if job.name == 'ZH125':
            #or job.name == 'ggZH125':
            Overlaylist = deepcopy(
                [hDictList[v].values()[0] for v in range(0, len(vars))])

        for v in range(0, len(vars)):
            Lhistos[v].append(hDictList[v].values()[0])
            Ltyps[v].append(hDictList[v].keys()[0])
            hist = hDictList[v].values()[0]

        # end variable loop
    # end MC sample loop

    # Loop over data
    for job in datasamples:

        # temp hack to turn off data
        #break

        #hTemp, typ = Plotter.get_histos_from_tree(job)
        if addBlindingCut:
            dDictList = Plotter.get_histos_from_tree(
                job,
                config.get('Cuts', region) + ' & ' + addBlindingCut)
        else:
            dDictList = Plotter.get_histos_from_tree(job)

        for v in range(0, len(vars)):
            Ldatas[v].append(dDictList[v].values()[0])
            Ldatatyps[v].append(dDictList[v].keys()[0])
            Ldatanames[v].append(job.name)

# produce the final plots and save
    for v in range(0, len(vars)):

        histos = Lhistos[v]
        typs = Ltyps[v]
        Stacks[v].histos = Lhistos[v]
        Stacks[v].typs = Ltyps[v]
        Stacks[v].datas = Ldatas[v]
        Stacks[v].datatyps = Ldatatyps[v]
        Stacks[v].datanames = Ldatanames[v]
        if SignalRegion:
            Stacks[v].overlay = Overlaylist[v]
        Stacks[v].lumi = lumi

        Stacks[v].doPlot()

        Stacks[v].overlay = []
        Stacks[v].histos = Lhistos[v]
        Stacks[v].typs = Ltyps[v]
        Stacks[v].datas = Ldatas[v]
        Stacks[v].datatyps = Ldatatyps[v]
        Stacks[v].datanames = Ldatanames[v]
        Stacks[v].normalize = True
        Stacks[v].options['pdfName'] = Stacks[v].options['pdfName'].replace(
            '.pdf', '_norm.pdf')
        #Stacks[v].doPlot()
        print 'i am done!\n'
Example #6
0
    data_hMaker.rebin_nBins = copy(mc_hMaker.rebin_nBins)
    data_hMaker.nBins = copy(mc_hMaker.nBins)
    data_hMaker._rebin = copy(mc_hMaker._rebin)
    data_hMaker.mybinning = deepcopy(mc_hMaker.mybinning)

all_histos = {}
data_histos = {}

print '\n\t...fetching histos...'

for job in all_samples:
    print '\t- %s'%job
    if not GroupDict[job.name] in sys_cut_include:
        # manual overwrite
        if addBlindingCut:
            all_histos[job.name] = mc_hMaker.get_histos_from_tree(job,treecut+'& %s'%addBlindingCut)
        else:
            all_histos[job.name] = mc_hMaker.get_histos_from_tree(job,treecut)
    else:
        all_histos[job.name] = mc_hMaker.get_histos_from_tree(job)

for job in data_samples:
    print '\t- %s'%job
    data_histos[job.name] = data_hMaker.get_histos_from_tree(job)[0]['DATA']

print '\t> done <\n'

i=0
for job in background_samples: 
    print job.name
    htree = all_histos[job.name][0].values()[0]
def doPlot():
    vars = (config.get(section, 'vars')).split(',')
    data = config.get(section,'Datas')
    mc = eval(config.get('Plot_general','samples'))

    SignalRegion = False
    if config.has_option(section,'Signal'):
        mc.append(config.get(section,'Signal'))
        SignalRegion = True
            
    datasamples = info.get_samples(data)
    mcsamples = info.get_samples(mc)

    GroupDict = eval(config.get('Plot_general','Group'))

    #GETALL AT ONCE
    options = []
    Stacks = []
    for i in range(len(vars)):
        Stacks.append(StackMaker(config,vars[i],region,SignalRegion))
        options.append(Stacks[i].options)
    print options

    Plotter=HistoMaker(mcsamples+datasamples,path,config,options,GroupDict)

    #print '\nProducing Plot of %s\n'%vars[v]
    Lhistos = [[] for _ in range(0,len(vars))]
    Ltyps = [[] for _ in range(0,len(vars))]
    Ldatas = [[] for _ in range(0,len(vars))]
    Ldatatyps = [[] for _ in range(0,len(vars))]
    Ldatanames = [[] for _ in range(0,len(vars))]

    #Find out Lumi:
    lumicounter=0.
    lumi=0.
    for job in datasamples:
        lumi+=float(job.lumi)
        lumicounter+=1.

    if lumicounter > 0:
        lumi=lumi/lumicounter

    Plotter.lumi=lumi
    mass = Stacks[0].mass

    for job in mcsamples:
        #hTempList, typList = Plotter.get_histos_from_tree(job)
        if addBlindingCut:
            hDictList = Plotter.get_histos_from_tree(job,config.get('Cuts',region)+' & ' + addBlindingCut)
        else:
            hDictList = Plotter.get_histos_from_tree(job)
        if job.name == mass:
            print job.name
            Overlaylist= deepcopy([hDictList[v].values()[0] for v in range(0,len(vars))])
        for v in range(0,len(vars)):
            Lhistos[v].append(hDictList[v].values()[0])
            Ltyps[v].append(hDictList[v].keys()[0])

    for job in datasamples:
        #hTemp, typ = Plotter.get_histos_from_tree(job)
        if addBlindingCut:
            dDictList = Plotter.get_histos_from_tree(job,config.get('Cuts',region)+' & ' + addBlindingCut)
        else:
            dDictList = Plotter.get_histos_from_tree(job)
        for v in range(0,len(vars)):
            Ldatas[v].append(dDictList[v].values()[0])
            Ldatatyps[v].append(dDictList[v].keys()[0])
            Ldatanames[v].append(job.name)

    for v in range(0,len(vars)):

        histos = Lhistos[v]
        typs = Ltyps[v]
        Stacks[v].histos = Lhistos[v]
        Stacks[v].typs = Ltyps[v]
        Stacks[v].datas = Ldatas[v]
        Stacks[v].datatyps = Ldatatyps[v]
        Stacks[v].datanames= Ldatanames[v]
        #if SignalRegion:
        #    Stacks[v].overlay = Overlaylist[v]
        Stacks[v].lumi = lumi
        Stacks[v].doPlot()
        Stacks[v].histos = Lhistos[v]
        Stacks[v].typs = Ltyps[v]
        Stacks[v].datas = Ldatas[v]
        Stacks[v].datatyps = Ldatatyps[v]
        Stacks[v].datanames= Ldatanames[v]
        Stacks[v].normalize = True
        Stacks[v].options['pdfName'] = Stacks[v].options['pdfName'].replace('.pdf','_norm.pdf')
        Stacks[v].doPlot()
        print 'i am done!\n'
Example #8
0
def doPlot():

    vars = (config.get(section, "vars")).split(",")
    data = config.get(section, "Datas")
    mc = eval(config.get("Plot_general", "samples"))

    print "  with Vars:", vars
    print "  Using MC samples: ", mc
    print "  and Data samples: ", data

    # Is set in plots.  Can be the mass of ZH/ggZH.
    SignalRegion = False
    if config.has_option(section, "Signal"):
        mc.append(config.get(section, "Signal"))
        SignalRegion = True

        # print '\n\n\t\t=====SignalRegion:', SignalRegion

    datasamples = info.get_samples(data)
    mcsamples = info.get_samples(mc)

    GroupDict = eval(config.get("Plot_general", "Group"))

    # GETALL AT ONCE
    options = []
    Stacks = []
    for i in range(len(vars)):
        Stacks.append(StackMaker(config, vars[i], region, SignalRegion))
        options.append(Stacks[i].options)

        # Init the HistoMaker class
    Plotter = HistoMaker(mcsamples + datasamples, path, config, options, GroupDict)

    # print '\nProducing Plot of %s\n'%vars[v]
    Lhistos = [[] for _ in range(0, len(vars))]
    Ltyps = [[] for _ in range(0, len(vars))]
    Ldatas = [[] for _ in range(0, len(vars))]
    Ldatatyps = [[] for _ in range(0, len(vars))]
    Ldatanames = [[] for _ in range(0, len(vars))]

    # Find out Lumi:
    lumicounter = 0.0
    lumi = 0.0
    for job in datasamples:
        lumi += float(job.lumi)
        lumicounter += 1.0

    if lumicounter > 0:
        lumi = lumi / lumicounter

    print "\n\t\t Luminosity Auto Calculation: ", lumi

    # temp hack
    # lumi = 3000.
    Plotter.lumi = lumi
    mass = Stacks[0].mass

    # Define the counters for statistics counting
    mass_count = Counter()
    bdt_count = Counter()

    for job in mcsamples:

        # hDictList returns list of TH1Fs of the specified vars to plot
        if addBlindingCut:
            hDictList = Plotter.get_histos_from_tree(job, config.get("Cuts", region) + " & " + addBlindingCut)
        else:
            hDictList = Plotter.get_histos_from_tree(job)

            # print '\n\n\t\tJob name: ', job.name
        if job.name == "ZH125":
            # or job.name == 'ggZH125':
            Overlaylist = deepcopy([hDictList[v].values()[0] for v in range(0, len(vars))])

        for v in range(0, len(vars)):
            Lhistos[v].append(hDictList[v].values()[0])
            Ltyps[v].append(hDictList[v].keys()[0])
            hist = hDictList[v].values()[0]

            # end variable loop
            # end MC sample loop

            # Loop over data
    for job in datasamples:

        # temp hack to turn off data
        # break

        # hTemp, typ = Plotter.get_histos_from_tree(job)
        if addBlindingCut:
            dDictList = Plotter.get_histos_from_tree(job, config.get("Cuts", region) + " & " + addBlindingCut)
        else:
            dDictList = Plotter.get_histos_from_tree(job)

        for v in range(0, len(vars)):
            Ldatas[v].append(dDictList[v].values()[0])
            Ldatatyps[v].append(dDictList[v].keys()[0])
            Ldatanames[v].append(job.name)

            # produce the final plots and save
    for v in range(0, len(vars)):

        histos = Lhistos[v]
        typs = Ltyps[v]
        Stacks[v].histos = Lhistos[v]
        Stacks[v].typs = Ltyps[v]
        Stacks[v].datas = Ldatas[v]
        Stacks[v].datatyps = Ldatatyps[v]
        Stacks[v].datanames = Ldatanames[v]
        if SignalRegion:
            Stacks[v].overlay = Overlaylist[v]
        Stacks[v].lumi = lumi

        Stacks[v].doPlot()

        Stacks[v].overlay = []
        Stacks[v].histos = Lhistos[v]
        Stacks[v].typs = Ltyps[v]
        Stacks[v].datas = Ldatas[v]
        Stacks[v].datatyps = Ldatatyps[v]
        Stacks[v].datanames = Ldatanames[v]
        Stacks[v].normalize = True
        Stacks[v].options["pdfName"] = Stacks[v].options["pdfName"].replace(".pdf", "_norm.pdf")
        Stacks[v].doPlot()
        print "i am done!\n"
Example #9
0
def doPlot():
    vars = (config.get(section, 'vars')).split(',')
    # print 'vars',vars
    data = config.get(section,'Datas')
    mc = eval(config.get('Plot_general','samples'))

    SignalRegion = False
    if config.has_option(section,'Signal'):
        mc.append(config.get(section,'Signal'))
        SignalRegion = True
            
    datasamples = info.get_samples(data)
    mcsamples = info.get_samples(mc)

    GroupDict = eval(config.get('Plot_general','Group'))

    #GETALL AT ONCE
    options = []
    Stacks = []
    for i in range(len(vars)):
        Stacks.append(StackMaker(config,vars[i],region,SignalRegion))
        options.append(Stacks[i].options)
        print 'loop options',options
    # print 'options',options

    Plotter=HistoMaker(mcsamples+datasamples,path,config,options,GroupDict)

    #print '\nProducing Plot of %s\n'%vars[v]
    Lhistos = [[] for _ in range(0,len(vars))]
    Ltyps = [[] for _ in range(0,len(vars))]
    Ldatas = [[] for _ in range(0,len(vars))]
    Ldatatyps = [[] for _ in range(0,len(vars))]
    Ldatanames = [[] for _ in range(0,len(vars))]
    Ljobnames = [[] for _ in range(0,len(vars))]

    #Find out Lumi:
    lumicounter=0.
    lumi=0.
    for job in datasamples:
        lumi+=float(job.lumi)
        lumicounter+=1.

    if lumicounter > 0:
        lumi=lumi/lumicounter

    Plotter.lumi=lumi
    mass = Stacks[0].mass

#        multiprocess=16
#        if multiprocess>0:
#            from multiprocessing import Pool
#            p = Pool(multiprocess)
##            import pathos.multiprocessing as mp
##            p = mp.ProcessingPool(multiprocess)
#            myinputs = []
#            for job in self.__sampleList:
#                myoptions = self.putOptions()
#                myinputs.append((myoptions,job))
#                
#            outputs = p.map(trim_treeMT, myinputs)

    print 'mcsamples',mcsamples
    inputs=[]
    for job in mcsamples:
#        print 'job.name'
        cutOverWrite = None
        if addBlindingCut:
            cutOverWrite = config.get('Cuts',region)+' & ' + addBlindingCut
        inputs.append((Plotter,"get_histos_from_tree",(job,cutOverWrite)))
    
    multiprocess=64
    outputs = []
    if multiprocess>0:
        from multiprocessing import Pool
        from myutils import GlobalFunction
        p = Pool(multiprocess)
        print 'launching get_histos_from_tree with ',multiprocess,' processes'
        outputs = p.map(GlobalFunction, inputs)
    else:
        print 'launching get_histos_from_tree with ',multiprocess,' processes'
        for input_ in inputs:
            outputs.append(getattr(input_[0],input_[1])(*input_[2])) #ie. Plotter.get_histos_from_tree(job,cutOverWrite)
    print 'get_histos_from_tree DONE'
    Overlaylist = []
    for i,job in enumerate(mcsamples):
        print 'job.name',job.name,"mass==",mass
        #hTempList, typList = Plotter.get_histos_from_tree(job)
        hDictList = outputs[i]
        if job.name in mass:
            print 'job.name == mass'
            histoList = []
            for v in range(0,len(vars)):
                histoCopy = deepcopy(hDictList[v].values()[0])
                histoCopy.SetTitle(job.name)
                histoList.append(histoCopy)
            Overlaylist.append(histoList)
#            Overlaylist.append(deepcopy([hDictList[v].values()[0] for v in range(0,len(vars))]))
        for v in range(0,len(vars)):
            Lhistos[v].append(hDictList[v].values()[0])
            Ltyps[v].append(hDictList[v].keys()[0])
            Ljobnames[v].append(job.name)
    
    print "len(vars)=",len(vars)
    ##invert Overlaylist[variable][job] -> Overlaylist[job][variable]
    print "len(Overlaylist) before: ",len(Overlaylist)
    print "Overlaylist",Overlaylist
#    newOverlaylist = [[None]*len(Overlaylist)]*len(vars)
#    for i,OverlaySameSample in enumerate(Overlaylist):
#            for j,Overlay in enumerate(OverlaySameSample):
#                newOverlaylist[j][i] = Overlay    
#    Overlaylist = newOverlaylist
    Overlaylist = [list(a) for a in zip(*Overlaylist)]
    print "len(Overlaylist) after: ",len(Overlaylist)
    print "Overlaylist",Overlaylist
    
    ##merge overlays in groups 
    for i in range(len(Overlaylist)):
        newhistos = {}
        print "len(Overlaylist[i]):",Overlaylist[i]
        for histo in Overlaylist[i]:
            print "histo.GetName()",histo.GetName(),
            print "histo.GetTitle()",histo.GetTitle(),
            group = GroupDict[histo.GetTitle()]
            if not group in newhistos.keys():
                histo.SetTitle(group)
                newhistos[group]=histo
            else:
                print "Before newhistos[group].Integral()",newhistos[group].Integral(),
                newhistos[group].Add(histo)
                print "After newhistos[group].Integral()",newhistos[group].Integral()
        Overlaylist[i] = newhistos.values()
        


#   ### ORIGINAL ###
#    print 'mcsamples',mcsamples
#    for job in mcsamples:
#        print 'job.name',job.name
#        #hTempList, typList = Plotter.get_histos_from_tree(job)
#        if addBlindingCut:
#            hDictList = Plotter.get_histos_from_tree(job,config.get('Cuts',region)+' & ' + addBlindingCut)
#        else:
#            print 'going to get_histos_from_tree'
#            hDictList = Plotter.get_histos_from_tree(job)
#        if job.name == mass:
#            print 'job.name', job.name
#            Overlaylist= deepcopy([hDictList[v].values()[0] for v in range(0,len(vars))])
#        for v in range(0,len(vars)):
#            Lhistos[v].append(hDictList[v].values()[0])
#            Ltyps[v].append(hDictList[v].keys()[0])
#            Ljobnames[v].append(job.name)


    print 'datasamples',datasamples
    for job in datasamples:
        #hTemp, typ = Plotter.get_histos_from_tree(job)
        if addBlindingCut:
            dDictList = Plotter.get_histos_from_tree(job,config.get('Cuts',region)+' & ' + addBlindingCut)
        else:
            dDictList = Plotter.get_histos_from_tree(job)
        for v in range(0,len(vars)):
            Ldatas[v].append(dDictList[v].values()[0])
            Ldatatyps[v].append(dDictList[v].keys()[0])
            Ldatanames[v].append(job.name)

    for v in range(0,len(vars)):

        print "Ltyps[v]:",Ltyps[v]
        print "Lhistos[v]:",Lhistos[v]
        print "Ldatas[v]:",Ldatas[v]
        print "Ldatatyps[v]:",Ldatatyps[v]
        print "Ldatanames[v]:",Ldatanames[v]
        print "lumi:",lumi

        histos = Lhistos[v]
        typs = Ltyps[v]
        Stacks[v].histos = Lhistos[v]
        Stacks[v].typs = Ltyps[v]
        Stacks[v].datas = Ldatas[v]
        Stacks[v].datatyps = Ldatatyps[v]
        Stacks[v].datanames= Ldatanames[v]
        #if SignalRegion:
        Stacks[v].overlay = Overlaylist[v] ## from 
        Stacks[v].lumi = lumi
        Stacks[v].jobnames= Ljobnames[v]
        Stacks[v].doPlot()
        ##FIXME##
#        Stacks[v].histos = Lhistos[v]
#        Stacks[v].typs = Ltyps[v]
#        Stacks[v].datas = Ldatas[v]
#        Stacks[v].datatyps = Ldatatyps[v]
#        Stacks[v].datanames= Ldatanames[v]
#        Stacks[v].normalize = True
#        Stacks[v].options['pdfName'] = Stacks[v].options['pdfName'].replace('.pdf','_norm.pdf')
#        Stacks[v].doPlot()
        print 'i am done!\n'
Example #10
0
def doPlot():
    vars = (config.get(section, 'vars')).split(',')
    data = config.get(section,'Datas')
    mc = eval(config.get('Plot_general','samples'))

    SignalRegion = False
    if config.has_option(section,'Signal'):
        mc.append(config.get(section,'Signal'))
        SignalRegion = True
            
    datasamples = info.get_samples(data)
    mcsamples = info.get_samples(mc)

    GroupDict = eval(config.get('Plot_general','Group'))

    #GETALL AT ONCE
    options = []
    Stacks = []
    for i in range(len(vars)):
        Stacks.append(StackMaker(config,vars[i],region,SignalRegion))
        options.append(Stacks[i].options)
    print options

    Plotter=HistoMaker(mcsamples+datasamples,path,config,options,GroupDict)

    #print '\nProducing Plot of %s\n'%vars[v]
    Lhistos = [[] for _ in range(0,len(vars))]
    Ltyps = [[] for _ in range(0,len(vars))]
    Ldatas = [[] for _ in range(0,len(vars))]
    Ldatatyps = [[] for _ in range(0,len(vars))]
    Ldatanames = [[] for _ in range(0,len(vars))]

    #Find out Lumi:
    lumicounter=0.
    lumi=0.
    for job in datasamples:
        lumi+=float(job.lumi)
        lumicounter+=1.

    if lumicounter > 0:
        lumi=lumi/lumicounter

    Plotter.lumi=lumi
    mass = Stacks[0].mass

    for job in mcsamples:
        #hTempList, typList = Plotter.get_histos_from_tree(job)
        if addBlindingCut:
            hDictList = Plotter.get_histos_from_tree(job,config.get('Cuts',region)+' & ' + addBlindingCut)
        else:
            hDictList = Plotter.get_histos_from_tree(job)
        if job.name == mass:
            print job.name
            Overlaylist= deepcopy([hDictList[v].values()[0] for v in range(0,len(vars))])
        for v in range(0,len(vars)):
            Lhistos[v].append(hDictList[v].values()[0])
            Ltyps[v].append(hDictList[v].keys()[0])

    for job in datasamples:
        #hTemp, typ = Plotter.get_histos_from_tree(job)
        if addBlindingCut:
            dDictList = Plotter.get_histos_from_tree(job,config.get('Cuts',region)+' & ' + addBlindingCut)
        else:
            dDictList = Plotter.get_histos_from_tree(job)
        for v in range(0,len(vars)):
            Ldatas[v].append(dDictList[v].values()[0])
            Ldatatyps[v].append(dDictList[v].keys()[0])
            Ldatanames[v].append(job.name)

    for v in range(0,len(vars)):

        histos = Lhistos[v]
        typs = Ltyps[v]
        Stacks[v].histos = Lhistos[v]
        Stacks[v].typs = Ltyps[v]
        Stacks[v].datas = Ldatas[v]
        Stacks[v].datatyps = Ldatatyps[v]
        Stacks[v].datanames= Ldatanames[v]
        #if SignalRegion:
        #    Stacks[v].overlay = Overlaylist[v]
        Stacks[v].lumi = lumi
        Stacks[v].doPlot()
        Stacks[v].histos = Lhistos[v]
        Stacks[v].typs = Ltyps[v]
        Stacks[v].datas = Ldatas[v]
        Stacks[v].datatyps = Ldatatyps[v]
        Stacks[v].datanames= Ldatanames[v]
        Stacks[v].normalize = True
        Stacks[v].options['pdfName'] = Stacks[v].options['pdfName'].replace('.pdf','_norm.pdf')
        Stacks[v].doPlot()
        print 'i am done!\n'
Example #11
0
    data_hMaker.rebin_nBins = copy(mc_hMaker.rebin_nBins)
    data_hMaker.nBins = copy(mc_hMaker.nBins)
    data_hMaker._rebin = copy(mc_hMaker._rebin)
    data_hMaker.mybinning = deepcopy(mc_hMaker.mybinning)

all_histos = {}
data_histos = {}

print "\n\t...fetching histos..."

for job in all_samples:
    print "\t- %s" % job
    if not GroupDict[job.name] in sys_cut_include:
        # manual overwrite
        if addBlindingCut:
            all_histos[job.name] = mc_hMaker.get_histos_from_tree(job, treecut + "& %s" % addBlindingCut)
        else:
            all_histos[job.name] = mc_hMaker.get_histos_from_tree(job, treecut)
    else:
        all_histos[job.name] = mc_hMaker.get_histos_from_tree(job)


# for job in all_samples:
#    print '\t- %s'%job
#    if not GroupDict[job.name] in sys_cut_include:
#        # manual overwrite
#        if addBlindingCut:
#            all_histos[job.name] = mc_hMaker.get_histos_from_tree(job,treecut+'& %s'%addBlindingCut)
#        else:
#            all_histos[job.name] = mc_hMaker.get_histos_from_tree(job,treecut)
#    else: