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 test1DirectWarningCall( self ): """Test Cling warning translation""" import warnings, ROOT warnings.filterwarnings( 'ignore', 'c1test' ) # namespaced call, as 'Warning' is a builtin exception ROOT.Warning( 'c1test', 'c1test' )
from modules.DataMCPlot import DataMCPlot # from modules.DDE import DDE from modules.binning import binning_dimuonmass from modules.path_to_NeuralNet import path_to_NeuralNet # from modules.nn import run_nn # import modules.fr_net as fr_net # from CMGTools.RootTools.DataMC.Histogram import Histogram from modules.SignalReweighter import reweightSignals from pdb import set_trace from ROOT import ROOT, RDataFrame, TH1F, TFile, TTree, TTreeFormula, gInterpreter, gROOT, gSystem # Enable ROOT's implicit multi-threading for all objects that provide an internal parallelisation mechanism # ROOT.EnableImplicitMT() # ROOT.EnableImplicitMT(68) ROOT.EnableImplicitMT(20) def initHist(hist, vcfg): hist.Sumw2() xtitle = vcfg.xtitle if vcfg.unit: xtitle += ' ({})'.format(vcfg.unit) hist.GetXaxis().SetTitle(xtitle) hist.SetStats(False) class CreateHists(object): def __init__(self, hist_cfg, analysis_dir='/home/dehuazhu/SESSD/4_production/',
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
import os, multiprocessing import copy import math from array import array from ROOT import ROOT, gROOT, gStyle, gRandom, TSystemDirectory from ROOT import TFile, TChain, TTree, TCut, TH1, TH1F, TH2F, THStack, TGraph, TGraphAsymmErrors from ROOT import TStyle, TCanvas, TPad from ROOT import TLegend, TLatex, TText, TLine, TBox from PhysicsTools.NanoAODTools.LambPlot.Utils.configs import Config import PhysicsTools.NanoAODTools.LambPlot.Utils.color as col from PhysicsTools.NanoAODTools.LambPlot.Utils.drawLambda import * import importlib from collections import OrderedDict ROOT.EnableImplicitMT(12) ########## SETTINGS ########## import optparse usage = "usage: %prog [options]" parser = optparse.OptionParser(usage) parser.add_option("-v", "--variable", action="store", type="string", dest="variable", default="") parser.add_option("-c", "--cut", action="store",
samples = plt.cfg.getModule('samples') variables = plt.cfg.getModule('variables') selection = plt.cfg.getModule('selection') aliases = plt.cfg.getModule('aliases') ######################################## from collections import OrderedDict import pandas as pds import numpy as np gROOT.SetBatch(True) #gROOT.Macro('functions.C') gStyle.SetOptStat(0) #GO PARALLELISM!!! ROOT.EnableImplicitMT(12) def expressAliases(cut_): newcut = [] for icut in cut_.split('*'): # level 1 expressing if icut in aliases.keys(): for jcut in aliases[icut]['expr'].split('*'): # level 2 expressing if jcut in aliases.keys(): for kcut in aliases[jcut]['expr'].split('*'): # level 3 expressing if kcut in aliases.keys(): for lcut in aliases[kcut]['expr'].split('*'):
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