def ProjectDraw(var, cut, Lumi, samplelist, pd): plt.cfg.register(samplelist) groupList = plt.cfg.getGroupPlot() histList = OrderedDict() VAR = var # remove extra space CUT = ' '.join(filter(None, selection[cut].split(" "))) # group tag for igroup in groupList: CUT_ = CUT if igroup == 'BkgSum': continue #if igroup in [ 'Fake', 'DATA' ] : CUT_ = CUT.replace("isbVeto && ","") print col.CYAN + "drawLambda::GroupTag : ", igroup + col.ENDC histList[igroup] = {} ##sample tag for isample in groupList[igroup]['samples']: print("isample : ", isample) histList[igroup][isample] = [] if 'weights' in samples[isample].keys(): for jsample in samples[isample]['weights'].keys(): WEIGHTS = '(%s)*(%s)' % ( expressAliases(samples[isample]['weight']), samples[isample]['weights'][jsample]) #WEIGHTS = '(%s)*(%s)' %( samples[isample]['weight'] , samples[isample]['weights'][jsample] ) if igroup not in ['Fake', 'DATA']: WEIGHTS = "%s*(%s)" % (str( float(Lumi) / 1000.), WEIGHTS) filelist = [ x for x in samples[isample]['name'] if os.path.basename(x).split('_', 1)[-1].replace( '.root', '').split('__part')[0] == jsample ] files = makeVectorList(filelist) df = ROOT.RDataFrame("Events", files) gROOT.cd() histList[igroup][isample].append( makeHisto(df, VAR, CUT_, WEIGHTS, jsample)) else: WEIGHTS = expressAliases(samples[isample]['weight']) #WEIGHTS = samples[isample]['weight'] if igroup not in ['Fake', 'DATA']: WEIGHTS = "%s*(%s)" % (str(float(Lumi) / 1000.), WEIGHTS) filelist = samples[isample]['name'] files = makeVectorList(filelist) df = ROOT.RDataFrame("Events", files) gROOT.cd() histList[igroup][isample].append( makeHisto(df, VAR, CUT_, WEIGHTS, isample)) pass # apply action return applyAction(histList, groupList)
def plot_signal( var, cut, norm=False ): colors = [ 616+4 , 800 , 416+1 , 800+7 , 860+10 , 600 , 616 , 921 , 922 ] if cut in selection: plotdir = cut pathname = PLOTDIR+"/signals/"+plotdir if not os.path.exists(pathname): os.system('mkdir -p %s'%pathname) histlist={} plt.cfg.register(sign) #sign is grouptag samples = plt.cfg.getModule('samples') CUT = ' '.join(filter( None , selection[cut].split(" ") )) signlist = plt.cfg.getGroupPlot()['Higgs']['samples'] for i,isample in enumerate(signlist): WEIGHTS = "%s*(%s)" %( str(float(LUMI)/1000.) , expressAliases(samples[isample]['weight']) ) filelist = [ x for x in samples[isample]['name'] ] files = makeVectorList(filelist) df = ROOT.RDataFrame("Events", files); gROOT.cd() histlist[isample] = makeHisto( df , var , CUT , WEIGHTS , isample ) histlist[isample] = histlist[isample].GetPtr() histlist[isample].Sumw2() histlist[isample].SetLineWidth(2) histlist[isample].SetLineColor(colors[i]) ####################################################################################################### # add total histograms histlist['Higgs']=None for i, ihist in enumerate(histlist): if i==0: histlist['Higgs'] = histlist[ihist].Clone('totsignal') histlist['Higgs'].Sumw2() histlist['Higgs'].Add(histlist[ihist]) leg = TLegend( 0.7 if not options.Statebox else 0.4 , 0.9-0.035*len(signlist), 0.9, 0.9) leg.SetBorderSize(0) leg.SetFillStyle(1001) #1001 leg.SetFillColor(0) for s in signlist : leg.AddEntry(histlist[s], '%s [%.1f]' %( s , histlist[s].Integral() ) , "l") c1 = TCanvas("c1", "Signals", 800, 600) c1.cd().SetLogy() if options.logy else c1.cd() c1.cd() c1.GetPad(0).SetTopMargin(0.06) c1.GetPad(0).SetRightMargin(0.05) c1.GetPad(0).SetTicks(1, 1) hmax = 0. for i, s in enumerate(signlist): if histlist[s].GetMaximum() > hmax: hmax = histlist[s].GetMaximum() if not options.logy: histlist[signlist[0]].SetMaximum(hmax*1.2) histlist[signlist[0]].SetMinimum(0.) else: histlist[signlist[0]].SetMaximum(hmax*4) c1.cd() for i, s in enumerate(signlist): histlist[s].Draw("HIST" if i==0 else "SAMES, HIST") if options.Statebox: c1.GetPad(0).Update() if i==1: lof = histlist[s].GetListOfFunctions() statbox = lof.FindObject('stats') statbox.SetX1NDC(0.779026); statbox.SetX2NDC(0.979401) statbox.SetY1NDC(0.593168); statbox.SetY2NDC(0.754658) leg.Draw() drawCMS(LUMI, "Simulation") printTable_signal( histlist , pathname , '%s_%s.txt' %(plotdir,var) , signlist , histplease=True ) ### fitting mass shape? ######################## if gROOT.IsBatch(): c1.Print(pathname+"/"+var.replace('.', '_')+".png") #c1.Print(pathname+"/"+var.replace('.', '_')+".pdf") #print col.WARNING+"PURGE OBJECTS IN MEMORY"+col.ENDC #for process in histlist: # histlist[process].Delete() pass
if 'weights' in samples[isample].keys(): for jsample in samples[isample]['weights'].keys(): WEIGHTS = '(%s)*(%s)' % ( expressAliases(samples[isample]['weight']), samples[isample]['weights'][jsample]) if itag not in ['Fake', 'DATA']: WEIGHTS = "%s*(%s)" % (str( float(LUMI) / 1000.), WEIGHTS) filelist = [ x for x in samples[isample]['name'] if os.path.basename(x).split('_', 1)[-1].replace( '.root', '').split('__part')[0] == jsample ] files = makeVectorList(filelist) #print " --> Caching in subsamples : ", jsample DF[itag][isample][jsample] = ROOT.RDataFrame( "Events", files).Define("weight", WEIGHTS) #.Cache(); else: isptr = True WEIGHTS = expressAliases(samples[isample]['weight']) if itag not in ['Fake', 'DATA']: WEIGHTS = "%s*(%s)" % (str(float(LUMI) / 1000.), WEIGHTS) filelist = samples[isample]['name'] files = makeVectorList(filelist) #print " --> Caching in samples : ", isample DF[itag][isample] = ROOT.RDataFrame("Events", files).Define( "weight", WEIGHTS) #.Cache(); ########################################################### df_result = OrderedDict() if fake: DF_fake = OrderedDict()
def ProjectDraw(var, cut, Lumi, samplelist, pd): plt.cfg.register(samplelist) groupList = plt.cfg.getGroupPlot() histList = {} VAR = var # remove extra space CUT = ' '.join(filter(None, selection[cut].split(" "))) # group tag for igroup in groupList: CUT_ = CUT if igroup == 'BkgSum': continue #if igroup in [ 'Fake', 'DATA' ] : CUT_ = CUT.replace("isbVeto && ","") print col.OKGREEN + "drawLambda::GroupTag : ", igroup + col.ENDC #histList[igroup]={} ; hists = {} ##sample tag for isample in groupList[igroup]['samples']: print("isample : ", isample) hists[isample] = {} isptr = False ## check if weights exist if 'weights' in samples[isample].keys(): ## sub-samples tag subhists = {} for jsample in samples[isample]['weights'].keys(): subhists[jsample] = {} WEIGHTS = '(%s)*(%s)' % ( expressAliases(samples[isample]['weight']), samples[isample]['weights'][jsample]) #WEIGHTS = '(%s)*(%s)' %( samples[isample]['weight'] , samples[isample]['weights'][jsample] ) if igroup not in ['Fake', 'DATA']: WEIGHTS = "%s*(%s)" % (str( float(Lumi) / 1000.), WEIGHTS) filelist = [ x for x in samples[isample]['name'] if os.path.basename(x).split('_', 1)[-1].replace( '.root', '').split('__part')[0] == jsample ] files = makeVectorList(filelist) df = ROOT.RDataFrame("Events", files) gROOT.cd() subhists[jsample] = makeHisto(df, VAR, CUT_, WEIGHTS, jsample) # Wg = (Wg*w1,Wg*w2) hists[isample] = sumHistoPtr(subhists, isample, True) else: ## all sub-samples share common weights ###print col.OKGREEN+ "drawLambda::Sub-Samples : " , samples[isample]['weights'].keys() + col.ENDC isptr = True WEIGHTS = expressAliases(samples[isample]['weight']) #WEIGHTS = samples[isample]['weight'] if igroup not in ['Fake', 'DATA']: WEIGHTS = "%s*(%s)" % (str(float(Lumi) / 1000.), WEIGHTS) filelist = samples[isample]['name'] files = makeVectorList(filelist) df = ROOT.RDataFrame("Events", files) gROOT.cd() hists[isample] = makeHisto(df, VAR, CUT_, WEIGHTS, isample) # Vg = sum(Wg,Zq) histList[igroup] = sumHistoPtr(hists, igroup, isptr) print col.YELLOW + "group tag processed : ", histList.keys(), col.ENDC histList[igroup].Sumw2() histList[igroup].SetFillColor(groupList[igroup]['fillcolor']) histList[igroup].SetFillStyle(groupList[igroup]['fillstyle']) histList[igroup].SetLineColor(groupList[igroup]['linecolor']) histList[igroup].SetLineStyle(groupList[igroup]['linestyle']) return histList