diff --git a/README.md b/README.md index 9f050d2..3df4f02 100644 --- a/README.md +++ b/README.md @@ -1,67 +1,3 @@ -1. Searching additional two b jets using DNN - -First, you need to make pandas arrays to train and evaluate. You can do it using runAna.py in deepAna directory. - -In runAna.py, there are several options. -~~~ -array # If you turn on this option and run, runAna.py make arrays. -array_test # For test. If you turn on this, runAna.py make only test set. -array_train # If you turn on this option with array, runAna.py make training input. -array_syst # If you turn on this option with array, runAna.py make systematic array sets. -~~~ - -Run as follows, - -~~~ -$ python runAna.py -~~~ - -If you make pandas arrays successfully, then you can make model file using model.py - -Run as follows, - -~~~ -$ python model.py -~~~ - -Then, you can make histogram using runAna.py with analysis option. -~~~ -analysis # If you turn on this option, runAna.py make histogram root files. -ana_test # For test. -ana_syst # For systematics -~~~ - -Run as follows, - -~~~ -$ python runAna.py -~~~ - -Then, final root files are made. - -2. Differential cross section measurement. - -All the codes for measurement are in ttbbDiffXsec directory. - -You need to made acceptance distribution first. - -~~~ -$ root -l -b -q makeCriteria.C -~~~ - -Then, stability, purity and acceptance plots are made in output/post directory. -And then you can run runUnfold.py. If you run this, you can get unfolding results. - -~~~ -$ python runUnfold.py -~~~ - -you can control unfolding option in ttbbDiffXsec.C - -3. Control plots - -If you want to make control plots, you can get this by running runAnalysis.py - - - - +1. runAnalysis.py +2. runPostProcess.py +3. runUnfold.py diff --git a/macro/__init__.py b/func/__init__.py similarity index 100% rename from macro/__init__.py rename to func/__init__.py diff --git a/func/cutflow.py b/func/cutflow.py new file mode 100644 index 0000000..5f886d5 --- /dev/null +++ b/func/cutflow.py @@ -0,0 +1,121 @@ +import os +import sys + +import ROOT + +import saveAndLoadSamples as sls + +strTableTemplate = """ +\\begin{table}[htb] + \\rotatebox{90}{ + \\footnotesize + \\begin{center} + \\caption{%(year)s yields table} + \\begin{tabular}{%(nRows)s} + \\hline\\hline + Sample & Ch0S0 & Ch0S1 & Ch0S2 & Ch1S0 & Ch1S1 & Ch1S2 & Ch2S0 & Ch2S1 & Ch2S2 \\\\ + \\hline +%(mcNevts)s + \\hline +%(dataNevts)s +%(totalMC)s +%(ratio)s + \\hline\\hline + \\end{tabular} + \\end{center} + } +\\end{table} +""" + +class DrawYieldsTable(sls.LoadSamples): + def __init__(self, year, lumi, root_path, output_path, hist_name='h_nJets'): + self.year = year + self.lumi = float(lumi) + self.root_path = root_path + self.output_path = output_path + self.hist_name = hist_name + + self.data = {} + self.samples = {} + self.xsecs = {} + self.genevt = {} + + if not os.path.exists(self.output_path): + os.makedirs(self.output_path) + + self._get_root_files() + + def _get_root_files(self): + self.get_sample_info() + + self.data['Muon'] = ROOT.TFile(os.path.join(self.root_path, 'hist_DataSingleMu.root')) + self.data['Electron'] = ROOT.TFile(os.path.join(self.root_path, 'hist_DataSingleEG.root')) + for sample in self.xsecs.values(): + self.samples[sample[0]] = ROOT.TFile(os.path.join(self.root_path, 'hist_'+sample[0]+'.root')) + + def draw_yields(self): + for ich in range(0,3): + steps = [1,3,4,6,7,8,9] + + data_nevts = [] + data_str = ' Data ' + for istep in steps: + if ich == 0: + TH1 = self.data['Muon'].Get(self.hist_name+'_Ch0_S'+str(istep)) + elif ich == 1: + TH1 = self.data['Electron'].Get(self.hist_name+'_Ch1_S'+str(istep)) + else: + TH1 = self.data['Muon'].Get(self.hist_name+'_Ch0_S'+str(istep)) + TH1temp = self.data['Electron'].Get(self.hist_name+'_Ch1_S'+str(istep)) + TH1.Add(TH1temp) + + error = ROOT.Double() + nevts = TH1.IntegralAndError(1, TH1.GetNbinsX()+1, error) + data_str += '& $%.1f $ ' % (nevts) + data_nevts.append(nevts) + data_str += '\\\\\n' + + mc_nevts = [0.0 for i in range(len(steps))] + mc_error = [0.0 for i in range(len(steps))] + mc_dicts = {} + for item in self.xsecs.items(): + sample_name = item[1][0] + xsec = item[1][1] + sample = self.samples[sample_name] + scale = (self.lumi*xsec/self.genevt[sample_name]) + + temp = ' %s ' % (sample_name) + for idx, istep in enumerate(steps): + TH1 = sample.Get(self.hist_name+'_Ch'+str(ich)+'_S'+str(istep)) + TH1.Scale(scale) + + #nevts = hist_tmp.Integral(0, hist_tmp.GetNbinsX()+1) + error = ROOT.Double() + nevts = TH1.IntegralAndError(1, TH1.GetNbinsX()+1, error) + + temp += '& $%.1f {\scriptstyle\ \pm\ %.1f}$ ' % (nevts, error) + mc_nevts[idx] += nevts + import math + mc_error[idx] = math.sqrt(pow(mc_error[idx],2) + pow(error,2)) + temp += '\\\\\n' + mc_dicts[item[0]] = temp + + totalMC = ' TotalMC ' + ratio = ' Ratio ' + for idx, value in enumerate(mc_nevts): + temp = float(data_nevts[idx])/float(value) + totalMC += '& $%.1f {\scriptstyle\ \pm\ %.1f}$ ' % (value, mc_error[idx]) + ratio += ' & $%.2f$ ' % temp + totalMC += '\\\\' + ratio += '\\\\' + + str_dict = {} + str_dict['year'] = str(self.year) + str_dict['nRows'] = '|'+'c|'*len(steps) + str_dict['mcNevts'] = '\n'.join(value for value in mc_dicts.values()) + str_dict['dataNevts'] = data_str + str_dict['totalMC'] = totalMC + str_dict['ratio'] = ratio + + strOut = strTableTemplate % str_dict + with open(self.output_path+"/yields"+str(self.year)+'_ch'+str(ich)+".tex", 'w') as f: f.write(strOut) diff --git a/func/dnn_ana.py b/func/dnn_ana.py new file mode 100644 index 0000000..c7457db --- /dev/null +++ b/func/dnn_ana.py @@ -0,0 +1,424 @@ +import sys, os + +import pandas as pd +import math +import numpy as np +from array import array +import yaml + +import ROOT +from ROOT import * + +import utils as ut +if not len(sys.argv) == 6: + print "usage: ana.py year inputDir array outputDir" + print "\nMake additional b jets histograms" + print "All arguments are required. Please enter arguments" + +year = int(sys.argv[1]) +inputDir = sys.argv[2] +outputDir = sys.argv[4] +process = outputDir.split('/')[-1] +print("Process: "+process+"/"+sys.argv[3]) + +output = sys.argv[3].replace('array','hist').replace('h5','root') +f_out = ROOT.TFile(outputDir+'/'+output, 'recreate') + +number_of_jets = 6 +number_of_bjets = 2 + +nChannel = 3 + +nbins_reco_addbjets_dr = 4 +reco_addbjets_dr_min = 0.4 +reco_addbjets_dr_max = 4.0 +reco_addbjets_dr_width = [0.4,0.6,1.0,2.0,4.0] + +nbins_reco_addbjets_m = 4 +reco_addbjets_m_min = 0 +reco_addbjets_m_max = 400 +reco_addbjets_m_width = [0.0,60.0,100.0,170.0,400.0] + +nbins_gen_addbjets_dr = 3 +gen_addbjets_dr_min = 0.4 +gen_addbjets_dr_max = 4.0 +gen_addbjets_dr_width = [0.4,1.0,2.0,4.0] + +nbins_gen_addbjets_m = 4 +gen_addbjets_m_min = 0 +gen_addbjets_m_max = 400 +gen_addbjets_m_width = [0.0,60.0,100.0,170.0,400.0] + +nbins_jet_csv = 10 +jet_csv_width = [0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0] + +varlist = ut.getVarlist() +xlabel = ut.getHistXlabel() + +with open('object_selection_config.yml', 'r') as f: + if '16' in inputDir: + era = 2016 + elif '17' in inputDir: + era = 2017 + elif '18' in inputDir: + era = 2018 + else: + print "There is no such era ",inputDir + exit(0) + obj_selection = yaml.load(f, Loader=yaml.FullLoader) + muon_ch = 0 + muon_pt = float(obj_selection[era]['muon']['pt']) + muon_eta = float(obj_selection[era]['muon']['eta']) + electron_ch = 1 + electron_pt = float(obj_selection[era]['electron']['pt']) + electron_eta = float(obj_selection[era]['electron']['eta']) + jet_pt = float(obj_selection[era]['jet']['pt']) + jet_eta = float(obj_selection[era]['jet']['eta']) + jet_csv = float(obj_selection[era]['jet']['csv'][obj_selection['bjet']]) + +listSyst = [] +if any(i in process for i in ['Data', 'QCD', 'Driven', 'Nosys']): + if 'qcdisoup' in process: listSyst.append("__qcdisoup") + elif 'qcdisodown' in process: listSyst.append("__qcdisodown") + else: listSyst.append("") +elif "__" in process: + if "tuneup" in process: listSyst.append("__tuneup") + if "tunedown" in process: listSyst.append("__tunedown") + if "tunecp5up" in process: listSyst.append("__tuneup") + if "tunecp5down" in process: listSyst.append("__tunedown") + + if "hdampup" in process: listSyst.append("__hdampup") + if "hdampdown" in process: listSyst.append("__hdampdown") + + if "isrup" in process: listSyst.append("__isrup") + if "isrdown" in process: listSyst.append("__isrdown") + if "fsrup" in process: listSyst.append("__fsrup") + if "fsrdown" in process: listSyst.append("__fsrdown") + + if "jerup" in process: listSyst.append("__jerup") + if "jerdown" in process: listSyst.append("__jerdown") + if "jecup" in process: listSyst.append("__jecup") + if "jecdown" in process: listSyst.append("__jecdown") +else: + listSyst += [ + "", "__puup", "__pudown", + "__muidup", "__muiddown", "__muisoup", "__muisodown", "__mutrgup", "__mutrgdown", + "__elidup", "__eliddown", "__elrecoup", "__elrecodown", "__elzvtxup", "__elzvtxdown", + "__eltrgup", "__eltrgdown", + "__lfup", "__lfdown", "__hfup", "__hfdown", + "__hfstat1up", "__hfstat1down", "__hfstat2up", "__hfstat2down", + "__lfstat1up", "__lfstat1down", "__lfstat2up", "__lfstat2down", + "__cferr1up", "__cferr1down", "__cferr2up", "__cferr2down"] + if year == 16 or year == 17: + listSyst += ["__prefireup", "__prefiredown"] + if any(i in process for i in ["TTLJ", "Bkg"]): + listSyst += ["__scale0", "__scale1", "__scale2", "__scale3", "__scale4", "__scale5", "__scale6"] + listSyst += ["__pdf"+str(pdf) for pdf in range(104)] + + #if (year == 16) and (not "CP5" in process): + # listSyst += ["__pdf"+str(pdf) for pdf in range(102)] + #else: + # listSyst += ["__pdf"+str(pdf) for pdf in range(104)] + +dictHist = {} +for syst in listSyst: + for iChannel in range(nChannel): + for iStep in range(7,10): + for i in range(len(varlist)): + histRange = [] + histRange = ut.getHistRange(varlist[i]) + TH1 = ROOT.TH1D( + 'h_keras_%s_Ch%d_S%d%s' % (varlist[i], iChannel, iStep, syst), '', + int(histRange[0]), float(histRange[1]), float(histRange[2]) + ) + TH1.GetXaxis().SetTitle(xlabel[varlist[i]]) + TH1.GetYaxis().SetTitle("Entries") + TH1.Sumw2() + dictHist[TH1.GetName()] = TH1 + + TH1 = ROOT.TH1D( + 'h_keras_nJets_Ch%d_S%d%s' %(iChannel, iStep, syst), '', 4, 6, 10 + ) + TH1.GetXaxis().SetBinLabel(1,"6") + TH1.GetXaxis().SetBinLabel(2,"7") + TH1.GetXaxis().SetBinLabel(3,"8") + TH1.GetXaxis().SetBinLabel(4,"#geq 9") + TH1.GetXaxis().SetTitle("Jet multiplicity") + TH1.GetYaxis().SetTitle("Entries") + TH1.Sumw2() + dictHist[TH1.GetName()] = TH1 + + if iStep == 7: + TH1 = ROOT.TH1D( + 'h_keras_nbJets_Ch%d_S%d%s' % (iChannel, iStep, syst), '', 5, 2, 7 + ) + TH1.GetXaxis().SetBinLabel(1,"2") + TH1.GetXaxis().SetBinLabel(2,"3") + TH1.GetXaxis().SetBinLabel(3,"4") + TH1.GetXaxis().SetBinLabel(4,"5") + TH1.GetXaxis().SetBinLabel(5,"#geq 6") + elif iStep == 8: + TH1 = ROOT.TH1D( + 'h_keras_nbJets_Ch%d_S%d%s' % (iChannel, iStep, syst), '', 4, 3, 7 + ) + TH1.GetXaxis().SetBinLabel(1,"3") + TH1.GetXaxis().SetBinLabel(2,"4") + TH1.GetXaxis().SetBinLabel(3,"5") + TH1.GetXaxis().SetBinLabel(4,"#geq 6") + elif iStep == 9: + TH1 = ROOT.TH1D( + 'h_keras_nbJets_Ch%d_S%d%s' % (iChannel, iStep, syst), '', 3, 4, 7 + ) + TH1.GetXaxis().SetBinLabel(1,"4") + TH1.GetXaxis().SetBinLabel(2,"5") + TH1.GetXaxis().SetBinLabel(3,"#geq 6") + else: + print "There is no such step", iStep + exit(0) + TH1.GetXaxis().SetTitle("bJet multiplicity") + TH1.GetYaxis().SetTitle("Entries") + TH1.Sumw2() + dictHist[TH1.GetName()] = TH1 + + TH1 = ROOT.TH1D( + 'h_keras_RecoAddbJetDeltaR_Ch%d_S%d%s' % (iChannel, iStep, syst), '', + nbins_reco_addbjets_dr, array('d', reco_addbjets_dr_width) + ) + TH1.GetXaxis().SetTitle("#DeltaR_{b#bar{b}}") + TH1.GetYaxis().SetTitle("Entries") + TH1.Sumw2() + dictHist[TH1.GetName()] = TH1 + + TH1 = ROOT.TH1D( + 'h_keras_RecoAddbJetInvMass_Ch%d_S%d%s' % (iChannel, iStep, syst), '', + nbins_reco_addbjets_m, array('d', reco_addbjets_m_width) + ) + TH1.GetXaxis().SetTitle("m_{b#bar{b}}(GeV)") + TH1.GetYaxis().SetTitle("Entries") + TH1.Sumw2() + dictHist[TH1.GetName()] = TH1 + + TH1 = ROOT.TH2D( + 'h_keras_ResponseMatrixDeltaR_Ch%d_S%d%s' % (iChannel, iStep, syst), '', + nbins_reco_addbjets_dr, array('d', reco_addbjets_dr_width), + nbins_gen_addbjets_dr, array('d', gen_addbjets_dr_width) + ) + TH1.GetXaxis().SetTitle("Reco. #DeltaR_{b#bar{b}}") + TH1.GetYaxis().SetTitle("Gen. #DeltaR_{b#bar{b}}") + TH1.Sumw2() + dictHist[TH1.GetName()] = TH1 + + TH1 = ROOT.TH2D( + 'h_keras_ResponseMatrixInvMass_Ch%d_S%d%s' % (iChannel, iStep, syst), '', + nbins_reco_addbjets_m, array('d', reco_addbjets_m_width), + nbins_gen_addbjets_m, array('d', gen_addbjets_m_width) + ) + TH1.GetXaxis().SetTitle("Reco. m_{b#bar{b}}(GeV)") + TH1.GetYaxis().SetTitle("Gen. m_{b#bar{b}}(GeV)") + TH1.Sumw2() + dictHist[TH1.GetName()] = TH1 + + TH1 = ROOT.TH3D( + 'h_keras_3DmatrixDeltaR_Ch%d_S%d%s' % (iChannel, iStep, syst), '', + nbins_reco_addbjets_dr, array('d', reco_addbjets_dr_width), + nbins_gen_addbjets_dr, array('d', gen_addbjets_dr_width), + nbins_jet_csv, array('d', jet_csv_width) + ) + TH1.SetXTitle("Reco. M_{b#bar{b}}") + TH1.SetYTitle("Gen. M_{b#bar{b}}") + TH1.SetZTitle("deep CSV") + TH1.Sumw2(); + dictHist[TH1.GetName()] = TH1 + + for i in range(nbins_reco_addbjets_dr): + TH1 = ROOT.TH1D( + "h_keras_RecoDeltaRvsJetCSV_bin%d_Ch%d_S%d%s" % (i, iChannel, iStep, syst),"", + nbins_jet_csv, array('d', jet_csv_width) + ) + TH1.SetXTitle("deep CSV") + TH1.SetYTitle("Entries") + TH1.Sumw2() + dictHist[TH1.GetName()] = TH1 + + TH1 = ROOT.TH3D( + 'h_keras_3DmatrixInvMass_Ch%d_S%d%s' % (iChannel, iStep, syst), '', + nbins_reco_addbjets_m, array('d', reco_addbjets_m_width), + nbins_gen_addbjets_m, array('d', gen_addbjets_m_width), + nbins_jet_csv, array('d', jet_csv_width) + ) + TH1.SetXTitle("Reco. M_{b#bar{b}}") + TH1.SetYTitle("Gen. M_{b#bar{b}}") + TH1.SetZTitle("deep CSV") + TH1.Sumw2() + dictHist[TH1.GetName()] = TH1 + + for i in range(nbins_reco_addbjets_m): + TH1 = ROOT.TH1D( + "h_keras_RecoInvMassvsJetCSV_bin%d_Ch%d_S%d%s" % (i, iChannel, iStep, syst),"", + nbins_jet_csv, array('d', jet_csv_width) + ) + TH1.SetXTitle("deep CSV") + TH1.SetYTitle("Entries") + TH1.Sumw2() + dictHist[TH1.GetName()] = TH1 + +selEvent = pd.read_hdf(os.path.join(inputDir,sys.argv[3])) +for index, event in selEvent.iterrows(): + channel = event['channel'] + njets = event['njets'] + nbjets = event['nbjets'] + event_selection = [False, False, False] + if njets >= 6 and nbjets >= 2: event_selection[0] = True + if njets >= 6 and nbjets >= 3: event_selection[1] = True + if njets >= 6 and nbjets >= 4: event_selection[2] = True + + gen_addbjet1 = TLorentzVector() + gen_addbjet2 = TLorentzVector() + gen_addbjet1.SetPtEtaPhiE(event['addbjet1_pt'],event['addbjet1_eta'],event['addbjet1_phi'],event['addbjet1_e']) + gen_addbjet2.SetPtEtaPhiE(event['addbjet2_pt'],event['addbjet2_eta'],event['addbjet2_phi'],event['addbjet2_e']) + + gen_dR = gen_addbjet1.DeltaR(gen_addbjet2) + gen_M = (gen_addbjet1+gen_addbjet2).M() + + reco_dR = event['bbdR'] + reco_M = event['bbM'] + + for sys in listSyst: + eventweight = 1.0 + bSF = 1.0 + if not 'Data' in process: + eventweight *= event['genWeight'] + + if 'puup' in sys: eventweight *= event['PUWeight'][1] + elif 'pudown' in sys: eventweight *= event['PUWeight'][2] + else : eventweight *= event['PUWeight'][0] + + if not year == 18: + if 'prefireup' in sys: eventweight *= event['prefireweight'][1] + elif 'prefiredown' in sys: eventweight *= event['prefireweight'][2] + else : eventweight *= event['prefireweight'][0] + + if event['channel'] == 0: + #[0]~[2]: ID, [3]~[5]: Iso, [6]~[8]: Trigger + if 'muidup' in sys: eventweight *= event['lepton_SF'][1] + elif 'muisodown' in sys: eventweight *= event['lepton_SF'][2] + else : eventweight *= event['lepton_SF'][0] + + if 'muisoup' in sys: eventweight *= event['lepton_SF'][4] + elif 'muisodown' in sys: eventweight *= event['lepton_SF'][5] + else : eventweight *= event['lepton_SF'][3] + + if 'mutrgup' in sys: eventweight *= event['lepton_SF'][7] + elif 'mutrgdown' in sys: eventweight *= event['lepton_SF'][8] + else : eventweight *= event['lepton_SF'][6] + + elif event['channel'] == 1: + #[0]~[2]: ID, [3]~[5]: Reco, [6]~[8]: Zvtx, [9]~[11]: Trigger + if 'elidup' in sys: eventweight *= event['lepton_SF'][1] + elif 'eliddown' in sys: eventweight *= event['lepton_SF'][2] + else : eventweight *= event['lepton_SF'][0] + + if 'elrecoup' in sys: eventweight *= event['lepton_SF'][4] + elif 'elrecodown' in sys: eventweight *= event['lepton_SF'][5] + else : eventweight *= event['lepton_SF'][3] + + if 'elzvtxup' in sys: eventweight *= event['lepton_SF'][7] + elif 'elzvtxdown' in sys: eventweight *= event['lepton_SF'][8] + else : eventweight *= event['lepton_SF'][6] + + if 'eltrgup' in sys: eventweight *= event['lepton_SF'][10] + elif 'eltrgdown' in sys: eventweight *= event['lepton_SF'][11] + else : eventweight *= event['lepton_SF'][9] + + #Scale Weight(ME) + # [0] = muF up, [1] = muF down, [2] = muR up, [3] = muR up && muF up + # [4] = muR down, [5] = muF down && muF down + if 'scale0' in sys: eventweight *= event['scaleweight'][0] + elif 'scale1' in sys: eventweight *= event['scaleweight'][1] + elif 'scale2' in sys: eventweight *= event['scaleweight'][2] + elif 'scale3' in sys: eventweight *= event['scaleweight'][3] + elif 'scale4' in sys: eventweight *= event['scaleweight'][4] + elif 'scale5' in sys: eventweight *= event['scaleweight'][5] + else : eventweight *= 1.0 + + #CSV Shape + # Systematics for bottom flavor jets: + # Light flavor contamination: lf + # Linear and quadratic statistical fluctuations: hfstats1 and hfstats2 + # Systematics for light flavor jets: + # Heavy flavor contamimation: hf + # Linear and quadratic statistical fluctuations: lfstats1 and lfstats2 + # Systematics for charm flavor jets: + # Linear and quadratic uncertainties: cferr1 and cferr2 + if 'lfup' in sys: bSF *= event['jet_SF_CSV_30'][3] + elif 'lfdown' in sys: bSF *= event['jet_SF_CSV_30'][4] + elif 'hfup' in sys: bSF *= event['jet_SF_CSV_30'][5] + elif 'hfdown' in sys: bSF *= event['jet_SF_CSV_30'][6] + elif 'hfstat1up' in sys: bSF *= event['jet_SF_CSV_30'][7] + elif 'hfstat1down' in sys: bSF *= event['jet_SF_CSV_30'][8] + elif 'hfstat2up' in sys: bSF *= event['jet_SF_CSV_30'][9] + elif 'hfstat2down' in sys: bSF *= event['jet_SF_CSV_30'][10] + elif 'lfstat1up' in sys: bSF *= event['jet_SF_CSV_30'][11] + elif 'lfstat1down' in sys: bSF *= event['jet_SF_CSV_30'][12] + elif 'lfstat2up' in sys: bSF *= event['jet_SF_CSV_30'][13] + elif 'lfstat2down' in sys: bSF *= event['jet_SF_CSV_30'][14] + elif 'cferr1up' in sys: bSF *= event['jet_SF_CSV_30'][15] + elif 'cferr1down' in sys: bSF *= event['jet_SF_CSV_30'][16] + elif 'cferr2up' in sys: bSF *= event['jet_SF_CSV_30'][17] + elif 'cferr2down' in sys: bSF *= event['jet_SF_CSV_30'][18] + else : bSF *= event['jet_SF_CSV_30'][0] + + #Parton Shower + if (not year == 16) or ("CP5" in process): + if 'isrup' in sys: eventweight *= event['psweight'][0] + elif 'isrdown' in sys: eventweight *= event['psweight'][2] + elif 'fsrup' in sys: eventweight *= event['psweight'][1] + elif 'fsrdown' in sys: eventweight *= event['psweight'][3] + else : eventweight *= 1.0 + + #PDF Uncertainties + if 'pdf' in sys: + pdfnum = int(sys.replace('__pdf','')) + eventweight *= event['pdfweight'][pdfnum] + + dRregion = 999 + Mregion = 999 + reco_addbjets_dr_width = [0.4,0.6,1.0,2.0,4.0] + reco_addbjets_m_width = [0.0,60.0,100.0,170.0,400.0] + for i in range(0, len(reco_addbjets_dr_width)-1): + if reco_dR >= reco_addbjets_dr_width[i] and reco_dR < reco_addbjets_dr_width[i+1]: dRregion = i + if reco_dR > reco_addbjets_dr_width[len(reco_addbjets_dr_width)-1]: dRregion = len(reco_addbjets_dr_width)-2 + for i in range(0, len(reco_addbjets_m_width)-1): + if reco_M >= reco_addbjets_m_width[i] and reco_M < reco_addbjets_m_width[i+1]: Mregion = i + if reco_M > reco_addbjets_m_width[len(reco_addbjets_m_width)-1]: Mregion = len(reco_addbjets_m_width)-2 + + for istep in range(7,10): + if not event_selection[istep-7]: continue + for item in varlist: + dictHist['h_keras_%s_Ch%d_S%d%s'%(item, channel, istep, sys)].Fill(event[item], bSF*eventweight) + dictHist['h_keras_nJets_Ch%d_S%d%s'%(channel, istep, sys)].Fill(njets, bSF*eventweight) + dictHist['h_keras_nbJets_Ch%d_S%d%s'%(channel, istep, sys)].Fill(nbjets, bSF*eventweight) + dictHist['h_keras_RecoAddbJetDeltaR_Ch%d_S%d%s'%(channel, istep, sys)].Fill(reco_dR, bSF*eventweight) + dictHist['h_keras_RecoAddbJetInvMass_Ch%d_S%d%s'%(channel, istep, sys)].Fill(reco_M, bSF*eventweight) + dictHist['h_keras_ResponseMatrixDeltaR_Ch%d_S%d%s'%(channel, istep, sys)].Fill(reco_dR, gen_dR, bSF*eventweight) + dictHist['h_keras_ResponseMatrixInvMass_Ch%d_S%d%s'%(channel, istep, sys)].Fill(reco_M, gen_M, bSF*eventweight) + dictHist['h_keras_3DmatrixDeltaR_Ch%d_S%d%s'%(channel, istep, sys)].Fill(reco_dR, gen_dR, event['b1CSV'], bSF*eventweight) + dictHist['h_keras_3DmatrixInvMass_Ch%d_S%d%s'%(channel, istep, sys)].Fill(reco_M, gen_M, event['b1CSV'], bSF*eventweight) + if dRregion is not 999: dictHist['h_keras_RecoDeltaRvsJetCSV_bin%d_Ch%d_S%d%s'%(dRregion, channel, istep, sys)].Fill(event['b1CSV'], bSF*eventweight) + if Mregion is not 999: dictHist['h_keras_RecoInvMassvsJetCSV_bin%d_Ch%d_S%d%s'%(Mregion, channel, istep, sys)].Fill(event['b1CSV'], bSF*eventweight) + if channel == 0 or channel == 1: + for item in varlist: + dictHist['h_keras_%s_Ch2_S%d%s'%(item, istep, sys)].Fill(event[item], bSF*eventweight) + dictHist['h_keras_nJets_Ch2_S%d%s'%(istep, sys)].Fill(njets, bSF*eventweight) + dictHist['h_keras_nbJets_Ch2_S%d%s'%(istep, sys)].Fill(nbjets, bSF*eventweight) + dictHist['h_keras_RecoAddbJetDeltaR_Ch2_S%d%s'%(istep, sys)].Fill(reco_dR, bSF*eventweight) + dictHist['h_keras_RecoAddbJetInvMass_Ch2_S%d%s'%(istep, sys)].Fill(reco_M, bSF*eventweight) + dictHist['h_keras_ResponseMatrixDeltaR_Ch2_S%d%s'%(istep, sys)].Fill(reco_dR, gen_dR, bSF*eventweight) + dictHist['h_keras_ResponseMatrixInvMass_Ch2_S%d%s'%(istep, sys)].Fill(reco_M, gen_M, bSF*eventweight) + dictHist['h_keras_3DmatrixDeltaR_Ch2_S%d%s'%(istep, sys)].Fill(reco_dR, gen_dR, event['b1CSV'], bSF*eventweight) + dictHist['h_keras_3DmatrixInvMass_Ch2_S%d%s'%(istep, sys)].Fill(reco_M, gen_M, event['b1CSV'], bSF*eventweight) + if dRregion is not 999: dictHist['h_keras_RecoDeltaRvsJetCSV_bin%d_Ch2_S%d%s'%(dRregion, istep, sys)].Fill(event['b1CSV'], bSF*eventweight) + if Mregion is not 999: dictHist['h_keras_RecoInvMassvsJetCSV_bin%d_Ch2_S%d%s'%(Mregion, istep, sys)].Fill(event['b1CSV'], bSF*eventweight) + +f_out.Write() +f_out.Close() diff --git a/func/dnn_model.py b/func/dnn_model.py new file mode 100644 index 0000000..f606c37 --- /dev/null +++ b/func/dnn_model.py @@ -0,0 +1,290 @@ +#! /usr/bin/env python +from __future__ import print_function +import sys, os +import google.protobuf + +os.environ["CUDA_VISIBLE_DEVICES"] = "2" + +import matplotlib.pyplot as plt +import pandas as pd +from sklearn.preprocessing import StandardScaler, label_binarize +from sklearn.decomposition import PCA +from sklearn.utils import shuffle, class_weight +from sklearn.metrics import roc_auc_score, roc_curve +from sklearn.metrics import confusion_matrix, f1_score, precision_score, recall_score +import numpy as np +from root_numpy import array2tree, tree2array +import csv +import re +import string +import math +from array import array + +import tensorflow as tf +import keras +from keras.utils import np_utils, multi_gpu_model +from keras.models import Model, Sequential, load_model +from keras.layers import Input, Dense, Activation, Dropout, add +from keras.layers.normalization import BatchNormalization +from keras.regularizers import l2 +from keras.optimizers import Adam, SGD +from keras.callbacks import Callback, ModelCheckpoint + +import utils as ut + +class MakeModel: + def __init__(self, config): + self.config = config + self.auc_list = [] + self.val_auc_list = [] + + self._load_array() + + def _load_array(self): + import utils as ut + self.train_input = self.config['train']+'/../array_train_ttbb.h5' + if not os.path.exists(self.train_input): + ut.mergeHDF(self.config['train'], "array_train_ttbb") + + if not os.path.exists(self.config['model']['dir']): + os.makedirs(self.config['model']['dir']) + else: + for item in os.listdir(self.config['model']['dir']): + if item.endswith('pdf') or item.endswith('h5') or item.endswith('log'): + os.remove(os.path.join(self.config['model']['dir'], item)) + + def _save_config(self): + import yaml + with open(self.config_file, 'w') as f: + self.config = yaml.dump(f) + + def _draw_correlation(self, data, name, **kwds): + """Calculate pairwise correlation between features. + + Extra arguments are passed on to DataFrame.corr() + """ + # simply call df.corr() to get a table of + # correlation values if you do not need + # the fancy plotting + corrmat = data.corr(**kwds) + + fig, ax1 = plt.subplots(ncols=1, figsize=(6,5)) + + opts = {'cmap': plt.get_cmap("RdBu"), + 'vmin': -1, 'vmax': +1} + heatmap1 = ax1.pcolor(corrmat, **opts) + plt.colorbar(heatmap1, ax=ax1) + + ax1.set_title("Correlations") + + labels = corrmat.columns.values + for ax in (ax1,): + ax.tick_params(labelsize=6) + # shift location of ticks to center of the bins + ax.set_xticks(np.arange(len(labels))+0.5, minor=False) + ax.set_yticks(np.arange(len(labels))+0.5, minor=False) + ax.set_xticklabels(labels, minor=False, ha='right', rotation=90) + ax.set_yticklabels(labels, minor=False) + + plt.tight_layout() + #plt.show() + if name == 'sig' : + plt.savefig(configDir+weightDir+ver+'/fig_corr_s.pdf') + print('Correlation matrix for signal is saved!') + plt.gcf().clear() + elif name == 'bkg' : + plt.savefig(configDir+weightDir+ver+'/fig_corr_b.pdf') + plt.gcf().clear() + print('Correlation matrix for background is saved!') + else : print('Wrong class name!') + + def _draw_input_variables(self, sigdata, bkgdata, signame, bkgname, **kwds): + print('Plotting input variables') + bins = 40 + for colname in sigdata: + dataset = [sigdata, bkgdata] + low = min(np.min(d[colname].values) for d in dataset) + high = max(np.max(d[colname].values) for d in dataset) + if high > 500: low_high = (low,500) + else: low_high = (low,high) + + plt.figure() + sigdata[colname].plot.hist(color='b', density=True, range=low_high, bins=bins, histtype='step', label='signal') + bkgdata[colname].plot.hist(color='r', density=True, range=low_high, bins=bins, histtype='step', label='background') + plt.xlabel(colname) + plt.ylabel('A.U.') + plt.title('Intput variables') + plt.legend(loc='upper right') + plt.savefig(configDir+weightDir+ver+'/fig_input_'+colname+'.pdf') + plt.gcf().clear() + plt.close() + + def compile_train(self): + multiGPU = True + if os.environ['CUDA_VISIBLE_DEVICES'] in ['0','1','2','3']: multiGPU = False + + data = pd.read_hdf(self.train_input) + + ########################################## + #drop phi and label features, correlations + ########################################## + labels = data.filter(['signal'], axis=1) + data = data.filter(['signal']+ut.getVarlist()) + data.astype('float32') + + #self._draw_correlations(data.loc[data['signal'] == 0].drop('signal', axis=1), 'bkg') + #self._draw_correlations(data.loc[data['signal'] == 1].drop('signal', axis=1), 'sig') + #self._draw_input_variables(data.loc[data['signal'] == 1].drop('signal', axis=1), data.loc[data['signal'] == 0].drop('signal', axis=1), 'sig', 'bkg') + + data = data.drop('signal', axis=1) #then drop label + + ############### + #split datasets + ############### + train_sig = labels.loc[labels['signal'] == 1].sample(frac=0.8,random_state=200) + train_bkg = labels.loc[labels['signal'] == 0].sample(frac=0.8,random_state=200) + test_sig = labels.loc[labels['signal'] == 1].drop(train_sig.index) + test_bkg = labels.loc[labels['signal'] == 0].drop(train_bkg.index) + + train_idx = pd.concat([train_sig, train_bkg]).index + test_idx = pd.concat([test_sig, test_bkg]).index + + data_train = data.loc[train_idx,:].copy() + data_test = data.loc[test_idx,:].copy() + labels_train = labels.loc[train_idx,:].copy() + labels_test = labels.loc[test_idx,:].copy() + + print('Training signal: '+str(len(train_sig))+' / testing signal: '+str(len(test_sig))+' / training background: '+str(len(train_bkg))+' / testing background: '+str(len(test_bkg))) + + labels_train = labels_train.values + Y_train = np_utils.to_categorical(labels_train) + labels_test = labels_test.values + Y_test = np_utils.to_categorical(labels_test) + + ######################## + #Standardization and PCA + ######################## + scaler = StandardScaler() + data_train_sc = scaler.fit_transform(data_train) + data_test_sc = scaler.fit_transform(data_test) + X_train = data_train_sc + X_test = data_test_sc + + ################################# + #Keras model compile and training + ################################# + nvar = len(ut.getVarlist()) + a = 300 + b = 0.08 + init = 'glorot_uniform' + + inputs = Input(shape=(nvar,)) + x = Dense(a, kernel_regularizer=l2(1E-2))(inputs) + x = Dropout(b)(x) + x = BatchNormalization()(x) + #branch_point1 = Dense(a, name='branch_point1')(x) + x = Dense(a, activation='relu', kernel_initializer=init, bias_initializer='zeros')(x) + x = Dropout(b)(x) + x = BatchNormalization()(x) + x = Dense(a, activation='relu', kernel_initializer=init, bias_initializer='zeros')(x) + x = Dropout(b)(x) + #x = add([x, branch_point1]) + x = BatchNormalization()(x) + #branch_point2 = Dense(a, name='branch_point2')(x) + x = Dense(a, activation='relu', kernel_initializer=init, bias_initializer='zeros')(x) + x = Dropout(b)(x) + x = BatchNormalization()(x) + x = Dense(a, activation='relu', kernel_initializer=init, bias_initializer='zeros')(x) + x = Dropout(b)(x) + #x = add([x, branch_point2]) + x = BatchNormalization()(x) + #branch_point3 = Dense(a, name='branch_point3')(x) + x = Dense(a, activation='relu', kernel_initializer=init, bias_initializer='zeros')(x) + x = Dropout(b)(x) + x = BatchNormalization()(x) + x = Dense(a, activation='relu', kernel_initializer=init, bias_initializer='zeros')(x) + x = Dropout(b)(x) + #x = add([x, branch_point3]) + x = BatchNormalization()(x) + #branch_point4 = Dense(a, name='branch_point4')(x) + x = Dense(a, activation='relu', kernel_initializer=init, bias_initializer='zeros')(x) + x = Dropout(b)(x) + x = BatchNormalization()(x) + x = Dense(a, activation='relu', kernel_initializer=init, bias_initializer='zeros')(x) + x = Dropout(b)(x) + #x = add([x, branch_point4]) + x = BatchNormalization()(x) + #branch_point5 = Dense(a, name='branch_point5')(x) + x = Dense(a, activation='relu', kernel_initializer=init, bias_initializer='zeros')(x) + x = Dropout(b)(x) + x = BatchNormalization()(x) + x = Dense(a, activation='relu', kernel_initializer=init, bias_initializer='zeros')(x) + x = Dropout(b)(x) + #x = add([x, branch_point5]) + #x = BatchNormalization()(x) + #x = Dense(a, activation='relu', kernel_initializer=init, bias_initializer='zeros')(x) + #x = Dropout(b)(x) + predictions = Dense(2, activation='softmax')(x) + model = Model(inputs=inputs, outputs=predictions) + + if multiGPU : train_model = multi_gpu_model(model, gpus=4) + else : train_model = model + + adam=keras.optimizers.Adam(lr=1E-3, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=1E-3) + train_model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy','binary_accuracy']) +#train_model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy','categorical_accuracy']) + + modelfile = 'model_{epoch:02d}_{val_binary_accuracy:.4f}.h5' + checkpoint = ModelCheckpoint(self.config['output']+'/'+modelfile, monitor='val_binary_accuracy', verbose=1, save_best_only=False)#, mode='max') + + history = train_model.fit(X_train, Y_train, + epochs=30, batch_size=1024, + validation_data=(X_test,Y_test), + #class_weight={ 0: 14, 1: 1 }, + callbacks=[RocCallback(training_data=(X_train,Y_train), validation_data=(X_test,Y_test), model=model, output_dir=self.config['output'], self.auc_list, self.val_auc_list)] + ) + + print("Now predict score with test set") + bestModel = "" + best_acc = 0.0 + for filename in os.listdir(configDir+weightDir+ver): + if not "h5" in filename : continue + tmp = filename.split('.') + tmp_acc = float("0."+tmp[1]) + if tmp_acc > best_acc : + best_acc = tmp_acc + bestModel = filename + + print("Use "+bestModel) + model_best = load_model(self.config['output']+'/'+bestModel) + y_pred = model_best.predict(X_test, batch_size=1024) + + plt.plot(history.history['binary_accuracy']) + plt.plot(history.history['val_binary_accuracy']) + plt.title('Model accuracy') + plt.ylabel('Accuracy') + plt.xlabel('Epoch') + plt.legend(['Train','Test'], loc='lower right') + plt.savefig(os.path.join(configDir,weightDir+ver,'fig_score_acc.pdf')) + plt.gcf().clear() + + plt.plot(history.history['loss']) + plt.plot(history.history['val_loss']) + plt.title('Binary crossentropy') + plt.ylabel('Loss') + plt.xlabel('Epoch') + plt.legend(['Train','Test'],loc='upper right') + plt.savefig(os.path.join(configDir,weightDir+ver,'fig_score_loss.pdf')) + plt.gcf().clear() + + plt.plot(self.auc_list) + plt.plot(self.val_auc_list) + plt.title('Area under curve') + plt.ylabel('AUC') + plt.xlabel('Epoch') + plt.legend(['Train','Test'], loc='upper right') + plt.savefig(os.path.join(configDir,weightDir+ver,'fig_score_auc.pdf')) + plt.gcf().clear() + + self.config['model'] = str(bestModel) + self._save_config() diff --git a/func/dnn_n2a.py b/func/dnn_n2a.py new file mode 100644 index 0000000..34df8a0 --- /dev/null +++ b/func/dnn_n2a.py @@ -0,0 +1,220 @@ +#! /usr/bin/env python +import os, sys +import argparse +import multiprocessing as mp +import time + +import numpy as np +from numpy.lib.recfunctions import stack_arrays +from ROOT import * +from root_numpy import tree2array +from array import array +import math +import glob +import pandas as pd +from tqdm import tqdm + +import yaml + +import utils as ut + +def str2bool(v): + if v.lower() in ('yes', 'true', 't', 'y', '1', 'True'): return True + elif v.lower() in ('no', 'false', 'f', 'n', '0', 'False'): return False + +def transversemass(vec1, met): + tmp1 = TLorentzVector(vec1.Px(), vec1.Py(), 0, vec1.E()*math.sin(vec1.Theta())) + tmp2 = TLorentzVector(met.Px(), met.Py(), 0, met.E()); + + return (tmp1+tmp2).M() + +def makeCombi(year, inputDir, inputFile, makeTrainingInput, sys=''): + print("Begin Process "+str(os.getpid())+": "+str(inputFile)) + makeTrainingInput = str2bool(makeTrainingInput) + + chain = TChain("ttbbLepJets/tree") + chain.Add(inputDir+"/"+inputFile) + + outputDir = '/data/users/seohyun/array/Run20'+str(year) + try: + os.makedirs(outputDir) + except OSError: + print(outputDir+": already exists") + + data = False + if 'Data' in inputDir: data = True + ttbb = False + if 'ttbb' in inputDir: ttbb = True + + with open('object_selection_config.yml', 'r') as f: + if '2016' in inputDir: + era = 2016 + elif '2017' in inputDir: + era = 2017 + elif '2018' in inputDir: + era = 2018 + else: + print "There is no such era ",inputDir + exit(0) + obj_selection = yaml.load(f, Loader=yaml.FullLoader) + muon_ch = 0 + muon_pt = float(obj_selection[era]['muon']['pt']) + muon_eta = float(obj_selection[era]['muon']['eta']) + electron_ch = 1 + electron_pt = float(obj_selection[era]['electron']['pt']) + electron_eta = float(obj_selection[era]['electron']['eta']) + jet_pt = float(obj_selection[era]['jet']['pt']) + jet_eta = float(obj_selection[era]['jet']['eta']) + jet_csv = float(obj_selection[era]['jet']['csv'][obj_selection['bjet']]) + + jetCombi = [] + for i in xrange(chain.GetEntries()) : + chain.GetEntry(i) + + lep = TLorentzVector() + lep.SetPtEtaPhiE(chain.lepton_pt, chain.lepton_eta, chain.lepton_phi, chain.lepton_e) + passmuon = False + passelectron = False + passmuon = chain.channel == muon_ch and lep.Pt() > muon_pt and abs(lep.Eta()) < muon_eta + passelectron = chain.channel == electron_ch and lep.Pt() > electron_pt and abs(lep.Eta()) < electron_eta + if passmuon == False and passelectron == False: + continue + + addbjet1 = TLorentzVector(0,0,0,0) + addbjet2 = TLorentzVector(0,0,0,0) + if ttbb: + addbjet1.SetPtEtaPhiE(chain.addbjet1_pt,chain.addbjet1_eta,chain.addbjet1_phi,chain.addbjet1_e) + addbjet2.SetPtEtaPhiE(chain.addbjet2_pt,chain.addbjet2_eta,chain.addbjet2_phi,chain.addbjet2_e) + njets = 0 + nbjets = 0 + addbjet1_matched = TLorentzVector(0,0,0,0) + addbjet2_matched = TLorentzVector(0,0,0,0) + + for iJet in range(len(chain.jet_pt)): + jet = TLorentzVector() + jet.SetPtEtaPhiE(chain.jet_pt[iJet],chain.jet_eta[iJet],chain.jet_phi[iJet],chain.jet_e[iJet]) + + if not data : + if 'jecup' in sys: + jet *= chain.jet_JER_Nom[iJet] * chain.jet_JES_Up[iJet] + elif 'jecdown' in sys: + jet *= chain.jet_JER_Nom[iJet] * chain.jet_JES_Down[iJet] + elif 'jerup' in sys: + jet *= chain.jet_JER_Up[iJet] + elif 'jerdown' in sys: + jet *= chain.jet_JER_Down[iJet] + else: + jet *= chain.jet_JER_Nom[iJet] + + if jet.Pt() < jet_pt or abs(jet.Eta()) > jet_eta: continue + njets += 1 + if chain.jet_deepCSV[iJet] > jet_csv: nbjets += 1 + + if addbjet1.DeltaR(jet) < 0.4: addbjet1_matched = jet; + if addbjet2.DeltaR(jet) < 0.4: addbjet2_matched = jet; + + if njets < 6 or nbjets < 2: continue + + prefireweight = [] + pdfweight = [] + psweight = [] + scaleweight = [] + PUWeight = [] + lepton_SF = [] + jet_SF_CSV_30 = [] + if not data: + for j in xrange((chain.lepton_SF).size()): + lepton_SF.append(float(chain.lepton_SF[j])) + for j in xrange((chain.jet_SF_deepCSV_30).size()): + jet_SF_CSV_30.append(float(chain.jet_SF_deepCSV_30[j])) + for j in xrange((chain.PUWeight).size()): + PUWeight.append(float(chain.PUWeight[j])) + if chain.GetBranchStatus("prefireweight"): + for j in xrange((chain.prefireweight).size()): + prefireweight.append(float(chain.prefireweight[j])) + if 'TT' in inputDir: + for j in xrange((chain.scaleweight).size()): + scaleweight.append(float(chain.scaleweight[j])) + for j in xrange((chain.pdfweight).size()): + pdfweight.append(float(chain.pdfweight[j])) + if chain.GetBranchStatus("psweight"): + for j in xrange((chain.psweight).size()): + psweight.append(float(chain.psweight[j])) + + MET_px = chain.MET*math.cos(chain.MET_phi) + MET_py = chain.MET*math.sin(chain.MET_phi) + nu = TLorentzVector(MET_px, MET_py, 0, chain.MET) + + for j in range(len(chain.jet_pt)-1): + for k in range(j+1, len(chain.jet_pt)): + if chain.jet_deepCSV[j] > jet_csv and chain.jet_deepCSV[k] > jet_csv: + b1 = TLorentzVector() + b2 = TLorentzVector() + b1.SetPtEtaPhiE(chain.jet_pt[j], chain.jet_eta[j], chain.jet_phi[j], chain.jet_e[j]) + b2.SetPtEtaPhiE(chain.jet_pt[k], chain.jet_eta[k], chain.jet_phi[k], chain.jet_e[k]) + if not data : + if 'jecup' in sys: + b1 *= chain.jet_JER_Nom[j] * chain.jet_JES_Up[j] + b2 *= chain.jet_JER_Nom[k] * chain.jet_JES_Up[k] + elif 'jecdown' in sys: + b1 *= chain.jet_JER_Nom[j] * chain.jet_JES_Down[j] + b2 *= chain.jet_JER_Nom[k] * chain.jet_JES_Down[k] + elif 'jerup' in sys: + b1 *= chain.jet_JER_Up[j] + b2 *= chain.jet_JER_Up[k] + elif 'jerdown' in sys: + b1 *= chain.jet_JER_Down[j] + b2 *= chain.jet_JER_Down[k] + else : + b1 *= chain.jet_JER_Nom[j] + b2 *= chain.jet_JER_Nom[k] + + tmp = [] + if makeTrainingInput: + if (addbjet1_matched.DeltaR(b1) == 0 and addbjet2_matched.DeltaR(b2) == 0) or (addbjet2_matched.DeltaR(b1) == 0 and addbjet1_matched.DeltaR(b2) == 0): + signal = 1 + else: + signal = 0 + tmp = [signal] + tmp += [i, (b1+b2).M(), b1.DeltaR(b2), b1.DeltaPhi(b2), abs(b1.Eta()-b2.Eta()), + (b1+b2).Phi(), (b1+b2).Eta(), + (b1+b2+nu).M(), (b1+b2).DeltaR(nu), + (b1+nu).M(), b1.DeltaR(nu), (b2+nu).M(), b2.DeltaR(nu), + (b1+b2+lep).M(), (b1+b2).DeltaR(lep), + (b1+lep).M(), b1.DeltaR(lep), (b2+lep).M(), b2.DeltaR(lep), + (b1+b2).DeltaR(lep+nu), + b1.Pt(), b1.Eta(), b1.E(), chain.jet_deepCSV[j], b1.M(), + b2.Pt(), b2.Eta(), b2.E(), chain.jet_deepCSV[k], b2.M(), + lep.Pt(), lep.Eta(), lep.E(), + nu.Pt(), nu.Phi(), + nbjets] + + if not makeTrainingInput: + tmp += [chain.channel, chain.genweight, PUWeight, scaleweight, pdfweight, + prefireweight, psweight, lepton_SF, jet_SF_CSV_30, + lep.Pt(), lep.Eta(), lep.Phi(), lep.E(), + addbjet1.Pt(), addbjet1.Eta(), addbjet1.Phi(), addbjet1.E(), + addbjet2.Pt(), addbjet2.Eta(), addbjet2.Phi(), addbjet2.E(), + njets, j, k] + jetCombi.append(tmp) + + if makeTrainingInput: + combi = pd.DataFrame(jetCombi, columns=['signal', 'event']+ut.getVarlist()) + else: + combi = pd.DataFrame(jetCombi, columns= + ['event']+ut.getVarlist()+ + ['channel', 'genWeight', 'PUWeight', 'scaleweight', 'pdfweight', + 'prefireweight', 'psweight', 'lepton_SF', 'jet_SF_CSV_30', + 'leptonPt','leptonEta','leptonPhi','leptonE', + 'addbjet1_pt','addbjet1_eta','addbjet1_phi','addbjet1_e', + 'addbjet2_pt','addbjet2_eta','addbjet2_phi','addbjet2_e', + 'njets','b1','b2']) + + combi.style.format('table') + combi.to_hdf(outputDir+"/array_"+inputFile.replace("root","h5"),key='combi',mode='w') + print("End Process "+str(os.getpid())+": "+str(inputFile)) + +if len(sys.argv) == 5: + makeCombi(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4]) +elif len(sys.argv) == 6: + makeCombi(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4], sys.argv[5]) diff --git a/func/dnn_pred.py b/func/dnn_pred.py new file mode 100644 index 0000000..9ef004d --- /dev/null +++ b/func/dnn_pred.py @@ -0,0 +1,58 @@ +import os, sys +import time + +import pandas as pd +import numpy as np +from sklearn.preprocessing import StandardScaler, label_binarize +from itertools import groupby +import deepdish.io as io + +def prediction(year, inputDir, outputDir): + start_time = time.time() + with open('var'+str(year)+'.txt', 'r') as f : + while True : + line = f.readline() + if not line : break + tmp = line.split() + if 'ver' in tmp : ver = tmp[1] + if 'configDir' in tmp : configDir = tmp[1] + if 'weightDir' in tmp : weightDir = tmp[1] + if 'modelfile' in tmp : modelfile = tmp[1] + + import tensorflow as tf + from keras.backend.tensorflow_backend import set_session + config = tf.ConfigProto() + config.gpu_options.per_process_gpu_memory_fraction = 0.1 + set_session(tf.Session(config=config)) + import keras + from keras.models import load_model + + import utils as ut + varlist = ut.getVarlist() + model = load_model(configDir+weightDir+ver+'/'+modelfile) + + for sample in os.listdir(inputDir): + if not os.path.isdir(os.path.join(inputDir, sample)): continue + if 'Training' in sample: continue + if not os.path.exists(os.path.join(outputDir, sample)): + os.makedirs(os.path.join(outputDir, sample)) + for item in os.listdir(os.path.join(inputDir, sample)): + selEvent = pd.read_hdf(os.path.join(inputDir, sample, item)) + jetCombi = selEvent.filter(varlist) + scaler = StandardScaler() + pred = pd.DataFrame([]) + if len(jetCombi) is not 0: + inputset = np.array(jetCombi) + inputset_sc = scaler.fit_transform(inputset) + pred = model.predict(inputset_sc, batch_size = 2000) + + pred = pd.DataFrame(pred, columns=['background','signal']) + selEvent = pd.concat([selEvent,pred], axis=1) + idx = selEvent.groupby(['event'])['signal'].transform(max) == selEvent['signal'] + selEvent = selEvent[idx] + selEvent.reset_index(drop=True, inplace=True) + io.save(os.path.join(outputDir, sample, item), selEvent) + + #keras.backend.clear_session() + print "...Prediction is completed" + print "Running time: %s" % (time.time() - start_time) diff --git a/func/dnn_roc.py b/func/dnn_roc.py new file mode 100644 index 0000000..d8ccb8c --- /dev/null +++ b/func/dnn_roc.py @@ -0,0 +1,147 @@ +#! /usr/bin/env python +from __future__ import print_function +import sys, os +import google.protobuf + +os.environ["CUDA_VISIBLE_DEVICES"] = "2" + +import matplotlib.pyplot as plt +import pandas as pd +from sklearn.preprocessing import StandardScaler, label_binarize +from sklearn.decomposition import PCA +from sklearn.utils import shuffle, class_weight +from sklearn.metrics import roc_auc_score, roc_curve +from sklearn.metrics import confusion_matrix, f1_score, precision_score, recall_score +import numpy as np +from root_numpy import array2tree, tree2array +import csv +import re +import string +import math +from array import array + +import tensorflow as tf +import keras +from keras.utils import np_utils, multi_gpu_model +from keras.models import Model, Sequential, load_model +from keras.layers import Input, Dense, Activation, Dropout, add +from keras.layers.normalization import BatchNormalization +from keras.regularizers import l2 +from keras.optimizers import Adam, SGD +from keras.callbacks import Callback, ModelCheckpoint + +class RocCallback(Callback): + def __init__(self, training_data, validation_data, model, output_dir, auc_list, val_auc_list): + self.x = training_data[0] + self.y = training_data[1] + self.x_val = validation_data[0] + self.y_val = validation_data[1] + self.auc_list = auc_list + self.val_auc_list = val_acu_list + self.model_to_save = model + self.output_dir = output_dir + + def on_train_begin(self, logs={}): + return + + def on_train_end(self, logs={}): + return + + def on_epoch_begin(self, epoch, logs={}): + return + + def on_epoch_end(self, epoch, logs={}): + ############ + #compute AUC + ############ + print('Calculating AUC of epoch '+str(epoch+1)) + y_pred = self.model.predict(self.x, batch_size=2000) + roc = roc_auc_score(self.y, y_pred) + y_pred_val = self.model.predict(self.x_val, batch_size=2000) + roc_val = roc_auc_score(self.y_val, y_pred_val) + print('\rroc-auc: %s - roc-auc_val: %s' % (str(round(roc,4)), str(round(roc_val,4))),end=100*' '+'\n') + self.auc_list.append(roc) + self.val_auc_list.append(roc_val) + + ################### + #Calculate f1 score + ################### + val_predict = (y_pred_val[:,1]).round() + val_targ = self.y_val[:,1] + val_f1 = f1_score(val_targ, val_predict) + val_recall = recall_score(val_targ, val_predict) + val_precision = precision_score(val_targ, val_predict) + print('val_f1: %.4f, val_precision: %.4f, val_recall %.4f' %(val_f1, val_precision, val_recall)) + + ############### + #Plot ROC curve + ############### + fpr = dict() + tpr = dict() + roc_auc = dict() + #fpr[0], tpr[0], thresholds0 = roc_curve(self.y_val[:,0], y_pred_val[:,0], pos_label=1)#w.r.t bkg is truth in val set + fpr[1], tpr[1], thresholds1 = roc_curve(self.y_val[:,1], y_pred_val[:,1], pos_label=1)#w.r.t sig is truth in val set + fpr[2], tpr[2], thresholds2 = roc_curve(self.y[:,1], y_pred[:,1], pos_label=1)#w.r.t sig is truth in training set, for overtraining check + #plt.plot(1-fpr[0], 1-(1-tpr[0]), 'b')#same as [1] + plt.plot(tpr[1], 1-fpr[1])#HEP style ROC + plt.plot(tpr[2], 1-fpr[2])#training ROC + plt.xlabel('Signal Efficiency') + plt.ylabel('Background Rejection') + plt.title('ROC Curve') + plt.legend(['Test', 'Train'], loc='lower left') + plt.savefig(os.path.join(self.output_dir, 'fig_roc_%d_%.4f.pdf' %(epoch+1,round(roc_val,4)))) + plt.gcf().clear() + + ######################################################## + #Overtraining Check, as well as bkg & sig discrimination + ######################################################## + bins = 40 + scores = [tpr[1], fpr[1], tpr[2], fpr[2]] + low = min(np.min(d) for d in scores) + high = max(np.max(d) for d in scores) + low_high = (low,high) + + #test is filled + plt.hist(tpr[1], + color='b', alpha=0.5, range=low_high, bins=bins, + histtype='stepfilled', density=True, label='S (test)') + plt.hist(fpr[1], + color='r', alpha=0.5, range=low_high, bins=bins, + histtype='stepfilled', density=True, label='B (test)') + + #training is dotted + hist, bins = np.histogram(tpr[2], bins=bins, range=low_high, density=True) + scale = len(tpr[2]) / sum(hist) + err = np.sqrt(hist * scale) / scale + width = (bins[1] - bins[0]) + center = (bins[:-1] + bins[1:]) / 2 + plt.errorbar(center, hist, yerr=err, fmt='o', c='b', label='S (training)') + hist, bins = np.histogram(fpr[2], bins=bins, range=low_high, density=True) + scale = len(tpr[2]) / sum(hist) + err = np.sqrt(hist * scale) / scale + plt.errorbar(center, hist, yerr=err, fmt='o', c='r', label='B (training)') + + plt.xlabel("Deep Learning Score") + plt.ylabel("Arbitrary units") + plt.legend(loc='best') + overtrain_path = self.output_dir+'/fig_overtraining_%d_%.4f.pdf' %(epoch+1,round(roc_val,4)) + plt.savefig(overtrain_path) + plt.gcf().clear() + print('ROC curve and overtraining check plots are saved!') + + del y_pred, y_pred_val, fpr, tpr, roc_auc + + ############################### + #Save single gpu model manually + ############################### + modelfile = 'model_%d_%.4f.h5' %(epoch+1,round(roc_val,4)) + self.model_to_save.save(self.output_dir+'/'+modelfile) + print('Current model is saved') + + return + + def on_batch_begin(self, batch, logs={}): + return + + def on_batch_end(self, batch, logs={}): + return diff --git a/func/genhist.py b/func/genhist.py new file mode 100644 index 0000000..86c9bfb --- /dev/null +++ b/func/genhist.py @@ -0,0 +1,114 @@ +import os, sys + +from array import array + +import ROOT + +class RunWithGenTree: + def __init__(self, ntuple_path, ttbb_name, output_path): + self.ntuple_path = ntuple_path + self.ttbb_name = ttbb_name + self.output_path = output_path + + def run_with_gen_tree(self): + h_gentop_deltaR = [[0] for i in range(0,3)] + h_gentop_invMass = [[0] for i in range(0,3)] + h_mindR_deltaR = [[0] for i in range(0,3)] + h_mindR_invMass = [[0] for i in range(0,3)] + + nbins_gen_addbjets_dr = 3 + gen_addbjets_dr_min = 0.4 + gen_addbjets_dr_max = 4.0 + gen_addbjets_dr_width = [0.4,1.0,2.0,4.0] + + nbins_gen_addbjets_m = 4 + gen_addbjets_m_min = 0.0 + gen_addbjets_m_max = 400.0 + gen_addbjets_m_width = [0.0,60.0,100.0,170.0,400.0] + + for ich in range(0,3): + h_gentop_deltaR[ich] = ROOT.TH1D( + "h_gentop_GenAddbJetDeltaR_Ch%d_nosel" % ich, "", + nbins_gen_addbjets_dr, array('d', gen_addbjets_dr_width) + ) + h_gentop_deltaR[ich].SetXTitle(Form("#DeltaR_{b#bar{b}}")); + h_gentop_deltaR[ich].SetYTitle("Entries"); + h_gentop_deltaR[ich].Sumw2(); + + h_gentop_invMass[ich] = ROOT.TH1D( + "h_gentop_GenAddbJetInvMass_Ch%d_nosel" % ich, "", + nbins_gen_addbjets_m, array('d', gen_addbjets_m_width) + ) + h_gentop_invMass[ich].SetXTitle(Form("M_{b#bar{b}}")); + h_gentop_invMass[ich].SetYTitle("Entries"); + h_gentop_invMass[ich].Sumw2(); + + h_mindR_deltaR[ich] = ROOT.TH1D( + "h_mindR_GenAddbJetDeltaR_Ch%d_nosel" % ich, "", + nbins_gen_addbjets_dr, array('d', gen_addbjets_dr_width) + ) + h_mindR_deltaR[ich].SetXTitle(Form("#DeltaR_{b#bar{b}}")); + h_mindR_deltaR[ich].SetYTitle("Entries"); + h_mindR_deltaR[ich].Sumw2(); + + h_mindR_invMass[ich] = ROOT.TH1D( + "h_mindR_GenAddbJetInvMass_Ch%d_nosel" % ich, "", + nbins_gen_addbjets_m, array('d', gen_addbjets_m_width) + ) + h_mindR_invMass[ich].SetXTitle(Form("M_{b#bar{b}}")); + h_mindR_invMass[ich].SetYTitle("Entries"); + h_mindR_invMass[ich].Sumw2(); + + f_out = ROOT.TFile.Open(os.path.join(self.output_path, 'hist_GenTree.root'), 'RECREATE') + + genchain = ROOT.TChain('ttbbLepJets/gentree') + genchain.Add(os.path.join(self.ntuple_path, self.ttbb_name)) + + import utils as ut + for i in xrange(genchain.GetEntries()): + ut.printProgress(i, genchain.GetEntries(), 'Progress:', 'Complete', 1, 50) + + genchain.GetEntry(i) + gentop_addbjet1 = ROOT.TLorentzVector() + gentop_addbjet2 = ROOT.TLorentzVector() + gentop_addbjet1.SetPtEtaPhiE(genchain.addbjet1_pt, genchain.addbjet1_eta, genchain.addbjet1_phi, genchain.addbjet1_e) + gentop_addbjet2.SetPtEtaPhiE(genchain.addbjet2_pt, genchain.addbjet2_eta, genchain.addbjet2_phi, genchain.addbjet2_e) + + mindR_addbjet1 = ROOT.TLorentzVector() + mindR_addbjet2 = ROOT.TLorentzVector() + mindR_addbjet1.SetPtEtaPhiE(genchain.mindRjet1_pt, genchain.mindRjet1_eta, genchain.mindRjet1_phi, genchain.mindRjet1_e) + mindR_addbjet2.SetPtEtaPhiE(genchain.mindRjet2_pt, genchain.mindRjet2_eta, genchain.mindRjet2_phi, genchain.mindRjet2_e) + + gentop_dR = -999 + gentop_m = -999 + mindR_dR = -999 + mindR_m = -999 + + gentop_dR = gentop_addbjet1.DeltaR(gentop_addbjet2) + gentop_m = (gentop_addbjet1 + gentop_addbjet2).M() + + mindR_dR = mindR_addbjet1.DeltaR(mindR_addbjet2) + mindR_M = (mindR_addbjet1 + mindR_addbjet2).M() + + channel = genchain.channel + genweight = genchain.genweight + + h_gentop_deltaR[channel].(gentop_dR, genweight) + h_gentop_invMass[channel].(gentop_m, genweight) + h_mindR_deltaR[channel].(mindR_dR, genweight) + h_mindR_invMass[channel].(mindR_m, genweight) + + if channel == 0 or channel == 1: + h_gentop_deltaR[2].(gentop_dR, genweight) + h_gentop_invMass[2].(gentop_m, genweight) + h_mindR_deltaR[2].(mindR_dR, genweight) + h_mindR_invMass[2].(mindR_m, genweight) + + f_out.cd() + for ich in range(0,3): + h_gentop_deltaR[ich].Write() + h_gentop_invMass[ich].Write() + h_mindR_deltaR[ich].Write() + h_mindR_invMass[ich].Write() + f_out.Close() + diff --git a/func/model.py b/func/model.py new file mode 100644 index 0000000..98e9c86 --- /dev/null +++ b/func/model.py @@ -0,0 +1,298 @@ +#! /usr/bin/env python +from __future__ import print_function +import sys, os +import google.protobuf + +os.environ["CUDA_VISIBLE_DEVICES"] = "2" + +import matplotlib.pyplot as plt +import pandas as pd +from sklearn.preprocessing import StandardScaler, label_binarize +from sklearn.decomposition import PCA +from sklearn.utils import shuffle, class_weight +from sklearn.metrics import roc_auc_score, roc_curve +from sklearn.metrics import confusion_matrix, f1_score, precision_score, recall_score +import numpy as np +from root_numpy import array2tree, tree2array +import csv +import re +import string +import math +from array import array + +import tensorflow as tf +import keras +from keras.utils import np_utils, multi_gpu_model +from keras.models import Model, Sequential, load_model +from keras.layers import Input, Dense, Activation, Dropout, add +from keras.layers.normalization import BatchNormalization +from keras.regularizers import l2 +from keras.optimizers import Adam, SGD +from keras.callbacks import Callback, ModelCheckpoint + +import utils as ut + +class MakeModel: + def __init__(self, train_input, config_file): + self.config_file = config_file + self.train_input = train_input + self.config = {} + self.auc_list = [] + self.val_auc_list = [] + + self._load_config() + + def _load_config(self): + import yaml + with open(self.config_file, 'r') as f: + self.config = yaml.load(f) + if not self.config: + print "Error: fail loading the config file %s" % self.config_file + sys.exit(0) + + import utils as ut + if not os.path.exists(self.train_input): + ut.mergeHDF(os.path.join(self.config['directory'],'Training'),"array_train_ttbb") + + if not os.path.exists(self.config['output']): + os.makedirs(self.config['output']) + else: + for item in os.listdir(self.config['output']): + if item.endswith('pdf') or item.endswith('h5') or item.endswith('log'): + os.remove(os.path.join(self.config['output'], item)) + + def _save_config(self): + import yaml + with open(self.config_file, 'w') as f: + self.config = yaml.dump(f) + + def _draw_correlation(self, data, name, **kwds): + """Calculate pairwise correlation between features. + + Extra arguments are passed on to DataFrame.corr() + """ + # simply call df.corr() to get a table of + # correlation values if you do not need + # the fancy plotting + corrmat = data.corr(**kwds) + + fig, ax1 = plt.subplots(ncols=1, figsize=(6,5)) + + opts = {'cmap': plt.get_cmap("RdBu"), + 'vmin': -1, 'vmax': +1} + heatmap1 = ax1.pcolor(corrmat, **opts) + plt.colorbar(heatmap1, ax=ax1) + + ax1.set_title("Correlations") + + labels = corrmat.columns.values + for ax in (ax1,): + ax.tick_params(labelsize=6) + # shift location of ticks to center of the bins + ax.set_xticks(np.arange(len(labels))+0.5, minor=False) + ax.set_yticks(np.arange(len(labels))+0.5, minor=False) + ax.set_xticklabels(labels, minor=False, ha='right', rotation=90) + ax.set_yticklabels(labels, minor=False) + + plt.tight_layout() + #plt.show() + if name == 'sig' : + plt.savefig(configDir+weightDir+ver+'/fig_corr_s.pdf') + print('Correlation matrix for signal is saved!') + plt.gcf().clear() + elif name == 'bkg' : + plt.savefig(configDir+weightDir+ver+'/fig_corr_b.pdf') + plt.gcf().clear() + print('Correlation matrix for background is saved!') + else : print('Wrong class name!') + + def _draw_input_variables(self, sigdata, bkgdata, signame, bkgname, **kwds): + print('Plotting input variables') + bins = 40 + for colname in sigdata: + dataset = [sigdata, bkgdata] + low = min(np.min(d[colname].values) for d in dataset) + high = max(np.max(d[colname].values) for d in dataset) + if high > 500: low_high = (low,500) + else: low_high = (low,high) + + plt.figure() + sigdata[colname].plot.hist(color='b', density=True, range=low_high, bins=bins, histtype='step', label='signal') + bkgdata[colname].plot.hist(color='r', density=True, range=low_high, bins=bins, histtype='step', label='background') + plt.xlabel(colname) + plt.ylabel('A.U.') + plt.title('Intput variables') + plt.legend(loc='upper right') + plt.savefig(configDir+weightDir+ver+'/fig_input_'+colname+'.pdf') + plt.gcf().clear() + plt.close() + + def compile_train(self): + multiGPU = True + if os.environ['CUDA_VISIBLE_DEVICES'] in ['0','1','2','3']: multiGPU = False + + data = pd.read_hdf(self.train_input) + + ########################################## + #drop phi and label features, correlations + ########################################## + labels = data.filter(['signal'], axis=1) + data = data.filter(['signal']+ut.getVarlist()) + data.astype('float32') + + #self._draw_correlations(data.loc[data['signal'] == 0].drop('signal', axis=1), 'bkg') + #self._draw_correlations(data.loc[data['signal'] == 1].drop('signal', axis=1), 'sig') + #self._draw_input_variables(data.loc[data['signal'] == 1].drop('signal', axis=1), data.loc[data['signal'] == 0].drop('signal', axis=1), 'sig', 'bkg') + + data = data.drop('signal', axis=1) #then drop label + + ############### + #split datasets + ############### + train_sig = labels.loc[labels['signal'] == 1].sample(frac=0.8,random_state=200) + train_bkg = labels.loc[labels['signal'] == 0].sample(frac=0.8,random_state=200) + test_sig = labels.loc[labels['signal'] == 1].drop(train_sig.index) + test_bkg = labels.loc[labels['signal'] == 0].drop(train_bkg.index) + + train_idx = pd.concat([train_sig, train_bkg]).index + test_idx = pd.concat([test_sig, test_bkg]).index + + data_train = data.loc[train_idx,:].copy() + data_test = data.loc[test_idx,:].copy() + labels_train = labels.loc[train_idx,:].copy() + labels_test = labels.loc[test_idx,:].copy() + + print('Training signal: '+str(len(train_sig))+' / testing signal: '+str(len(test_sig))+' / training background: '+str(len(train_bkg))+' / testing background: '+str(len(test_bkg))) + + labels_train = labels_train.values + Y_train = np_utils.to_categorical(labels_train) + labels_test = labels_test.values + Y_test = np_utils.to_categorical(labels_test) + + ######################## + #Standardization and PCA + ######################## + scaler = StandardScaler() + data_train_sc = scaler.fit_transform(data_train) + data_test_sc = scaler.fit_transform(data_test) + X_train = data_train_sc + X_test = data_test_sc + + ################################# + #Keras model compile and training + ################################# + nvar = len(ut.getVarlist()) + a = 300 + b = 0.08 + init = 'glorot_uniform' + + inputs = Input(shape=(nvar,)) + x = Dense(a, kernel_regularizer=l2(1E-2))(inputs) + x = Dropout(b)(x) + x = BatchNormalization()(x) + #branch_point1 = Dense(a, name='branch_point1')(x) + x = Dense(a, activation='relu', kernel_initializer=init, bias_initializer='zeros')(x) + x = Dropout(b)(x) + x = BatchNormalization()(x) + x = Dense(a, activation='relu', kernel_initializer=init, bias_initializer='zeros')(x) + x = Dropout(b)(x) + #x = add([x, branch_point1]) + x = BatchNormalization()(x) + #branch_point2 = Dense(a, name='branch_point2')(x) + x = Dense(a, activation='relu', kernel_initializer=init, bias_initializer='zeros')(x) + x = Dropout(b)(x) + x = BatchNormalization()(x) + x = Dense(a, activation='relu', kernel_initializer=init, bias_initializer='zeros')(x) + x = Dropout(b)(x) + #x = add([x, branch_point2]) + x = BatchNormalization()(x) + #branch_point3 = Dense(a, name='branch_point3')(x) + x = Dense(a, activation='relu', kernel_initializer=init, bias_initializer='zeros')(x) + x = Dropout(b)(x) + x = BatchNormalization()(x) + x = Dense(a, activation='relu', kernel_initializer=init, bias_initializer='zeros')(x) + x = Dropout(b)(x) + #x = add([x, branch_point3]) + x = BatchNormalization()(x) + #branch_point4 = Dense(a, name='branch_point4')(x) + x = Dense(a, activation='relu', kernel_initializer=init, bias_initializer='zeros')(x) + x = Dropout(b)(x) + x = BatchNormalization()(x) + x = Dense(a, activation='relu', kernel_initializer=init, bias_initializer='zeros')(x) + x = Dropout(b)(x) + #x = add([x, branch_point4]) + x = BatchNormalization()(x) + #branch_point5 = Dense(a, name='branch_point5')(x) + x = Dense(a, activation='relu', kernel_initializer=init, bias_initializer='zeros')(x) + x = Dropout(b)(x) + x = BatchNormalization()(x) + x = Dense(a, activation='relu', kernel_initializer=init, bias_initializer='zeros')(x) + x = Dropout(b)(x) + #x = add([x, branch_point5]) + #x = BatchNormalization()(x) + #x = Dense(a, activation='relu', kernel_initializer=init, bias_initializer='zeros')(x) + #x = Dropout(b)(x) + predictions = Dense(2, activation='softmax')(x) + model = Model(inputs=inputs, outputs=predictions) + + if multiGPU : train_model = multi_gpu_model(model, gpus=4) + else : train_model = model + + adam=keras.optimizers.Adam(lr=1E-3, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=1E-3) + train_model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy','binary_accuracy']) +#train_model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy','categorical_accuracy']) + + modelfile = 'model_{epoch:02d}_{val_binary_accuracy:.4f}.h5' + checkpoint = ModelCheckpoint(self.config['output']+'/'+modelfile, monitor='val_binary_accuracy', verbose=1, save_best_only=False)#, mode='max') + + history = train_model.fit(X_train, Y_train, + epochs=30, batch_size=1024, + validation_data=(X_test,Y_test), + #class_weight={ 0: 14, 1: 1 }, + callbacks=[RocCallback(training_data=(X_train,Y_train), validation_data=(X_test,Y_test), model=model, output_dir=self.config['output'], self.auc_list, self.val_auc_list)] + ) + + print("Now predict score with test set") + bestModel = "" + best_acc = 0.0 + for filename in os.listdir(configDir+weightDir+ver): + if not "h5" in filename : continue + tmp = filename.split('.') + tmp_acc = float("0."+tmp[1]) + if tmp_acc > best_acc : + best_acc = tmp_acc + bestModel = filename + + print("Use "+bestModel) + model_best = load_model(self.config['output']+'/'+bestModel) + y_pred = model_best.predict(X_test, batch_size=1024) + + plt.plot(history.history['binary_accuracy']) + plt.plot(history.history['val_binary_accuracy']) + plt.title('Model accuracy') + plt.ylabel('Accuracy') + plt.xlabel('Epoch') + plt.legend(['Train','Test'], loc='lower right') + plt.savefig(os.path.join(configDir,weightDir+ver,'fig_score_acc.pdf')) + plt.gcf().clear() + + plt.plot(history.history['loss']) + plt.plot(history.history['val_loss']) + plt.title('Binary crossentropy') + plt.ylabel('Loss') + plt.xlabel('Epoch') + plt.legend(['Train','Test'],loc='upper right') + plt.savefig(os.path.join(configDir,weightDir+ver,'fig_score_loss.pdf')) + plt.gcf().clear() + + plt.plot(self.auc_list) + plt.plot(self.val_auc_list) + plt.title('Area under curve') + plt.ylabel('AUC') + plt.xlabel('Epoch') + plt.legend(['Train','Test'], loc='upper right') + plt.savefig(os.path.join(configDir,weightDir+ver,'fig_score_auc.pdf')) + plt.gcf().clear() + + self.config['model'] = str(bestModel) + self._save_config() diff --git a/func/plotit.py b/func/plotit.py new file mode 100644 index 0000000..5eed8e2 --- /dev/null +++ b/func/plotit.py @@ -0,0 +1,98 @@ +import os +import sys + +import ROOT + +strHistConfigTemplate = """\ +'{name}': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + {options} +""" + +strFileConfigTemplate = """\ +'{name}': + type: {type} + pretty-name: '{prettyname}' +{options} +""" + +strMCOptionsTemplate = """\ + cross-section: {xsec} + generated-events: {genevt} + fill-color: '{color}' + group: {group} + order: {order} +""" + +class MakeConfigs: + def __init__(self, year, root_path, output_path): + self.year = year + self.root_path = root_path + self.output_path = output_path + + def make_histogram_configs(self): + f_tmp = ROOT.TFile(os.path.join(self.root_path, 'hist_DataSingleMu.root')) + hist_list = [x.GetName() for x in f_tmp.GetListOfKeys()] + + str_bank = [] + for hist in hist_list: + if any(i in hist for i in ['Resp', 'Info', 'Weights', 'bSF']): continue + TH1 = f_tmp.Get(hist) + if TH1.InheritsFrom('TH2') or TH1.InheritsFrom('TH3'): continue + str_config = strHistConfigTemplate.format(name=hist, options='#log-y: true') + str_bank.append(str_config) + + config = open(os.path.join(self.output_path, 'histos.yml'), 'w') + str_out = '\n'.join(item for item in str_bank) + config.write(str_out) + config.close() + + def make_file_configs(self): + str_bank = [] + + data_options = " legend: 'Data'\n marker-size: 0.6\n group: GData" + + temp = strFileConfigTemplate.format(name='hist_DataSingleMu.root', type='data', legend='data', + prettyname='DataSingleMu', options=data_options) + str_bank.append(temp) + + temp = strFileConfigTemplate.format(name='hist_DataSingleEG.root', type='data', legend='data', + prettyname='DataSingleEG', options=data_options) + str_bank.append(temp) + + genevt = {} + with open('./samples/genevt'+str(self.year)+'.txt','r') as f: + while True: + line = f.readline() + if not line: break + tmp = line.split(' ') + genevt[tmp[0]] = float(tmp[1]) + + with open('./samples/xsec'+str(self.year)+'.txt','r') as f: + while True: + line = f.readline() + if not line: break + if 'Sample' in line: continue + tmp = line.split(' ') + sample = tmp[0] + xsec = float(tmp[1]) + order = int(tmp[2]) + color = tmp[3] + legend = tmp[4][:-1] + if order < 0: continue + + group = 'G'+legend + + mc_options = strMCOptionsTemplate.format(xsec=str(xsec), genevt=str(genevt[sample]), + color=str(color), group=str(group), order=str(order)) + temp = strFileConfigTemplate.format(name='hist_'+sample+'.root', type='mc', legend=legend, + prettyname=sample, options=mc_options) + str_bank.append(temp) + + config = open(os.path.join(self.output_path, 'files'+str(self.year)+'.yml'), 'w') + str_out = '\n'.join(item for item in str_bank) + config.write(str_out) + config.close() diff --git a/func/postproc.py b/func/postproc.py new file mode 100644 index 0000000..1345e68 --- /dev/null +++ b/func/postproc.py @@ -0,0 +1,102 @@ +import os +import sys +import multiprocessing as mp +import subprocess +from array import array + +import ROOT + +class RunPostProcess: + def __init__(self, base_path, input_path, year): + self.base_path = base_path + self.input_path = input_path + self.year = year + + self.root_dir = os.path.join(self.input_path, 'root'+str(self.year)) + self.dnn_dir = os.path.join(self.input_path, 'dnn'+str(self.year)) + self.qcd_dir = os.path.join(self.input_path, 'qcd'+str(self.year)) + self.merge_dir = os.path.join(self.input_path, 'merge'+str(self.year)) + + self.ctl = False + self.dnn = False + self.qcd = False + + self._check_directory() + self._load_samples() + + from postproc_merge import _merge_root + from postproc_merge import do_merge_root + + from postproc_post import _normalize_by_bSF + from postproc_post import _rescale_extsample + from postproc_post import _write_envelope + from postproc_post import _execute_postprocess + + def _check_directory(self): + self.ctl = os.path.exists(self.root_dir) + self.dnn = os.path.exists(self.dnn_dir) + self.qcd = os.path.exists(self.qcd_dir) + + if self.ctl: + print("...%s exists" % self.root_dir) + else: + print("...%s does not exist" % self.root_dir) + + if self.dnn: + print("...%s exists" % self.dnn_dir) + else: + print("...%s does not exist" % self.dnn_dir) + + if self.qcd: + print("...%s exists" % self.qcd_dir) + else: + print("...%s does not exist" % self.qcd_dir) + + def _load_samples(self): + from func import saveAndLoadSamples as sls + load = sls.LoadSamples(self.year, self.base_path+'/samples') + self.data = load.get_data() + self.samples = load.get_samples() + extntuple = load.get_extsyst() + self.extsyst = [] + + for sample in self.samples: + if any(i in sample for i in ['Data','QCD']): + self.samples.remove(sample) + + for syst in extntuple: + tmp = syst.split('_') + if 'Bkg' in syst: + name = tmp[-1].lower() + else: + name = tmp[-2].lower() + name = name.replace('up', '') + name = name.replace('down', '') + if 'tunecuetp8m4' in name: + name = name.replace('tunecuetp8m4', 'tune') + if 'tunecp5' in name: + name = name.replace('tunecp5', 'tune') + self.extsyst.append(name) + tmpset = set(self.extsyst) + self.extsyst = list(tmpset) + + def do_postprocess(self): + print("...Run post process") + if not os.path.exists(self.input_path+'/post'): + try: + os.makedirs(self.input_path+'/post') + except OSError: + print(self.input_path+'/post: already exists') + + procs = [] + for item in os.listdir(input_dir): + if any(i in item for i in ['__','gen','Data']): continue + if not item.endswith('.root'): continue + proc = mp.Process(target=self._execute_postprocess, args=(input_dir, item, year)) + procs.append(proc) + proc.start() + for proc in procs: + proc.join() + for file in glob.glob(input_dir+'/hist_QCD*'): + cmd = ['cp',file,input_dir+'/post'] + subprocess.call(cmd) diff --git a/func/postproc_merge.py b/func/postproc_merge.py new file mode 100644 index 0000000..8da4448 --- /dev/null +++ b/func/postproc_merge.py @@ -0,0 +1,51 @@ +import os +import subprocess +import glob + +def _merge_root(self, input_dir): + tmp = input_dir.split('/') + output_dir = '/'.join(tmp[:-1]) + input_root = tmp[-1] + cmd = ['hadd', str(out_path)+'/hist_'+str(input_root)+'.root']+glob.glob(self.input_path+'/*') + subprocess.call(cmd) + +def do_merge_root(self): + print("...Merge root files") + dirs = [] + if self.ctl: dirs += filter(os.path.isdir, glob.glob(self.root_dir+'/*')) + if self.dnn: dirs += filter(os.path.isdir, glob.glob(self.dnn_dir+'/*')) + + proc = [] + for item in dirs: + proc = mp.Process(target=self._merge_root, args=(item,)) + procs.append(proc) + proc.start() + for proc in procs: + proc.join() + + for item in dirs: + os.system('rm -rf '+item) + + for directory in [self.root_dir, self.dnn_dir, self.qcd_dir] + files = filter(os.path.isfile, glob.glob(directory+'/*')) + data = {'Mu':[],'EG':[]} + for item in files: + result = item.find('Data') + if not result < 0: + if 'Mu' in item: + data['Mu'].append(item) + else: + data['EG'].append(item) + + for lep in ['Mu','EG']: + loc = data[lep].find(lep) + name = data[lep][:result+2]+'.root' + cmd = ['hadd', name]+data[lep] + subprocess.call(cmd) + + if self.ctl and self.dnn: + if not os.path.exists(self.merge_dir): + os.makedirs(tmp_dir) + for sample in os.listdir(self.root_dir): + cmd = ['hadd', self.merge_dir+'/'+sample, self.root_dir+'/'+sample, self.dnn_dir+'/'+sample] + subprocess.call(cmd) diff --git a/func/postproc_post.py b/func/postproc_post.py new file mode 100644 index 0000000..ecefeae --- /dev/null +++ b/func/postproc_post.py @@ -0,0 +1,192 @@ +import os +import sys +from array import array + +from ROOT import * + +def _normalize_by_bSF(self, f_sample): + print f_sample # debugging + hist_list = [x.GetName() for x in f_sample.GetListOfKeys()] + + bSF_book = {'S0':[], 'S1':[], 'S2':[], 'S3':[], 'S5':[], 'S6':[]} + for key in bSF_book.keys(): + for ich in range(0,3): + bSF_book[key].append(f_sample.Get('h_bSFinfo_Ch'+str(ich)+'_'+str(key))) + + h_out = [] + for hist in hist_list: + if any(i in hist.lower() for i in ['info','weight']): continue + name = hist.split('__')[0] + name = name.split('_') + ch = name[-2] + step = name[-1] + if step == 'S4': step = 'S3' + if any(i == step for i in ['S7','S8','S9']): step = 'S6' + + h_bSF = bSF_book[step]('h_bSFinfo_'+str(ch)+'_'+str(step)) + h_tmp = f_sample.Get(hist) + + btag_sys = hist.split('__')[-1] + binnum = 2 + if any(i in hist_name for i in ['__lf', '__hf', '__cferr']): + binnum = h_bSF.GetXaxis().FindBin(str(btag_sys)) + + if h_bSF.GetBinContent(binnum) > 0: + h_tmp.Scale(h_bSF.GetBinContent(1)/h_bSF.GetBinContent(binnum)) + + h_out.append(h_tmp) + + return h_out + +def _rescale_extsample(self, f_sys, h_eventinfo): + print f_tmp # debugging + hist_list = [] + hist_list = [x.GetName() for x in f_sys.GetListOfKeys()] + h_eventinfo_sys = f_sys.Get("EventInfo") + + bratio = 1.0 + if "TT_" in f_sys.GetName() and not "Bkg" in f_sys.GetName(): bratio = 356.4/831.76 + + h_out =[] + for hist in hist_list: + if any(i in hist.lower() for i in ['info', 'weight']): continue + h_tmp = f_sys.Get(hist) + h_tmp.Scale(h_eventinfo.GetBinContent(2)/(h_eventinfo_sys.GetBinContent(2)*bratio)) + h_out.append(h_tmp) + + return h_out + +def _write_envelope(self, sys_name, h_central, h_sys_list, h_eventinfo, h_weights): + #Find maximum, minimum bin errors + h_sys_weighted_list = [] + for index, hist in enumerate(h_sys_list): + #hist.Scale(h_eventinfo.GetBinContent(2)/(h_weights.GetBinContent(index+1)*bratio)) + h_sys_weighted_list.append(hist) + + h_up = h_central.Clone() + h_down = h_central.Clone() + + if h_central.GetDimension() == 1: + for ibin in range(h_central.GetNbinsX()+2): + minimum = float("inf") + maximum = float("-inf") + + for hist in h_sys_weighted_list: + minimum = min(minimum, hist.GetBinContent(ibin)) + maximum = max(maximum, hist.GetBinContent(ibin)) + + h_up.SetBinContent(ibin, maximum) + h_down.SetBinContent(ibin, minimum) + elif h_central.GetDimension() == 2: + for ixbin in range(h_central.GetNbinsX()+2): + for iybin in range(h_central.GetNbinsY()+2): + minimum = float("inf") + maximum = float("-inf") + + for hist in h_sys_weighted_list: + minimum = min(minimum, hist.GetBinContent(ixbin, iybin)) + maximum = max(maximum, hist.GetBinContent(ixbin, iybin)) + + h_up.SetBinContent(ixbin, iybin, maximum) + h_down.SetBinContent(ixbin, iybin, minimum) + + upname = "__"+sys_name+"up" + downname= "__"+sys_name+"down" + + h_up.SetName(h_central.GetName()+upname) + h_down.SetName(h_central.GetName()+downname) + + return [h_up, h_down] + +def _execute_postprocess(self, proc): + f_sample = TFile.Open(os.path.join(self.merge_dir, proc), "READ") + f_update = TFile.Open(os.path.join(self.merge_dir,'post', proc), "RECREATE") + + h_eventinfo = f_sample.Get("EventInfo") + hist_list = [x.GetName() for x in f_sample.GetListOfKeys()] + + print("%s: b-tag SF scaling..." % proc) + h_out = self._normalize_by_bSF(f_sample) + f_update.cd() + for hist in h_out: + if not any(i in hist.GetName() for i in ['info', 'Weight']): + hist.Write() + + print("%s: Merge JER, JEC histograms..." % proc) + syst_jet = ["__jerup", "__jerdown", "__jecup", "__jecdown"] + for syst in jet_syst: + f = TFile.Open(os.path.join(self.merge_dir, proc[:-5]+syst+'.root')) + h_out = self._normalize_by_bSF(f) + f_update.cd() + for hist in h_out: + if not any(i in hist.GetName() for i in ['info', 'Weight']): + hist.Write() + + if 'TT' in proc and not 'Filter' in proc: + print("%s: Rescaling external samples..." % proc) + for syst in self.extsyst: + for vari in ['up','down']: + ext_name = proc[:-5] + + tmp = syst+vari + f_ext = TFile.Open(os.path.join(self.merge_dir, ext_name+'__'+tmp+'.root'), "READ") + f_tmp = TFile.Open(os.path.join(self.merge_dir, "tmp.root"), "RECREATE") + + h_out = self._normalize_by_bSF(f_ext) + f_tmp.cd() + for hist in h_out: + if not any(i in hist.GetName() for i in ['info', 'Weight']): + hist.Write() + + h_out = self._rescale_extsample(f_tmp, h_eventinfo) + f_update.cd() + for hist in h_out: + if not any(i in hist.GetName() for i in ['Info', 'Weight']): + hist.Write() + + print("%s: Writing envelope..." % proc) + h_scaleweights = f_sample.Get("ScaleWeights") + h_pdfweights = f_sample.Get("PDFWeights") + h_psweights = f_sample.Get("PSWeights") + + for hist in hist_list: + if any(i in hist.lower() for i in ['__', 'info', 'weight']): continue + + h_central = f_sample.Get(hist) + + h_sw_list = [] + for i in range(6): + h_sw_list.append(f_sample.Get(hist+"__scale"+str(i))) + + h_pdf_list = [] + maxpdf = 104 + for i in range(maxpdf): + h_pdf_list.append(f_sample.Get(hist+"__pdf"+str(i))) + + h_ps_list = [] + for ps in ps_list: + h_ps_list.append(f_sample.Get(hist+"__"+ps)) + + f_update.cd() + h_sw_new = [] + h_sw_new = self._write_envelope("sw", h_central, h_sw_list, h_eventinfo, h_scaleweights) + h_sw_new[0].Write() + h_sw_new[1].Write() + + h_pdf_new = [] + h_pdf_new = self._write_envelope("pdf", h_central, h_pdf_list, h_eventinfo, h_pdfweights) + h_pdf_new[0].Write() + h_pdf_new[1].Write() + + h_ps_new = [] + h_ps_new = self._write_envelope("ps", h_central, h_ps_list, h_eventinfo, h_psweights) + h_ps_new[0].Write() + h_ps_new[1].Write() + + f_update.cd() + evtinfo = f_sample.Get("EventInfo") + evtinfo.Write() + f_update.Close() + f_sample.Close() + + print("End Process "+str(os.getpid())+" "+str(proc)) diff --git a/func/qcd.py b/func/qcd.py new file mode 100644 index 0000000..317a4cf --- /dev/null +++ b/func/qcd.py @@ -0,0 +1,71 @@ +import os, sys +import subprocess + +import ROOT + +import sampleinfo as si + +class GetQCDshape(si.LoadSamples): + def __init__(self, year, lumi, root_path): + self.year = year + self.lumi = lumi + self.root_path = root_path + + self.data = {} + self.samples = {} + + self.get_sample_info() + self._get_root_files() + + def _get_root_files(self): + self.data['Muon'] = ROOT.TFile(os.path.join(self.root_path, 'hist_dataDriven_DataSingleMu.root')) + self.data['Electron'] = ROOT.TFile(os.path.join(self.root_path, 'hist_dataDriven_DataSingleEG.root')) + for sample in self.xsecs.values(): + self.samples[sample[0]] = ROOT.TFile(os.path.join(self.root_path, 'hist_dataDriven_'+sample[0]+'.root')) + + def get_qcd_shape(self): + qcd_syst = ['','__qcdisoup', '__qcdisodown'] + print "Get QCD shape in the sideband region" + for syst in qcd_syst: + f_qcd = ROOT.TFile.Open(os.path.join(self.root_path, 'hist_temp'+str(syst)+'.root'), "RECREATE") + hist_list = [x.GetName() for x in f_data[0].GetListOfKeys()] + + f_qcd.cd() + for hist in hist_list: + if any(i in hist.lower() for i in ['info', 'weight']): continue + if 'Ch0' in hist: + h_qcd = self.data['Muon'].Get(hist) + elif 'Ch1' in hist: + h_qcd = self.data['Electron'].Get(hist) + else: + h_qcd = self.data['Muon'].Get(hist) + tmp = self.f_data['Electron'].Get(hist) + h_qcd.Add(tmp) + + if "TransverseMass" in hist: + nevt_data = h_qcd.Integral(0, h_qcd.GetNbinsX()+1) + + for key, value in self.samples.item(): + if any(i in key for i in ['QCD', 'Filter']): continue + scale = self.lumi*self.xsec[key]/self.genevt[key] + h_tmp = value.Get(hist) + h_tmp.Scale(scale) + h_qcd.Add(h_tmp,-1) + h_qcd.Write() + + if "TransverseMass" in hist: + nevt_qcd = h_qcd.Integral(0, h_qcd.GetNbinsX()+1) + print("Purity of QCD") + print("Hist: "+str(hist)) + print("nevt_data: "+str(nevt_data)) + print("nevt_qcd: "+str(nevt_qcd)) + if nevt_data != 0: + purity = float(nevt_qcd)/float(nevt_data) + else: + purity = 'Nan' + print("Puriy: "+str(purity)) + f_qcd.Close() + cmd = ['hadd', os.path.join(self.root_path, 'hist_dataDriven_QCD.root')] + for syst in qcd_syst: + cmd.append(os.path.join(self.root_path, 'hist_temp'+str(syst)+'.root')) + subprocess.call(cmd) diff --git a/func/sampleinfo.py b/func/sampleinfo.py new file mode 100644 index 0000000..1cf8100 --- /dev/null +++ b/func/sampleinfo.py @@ -0,0 +1,115 @@ +import os +import sys +import ROOT + +class SaveSamples: + def __init__(self, year, ntuple_path, output_path): + self.year = year + self.ntuple_path = ntuple_path + self.output_path = output_path + + self._store_sample_list() + self._store_nevents() + + def _store_sample_list(self): + f_data = open(self.output_path+'/data'+str(self.year)+'.txt','w') + f_mc = open(self.output_path+'/sample'+str(self.year)+'.txt', 'w') + f_syst = open(self.output_path+'/systematic'+str(self.year)+'.txt','w') + + f_mc.write(self.output_path+'\n') + + for item in os.listdir(self.ntuple_path): + if not os.path.isdir(self.ntuple_path+'/'+item): continue + if 'part' in item: continue + print item + if 'Data' in item: + f_data.write(item+'\n') + elif any(i in item for i in ['Herwig','Evtgen','TT_aMC','SYS']): + f_syst.write(item+'\n') + else: + f_mc.write(item+'\n') + + f_data.close() + f_mc.close() + f_syst.close() + + def _store_nevents(self): + f_out = open(self.output_path+'/genevt'+str(self.year)+'.txt','w') + + for item in os.listdir(self.ntuple_path): + if not os.path.isdir(self.ntuple_path+'/'+item): continue + if any(i in item for i in ['Data','part']): continue + nevts = 0.0 + for file in os.listdir(os.path.join(self.ntuple_path,item)): + TFile = ROOT.TFile.Open(os.path.join(self.ntuple_path,item,file)) + EventInfo = TFile.Get('ttbbLepJets/EventInfo') + nevts += EventInfo.GetBinContent(2) + TFile.Close() + f_out.write("%s: %f\n" % (item, nevts)) + print "%s: %f" % (item, nevts) + f_out.close() + +class LoadSamples: + def __init__(self, year, text_path): + self.year = year + self.text_path = text_path + self.data = [] + self.samples = [] + self.extsyst = [] + self.xsecs = {} + self.genevt = {} + + self._get_sample_info() + + def get_data(self): + return self.data + + def get_samples(self): + return self.samples + + def get_extsyst(self): + return self.extsyst + + def get_xsecs(self): + return self.xsecs + + def get_genevt(self): + return self.genevt + + def _get_sample_info(self): + with open(self.text_path+'/data'+str(self.year)+'.txt', 'r') as f: + while True: + line = f.readline() + if not line: break + self.data.append(line[:-1]) + + with open(self.text_path+'/sample'+str(self.year)+'.txt', 'r') as f: + while True: + line = f.readline() + if '/data/' in line: continue + if not line: break + self.samples.append(line[:-1]) + + with open(self.text_path+'/systematic'+str(self.year)+'.txt', 'r') as f: + while True: + line = f.readline() + if '/data/' in line: continue + if not line: break + self.extsyst.append(line[:-1]) + + with open(self.text_path+'/xsec'+str(self.year)+'.txt','r') as f: + while True: + line = f.readline() + if 'Xsec' in line: continue + if not line: break + tmp = line.split(' ') + if int(tmp[2]) < 0: continue + if not tmp[0] in self.samples: continue + self.xsecs[int(tmp[2])] = [tmp[0], float(tmp[1])] + + with open(self.text_path+'/genevt'+str(self.year)+'.txt','r') as f: + while True: + line = f.readline() + if not line: break + tmp = line.split(' ') + self.genevt[tmp[0]] = float(tmp[1]) diff --git a/func/slurm.py b/func/slurm.py new file mode 100644 index 0000000..ce523c6 --- /dev/null +++ b/func/slurm.py @@ -0,0 +1,36 @@ +import os +import sys +import textwrap +import subprocess + +class MakeSlurmJob: + + + def __init__(self, year, input_path, base_path, target): + self.year = year + self.input_path = input_path + self.base_path = base_path + self.target = target + self.testset = ['TTLJ_PowhegPythia_ttbb', 'Tree_ttbbLepJets_000.root'] + self.slurm_template = textwrap.dedent("""\ + #! /bin/bash + + #SBATCH -J {job_name} + #SBATCH -p {node} + #SBATCH -N 1 + #SBATCH --open-mode=append + #SBATCH -o %x.out + #SBATCH -e %x.error + #SBATCH --ntasks=1 + #SBATCH --mem=1gb + #SBATCH --cpus-per-task=1 + #SBATCH --comment python + #SBATCH --hint=compute_bound + + {opts} + echo {command} + {command} + """) + + from slurm_make import make_slurm_job + diff --git a/func/slurm_make.py b/func/slurm_make.py new file mode 100644 index 0000000..a9a90d1 --- /dev/null +++ b/func/slurm_make.py @@ -0,0 +1,89 @@ +import os +import sys +import textwrap +import subprocess + +def make_slurm_job(self, is_test=False, is_qcd=False): + job_name = str(self.year)+'_plots' + node = 'gpu' + opts = 'opt1=$1\nopt2=$2\nopt3=$3\nopt4=$4\nopt5=$5\n\n' + command = 'python func/%s $opt1 $opt2 $opt3 $opt4 $opt5' % self.target + script = self.slurm_template.format(job_name=job_name, node=node, opts=opts, command=command) + script_file = os.path.join(self.base_path, '%s_job_slurm_%d.sh' % (self.target, self.year)) + with open(script_file, 'w') as f: + f.write(script) + + def make_cmd(input_path, item, output_name, flag, syst=''): + #input_path, file, outname, flag, syst + if 'tselector' in self.target.lower(): + #[year, input_path, file, outname, flag] + options = [str(self.year), input_path, item, output_name+syst, flag] + + if 'array' in self.target.lower(): + #[year, input_path, file, flag, syst] + options = [str(self.year), input_path, item, flag, syst] + + if 'dnn' in self.target.lower(): + #[year, input_path, file, output_path, outname] + options = [str(self.year), input_path, item, output_name+syst] + + return ['sbatch',script_file] + options + + from func import saveAndLoadSamples as sls + load = sls.LoadSamples(self.year, self.base_path+'/samples') + data = load.get_data() + samples = load.get_samples() + extsyst = load.get_extsyst() + + samples = data + samples + + from func import runTSelector as ts + from func import ntuple2array as ar + from func import runDNNAnalyzer as da + + #Compile TSelector + if 'tselector' in self.target.lower(): + ts.runAna(self.year, self.input_path+'/'+self.testset[0], self.testset[1], 'Nosys_Compile', 'False') + + if is_test: + cmd = make_cmd(os.path.join(self.input_path, self.testset[0]), self.testset[1], 'test_ttbb', 'False')) + subprocess.call(cmd) + elif is_qcd: + for sample in samples: + for item in os.listdir(self.input_path+'/'+sample): + systlist = ['', '__qcdisoup', '__qcdisodown'] + for syst in systlist: + cmd = make_cmd(os.path.join(self.input_path, sample), item, 'dataDriven_'+sample, 'True', syst) + subprocess.call(cmd) + else: + if 'array' in self.target.lower(): + for item in os.listdir(self.input_path+'/TTLJ_PowhegPythia_ttbb'): + cmd = make_cmd(os.path.join(self.input_path, 'TTLJ_PowhegPythia_ttbb', item, 'Training', 'True')) + subprocess.call(cmd) + + for sample in samples: + for item in os.listdir(self.input_path+'/'+sample): + cmd = make_cmd(os.path.join(self.input_path, sample), item, sample, 'False') + subprocess.call(cmd) + + for sample in samples: + if "QCD" in sample or "Data" in sample: continue + jetsyst = ['jerup','jerdown','jecup','jecdown'] + for syst in jetsyst: + for item in os.listdir(self.input_path+'/'+sample): + cmd = make_cmd(os.path.join(self.input_path, sample), item, sample, 'False', syst) + subprocess.call(cmd) + + for syst in extsyst: + tmp = syst.split('_') + if 'Bkg' in syst: + outName = tmp[0]+'_'+tmp[1]+'__'+tmp[-1].lower() + else: + outName = tmp[0]+'_'+tmp[1]+'_'+tmp[-1]+'__'+tmp[-2].lower() + if 'tunecuetp8m4' in outName: + outName = outName.replace('tunecuetp8m4','tune') + if 'tunecp5' in outName: + outName = outName.replace('tunecp5', 'tune') + for item in os.listdir(self.input_path+'/'+syst): + cmd = make_cmd(os.path.join(self.input_path, syst), item, outName, 'False'] + subprocess.call(cmd) diff --git a/func/systplots.py b/func/systplots.py new file mode 100644 index 0000000..3e1b8dd --- /dev/null +++ b/func/systplots.py @@ -0,0 +1,172 @@ +import os +import sys + +import ROOT + +import saveAndLoadSamples as sls +import tdrstyle + +class DrawSystPlots(sls.LoadSamples): + def __init__(self, year, lumi, root_path, hist_name, output_path): + self.year = year + self.lumi = float(lumi) + self.root_path = root_path + self.hist_name = hist_name + self.output_path = output_path + self.samples = {} + self.xsecs = {} + self.genevt = {} + + if not os.path.exists(self.output_path): + os.makedirs(self.output_path) + + self._get_root_files() + + def _get_root_files(self): + self.get_sample_info() + + for sample in self.xsecs.values(): + self.samples[sample[0]] = ROOT.TFile(os.path.join(self.root_path, 'hist_'+sample[0]+'.root')) + + def draw_histograms(self): + ROOT.gStyle.SetOptStat(0) + + for name, file in self.samples.items(): + if not 'ttbb' in name: continue + temp = [x.GetName() for x in file.GetListOfKeys()] + break + + syst_name = [] + for item in temp: + if not self.hist_name in item: continue + if item[-2:] == 'up': + name = (item.split('__')[-1]).replace('up','') + syst_name.append(name) + + xsecs = {} + for sample in self.xsecs.values(): + xsecs[sample[0]] = sample[1] + for syst in syst_name: + i = 0 + for name, file in self.samples.items(): + if 'QCD' in name: continue + if any(i in syst for i in ['tune','pdf','ps','sw','hdamp','isr','fsr']): + if not ('TT' in name and 'Powheg' in name): continue + if i == 0: + TH1Nom = file.Get(self.hist_name).Clone() + TH1Up = file.Get(self.hist_name+'__'+syst+'up').Clone() + TH1Down = file.Get(self.hist_name+'__'+syst+'down').Clone() + + TH1Nom.Scale(xsecs[name]*self.lumi/self.genevt[name]) + TH1Up.Scale(xsecs[name]*self.lumi/self.genevt[name]) + TH1Down.Scale(xsecs[name]*self.lumi/self.genevt[name]) + i += 1 + else: + tmpNom = file.Get(self.hist_name).Clone() + tmpUp = file.Get(self.hist_name+'__'+syst+'up').Clone() + tmpDown = file.Get(self.hist_name+'__'+syst+'down').Clone() + + tmpNom.Scale(xsecs[name]*self.lumi/self.genevt[name]) + tmpUp.Scale(xsecs[name]*self.lumi/self.genevt[name]) + tmpDown.Scale(xsecs[name]*self.lumi/self.genevt[name]) + + TH1Nom.Add(tmpNom) + TH1Up.Add(tmpUp) + TH1Down.Add(tmpDown) + + label = ROOT.TPaveText(0.14,0.9549955,0.97,1,"brNDC") + label.SetBorderSize(0) + label.SetFillStyle(0) + label.SetTextAlign(13) + label.SetTextSize(0.05850585) + label.AddText(" CMS simulation #font[52]{#scale[0.76]{Work in Progress}}") + + canvas = ROOT.TCanvas("","",1025,568,450,450) + canvas.Range(0,0,1,1) + canvas.SetFillColor(0) + canvas.SetBorderMode(0) + canvas.SetBorderSize(2) + canvas.SetTickx(1) + canvas.SetTicky(1) + canvas.SetLeftMargin(0.14) + canvas.SetRightMargin(0.03) + canvas.SetTopMargin(0.06) + canvas.SetFrameBorderMode(0) + + pad1 = ROOT.TPad("pad1","pad1",0.0,0.33333,1.0,1.0) + pad1.Range(-67.46988,-190.601,414.4578,9339.448) + pad1.SetLeftMargin(0.14) + pad1.SetRightMargin(0.03) + pad1.SetBottomMargin(0.02) + pad1.SetFrameFillColor(0) + pad1.SetFillColor(0) + pad1.SetBorderMode(0) + pad1.SetBorderSize(2) + pad1.SetTickx(1) + pad1.SetTicky(1) + pad1.SetFrameBorderMode(0) + + pad2 = ROOT.TPad("pad2","pad2",0.0,0.0,1.0,0.33333) + pad2.Range(-67.46988,-0.1539271,414.4578,1.692312) + pad2.SetTopMargin(0.05) + pad2.SetBottomMargin(0.30003) + pad2.SetLeftMargin(0.14) + pad2.SetRightMargin(0.03) + pad2.SetGridy() + pad2.SetFrameFillColor(0) + pad2.SetTickx(1) + pad2.SetTicky(1) + pad2.SetFrameBorderMode(0) + + pad1.Draw() + pad2.Draw() + + pad1.cd() + TH1Nom.GetXaxis().SetLabelFont(43) + TH1Nom.GetXaxis().SetTitleFont(43) + TH1Nom.GetYaxis().SetLabelFont(43) + TH1Nom.GetYaxis().SetLabelSize(14) + TH1Nom.GetYaxis().SetTitleSize(15) + TH1Nom.GetYaxis().SetTitleOffset(2) + TH1Nom.GetYaxis().SetTitleFont(43) + TH1Nom.GetXaxis().SetLabelSize(0) + TH1Nom.GetXaxis().SetTitleSize(0) + TH1Nom.SetMinimum(0) + + TH1Up.SetLineColor(ROOT.kGreen) + TH1Down.SetLineColor(ROOT.kRed) + + TH1Nom.Draw("hist") + TH1Up.Draw("hist same") + TH1Down.Draw("hist same") + label.Draw("same") + + pad2.cd() + TH1RatioUp = TH1Nom.Clone() + TH1RatioUp.Divide(TH1Up) + TH1RatioDown = TH1Nom.Clone() + TH1RatioDown.Divide(TH1Down) + + TH1RatioUp.SetMaximum(1.4) + TH1RatioUp.SetMinimum(0.6) + TH1RatioUp.GetXaxis().SetLabelOffset(0.021) + TH1RatioUp.GetXaxis().SetLabelSize(14) + TH1RatioUp.GetXaxis().SetTitleSize(15) + TH1RatioUp.GetXaxis().SetTitleOffset(3.3) + TH1RatioUp.GetYaxis().SetTitle("Nom. / Syst.") + TH1RatioUp.GetYaxis().SetLabelOffset(0.012) + TH1RatioUp.GetYaxis().SetLabelSize(14) + TH1RatioUp.GetYaxis().SetTitleSize(15) + TH1RatioUp.GetYaxis().SetNdivisions(505) + + TH1RatioUp.SetLineColor(ROOT.kGreen) + TH1RatioDown.SetLineColor(ROOT.kRed) + + TH1RatioUp.Draw("p") + TH1RatioDown.Draw("p same") + + canvas.Print(self.output_path+'/'+syst+".pdf","pdf") + + pad1.Clear() + pad2.Clear() + canvas.Clear() diff --git a/func/tselector.py b/func/tselector.py new file mode 100644 index 0000000..e498e3f --- /dev/null +++ b/func/tselector.py @@ -0,0 +1,63 @@ +#!/usr/bin/python +import os +import sys + +from ROOT import TChain, TFile, TH1D, TH1F, TCanvas + +def runAna(year, dir, file, name, isQCD='False'): + # tmp: /data/users/seohyun/ntuple/Run2016/v808/nosplit/Nosys_Compile/TTLJ_PowhegPythia_ttbbFilter_ttbb + # process: Run2016/TTLJ_PowhegPythia_ttbb__jecup/TTLJ_PowhegPythia_ttbb + tmp = dir+'/'+str(name)+'/'+file[:-5] + tmp = tmp.split('/') + process = str(tmp[5])+'/'+str(tmp[-2])+'/'+str(tmp[-1]) + + #print("Begin Process "+str(os.getpid())+": "+str(process)) + + outdir = 'output/root'+str(year) + if 'Tree' in file: + outdir += '/'+name + try: + os.makedirs(outdir) + except OSError: + print(outdir+": already exists") + + def str2bool(v): + if v.lower() in ('yes', 'true', 't', 'y', '1', 'True'): + return True + elif v.lower() in ('no', 'false', 'f', 'n', '0', 'False'): + return False + else: + raise argparse.ArgumentTypeError('Boolean value expected') + + isQCD = str2bool(isQCD) + if isQCD: + chain = TChain("ttbbLepJetsQCD/tree", "events") + else: + chain = TChain("ttbbLepJets/tree","events") + + chain.Add(dir+"/"+file) + chain.Process("macro/MyAnalysis.C+", process) + + f = TFile(dir+"/"+file,"read") + + ## save Event Summary histogram ## + if 'Tree' in process: + out = TFile(outdir+'/hist_'+file, 'update') + else: + out = TFile(outdir+'/hist_'+name+'.root', 'update') + + hevt = f.Get("ttbbLepJets/EventInfo") + hsw = f.Get("ttbbLepJets/ScaleWeights") + hpdf = f.Get("ttbbLepJets/PDFWeights") + hps = f.Get("ttbbLepJets/PSWeights") + hevt.Write() + if not hpdf == None: hpdf.Write() + if not hsw == None: hsw.Write() + if not hps == None: hps.Write() + out.Write() + out.Close() + + print("End Process "+str(os.getpid())+": "+str(process)) + +if len(sys.argv) == 6: + runAna(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4], sys.argv[5]) diff --git a/func/utils.py b/func/utils.py new file mode 100644 index 0000000..d905861 --- /dev/null +++ b/func/utils.py @@ -0,0 +1,95 @@ +import sys, os +import math +from tqdm import tqdm +import pandas as pd + +def getVarlist(): + column = [ + 'bbM', 'bbdR', 'bbdPhi', 'bbdEta', 'bbPhi', 'bbEta', + 'bbnM', 'bbndR', 'b1nM', 'b1ndR', 'b2nM', 'b2ndR', + 'bblM', 'bbldR', 'b1lM', 'b1ldR', 'b2lM', 'b2ldR', + 'bblndR', + 'b1pT', 'b1Eta', 'b1E', 'b1CSV', 'b1M', + 'b2pT', 'b2Eta', 'b2E', 'b2CSV', 'b2M', + 'lpT', 'lEta', 'lE', + 'npT', 'nPhi', + 'nbjets'] + return column + +def getHistXlabel(): + dictionary = { + 'bbM':'m_{b#bar{b}}', 'bbdR':'#DeltaR_{b#bar{b}}', + 'bbdPhi':'#Delta#phi_{b#bar{b}}', 'bbdEta':'#Delta#eta_{b#bar{b}}', + 'bbPhi':'#phi_{b#bar{b}}', 'bbEta':'#eta_{b#bar{b}}', + 'bbnM':'m_{b#bar{b}#nu}', 'bbndR':'#DeltaR_{b#bar{b}#nu}', + 'b1nM':'m_{b1#nu}', 'b1ndR':'#DeltaR_{b1#nu}', 'b2nM':'m_{b2#nu}', 'b2ndR':'DeltaR_{b2#nu}', + 'bblM':'m_{b#bar{b}lep}', 'bbldR':'#DeltaR_{b#bar{b}lep}', + 'b1lM':'m_{b1lep}', 'b1ldR':'#DeltaR_{b1lep}', 'b2lM':'m_{b2lep}', 'b2ldR':'DeltaR_{b2lep}', + 'bblndR':'#DeltaR_{b#bar{b}lep#nu}', + 'b1pT':'pT_{b1}', 'b1Eta':'#eta_{b1}', 'b1E':'E_{b1}', 'b1CSV':'CSV_{b1}', 'b1M':'m_{b1}', + 'b2pT':'pT_{b2}', 'b2Eta':'#eta_{b2}', 'b2E':'E_{b2}', 'b2CSV':'CSV_{b2}', 'b2M':'m_{b2}', + 'lpT':'pT_{lep}', 'lEta':'#eta_{lep}', 'lE':'E_{lep}', + 'npT':'pT_{#nu}', 'nPhi':'#phi_{#nu}', + 'nbjets':'Number of b jets'} + return dictionary + +def getHistRange(var): + histRange = [] + + if 'dR' in var: + histRange = [20, 0, 4] + elif 'dEta' in var: + histRange = [20, 0, 2.5] + elif 'dPhi' in var: + histRange = [20, 0, math.pi] + elif 'pT' in var: + histRange = [20, 0, 400] + elif ('Eta' in var) and (not 'dEta' in var): + histRange = [20, -2.5, 2.5] + elif ('Phi' in var) and (not 'dPhi' in var): + histRange = [20, -math.pi, math.pi] + elif ('mT' in var) or ('M' in var): + histRange = [20, 0, 400] + elif ('E' in var) and (not 'Et' in var): + histRange = [20, 0, 400] + elif 'CSV' in var: + histRange = [20, 0.75, 1] + elif 'nbjets' in var: + histRange = [10, 0, 10] + else: + histRange = [20, 0, 10] + print("Variable does not exist") + + return histRange + +def printProgress(iteration, total, prefix = '', suffix = '', decimals = 1, barLength = 100): + nEvent = str(iteration) + '/' + str(total) + formatStr = "{0:." + str(decimals) + "f}" + percent = formatStr.format(100*(iteration/float(total))) + filledLength = int(round(barLength * iteration/float(total))) + bar = '#'*filledLength + '-'*(barLength-filledLength) + sys.stdout.write('\r%s |%s| %s%s %s %s' % (prefix, bar, percent, '%', suffix, nEvent)), + if iteration == total: + sys.stdout.write('\n') + sys.stdout.flush() + +def mergeHDF(arrayDir,outName): + print "Merge hdf files in", arrayDir + selEvent = pd.DataFrame([]) + max_nevt_num = 0 + for array in os.listdir(arrayDir): + df = pd.read_hdf(os.path.join(arrayDir, array)) + last = 0 + if df.size != 0: last = int(df.tail(1)['event'])+1 + df['event'] = df['event'] + max_nevt_num + selEvent = pd.concat([selEvent,df], axis=0) + max_nevt_num += last + selEvent.reset_index(drop=True, inplace=True) + selEvent.style.format('table') + selEvent.to_hdf(arrayDir+'/../'+outName+'.h5',key='selEvent',mode='w') + +def calculateMatchingRatio(trainingDir, ttbbDir): + print "Calculate additional b jets matching ratio" + + print "Matched events/Matchable events = " + print "Matched events/Total ttbb events = " diff --git a/include/makePlots.h b/include/makePlots.h deleted file mode 100644 index d8669f1..0000000 --- a/include/makePlots.h +++ /dev/null @@ -1,135 +0,0 @@ -/******************************************************************* - * Last Update : 2017-07-30 * - * Developer : Seohyun * - * This macro is used as substitute for makePlots.py * - *******************************************************************/ - -#include -#include -#include - -#include -#include -#include -#include -#include - -#include "histBook.h" -#include "tdrstyle.C" - -string INPUT = "../output/post/"; -string OUTPUT = "../output/pdf/"; - -std::string ReplaceAll(std::string &str, const std::string &from, const std::string &to); - -const double SF_ttbb = 0.992; -const double SF_ttbj = 0.997; -const double SF_ttcc = 0.871; -const double SF_ttLF = 0.890; -//const double SF_ttbb = 1; -//const double SF_ttbj = 1; -//const double SF_ttcc = 1; -//const double SF_ttLF = 1; - -//-----------------------------------------------------------------// -// Histogram file reader // -//-----------------------------------------------------------------// -class DataFile{ - private: - public: - TFile *file; - string data; - vector v_histName; - int nHist; - - DataFile(string data); - DataFile(DataFile &dataFile){}; - ~DataFile(){}; -}; - -class MonteFile{ - private: - public: - TFile *file; - string sample; - string category; - vector v_histName; - double scale_Mu; - double scale_El; - int color; - int nHist; - - MonteFile(string sample, string category, int color, double xsec); - MonteFile(MonteFile &MonetFile){}; - ~MonteFile(){}; -}; - -DataFile::DataFile(string input_data){ - string fileName = INPUT + "hist_" + input_data + ".root"; - this->file = TFile::Open(fileName.c_str()); - this->data = input_data; - - int tmp = 0; - TIter next(file->GetListOfKeys()); - TKey *key; - TObject *obj; - while((key = (TKey*)next())){ - obj = key->ReadObj(); - ++tmp; - string tmp = obj->GetName(); - ReplaceAll(tmp, this->data, ""); - this->v_histName.push_back(tmp); - } - this->nHist = tmp; -} - -MonteFile::MonteFile(string input_sample, string input_category, int input_color, double xsec){ - string fileName = INPUT + "hist_" + input_sample + ".root"; - this->file = TFile::Open(fileName.c_str()); - this->color = input_color; - this->sample = input_sample; - this->category = input_category; - - int tmp = 0; - TIter next(file->GetListOfKeys()); - TKey *key; - TObject *obj; - while((key = (TKey*)next())){ - obj = key->ReadObj(); - ++tmp; - string tmp = obj->GetName(); - ReplaceAll(tmp, this->sample, ""); - this->v_histName.push_back(tmp); - } - this->nHist = tmp; - TH1D *EventInfo = (TH1D *)this->file->Get("EventInfo"); - - this->scale_Mu = (LUMINOSITY_*xsec)/EventInfo->GetBinContent(2); - this->scale_El = (LUMINOSITY_*xsec)/EventInfo->GetBinContent(2); - - if(this->sample == "ttbb"){ - this->scale_Mu *= SF_ttbb; - this->scale_El *= SF_ttbb; - } - if(this->sample == "ttbj"){ - this->scale_Mu *= SF_ttbj; - this->scale_El *= SF_ttbj; - } - if(this->sample == "ttcc"){ - this->scale_Mu *= SF_ttcc; - this->scale_El *= SF_ttcc; - } - if(this->sample == "ttLF"){ - this->scale_Mu *= SF_ttLF; - this->scale_El *= SF_ttLF; - } -} - -std::string ReplaceAll(std::string &str, const std::string &from, const std::string &to){ - size_t start_pos = 0; - while((start_pos = str.find(from, start_pos)) != std::string::npos){ - str.replace(start_pos, from.length(), to); - start_pos += to.length(); - } - return str; -} diff --git a/job_slurm.sh b/job_slurm.sh new file mode 100644 index 0000000..6fb585a --- /dev/null +++ b/job_slurm.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +#SBATCH -J 2016 +#SBATCH -p gpu +#SBATCH -N 1 +#SBATCH --open-mode=append +#SBATCH -o %x.out +#SBATCH -e %x.error +#SBATCH --ntasks=1 +#SBATCH --mem=1gb +#SBATCH --cpus-per-task=1 +#SBATCH --comment python +#SBATCH --hint=compute_bound + +opt1=$1 +opt2=$2 +opt3=$3 +opt4=$4 +opt5=$5 + +echo python func/runTSelector.py $opt1 $opt2 $opt3 $opt4 $opt5 +python func/runTSelector.py $opt1 $opt2 $opt3 $opt4 $opt5 diff --git a/macro/MyAnalysis.C b/macro/MyAnalysis.C index 7b21ba2..f3147d5 100644 --- a/macro/MyAnalysis.C +++ b/macro/MyAnalysis.C @@ -2,6 +2,8 @@ #include #include +#include + #include "MyAnalysis.h" using namespace TMath; @@ -11,7 +13,6 @@ void MyAnalysis::Begin(TTree * /*tree*/){ } void MyAnalysis::SlaveBegin(TTree * /*tree*/){ - //std::cout << "Start SlaveBegin" << std::endl; option = GetOption(); process = option.Data(); @@ -39,9 +40,10 @@ void MyAnalysis::SlaveBegin(TTree * /*tree*/){ * __tuneup, __tunedown */ - if( process.Contains("Data") || process.Contains("QCD") || process.Contains("Driven") - || process.Contains("Nosys") ){ - v_syst.push_back(""); + if( process.Contains("Data") || process.Contains("QCD") || process.Contains("Driven") || process.Contains("Nosys") ){ + if ( process.Contains("qcdisoup") ) v_syst.push_back("__qcdisoup"); + else if( process.Contains("qcdisodown") ) v_syst.push_back("__qcdisodown"); + else v_syst.push_back(""); } else if( process.Contains("__") ){ //Pythia Tune, ME & PS Matching @@ -62,43 +64,23 @@ void MyAnalysis::SlaveBegin(TTree * /*tree*/){ if( process.Contains("jecdown") ) v_syst.push_back("__jecdown"); } else{ - v_syst = {"", - "__puup", "__pudown", - "__lfup", "__lfdown", "__hfup", "__hfdown", - "__hfstat1up", "__hfstat1down", "__hfstat2up", "__hfstat2down", - "__lfstat1up", "__lfstat1down", "__lfstat2up", "__lfstat2down", - "__cferr1up", "__cferr1down", "__cferr2up", "__cferr2down" - }; - if( process.Contains("2016") ){ - v_syst.push_back("__musfup"); v_syst.push_back("__musfdown"); - v_syst.push_back("__mutrgup"); v_syst.push_back("__mutrgdown"); - v_syst.push_back("__elsfup"); v_syst.push_back("__elsfdown"); - v_syst.push_back("__eltrgup"); v_syst.push_back("__eltrgdown"); - if( process.Contains("TTLJ") || process.Contains("Bkg") ){ - v_syst.push_back("__scale0"); v_syst.push_back("__scale1"); v_syst.push_back("__scale2"); - v_syst.push_back("__scale3"); v_syst.push_back("__scale4"); v_syst.push_back("__scale5"); - int maxpdf = 103; + v_syst.push_back(""); + v_syst.insert(v_syst.end(), syst_basic.begin(), syst_basic.end()); + if( !process.Contains("2018") ){ + v_syst.push_back("__prefireup"); v_syst.push_back("__prefiredown"); + } + if( process.Contains("TT") ){ + v_syst.push_back("__scale0"); v_syst.push_back("__scale1"); v_syst.push_back("__scale2"); + v_syst.push_back("__scale3"); v_syst.push_back("__scale4"); v_syst.push_back("__scale5"); + if( process.Contains("2016") && !process.Contains("CP5") ){ + int maxpdf = 102; std::string str_tmp; for( int i = 0; i < maxpdf; ++i){ str_tmp = "__pdf" + to_string(i); v_syst.push_back(str_tmp); - } - } - } - else{ - if( process.Contains("2017") ){ - //v_syst.push_back("__prefireup"); v_syst.push_back("__prefiredown"); + } } - v_syst.push_back("__muidup"); v_syst.push_back("__muiddown"); - v_syst.push_back("__muisoup"); v_syst.push_back("__muisodown"); - v_syst.push_back("__mutrgup"); v_syst.push_back("__mutrgdown"); - v_syst.push_back("__elidup"); v_syst.push_back("__eliddown"); - v_syst.push_back("__elrecoup"); v_syst.push_back("__elrecodown"); - v_syst.push_back("__elzvtxup"); v_syst.push_back("__elzvtxdown"); - v_syst.push_back("__eltrgup"); v_syst.push_back("__eltrgdown"); - if( process.Contains("TTLJ") || process.Contains("Bkg") || process.Contains("Resp") ){ - v_syst.push_back("__scale0"); v_syst.push_back("__scale1"); v_syst.push_back("__scale2"); - v_syst.push_back("__scale3"); v_syst.push_back("__scale4"); v_syst.push_back("__scale5"); + else{ v_syst.push_back("__isrup"); v_syst.push_back("__isrdown"); v_syst.push_back("__fsrup"); v_syst.push_back("__fsrdown"); int maxpdf = 104; @@ -111,91 +93,53 @@ void MyAnalysis::SlaveBegin(TTree * /*tree*/){ } } - if( process.Contains("TTLJ") || process.Contains("Bkg") ){ + if( process.Contains("TT") ){ pdfweight = {fReader, "pdfweight"}; scaleweight = {fReader, "scaleweight"}; - if( !process.Contains("2016") ) psweight = {fReader, "psweight"}; + //if( !process.Contains("2016") || process.Contains("CP5") ) + psweight = {fReader, "psweight"}; } - if( process.Contains("2016") ){ - lepton_pT = {fReader, "lepton_pT"}; - lepton_E = {fReader, "lepton_E"}; - jet_pT = {fReader, "jet_pT"}; - jet_E = {fReader, "jet_E"}; - jet_CSV = {fReader, "jet_CSV"}; - jet_SF_CSV_30 = {fReader, "jet_SF_CSV_30"}; - - if( process.Contains("PowhegPythia_ttbb") ){ - addbjet1_pt = {fReader, "addbjet1_pt"}; - addbjet1_eta = {fReader, "addbjet1_eta"}; - addbjet1_phi = {fReader, "addbjet1_phi"}; - addbjet1_e = {fReader, "addbjet1_e"}; - addbjet2_pt = {fReader, "addbjet2_pt"}; - addbjet2_eta = {fReader, "addbjet2_eta"}; - addbjet2_phi = {fReader, "addbjet2_phi"}; - addbjet2_e = {fReader, "addbjet2_e"}; - - mindRbjet1_pt = {fReader, "mindRbjet1_pt"}; - mindRbjet1_eta = {fReader, "mindRbjet1_eta"}; - mindRbjet1_phi = {fReader, "mindRbjet1_phi"}; - mindRbjet1_e = {fReader, "mindRbjet1_e"}; - mindRbjet2_pt = {fReader, "mindRbjet2_pt"}; - mindRbjet2_eta = {fReader, "mindRbjet2_eta"}; - mindRbjet2_phi = {fReader, "mindRbjet2_phi"}; - mindRbjet2_e = {fReader, "mindRbjet2_e"}; - } + if( process.Contains("TTLJ") && !process.Contains("Bkg") && !process.Contains("SYS") ){ + addbjet1_pt = {fReader, "addbjet1_pt"}; + addbjet1_eta = {fReader, "addbjet1_eta"}; + addbjet1_phi = {fReader, "addbjet1_phi"}; + addbjet1_e = {fReader, "addbjet1_e"}; + addbjet2_pt = {fReader, "addbjet2_pt"}; + addbjet2_eta = {fReader, "addbjet2_eta"}; + addbjet2_phi = {fReader, "addbjet2_phi"}; + addbjet2_e = {fReader, "addbjet2_e"}; + + mindRbjet1_pt = {fReader, "mindRjet1_pt"}; + mindRbjet1_eta = {fReader, "mindRjet1_eta"}; + mindRbjet1_phi = {fReader, "mindRjet1_phi"}; + mindRbjet1_e = {fReader, "mindRjet1_e"}; + mindRbjet2_pt = {fReader, "mindRjet2_pt"}; + mindRbjet2_eta = {fReader, "mindRjet2_eta"}; + mindRbjet2_phi = {fReader, "mindRjet2_phi"}; + mindRbjet2_e = {fReader, "mindRjet2_e"}; } - else{ - lepton_pT = {fReader, "lepton_pt"}; - lepton_E = {fReader, "lepton_e"}; - jet_pT = {fReader, "jet_pt"}; - jet_E = {fReader, "jet_e"}; - jet_CSV = {fReader, "jet_deepCSV"}; - jet_SF_CSV_30 = {fReader, "jet_SF_deepCSV_30"}; - - if( process.Contains("PowhegPythia_ttbb") ){ - addbjet1_pt = {fReader, "addbjet1_pt"}; - addbjet1_eta = {fReader, "addbjet1_eta"}; - addbjet1_phi = {fReader, "addbjet1_phi"}; - addbjet1_e = {fReader, "addbjet1_e"}; - addbjet2_pt = {fReader, "addbjet2_pt"}; - addbjet2_eta = {fReader, "addbjet2_eta"}; - addbjet2_phi = {fReader, "addbjet2_phi"}; - addbjet2_e = {fReader, "addbjet2_e"}; - - mindRbjet1_pt = {fReader, "mindRjet1_pt"}; - mindRbjet1_eta = {fReader, "mindRjet1_eta"}; - mindRbjet1_phi = {fReader, "mindRjet1_phi"}; - mindRbjet1_e = {fReader, "mindRjet1_e"}; - mindRbjet2_pt = {fReader, "mindRjet2_pt"}; - mindRbjet2_eta = {fReader, "mindRjet2_eta"}; - mindRbjet2_phi = {fReader, "mindRjet2_phi"}; - mindRbjet2_e = {fReader, "mindRjet2_e"}; - } - - if( process.Contains("2017") ){ - MUON_ETA_ = 2.4; - ELECTRON_PT_ = 30.0; - ELECTRON_ETA_ = 2.4; - JET_CSV_TIGHT_ = 0.8001; - //prefireweight = {fReader, "prefireweight"}; - } - if( process.Contains("2018") ){ - MUON_ETA_ = 2.4; - ELECTRON_PT_ = 30.0; - ELECTRON_ETA_ = 2.4; - JET_CSV_TIGHT_ = 0.7527; - } + if( process.Contains("2017") ){ + MUON_ETA_ = 2.4; + ELECTRON_PT_ = 30.0; + ELECTRON_ETA_ = 2.4; + JET_CSV_TIGHT_ = 0.8001; + JET_CSV_MEDIUM_ = 0.4941; + JET_CSV_LOOSE_ = 0.1522; + } + if( process.Contains("2018") ){ + MUON_ETA_ = 2.4; + ELECTRON_PT_ = 30.0; + ELECTRON_ETA_ = 2.4; + JET_CSV_TIGHT_ = 0.7527; + JET_CSV_MEDIUM_ = 0.4184; + JET_CSV_LOOSE_ = 0.1241; } - //std::cout << "Make HistoBook" << std::endl; for(unsigned int i = 0; i < v_syst.size(); i++){ HistoBook *h_tmp1 = new HistoBook(1, v_syst[i].c_str()); - HistoBook *h_tmp2 = new HistoBook(2, v_syst[i].c_str()); - h_control.push_back(h_tmp1); - h_matrix.push_back(h_tmp2); + histBook.push_back(h_tmp1); } - //std::cout << "Get Hist list" << std::endl; for(unsigned int i = 0; i < v_syst.size(); i++){ for(int iChannel=0; iChannelAdd(h_bSF[iChannel][iStep]); } - fOutput->Add(h_control[i]->h_lepton_pt[iChannel][iStep]); - fOutput->Add(h_control[i]->h_lepton_eta[iChannel][iStep]); - fOutput->Add(h_control[i]->h_lepton_relIso[iChannel][iStep]); - fOutput->Add(h_control[i]->h_njets[iChannel][iStep]); - fOutput->Add(h_control[i]->h_nbjets[iChannel][iStep]); - fOutput->Add(h_control[i]->h_trans_mass[iChannel][iStep]); - fOutput->Add(h_control[i]->h_pv[iChannel][iStep]); - fOutput->Add(h_control[i]->h_pv_nosf[iChannel][iStep]); + fOutput->Add(histBook[i]->h_lepton_pt[iChannel][iStep]); + fOutput->Add(histBook[i]->h_lepton_eta[iChannel][iStep]); + fOutput->Add(histBook[i]->h_lepton_relIso[iChannel][iStep]); + fOutput->Add(histBook[i]->h_njets[iChannel][iStep]); + fOutput->Add(histBook[i]->h_nbjets[iChannel][iStep]); + fOutput->Add(histBook[i]->h_trans_mass[iChannel][iStep]); + fOutput->Add(histBook[i]->h_pv[iChannel][iStep]); + fOutput->Add(histBook[i]->h_pv_nosf[iChannel][iStep]); for(int iJet=0; iJetAdd(h_control[i]->h_jet_pt[iChannel][iStep][iJet]); - fOutput->Add(h_control[i]->h_jet_eta[iChannel][iStep][iJet]); - fOutput->Add(h_control[i]->h_csv[iChannel][iStep][iJet]); + fOutput->Add(histBook[i]->h_jet_pt[iChannel][iStep][iJet]); + fOutput->Add(histBook[i]->h_jet_eta[iChannel][iStep][iJet]); + fOutput->Add(histBook[i]->h_csv[iChannel][iStep][iJet]); } - fOutput->Add(h_control[i]->h_1st_csv[iChannel][iStep]); - for(int iRegion = 0; iRegion < 20; ++iRegion) - fOutput->Add(h_control[i]->h_2nd_csv[iChannel][iStep][iRegion]); - - fOutput->Add(h_control[i]->h_reco_addbjets_deltaR[iChannel][iStep]); - fOutput->Add(h_control[i]->h_reco_addbjets_invMass[iChannel][iStep]); - fOutput->Add(h_control[i]->h_reco_addbjets_deltaR2[iChannel][iStep]); - fOutput->Add(h_control[i]->h_reco_addbjets_invMass2[iChannel][iStep]); - fOutput->Add(h_control[i]->h_reco_addbjets_deltaR3[iChannel][iStep]); - fOutput->Add(h_control[i]->h_reco_addbjets_invMass3[iChannel][iStep]); - - fOutput->Add(h_matrix[i]->h_gen_gentop_deltaR[iChannel][iStep]); - fOutput->Add(h_matrix[i]->h_gen_gentop_invMass[iChannel][iStep]); - fOutput->Add(h_matrix[i]->h_gen_gentop_deltaR2[iChannel][iStep]); - fOutput->Add(h_matrix[i]->h_gen_gentop_invMass2[iChannel][iStep]); - - fOutput->Add(h_matrix[i]->h_gen_mindR_deltaR[iChannel][iStep]); - fOutput->Add(h_matrix[i]->h_gen_mindR_invMass[iChannel][iStep]); - fOutput->Add(h_matrix[i]->h_gen_mindR_deltaR2[iChannel][iStep]); - fOutput->Add(h_matrix[i]->h_gen_mindR_invMass2[iChannel][iStep]); - - fOutput->Add(h_matrix[i]->h_respMatrix_gentop_deltaR[iChannel][iStep]); - fOutput->Add(h_matrix[i]->h_respMatrix_gentop_invMass[iChannel][iStep]); - fOutput->Add(h_matrix[i]->h_respMatrix_gentop_deltaR2[iChannel][iStep]); - fOutput->Add(h_matrix[i]->h_respMatrix_gentop_invMass2[iChannel][iStep]); - - fOutput->Add(h_matrix[i]->h_respMatrix_mindR_deltaR[iChannel][iStep]); - fOutput->Add(h_matrix[i]->h_respMatrix_mindR_invMass[iChannel][iStep]); - fOutput->Add(h_matrix[i]->h_respMatrix_mindR_deltaR2[iChannel][iStep]); - fOutput->Add(h_matrix[i]->h_respMatrix_mindR_invMass2[iChannel][iStep]); + + fOutput->Add(histBook[i]->h_reco_addbjet1_pt[iChannel][iStep]); + fOutput->Add(histBook[i]->h_reco_addbjet1_csv[iChannel][iStep]); + fOutput->Add(histBook[i]->h_reco_addbjet2_pt[iChannel][iStep]); + fOutput->Add(histBook[i]->h_reco_addbjet2_csv[iChannel][iStep]); + fOutput->Add(histBook[i]->h_reco_addbjets_deltaR[iChannel][iStep]); + fOutput->Add(histBook[i]->h_reco_addbjets_invMass[iChannel][iStep]); + + fOutput->Add(histBook[i]->h_gen_mindR_addbjet1_pt[iChannel][iStep]); + fOutput->Add(histBook[i]->h_gen_mindR_addbjet2_pt[iChannel][iStep]); + fOutput->Add(histBook[i]->h_gen_mindR_deltaR[iChannel][iStep]); + fOutput->Add(histBook[i]->h_gen_mindR_invMass[iChannel][iStep]); + fOutput->Add(histBook[i]->h_respMatrix_mindR_deltaR[iChannel][iStep]); + fOutput->Add(histBook[i]->h_respMatrix_mindR_invMass[iChannel][iStep]); + + fOutput->Add(histBook[i]->h_gen_gentop_addbjet1_pt[iChannel][iStep]); + fOutput->Add(histBook[i]->h_gen_gentop_addbjet2_pt[iChannel][iStep]); + fOutput->Add(histBook[i]->h_gen_gentop_deltaR[iChannel][iStep]); + fOutput->Add(histBook[i]->h_gen_gentop_invMass[iChannel][iStep]); + fOutput->Add(histBook[i]->h_respMatrix_gentop_deltaR[iChannel][iStep]); + fOutput->Add(histBook[i]->h_respMatrix_gentop_invMass[iChannel][iStep]); + + for(int iBin=0; iBin < nbins_reco_addbjets_dR; iBin++) + fOutput->Add(histBook[i]->h_reco_deltaRvsCSV_bin[iChannel][iStep][iBin]); + for(int iBin=0; iBin < nbins_reco_addbjets_M; iBin++) + fOutput->Add(histBook[i]->h_reco_invMassvsCSV_bin[iChannel][iStep][iBin]); + fOutput->Add(histBook[i]->h_3Dmatrix_mindR_deltaR[iChannel][iStep]); + fOutput->Add(histBook[i]->h_3Dmatrix_mindR_invMass[iChannel][iStep]); + fOutput->Add(histBook[i]->h_3Dmatrix_gentop_deltaR[iChannel][iStep]); + fOutput->Add(histBook[i]->h_3Dmatrix_gentop_invMass[iChannel][iStep]); }//step }//channel }//syst - //std::cout << "Begin Process: " << process << std::endl; - - //std::cout << "Number of Systematics: " << v_syst.size() << std::endl; - //std::cout << "End SlaveBegin" << std::endl; } Bool_t MyAnalysis::Process(Long64_t entry){ fReader.SetEntry(entry); - option = GetOption(); + process = option.Data(); const int mode = *channel; if(mode>2) return kTRUE; - - + //Object selection TLorentzVector p4met; const double met = *MET; @@ -309,8 +248,19 @@ Bool_t MyAnalysis::Process(Long64_t entry){ std::string syst_ext = v_syst[0]; bool invertIso = false; - if( passmuon ) invertIso = relIso > 0.2 ? true : false; - if( passelectron ) invertIso = relIso > 0.0588 && relIso < 0.85 ? true : false; + if( passmuon ){ + if ( syst_ext == "__qcdisoup" ) invertIso = relIso > 0.4 ? true : false; + else if( syst_ext == "__qcdisodown" ) invertIso = (relIso > 0.2 and relIso <= 0.4) ? true : false; + else invertIso = relIso > 0.2 ? true : false; + } + if( passelectron ){ + // 2016 electron + // Isolation: <= 0.0588 in barrel region + // Cut-based veto working point: I_rel > 0.175 + if ( syst_ext == "__qcdisoup" ) invertIso = relIso > 0.3 and relIso <= 0.85 ? true : false; + else if( syst_ext == "__qcdisodown" ) invertIso = relIso > 0.06 and relIso <= 0.3 ? true : false; + else invertIso = relIso > 0.06 and relIso < 0.85 ? true : false; + } int njets = 0; int nbjets = 0; @@ -338,7 +288,7 @@ Bool_t MyAnalysis::Process(Long64_t entry){ m_jets.insert(pair(jet.Pt(),jet)); m_jets_csv.insert(pair(jet_CSV[iJet],jet)); ++njets; - if( jet_CSV[iJet] > JET_CSV_TIGHT_ ){ + if( jet_CSV[iJet] > JET_CSV_MEDIUM_ ){ ++nbjets; m_bjets.insert(pair(jet_CSV[iJet], jet)); } @@ -362,66 +312,62 @@ Bool_t MyAnalysis::Process(Long64_t entry){ } TLorentzVector reco_addbjet1, reco_addbjet2; - double reco_addbjet1_csv = -999.0; - double reco_addbjet2_csv = -999.0; - double reco_addbjet_deltaR = -999.0; - double reco_addbjet_invMass = -999.0; - //double reco_addJet_CSV[2] = {-999.0, -999.0}; + double reco_addbjet1_pt = -999, reco_addbjet2_pt = -999; + double reco_addbjet1_csv = -999, reco_addbjet2_csv = -999; + double reco_addbjets_deltaR = -999, reco_addbjets_invMass = -999; if (m_bjets.size() >= 2){ for(auto m_itr = m_bjets.begin(); m_itr != m_bjets.end(); m_itr++){ for(auto m_itr2 = m_itr; m_itr2 != m_bjets.end(); m_itr2++){ if( m_itr->first == m_itr2->first ) continue; double tmp_dR = (m_itr->second).DeltaR(m_itr2->second); - if(tmp_dR < abs(reco_addbjet_deltaR)){ + if(tmp_dR < abs(reco_addbjets_deltaR)){ reco_addbjet1 = m_itr->second; reco_addbjet2 = m_itr2->second; + reco_addbjet1_pt = reco_addbjet1.Pt(); + reco_addbjet2_pt = reco_addbjet2.Pt(); reco_addbjet1_csv = m_itr->first; reco_addbjet2_csv = m_itr2->first; - reco_addbjet_deltaR = tmp_dR; - reco_addbjet_invMass = (reco_addbjet1 + reco_addbjet2).M(); + reco_addbjets_deltaR = tmp_dR; + reco_addbjets_invMass = (reco_addbjet1 + reco_addbjet2).M(); } } } } - int region = 999; - if ( a_jetCSV[2] >= 0.0 && a_jetCSV[2] <= 0.05 ) region = 0; - else if( a_jetCSV[2] > 0.05 && a_jetCSV[2] <= 0.10 ) region = 1; - else if( a_jetCSV[2] > 0.10 && a_jetCSV[2] <= 0.15 ) region = 2; - else if( a_jetCSV[2] > 0.15 && a_jetCSV[2] <= 0.20 ) region = 3; - else if( a_jetCSV[2] > 0.20 && a_jetCSV[2] <= 0.25 ) region = 4; - else if( a_jetCSV[2] > 0.25 && a_jetCSV[2] <= 0.30 ) region = 5; - else if( a_jetCSV[2] > 0.30 && a_jetCSV[2] <= 0.35 ) region = 6; - else if( a_jetCSV[2] > 0.35 && a_jetCSV[2] <= 0.40 ) region = 7; - else if( a_jetCSV[2] > 0.40 && a_jetCSV[2] <= 0.45 ) region = 8; - else if( a_jetCSV[2] > 0.45 && a_jetCSV[2] <= 0.50 ) region = 9; - else if( a_jetCSV[2] > 0.50 && a_jetCSV[2] <= 0.55 ) region = 10; - else if( a_jetCSV[2] > 0.55 && a_jetCSV[2] <= 0.60 ) region = 11; - else if( a_jetCSV[2] > 0.60 && a_jetCSV[2] <= 0.65 ) region = 12; - else if( a_jetCSV[2] > 0.65 && a_jetCSV[2] <= 0.70 ) region = 13; - else if( a_jetCSV[2] > 0.70 && a_jetCSV[2] <= 0.75 ) region = 14; - else if( a_jetCSV[2] > 0.75 && a_jetCSV[2] <= 0.80 ) region = 15; - else if( a_jetCSV[2] > 0.80 && a_jetCSV[2] <= 0.85 ) region = 16; - else if( a_jetCSV[2] > 0.85 && a_jetCSV[2] <= 0.90 ) region = 17; - else if( a_jetCSV[2] > 0.90 && a_jetCSV[2] <= 0.95 ) region = 18; - else if( a_jetCSV[2] > 0.95 && a_jetCSV[2] <= 1.00 ) region = 19; - - TLorentzVector gen_addbjet1, gen_addbjet2; - TLorentzVector gen_mindRbjet1, gen_mindRbjet2; + int dRregion = 999, Mregion = 999; + int len_dR = sizeof(reco_addbjets_dR_width)/sizeof(*reco_addbjets_dR_width); + int len_M = sizeof(reco_addbjets_M_width)/sizeof(*reco_addbjets_M_width); + for(int i=0; i < len_dR-1; i++) + if( reco_addbjets_deltaR >= reco_addbjets_dR_width[i] and reco_addbjets_deltaR < reco_addbjets_dR_width[i+1] ) dRregion = i; + for(int i=0; i < len_M-1; i++) + if( reco_addbjets_invMass >= reco_addbjets_M_width[i] and reco_addbjets_invMass < reco_addbjets_M_width[i+1] ) Mregion = i; + + double gen_gentop_addbjet1_pt = -999, gen_gentop_addbjet2_pt = -999; + double gen_gentop_addbjets_deltaR = -999, gen_gentop_addbjets_invMass = -999; + double gen_mindR_addbjet1_pt = -999, gen_mindR_addbjet2_pt = -999; + double gen_mindR_addbjets_deltaR = -999, gen_mindR_addbjets_invMass = -999; + + TLorentzVector gen_gentop_addbjet1, gen_gentop_addbjet2; + TLorentzVector gen_mindR_addbjet1, gen_mindR_addbjet2; if( process.Contains("PowhegPythia_ttbb") ){ - gen_addbjet1.SetPtEtaPhiE(*addbjet1_pt, *addbjet1_eta, *addbjet1_phi, *addbjet1_e); - gen_addbjet2.SetPtEtaPhiE(*addbjet2_pt, *addbjet2_eta, *addbjet2_phi, *addbjet2_e); + gen_gentop_addbjet1.SetPtEtaPhiE(*addbjet1_pt, *addbjet1_eta, *addbjet1_phi, *addbjet1_e); + gen_gentop_addbjet2.SetPtEtaPhiE(*addbjet2_pt, *addbjet2_eta, *addbjet2_phi, *addbjet2_e); - gen_mindRbjet1.SetPtEtaPhiE(*mindRbjet1_pt, *mindRbjet1_eta, *mindRbjet1_phi, *mindRbjet1_e); - gen_mindRbjet2.SetPtEtaPhiE(*mindRbjet2_pt, *mindRbjet2_eta, *mindRbjet2_phi, *mindRbjet2_e); + gen_mindR_addbjet1.SetPtEtaPhiE(*mindRbjet1_pt, *mindRbjet1_eta, *mindRbjet1_phi, *mindRbjet1_e); + gen_mindR_addbjet2.SetPtEtaPhiE(*mindRbjet2_pt, *mindRbjet2_eta, *mindRbjet2_phi, *mindRbjet2_e); + + gen_gentop_addbjet1_pt = gen_gentop_addbjet1.Pt(); + gen_gentop_addbjet2_pt = gen_gentop_addbjet2.Pt(); + gen_gentop_addbjets_deltaR = gen_gentop_addbjet1.DeltaR(gen_gentop_addbjet2); + gen_gentop_addbjets_invMass = (gen_gentop_addbjet1+gen_gentop_addbjet2).M(); + + gen_mindR_addbjet1_pt = gen_mindR_addbjet1.Pt(); + gen_mindR_addbjet2_pt = gen_mindR_addbjet2.Pt(); + gen_mindR_addbjets_deltaR = gen_mindR_addbjet1.DeltaR(gen_mindR_addbjet2); + gen_mindR_addbjets_invMass = (gen_mindR_addbjet1+gen_mindR_addbjet2).M(); } - double gen_addbjet_deltaR = gen_addbjet1.DeltaR(gen_addbjet2); - double gen_addbjet_invMass = (gen_addbjet1+gen_addbjet2).M(); - - double gen_mindR_deltaR = gen_mindRbjet1.DeltaR(gen_mindRbjet2); - double gen_mindR_invMass = (gen_mindRbjet1+gen_mindRbjet2).M(); int passchannel = -999; bool passlepton = false; @@ -433,42 +379,28 @@ Bool_t MyAnalysis::Process(Long64_t entry){ passchannel = ELECTRON_; passlepton = true; } + + bool eventSelection[nStep]; + for(int iStep = 0; iStep < nStep; iStep++) eventSelection[iStep] = false; - int passcut = -1; - if( passchannel >= 0 && njets >= 1 ) passcut = 0; if( process.Contains("dataDriven") ){ - if( invertIso ){ - ++passcut; - if( njets >= 2 ){ - ++passcut; - if( njets < 6 ){ - ++passcut; - } - } - } - } - else if( process.Contains("Nosys") ){ - if( !invertIso ){ - ++passcut; - if( njets >= 2 ){ - ++passcut; - if( njets < 6 ){ - ++passcut; - } - } - } + eventSelection[0] = passlepton and invertIso; + //Should change condition: invertIso and (passmuon or passelectron and abs(lepton.Eta()) <= 1.4445)); } else{ - if(njets >= NUMBER_OF_JETS_){ - ++passcut; - if(nbjets >= NUMBER_OF_BJETS_){ - ++passcut; - if(nbjets >= NUMBER_OF_BJETS_+1){ - ++passcut; - } - } - } + eventSelection[0] = passlepton; } + eventSelection[1] = eventSelection[0] and njets >= 1; + eventSelection[2] = eventSelection[0] and njets >= 2 and njets < 4; + eventSelection[3] = eventSelection[0] and njets >= 4; + eventSelection[4] = eventSelection[3] and nbjets >= 2; + eventSelection[5] = eventSelection[0] and njets >= 2 and njets < 6; + eventSelection[6] = eventSelection[0] and njets >= 6; + eventSelection[7] = eventSelection[6] and nbjets >= 2; + eventSelection[8] = eventSelection[6] and nbjets >= 3; + eventSelection[9] = eventSelection[6] and nbjets >= 4; + + if( !eventSelection[0] ) return kTRUE; for(unsigned int iSys = 0; iSys < v_syst.size(); ++iSys){ syst_ext = v_syst[iSys]; @@ -483,72 +415,46 @@ Bool_t MyAnalysis::Process(Long64_t entry){ else if( syst_ext == "__pudown" ) EventWeight *= PUWeight[2]; else EventWeight *= PUWeight[0]; - //Prefire weight, 2017only - if( process.Contains("2017") ){ - //if ( syst_ext == "__prefireup" ) EventWeight *= prefireweight[1]; - //else if( syst_ext == "__prefiredown" ) EventWeight *= prefireweight[2]; - //else EventWeight *= prefireweight[0]; - } + //Prefire weight, 2016,17 only + if ( syst_ext == "__prefireup" ) EventWeight *= prefireweight[1]; + else if( syst_ext == "__prefiredown" ) EventWeight *= prefireweight[2]; + else EventWeight *= prefireweight[0]; //Lepton Scale Factor - if( process.Contains("2016") ){ - if( passchannel == 0 ){ - //mu [0]~[2]:ID/Iso, [3]~[5]:Trigger - if ( syst_ext == "__musfup" ) EventWeight *= lepton_SF[1]; - else if( syst_ext == "__musfdown" ) EventWeight *= lepton_SF[2]; - else EventWeight *= lepton_SF[0]; - - if ( syst_ext == "__mutrgup" ) EventWeight *= lepton_SF[4]; - else if( syst_ext == "__mutrgdown" ) EventWeight *= lepton_SF[5]; - else EventWeight *= lepton_SF[3]; - } - else if( passchannel == 1 ){ - //el [0]~[2]: ID/Iso/Reco, [3]~[5]: Trigger - if ( syst_ext == "__elsfup" ) EventWeight *= lepton_SF[1]; - else if( syst_ext == "__elsfdown" ) EventWeight *= lepton_SF[2]; - else EventWeight *= lepton_SF[0]; - - if ( syst_ext == "__eltrgup" ) EventWeight *= lepton_SF[4]; - else if( syst_ext == "__eltrgdown" ) EventWeight *= lepton_SF[5]; - else EventWeight *= lepton_SF[3]; - } - }//Run2016 - else{ - if( passchannel == 0 ){ - //Muon - //[0]~[2]:ID, [3]~[5]:Iso, [6]~[8]:Trigger - if ( syst_ext == "__muidup" ) EventWeight *= lepton_SF[1]; - else if( syst_ext == "__muiddown" ) EventWeight *= lepton_SF[2]; - else EventWeight *= lepton_SF[0]; - - if ( syst_ext == "__muisoup" ) EventWeight *= lepton_SF[4]; - else if( syst_ext == "__muisodown" ) EventWeight *= lepton_SF[5]; - else EventWeight *= lepton_SF[3]; - - if ( syst_ext == "__mutrgup" ) EventWeight *= lepton_SF[7]; - else if( syst_ext == "__mutrgdown" ) EventWeight *= lepton_SF[8]; - else EventWeight *= lepton_SF[6]; - } - else if( passchannel == 1 ){ - //Electron - //[0]~[2]: ID, [3]~[5]:Reco, [6]~[8]:Zvtx, [9]~[11]: Trigger - if ( syst_ext == "__elsfup" ) EventWeight *= lepton_SF[1]; - else if( syst_ext == "__elsfdown" ) EventWeight *= lepton_SF[2]; - else EventWeight *= lepton_SF[0]; - - if ( syst_ext == "__elrecoup" ) EventWeight *= lepton_SF[4]; - else if( syst_ext == "__elrecodown" ) EventWeight *= lepton_SF[5]; - else EventWeight *= lepton_SF[3]; - - if ( syst_ext == "__elzvtxup" ) EventWeight *= lepton_SF[7]; - else if( syst_ext == "__elzvtxdown" ) EventWeight *= lepton_SF[8]; - else EventWeight *= lepton_SF[6]; - - if ( syst_ext == "__eltrgup" ) EventWeight *= lepton_SF[10]; - else if( syst_ext == "__eltrgdown" ) EventWeight *= lepton_SF[11]; - else EventWeight *= lepton_SF[9]; - } - }//Run 2017-2018 + if( passchannel == 0 ){ + //Muon + //[0]~[2]:ID, [3]~[5]:Iso, [6]~[8]:Trigger + if ( syst_ext == "__muidup" ) EventWeight *= lepton_SF[1]; + else if( syst_ext == "__muiddown" ) EventWeight *= lepton_SF[2]; + else EventWeight *= lepton_SF[0]; + + if ( syst_ext == "__muisoup" ) EventWeight *= lepton_SF[4]; + else if( syst_ext == "__muisodown" ) EventWeight *= lepton_SF[5]; + else EventWeight *= lepton_SF[3]; + + if ( syst_ext == "__mutrgup" ) EventWeight *= lepton_SF[7]; + else if( syst_ext == "__mutrgdown" ) EventWeight *= lepton_SF[8]; + else EventWeight *= lepton_SF[6]; + } + else if( passchannel == 1 ){ + //Electron + //[0]~[2]: ID, [3]~[5]:Reco, [6]~[8]:Zvtx, [9]~[11]: Trigger + if ( syst_ext == "__elidup" ) EventWeight *= lepton_SF[1]; + else if( syst_ext == "__eliddown" ) EventWeight *= lepton_SF[2]; + else EventWeight *= lepton_SF[0]; + + if ( syst_ext == "__elrecoup" ) EventWeight *= lepton_SF[4]; + else if( syst_ext == "__elrecodown" ) EventWeight *= lepton_SF[5]; + else EventWeight *= lepton_SF[3]; + + if ( syst_ext == "__elzvtxup" ) EventWeight *= lepton_SF[7]; + else if( syst_ext == "__elzvtxdown" ) EventWeight *= lepton_SF[8]; + else EventWeight *= lepton_SF[6]; + + if ( syst_ext == "__eltrgup" ) EventWeight *= lepton_SF[10]; + else if( syst_ext == "__eltrgdown" ) EventWeight *= lepton_SF[11]; + else EventWeight *= lepton_SF[9]; + } //Scale Weight(ME) //[0] = muF up , [1] = muF down, [2] = muR up, [3] = muR up && muF up @@ -570,84 +476,62 @@ Bool_t MyAnalysis::Process(Long64_t entry){ // Linear and quadratic statistical fluctuations: lfstats1 and lfstats2 // Systematics for charm flavor jets: // Linear and quadratic uncertainties: cferr1 and cferr2 - if ( syst_ext == "__lfup" ) bSF *= jet_SF_CSV_30[0] + jet_SF_CSV_30[3]; - else if( syst_ext == "__lfdown" ) bSF *= jet_SF_CSV_30[0] - jet_SF_CSV_30[4]; - else if( syst_ext == "__hfup" ) bSF *= jet_SF_CSV_30[0] + jet_SF_CSV_30[5]; - else if( syst_ext == "__hfdown" ) bSF *= jet_SF_CSV_30[0] - jet_SF_CSV_30[6]; - else if( syst_ext == "__hfstat1up" ) bSF *= jet_SF_CSV_30[0] + jet_SF_CSV_30[7]; - else if( syst_ext == "__hfstat1down" ) bSF *= jet_SF_CSV_30[0] - jet_SF_CSV_30[8]; - else if( syst_ext == "__hfstat2up" ) bSF *= jet_SF_CSV_30[0] + jet_SF_CSV_30[9]; - else if( syst_ext == "__hfstat2down" ) bSF *= jet_SF_CSV_30[0] - jet_SF_CSV_30[10]; - else if( syst_ext == "__lfstat1up" ) bSF *= jet_SF_CSV_30[0] + jet_SF_CSV_30[11]; - else if( syst_ext == "__lfstat1down" ) bSF *= jet_SF_CSV_30[0] - jet_SF_CSV_30[12]; - else if( syst_ext == "__lfstat2up" ) bSF *= jet_SF_CSV_30[0] + jet_SF_CSV_30[13]; - else if( syst_ext == "__lfstat2down" ) bSF *= jet_SF_CSV_30[0] - jet_SF_CSV_30[14]; - else if( syst_ext == "__cferr1up" ) bSF *= jet_SF_CSV_30[0] + jet_SF_CSV_30[15]; - else if( syst_ext == "__cferr1down" ) bSF *= jet_SF_CSV_30[0] - jet_SF_CSV_30[16]; - else if( syst_ext == "__cferr2up" ) bSF *= jet_SF_CSV_30[0] + jet_SF_CSV_30[17]; - else if( syst_ext == "__cferr2down" ) bSF *= jet_SF_CSV_30[0] - jet_SF_CSV_30[18]; + if ( syst_ext == "__lfup" ) bSF *= jet_SF_CSV_30[3]; + else if( syst_ext == "__lfdown" ) bSF *= jet_SF_CSV_30[4]; + else if( syst_ext == "__hfup" ) bSF *= jet_SF_CSV_30[5]; + else if( syst_ext == "__hfdown" ) bSF *= jet_SF_CSV_30[6]; + else if( syst_ext == "__hfstat1up" ) bSF *= jet_SF_CSV_30[7]; + else if( syst_ext == "__hfstat1down" ) bSF *= jet_SF_CSV_30[8]; + else if( syst_ext == "__hfstat2up" ) bSF *= jet_SF_CSV_30[9]; + else if( syst_ext == "__hfstat2down" ) bSF *= jet_SF_CSV_30[10]; + else if( syst_ext == "__lfstat1up" ) bSF *= jet_SF_CSV_30[11]; + else if( syst_ext == "__lfstat1down" ) bSF *= jet_SF_CSV_30[12]; + else if( syst_ext == "__lfstat2up" ) bSF *= jet_SF_CSV_30[13]; + else if( syst_ext == "__lfstat2down" ) bSF *= jet_SF_CSV_30[14]; + else if( syst_ext == "__cferr1up" ) bSF *= jet_SF_CSV_30[15]; + else if( syst_ext == "__cferr1down" ) bSF *= jet_SF_CSV_30[16]; + else if( syst_ext == "__cferr2up" ) bSF *= jet_SF_CSV_30[17]; + else if( syst_ext == "__cferr2down" ) bSF *= jet_SF_CSV_30[18]; else bSF *= jet_SF_CSV_30[0]; - for(int iCut=0; iCut <= passcut; ++iCut){ - if ( syst_ext == "" ){ - h_bSF[passchannel][iCut]->Fill(0.5, EventWeight); - h_bSF[passchannel][iCut]->Fill(1.5, bSF*EventWeight); - } - else if( syst_ext == "__lfup" ) h_bSF[passchannel][iCut]->Fill(2.5, bSF*EventWeight); - else if( syst_ext == "__lfdown" ) h_bSF[passchannel][iCut]->Fill(3.5, bSF*EventWeight); - else if( syst_ext == "__hfup" ) h_bSF[passchannel][iCut]->Fill(4.5, bSF*EventWeight); - else if( syst_ext == "__hfdown" ) h_bSF[passchannel][iCut]->Fill(5.5, bSF*EventWeight); - else if( syst_ext == "__hfstat1up" ) h_bSF[passchannel][iCut]->Fill(6.5, bSF*EventWeight); - else if( syst_ext == "__hfstat1down" ) h_bSF[passchannel][iCut]->Fill(7.5, bSF*EventWeight); - else if( syst_ext == "__hfstat2up" ) h_bSF[passchannel][iCut]->Fill(8.5, bSF*EventWeight); - else if( syst_ext == "__hfstat2down" ) h_bSF[passchannel][iCut]->Fill(9.5, bSF*EventWeight); - else if( syst_ext == "__lfstat1up" ) h_bSF[passchannel][iCut]->Fill(10.5, bSF*EventWeight); - else if( syst_ext == "__lfstat1down" ) h_bSF[passchannel][iCut]->Fill(11.5, bSF*EventWeight); - else if( syst_ext == "__lfstat2up" ) h_bSF[passchannel][iCut]->Fill(12.5, bSF*EventWeight); - else if( syst_ext == "__lfstat2down" ) h_bSF[passchannel][iCut]->Fill(13.5, bSF*EventWeight); - else if( syst_ext == "__cferr1up" ) h_bSF[passchannel][iCut]->Fill(14.5, bSF*EventWeight); - else if( syst_ext == "__cferr1down" ) h_bSF[passchannel][iCut]->Fill(15.5, bSF*EventWeight); - else if( syst_ext == "__cferr2up" ) h_bSF[passchannel][iCut]->Fill(16.5, bSF*EventWeight); - else if( syst_ext == "__cferr2down" ) h_bSF[passchannel][iCut]->Fill(17.5, bSF*EventWeight); - - if( passlepton ){ - if ( syst_ext == "" ){ - h_bSF[2][iCut]->Fill(0.5, EventWeight); - h_bSF[2][iCut]->Fill(1.5, bSF*EventWeight); - } - else if( syst_ext == "__lfup" ) h_bSF[2][iCut]->Fill(2.5, bSF*EventWeight); - else if( syst_ext == "__lfdown" ) h_bSF[2][iCut]->Fill(3.5, bSF*EventWeight); - else if( syst_ext == "__hfup" ) h_bSF[2][iCut]->Fill(4.5, bSF*EventWeight); - else if( syst_ext == "__hfdown" ) h_bSF[2][iCut]->Fill(5.5, bSF*EventWeight); - else if( syst_ext == "__hfstat1up" ) h_bSF[2][iCut]->Fill(6.5, bSF*EventWeight); - else if( syst_ext == "__hfstat1down" ) h_bSF[2][iCut]->Fill(7.5, bSF*EventWeight); - else if( syst_ext == "__hfstat2up" ) h_bSF[2][iCut]->Fill(8.5, bSF*EventWeight); - else if( syst_ext == "__hfstat2down" ) h_bSF[2][iCut]->Fill(9.5, bSF*EventWeight); - else if( syst_ext == "__lfstat1up" ) h_bSF[2][iCut]->Fill(10.5, bSF*EventWeight); - else if( syst_ext == "__lfstat1down" ) h_bSF[2][iCut]->Fill(11.5, bSF*EventWeight); - else if( syst_ext == "__lfstat2up" ) h_bSF[2][iCut]->Fill(12.5, bSF*EventWeight); - else if( syst_ext == "__lfstat2down" ) h_bSF[2][iCut]->Fill(13.5, bSF*EventWeight); - else if( syst_ext == "__cferr1up" ) h_bSF[2][iCut]->Fill(14.5, bSF*EventWeight); - else if( syst_ext == "__cferr1down" ) h_bSF[2][iCut]->Fill(15.5, bSF*EventWeight); - else if( syst_ext == "__cferr2up" ) h_bSF[2][iCut]->Fill(16.5, bSF*EventWeight); - else if( syst_ext == "__cferr2down" ) h_bSF[2][iCut]->Fill(17.5, bSF*EventWeight); + for(int iStep=0; iStep < nStep; ++iStep){ + if( !eventSelection[iStep] ) continue; + if( syst_ext == ""){ + h_bSF[passchannel][iStep]->Fill(0.5, EventWeight); + h_bSF[passchannel][iStep]->Fill(1.5, bSF*EventWeight); } + else if( syst_ext == "__lfup" ) h_bSF[passchannel][iStep]->Fill(2.5, bSF*EventWeight); + else if( syst_ext == "__lfdown" ) h_bSF[passchannel][iStep]->Fill(3.5, bSF*EventWeight); + else if( syst_ext == "__hfup" ) h_bSF[passchannel][iStep]->Fill(4.5, bSF*EventWeight); + else if( syst_ext == "__hfdown" ) h_bSF[passchannel][iStep]->Fill(5.5, bSF*EventWeight); + else if( syst_ext == "__hfstat1up" ) h_bSF[passchannel][iStep]->Fill(6.5, bSF*EventWeight); + else if( syst_ext == "__hfstat1down" ) h_bSF[passchannel][iStep]->Fill(7.5, bSF*EventWeight); + else if( syst_ext == "__hfstat2up" ) h_bSF[passchannel][iStep]->Fill(8.5, bSF*EventWeight); + else if( syst_ext == "__hfstat2down" ) h_bSF[passchannel][iStep]->Fill(9.5, bSF*EventWeight); + else if( syst_ext == "__lfstat1up" ) h_bSF[passchannel][iStep]->Fill(10.5, bSF*EventWeight); + else if( syst_ext == "__lfstat1down" ) h_bSF[passchannel][iStep]->Fill(11.5, bSF*EventWeight); + else if( syst_ext == "__lfstat2up" ) h_bSF[passchannel][iStep]->Fill(12.5, bSF*EventWeight); + else if( syst_ext == "__lfstat2down" ) h_bSF[passchannel][iStep]->Fill(13.5, bSF*EventWeight); + else if( syst_ext == "__cferr1up" ) h_bSF[passchannel][iStep]->Fill(14.5, bSF*EventWeight); + else if( syst_ext == "__cferr1down" ) h_bSF[passchannel][iStep]->Fill(15.5, bSF*EventWeight); + else if( syst_ext == "__cferr2up" ) h_bSF[passchannel][iStep]->Fill(16.5, bSF*EventWeight); + else if( syst_ext == "__cferr2down" ) h_bSF[passchannel][iStep]->Fill(17.5, bSF*EventWeight); } //Parton Shower - if( !process.Contains("2016") ){ - if ( syst_ext == "__isrup" ) EventWeight *= psweight[0]; - else if ( syst_ext == "__isrdown" ) EventWeight *= psweight[2]; - else if ( syst_ext == "__fsrup" ) EventWeight *= psweight[1]; - else if ( syst_ext == "__fsrdown" ) EventWeight *= psweight[3]; - else EventWeight *= 1.0; - } + //if( !process.Contains("2016") || process.Contains("CP5") ){ + if ( syst_ext == "__isrup" ) EventWeight *= psweight[0]; + else if ( syst_ext == "__isrdown" ) EventWeight *= psweight[2]; + else if ( syst_ext == "__fsrup" ) EventWeight *= psweight[1]; + else if ( syst_ext == "__fsrdown" ) EventWeight *= psweight[3]; + else EventWeight *= 1.0; + //} //PDF Uncertainties size_t pos; if( (pos = syst_ext.find("pdf",0)) != std::string::npos ){ - int maxpdf = 103; - if( option.Contains("2016") ) maxpdf = 104; + int maxpdf = 104; + //if( process.Contains("2016") && !process.Contains("CP5") ) maxpdf = 102; for( int i = 0; i < maxpdf; ++i){ std::string str_tmp = "pdf" + to_string(i); if( (pos = syst_ext.find(str_tmp)) != std::string::npos ){ @@ -656,117 +540,62 @@ Bool_t MyAnalysis::Process(Long64_t entry){ } } } - }// EventWeight - - for(int iCut=0; iCut <= passcut; ++iCut){ - h_control[iSys]->h_pv[passchannel][iCut] ->Fill(*GoodPV, bSF*EventWeight); - h_control[iSys]->h_pv_nosf[passchannel][iCut] ->Fill(*GoodPV, bSF*EventWeight/PUWeight[0]); - h_control[iSys]->h_lepton_pt[passchannel][iCut] ->Fill(lepton.Pt(), bSF*EventWeight); - h_control[iSys]->h_lepton_eta[passchannel][iCut] ->Fill(abs(lepton.Eta()), bSF*EventWeight); - h_control[iSys]->h_lepton_relIso[passchannel][iCut]->Fill(relIso, bSF*EventWeight); - h_control[iSys]->h_njets[passchannel][iCut] ->Fill(njets, bSF*EventWeight); - h_control[iSys]->h_nbjets[passchannel][iCut] ->Fill(nbjets, bSF*EventWeight); - h_control[iSys]->h_trans_mass[passchannel][iCut] ->Fill(transverseMass(lepton,p4met), bSF*EventWeight); - - for(int iJet=0; iJeth_jet_pt[passchannel][iCut][iJet] ->Fill(a_jetPt[iJet], bSF*EventWeight); - h_control[iSys]->h_jet_eta[passchannel][iCut][iJet]->Fill(a_jetEta[iJet], bSF*EventWeight); - h_control[iSys]->h_csv[passchannel][iCut][iJet] ->Fill(a_jetCSV[iJet], bSF*EventWeight); - } + }// EventWeight + + for(int iStep=0; iStep < nStep; iStep++){ + if( !eventSelection[iStep] ) continue; + histBook[iSys]->h_pv[passchannel][iStep] ->Fill(*GoodPV, bSF*EventWeight); + histBook[iSys]->h_pv_nosf[passchannel][iStep]->Fill(*GoodPV, bSF*EventWeight/PUWeight[0]); - h_control[iSys]->h_1st_csv[passchannel][iCut]->Fill(a_jetCSV[2], bSF*EventWeight); - if( region != 999 ) h_control[iSys]->h_2nd_csv[passchannel][iCut][region]->Fill(a_jetCSV[3], bSF*EventWeight); + histBook[iSys]->h_lepton_pt[passchannel][iStep] ->Fill(lepton.Pt(), bSF*EventWeight); + histBook[iSys]->h_lepton_eta[passchannel][iStep] ->Fill(abs(lepton.Eta()), bSF*EventWeight); + histBook[iSys]->h_lepton_relIso[passchannel][iStep]->Fill(relIso, bSF*EventWeight); - h_control[iSys]->h_reco_addbjets_deltaR[passchannel][iCut] ->Fill(reco_addbjet_deltaR, bSF*EventWeight); - h_control[iSys]->h_reco_addbjets_invMass[passchannel][iCut] ->Fill(reco_addbjet_invMass, bSF*EventWeight); - - h_matrix[iSys]->h_respMatrix_gentop_deltaR[passchannel][iCut] ->Fill(reco_addbjet_deltaR, gen_addbjet_deltaR, bSF*EventWeight); - h_matrix[iSys]->h_respMatrix_gentop_invMass[passchannel][iCut] ->Fill(reco_addbjet_invMass, gen_addbjet_invMass, bSF*EventWeight); - h_matrix[iSys]->h_respMatrix_mindR_deltaR[passchannel][iCut] ->Fill(reco_addbjet_deltaR, gen_mindR_deltaR, bSF*EventWeight); - h_matrix[iSys]->h_respMatrix_mindR_invMass[passchannel][iCut] ->Fill(reco_addbjet_invMass, gen_mindR_invMass, bSF*EventWeight); - - h_matrix[iSys]->h_gen_gentop_deltaR[passchannel][iCut] ->Fill(gen_addbjet_deltaR, bSF*EventWeight); - h_matrix[iSys]->h_gen_gentop_invMass[passchannel][iCut] ->Fill(gen_addbjet_invMass, bSF*EventWeight); - h_matrix[iSys]->h_gen_mindR_deltaR[passchannel][iCut] ->Fill(gen_mindR_deltaR, bSF*EventWeight); - h_matrix[iSys]->h_gen_mindR_invMass[passchannel][iCut] ->Fill(gen_mindR_invMass, bSF*EventWeight); - - if( passlepton ){ - h_control[iSys]->h_lepton_pt[2][iCut] ->Fill(lepton.Pt(), bSF*EventWeight); - h_control[iSys]->h_lepton_eta[2][iCut] ->Fill(abs(lepton.Eta()), bSF*EventWeight); - h_control[iSys]->h_lepton_relIso[2][iCut]->Fill(relIso, bSF*EventWeight); - h_control[iSys]->h_njets[2][iCut] ->Fill(njets, bSF*EventWeight); - h_control[iSys]->h_nbjets[2][iCut] ->Fill(nbjets, bSF*EventWeight); - h_control[iSys]->h_trans_mass[2][iCut] ->Fill(transverseMass(lepton,p4met), bSF*EventWeight); - - for(int iJet=0; iJeth_jet_pt[2][iCut][iJet] ->Fill(a_jetPt[iJet], bSF*EventWeight); - h_control[iSys]->h_jet_eta[2][iCut][iJet]->Fill(a_jetEta[iJet], bSF*EventWeight); - h_control[iSys]->h_csv[2][iCut][iJet] ->Fill(a_jetCSV[iJet], bSF*EventWeight); - } - - h_control[iSys]->h_1st_csv[2][iCut]->Fill(a_jetCSV[2], bSF*EventWeight); - if( region != 999 ) h_control[iSys]->h_2nd_csv[2][iCut][region]->Fill(a_jetCSV[3], bSF*EventWeight); - - h_control[iSys]->h_reco_addbjets_deltaR[2][iCut] ->Fill(reco_addbjet_deltaR, bSF*EventWeight); - h_control[iSys]->h_reco_addbjets_invMass[2][iCut] ->Fill(reco_addbjet_invMass, bSF*EventWeight); - - h_matrix[iSys]->h_gen_gentop_deltaR[2][iCut] ->Fill(gen_addbjet_deltaR, bSF*EventWeight); - h_matrix[iSys]->h_gen_gentop_invMass[2][iCut] ->Fill(gen_addbjet_invMass, bSF*EventWeight); - h_matrix[iSys]->h_gen_mindR_deltaR[2][iCut] ->Fill(gen_mindR_deltaR, bSF*EventWeight); - h_matrix[iSys]->h_gen_mindR_invMass[2][iCut] ->Fill(gen_mindR_invMass, bSF*EventWeight); - - h_matrix[iSys]->h_respMatrix_gentop_deltaR[2][iCut] ->Fill(reco_addbjet_deltaR, gen_addbjet_deltaR, bSF*EventWeight); - h_matrix[iSys]->h_respMatrix_gentop_invMass[2][iCut] ->Fill(reco_addbjet_invMass, gen_addbjet_invMass, bSF*EventWeight); - h_matrix[iSys]->h_respMatrix_mindR_deltaR[2][iCut] ->Fill(reco_addbjet_deltaR, gen_mindR_deltaR, bSF*EventWeight); - h_matrix[iSys]->h_respMatrix_mindR_invMass[2][iCut] ->Fill(reco_addbjet_invMass, gen_mindR_invMass, bSF*EventWeight); - } + histBook[iSys]->h_trans_mass[passchannel][iStep]->Fill(transverseMass(lepton,p4met), bSF*EventWeight); + + histBook[iSys]->h_njets[passchannel][iStep] ->Fill(njets, bSF*EventWeight); + histBook[iSys]->h_nbjets[passchannel][iStep]->Fill(nbjets, bSF*EventWeight); - if( nevt % 2 == 0 ){ - h_control[iSys]->h_reco_addbjets_deltaR2[passchannel][iCut] ->Fill(reco_addbjet_deltaR, bSF*EventWeight); - h_control[iSys]->h_reco_addbjets_invMass2[passchannel][iCut] ->Fill(reco_addbjet_invMass, bSF*EventWeight); - h_control[iSys]->h_reco_addbjets_deltaR3[passchannel][iCut] ->Fill(reco_addbjet_deltaR, bSF*EventWeight); - - h_matrix[iSys]->h_gen_gentop_deltaR2[passchannel][iCut] ->Fill(gen_addbjet_deltaR, bSF*EventWeight); - h_matrix[iSys]->h_gen_gentop_invMass2[passchannel][iCut] ->Fill(gen_addbjet_invMass, bSF*EventWeight); - h_matrix[iSys]->h_gen_mindR_deltaR2[passchannel][iCut] ->Fill(gen_mindR_deltaR, bSF*EventWeight); - h_matrix[iSys]->h_gen_mindR_invMass2[passchannel][iCut] ->Fill(gen_mindR_invMass, bSF*EventWeight); - - if( passlepton ){ - h_control[iSys]->h_reco_addbjets_deltaR2[2][iCut] ->Fill(reco_addbjet_deltaR, bSF*EventWeight); - h_control[iSys]->h_reco_addbjets_invMass2[2][iCut] ->Fill(reco_addbjet_invMass, bSF*EventWeight); - h_control[iSys]->h_reco_addbjets_deltaR3[2][iCut] ->Fill(reco_addbjet_deltaR, bSF*EventWeight); - - h_matrix[iSys]->h_gen_gentop_deltaR2[2][iCut] ->Fill(gen_addbjet_deltaR, bSF*EventWeight); - h_matrix[iSys]->h_gen_gentop_invMass2[2][iCut] ->Fill(gen_addbjet_invMass, bSF*EventWeight); - h_matrix[iSys]->h_gen_mindR_deltaR2[2][iCut] ->Fill(gen_mindR_deltaR, bSF*EventWeight); - h_matrix[iSys]->h_gen_mindR_invMass2[2][iCut] ->Fill(gen_mindR_invMass, bSF*EventWeight); - } + for(int iJet=0; iJeth_jet_pt[passchannel][iStep][iJet] ->Fill(a_jetPt[iJet], bSF*EventWeight); + histBook[iSys]->h_jet_eta[passchannel][iStep][iJet]->Fill(a_jetEta[iJet], bSF*EventWeight); + histBook[iSys]->h_csv[passchannel][iStep][iJet] ->Fill(a_jetCSV[iJet], bSF*EventWeight); } - else{ - h_control[iSys]->h_reco_addbjets_invMass3[passchannel][iCut]->Fill(reco_addbjet_invMass, bSF*EventWeight); - - h_matrix[iSys]->h_respMatrix_gentop_deltaR2[passchannel][iCut] ->Fill(reco_addbjet_deltaR, gen_addbjet_deltaR, bSF*EventWeight); - h_matrix[iSys]->h_respMatrix_gentop_invMass2[passchannel][iCut] ->Fill(reco_addbjet_invMass, gen_addbjet_invMass, bSF*EventWeight); - h_matrix[iSys]->h_respMatrix_mindR_deltaR2[passchannel][iCut] ->Fill(reco_addbjet_deltaR, gen_mindR_deltaR, bSF*EventWeight); - h_matrix[iSys]->h_respMatrix_mindR_invMass2[passchannel][iCut] ->Fill(reco_addbjet_invMass, gen_mindR_invMass, bSF*EventWeight); - - if( passlepton ){ - h_control[iSys]->h_reco_addbjets_invMass3[2][iCut]->Fill(reco_addbjet_invMass, bSF*EventWeight); - - h_matrix[iSys]->h_respMatrix_gentop_deltaR2[2][iCut] ->Fill(reco_addbjet_deltaR, gen_addbjet_deltaR, bSF*EventWeight); - h_matrix[iSys]->h_respMatrix_gentop_invMass2[2][iCut] ->Fill(reco_addbjet_invMass, gen_addbjet_invMass, bSF*EventWeight); - h_matrix[iSys]->h_respMatrix_mindR_deltaR2[2][iCut] ->Fill(reco_addbjet_deltaR, gen_mindR_deltaR, bSF*EventWeight); - h_matrix[iSys]->h_respMatrix_mindR_invMass2[2][iCut] ->Fill(reco_addbjet_invMass, gen_mindR_invMass, bSF*EventWeight); - } - }//nevt%2 - }//cut + + histBook[iSys]->h_reco_addbjet1_pt[passchannel][iStep] ->Fill(reco_addbjet1_pt, bSF*EventWeight); + histBook[iSys]->h_reco_addbjet1_csv[passchannel][iStep] ->Fill(reco_addbjet1_csv, bSF*EventWeight); + histBook[iSys]->h_reco_addbjet2_pt[passchannel][iStep] ->Fill(reco_addbjet2_pt, bSF*EventWeight); + histBook[iSys]->h_reco_addbjet2_csv[passchannel][iStep] ->Fill(reco_addbjet2_csv, bSF*EventWeight); + histBook[iSys]->h_reco_addbjets_deltaR[passchannel][iStep] ->Fill(reco_addbjets_deltaR, bSF*EventWeight); + histBook[iSys]->h_reco_addbjets_invMass[passchannel][iStep]->Fill(reco_addbjets_invMass, bSF*EventWeight); + + histBook[iSys]->h_gen_mindR_addbjet1_pt[passchannel][iStep] ->Fill(gen_mindR_addbjet1_pt, bSF*EventWeight); + histBook[iSys]->h_gen_mindR_addbjet2_pt[passchannel][iStep] ->Fill(gen_mindR_addbjet2_pt, bSF*EventWeight); + histBook[iSys]->h_gen_mindR_deltaR[passchannel][iStep] ->Fill(gen_mindR_addbjets_deltaR, bSF*EventWeight); + histBook[iSys]->h_gen_mindR_invMass[passchannel][iStep] ->Fill(gen_mindR_addbjets_invMass, bSF*EventWeight); + histBook[iSys]->h_respMatrix_mindR_deltaR[passchannel][iStep] ->Fill(reco_addbjets_deltaR, gen_mindR_addbjets_deltaR, bSF*EventWeight); + histBook[iSys]->h_respMatrix_mindR_invMass[passchannel][iStep]->Fill(reco_addbjets_invMass, gen_mindR_addbjets_invMass, bSF*EventWeight); + + histBook[iSys]->h_gen_gentop_addbjet1_pt[passchannel][iStep] ->Fill(gen_gentop_addbjet1_pt, bSF*EventWeight); + histBook[iSys]->h_gen_gentop_addbjet2_pt[passchannel][iStep] ->Fill(gen_gentop_addbjet2_pt, bSF*EventWeight); + histBook[iSys]->h_gen_gentop_deltaR[passchannel][iStep] ->Fill(gen_gentop_addbjets_deltaR, bSF*EventWeight); + histBook[iSys]->h_gen_gentop_invMass[passchannel][iStep] ->Fill(gen_gentop_addbjets_invMass, bSF*EventWeight); + histBook[iSys]->h_respMatrix_gentop_deltaR[passchannel][iStep] ->Fill(reco_addbjets_deltaR, gen_gentop_addbjets_deltaR, bSF*EventWeight); + histBook[iSys]->h_respMatrix_gentop_invMass[passchannel][iStep]->Fill(reco_addbjets_invMass, gen_gentop_addbjets_invMass, bSF*EventWeight); + + if( dRregion != 999 ) histBook[iSys]->h_reco_deltaRvsCSV_bin[passchannel][iStep][dRregion]->Fill(reco_addbjet1_csv, bSF*EventWeight); + histBook[iSys]->h_3Dmatrix_mindR_deltaR[passchannel][iStep]->Fill(reco_addbjets_deltaR, gen_mindR_addbjets_deltaR, reco_addbjet1_csv, bSF*EventWeight); + histBook[iSys]->h_3Dmatrix_gentop_deltaR[passchannel][iStep]->Fill(reco_addbjets_deltaR, gen_gentop_addbjets_deltaR, reco_addbjet1_csv, bSF*EventWeight); + + if( Mregion != 999 ) histBook[iSys]->h_reco_invMassvsCSV_bin[passchannel][iStep][Mregion]->Fill(reco_addbjet1_csv, bSF*EventWeight); + histBook[iSys]->h_3Dmatrix_mindR_invMass[passchannel][iStep]->Fill(reco_addbjets_invMass, gen_mindR_addbjets_invMass, reco_addbjet1_csv, bSF*EventWeight); + histBook[iSys]->h_3Dmatrix_gentop_invMass[passchannel][iStep]->Fill(reco_addbjets_invMass, gen_gentop_addbjets_invMass, reco_addbjet1_csv, bSF*EventWeight); + }//iStep } - ++nevt; return kTRUE; } void MyAnalysis::SlaveTerminate(){ - //std::cout << "SlaveTerminate" << std::endl; option = GetOption(); } @@ -775,8 +604,6 @@ void MyAnalysis::Terminate(){ process = option.Data(); string str_opt = option.Data(); - //std::cout << "Terminate Process: " << str_opt << std::endl; - size_t first_idx = str_opt.find_first_of("/"); size_t last_idx = str_opt.find_last_of("/"); @@ -799,8 +626,32 @@ void MyAnalysis::Terminate(){ while( (obj = next()) ){ const char *name = obj->GetName(); std::string str(name); + if(str.find("Ch2") != std::string::npos ){ + std::string strMuon = boost::replace_all_copy(str, "Ch2", "Ch0"); + std::string strElec = boost::replace_all_copy(str, "Ch2", "Ch1"); + TList *tmp = new TList; + if( obj->InheritsFrom(TH1D::Class()) ){ + auto htmp = dynamic_cast(obj); + tmp->Add((TH1D *)fOutput->FindObject(strMuon.c_str())); + tmp->Add((TH1D *)fOutput->FindObject(strElec.c_str())); + htmp->Merge(tmp); + } + else if( obj->InheritsFrom(TH2D::Class()) ){ + auto htmp = dynamic_cast(obj); + tmp->Add((TH2D *)fOutput->FindObject(strMuon.c_str())); + tmp->Add((TH2D *)fOutput->FindObject(strElec.c_str())); + htmp->Merge(tmp); + } + else if( obj->InheritsFrom(TH3D::Class()) ){ + auto htmp = dynamic_cast(obj); + tmp->Add((TH3D *)fOutput->FindObject(strMuon.c_str())); + tmp->Add((TH3D *)fOutput->FindObject(strElec.c_str())); + htmp->Merge(tmp); + } + } if(str.find("h_") != std::string::npos ) obj->Write(); } + out->Write(); out->Close(); } diff --git a/macro/MyAnalysis.h b/macro/MyAnalysis.h index 15469d5..dfdc184 100644 --- a/macro/MyAnalysis.h +++ b/macro/MyAnalysis.h @@ -26,7 +26,7 @@ #include #include -#include "/home/seohyun/work/ttbb/ttbbRun2_dev/include/histBook.h" +#include "/home/seohyun/work/ttbb/ttbbRun2/macro/histBook.h" class MyAnalysis : public TSelector { public : @@ -44,23 +44,23 @@ public : TTreeReaderArray pdfweight = {fReader, "PUWeight"}; TTreeReaderArray scaleweight = {fReader, "PUWeight"}; TTreeReaderArray psweight = {fReader, "PUWeight"}; - //TTreeReaderArray prefireweight = {fReader, "lepton_eta"}; + TTreeReaderArray prefireweight = {fReader, "prefireweight"}; TTreeReaderValue MET = {fReader, "MET"}; TTreeReaderValue MET_phi = {fReader, "MET_phi"}; - TTreeReaderValue lepton_pT = {fReader, NULL}; + TTreeReaderValue lepton_pT = {fReader, "lepton_pt"}; TTreeReaderValue lepton_eta = {fReader, "lepton_eta"}; TTreeReaderValue lepton_phi = {fReader, "lepton_phi"}; - TTreeReaderValue lepton_E = {fReader, NULL}; + TTreeReaderValue lepton_E = {fReader, "lepton_e"}; TTreeReaderValue lepton_relIso = {fReader, "lepton_relIso"}; TTreeReaderValue lepton_isIso = {fReader, "lepton_isIso"}; TTreeReaderArray lepton_SF = {fReader, "lepton_SF"}; - TTreeReaderArray jet_pT = {fReader, NULL}; + TTreeReaderArray jet_pT = {fReader, "jet_pt"}; TTreeReaderArray jet_eta = {fReader, "jet_eta"}; TTreeReaderArray jet_phi = {fReader, "jet_phi"}; - TTreeReaderArray jet_E = {fReader, NULL}; + TTreeReaderArray jet_E = {fReader, "jet_e"}; TTreeReaderArray jet_index = {fReader, "jet_index"}; - TTreeReaderArray jet_CSV = {fReader, NULL}; - TTreeReaderArray jet_SF_CSV_30 = {fReader, NULL}; + TTreeReaderArray jet_CSV = {fReader, "jet_deepCSV"}; + TTreeReaderArray jet_SF_CSV_30 = {fReader, "jet_SF_deepCSV_30"}; TTreeReaderArray jet_JES_Up = {fReader, "jet_JES_Up"}; TTreeReaderArray jet_JES_Down = {fReader, "jet_JES_Down"}; TTreeReaderArray jet_JER_Up = {fReader, "jet_JER_Up"}; @@ -106,15 +106,11 @@ public : TString option; TString process; - int nevt = 0; - std::vector v_syst; - std::vector h_control; - std::vector h_matrix; - std::vector h_split; + std::vector histBook; - TH1D *h_bSF[3][4]; + TH1D *h_bSF[nChannel][nStep]; }; #endif diff --git a/macro/drawCutflowTable.py b/macro/drawCutflowTable.py deleted file mode 100644 index da865df..0000000 --- a/macro/drawCutflowTable.py +++ /dev/null @@ -1,140 +0,0 @@ -import os -import sys - -from ROOT import * -import ROOT - -luminosities = {16:35922, 17:41529, 18:59693} - -for year in range(16,19): - tmp_tmp = 0.0 - - f_nevt = open('../output/nevt'+str(year)+'.tex', 'w') - f_config = open('../plotIt/configs/files'+str(year)+'.yml','w') - - f_config.write("'root"+str(year)+"/hist_DataSingleMu.root':\n") - f_config.write(" type: data\n") - f_config.write(" legend: 'Data'\n") - f_config.write(" pretty-name: 'DataMu'\n") - f_config.write(" marker-size: 0.6\n") - f_config.write(" group: GData\n") - f_config.write("\n") - - f_config.write("'root"+str(year)+"/hist_DataSingleEG.root':\n") - f_config.write(" type: data\n") - f_config.write(" legend: 'Data'\n") - f_config.write(" pretty-name: 'DataEG'\n") - f_config.write(" marker-size: 0.6\n") - f_config.write(" group: GData\n") - f_config.write("\n") - - # MC samples - genevt = {} - with open('../samples/genevt'+str(year)+'.txt','r') as f: - while True: - line = f.readline() - if not line: break - tmp = line.split(' ') - genevt[tmp[0]] = float(tmp[1]) - - sf = {} - with open('../samples/scale'+str(year)+'.txt','r') as f: - while True: - line = f.readline() - if not line: break - tmp = line.split(' ') - sf[tmp[0]] = float(tmp[1]) - - hist_name = 'h_nJets' - with open('../samples/xsec'+str(year)+'.txt','r') as f: - f_nevt.write('\\begin{table}\n') - f_nevt.write(' \\caption{'+str(year)+'cutflow table}\n') - f_nevt.write(' \\begin{tabular}{|c|c|c|c|c|c|c|c|c|c|}\n') - f_nevt.write(' \\hlline\\hline\n') - f_nevt.write(' Sample & Ch0S0 & Ch0S1 & Ch0S2 & Ch0S3 & Ch1S0 & Ch1S0 & Ch1S1 & Ch1S2 & Ch1S3\n') - f_nevt.write(' \\hline\n') - n = 1 - while True: - line = f.readline() - if not line: break - if n != 1: - tmp = line.split(' ') - sample = tmp[0] - xsec = float(tmp[1]) - order = int(tmp[2]) - color = tmp[3] - legend = tmp[4][:-1] - if order < 0: continue - - # group - if "ff6666" in color: group = 'GttBkg' - elif "#ff66ff" in color: group = 'GttX' - elif "#990099" in color: group = 'GSingleT' - elif "#00cccc" in color: group = 'GVV' - elif "#000099" in color: group = 'GZJets' - elif "#d0cfd4" in color: group = 'GQCD' - else: group = '' - - f_config.write("'root"+str(year)+"/hist_"+sample+".root':\n") - f_config.write(" type: mc\n") - f_config.write(" pretty-name: '"+sample+"'\n") - f_config.write(" cross-section: "+str(xsec)+"\n") - f_config.write(" generated-events: "+str(genevt[sample])+"\n") - f_config.write(" fill-color: '"+str(color)+"'\n") - if not group == '': f_config.write(" group: "+group+"\n") - else: f_config.write(" legend: '"+legend+"'\n") - f_config.write(" order: "+str(order)+"\n") - #f_config.write(" scale: "+str(sf[sample])+"\n") - f_config.write("\n") - - f_sample = ROOT.TFile('../output/root'+str(year)+'/hist_'+sample+'.root') - scale = (luminosities[year]*xsec/genevt[sample]) - print(sample+": "+str(scale)) - nevt = sample + " " - for ich in range(0,2): - for istep in range(0,4): - hist_tmp = f_sample.Get(hist_name+'_Ch'+str(ich)+'_S'+str(istep)) - hist_tmp.Scale(scale) - tmp_evt = hist_tmp.Integral(0, hist_tmp.GetNbinsX()+1) - tmp_stat = hist_tmp.IntegralAndError(0, hist_tmp.GetNbinsX()+1, ROOT.Double(tmp_tmp)); - nevt += '& $%.2f {\scriptstyle\ \pm\ %.2f}$ ' % (tmp_evt, tmp_stat) - nevt += '\\ \n' - f_nevt.write(nevt) - n += 1 - - # Data - f_muon = ROOT.TFile('../output/root'+str(year)+'/hist_DataSingleMu.root') - f_elec = ROOT.TFile('../output/root'+str(year)+'/hist_DataSingleEG.root') - nevt = 'Data' - for ich in range(0,2): - for istep in range(0,4): - hist_muon = f_muon.Get(hist_name+'_Ch'+str(ich)+'_S'+str(istep)) - hist_elec = f_elec.Get(hist_name+'_Ch'+str(ich)+'_S'+str(istep)) - if ich == 0: - tmp_evt = hist_muon.Integral()+hist_muon.GetBinContent(hist_muon.GetNbinsX()+1) - tmp_stat = hist_muon.IntegralAndError(0, hist_muon.GetNbinsX()+1, ROOT.Double(tmp_tmp)) - else: - tmp_evt = hist_elec.Integral()+hist_elec.GetBinContent(hist_elec.GetNbinsX()+1) - tmp_stat = hist_elec.IntegralAndError(0, hist_elec.GetNbinsX()+1, ROOT.Double(tmp_tmp)) - - nevt += '& $%.2f {\scriptstyle\ \pm\ %.2f}$ ' % (tmp_evt, tmp_stat) - nevt += '\n' - f_nevt.write(nevt) - f_nevt.write(' \\hline\n') - f_nevt.write(' \\hline\\hline\n') - f_nevt.write(' \\end{tabular}\n') - f_nevt.write('\\end{table}\n') - - f_nevt.close() - f_config.close() - -scale16 = float(35922)/float(137144) -scale17 = float(41529)/float(137144) -scale18 = float(59693)/float(137144) -os.system('cp ../plotIt/configs/files16.yml ../plotIt/configs/files16_copy.yml\n') -os.system('cp ../plotIt/configs/files17.yml ../plotIt/configs/files17_copy.yml\n') -os.system('cp ../plotIt/configs/files18.yml ../plotIt/configs/files18_copy.yml\n') -os.system('sed -i "s/scale: 1/scale: '+str(scale16)+'/g" ../plotIt/configs/files16_copy.yml\n') -os.system('sed -i "s/scale: 1/scale: '+str(scale17)+'/g" ../plotIt/configs/files17_copy.yml\n') -os.system('sed -i "s/scale: 1/scale: '+str(scale18)+'/g" ../plotIt/configs/files18_copy.yml\n') -os.system('cat ../plotIt/configs/files16_copy.yml ../plotIt/configs/files17_copy.yml ../plotIt/configs/files18_copy.yml > ../plotIt/configs/files.yml\n') diff --git a/macro/getEvtInfo.py b/macro/getEvtInfo.py deleted file mode 100644 index f1c208a..0000000 --- a/macro/getEvtInfo.py +++ /dev/null @@ -1,23 +0,0 @@ -import os, sys -from ROOT import * -import ROOT - -for year in range(16,19): - f_genevt = open('../samples/genevt'+str(year)+'.txt','w') - - samples = [] - with open('../samples/sample'+str(year)+'.txt','r') as f: - n = 1 - while True: - line = f.readline() - if not line: break - if n == 1: base_path = line[:-1] - else: samples.append(line[:-1]) - n += 1 - - for sample in samples: - f_ntuple = ROOT.TFile(base_path+'/'+sample+'.root') - h_info = f_ntuple.Get('ttbbLepJets/EventInfo') - f_genevt.write(sample+' '+str(h_info.GetBinContent(2))+'\n') - - f_genevt.close() diff --git a/macro/getHistList.py b/macro/getHistList.py deleted file mode 100644 index e7d52e9..0000000 --- a/macro/getHistList.py +++ /dev/null @@ -1,22 +0,0 @@ -import os, sys -from ROOT import * -import ROOT - -f_data = ROOT.TFile("../output/root16/hist_DataSingleMu.root") -hist_list = [x.GetName() for x in f_data.GetListOfKeys()] - -f_hist = open("../plotIt/configs/histos_ttlj.yml", 'w') - -for hist in hist_list: - if "Disc" in hist: continue - if "Gen" in hist: continue - if "Resp" in hist: continue - if "EventInfo" in hist: continue - if "ScaleWeights" in hist: continue - if "bSF" in hist: continue - f_hist.write("'"+hist+"':\n") - f_hist.write(' y-axis: "Events"\n') - f_hist.write(' y-axis-format: "%1% / %2$.2f"\n') - f_hist.write(" save-extensions: ['pdf']\n") - f_hist.write(' log-y: true\n') - f_hist.write(' show-ratio: true\n\n') diff --git a/macro/getQCD.py b/macro/getQCD.py deleted file mode 100644 index 9692ad1..0000000 --- a/macro/getQCD.py +++ /dev/null @@ -1,76 +0,0 @@ -from ROOT import * -import ROOT -import os -import sys - -def getQCDShape(base_path, year, sample_list): - print("Get QCD shape in the sideband region") - print("YEAR: "+str(year)) - input_path = base_path+'/output/root'+str(year)+'_qcd/' - - f_qcd = TFile.Open(os.path.join(input_path, "hist_dataDriven_QCD.root"), "recreate") - f_muon = TFile.Open(os.path.join(input_path, "hist_dataDriven_DataSingleMu.root")) - f_elec = TFile.Open(os.path.join(input_path, "hist_dataDriven_DataSingleEG.root")) - - hist_list = [] - for x in f_muon.GetListOfKeys(): - if "__" in x.GetName(): continue - hist_list.append(x.GetName()) - - lumi = {16:35922, 17:41529, 18:59693} - - genevt = {} - with open(base_path+'/samples/genevt'+str(year)+'.txt','r') as f: - while True: - line = f.readline() - if not line: break - tmp = line.split(' ') - genevt[tmp[0]] = float(tmp[1]) - - xsec = {} - with open(base_path+'/samples/xsec'+str(year)+'.txt','r') as f: - while True: - line = f.readline() - if not line: break - if 'Sample Xsec' in line: continue - tmp = line.split(' ') - xsec[tmp[0]] = float(tmp[1]) - - samples = {} - for proc in sample_list: - f_tmp = TFile.Open(os.path.join(input_path, "hist_dataDriven_"+proc+".root")) - samples[proc] = f_tmp - - f_qcd.cd() - for hist in hist_list: - if 'Ch0' in hist: - h_qcd = f_muon.Get(hist) - elif 'Ch1' in hist: - h_qcd = f_elec.Get(hist) - else: - h_qcd = f_muon.Get(hist) - tmp = f_elec.Get(hist) - h_qcd.Add(tmp) - - if "TransverseMass" in hist: - nevt_data = h_qcd.Integral(0, h_qcd.GetNbinsX()+1) - - for proc in sample_list: - if 'QCD' in proc: continue - #print("Sample: "+str(proc)) - h_tmp = samples[proc].Get(hist) - scale = lumi[year]*xsec[proc]/genevt[proc] - h_tmp.Scale(scale) - h_qcd.Add(h_tmp,-1) - - if "TransverseMass" in hist: - nevt_qcd = h_qcd.Integral(0, h_qcd.GetNbinsX()+1) - print("Purity of QCD") - print("Hist: "+str(hist)) - print("nevt_data: "+str(nevt_data)) - print("nevt_qcd: "+str(nevt_qcd)) - purity = float(nevt_qcd)/float(nevt_data) - print("Puriy: "+str(purity)) - - h_qcd.Write() - f_qcd.Close() diff --git a/macro/getSampleList.py b/macro/getSampleList.py deleted file mode 100644 index 96a3816..0000000 --- a/macro/getSampleList.py +++ /dev/null @@ -1,56 +0,0 @@ -import os -import sys - -def getSampleList(save_path): - f_list16 = open(save_path+'/sample16.txt', 'w') - f_data16 = open(save_path+'/data16.txt', 'w') - f_list17 = open(save_path+'/sample17.txt', 'w') - f_data17 = open(save_path+'/data17.txt', 'w') - f_list18 = open(save_path+'/sample18.txt', 'w') - f_data18 = open(save_path+'/data18.txt', 'w') - - - base_path = '/data/users/seohyun/ntuple/' - path16 = base_path + 'Run2016/v808/nosplit' - path17 = base_path + 'Run2017/V9_6/nosplit' - path18 = base_path + 'Run2018/V10_3/nosplit' - - f_list16.write(path16+'\n') - f_list17.write(path17+'\n') - f_list18.write(path18+'\n') - - path16 = base_path + 'Run2016/v808/split' - path17 = base_path + 'Run2017/V9_6/split' - path18 = base_path + 'Run2018/V10_3/split' - - - for item in os.listdir(path16): - if "Data" in item: - f_data16.write(item+'\n') - continue - if "part" in item: continue - if "Herwig" in item: continue - if "Evtgen" in item: continue - if "TT_aMC" in item: continue - if "SYS" in item: continue - f_list16.write(item+'\n') - f_list16.close() - f_data16.close() - - for item in os.listdir(path17): - if "Data" in item: - f_data17.write(item+'\n') - continue - if "part" in item: continue - if "SYS" in item: continue - f_list17.write(item+'\n') - f_list17.close() - - for item in os.listdir(path18): - if "Data" in item: - f_data18.write(item+'\n') - continue - if "part" in item: continue - if "SYS" in item: continue - f_list18.write(item+'\n') - f_list18.close() diff --git a/include/histBook.h b/macro/histBook.h similarity index 54% rename from include/histBook.h rename to macro/histBook.h index 94f9427..4d0a145 100644 --- a/include/histBook.h +++ b/macro/histBook.h @@ -1,8 +1,12 @@ #include #include #include +#include + +std::map m_lumi = {{"16",35922}, {"17",41529}, {"18",59741}}; const double TTBAR_XSEC_ = 831.76; +const double BRATIO_ = 0.436572; // 2*3*0.1086*0.67 //OBJECT SELECTION for 2016 int MUON_ = 0; double MUON_PT_ = 30.0; @@ -21,10 +25,10 @@ double JET_ETA_ = 2.4; double JET_PHI_ = 0.0; double JET_E_ = 0.0; -// CSVv2 -double JET_CSV_TIGHT_ = 0.9535; -double JET_CSV_MEDIUM_ = 0.8484; -double JET_CSV_LOOSE_ = 0.0; +// deep CSV +double JET_CSV_TIGHT_ = 0.8953; +double JET_CSV_MEDIUM_ = 0.6321; +double JET_CSV_LOOSE_ = 0.2217; double JET_CvsL_TIGHT_ = 0.0; double JET_CvsL_MEDIUM_ = 0.0; @@ -47,11 +51,13 @@ const char * RECO_JET_ETA_ = "JetEta"; const char * RECO_TRANS_M_ = "TransverseMass"; const char * RECO_CSV_ = "bJetDiscriminator"; +const char * RECO_ADD_ = "RecoAddbJet"; const char * RECO_ADD_DR_ = "RecoAddbJetDeltaR"; const char * RECO_ADD_M_ = "RecoAddbJetInvMass"; const char * RECO_ADD_DETA_ = "RecoAddbJetDeltaEta"; const char * RECO_ADD_DPHI_ = "RecoAddbJetDeltaPhi"; +const char * GEN_ADD_ = "GenAddbJet"; const char * GEN_ADD_DR_ = "GenAddbJetDeltaR"; const char * GEN_ADD_M_ = "GenAddbJetInvMass"; const char * GEN_ADD_DETA_ = "GenAddbJetDeltaEta"; @@ -77,7 +83,8 @@ const char * ACC_M_ = "BinAcceptanceInvMass"; const char * ACC_DETA_ = "BinAcceptanceDeltaEta"; const char * ACC_DPHI_ = "BinAcceptanceDeltaPhi"; -const int nChannel=3; const int nStep=4; const int nJet = 6; +const int nChannel=3; const int nStep=10; +const int nJet = 6; const int nbJet = 4; //Bin width const int nbins_lep_pt=20; @@ -89,14 +96,17 @@ const double lep_eta_min=0; const double lep_eta_max=2.5; const int nbins_jet_pt=20; const double jet_pt_min=0; const double jet_pt_max=400; +const double jet_pt_width[21] = {0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200, + 220, 240, 260, 280, 300, 320, 340, 360, 380, 400}; const int nbins_jet_eta=20; const double jet_eta_min=0; const double jet_eta_max=2.5; const int nbins_wmass=20; const double wmass_min=0; const double wmass_max=200; -const int nbins_csv=20; -const double csv_min=0; const double csv_max=1; +const int nbins_csv=10; +const double csv_min=0.5; const double csv_max=1; +const double csv_width[11] = {0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0}; const int nbins_njets=10; const double njets_min=6; const double njets_max=10; @@ -108,8 +118,7 @@ const double nbjets_min=0; const double nbjets_max=5; //For unfolding const int nbins_reco_addbjets_dR=6; const double reco_addbjets_dR_min=0.4; const double reco_addbjets_dR_max=4.0; -const double reco_addbjets_dR_width[7] = -{0.4,0.6,1.0,1.5,2.0,3.0,4.0}; +const double reco_addbjets_dR_width[7] = {0.4,0.6,1.0,1.5,2.0,3.0,4.0}; //Gen const int nbins_gen_addbjets_dR=3; @@ -120,8 +129,7 @@ const double gen_addbjets_dR_width[4] = //For unfolding const int nbins_reco_addbjets_M=8; const double reco_addbjets_M_min=0; double reco_addbjets_M_max=400; -const double reco_addbjets_M_width[9] = -{0.0,30.0,60.0,80.0,100.0,135.0,170.0,285.0,400.0}; +const double reco_addbjets_M_width[9] = {0.0,30.0,60.0,80.0,100.0,135.0,170.0,285.0,400.0}; //Gen const int nbins_gen_addbjets_M=4; @@ -143,6 +151,27 @@ const int nbins_gen_addbjets_dPhi=6; const double gen_addbjets_dPhi_min=0; const double gen_addbjets_dPhi_max=3.14; //const double gen_addbjets_dPhi_width[]={}; +std::vector syst_ttbar = { + "__swup", "__swdown", "__psup", "__psdown", + "__tuneup", "__tunedown", "__hdampup", "__hdampdown", + "__pdfup", "__pdfdown" +}; + +std::vector syst_jet = { + "__jerup", "__jerdown", "__jecup", "__jecdown" +}; + +std::vector syst_basic = { + "__puup", "__pudown", + "__muidup", "__muiddown", "__muisoup", "__muisodown", "__mutrgup", "__mutrgdown", + "__elidup", "__eliddown", "__elrecoup", "__elrecodown", "__elzvtxup", "__elzvtxdown", + "__eltrgup", "__eltrgdown", + "__lfup", "__lfdown", "__hfup", "__hfdown", + "__hfstat1up","__hfstat1down", "__hfstat2up", "__hfstat2down", + "__lfstat1up","__lfstat1down", "__lfstat2up", "__lfstat2down", + "__cferr1up", "__cferr1down", "__cferr2up", "__cferr2down" +}; + class HistoBook{ private: std::vector v_chName = {"#mu","#it{e}","lep"}; @@ -151,7 +180,7 @@ class HistoBook{ HistoBook(const int _mode, const char *_process); //~Histo_Book(); - //control plots : mode = 1 + //mode = 1 TH1D *h_pv[nChannel][nStep]; TH1D *h_pv_nosf[nChannel][nStep]; @@ -159,47 +188,51 @@ class HistoBook{ TH1D *h_lepton_eta[nChannel][nStep]; TH1D *h_lepton_relIso[nChannel][nStep]; + TH1D *h_trans_mass[nChannel][nStep]; + TH1D *h_njets[nChannel][nStep]; TH1D *h_nbjets[nChannel][nStep]; TH1D *h_jet_pt[nChannel][nStep][nJet]; TH1D *h_jet_eta[nChannel][nStep][nJet]; - - TH1D *h_trans_mass[nChannel][nStep]; - TH1D *h_csv[nChannel][nStep][nJet]; - TH1D *h_1st_csv[nChannel][nStep]; - TH1D *h_2nd_csv[nChannel][nStep][nbins_csv]; + // reco level addbjet chosen by minimun delta R method + TH1D *h_reco_addbjet1_pt[nChannel][nStep]; + TH1D *h_reco_addbjet1_csv[nChannel][nStep]; + TH1D *h_reco_addbjet2_pt[nChannel][nStep]; + TH1D *h_reco_addbjet2_csv[nChannel][nStep]; TH1D *h_reco_addbjets_deltaR[nChannel][nStep]; TH1D *h_reco_addbjets_invMass[nChannel][nStep]; - TH1D *h_reco_addbjets_deltaR2[nChannel][nStep]; - TH1D *h_reco_addbjets_invMass2[nChannel][nStep]; - TH1D *h_reco_addbjets_deltaR3[nChannel][nStep]; - TH1D *h_reco_addbjets_invMass3[nChannel][nStep]; - //response matrix : mode = 2 - TH1D *h_gen_gentop_deltaR[nChannel][nStep]; - TH1D *h_gen_gentop_invMass[nChannel][nStep]; - TH1D *h_gen_gentop_deltaR2[nChannel][nStep]; - TH1D *h_gen_gentop_invMass2[nChannel][nStep]; - + // gen level addbjet chosen by minimum delta R method + TH1D *h_gen_mindR_addbjet1_pt[nChannel][nStep]; + TH1D *h_gen_mindR_addbjet2_pt[nChannel][nStep]; TH1D *h_gen_mindR_deltaR[nChannel][nStep]; TH1D *h_gen_mindR_invMass[nChannel][nStep]; - TH1D *h_gen_mindR_deltaR2[nChannel][nStep]; - TH1D *h_gen_mindR_invMass2[nChannel][nStep]; - TH2D *h_respMatrix_gentop_deltaR[nChannel][nStep]; - TH2D *h_respMatrix_gentop_invMass[nChannel][nStep]; TH2D *h_respMatrix_mindR_deltaR[nChannel][nStep]; TH2D *h_respMatrix_mindR_invMass[nChannel][nStep]; - TH2D *h_respMatrix_mindR_deltaR2[nChannel][nStep]; - TH2D *h_respMatrix_mindR_invMass2[nChannel][nStep]; - TH2D *h_respMatrix_gentop_deltaR2[nChannel][nStep]; - TH2D *h_respMatrix_gentop_invMass2[nChannel][nStep]; + // gen level addbjet chosen by tracing mother particles + TH1D *h_gen_gentop_addbjet1_pt[nChannel][nStep]; + TH1D *h_gen_gentop_addbjet2_pt[nChannel][nStep]; + TH1D *h_gen_gentop_deltaR[nChannel][nStep]; + TH1D *h_gen_gentop_invMass[nChannel][nStep]; + + TH2D *h_respMatrix_gentop_deltaR[nChannel][nStep]; + TH2D *h_respMatrix_gentop_invMass[nChannel][nStep]; - //etc : mode = 3 + // fitting + TH1D *h_reco_deltaRvsCSV_bin[nChannel][nStep][nbins_reco_addbjets_dR]; + TH3D *h_3Dmatrix_mindR_deltaR[nChannel][nStep]; + TH3D *h_3Dmatrix_gentop_deltaR[nChannel][nStep]; + + TH1D *h_reco_invMassvsCSV_bin[nChannel][nStep][nbins_reco_addbjets_M]; + TH3D *h_3Dmatrix_mindR_invMass[nChannel][nStep]; + TH3D *h_3Dmatrix_gentop_invMass[nChannel][nStep]; + + //mode = 2 TH1D *h_stability_deltaR[nChannel]; TH1D *h_stability_invMass[nChannel]; TH1D *h_purity_deltaR[nChannel]; @@ -210,9 +243,9 @@ class HistoBook{ HistoBook::HistoBook(const int _mode, const char *_process){ if(_mode == 1){ - //std::cout << "Make mode1" << std::endl; for(int iChannel=0; iChannelSetYTitle("Entries"); h_lepton_eta[iChannel][iStep]->Sumw2(); - h_lepton_relIso[iChannel][iStep] = new TH1D( - Form("h_%s_Ch%d_S%d%s",RECO_LEP_RELISO_,iChannel,iStep,_process),"", - 20, 0, 1); - h_lepton_relIso[iChannel][iStep]->SetXTitle(Form("%s relIso",v_chName[iChannel].c_str())); - h_lepton_relIso[iChannel][iStep]->SetYTitle("Entries"); - h_lepton_relIso[iChannel][iStep]->Sumw2(); + h_lepton_relIso[iChannel][iStep] = new TH1D( + Form("h_%s_Ch%d_S%d%s",RECO_LEP_RELISO_,iChannel,iStep,_process),"", + 20, 0, 2); + h_lepton_relIso[iChannel][iStep]->SetXTitle(Form("%s relIso",v_chName[iChannel].c_str())); + h_lepton_relIso[iChannel][iStep]->SetYTitle("Entries"); + h_lepton_relIso[iChannel][iStep]->Sumw2(); - if(iStep == 0){ + h_trans_mass[iChannel][iStep] = new TH1D( + Form("h_%s_Ch%d_S%d%s",RECO_TRANS_M_,iChannel,iStep,_process),"", + nbins_wmass, wmass_min, wmass_max); + h_trans_mass[iChannel][iStep]->SetXTitle("transverse mass (GeV)"); + h_trans_mass[iChannel][iStep]->SetYTitle("Entries"); + h_trans_mass[iChannel][iStep]->Sumw2(); + + if(iStep <= 1){ h_njets[iChannel][iStep] = new TH1D( Form("h_%s_Ch%d_S%d%s", RECO_N_JETS_, iChannel, iStep, _process), "", 10, 0, 10); - h_njets[iChannel][iStep]->GetXaxis()->SetBinLabel(1, "0"); - h_njets[iChannel][iStep]->GetXaxis()->SetBinLabel(2, "1"); - h_njets[iChannel][iStep]->GetXaxis()->SetBinLabel(3, "2"); - h_njets[iChannel][iStep]->GetXaxis()->SetBinLabel(4, "3"); - h_njets[iChannel][iStep]->GetXaxis()->SetBinLabel(5, "4"); - h_njets[iChannel][iStep]->GetXaxis()->SetBinLabel(6, "5"); - h_njets[iChannel][iStep]->GetXaxis()->SetBinLabel(7, "6"); - h_njets[iChannel][iStep]->GetXaxis()->SetBinLabel(8, "7"); - h_njets[iChannel][iStep]->GetXaxis()->SetBinLabel(9, "8"); - h_njets[iChannel][iStep]->GetXaxis()->SetBinLabel(10, "#geq 9"); + h_njets[iChannel][iStep]->GetXaxis()->SetBinLabel(1, "0"); + h_njets[iChannel][iStep]->GetXaxis()->SetBinLabel(2, "1"); + h_njets[iChannel][iStep]->GetXaxis()->SetBinLabel(3, "2"); + h_njets[iChannel][iStep]->GetXaxis()->SetBinLabel(4, "3"); + h_njets[iChannel][iStep]->GetXaxis()->SetBinLabel(5, "4"); + h_njets[iChannel][iStep]->GetXaxis()->SetBinLabel(6, "5"); + h_njets[iChannel][iStep]->GetXaxis()->SetBinLabel(7, "6"); + h_njets[iChannel][iStep]->GetXaxis()->SetBinLabel(8, "7"); + h_njets[iChannel][iStep]->GetXaxis()->SetBinLabel(9, "8"); + h_njets[iChannel][iStep]->GetXaxis()->SetBinLabel(10, "#geq 9"); + } + else if(iStep == 2){ + h_njets[iChannel][iStep] = new TH1D( + Form("h_%s_Ch%d_S%d%s",RECO_N_JETS_,iChannel,iStep,_process),"", + 2, 2, 4); + h_njets[iChannel][iStep]->GetXaxis()->SetBinLabel(1, "2"); + h_njets[iChannel][iStep]->GetXaxis()->SetBinLabel(2, "3"); + } + else if(iStep == 3 or iStep == 4){ + h_njets[iChannel][iStep] = new TH1D( + Form("h_%s_Ch%d_S%d%s",RECO_N_JETS_,iChannel,iStep,_process),"", + 6, 4, 10); + h_njets[iChannel][iStep]->GetXaxis()->SetBinLabel(1, "4"); + h_njets[iChannel][iStep]->GetXaxis()->SetBinLabel(2, "5"); + h_njets[iChannel][iStep]->GetXaxis()->SetBinLabel(3, "6"); + h_njets[iChannel][iStep]->GetXaxis()->SetBinLabel(4, "7"); + h_njets[iChannel][iStep]->GetXaxis()->SetBinLabel(5, "8"); + h_njets[iChannel][iStep]->GetXaxis()->SetBinLabel(6, "#geq 9"); + } + else if(iStep == 5){ + h_njets[iChannel][iStep] = new TH1D( + Form("h_%s_Ch%d_S%d%s",RECO_N_JETS_,iChannel,iStep,_process),"", + 4, 2, 6); + h_njets[iChannel][iStep]->GetXaxis()->SetBinLabel(1, "2"); + h_njets[iChannel][iStep]->GetXaxis()->SetBinLabel(2, "3"); + h_njets[iChannel][iStep]->GetXaxis()->SetBinLabel(3, "4"); + h_njets[iChannel][iStep]->GetXaxis()->SetBinLabel(4, "5"); } else{ h_njets[iChannel][iStep] = new TH1D( Form("h_%s_Ch%d_S%d%s",RECO_N_JETS_,iChannel,iStep,_process),"", 4, 6, 10); - h_njets[iChannel][iStep]->GetXaxis()->SetBinLabel(1, "6"); - h_njets[iChannel][iStep]->GetXaxis()->SetBinLabel(2, "7"); - h_njets[iChannel][iStep]->GetXaxis()->SetBinLabel(3, "8"); - h_njets[iChannel][iStep]->GetXaxis()->SetBinLabel(4, "#geq 9"); + h_njets[iChannel][iStep]->GetXaxis()->SetBinLabel(1, "6"); + h_njets[iChannel][iStep]->GetXaxis()->SetBinLabel(2, "7"); + h_njets[iChannel][iStep]->GetXaxis()->SetBinLabel(3, "8"); + h_njets[iChannel][iStep]->GetXaxis()->SetBinLabel(4, "#geq 9"); } h_njets[iChannel][iStep]->SetXTitle("Jet multiplicity"); h_njets[iChannel][iStep]->SetYTitle("Entries"); h_njets[iChannel][iStep]->Sumw2(); - h_nbjets[iChannel][iStep] = new TH1D( + if(iStep == 4 or iStep ==7){ + h_nbjets[iChannel][iStep] = new TH1D( + Form("h_%s_Ch%d_S%d%s",RECO_N_BJETS_,iChannel,iStep,_process),"", + 5, 2, 7); + h_nbjets[iChannel][iStep]->GetXaxis()->SetBinLabel(1, "2"); + h_nbjets[iChannel][iStep]->GetXaxis()->SetBinLabel(2, "3"); + h_nbjets[iChannel][iStep]->GetXaxis()->SetBinLabel(3, "4"); + h_nbjets[iChannel][iStep]->GetXaxis()->SetBinLabel(4, "5"); + h_nbjets[iChannel][iStep]->GetXaxis()->SetBinLabel(5, "#geq 6"); + } + else if(iStep == 8){ + h_nbjets[iChannel][iStep] = new TH1D( + Form("h_%s_Ch%d_S%d%s",RECO_N_BJETS_,iChannel,iStep,_process),"", + 4, 3, 7); + h_nbjets[iChannel][iStep]->GetXaxis()->SetBinLabel(1, "3"); + h_nbjets[iChannel][iStep]->GetXaxis()->SetBinLabel(2, "4"); + h_nbjets[iChannel][iStep]->GetXaxis()->SetBinLabel(3, "5"); + h_nbjets[iChannel][iStep]->GetXaxis()->SetBinLabel(4, "#geq 6"); + } + else if(iStep == 9){ + h_nbjets[iChannel][iStep] = new TH1D( + Form("h_%s_Ch%d_S%d%s",RECO_N_BJETS_,iChannel,iStep,_process),"", + 3, 4, 7); + h_nbjets[iChannel][iStep]->GetXaxis()->SetBinLabel(1, "4"); + h_nbjets[iChannel][iStep]->GetXaxis()->SetBinLabel(2, "5"); + h_nbjets[iChannel][iStep]->GetXaxis()->SetBinLabel(3, "#geq 6"); + } + else{ + h_nbjets[iChannel][iStep] = new TH1D( Form("h_%s_Ch%d_S%d%s",RECO_N_BJETS_,iChannel,iStep,_process),"", - nbins_nbjets, nbjets_min, nbjets_max); + 7, 0, 7); + h_nbjets[iChannel][iStep]->GetXaxis()->SetBinLabel(1, "0"); + h_nbjets[iChannel][iStep]->GetXaxis()->SetBinLabel(2, "1"); + h_nbjets[iChannel][iStep]->GetXaxis()->SetBinLabel(3, "2"); + h_nbjets[iChannel][iStep]->GetXaxis()->SetBinLabel(4, "3"); + h_nbjets[iChannel][iStep]->GetXaxis()->SetBinLabel(5, "4"); + h_nbjets[iChannel][iStep]->GetXaxis()->SetBinLabel(6, "5"); + h_nbjets[iChannel][iStep]->GetXaxis()->SetBinLabel(7, "#geq 6"); + } h_nbjets[iChannel][iStep]->SetXTitle("bJet multiplicity"); h_nbjets[iChannel][iStep]->SetYTitle("Entries"); - h_nbjets[iChannel][iStep]->GetXaxis()->SetBinLabel(1, "0"); - h_nbjets[iChannel][iStep]->GetXaxis()->SetBinLabel(2, "1"); - h_nbjets[iChannel][iStep]->GetXaxis()->SetBinLabel(3, "2"); - h_nbjets[iChannel][iStep]->GetXaxis()->SetBinLabel(4, "3"); - h_nbjets[iChannel][iStep]->GetXaxis()->SetBinLabel(5, "#geq 4"); h_nbjets[iChannel][iStep]->Sumw2(); for(int iJet=0; iJetSetXTitle("b discriminator"); h_csv[iChannel][iStep][iJet]->SetYTitle("Entries"); h_csv[iChannel][iStep][iJet]->Sumw2(); } - h_1st_csv[iChannel][iStep] = new TH1D( - Form("h_%s_1st_Ch%d_S%d%s", RECO_CSV_, iChannel, iStep, _process),"", - nbins_csv, csv_min, csv_max); - h_1st_csv[iChannel][iStep]->SetXTitle("b discriminator"); - h_1st_csv[iChannel][iStep]->SetYTitle("Entries"); - h_1st_csv[iChannel][iStep]->Sumw2(); - - for(int iregion = 0; iregion < nbins_csv; iregion++){ - h_2nd_csv[iChannel][iStep][iregion] = new TH1D( - Form("h_%s_2nd_Region%d_Ch%d_S%d%s", RECO_CSV_,iregion,iChannel,iStep,_process),"", - nbins_csv, csv_min, csv_max); - h_2nd_csv[iChannel][iStep][iregion]->SetXTitle("b discriminator"); - h_2nd_csv[iChannel][iStep][iregion]->SetYTitle("Entries"); - h_2nd_csv[iChannel][iStep][iregion]->Sumw2(); - } + // Reco level additonal b jets + h_reco_addbjet1_pt[iChannel][iStep] = new TH1D( + Form("h_mindR_%sPt_1_Ch%d_S%d%s",RECO_ADD_,iChannel,iStep,_process),"", + nbins_jet_pt, jet_pt_min, jet_pt_max); + h_reco_addbjet1_pt[iChannel][iStep]->SetXTitle("Addbjet1 p_{T} (GeV)"); + h_reco_addbjet1_pt[iChannel][iStep]->SetYTitle("Entries"); + h_reco_addbjet1_pt[iChannel][iStep]->Sumw2(); - h_trans_mass[iChannel][iStep] = new TH1D( - Form("h_%s_Ch%d_S%d%s",RECO_TRANS_M_,iChannel,iStep,_process),"", - nbins_wmass, wmass_min, wmass_max); - h_trans_mass[iChannel][iStep]->SetXTitle("transverse mass (GeV)"); - h_trans_mass[iChannel][iStep]->SetYTitle("Entries"); - h_trans_mass[iChannel][iStep]->Sumw2(); + h_reco_addbjet1_csv[iChannel][iStep] = new TH1D( + Form("h_mindR_%sCSV_1_Ch%d_S%d%s",RECO_ADD_,iChannel,iStep,_process),"", + nbins_csv, csv_min, csv_max); + h_reco_addbjet1_csv[iChannel][iStep]->SetXTitle("Addbjet1 CSV"); + h_reco_addbjet1_csv[iChannel][iStep]->SetYTitle("Entries"); + h_reco_addbjet1_csv[iChannel][iStep]->Sumw2(); + + h_reco_addbjet2_pt[iChannel][iStep] = new TH1D( + Form("h_mindR_%sPt_2_Ch%d_S%d%s",RECO_ADD_,iChannel,iStep,_process),"", + nbins_jet_pt, jet_pt_min, jet_pt_max); + h_reco_addbjet2_pt[iChannel][iStep]->SetXTitle("Addbjet2 p_{T} (GeV)"); + h_reco_addbjet2_pt[iChannel][iStep]->SetYTitle("Entries"); + h_reco_addbjet2_pt[iChannel][iStep]->Sumw2(); + + h_reco_addbjet2_csv[iChannel][iStep] = new TH1D( + Form("h_mindR_%sCSV_2_Ch%d_S%d%s",RECO_ADD_,iChannel,iStep,_process),"", + nbins_csv, csv_min, csv_max); + h_reco_addbjet2_csv[iChannel][iStep]->SetXTitle("Addbjet2 CSV"); + h_reco_addbjet2_csv[iChannel][iStep]->SetYTitle("Entries"); + h_reco_addbjet2_csv[iChannel][iStep]->Sumw2(); h_reco_addbjets_deltaR[iChannel][iStep] = new TH1D( Form("h_mindR_%s_Ch%d_S%d%s",RECO_ADD_DR_,iChannel,iStep,_process),"", @@ -347,69 +451,22 @@ HistoBook::HistoBook(const int _mode, const char *_process){ h_reco_addbjets_invMass[iChannel][iStep]->SetYTitle("Entries"); h_reco_addbjets_invMass[iChannel][iStep]->Sumw2(); - h_reco_addbjets_deltaR2[iChannel][iStep] = new TH1D( - Form("h_mindR_%s2_Ch%d_S%d%s",RECO_ADD_DR_,iChannel,iStep,_process),"", - nbins_reco_addbjets_dR, reco_addbjets_dR_width); - h_reco_addbjets_deltaR2[iChannel][iStep]->SetXTitle(Form("#DeltaR_{b#bar{b}}")); - h_reco_addbjets_deltaR2[iChannel][iStep]->SetYTitle("Entries"); - h_reco_addbjets_deltaR2[iChannel][iStep]->Sumw2(); - - h_reco_addbjets_invMass2[iChannel][iStep] = new TH1D( - Form("h_mindR_%s2_Ch%d_S%d%s",RECO_ADD_M_,iChannel,iStep,_process),"", - nbins_reco_addbjets_M, reco_addbjets_M_width); - h_reco_addbjets_invMass2[iChannel][iStep]->SetXTitle(Form("M_{b#bar{b}}(GeV)")); - h_reco_addbjets_invMass2[iChannel][iStep]->SetYTitle("Entries"); - h_reco_addbjets_invMass2[iChannel][iStep]->Sumw2(); - - h_reco_addbjets_deltaR3[iChannel][iStep] = new TH1D( - Form("h_mindR_%s3_Ch%d_S%d%s",RECO_ADD_DR_,iChannel,iStep,_process),"", - nbins_reco_addbjets_dR, reco_addbjets_dR_width); - h_reco_addbjets_deltaR3[iChannel][iStep]->SetXTitle(Form("#DeltaR_{b#bar{b}}")); - h_reco_addbjets_deltaR3[iChannel][iStep]->SetYTitle("Entries"); - h_reco_addbjets_deltaR3[iChannel][iStep]->Sumw2(); - - h_reco_addbjets_invMass3[iChannel][iStep] = new TH1D( - Form("h_mindR_%s3_Ch%d_S%d%s",RECO_ADD_M_,iChannel,iStep,_process),"", - nbins_reco_addbjets_M, reco_addbjets_M_width); - h_reco_addbjets_invMass3[iChannel][iStep]->SetXTitle(Form("M_{b#bar{b}}(GeV)")); - h_reco_addbjets_invMass3[iChannel][iStep]->SetYTitle("Entries"); - h_reco_addbjets_invMass3[iChannel][iStep]->Sumw2(); - - }//step - }//channel - }//mode - else if(_mode == 2){ - //std::cout << "Make mode2" << std::endl; - for(int iChannel=0; iChannelSetXTitle(Form("#DeltaR_{b#bar{b}}")); - h_gen_gentop_deltaR[iChannel][iStep]->SetYTitle("Entries"); - h_gen_gentop_deltaR[iChannel][iStep]->Sumw2(); - - h_gen_gentop_invMass[iChannel][iStep] = new TH1D( - Form("h_gentop_%s_Ch%d_S%d%s",GEN_ADD_M_,iChannel,iStep,_process),"", - nbins_gen_addbjets_M, gen_addbjets_M_width); - h_gen_gentop_invMass[iChannel][iStep]->SetXTitle(Form("M_{b#bar{b}}(GeV)")); - h_gen_gentop_invMass[iChannel][iStep]->SetYTitle("Entries"); - h_gen_gentop_invMass[iChannel][iStep]->Sumw2(); + // Gen level additional b jets + // Minimum Delta R + h_gen_mindR_addbjet1_pt[iChannel][iStep] = new TH1D( + Form("h_mindR_%sPt_1_Ch%d_S%d%s",GEN_ADD_,iChannel,iStep,_process),"", + nbins_jet_pt, jet_pt_min, jet_pt_max); + h_gen_mindR_addbjet1_pt[iChannel][iStep]->SetXTitle("Addbjet1 p_{T} (GeV)"); + h_gen_mindR_addbjet1_pt[iChannel][iStep]->SetYTitle("Entries"); + h_gen_mindR_addbjet1_pt[iChannel][iStep]->Sumw2(); + + h_gen_mindR_addbjet2_pt[iChannel][iStep] = new TH1D( + Form("h_mindR_%sPt_2_Ch%d_S%d%s",GEN_ADD_,iChannel,iStep,_process),"", + nbins_jet_pt, jet_pt_min, jet_pt_max); + h_gen_mindR_addbjet2_pt[iChannel][iStep]->SetXTitle("Addbjet2 p_{T} (GeV)"); + h_gen_mindR_addbjet2_pt[iChannel][iStep]->SetYTitle("Entries"); + h_gen_mindR_addbjet2_pt[iChannel][iStep]->Sumw2(); - h_gen_gentop_deltaR2[iChannel][iStep] = new TH1D( - Form("h_gentop_%s2_Ch%d_S%d%s",GEN_ADD_DR_,iChannel,iStep,_process),"", - nbins_gen_addbjets_dR, gen_addbjets_dR_width); - h_gen_gentop_deltaR2[iChannel][iStep]->SetXTitle(Form("#DeltaR_{b#bar{b}}")); - h_gen_gentop_deltaR2[iChannel][iStep]->SetYTitle("Entries"); - h_gen_gentop_deltaR2[iChannel][iStep]->Sumw2(); - - h_gen_gentop_invMass2[iChannel][iStep] = new TH1D( - Form("h_gentop_%s2_Ch%d_S%d%s",GEN_ADD_M_,iChannel,iStep,_process),"", - nbins_gen_addbjets_M, gen_addbjets_M_width); - h_gen_gentop_invMass2[iChannel][iStep]->SetXTitle(Form("M_{b#bar{b}}(GeV)")); - h_gen_gentop_invMass2[iChannel][iStep]->SetYTitle("Entries"); - h_gen_gentop_invMass2[iChannel][iStep]->Sumw2(); - h_gen_mindR_deltaR[iChannel][iStep] = new TH1D( Form("h_mindR_%s_Ch%d_S%d%s",GEN_ADD_DR_,iChannel,iStep,_process),"", nbins_gen_addbjets_dR, gen_addbjets_dR_width); @@ -424,36 +481,6 @@ HistoBook::HistoBook(const int _mode, const char *_process){ h_gen_mindR_invMass[iChannel][iStep]->SetYTitle("Entries"); h_gen_mindR_invMass[iChannel][iStep]->Sumw2(); - h_gen_mindR_deltaR2[iChannel][iStep] = new TH1D( - Form("h_mindR_%s2_Ch%d_S%d%s",GEN_ADD_DR_,iChannel,iStep,_process),"", - nbins_gen_addbjets_dR, gen_addbjets_dR_width); - h_gen_mindR_deltaR2[iChannel][iStep]->SetXTitle(Form("#DeltaR_{b#bar{b}}")); - h_gen_mindR_deltaR2[iChannel][iStep]->SetYTitle("Entries"); - h_gen_mindR_deltaR2[iChannel][iStep]->Sumw2(); - - h_gen_mindR_invMass2[iChannel][iStep] = new TH1D( - Form("h_mindR_%s2_Ch%d_S%d%s",GEN_ADD_M_,iChannel,iStep,_process),"", - nbins_gen_addbjets_M, gen_addbjets_M_width); - h_gen_mindR_invMass2[iChannel][iStep]->SetXTitle(Form("M_{b#bar{b}}(GeV)")); - h_gen_mindR_invMass2[iChannel][iStep]->SetYTitle("Entries"); - h_gen_mindR_invMass2[iChannel][iStep]->Sumw2(); - - h_respMatrix_gentop_deltaR[iChannel][iStep] = new TH2D( - Form("h_gentop_%s_Ch%d_S%d%s",MATRIX_DR_,iChannel,iStep,_process),"", - nbins_reco_addbjets_dR, reco_addbjets_dR_width, - nbins_gen_addbjets_dR, gen_addbjets_dR_width); - h_respMatrix_gentop_deltaR[iChannel][iStep]->SetYTitle("Gen. #DeltaR_{b#bar{b}}"); - h_respMatrix_gentop_deltaR[iChannel][iStep]->SetXTitle("Reco. #DeltaR_{b#bar{b}}"); - h_respMatrix_gentop_deltaR[iChannel][iStep]->Sumw2(); - - h_respMatrix_gentop_invMass[iChannel][iStep] = new TH2D( - Form("h_gentop_%s_Ch%d_S%d%s",MATRIX_M_,iChannel,iStep,_process),"", - nbins_reco_addbjets_M, reco_addbjets_M_width, - nbins_gen_addbjets_M, gen_addbjets_M_width); - h_respMatrix_gentop_invMass[iChannel][iStep]->SetYTitle("Gen. M_{b#bar{b}}(GeV)"); - h_respMatrix_gentop_invMass[iChannel][iStep]->SetXTitle("Reco. M_{b#bar{b}}(GeV)"); - h_respMatrix_gentop_invMass[iChannel][iStep]->Sumw2(); - h_respMatrix_mindR_deltaR[iChannel][iStep] = new TH2D( Form("h_mindR_%s_Ch%d_S%d%s",MATRIX_DR_,iChannel,iStep,_process),"", nbins_reco_addbjets_dR, reco_addbjets_dR_width, @@ -470,41 +497,113 @@ HistoBook::HistoBook(const int _mode, const char *_process){ h_respMatrix_mindR_invMass[iChannel][iStep]->SetXTitle("Reco. M_{b#bar{b}}(GeV)"); h_respMatrix_mindR_invMass[iChannel][iStep]->Sumw2(); - h_respMatrix_gentop_deltaR2[iChannel][iStep] = new TH2D( - Form("h_gentop_%s2_Ch%d_S%d%s",MATRIX_DR_,iChannel,iStep,_process),"", + // Tracing mother particles + h_gen_gentop_addbjet1_pt[iChannel][iStep] = new TH1D( + Form("h_gentop_%sPt_1_Ch%d_S%d%s",GEN_ADD_,iChannel,iStep,_process),"", + nbins_jet_pt, jet_pt_min, jet_pt_max); + h_gen_gentop_addbjet1_pt[iChannel][iStep]->SetXTitle("Addbjet1 p_{T} (GeV)"); + h_gen_gentop_addbjet1_pt[iChannel][iStep]->SetYTitle("Entries"); + h_gen_gentop_addbjet1_pt[iChannel][iStep]->Sumw2(); + + h_gen_gentop_addbjet2_pt[iChannel][iStep] = new TH1D( + Form("h_gentop_%sPt_2_Ch%d_S%d%s",GEN_ADD_,iChannel,iStep,_process),"", + nbins_jet_pt, jet_pt_min, jet_pt_max); + h_gen_gentop_addbjet2_pt[iChannel][iStep]->SetXTitle("Addbjet2 p_{T} (GeV)"); + h_gen_gentop_addbjet2_pt[iChannel][iStep]->SetYTitle("Entries"); + h_gen_gentop_addbjet2_pt[iChannel][iStep]->Sumw2(); + + h_gen_gentop_deltaR[iChannel][iStep] = new TH1D( + Form("h_gentop_%s_Ch%d_S%d%s",GEN_ADD_DR_,iChannel,iStep,_process),"", + nbins_gen_addbjets_dR, gen_addbjets_dR_width); + h_gen_gentop_deltaR[iChannel][iStep]->SetXTitle(Form("#DeltaR_{b#bar{b}}")); + h_gen_gentop_deltaR[iChannel][iStep]->SetYTitle("Entries"); + h_gen_gentop_deltaR[iChannel][iStep]->Sumw2(); + + h_gen_gentop_invMass[iChannel][iStep] = new TH1D( + Form("h_gentop_%s_Ch%d_S%d%s",GEN_ADD_M_,iChannel,iStep,_process),"", + nbins_gen_addbjets_M, gen_addbjets_M_width); + h_gen_gentop_invMass[iChannel][iStep]->SetXTitle(Form("M_{b#bar{b}}(GeV)")); + h_gen_gentop_invMass[iChannel][iStep]->SetYTitle("Entries"); + h_gen_gentop_invMass[iChannel][iStep]->Sumw2(); + + h_respMatrix_gentop_deltaR[iChannel][iStep] = new TH2D( + Form("h_gentop_%s_Ch%d_S%d%s",MATRIX_DR_,iChannel,iStep,_process),"", nbins_reco_addbjets_dR, reco_addbjets_dR_width, nbins_gen_addbjets_dR, gen_addbjets_dR_width); - h_respMatrix_gentop_deltaR2[iChannel][iStep]->SetYTitle("Gen. #DeltaR_{b#bar{b}}"); - h_respMatrix_gentop_deltaR2[iChannel][iStep]->SetXTitle("Reco. #DeltaR_{b#bar{b}}"); - h_respMatrix_gentop_deltaR2[iChannel][iStep]->Sumw2(); + h_respMatrix_gentop_deltaR[iChannel][iStep]->SetYTitle("Gen. #DeltaR_{b#bar{b}}"); + h_respMatrix_gentop_deltaR[iChannel][iStep]->SetXTitle("Reco. #DeltaR_{b#bar{b}}"); + h_respMatrix_gentop_deltaR[iChannel][iStep]->Sumw2(); - h_respMatrix_gentop_invMass2[iChannel][iStep] = new TH2D( - Form("h_gentop_%s2_Ch%d_S%d%s",MATRIX_M_,iChannel,iStep,_process),"", + h_respMatrix_gentop_invMass[iChannel][iStep] = new TH2D( + Form("h_gentop_%s_Ch%d_S%d%s",MATRIX_M_,iChannel,iStep,_process),"", nbins_reco_addbjets_M, reco_addbjets_M_width, nbins_gen_addbjets_M, gen_addbjets_M_width); - h_respMatrix_gentop_invMass2[iChannel][iStep]->SetYTitle("Gen. M_{b#bar{b}}(GeV)"); - h_respMatrix_gentop_invMass2[iChannel][iStep]->SetXTitle("Reco. M_{b#bar{b}}(GeV)"); - h_respMatrix_gentop_invMass2[iChannel][iStep]->Sumw2(); + h_respMatrix_gentop_invMass[iChannel][iStep]->SetYTitle("Gen. M_{b#bar{b}}(GeV)"); + h_respMatrix_gentop_invMass[iChannel][iStep]->SetXTitle("Reco. M_{b#bar{b}}(GeV)"); + h_respMatrix_gentop_invMass[iChannel][iStep]->Sumw2(); + + // Fitting + for(int ibin=0; ibin < nbins_reco_addbjets_dR; ibin++){ + h_reco_deltaRvsCSV_bin[iChannel][iStep][ibin] = new TH1D( + Form("h_mindR_RecoDeltaRvsCSV_bin%d_Ch%d_S%d%s",ibin,iChannel,iStep,_process),"", + nbins_csv, csv_width); + h_reco_deltaRvsCSV_bin[iChannel][iStep][ibin]->SetXTitle("b discriminator"); + h_reco_deltaRvsCSV_bin[iChannel][iStep][ibin]->SetYTitle("Entries"); + h_reco_deltaRvsCSV_bin[iChannel][iStep][ibin]->Sumw2(); + } - h_respMatrix_mindR_deltaR2[iChannel][iStep] = new TH2D( - Form("h_mindR_%s2_Ch%d_S%d%s",MATRIX_DR_,iChannel,iStep,_process),"", + h_3Dmatrix_mindR_deltaR[iChannel][iStep] = new TH3D( + Form("h_mindR_3DmatrixDeltaR_Ch%d_S%d%s",iChannel,iStep,_process),"", nbins_reco_addbjets_dR, reco_addbjets_dR_width, - nbins_gen_addbjets_dR, gen_addbjets_dR_width); - h_respMatrix_mindR_deltaR2[iChannel][iStep]->SetYTitle("Gen. #DeltaR_{b#bar{b}}"); - h_respMatrix_mindR_deltaR2[iChannel][iStep]->SetXTitle("Reco. #DeltaR_{b#bar{b}}"); - h_respMatrix_mindR_deltaR2[iChannel][iStep]->Sumw2(); + nbins_gen_addbjets_dR, gen_addbjets_dR_width, + nbins_csv, csv_width); + h_3Dmatrix_mindR_deltaR[iChannel][iStep]->SetXTitle("Reco. #DeltaR{b#bar{b}}"); + h_3Dmatrix_mindR_deltaR[iChannel][iStep]->SetYTitle("Gen. #DeltaR{b#bar{b}}"); + h_3Dmatrix_mindR_deltaR[iChannel][iStep]->SetZTitle("b discriminator"); + h_3Dmatrix_mindR_deltaR[iChannel][iStep]->Sumw2(); + + h_3Dmatrix_gentop_deltaR[iChannel][iStep] = new TH3D( + Form("h_gentop_3DmatrixDeltaR_Ch%d_S%d%s",iChannel,iStep,_process),"", + nbins_reco_addbjets_dR, reco_addbjets_dR_width, + nbins_gen_addbjets_dR, gen_addbjets_dR_width, + nbins_csv, csv_width); + h_3Dmatrix_gentop_deltaR[iChannel][iStep]->SetXTitle("Reco. #DeltaR{b#bar{b}}"); + h_3Dmatrix_gentop_deltaR[iChannel][iStep]->SetYTitle("Gen. #DeltaR{b#bar{b}}"); + h_3Dmatrix_gentop_deltaR[iChannel][iStep]->SetZTitle("b discriminator"); + h_3Dmatrix_gentop_deltaR[iChannel][iStep]->Sumw2(); + + for(int ibin=0; ibin < nbins_reco_addbjets_M; ibin++){ + h_reco_invMassvsCSV_bin[iChannel][iStep][ibin] = new TH1D( + Form("h_mindR_RecoInvMassvsCSV_bin%d_Ch%d_S%d%s",ibin,iChannel,iStep,_process),"", + nbins_csv, csv_width); + h_reco_invMassvsCSV_bin[iChannel][iStep][ibin]->SetXTitle("b discriminator"); + h_reco_invMassvsCSV_bin[iChannel][iStep][ibin]->SetYTitle("Entries"); + h_reco_invMassvsCSV_bin[iChannel][iStep][ibin]->Sumw2(); + } - h_respMatrix_mindR_invMass2[iChannel][iStep] = new TH2D( - Form("h_mindR_%s2_Ch%d_S%d%s",MATRIX_M_,iChannel,iStep,_process),"", + h_3Dmatrix_mindR_invMass[iChannel][iStep] = new TH3D( + Form("h_mindR_3DmatrixInvMass_Ch%d_S%d%s",iChannel,iStep,_process),"", nbins_reco_addbjets_M, reco_addbjets_M_width, - nbins_gen_addbjets_M, gen_addbjets_M_width); - h_respMatrix_mindR_invMass2[iChannel][iStep]->SetYTitle("Gen. M_{b#bar{b}}(GeV)"); - h_respMatrix_mindR_invMass2[iChannel][iStep]->SetXTitle("Reco. M_{b#bar{b}}(GeV)"); - h_respMatrix_mindR_invMass2[iChannel][iStep]->Sumw2(); + nbins_gen_addbjets_M, reco_addbjets_M_width, + nbins_csv, csv_width); + h_3Dmatrix_mindR_invMass[iChannel][iStep]->SetXTitle("Reco. M_{b#bar{b}}"); + h_3Dmatrix_mindR_invMass[iChannel][iStep]->SetYTitle("Gen. M_{b#bar{b}}"); + h_3Dmatrix_mindR_invMass[iChannel][iStep]->SetZTitle("b discriminator"); + h_3Dmatrix_mindR_invMass[iChannel][iStep]->Sumw2(); + + h_3Dmatrix_gentop_invMass[iChannel][iStep] = new TH3D( + Form("h_gentop_3DmatrixInvMass_Ch%d_S%d%s",iChannel,iStep,_process),"", + nbins_reco_addbjets_M, reco_addbjets_M_width, + nbins_gen_addbjets_M, reco_addbjets_M_width, + nbins_csv, csv_width); + h_3Dmatrix_gentop_invMass[iChannel][iStep]->SetXTitle("Reco. M_{b#bar{b}}"); + h_3Dmatrix_gentop_invMass[iChannel][iStep]->SetYTitle("Gen. M_{b#bar{b}}"); + h_3Dmatrix_gentop_invMass[iChannel][iStep]->SetZTitle("b discriminator"); + h_3Dmatrix_gentop_invMass[iChannel][iStep]->Sumw2(); }//step }//channel - }//mode - else if(_mode == 3){ + }//mode == 1 + else if(_mode == 2){ for(int iChannel=0; iChannelSetYTitle("acceptance"); h_acceptance_invMass[iChannel]->Sumw2(); }//channel - }//mode + }//mode == 2 else cout << "Warning : There is no such mode" << endl; } diff --git a/ttbbDiffXsec/makeAcceptance.C b/macro/makeAcceptance.C similarity index 69% rename from ttbbDiffXsec/makeAcceptance.C rename to macro/makeAcceptance.C index bee8651..4482c0f 100644 --- a/ttbbDiffXsec/makeAcceptance.C +++ b/macro/makeAcceptance.C @@ -1,33 +1,35 @@ #include #include #include +#include -#include "ttbbDiffXsec.h" +#include "TFile.h" +#include "TH1.h" +#include "TH2.h" +#include "TCanvas.h" -HistoBook *MakeHist(const char *genmode, TFile *f_in, std::string syst); -void DrawHist(std::string year, TH1 *h_in, bool drawError = false); +#include "histBook.h" -void makeAcceptance(std::string year, std::string ttbb, bool runSystematics){ - string input_dir = "../output/root" + year; - TFile *f_in = TFile::Open(Form("%s/hist_%s.root", input_dir.c_str(), ttbb.c_str())); - TFile *f_out = TFile::Open(Form("%s/hist_accept_%s.root", input_dir.c_str(), genMode),"recreate"); +HistoBook *MakeHist(std::string outputDir, const char *genMode, TFile *f_in, TFile *f_gen, std::string syst); - std::vector v_syst_list = syst_total; - std::vector v_syst_lep; - if( year == "16" ){ - v_syst_lep = { - "__musfup", "__musfdown", "__elsfup", "__elsfdown" - }; - } - else{ - v_syst_lep = { - "__muidup", "__muiddown", "__muisoup", "__muisodown", - "__elidup", "__eliddown", "__elrecoup", "__elrecodown", - "__elzvtxup", "__elzvtxdown", - }; - } +void makeAcceptance(std::string inputDir, std::string outputDir, std::string year, std::string ttbb, const char *genMode){ + + std::cout << "Calculate Acceptance for each bin..." << std::endl; + std::cout << "ttbb file: " << ttbb << std::endl; + + TFile *f_in = TFile::Open(Form("%s/hist_%s.root", inputDir.c_str(), ttbb.c_str())); + TFile *f_gen = TFile::Open(Form("%s/hist_gen.root", inputDir.c_str())); + TFile *f_out = TFile::Open(Form("%s/hist_accept.root", outputDir.c_str()),"recreate"); + + std::vector v_syst_list = syst_basic; + v_syst_list.insert(v_syst_list.end(), syst_jet.begin(), syst_jet.end()); + if( year == "16" || year == "2016" ) + v_syst_list.insert(v_syst_list.end(), syst_lep16.begin(), syst_lep16.end()); + else + v_syst_list.insert(v_syst_list.end(), syst_lep1718.begin(), syst_lep1718.end()); + v_syst_list.insert(v_syst_list.end(), syst_ttbar.begin(), syst_ttbar.end()); - auto h_tmp = MakeHist(genMode, f_in, ""); + auto h_tmp = MakeHist(outputDir, genMode, f_in, f_gen, ""); f_out->cd(); for(int ich=0; ichh_purity_invMass[ich]->Write(); h_tmp->h_acceptance_deltaR[ich]->Write(); h_tmp->h_acceptance_invMass[ich]->Write(); - - DrawHist(year, h_tmp->h_stability_deltaR[ich]); - DrawHist(year, h_tmp->h_stability_invMass[ich]); - DrawHist(year, h_tmp->h_purity_deltaR[ich]); - DrawHist(year, h_tmp->h_purity_invMass[ich]); - DrawHist(year, h_tmp->h_acceptance_deltaR[ich], true); - DrawHist(year, h_tmp->h_acceptance_invMass[ich], true); } h_tmp->~HistoBook(); - for(auto v_itr = v_syst_list.begin(); v_itr != v_syst_list.end(); ++v_itr){ - std::cout << "systematics:" << *v_itr << std::endl; - auto h_tmp = MakeHist(genMode, f_in, *v_itr); + for( auto v_itr : v_syst_list ){ + std::cout << "systematics:" << v_itr.c_str() << std::endl; + h_tmp = MakeHist(outputDir, genMode, f_in, f_gen, v_itr.c_str()); for(int ich=0; ichh_stability_deltaR[ich]->Write(); @@ -62,26 +57,12 @@ void makeAcceptance(std::string year, std::string ttbb, bool runSystematics){ h_tmp->~HistoBook(); } - for(auto v_itr = v_syst_lep.begin(); v_itr != v_syst_lep.end(); ++v_itr){ - std::cout << "systematics:" << *v_itr << std::endl; - auto h_tmp = MakeHist(genMode, f_in, *v_itr); - - for(int ich=0; ichh_stability_deltaR[ich]->Write(); - h_tmp->h_stability_invMass[ich]->Write(); - h_tmp->h_purity_deltaR[ich]->Write(); - h_tmp->h_purity_invMass[ich]->Write(); - h_tmp->h_acceptance_deltaR[ich]->Write(); - h_tmp->h_acceptance_invMass[ich]->Write(); - } - h_tmp->~HistoBook(); - } //f_out->Write(); f_out->Close(); } -HistoBook *MakeHist(const char *genmode, TFile *f_in, std::string syst){ - std::ofstream fout(Form("BinCriteria%s.txt", syst.c_str())); +HistoBook *MakeHist(std::string outputDir, const char *genMode, TFile *f_in, TFile *f_gen, std::string syst){ + std::ofstream fout(Form("%s/BinCriteria%s.txt", outputDir.c_str(), syst.c_str())); fout << "Systematic sample: " << syst << std::endl; //NORMALIZATION //double xsec = 0.0; @@ -107,17 +88,17 @@ HistoBook *MakeHist(const char *genmode, TFile *f_in, std::string syst){ TH1D *h_gen_invMass_nosel[nChannel]; for(int ich=0; ich < nChannel; ++ich){ - h_gen_deltaR_nosel[ich] = (TH1D *)f_in->Get(Form("h_%s_%s_Ch%d_nosel", genmode, GEN_ADD_DR_, ich)); - h_gen_invMass_nosel[ich] = (TH1D *)f_in->Get(Form("h_%s_%s_Ch%d_nosel", genmode, GEN_ADD_M_, ich)); + h_gen_deltaR_nosel[ich] = (TH1D *)f_gen->Get(Form("h_%s_%s_Ch%d_nosel", genMode, GEN_ADD_DR_, ich)); + h_gen_invMass_nosel[ich] = (TH1D *)f_gen->Get(Form("h_%s_%s_Ch%d_nosel", genMode, GEN_ADD_M_, ich)); - h_matrix_deltaR[ich] = (TH2D *)f_in->Get(Form("h_%s_%s_Ch%d_S3%s", genmode, MATRIX_DR_, ich, syst.c_str())); - h_matrix_invMass[ich] = (TH2D *)f_in->Get(Form("h_%s_%s_Ch%d_S3%s", genmode, MATRIX_M_, ich, syst.c_str())); + h_matrix_deltaR[ich] = (TH2D *)f_in->Get(Form("h_%s_%s_Ch%d_S3%s", genMode, MATRIX_DR_, ich, syst.c_str())); + h_matrix_invMass[ich] = (TH2D *)f_in->Get(Form("h_%s_%s_Ch%d_S3%s", genMode, MATRIX_M_, ich, syst.c_str())); - h_gen_deltaR[ich] = (TH1D *)f_in->Get(Form("h_%s_%s_Ch%d_S3%s", genmode, GEN_ADD_DR_, ich, syst.c_str())); - h_gen_invMass[ich] = (TH1D *)f_in->Get(Form("h_%s_%s_Ch%d_S3%s", genmode, GEN_ADD_M_, ich, syst.c_str())); + h_gen_deltaR[ich] = (TH1D *)f_in->Get(Form("h_%s_%s_Ch%d_S3%s", genMode, GEN_ADD_DR_, ich, syst.c_str())); + h_gen_invMass[ich] = (TH1D *)f_in->Get(Form("h_%s_%s_Ch%d_S3%s", genMode, GEN_ADD_M_, ich, syst.c_str())); - h_reco_deltaR[ich] = (TH1D *)f_in->Get(Form("h_%s_%s_Ch%d_S3%s", genmode, RECO_ADD_DR_, ich, syst.c_str())); - h_reco_invMass[ich] = (TH1D *)f_in->Get(Form("h_%s_%s_Ch%d_S3%s", genmode, RECO_ADD_M_, ich, syst.c_str())); + h_reco_deltaR[ich] = (TH1D *)f_in->Get(Form("h_%s_%s_Ch%d_S3%s", genMode, RECO_ADD_DR_, ich, syst.c_str())); + h_reco_invMass[ich] = (TH1D *)f_in->Get(Form("h_%s_%s_Ch%d_S3%s", genMode, RECO_ADD_M_, ich, syst.c_str())); } for(int ich=0; ichProcessLine("setTDRStyle();"); - - gStyle->SetHatchesSpacing(1); - gStyle->SetHatchesLineWidth(1); - - gStyle->SetPaintTextFormat("4.1f"); - gStyle->SetOptStat(0); - gStyle->SetOptTitle(0); - TGaxis::SetMaxDigits(3); - - gStyle->SetHatchesSpacing(1); - gStyle->SetHatchesLineWidth(1); - - auto h_in = (TH1 *)h_in_->Clone(); - h_in->Scale(100); - auto h_err = (TH1 *)h_in->Clone(); - string histname = h_in->GetName(); - - TCanvas *c = new TCanvas("","",800,800); - TPaveText *label_sim = tdrCMSSimlabel(); - TPaveText *label_work = tdrWorkProgress(); - - ssize_t pos; - h_in->SetMaximum(h_in->GetMaximum()*1.05); - if((pos = histname.find("AcceptanceDeltaR")) != string::npos){ - h_in->GetYaxis()->SetTitle("Acceptance(%)"); - h_in->SetMaximum(4.0); - h_in->SetMinimum(0.0); - } - if((pos = histname.find("AcceptanceInvMass")) != string::npos){ - h_in->GetYaxis()->SetTitle("Acceptance(%)"); - h_in->SetMaximum(4.5); - h_in->SetMinimum(0.0); - } - if((pos = histname.find("Purity")) != string::npos){ - h_in->GetYaxis()->SetTitle("Purity(%)"); - h_in->SetMaximum(100); - h_in->SetMinimum(0); - } - if((pos = histname.find("Stability")) != string::npos){ - h_in->GetYaxis()->SetTitle("Stability(%)"); - h_in->SetMaximum(100); - h_in->SetMinimum(0); - } - - h_in->GetYaxis()->SetTitleOffset(1.3); - h_in->GetXaxis()->SetTitleOffset(1.2); - h_in->SetLineWidth(2); - h_in->SetLineColor(kBlue); - h_in->Draw("hist"); - if(drawError){ - h_err->SetFillStyle(3154); - h_err->SetFillColor(kBlack); - h_err->Draw("e2 same"); - } - - //label_work->Draw("same"); - label_sim->Draw("same"); - c->Print(Form("../output/unfold/%s/%s.pdf", year.c_str(), h_in->GetName()),"pdf"); - - c->~TCanvas(); - h_in->~TH1(); -} diff --git a/macro/runGentree.C b/macro/runGentree.C index f71c1d7..eb41111 100644 --- a/macro/runGentree.C +++ b/macro/runGentree.C @@ -1,4 +1,4 @@ -#include "../include/histBook.h" +#include "histBook.h" void runGentree(std::string input_path, std::string output_path){ TFile *f_in = TFile::Open(Form("%s/TTLJ_PowhegPythia_ttbb.root", input_path.c_str())); diff --git a/macro/makePlots2.C b/macro/simplePloter.C similarity index 62% rename from macro/makePlots2.C rename to macro/simplePloter.C index 9bbb6b9..877f15d 100644 --- a/macro/makePlots2.C +++ b/macro/simplePloter.C @@ -1,10 +1,3 @@ -/***************************************************************************************************************************** - * last update : 2017-08-02 * - * Developer : San * - * Convert histograms as pdf file * - * use example : root -l -b -q simplePlotmaker.C'("~/work/ttbb/170802/hist_resp_noselection_ttbb.root","~/work/ttbb/170802")'* - *****************************************************************************************************************************/ - #include #include #include @@ -13,10 +6,9 @@ #include #include -#include "../include/tdrstyle.C" +#include "tdrstyle.C" -void makePlots2(string inputFile, string outputLocation = "../output/pdf/"){ - //gROOT->ProcessLine(".L ../include/tdrstyle.C"); +void simplePloter(string inputFile, string outputLocation = "../output/pdf/"){ gROOT->ProcessLine("setTDRStyle();"); gStyle->SetPaintTextFormat("4.1f"); @@ -25,7 +17,9 @@ void makePlots2(string inputFile, string outputLocation = "../output/pdf/"){ gStyle->SetPadRightMargin(0.05); //gStyle->SetErrorX(00); TGaxis::SetMaxDigits(3); - + + size_t pos; + TPaveText *label_cms = tdrCMSlabel(); TPaveText *label_sim = tdrCMSSimlabel(); @@ -42,6 +36,7 @@ void makePlots2(string inputFile, string outputLocation = "../output/pdf/"){ auto h = (TH1D *)obj; auto e = (TH1D *)h->Clone(); string histname = h->GetName(); + if((pos = histname.find("__")) != std::string::npos) continue; h->SetLineWidth(2); h->SetLineColor(kBlue); e->SetFillStyle(3013); @@ -50,7 +45,6 @@ void makePlots2(string inputFile, string outputLocation = "../output/pdf/"){ e->Draw("e2 same"); h->GetYaxis()->SetTitleOffset(1.5); h->GetXaxis()->SetTitleOffset(1.2); - ssize_t pos; if((pos = histname.find("Data")) != std::string::npos) label_cms->Draw("same"); else @@ -60,12 +54,13 @@ void makePlots2(string inputFile, string outputLocation = "../output/pdf/"){ else if(obj->InheritsFrom(TH2D::Class())){ auto h = (TH2D *) obj; string histname = h->GetName(); + if((pos = histname.find("__")) != std::string::npos) continue; + //h->Draw("col text"); h->Draw("box"); - ssize_t pos; if((pos = histname.find("Data")) != std::string::npos) - label_cms->Draw("same"); - else - label_sim->Draw("same"); + label_cms->Draw("same"); + else + label_sim->Draw("same"); c->Print(Form("%s/%s.pdf",outputLocation.c_str(), obj->GetName()),"pdf"); } else{ diff --git a/include/tdrstyle.C b/macro/tdrstyle.C similarity index 82% rename from include/tdrstyle.C rename to macro/tdrstyle.C index 451b86c..2eca121 100644 --- a/include/tdrstyle.C +++ b/macro/tdrstyle.C @@ -1,4 +1,5 @@ #include "TStyle.h" +#include "TPaveText.h" // tdrGrid: Turns the grid lines on (true) or off (false) @@ -9,9 +10,9 @@ void tdrGrid(bool gridOn) { // fixOverlay: Redraws the axis -void fixOverlay() { - gPad->RedrawAxis(); -} +//void fixOverlay() { +// gPad->RedrawAxis(); +//} void setTDRStyle() { TStyle *tdrStyle = new TStyle("tdrStyle","Style for P-TDR"); @@ -158,59 +159,15 @@ void setTDRStyle() { tdrStyle->cd(); } -TPaveText * tdrCMSlabel16(){ - TPaveText *label = new TPaveText(); - label->SetX1NDC(0.48); - label->SetX2NDC(0.90); - label->SetY1NDC(0.94); - label->SetY2NDC(0.98); - label->SetTextFont(42); - label->AddText("CMS, 35.9 fb^{-1} at #sqrt{s} = 13TeV"); - label->SetFillStyle(0); - label->SetBorderSize(0); - label->SetTextSize(0.04); - - return label; -} - -TPaveText * tdrCMSlabel17(){ - TPaveText *label = new TPaveText(); - label->SetX1NDC(0.48); - label->SetX2NDC(0.90); - label->SetY1NDC(0.94); - label->SetY2NDC(0.98); - label->SetTextFont(42); - label->AddText("CMS, 41.5 fb^{-1} at #sqrt{s} = 13TeV"); - label->SetFillStyle(0); - label->SetBorderSize(0); - label->SetTextSize(0.04); - - return label; -} - -TPaveText * tdrCMSlabel18(){ - TPaveText *label = new TPaveText(); - label->SetX1NDC(0.48); - label->SetX2NDC(0.90); - label->SetY1NDC(0.94); - label->SetY2NDC(0.98); - label->SetTextFont(42); - label->AddText("CMS, 59.7 fb^{-1} at #sqrt{s} = 13TeV"); - label->SetFillStyle(0); - label->SetBorderSize(0); - label->SetTextSize(0.04); - - return label; -} - -TPaveText * tdrCMSlabel1718(){ +TPaveText * tdrCMSlabel(double lumi){ + lumi = lumi / 1000; TPaveText *label = new TPaveText(); label->SetX1NDC(0.48); label->SetX2NDC(0.90); label->SetY1NDC(0.94); label->SetY2NDC(0.98); label->SetTextFont(42); - label->AddText("CMS, 101.2 fb^{-1} at #sqrt{s} = 13TeV"); + label->AddText(Form("CMS, %1f.1 fb^{-1} at #sqrt{s} = 13TeV", lumi)); label->SetFillStyle(0); label->SetBorderSize(0); label->SetTextSize(0.04); diff --git a/macro/ttbbDiffXsec.C b/macro/ttbbDiffXsec.C new file mode 100644 index 0000000..b0b126a --- /dev/null +++ b/macro/ttbbDiffXsec.C @@ -0,0 +1,229 @@ +#pragma once + +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "histBook.h" +#include "tdrstyle.C" +#include "runTUnfold.C" + +TH1 *calculateDiffXsec(std::string year, TH1 *h_in, TH1 *h_acceptance, bool gen = false); + +void ttbbDiffXsec(std::string unfoldDir, std::string year, const char *genMode, const char *recoMode, + bool scanLcurve, bool fixtau){ + //gErrorIgnoreLevel = kFatal; // kWarning + gROOT->ProcessLine("setTDRStyle();"); + + std::string tmp_str; + std::string tmp_name; double tmp_value; + + ifstream tau(Form("samples/tau%s.txt", year.c_str())); + std::map m_tau; + while(getline(tau, tmp_str)){ + std::stringstream ss; + ss.str(tmp_str); + ss >> tmp_name; + ss >> tmp_value; + m_tau.insert(pair(tmp_name, tmp_value)); + } + tau.close(); + + double fixedtau_dR = m_tau["fixedtau_dR"]; + double taumin_dR = m_tau["taumin_dR"]; + double taumax_dR = m_tau["taumax_dR"]; + + double fixedtau_M = m_tau["fixedtau_M"]; + double taumin_M = m_tau["taumin_M"]; + double taumax_M = m_tau["taumax_M"]; + + ifstream unfold(Form("samples/unfold%s.txt", year.c_str())); + std::vector group; + while(getline(unfold, tmp_str)){ + size_t pos; + if( (pos = tmp_str.find("group",0)) == std::string::npos ) continue; + std::stringstream ss; + ss.str(tmp_str); + while(ss >> tmp_name){ + if(tmp_name == "group") continue; + group.push_back(tmp_name); + } + } + unfold.close(); + + std::cout << "Load Files..." << std::endl; + + TFile *f_out = TFile::Open(Form("%s/hist_output.root", unfoldDir.c_str()),"recreate"); + TFile *f_input = TFile::Open(Form("%s/hist_input.root", unfoldDir.c_str())); + TFile *f_matrix = TFile::Open(Form("%s/hist_matrix.root", unfoldDir.c_str())); + TFile *f_accept = TFile::Open(Form("%s/hist_accept.root", unfoldDir.c_str())); + + std::cout << "Unfolding directory: " << unfoldDir << std::endl; + std::cout << "Input file: " << f_input << " " << f_input->GetName() << std::endl; + std::cout << "Acceptance file: " << f_accept << " " << f_accept->GetName() << std::endl; + std::cout << "Matrix file: " << f_matrix << " " << f_matrix->GetName() << std::endl; + std::cout << "Load histograms..." << std::endl; + + std::vector syst_list = syst_basic; + syst_list.insert(syst_list.end(), syst_jet.begin(), syst_jet.end()); + if( year == "16" || year == "2016" ) + syst_list.insert(syst_list.end(), syst_lep16.begin(), syst_lep16.end()); + else + syst_list.insert(syst_list.end(), syst_lep1718.begin(), syst_lep1718.end()); + syst_list.insert(syst_list.end(), syst_ttbar.begin(), syst_ttbar.end()); + + f_out->cd(); + std::vector variables = {"DeltaR", "InvMass"}; + for( auto vari : variables ){ + std::vector v_unfold_out; + // Closure Test + // Calculate Matrix Systematic Uncertainties + TH2 *h_resp_pref = (TH2 *)f_matrix->Get(Form("h_%s_ResponseMatrix%s_Ch2_S3_prefit", genMode, vari.c_str())); + TH1 *h_reco_clos = (TH1 *)f_matrix->Get(Form("h_%s_RecoAddbJet%s_Ch2_S3_ttbb_closure", recoMode, vari.c_str())); + TH1 *h_gen_clos = (TH1 *)f_matrix->Get(Form("h_%s_GenAddbJet%s_Ch2_S3", genMode, vari.c_str())); + + // std::vector runTUnfold( + // std::string outdir_, TH1 *h_in_, TH2 *h_resp_, + // std::map m_bkgs_, std::map m_scale_, + // std::map m_sys_, + // bool scanLcurve_ = false, double tauMin_ = 0., double tauMax_ = 0., + // bool fixTau_ = false, double fixedTau_ = 0.) + v_unfold_out = runTUnfold( + unfoldDir.c_str(), h_reco_clos, h_resp_pref, + std::map(), std::map(), std::map(), + scanLcurve, taumin_dR, taumax_dR, fixtau, fixedtau_dR); + for ( auto out : v_unfold_out ){ + if( out != NULL ) out->Write(); + } + h_gen_clos->Write(); + + // Unfold data + std::cout << "Unfold data..." << std::endl; + TH2 *h_resp_post = (TH2 *)f_matrix->Get(Form("h_%s_ResponseMatrix%s_Ch2_S3_postfit", genMode, vari.c_str())); + TH1 *h_data = (TH1 *)f_input->Get(Form("h_%s_RecoAddbJet%s_Ch2_S3_data_obs", recoMode, vari.c_str())); + std::map m_bkg, m_bkgup, m_bkgdown; + std::map m_scale; + + for(auto bkg : group){ + size_t pos; + if( (pos = bkg.find("data",0)) != std::string::npos ) continue; + if( (pos = bkg.find("ttbb",0)) != std::string::npos ) continue; + m_scale.insert(pair(bkg.c_str(), 1)); + auto tmp = (TH1 *)f_input->Get(Form("h_%s_RecoAddbJet%s_Ch2_S3_%s", recoMode, vari.c_str(), bkg.c_str())); + auto tmpup = (TH1 *)f_input->Get(Form("h_%s_RecoAddbJet%s_Ch2_S3_%s__postfitup", recoMode, vari.c_str(), bkg.c_str())); + auto tmpdown = (TH1 *)f_input->Get(Form("h_%s_RecoAddbJet%s_Ch2_S3_%s__postfitdown", recoMode, vari.c_str(), bkg.c_str())); + m_bkg.insert(pair(bkg.c_str(), tmp)); + m_bkgup.insert(pair(bkg.c_str(), tmpup)); + m_bkgdown.insert(pair(bkg.c_str(), tmpdown)); + } + + std::map m_sysInput; + for( std::string syst : syst_list ){ + TH2 *tmp = (TH2 *)f_matrix->Get(Form("h_%s_ResponseMatrix%s_Ch2_S3_postfit%s", genMode, vari.c_str(), syst.c_str())); + m_sysInput.insert(pair(syst.c_str(), tmp)); + } + + v_unfold_out = runTUnfold( + unfoldDir.c_str(), h_data, h_resp_post, + m_bkg, m_scale, m_sysInput, + scanLcurve, taumin_dR, taumax_dR, fixtau, fixedtau_dR); + for ( auto out : v_unfold_out ){ + if( out != NULL ) out->Write(); + } + auto v_up = runTUnfold( + unfoldDir.c_str(), h_data, h_resp_post, + m_bkgup, m_scale, std::map(), + scanLcurve, taumin_dR, taumax_dR, fixtau, fixedtau_dR, "__postup"); + auto v_down = runTUnfold( + unfoldDir.c_str(), h_data, h_resp_post, + m_bkgdown, m_scale, std::map(), + scanLcurve, taumin_dR, taumax_dR, fixtau, fixedtau_dR, "__postdown"); + v_up[0]->SetName(Form("Background_%s", v_up[0]->GetName())); v_up[0]->Write(); + v_down[0]->SetName(Form("Background_%s", v_down[0]->GetName())); v_down[0]->Write(); + + // Calculate differential cross section + std::cout << "Calculate Differential cross section" << std::endl; + TH1 *h_gen_nosel = (TH1 *)f_matrix->Get(Form("h_%s_GenAddbJet%s_Ch2_nosel", genMode, vari.c_str())); + TH1 *h_accept = (TH1 *)f_accept->Get(Form("h_BinAcceptance%s_Ch2", vari.c_str())); + + auto h_diffXsec_MC = calculateDiffXsec(year, h_gen_nosel, NULL, true); + auto h_diffXsec = calculateDiffXsec(year, v_unfold_out[0], h_accept); + + h_diffXsec_MC->Write(); + h_diffXsec->Write(); + h_gen_nosel->Write(); + + for( auto syst : syst_list ){ + if(syst == "") continue; + TH1 *h_sys = (TH1 *)f_accept->Get(Form("h_BinAcceptance%s_Ch2%s", vari.c_str(), syst.c_str())); + TH1 *h_diffSys = calculateDiffXsec(year, v_unfold_out[0], h_sys); + h_diffSys->SetName(Form("Acceptance_%s%s", h_data->GetName(), syst.c_str())); + h_diffSys->Write(); + } + + } + std::cout << "Finish unfolding" << std::endl; + f_out->Close(); +} + +TH1 *calculateDiffXsec(std::string year, TH1 *h_in, TH1 *h_acceptance, bool gen){ + TH1 *h_out = (TH1 *)h_in->Clone(); + double incXsec = 0.0; double incXsec_err = 0.0; + + std::cout << "--------------------------------------------------------"<< std::endl; + std::cout << h_in->GetName() << endl; + std::string name = h_in->GetName(); + ssize_t pos; + + for(int ibin=1; ibin <= h_in->GetNbinsX(); ++ibin){ + double bin_width, diffXsec, diffXsec_err; + // diffXsec = (1/bin width)*(nevt/accp*lumi) + bin_width = h_in->GetXaxis()->GetBinWidth(ibin); + if(gen){ + diffXsec = h_in->GetBinContent(ibin)/(bin_width*m_lumi[year]*BRATIO_); + diffXsec_err = h_in->GetBinError(ibin)/(bin_width*m_lumi[year]*BRATIO_); + } + else{ + diffXsec = h_in->GetBinContent(ibin) + / (h_acceptance->GetBinContent(ibin)*bin_width*m_lumi[year]*BRATIO_); + diffXsec_err = h_in->GetBinError(ibin) + / (h_acceptance->GetBinContent(ibin)*bin_width*m_lumi[year]*BRATIO_); + if(h_acceptance->GetBinContent(ibin) == 0.0){ + diffXsec = 0.0; + diffXsec_err = 0.0; + } + } + + h_out->SetBinContent(ibin, diffXsec); + h_out->SetBinError(ibin, diffXsec_err); + + incXsec += diffXsec*bin_width; + incXsec_err += pow(diffXsec_err*bin_width,2); + + std::cout << ibin << "th diffXsec: " << diffXsec << " || err: " << diffXsec_err << " || bin width: " << bin_width << std::endl; + } + + std::cout << "inclusive Xsection : " << incXsec << " || error : " << sqrt(incXsec_err) << std::endl; + std::cout << "--------------------------------------------------------"<< std::endl; + + std::string tmp_name = h_out->GetName(); + boost::replace_all(tmp_name, "_Unfolded_", "_"); + + h_out->SetName(Form("DiffXsec_%s",tmp_name.c_str())); + return h_out; +} diff --git a/main.py b/main.py new file mode 100644 index 0000000..d527ed7 --- /dev/null +++ b/main.py @@ -0,0 +1,21 @@ +import os +import sys +import argparse +from PyQt5 import QtWidgets + +sys.path.append(os.getcwd()) + +def str2bool(v): + if v.lower() in ('yes', 'true', 't', 'y', '1', 'True'): return True + elif v.lower() in ('no', 'false', 'f', 'n', '0', 'False'): return False + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='Anlyzer') + parser.add_argument('-b', '--batch', required=False, type=str2bool, default=False, help='batch mode') + options = parser.parse_args() + + base_path = os.getcwd() + from ui import ui + app = QtWidgets.QApplication(sys.argv) + ex = ui.MyApp(base_path, options.batch) + sys.exit(app.exec_()) diff --git a/plotIt/configs/config.yml b/plotIt/configs/config.yml deleted file mode 100644 index 1d23a07..0000000 --- a/plotIt/configs/config.yml +++ /dev/null @@ -1,103 +0,0 @@ -configuration: - width: 450 - height: 450 - luminosity-label: '%1$.1f fb^{-1} at #sqrt{s} = 13 TeV' - experiment: " CMS" - #extra-label: "Preliminary" - extra-label: "Work in Progress" - root: '' - luminosity: 137144 - luminosity-error: 0.00 - #luminosity-error: 0.025 - error-fill-style: 3154 - error-fill-color: "#ee556270" - ratio-fit-error-fill-style: 1001 - ratio-fit-error-fill-color: "#aa556270" - ratio-fit-line-color: "#0B486B" - blinded-range-fill-color: "#29556270" - blinded-range-fill-style: 1001 - yields-table-align: v - book-keeping-file: 'plots.root' - yields-table-numerical-precision-yields: 2 - -files: - include: ['files.yml'] - -systematics: -# - ttbb_xsec: {type: const, value: 1.055, on: 'hist_ttbb.root'} -# - ttbj_xsec: {type: const, value: 1.055, on: 'hist_ttbj.root'} -# - ttcc_xsec: {type: const, value: 1.055, on: 'hist_ttcc.root'} -# - ttlf_xsec: {type: const, value: 1.055, on: 'hist_ttLF.root'} -# - ttother_xsec: {type: const, value: 1.055, on: 'hist_ttother.root'} -# - ttbkg_xsec: {type: const, value: 1.055, on: 'hist_ttbkg.root'} -# - ttbb_xsec2: {type: const, value: 1.3, on: 'hist_ttbb.root'} -# - ttcc_xsec2: {type: const, value: 1.5, on: 'hist_ttcc.root'} -# - other_xsec1: {type: const, value: 1.1, on: 'hist_zjets.root'} -# - other_xsec2: {type: const, value: 1.1, on: 'hist_zjets10to50.root'} -# - other_xsec3: {type: const, value: 1.1, on: 'hist_wjets.root'} -# - other_xsec4: {type: const, value: 1.1, on: 'hist_ww.root'} -# - other_xsec5: {type: const, value: 1.1, on: 'hist_wz.root'} -# - other_xsec6: {type: const, value: 1.1, on: 'hist_zz.root'} -# - other_xsec7: {type: const, value: 1.1, on: 'hist_tchannel.root'} -# - other_xsec8: {type: const, value: 1.1, on: 'hist_tbarchannel.root'} -# - other_xsec9: {type: const, value: 1.1, on: 'hist_tWchannel.root'} -# - other_xsec10: {type: const, value: 1.1, on: 'hist_tbarWchannel.root'} -# - other_xsec11: {type: const, value: 1.1, on: 'hist_ttH.root'} -# - other_xsec12: {type: const, value: 1.1, on: 'hist_ttW.root'} -# - other_xsec13: {type: const, value: 1.1, on: 'hist_ttZ.root'} -# - pu -# - musf -# - musf -# - jec -# - jer -# - scale: {type: shape, on: 'hist_ttbb.root'} -# - scale: {type: shape, on: 'hist_ttbj.root'} -# - scale: {type: shape, on: 'hist_ttcc.root'} -# - scale: {type: shape, on: 'hist_ttLF.root'} -# - scale: {type: shape, on: 'hist_ttother.root'} -# - scale: {type: shape, on: 'hist_ttbkg.root'} -# - scale: {type: shape, on: 'hist_ttH.root'} -# - scale: {type: shape, on: 'hist_ttW.root'} -# - scale: {type: shape, on: 'hist_ttZ.root'} -# - ps: {type: shape, on: 'hist_ttbb.root'} -# - ps: {type: shape, on: 'hist_ttbj.root'} -# - ps: {type: shape, on: 'hist_ttcc.root'} -# - ps: {type: shape, on: 'hist_ttLF.root'} -# - ps: {type: shape, on: 'hist_ttother.root'} -# - ps: {type: shape, on: 'hist_ttbkg.root'} -# - hdamp: {type: shape, on: 'hist_ttbb.root'} -# - hdamp: {type: shape, on: 'hist_ttbj.root'} -# - hdamp: {type: shape, on: 'hist_ttcc.root'} -# - hdamp: {type: shape, on: 'hist_ttLF.root'} -# - hdamp: {type: shape, on: 'hist_ttother.root'} -# - pdf: {type: shape, on: 'hist_ttbb.root'} -# - pdf: {type: shape, on: 'hist_ttbj.root'} -# - pdf: {type: shape, on: 'hist_ttcc.root'} -# - pdf: {type: shape, on: 'hist_ttlf.root'} -# - pdf: {type: shape, on: 'hist_ttother.root'} -# - TuneCP5: {type: shape, on: 'hist_ttbb.root'} -# - TuneCP5: {type: shape, on: 'hist_ttbj.root'} -# - TuneCP5: {type: shape, on: 'hist_ttcc.root'} -# - TuneCP5: {type: shape, on: 'hist_ttLF.root'} -# - TuneCP5: {type: shape, on: 'hist_ttother.root'} -# - lf -# - hf -# - lfstat1 -# - lfstat2 -# - hfstat1 -# - hfstat2 -# - cferr1 -# - cferr2 - -plots: - include: ['histos_ttlj.yml'] - -legend: -# position: [0.18, 0.68, 0.92, 0.89] - position: [0.18, 0.73, 0.92, 0.89] #For DNN - columns: 5 - -groups: - include: ['groups.yml'] - -# - gamma: {type: ln, prior: 1.072, pretty-name: "Gamma"} # Log-normal systematics, +7.2%, -2.97%, exp(+/- 1 * log(prior)) diff --git a/plotIt/configs/config16.yml b/plotIt/configs/config16.yml index e7b3f71..3241ebd 100644 --- a/plotIt/configs/config16.yml +++ b/plotIt/configs/config16.yml @@ -5,10 +5,9 @@ configuration: experiment: " CMS" #extra-label: "Preliminary" extra-label: "Work in Progress" - root: '' + root: './output/post16/' luminosity: 35922 - luminosity-error: 0.00 - #luminosity-error: 0.025 + luminosity-error: 0.025 error-fill-style: 3154 error-fill-color: "#ee556270" ratio-fit-error-fill-style: 1001 @@ -21,80 +20,97 @@ configuration: yields-table-numerical-precision-yields: 2 files: - include: ['files16.yml'] + include: ['files16.yml'] # For basic plots systematics: # - ttbb_xsec: {type: const, value: 1.055, on: 'hist_ttbb.root'} -# - ttbj_xsec: {type: const, value: 1.055, on: 'hist_ttbj.root'} -# - ttcc_xsec: {type: const, value: 1.055, on: 'hist_ttcc.root'} -# - ttlf_xsec: {type: const, value: 1.055, on: 'hist_ttLF.root'} -# - ttother_xsec: {type: const, value: 1.055, on: 'hist_ttother.root'} -# - ttbkg_xsec: {type: const, value: 1.055, on: 'hist_ttbkg.root'} +# - ttbj_xsec: {type: const, value: 1.055, on: 'hist_TTLJ_PowhegPythia_ttbj.root'} +# - ttcc_xsec: {type: const, value: 1.055, on: 'hist_TTLJ_PowhegPythia_ttcc.root'} +# - ttlf_xsec: {type: const, value: 1.055, on: 'hist_TTLJ_PowhegPythia_ttLF.root'} +# - ttother_xsec: {type: const, value: 1.055, on: 'hist_TTLJ_PowhegPythia_ttother.root'} +# - ttbkg_xsec: {type: const, value: 1.055, on: 'hist_TT_PowhegPythiaBkg.root'} # - ttbb_xsec2: {type: const, value: 1.3, on: 'hist_ttbb.root'} -# - ttcc_xsec2: {type: const, value: 1.5, on: 'hist_ttcc.root'} -# - other_xsec1: {type: const, value: 1.1, on: 'hist_zjets.root'} -# - other_xsec2: {type: const, value: 1.1, on: 'hist_zjets10to50.root'} -# - other_xsec3: {type: const, value: 1.1, on: 'hist_wjets.root'} -# - other_xsec4: {type: const, value: 1.1, on: 'hist_ww.root'} -# - other_xsec5: {type: const, value: 1.1, on: 'hist_wz.root'} -# - other_xsec6: {type: const, value: 1.1, on: 'hist_zz.root'} -# - other_xsec7: {type: const, value: 1.1, on: 'hist_tchannel.root'} -# - other_xsec8: {type: const, value: 1.1, on: 'hist_tbarchannel.root'} -# - other_xsec9: {type: const, value: 1.1, on: 'hist_tWchannel.root'} -# - other_xsec10: {type: const, value: 1.1, on: 'hist_tbarWchannel.root'} -# - other_xsec11: {type: const, value: 1.1, on: 'hist_ttH.root'} -# - other_xsec12: {type: const, value: 1.1, on: 'hist_ttW.root'} -# - other_xsec13: {type: const, value: 1.1, on: 'hist_ttZ.root'} -# - pu -# - musf -# - musf -# - jec -# - jer -# - scale: {type: shape, on: 'hist_ttbb.root'} -# - scale: {type: shape, on: 'hist_ttbj.root'} -# - scale: {type: shape, on: 'hist_ttcc.root'} -# - scale: {type: shape, on: 'hist_ttLF.root'} -# - scale: {type: shape, on: 'hist_ttother.root'} -# - scale: {type: shape, on: 'hist_ttbkg.root'} -# - scale: {type: shape, on: 'hist_ttH.root'} -# - scale: {type: shape, on: 'hist_ttW.root'} -# - scale: {type: shape, on: 'hist_ttZ.root'} -# - ps: {type: shape, on: 'hist_ttbb.root'} -# - ps: {type: shape, on: 'hist_ttbj.root'} -# - ps: {type: shape, on: 'hist_ttcc.root'} -# - ps: {type: shape, on: 'hist_ttLF.root'} -# - ps: {type: shape, on: 'hist_ttother.root'} -# - ps: {type: shape, on: 'hist_ttbkg.root'} -# - hdamp: {type: shape, on: 'hist_ttbb.root'} -# - hdamp: {type: shape, on: 'hist_ttbj.root'} -# - hdamp: {type: shape, on: 'hist_ttcc.root'} -# - hdamp: {type: shape, on: 'hist_ttLF.root'} -# - hdamp: {type: shape, on: 'hist_ttother.root'} -# - pdf: {type: shape, on: 'hist_ttbb.root'} -# - pdf: {type: shape, on: 'hist_ttbj.root'} -# - pdf: {type: shape, on: 'hist_ttcc.root'} -# - pdf: {type: shape, on: 'hist_ttlf.root'} -# - pdf: {type: shape, on: 'hist_ttother.root'} -# - TuneCP5: {type: shape, on: 'hist_ttbb.root'} -# - TuneCP5: {type: shape, on: 'hist_ttbj.root'} -# - TuneCP5: {type: shape, on: 'hist_ttcc.root'} -# - TuneCP5: {type: shape, on: 'hist_ttLF.root'} -# - TuneCP5: {type: shape, on: 'hist_ttother.root'} -# - lf -# - hf -# - lfstat1 -# - lfstat2 -# - hfstat1 -# - hfstat2 -# - cferr1 -# - cferr2 +# - ttcc_xsec2: {type: const, value: 1.5, on: 'hist_TTLJ_PowhegPythia_ttcc.root'} +# - other_xsec1: {type: const, value: 1.1, on: 'hist_ZJets_M10to50_aMCatNLO.root'} +# - other_xsec2: {type: const, value: 1.1, on: 'hist_ZJets_M50_aMCatNLO.root'} +# - other_xsec3: {type: const, value: 1.1, on: 'hist_WJets_aMCatNLO.root'} +# - other_xsec4: {type: const, value: 1.1, on: 'hist_WW_Pythia.root'} +# - other_xsec5: {type: const, value: 1.1, on: 'hist_WZ_Pythia.root'} +# - other_xsec6: {type: const, value: 1.1, on: 'hist_ZZ_Pythia.root'} +# - other_xsec7: {type: const, value: 1.1, on: 'hist_SingleTop_t_Powheg.root'} +# - other_xsec8: {type: const, value: 1.1, on: 'hist_SingleTop_tW_Powheg.root'} +# - other_xsec9: {type: const, value: 1.1, on: 'hist_SingleTbar_t_Powheg.root'} +# - other_xsec10: {type: const, value: 1.1, on: 'hist_SingleTbar_tW_Powheg.root'} +# - other_xsec11: {type: const, value: 1.1, on: 'hist_ttHbb_PowhegPythia.root'} +# - other_xsec12: {type: const, value: 1.1, on: 'hist_ttW_Madgraph.root'} +# - other_xsec13: {type: const, value: 1.1, on: 'hist_ttZ_Madgraph.root'} + - pu + - muid + - muiso + - mutrg + - elid + - elreco + - elzvtx + - eltrg + - jec + - jer + - lf + - hf + - lfstat1 + - lfstat2 + - hfstat1 + - hfstat2 + - cferr1 + - cferr2 + - prefire + - sw: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttbb.root'} + - sw: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttbj.root'} + - sw: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttcc.root'} + - sw: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttLF.root'} + - sw: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttother.root'} + - sw: {type: shape, on: 'hist_TTJJ_PowhegPythiaBkg.root'} + - sw: {type: shape, on: 'hist_TTLJ_PowhegPythiaBkg.root'} + - sw: {type: shape, on: 'hist_TTLL_PowhegPythiaBkg.root'} +# - ps: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttbb.root'} +# - ps: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttbj.root'} +# - ps: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttcc.root'} +# - ps: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttLF.root'} +# - ps: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttother.root'} +# - ps: {type: shape, on: 'hist_TTJJ_PowhegPythiaBkg.root'} +# - ps: {type: shape, on: 'hist_TTLJ_PowhegPythiaBkg.root'} +# - ps: {type: shape, on: 'hist_TTLL_PowhegPythiaBkg.root'} + - hdamp: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttbb.root'} + - hdamp: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttbj.root'} + - hdamp: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttcc.root'} + - hdamp: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttLF.root'} + - hdamp: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttother.root'} + - hdamp: {type: shape, on: 'hist_TTJJ_PowhegPythiaBkg.root'} + - hdamp: {type: shape, on: 'hist_TTLJ_PowhegPythiaBkg.root'} + - hdamp: {type: shape, on: 'hist_TTLL_PowhegPythiaBkg.root'} +# - pdf: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttbb.root'} +# - pdf: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttbj.root'} +# - pdf: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttcc.root'} +# - pdf: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttlf.root'} +# - pdf: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttother.root'} +# - pdf: {type: shape, on: 'hist_TTJJ_PowhegPythiaBkg.root'} +# - pdf: {type: shape, on: 'hist_TTLJ_PowhegPythiaBkg.root'} +# - pdf: {type: shape, on: 'hist_TTLL_PowhegPythiaBkg.root'} + - tune: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttbb.root'} + - tune: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttbj.root'} + - tune: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttcc.root'} + - tune: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttLF.root'} + - tune: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttother.root'} + - tune: {type: shape, on: 'hist_TTJJ_PowhegPythiaBkg.root'} + - tune: {type: shape, on: 'hist_TTLJ_PowhegPythiaBkg.root'} + - tune: {type: shape, on: 'hist_TTLL_PowhegPythiaBkg.root'} plots: - include: ['histos_ttlj.yml'] + #include: ['histos.yml'] # Basic plot list + include: ['histos_Ch2S7.yml'] + #include: ['test.yml'] # Basic plot list legend: position: [0.18, 0.68, 0.92, 0.89] -# position: [0.18, 0.73, 0.92, 0.89] #For DNN columns: 5 groups: diff --git a/plotIt/configs/config17.yml b/plotIt/configs/config17.yml index dd6ea9b..0f3be03 100644 --- a/plotIt/configs/config17.yml +++ b/plotIt/configs/config17.yml @@ -5,10 +5,10 @@ configuration: experiment: " CMS" #extra-label: "Preliminary" extra-label: "Work in Progress" - root: '' + root: './output/post17' luminosity: 41529 - luminosity-error: 0.00 - #luminosity-error: 0.025 + #luminosity-error: 0.00 + luminosity-error: 0.023 error-fill-style: 3154 error-fill-color: "#ee556270" ratio-fit-error-fill-style: 1001 @@ -21,76 +21,104 @@ configuration: yields-table-numerical-precision-yields: 2 files: - include: ['files17.yml'] + include: ['files17.yml'] # For basic plots +# include: ['files/files17_qcd.yml'] # For QCD region plots +# include: ['files/files17_test.yml'] # Drawing without systematics systematics: # - ttbb_xsec: {type: const, value: 1.055, on: 'hist_ttbb.root'} -# - ttbj_xsec: {type: const, value: 1.055, on: 'hist_ttbj.root'} -# - ttcc_xsec: {type: const, value: 1.055, on: 'hist_ttcc.root'} -# - ttlf_xsec: {type: const, value: 1.055, on: 'hist_ttLF.root'} -# - ttother_xsec: {type: const, value: 1.055, on: 'hist_ttother.root'} -# - ttbkg_xsec: {type: const, value: 1.055, on: 'hist_ttbkg.root'} +# - ttbj_xsec: {type: const, value: 1.055, on: 'hist_TTLJ_PowhegPythia_ttbj.root'} +# - ttcc_xsec: {type: const, value: 1.055, on: 'hist_TTLJ_PowhegPythia_ttcc.root'} +# - ttlf_xsec: {type: const, value: 1.055, on: 'hist_TTLJ_PowhegPythia_ttLF.root'} +# - ttother_xsec: {type: const, value: 1.055, on: 'hist_TTLJ_PowhegPythia_ttother.root'} +# - ttjjbkg_xsec: {type: const, value: 1.055, on: 'hist_TTJJ_PowhegPythiaBkg.root'} +# - ttljbkg_xsec: {type: const, value: 1.055, on: 'hist_TTLJ_PowhegPythiaBkg.root'} +# - ttllbkg_xsec: {type: const, value: 1.055, on: 'hist_TTLL_PowhegPythiaBkg.root'} # - ttbb_xsec2: {type: const, value: 1.3, on: 'hist_ttbb.root'} -# - ttcc_xsec2: {type: const, value: 1.5, on: 'hist_ttcc.root'} -# - other_xsec1: {type: const, value: 1.1, on: 'hist_zjets.root'} -# - other_xsec2: {type: const, value: 1.1, on: 'hist_zjets10to50.root'} -# - other_xsec3: {type: const, value: 1.1, on: 'hist_wjets.root'} -# - other_xsec4: {type: const, value: 1.1, on: 'hist_ww.root'} -# - other_xsec5: {type: const, value: 1.1, on: 'hist_wz.root'} -# - other_xsec6: {type: const, value: 1.1, on: 'hist_zz.root'} -# - other_xsec7: {type: const, value: 1.1, on: 'hist_tchannel.root'} -# - other_xsec8: {type: const, value: 1.1, on: 'hist_tbarchannel.root'} -# - other_xsec9: {type: const, value: 1.1, on: 'hist_tWchannel.root'} -# - other_xsec10: {type: const, value: 1.1, on: 'hist_tbarWchannel.root'} -# - other_xsec11: {type: const, value: 1.1, on: 'hist_ttH.root'} -# - other_xsec12: {type: const, value: 1.1, on: 'hist_ttW.root'} -# - other_xsec13: {type: const, value: 1.1, on: 'hist_ttZ.root'} -# - pu -# - musf -# - musf -# - jec -# - jer -# - scale: {type: shape, on: 'hist_ttbb.root'} -# - scale: {type: shape, on: 'hist_ttbj.root'} -# - scale: {type: shape, on: 'hist_ttcc.root'} -# - scale: {type: shape, on: 'hist_ttLF.root'} -# - scale: {type: shape, on: 'hist_ttother.root'} -# - scale: {type: shape, on: 'hist_ttbkg.root'} -# - scale: {type: shape, on: 'hist_ttH.root'} -# - scale: {type: shape, on: 'hist_ttW.root'} -# - scale: {type: shape, on: 'hist_ttZ.root'} -# - ps: {type: shape, on: 'hist_ttbb.root'} -# - ps: {type: shape, on: 'hist_ttbj.root'} -# - ps: {type: shape, on: 'hist_ttcc.root'} -# - ps: {type: shape, on: 'hist_ttLF.root'} -# - ps: {type: shape, on: 'hist_ttother.root'} -# - ps: {type: shape, on: 'hist_ttbkg.root'} -# - hdamp: {type: shape, on: 'hist_ttbb.root'} -# - hdamp: {type: shape, on: 'hist_ttbj.root'} -# - hdamp: {type: shape, on: 'hist_ttcc.root'} -# - hdamp: {type: shape, on: 'hist_ttLF.root'} -# - hdamp: {type: shape, on: 'hist_ttother.root'} -# - pdf: {type: shape, on: 'hist_ttbb.root'} -# - pdf: {type: shape, on: 'hist_ttbj.root'} -# - pdf: {type: shape, on: 'hist_ttcc.root'} -# - pdf: {type: shape, on: 'hist_ttlf.root'} -# - pdf: {type: shape, on: 'hist_ttother.root'} -# - TuneCP5: {type: shape, on: 'hist_ttbb.root'} -# - TuneCP5: {type: shape, on: 'hist_ttbj.root'} -# - TuneCP5: {type: shape, on: 'hist_ttcc.root'} -# - TuneCP5: {type: shape, on: 'hist_ttLF.root'} -# - TuneCP5: {type: shape, on: 'hist_ttother.root'} -# - lf -# - hf -# - lfstat1 -# - lfstat2 -# - hfstat1 -# - hfstat2 -# - cferr1 -# - cferr2 +# - ttcc_xsec2: {type: const, value: 1.5, on: 'hist_TTLJ_PowhegPythia_ttcc.root'} +# - other_xsec1: {type: const, value: 1.1, on: 'hist_ZJets_M50_aMCatNLOPythia.root'} +# - other_xsec2: {type: const, value: 1.1, on: 'hist_ZJets_M10to50_MadgraphPythia.root'} +# - other_xsec3: {type: const, value: 1.1, on: 'hist_WJetsToLNu_MadgraphPythia.root'} +# - other_xsec4: {type: const, value: 1.1, on: 'hist_WW_Pythia.root'} +# - other_xsec5: {type: const, value: 1.1, on: 'hist_WZ_Pythia.root'} +# - other_xsec6: {type: const, value: 1.1, on: 'hist_ZZ_Pythia.root'} +# - other_xsec7: {type: const, value: 1.1, on: 'hist_SingleTop_t_PowhegPythia.root'} +# - other_xsec8: {type: const, value: 1.1, on: 'hist_SingleTop_tW_PowhegPythia.root'} +# - other_xsec9: {type: const, value: 1.1, on: 'hist_SingleTop_s_aMCatNLOPythia.root'} +# - other_xsec10: {type: const, value: 1.1, on: 'hist_SingleTbar_t_PowhegPythia.root'} +# - other_xsec11: {type: const, value: 1.1, on: 'hist_SingleTbar_tW_PowhegPythia.root'} +# - other_xsec12: {type: const, value: 1.1, on: 'hist_ttHToNonbb_PowhegPythia.root'} +# - other_xsec13: {type: const, value: 1.1, on: 'hist_ttHTobb_PowhegPythia.root'} +# - other_xsec14: {type: const, value: 1.1, on: 'hist_ttWToLNu_aMCatNLOMadspinPythia.root'} +# - other_xsec15: {type: const, value: 1.1, on: 'hist_ttWToQQ_aMCatNLOMadspinPythia.root'} +# - other_xsec15: {type: const, value: 1.1, on: 'hist_ttZToLLNuNu_aMCatNLOMadspinPythia.root'} +# - other_xsec16: {type: const, value: 1.1, on: 'hist_ttZToQQ_aMCatNLOMadspinPythia.root'} + - pu + - muid + - muiso + - mutrg + - elid + - elreco + - elzvtx + - eltrg + - jec + - jer + - lf + - hf + - lfstat1 + - lfstat2 + - hfstat1 + - hfstat2 + - cferr1 + - cferr2 + - prefire + - sw: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttbb.root'} + - sw: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttbj.root'} + - sw: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttcc.root'} + - sw: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttLF.root'} + - sw: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttother.root'} + - sw: {type: shape, on: 'hist_TTJJ_PowhegPythiaBkg.root'} + - sw: {type: shape, on: 'hist_TTLJ_PowhegPythiaBkg.root'} + - sw: {type: shape, on: 'hist_TTLL_PowhegPythiaBkg.root'} + - ps: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttbb.root'} + - ps: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttbj.root'} + - ps: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttcc.root'} + - ps: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttLF.root'} + - ps: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttother.root'} + - ps: {type: shape, on: 'hist_TTJJ_PowhegPythiaBkg.root'} + - ps: {type: shape, on: 'hist_TTLJ_PowhegPythiaBkg.root'} + - ps: {type: shape, on: 'hist_TTLL_PowhegPythiaBkg.root'} + - hdamp: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttbb.root'} + - hdamp: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttbj.root'} + - hdamp: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttcc.root'} + - hdamp: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttLF.root'} + - hdamp: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttother.root'} + - hdamp: {type: shape, on: 'hist_TTJJ_PowhegPythiaBkg.root'} + - hdamp: {type: shape, on: 'hist_TTLJ_PowhegPythiaBkg.root'} + - hdamp: {type: shape, on: 'hist_TTLL_PowhegPythiaBkg.root'} + - pdf: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttbb.root'} + - pdf: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttbj.root'} + - pdf: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttcc.root'} + - pdf: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttLf.root'} + - pdf: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttother.root'} + - pdf: {type: shape, on: 'hist_TTJJ_PowhegPythiaBkg.root'} + - pdf: {type: shape, on: 'hist_TTLJ_PowhegPythiaBkg.root'} + - pdf: {type: shape, on: 'hist_TTLL_PowhegPythiaBkg.root'} + - tune: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttbb.root'} + - tune: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttbj.root'} + - tune: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttcc.root'} + - tune: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttLF.root'} + - tune: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttother.root'} + - tune: {type: shape, on: 'hist_TTJJ_PowhegPythiaBkg.root'} + - tune: {type: shape, on: 'hist_TTLJ_PowhegPythiaBkg.root'} + - tune: {type: shape, on: 'hist_TTLL_PowhegPythiaBkg.root'} plots: - include: ['histos_ttlj.yml'] + #include: ['histos.yml'] # Basic plot list + include: ['histos_Ch2S7.yml'] + # include: ['test.yml'] # Basic plot list +# include: ['histos/histos_qcd.yml'] # QCD region plot list +# include: ['histos/histos_yields.yml'] # nJet hist only legend: position: [0.18, 0.73, 0.92, 0.89] diff --git a/plotIt/configs/config18.yml b/plotIt/configs/config18.yml index 978461b..289753d 100644 --- a/plotIt/configs/config18.yml +++ b/plotIt/configs/config18.yml @@ -5,10 +5,10 @@ configuration: experiment: " CMS" #extra-label: "Preliminary" extra-label: "Work in Progress" - root: '' - luminosity: 59693 - luminosity-error: 0.00 - #luminosity-error: 0.025 + root: './output/rere18' + luminosity: 59741 + #luminosity-error: 0.00 + luminosity-error: 0.025 error-fill-style: 3154 error-fill-color: "#ee556270" ratio-fit-error-fill-style: 1001 @@ -21,79 +21,106 @@ configuration: yields-table-numerical-precision-yields: 2 files: - include: ['files18.yml'] + include: ['files18.yml'] # For basic plots +# include: ['files/files18_qcd.yml'] # For QCD region plots +# include: ['files/files16_test.yml'] # Drawing without systematics systematics: # - ttbb_xsec: {type: const, value: 1.055, on: 'hist_ttbb.root'} -# - ttbj_xsec: {type: const, value: 1.055, on: 'hist_ttbj.root'} -# - ttcc_xsec: {type: const, value: 1.055, on: 'hist_ttcc.root'} -# - ttlf_xsec: {type: const, value: 1.055, on: 'hist_ttLF.root'} -# - ttother_xsec: {type: const, value: 1.055, on: 'hist_ttother.root'} -# - ttbkg_xsec: {type: const, value: 1.055, on: 'hist_ttbkg.root'} +# - ttbj_xsec: {type: const, value: 1.055, on: 'hist_TTLJ_PowhegPythia_ttbj.root'} +# - ttcc_xsec: {type: const, value: 1.055, on: 'hist_TTLJ_PowhegPythia_ttcc.root'} +# - ttlf_xsec: {type: const, value: 1.055, on: 'hist_TTLJ_PowhegPythia_ttLF.root'} +# - ttother_xsec: {type: const, value: 1.055, on: 'hist_TTLJ_PowhegPythia_ttother.root'} +# - ttjjbkg_xsec: {type: const, value: 1.055, on: 'hist_TTJJ_PowhegPythiaBkg.root'} +# - ttljbkg_xsec: {type: const, value: 1.055, on: 'hist_TTLJ_PowhegPythiaBkg.root'} +# - ttllbkg_xsec: {type: const, value: 1.055, on: 'hist_TTLL_PowhegPythiaBkg.root'} # - ttbb_xsec2: {type: const, value: 1.3, on: 'hist_ttbb.root'} -# - ttcc_xsec2: {type: const, value: 1.5, on: 'hist_ttcc.root'} -# - other_xsec1: {type: const, value: 1.1, on: 'hist_zjets.root'} -# - other_xsec2: {type: const, value: 1.1, on: 'hist_zjets10to50.root'} -# - other_xsec3: {type: const, value: 1.1, on: 'hist_wjets.root'} -# - other_xsec4: {type: const, value: 1.1, on: 'hist_ww.root'} -# - other_xsec5: {type: const, value: 1.1, on: 'hist_wz.root'} -# - other_xsec6: {type: const, value: 1.1, on: 'hist_zz.root'} -# - other_xsec7: {type: const, value: 1.1, on: 'hist_tchannel.root'} -# - other_xsec8: {type: const, value: 1.1, on: 'hist_tbarchannel.root'} -# - other_xsec9: {type: const, value: 1.1, on: 'hist_tWchannel.root'} -# - other_xsec10: {type: const, value: 1.1, on: 'hist_tbarWchannel.root'} -# - other_xsec11: {type: const, value: 1.1, on: 'hist_ttH.root'} -# - other_xsec12: {type: const, value: 1.1, on: 'hist_ttW.root'} -# - other_xsec13: {type: const, value: 1.1, on: 'hist_ttZ.root'} -# - pu -# - musf -# - musf -# - jec -# - jer -# - scale: {type: shape, on: 'hist_ttbb.root'} -# - scale: {type: shape, on: 'hist_ttbj.root'} -# - scale: {type: shape, on: 'hist_ttcc.root'} -# - scale: {type: shape, on: 'hist_ttLF.root'} -# - scale: {type: shape, on: 'hist_ttother.root'} -# - scale: {type: shape, on: 'hist_ttbkg.root'} -# - scale: {type: shape, on: 'hist_ttH.root'} -# - scale: {type: shape, on: 'hist_ttW.root'} -# - scale: {type: shape, on: 'hist_ttZ.root'} -# - ps: {type: shape, on: 'hist_ttbb.root'} -# - ps: {type: shape, on: 'hist_ttbj.root'} -# - ps: {type: shape, on: 'hist_ttcc.root'} -# - ps: {type: shape, on: 'hist_ttLF.root'} -# - ps: {type: shape, on: 'hist_ttother.root'} -# - ps: {type: shape, on: 'hist_ttbkg.root'} -# - hdamp: {type: shape, on: 'hist_ttbb.root'} -# - hdamp: {type: shape, on: 'hist_ttbj.root'} -# - hdamp: {type: shape, on: 'hist_ttcc.root'} -# - hdamp: {type: shape, on: 'hist_ttLF.root'} -# - hdamp: {type: shape, on: 'hist_ttother.root'} -# - pdf: {type: shape, on: 'hist_ttbb.root'} -# - pdf: {type: shape, on: 'hist_ttbj.root'} -# - pdf: {type: shape, on: 'hist_ttcc.root'} -# - pdf: {type: shape, on: 'hist_ttlf.root'} -# - pdf: {type: shape, on: 'hist_ttother.root'} -# - TuneCP5: {type: shape, on: 'hist_ttbb.root'} -# - TuneCP5: {type: shape, on: 'hist_ttbj.root'} -# - TuneCP5: {type: shape, on: 'hist_ttcc.root'} -# - TuneCP5: {type: shape, on: 'hist_ttLF.root'} -# - TuneCP5: {type: shape, on: 'hist_ttother.root'} -# - lf -# - hf -# - lfstat1 -# - lfstat2 -# - hfstat1 -# - hfstat2 -# - cferr1 -# - cferr2 +# - ttcc_xsec2: {type: const, value: 1.5, on: 'hist_TTLJ_PowhegPythia_ttcc.root'} +# - other_xsec1: {type: const, value: 1.1, on: 'hist_ZJets_M50_aMCatNLOPythia.root'} +# - other_xsec2: {type: const, value: 1.1, on: 'hist_ZJets_M10to50_MadgraphPythia.root'} +# - other_xsec3: {type: const, value: 1.1, on: 'hist_WJetsToLNu_MadgraphPythia.root'} +# - other_xsec4: {type: const, value: 1.1, on: 'hist_WW_Pythia.root'} +# - other_xsec5: {type: const, value: 1.1, on: 'hist_WZ_Pythia.root'} +# - other_xsec6: {type: const, value: 1.1, on: 'hist_ZZ_Pythia.root'} +# - other_xsec7: {type: const, value: 1.1, on: 'hist_SingleTop_t_PowhegPythia.root'} +# - other_xsec8: {type: const, value: 1.1, on: 'hist_SingleTop_tW_PowhegPythia.root'} +# - other_xsec9: {type: const, value: 1.1, on: 'hist_SingleTop_s_aMCatNLOPythia.root'} +# - other_xsec10: {type: const, value: 1.1, on: 'hist_SingleTbar_t_PowhegPythia.root'} +# - other_xsec11: {type: const, value: 1.1, on: 'hist_SingleTbar_tW_PowhegPythia.root'} +# - other_xsec12: {type: const, value: 1.1, on: 'hist_ttHToNonbb_PowhegPythia.root'} +# - other_xsec13: {type: const, value: 1.1, on: 'hist_ttHTobb_PowhegPythia.root'} +# - other_xsec14: {type: const, value: 1.1, on: 'hist_ttWToLNu_aMCatNLOMadspinPythia.root'} +# - other_xsec15: {type: const, value: 1.1, on: 'hist_ttWToQQ_aMCatNLOMadspinPythia.root'} +# - other_xsec15: {type: const, value: 1.1, on: 'hist_ttZToLLNuNu_aMCatNLOMadspinPythia.root'} +# - other_xsec16: {type: const, value: 1.1, on: 'hist_ttZToQQ_aMCatNLOMadspinPythia.root'} + - pu + - muid + - muiso + - mutrg + - elid + - elreco + - elzvtx + - eltrg + - jec + - jer + - lf + - hf + - lfstat1 + - lfstat2 + - hfstat1 + - hfstat2 + - cferr1 + - cferr2 + - sw: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttbb.root'} + - sw: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttbj.root'} + - sw: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttcc.root'} + - sw: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttLF.root'} + - sw: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttother.root'} + - sw: {type: shape, on: 'hist_TTJJ_PowhegPythiaBkg.root'} + - sw: {type: shape, on: 'hist_TTLJ_PowhegPythiaBkg.root'} + - sw: {type: shape, on: 'hist_TTLL_PowhegPythiaBkg.root'} + - ps: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttbb.root'} + - ps: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttbj.root'} + - ps: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttcc.root'} + - ps: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttLF.root'} + - ps: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttother.root'} + - ps: {type: shape, on: 'hist_TTJJ_PowhegPythiaBkg.root'} + - ps: {type: shape, on: 'hist_TTLJ_PowhegPythiaBkg.root'} + - ps: {type: shape, on: 'hist_TTLL_PowhegPythiaBkg.root'} + - hdamp: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttbb.root'} + - hdamp: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttbj.root'} + - hdamp: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttcc.root'} + - hdamp: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttLF.root'} + - hdamp: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttother.root'} + - hdamp: {type: shape, on: 'hist_TTJJ_PowhegPythiaBkg.root'} + - hdamp: {type: shape, on: 'hist_TTLJ_PowhegPythiaBkg.root'} + - hdamp: {type: shape, on: 'hist_TTLL_PowhegPythiaBkg.root'} + - pdf: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttbb.root'} + - pdf: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttbj.root'} + - pdf: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttcc.root'} + - pdf: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttLf.root'} + - pdf: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttother.root'} + - pdf: {type: shape, on: 'hist_TTJJ_PowhegPythiaBkg.root'} + - pdf: {type: shape, on: 'hist_TTLJ_PowhegPythiaBkg.root'} + - pdf: {type: shape, on: 'hist_TTLL_PowhegPythiaBkg.root'} + - tune: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttbb.root'} + - tune: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttbj.root'} + - tune: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttcc.root'} + - tune: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttLF.root'} + - tune: {type: shape, on: 'hist_TTLJ_PowhegPythia_ttother.root'} + - tune: {type: shape, on: 'hist_TTJJ_PowhegPythiaBkg.root'} + - tune: {type: shape, on: 'hist_TTLJ_PowhegPythiaBkg.root'} + - tune: {type: shape, on: 'hist_TTLL_PowhegPythiaBkg.root'} plots: - include: ['histos_ttlj.yml'] + #include: ['histos.yml'] # Basic plot list + # include: ['histos_Ch2S9.yml'] # Basic plot list + include: ['histos_merge.yml'] # Basic plot list +# include: ['histos/histos_qcd.yml'] # QCD region plot list +# include: ['histos/histos_yields.yml'] # nJet hist only legend: - position: [0.18, 0.73, 0.92, 0.89] #For DNN + position: [0.18, 0.73, 0.92, 0.89] columns: 5 groups: diff --git a/plotIt/configs/files.yml b/plotIt/configs/files.yml deleted file mode 100644 index acf30bc..0000000 --- a/plotIt/configs/files.yml +++ /dev/null @@ -1,1287 +0,0 @@ -'root16/hist_DataSingleMu.root': - type: data - legend: 'Data' - pretty-name: 'DataMu' - marker-size: 0.6 - group: GData - -'root16/hist_DataSingleEG.root': - type: data - legend: 'Data' - pretty-name: 'DataEG' - marker-size: 0.6 - group: GData - -'root16/hist_ttZ_Madgraph.root': - type: mc - pretty-name: 'ttZ_Madgraph' - cross-section: 0.2529 - generated-events: 3685785.0 - fill-color: '#ff66ff' - group: GttX - order: 8 - scale: 0.261929067258 - -'root16/hist_ttW_Madgraph.root': - type: mc - pretty-name: 'ttW_Madgraph' - cross-section: 0.2043 - generated-events: 2676676.0 - fill-color: '#ff66ff' - group: GttX - order: 7 - scale: 0.261929067258 - -'root16/hist_ttHbb_PowhegPythia.root': - type: mc - pretty-name: 'ttHbb_PowhegPythia' - cross-section: 0.2923 - generated-events: 3772592.0 - fill-color: '#ff66ff' - group: GttX - order: 6 - scale: 0.261929067258 - -'root16/hist_SingleTbar_t_Powheg.root': - type: mc - pretty-name: 'SingleTbar_t_Powheg' - cross-section: 80.95 - generated-events: 38811017.0 - fill-color: '#990099' - group: GSingleT - order: 10 - scale: 0.261929067258 - -'root16/hist_SingleTbar_tW_Powheg.root': - type: mc - pretty-name: 'SingleTbar_tW_Powheg' - cross-section: 35.85 - generated-events: 6933094.0 - fill-color: '#990099' - group: GSingleT - order: 12 - scale: 0.261929067258 - -'root16/hist_SingleTop_t_Powheg.root': - type: mc - pretty-name: 'SingleTop_t_Powheg' - cross-section: 136.02 - generated-events: 67240808.0 - fill-color: '#990099' - group: GSingleT - order: 9 - scale: 0.261929067258 - -'root16/hist_SingleTop_tW_Powheg.root': - type: mc - pretty-name: 'SingleTop_tW_Powheg' - cross-section: 35.85 - generated-events: 6952830.0 - fill-color: '#990099' - group: GSingleT - order: 11 - scale: 0.261929067258 - -'root16/hist_ZZ_Pythia.root': - type: mc - pretty-name: 'ZZ_Pythia' - cross-section: 16.523 - generated-events: 1988098.0 - fill-color: '#00cccc' - group: GVV - order: 15 - scale: 0.261929067258 - -'root16/hist_ZJets_M50_aMCatNLO.root': - type: mc - pretty-name: 'ZJets_M50_aMCatNLO' - cross-section: 6225.42 - generated-events: 81781064.0 - fill-color: '#000099' - group: GZJets - order: 16 - scale: 0.261929067258 - -'root16/hist_ZJets_M10to50_aMCatNLO.root': - type: mc - pretty-name: 'ZJets_M10to50_aMCatNLO' - cross-section: 18610.0 - generated-events: 99831562.0 - fill-color: '#000099' - group: GZJets - order: 17 - scale: 0.261929067258 - -'root16/hist_WZ_Pythia.root': - type: mc - pretty-name: 'WZ_Pythia' - cross-section: 47.13 - generated-events: 3995828.0 - fill-color: '#00cccc' - group: GVV - order: 14 - scale: 0.261929067258 - -'root16/hist_WW_Pythia.root': - type: mc - pretty-name: 'WW_Pythia' - cross-section: 118.7 - generated-events: 7981136.0 - fill-color: '#00cccc' - group: GVV - order: 13 - scale: 0.261929067258 - -'root16/hist_WJets_aMCatNLO.root': - type: mc - pretty-name: 'WJets_aMCatNLO' - cross-section: 61526.7 - generated-events: 177578225.0 - fill-color: '#ff9933' - group: GWJets - legend: 'WJets' - order: 18 - scale: 0.261929067258 - -'root16/hist_TT_PowhegPythiaBkg.root': - type: mc - pretty-name: 'TT_PowhegPythiaBkg' - cross-section: 831.76 - generated-events: 76837652.0 - fill-color: '#ff6666' - group: GttBkg - order: 5 - scale: 0.261929067258 - -'root16/hist_TTLJ_PowhegPythia_ttother.root': - type: mc - pretty-name: 'TTLJ_PowhegPythia_ttother' - cross-section: 365.34 - generated-events: 152627564.0 - fill-color: '#ff6666' - group: GttBkg - order: 4 - scale: 0.261929067258 - -'root16/hist_TTLJ_PowhegPythia_ttcc.root': - type: mc - pretty-name: 'TTLJ_PowhegPythia_ttcc' - cross-section: 365.34 - generated-events: 152627564.0 - fill-color: '#990000' - group: Gttcc - legend: 'ttcc' - order: 2 - scale: 0.261929067258 - -'root16/hist_TTLJ_PowhegPythia_ttbj.root': - type: mc - pretty-name: 'TTLJ_PowhegPythia_ttbj' - cross-section: 365.34 - generated-events: 152627564.0 - fill-color: '#660000' - group: Gttbj - legend: 'ttbj' - order: 1 - scale: 0.261929067258 - -'root16/hist_TTLJ_PowhegPythia_ttbb.root': - type: mc - pretty-name: 'TTLJ_PowhegPythia_ttbb' - cross-section: 365.34 - generated-events: 152627564.0 - fill-color: '#330000' - group: Gttbb - legend: 'ttbb' - order: 0 - scale: 0.261929067258 - -'root16/hist_TTLJ_PowhegPythia_ttLF.root': - type: mc - pretty-name: 'TTLJ_PowhegPythia_ttLF' - cross-section: 365.34 - generated-events: 152627564.0 - fill-color: '#cc0000' - group: GttLF - legend: 'ttLF' - order: 3 - scale: 0.261929067258 - -'root16/hist_QCD_Pt-15to20_MuEnriched.root': - type: mc - pretty-name: 'QCD_Pt-15to20_MuEnriched' - cross-section: 3819570.0 - generated-events: 4141251.0 - fill-color: '#d0cfd4' - group: GQCD - order: 19 - scale: 0.261929067258 - -'root16/hist_QCD_Pt-20to30_MuEnriched.root': - type: mc - pretty-name: 'QCD_Pt-20to30_MuEnriched' - cross-section: 2960198.4 - generated-events: 31475157.0 - fill-color: '#d0cfd4' - group: GQCD - order: 20 - scale: 0.261929067258 - -'root16/hist_QCD_Pt-50to80_MuEnriched.root': - type: mc - pretty-name: 'QCD_Pt-50to80_MuEnriched' - cross-section: 437504.1 - generated-events: 19806915.0 - fill-color: '#d0cfd4' - group: GQCD - order: 21 - scale: 0.261929067258 - -'root16/hist_QCD_Pt-80to120_MuEnriched.root': - type: mc - pretty-name: 'QCD_Pt-80to120_MuEnriched' - cross-section: 106033.6648 - generated-events: 13669116.0 - fill-color: '#d0cfd4' - group: GQCD - order: 22 - scale: 0.261929067258 - -'root16/hist_QCD_Pt-120to170_MuEnriched.root': - type: mc - pretty-name: 'QCD_Pt-120to170_MuEnriched' - cross-section: 25190.51514 - generated-events: 11938140.0 - fill-color: '#d0cfd4' - group: GQCD - order: 23 - scale: 0.261929067258 - -'root16/hist_QCD_Pt-170to300_MuEnriched.root': - type: mc - pretty-name: 'QCD_Pt-170to300_MuEnriched' - cross-section: 8654.49315 - generated-events: 7947159.0 - fill-color: '#d0cfd4' - group: GQCD - order: 24 - scale: 0.261929067258 - -'root16/hist_QCD_Pt-300to470_MuEnriched.root': - type: mc - pretty-name: 'QCD_Pt-300to470_MuEnriched' - cross-section: 797.35269 - generated-events: 16452588.0 - fill-color: '#d0cfd4' - group: GQCD - order: 25 - scale: 0.261929067258 - -'root16/hist_QCD_Pt-470to600_MuEnriched.root': - type: mc - pretty-name: 'QCD_Pt-470to600_MuEnriched' - cross-section: 79.02553776 - generated-events: 5663755.0 - fill-color: '#d0cfd4' - group: GQCD - order: 26 - scale: 0.261929067258 - -'root16/hist_QCD_Pt-600to800_MuEnriched.root': - type: mc - pretty-name: 'QCD_Pt-600to800_MuEnriched' - cross-section: 25.09505908 - generated-events: 5971175.0 - fill-color: '#d0cfd4' - group: GQCD - order: 27 - scale: 0.261929067258 - -'root16/hist_QCD_Pt-800to1000_MuEnriched.root': - type: mc - pretty-name: 'QCD_Pt-800to1000_MuEnriched' - cross-section: 4.707368272 - generated-events: 5838541.0 - fill-color: '#d0cfd4' - group: GQCD - order: 28 - scale: 0.261929067258 - -'root16/hist_QCD_Pt-1000toInf_MuEnriched.root': - type: mc - pretty-name: 'QCD_Pt-1000toInf_MuEnriched' - cross-section: 1.62131692 - generated-events: 9609821.0 - fill-color: '#d0cfd4' - group: GQCD - order: 29 - scale: 0.261929067258 - -'root16/hist_QCD_Pt-20to30_EMEnriched.root': - type: mc - pretty-name: 'QCD_Pt-20to30_EMEnriched' - cross-section: 5352960.0 - generated-events: 9218954.0 - fill-color: '#d0cfd4' - group: GQCD - order: 30 - scale: 0.261929067258 - -'root16/hist_QCD_Pt-30to50_EMEnriched.root': - type: mc - pretty-name: 'QCD_Pt-30to50_EMEnriched' - cross-section: 9928000.0 - generated-events: 6768384.0 - fill-color: '#d0cfd4' - group: GQCD - order: 31 - scale: 0.261929067258 - -'root16/hist_QCD_Pt-50to80_EMEnriched.root': - type: mc - pretty-name: 'QCD_Pt-50to80_EMEnriched' - cross-section: 2890800.0 - generated-events: 23474171.0 - fill-color: '#d0cfd4' - group: GQCD - order: 32 - scale: 0.261929067258 - -'root16/hist_QCD_Pt-80to120_EMEnriched.root': - type: mc - pretty-name: 'QCD_Pt-80to120_EMEnriched' - cross-section: 350000.0 - generated-events: 41853504.0 - fill-color: '#d0cfd4' - group: GQCD - order: 33 - scale: 0.261929067258 - -'root16/hist_QCD_Pt-120to170_EMEnriched.root': - type: mc - pretty-name: 'QCD_Pt-120to170_EMEnriched' - cross-section: 62964.0 - generated-events: 35817281.0 - fill-color: '#d0cfd4' - group: GQCD - order: 34 - scale: 0.261929067258 - -'root16/hist_QCD_Pt-170to300_EMEnriched.root': - type: mc - pretty-name: 'QCD_Pt-170to300_EMEnriched' - cross-section: 18810.0 - generated-events: 11540163.0 - fill-color: '#d0cfd4' - group: GQCD - order: 35 - scale: 0.261929067258 - -'root16/hist_QCD_Pt-300toInf_EMEnriched.root': - type: mc - pretty-name: 'QCD_Pt-300toInf_EMEnriched' - cross-section: 1350.0 - generated-events: 7373633.0 - fill-color: '#d0cfd4' - group: GQCD - order: 36 - scale: 0.261929067258 - -'root17/hist_DataSingleMu.root': - type: data - legend: 'Data' - pretty-name: 'DataMu' - marker-size: 0.6 - group: GData - -'root17/hist_DataSingleEG.root': - type: data - legend: 'Data' - pretty-name: 'DataEG' - marker-size: 0.6 - group: GData - -'root17/hist_ttZToQQ_aMCatNLOMadspinPythia.root': - type: mc - pretty-name: 'ttZToQQ_aMCatNLOMadspinPythia' - cross-section: 0.5297 - generated-events: 356286.0 - fill-color: '#ff66ff' - group: GttX - order: 12 - scale: 0.302813101557 - -'root17/hist_ttZToLLNuNu_aMCatNLOMadspinPythia.root': - type: mc - pretty-name: 'ttZToLLNuNu_aMCatNLOMadspinPythia' - cross-section: 0.2529 - generated-events: 3570720.0 - fill-color: '#ff66ff' - group: GttX - order: 13 - scale: 0.302813101557 - -'root17/hist_ttWToQQ_aMCatNLOMadspinPythia.root': - type: mc - pretty-name: 'ttWToQQ_aMCatNLOMadspinPythia' - cross-section: 0.4062 - generated-events: 441560.0 - fill-color: '#ff66ff' - group: GttX - order: 10 - scale: 0.302813101557 - -'root17/hist_ttWToLNu_aMCatNLOMadspinPythia.root': - type: mc - pretty-name: 'ttWToLNu_aMCatNLOMadspinPythia' - cross-section: 0.2043 - generated-events: 2686141.0 - fill-color: '#ff66ff' - group: GttX - order: 11 - scale: 0.302813101557 - -'root17/hist_ttHTobb_PowhegPythia.root': - type: mc - pretty-name: 'ttHTobb_PowhegPythia' - cross-section: 0.2923 - generated-events: 7833734.0 - fill-color: '#ff66ff' - group: GttX - order: 8 - scale: 0.302813101557 - -'root17/hist_ttHToNonbb_PowhegPythia.root': - type: mc - pretty-name: 'ttHToNonbb_PowhegPythia' - cross-section: 0.2151 - generated-events: 7814711.0 - fill-color: '#ff66ff' - group: GttX - order: 9 - scale: 0.302813101557 - -'root17/hist_ZZ_Pythia.root': - type: mc - pretty-name: 'ZZ_Pythia' - cross-section: 16.523 - generated-events: 1949768.0 - fill-color: '#00cccc' - group: GVV - order: 21 - scale: 0.302813101557 - -'root17/hist_ZJets_M50_aMCatNLOPythia.root': - type: mc - pretty-name: 'ZJets_M50_aMCatNLOPythia' - cross-section: 6225.42 - generated-events: 123485957.0 - fill-color: '#000099' - group: GZJets - order: 22 - scale: 0.302813101557 - -'root17/hist_ZJets_M10to50_MadgraphPythia.root': - type: mc - pretty-name: 'ZJets_M10to50_MadgraphPythia' - cross-section: 18610.0 - generated-events: 39489654.0 - fill-color: '#000099' - group: GZJets - order: 23 - scale: 0.302813101557 - -'root17/hist_WZ_Pythia.root': - type: mc - pretty-name: 'WZ_Pythia' - cross-section: 47.13 - generated-events: 3928630.0 - fill-color: '#00cccc' - group: GVV - order: 20 - scale: 0.302813101557 - -'root17/hist_WW_Pythia.root': - type: mc - pretty-name: 'WW_Pythia' - cross-section: 118.7 - generated-events: 7791498.0 - fill-color: '#00cccc' - group: GVV - order: 19 - scale: 0.302813101557 - -'root17/hist_WJetsToLNu_MadgraphPythia.root': - type: mc - pretty-name: 'WJetsToLNu_MadgraphPythia' - cross-section: 61526.7 - generated-events: 77631180.0 - fill-color: '#ff9933' - group: GWJets - legend: 'WJets' - order: 24 - scale: 0.302813101557 - -'root17/hist_TTLL_PowhegPythiaBkg.root': - type: mc - pretty-name: 'TTLL_PowhegPythiaBkg' - cross-section: 88.29 - generated-events: 68595608.0 - fill-color: '#ff6666' - group: GttBkg - order: 5 - scale: 0.302813101557 - -'root17/hist_TTLJ_PowhegPythia_ttother.root': - type: mc - pretty-name: 'TTLJ_PowhegPythia_ttother' - cross-section: 365.34 - generated-events: 109124472.0 - fill-color: '#ff6666' - group: GttBkg - order: 4 - scale: 0.302813101557 - -'root17/hist_TTLJ_PowhegPythia_ttcc.root': - type: mc - pretty-name: 'TTLJ_PowhegPythia_ttcc' - cross-section: 365.34 - generated-events: 109124472.0 - fill-color: '#990000' - group: Gttcc - legend: 'ttcc' - order: 2 - scale: 0.302813101557 - -'root17/hist_TTLJ_PowhegPythia_ttbj.root': - type: mc - pretty-name: 'TTLJ_PowhegPythia_ttbj' - cross-section: 365.34 - generated-events: 109124472.0 - fill-color: '#660000' - group: Gttbj - legend: 'ttbj' - order: 1 - scale: 0.302813101557 - -'root17/hist_TTLJ_PowhegPythia_ttbb.root': - type: mc - pretty-name: 'TTLJ_PowhegPythia_ttbb' - cross-section: 365.34 - generated-events: 109124472.0 - fill-color: '#330000' - group: Gttbb - legend: 'ttbb' - order: 0 - scale: 0.302813101557 - -'root17/hist_TTLJ_PowhegPythia_ttLF.root': - type: mc - pretty-name: 'TTLJ_PowhegPythia_ttLF' - cross-section: 365.34 - generated-events: 109124472.0 - fill-color: '#cc0000' - group: GttLF - legend: 'ttLF' - order: 3 - scale: 0.302813101557 - -'root17/hist_TTLJ_PowhegPythiaBkg.root': - type: mc - pretty-name: 'TTLJ_PowhegPythiaBkg' - cross-section: 365.34 - generated-events: 109124472.0 - fill-color: '#ff6666' - group: GttBkg - order: 6 - scale: 0.302813101557 - -'root17/hist_TTJJ_PowhegPythiaBkg.root': - type: mc - pretty-name: 'TTJJ_PowhegPythiaBkg' - cross-section: 377.96 - generated-events: 129211204.0 - fill-color: '#ff6666' - group: GttBkg - order: 7 - scale: 0.302813101557 - -'root17/hist_SingleTop_t_PowhegPythia.root': - type: mc - pretty-name: 'SingleTop_t_PowhegPythia' - cross-section: 136.02 - generated-events: 5982064.0 - fill-color: '#990099' - group: GSingleT - order: 14 - scale: 0.302813101557 - -'root17/hist_SingleTop_tW_PowhegPythia.root': - type: mc - pretty-name: 'SingleTop_tW_PowhegPythia' - cross-section: 35.85 - generated-events: 7884388.0 - fill-color: '#990099' - group: GSingleT - order: 15 - scale: 0.302813101557 - -'root17/hist_SingleTop_s_aMCatNLOPythia.root': - type: mc - pretty-name: 'SingleTop_s_aMCatNLOPythia' - cross-section: 3.36 - generated-events: 6185062.0 - fill-color: '#990099' - group: GSingleT - order: 16 - scale: 0.302813101557 - -'root17/hist_SingleTbar_t_PowhegPythia.root': - type: mc - pretty-name: 'SingleTbar_t_PowhegPythia' - cross-section: 80.95 - generated-events: 3675910.0 - fill-color: '#990099' - group: GSingleT - order: 17 - scale: 0.302813101557 - -'root17/hist_SingleTbar_tW_PowhegPythia.root': - type: mc - pretty-name: 'SingleTbar_tW_PowhegPythia' - cross-section: 35.85 - generated-events: 7686032.0 - fill-color: '#990099' - group: GSingleT - order: 18 - scale: 0.302813101557 - -'root17/hist_QCD_Pt-15to20_MuEnriched.root': - type: mc - pretty-name: 'QCD_Pt-15to20_MuEnriched' - cross-section: 3819570.0 - generated-events: 5859904.0 - fill-color: '#d0cfd4' - group: GQCD - order: 29 - scale: 0.302813101557 - -'root17/hist_QCD_Pt-20to30_MuEnriched.root': - type: mc - pretty-name: 'QCD_Pt-20to30_MuEnriched' - cross-section: 2960198.4 - generated-events: 28213684.0 - fill-color: '#d0cfd4' - group: GQCD - order: 30 - scale: 0.302813101557 - -'root17/hist_QCD_Pt-50to80_MuEnriched.root': - type: mc - pretty-name: 'QCD_Pt-50to80_MuEnriched' - cross-section: 437504.1 - generated-events: 24068613.0 - fill-color: '#d0cfd4' - group: GQCD - order: 31 - scale: 0.302813101557 - -'root17/hist_QCD_Pt-80to120_MuEnriched.root': - type: mc - pretty-name: 'QCD_Pt-80to120_MuEnriched' - cross-section: 106033.6648 - generated-events: 23248995.0 - fill-color: '#d0cfd4' - group: GQCD - order: 32 - scale: 0.302813101557 - -'root17/hist_QCD_Pt-120to170_MuEnriched.root': - type: mc - pretty-name: 'QCD_Pt-120to170_MuEnriched' - cross-section: 25190.51514 - generated-events: 20774848.0 - fill-color: '#d0cfd4' - group: GQCD - order: 33 - scale: 0.302813101557 - -'root17/hist_QCD_Pt-170to300_MuEnriched.root': - type: mc - pretty-name: 'QCD_Pt-170to300_MuEnriched' - cross-section: 8654.49315 - generated-events: 46170668.0 - fill-color: '#d0cfd4' - group: GQCD - order: 34 - scale: 0.302813101557 - -'root17/hist_QCD_Pt-300to470_MuEnriched.root': - type: mc - pretty-name: 'QCD_Pt-300to470_MuEnriched' - cross-section: 797.35269 - generated-events: 17744779.0 - fill-color: '#d0cfd4' - group: GQCD - order: 35 - scale: 0.302813101557 - -'root17/hist_QCD_Pt-470to600_MuEnriched.root': - type: mc - pretty-name: 'QCD_Pt-470to600_MuEnriched' - cross-section: 79.02553776 - generated-events: 24243589.0 - fill-color: '#d0cfd4' - group: GQCD - order: 36 - scale: 0.302813101557 - -'root17/hist_QCD_Pt-600to800_MuEnriched.root': - type: mc - pretty-name: 'QCD_Pt-600to800_MuEnriched' - cross-section: 25.09505908 - generated-events: 17263676.0 - fill-color: '#d0cfd4' - group: GQCD - order: 37 - scale: 0.302813101557 - -'root17/hist_QCD_Pt-800to1000_MuEnriched.root': - type: mc - pretty-name: 'QCD_Pt-800to1000_MuEnriched' - cross-section: 4.707368272 - generated-events: 17114527.0 - fill-color: '#d0cfd4' - group: GQCD - order: 38 - scale: 0.302813101557 - -'root17/hist_QCD_Pt-1000toInf_MuEnriched.root': - type: mc - pretty-name: 'QCD_Pt-1000toInf_MuEnriched' - cross-section: 1.621311692 - generated-events: 11596693.0 - fill-color: '#d0cfd4' - group: GQCD - order: 39 - scale: 0.302813101557 - -'root17/hist_QCD_Pt-15to20_EMEnriched.root': - type: mc - pretty-name: 'QCD_Pt-15to20_EMEnriched' - cross-section: 2302200.0 - generated-events: 11215220.0 - fill-color: '#d0cfd4' - group: GQCD - order: 40 - scale: 0.302813101557 - -'root17/hist_QCD_Pt-20to30_EMEnriched.root': - type: mc - pretty-name: 'QCD_Pt-20to30_EMEnriched' - cross-section: 5352960.0 - generated-events: 11212810.0 - fill-color: '#d0cfd4' - group: GQCD - order: 41 - scale: 0.302813101557 - -'root17/hist_QCD_Pt-30to50_EMEnriched.root': - type: mc - pretty-name: 'QCD_Pt-30to50_EMEnriched' - cross-section: 9928000.0 - generated-events: 14766010.0 - fill-color: '#d0cfd4' - group: GQCD - order: 42 - scale: 0.302813101557 - -'root17/hist_QCD_Pt-50to80_EMEnriched.root': - type: mc - pretty-name: 'QCD_Pt-50to80_EMEnriched' - cross-section: 2890800.0 - generated-events: 10477146.0 - fill-color: '#d0cfd4' - group: GQCD - order: 43 - scale: 0.302813101557 - -'root17/hist_QCD_Pt-80to120_EMEnriched.root': - type: mc - pretty-name: 'QCD_Pt-80to120_EMEnriched' - cross-section: 350000.0 - generated-events: 9104852.0 - fill-color: '#d0cfd4' - group: GQCD - order: 44 - scale: 0.302813101557 - -'root17/hist_QCD_Pt-120to170_EMEnriched.root': - type: mc - pretty-name: 'QCD_Pt-120to170_EMEnriched' - cross-section: 62964.0 - generated-events: 8515107.0 - fill-color: '#d0cfd4' - group: GQCD - order: 45 - scale: 0.302813101557 - -'root17/hist_QCD_Pt-300toInf_EMEnriched.root': - type: mc - pretty-name: 'QCD_Pt-300toInf_EMEnriched' - cross-section: 1350.0 - generated-events: 2874295.0 - fill-color: '#d0cfd4' - group: GQCD - order: 46 - scale: 0.302813101557 - -'root18/hist_DataSingleMu.root': - type: data - legend: 'Data' - pretty-name: 'DataMu' - marker-size: 0.6 - group: GData - -'root18/hist_DataSingleEG.root': - type: data - legend: 'Data' - pretty-name: 'DataEG' - marker-size: 0.6 - group: GData - -'root18/hist_ttZToQQ_aMCatNLOMadspinPythia.root': - type: mc - pretty-name: 'ttZToQQ_aMCatNLOMadspinPythia' - cross-section: 0.5297 - generated-events: 355226.0 - fill-color: '#ff66ff' - group: GttX - order: 12 - scale: 0.435257831185 - -'root18/hist_ttZToLLNuNu_aMCatNLOMadspinPythia.root': - type: mc - pretty-name: 'ttZToLLNuNu_aMCatNLOMadspinPythia' - cross-section: 0.2529 - generated-events: 6274046.0 - fill-color: '#ff66ff' - group: GttX - order: 13 - scale: 0.435257831185 - -'root18/hist_ttWToQQ_aMCatNLOMadspinPythia.root': - type: mc - pretty-name: 'ttWToQQ_aMCatNLOMadspinPythia' - cross-section: 0.2043 - generated-events: 458226.0 - fill-color: '#ff66ff' - group: GttX - order: 10 - scale: 0.435257831185 - -'root18/hist_ttWToLNu_aMCatNLOMadspinPythia.root': - type: mc - pretty-name: 'ttWToLNu_aMCatNLOMadspinPythia' - cross-section: 0.2043 - generated-events: 2686095.0 - fill-color: '#ff66ff' - group: GttX - order: 11 - scale: 0.435257831185 - -'root18/hist_ttHTobb_PowhegPythia.root': - type: mc - pretty-name: 'ttHTobb_PowhegPythia' - cross-section: 0.2923 - generated-events: 11590377.0 - fill-color: '#ff66ff' - group: GttX - order: 8 - scale: 0.435257831185 - -'root18/hist_ttHToNonbb_PowhegPythia.root': - type: mc - pretty-name: 'ttHToNonbb_PowhegPythia' - cross-section: 0.2151 - generated-events: 7368333.0 - fill-color: '#ff66ff' - group: GttX - order: 9 - scale: 0.435257831185 - -'root18/hist_ZZ_Pythia.root': - type: mc - pretty-name: 'ZZ_Pythia' - cross-section: 16.523 - generated-events: 1979000.0 - fill-color: '#00cccc' - group: GVV - order: 21 - scale: 0.435257831185 - -'root18/hist_ZJets_M50_aMCatNLOPythia.root': - type: mc - pretty-name: 'ZJets_M50_aMCatNLOPythia' - cross-section: 6225.42 - generated-events: 100114403.0 - fill-color: '#000099' - group: GZJets - order: 22 - scale: 0.435257831185 - -'root18/hist_ZJets_M10to50_MadgraphPythia.root': - type: mc - pretty-name: 'ZJets_M10to50_MadgraphPythia' - cross-section: 18610.0 - generated-events: 39360792.0 - fill-color: '#000099' - group: GZJets - order: 23 - scale: 0.435257831185 - -'root18/hist_WZ_Pythia.root': - type: mc - pretty-name: 'WZ_Pythia' - cross-section: 47.13 - generated-events: 3885000.0 - fill-color: '#00cccc' - group: GVV - order: 20 - scale: 0.435257831185 - -'root18/hist_WW_Pythia.root': - type: mc - pretty-name: 'WW_Pythia' - cross-section: 118.7 - generated-events: 7850000.0 - fill-color: '#00cccc' - group: GVV - order: 19 - scale: 0.435257831185 - -'root18/hist_WJetsToLNu_MadgraphPythia.root': - type: mc - pretty-name: 'WJetsToLNu_MadgraphPythia' - cross-section: 61526.7 - generated-events: 70966439.0 - fill-color: '#ff9933' - group: GWJets - legend: 'WJets' - order: 24 - scale: 0.435257831185 - -'root18/hist_TTLL_PowhegPythiaBkg.root': - type: mc - pretty-name: 'TTLL_PowhegPythiaBkg' - cross-section: 88.29 - generated-events: 63791484.0 - fill-color: '#ff6666' - group: GttBkg - order: 5 - scale: 0.435257831185 - -'root18/hist_TTLJ_PowhegPythia_ttother.root': - type: mc - pretty-name: 'TTLJ_PowhegPythia_ttother' - cross-section: 365.34 - generated-events: 100728756.0 - fill-color: '#ff6666' - group: GttBkg - order: 4 - scale: 0.435257831185 - -'root18/hist_TTLJ_PowhegPythia_ttcc.root': - type: mc - pretty-name: 'TTLJ_PowhegPythia_ttcc' - cross-section: 365.34 - generated-events: 100728756.0 - fill-color: '#990000' - group: Gttcc - legend: 'ttcc' - order: 2 - scale: 0.435257831185 - -'root18/hist_TTLJ_PowhegPythia_ttbj.root': - type: mc - pretty-name: 'TTLJ_PowhegPythia_ttbj' - cross-section: 365.34 - generated-events: 100728756.0 - fill-color: '#660000' - group: Gttbj - legend: 'ttbj' - order: 1 - scale: 0.435257831185 - -'root18/hist_TTLJ_PowhegPythia_ttbb.root': - type: mc - pretty-name: 'TTLJ_PowhegPythia_ttbb' - cross-section: 365.34 - generated-events: 100728756.0 - fill-color: '#330000' - group: Gttbb - legend: 'ttbb' - order: 0 - scale: 0.435257831185 - -'root18/hist_TTLJ_PowhegPythia_ttLF.root': - type: mc - pretty-name: 'TTLJ_PowhegPythia_ttLF' - cross-section: 365.34 - generated-events: 100728756.0 - fill-color: '#cc0000' - group: GttLF - legend: 'ttLF' - order: 3 - scale: 0.435257831185 - -'root18/hist_TTLJ_PowhegPythiaBkg.root': - type: mc - pretty-name: 'TTLJ_PowhegPythiaBkg' - cross-section: 365.34 - generated-events: 100728756.0 - fill-color: '#ff6666' - group: GttBkg - order: 6 - scale: 0.435257831185 - -'root18/hist_TTJJ_PowhegPythiaBkg.root': - type: mc - pretty-name: 'TTJJ_PowhegPythiaBkg' - cross-section: 377.96 - generated-events: 132725582.0 - fill-color: '#ff6666' - group: GttBkg - order: 7 - scale: 0.435257831185 - -'root18/hist_SingleTop_t_PowhegPythia.root': - type: mc - pretty-name: 'SingleTop_t_PowhegPythia' - cross-section: 136.02 - generated-events: 144094782.0 - fill-color: '#990099' - group: GSingleT - order: 14 - scale: 0.435257831185 - -'root18/hist_SingleTop_tW_PowhegPythia.root': - type: mc - pretty-name: 'SingleTop_tW_PowhegPythia' - cross-section: 35.85 - generated-events: 9553912.0 - fill-color: '#990099' - group: GSingleT - order: 15 - scale: 0.435257831185 - -'root18/hist_SingleTop_s_aMCatNLOPythia.root': - type: mc - pretty-name: 'SingleTop_s_aMCatNLOPythia' - cross-section: 3.36 - generated-events: 12447484.0 - fill-color: '#990099' - group: GSingleT - order: 16 - scale: 0.435257831185 - -'root18/hist_SingleTbar_t_PowhegPythia.root': - type: mc - pretty-name: 'SingleTbar_t_PowhegPythia' - cross-section: 80.95 - generated-events: 74227130.0 - fill-color: '#990099' - group: GSingleT - order: 17 - scale: 0.435257831185 - -'root18/hist_SingleTbar_tW_PowhegPythia.root': - type: mc - pretty-name: 'SingleTbar_tW_PowhegPythia' - cross-section: 35.85 - generated-events: 7588180.0 - fill-color: '#990099' - group: GSingleT - order: 18 - scale: 0.435257831185 - -'root18/hist_QCD_Pt-15to20_MuEnriched.root': - type: mc - pretty-name: 'QCD_Pt-15to20_MuEnriched' - cross-section: 3819570.0 - generated-events: 4576061.0 - fill-color: '#d0cfd4' - group: GQCD - order: 29 - scale: 0.435257831185 - -'root18/hist_QCD_Pt-20to30_MuEnriched.root': - type: mc - pretty-name: 'QCD_Pt-20to30_MuEnriched' - cross-section: 2960198.4 - generated-events: 30612338.0 - fill-color: '#d0cfd4' - group: GQCD - order: 30 - scale: 0.435257831185 - -'root18/hist_QCD_Pt-50to80_MuEnriched.root': - type: mc - pretty-name: 'QCD_Pt-50to80_MuEnriched' - cross-section: 437504.1 - generated-events: 20268872.0 - fill-color: '#d0cfd4' - group: GQCD - order: 31 - scale: 0.435257831185 - -'root18/hist_QCD_Pt-80to120_MuEnriched.root': - type: mc - pretty-name: 'QCD_Pt-80to120_MuEnriched' - cross-section: 106033.6648 - generated-events: 25039361.0 - fill-color: '#d0cfd4' - group: GQCD - order: 32 - scale: 0.435257831185 - -'root18/hist_QCD_Pt-120to170_MuEnriched.root': - type: mc - pretty-name: 'QCD_Pt-120to170_MuEnriched' - cross-section: 25190.51514 - generated-events: 20682254.0 - fill-color: '#d0cfd4' - group: GQCD - order: 33 - scale: 0.435257831185 - -'root18/hist_QCD_Pt-170to300_MuEnriched.root': - type: mc - pretty-name: 'QCD_Pt-170to300_MuEnriched' - cross-section: 8654.49315 - generated-events: 35978539.0 - fill-color: '#d0cfd4' - group: GQCD - order: 34 - scale: 0.435257831185 - -'root18/hist_QCD_Pt-300to470_MuEnriched.root': - type: mc - pretty-name: 'QCD_Pt-300to470_MuEnriched' - cross-section: 797.35269 - generated-events: 28996145.0 - fill-color: '#d0cfd4' - group: GQCD - order: 35 - scale: 0.435257831185 - -'root18/hist_QCD_Pt-470to600_MuEnriched.root': - type: mc - pretty-name: 'QCD_Pt-470to600_MuEnriched' - cross-section: 79.02553776 - generated-events: 20003034.0 - fill-color: '#d0cfd4' - group: GQCD - order: 36 - scale: 0.435257831185 - -'root18/hist_QCD_Pt-600to800_MuEnriched.root': - type: mc - pretty-name: 'QCD_Pt-600to800_MuEnriched' - cross-section: 25.09505908 - generated-events: 16618977.0 - fill-color: '#d0cfd4' - group: GQCD - order: 37 - scale: 0.435257831185 - -'root18/hist_QCD_Pt-1000toInf_MuEnriched.root': - type: mc - pretty-name: 'QCD_Pt-1000toInf_MuEnriched' - cross-section: 1.62131692 - generated-events: 10719790.0 - fill-color: '#d0cfd4' - group: GQCD - order: 38 - scale: 0.435257831185 - -'root18/hist_QCD_Pt-15to20_EMEnriched.root': - type: mc - pretty-name: 'QCD_Pt-15to20_EMEnriched' - cross-section: 2302200.0 - generated-events: 14578212.0 - fill-color: '#d0cfd4' - group: GQCD - order: 39 - scale: 0.435257831185 - -'root18/hist_QCD_Pt-20to30_EMEnriched.root': - type: mc - pretty-name: 'QCD_Pt-20to30_EMEnriched' - cross-section: 5352960.0 - generated-events: 14255377.0 - fill-color: '#d0cfd4' - group: GQCD - order: 40 - scale: 0.435257831185 - -'root18/hist_QCD_Pt-30to50_EMEnriched.root': - type: mc - pretty-name: 'QCD_Pt-30to50_EMEnriched' - cross-section: 9928000.0 - generated-events: 15086084.0 - fill-color: '#d0cfd4' - group: GQCD - order: 41 - scale: 0.435257831185 - -'root18/hist_QCD_Pt-50to80_EMEnriched.root': - type: mc - pretty-name: 'QCD_Pt-50to80_EMEnriched' - cross-section: 2890800.0 - generated-events: 10798233.0 - fill-color: '#d0cfd4' - group: GQCD - order: 42 - scale: 0.435257831185 - -'root18/hist_QCD_Pt-80to120_EMEnriched.root': - type: mc - pretty-name: 'QCD_Pt-80to120_EMEnriched' - cross-section: 350000.0 - generated-events: 9648791.0 - fill-color: '#d0cfd4' - group: GQCD - order: 43 - scale: 0.435257831185 - -'root18/hist_QCD_Pt-120to170_EMEnriched.root': - type: mc - pretty-name: 'QCD_Pt-120to170_EMEnriched' - cross-section: 62964.0 - generated-events: 9964143.0 - fill-color: '#d0cfd4' - group: GQCD - order: 44 - scale: 0.435257831185 - -'root18/hist_QCD_Pt-170to300_EMEnriched.root': - type: mc - pretty-name: 'QCD_Pt-170to300_EMEnriched' - cross-section: 18810.0 - generated-events: 3712174.0 - fill-color: '#d0cfd4' - group: GQCD - order: 45 - scale: 0.435257831185 - -'root18/hist_QCD_Pt-300toInf_EMEnriched.root': - type: mc - pretty-name: 'QCD_Pt-300toInf_EMEnriched' - cross-section: 1350.0 - generated-events: 2901355.0 - fill-color: '#d0cfd4' - group: GQCD - order: 46 - scale: 0.435257831185 - diff --git a/plotIt/configs/files/files16.yml b/plotIt/configs/files/files16.yml new file mode 100644 index 0000000..8a08dbd --- /dev/null +++ b/plotIt/configs/files/files16.yml @@ -0,0 +1,437 @@ +hist_DataSingleMu.root: + type: data + legend: 'Data' + pretty-name: 'DataMu' + marker-size: 0.6 + group: GData + +hist_DataSingleEG.root: + type: data + legend: 'Data' + pretty-name: 'DataEG' + marker-size: 0.6 + group: GData + +hist_TTLJ_PowhegPythia_ttbb.root: + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttbb' + cross-section: 365.34 + generated-events: 106736180.0 + fill-color: '#330000' + legend: 'ttbb' + order: 1 + +hist_TTLJ_PowhegPythia_ttbj.root: + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttbj' + cross-section: 365.34 + generated-events: 106736180.0 + fill-color: '#660000' + legend: 'ttbj' + order: 2 + +hist_TTLJ_PowhegPythia_ttcc.root: + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttcc' + cross-section: 365.34 + generated-events: 106736180.0 + fill-color: '#990000' + legend: 'ttcc' + order: 3 + +hist_TTLJ_PowhegPythia_ttLF.root: + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttLF' + cross-section: 365.34 + generated-events: 106736180.0 + fill-color: '#cc0000' + legend: 'ttLF' + order: 4 + +hist_TTLJ_PowhegPythia_ttother.root: + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttother' + cross-section: 365.34 + generated-events: 106736180.0 + fill-color: '#ff6666' + group: GttBkg + order: 5 + +hist_TTLJ_PowhegPythiaBkg.root: + type: mc + pretty-name: 'TTLJ_PowhegPythiaBkg' + cross-section: 365.34 + generated-events: 106736180.0 + fill-color: '#ff6666' + group: GttBkg + order: 6 + +hist_TTLL_PowhegPythiaBkg.root: + type: mc + pretty-name: 'TTLL_PowhegPythiaBkg' + cross-section: 88.29 + generated-events: 67312164.0 + fill-color: '#ff6666' + group: GttBkg + order: 7 + +hist_TTJJ_PowhegPythiaBkg.root: + type: mc + pretty-name: 'TTJJ_PowhegPythiaBkg' + cross-section: 377.96 + generated-events: 67963984.0 + fill-color: '#ff6666' + group: GttBkg + order: 8 + +hist_SingleTop_s_aMCatNLOPythia.root: + type: mc + pretty-name: 'SingleTop_s_aMCatNLOPythia' + cross-section: 3.36 + generated-events: 6137801.0 + fill-color: '#990099' + group: GSingleT + order: 9 + +hist_SingleTop_t_PowhegPythia.root: + type: mc + pretty-name: 'SingleTop_t_PowhegPythia' + cross-section: 136.02 + generated-events: 31848000.0 + fill-color: '#990099' + group: GSingleT + order: 10 + +hist_SingleTop_tW_PowhegPythia.root: + type: mc + pretty-name: 'SingleTop_tW_PowhegPythia' + cross-section: 35.85 + generated-events: 4945734.0 + fill-color: '#990099' + group: GSingleT + order: 11 + +hist_SingleTbar_t_PowhegPythia.root: + type: mc + pretty-name: 'SingleTbar_t_PowhegPythia' + cross-section: 80.95 + generated-events: 17780700.0 + fill-color: '#990099' + group: GSingleT + order: 12 + +hist_SingleTbar_tW_PowhegPythia.root: + type: mc + pretty-name: 'SingleTbar_tW_PowhegPythia' + cross-section: 35.85 + generated-events: 4942374.0 + fill-color: '#990099' + group: GSingleT + order: 13 + +hist_ttZToQQ_aMCatNLOMadspinPythia.root: + type: mc + pretty-name: 'ttZToQQ_aMCatNLOMadspinPythia' + cross-section: 0.5297 + generated-events: 351164.0 + fill-color: '#ff66ff' + group: GttX + order: 11 + +hist_ttZToLLNuNu_aMCatNLOMadspinPythia.root: + type: mc + pretty-name: 'ttZToLLNuNu_aMCatNLOMadspinPythia' + cross-section: 0.2529 + generated-events: 6420825.0 + fill-color: '#ff66ff' + group: GttX + order: 12 + +hist_ttWToQQ_aMCatNLOMadspinPythia.root: + type: mc + pretty-name: 'ttWToQQ_aMCatNLOMadspinPythia' + cross-section: 0.4062 + generated-events: 430310.0 + fill-color: '#ff66ff' + group: GttX + order: 13 + +hist_ttWToLNu_aMCatNLOMadspinPythia.root: + type: mc + pretty-name: 'ttWToLNu_aMCatNLOMadspinPythia' + cross-section: 0.2043 + generated-events: 2716249.0 + fill-color: '#ff66ff' + group: GttX + order: 14 + +hist_ttHTobb_PowhegPythia.root: + type: mc + pretty-name: 'ttHTobb_PowhegPythia' + cross-section: 0.2934 + generated-events: 9764780.0 + fill-color: '#ff66ff' + group: GttX + order: 14 + +hist_ttHToNonbb_PowhegPythia.root: + type: mc + pretty-name: 'ttHToNonbb_PowhegPythia' + cross-section: 0.2151 + generated-events: 9757039.0 + fill-color: '#ff66ff' + group: GttX + order: 15 + +hist_WW_Pythia.root: + type: mc + pretty-name: 'WW_Pythia' + cross-section: 118.7 + generated-events: 7837160.0 + fill-color: '#00cccc' + group: GVV + order: 17 + +hist_WZ_Pythia.root: + type: mc + pretty-name: 'WZ_Pythia' + cross-section: 47.13 + generated-events: 3997571.0 + fill-color: '#00cccc' + group: GVV + order: 18 + +hist_ZZ_Pythia.root: + type: mc + pretty-name: 'ZZ_Pythia' + cross-section: 16.523 + generated-events: 1988098.0 + fill-color: '#00cccc' + group: GVV + order: 19 + +hist_ZJets_M10to50_MadgraphPythia.root: + type: mc + pretty-name: 'ZJets_M10to50_MadgraphPythia' + cross-section: 18610.0 + generated-events: 78843820.0 + fill-color: '#000099' + group: GZJets + order: 20 + +hist_ZJets_M50_aMCatNLOPythia.root: + type: mc + pretty-name: 'ZJets_M50_aMCatNLOPythia' + cross-section: 6077.22 + generated-events: 80478895.0 + fill-color: '#000099' + group: GZJets + order: 21 + +hist_W1JetsToLNu_MadgraphPythia.root: + type: mc + pretty-name: 'W1JetsToLNu_MadgraphPythia' + cross-section: 9625.0 + generated-events: 45283121.0 + fill-color: '#ff9933' + group: GWJets + order: 22 + +hist_W2JetsToLNu_MadgraphPythia.root: + type: mc + pretty-name: 'W2JetsToLNu_MadgraphPythia' + cross-section: 2793.0 + generated-events: 60438768.0 + fill-color: '#ff9933' + group: GWJets + order: 23 + +hist_W3JetsToLNu_MadgraphPythia.root: + type: mc + pretty-name: 'W3JetsToLNu_MadgraphPythia' + cross-section: 992.5 + generated-events: 59300029.0 + fill-color: '#ff9933' + group: GWJets + order: 24 + +hist_W4JetsToLNu_MadgraphPythia.root: + type: mc + pretty-name: 'W4JetsToLNu_MadgraphPythia' + cross-section: 544.3 + generated-events: 11189932.0 + fill-color: '#ff9933' + group: GWJets + order: 25 + +hist_QCD_Pt-15to20_MuEnriched.root: + type: mc + pretty-name: 'QCD_Pt-15to20_MuEnriched' + cross-section: 3819570.0 + generated-events: 4141251.0 + fill-color: '#d0cfd4' + group: GQCD + order: 26 + +hist_QCD_Pt-20to30_MuEnriched.root: + type: mc + pretty-name: 'QCD_Pt-20to30_MuEnriched' + cross-section: 2960198.4 + generated-events: 31878740.0 + fill-color: '#d0cfd4' + group: GQCD + order: 27 + +#hist_QCD_Pt-30to50_MuEnriched.root: +# type: mc +# pretty-name: 'QCD_Pt-30to50_MuEnriched' +# cross-section: 1652471.46 +# generated-events: 29809492.0 +# fill-color: '#d0cfd4' +# group: GQCD +# order: 28 + +hist_QCD_Pt-50to80_MuEnriched.root: + type: mc + pretty-name: 'QCD_Pt-50to80_MuEnriched' + cross-section: 437504.1 + generated-events: 19662175.0 + fill-color: '#d0cfd4' + group: GQCD + order: 29 + +hist_QCD_Pt-80to120_MuEnriched.root: + type: mc + pretty-name: 'QCD_Pt-80to120_MuEnriched' + cross-section: 106033.6648 + generated-events: 23560662.0 + fill-color: '#d0cfd4' + group: GQCD + order: 30 + +hist_QCD_Pt-120to170_MuEnriched.root: + type: mc + pretty-name: 'QCD_Pt-120to170_MuEnriched' + cross-section: 25190.51514 + generated-events: 7897731.0 + fill-color: '#d0cfd4' + group: GQCD + order: 31 + +hist_QCD_Pt-170to300_MuEnriched.root: + type: mc + pretty-name: 'QCD_Pt-170to300_MuEnriched' + cross-section: 8654.49315 + generated-events: 17350231.0 + fill-color: '#d0cfd4' + group: GQCD + order: 32 + +hist_QCD_Pt-300to470_MuEnriched.root: + type: mc + pretty-name: 'QCD_Pt-300to470_MuEnriched' + cross-section: 797.35269 + generated-events: 49005976.0 + fill-color: '#d0cfd4' + group: GQCD + order: 33 + +hist_QCD_Pt-470to600_MuEnriched.root: + type: mc + pretty-name: 'QCD_Pt-470to600_MuEnriched' + cross-section: 79.02553776 + generated-events: 19489276.0 + fill-color: '#d0cfd4' + group: GQCD + order: 34 + +hist_QCD_Pt-600to800_MuEnriched.root: + type: mc + pretty-name: 'QCD_Pt-600to800_MuEnriched' + cross-section: 25.09505908 + generated-events: 9981311.0 + fill-color: '#d0cfd4' + group: GQCD + order: 35 + +hist_QCD_Pt-800to1000_MuEnriched.root: + type: mc + pretty-name: 'QCD_Pt-800to1000_MuEnriched' + cross-section: 4.707368272 + generated-events: 19940747.0 + fill-color: '#d0cfd4' + group: GQCD + order: 36 + +hist_QCD_Pt-1000toInf_MuEnriched.root: + type: mc + pretty-name: 'QCD_Pt-1000toInf_MuEnriched' + cross-section: 1.62131692 + generated-events: 13577827.0 + fill-color: '#d0cfd4' + group: GQCD + order: 37 + +hist_QCD_Pt-20to30_EMEnriched.root: + type: mc + pretty-name: 'QCD_Pt-20to30_EMEnriched' + cross-section: 5352960.0 + generated-events: 9241500.0 + fill-color: '#d0cfd4' + group: GQCD + order: 38 + +hist_QCD_Pt-30to50_EMEnriched.root: + type: mc + pretty-name: 'QCD_Pt-30to50_EMEnriched' + cross-section: 9928000.0 + generated-events: 11508842.0 + fill-color: '#d0cfd4' + group: GQCD + order: 39 + +hist_QCD_Pt-50to80_EMEnriched.root: + type: mc + pretty-name: 'QCD_Pt-50to80_EMEnriched' + cross-section: 2890800.0 + generated-events: 45789059.0 + fill-color: '#d0cfd4' + group: GQCD + order: 40 + +hist_QCD_Pt-80to120_EMEnriched.root: + type: mc + pretty-name: 'QCD_Pt-80to120_EMEnriched' + cross-section: 350000.0 + generated-events: 77800204.0 + fill-color: '#d0cfd4' + group: GQCD + order: 41 + +hist_QCD_Pt-120to170_EMEnriched.root: + type: mc + pretty-name: 'QCD_Pt-120to170_EMEnriched' + cross-section: 62964.0 + generated-events: 78578415.0 + fill-color: '#d0cfd4' + group: GQCD + order: 42 + +hist_QCD_Pt-170to300_EMEnriched.root: + type: mc + pretty-name: 'QCD_Pt-170to300_EMEnriched' + cross-section: 18810.0 + generated-events: 11540163.0 + fill-color: '#d0cfd4' + group: GQCD + order: 43 + +hist_QCD_Pt-300toInf_EMEnriched.root: + type: mc + pretty-name: 'QCD_Pt-300toInf_EMEnriched' + cross-section: 1350.0 + generated-events: 7380341.0 + fill-color: '#d0cfd4' + group: GQCD + order: 44 + diff --git a/plotIt/configs/files/files16.yml_backup b/plotIt/configs/files/files16.yml_backup new file mode 100644 index 0000000..9782418 --- /dev/null +++ b/plotIt/configs/files/files16.yml_backup @@ -0,0 +1,347 @@ +'root16_post/hist_DataSingleMu.root': + type: data + legend: 'Data' + pretty-name: 'DataMu' + marker-size: 0.6 + group: GData + +'root16_post/hist_DataSingleEG.root': + type: data + legend: 'Data' + pretty-name: 'DataEG' + marker-size: 0.6 + group: GData + +'root16_post/hist_ttZ_Madgraph.root': + type: mc + pretty-name: 'ttZ_Madgraph' + cross-section: 0.2529 + generated-events: 3685785.0 + fill-color: '#ff66ff' + group: GttX + order: 8 + +'root16_post/hist_ttW_Madgraph.root': + type: mc + pretty-name: 'ttW_Madgraph' + cross-section: 0.2043 + generated-events: 2676676.0 + fill-color: '#ff66ff' + group: GttX + order: 7 + +'root16_post/hist_ttHbb_PowhegPythia.root': + type: mc + pretty-name: 'ttHbb_PowhegPythia' + cross-section: 0.2923 + generated-events: 3772592.0 + fill-color: '#ff66ff' + group: GttX + order: 6 + +'root16_post/hist_SingleTbar_t_Powheg.root': + type: mc + pretty-name: 'SingleTbar_t_Powheg' + cross-section: 80.95 + generated-events: 38811017.0 + fill-color: '#990099' + group: GSingleT + order: 10 + +'root16_post/hist_SingleTbar_tW_Powheg.root': + type: mc + pretty-name: 'SingleTbar_tW_Powheg' + cross-section: 35.85 + generated-events: 6933094.0 + fill-color: '#990099' + group: GSingleT + order: 12 + +'root16_post/hist_SingleTop_t_Powheg.root': + type: mc + pretty-name: 'SingleTop_t_Powheg' + cross-section: 136.02 + generated-events: 67240808.0 + fill-color: '#990099' + group: GSingleT + order: 9 + +'root16_post/hist_SingleTop_tW_Powheg.root': + type: mc + pretty-name: 'SingleTop_tW_Powheg' + cross-section: 35.85 + generated-events: 6952830.0 + fill-color: '#990099' + group: GSingleT + order: 11 + +'root16_post/hist_ZZ_Pythia.root': + type: mc + pretty-name: 'ZZ_Pythia' + cross-section: 16.523 + generated-events: 1988098.0 + fill-color: '#00cccc' + group: GVV + order: 15 + +'root16_post/hist_ZJets_M50_aMCatNLO.root': + type: mc + pretty-name: 'ZJets_M50_aMCatNLO' + cross-section: 6225.42 + generated-events: 81781064.0 + fill-color: '#000099' + group: GZJets + order: 16 + +'root16_post/hist_ZJets_M10to50_aMCatNLO.root': + type: mc + pretty-name: 'ZJets_M10to50_aMCatNLO' + cross-section: 18610.0 + generated-events: 99831562.0 + fill-color: '#000099' + group: GZJets + order: 17 + +'root16_post/hist_WZ_Pythia.root': + type: mc + pretty-name: 'WZ_Pythia' + cross-section: 47.13 + generated-events: 3995828.0 + fill-color: '#00cccc' + group: GVV + order: 14 + +'root16_post/hist_WW_Pythia.root': + type: mc + pretty-name: 'WW_Pythia' + cross-section: 118.7 + generated-events: 7981136.0 + fill-color: '#00cccc' + group: GVV + order: 13 + +'root16_post/hist_WJets_aMCatNLO.root': + type: mc + pretty-name: 'WJets_aMCatNLO' + cross-section: 61526.7 + generated-events: 177578225.0 + fill-color: '#ff9933' + legend: 'WJets' + order: 18 + +'root16_post/hist_TT_PowhegPythiaBkg.root': + type: mc + pretty-name: 'TT_PowhegPythiaBkg' + cross-section: 831.76 + generated-events: 76837652.0 + fill-color: '#ff6666' + group: GttBkg + order: 5 + +'root16_post/hist_TTLJ_PowhegPythia_ttother.root': + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttother' + cross-section: 365.34 + generated-events: 152627564.0 + fill-color: '#ff6666' + group: GttBkg + order: 4 + +'root16_post/hist_TTLJ_PowhegPythia_ttcc.root': + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttcc' + cross-section: 365.34 + generated-events: 152627564.0 + fill-color: '#990000' + legend: 'ttcc' + order: 2 + +'root16_post/hist_TTLJ_PowhegPythia_ttbj.root': + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttbj' + cross-section: 365.34 + generated-events: 152627564.0 + fill-color: '#660000' + legend: 'ttbj' + order: 1 + +'root16_post/hist_TTLJ_PowhegPythia_ttbb.root': + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttbb' + cross-section: 365.34 + generated-events: 152627564.0 + fill-color: '#330000' + legend: 'ttbb' + order: 0 + +'root16_post/hist_TTLJ_PowhegPythia_ttLF.root': + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttLF' + cross-section: 365.34 + generated-events: 152627564.0 + fill-color: '#cc0000' + legend: 'ttLF' + order: 3 + +'root16_post/hist_QCD_Pt-15to20_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-15to20_MuEnriched' + cross-section: 3819570.0 + generated-events: 4141251.0 + fill-color: '#d0cfd4' + group: GQCD + order: 19 + +'root16_post/hist_QCD_Pt-20to30_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-20to30_MuEnriched' + cross-section: 2960198.4 + generated-events: 31475157.0 + fill-color: '#d0cfd4' + group: GQCD + order: 20 + +'root16_post/hist_QCD_Pt-50to80_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-50to80_MuEnriched' + cross-section: 437504.1 + generated-events: 19806915.0 + fill-color: '#d0cfd4' + group: GQCD + order: 21 + +'root16_post/hist_QCD_Pt-80to120_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-80to120_MuEnriched' + cross-section: 106033.6648 + generated-events: 13669116.0 + fill-color: '#d0cfd4' + group: GQCD + order: 22 + +'root16_post/hist_QCD_Pt-120to170_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-120to170_MuEnriched' + cross-section: 25190.51514 + generated-events: 11938140.0 + fill-color: '#d0cfd4' + group: GQCD + order: 23 + +'root16_post/hist_QCD_Pt-170to300_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-170to300_MuEnriched' + cross-section: 8654.49315 + generated-events: 7947159.0 + fill-color: '#d0cfd4' + group: GQCD + order: 24 + +'root16_post/hist_QCD_Pt-300to470_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-300to470_MuEnriched' + cross-section: 797.35269 + generated-events: 16452588.0 + fill-color: '#d0cfd4' + group: GQCD + order: 25 + +'root16_post/hist_QCD_Pt-470to600_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-470to600_MuEnriched' + cross-section: 79.02553776 + generated-events: 5663755.0 + fill-color: '#d0cfd4' + group: GQCD + order: 26 + +'root16_post/hist_QCD_Pt-600to800_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-600to800_MuEnriched' + cross-section: 25.09505908 + generated-events: 5971175.0 + fill-color: '#d0cfd4' + group: GQCD + order: 27 + +'root16_post/hist_QCD_Pt-800to1000_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-800to1000_MuEnriched' + cross-section: 4.707368272 + generated-events: 5838541.0 + fill-color: '#d0cfd4' + group: GQCD + order: 28 + +'root16_post/hist_QCD_Pt-1000toInf_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-1000toInf_MuEnriched' + cross-section: 1.62131692 + generated-events: 9609821.0 + fill-color: '#d0cfd4' + group: GQCD + order: 29 + +'root16_post/hist_QCD_Pt-20to30_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-20to30_EMEnriched' + cross-section: 5352960.0 + generated-events: 9218954.0 + fill-color: '#d0cfd4' + group: GQCD + order: 30 + +'root16_post/hist_QCD_Pt-30to50_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-30to50_EMEnriched' + cross-section: 9928000.0 + generated-events: 6768384.0 + fill-color: '#d0cfd4' + group: GQCD + order: 31 + +'root16_post/hist_QCD_Pt-50to80_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-50to80_EMEnriched' + cross-section: 2890800.0 + generated-events: 23474171.0 + fill-color: '#d0cfd4' + group: GQCD + order: 32 + +'root16_post/hist_QCD_Pt-80to120_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-80to120_EMEnriched' + cross-section: 350000.0 + generated-events: 41853504.0 + fill-color: '#d0cfd4' + group: GQCD + order: 33 + +'root16_post/hist_QCD_Pt-120to170_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-120to170_EMEnriched' + cross-section: 62964.0 + generated-events: 35817281.0 + fill-color: '#d0cfd4' + group: GQCD + order: 34 + +'root16_post/hist_QCD_Pt-170to300_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-170to300_EMEnriched' + cross-section: 18810.0 + generated-events: 11540163.0 + fill-color: '#d0cfd4' + group: GQCD + order: 35 + +'root16_post/hist_QCD_Pt-300toInf_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-300toInf_EMEnriched' + cross-section: 1350.0 + generated-events: 7373633.0 + fill-color: '#d0cfd4' + group: GQCD + order: 36 + diff --git a/plotIt/configs/files/files16_qcd.yml b/plotIt/configs/files/files16_qcd.yml new file mode 100644 index 0000000..7a23149 --- /dev/null +++ b/plotIt/configs/files/files16_qcd.yml @@ -0,0 +1,384 @@ +'root16_qcd/hist_dataDriven_DataSingleMu.root': + type: data + legend: 'Data' + pretty-name: 'DataMu' + marker-size: 0.6 + group: GData + +'root16_qcd/hist_dataDriven_DataSingleEG.root': + type: data + legend: 'Data' + pretty-name: 'DataEG' + marker-size: 0.6 + group: GData + +'root16_qcd/hist_dataDriven_ttZ_Madgraph.root': + type: mc + pretty-name: 'ttZ_Madgraph' + cross-section: 0.2529 + generated-events: 3685785.0 + fill-color: '#ff66ff' + group: GttX + order: 8 + #scale: 0.915188 + +'root16_qcd/hist_dataDriven_ttW_Madgraph.root': + type: mc + pretty-name: 'ttW_Madgraph' + cross-section: 0.2043 + generated-events: 2676676.0 + fill-color: '#ff66ff' + group: GttX + order: 7 + #scale: 0.915188 + +'root16_qcd/hist_dataDriven_ttHbb_PowhegPythia.root': + type: mc + pretty-name: 'ttHbb_PowhegPythia' + cross-section: 0.2923 + generated-events: 3772592.0 + fill-color: '#ff66ff' + group: GttX + order: 6 + #scale: 0.915188 + +'root16_qcd/hist_dataDriven_SingleTbar_t_Powheg.root': + type: mc + pretty-name: 'SingleTbar_t_Powheg' + cross-section: 80.95 + generated-events: 38811017.0 + fill-color: '#990099' + group: GSingleT + order: 10 + #scale: 0.960297 + +'root16_qcd/hist_dataDriven_SingleTbar_tW_Powheg.root': + type: mc + pretty-name: 'SingleTbar_tW_Powheg' + cross-section: 35.85 + generated-events: 6933094.0 + fill-color: '#990099' + group: GSingleT + order: 12 + #scale: 0.960297 + +'root16_qcd/hist_dataDriven_SingleTop_t_Powheg.root': + type: mc + pretty-name: 'SingleTop_t_Powheg' + cross-section: 136.02 + generated-events: 67240808.0 + fill-color: '#990099' + group: GSingleT + order: 9 + #scale: 0.960297 + +'root16_qcd/hist_dataDriven_SingleTop_tW_Powheg.root': + type: mc + pretty-name: 'SingleTop_tW_Powheg' + cross-section: 35.85 + generated-events: 6952830.0 + fill-color: '#990099' + group: GSingleT + order: 11 + #scale: 0.960297 + +'root16_qcd/hist_dataDriven_ZZ_Pythia.root': + type: mc + pretty-name: 'ZZ_Pythia' + cross-section: 16.523 + generated-events: 1988098.0 + fill-color: '#00cccc' + group: GVV + order: 15 + #scale: 0.936838 + +'root16_qcd/hist_dataDriven_ZJets_M50_aMCatNLO.root': + type: mc + pretty-name: 'ZJets_M50_aMCatNLO' + cross-section: 6225.42 + generated-events: 81781064.0 + fill-color: '#000099' + group: GZJets + order: 16 + #scale: 0.936838 + +'root16_qcd/hist_dataDriven_ZJets_M10to50_aMCatNLO.root': + type: mc + pretty-name: 'ZJets_M10to50_aMCatNLO' + cross-section: 18610.0 + generated-events: 99831562.0 + fill-color: '#000099' + group: GZJets + order: 17 + #scale: 0.936838 + +'root16_qcd/hist_dataDriven_WZ_Pythia.root': + type: mc + pretty-name: 'WZ_Pythia' + cross-section: 47.13 + generated-events: 3995828.0 + fill-color: '#00cccc' + group: GVV + order: 14 + #scale: 0.936838 + +'root16_qcd/hist_dataDriven_WW_Pythia.root': + type: mc + pretty-name: 'WW_Pythia' + cross-section: 118.7 + generated-events: 7981136.0 + fill-color: '#00cccc' + group: GVV + order: 13 + #scale: 0.936838 + +'root16_qcd/hist_dataDriven_WJets_aMCatNLO.root': + type: mc + pretty-name: 'WJets_aMCatNLO' + cross-section: 61526.7 + generated-events: 177578225.0 + fill-color: '#ff9933' + legend: 'WJets' + order: 18 + #scale: 0.936838 + +'root16_qcd/hist_dataDriven_TT_PowhegPythiaBkg.root': + type: mc + pretty-name: 'TT_PowhegPythiaBkg' + cross-section: 831.76 + generated-events: 76837652.0 + fill-color: '#ff6666' + group: GttBkg + order: 5 + #scale: 0.960297 + +'root16_qcd/hist_dataDriven_TTLJ_PowhegPythia_ttother.root': + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttother' + cross-section: 365.34 + generated-events: 152627564.0 + fill-color: '#ff6666' + group: GttBkg + order: 4 + #scale: 0.936838 + +'root16_qcd/hist_dataDriven_TTLJ_PowhegPythia_ttcc.root': + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttcc' + cross-section: 365.34 + generated-events: 152627564.0 + fill-color: '#990000' + legend: 'ttcc' + order: 2 + #scale: 0.960297 + +'root16_qcd/hist_dataDriven_TTLJ_PowhegPythia_ttbj.root': + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttbj' + cross-section: 365.34 + generated-events: 152627564.0 + fill-color: '#660000' + legend: 'ttbj' + order: 1 + #scale: 0.772274 + +'root16_qcd/hist_dataDriven_TTLJ_PowhegPythia_ttbb.root': + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttbb' + cross-section: 365.34 + generated-events: 152627564.0 + fill-color: '#330000' + legend: 'ttbb' + order: 0 + #scale: 0.915188 + +'root16_qcd/hist_dataDriven_TTLJ_PowhegPythia_ttLF.root': + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttLF' + cross-section: 365.34 + generated-events: 152627564.0 + fill-color: '#cc0000' + legend: 'ttLF' + order: 3 + #scale: 0.960297 + +'root16_qcd/hist_dataDriven_QCD_Pt-15to20_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-15to20_MuEnriched' + cross-section: 3819570.0 + generated-events: 4141251.0 + fill-color: '#d0cfd4' + group: GQCD + order: 19 + #scale: 0.936838 + +'root16_qcd/hist_dataDriven_QCD_Pt-20to30_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-20to30_MuEnriched' + cross-section: 2960198.4 + generated-events: 31475157.0 + fill-color: '#d0cfd4' + group: GQCD + order: 20 + #scale: 0.936838 + +'root16_qcd/hist_dataDriven_QCD_Pt-50to80_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-50to80_MuEnriched' + cross-section: 437504.1 + generated-events: 19806915.0 + fill-color: '#d0cfd4' + group: GQCD + order: 21 + #scale: 0.936838 + +'root16_qcd/hist_dataDriven_QCD_Pt-80to120_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-80to120_MuEnriched' + cross-section: 106033.6648 + generated-events: 13669116.0 + fill-color: '#d0cfd4' + group: GQCD + order: 22 + #scale: 0.936838 + +'root16_qcd/hist_dataDriven_QCD_Pt-120to170_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-120to170_MuEnriched' + cross-section: 25190.51514 + generated-events: 11938140.0 + fill-color: '#d0cfd4' + group: GQCD + order: 23 + #scale: 0.936838 + +'root16_qcd/hist_dataDriven_QCD_Pt-170to300_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-170to300_MuEnriched' + cross-section: 8654.49315 + generated-events: 7947159.0 + fill-color: '#d0cfd4' + group: GQCD + order: 24 + #scale: 0.936838 + +'root16_qcd/hist_dataDriven_QCD_Pt-300to470_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-300to470_MuEnriched' + cross-section: 797.35269 + generated-events: 16452588.0 + fill-color: '#d0cfd4' + group: GQCD + order: 25 + #scale: 0.936838 + +'root16_qcd/hist_dataDriven_QCD_Pt-470to600_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-470to600_MuEnriched' + cross-section: 79.02553776 + generated-events: 5663755.0 + fill-color: '#d0cfd4' + group: GQCD + order: 26 + #scale: 0.936838 + +'root16_qcd/hist_dataDriven_QCD_Pt-600to800_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-600to800_MuEnriched' + cross-section: 25.09505908 + generated-events: 5971175.0 + fill-color: '#d0cfd4' + group: GQCD + order: 27 + #scale: 0.936838 + +'root16_qcd/hist_dataDriven_QCD_Pt-800to1000_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-800to1000_MuEnriched' + cross-section: 4.707368272 + generated-events: 5838541.0 + fill-color: '#d0cfd4' + group: GQCD + order: 28 + #scale: 0.936838 + +'root16_qcd/hist_dataDriven_QCD_Pt-1000toInf_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-1000toInf_MuEnriched' + cross-section: 1.62131692 + generated-events: 9609821.0 + fill-color: '#d0cfd4' + group: GQCD + order: 29 + #scale: 0.936838 + +'root16_qcd/hist_dataDriven_QCD_Pt-20to30_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-20to30_EMEnriched' + cross-section: 5352960.0 + generated-events: 9218954.0 + fill-color: '#d0cfd4' + group: GQCD + order: 30 + #scale: 0.936838 + +'root16_qcd/hist_dataDriven_QCD_Pt-30to50_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-30to50_EMEnriched' + cross-section: 9928000.0 + generated-events: 6768384.0 + fill-color: '#d0cfd4' + group: GQCD + order: 31 + #scale: 0.936838 + +'root16_qcd/hist_dataDriven_QCD_Pt-50to80_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-50to80_EMEnriched' + cross-section: 2890800.0 + generated-events: 23474171.0 + fill-color: '#d0cfd4' + group: GQCD + order: 32 + #scale: 0.936838 + +'root16_qcd/hist_dataDriven_QCD_Pt-80to120_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-80to120_EMEnriched' + cross-section: 350000.0 + generated-events: 41853504.0 + fill-color: '#d0cfd4' + group: GQCD + order: 33 + #scale: 0.936838 + +'root16_qcd/hist_dataDriven_QCD_Pt-120to170_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-120to170_EMEnriched' + cross-section: 62964.0 + generated-events: 35817281.0 + fill-color: '#d0cfd4' + group: GQCD + order: 34 + #scale: 0.936838 + +'root16_qcd/hist_dataDriven_QCD_Pt-170to300_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-170to300_EMEnriched' + cross-section: 18810.0 + generated-events: 11540163.0 + fill-color: '#d0cfd4' + group: GQCD + order: 35 + #scale: 0.936838 + +'root16_qcd/hist_dataDriven_QCD_Pt-300toInf_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-300toInf_EMEnriched' + cross-section: 1350.0 + generated-events: 7373633.0 + fill-color: '#d0cfd4' + group: GQCD + order: 36 + #scale: 0.936838 + diff --git a/plotIt/configs/files/files16_test.yml b/plotIt/configs/files/files16_test.yml new file mode 100644 index 0000000..2fc6841 --- /dev/null +++ b/plotIt/configs/files/files16_test.yml @@ -0,0 +1,347 @@ +'root16_test/hist_Nosys_DataSingleMu.root': + type: data + legend: 'Data' + pretty-name: 'DataMu' + marker-size: 0.6 + group: GData + +'root16_test/hist_Nosys_DataSingleEG.root': + type: data + legend: 'Data' + pretty-name: 'DataEG' + marker-size: 0.6 + group: GData + +'root16_test/hist_Nosys_ttZ_Madgraph.root': + type: mc + pretty-name: 'ttZ_Madgraph' + cross-section: 0.2529 + generated-events: 3685785.0 + fill-color: '#ff66ff' + group: GttX + order: 8 + +'root16_test/hist_Nosys_ttW_Madgraph.root': + type: mc + pretty-name: 'ttW_Madgraph' + cross-section: 0.2043 + generated-events: 2676676.0 + fill-color: '#ff66ff' + group: GttX + order: 7 + +'root16_test/hist_Nosys_ttHbb_PowhegPythia.root': + type: mc + pretty-name: 'ttHbb_PowhegPythia' + cross-section: 0.2923 + generated-events: 3772592.0 + fill-color: '#ff66ff' + group: GttX + order: 6 + +'root16_test/hist_Nosys_SingleTbar_t_Powheg.root': + type: mc + pretty-name: 'SingleTbar_t_Powheg' + cross-section: 80.95 + generated-events: 38811017.0 + fill-color: '#990099' + group: GSingleT + order: 10 + +'root16_test/hist_Nosys_SingleTbar_tW_Powheg.root': + type: mc + pretty-name: 'SingleTbar_tW_Powheg' + cross-section: 35.85 + generated-events: 6933094.0 + fill-color: '#990099' + group: GSingleT + order: 12 + +'root16_test/hist_Nosys_SingleTop_t_Powheg.root': + type: mc + pretty-name: 'SingleTop_t_Powheg' + cross-section: 136.02 + generated-events: 67240808.0 + fill-color: '#990099' + group: GSingleT + order: 9 + +'root16_test/hist_Nosys_SingleTop_tW_Powheg.root': + type: mc + pretty-name: 'SingleTop_tW_Powheg' + cross-section: 35.85 + generated-events: 6952830.0 + fill-color: '#990099' + group: GSingleT + order: 11 + +'root16_test/hist_Nosys_ZZ_Pythia.root': + type: mc + pretty-name: 'ZZ_Pythia' + cross-section: 16.523 + generated-events: 1988098.0 + fill-color: '#00cccc' + group: GVV + order: 15 + +'root16_test/hist_Nosys_ZJets_M50_aMCatNLO.root': + type: mc + pretty-name: 'ZJets_M50_aMCatNLO' + cross-section: 6225.42 + generated-events: 81781064.0 + fill-color: '#000099' + group: GZJets + order: 16 + +'root16_test/hist_Nosys_ZJets_M10to50_aMCatNLO.root': + type: mc + pretty-name: 'ZJets_M10to50_aMCatNLO' + cross-section: 18610.0 + generated-events: 99831562.0 + fill-color: '#000099' + group: GZJets + order: 17 + +'root16_test/hist_Nosys_WZ_Pythia.root': + type: mc + pretty-name: 'WZ_Pythia' + cross-section: 47.13 + generated-events: 3995828.0 + fill-color: '#00cccc' + group: GVV + order: 14 + +'root16_test/hist_Nosys_WW_Pythia.root': + type: mc + pretty-name: 'WW_Pythia' + cross-section: 118.7 + generated-events: 7981136.0 + fill-color: '#00cccc' + group: GVV + order: 13 + +'root16_test/hist_Nosys_WJets_aMCatNLO.root': + type: mc + pretty-name: 'WJets_aMCatNLO' + cross-section: 61526.7 + generated-events: 177578225.0 + fill-color: '#ff9933' + legend: 'WJets' + order: 18 + +'root16_test/hist_Nosys_TT_PowhegPythiaBkg.root': + type: mc + pretty-name: 'TT_PowhegPythiaBkg' + cross-section: 831.76 + generated-events: 76837652.0 + fill-color: '#ff6666' + group: GttBkg + order: 5 + +'root16_test/hist_Nosys_TTLJ_PowhegPythia_ttother.root': + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttother' + cross-section: 365.34 + generated-events: 152627564.0 + fill-color: '#ff6666' + group: GttBkg + order: 4 + +'root16_test/hist_Nosys_TTLJ_PowhegPythia_ttcc.root': + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttcc' + cross-section: 365.34 + generated-events: 152627564.0 + fill-color: '#990000' + legend: 'ttcc' + order: 2 + +'root16_test/hist_Nosys_TTLJ_PowhegPythia_ttbj.root': + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttbj' + cross-section: 365.34 + generated-events: 152627564.0 + fill-color: '#660000' + legend: 'ttbj' + order: 1 + +'root16_test/hist_Nosys_TTLJ_PowhegPythia_ttbb.root': + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttbb' + cross-section: 365.34 + generated-events: 152627564.0 + fill-color: '#330000' + legend: 'ttbb' + order: 0 + +'root16_test/hist_Nosys_TTLJ_PowhegPythia_ttLF.root': + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttLF' + cross-section: 365.34 + generated-events: 152627564.0 + fill-color: '#cc0000' + legend: 'ttLF' + order: 3 + +'root16_test/hist_Nosys_QCD_Pt-15to20_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-15to20_MuEnriched' + cross-section: 3819570.0 + generated-events: 4141251.0 + fill-color: '#d0cfd4' + group: GQCD + order: 19 + +'root16_test/hist_Nosys_QCD_Pt-20to30_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-20to30_MuEnriched' + cross-section: 2960198.4 + generated-events: 31475157.0 + fill-color: '#d0cfd4' + group: GQCD + order: 20 + +'root16_test/hist_Nosys_QCD_Pt-50to80_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-50to80_MuEnriched' + cross-section: 437504.1 + generated-events: 19806915.0 + fill-color: '#d0cfd4' + group: GQCD + order: 21 + +'root16_test/hist_Nosys_QCD_Pt-80to120_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-80to120_MuEnriched' + cross-section: 106033.6648 + generated-events: 13669116.0 + fill-color: '#d0cfd4' + group: GQCD + order: 22 + +'root16_test/hist_Nosys_QCD_Pt-120to170_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-120to170_MuEnriched' + cross-section: 25190.51514 + generated-events: 11938140.0 + fill-color: '#d0cfd4' + group: GQCD + order: 23 + +'root16_test/hist_Nosys_QCD_Pt-170to300_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-170to300_MuEnriched' + cross-section: 8654.49315 + generated-events: 7947159.0 + fill-color: '#d0cfd4' + group: GQCD + order: 24 + +'root16_test/hist_Nosys_QCD_Pt-300to470_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-300to470_MuEnriched' + cross-section: 797.35269 + generated-events: 16452588.0 + fill-color: '#d0cfd4' + group: GQCD + order: 25 + +'root16_test/hist_Nosys_QCD_Pt-470to600_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-470to600_MuEnriched' + cross-section: 79.02553776 + generated-events: 5663755.0 + fill-color: '#d0cfd4' + group: GQCD + order: 26 + +'root16_test/hist_Nosys_QCD_Pt-600to800_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-600to800_MuEnriched' + cross-section: 25.09505908 + generated-events: 5971175.0 + fill-color: '#d0cfd4' + group: GQCD + order: 27 + +'root16_test/hist_Nosys_QCD_Pt-800to1000_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-800to1000_MuEnriched' + cross-section: 4.707368272 + generated-events: 5838541.0 + fill-color: '#d0cfd4' + group: GQCD + order: 28 + +'root16_test/hist_Nosys_QCD_Pt-1000toInf_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-1000toInf_MuEnriched' + cross-section: 1.62131692 + generated-events: 9609821.0 + fill-color: '#d0cfd4' + group: GQCD + order: 29 + +'root16_test/hist_Nosys_QCD_Pt-20to30_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-20to30_EMEnriched' + cross-section: 5352960.0 + generated-events: 9218954.0 + fill-color: '#d0cfd4' + group: GQCD + order: 30 + +'root16_test/hist_Nosys_QCD_Pt-30to50_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-30to50_EMEnriched' + cross-section: 9928000.0 + generated-events: 6768384.0 + fill-color: '#d0cfd4' + group: GQCD + order: 31 + +'root16_test/hist_Nosys_QCD_Pt-50to80_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-50to80_EMEnriched' + cross-section: 2890800.0 + generated-events: 23474171.0 + fill-color: '#d0cfd4' + group: GQCD + order: 32 + +'root16_test/hist_Nosys_QCD_Pt-80to120_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-80to120_EMEnriched' + cross-section: 350000.0 + generated-events: 41853504.0 + fill-color: '#d0cfd4' + group: GQCD + order: 33 + +'root16_test/hist_Nosys_QCD_Pt-120to170_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-120to170_EMEnriched' + cross-section: 62964.0 + generated-events: 35817281.0 + fill-color: '#d0cfd4' + group: GQCD + order: 34 + +'root16_test/hist_Nosys_QCD_Pt-170to300_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-170to300_EMEnriched' + cross-section: 18810.0 + generated-events: 11540163.0 + fill-color: '#d0cfd4' + group: GQCD + order: 35 + +'root16_test/hist_Nosys_QCD_Pt-300toInf_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-300toInf_EMEnriched' + cross-section: 1350.0 + generated-events: 7373633.0 + fill-color: '#d0cfd4' + group: GQCD + order: 36 + diff --git a/plotIt/configs/files/files17.yml b/plotIt/configs/files/files17.yml new file mode 100644 index 0000000..311dd52 --- /dev/null +++ b/plotIt/configs/files/files17.yml @@ -0,0 +1,428 @@ +hist_DataSingleMu.root: + type: data + legend: 'Data' + pretty-name: 'DataMu' + marker-size: 0.6 + group: GData + +hist_DataSingleEG.root: + type: data + legend: 'Data' + pretty-name: 'DataEG' + marker-size: 0.6 + group: GData + +hist_ttZToQQ_aMCatNLOMadspinPythia.root: + type: mc + pretty-name: 'ttZToQQ_aMCatNLOMadspinPythia' + cross-section: 0.5297 + generated-events: 356286.0 + fill-color: '#ff66ff' + group: GttX + order: 12 + +hist_ttZToLLNuNu_aMCatNLOMadspinPythia.root: + type: mc + pretty-name: 'ttZToLLNuNu_aMCatNLOMadspinPythia' + cross-section: 0.2529 + generated-events: 3570720.0 + fill-color: '#ff66ff' + group: GttX + order: 13 + +hist_ttWToQQ_aMCatNLOMadspinPythia.root: + type: mc + pretty-name: 'ttWToQQ_aMCatNLOMadspinPythia' + cross-section: 0.4062 + generated-events: 441560.0 + fill-color: '#ff66ff' + group: GttX + order: 10 + +hist_ttWToLNu_aMCatNLOMadspinPythia.root: + type: mc + pretty-name: 'ttWToLNu_aMCatNLOMadspinPythia' + cross-section: 0.2043 + generated-events: 2686141.0 + fill-color: '#ff66ff' + group: GttX + order: 11 + +hist_ttHTobb_PowhegPythia.root: + type: mc + pretty-name: 'ttHTobb_PowhegPythia' + cross-section: 0.2923 + generated-events: 7833734.0 + fill-color: '#ff66ff' + group: GttX + order: 8 + +hist_ttHToNonbb_PowhegPythia.root: + type: mc + pretty-name: 'ttHToNonbb_PowhegPythia' + cross-section: 0.2151 + generated-events: 7814711.0 + fill-color: '#ff66ff' + group: GttX + order: 9 + +hist_ZZ_Pythia.root: + type: mc + pretty-name: 'ZZ_Pythia' + cross-section: 16.523 + generated-events: 1949768.0 + fill-color: '#00cccc' + group: GVV + order: 21 + +hist_ZJets_M50_aMCatNLOPythia.root: + type: mc + pretty-name: 'ZJets_M50_aMCatNLOPythia' + cross-section: 6225.42 + generated-events: 123485957.0 + fill-color: '#000099' + group: GZJets + order: 22 + +hist_ZJets_M10to50_MadgraphPythia.root: + type: mc + pretty-name: 'ZJets_M10to50_MadgraphPythia' + cross-section: 18610.0 + generated-events: 39489654.0 + fill-color: '#000099' + group: GZJets + order: 23 + +hist_WZ_Pythia.root: + type: mc + pretty-name: 'WZ_Pythia' + cross-section: 47.13 + generated-events: 3928630.0 + fill-color: '#00cccc' + group: GVV + order: 20 + +hist_WW_Pythia.root: + type: mc + pretty-name: 'WW_Pythia' + cross-section: 118.7 + generated-events: 7791498.0 + fill-color: '#00cccc' + group: GVV + order: 19 + +hist_W4JetsToLNu_MadgraphPythia.root: + type: mc + pretty-name: 'W4JetsToLNu_MadgraphPythia' + cross-section: 544.3 + generated-events: 11074019.0 + fill-color: '#ff9933' + group: GWJets + order: 25 + +hist_W3JetsToLNu_MadgraphPythia.root: + type: mc + pretty-name: 'W3JetsToLNu_MadgraphPythia' + cross-section: 992.5 + generated-events: 19669693.0 + fill-color: '#ff9933' + group: GWJets + order: 26 + +hist_W2JetsToLNu_MadgraphPythia.root: + type: mc + pretty-name: 'W2JetsToLNu_MadgraphPythia' + cross-section: 2793.0 + generated-events: 6570442.0 + fill-color: '#ff9933' + group: GWJets + order: 27 + +hist_W1JetsToLNu_MadgraphPythia.root: + type: mc + pretty-name: 'W1JetsToLNu_MadgraphPythia' + cross-section: 9625.0 + generated-events: 54106926.0 + fill-color: '#ff9933' + group: GWJets + order: 28 + +hist_TTLL_PowhegPythiaBkg.root: + type: mc + pretty-name: 'TTLL_PowhegPythiaBkg' + cross-section: 88.29 + generated-events: 68595608.0 + fill-color: '#ff6666' + group: GttBkg + order: 5 + +hist_TTLJ_PowhegPythia_ttother.root: + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttother' + cross-section: 365.34 + generated-events: 109124472.0 + fill-color: '#ff6666' + group: GttBkg + order: 4 + +hist_TTLJ_PowhegPythia_ttcc.root: + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttcc' + cross-section: 365.34 + generated-events: 109124472.0 + fill-color: '#990000' + legend: 'ttcc' + order: 2 + +hist_TTLJ_PowhegPythia_ttbj.root: + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttbj' + cross-section: 365.34 + generated-events: 109124472.0 + fill-color: '#660000' + legend: 'ttbj' + order: 1 + +hist_TTLJ_PowhegPythia_ttbb.root: + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttbb' + cross-section: 365.34 + generated-events: 109124472.0 + fill-color: '#330000' + legend: 'ttbb' + order: 0 + +hist_TTLJ_PowhegPythia_ttLF.root: + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttLF' + cross-section: 365.34 + generated-events: 109124472.0 + fill-color: '#cc0000' + legend: 'ttLF' + order: 3 + +hist_TTLJ_PowhegPythiaBkg.root: + type: mc + pretty-name: 'TTLJ_PowhegPythiaBkg' + cross-section: 365.34 + generated-events: 109124472.0 + fill-color: '#ff6666' + group: GttBkg + order: 6 + +hist_TTJJ_PowhegPythiaBkg.root: + type: mc + pretty-name: 'TTJJ_PowhegPythiaBkg' + cross-section: 377.96 + generated-events: 129211204.0 + fill-color: '#ff6666' + group: GttBkg + order: 7 + +hist_SingleTop_t_PowhegPythia.root: + type: mc + pretty-name: 'SingleTop_t_PowhegPythia' + cross-section: 136.02 + generated-events: 5982064.0 + fill-color: '#990099' + group: GSingleT + order: 14 + +hist_SingleTop_tW_PowhegPythia.root: + type: mc + pretty-name: 'SingleTop_tW_PowhegPythia' + cross-section: 35.85 + generated-events: 7884388.0 + fill-color: '#990099' + group: GSingleT + order: 15 + +hist_SingleTop_s_aMCatNLOPythia.root: + type: mc + pretty-name: 'SingleTop_s_aMCatNLOPythia' + cross-section: 3.36 + generated-events: 6185062.0 + fill-color: '#990099' + group: GSingleT + order: 16 + +hist_SingleTbar_t_PowhegPythia.root: + type: mc + pretty-name: 'SingleTbar_t_PowhegPythia' + cross-section: 80.95 + generated-events: 3675910.0 + fill-color: '#990099' + group: GSingleT + order: 17 + +hist_SingleTbar_tW_PowhegPythia.root: + type: mc + pretty-name: 'SingleTbar_tW_PowhegPythia' + cross-section: 35.85 + generated-events: 7686032.0 + fill-color: '#990099' + group: GSingleT + order: 18 + +hist_QCD_Pt-15to20_MuEnriched.root: + type: mc + pretty-name: 'QCD_Pt-15to20_MuEnriched' + cross-section: 3819570.0 + generated-events: 5859904.0 + fill-color: '#d0cfd4' + group: GQCD + order: 29 + +hist_QCD_Pt-20to30_MuEnriched.root: + type: mc + pretty-name: 'QCD_Pt-20to30_MuEnriched' + cross-section: 2960198.4 + generated-events: 28213684.0 + fill-color: '#d0cfd4' + group: GQCD + order: 30 + +hist_QCD_Pt-50to80_MuEnriched.root: + type: mc + pretty-name: 'QCD_Pt-50to80_MuEnriched' + cross-section: 437504.1 + generated-events: 24068613.0 + fill-color: '#d0cfd4' + group: GQCD + order: 31 + +hist_QCD_Pt-80to120_MuEnriched.root: + type: mc + pretty-name: 'QCD_Pt-80to120_MuEnriched' + cross-section: 106033.6648 + generated-events: 23248995.0 + fill-color: '#d0cfd4' + group: GQCD + order: 32 + +hist_QCD_Pt-120to170_MuEnriched.root: + type: mc + pretty-name: 'QCD_Pt-120to170_MuEnriched' + cross-section: 25190.51514 + generated-events: 20774848.0 + fill-color: '#d0cfd4' + group: GQCD + order: 33 + +hist_QCD_Pt-170to300_MuEnriched.root: + type: mc + pretty-name: 'QCD_Pt-170to300_MuEnriched' + cross-section: 8654.49315 + generated-events: 46170668.0 + fill-color: '#d0cfd4' + group: GQCD + order: 34 + +hist_QCD_Pt-300to470_MuEnriched.root: + type: mc + pretty-name: 'QCD_Pt-300to470_MuEnriched' + cross-section: 797.35269 + generated-events: 17744779.0 + fill-color: '#d0cfd4' + group: GQCD + order: 35 + +hist_QCD_Pt-470to600_MuEnriched.root: + type: mc + pretty-name: 'QCD_Pt-470to600_MuEnriched' + cross-section: 79.02553776 + generated-events: 24243589.0 + fill-color: '#d0cfd4' + group: GQCD + order: 36 + +hist_QCD_Pt-600to800_MuEnriched.root: + type: mc + pretty-name: 'QCD_Pt-600to800_MuEnriched' + cross-section: 25.09505908 + generated-events: 17263676.0 + fill-color: '#d0cfd4' + group: GQCD + order: 37 + +hist_QCD_Pt-800to1000_MuEnriched.root: + type: mc + pretty-name: 'QCD_Pt-800to1000_MuEnriched' + cross-section: 4.707368272 + generated-events: 17114527.0 + fill-color: '#d0cfd4' + group: GQCD + order: 38 + +hist_QCD_Pt-1000toInf_MuEnriched.root: + type: mc + pretty-name: 'QCD_Pt-1000toInf_MuEnriched' + cross-section: 1.621311692 + generated-events: 11596693.0 + fill-color: '#d0cfd4' + group: GQCD + order: 39 + +hist_QCD_Pt-15to20_EMEnriched.root: + type: mc + pretty-name: 'QCD_Pt-15to20_EMEnriched' + cross-section: 2302200.0 + generated-events: 11215220.0 + fill-color: '#d0cfd4' + group: GQCD + order: 40 + +hist_QCD_Pt-20to30_EMEnriched.root: + type: mc + pretty-name: 'QCD_Pt-20to30_EMEnriched' + cross-section: 5352960.0 + generated-events: 11212810.0 + fill-color: '#d0cfd4' + group: GQCD + order: 41 + +hist_QCD_Pt-30to50_EMEnriched.root: + type: mc + pretty-name: 'QCD_Pt-30to50_EMEnriched' + cross-section: 9928000.0 + generated-events: 14766010.0 + fill-color: '#d0cfd4' + group: GQCD + order: 42 + +hist_QCD_Pt-50to80_EMEnriched.root: + type: mc + pretty-name: 'QCD_Pt-50to80_EMEnriched' + cross-section: 2890800.0 + generated-events: 10477146.0 + fill-color: '#d0cfd4' + group: GQCD + order: 43 + +hist_QCD_Pt-80to120_EMEnriched.root: + type: mc + pretty-name: 'QCD_Pt-80to120_EMEnriched' + cross-section: 350000.0 + generated-events: 9104852.0 + fill-color: '#d0cfd4' + group: GQCD + order: 44 + +hist_QCD_Pt-120to170_EMEnriched.root: + type: mc + pretty-name: 'QCD_Pt-120to170_EMEnriched' + cross-section: 62964.0 + generated-events: 8515107.0 + fill-color: '#d0cfd4' + group: GQCD + order: 45 + +hist_QCD_Pt-300toInf_EMEnriched.root: + type: mc + pretty-name: 'QCD_Pt-300toInf_EMEnriched' + cross-section: 1350.0 + generated-events: 2874295.0 + fill-color: '#d0cfd4' + group: GQCD + order: 46 + diff --git a/plotIt/configs/files/files17_qcd.yml b/plotIt/configs/files/files17_qcd.yml new file mode 100644 index 0000000..9bd4bc4 --- /dev/null +++ b/plotIt/configs/files/files17_qcd.yml @@ -0,0 +1,444 @@ +'root17_qcd/hist_dataDriven_DataSingleMu.root': + type: data + legend: 'Data' + pretty-name: 'DataMu' + marker-size: 0.6 + group: GData + +'root17_qcd/hist_dataDriven_DataSingleEG.root': + type: data + legend: 'Data' + pretty-name: 'DataEG' + marker-size: 0.6 + group: GData + +'root17_qcd/hist_dataDriven_ttZToQQ_aMCatNLOMadspinPythia.root': + type: mc + pretty-name: 'ttZToQQ_aMCatNLOMadspinPythia' + cross-section: 0.5297 + generated-events: 356286.0 + fill-color: '#ff66ff' + group: GttX + order: 12 + #scale: 1.253 + +'root17_qcd/hist_dataDriven_ttZToLLNuNu_aMCatNLOMadspinPythia.root': + type: mc + pretty-name: 'ttZToLLNuNu_aMCatNLOMadspinPythia' + cross-section: 0.2529 + generated-events: 3570720.0 + fill-color: '#ff66ff' + group: GttX + order: 13 + #scale: 1.253 + +'root17_qcd/hist_dataDriven_ttWToQQ_aMCatNLOMadspinPythia.root': + type: mc + pretty-name: 'ttWToQQ_aMCatNLOMadspinPythia' + cross-section: 0.4062 + generated-events: 441560.0 + fill-color: '#ff66ff' + group: GttX + order: 10 + #scale: 1.253 + +'root17_qcd/hist_dataDriven_ttWToLNu_aMCatNLOMadspinPythia.root': + type: mc + pretty-name: 'ttWToLNu_aMCatNLOMadspinPythia' + cross-section: 0.2043 + generated-events: 2686141.0 + fill-color: '#ff66ff' + group: GttX + order: 11 + #scale: 1.253 + +'root17_qcd/hist_dataDriven_ttHTobb_PowhegPythia.root': + type: mc + pretty-name: 'ttHTobb_PowhegPythia' + cross-section: 0.2923 + generated-events: 7833734.0 + fill-color: '#ff66ff' + group: GttX + order: 8 + #scale: 1.253 + +'root17_qcd/hist_dataDriven_ttHToNonbb_PowhegPythia.root': + type: mc + pretty-name: 'ttHToNonbb_PowhegPythia' + cross-section: 0.2151 + generated-events: 7814711.0 + fill-color: '#ff66ff' + group: GttX + order: 9 + #scale: 1.253 + +'root17_qcd/hist_dataDriven_ZZ_Pythia.root': + type: mc + pretty-name: 'ZZ_Pythia' + cross-section: 16.523 + generated-events: 1949768.0 + fill-color: '#00cccc' + group: GVV + order: 21 + #scale: 1.253 + +'root17_qcd/hist_dataDriven_ZJets_M50_aMCatNLOPythia.root': + type: mc + pretty-name: 'ZJets_M50_aMCatNLOPythia' + cross-section: 6225.42 + generated-events: 123485957.0 + fill-color: '#000099' + group: GZJets + order: 22 + #scale: 1.253 + +'root17_qcd/hist_dataDriven_ZJets_M10to50_MadgraphPythia.root': + type: mc + pretty-name: 'ZJets_M10to50_MadgraphPythia' + cross-section: 18610.0 + generated-events: 39489654.0 + fill-color: '#000099' + group: GZJets + order: 23 + #scale: 1.253 + +'root17_qcd/hist_dataDriven_WZ_Pythia.root': + type: mc + pretty-name: 'WZ_Pythia' + cross-section: 47.13 + generated-events: 3928630.0 + fill-color: '#00cccc' + group: GVV + order: 20 + #scale: 1.253 + +'root17_qcd/hist_dataDriven_WW_Pythia.root': + type: mc + pretty-name: 'WW_Pythia' + cross-section: 118.7 + generated-events: 7791498.0 + fill-color: '#00cccc' + group: GVV + order: 19 + #scale: 1.253 + +'root17_qcd/hist_dataDriven_WJetsToLNu_MadgraphPythia.root': + type: mc + pretty-name: 'WJetsToLNu_MadgraphPythia' + cross-section: 61526.7 + generated-events: 77631180.0 + fill-color: '#ff9933' + legend: 'WJets' + order: 24 + #scale: 1.253 + +'root17_qcd/hist_dataDriven_TTLL_PowhegPythiaBkg.root': + type: mc + pretty-name: 'TTLL_PowhegPythiaBkg' + cross-section: 88.29 + generated-events: 68595608.0 + fill-color: '#ff6666' + group: GttBkg + order: 5 + #scale: 1.032 + +'root17_qcd/hist_dataDriven_TTLJ_PowhegPythia_ttother.root': + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttother' + cross-section: 365.34 + generated-events: 109124472.0 + fill-color: '#ff6666' + group: GttBkg + order: 4 + #scale: 1.032 + +'root17_qcd/hist_dataDriven_TTLJ_PowhegPythia_ttcc.root': + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttcc' + cross-section: 365.34 + generated-events: 109124472.0 + fill-color: '#990000' + legend: 'ttcc' + order: 2 + #scale: 1.032 + +'root17_qcd/hist_dataDriven_TTLJ_PowhegPythia_ttbj.root': + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttbj' + cross-section: 365.34 + generated-events: 109124472.0 + fill-color: '#660000' + legend: 'ttbj' + order: 1 + #scale: 0.681 + +'root17_qcd/hist_dataDriven_TTLJ_PowhegPythia_ttbb.root': + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttbb' + cross-section: 365.34 + generated-events: 109124472.0 + fill-color: '#330000' + legend: 'ttbb' + order: 0 + #scale: 1.892 + +'root17_qcd/hist_dataDriven_TTLJ_PowhegPythia_ttLF.root': + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttLF' + cross-section: 365.34 + generated-events: 109124472.0 + fill-color: '#cc0000' + legend: 'ttLF' + order: 3 + #scale: 1.032 + +'root17_qcd/hist_dataDriven_TTLJ_PowhegPythiaBkg.root': + type: mc + pretty-name: 'TTLJ_PowhegPythiaBkg' + cross-section: 365.34 + generated-events: 109124472.0 + fill-color: '#ff6666' + group: GttBkg + order: 6 + #scale: 1.032 + +'root17_qcd/hist_dataDriven_TTJJ_PowhegPythiaBkg.root': + type: mc + pretty-name: 'TTJJ_PowhegPythiaBkg' + cross-section: 377.96 + generated-events: 129211204.0 + fill-color: '#ff6666' + group: GttBkg + order: 7 + #scale: 1.032 + +'root17_qcd/hist_dataDriven_SingleTop_t_PowhegPythia.root': + type: mc + pretty-name: 'SingleTop_t_PowhegPythia' + cross-section: 136.02 + generated-events: 5982064.0 + fill-color: '#990099' + group: GSingleT + order: 14 + #scale: 1.253 + +'root17_qcd/hist_dataDriven_SingleTop_tW_PowhegPythia.root': + type: mc + pretty-name: 'SingleTop_tW_PowhegPythia' + cross-section: 35.85 + generated-events: 7884388.0 + fill-color: '#990099' + group: GSingleT + order: 15 + #scale: 1.253 + +'root17_qcd/hist_dataDriven_SingleTop_s_aMCatNLOPythia.root': + type: mc + pretty-name: 'SingleTop_s_aMCatNLOPythia' + cross-section: 3.36 + generated-events: 6185062.0 + fill-color: '#990099' + group: GSingleT + order: 16 + #scale: 1.253 + +'root17_qcd/hist_dataDriven_SingleTbar_t_PowhegPythia.root': + type: mc + pretty-name: 'SingleTbar_t_PowhegPythia' + cross-section: 80.95 + generated-events: 3675910.0 + fill-color: '#990099' + group: GSingleT + order: 17 + #scale: 1.253 + +'root17_qcd/hist_dataDriven_SingleTbar_tW_PowhegPythia.root': + type: mc + pretty-name: 'SingleTbar_tW_PowhegPythia' + cross-section: 35.85 + generated-events: 7686032.0 + fill-color: '#990099' + group: GSingleT + order: 18 + #scale: 1.253 + +'root17_qcd/hist_dataDriven_QCD_Pt-15to20_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-15to20_MuEnriched' + cross-section: 3819570.0 + generated-events: 5859904.0 + fill-color: '#d0cfd4' + group: GQCD + order: 29 + #scale: 1.253 + +'root17_qcd/hist_dataDriven_QCD_Pt-20to30_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-20to30_MuEnriched' + cross-section: 2960198.4 + generated-events: 28213684.0 + fill-color: '#d0cfd4' + group: GQCD + order: 30 + #scale: 1.253 + +'root17_qcd/hist_dataDriven_QCD_Pt-50to80_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-50to80_MuEnriched' + cross-section: 437504.1 + generated-events: 24068613.0 + fill-color: '#d0cfd4' + group: GQCD + order: 31 + #scale: 1.253 + +'root17_qcd/hist_dataDriven_QCD_Pt-80to120_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-80to120_MuEnriched' + cross-section: 106033.6648 + generated-events: 23248995.0 + fill-color: '#d0cfd4' + group: GQCD + order: 32 + #scale: 1.253 + +'root17_qcd/hist_dataDriven_QCD_Pt-120to170_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-120to170_MuEnriched' + cross-section: 25190.51514 + generated-events: 20774848.0 + fill-color: '#d0cfd4' + group: GQCD + order: 33 + #scale: 1.253 + +'root17_qcd/hist_dataDriven_QCD_Pt-170to300_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-170to300_MuEnriched' + cross-section: 8654.49315 + generated-events: 46170668.0 + fill-color: '#d0cfd4' + group: GQCD + order: 34 + #scale: 1.253 + +'root17_qcd/hist_dataDriven_QCD_Pt-300to470_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-300to470_MuEnriched' + cross-section: 797.35269 + generated-events: 17744779.0 + fill-color: '#d0cfd4' + group: GQCD + order: 35 + #scale: 1.253 + +'root17_qcd/hist_dataDriven_QCD_Pt-470to600_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-470to600_MuEnriched' + cross-section: 79.02553776 + generated-events: 24243589.0 + fill-color: '#d0cfd4' + group: GQCD + order: 36 + #scale: 1.253 + +'root17_qcd/hist_dataDriven_QCD_Pt-600to800_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-600to800_MuEnriched' + cross-section: 25.09505908 + generated-events: 17263676.0 + fill-color: '#d0cfd4' + group: GQCD + order: 37 + #scale: 1.253 + +'root17_qcd/hist_dataDriven_QCD_Pt-800to1000_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-800to1000_MuEnriched' + cross-section: 4.707368272 + generated-events: 17114527.0 + fill-color: '#d0cfd4' + group: GQCD + order: 38 + #scale: 1.253 + +'root17_qcd/hist_dataDriven_QCD_Pt-1000toInf_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-1000toInf_MuEnriched' + cross-section: 1.621311692 + generated-events: 11596693.0 + fill-color: '#d0cfd4' + group: GQCD + order: 39 + #scale: 1.253 + +'root17_qcd/hist_dataDriven_QCD_Pt-15to20_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-15to20_EMEnriched' + cross-section: 2302200.0 + generated-events: 11215220.0 + fill-color: '#d0cfd4' + group: GQCD + order: 40 + #scale: 1.253 + +'root17_qcd/hist_dataDriven_QCD_Pt-20to30_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-20to30_EMEnriched' + cross-section: 5352960.0 + generated-events: 11212810.0 + fill-color: '#d0cfd4' + group: GQCD + order: 41 + #scale: 1.253 + +'root17_qcd/hist_dataDriven_QCD_Pt-30to50_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-30to50_EMEnriched' + cross-section: 9928000.0 + generated-events: 14766010.0 + fill-color: '#d0cfd4' + group: GQCD + order: 42 + #scale: 1.253 + +'root17_qcd/hist_dataDriven_QCD_Pt-50to80_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-50to80_EMEnriched' + cross-section: 2890800.0 + generated-events: 10477146.0 + fill-color: '#d0cfd4' + group: GQCD + order: 43 + #scale: 1.253 + +'root17_qcd/hist_dataDriven_QCD_Pt-80to120_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-80to120_EMEnriched' + cross-section: 350000.0 + generated-events: 9104852.0 + fill-color: '#d0cfd4' + group: GQCD + order: 44 + #scale: 1.253 + +'root17_qcd/hist_dataDriven_QCD_Pt-120to170_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-120to170_EMEnriched' + cross-section: 62964.0 + generated-events: 8515107.0 + fill-color: '#d0cfd4' + group: GQCD + order: 45 + #scale: 1.253 + +'root17_qcd/hist_dataDriven_QCD_Pt-300toInf_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-300toInf_EMEnriched' + cross-section: 1350.0 + generated-events: 2874295.0 + fill-color: '#d0cfd4' + group: GQCD + order: 46 + #scale: 1.253 + diff --git a/plotIt/configs/files/files17_test.yml b/plotIt/configs/files/files17_test.yml new file mode 100644 index 0000000..4d836e5 --- /dev/null +++ b/plotIt/configs/files/files17_test.yml @@ -0,0 +1,401 @@ +'root17_test/hist_Nosys_DataSingleMu.root': + type: data + legend: 'Data' + pretty-name: 'DataMu' + marker-size: 0.6 + group: GData + +'root17_test/hist_Nosys_DataSingleEG.root': + type: data + legend: 'Data' + pretty-name: 'DataEG' + marker-size: 0.6 + group: GData + +'root17_test/hist_Nosys_ttZToQQ_aMCatNLOMadspinPythia.root': + type: mc + pretty-name: 'ttZToQQ_aMCatNLOMadspinPythia' + cross-section: 0.5297 + generated-events: 356286.0 + fill-color: '#ff66ff' + group: GttX + order: 12 + +'root17_test/hist_Nosys_ttZToLLNuNu_aMCatNLOMadspinPythia.root': + type: mc + pretty-name: 'ttZToLLNuNu_aMCatNLOMadspinPythia' + cross-section: 0.2529 + generated-events: 3570720.0 + fill-color: '#ff66ff' + group: GttX + order: 13 + +'root17_test/hist_Nosys_ttWToQQ_aMCatNLOMadspinPythia.root': + type: mc + pretty-name: 'ttWToQQ_aMCatNLOMadspinPythia' + cross-section: 0.4062 + generated-events: 441560.0 + fill-color: '#ff66ff' + group: GttX + order: 10 + +'root17_test/hist_Nosys_ttWToLNu_aMCatNLOMadspinPythia.root': + type: mc + pretty-name: 'ttWToLNu_aMCatNLOMadspinPythia' + cross-section: 0.2043 + generated-events: 2686141.0 + fill-color: '#ff66ff' + group: GttX + order: 11 + +'root17_test/hist_Nosys_ttHTobb_PowhegPythia.root': + type: mc + pretty-name: 'ttHTobb_PowhegPythia' + cross-section: 0.2923 + generated-events: 7833734.0 + fill-color: '#ff66ff' + group: GttX + order: 8 + +'root17_test/hist_Nosys_ttHToNonbb_PowhegPythia.root': + type: mc + pretty-name: 'ttHToNonbb_PowhegPythia' + cross-section: 0.2151 + generated-events: 7814711.0 + fill-color: '#ff66ff' + group: GttX + order: 9 + +'root17_test/hist_Nosys_ZZ_Pythia.root': + type: mc + pretty-name: 'ZZ_Pythia' + cross-section: 16.523 + generated-events: 1949768.0 + fill-color: '#00cccc' + group: GVV + order: 21 + +'root17_test/hist_Nosys_ZJets_M50_aMCatNLOPythia.root': + type: mc + pretty-name: 'ZJets_M50_aMCatNLOPythia' + cross-section: 6225.42 + generated-events: 123485957.0 + fill-color: '#000099' + group: GZJets + order: 22 + +'root17_test/hist_Nosys_ZJets_M10to50_MadgraphPythia.root': + type: mc + pretty-name: 'ZJets_M10to50_MadgraphPythia' + cross-section: 18610.0 + generated-events: 39489654.0 + fill-color: '#000099' + group: GZJets + order: 23 + +'root17_test/hist_Nosys_WZ_Pythia.root': + type: mc + pretty-name: 'WZ_Pythia' + cross-section: 47.13 + generated-events: 3928630.0 + fill-color: '#00cccc' + group: GVV + order: 20 + +'root17_test/hist_Nosys_WW_Pythia.root': + type: mc + pretty-name: 'WW_Pythia' + cross-section: 118.7 + generated-events: 7791498.0 + fill-color: '#00cccc' + group: GVV + order: 19 + +'root17_test/hist_Nosys_WJetsToLNu_MadgraphPythia.root': + type: mc + pretty-name: 'WJetsToLNu_MadgraphPythia' + cross-section: 61526.7 + generated-events: 77631180.0 + fill-color: '#ff9933' + legend: 'WJets' + order: 24 + +'root17_test/hist_Nosys_TTLL_PowhegPythiaBkg.root': + type: mc + pretty-name: 'TTLL_PowhegPythiaBkg' + cross-section: 88.29 + generated-events: 68595608.0 + fill-color: '#ff6666' + group: GttBkg + order: 5 + +'root17_test/hist_Nosys_TTLJ_PowhegPythia_ttother.root': + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttother' + cross-section: 365.34 + generated-events: 109124472.0 + fill-color: '#ff6666' + group: GttBkg + order: 4 + +'root17_test/hist_Nosys_TTLJ_PowhegPythia_ttcc.root': + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttcc' + cross-section: 365.34 + generated-events: 109124472.0 + fill-color: '#990000' + legend: 'ttcc' + order: 2 + +'root17_test/hist_Nosys_TTLJ_PowhegPythia_ttbj.root': + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttbj' + cross-section: 365.34 + generated-events: 109124472.0 + fill-color: '#660000' + legend: 'ttbj' + order: 1 + +'root17_test/hist_Nosys_TTLJ_PowhegPythia_ttbb.root': + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttbb' + cross-section: 365.34 + generated-events: 109124472.0 + fill-color: '#330000' + legend: 'ttbb' + order: 0 + +'root17_test/hist_Nosys_TTLJ_PowhegPythia_ttLF.root': + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttLF' + cross-section: 365.34 + generated-events: 109124472.0 + fill-color: '#cc0000' + legend: 'ttLF' + order: 3 + +'root17_test/hist_Nosys_TTLJ_PowhegPythiaBkg.root': + type: mc + pretty-name: 'TTLJ_PowhegPythiaBkg' + cross-section: 365.34 + generated-events: 109124472.0 + fill-color: '#ff6666' + group: GttBkg + order: 6 + +'root17_test/hist_Nosys_TTJJ_PowhegPythiaBkg.root': + type: mc + pretty-name: 'TTJJ_PowhegPythiaBkg' + cross-section: 377.96 + generated-events: 129211204.0 + fill-color: '#ff6666' + group: GttBkg + order: 7 + +'root17_test/hist_Nosys_SingleTop_t_PowhegPythia.root': + type: mc + pretty-name: 'SingleTop_t_PowhegPythia' + cross-section: 136.02 + generated-events: 5982064.0 + fill-color: '#990099' + group: GSingleT + order: 14 + +'root17_test/hist_Nosys_SingleTop_tW_PowhegPythia.root': + type: mc + pretty-name: 'SingleTop_tW_PowhegPythia' + cross-section: 35.85 + generated-events: 7884388.0 + fill-color: '#990099' + group: GSingleT + order: 15 + +'root17_test/hist_Nosys_SingleTop_s_aMCatNLOPythia.root': + type: mc + pretty-name: 'SingleTop_s_aMCatNLOPythia' + cross-section: 3.36 + generated-events: 6185062.0 + fill-color: '#990099' + group: GSingleT + order: 16 + +'root17_test/hist_Nosys_SingleTbar_t_PowhegPythia.root': + type: mc + pretty-name: 'SingleTbar_t_PowhegPythia' + cross-section: 80.95 + generated-events: 3675910.0 + fill-color: '#990099' + group: GSingleT + order: 17 + +'root17_test/hist_Nosys_SingleTbar_tW_PowhegPythia.root': + type: mc + pretty-name: 'SingleTbar_tW_PowhegPythia' + cross-section: 35.85 + generated-events: 7686032.0 + fill-color: '#990099' + group: GSingleT + order: 18 + +'root17_test/hist_Nosys_QCD_Pt-15to20_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-15to20_MuEnriched' + cross-section: 3819570.0 + generated-events: 5859904.0 + fill-color: '#d0cfd4' + group: GQCD + order: 29 + +'root17_test/hist_Nosys_QCD_Pt-20to30_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-20to30_MuEnriched' + cross-section: 2960198.4 + generated-events: 28213684.0 + fill-color: '#d0cfd4' + group: GQCD + order: 30 + +'root17_test/hist_Nosys_QCD_Pt-50to80_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-50to80_MuEnriched' + cross-section: 437504.1 + generated-events: 24068613.0 + fill-color: '#d0cfd4' + group: GQCD + order: 31 + +'root17_test/hist_Nosys_QCD_Pt-80to120_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-80to120_MuEnriched' + cross-section: 106033.6648 + generated-events: 23248995.0 + fill-color: '#d0cfd4' + group: GQCD + order: 32 + +'root17_test/hist_Nosys_QCD_Pt-120to170_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-120to170_MuEnriched' + cross-section: 25190.51514 + generated-events: 20774848.0 + fill-color: '#d0cfd4' + group: GQCD + order: 33 + +'root17_test/hist_Nosys_QCD_Pt-170to300_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-170to300_MuEnriched' + cross-section: 8654.49315 + generated-events: 46170668.0 + fill-color: '#d0cfd4' + group: GQCD + order: 34 + +'root17_test/hist_Nosys_QCD_Pt-300to470_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-300to470_MuEnriched' + cross-section: 797.35269 + generated-events: 17744779.0 + fill-color: '#d0cfd4' + group: GQCD + order: 35 + +'root17_test/hist_Nosys_QCD_Pt-470to600_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-470to600_MuEnriched' + cross-section: 79.02553776 + generated-events: 24243589.0 + fill-color: '#d0cfd4' + group: GQCD + order: 36 + +'root17_test/hist_Nosys_QCD_Pt-600to800_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-600to800_MuEnriched' + cross-section: 25.09505908 + generated-events: 17263676.0 + fill-color: '#d0cfd4' + group: GQCD + order: 37 + +'root17_test/hist_Nosys_QCD_Pt-800to1000_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-800to1000_MuEnriched' + cross-section: 4.707368272 + generated-events: 17114527.0 + fill-color: '#d0cfd4' + group: GQCD + order: 38 + +'root17_test/hist_Nosys_QCD_Pt-1000toInf_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-1000toInf_MuEnriched' + cross-section: 1.621311692 + generated-events: 11596693.0 + fill-color: '#d0cfd4' + group: GQCD + order: 39 + +'root17_test/hist_Nosys_QCD_Pt-15to20_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-15to20_EMEnriched' + cross-section: 2302200.0 + generated-events: 11215220.0 + fill-color: '#d0cfd4' + group: GQCD + order: 40 + +'root17_test/hist_Nosys_QCD_Pt-20to30_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-20to30_EMEnriched' + cross-section: 5352960.0 + generated-events: 11212810.0 + fill-color: '#d0cfd4' + group: GQCD + order: 41 + +'root17_test/hist_Nosys_QCD_Pt-30to50_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-30to50_EMEnriched' + cross-section: 9928000.0 + generated-events: 14766010.0 + fill-color: '#d0cfd4' + group: GQCD + order: 42 + +'root17_test/hist_Nosys_QCD_Pt-50to80_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-50to80_EMEnriched' + cross-section: 2890800.0 + generated-events: 10477146.0 + fill-color: '#d0cfd4' + group: GQCD + order: 43 + +'root17_test/hist_Nosys_QCD_Pt-80to120_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-80to120_EMEnriched' + cross-section: 350000.0 + generated-events: 9104852.0 + fill-color: '#d0cfd4' + group: GQCD + order: 44 + +'root17_test/hist_Nosys_QCD_Pt-120to170_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-120to170_EMEnriched' + cross-section: 62964.0 + generated-events: 8515107.0 + fill-color: '#d0cfd4' + group: GQCD + order: 45 + +'root17_test/hist_Nosys_QCD_Pt-300toInf_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-300toInf_EMEnriched' + cross-section: 1350.0 + generated-events: 2874295.0 + fill-color: '#d0cfd4' + group: GQCD + order: 46 + diff --git a/plotIt/configs/files/files18.yml b/plotIt/configs/files/files18.yml new file mode 100644 index 0000000..8d8270d --- /dev/null +++ b/plotIt/configs/files/files18.yml @@ -0,0 +1,401 @@ +hist_DataSingleMu.root: + type: data + legend: 'Data' + pretty-name: 'DataMu' + marker-size: 0.6 + group: GData + +hist_DataSingleEG.root: + type: data + legend: 'Data' + pretty-name: 'DataEG' + marker-size: 0.6 + group: GData + +hist_ttZToQQ_aMCatNLOMadspinPythia.root: + type: mc + pretty-name: 'ttZToQQ_aMCatNLOMadspinPythia' + cross-section: 0.5297 + generated-events: 355226.0 + fill-color: '#ff66ff' + group: GttX + order: 12 + +hist_ttZToLLNuNu_aMCatNLOMadspinPythia.root: + type: mc + pretty-name: 'ttZToLLNuNu_aMCatNLOMadspinPythia' + cross-section: 0.2529 + generated-events: 6274046.0 + fill-color: '#ff66ff' + group: GttX + order: 13 + +hist_ttWToQQ_aMCatNLOMadspinPythia.root: + type: mc + pretty-name: 'ttWToQQ_aMCatNLOMadspinPythia' + cross-section: 0.2043 + generated-events: 458226.0 + fill-color: '#ff66ff' + group: GttX + order: 10 + +hist_ttWToLNu_aMCatNLOMadspinPythia.root: + type: mc + pretty-name: 'ttWToLNu_aMCatNLOMadspinPythia' + cross-section: 0.2043 + generated-events: 2686095.0 + fill-color: '#ff66ff' + group: GttX + order: 11 + +hist_ttHTobb_PowhegPythia.root: + type: mc + pretty-name: 'ttHTobb_PowhegPythia' + cross-section: 0.2923 + generated-events: 11590377.0 + fill-color: '#ff66ff' + group: GttX + order: 8 + +hist_ttHToNonbb_PowhegPythia.root: + type: mc + pretty-name: 'ttHToNonbb_PowhegPythia' + cross-section: 0.2151 + generated-events: 7368333.0 + fill-color: '#ff66ff' + group: GttX + order: 9 + +hist_ZZ_Pythia.root: + type: mc + pretty-name: 'ZZ_Pythia' + cross-section: 16.523 + generated-events: 1979000.0 + fill-color: '#00cccc' + group: GVV + order: 21 + +hist_ZJets_M50_aMCatNLOPythia.root: + type: mc + pretty-name: 'ZJets_M50_aMCatNLOPythia' + cross-section: 6225.42 + generated-events: 130939668.0 + fill-color: '#000099' + group: GZJets + order: 22 + +hist_ZJets_M10to50_MadgraphPythia.root: + type: mc + pretty-name: 'ZJets_M10to50_MadgraphPythia' + cross-section: 18610.0 + generated-events: 39360792.0 + fill-color: '#000099' + group: GZJets + order: 23 + +hist_WZ_Pythia.root: + type: mc + pretty-name: 'WZ_Pythia' + cross-section: 47.13 + generated-events: 3885000.0 + fill-color: '#00cccc' + group: GVV + order: 20 + +hist_WW_Pythia.root: + type: mc + pretty-name: 'WW_Pythia' + cross-section: 118.7 + generated-events: 7850000.0 + fill-color: '#00cccc' + group: GVV + order: 19 + +hist_WJetsToLNu_MadgraphPythia.root: + type: mc + pretty-name: 'WJetsToLNu_MadgraphPythia' + cross-section: 61526.7 + generated-events: 70966439.0 + fill-color: '#ff9933' + group: GWJets + order: 24 + +hist_TTLL_PowhegPythiaBkg.root: + type: mc + pretty-name: 'TTLL_PowhegPythiaBkg' + cross-section: 88.29 + generated-events: 63791484.0 + fill-color: '#ff6666' + group: GttBkg + order: 5 + +hist_TTLJ_PowhegPythia_ttother.root: + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttother' + cross-section: 365.34 + generated-events: 100728756.0 + fill-color: '#ff6666' + group: GttBkg + order: 4 + +hist_TTLJ_PowhegPythia_ttcc.root: + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttcc' + cross-section: 365.34 + generated-events: 100728756.0 + fill-color: '#990000' + legend: 'ttcc' + order: 2 + +hist_TTLJ_PowhegPythia_ttbj.root: + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttbj' + cross-section: 365.34 + generated-events: 100728756.0 + fill-color: '#660000' + legend: 'ttbj' + order: 1 + +hist_TTLJ_PowhegPythia_ttbb.root: + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttbb' + cross-section: 365.34 + generated-events: 100728756.0 + fill-color: '#330000' + legend: 'ttbb' + order: 0 + +hist_TTLJ_PowhegPythia_ttLF.root: + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttLF' + cross-section: 365.34 + generated-events: 100728756.0 + fill-color: '#cc0000' + legend: 'ttLF' + order: 3 + +hist_TTLJ_PowhegPythiaBkg.root: + type: mc + pretty-name: 'TTLJ_PowhegPythiaBkg' + cross-section: 365.34 + generated-events: 100728756.0 + fill-color: '#ff6666' + group: GttBkg + order: 6 + +hist_TTJJ_PowhegPythiaBkg.root: + type: mc + pretty-name: 'TTJJ_PowhegPythiaBkg' + cross-section: 377.96 + generated-events: 132725582.0 + fill-color: '#ff6666' + group: GttBkg + order: 7 + +hist_SingleTop_t_PowhegPythia.root: + type: mc + pretty-name: 'SingleTop_t_PowhegPythia' + cross-section: 136.02 + generated-events: 144094782.0 + fill-color: '#990099' + group: GSingleT + order: 14 + +hist_SingleTop_tW_PowhegPythia.root: + type: mc + pretty-name: 'SingleTop_tW_PowhegPythia' + cross-section: 35.85 + generated-events: 9553912.0 + fill-color: '#990099' + group: GSingleT + order: 15 + +hist_SingleTop_s_aMCatNLOPythia.root: + type: mc + pretty-name: 'SingleTop_s_aMCatNLOPythia' + cross-section: 3.36 + generated-events: 12447484.0 + fill-color: '#990099' + group: GSingleT + order: 16 + +hist_SingleTbar_t_PowhegPythia.root: + type: mc + pretty-name: 'SingleTbar_t_PowhegPythia' + cross-section: 80.95 + generated-events: 74227130.0 + fill-color: '#990099' + group: GSingleT + order: 17 + +hist_SingleTbar_tW_PowhegPythia.root: + type: mc + pretty-name: 'SingleTbar_tW_PowhegPythia' + cross-section: 35.85 + generated-events: 7588180.0 + fill-color: '#990099' + group: GSingleT + order: 18 + +hist_QCD_Pt-15to20_MuEnriched.root: + type: mc + pretty-name: 'QCD_Pt-15to20_MuEnriched' + cross-section: 3819570.0 + generated-events: 4576061.0 + fill-color: '#d0cfd4' + group: GQCD + order: 29 + +hist_QCD_Pt-20to30_MuEnriched.root: + type: mc + pretty-name: 'QCD_Pt-20to30_MuEnriched' + cross-section: 2960198.4 + generated-events: 30612338.0 + fill-color: '#d0cfd4' + group: GQCD + order: 30 + +hist_QCD_Pt-50to80_MuEnriched.root: + type: mc + pretty-name: 'QCD_Pt-50to80_MuEnriched' + cross-section: 437504.1 + generated-events: 20268872.0 + fill-color: '#d0cfd4' + group: GQCD + order: 31 + +hist_QCD_Pt-80to120_MuEnriched.root: + type: mc + pretty-name: 'QCD_Pt-80to120_MuEnriched' + cross-section: 106033.6648 + generated-events: 25039361.0 + fill-color: '#d0cfd4' + group: GQCD + order: 32 + +hist_QCD_Pt-120to170_MuEnriched.root: + type: mc + pretty-name: 'QCD_Pt-120to170_MuEnriched' + cross-section: 25190.51514 + generated-events: 20682254.0 + fill-color: '#d0cfd4' + group: GQCD + order: 33 + +hist_QCD_Pt-170to300_MuEnriched.root: + type: mc + pretty-name: 'QCD_Pt-170to300_MuEnriched' + cross-section: 8654.49315 + generated-events: 35978539.0 + fill-color: '#d0cfd4' + group: GQCD + order: 34 + +hist_QCD_Pt-300to470_MuEnriched.root: + type: mc + pretty-name: 'QCD_Pt-300to470_MuEnriched' + cross-section: 797.35269 + generated-events: 28996145.0 + fill-color: '#d0cfd4' + group: GQCD + order: 35 + +hist_QCD_Pt-470to600_MuEnriched.root: + type: mc + pretty-name: 'QCD_Pt-470to600_MuEnriched' + cross-section: 79.02553776 + generated-events: 20003034.0 + fill-color: '#d0cfd4' + group: GQCD + order: 36 + +hist_QCD_Pt-600to800_MuEnriched.root: + type: mc + pretty-name: 'QCD_Pt-600to800_MuEnriched' + cross-section: 25.09505908 + generated-events: 16618977.0 + fill-color: '#d0cfd4' + group: GQCD + order: 37 + +hist_QCD_Pt-1000toInf_MuEnriched.root: + type: mc + pretty-name: 'QCD_Pt-1000toInf_MuEnriched' + cross-section: 1.62131692 + generated-events: 10719790.0 + fill-color: '#d0cfd4' + group: GQCD + order: 38 + +hist_QCD_Pt-15to20_EMEnriched.root: + type: mc + pretty-name: 'QCD_Pt-15to20_EMEnriched' + cross-section: 2302200.0 + generated-events: 14578212.0 + fill-color: '#d0cfd4' + group: GQCD + order: 39 + +hist_QCD_Pt-20to30_EMEnriched.root: + type: mc + pretty-name: 'QCD_Pt-20to30_EMEnriched' + cross-section: 5352960.0 + generated-events: 14255377.0 + fill-color: '#d0cfd4' + group: GQCD + order: 40 + +hist_QCD_Pt-30to50_EMEnriched.root: + type: mc + pretty-name: 'QCD_Pt-30to50_EMEnriched' + cross-section: 9928000.0 + generated-events: 15086084.0 + fill-color: '#d0cfd4' + group: GQCD + order: 41 + +hist_QCD_Pt-50to80_EMEnriched.root: + type: mc + pretty-name: 'QCD_Pt-50to80_EMEnriched' + cross-section: 2890800.0 + generated-events: 10798233.0 + fill-color: '#d0cfd4' + group: GQCD + order: 42 + +hist_QCD_Pt-80to120_EMEnriched.root: + type: mc + pretty-name: 'QCD_Pt-80to120_EMEnriched' + cross-section: 350000.0 + generated-events: 9648791.0 + fill-color: '#d0cfd4' + group: GQCD + order: 43 + +hist_QCD_Pt-120to170_EMEnriched.root: + type: mc + pretty-name: 'QCD_Pt-120to170_EMEnriched' + cross-section: 62964.0 + generated-events: 9964143.0 + fill-color: '#d0cfd4' + group: GQCD + order: 44 + +hist_QCD_Pt-170to300_EMEnriched.root: + type: mc + pretty-name: 'QCD_Pt-170to300_EMEnriched' + cross-section: 18810.0 + generated-events: 3712174.0 + fill-color: '#d0cfd4' + group: GQCD + order: 45 + +hist_QCD_Pt-300toInf_EMEnriched.root: + type: mc + pretty-name: 'QCD_Pt-300toInf_EMEnriched' + cross-section: 1350.0 + generated-events: 2901355.0 + fill-color: '#d0cfd4' + group: GQCD + order: 46 + diff --git a/plotIt/configs/files/files18_qcd.yml b/plotIt/configs/files/files18_qcd.yml new file mode 100644 index 0000000..66920d3 --- /dev/null +++ b/plotIt/configs/files/files18_qcd.yml @@ -0,0 +1,444 @@ +'root18_qcd/hist_dataDriven_DataSingleMu.root': + type: data + legend: 'Data' + pretty-name: 'DataMu' + marker-size: 0.6 + group: GData + +'root18_qcd/hist_dataDriven_DataSingleEG.root': + type: data + legend: 'Data' + pretty-name: 'DataEG' + marker-size: 0.6 + group: GData + +'root18_qcd/hist_dataDriven_ttZToQQ_aMCatNLOMadspinPythia.root': + type: mc + pretty-name: 'ttZToQQ_aMCatNLOMadspinPythia' + cross-section: 0.5297 + generated-events: 355226.0 + fill-color: '#ff66ff' + group: GttX + order: 12 + #scale: 1.092 + +'root18_qcd/hist_dataDriven_ttZToLLNuNu_aMCatNLOMadspinPythia.root': + type: mc + pretty-name: 'ttZToLLNuNu_aMCatNLOMadspinPythia' + cross-section: 0.2529 + generated-events: 6274046.0 + fill-color: '#ff66ff' + group: GttX + order: 13 + #scale: 1.092 + +'root18_qcd/hist_dataDriven_ttWToQQ_aMCatNLOMadspinPythia.root': + type: mc + pretty-name: 'ttWToQQ_aMCatNLOMadspinPythia' + cross-section: 0.2043 + generated-events: 458226.0 + fill-color: '#ff66ff' + group: GttX + order: 10 + #scale: 1.092 + +'root18_qcd/hist_dataDriven_ttWToLNu_aMCatNLOMadspinPythia.root': + type: mc + pretty-name: 'ttWToLNu_aMCatNLOMadspinPythia' + cross-section: 0.2043 + generated-events: 2686095.0 + fill-color: '#ff66ff' + group: GttX + order: 11 + #scale: 1.092 + +'root18_qcd/hist_dataDriven_ttHTobb_PowhegPythia.root': + type: mc + pretty-name: 'ttHTobb_PowhegPythia' + cross-section: 0.2923 + generated-events: 11590377.0 + fill-color: '#ff66ff' + group: GttX + order: 8 + #scale: 1.092 + +'root18_qcd/hist_dataDriven_ttHToNonbb_PowhegPythia.root': + type: mc + pretty-name: 'ttHToNonbb_PowhegPythia' + cross-section: 0.2151 + generated-events: 7368333.0 + fill-color: '#ff66ff' + group: GttX + order: 9 + #scale: 1.092 + +'root18_qcd/hist_dataDriven_ZZ_Pythia.root': + type: mc + pretty-name: 'ZZ_Pythia' + cross-section: 16.523 + generated-events: 1979000.0 + fill-color: '#00cccc' + group: GVV + order: 21 + #scale: 1.092 + +'root18_qcd/hist_dataDriven_ZJets_M50_aMCatNLOPythia.root': + type: mc + pretty-name: 'ZJets_M50_aMCatNLOPythia' + cross-section: 6225.42 + generated-events: 100114403.0 + fill-color: '#000099' + group: GZJets + order: 22 + #scale: 1.092 + +'root18_qcd/hist_dataDriven_ZJets_M10to50_MadgraphPythia.root': + type: mc + pretty-name: 'ZJets_M10to50_MadgraphPythia' + cross-section: 18610.0 + generated-events: 39360792.0 + fill-color: '#000099' + group: GZJets + order: 23 + #scale: 1.092 + +'root18_qcd/hist_dataDriven_WZ_Pythia.root': + type: mc + pretty-name: 'WZ_Pythia' + cross-section: 47.13 + generated-events: 3885000.0 + fill-color: '#00cccc' + group: GVV + order: 20 + #scale: 1.092 + +'root18_qcd/hist_dataDriven_WW_Pythia.root': + type: mc + pretty-name: 'WW_Pythia' + cross-section: 118.7 + generated-events: 7850000.0 + fill-color: '#00cccc' + group: GVV + order: 19 + #scale: 1.092 + +'root18_qcd/hist_dataDriven_WJetsToLNu_MadgraphPythia.root': + type: mc + pretty-name: 'WJetsToLNu_MadgraphPythia' + cross-section: 61526.7 + generated-events: 70966439.0 + fill-color: '#ff9933' + legend: 'WJets' + order: 24 + #scale: 1.092 + +'root18_qcd/hist_dataDriven_TTLL_PowhegPythiaBkg.root': + type: mc + pretty-name: 'TTLL_PowhegPythiaBkg' + cross-section: 88.29 + generated-events: 63791484.0 + fill-color: '#ff6666' + group: GttBkg + order: 5 + #scale: 0.998 + +'root18_qcd/hist_dataDriven_TTLJ_PowhegPythia_ttother.root': + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttother' + cross-section: 365.34 + generated-events: 100728756.0 + fill-color: '#ff6666' + group: GttBkg + order: 4 + #scale: 0.998 + +'root18_qcd/hist_dataDriven_TTLJ_PowhegPythia_ttcc.root': + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttcc' + cross-section: 365.34 + generated-events: 100728756.0 + fill-color: '#990000' + legend: 'ttcc' + order: 2 + #scale: 0.998 + +'root18_qcd/hist_dataDriven_TTLJ_PowhegPythia_ttbj.root': + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttbj' + cross-section: 365.34 + generated-events: 100728756.0 + fill-color: '#660000' + legend: 'ttbj' + order: 1 + #scale: 1.11 + +'root18_qcd/hist_dataDriven_TTLJ_PowhegPythia_ttbb.root': + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttbb' + cross-section: 365.34 + generated-events: 100728756.0 + fill-color: '#330000' + legend: 'ttbb' + order: 0 + #scale: 1.0 + +'root18_qcd/hist_dataDriven_TTLJ_PowhegPythia_ttLF.root': + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttLF' + cross-section: 365.34 + generated-events: 100728756.0 + fill-color: '#cc0000' + legend: 'ttLF' + order: 3 + #scale: 0.998 + +'root18_qcd/hist_dataDriven_TTLJ_PowhegPythiaBkg.root': + type: mc + pretty-name: 'TTLJ_PowhegPythiaBkg' + cross-section: 365.34 + generated-events: 100728756.0 + fill-color: '#ff6666' + group: GttBkg + order: 6 + #scale: 0.998 + +'root18_qcd/hist_dataDriven_TTJJ_PowhegPythiaBkg.root': + type: mc + pretty-name: 'TTJJ_PowhegPythiaBkg' + cross-section: 377.96 + generated-events: 132725582.0 + fill-color: '#ff6666' + group: GttBkg + order: 7 + #scale: 0.998 + +'root18_qcd/hist_dataDriven_SingleTop_t_PowhegPythia.root': + type: mc + pretty-name: 'SingleTop_t_PowhegPythia' + cross-section: 136.02 + generated-events: 144094782.0 + fill-color: '#990099' + group: GSingleT + order: 14 + #scale: 1.092 + +'root18_qcd/hist_dataDriven_SingleTop_tW_PowhegPythia.root': + type: mc + pretty-name: 'SingleTop_tW_PowhegPythia' + cross-section: 35.85 + generated-events: 9553912.0 + fill-color: '#990099' + group: GSingleT + order: 15 + #scale: 1.092 + +'root18_qcd/hist_dataDriven_SingleTop_s_aMCatNLOPythia.root': + type: mc + pretty-name: 'SingleTop_s_aMCatNLOPythia' + cross-section: 3.36 + generated-events: 12447484.0 + fill-color: '#990099' + group: GSingleT + order: 16 + #scale: 1.092 + +'root18_qcd/hist_dataDriven_SingleTbar_t_PowhegPythia.root': + type: mc + pretty-name: 'SingleTbar_t_PowhegPythia' + cross-section: 80.95 + generated-events: 74227130.0 + fill-color: '#990099' + group: GSingleT + order: 17 + #scale: 1.092 + +'root18_qcd/hist_dataDriven_SingleTbar_tW_PowhegPythia.root': + type: mc + pretty-name: 'SingleTbar_tW_PowhegPythia' + cross-section: 35.85 + generated-events: 7588180.0 + fill-color: '#990099' + group: GSingleT + order: 18 + #scale: 1.092 + +'root18_qcd/hist_dataDriven_QCD_Pt-15to20_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-15to20_MuEnriched' + cross-section: 3819570.0 + generated-events: 4576061.0 + fill-color: '#d0cfd4' + group: GQCD + order: 29 + #scale: 1.092 + +'root18_qcd/hist_dataDriven_QCD_Pt-20to30_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-20to30_MuEnriched' + cross-section: 2960198.4 + generated-events: 30612338.0 + fill-color: '#d0cfd4' + group: GQCD + order: 30 + #scale: 1.092 + +'root18_qcd/hist_dataDriven_QCD_Pt-50to80_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-50to80_MuEnriched' + cross-section: 437504.1 + generated-events: 20268872.0 + fill-color: '#d0cfd4' + group: GQCD + order: 31 + #scale: 1.092 + +'root18_qcd/hist_dataDriven_QCD_Pt-80to120_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-80to120_MuEnriched' + cross-section: 106033.6648 + generated-events: 25039361.0 + fill-color: '#d0cfd4' + group: GQCD + order: 32 + #scale: 1.092 + +'root18_qcd/hist_dataDriven_QCD_Pt-120to170_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-120to170_MuEnriched' + cross-section: 25190.51514 + generated-events: 20682254.0 + fill-color: '#d0cfd4' + group: GQCD + order: 33 + #scale: 1.092 + +'root18_qcd/hist_dataDriven_QCD_Pt-170to300_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-170to300_MuEnriched' + cross-section: 8654.49315 + generated-events: 35978539.0 + fill-color: '#d0cfd4' + group: GQCD + order: 34 + #scale: 1.092 + +'root18_qcd/hist_dataDriven_QCD_Pt-300to470_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-300to470_MuEnriched' + cross-section: 797.35269 + generated-events: 28996145.0 + fill-color: '#d0cfd4' + group: GQCD + order: 35 + #scale: 1.092 + +'root18_qcd/hist_dataDriven_QCD_Pt-470to600_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-470to600_MuEnriched' + cross-section: 79.02553776 + generated-events: 20003034.0 + fill-color: '#d0cfd4' + group: GQCD + order: 36 + #scale: 1.092 + +'root18_qcd/hist_dataDriven_QCD_Pt-600to800_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-600to800_MuEnriched' + cross-section: 25.09505908 + generated-events: 16618977.0 + fill-color: '#d0cfd4' + group: GQCD + order: 37 + #scale: 1.092 + +'root18_qcd/hist_dataDriven_QCD_Pt-1000toInf_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-1000toInf_MuEnriched' + cross-section: 1.62131692 + generated-events: 10719790.0 + fill-color: '#d0cfd4' + group: GQCD + order: 38 + #scale: 1.092 + +'root18_qcd/hist_dataDriven_QCD_Pt-15to20_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-15to20_EMEnriched' + cross-section: 2302200.0 + generated-events: 14578212.0 + fill-color: '#d0cfd4' + group: GQCD + order: 39 + #scale: 1.092 + +'root18_qcd/hist_dataDriven_QCD_Pt-20to30_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-20to30_EMEnriched' + cross-section: 5352960.0 + generated-events: 14255377.0 + fill-color: '#d0cfd4' + group: GQCD + order: 40 + #scale: 1.092 + +'root18_qcd/hist_dataDriven_QCD_Pt-30to50_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-30to50_EMEnriched' + cross-section: 9928000.0 + generated-events: 15086084.0 + fill-color: '#d0cfd4' + group: GQCD + order: 41 + #scale: 1.092 + +'root18_qcd/hist_dataDriven_QCD_Pt-50to80_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-50to80_EMEnriched' + cross-section: 2890800.0 + generated-events: 10798233.0 + fill-color: '#d0cfd4' + group: GQCD + order: 42 + #scale: 1.092 + +'root18_qcd/hist_dataDriven_QCD_Pt-80to120_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-80to120_EMEnriched' + cross-section: 350000.0 + generated-events: 9648791.0 + fill-color: '#d0cfd4' + group: GQCD + order: 43 + #scale: 1.092 + +'root18_qcd/hist_dataDriven_QCD_Pt-120to170_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-120to170_EMEnriched' + cross-section: 62964.0 + generated-events: 9964143.0 + fill-color: '#d0cfd4' + group: GQCD + order: 44 + #scale: 1.092 + +'root18_qcd/hist_dataDriven_QCD_Pt-170to300_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-170to300_EMEnriched' + cross-section: 18810.0 + generated-events: 3712174.0 + fill-color: '#d0cfd4' + group: GQCD + order: 45 + #scale: 1.092 + +'root18_qcd/hist_dataDriven_QCD_Pt-300toInf_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-300toInf_EMEnriched' + cross-section: 1350.0 + generated-events: 2901355.0 + fill-color: '#d0cfd4' + group: GQCD + order: 46 + #scale: 1.092 + diff --git a/plotIt/configs/files/files18_test.yml b/plotIt/configs/files/files18_test.yml new file mode 100644 index 0000000..ecb1613 --- /dev/null +++ b/plotIt/configs/files/files18_test.yml @@ -0,0 +1,401 @@ +'root18_test/hist_Nosys_DataSingleMu.root': + type: data + legend: 'Data' + pretty-name: 'DataMu' + marker-size: 0.6 + group: GData + +'root18_test/hist_Nosys_DataSingleEG.root': + type: data + legend: 'Data' + pretty-name: 'DataEG' + marker-size: 0.6 + group: GData + +'root18_test/hist_Nosys_ttZToQQ_aMCatNLOMadspinPythia.root': + type: mc + pretty-name: 'ttZToQQ_aMCatNLOMadspinPythia' + cross-section: 0.5297 + generated-events: 355226.0 + fill-color: '#ff66ff' + group: GttX + order: 12 + +'root18_test/hist_Nosys_ttZToLLNuNu_aMCatNLOMadspinPythia.root': + type: mc + pretty-name: 'ttZToLLNuNu_aMCatNLOMadspinPythia' + cross-section: 0.2529 + generated-events: 6274046.0 + fill-color: '#ff66ff' + group: GttX + order: 13 + +'root18_test/hist_Nosys_ttWToQQ_aMCatNLOMadspinPythia.root': + type: mc + pretty-name: 'ttWToQQ_aMCatNLOMadspinPythia' + cross-section: 0.2043 + generated-events: 458226.0 + fill-color: '#ff66ff' + group: GttX + order: 10 + +'root18_test/hist_Nosys_ttWToLNu_aMCatNLOMadspinPythia.root': + type: mc + pretty-name: 'ttWToLNu_aMCatNLOMadspinPythia' + cross-section: 0.2043 + generated-events: 2686095.0 + fill-color: '#ff66ff' + group: GttX + order: 11 + +'root18_test/hist_Nosys_ttHTobb_PowhegPythia.root': + type: mc + pretty-name: 'ttHTobb_PowhegPythia' + cross-section: 0.2923 + generated-events: 11590377.0 + fill-color: '#ff66ff' + group: GttX + order: 8 + +'root18_test/hist_Nosys_ttHToNonbb_PowhegPythia.root': + type: mc + pretty-name: 'ttHToNonbb_PowhegPythia' + cross-section: 0.2151 + generated-events: 7368333.0 + fill-color: '#ff66ff' + group: GttX + order: 9 + +'root18_test/hist_Nosys_ZZ_Pythia.root': + type: mc + pretty-name: 'ZZ_Pythia' + cross-section: 16.523 + generated-events: 1979000.0 + fill-color: '#00cccc' + group: GVV + order: 21 + +'root18_test/hist_Nosys_ZJets_M50_aMCatNLOPythia.root': + type: mc + pretty-name: 'ZJets_M50_aMCatNLOPythia' + cross-section: 6225.42 + generated-events: 100114403.0 + fill-color: '#000099' + group: GZJets + order: 22 + +'root18_test/hist_Nosys_ZJets_M10to50_MadgraphPythia.root': + type: mc + pretty-name: 'ZJets_M10to50_MadgraphPythia' + cross-section: 18610.0 + generated-events: 39360792.0 + fill-color: '#000099' + group: GZJets + order: 23 + +'root18_test/hist_Nosys_WZ_Pythia.root': + type: mc + pretty-name: 'WZ_Pythia' + cross-section: 47.13 + generated-events: 3885000.0 + fill-color: '#00cccc' + group: GVV + order: 20 + +'root18_test/hist_Nosys_WW_Pythia.root': + type: mc + pretty-name: 'WW_Pythia' + cross-section: 118.7 + generated-events: 7850000.0 + fill-color: '#00cccc' + group: GVV + order: 19 + +'root18_test/hist_Nosys_WJetsToLNu_MadgraphPythia.root': + type: mc + pretty-name: 'WJetsToLNu_MadgraphPythia' + cross-section: 61526.7 + generated-events: 70966439.0 + fill-color: '#ff9933' + legend: 'WJets' + order: 24 + +'root18_test/hist_Nosys_TTLL_PowhegPythiaBkg.root': + type: mc + pretty-name: 'TTLL_PowhegPythiaBkg' + cross-section: 88.29 + generated-events: 63791484.0 + fill-color: '#ff6666' + group: GttBkg + order: 5 + +'root18_test/hist_Nosys_TTLJ_PowhegPythia_ttother.root': + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttother' + cross-section: 365.34 + generated-events: 100728756.0 + fill-color: '#ff6666' + group: GttBkg + order: 4 + +'root18_test/hist_Nosys_TTLJ_PowhegPythia_ttcc.root': + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttcc' + cross-section: 365.34 + generated-events: 100728756.0 + fill-color: '#990000' + legend: 'ttcc' + order: 2 + +'root18_test/hist_Nosys_TTLJ_PowhegPythia_ttbj.root': + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttbj' + cross-section: 365.34 + generated-events: 100728756.0 + fill-color: '#660000' + legend: 'ttbj' + order: 1 + +'root18_test/hist_Nosys_TTLJ_PowhegPythia_ttbb.root': + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttbb' + cross-section: 365.34 + generated-events: 100728756.0 + fill-color: '#330000' + legend: 'ttbb' + order: 0 + +'root18_test/hist_Nosys_TTLJ_PowhegPythia_ttLF.root': + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttLF' + cross-section: 365.34 + generated-events: 100728756.0 + fill-color: '#cc0000' + legend: 'ttLF' + order: 3 + +'root18_test/hist_Nosys_TTLJ_PowhegPythiaBkg.root': + type: mc + pretty-name: 'TTLJ_PowhegPythiaBkg' + cross-section: 365.34 + generated-events: 100728756.0 + fill-color: '#ff6666' + group: GttBkg + order: 6 + +'root18_test/hist_Nosys_TTJJ_PowhegPythiaBkg.root': + type: mc + pretty-name: 'TTJJ_PowhegPythiaBkg' + cross-section: 377.96 + generated-events: 132725582.0 + fill-color: '#ff6666' + group: GttBkg + order: 7 + +'root18_test/hist_Nosys_SingleTop_t_PowhegPythia.root': + type: mc + pretty-name: 'SingleTop_t_PowhegPythia' + cross-section: 136.02 + generated-events: 144094782.0 + fill-color: '#990099' + group: GSingleT + order: 14 + +'root18_test/hist_Nosys_SingleTop_tW_PowhegPythia.root': + type: mc + pretty-name: 'SingleTop_tW_PowhegPythia' + cross-section: 35.85 + generated-events: 9553912.0 + fill-color: '#990099' + group: GSingleT + order: 15 + +'root18_test/hist_Nosys_SingleTop_s_aMCatNLOPythia.root': + type: mc + pretty-name: 'SingleTop_s_aMCatNLOPythia' + cross-section: 3.36 + generated-events: 12447484.0 + fill-color: '#990099' + group: GSingleT + order: 16 + +'root18_test/hist_Nosys_SingleTbar_t_PowhegPythia.root': + type: mc + pretty-name: 'SingleTbar_t_PowhegPythia' + cross-section: 80.95 + generated-events: 74227130.0 + fill-color: '#990099' + group: GSingleT + order: 17 + +'root18_test/hist_Nosys_SingleTbar_tW_PowhegPythia.root': + type: mc + pretty-name: 'SingleTbar_tW_PowhegPythia' + cross-section: 35.85 + generated-events: 7588180.0 + fill-color: '#990099' + group: GSingleT + order: 18 + +'root18_test/hist_Nosys_QCD_Pt-15to20_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-15to20_MuEnriched' + cross-section: 3819570.0 + generated-events: 4576061.0 + fill-color: '#d0cfd4' + group: GQCD + order: 29 + +'root18_test/hist_Nosys_QCD_Pt-20to30_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-20to30_MuEnriched' + cross-section: 2960198.4 + generated-events: 30612338.0 + fill-color: '#d0cfd4' + group: GQCD + order: 30 + +'root18_test/hist_Nosys_QCD_Pt-50to80_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-50to80_MuEnriched' + cross-section: 437504.1 + generated-events: 20268872.0 + fill-color: '#d0cfd4' + group: GQCD + order: 31 + +'root18_test/hist_Nosys_QCD_Pt-80to120_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-80to120_MuEnriched' + cross-section: 106033.6648 + generated-events: 25039361.0 + fill-color: '#d0cfd4' + group: GQCD + order: 32 + +'root18_test/hist_Nosys_QCD_Pt-120to170_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-120to170_MuEnriched' + cross-section: 25190.51514 + generated-events: 20682254.0 + fill-color: '#d0cfd4' + group: GQCD + order: 33 + +'root18_test/hist_Nosys_QCD_Pt-170to300_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-170to300_MuEnriched' + cross-section: 8654.49315 + generated-events: 35978539.0 + fill-color: '#d0cfd4' + group: GQCD + order: 34 + +'root18_test/hist_Nosys_QCD_Pt-300to470_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-300to470_MuEnriched' + cross-section: 797.35269 + generated-events: 28996145.0 + fill-color: '#d0cfd4' + group: GQCD + order: 35 + +'root18_test/hist_Nosys_QCD_Pt-470to600_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-470to600_MuEnriched' + cross-section: 79.02553776 + generated-events: 20003034.0 + fill-color: '#d0cfd4' + group: GQCD + order: 36 + +'root18_test/hist_Nosys_QCD_Pt-600to800_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-600to800_MuEnriched' + cross-section: 25.09505908 + generated-events: 16618977.0 + fill-color: '#d0cfd4' + group: GQCD + order: 37 + +'root18_test/hist_Nosys_QCD_Pt-1000toInf_MuEnriched.root': + type: mc + pretty-name: 'QCD_Pt-1000toInf_MuEnriched' + cross-section: 1.62131692 + generated-events: 10719790.0 + fill-color: '#d0cfd4' + group: GQCD + order: 38 + +'root18_test/hist_Nosys_QCD_Pt-15to20_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-15to20_EMEnriched' + cross-section: 2302200.0 + generated-events: 14578212.0 + fill-color: '#d0cfd4' + group: GQCD + order: 39 + +'root18_test/hist_Nosys_QCD_Pt-20to30_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-20to30_EMEnriched' + cross-section: 5352960.0 + generated-events: 14255377.0 + fill-color: '#d0cfd4' + group: GQCD + order: 40 + +'root18_test/hist_Nosys_QCD_Pt-30to50_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-30to50_EMEnriched' + cross-section: 9928000.0 + generated-events: 15086084.0 + fill-color: '#d0cfd4' + group: GQCD + order: 41 + +'root18_test/hist_Nosys_QCD_Pt-50to80_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-50to80_EMEnriched' + cross-section: 2890800.0 + generated-events: 10798233.0 + fill-color: '#d0cfd4' + group: GQCD + order: 42 + +'root18_test/hist_Nosys_QCD_Pt-80to120_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-80to120_EMEnriched' + cross-section: 350000.0 + generated-events: 9648791.0 + fill-color: '#d0cfd4' + group: GQCD + order: 43 + +'root18_test/hist_Nosys_QCD_Pt-120to170_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-120to170_EMEnriched' + cross-section: 62964.0 + generated-events: 9964143.0 + fill-color: '#d0cfd4' + group: GQCD + order: 44 + +'root18_test/hist_Nosys_QCD_Pt-170to300_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-170to300_EMEnriched' + cross-section: 18810.0 + generated-events: 3712174.0 + fill-color: '#d0cfd4' + group: GQCD + order: 45 + +'root18_test/hist_Nosys_QCD_Pt-300toInf_EMEnriched.root': + type: mc + pretty-name: 'QCD_Pt-300toInf_EMEnriched' + cross-section: 1350.0 + generated-events: 2901355.0 + fill-color: '#d0cfd4' + group: GQCD + order: 46 + diff --git a/plotIt/configs/files16.yml b/plotIt/configs/files16.yml index 70e06c2..2c4523e 100644 --- a/plotIt/configs/files16.yml +++ b/plotIt/configs/files16.yml @@ -1,384 +1,473 @@ -'root16/hist_DataSingleMu.root': +'hist_DataSingleMu.root': type: data + pretty-name: 'DataSingleMu' legend: 'Data' - pretty-name: 'DataMu' marker-size: 0.6 group: GData -'root16/hist_DataSingleEG.root': +'hist_DataSingleEG.root': type: data + pretty-name: 'DataSingleEG' legend: 'Data' - pretty-name: 'DataEG' marker-size: 0.6 group: GData -'root16/hist_ttZ_Madgraph.root': +'hist_TTLJ_PowhegPythia_ttbb.root': type: mc - pretty-name: 'ttZ_Madgraph' - cross-section: 0.2529 - generated-events: 3685785.0 - fill-color: '#ff66ff' - group: GttX - order: 8 - scale: 1 + pretty-name: 'TTLJ_PowhegPythia_ttbb' + cross-section: 365.34 + generated-events: 106736180.0 + #fill-color: '#330000' + group: Gttbb + order: 1 -'root16/hist_ttW_Madgraph.root': + +'hist_TTLJ_PowhegPythia_ttbj.root': type: mc - pretty-name: 'ttW_Madgraph' - cross-section: 0.2043 - generated-events: 2676676.0 - fill-color: '#ff66ff' - group: GttX - order: 7 - scale: 1 + pretty-name: 'TTLJ_PowhegPythia_ttbj' + cross-section: 365.34 + generated-events: 106736180.0 + #fill-color: '#660000' + group: Gttbj + order: 2 + -'root16/hist_ttHbb_PowhegPythia.root': +'hist_TTLJ_PowhegPythia_ttcc.root': type: mc - pretty-name: 'ttHbb_PowhegPythia' - cross-section: 0.2923 - generated-events: 3772592.0 - fill-color: '#ff66ff' - group: GttX + pretty-name: 'TTLJ_PowhegPythia_ttcc' + cross-section: 365.34 + generated-events: 106736180.0 + #fill-color: '#990000' + group: Gttcc + order: 3 + + +'hist_TTLJ_PowhegPythia_ttLF.root': + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttLF' + cross-section: 365.34 + generated-events: 106736180.0 + #fill-color: '#cc0000' + group: GttLF + order: 4 + + +'hist_TTLJ_PowhegPythia_ttother.root': + type: mc + pretty-name: 'TTLJ_PowhegPythia_ttother' + cross-section: 365.34 + generated-events: 106736180.0 + #fill-color: '#ff6666' + group: Gttbkg + order: 5 + + +'hist_TTLJ_PowhegPythiaBkg.root': + type: mc + pretty-name: 'TTLJ_PowhegPythiaBkg' + cross-section: 365.34 + generated-events: 106736180.0 + #fill-color: '#ff6666' + group: Gttbkg order: 6 - scale: 1 -'root16/hist_SingleTbar_t_Powheg.root': + +'hist_TTLL_PowhegPythiaBkg.root': type: mc - pretty-name: 'SingleTbar_t_Powheg' - cross-section: 80.95 - generated-events: 38811017.0 - fill-color: '#990099' + pretty-name: 'TTLL_PowhegPythiaBkg' + cross-section: 88.29 + generated-events: 67312164.0 + #fill-color: '#ff6666' + group: Gttbkg + order: 7 + + +'hist_TTJJ_PowhegPythiaBkg.root': + type: mc + pretty-name: 'TTJJ_PowhegPythiaBkg' + cross-section: 377.96 + generated-events: 67963984.0 + #fill-color: '#ff6666' + group: Gttbkg + order: 8 + + +'hist_SingleTop_s_aMCatNLOPythia.root': + type: mc + pretty-name: 'SingleTop_s_aMCatNLOPythia' + cross-section: 3.36 + generated-events: 6137801.0 + #fill-color: '#990099' + group: GSingleT + order: 9 + + +'hist_SingleTop_t_PowhegPythia.root': + type: mc + pretty-name: 'SingleTop_t_PowhegPythia' + cross-section: 136.02 + generated-events: 31848000.0 + #fill-color: '#990099' group: GSingleT order: 10 - scale: 1 -'root16/hist_SingleTbar_tW_Powheg.root': + +'hist_SingleTop_tW_PowhegPythia.root': type: mc - pretty-name: 'SingleTbar_tW_Powheg' + pretty-name: 'SingleTop_tW_PowhegPythia' cross-section: 35.85 - generated-events: 6933094.0 - fill-color: '#990099' + generated-events: 4945734.0 + #fill-color: '#990099' group: GSingleT - order: 12 - scale: 1 + order: 11 + -'root16/hist_SingleTop_t_Powheg.root': +'hist_SingleTbar_t_PowhegPythia.root': type: mc - pretty-name: 'SingleTop_t_Powheg' - cross-section: 136.02 - generated-events: 67240808.0 - fill-color: '#990099' + pretty-name: 'SingleTbar_t_PowhegPythia' + cross-section: 80.95 + generated-events: 17780700.0 + #fill-color: '#990099' group: GSingleT - order: 9 - scale: 1 + order: 12 -'root16/hist_SingleTop_tW_Powheg.root': + +'hist_SingleTbar_tW_PowhegPythia.root': type: mc - pretty-name: 'SingleTop_tW_Powheg' + pretty-name: 'SingleTbar_tW_PowhegPythia' cross-section: 35.85 - generated-events: 6952830.0 - fill-color: '#990099' + generated-events: 4942374.0 + #fill-color: '#990099' group: GSingleT + order: 13 + + +'hist_ttZToQQ_aMCatNLOMadspinPythia.root': + type: mc + pretty-name: 'ttZToQQ_aMCatNLOMadspinPythia' + cross-section: 0.5297 + generated-events: 351164.0 + #fill-color: '#ff66ff' + group: GttX order: 11 - scale: 1 -'root16/hist_ZZ_Pythia.root': + +'hist_ttZToLLNuNu_aMCatNLOMadspinPythia.root': type: mc - pretty-name: 'ZZ_Pythia' - cross-section: 16.523 - generated-events: 1988098.0 - fill-color: '#00cccc' - group: GVV - order: 15 - scale: 1 + pretty-name: 'ttZToLLNuNu_aMCatNLOMadspinPythia' + cross-section: 0.2529 + generated-events: 6420825.0 + #fill-color: '#ff66ff' + group: GttX + order: 12 + -'root16/hist_ZJets_M50_aMCatNLO.root': +'hist_ttWToQQ_aMCatNLOMadspinPythia.root': type: mc - pretty-name: 'ZJets_M50_aMCatNLO' - cross-section: 6225.42 - generated-events: 81781064.0 - fill-color: '#000099' - group: GZJets - order: 16 - scale: 1 + pretty-name: 'ttWToQQ_aMCatNLOMadspinPythia' + cross-section: 0.4062 + generated-events: 430310.0 + #fill-color: '#ff66ff' + group: GttX + order: 13 + -'root16/hist_ZJets_M10to50_aMCatNLO.root': +'hist_ttWToLNu_aMCatNLOMadspinPythia.root': type: mc - pretty-name: 'ZJets_M10to50_aMCatNLO' - cross-section: 18610.0 - generated-events: 99831562.0 - fill-color: '#000099' - group: GZJets - order: 17 - scale: 1 + pretty-name: 'ttWToLNu_aMCatNLOMadspinPythia' + cross-section: 0.2043 + generated-events: 2716249.0 + #fill-color: '#ff66ff' + group: GttX + order: 14 -'root16/hist_WZ_Pythia.root': + +'hist_ttHTobb_PowhegPythia.root': type: mc - pretty-name: 'WZ_Pythia' - cross-section: 47.13 - generated-events: 3995828.0 - fill-color: '#00cccc' - group: GVV + pretty-name: 'ttHTobb_PowhegPythia' + cross-section: 0.2934 + generated-events: 9764780.0 + #fill-color: '#ff66ff' + group: GttX order: 14 - scale: 1 -'root16/hist_WW_Pythia.root': + +'hist_ttHToNonbb_PowhegPythia.root': + type: mc + pretty-name: 'ttHToNonbb_PowhegPythia' + cross-section: 0.2151 + generated-events: 9757039.0 + #fill-color: '#ff66ff' + group: GttX + order: 15 + + +'hist_WW_Pythia.root': type: mc pretty-name: 'WW_Pythia' cross-section: 118.7 - generated-events: 7981136.0 - fill-color: '#00cccc' + generated-events: 7837160.0 + #fill-color: '#00cccc' group: GVV - order: 13 - scale: 1 + order: 17 + -'root16/hist_WJets_aMCatNLO.root': +'hist_WZ_Pythia.root': type: mc - pretty-name: 'WJets_aMCatNLO' - cross-section: 61526.7 - generated-events: 177578225.0 - fill-color: '#ff9933' - legend: 'WJets' + pretty-name: 'WZ_Pythia' + cross-section: 47.13 + generated-events: 3997571.0 + #fill-color: '#00cccc' + group: GVV order: 18 - scale: 1 -'root16/hist_TT_PowhegPythiaBkg.root': + +'hist_ZZ_Pythia.root': type: mc - pretty-name: 'TT_PowhegPythiaBkg' - cross-section: 831.76 - generated-events: 76837652.0 - fill-color: '#ff6666' - group: GttBkg - order: 5 - scale: 1 + pretty-name: 'ZZ_Pythia' + cross-section: 16.523 + generated-events: 1988098.0 + #fill-color: '#00cccc' + group: GVV + order: 19 + -'root16/hist_TTLJ_PowhegPythia_ttother.root': +'hist_ZJets_M10to50_MadgraphPythia.root': type: mc - pretty-name: 'TTLJ_PowhegPythia_ttother' - cross-section: 365.34 - generated-events: 152627564.0 - fill-color: '#ff6666' - group: GttBkg - order: 4 - scale: 1 + pretty-name: 'ZJets_M10to50_MadgraphPythia' + cross-section: 18610.0 + generated-events: 78843820.0 + #fill-color: '#000099' + group: GZJets + order: 20 -'root16/hist_TTLJ_PowhegPythia_ttcc.root': + +'hist_ZJets_M50_aMCatNLOPythia.root': type: mc - pretty-name: 'TTLJ_PowhegPythia_ttcc' - cross-section: 365.34 - generated-events: 152627564.0 - fill-color: '#990000' - legend: 'ttcc' - order: 2 - scale: 1 + pretty-name: 'ZJets_M50_aMCatNLOPythia' + cross-section: 6077.22 + generated-events: 80478895.0 + #fill-color: '#000099' + group: GZJets + order: 21 -'root16/hist_TTLJ_PowhegPythia_ttbj.root': + +'hist_W1JetsToLNu_MadgraphPythia.root': type: mc - pretty-name: 'TTLJ_PowhegPythia_ttbj' - cross-section: 365.34 - generated-events: 152627564.0 - fill-color: '#660000' - legend: 'ttbj' - order: 1 - scale: 1 + pretty-name: 'W1JetsToLNu_MadgraphPythia' + cross-section: 9625.0 + generated-events: 45283121.0 + #fill-color: '#ff9933' + group: GWJets + order: 22 + -'root16/hist_TTLJ_PowhegPythia_ttbb.root': +'hist_W2JetsToLNu_MadgraphPythia.root': type: mc - pretty-name: 'TTLJ_PowhegPythia_ttbb' - cross-section: 365.34 - generated-events: 152627564.0 - fill-color: '#330000' - legend: 'ttbb' - order: 0 - scale: 1 + pretty-name: 'W2JetsToLNu_MadgraphPythia' + cross-section: 2793.0 + generated-events: 60438768.0 + #fill-color: '#ff9933' + group: GWJets + order: 23 -'root16/hist_TTLJ_PowhegPythia_ttLF.root': + +'hist_W3JetsToLNu_MadgraphPythia.root': type: mc - pretty-name: 'TTLJ_PowhegPythia_ttLF' - cross-section: 365.34 - generated-events: 152627564.0 - fill-color: '#cc0000' - legend: 'ttLF' - order: 3 - scale: 1 + pretty-name: 'W3JetsToLNu_MadgraphPythia' + cross-section: 992.5 + generated-events: 59300029.0 + #fill-color: '#ff9933' + group: GWJets + order: 24 + + +'hist_W4JetsToLNu_MadgraphPythia.root': + type: mc + pretty-name: 'W4JetsToLNu_MadgraphPythia' + cross-section: 544.3 + generated-events: 29941394.0 + #fill-color: '#ff9933' + group: GWJets + order: 25 + -'root16/hist_QCD_Pt-15to20_MuEnriched.root': +'hist_QCD_Pt-15to20_MuEnriched.root': type: mc pretty-name: 'QCD_Pt-15to20_MuEnriched' cross-section: 3819570.0 generated-events: 4141251.0 - fill-color: '#d0cfd4' + #fill-color: '#d0cfd4' group: GQCD - order: 19 - scale: 1 + order: 26 + -'root16/hist_QCD_Pt-20to30_MuEnriched.root': +'hist_QCD_Pt-20to30_MuEnriched.root': type: mc pretty-name: 'QCD_Pt-20to30_MuEnriched' cross-section: 2960198.4 - generated-events: 31475157.0 - fill-color: '#d0cfd4' + generated-events: 31878740.0 + #fill-color: '#d0cfd4' group: GQCD - order: 20 - scale: 1 + order: 27 + -'root16/hist_QCD_Pt-50to80_MuEnriched.root': +'hist_QCD_Pt-50to80_MuEnriched.root': type: mc pretty-name: 'QCD_Pt-50to80_MuEnriched' cross-section: 437504.1 - generated-events: 19806915.0 - fill-color: '#d0cfd4' + generated-events: 19662175.0 + #fill-color: '#d0cfd4' group: GQCD - order: 21 - scale: 1 + order: 29 + -'root16/hist_QCD_Pt-80to120_MuEnriched.root': +'hist_QCD_Pt-80to120_MuEnriched.root': type: mc pretty-name: 'QCD_Pt-80to120_MuEnriched' cross-section: 106033.6648 - generated-events: 13669116.0 - fill-color: '#d0cfd4' + generated-events: 23560662.0 + #fill-color: '#d0cfd4' group: GQCD - order: 22 - scale: 1 + order: 30 + -'root16/hist_QCD_Pt-120to170_MuEnriched.root': +'hist_QCD_Pt-120to170_MuEnriched.root': type: mc pretty-name: 'QCD_Pt-120to170_MuEnriched' cross-section: 25190.51514 - generated-events: 11938140.0 - fill-color: '#d0cfd4' + generated-events: 7897731.0 + #fill-color: '#d0cfd4' group: GQCD - order: 23 - scale: 1 + order: 31 + -'root16/hist_QCD_Pt-170to300_MuEnriched.root': +'hist_QCD_Pt-170to300_MuEnriched.root': type: mc pretty-name: 'QCD_Pt-170to300_MuEnriched' cross-section: 8654.49315 - generated-events: 7947159.0 - fill-color: '#d0cfd4' + generated-events: 17350231.0 + #fill-color: '#d0cfd4' group: GQCD - order: 24 - scale: 1 + order: 32 + -'root16/hist_QCD_Pt-300to470_MuEnriched.root': +'hist_QCD_Pt-300to470_MuEnriched.root': type: mc pretty-name: 'QCD_Pt-300to470_MuEnriched' cross-section: 797.35269 - generated-events: 16452588.0 - fill-color: '#d0cfd4' + generated-events: 49005976.0 + #fill-color: '#d0cfd4' group: GQCD - order: 25 - scale: 1 + order: 33 + -'root16/hist_QCD_Pt-470to600_MuEnriched.root': +'hist_QCD_Pt-470to600_MuEnriched.root': type: mc pretty-name: 'QCD_Pt-470to600_MuEnriched' cross-section: 79.02553776 - generated-events: 5663755.0 - fill-color: '#d0cfd4' + generated-events: 19489276.0 + #fill-color: '#d0cfd4' group: GQCD - order: 26 - scale: 1 + order: 34 + -'root16/hist_QCD_Pt-600to800_MuEnriched.root': +'hist_QCD_Pt-600to800_MuEnriched.root': type: mc pretty-name: 'QCD_Pt-600to800_MuEnriched' cross-section: 25.09505908 - generated-events: 5971175.0 - fill-color: '#d0cfd4' + generated-events: 9981311.0 + #fill-color: '#d0cfd4' group: GQCD - order: 27 - scale: 1 + order: 35 + -'root16/hist_QCD_Pt-800to1000_MuEnriched.root': +'hist_QCD_Pt-800to1000_MuEnriched.root': type: mc pretty-name: 'QCD_Pt-800to1000_MuEnriched' cross-section: 4.707368272 - generated-events: 5838541.0 - fill-color: '#d0cfd4' + generated-events: 19940747.0 + #fill-color: '#d0cfd4' group: GQCD - order: 28 - scale: 1 + order: 36 + -'root16/hist_QCD_Pt-1000toInf_MuEnriched.root': +'hist_QCD_Pt-1000toInf_MuEnriched.root': type: mc pretty-name: 'QCD_Pt-1000toInf_MuEnriched' cross-section: 1.62131692 - generated-events: 9609821.0 - fill-color: '#d0cfd4' + generated-events: 13577827.0 + #fill-color: '#d0cfd4' group: GQCD - order: 29 - scale: 1 + order: 37 -'root16/hist_QCD_Pt-20to30_EMEnriched.root': + +'hist_QCD_Pt-20to30_EMEnriched.root': type: mc pretty-name: 'QCD_Pt-20to30_EMEnriched' cross-section: 5352960.0 - generated-events: 9218954.0 - fill-color: '#d0cfd4' + generated-events: 9241500.0 + #fill-color: '#d0cfd4' group: GQCD - order: 30 - scale: 1 + order: 38 + -'root16/hist_QCD_Pt-30to50_EMEnriched.root': +'hist_QCD_Pt-30to50_EMEnriched.root': type: mc pretty-name: 'QCD_Pt-30to50_EMEnriched' cross-section: 9928000.0 - generated-events: 6768384.0 - fill-color: '#d0cfd4' + generated-events: 11508842.0 + #fill-color: '#d0cfd4' group: GQCD - order: 31 - scale: 1 + order: 39 + -'root16/hist_QCD_Pt-50to80_EMEnriched.root': +'hist_QCD_Pt-50to80_EMEnriched.root': type: mc pretty-name: 'QCD_Pt-50to80_EMEnriched' cross-section: 2890800.0 - generated-events: 23474171.0 - fill-color: '#d0cfd4' + generated-events: 45789059.0 + #fill-color: '#d0cfd4' group: GQCD - order: 32 - scale: 1 + order: 40 -'root16/hist_QCD_Pt-80to120_EMEnriched.root': + +'hist_QCD_Pt-80to120_EMEnriched.root': type: mc pretty-name: 'QCD_Pt-80to120_EMEnriched' cross-section: 350000.0 - generated-events: 41853504.0 - fill-color: '#d0cfd4' + generated-events: 77800204.0 + #fill-color: '#d0cfd4' group: GQCD - order: 33 - scale: 1 + order: 41 + -'root16/hist_QCD_Pt-120to170_EMEnriched.root': +'hist_QCD_Pt-120to170_EMEnriched.root': type: mc pretty-name: 'QCD_Pt-120to170_EMEnriched' cross-section: 62964.0 - generated-events: 35817281.0 - fill-color: '#d0cfd4' + generated-events: 78578415.0 + #fill-color: '#d0cfd4' group: GQCD - order: 34 - scale: 1 + order: 42 + -'root16/hist_QCD_Pt-170to300_EMEnriched.root': +'hist_QCD_Pt-170to300_EMEnriched.root': type: mc pretty-name: 'QCD_Pt-170to300_EMEnriched' cross-section: 18810.0 generated-events: 11540163.0 - fill-color: '#d0cfd4' + #fill-color: '#d0cfd4' group: GQCD - order: 35 - scale: 1 + order: 43 -'root16/hist_QCD_Pt-300toInf_EMEnriched.root': + +'hist_QCD_Pt-300toInf_EMEnriched.root': type: mc pretty-name: 'QCD_Pt-300toInf_EMEnriched' cross-section: 1350.0 - generated-events: 7373633.0 - fill-color: '#d0cfd4' + generated-events: 7380341.0 + #fill-color: '#d0cfd4' group: GQCD - order: 36 - scale: 1 + order: 44 diff --git a/plotIt/configs/files17.yml b/plotIt/configs/files17.yml index d67b001..df02e9c 100644 --- a/plotIt/configs/files17.yml +++ b/plotIt/configs/files17.yml @@ -1,18 +1,18 @@ -'root17/hist_DataSingleMu.root': +'hist_DataSingleMu.root': type: data + pretty-name: 'DataSingleMu' legend: 'Data' - pretty-name: 'DataMu' marker-size: 0.6 group: GData -'root17/hist_DataSingleEG.root': +'hist_DataSingleEG.root': type: data + pretty-name: 'DataSingleEG' legend: 'Data' - pretty-name: 'DataEG' marker-size: 0.6 group: GData -'root17/hist_ttZToQQ_aMCatNLOMadspinPythia.root': +'hist_ttZToQQ_aMCatNLOMadspinPythia.root': type: mc pretty-name: 'ttZToQQ_aMCatNLOMadspinPythia' cross-section: 0.5297 @@ -20,9 +20,9 @@ fill-color: '#ff66ff' group: GttX order: 12 - scale: 1 -'root17/hist_ttZToLLNuNu_aMCatNLOMadspinPythia.root': + +'hist_ttZToLLNuNu_aMCatNLOMadspinPythia.root': type: mc pretty-name: 'ttZToLLNuNu_aMCatNLOMadspinPythia' cross-section: 0.2529 @@ -30,9 +30,9 @@ fill-color: '#ff66ff' group: GttX order: 13 - scale: 1 -'root17/hist_ttWToQQ_aMCatNLOMadspinPythia.root': + +'hist_ttWToQQ_aMCatNLOMadspinPythia.root': type: mc pretty-name: 'ttWToQQ_aMCatNLOMadspinPythia' cross-section: 0.4062 @@ -40,9 +40,9 @@ fill-color: '#ff66ff' group: GttX order: 10 - scale: 1 -'root17/hist_ttWToLNu_aMCatNLOMadspinPythia.root': + +'hist_ttWToLNu_aMCatNLOMadspinPythia.root': type: mc pretty-name: 'ttWToLNu_aMCatNLOMadspinPythia' cross-section: 0.2043 @@ -50,9 +50,9 @@ fill-color: '#ff66ff' group: GttX order: 11 - scale: 1 -'root17/hist_ttHTobb_PowhegPythia.root': + +'hist_ttHTobb_PowhegPythia.root': type: mc pretty-name: 'ttHTobb_PowhegPythia' cross-section: 0.2923 @@ -60,9 +60,9 @@ fill-color: '#ff66ff' group: GttX order: 8 - scale: 1 -'root17/hist_ttHToNonbb_PowhegPythia.root': + +'hist_ttHToNonbb_PowhegPythia.root': type: mc pretty-name: 'ttHToNonbb_PowhegPythia' cross-section: 0.2151 @@ -70,9 +70,9 @@ fill-color: '#ff66ff' group: GttX order: 9 - scale: 1 -'root17/hist_ZZ_Pythia.root': + +'hist_ZZ_Pythia.root': type: mc pretty-name: 'ZZ_Pythia' cross-section: 16.523 @@ -80,9 +80,9 @@ fill-color: '#00cccc' group: GVV order: 21 - scale: 1 -'root17/hist_ZJets_M50_aMCatNLOPythia.root': + +'hist_ZJets_M50_aMCatNLOPythia.root': type: mc pretty-name: 'ZJets_M50_aMCatNLOPythia' cross-section: 6225.42 @@ -90,9 +90,9 @@ fill-color: '#000099' group: GZJets order: 22 - scale: 1 -'root17/hist_ZJets_M10to50_MadgraphPythia.root': + +'hist_ZJets_M10to50_MadgraphPythia.root': type: mc pretty-name: 'ZJets_M10to50_MadgraphPythia' cross-section: 18610.0 @@ -100,9 +100,9 @@ fill-color: '#000099' group: GZJets order: 23 - scale: 1 -'root17/hist_WZ_Pythia.root': + +'hist_WZ_Pythia.root': type: mc pretty-name: 'WZ_Pythia' cross-section: 47.13 @@ -110,9 +110,9 @@ fill-color: '#00cccc' group: GVV order: 20 - scale: 1 -'root17/hist_WW_Pythia.root': + +'hist_WW_Pythia.root': type: mc pretty-name: 'WW_Pythia' cross-section: 118.7 @@ -120,99 +120,129 @@ fill-color: '#00cccc' group: GVV order: 19 - scale: 1 -'root17/hist_WJetsToLNu_MadgraphPythia.root': + +'hist_W4JetsToLNu_MadgraphPythia.root': type: mc - pretty-name: 'WJetsToLNu_MadgraphPythia' - cross-section: 61526.7 - generated-events: 77631180.0 + pretty-name: 'W4JetsToLNu_MadgraphPythia' + cross-section: 544.3 + generated-events: 11074019.0 fill-color: '#ff9933' - legend: 'WJets' - order: 24 - scale: 1 + group: GWJets + order: 25 -'root17/hist_TTLL_PowhegPythiaBkg.root': + +'hist_W3JetsToLNu_MadgraphPythia.root': + type: mc + pretty-name: 'W3JetsToLNu_MadgraphPythia' + cross-section: 992.5 + generated-events: 19669693.0 + fill-color: '#ff9933' + group: GWJets + order: 26 + + +'hist_W2JetsToLNu_MadgraphPythia.root': + type: mc + pretty-name: 'W2JetsToLNu_MadgraphPythia' + cross-section: 2793.0 + generated-events: 6570442.0 + fill-color: '#ff9933' + group: GWJets + order: 27 + + +'hist_W1JetsToLNu_MadgraphPythia.root': + type: mc + pretty-name: 'W1JetsToLNu_MadgraphPythia' + cross-section: 9625.0 + generated-events: 54106926.0 + fill-color: '#ff9933' + group: GWJets + order: 28 + + +'hist_TTLL_PowhegPythiaBkg.root': type: mc pretty-name: 'TTLL_PowhegPythiaBkg' cross-section: 88.29 generated-events: 68595608.0 fill-color: '#ff6666' - group: GttBkg + group: Gttbkg order: 5 - scale: 1 -'root17/hist_TTLJ_PowhegPythia_ttother.root': + +'hist_TTLJ_PowhegPythia_ttother.root': type: mc pretty-name: 'TTLJ_PowhegPythia_ttother' cross-section: 365.34 generated-events: 109124472.0 fill-color: '#ff6666' - group: GttBkg + group: Gttbkg order: 4 - scale: 1 -'root17/hist_TTLJ_PowhegPythia_ttcc.root': + +'hist_TTLJ_PowhegPythia_ttcc.root': type: mc pretty-name: 'TTLJ_PowhegPythia_ttcc' cross-section: 365.34 generated-events: 109124472.0 fill-color: '#990000' - legend: 'ttcc' + group: Gttcc order: 2 - scale: 1 -'root17/hist_TTLJ_PowhegPythia_ttbj.root': + +'hist_TTLJ_PowhegPythia_ttbj.root': type: mc pretty-name: 'TTLJ_PowhegPythia_ttbj' cross-section: 365.34 generated-events: 109124472.0 fill-color: '#660000' - legend: 'ttbj' + group: Gttbj order: 1 - scale: 1 -'root17/hist_TTLJ_PowhegPythia_ttbb.root': + +'hist_TTLJ_PowhegPythia_ttbb.root': type: mc pretty-name: 'TTLJ_PowhegPythia_ttbb' cross-section: 365.34 generated-events: 109124472.0 fill-color: '#330000' - legend: 'ttbb' + group: Gttbb order: 0 - scale: 1 -'root17/hist_TTLJ_PowhegPythia_ttLF.root': + +'hist_TTLJ_PowhegPythia_ttLF.root': type: mc pretty-name: 'TTLJ_PowhegPythia_ttLF' cross-section: 365.34 generated-events: 109124472.0 fill-color: '#cc0000' - legend: 'ttLF' + group: GttLF order: 3 - scale: 1 -'root17/hist_TTLJ_PowhegPythiaBkg.root': + +'hist_TTLJ_PowhegPythiaBkg.root': type: mc pretty-name: 'TTLJ_PowhegPythiaBkg' cross-section: 365.34 generated-events: 109124472.0 fill-color: '#ff6666' - group: GttBkg + group: Gttbkg order: 6 - scale: 1 -'root17/hist_TTJJ_PowhegPythiaBkg.root': + +'hist_TTJJ_PowhegPythiaBkg.root': type: mc pretty-name: 'TTJJ_PowhegPythiaBkg' cross-section: 377.96 generated-events: 129211204.0 fill-color: '#ff6666' - group: GttBkg + group: Gttbkg order: 7 - scale: 1 -'root17/hist_SingleTop_t_PowhegPythia.root': + +'hist_SingleTop_t_PowhegPythia.root': type: mc pretty-name: 'SingleTop_t_PowhegPythia' cross-section: 136.02 @@ -220,9 +250,9 @@ fill-color: '#990099' group: GSingleT order: 14 - scale: 1 -'root17/hist_SingleTop_tW_PowhegPythia.root': + +'hist_SingleTop_tW_PowhegPythia.root': type: mc pretty-name: 'SingleTop_tW_PowhegPythia' cross-section: 35.85 @@ -230,9 +260,9 @@ fill-color: '#990099' group: GSingleT order: 15 - scale: 1 -'root17/hist_SingleTop_s_aMCatNLOPythia.root': + +'hist_SingleTop_s_aMCatNLOPythia.root': type: mc pretty-name: 'SingleTop_s_aMCatNLOPythia' cross-section: 3.36 @@ -240,9 +270,9 @@ fill-color: '#990099' group: GSingleT order: 16 - scale: 1 -'root17/hist_SingleTbar_t_PowhegPythia.root': + +'hist_SingleTbar_t_PowhegPythia.root': type: mc pretty-name: 'SingleTbar_t_PowhegPythia' cross-section: 80.95 @@ -250,9 +280,9 @@ fill-color: '#990099' group: GSingleT order: 17 - scale: 1 -'root17/hist_SingleTbar_tW_PowhegPythia.root': + +'hist_SingleTbar_tW_PowhegPythia.root': type: mc pretty-name: 'SingleTbar_tW_PowhegPythia' cross-section: 35.85 @@ -260,9 +290,9 @@ fill-color: '#990099' group: GSingleT order: 18 - scale: 1 -'root17/hist_QCD_Pt-15to20_MuEnriched.root': + +'hist_QCD_Pt-15to20_MuEnriched.root': type: mc pretty-name: 'QCD_Pt-15to20_MuEnriched' cross-section: 3819570.0 @@ -270,9 +300,9 @@ fill-color: '#d0cfd4' group: GQCD order: 29 - scale: 1 -'root17/hist_QCD_Pt-20to30_MuEnriched.root': + +'hist_QCD_Pt-20to30_MuEnriched.root': type: mc pretty-name: 'QCD_Pt-20to30_MuEnriched' cross-section: 2960198.4 @@ -280,9 +310,9 @@ fill-color: '#d0cfd4' group: GQCD order: 30 - scale: 1 -'root17/hist_QCD_Pt-50to80_MuEnriched.root': + +'hist_QCD_Pt-50to80_MuEnriched.root': type: mc pretty-name: 'QCD_Pt-50to80_MuEnriched' cross-section: 437504.1 @@ -290,9 +320,9 @@ fill-color: '#d0cfd4' group: GQCD order: 31 - scale: 1 -'root17/hist_QCD_Pt-80to120_MuEnriched.root': + +'hist_QCD_Pt-80to120_MuEnriched.root': type: mc pretty-name: 'QCD_Pt-80to120_MuEnriched' cross-section: 106033.6648 @@ -300,9 +330,9 @@ fill-color: '#d0cfd4' group: GQCD order: 32 - scale: 1 -'root17/hist_QCD_Pt-120to170_MuEnriched.root': + +'hist_QCD_Pt-120to170_MuEnriched.root': type: mc pretty-name: 'QCD_Pt-120to170_MuEnriched' cross-section: 25190.51514 @@ -310,9 +340,9 @@ fill-color: '#d0cfd4' group: GQCD order: 33 - scale: 1 -'root17/hist_QCD_Pt-170to300_MuEnriched.root': + +'hist_QCD_Pt-170to300_MuEnriched.root': type: mc pretty-name: 'QCD_Pt-170to300_MuEnriched' cross-section: 8654.49315 @@ -320,9 +350,9 @@ fill-color: '#d0cfd4' group: GQCD order: 34 - scale: 1 -'root17/hist_QCD_Pt-300to470_MuEnriched.root': + +'hist_QCD_Pt-300to470_MuEnriched.root': type: mc pretty-name: 'QCD_Pt-300to470_MuEnriched' cross-section: 797.35269 @@ -330,9 +360,9 @@ fill-color: '#d0cfd4' group: GQCD order: 35 - scale: 1 -'root17/hist_QCD_Pt-470to600_MuEnriched.root': + +'hist_QCD_Pt-470to600_MuEnriched.root': type: mc pretty-name: 'QCD_Pt-470to600_MuEnriched' cross-section: 79.02553776 @@ -340,9 +370,9 @@ fill-color: '#d0cfd4' group: GQCD order: 36 - scale: 1 -'root17/hist_QCD_Pt-600to800_MuEnriched.root': + +'hist_QCD_Pt-600to800_MuEnriched.root': type: mc pretty-name: 'QCD_Pt-600to800_MuEnriched' cross-section: 25.09505908 @@ -350,9 +380,9 @@ fill-color: '#d0cfd4' group: GQCD order: 37 - scale: 1 -'root17/hist_QCD_Pt-800to1000_MuEnriched.root': + +'hist_QCD_Pt-800to1000_MuEnriched.root': type: mc pretty-name: 'QCD_Pt-800to1000_MuEnriched' cross-section: 4.707368272 @@ -360,9 +390,9 @@ fill-color: '#d0cfd4' group: GQCD order: 38 - scale: 1 -'root17/hist_QCD_Pt-1000toInf_MuEnriched.root': + +'hist_QCD_Pt-1000toInf_MuEnriched.root': type: mc pretty-name: 'QCD_Pt-1000toInf_MuEnriched' cross-section: 1.621311692 @@ -370,9 +400,9 @@ fill-color: '#d0cfd4' group: GQCD order: 39 - scale: 1 -'root17/hist_QCD_Pt-15to20_EMEnriched.root': + +'hist_QCD_Pt-15to20_EMEnriched.root': type: mc pretty-name: 'QCD_Pt-15to20_EMEnriched' cross-section: 2302200.0 @@ -380,9 +410,9 @@ fill-color: '#d0cfd4' group: GQCD order: 40 - scale: 1 -'root17/hist_QCD_Pt-20to30_EMEnriched.root': + +'hist_QCD_Pt-20to30_EMEnriched.root': type: mc pretty-name: 'QCD_Pt-20to30_EMEnriched' cross-section: 5352960.0 @@ -390,9 +420,9 @@ fill-color: '#d0cfd4' group: GQCD order: 41 - scale: 1 -'root17/hist_QCD_Pt-30to50_EMEnriched.root': + +'hist_QCD_Pt-30to50_EMEnriched.root': type: mc pretty-name: 'QCD_Pt-30to50_EMEnriched' cross-section: 9928000.0 @@ -400,9 +430,9 @@ fill-color: '#d0cfd4' group: GQCD order: 42 - scale: 1 -'root17/hist_QCD_Pt-50to80_EMEnriched.root': + +'hist_QCD_Pt-50to80_EMEnriched.root': type: mc pretty-name: 'QCD_Pt-50to80_EMEnriched' cross-section: 2890800.0 @@ -410,9 +440,9 @@ fill-color: '#d0cfd4' group: GQCD order: 43 - scale: 1 -'root17/hist_QCD_Pt-80to120_EMEnriched.root': + +'hist_QCD_Pt-80to120_EMEnriched.root': type: mc pretty-name: 'QCD_Pt-80to120_EMEnriched' cross-section: 350000.0 @@ -420,9 +450,9 @@ fill-color: '#d0cfd4' group: GQCD order: 44 - scale: 1 -'root17/hist_QCD_Pt-120to170_EMEnriched.root': + +'hist_QCD_Pt-120to170_EMEnriched.root': type: mc pretty-name: 'QCD_Pt-120to170_EMEnriched' cross-section: 62964.0 @@ -430,9 +460,9 @@ fill-color: '#d0cfd4' group: GQCD order: 45 - scale: 1 -'root17/hist_QCD_Pt-300toInf_EMEnriched.root': + +'hist_QCD_Pt-300toInf_EMEnriched.root': type: mc pretty-name: 'QCD_Pt-300toInf_EMEnriched' cross-section: 1350.0 @@ -440,5 +470,4 @@ fill-color: '#d0cfd4' group: GQCD order: 46 - scale: 1 diff --git a/plotIt/configs/files18.yml b/plotIt/configs/files18.yml index ab085fa..d79b723 100644 --- a/plotIt/configs/files18.yml +++ b/plotIt/configs/files18.yml @@ -1,18 +1,18 @@ -'root18/hist_DataSingleMu.root': +'hist_DataSingleMu.root': type: data + pretty-name: 'DataSingleMu' legend: 'Data' - pretty-name: 'DataMu' marker-size: 0.6 group: GData -'root18/hist_DataSingleEG.root': +'hist_DataSingleEG.root': type: data + pretty-name: 'DataSingleEG' legend: 'Data' - pretty-name: 'DataEG' marker-size: 0.6 group: GData -'root18/hist_ttZToQQ_aMCatNLOMadspinPythia.root': +'hist_ttZToQQ_aMCatNLOMadspinPythia.root': type: mc pretty-name: 'ttZToQQ_aMCatNLOMadspinPythia' cross-section: 0.5297 @@ -20,9 +20,9 @@ fill-color: '#ff66ff' group: GttX order: 12 - scale: 1 -'root18/hist_ttZToLLNuNu_aMCatNLOMadspinPythia.root': + +'hist_ttZToLLNuNu_aMCatNLOMadspinPythia.root': type: mc pretty-name: 'ttZToLLNuNu_aMCatNLOMadspinPythia' cross-section: 0.2529 @@ -30,9 +30,9 @@ fill-color: '#ff66ff' group: GttX order: 13 - scale: 1 -'root18/hist_ttWToQQ_aMCatNLOMadspinPythia.root': + +'hist_ttWToQQ_aMCatNLOMadspinPythia.root': type: mc pretty-name: 'ttWToQQ_aMCatNLOMadspinPythia' cross-section: 0.2043 @@ -40,9 +40,9 @@ fill-color: '#ff66ff' group: GttX order: 10 - scale: 1 -'root18/hist_ttWToLNu_aMCatNLOMadspinPythia.root': + +'hist_ttWToLNu_aMCatNLOMadspinPythia.root': type: mc pretty-name: 'ttWToLNu_aMCatNLOMadspinPythia' cross-section: 0.2043 @@ -50,9 +50,9 @@ fill-color: '#ff66ff' group: GttX order: 11 - scale: 1 -'root18/hist_ttHTobb_PowhegPythia.root': + +'hist_ttHTobb_PowhegPythia.root': type: mc pretty-name: 'ttHTobb_PowhegPythia' cross-section: 0.2923 @@ -60,9 +60,9 @@ fill-color: '#ff66ff' group: GttX order: 8 - scale: 1 -'root18/hist_ttHToNonbb_PowhegPythia.root': + +'hist_ttHToNonbb_PowhegPythia.root': type: mc pretty-name: 'ttHToNonbb_PowhegPythia' cross-section: 0.2151 @@ -70,9 +70,9 @@ fill-color: '#ff66ff' group: GttX order: 9 - scale: 1 -'root18/hist_ZZ_Pythia.root': + +'hist_ZZ_Pythia.root': type: mc pretty-name: 'ZZ_Pythia' cross-section: 16.523 @@ -80,19 +80,19 @@ fill-color: '#00cccc' group: GVV order: 21 - scale: 1 -'root18/hist_ZJets_M50_aMCatNLOPythia.root': + +'hist_ZJets_M50_aMCatNLOPythia.root': type: mc pretty-name: 'ZJets_M50_aMCatNLOPythia' cross-section: 6225.42 - generated-events: 100114403.0 + generated-events: 130939668.0 fill-color: '#000099' group: GZJets order: 22 - scale: 1 -'root18/hist_ZJets_M10to50_MadgraphPythia.root': + +'hist_ZJets_M10to50_MadgraphPythia.root': type: mc pretty-name: 'ZJets_M10to50_MadgraphPythia' cross-section: 18610.0 @@ -100,9 +100,9 @@ fill-color: '#000099' group: GZJets order: 23 - scale: 1 -'root18/hist_WZ_Pythia.root': + +'hist_WZ_Pythia.root': type: mc pretty-name: 'WZ_Pythia' cross-section: 47.13 @@ -110,9 +110,9 @@ fill-color: '#00cccc' group: GVV order: 20 - scale: 1 -'root18/hist_WW_Pythia.root': + +'hist_WW_Pythia.root': type: mc pretty-name: 'WW_Pythia' cross-section: 118.7 @@ -120,99 +120,99 @@ fill-color: '#00cccc' group: GVV order: 19 - scale: 1 -'root18/hist_WJetsToLNu_MadgraphPythia.root': + +'hist_WJetsToLNu_MadgraphPythia.root': type: mc pretty-name: 'WJetsToLNu_MadgraphPythia' cross-section: 61526.7 generated-events: 70966439.0 fill-color: '#ff9933' - legend: 'WJets' + group: GWJets order: 24 - scale: 1 -'root18/hist_TTLL_PowhegPythiaBkg.root': + +'hist_TTLL_PowhegPythiaBkg.root': type: mc pretty-name: 'TTLL_PowhegPythiaBkg' cross-section: 88.29 generated-events: 63791484.0 fill-color: '#ff6666' - group: GttBkg + group: Gttbkg order: 5 - scale: 1 -'root18/hist_TTLJ_PowhegPythia_ttother.root': + +'hist_TTLJ_PowhegPythia_ttother.root': type: mc pretty-name: 'TTLJ_PowhegPythia_ttother' cross-section: 365.34 generated-events: 100728756.0 fill-color: '#ff6666' - group: GttBkg + group: Gttbkg order: 4 - scale: 1 -'root18/hist_TTLJ_PowhegPythia_ttcc.root': + +'hist_TTLJ_PowhegPythia_ttcc.root': type: mc pretty-name: 'TTLJ_PowhegPythia_ttcc' cross-section: 365.34 generated-events: 100728756.0 fill-color: '#990000' - legend: 'ttcc' + group: Gttcc order: 2 - scale: 1 -'root18/hist_TTLJ_PowhegPythia_ttbj.root': + +'hist_TTLJ_PowhegPythia_ttbj.root': type: mc pretty-name: 'TTLJ_PowhegPythia_ttbj' cross-section: 365.34 generated-events: 100728756.0 fill-color: '#660000' - legend: 'ttbj' + group: Gttbj order: 1 - scale: 1 -'root18/hist_TTLJ_PowhegPythia_ttbb.root': + +'hist_TTLJ_PowhegPythia_ttbb.root': type: mc pretty-name: 'TTLJ_PowhegPythia_ttbb' cross-section: 365.34 generated-events: 100728756.0 fill-color: '#330000' - legend: 'ttbb' + group: Gttbb order: 0 - scale: 1 -'root18/hist_TTLJ_PowhegPythia_ttLF.root': + +'hist_TTLJ_PowhegPythia_ttLF.root': type: mc pretty-name: 'TTLJ_PowhegPythia_ttLF' cross-section: 365.34 generated-events: 100728756.0 fill-color: '#cc0000' - legend: 'ttLF' + group: GttLF order: 3 - scale: 1 -'root18/hist_TTLJ_PowhegPythiaBkg.root': + +'hist_TTLJ_PowhegPythiaBkg.root': type: mc pretty-name: 'TTLJ_PowhegPythiaBkg' cross-section: 365.34 generated-events: 100728756.0 fill-color: '#ff6666' - group: GttBkg + group: Gttbkg order: 6 - scale: 1 -'root18/hist_TTJJ_PowhegPythiaBkg.root': + +'hist_TTJJ_PowhegPythiaBkg.root': type: mc pretty-name: 'TTJJ_PowhegPythiaBkg' cross-section: 377.96 generated-events: 132725582.0 fill-color: '#ff6666' - group: GttBkg + group: Gttbkg order: 7 - scale: 1 -'root18/hist_SingleTop_t_PowhegPythia.root': + +'hist_SingleTop_t_PowhegPythia.root': type: mc pretty-name: 'SingleTop_t_PowhegPythia' cross-section: 136.02 @@ -220,9 +220,9 @@ fill-color: '#990099' group: GSingleT order: 14 - scale: 1 -'root18/hist_SingleTop_tW_PowhegPythia.root': + +'hist_SingleTop_tW_PowhegPythia.root': type: mc pretty-name: 'SingleTop_tW_PowhegPythia' cross-section: 35.85 @@ -230,9 +230,9 @@ fill-color: '#990099' group: GSingleT order: 15 - scale: 1 -'root18/hist_SingleTop_s_aMCatNLOPythia.root': + +'hist_SingleTop_s_aMCatNLOPythia.root': type: mc pretty-name: 'SingleTop_s_aMCatNLOPythia' cross-section: 3.36 @@ -240,9 +240,9 @@ fill-color: '#990099' group: GSingleT order: 16 - scale: 1 -'root18/hist_SingleTbar_t_PowhegPythia.root': + +'hist_SingleTbar_t_PowhegPythia.root': type: mc pretty-name: 'SingleTbar_t_PowhegPythia' cross-section: 80.95 @@ -250,9 +250,9 @@ fill-color: '#990099' group: GSingleT order: 17 - scale: 1 -'root18/hist_SingleTbar_tW_PowhegPythia.root': + +'hist_SingleTbar_tW_PowhegPythia.root': type: mc pretty-name: 'SingleTbar_tW_PowhegPythia' cross-section: 35.85 @@ -260,9 +260,9 @@ fill-color: '#990099' group: GSingleT order: 18 - scale: 1 -'root18/hist_QCD_Pt-15to20_MuEnriched.root': + +'hist_QCD_Pt-15to20_MuEnriched.root': type: mc pretty-name: 'QCD_Pt-15to20_MuEnriched' cross-section: 3819570.0 @@ -270,9 +270,9 @@ fill-color: '#d0cfd4' group: GQCD order: 29 - scale: 1 -'root18/hist_QCD_Pt-20to30_MuEnriched.root': + +'hist_QCD_Pt-20to30_MuEnriched.root': type: mc pretty-name: 'QCD_Pt-20to30_MuEnriched' cross-section: 2960198.4 @@ -280,9 +280,9 @@ fill-color: '#d0cfd4' group: GQCD order: 30 - scale: 1 -'root18/hist_QCD_Pt-50to80_MuEnriched.root': + +'hist_QCD_Pt-50to80_MuEnriched.root': type: mc pretty-name: 'QCD_Pt-50to80_MuEnriched' cross-section: 437504.1 @@ -290,9 +290,9 @@ fill-color: '#d0cfd4' group: GQCD order: 31 - scale: 1 -'root18/hist_QCD_Pt-80to120_MuEnriched.root': + +'hist_QCD_Pt-80to120_MuEnriched.root': type: mc pretty-name: 'QCD_Pt-80to120_MuEnriched' cross-section: 106033.6648 @@ -300,9 +300,9 @@ fill-color: '#d0cfd4' group: GQCD order: 32 - scale: 1 -'root18/hist_QCD_Pt-120to170_MuEnriched.root': + +'hist_QCD_Pt-120to170_MuEnriched.root': type: mc pretty-name: 'QCD_Pt-120to170_MuEnriched' cross-section: 25190.51514 @@ -310,9 +310,9 @@ fill-color: '#d0cfd4' group: GQCD order: 33 - scale: 1 -'root18/hist_QCD_Pt-170to300_MuEnriched.root': + +'hist_QCD_Pt-170to300_MuEnriched.root': type: mc pretty-name: 'QCD_Pt-170to300_MuEnriched' cross-section: 8654.49315 @@ -320,9 +320,9 @@ fill-color: '#d0cfd4' group: GQCD order: 34 - scale: 1 -'root18/hist_QCD_Pt-300to470_MuEnriched.root': + +'hist_QCD_Pt-300to470_MuEnriched.root': type: mc pretty-name: 'QCD_Pt-300to470_MuEnriched' cross-section: 797.35269 @@ -330,9 +330,9 @@ fill-color: '#d0cfd4' group: GQCD order: 35 - scale: 1 -'root18/hist_QCD_Pt-470to600_MuEnriched.root': + +'hist_QCD_Pt-470to600_MuEnriched.root': type: mc pretty-name: 'QCD_Pt-470to600_MuEnriched' cross-section: 79.02553776 @@ -340,9 +340,9 @@ fill-color: '#d0cfd4' group: GQCD order: 36 - scale: 1 -'root18/hist_QCD_Pt-600to800_MuEnriched.root': + +'hist_QCD_Pt-600to800_MuEnriched.root': type: mc pretty-name: 'QCD_Pt-600to800_MuEnriched' cross-section: 25.09505908 @@ -350,9 +350,9 @@ fill-color: '#d0cfd4' group: GQCD order: 37 - scale: 1 -'root18/hist_QCD_Pt-1000toInf_MuEnriched.root': + +'hist_QCD_Pt-1000toInf_MuEnriched.root': type: mc pretty-name: 'QCD_Pt-1000toInf_MuEnriched' cross-section: 1.62131692 @@ -360,9 +360,9 @@ fill-color: '#d0cfd4' group: GQCD order: 38 - scale: 1 -'root18/hist_QCD_Pt-15to20_EMEnriched.root': + +'hist_QCD_Pt-15to20_EMEnriched.root': type: mc pretty-name: 'QCD_Pt-15to20_EMEnriched' cross-section: 2302200.0 @@ -370,9 +370,9 @@ fill-color: '#d0cfd4' group: GQCD order: 39 - scale: 1 -'root18/hist_QCD_Pt-20to30_EMEnriched.root': + +'hist_QCD_Pt-20to30_EMEnriched.root': type: mc pretty-name: 'QCD_Pt-20to30_EMEnriched' cross-section: 5352960.0 @@ -380,9 +380,9 @@ fill-color: '#d0cfd4' group: GQCD order: 40 - scale: 1 -'root18/hist_QCD_Pt-30to50_EMEnriched.root': + +'hist_QCD_Pt-30to50_EMEnriched.root': type: mc pretty-name: 'QCD_Pt-30to50_EMEnriched' cross-section: 9928000.0 @@ -390,9 +390,9 @@ fill-color: '#d0cfd4' group: GQCD order: 41 - scale: 1 -'root18/hist_QCD_Pt-50to80_EMEnriched.root': + +'hist_QCD_Pt-50to80_EMEnriched.root': type: mc pretty-name: 'QCD_Pt-50to80_EMEnriched' cross-section: 2890800.0 @@ -400,9 +400,9 @@ fill-color: '#d0cfd4' group: GQCD order: 42 - scale: 1 -'root18/hist_QCD_Pt-80to120_EMEnriched.root': + +'hist_QCD_Pt-80to120_EMEnriched.root': type: mc pretty-name: 'QCD_Pt-80to120_EMEnriched' cross-section: 350000.0 @@ -410,9 +410,9 @@ fill-color: '#d0cfd4' group: GQCD order: 43 - scale: 1 -'root18/hist_QCD_Pt-120to170_EMEnriched.root': + +'hist_QCD_Pt-120to170_EMEnriched.root': type: mc pretty-name: 'QCD_Pt-120to170_EMEnriched' cross-section: 62964.0 @@ -420,9 +420,9 @@ fill-color: '#d0cfd4' group: GQCD order: 44 - scale: 1 -'root18/hist_QCD_Pt-170to300_EMEnriched.root': + +'hist_QCD_Pt-170to300_EMEnriched.root': type: mc pretty-name: 'QCD_Pt-170to300_EMEnriched' cross-section: 18810.0 @@ -430,9 +430,9 @@ fill-color: '#d0cfd4' group: GQCD order: 45 - scale: 1 -'root18/hist_QCD_Pt-300toInf_EMEnriched.root': + +'hist_QCD_Pt-300toInf_EMEnriched.root': type: mc pretty-name: 'QCD_Pt-300toInf_EMEnriched' cross-section: 1350.0 @@ -440,5 +440,4 @@ fill-color: '#d0cfd4' group: GQCD order: 46 - scale: 1 diff --git a/plotIt/configs/groups.yml b/plotIt/configs/groups.yml index f6517aa..56b885e 100644 --- a/plotIt/configs/groups.yml +++ b/plotIt/configs/groups.yml @@ -1,36 +1,47 @@ GData: legend: 'Data' marker-size: 0.6 + GWJets: fill-color: '#ff9933' legend: 'WJets' -GttBkg: + +Gttbkg: fill-color: '#ff6666' - legend: 'ttBkg' + legend: 'ttbkg' + GttX: fill-color: '#ff66ff' legend: 'ttX' + GZJets: fill-color: '#000099' legend: 'ZJets' + GSingleT: fill-color: '#990099' legend: 'SingleT' + GVV: fill-color: '#00cccc' legend: 'VV' + GQCD: fill-color: '#d0cfd4' legend: 'QCD' + Gttbb: fill-color: '#330000' legend: 'ttbb' + Gttbj: fill-color: '#660000' legend: 'ttbj' + Gttcc: fill-color: '#990000' legend: 'ttcc' + GttLF: fill-color: '#cc0000' legend: 'ttLF' diff --git a/plotIt/configs/histos.yml b/plotIt/configs/histos.yml new file mode 100644 index 0000000..57b19a0 --- /dev/null +++ b/plotIt/configs/histos.yml @@ -0,0 +1,4958 @@ +'h_LeptonPt_Ch0_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonEta_Ch0_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonRelIso_Ch0_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nJets_Ch0_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nbJets_Ch0_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_TransverseMass_Ch0_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_PV_Ch0_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_PV_noSF_Ch0_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonPt_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonEta_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonRelIso_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nJets_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nbJets_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_TransverseMass_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_PV_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_PV_noSF_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonPt_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonEta_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonRelIso_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nJets_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nbJets_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_TransverseMass_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonPt_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonEta_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonRelIso_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nJets_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nbJets_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_TransverseMass_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_PV_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_PV_noSF_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_0_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_0_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_0_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_1_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_1_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_1_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_2_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_2_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_2_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_3_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_3_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_3_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_4_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_4_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_4_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_5_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_5_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_5_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetPt_1_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetCSV_1_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetPt_2_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetCSV_2_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetDeltaR_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetInvMass_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_GenAddbJetPt_1_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_GenAddbJetPt_2_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_GenAddbJetDeltaR_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_GenAddbJetInvMass_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_gentop_GenAddbJetPt_1_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_gentop_GenAddbJetPt_2_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_gentop_GenAddbJetDeltaR_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_gentop_GenAddbJetInvMass_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin0_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin1_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin2_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin3_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin4_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin5_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin0_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin1_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin2_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin3_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin4_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin5_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin6_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin7_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonPt_Ch0_S5': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonEta_Ch0_S5': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonRelIso_Ch0_S5': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nJets_Ch0_S5': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nbJets_Ch0_S5': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_TransverseMass_Ch0_S5': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_PV_Ch0_S5': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_PV_noSF_Ch0_S5': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonPt_Ch0_S6': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonEta_Ch0_S6': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonRelIso_Ch0_S6': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nJets_Ch0_S6': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nbJets_Ch0_S6': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_TransverseMass_Ch0_S6': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonPt_Ch0_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonEta_Ch0_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonRelIso_Ch0_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nJets_Ch0_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nbJets_Ch0_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_TransverseMass_Ch0_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_0_Ch0_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_0_Ch0_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_0_Ch0_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_1_Ch0_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_1_Ch0_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_1_Ch0_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_2_Ch0_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_2_Ch0_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_2_Ch0_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_3_Ch0_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_3_Ch0_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_3_Ch0_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_4_Ch0_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_4_Ch0_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_4_Ch0_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_5_Ch0_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_5_Ch0_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_5_Ch0_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetPt_1_Ch0_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetCSV_1_Ch0_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetPt_2_Ch0_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetCSV_2_Ch0_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetDeltaR_Ch0_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetInvMass_Ch0_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin0_Ch0_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin1_Ch0_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin2_Ch0_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin3_Ch0_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin4_Ch0_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin5_Ch0_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin0_Ch0_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin1_Ch0_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin2_Ch0_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin3_Ch0_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin4_Ch0_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin5_Ch0_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin6_Ch0_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin7_Ch0_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonPt_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonEta_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonRelIso_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nJets_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nbJets_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_TransverseMass_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_PV_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_PV_noSF_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_0_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_0_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_0_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_1_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_1_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_1_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_2_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_2_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_2_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_3_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_3_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_3_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_4_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_4_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_4_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_5_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_5_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_5_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetPt_1_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetCSV_1_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetPt_2_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetCSV_2_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetDeltaR_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetInvMass_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_GenAddbJetPt_1_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_GenAddbJetPt_2_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_GenAddbJetDeltaR_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_GenAddbJetInvMass_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin0_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin1_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin2_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin3_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin4_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin5_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin0_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin1_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin2_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin3_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin4_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin5_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin6_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin7_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonPt_Ch0_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonEta_Ch0_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonRelIso_Ch0_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nJets_Ch0_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nbJets_Ch0_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_TransverseMass_Ch0_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_0_Ch0_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_0_Ch0_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_0_Ch0_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_1_Ch0_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_1_Ch0_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_1_Ch0_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_2_Ch0_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_2_Ch0_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_2_Ch0_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_3_Ch0_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_3_Ch0_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_3_Ch0_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_4_Ch0_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_4_Ch0_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_4_Ch0_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_5_Ch0_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_5_Ch0_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_5_Ch0_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetPt_1_Ch0_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetCSV_1_Ch0_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetPt_2_Ch0_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetCSV_2_Ch0_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetDeltaR_Ch0_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetInvMass_Ch0_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin0_Ch0_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin1_Ch0_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin2_Ch0_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin3_Ch0_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin4_Ch0_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin5_Ch0_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin0_Ch0_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin1_Ch0_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin2_Ch0_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin3_Ch0_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin4_Ch0_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin5_Ch0_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin6_Ch0_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin7_Ch0_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonPt_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonEta_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonRelIso_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nJets_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nbJets_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_TransverseMass_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_PV_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_PV_noSF_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonPt_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonEta_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonRelIso_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nJets_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nbJets_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_TransverseMass_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_PV_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_PV_noSF_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonPt_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonEta_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonRelIso_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nJets_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nbJets_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_TransverseMass_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonPt_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonEta_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonRelIso_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nJets_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nbJets_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_TransverseMass_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_PV_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_PV_noSF_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_0_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_0_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_0_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_1_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_1_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_1_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_2_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_2_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_2_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_3_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_3_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_3_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_4_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_4_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_4_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_5_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_5_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_5_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetPt_1_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetCSV_1_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetPt_2_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetCSV_2_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetDeltaR_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetInvMass_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_GenAddbJetPt_1_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_GenAddbJetPt_2_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_GenAddbJetDeltaR_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_GenAddbJetInvMass_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_gentop_GenAddbJetPt_1_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_gentop_GenAddbJetPt_2_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_gentop_GenAddbJetDeltaR_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_gentop_GenAddbJetInvMass_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin0_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin1_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin2_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin3_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin4_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin5_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin0_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin1_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin2_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin3_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin4_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin5_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin6_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin7_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonPt_Ch1_S5': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonEta_Ch1_S5': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonRelIso_Ch1_S5': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nJets_Ch1_S5': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nbJets_Ch1_S5': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_TransverseMass_Ch1_S5': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_PV_Ch1_S5': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_PV_noSF_Ch1_S5': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonPt_Ch1_S6': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonEta_Ch1_S6': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonRelIso_Ch1_S6': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nJets_Ch1_S6': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nbJets_Ch1_S6': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_TransverseMass_Ch1_S6': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonPt_Ch1_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonEta_Ch1_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonRelIso_Ch1_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nJets_Ch1_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nbJets_Ch1_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_TransverseMass_Ch1_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_0_Ch1_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_0_Ch1_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_0_Ch1_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_1_Ch1_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_1_Ch1_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_1_Ch1_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_2_Ch1_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_2_Ch1_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_2_Ch1_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_3_Ch1_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_3_Ch1_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_3_Ch1_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_4_Ch1_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_4_Ch1_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_4_Ch1_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_5_Ch1_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_5_Ch1_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_5_Ch1_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetPt_1_Ch1_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetCSV_1_Ch1_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetPt_2_Ch1_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetCSV_2_Ch1_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetDeltaR_Ch1_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetInvMass_Ch1_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin0_Ch1_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin1_Ch1_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin2_Ch1_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin3_Ch1_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin4_Ch1_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin5_Ch1_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin0_Ch1_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin1_Ch1_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin2_Ch1_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin3_Ch1_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin4_Ch1_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin5_Ch1_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin6_Ch1_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin7_Ch1_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonPt_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonEta_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonRelIso_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nJets_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nbJets_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_TransverseMass_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_PV_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_PV_noSF_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_0_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_0_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_0_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_1_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_1_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_1_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_2_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_2_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_2_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_3_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_3_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_3_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_4_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_4_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_4_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_5_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_5_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_5_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetPt_1_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetCSV_1_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetPt_2_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetCSV_2_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetDeltaR_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetInvMass_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_GenAddbJetPt_1_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_GenAddbJetPt_2_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_GenAddbJetDeltaR_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_GenAddbJetInvMass_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin0_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin1_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin2_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin3_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin4_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin5_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin0_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin1_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin2_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin3_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin4_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin5_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin6_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin7_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonPt_Ch1_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonEta_Ch1_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonRelIso_Ch1_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nJets_Ch1_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nbJets_Ch1_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_TransverseMass_Ch1_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_0_Ch1_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_0_Ch1_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_0_Ch1_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_1_Ch1_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_1_Ch1_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_1_Ch1_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_2_Ch1_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_2_Ch1_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_2_Ch1_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_3_Ch1_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_3_Ch1_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_3_Ch1_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_4_Ch1_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_4_Ch1_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_4_Ch1_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_5_Ch1_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_5_Ch1_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_5_Ch1_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetPt_1_Ch1_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetCSV_1_Ch1_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetPt_2_Ch1_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetCSV_2_Ch1_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetDeltaR_Ch1_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetInvMass_Ch1_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin0_Ch1_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin1_Ch1_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin2_Ch1_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin3_Ch1_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin4_Ch1_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin5_Ch1_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin0_Ch1_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin1_Ch1_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin2_Ch1_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin3_Ch1_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin4_Ch1_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin5_Ch1_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin6_Ch1_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin7_Ch1_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonPt_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonEta_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonRelIso_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nJets_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nbJets_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_TransverseMass_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_PV_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_PV_noSF_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonPt_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonEta_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonRelIso_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nJets_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nbJets_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_TransverseMass_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_PV_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_PV_noSF_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonPt_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonEta_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonRelIso_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nJets_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nbJets_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_TransverseMass_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonPt_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonEta_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonRelIso_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nJets_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nbJets_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_TransverseMass_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_PV_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_PV_noSF_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_0_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_0_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_0_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_1_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_1_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_1_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_2_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_2_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_2_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_3_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_3_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_3_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_4_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_4_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_4_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_5_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_5_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_5_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetPt_1_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetCSV_1_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetPt_2_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetCSV_2_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetDeltaR_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetInvMass_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_GenAddbJetPt_1_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_GenAddbJetPt_2_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_GenAddbJetDeltaR_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_GenAddbJetInvMass_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_gentop_GenAddbJetPt_1_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_gentop_GenAddbJetPt_2_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_gentop_GenAddbJetDeltaR_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_gentop_GenAddbJetInvMass_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin0_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin1_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin2_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin3_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin4_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin5_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin0_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin1_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin2_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin3_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin4_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin5_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin6_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin7_Ch2_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonPt_Ch2_S5': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonEta_Ch2_S5': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonRelIso_Ch2_S5': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nJets_Ch2_S5': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nbJets_Ch2_S5': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_TransverseMass_Ch2_S5': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_PV_Ch2_S5': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_PV_noSF_Ch2_S5': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonPt_Ch2_S6': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonEta_Ch2_S6': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonRelIso_Ch2_S6': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nJets_Ch2_S6': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nbJets_Ch2_S6': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_TransverseMass_Ch2_S6': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonPt_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonEta_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonRelIso_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nJets_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nbJets_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_TransverseMass_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_0_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_0_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_0_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_1_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_1_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_1_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_2_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_2_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_2_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_3_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_3_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_3_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_4_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_4_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_4_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_5_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_5_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_5_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetPt_1_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetCSV_1_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetPt_2_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetCSV_2_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetDeltaR_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetInvMass_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin0_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin1_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin2_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin3_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin4_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin5_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin0_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin1_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin2_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin3_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin4_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin5_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin6_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin7_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonPt_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonEta_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonRelIso_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nJets_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nbJets_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_TransverseMass_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_PV_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_PV_noSF_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_0_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_0_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_0_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_1_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_1_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_1_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_2_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_2_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_2_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_3_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_3_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_3_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_4_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_4_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_4_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_5_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_5_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_5_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetPt_1_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetCSV_1_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetPt_2_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetCSV_2_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetDeltaR_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetInvMass_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_GenAddbJetPt_1_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_GenAddbJetPt_2_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_GenAddbJetDeltaR_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_GenAddbJetInvMass_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin0_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin1_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin2_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin3_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin4_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin5_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin0_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin1_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin2_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin3_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin4_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin5_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin6_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin7_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonPt_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonEta_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonRelIso_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nJets_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nbJets_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_TransverseMass_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_0_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_0_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_0_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_1_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_1_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_1_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_2_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_2_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_2_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_3_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_3_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_3_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_4_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_4_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_4_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_5_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_5_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_5_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetPt_1_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetCSV_1_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetPt_2_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetCSV_2_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetDeltaR_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetInvMass_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin0_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin1_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin2_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin3_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin4_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin5_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin0_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin1_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin2_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin3_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin4_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin5_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin6_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin7_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_keras_RecoDeltaRvsCSV_bin0_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_keras_RecoDeltaRvsCSV_bin1_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_keras_RecoDeltaRvsCSV_bin2_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_keras_RecoDeltaRvsCSV_bin3_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_keras_RecoInvMassvsCSV_bin0_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_keras_RecoInvMassvsCSV_bin1_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_keras_RecoInvMassvsCSV_bin2_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_keras_RecoInvMassvsCSV_bin3_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_keras_RecoDeltaRvsCSV_bin0_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_keras_RecoDeltaRvsCSV_bin1_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_keras_RecoDeltaRvsCSV_bin2_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_keras_RecoDeltaRvsCSV_bin3_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_keras_RecoInvMassvsCSV_bin0_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_keras_RecoInvMassvsCSV_bin1_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_keras_RecoInvMassvsCSV_bin2_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_keras_RecoInvMassvsCSV_bin3_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_keras_RecoDeltaRvsCSV_bin0_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_keras_RecoDeltaRvsCSV_bin1_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_keras_RecoDeltaRvsCSV_bin2_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_keras_RecoDeltaRvsCSV_bin3_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_keras_RecoInvMassvsCSV_bin0_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_keras_RecoInvMassvsCSV_bin1_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_keras_RecoInvMassvsCSV_bin2_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_keras_RecoInvMassvsCSV_bin3_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + + + diff --git a/plotIt/configs/histos_dnn.yml b/plotIt/configs/histos/histos_dnn.yml similarity index 100% rename from plotIt/configs/histos_dnn.yml rename to plotIt/configs/histos/histos_dnn.yml diff --git a/plotIt/configs/histos/histos_qcd.yml b/plotIt/configs/histos/histos_qcd.yml new file mode 100644 index 0000000..10ee26c --- /dev/null +++ b/plotIt/configs/histos/histos_qcd.yml @@ -0,0 +1,379 @@ +'h_LeptonPt_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1% / %2$.2f" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonEta_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1% / %2$.2f" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonRelIso_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1% / %2$.2f" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_nJets_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_nbJets_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_TransverseMass_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1% / %2$.2f" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonPt_Ch0_S1': + y-axis: "Events" + y-axis-format: "%1% / %2$.2f" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonEta_Ch0_S1': + y-axis: "Events" + y-axis-format: "%1% / %2$.2f" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonRelIso_Ch0_S1': + y-axis: "Events" + y-axis-format: "%1% / %2$.2f" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_nJets_Ch0_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_nbJets_Ch0_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_TransverseMass_Ch0_S1': + y-axis: "Events" + y-axis-format: "%1% / %2$.2f" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonPt_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1% / %2$.2f" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonEta_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1% / %2$.2f" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonRelIso_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1% / %2$.2f" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_nJets_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_nbJets_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_TransverseMass_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1% / %2$.2f" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonPt_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1% / %2$.2f" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonEta_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1% / %2$.2f" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonRelIso_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1% / %2$.2f" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_nJets_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_nbJets_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_TransverseMass_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1% / %2$.2f" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonPt_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1% / %2$.2f" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonEta_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1% / %2$.2f" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonRelIso_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1% / %2$.2f" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_nJets_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_nbJets_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_TransverseMass_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1% / %2$.2f" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonPt_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1% / %2$.2f" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonEta_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1% / %2$.2f" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonRelIso_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1% / %2$.2f" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_nJets_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_nbJets_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_TransverseMass_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1% / %2$.2f" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonPt_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1% / %2$.2f" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonEta_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1% / %2$.2f" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonRelIso_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1% / %2$.2f" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_nJets_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_nbJets_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_TransverseMass_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1% / %2$.2f" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonPt_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1% / %2$.2f" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonEta_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1% / %2$.2f" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonRelIso_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1% / %2$.2f" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_nJets_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_nbJets_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_TransverseMass_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1% / %2$.2f" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonPt_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1% / %2$.2f" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonEta_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1% / %2$.2f" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonRelIso_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1% / %2$.2f" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_nJets_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_nbJets_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_TransverseMass_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1% / %2$.2f" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + + diff --git a/plotIt/configs/histos/histos_ttlj.yml b/plotIt/configs/histos/histos_ttlj.yml new file mode 100644 index 0000000..c718ef0 --- /dev/null +++ b/plotIt/configs/histos/histos_ttlj.yml @@ -0,0 +1,2208 @@ +'h_LeptonPt_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonEta_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonRelIso_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_nJets_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + for-yields: true + yields-table-order: 0 + yields-title: 'nJetsCh0S0' + +'h_nbJets_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_TransverseMass_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_PV_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_PV_noSF_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_0_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_0_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_1_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_1_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_2_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_2_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_3_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_3_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_4_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_4_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_5_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_5_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR2_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass2_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR3_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass3_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonPt_Ch0_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonEta_Ch0_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonRelIso_Ch0_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_nJets_Ch0_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + for-yields: true + yields-table-order: 1 + yields-title: 'nJetsCh0S1' + +'h_nbJets_Ch0_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_TransverseMass_Ch0_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_PV_Ch0_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_PV_noSF_Ch0_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_0_Ch0_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_0_Ch0_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_1_Ch0_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_1_Ch0_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_2_Ch0_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_2_Ch0_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_3_Ch0_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_3_Ch0_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_4_Ch0_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_4_Ch0_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_5_Ch0_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_5_Ch0_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR_Ch0_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass_Ch0_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR2_Ch0_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass2_Ch0_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR3_Ch0_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass3_Ch0_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonPt_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonEta_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonRelIso_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_nJets_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + for-yields: true + yields-table-order: 2 + yields-title: 'nJetsCh0S2' + +'h_nbJets_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_TransverseMass_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_PV_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_PV_noSF_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_0_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_0_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_1_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_1_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_2_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_2_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_3_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_3_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_4_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_4_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_5_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_5_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR2_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass2_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR3_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass3_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonPt_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonEta_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonRelIso_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_nJets_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + for-yields: true + yields-table-order: 3 + yields-title: 'nJetsCh0S3' + +'h_nbJets_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_TransverseMass_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_PV_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_PV_noSF_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_0_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_0_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_1_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_1_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_2_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_2_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_3_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_3_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_4_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_4_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_5_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_5_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR2_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass2_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR3_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass3_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonPt_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonEta_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonRelIso_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_nJets_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + for-yields: true + yields-table-order: 4 + yields-title: 'nJetsCh1S0' + +'h_nbJets_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_TransverseMass_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_PV_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_PV_noSF_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_0_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_0_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_1_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_1_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_2_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_2_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_3_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_3_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_4_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_4_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_5_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_5_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR2_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass2_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR3_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass3_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonPt_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonEta_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonRelIso_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_nJets_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + for-yields: true + yields-table-order: 5 + yields-title: 'nJetsCh1S1' + +'h_nbJets_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_TransverseMass_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_PV_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_PV_noSF_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_0_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_0_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_1_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_1_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_2_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_2_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_3_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_3_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_4_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_4_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_5_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_5_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR2_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass2_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR3_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass3_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonPt_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonEta_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonRelIso_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_nJets_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + for-yields: true + yields-table-order: 6 + yields-title: 'nJetsCh1S2' + +'h_nbJets_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_TransverseMass_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_PV_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_PV_noSF_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_0_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_0_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_1_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_1_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_2_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_2_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_3_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_3_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_4_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_4_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_5_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_5_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR2_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass2_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR3_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass3_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonPt_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonEta_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonRelIso_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_nJets_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + for-yields: true + yields-table-order: 7 + yields-title: 'nJetsCh1S3' + +'h_nbJets_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_TransverseMass_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_PV_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_PV_noSF_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_0_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_0_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_1_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_1_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_2_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_2_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_3_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_3_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_4_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_4_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_5_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_5_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR2_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass2_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR3_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass3_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonPt_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonEta_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonRelIso_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_nJets_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_nbJets_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_TransverseMass_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_PV_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_PV_noSF_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_0_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_0_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_1_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_1_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_2_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_2_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_3_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_3_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_4_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_4_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_5_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_5_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR2_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass2_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR3_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass3_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonPt_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonEta_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonRelIso_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_nJets_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_nbJets_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_TransverseMass_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_PV_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_PV_noSF_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_0_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_0_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_1_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_1_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_2_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_2_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_3_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_3_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_4_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_4_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_5_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_5_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR2_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass2_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR3_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass3_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonPt_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonEta_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonRelIso_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_nJets_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_nbJets_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_TransverseMass_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_PV_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_PV_noSF_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_0_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_0_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_1_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_1_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_2_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_2_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_3_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_3_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_4_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_4_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_5_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_5_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR2_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass2_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR3_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass3_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonPt_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonEta_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_LeptonRelIso_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_nJets_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_nbJets_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_TransverseMass_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_PV_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_PV_noSF_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_0_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_0_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_1_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_1_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_2_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_2_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_3_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_3_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_4_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_4_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetPt_5_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_JetEta_5_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR2_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass2_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR3_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass3_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + diff --git a/plotIt/configs/histos/histos_yields.yml b/plotIt/configs/histos/histos_yields.yml new file mode 100644 index 0000000..952318b --- /dev/null +++ b/plotIt/configs/histos/histos_yields.yml @@ -0,0 +1,80 @@ +'h_nJets_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + for-yields: true + yields-table-order: 0 + yields-title: 'nJetsCh0S0' + +'h_nJets_Ch0_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + for-yields: true + yields-table-order: 1 + yields-title: 'nJetsCh0S1' + +'h_nJets_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + for-yields: true + yields-table-order: 2 + yields-title: 'nJetsCh0S2' + +'h_nJets_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + for-yields: true + yields-table-order: 3 + yields-title: 'nJetsCh0S3' + +'h_nJets_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + for-yields: true + yields-table-order: 4 + yields-title: 'nJetsCh1S0' + +'h_nJets_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + for-yields: true + yields-table-order: 5 + yields-title: 'nJetsCh1S1' + +'h_nJets_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + for-yields: true + yields-table-order: 6 + yields-title: 'nJetsCh1S2' + +'h_nJets_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + log-y: true + show-ratio: true + for-yields: true + yields-table-order: 7 + yields-title: 'nJetsCh1S3' + diff --git a/plotIt/configs/histos_Ch2S7.yml b/plotIt/configs/histos_Ch2S7.yml new file mode 100644 index 0000000..b4799b5 --- /dev/null +++ b/plotIt/configs/histos_Ch2S7.yml @@ -0,0 +1,307 @@ +'h_LeptonPt_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonEta_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonRelIso_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nJets_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nbJets_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_TransverseMass_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_0_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_0_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_0_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_1_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_1_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_1_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_2_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_2_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_2_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_3_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_3_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_3_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_4_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_4_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_4_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_5_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_5_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_5_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetPt_1_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetCSV_1_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetPt_2_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetCSV_2_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetDeltaR_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetInvMass_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin0_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin1_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin2_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin3_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin4_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin5_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin0_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin1_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin2_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin3_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin4_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin5_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin6_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin7_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true diff --git a/plotIt/configs/histos_Ch2S8.yml b/plotIt/configs/histos_Ch2S8.yml new file mode 100644 index 0000000..ee7704b --- /dev/null +++ b/plotIt/configs/histos_Ch2S8.yml @@ -0,0 +1,307 @@ +'h_LeptonPt_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonEta_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonRelIso_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nJets_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nbJets_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_TransverseMass_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_0_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_0_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_0_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_1_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_1_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_1_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_2_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_2_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_2_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_3_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_3_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_3_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_4_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_4_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_4_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_5_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_5_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_5_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetPt_1_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetCSV_1_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetPt_2_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetCSV_2_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetDeltaR_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetInvMass_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin0_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin1_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin2_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin3_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin4_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin5_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin0_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin1_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin2_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin3_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin4_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin5_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin6_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin7_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true diff --git a/plotIt/configs/histos_Ch2S9.yml b/plotIt/configs/histos_Ch2S9.yml new file mode 100644 index 0000000..b92a1a9 --- /dev/null +++ b/plotIt/configs/histos_Ch2S9.yml @@ -0,0 +1,307 @@ +'h_LeptonPt_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonEta_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_LeptonRelIso_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nJets_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_nbJets_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_TransverseMass_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_0_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_0_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_0_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_1_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_1_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_1_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_2_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_2_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_2_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_3_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_3_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_3_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_4_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_4_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_4_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetPt_5_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_JetEta_5_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_bJetDiscriminator_5_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetPt_1_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetCSV_1_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetPt_2_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetCSV_2_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetDeltaR_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetInvMass_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin0_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin1_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin2_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin3_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin4_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin5_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin0_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin1_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin2_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin3_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin4_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin5_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin6_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin7_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true diff --git a/plotIt/configs/histos_merge.yml b/plotIt/configs/histos_merge.yml new file mode 100644 index 0000000..c0ff9c4 --- /dev/null +++ b/plotIt/configs/histos_merge.yml @@ -0,0 +1,314 @@ +'h_mindR_RecoAddbJetDeltaR_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetInvMass_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin0_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin1_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin2_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin3_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin4_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin0_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin1_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin2_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin3_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin4_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin5_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin6_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin7_Ch2_S7': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetDeltaR_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetInvMass_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin0_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin1_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin2_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin3_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin4_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin0_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin1_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin2_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin3_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin4_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin5_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin6_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin7_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetDeltaR_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetInvMass_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin0_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin1_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin2_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin3_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin4_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin0_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin1_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin2_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin3_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin4_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin5_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin6_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin7_Ch2_S9': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true diff --git a/plotIt/configs/histos_ttlj.yml b/plotIt/configs/histos_ttlj.yml index bfd0ba9..c019a8a 100644 --- a/plotIt/configs/histos_ttlj.yml +++ b/plotIt/configs/histos_ttlj.yml @@ -1,512 +1,5439 @@ 'h_LeptonPt_Ch0_S0': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true 'h_LeptonEta_Ch0_S0': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true + show-ratio: true + +'h_LeptonRelIso_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true show-ratio: true 'h_nJets_Ch0_S0': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true - for-yields: true 'h_nbJets_Ch0_S0': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true 'h_TransverseMass_Ch0_S0': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_PV_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_PV_noSF_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_0_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_0_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_0_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_1_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_1_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_1_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_2_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_2_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_2_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_3_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_3_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_3_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_4_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true + show-ratio: true + +'h_JetEta_4_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_4_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_5_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_5_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_5_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true show-ratio: true 'h_mindR_RecoAddbJetDeltaR_Ch0_S0': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true 'h_mindR_RecoAddbJetInvMass_Ch0_S0': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR_split_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass_split_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_GenAddbJetDeltaR_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_GenAddbJetInvMass_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_GenAddbJetDeltaR_split_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_GenAddbJetInvMass_split_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_gentop_GenAddbJetDeltaR_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_gentop_GenAddbJetInvMass_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_gentop_GenAddbJetDeltaR_split_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_gentop_GenAddbJetInvMass_split_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsInvMass_spread_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_mindR_RecoAddbJetDeltaEta_Ch0_S0': +'h_mindR_RecoDeltaRvsCSV_bin0_Ch0_S0': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_mindR_RecoAddbJetDeltaPhi_Ch0_S0': +'h_mindR_RecoDeltaRvsCSV_bin1_Ch0_S0': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin2_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin3_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin4_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin5_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin0_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin1_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin2_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin3_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin4_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin5_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin6_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin7_Ch0_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true show-ratio: true 'h_LeptonPt_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true 'h_LeptonEta_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true + show-ratio: true + +'h_LeptonRelIso_Ch0_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true show-ratio: true 'h_nJets_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true - for-yields: true 'h_nbJets_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true 'h_TransverseMass_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_mindR_RecoAddbJetDeltaR_Ch0_S1': +'h_PV_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_mindR_RecoAddbJetInvMass_Ch0_S1': +'h_PV_noSF_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_mindR_RecoAddbJetDeltaEta_Ch0_S1': +'h_JetPt_0_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_mindR_RecoAddbJetDeltaPhi_Ch0_S1': +'h_JetEta_0_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_LeptonPt_Ch0_S2': +'h_bJetDiscriminator_0_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_LeptonEta_Ch0_S2': +'h_JetPt_1_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_nJets_Ch0_S2': +'h_JetEta_1_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true - for-yields: true -'h_nbJets_Ch0_S2': +'h_bJetDiscriminator_1_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_TransverseMass_Ch0_S2': +'h_JetPt_2_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_mindR_RecoAddbJetDeltaR_Ch0_S2': +'h_JetEta_2_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_mindR_RecoAddbJetInvMass_Ch0_S2': +'h_bJetDiscriminator_2_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_mindR_RecoAddbJetDeltaEta_Ch0_S2': +'h_JetPt_3_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_mindR_RecoAddbJetDeltaPhi_Ch0_S2': +'h_JetEta_3_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_LeptonPt_Ch0_S3': +'h_bJetDiscriminator_3_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_LeptonEta_Ch0_S3': +'h_JetPt_4_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_nJets_Ch0_S3': +'h_JetEta_4_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true - for-yields: true -'h_nbJets_Ch0_S3': +'h_bJetDiscriminator_4_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_TransverseMass_Ch0_S3': +'h_JetPt_5_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_mindR_RecoAddbJetDeltaR_Ch0_S3': +'h_JetEta_5_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_mindR_RecoAddbJetInvMass_Ch0_S3': +'h_bJetDiscriminator_5_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_mindR_RecoAddbJetDeltaEta_Ch0_S3': +'h_mindR_RecoAddbJetDeltaR_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_mindR_RecoAddbJetDeltaPhi_Ch0_S3': +'h_mindR_RecoAddbJetInvMass_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_LeptonPt_Ch1_S0': +'h_mindR_RecoAddbJetDeltaR_split_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_LeptonEta_Ch1_S0': +'h_mindR_RecoAddbJetInvMass_split_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_nJets_Ch1_S0': +'h_mindR_GenAddbJetDeltaR_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true - for-yields: true -'h_nbJets_Ch1_S0': +'h_mindR_GenAddbJetInvMass_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_TransverseMass_Ch1_S0': +'h_mindR_GenAddbJetDeltaR_split_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_mindR_RecoAddbJetDeltaR_Ch1_S0': +'h_mindR_GenAddbJetInvMass_split_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_mindR_RecoAddbJetInvMass_Ch1_S0': +'h_gentop_GenAddbJetDeltaR_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_mindR_RecoAddbJetDeltaEta_Ch1_S0': +'h_gentop_GenAddbJetInvMass_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_mindR_RecoAddbJetDeltaPhi_Ch1_S0': +'h_gentop_GenAddbJetDeltaR_split_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_LeptonPt_Ch1_S1': +'h_gentop_GenAddbJetInvMass_split_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_LeptonEta_Ch1_S1': +'h_mindR_RecoDeltaRvsInvMass_spread_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_nJets_Ch1_S1': +'h_mindR_RecoDeltaRvsCSV_bin0_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true - for-yields: true -'h_nbJets_Ch1_S1': +'h_mindR_RecoDeltaRvsCSV_bin1_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_TransverseMass_Ch1_S1': +'h_mindR_RecoDeltaRvsCSV_bin2_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_mindR_RecoAddbJetDeltaR_Ch1_S1': +'h_mindR_RecoDeltaRvsCSV_bin3_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_mindR_RecoAddbJetInvMass_Ch1_S1': +'h_mindR_RecoDeltaRvsCSV_bin4_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_mindR_RecoAddbJetDeltaEta_Ch1_S1': +'h_mindR_RecoDeltaRvsCSV_bin5_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_mindR_RecoAddbJetDeltaPhi_Ch1_S1': +'h_mindR_RecoInvMassvsCSV_bin0_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_LeptonPt_Ch1_S2': +'h_mindR_RecoInvMassvsCSV_bin1_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_LeptonEta_Ch1_S2': +'h_mindR_RecoInvMassvsCSV_bin2_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_nJets_Ch1_S2': +'h_mindR_RecoInvMassvsCSV_bin3_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true - for-yields: true -'h_nbJets_Ch1_S2': +'h_mindR_RecoInvMassvsCSV_bin4_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_TransverseMass_Ch1_S2': +'h_mindR_RecoInvMassvsCSV_bin5_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_mindR_RecoAddbJetDeltaR_Ch1_S2': +'h_mindR_RecoInvMassvsCSV_bin6_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_mindR_RecoAddbJetInvMass_Ch1_S2': +'h_mindR_RecoInvMassvsCSV_bin7_Ch0_S1': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_mindR_RecoAddbJetDeltaEta_Ch1_S2': +'h_LeptonPt_Ch0_S2': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_mindR_RecoAddbJetDeltaPhi_Ch1_S2': +'h_LeptonEta_Ch0_S2': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_LeptonPt_Ch1_S3': +'h_LeptonRelIso_Ch0_S2': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_LeptonEta_Ch1_S3': +'h_nJets_Ch0_S2': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_nJets_Ch1_S3': +'h_nbJets_Ch0_S2': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true - for-yields: true -'h_nbJets_Ch1_S3': +'h_TransverseMass_Ch0_S2': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_TransverseMass_Ch1_S3': +'h_PV_Ch0_S2': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_mindR_RecoAddbJetDeltaR_Ch1_S3': +'h_PV_noSF_Ch0_S2': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_mindR_RecoAddbJetInvMass_Ch1_S3': +'h_JetPt_0_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_0_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_0_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_1_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_1_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_1_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_2_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_2_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_2_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_3_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_3_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_3_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_4_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_4_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_4_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_5_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_5_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_5_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR_split_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass_split_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_GenAddbJetDeltaR_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_GenAddbJetInvMass_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_GenAddbJetDeltaR_split_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_GenAddbJetInvMass_split_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_gentop_GenAddbJetDeltaR_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_gentop_GenAddbJetInvMass_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_gentop_GenAddbJetDeltaR_split_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_gentop_GenAddbJetInvMass_split_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsInvMass_spread_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin0_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin1_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin2_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin3_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin4_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin5_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin0_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin1_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin2_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin3_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin4_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin5_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin6_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin7_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_LeptonPt_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_LeptonEta_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_LeptonRelIso_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_nJets_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_nbJets_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_TransverseMass_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_PV_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_PV_noSF_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_0_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_0_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_0_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_1_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_1_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_1_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_2_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_2_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_2_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_3_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_3_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_3_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_4_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_4_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_4_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_5_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_5_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_5_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR_split_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass_split_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_GenAddbJetDeltaR_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_GenAddbJetInvMass_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_GenAddbJetDeltaR_split_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_GenAddbJetInvMass_split_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_gentop_GenAddbJetDeltaR_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_gentop_GenAddbJetInvMass_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_gentop_GenAddbJetDeltaR_split_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_gentop_GenAddbJetInvMass_split_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsInvMass_spread_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin0_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin1_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin2_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin3_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin4_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin5_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin0_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin1_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin2_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin3_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin4_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin5_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin6_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin7_Ch0_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_LeptonPt_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_LeptonEta_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_LeptonRelIso_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_nJets_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_nbJets_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_TransverseMass_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_PV_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_PV_noSF_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_0_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_0_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_0_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_1_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_1_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_1_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_2_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_2_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_2_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_3_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_3_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_3_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_4_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_4_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_4_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_5_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_5_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_5_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR_split_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass_split_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_GenAddbJetDeltaR_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_GenAddbJetInvMass_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_GenAddbJetDeltaR_split_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_GenAddbJetInvMass_split_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_gentop_GenAddbJetDeltaR_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_gentop_GenAddbJetInvMass_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_gentop_GenAddbJetDeltaR_split_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_gentop_GenAddbJetInvMass_split_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsInvMass_spread_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin0_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin1_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin2_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin3_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin4_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin5_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin0_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin1_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin2_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin3_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin4_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin5_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin6_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin7_Ch1_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_LeptonPt_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_LeptonEta_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_LeptonRelIso_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_nJets_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_nbJets_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_TransverseMass_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_PV_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_PV_noSF_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_0_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_0_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_0_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_1_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_1_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_1_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_2_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_2_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_2_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_3_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_3_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_3_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_4_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_4_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_4_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_5_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_5_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_5_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR_split_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass_split_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_GenAddbJetDeltaR_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_GenAddbJetInvMass_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_GenAddbJetDeltaR_split_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_GenAddbJetInvMass_split_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_gentop_GenAddbJetDeltaR_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_gentop_GenAddbJetInvMass_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_gentop_GenAddbJetDeltaR_split_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_gentop_GenAddbJetInvMass_split_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsInvMass_spread_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin0_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin1_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin2_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin3_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin4_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin5_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin0_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin1_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin2_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin3_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin4_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin5_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin6_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin7_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_LeptonPt_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_LeptonEta_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_LeptonRelIso_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_nJets_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_nbJets_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_TransverseMass_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_PV_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_PV_noSF_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_0_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_0_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_0_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_1_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_1_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_1_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_2_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_2_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_2_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_3_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_3_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_3_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_4_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_4_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_4_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_5_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_5_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_5_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR_split_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass_split_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_GenAddbJetDeltaR_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_GenAddbJetInvMass_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_GenAddbJetDeltaR_split_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_GenAddbJetInvMass_split_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_gentop_GenAddbJetDeltaR_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_gentop_GenAddbJetInvMass_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_gentop_GenAddbJetDeltaR_split_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_gentop_GenAddbJetInvMass_split_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsInvMass_spread_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin0_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin1_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin2_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin3_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin4_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin5_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin0_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin1_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin2_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin3_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin4_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin5_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin6_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin7_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_LeptonPt_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_LeptonEta_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_LeptonRelIso_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_nJets_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_nbJets_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_TransverseMass_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_PV_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_PV_noSF_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_0_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_0_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_0_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_1_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_1_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_1_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_2_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_2_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_2_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_3_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_3_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_3_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_4_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_4_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_4_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_5_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_5_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_5_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR_split_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass_split_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_GenAddbJetDeltaR_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_GenAddbJetInvMass_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_GenAddbJetDeltaR_split_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_GenAddbJetInvMass_split_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_gentop_GenAddbJetDeltaR_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_gentop_GenAddbJetInvMass_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_gentop_GenAddbJetDeltaR_split_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_gentop_GenAddbJetInvMass_split_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsInvMass_spread_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin0_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin1_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin2_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin3_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin4_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin5_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin0_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin1_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin2_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin3_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin4_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin5_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin6_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin7_Ch1_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_LeptonPt_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_LeptonEta_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_LeptonRelIso_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_nJets_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_nbJets_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_TransverseMass_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_PV_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_PV_noSF_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_0_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_0_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_0_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_1_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_1_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_1_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_2_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_2_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_2_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_3_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_3_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_3_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_4_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_4_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_4_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_5_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_5_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_5_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR_split_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass_split_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_GenAddbJetDeltaR_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_GenAddbJetInvMass_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_GenAddbJetDeltaR_split_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_GenAddbJetInvMass_split_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_gentop_GenAddbJetDeltaR_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_gentop_GenAddbJetInvMass_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_gentop_GenAddbJetDeltaR_split_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_gentop_GenAddbJetInvMass_split_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsInvMass_spread_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin0_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin1_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin2_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin3_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin4_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin5_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin0_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin1_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin2_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin3_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin4_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin5_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin6_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin7_Ch2_S0': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_LeptonPt_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_LeptonEta_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_LeptonRelIso_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_nJets_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_nbJets_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_TransverseMass_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_PV_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_PV_noSF_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_0_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_0_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_0_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_1_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_1_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_1_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_2_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_2_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_2_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_3_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_3_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_3_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_4_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_4_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_4_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_5_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_5_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_5_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR_split_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass_split_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_GenAddbJetDeltaR_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_GenAddbJetInvMass_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_GenAddbJetDeltaR_split_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_GenAddbJetInvMass_split_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_gentop_GenAddbJetDeltaR_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_gentop_GenAddbJetInvMass_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_gentop_GenAddbJetDeltaR_split_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_gentop_GenAddbJetInvMass_split_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsInvMass_spread_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin0_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin1_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin2_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin3_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin4_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin5_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin0_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin1_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin2_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin3_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin4_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin5_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin6_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin7_Ch2_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_LeptonPt_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_LeptonEta_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_LeptonRelIso_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_nJets_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_nbJets_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_TransverseMass_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_PV_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_PV_noSF_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_0_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_0_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_0_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_1_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_1_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_1_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_2_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_2_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_2_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_3_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_3_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_3_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_4_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_4_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_4_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_5_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_5_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_5_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR_split_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass_split_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_GenAddbJetDeltaR_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_GenAddbJetInvMass_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_GenAddbJetDeltaR_split_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_GenAddbJetInvMass_split_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_gentop_GenAddbJetDeltaR_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_gentop_GenAddbJetInvMass_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_gentop_GenAddbJetDeltaR_split_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_gentop_GenAddbJetInvMass_split_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsInvMass_spread_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin0_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin1_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin2_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin3_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin4_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin5_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin0_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin1_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin2_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin3_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin4_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin5_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin6_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin7_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_LeptonPt_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_LeptonEta_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_LeptonRelIso_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_nJets_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_nbJets_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_TransverseMass_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_PV_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_PV_noSF_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_0_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_0_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_0_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_1_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_1_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_1_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_2_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_2_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_2_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_3_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_3_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_3_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_4_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_4_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_4_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetPt_5_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_JetEta_5_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_bJetDiscriminator_5_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR_split_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoAddbJetInvMass_split_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_GenAddbJetDeltaR_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_GenAddbJetInvMass_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_GenAddbJetDeltaR_split_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_GenAddbJetInvMass_split_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_gentop_GenAddbJetDeltaR_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_gentop_GenAddbJetInvMass_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_gentop_GenAddbJetDeltaR_split_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_gentop_GenAddbJetInvMass_split_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsInvMass_spread_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin0_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin1_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin2_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin3_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin4_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoDeltaRvsCSV_bin5_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin0_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin1_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin2_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin3_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin4_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin5_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin6_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_mindR_RecoInvMassvsCSV_bin7_Ch2_S3': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_bbM_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_bbdR_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_bbdPhi_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_bbdEta_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_bbPhi_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_bbEta_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_bbnM_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_bbndR_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b1nM_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b1ndR_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b2nM_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b2ndR_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_bblM_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_bbldR_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b1lM_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b1ldR_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b2lM_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b2ldR_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_bblndR_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b1pT_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b1Eta_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b1E_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b1CSV_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b1M_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b2pT_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b2Eta_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b2E_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b2CSV_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b2M_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_lpT_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_lEta_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_lE_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_npT_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_nPhi_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_nbjets_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_nJets_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_nbJets_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_RecoAddbJetDeltaR_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_RecoAddbJetInvMass_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_RecoDeltaRvsJetCSV_bin0_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_RecoDeltaRvsJetCSV_bin1_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_RecoDeltaRvsJetCSV_bin2_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_RecoDeltaRvsJetCSV_bin3_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_RecoInvMassvsJetCSV_bin0_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_RecoInvMassvsJetCSV_bin1_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_RecoInvMassvsJetCSV_bin2_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_RecoInvMassvsJetCSV_bin3_Ch0_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_bbM_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_bbdR_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_bbdPhi_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_bbdEta_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_bbPhi_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_bbEta_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_bbnM_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_bbndR_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b1nM_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b1ndR_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b2nM_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b2ndR_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_bblM_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_bbldR_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b1lM_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b1ldR_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b2lM_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b2ldR_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_bblndR_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b1pT_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b1Eta_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b1E_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b1CSV_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b1M_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b2pT_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b2Eta_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b2E_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b2CSV_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b2M_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_lpT_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_lEta_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_lE_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_npT_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_nPhi_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_nbjets_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_nJets_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_nbJets_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_RecoAddbJetDeltaR_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_RecoAddbJetInvMass_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_RecoDeltaRvsJetCSV_bin0_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_RecoDeltaRvsJetCSV_bin1_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_RecoDeltaRvsJetCSV_bin2_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_RecoDeltaRvsJetCSV_bin3_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_RecoInvMassvsJetCSV_bin0_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_RecoInvMassvsJetCSV_bin1_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_RecoInvMassvsJetCSV_bin2_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_RecoInvMassvsJetCSV_bin3_Ch1_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_bbM_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_bbdR_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_bbdPhi_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_bbdEta_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_bbPhi_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_bbEta_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_bbnM_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_bbndR_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b1nM_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b1ndR_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b2nM_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b2ndR_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_bblM_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_bbldR_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b1lM_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b1ldR_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b2lM_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b2ldR_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_bblndR_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b1pT_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b1Eta_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b1E_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b1CSV_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b1M_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b2pT_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b2Eta_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b2E_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b2CSV_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_b2M_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_lpT_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_lEta_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_lE_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_npT_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_nPhi_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_nbjets_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_nJets_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_nbJets_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_RecoAddbJetDeltaR_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_RecoAddbJetInvMass_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_RecoDeltaRvsJetCSV_bin0_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_RecoDeltaRvsJetCSV_bin1_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_RecoDeltaRvsJetCSV_bin2_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_RecoDeltaRvsJetCSV_bin3_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_RecoInvMassvsJetCSV_bin0_Ch2_S2': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + #log-y: true + show-ratio: true + +'h_keras_RecoInvMassvsJetCSV_bin1_Ch2_S2': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_mindR_RecoAddbJetDeltaEta_Ch1_S3': +'h_keras_RecoInvMassvsJetCSV_bin2_Ch2_S2': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true -'h_mindR_RecoAddbJetDeltaPhi_Ch1_S3': +'h_keras_RecoInvMassvsJetCSV_bin3_Ch2_S2': y-axis: "Events" - y-axis-format: "%1% / %2$.2f" + y-axis-format: "%1%" save-extensions: ['pdf'] - log-y: true + #log-y: true show-ratio: true diff --git a/plotIt/configs/test.yml b/plotIt/configs/test.yml new file mode 100644 index 0000000..2ac280e --- /dev/null +++ b/plotIt/configs/test.yml @@ -0,0 +1,204 @@ +'h_LeptonPt_Ch0_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true +'h_nJets_Ch0_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true +'h_nbJets_Ch0_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true +'h_LeptonPt_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true +'h_nJets_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true +'h_nbJets_Ch0_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true +'h_LeptonPt_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true +'h_nJets_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true +'h_nbJets_Ch0_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true +'h_LeptonPt_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true +'h_nJets_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true +'h_nbJets_Ch1_S1': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true +'h_LeptonPt_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true +'h_nJets_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true +'h_nbJets_Ch1_S4': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true +'h_LeptonPt_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true +'h_nJets_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true +'h_nbJets_Ch1_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + +'h_mindR_RecoAddbJetDeltaR_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoAddbJetInvMass_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + + +'h_mindR_RecoDeltaRvsCSV_bin0_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin1_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin2_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin3_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin4_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoDeltaRvsCSV_bin5_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin0_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin1_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin2_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin3_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin4_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin5_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin6_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + +'h_mindR_RecoInvMassvsCSV_bin7_Ch2_S8': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + #log-y: true + diff --git a/plotIt/configs/tmp.yml b/plotIt/configs/tmp.yml new file mode 100644 index 0000000..0bee295 --- /dev/null +++ b/plotIt/configs/tmp.yml @@ -0,0 +1,38 @@ +configuration: + width: 450 + height: 450 + luminosity-label: '%1$.1f fb^{-1} at #sqrt{s} = 13 TeV' + experiment: " CMS" + #extra-label: "Preliminary" + extra-label: "Work in Progress" + root: '' + luminosity: 35922 + luminosity-error: 0.025 + error-fill-style: 3154 + error-fill-color: "#ee556270" + ratio-fit-error-fill-style: 1001 + ratio-fit-error-fill-color: "#aa556270" + ratio-fit-line-color: "#0B486B" + blinded-range-fill-color: "#29556270" + blinded-range-fill-style: 1001 + yields-table-align: v + book-keeping-file: 'plots.root' + yields-table-numerical-precision-yields: 2 + +files: + include: ['files16.yml'] # For basic plots + +systematics: + +plots: + #include: ['histos.yml'] # Basic plot list + include: ['test.yml'] # Basic plot list + +legend: + position: [0.18, 0.68, 0.92, 0.89] + columns: 5 + +groups: + include: ['groups.yml'] + +# - gamma: {type: ln, prior: 1.072, pretty-name: "Gamma"} # Log-normal systematics, +7.2%, -2.97%, exp(+/- 1 * log(prior)) diff --git a/python/StdoutRedirect.py b/python/StdoutRedirect.py new file mode 100644 index 0000000..9447e27 --- /dev/null +++ b/python/StdoutRedirect.py @@ -0,0 +1,23 @@ +import sys +from PyQt5.QtCore import pyqtSignal, QObject + +class StdoutRedirect(QObject): + printOccur = pyqtSignal(str, str, name="print") + + def __init__(self, *param): + QObject.__init__(self, None) + self.daemon = True + self.sysstdout = sys.stdout.write + self.sysstderr = sys.stderr.write + + def stop(self): + sys.stdout.write = self.sysstdout + sys.stderr.write = self.sysstderr + + def start(self): + sys.stdout.write = self.write + sys.stderr.write = lambda msg : self.write(msg, color="red") + + def write(self, s, color="black"): + sys.stdout.flush() + self.printOccur.emit(s, color) diff --git a/python/__init__.py b/python/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/python/action.py b/python/action.py new file mode 100644 index 0000000..0dd386f --- /dev/null +++ b/python/action.py @@ -0,0 +1,129 @@ +import sys +from PyQt5 import QtCore, QtWidgets +import var + +def _get_config(self, loc): + guiflag = False + if type(loc) == str: + loctext = loc + else: + loctext = loc.text() + guiflag = True + + import yaml + try: + with open(os.path.join(self._base_path, loctext), 'r') as f: + self._config = yaml.load(f, Loader=yaml.FullLoader) + if guiflag: self.cfg_status_lbl.setText(str("Success")) + except Exception as e: + if guiflag: + self.log_qte.append(str(e)) + self.cfg_lbl.setText(str("Fail")) + else: + print(str(e)) + + if guiflag: self.log_qte.append("Setup configs: "+str(self._config)) + +def _run_cmd(self, cmd): + guiflag = False + if type(cmd) == str: + cmdtext = cmd + else: + cmdtext = cmd.text() + guiflag = True + + try: + if 'sample' in cmdtext: + import saveAndLoadSamples as sls + c = sls.SaveSamples(self._config['year'], var.CONFIGS_['ntuple'], var.BASE_PATH_+'/samples') + + label.setText(str("Success")) + + elif 'tselector' in cmd.text(): + import makeSlurmJob as sj + c = sj.RunTSelector(var.CONFIGS_['year'], var.CONFIGS_['ntuple']) + c.make_slurm_job(True,False) + + elif 'DNN' in cmd.text(): + if 'model' in cmd.text(): + import makeModel as mm + train_input = '' + config_file = '' + model = mm.MakeModel(train_input, config_file) + model.load_config() + model.compile_train() + model.save_config() + + elif 'n2a' in cmd.text(): + outputDir = '../output/array'+str(self.config['year']) + for item in os.listdir(inputDir+'/TTLJ_PowhegPythia_ttbb'): + cmd = ['sbatch','slurm_n2a.sh',inputDir+'/TTLJ_PowhegPythia_ttbb',item,outputDir+'/Training','True',''] + subprocess.call(cmd) + for sample in os.listdir(inputDir): + outputDir = '../output/array'+str(year)+'/'+sample + if 'part' in sample: continue + for item in os.listdir(inputDir+'/'+sample): + cmd = ['sbatch','slurm_n2a.sh',inputDir+'/'+sample,item,outputDir,'False'] + subprocess.call(cmd) + if not any(i in sample for i in ['QCD','Data','SYS']): + jetSyst = ['jerup','jerdown','jecup','jecdown'] + for syst in jetSyst: + outputDir = '../output/array'+str(year)+'/'+sample+'__'+syst + for item in os.listdir(inputDir+'/'+sample): + cmd = ['sbatch','slurm_n2a.sh',inputDir+'/'+sample,item,outputDir,'False',syst] + subprocess.call(cmd) + + elif 'pred' in cmd.text(): + inputDir = '../output/array'+str(config['year']) + outputDir = '../output/pred'+str(config['year']) + if not os.path.exists(outputDir): + os.makedirs(outputDir) + import prediction as pred + pred.prediction(year, inputDir, outputDir) + + elif 'hist' in cmd.text(): + arrayDir = '../output/pred'+str(config['year']) + outputDir = '../output/dnn'+str(config['year']) + if not os.path.exists(outputDir): + os.makedirs(outputDir) + procs = [] + for sample in os.listdir(arrayDir): + #if not 'DataSingleMuB' in sample: continue + if 'Training' in sample: continue + if 'SYS' in sample: + tmp = sample.split('_') + if 'Bkg' in sample: + outName = tmp[0]+'_'+tmp[1]+'__'+tmp[-1].lower() + else: + outName = tmp[0]+'_'+tmp[1]+'_'+tmp[-1]+'__'+tmp[-2].lower() + else: + outName = sample + if 'tunecuetp8m4' in outName: + outName = outName.replace('tunecuetp8m4','tune') + if 'tunecp5' in outName: + outName = outName.replace('tunecp5', 'tune') + outputDir = '../output/dnn'+str(year)+'/'+outName + if not os.path.exists(outputDir): + os.makedirs(outputDir) + for item in os.listdir(os.path.join(arrayDir,sample)): + cmd = ['sbatch', 'slurm_a2h.sh', str(year), arrayDir+'/'+sample, item, outputDir, outName] + subprocess.call(cmd) + + else: + label.setText(str('Not yet')) + + elif 'qcd' in cmd.text(): + print "melona" + elif 'post' in cmd.text(): + print "melona" + elif 'draw' in cmd.text(): + if 'table' in cmd.text(): + elif 'syst' in cmd.text(): + elif 'plotIt' in cmd.text(): + else: + print "melona" + else: + label.setText(str("Not yet")) + except Exception as e: + qte.append(str(e)) + label.setText(str('Fail')) diff --git a/python/arrangeNtuple.py b/python/arrangeNtuple.py new file mode 100644 index 0000000..97c512a --- /dev/null +++ b/python/arrangeNtuple.py @@ -0,0 +1,39 @@ +import os, sys +import shutil +import subprocess + +ntupleLoc = sys.argv[1] + +listSplit = [item for item in os.listdir(ntupleLoc) if 'part' in item] +if len(listSplit) > 0: + dictSplit = {} + for item in listSplit: + tmp = item.split('part') + folderName = tmp[0][:-1] + if not folderName in dictSplit: + dictSplit[folderName] = [] + dictSplit[folderName].append(item) + for key, value in dictSplit.items(): + if not os.path.exists(os.path.join(ntupleLoc, key)): + os.mkdir(os.path.join(ntupleLoc, key)) + nfiles = 0 + for item in value: + print os.path.join(ntupleLoc, item), len(os.walk(os.path.join(ntupleLoc, item)).next()[2]) + for file in os.listdir(os.path.join(ntupleLoc, item)): + digits = len(str(nfiles)) + fileNumber = (3-digits)*'0'+str(nfiles) + name = '_'.join(file.split('_')[0:-1])+'_'+fileNumber+'.root' + shutil.copy(os.path.join(ntupleLoc,item,file),os.path.join(ntupleLoc,key,name)) + nfiles += 1 + print os.path.join(ntupleLoc, key), len(os.walk(os.path.join(ntupleLoc, key)).next()[2]) + if nfiles != len(os.walk(os.path.join(ntupleLoc, key)).next()[2]): + print "WARNNING: THE FILES ARE MISSING" + +#mergedLoc = ntupleLoc.replace('split','merged') +#if not os.path.exists(mergedLoc): +# os.mkdir(mergedLoc) +# for item in os.listdir(ntupleLoc): +# if 'part' in item: continue +# rootFiles = [os.path.join(ntupleLoc, item, file) for file in os.listdir(os.path.join(ntupleLoc, item))] +# command = ['hadd', os.path.join(mergedLoc,item+'.root')]+rootFiles +# subprocess.call(command) diff --git a/python/batch.py b/python/batch.py new file mode 100644 index 0000000..a3dfc8a --- /dev/null +++ b/python/batch.py @@ -0,0 +1,69 @@ +import os +import sys +import subprocess +import argparse +from argparse import RawTextHelpFormatter +import textwrap + +def _write_config(self): + print textwrap.dedent("""\ + ...Write config file's location and name + ...Default config file: configs/config16.yml + """) + loc = raw_input("...Config file: ") + self._get_config(loc) + +def _select_command(self): + print textwrap.dedent("""\ + ...Select run option + 1. sample: save ntuple information + 2. tselector: run tselector for basic plots + 3. dnn: run dnn analyzer code + 4. qcd: run tselector for qcd estimation + 5. post: run post process + 6. draw: draw cut flow table and histograms\ + """) + + cmd = raw_input("...Choose option: sample/tselector/dnn/qcd/post/draw/exit ") + if not any(i in cmd for i in ['sample','tselector','dnn','qcd','post','draw','exit']): + print "...Wrong command" + exit(0) + if cmd == "exit": + exit(0) + + sub_cmd = '' + if cmd == 'dnn': + print textwrap.dedent("""\ + ====== WARNING: ACTIVATE CONDA ENVIRONMENT FIRST ======" + cmd in htop: conda activate py27 + ...Select sub-option + 1. model: Make DNN model + 2. n2a: make array from ntuple + 3. pred: predict DNN score + 4. hist: make DNN output histograms\ + """) + sub_cmd = raw_input("Choose subcommand: model/n2a/pred/hist/exit ") + if not any(i in sub_cmd for i in ['mode','n2a','pred','hist','exit']): + print "...Wrong command" + exit(0) + if sub_cmd == 'exit': exit(0) + + elif cmd == 'draw': + print textwrap.dedent("""\ + ...Select sub-option + 1. table: make cut flow table + 2. syst: draw systematic plot for each source + 3. plotIt: run plotter + 4. exit: Close program\ + """) + sub_cmd = raw_input("...Choose subcommand: table/syst/plotIt/exit ") + if not any(i in sub_cmd for i in ['table','syst','plotIt','exit']): + print "...Wrong command" + exit(0) + if sub_cmd == 'exit': exit(0) + if not sub_cmd == '': cmd = cmd + '/' + sub_cmd + + return cmd + +def _run_command(self, cmd): + print self.cmd diff --git a/python/command.py b/python/command.py new file mode 100644 index 0000000..4b3a08f --- /dev/null +++ b/python/command.py @@ -0,0 +1,6 @@ + +class ParseCommand: + def __init__(self): + df + + def parse_command(self): diff --git a/python/drawCutflowTable.py b/python/drawCutflowTable.py new file mode 100644 index 0000000..d3c3778 --- /dev/null +++ b/python/drawCutflowTable.py @@ -0,0 +1,119 @@ +import os +import sys + +import ROOT + +import saveAndLoadSamples as sls + +strTableTemplate = """ +\\begin{table}[htb] + \\rotatebox{90}{ + \\footnotesize + \\begin{center} + \\caption{%(year)s yields table} + \\begin{tabular}{%(nRows)s} + \\hline\\hline + Sample & Ch0S0 & Ch0S1 & Ch0S2 & Ch1S0 & Ch1S1 & Ch1S2 & Ch2S0 & Ch2S1 & Ch2S2 \\\\ + \\hline +%(mcNevts)s + \\hline +%(dataNevts)s +%(totalMC)s +%(ratio)s + \\hline\\hline + \\end{tabular} + \\end{center} + } +\\end{table} +""" + +class DrawYieldsTable(sls.LoadSamples): + def __init__(self, year, root_path, output_path, hist_name='h_nJets'): + self.year = year + self.root_path = root_path + self.output_path = output_path + self.hist_name = hist_name + + self.luminosity = {16:35922, 17:41529, 18:59741} + self.data = {} + self.samples = {} + self.xsecs = {} + self.genevt = {} + + if not os.path.exists(self.output_path): + os.makedirs(self.output_path) + + def get_root_files(self): + self.get_sample_info() + + self.data['Muon'] = ROOT.TFile(os.path.join(self.root_path, 'hist_DataSingleMu.root')) + self.data['Electron'] = ROOT.TFile(os.path.join(self.root_path, 'hist_DataSingleEG.root')) + for sample in self.xsecs.values(): + self.samples[sample[0]] = ROOT.TFile(os.path.join(self.root_path, 'hist_'+sample[0]+'.root')) + + def draw_yields(self): + for ich in range(0,3): + steps = [1,3,4,6,7,8,9] + + data_nevts = [] + data_str = ' Data ' + for istep in steps: + if ich == 0: + TH1 = self.data['Muon'].Get(self.hist_name+'_Ch0_S'+str(istep)) + elif ich == 1: + TH1 = self.data['Electron'].Get(self.hist_name+'_Ch1_S'+str(istep)) + else: + TH1 = self.data['Muon'].Get(self.hist_name+'_Ch0_S'+str(istep)) + TH1temp = self.data['Electron'].Get(self.hist_name+'_Ch1_S'+str(istep)) + TH1.Add(TH1temp) + + error = ROOT.Double() + nevts = TH1.IntegralAndError(1, TH1.GetNbinsX()+1, error) + data_str += '& $%.1f $ ' % (nevts) + data_nevts.append(nevts) + data_str += '\\\\\n' + + mc_nevts = [0.0 for i in range(len(steps))] + mc_error = [0.0 for i in range(len(steps))] + mc_dicts = {} + for item in self.xsecs.items(): + sample_name = item[1][0] + xsec = item[1][1] + sample = self.samples[sample_name] + scale = (self.luminosity[self.year]*xsec/self.genevt[sample_name]) + + temp = ' %s ' % (sample_name) + for idx, istep in enumerate(steps): + TH1 = sample.Get(self.hist_name+'_Ch'+str(ich)+'_S'+str(istep)) + TH1.Scale(scale) + + #nevts = hist_tmp.Integral(0, hist_tmp.GetNbinsX()+1) + error = ROOT.Double() + nevts = TH1.IntegralAndError(1, TH1.GetNbinsX()+1, error) + + temp += '& $%.1f {\scriptstyle\ \pm\ %.1f}$ ' % (nevts, error) + mc_nevts[idx] += nevts + import math + mc_error[idx] = math.sqrt(pow(mc_error[idx],2) + pow(error,2)) + temp += '\\\\\n' + mc_dicts[item[0]] = temp + + totalMC = ' TotalMC ' + ratio = ' Ratio ' + for idx, value in enumerate(mc_nevts): + temp = float(data_nevts[idx])/float(value) + totalMC += '& $%.1f {\scriptstyle\ \pm\ %.1f}$ ' % (value, mc_error[idx]) + ratio += ' & $%.2f$ ' % temp + totalMC += '\\\\' + ratio += '\\\\' + + str_dict = {} + str_dict['year'] = str(self.year) + str_dict['nRows'] = '|'+'c|'*len(steps) + str_dict['mcNevts'] = '\n'.join(value for value in mc_dicts.values()) + str_dict['dataNevts'] = data_str + str_dict['totalMC'] = totalMC + str_dict['ratio'] = ratio + + strOut = strTableTemplate % str_dict + with open(self.output_path+"/yields"+str(self.year)+'_ch'+str(ich)+".tex", 'w') as f: f.write(strOut) diff --git a/python/drawSystPlots.py b/python/drawSystPlots.py new file mode 100644 index 0000000..ccb9787 --- /dev/null +++ b/python/drawSystPlots.py @@ -0,0 +1,170 @@ +import os +import sys + +import ROOT + +import saveAndLoadSamples as sls +import tdrstyle + +class DrawSystPlots(sls.LoadSamples): + luminosity = {16:35922, 17:41529, 18:59741} + def __init__(self, year, root_path, hist_name, output_path): + self.year = year + self.root_path = root_path + self.hist_name = hist_name + self.output_path = output_path + self.samples = {} + self.xsecs = {} + self.genevt = {} + + if not os.path.exists(self.output_path): + os.makedirs(self.output_path) + + def get_root_files(self): + self.get_sample_info() + + for sample in self.xsecs.values(): + self.samples[sample[0]] = ROOT.TFile(os.path.join(self.root_path, 'hist_'+sample[0]+'.root')) + + def draw_histograms(self): + ROOT.gStyle.SetOptStat(0) + + for name, file in self.samples.items(): + if not 'ttbb' in name: continue + temp = [x.GetName() for x in file.GetListOfKeys()] + break + + syst_name = [] + for item in temp: + if not self.hist_name in item: continue + if item[-2:] == 'up': + name = (item.split('__')[-1]).replace('up','') + syst_name.append(name) + + xsecs = {} + for sample in self.xsecs.values(): + xsecs[sample[0]] = sample[1] + for syst in syst_name: + i = 0 + for name, file in self.samples.items(): + if 'QCD' in name: continue + if any(i in syst for i in ['tune','pdf','ps','sw','hdamp','isr','fsr']): + if not ('TT' in name and 'Powheg' in name): continue + if i == 0: + TH1Nom = file.Get(self.hist_name).Clone() + TH1Up = file.Get(self.hist_name+'__'+syst+'up').Clone() + TH1Down = file.Get(self.hist_name+'__'+syst+'down').Clone() + + TH1Nom.Scale(xsecs[name]*DrawSystPlots.luminosity[self.year]/self.genevt[name]) + TH1Up.Scale(xsecs[name]*DrawSystPlots.luminosity[self.year]/self.genevt[name]) + TH1Down.Scale(xsecs[name]*DrawSystPlots.luminosity[self.year]/self.genevt[name]) + i += 1 + else: + tmpNom = file.Get(self.hist_name).Clone() + tmpUp = file.Get(self.hist_name+'__'+syst+'up').Clone() + tmpDown = file.Get(self.hist_name+'__'+syst+'down').Clone() + + tmpNom.Scale(xsecs[name]*DrawSystPlots.luminosity[self.year]/self.genevt[name]) + tmpUp.Scale(xsecs[name]*DrawSystPlots.luminosity[self.year]/self.genevt[name]) + tmpDown.Scale(xsecs[name]*DrawSystPlots.luminosity[self.year]/self.genevt[name]) + + TH1Nom.Add(tmpNom) + TH1Up.Add(tmpUp) + TH1Down.Add(tmpDown) + + label = ROOT.TPaveText(0.14,0.9549955,0.97,1,"brNDC") + label.SetBorderSize(0) + label.SetFillStyle(0) + label.SetTextAlign(13) + label.SetTextSize(0.05850585) + label.AddText(" CMS simulation #font[52]{#scale[0.76]{Work in Progress}}") + + canvas = ROOT.TCanvas("","",1025,568,450,450) + canvas.Range(0,0,1,1) + canvas.SetFillColor(0) + canvas.SetBorderMode(0) + canvas.SetBorderSize(2) + canvas.SetTickx(1) + canvas.SetTicky(1) + canvas.SetLeftMargin(0.14) + canvas.SetRightMargin(0.03) + canvas.SetTopMargin(0.06) + canvas.SetFrameBorderMode(0) + + pad1 = ROOT.TPad("pad1","pad1",0.0,0.33333,1.0,1.0) + pad1.Range(-67.46988,-190.601,414.4578,9339.448) + pad1.SetLeftMargin(0.14) + pad1.SetRightMargin(0.03) + pad1.SetBottomMargin(0.02) + pad1.SetFrameFillColor(0) + pad1.SetFillColor(0) + pad1.SetBorderMode(0) + pad1.SetBorderSize(2) + pad1.SetTickx(1) + pad1.SetTicky(1) + pad1.SetFrameBorderMode(0) + + pad2 = ROOT.TPad("pad2","pad2",0.0,0.0,1.0,0.33333) + pad2.Range(-67.46988,-0.1539271,414.4578,1.692312) + pad2.SetTopMargin(0.05) + pad2.SetBottomMargin(0.30003) + pad2.SetLeftMargin(0.14) + pad2.SetRightMargin(0.03) + pad2.SetGridy() + pad2.SetFrameFillColor(0) + pad2.SetTickx(1) + pad2.SetTicky(1) + pad2.SetFrameBorderMode(0) + + pad1.Draw() + pad2.Draw() + + pad1.cd() + TH1Nom.GetXaxis().SetLabelFont(43) + TH1Nom.GetXaxis().SetTitleFont(43) + TH1Nom.GetYaxis().SetLabelFont(43) + TH1Nom.GetYaxis().SetLabelSize(14) + TH1Nom.GetYaxis().SetTitleSize(15) + TH1Nom.GetYaxis().SetTitleOffset(2) + TH1Nom.GetYaxis().SetTitleFont(43) + TH1Nom.GetXaxis().SetLabelSize(0) + TH1Nom.GetXaxis().SetTitleSize(0) + TH1Nom.SetMinimum(0) + + TH1Up.SetLineColor(ROOT.kGreen) + TH1Down.SetLineColor(ROOT.kRed) + + TH1Nom.Draw("hist") + TH1Up.Draw("hist same") + TH1Down.Draw("hist same") + label.Draw("same") + + pad2.cd() + TH1RatioUp = TH1Nom.Clone() + TH1RatioUp.Divide(TH1Up) + TH1RatioDown = TH1Nom.Clone() + TH1RatioDown.Divide(TH1Down) + + TH1RatioUp.SetMaximum(1.4) + TH1RatioUp.SetMinimum(0.6) + TH1RatioUp.GetXaxis().SetLabelOffset(0.021) + TH1RatioUp.GetXaxis().SetLabelSize(14) + TH1RatioUp.GetXaxis().SetTitleSize(15) + TH1RatioUp.GetXaxis().SetTitleOffset(3.3) + TH1RatioUp.GetYaxis().SetTitle("Nom. / Syst.") + TH1RatioUp.GetYaxis().SetLabelOffset(0.012) + TH1RatioUp.GetYaxis().SetLabelSize(14) + TH1RatioUp.GetYaxis().SetTitleSize(15) + TH1RatioUp.GetYaxis().SetNdivisions(505) + + TH1RatioUp.SetLineColor(ROOT.kGreen) + TH1RatioDown.SetLineColor(ROOT.kRed) + + TH1RatioUp.Draw("p") + TH1RatioDown.Draw("p same") + + canvas.Print(self.output_path+'/'+syst+".pdf","pdf") + + pad1.Clear() + pad2.Clear() + canvas.Clear() diff --git a/python/drawUnfoldOutput.py b/python/drawUnfoldOutput.py new file mode 100644 index 0000000..eade07e --- /dev/null +++ b/python/drawUnfoldOutput.py @@ -0,0 +1,280 @@ +import math +from ROOT import * +import tdrstyle + +bRatio = 0.436572 + +def calculateDiffXsec(lumi, h_in, h_accept): + h_out = h_in.Clone() + + for ibin in range(1, h_in.GetNbinsX()+1): + binWidth = h_in.GetXaxis().GetBinWidth(ibin) + diffXsec = h_in.GetBinContent(ibin)/(h_accept.GetBinContent(ibin)*float(binWidth)*float(lumi)*float(bRatio)) + h_out.SetBinContent(ibin, diffXsec) + + return h_out + +def buildGraphFromHist(h_in): + grp = TGraphErrors() + + for ibin in range(1,h_in.GetNbinsX()+1): + w = h_in.GetXaxis().GetBinWidth(ibin) + y = h_in.GetBinContent(ibin) + err = h_in.GetBinError(ibin) + if y < 0.0: + y = 0.0 + grp.SetPoint(ibin-1, h_in.GetBinCenter(ibin), y) + grp.SetPointError(ibin-1, 0.0, err) + + grp.SetEditable(False) + + return grp + +def drawHist(outputDir, lumi, inFile, recoMode='mindR', genMode='mindR'): + tdrstyle.setTDRStyle() + + gStyle.SetHatchesSpacing(1) + gStyle.SetHatchesLineWidth(1) + + gStyle.SetPaintTextFormat("4.1f") + gStyle.SetOptStat(0) + gStyle.SetOptTitle(0) + + f_in = TFile.Open(outputDir+'/'+inFile) + + hist_list = [x.GetName() for x in f_in.GetListOfKeys()] + + canvas = TCanvas('','',800,800) + color = TColor() + legend = TLegend(0.6,0.7,0.88,0.88) + labelCMS = tdrstyle.tdrCMSlabel(float(lumi)) + labelSim = tdrstyle.tdrCMSSimlabel() + + for hist in hist_list: + h_in = f_in.Get(hist) + + canvas.cd() + if 'Bin' in hist: + if '__' in hist: continue + h_in.Scale(100) + h_err = h_in.Clone() + if 'Acceptance' in h_in.GetName(): + h_in.GetYaxis().SetTitle('Acceptance(%)') + h_in.SetMinimum(0.0) + h_in.SetMaximum(h_in.GetMaximum()*1.3) + elif 'Purity' in h_in.GetName(): + h_in.GetYaxis().SetTitle('Purity(%)') + h_in.SetMinimum(0.0) + h_in.SetMaximum(100.0) + elif 'Stability' in h_in.GetName(): + h_in.GetYaxis().SetTitle('Stability(%)') + h_in.SetMinimum(0.0) + h_in.SetMaximum(100.0) + + h_in.GetYaxis().SetTitleOffset(1.3) + h_in.GetXaxis().SetTitleOffset(1.2) + h_in.SetLineWidth(2) + h_in.SetLineColor(kBlue) + h_in.Draw('hist') + if 'Acceptance' in h_in.GetName(): + h_err.SetFillStyle(3154) + h_err.SetFillColor(color.GetColor('#ee556270')) + h_err.Draw('e2 same') + labelSim.Draw('same') + elif h_in.InheritsFrom(TH2.Class()): + if 'Emat' in h_in.GetName(): + h_in.Draw('colz text') + else: + h_in.Draw('box') + labelSim.Draw('same') + elif '__' in h_in.GetName() and h_in.InheritsFrom(TH1.Class()): + continue + else: + if 'Gen' in h_in.GetName() or 'Input' in h_in.GetName(): + continue + + grp = buildGraphFromHist(h_in) + grp.SetMarkerSize(1.5) + genName = h_in.GetName() + genName = genName.replace('Unfolded_', '') + genName = genName.replace('Reco', 'Gen') + if 'S3_data_obs' in h_in.GetName(): + genName = genName.replace('S3_data_obs', 'nosel') + if 'ttbb_closure' in h_in.GetName(): + genName = genName.replace('_ttbb_closure', '') + + h_gen = f_in.Get(genName) + h_gen.SetLineColor(color.GetColor('#cc0000')) + h_gen.SetLineWidth(2) + + h_genErr = h_gen.Clone() + h_genErr.SetFillColor(color.GetColor('#556270')) + h_genErr.SetFillStyle(3154) + + if 'DiffXsec' in h_in.GetName(): + if 'DeltaR' in h_in.GetName(): + h_gen.GetYaxis().SetTitle('#frac{d#sigma}{d#DeltaR_{b#bar{b}}}[pb]') + else: + h_gen.GetYaxis().SetTitle('#frac{d#sigma}{dm_{b#bar{b}}}[pb/GeV]') + h_gen.GetYaxis().SetTitleOffset(2.0) + else: + h_gen.GetYaxis().SetTitle('Number of events') + h_gen.SetMaximum(h_in.GetMaximum()*1.8) + + if 'closure' in h_in.GetName(): + legend.AddEntry(grp, 'ttbb Reco MC', 'p') + label = labelSim + else: + legend.AddEntry(grp, 'Data', 'p') + label = labelCMS + + legend.AddEntry(h_gen, 'ttbb Powheg Pythia', 'l') + + h_gen.Draw('hist') + grp.Draw('p e same') + legend.Draw('same') + label.Draw('same') + + canvas.Print(outputDir+'/'+h_in.GetName()+'.pdf','pdf') + canvas.Clear() + legend.Clear() + +def drawTable(year, outputDir, lumi, inFile, recoMode='mindR', genMode='mindR'): + f_in = TFile.Open(outputDir+'/'+inFile) + f_accept = TFile.Open(outputDir+'/hist_accept.root') + histList = ['h_'+recoMode+'_RecoAddbJetDeltaR_Ch2_S3','h_'+recoMode+'_RecoAddbJetInvMass_Ch2_S3'] + niceSystName = { + 'pu':'PileUp','lf':'Light flavour','hf':'Heavy flavour', + 'sw':'Matrix Element','ps':'Parton Shower','hdamp':'ME & PS Matching','tune':'Pythia Tune', + 'pdf':'PDF' + } + systCategories = { + 'Muon':[],'Electron':[], + 'bTag':['lf','hf','hfstat1','hfstat2','lfstat1','lfstat2','cferr1','cferr2'], + 'Experiment':['pu','jer','jec'], + 'Theory':['sw','ps','tune','hdamp','pdf'], + } + + lumiUnc = ' & Luminosity & \\multicolumn{4}{|c|}{0.0}' + if year == 16: + systCategories['Muon'].extend(['musf','mutrg']) + systCategories['Electron'].extend(['elsf','eltrg']) + elif year == 17 or year == 18: + systCategories['Muon'].extend(['muid','muiso','mutrg']) + systCategories['Electron'].extend(['elid','elreco','elzvtx','eltrg']) + else: + print "Wrong year" + exit() + + for hist in histList: + strTemplate = """ +\\begin{table}[htb] + \\begin{center} + \\begin{tabular}{%(nRow)s} + \\hline + & Variable & %(vari)s \\\\ + & Source %(binRange)s \\\\ + \\hline + \\multicolumn{5}{|c|}{MC Uncertainties} \\\\ +%(mcUnc)s + \\hline + \\multicolumn{5}{|c|}{Experiment Uncertainties} \\\\ +%(lumiUnc)s +%(muonUnc)s +%(elecUnc)s +%(btagUnc)s +%(otherExpUnc)s + \\hline + \\multicolumn{5}{|c|}{Theory Uncertainties} \\\\ +%(theoryUnc)s + \\hline + \\end{tabular} + \\end{center} +\\end{table} + """ + h_nominal = f_in.Get('DiffXsec_Unfolded_'+hist+'_data_obs') + binNum = h_nominal.GetNbinsX() + binRange = [] + for ibin in range(1,binNum+2): + binLowEdge = h_nominal.GetBinLowEdge(ibin) + binRange.append(binLowEdge) + + strBinRange = '' + for idx in range(len(binRange)): + if idx+1 == len(binRange): + continue + strBinRange += '& '+str(binRange[idx])+' -- '+str(binRange[idx+1])+' ' + strMatrixStatUnc = ' & ttbb MC stat ' + strMCbkgUnc = ' & Background MC scale ' + strUnc = {'Muon':[],'Electron':[],'bTag':[],'Experiment':[],'Theory':[]} + + if 'DeltaR' in hist: + h_accept = f_accept.Get('h_BinAcceptanceDeltaR_Ch2') + vari = '\\multicolumn{%d}{|c|}{$\DeltaR_{b\\bar{b}}$}' % (binNum-1) + else: + h_accept = f_accept.Get('h_BinAcceptanceInvMass_Ch2') + vari = '\\multicolumn{%d}{|c|}{$m_{b\\bar{b}}$}' % (binNum-1) + + h2_EmatMatrixStat = f_in.Get('EmatrixInput_'+hist+'_data_obs') + for ibin in range(1, h2_EmatMatrixStat.GetNbinsX()+1): + value = math.sqrt(h2_EmatMatrixStat.GetBinContent(ibin,ibin))/\ + (h_accept.GetBinContent(ibin)*h_nominal.GetXaxis().GetBinWidth(ibin)*lumi*bRatio) + if value < 0.0: + value = 0.0 + strMatrixStatUnc += '& %.7f ' % value + + h_postUp = calculateDiffXsec(lumi, f_in.Get('Background_Unfolded_'+hist+'_data_obs__postup'), h_accept) + h_postDown = calculateDiffXsec(lumi, f_in.Get('Background_Unfolded_'+hist+'_data_obs__postdown'), h_accept) + for ibin in range(1, h_postUp.GetNbinsX()+1): + nominal = h_nominal.GetBinContent(ibin) + up = h_postUp.GetBinContent(ibin) + down = h_postDown.GetBinContent(ibin) + + deltaUp = up - nominal + deltaDown = down - nominal + value = max(abs(deltaUp), abs(deltaDown)) + strMCbkgUnc += '& %.7f ' % value + + for categories, systList in systCategories.items(): + for syst in systList: + h_systUp = f_in.Get('DeltaSysSource_'+hist+'_data_obs__'+syst+'up') + h_systDown = f_in.Get('DeltaSysSource_'+hist+'_data_obs__'+syst+'down') + if h_systUp == None: + print '%s up does not exist, %s up systematic uncertainties set zero' % (syst, syst) + h_systUp = h_nominal.Clone() + for ibin in range(1,h_nominal.GetNbinsX()+1): + h_systUp.SetBinContent(ibin, 0) + else: + h_systUp = calculateDiffXsec(lumi, f_in.Get('DeltaSysSource_'+hist+'_data_obs__'+syst+'up'), h_accept) + if h_systDown == None: + print '%s down does not exist, %s down systematic uncertainties set zero' % (syst, syst) + h_systDown = h_nominal.Clone() + for ibin in range(1,h_nominal.GetNbinsX()+1): + h_systDown.SetBinContent(ibin, 0) + else: + h_systDown = calculateDiffXsec(lumi, f_in.Get('DeltaSysSource_'+hist+'_data_obs__'+syst+'down'), h_accept) + tmpStr = ' & '+syst+' ' + for ibin in range(1, h_nominal.GetNbinsX()+1): + deltaUp = h_systUp.GetBinContent(ibin) + deltaDown = h_systDown.GetBinContent(ibin) + value = max(abs(deltaUp), abs(deltaDown)) + + tmpStr += '& %.7f ' % value + tmpStr += '\\\\\n' + strUnc[categories].append(tmpStr) + + dictIn = {} + dictIn['vari'] = vari + dictIn['nRow'] = '|c'*binNum + '|c|' + dictIn['binRange'] = strBinRange + dictIn['mcUnc'] = strMatrixStatUnc +'\\\\\n' + strMCbkgUnc+'\\\\\n' + dictIn['lumiUnc'] = str(lumiUnc) + dictIn['muonUnc'] = ''.join(strUnc['Muon']) + dictIn['elecUnc'] = ''.join(strUnc['Electron']) + dictIn['btagUnc'] = ''.join(strUnc['bTag']) + dictIn['otherExpUnc'] = ''.join(strUnc['Experiment']) + dictIn['theoryUnc'] = ''.join(strUnc['Theory']) + + strOut = strTemplate % dictIn + + with open(outputDir+'/SystUnc_'+hist+'.tex','w') as f: f.write(strOut) diff --git a/python/forPlotIt.py b/python/forPlotIt.py new file mode 100644 index 0000000..e251daf --- /dev/null +++ b/python/forPlotIt.py @@ -0,0 +1,34 @@ +from ROOT import * + +def forPlotIt(year): + f_in = TFile.Open("../output/unfold"+str(year)+"/hist_input.root") + group = ['data_obs','ttbb','ttbj','ttcc','ttLF','ttbkg','other', 'qcd'] + for mem in group: + print mem + f_out = TFile.Open('../output/draw'+str(year)+'/'+mem+'_postfit_histos.root', 'recreate') + dRnom = f_in.Get('h_mindR_RecoAddbJetDeltaR_Ch2_S3_'+str(mem)) + dRnom.SetName('h_mindR_RecoAddbJetDeltaR_Ch2_S3') + dRnom.Write() + if not 'data' in mem: + dRup = f_in.Get('h_mindR_RecoAddbJetDeltaR_Ch2_S3_'+str(mem)+'__postfitup') + dRdown = f_in.Get('h_mindR_RecoAddbJetDeltaR_Ch2_S3_'+str(mem)+'__postfitdown') + dRup.SetName('h_mindR_RecoAddbJetDeltaR_Ch2_S3__postfitup') + dRdown.SetName('h_mindR_RecoAddbJetDeltaR_Ch2_S3__postfitdown') + dRup.Write() + dRdown.Write() + Mnom = f_in.Get('h_mindR_RecoAddbJetInvMass_Ch2_S3_'+str(mem)) + Mnom.SetName('h_mindR_RecoAddbJetInvMass_Ch2_S3') + Mnom.Write() + if not 'data' in mem: + Mup = f_in.Get('h_mindR_RecoAddbJetInvMass_Ch2_S3_'+str(mem)+'__postfitup') + Mdown = f_in.Get('h_mindR_RecoAddbJetInvMass_Ch2_S3_'+str(mem)+'__postfitdown') + Mup.SetName('h_mindR_RecoAddbJetInvMass_Ch2_S3__postfitup') + Mdown.SetName('h_mindR_RecoAddbJetInvMass_Ch2_S3__postfitdown') + Mup.Write() + Mdown.Write() + f_out.Close() + +forPlotIt(16) +forPlotIt(17) +forPlotIt(18) + diff --git a/python/getQCD.py b/python/getQCD.py new file mode 100644 index 0000000..0190cdf --- /dev/null +++ b/python/getQCD.py @@ -0,0 +1,150 @@ +from ROOT import * +import ROOT +import os +import sys + +import postProcess as pp + +def getQCDShape(base_path, year): + lumi = {16:35922, 17:41529, 18:59741} + + genevt = {} + with open(base_path+'/samples/genevt'+str(year)+'.txt','r') as f: + while True: + line = f.readline() + if not line: break + tmp = line.split(' ') + genevt[tmp[0]] = float(tmp[1]) + + sample_list = [] + xsec = {} + with open(base_path+'/samples/xsec'+str(year)+'.txt','r') as f: + while True: + line = f.readline() + if not line: break + if 'Sample Xsec' in line: continue + tmp = line.split(' ') + if float(tmp[2]) < 0: continue + xsec[tmp[0]] = float(tmp[1]) + sample_list.append(tmp[0]) + + input_path = base_path+'/output/root'+str(year)+'_qcd/' + if not os.path.exists(input_path+'/post'): + os.mkdir(input_path+'/post') + + f_out = open("../qcd"+str(year)+'.txt','w') + print "YEAR: "+str(year) + print "Start post process for data driven QCD" + + qcd_list = ['Nosys','dataDriven'] + qcd_syst = ['qcdisoup', 'qcdisodown'] + for qitem in qcd_list: + print "Merge root files and rescale histograms to b-tag SF" + data = ['Mu', 'EG'] + for value in data: + f_data = TFile.Open(os.path.join(input_path, 'hist_'+qitem+'_DataSingle'+value+'.root')) + print "File: "+ str(f_data.GetName()) + f_update = TFile.Open(os.path.join(input_path+'/post', 'hist_'+qitem+'_DataSingle'+value+'.root'), "RECREATE") + f_syst = [] + if not 'Nosys' in qitem: + for syst in qcd_syst: + f_syst.append(TFile.Open(os.path.join(input_path, 'hist_'+qitem+'_DataSingle'+value+'__'+syst+'.root'))) + + hist_list = [x.GetName() for x in f_data.GetListOfKeys()] + f_update.cd() + for hist in hist_list: + h_tmp = f_data.Get(hist) + h_tmp.Write() + if not any(i in hist for i in ['__', 'Info', 'Weight', 'bSF']) and not 'Nosys' in qitem: + for index, value in enumerate(f_syst): + tmp = value.Get(hist+'__'+qcd_syst[index]) + tmp.Write() + f_update.Close() + + for proc in sample_list: + if 'Data' in proc: continue + f_sample = TFile.Open(os.path.join(input_path, 'hist_'+qitem+'_'+proc+'.root'), "READ") + print "File: " +str(f_sample.GetName()) + f_update = TFile.Open(os.path.join(input_path+'/post', 'hist_'+qitem+'_'+proc+'.root'), "RECREATE") + + f_syst = [] + if not 'Nosys' in qitem: + for syst in qcd_syst: + f_syst.append(TFile.Open(os.path.join(input_path, 'hist_'+qitem+'_'+proc+'__'+syst+'.root'))) + + hist_list = [x.GetName() for x in f_sample.GetListOfKeys()] + + f_update.cd() + for hist in hist_list: + if any(i in hist for i in ['info', 'Info', 'Weight']): continue + tmp = hist.split('__')[0] + ch = tmp.split('_')[-2] + step = tmp.split('_')[-1] + if qitem == 'QCDshape': + if 'S0' in hist: + h_bSF = f_sample.Get('h_bSFinfo_'+ch+'_S0') + else: + h_bSF = f_sample.Get('h_bSFinfo_'+ch+'_S1') + else: + h_bSF = f_sample.Get('h_bSFinfo_'+ch+'_'+step) + h_tmp = f_sample.Get(hist) + h_tmp = pp.bSFnorm(h_bSF, h_tmp) + h_tmp.Write() + if not 'Nosys' in qitem: + for index, syst in enumerate(qcd_syst): + h_tmp = f_syst[index].Get(hist+'__'+syst) + h_tmp = pp.bSFnorm(h_bSF, h_tmp) + h_tmp.Write() + f_update.Close() + + if 'Nosys' in qitem: continue + print "Get QCD shape in the sideband region" + f_qcd = TFile.Open(os.path.join(input_path+'/post', 'hist_'+qitem+'_QCD.root'), "RECREATE") + f_data = [] + for value in data: + f_data.append(TFile.Open(os.path.join(input_path+'/post', 'hist_'+qitem+'_DataSingle'+value+'.root'))) + + hist_list = [x.GetName() for x in f_data[0].GetListOfKeys()] + samples = {} + for proc in sample_list: + f_tmp = TFile.Open(os.path.join(input_path+'/post', "hist_"+qitem+"_"+proc+".root")) + samples[proc] = f_tmp + + f_qcd.cd() + for hist in hist_list: + if any(i in hist for i in ['info', 'Info', 'Weight']): continue + if 'Ch0' in hist: + h_qcd = f_data[0].Get(hist) + elif 'Ch1' in hist: + h_qcd = f_data[1].Get(hist) + else: + h_qcd = f_data[0].Get(hist) + tmp = f_data[1].Get(hist) + h_qcd.Add(tmp) + + if "TransverseMass" in hist: + nevt_data = h_qcd.Integral(0, h_qcd.GetNbinsX()+1) + + for proc in sample_list: + if any(i in proc for i in ['QCD', 'Filter', 'Data']): continue + scale = lumi[year]*xsec[proc]/genevt[proc] + + h_tmp = samples[proc].Get(hist) + h_tmp.Scale(scale) + h_qcd.Add(h_tmp,-1) + + if "TransverseMass" in hist: + nevt_qcd = h_qcd.Integral(0, h_qcd.GetNbinsX()+1) + print("Purity of QCD") + print("Hist: "+str(hist)) + print("nevt_data: "+str(nevt_data)) + print("nevt_qcd: "+str(nevt_qcd)) + f_out.write("Hist: "+str(hist)) + f_out.write("nevt_data: "+str(nevt_data)) + f_out.write("nevt_qcd: "+str(nevt_qcd)) + #purity = float(nevt_qcd)/float(nevt_data) + #print("Puriy: "+str(purity)) + + h_qcd.Write() + f_qcd.Close() + f_out.close() diff --git a/python/gui.py b/python/gui.py new file mode 100644 index 0000000..53f064b --- /dev/null +++ b/python/gui.py @@ -0,0 +1,120 @@ +import sys +from PyQt5 import QtCore, QtWidgets +#from PyQt5.QtWidgets import QApplication, QWidget, QDesktopWidget, QPushButton, QLabel +#from PyQt5.QtCore import QCoreApplication, QRect + +import button +import var + +def _make_layout(self): + grid = QtWidgets.QGridLayout() + self.setLayout(grid) + + self.log_qte = QtWidgets.QTextEdit(self) + + # Config + cfg_qle, self.cfg_status_lbl = self._make_qle_with_lbl() + cfg_btn, self.cfg_name_lbl = self._make_cfg_btn() + cfg_combo = self.make_cfg_combo() + + grid.addWidget(QtWidgets.QLabel("Config:"), 0, 0, 2, 1) + grid.addWidget(cfg_combo, 0, 1, 1, 1) + grid.addWidget(cfg_qle, 0, 2, 1, 3) + grid.addWidget(cfg_btn, 1, 1, 1, 1) + grid.addWidget(self.cfg_name_lbl, 1, 2, 1, 2) + grid.addWidget(self.cfg_status_lbl, 1, 4, 1, 1) + + # Command + cmd_qle, self.cmd_status_lbl = self._make_qle_with_lbl() + cmd_btn, self.cmd_name_lbl = self._make_cmd_btn() + cmd_cmb, cmd_sub_cmb = self._make_cmd_combo() + + grid.addWidget(QtWidgets.QLabel("Command:"), 2, 0, 2, 1) + grid.addWidget(cmd_cmb, 2, 1, 1, 1) + grid.addWidget(cmd_sub_cmb, 2, 2, 1, 1) + grid.addWidget(cmd_qle, 2, 3, 1, 2) + grid.addWidget(cmd_btn, 3, 1, 1, 1) + grid.addWidget(self.cmd_status_lbl, 3, 2, 1, 2) + grid.addWidget(self.cmd_name_lbl, 3, 4, 1, 1) + + # Log + grid.addWidget(QtWidgets.QLabel("Log:"), 4, 0) + grid.addWidget(self.log_qte, 4, 1, 1, 4) + +def _make_qle_with_lbl(self): + def change_label(qle, label): + label.setText(qle.text()) + + label = QtWidgets.QLabel(self) + qle = QtWidgets.QLineEdit(self) + qle.textChanged.connect(lambda: change_label(qle, label)) + qle.returnPressed.connect(lambda: change_label(qle, label)) + + return qle, label + +def _make_cfg_btn(self): + label = QtWidgets.QLabel("Status") + btn = QtWidgets.QPushButton('Setup', self) + btn.clicked.connect(lambda: self._get_config(label)) + + return btn, label + +def _make_cmd_btn(self): + label = QtWidgets.QLabel("Status") + btn = QtWidgets.QPushButton('Run', self) + btn.clicked.connect(lambda: self._run_cmd(label, self.label_run_stat, self.qte)) + + return btn, label + +def _make_cfg_combo(self): + def select_combo(label): + label.setText(cb.currentText()) + + cb = QtWidgets.QComboBox(self) + cb.addItem('') + cb.addItem('configs/config16.yml') + cb.addItem('configs/config17.yml') + cb.addItem('configs/config18.yml') + cb.currentTextChanged.connect(lambda: select_combo(self.label_cfg_stat)) + + return cb + +def _make_cmd_combo(self): + def select_combo(label): + if not cb2.currentText() == '': + label.setText(cb.currentText()+'/'+cb2.currentText()) + else: + label.setText(cb.currentText()) + + def make_subcombo(cb): + cb2.clear() + if cb.currentText() == 'DNN': + cb2.addItem('') + cb2.addItem('model') + cb2.addItem('n2a') + cb2.addItem('pred') + cb2.addItem('hist') + elif cb.currentText() == 'draw': + cb2.addItem('') + cb2.addItem('table') + cb2.addItem('syst') + cb2.addItem('plotIt') + else: + cb2.addItem('') + + cb = QtWidgets.QComboBox(self) + cb2 = QtWidgets.QComboBox(self) + + cb.addItem('') + cb.addItem('sample') + cb.addItem('tselector') + cb.addItem('DNN') + cb.addItem('qcd') + cb.addItem('post') + cb.addItem('draw') + + cb.currentTextChanged.connect(lambda: select_combo(self.label_run_stat)) + cb.currentTextChanged.connect(lambda: make_subcombo(cb)) + cb2.currentTextChanged.connect(lambda: select_combo(self.label_run_stat)) + + return cb, cb2 diff --git a/python/makeModel.py b/python/makeModel.py new file mode 100644 index 0000000..7873f5b --- /dev/null +++ b/python/makeModel.py @@ -0,0 +1,411 @@ +#! /usr/bin/env python +from __future__ import print_function +import sys, os +import google.protobuf + +os.environ["CUDA_VISIBLE_DEVICES"] = "2" + +import matplotlib.pyplot as plt +import pandas as pd +from sklearn.preprocessing import StandardScaler, label_binarize +from sklearn.decomposition import PCA +from sklearn.utils import shuffle, class_weight +from sklearn.metrics import roc_auc_score, roc_curve +from sklearn.metrics import confusion_matrix, f1_score, precision_score, recall_score +import numpy as np +from root_numpy import array2tree, tree2array +import csv +import re +import string +import math +from array import array + +import tensorflow as tf +import keras +from keras.utils import np_utils, multi_gpu_model +from keras.models import Model, Sequential, load_model +from keras.layers import Input, Dense, Activation, Dropout, add +from keras.layers.normalization import BatchNormalization +from keras.regularizers import l2 +from keras.optimizers import Adam, SGD +from keras.callbacks import Callback, ModelCheckpoint + +import utils as ut + +auc_list = [] +val_auc_list = [] + +class RocCallback(Callback): + def __init__(self, training_data, validation_data, model, output_dir): + self.x = training_data[0] + self.y = training_data[1] + self.x_val = validation_data[0] + self.y_val = validation_data[1] + self.model_to_save = model + self.output_dir = output_dir + + def on_train_begin(self, logs={}): + return + + def on_train_end(self, logs={}): + return + + def on_epoch_begin(self, epoch, logs={}): + return + + def on_epoch_end(self, epoch, logs={}): + ############ + #compute AUC + ############ + print('Calculating AUC of epoch '+str(epoch+1)) + y_pred = self.model.predict(self.x, batch_size=2000) + roc = roc_auc_score(self.y, y_pred) + y_pred_val = self.model.predict(self.x_val, batch_size=2000) + roc_val = roc_auc_score(self.y_val, y_pred_val) + print('\rroc-auc: %s - roc-auc_val: %s' % (str(round(roc,4)), str(round(roc_val,4))),end=100*' '+'\n') + auc_list.append(roc) + val_auc_list.append(roc_val) + + ################### + #Calculate f1 score + ################### + val_predict = (y_pred_val[:,1]).round() + val_targ = self.y_val[:,1] + val_f1 = f1_score(val_targ, val_predict) + val_recall = recall_score(val_targ, val_predict) + val_precision = precision_score(val_targ, val_predict) + print('val_f1: %.4f, val_precision: %.4f, val_recall %.4f' %(val_f1, val_precision, val_recall)) + + ############### + #Plot ROC curve + ############### + fpr = dict() + tpr = dict() + roc_auc = dict() + #fpr[0], tpr[0], thresholds0 = roc_curve(self.y_val[:,0], y_pred_val[:,0], pos_label=1)#w.r.t bkg is truth in val set + fpr[1], tpr[1], thresholds1 = roc_curve(self.y_val[:,1], y_pred_val[:,1], pos_label=1)#w.r.t sig is truth in val set + fpr[2], tpr[2], thresholds2 = roc_curve(self.y[:,1], y_pred[:,1], pos_label=1)#w.r.t sig is truth in training set, for overtraining check + #plt.plot(1-fpr[0], 1-(1-tpr[0]), 'b')#same as [1] + plt.plot(tpr[1], 1-fpr[1])#HEP style ROC + plt.plot(tpr[2], 1-fpr[2])#training ROC + plt.xlabel('Signal Efficiency') + plt.ylabel('Background Rejection') + plt.title('ROC Curve') + plt.legend(['Test', 'Train'], loc='lower left') + plt.savefig(os.path.join(self.output_dir, 'fig_roc_%d_%.4f.pdf' %(epoch+1,round(roc_val,4)))) + plt.gcf().clear() + + ######################################################## + #Overtraining Check, as well as bkg & sig discrimination + ######################################################## + bins = 40 + scores = [tpr[1], fpr[1], tpr[2], fpr[2]] + low = min(np.min(d) for d in scores) + high = max(np.max(d) for d in scores) + low_high = (low,high) + + #test is filled + plt.hist(tpr[1], + color='b', alpha=0.5, range=low_high, bins=bins, + histtype='stepfilled', density=True, label='S (test)') + plt.hist(fpr[1], + color='r', alpha=0.5, range=low_high, bins=bins, + histtype='stepfilled', density=True, label='B (test)') + + #training is dotted + hist, bins = np.histogram(tpr[2], bins=bins, range=low_high, density=True) + scale = len(tpr[2]) / sum(hist) + err = np.sqrt(hist * scale) / scale + width = (bins[1] - bins[0]) + center = (bins[:-1] + bins[1:]) / 2 + plt.errorbar(center, hist, yerr=err, fmt='o', c='b', label='S (training)') + hist, bins = np.histogram(fpr[2], bins=bins, range=low_high, density=True) + scale = len(tpr[2]) / sum(hist) + err = np.sqrt(hist * scale) / scale + plt.errorbar(center, hist, yerr=err, fmt='o', c='r', label='B (training)') + + plt.xlabel("Deep Learning Score") + plt.ylabel("Arbitrary units") + plt.legend(loc='best') + overtrain_path = self.output_dir+'/fig_overtraining_%d_%.4f.pdf' %(epoch+1,round(roc_val,4)) + plt.savefig(overtrain_path) + plt.gcf().clear() + print('ROC curve and overtraining check plots are saved!') + + del y_pred, y_pred_val, fpr, tpr, roc_auc + + ############################### + #Save single gpu model manually + ############################### + modelfile = 'model_%d_%.4f.h5' %(epoch+1,round(roc_val,4)) + self.model_to_save.save(self.output_dir+'/'+modelfile) + print('Current model is saved') + + return + + def on_batch_begin(self, batch, logs={}): + return + + def on_batch_end(self, batch, logs={}): + return + +class MakeModel: + def __init__(self, train_input, config_file): + self.config_file = config_file + self.train_input = train_input + self.config = {} + + def load_config(self): + import yaml + with open(self.config_file, 'r') as f: + self.config = yaml.load(f) + if not self.config: + print "Error: fail loading the config file %s" % self.config_file + sys.exit(0) + + import utils as ut + if not os.path.exists(self.train_input): + ut.mergeHDF(os.path.join(self.config['directory'],'Training'),"array_train_ttbb") + + if not os.path.exists(self.config['output']): + os.makedirs(self.config['output']) + else: + for item in os.listdir(self.config['output']): + if item.endswith('pdf') or item.endswith('h5') or item.endswith('log'): + os.remove(os.path.join(self.config['output'], item)) + + def save_config(self): + import yaml + with open(self.config_file, 'w') as f: + self.config = yaml.dump(f) + + def draw_correlation(self, data, name, **kwds): + """Calculate pairwise correlation between features. + + Extra arguments are passed on to DataFrame.corr() + """ + # simply call df.corr() to get a table of + # correlation values if you do not need + # the fancy plotting + corrmat = data.corr(**kwds) + + fig, ax1 = plt.subplots(ncols=1, figsize=(6,5)) + + opts = {'cmap': plt.get_cmap("RdBu"), + 'vmin': -1, 'vmax': +1} + heatmap1 = ax1.pcolor(corrmat, **opts) + plt.colorbar(heatmap1, ax=ax1) + + ax1.set_title("Correlations") + + labels = corrmat.columns.values + for ax in (ax1,): + ax.tick_params(labelsize=6) + # shift location of ticks to center of the bins + ax.set_xticks(np.arange(len(labels))+0.5, minor=False) + ax.set_yticks(np.arange(len(labels))+0.5, minor=False) + ax.set_xticklabels(labels, minor=False, ha='right', rotation=90) + ax.set_yticklabels(labels, minor=False) + + plt.tight_layout() + #plt.show() + if name == 'sig' : + plt.savefig(configDir+weightDir+ver+'/fig_corr_s.pdf') + print('Correlation matrix for signal is saved!') + plt.gcf().clear() + elif name == 'bkg' : + plt.savefig(configDir+weightDir+ver+'/fig_corr_b.pdf') + plt.gcf().clear() + print('Correlation matrix for background is saved!') + else : print('Wrong class name!') + + def draw_input_variables(self, sigdata, bkgdata, signame, bkgname, **kwds): + print('Plotting input variables') + bins = 40 + for colname in sigdata: + dataset = [sigdata, bkgdata] + low = min(np.min(d[colname].values) for d in dataset) + high = max(np.max(d[colname].values) for d in dataset) + if high > 500: low_high = (low,500) + else: low_high = (low,high) + + plt.figure() + sigdata[colname].plot.hist(color='b', density=True, range=low_high, bins=bins, histtype='step', label='signal') + bkgdata[colname].plot.hist(color='r', density=True, range=low_high, bins=bins, histtype='step', label='background') + plt.xlabel(colname) + plt.ylabel('A.U.') + plt.title('Intput variables') + plt.legend(loc='upper right') + plt.savefig(configDir+weightDir+ver+'/fig_input_'+colname+'.pdf') + plt.gcf().clear() + plt.close() + + def compile_train(self): + multiGPU = True + if os.environ['CUDA_VISIBLE_DEVICES'] in ['0','1','2','3']: multiGPU = False + + data = pd.read_hdf(self.train_input) + + ########################################## + #drop phi and label features, correlations + ########################################## + labels = data.filter(['signal'], axis=1) + data = data.filter(['signal']+ut.getVarlist()) + data.astype('float32') + + #self.draw_correlations(data.loc[data['signal'] == 0].drop('signal', axis=1), 'bkg') + #self.draw_correlations(data.loc[data['signal'] == 1].drop('signal', axis=1), 'sig') + #self.draw_input_variables(data.loc[data['signal'] == 1].drop('signal', axis=1), data.loc[data['signal'] == 0].drop('signal', axis=1), 'sig', 'bkg') + + data = data.drop('signal', axis=1) #then drop label + + ############### + #split datasets + ############### + train_sig = labels.loc[labels['signal'] == 1].sample(frac=0.8,random_state=200) + train_bkg = labels.loc[labels['signal'] == 0].sample(frac=0.8,random_state=200) + test_sig = labels.loc[labels['signal'] == 1].drop(train_sig.index) + test_bkg = labels.loc[labels['signal'] == 0].drop(train_bkg.index) + + train_idx = pd.concat([train_sig, train_bkg]).index + test_idx = pd.concat([test_sig, test_bkg]).index + + data_train = data.loc[train_idx,:].copy() + data_test = data.loc[test_idx,:].copy() + labels_train = labels.loc[train_idx,:].copy() + labels_test = labels.loc[test_idx,:].copy() + + print('Training signal: '+str(len(train_sig))+' / testing signal: '+str(len(test_sig))+' / training background: '+str(len(train_bkg))+' / testing background: '+str(len(test_bkg))) + + labels_train = labels_train.values + Y_train = np_utils.to_categorical(labels_train) + labels_test = labels_test.values + Y_test = np_utils.to_categorical(labels_test) + + ######################## + #Standardization and PCA + ######################## + scaler = StandardScaler() + data_train_sc = scaler.fit_transform(data_train) + data_test_sc = scaler.fit_transform(data_test) + X_train = data_train_sc + X_test = data_test_sc + + ################################# + #Keras model compile and training + ################################# + nvar = len(ut.getVarlist()) + a = 300 + b = 0.08 + init = 'glorot_uniform' + + with tf.device("/cpu:0") : + inputs = Input(shape=(nvar,)) + x = Dense(a, kernel_regularizer=l2(1E-2))(inputs) + x = Dropout(b)(x) + x = BatchNormalization()(x) + #branch_point1 = Dense(a, name='branch_point1')(x) + x = Dense(a, activation='relu', kernel_initializer=init, bias_initializer='zeros')(x) + x = Dropout(b)(x) + x = BatchNormalization()(x) + x = Dense(a, activation='relu', kernel_initializer=init, bias_initializer='zeros')(x) + x = Dropout(b)(x) + #x = add([x, branch_point1]) + x = BatchNormalization()(x) + #branch_point2 = Dense(a, name='branch_point2')(x) + x = Dense(a, activation='relu', kernel_initializer=init, bias_initializer='zeros')(x) + x = Dropout(b)(x) + x = BatchNormalization()(x) + x = Dense(a, activation='relu', kernel_initializer=init, bias_initializer='zeros')(x) + x = Dropout(b)(x) + #x = add([x, branch_point2]) + x = BatchNormalization()(x) + #branch_point3 = Dense(a, name='branch_point3')(x) + x = Dense(a, activation='relu', kernel_initializer=init, bias_initializer='zeros')(x) + x = Dropout(b)(x) + x = BatchNormalization()(x) + x = Dense(a, activation='relu', kernel_initializer=init, bias_initializer='zeros')(x) + x = Dropout(b)(x) + #x = add([x, branch_point3]) + x = BatchNormalization()(x) + #branch_point4 = Dense(a, name='branch_point4')(x) + x = Dense(a, activation='relu', kernel_initializer=init, bias_initializer='zeros')(x) + x = Dropout(b)(x) + x = BatchNormalization()(x) + x = Dense(a, activation='relu', kernel_initializer=init, bias_initializer='zeros')(x) + x = Dropout(b)(x) + #x = add([x, branch_point4]) + x = BatchNormalization()(x) + #branch_point5 = Dense(a, name='branch_point5')(x) + x = Dense(a, activation='relu', kernel_initializer=init, bias_initializer='zeros')(x) + x = Dropout(b)(x) + x = BatchNormalization()(x) + x = Dense(a, activation='relu', kernel_initializer=init, bias_initializer='zeros')(x) + x = Dropout(b)(x) + #x = add([x, branch_point5]) + #x = BatchNormalization()(x) + #x = Dense(a, activation='relu', kernel_initializer=init, bias_initializer='zeros')(x) + #x = Dropout(b)(x) + predictions = Dense(2, activation='softmax')(x) + model = Model(inputs=inputs, outputs=predictions) + + if multiGPU : train_model = multi_gpu_model(model, gpus=4) + else : train_model = model + + adam=keras.optimizers.Adam(lr=1E-3, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=1E-3) + train_model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy','binary_accuracy']) +#train_model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy','categorical_accuracy']) + + modelfile = 'model_{epoch:02d}_{val_binary_accuracy:.4f}.h5' + checkpoint = ModelCheckpoint(self.config['output']+'/'+modelfile, monitor='val_binary_accuracy', verbose=1, save_best_only=False)#, mode='max') + + history = train_model.fit(X_train, Y_train, + epochs=30, batch_size=1024, + validation_data=(X_test,Y_test), + #class_weight={ 0: 14, 1: 1 }, + callbacks=[RocCallback(training_data=(X_train,Y_train), validation_data=(X_test,Y_test), model=model, output_dir=self.config['output'])] + ) + + print("Now predict score with test set") + bestModel = "" + best_acc = 0.0 + for filename in os.listdir(configDir+weightDir+ver): + if not "h5" in filename : continue + tmp = filename.split('.') + tmp_acc = float("0."+tmp[1]) + if tmp_acc > best_acc : + best_acc = tmp_acc + bestModel = filename + + print("Use "+bestModel) + model_best = load_model(self.config['output']+'/'+bestModel) + y_pred = model_best.predict(X_test, batch_size=1024) + + plt.plot(history.history['binary_accuracy']) + plt.plot(history.history['val_binary_accuracy']) + plt.title('Model accuracy') + plt.ylabel('Accuracy') + plt.xlabel('Epoch') + plt.legend(['Train','Test'], loc='lower right') + plt.savefig(os.path.join(configDir,weightDir+ver,'fig_score_acc.pdf')) + plt.gcf().clear() + + plt.plot(history.history['loss']) + plt.plot(history.history['val_loss']) + plt.title('Binary crossentropy') + plt.ylabel('Loss') + plt.xlabel('Epoch') + plt.legend(['Train','Test'],loc='upper right') + plt.savefig(os.path.join(configDir,weightDir+ver,'fig_score_loss.pdf')) + plt.gcf().clear() + + plt.plot(auc_list) + plt.plot(val_auc_list) + plt.title('Area under curve') + plt.ylabel('AUC') + plt.xlabel('Epoch') + plt.legend(['Train','Test'], loc='upper right') + plt.savefig(os.path.join(configDir,weightDir+ver,'fig_score_auc.pdf')) + plt.gcf().clear() + + self.config['model'] = str(bestModel) diff --git a/python/makePlotItConfigs.py b/python/makePlotItConfigs.py new file mode 100644 index 0000000..5eed8e2 --- /dev/null +++ b/python/makePlotItConfigs.py @@ -0,0 +1,98 @@ +import os +import sys + +import ROOT + +strHistConfigTemplate = """\ +'{name}': + y-axis: "Events" + y-axis-format: "%1%" + save-extensions: ['pdf'] + show-ratio: true + {options} +""" + +strFileConfigTemplate = """\ +'{name}': + type: {type} + pretty-name: '{prettyname}' +{options} +""" + +strMCOptionsTemplate = """\ + cross-section: {xsec} + generated-events: {genevt} + fill-color: '{color}' + group: {group} + order: {order} +""" + +class MakeConfigs: + def __init__(self, year, root_path, output_path): + self.year = year + self.root_path = root_path + self.output_path = output_path + + def make_histogram_configs(self): + f_tmp = ROOT.TFile(os.path.join(self.root_path, 'hist_DataSingleMu.root')) + hist_list = [x.GetName() for x in f_tmp.GetListOfKeys()] + + str_bank = [] + for hist in hist_list: + if any(i in hist for i in ['Resp', 'Info', 'Weights', 'bSF']): continue + TH1 = f_tmp.Get(hist) + if TH1.InheritsFrom('TH2') or TH1.InheritsFrom('TH3'): continue + str_config = strHistConfigTemplate.format(name=hist, options='#log-y: true') + str_bank.append(str_config) + + config = open(os.path.join(self.output_path, 'histos.yml'), 'w') + str_out = '\n'.join(item for item in str_bank) + config.write(str_out) + config.close() + + def make_file_configs(self): + str_bank = [] + + data_options = " legend: 'Data'\n marker-size: 0.6\n group: GData" + + temp = strFileConfigTemplate.format(name='hist_DataSingleMu.root', type='data', legend='data', + prettyname='DataSingleMu', options=data_options) + str_bank.append(temp) + + temp = strFileConfigTemplate.format(name='hist_DataSingleEG.root', type='data', legend='data', + prettyname='DataSingleEG', options=data_options) + str_bank.append(temp) + + genevt = {} + with open('./samples/genevt'+str(self.year)+'.txt','r') as f: + while True: + line = f.readline() + if not line: break + tmp = line.split(' ') + genevt[tmp[0]] = float(tmp[1]) + + with open('./samples/xsec'+str(self.year)+'.txt','r') as f: + while True: + line = f.readline() + if not line: break + if 'Sample' in line: continue + tmp = line.split(' ') + sample = tmp[0] + xsec = float(tmp[1]) + order = int(tmp[2]) + color = tmp[3] + legend = tmp[4][:-1] + if order < 0: continue + + group = 'G'+legend + + mc_options = strMCOptionsTemplate.format(xsec=str(xsec), genevt=str(genevt[sample]), + color=str(color), group=str(group), order=str(order)) + temp = strFileConfigTemplate.format(name='hist_'+sample+'.root', type='mc', legend=legend, + prettyname=sample, options=mc_options) + str_bank.append(temp) + + config = open(os.path.join(self.output_path, 'files'+str(self.year)+'.yml'), 'w') + str_out = '\n'.join(item for item in str_bank) + config.write(str_out) + config.close() diff --git a/python/makeSlurmJob.py b/python/makeSlurmJob.py new file mode 100644 index 0000000..d82e4e1 --- /dev/null +++ b/python/makeSlurmJob.py @@ -0,0 +1,71 @@ +#!/usr/bin/python +import os +import sys +import subprocess + +from ROOT import TChain, TFile, TH1D, TH1F, TCanvas + +import var + +class RunTSelector: + def __init__(self, year, ntuple_path): + self.year = year + self.ntuple_path = ntuple_path + + def make_slurm_job(self, is_test=False, is_qcd=False): + import templateBook as tb + job_name = str(self.year)+'_plots' + node = 'gpu' + opts = 'opt1\nopt2\nopt3\nopt4\nopt5\n\n' + command = 'python python/runTSelector.py $opt1 $opt2 $opt3 $opt4 $opt5' + script = tb.strSlurmTemplate.format(job_name=job_name, node=node, opts=opts, command=command) + + import runTSelector + #Compile TSelector + runTSelector.runAna(self.year, self.ntuple_path+"/TTLJ_PowhegPythia_ttbb", "Tree_ttbbLepJets_000.root", "Nosys_Compile", "False") + + if is_test: + runTSelector.runAna(self.year, self.ntuple_path+'/TTLJ_PowhegPythia_ttbb', 'Tree_ttbbLepJets_000.root', 'Test_ttbb', 'False') + elif is_qcd: + for sample in samples: + for item in os.listdir(inputDir+'/'+sample): + cmd = ['sbatch','job_slurm.sh',str(year),inputDir+'/'+sample,item,'dataDriven_'+sample,'True'] + subprocess.call(cmd) + cmd = ['sbatch','job_slurm.sh',str(year),inputDir+'/'+sample,item,'dataDriven_'+sample+'__qcdisoup','True'] + subprocess.call(cmd) + cmd = ['sbatch','job_slurm.sh',str(year),inputDir+'/'+sample,item,'dataDriven_'+sample+'__qcdisodown','True'] + subprocess.call(cmd) + else: + for sample in samples: + for item in os.listdir(inputDir+'/'+sample): + cmd = ['sbatch','job_slurm.sh',str(year),inputDir+'/'+sample,item,sample,'False'] + subprocess.call(cmd) + + for sample in samples: + if "QCD" in sample or "Data" in sample: continue + jetsyst = ['jerup','jerdown','jecup','jecdown'] + for syst in jetsyst: + for item in os.listdir(inputDir+'/'+sample): + cmd = ['sbatch','job_slurm.sh',str(year),inputDir+'/'+sample,item,sample+'__'+syst,'False'] + subprocess.call(cmd) + + extSystematics = [] + with open(var.BASE_PATH_+'/samples/systematic'+str(year)+'.txt', 'r') as f: + while True: + line = f.readline() + if not line: break + extSystematics.append(line[:-1]) + + for syst in extSystematics: + tmp = syst.split('_') + if 'Bkg' in syst: + outName = tmp[0]+'_'+tmp[1]+'__'+tmp[-1].lower() + else: + outName = tmp[0]+'_'+tmp[1]+'_'+tmp[-1]+'__'+tmp[-2].lower() + if 'tunecuetp8m4' in outName: + outName = outName.replace('tunecuetp8m4','tune') + if 'tunecp5' in outName: + outName = outName.replace('tunecp5', 'tune') + for item in os.listdir(inputDir+'/'+syst): + cmd = ['sbatch','job_slurm.sh',str(year),inputDir+'/'+syst,item,outName,'False'] + subprocess.call(cmd) diff --git a/python/ntuple2array.py b/python/ntuple2array.py new file mode 100644 index 0000000..2ede013 --- /dev/null +++ b/python/ntuple2array.py @@ -0,0 +1,219 @@ +#! /usr/bin/env python +import os, sys +import argparse +import multiprocessing as mp +import time + +import numpy as np +from numpy.lib.recfunctions import stack_arrays +from ROOT import * +from root_numpy import tree2array +from array import array +import math +import glob +import pandas as pd +from tqdm import tqdm + +import yaml + +import utils as ut + +def str2bool(v): + if v.lower() in ('yes', 'true', 't', 'y', '1', 'True'): return True + elif v.lower() in ('no', 'false', 'f', 'n', '0', 'False'): return False + +def transversemass(vec1, met): + tmp1 = TLorentzVector(vec1.Px(), vec1.Py(), 0, vec1.E()*math.sin(vec1.Theta())) + tmp2 = TLorentzVector(met.Px(), met.Py(), 0, met.E()); + + return (tmp1+tmp2).M() + +def makeCombi(inputDir, inputFile, outputDir, makeTrainingInput, sys=''): + print("Begin Process "+str(os.getpid())+": "+str(inputFile)) + makeTrainingInput = str2bool(makeTrainingInput) + + chain = TChain("ttbbLepJets/tree") + chain.Add(inputDir+"/"+inputFile) + + try: + os.makedirs(outputDir) + except OSError: + print(outputDir+": already exists") + + data = False + if 'Data' in inputDir: data = True + ttbb = False + if 'ttbb' in inputDir: ttbb = True + + with open('object_selection_config.yml', 'r') as f: + if '2016' in inputDir: + era = 2016 + elif '2017' in inputDir: + era = 2017 + elif '2018' in inputDir: + era = 2018 + else: + print "There is no such era ",inputDir + exit(0) + obj_selection = yaml.load(f, Loader=yaml.FullLoader) + muon_ch = 0 + muon_pt = float(obj_selection[era]['muon']['pt']) + muon_eta = float(obj_selection[era]['muon']['eta']) + electron_ch = 1 + electron_pt = float(obj_selection[era]['electron']['pt']) + electron_eta = float(obj_selection[era]['electron']['eta']) + jet_pt = float(obj_selection[era]['jet']['pt']) + jet_eta = float(obj_selection[era]['jet']['eta']) + jet_csv = float(obj_selection[era]['jet']['csv'][obj_selection['bjet']]) + + jetCombi = [] + for i in xrange(chain.GetEntries()) : + chain.GetEntry(i) + + lep = TLorentzVector() + lep.SetPtEtaPhiE(chain.lepton_pt, chain.lepton_eta, chain.lepton_phi, chain.lepton_e) + passmuon = False + passelectron = False + passmuon = chain.channel == muon_ch and lep.Pt() > muon_pt and abs(lep.Eta()) < muon_eta + passelectron = chain.channel == electron_ch and lep.Pt() > electron_pt and abs(lep.Eta()) < electron_eta + if passmuon == False and passelectron == False: + continue + + addbjet1 = TLorentzVector(0,0,0,0) + addbjet2 = TLorentzVector(0,0,0,0) + if ttbb: + addbjet1.SetPtEtaPhiE(chain.addbjet1_pt,chain.addbjet1_eta,chain.addbjet1_phi,chain.addbjet1_e) + addbjet2.SetPtEtaPhiE(chain.addbjet2_pt,chain.addbjet2_eta,chain.addbjet2_phi,chain.addbjet2_e) + njets = 0 + nbjets = 0 + addbjet1_matched = TLorentzVector(0,0,0,0) + addbjet2_matched = TLorentzVector(0,0,0,0) + + for iJet in range(len(chain.jet_pt)): + jet = TLorentzVector() + jet.SetPtEtaPhiE(chain.jet_pt[iJet],chain.jet_eta[iJet],chain.jet_phi[iJet],chain.jet_e[iJet]) + + if not data : + if 'jecup' in sys: + jet *= chain.jet_JER_Nom[iJet] * chain.jet_JES_Up[iJet] + elif 'jecdown' in sys: + jet *= chain.jet_JER_Nom[iJet] * chain.jet_JES_Down[iJet] + elif 'jerup' in sys: + jet *= chain.jet_JER_Up[iJet] + elif 'jerdown' in sys: + jet *= chain.jet_JER_Down[iJet] + else: + jet *= chain.jet_JER_Nom[iJet] + + if jet.Pt() < jet_pt or abs(jet.Eta()) > jet_eta: continue + njets += 1 + if chain.jet_deepCSV[iJet] > jet_csv: nbjets += 1 + + if addbjet1.DeltaR(jet) < 0.4: addbjet1_matched = jet; + if addbjet2.DeltaR(jet) < 0.4: addbjet2_matched = jet; + + if njets < 6 or nbjets < 2: continue + + prefireweight = [] + pdfweight = [] + psweight = [] + scaleweight = [] + PUWeight = [] + lepton_SF = [] + jet_SF_CSV_30 = [] + if not data: + for j in xrange((chain.lepton_SF).size()): + lepton_SF.append(float(chain.lepton_SF[j])) + for j in xrange((chain.jet_SF_deepCSV_30).size()): + jet_SF_CSV_30.append(float(chain.jet_SF_deepCSV_30[j])) + for j in xrange((chain.PUWeight).size()): + PUWeight.append(float(chain.PUWeight[j])) + if chain.GetBranchStatus("prefireweight"): + for j in xrange((chain.prefireweight).size()): + prefireweight.append(float(chain.prefireweight[j])) + if 'TT' in inputDir: + for j in xrange((chain.scaleweight).size()): + scaleweight.append(float(chain.scaleweight[j])) + for j in xrange((chain.pdfweight).size()): + pdfweight.append(float(chain.pdfweight[j])) + if chain.GetBranchStatus("psweight"): + for j in xrange((chain.psweight).size()): + psweight.append(float(chain.psweight[j])) + + MET_px = chain.MET*math.cos(chain.MET_phi) + MET_py = chain.MET*math.sin(chain.MET_phi) + nu = TLorentzVector(MET_px, MET_py, 0, chain.MET) + + for j in range(len(chain.jet_pt)-1): + for k in range(j+1, len(chain.jet_pt)): + if chain.jet_deepCSV[j] > jet_csv and chain.jet_deepCSV[k] > jet_csv: + b1 = TLorentzVector() + b2 = TLorentzVector() + b1.SetPtEtaPhiE(chain.jet_pt[j], chain.jet_eta[j], chain.jet_phi[j], chain.jet_e[j]) + b2.SetPtEtaPhiE(chain.jet_pt[k], chain.jet_eta[k], chain.jet_phi[k], chain.jet_e[k]) + if not data : + if 'jecup' in sys: + b1 *= chain.jet_JER_Nom[j] * chain.jet_JES_Up[j] + b2 *= chain.jet_JER_Nom[k] * chain.jet_JES_Up[k] + elif 'jecdown' in sys: + b1 *= chain.jet_JER_Nom[j] * chain.jet_JES_Down[j] + b2 *= chain.jet_JER_Nom[k] * chain.jet_JES_Down[k] + elif 'jerup' in sys: + b1 *= chain.jet_JER_Up[j] + b2 *= chain.jet_JER_Up[k] + elif 'jerdown' in sys: + b1 *= chain.jet_JER_Down[j] + b2 *= chain.jet_JER_Down[k] + else : + b1 *= chain.jet_JER_Nom[j] + b2 *= chain.jet_JER_Nom[k] + + tmp = [] + if makeTrainingInput: + if (addbjet1_matched.DeltaR(b1) == 0 and addbjet2_matched.DeltaR(b2) == 0) or (addbjet2_matched.DeltaR(b1) == 0 and addbjet1_matched.DeltaR(b2) == 0): + signal = 1 + else: + signal = 0 + tmp = [signal] + tmp += [i, (b1+b2).M(), b1.DeltaR(b2), b1.DeltaPhi(b2), abs(b1.Eta()-b2.Eta()), + (b1+b2).Phi(), (b1+b2).Eta(), + (b1+b2+nu).M(), (b1+b2).DeltaR(nu), + (b1+nu).M(), b1.DeltaR(nu), (b2+nu).M(), b2.DeltaR(nu), + (b1+b2+lep).M(), (b1+b2).DeltaR(lep), + (b1+lep).M(), b1.DeltaR(lep), (b2+lep).M(), b2.DeltaR(lep), + (b1+b2).DeltaR(lep+nu), + b1.Pt(), b1.Eta(), b1.E(), chain.jet_deepCSV[j], b1.M(), + b2.Pt(), b2.Eta(), b2.E(), chain.jet_deepCSV[k], b2.M(), + lep.Pt(), lep.Eta(), lep.E(), + nu.Pt(), nu.Phi(), + nbjets] + + if not makeTrainingInput: + tmp += [chain.channel, chain.genweight, PUWeight, scaleweight, pdfweight, + prefireweight, psweight, lepton_SF, jet_SF_CSV_30, + lep.Pt(), lep.Eta(), lep.Phi(), lep.E(), + addbjet1.Pt(), addbjet1.Eta(), addbjet1.Phi(), addbjet1.E(), + addbjet2.Pt(), addbjet2.Eta(), addbjet2.Phi(), addbjet2.E(), + njets, j, k] + jetCombi.append(tmp) + + if makeTrainingInput: + combi = pd.DataFrame(jetCombi, columns=['signal', 'event']+ut.getVarlist()) + else: + combi = pd.DataFrame(jetCombi, columns= + ['event']+ut.getVarlist()+ + ['channel', 'genWeight', 'PUWeight', 'scaleweight', 'pdfweight', + 'prefireweight', 'psweight', 'lepton_SF', 'jet_SF_CSV_30', + 'leptonPt','leptonEta','leptonPhi','leptonE', + 'addbjet1_pt','addbjet1_eta','addbjet1_phi','addbjet1_e', + 'addbjet2_pt','addbjet2_eta','addbjet2_phi','addbjet2_e', + 'njets','b1','b2']) + + combi.style.format('table') + combi.to_hdf(outputDir+"/array_"+inputFile.replace("root","h5"),key='combi',mode='w') + print("End Process "+str(os.getpid())+": "+str(inputFile)) + +if len(sys.argv) == 5: + makeCombi(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4]) +elif len(sys.argv) == 6: + makeCombi(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4], sys.argv[5]) diff --git a/macro/postProcess.py b/python/postProcess.py similarity index 69% rename from macro/postProcess.py rename to python/postProcess.py index 5c4d273..7af2f6b 100644 --- a/macro/postProcess.py +++ b/python/postProcess.py @@ -28,20 +28,32 @@ def write_envelope(sys_name, h_central, h_sys_list, h_eventinfo, h_weights): #hist.Scale(h_eventinfo.GetBinContent(2)/(h_weights.GetBinContent(index+1)*bratio)) h_sys_weighted_list.append(hist) - nbins = h_central.GetNbinsX() h_up = h_central.Clone() h_down = h_central.Clone() - - for ibin in range(nbins+1): - minimum = float("inf") - maximum = float("-inf") - - for hist in h_sys_weighted_list: - minimum = min(minimum, hist.GetBinContent(ibin)) - maximum = max(maximum, hist.GetBinContent(ibin)) - - h_up.SetBinContent(ibin, maximum) - h_down.SetBinContent(ibin, minimum) + + if h_central.GetDimension() == 1: + for ibin in range(h_central.GetNbinsX()+2): + minimum = float("inf") + maximum = float("-inf") + + for hist in h_sys_weighted_list: + minimum = min(minimum, hist.GetBinContent(ibin)) + maximum = max(maximum, hist.GetBinContent(ibin)) + + h_up.SetBinContent(ibin, maximum) + h_down.SetBinContent(ibin, minimum) + elif h_central.GetDimension() == 2: + for ixbin in range(h_central.GetNbinsX()+2): + for iybin in range(h_central.GetNbinsY()+2): + minimum = float("inf") + maximum = float("-inf") + + for hist in h_sys_weighted_list: + minimum = min(minimum, hist.GetBinContent(ixbin, iybin)) + maximum = max(maximum, hist.GetBinContent(ixbin, iybin)) + + h_up.SetBinContent(ixbin, iybin, maximum) + h_down.SetBinContent(ixbin, iybin, minimum) upname = "__"+sys_name+"up" downname= "__"+sys_name+"down" @@ -63,20 +75,19 @@ def bSFnorm(h_bSF, h_tmp): return h_tmp -def postProcess(base_path, proc, year): - input_path = base_path+'/output/root'+str(year)+'/' - if not os.path.exists(input_path+'post'): +def postProcess(input_path, proc, year, isCP5=True): + if not os.path.exists(input_path+'/post'): try: - os.makedirs(input_path+'post') + os.makedirs(input_path+'/post') except OSError: - print(input_path+'post: already exists') + print(input_path+'/post: already exists') print("Begin Process "+str(os.getpid())+" "+str(proc)) if any(i in proc for i in ['Data', 'QCD']): return f_sample = TFile.Open(os.path.join(input_path, proc), "READ") - f_update = TFile.Open(os.path.join(input_path+'post', proc), "RECREATE") + f_update = TFile.Open(os.path.join(input_path,'post', proc), "RECREATE") h_eventinfo = f_sample.Get("EventInfo") h_scaleweights = f_sample.Get("ScaleWeights") @@ -90,10 +101,19 @@ def postProcess(base_path, proc, year): if any(i in hist for i in ['scale','ps','pdf','Info','Weight']): continue tmp = hist.split('__')[0] tmp = tmp.split('_')[-2] - if 'S0' in hist: - h_bSF = f_sample.Get('h_bSFinfo_'+tmp+'_S0') + if not 'Ch2' in tmp: + if 'S0' in hist: + h_bSF = f_sample.Get('h_bSFinfo_'+tmp+'_S0') + else: + h_bSF = f_sample.Get('h_bSFinfo_'+tmp+'_S1') else: - h_bSF = f_sample.Get('h_bSFinfo_'+tmp+'_S1') + if 'S0' in hist: + h_bSF = f_sample.Get('h_bSFinfo_Ch0_S0') + h_bSF.Add(f_sample.Get('h_bSFinfo_Ch1_S0')) + else: + h_bSF = f_sample.Get('h_bSFinfo_Ch0_S0') + h_bSF.Add(f_sample.Get('h_bSFinfo_Ch1_S0')) + h_tmp = f_sample.Get(hist) h_tmp = bSFnorm(h_bSF, h_tmp) h_tmp.Write() @@ -111,31 +131,24 @@ def postProcess(base_path, proc, year): tmp = value.Get(hist+"__"+syst_jet[index]) tmp.Write() - syst_external = ['tune', 'hdamp'] - if year == 16: - syst_external.append('isr') - syst_external.append('fsr') + if not isCP5: + syst_external = ['tune', 'hdamp', 'isr', 'fsr'] + else: + syst_external = ['tune', 'hdamp'] if 'Filter' in proc: return if 'TT' in proc: print("Rescaling external samples...") for syst in syst_external: - for i in range(2): - if year == 16 and 'Bkg' in proc and 'hdamp' in syst: - continue - if year == 16 and any(syst in sys for sys in ['tune', 'isr', 'fsr']) and not 'Bkg' in proc: - ext_name = proc[:5]+'TT'+proc[9:-5] - else: + for vari in ['up','down']: + if isCP5: ext_name = proc[:-5] + else: + ext_name = proc.replace('TTLJ','TT')[:-5] - tmp = '' - if i == 0: tmp = syst+'up' - else: tmp = syst+'down' - print("External syst sample: "+ext_name) - + tmp = syst+vari f_ext = TFile.Open(os.path.join(input_path, ext_name+'__'+tmp+'.root'), "READ") - h_out = [] h_out = rescale(f_ext, h_eventinfo) @@ -147,9 +160,9 @@ def postProcess(base_path, proc, year): print("Writing envelope...") ps_list = ["isrup", "fsrup", "isrdown", "fsrdown"] - if year == 16: + if not isCP5: if not 'Bkg' in proc: - ext_name = proc[:5]+'TT'+proc[9:-5] + ext_name = proc.replace('TTLJ','TT')[:-5] else: ext_name = proc[:-5] @@ -164,13 +177,7 @@ def postProcess(base_path, proc, year): h_psweights.SetBinContent(index+1,tmp) f_ps_list[index].Close() else: - f_txt = open(base_path+'/samples/sample'+str(year)+'.txt','r') - ntuple_loc = f_txt.readline()[:-1] - f_txt.close() - - f_ntuple = TFile.Open(os.path.join(ntuple_loc, proc[5:-5]+".root")) - h_psweights = f_ntuple.Get("ttbbLepJets/PSWeights") - f_ntuple.Close() + h_psweights = f_sample.Get("PSWeights") for hist in hist_list: if any(i in hist for i in ['__', 'Info', 'Weight', 'bSF']): continue @@ -182,8 +189,8 @@ def postProcess(base_path, proc, year): h_sw_list.append(f_sample.Get(hist+"__scale"+str(i))) h_pdf_list = [] - if year == 16: maxpdf = 102 - else: maxpdf = 103 + if year == 16 and not 'CP5' in proc: maxpdf = 102 + else: maxpdf = 104 for i in range(maxpdf): h_pdf_list.append(f_sample.Get(hist+"__pdf"+str(i))) @@ -206,10 +213,10 @@ def postProcess(base_path, proc, year): h_pdf_new[0].Write() h_pdf_new[1].Write() - h_ps_new = [] - h_ps_new = write_envelope("ps", h_central, h_ps_list, h_eventinfo, h_psweights) - h_ps_new[0].Write() - h_ps_new[1].Write() + #h_ps_new = [] + #h_ps_new = write_envelope("ps", h_central, h_ps_list, h_eventinfo, h_psweights) + #h_ps_new[0].Write() + #h_ps_new[1].Write() f_update.cd() evtinfo = f_sample.Get("EventInfo") diff --git a/python/runPostProcess.py b/python/runPostProcess.py new file mode 100644 index 0000000..45c26f2 --- /dev/null +++ b/python/runPostProcess.py @@ -0,0 +1,126 @@ +import os +import sys +import glob +import time + +import multiprocessing as mp +import subprocess +import argparse + +from ROOT import * + +import python.getQCD as gq +import python.postProcess as pp + +def str2bool(v): + if v.lower() in ('yes', 'true', 't', 'y', '1', 'True'): + return True + elif v.lower() in ('no', 'false', 'f', 'n', '0', 'False'): + return False + else: + raise argparse.ArgumentTypeError('Boolean value expected') + +def mergeHist(input_dir): + tmp = input_dir.split('/') + output_dir = '/'.join(tmp[:-1]) + input_sample = tmp[-1] + cmd = ['hadd', str(output_dir)+'/hist_'+str(input_sample)+'.root']+glob.glob(input_dir+'/*') + subprocess.call(cmd) + +def runGentree(year): + f_txt = open('samples/sample'+str(year)+'.txt','r') + ntuple_loc = f_txt.readline()[:-1] + f_txt.close() + cmd = ['root', '-l', '-b', '-q', + 'macro/runGentree.C("'+str(ntuple_loc)+'", "'+str(os.getcwd())+"/output/root"+str(year)+'/post")'] + subprocess.call(cmd) + +if __name__ == '__main__': + start_time = time.time() + + parser = argparse.ArgumentParser(description='Run post process') + + parser.add_argument('-y', '--year', required=False, type=int, default=9999, help='Run special year') + parser.add_argument('-m', '--merge', required=False, type=str2bool, default=False, help='Merge histograms') + parser.add_argument('-q', '--qcd', required=False, type=str2bool, default=False, help='Get QCD shapes') + parser.add_argument('-d', '--dnn', required=False, type=str2bool, default=False, help='Get QCD shapes') + + args = parser.parse_args() + year = args.year + input_dir = os.getcwd()+'/output/root'+str(year) + if args.qcd: input_dir = os.getcwd()+'/output/root'+str(year)+'_qcd' + if args.dnn: input_dir = os.getcwd()+'/output/dnn'+str(year) + + if args.merge: + print "Merge histogram root files" + procs = [] + dir_list = filter(os.path.isdir, glob.glob(input_dir+'/*')) + for item in dir_list: + proc = mp.Process(target=mergeHist, args=(item,)) + procs.append(proc) + proc.start() + for proc in procs: + proc.join() + + for item in os.listdir(input_dir): + if os.path.isdir(input_dir+'/'+item): + os.system('rm -rf '+input_dir+'/'+item) + + if args.qcd: + listKind = ['Nosys', 'dataDriven'] + for kind in listKind: + for lep in ['Mu','EG']: + name = input_dir+'/hist_'+kind+'_DataSingle'+lep + cmd = ['hadd', name+'.root']+glob.glob(name+'?.root') + subprocess.call(cmd) + if kind != 'dataDriven': continue + listSyst = ['__qcdisoup', '__qcdisodown'] + for syst in listSyst: + name = input_dir+'/hist_'+kind+'_DataSingle'+lep + cmd = ['hadd', name+syst+'.root']+glob.glob(name+'*'+syst+'*') + subprocess.call(cmd) + else: + for lep in ['Mu','EG']: + cmd = ['hadd', input_dir+'/hist_DataSingle'+lep+'.root']+glob.glob(input_dir+'/hist_DataSingle'+lep+'*') + subprocess.call(cmd) + + + post_path = os.getcwd()+'/output/root'+str(year) + if args.dnn and os.path.exists(post_path): + for sample in os.listdir(input_dir): + tmp_dir = os.getcwd()+'/output/merge'+str(year) + if not os.path.exists(tmp_dir): + os.makedirs(tmp_dir) + cmd = ['hadd', tmp_dir+'/'+sample, post_path+'/'+sample, input_dir+'/'+sample] + subprocess.call(cmd) + + exit(0) + + if args.qcd: + gq.getQCDShape(os.getcwd(), year) + + else: + print("Run gentree") + runGentree(year) + + print("Run post process") + procs = [] + for item in os.listdir(input_dir): + if any(i in item for i in ['__','gen','Data']): continue + if year == 16 and ((not 'CP5' in item) or 'TT_PowhegPythiaBkg' in item): + isCP5 = False + else: + isCP5 = True + isCP5 = True + if not item.endswith('.root'): + continue + proc = mp.Process(target=pp.postProcess, args=(input_dir, item, year, isCP5)) + procs.append(proc) + proc.start() + for proc in procs: + proc.join() + for file in glob.glob(input_dir+'/hist_QCD*'): + cmd = ['cp',file,input_dir+'/post'] + subprocess.call(cmd) + + print("Total running time: %s" %(time.time() - start_time)) diff --git a/python/runTSelector.py b/python/runTSelector.py new file mode 100644 index 0000000..74acec7 --- /dev/null +++ b/python/runTSelector.py @@ -0,0 +1,56 @@ +#!/usr/bin/python +import os +import sys + +from ROOT import TChain, TFile, TH1D, TH1F, TCanvas + +import var + +def runAna(year, dir, file, name, isQCD=False): + # tmp: /data/users/seohyun/ntuple/Run2016/v808/nosplit/Nosys_Compile/TTLJ_PowhegPythia_ttbbFilter_ttbb + # process: Run2016/TTLJ_PowhegPythia_ttbb__jecup/TTLJ_PowhegPythia_ttbb + tmp = dir+'/'+str(name)+'/'+file[:-5] + tmp = tmp.split('/') + process = str(tmp[5])+'/'+str(tmp[-2])+'/'+str(tmp[-1]) + + #print("Begin Process "+str(os.getpid())+": "+str(process)) + + outdir = 'output/root'+str(year) + if 'Tree' in file: + outdir += '/'+name + try: + os.makedirs(outdir) + except OSError: + print(outdir+": already exists") + + if isQCD: + chain = TChain("ttbbLepJetsQCD/tree", "events") + else: + chain = TChain("ttbbLepJets/tree","events") + + chain.Add(dir+"/"+file) + chain.Process(var.BASE_PATH_+"/macro/MyAnalysis.C+", process) + + f = TFile(dir+"/"+file,"read") + + ## save Event Summary histogram ## + if 'Tree' in process: + out = TFile(outdir+'/hist_'+file, 'update') + else: + out = TFile(outdir+'/hist_'+name+'.root', 'update') + + hevt = f.Get("ttbbLepJets/EventInfo") + hsw = f.Get("ttbbLepJets/ScaleWeights") + hpdf = f.Get("ttbbLepJets/PDFWeights") + hps = f.Get("ttbbLepJets/PSWeights") + hevt.Write() + if not hpdf == None: hpdf.Write() + if not hsw == None: hsw.Write() + if not hps == None: hps.Write() + out.Write() + out.Close() + + print("End Process "+str(os.getpid())+": "+str(process)) + +if len(sys.argv) == 6: + runAna(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4], str2bool(sys.argv[5])) diff --git a/python/saveAndLoadSamples.py b/python/saveAndLoadSamples.py new file mode 100644 index 0000000..132d42b --- /dev/null +++ b/python/saveAndLoadSamples.py @@ -0,0 +1,81 @@ +import os +import sys +import ROOT + +class SaveSamples: + def __init__(self, year, ntuple_path, output_path): + self.year = year + self.ntuple_path = ntuple_path + self.output_path = output_path + self.store_sample_list() + self.store_nevents() + + def store_sample_list(self): + f_data = open(self.output_path+'/data'+str(self.year)+'.txt','w') + f_mc = open(self.output_path+'/sample'+str(self.year)+'.txt', 'w') + f_syst = open(self.output_path+'/systematic'+str(self.year)+'.txt','w') + + f_mc.write(self.output_path+'\n') + + for item in os.listdir(self.ntuple_path): + if not os.path.isdir(self.ntuple_path+'/'+item): continue + if 'part' in item: continue + print item + if 'Data' in item: + f_data.write(item+'\n') + elif any(i in item for i in ['Herwig','Evtgen','TT_aMC','SYS']): + f_syst.write(item+'\n') + else: + f_mc.write(item+'\n') + + f_data.close() + f_mc.close() + f_syst.close() + + def store_nevents(self): + f_out = open(self.output_path+'/genevt'+str(self.year)+'.txt','w') + + for item in os.listdir(self.ntuple_path): + if not os.path.isdir(self.ntuple_path+'/'+item): continue + if any(i in item for i in ['Data','part']): continue + nevts = 0.0 + for file in os.listdir(os.path.join(self.ntuple_path,item)): + TFile = ROOT.TFile.Open(os.path.join(self.ntuple_path,item,file)) + EventInfo = TFile.Get('ttbbLepJets/EventInfo') + nevts += EventInfo.GetBinContent(2) + TFile.Close() + f_out.write("%s: %f\n" % (item, nevts)) + print "%s: %f" % (item, nevts) + f_out.close() + +class LoadSamples: + def __init__(self, year=16): + self.year = year + self.xsecs = {} + self.genevt = {} + + def get_sample_info(self): + samples = [] + with open('samples/sample'+str(self.year)+'.txt', 'r') as f: + while True: + line = f.readline() + if '/data/' in line: continue + if not line: break + samples.append(line[:-1]) + + with open('samples/xsec'+str(self.year)+'.txt','r') as f: + while True: + line = f.readline() + if 'Xsec' in line: continue + if not line: break + tmp = line.split(' ') + if int(tmp[2]) < 0: continue + if not tmp[0] in samples: continue + self.xsecs[int(tmp[2])] = [tmp[0], float(tmp[1])] + + with open('samples/genevt'+str(self.year)+'.txt','r') as f: + while True: + line = f.readline() + if not line: break + tmp = line.split(' ') + self.genevt[tmp[0]] = float(tmp[1]) diff --git a/python/tdrstyle.py b/python/tdrstyle.py new file mode 100644 index 0000000..7d3bd18 --- /dev/null +++ b/python/tdrstyle.py @@ -0,0 +1,195 @@ +from ROOT import * + +#tdrGrid: Turns the grid lines on (true) or off (False) + +def tdrGrid(gridOn): + tdrStyle.SetPadGridX(gridOn) + tdrStyle.SetPadGridY(gridOn) + +# fixOverlay: Redraws the axis + +def fixOverlay(): + gPad.RedrawAxis() + +def setTDRStyle(): + tdrStyle = TStyle("tdrStyle","Style for P-TDR") + +# For the canvas: + tdrStyle.SetCanvasBorderMode(0) + tdrStyle.SetCanvasColor(kWhite) + tdrStyle.SetCanvasDefH(600) #Height of canvas + tdrStyle.SetCanvasDefW(600) #Width of canvas + tdrStyle.SetCanvasDefX(0) #POsition on screen + tdrStyle.SetCanvasDefY(0) + +# For the Pad: + tdrStyle.SetPadBorderMode(0) +# tdrStyle.SetPadBorderSize(Width_t size = 1) + tdrStyle.SetPadColor(kWhite) + tdrStyle.SetPadGridX(False) + tdrStyle.SetPadGridY(False) + tdrStyle.SetGridColor(0) + tdrStyle.SetGridStyle(3) + tdrStyle.SetGridWidth(1) + +# For the frame: + tdrStyle.SetFrameBorderMode(0) + tdrStyle.SetFrameBorderSize(1) + tdrStyle.SetFrameFillColor(0) + tdrStyle.SetFrameFillStyle(0) + tdrStyle.SetFrameLineColor(1) + tdrStyle.SetFrameLineStyle(1) + tdrStyle.SetFrameLineWidth(1) + +# For the histo: +# tdrStyle.SetHistFillColor(1) +# tdrStyle.SetHistFillStyle(0) + tdrStyle.SetHistLineColor(1) + tdrStyle.SetHistLineStyle(0) + tdrStyle.SetHistLineWidth(1) +# tdrStyle.SetLegoInnerR(Float_t rad = 0.5) +# tdrStyle.SetNumberContours(Int_t number = 20) + + tdrStyle.SetEndErrorSize(0) +# tdrStyle.SetErrorMarker(20) +#tdrStyle.SetErrorX(0.) + tdrStyle.SetMarkerStyle(8) + +#For the fit/function: + tdrStyle.SetOptFit(1) + tdrStyle.SetFitFormat("5.4g") + tdrStyle.SetFuncColor(2) + tdrStyle.SetFuncStyle(1) + tdrStyle.SetFuncWidth(1) + +#For the date: + tdrStyle.SetOptDate(0) +# tdrStyle.SetDateX(Float_t x = 0.01) +# tdrStyle.SetDateY(Float_t y = 0.01) + +# For the statistics box: + tdrStyle.SetOptFile(0) + tdrStyle.SetOptStat(0) # To display the mean and RMS: SetOptStat("mr"); + tdrStyle.SetStatColor(kWhite) + tdrStyle.SetStatFont(42) + tdrStyle.SetStatFontSize(0.025) + tdrStyle.SetStatTextColor(1) + tdrStyle.SetStatFormat("6.4g") + tdrStyle.SetStatBorderSize(1) + tdrStyle.SetStatH(0.1) + tdrStyle.SetStatW(0.15) +# tdrStyle.SetStatStyle(Style_t style = 1001) +# tdrStyle.SetStatX(Float_t x = 0) +# tdrStyle.SetStatY(Float_t y = 0) + +# Margins: + tdrStyle.SetPadTopMargin(0.05) + tdrStyle.SetPadBottomMargin(0.13) + tdrStyle.SetPadLeftMargin(0.16) + tdrStyle.SetPadRightMargin(0.04) + +# For the Global title: + tdrStyle.SetOptTitle(0) + tdrStyle.SetTitleFont(42) + tdrStyle.SetTitleColor(1) + tdrStyle.SetTitleTextColor(1) + tdrStyle.SetTitleFillColor(10) + tdrStyle.SetTitleFontSize(0.05) +# tdrStyle.SetTitleH(0) // Set the height of the title box +# tdrStyle.SetTitleW(0) // Set the width of the title box +# tdrStyle.SetTitleX(0) // Set the position of the title box +# tdrStyle.SetTitleY(0.985) // Set the position of the title box +# tdrStyle.SetTitleStyle(Style_t style = 1001) +# tdrStyle.SetTitleBorderSize(2) + +# For the axis titles: + tdrStyle.SetTitleColor(1, "XYZ") + tdrStyle.SetTitleFont(62, "XYZ") + tdrStyle.SetTitleSize(0.08, "XYZ") +# tdrStyle.SetTitleXSize(Float_t size = 0.02) // Another way to set the size? +# tdrStyle.SetTitleYSize(Float_t size = 0.02) + tdrStyle.SetTitleXOffset(0.9) + tdrStyle.SetTitleYOffset(1.30) +# tdrStyle.SetTitleOffset(1.1, "Y") // Another way to set the Offset + +# For the axis labels: + tdrStyle.SetLabelColor(1, "XYZ") + tdrStyle.SetLabelFont(42, "XYZ") + tdrStyle.SetLabelOffset(0.007, "XYZ") + tdrStyle.SetLabelSize(0.05, "XYZ") + +# For the axis: + tdrStyle.SetAxisColor(1, "XYZ") + tdrStyle.SetStripDecimals(kTRUE) + tdrStyle.SetTickLength(0.03, "XYZ") + tdrStyle.SetNdivisions(510, "XYZ") + tdrStyle.SetPadTickX(1) # To get tick marks on the opposite side of the frame + tdrStyle.SetPadTickY(1) + +# Change for log plots: + tdrStyle.SetOptLogx(0) + tdrStyle.SetOptLogy(0) + tdrStyle.SetOptLogz(0) + +# Postscript options: + tdrStyle.SetPaperSize(20.,20.) +# tdrStyle.SetLineScalePS(Float_t scale = 3) +# tdrStyle.SetLineStyleString(Int_t i, const char* text) +# tdrStyle.SetHeaderPS(const char* header) +# tdrStyle.SetTitlePS(const char* pstitle) + +# tdrStyle.SetBarOffset(Float_t baroff = 0.5) +# tdrStyle.SetBarWidth(Float_t barwidth = 0.5) +# tdrStyle.SetPaintTextFormat(const char* format = "g") +# tdrStyle.SetPalette(Int_t ncolors = 0, Int_t* colors = 0) +# tdrStyle.SetTimeOffset(Double_t toffset) +# tdrStyle.SetHistMinimumZero(kTRUE) + +#tdrStyle.SetHatchesLineWidth(5) +#tdrStyle.SetHatchesSpacing(0.05) + tdrStyle.cd() + +def tdrCMSlabel(lumi): + label = TPaveText() + label.SetX1NDC(0.48) + label.SetX2NDC(0.90) + label.SetY1NDC(0.94) + label.SetY2NDC(0.98) + label.SetTextFont(42) + lumi *= 0.001 + text = "CMS, %.1ffb^{-1} at #sqrt{s} = 13TeV" % lumi + label.AddText(text) + label.SetFillStyle(0) + label.SetBorderSize(0) + label.SetTextSize(0.04) + + return label + +def tdrCMSSimlabel(): + label = TPaveText() + label.SetX1NDC(0.68) + label.SetX2NDC(0.90) + label.SetY1NDC(0.94) + label.SetY2NDC(0.98) + label.SetTextFont(42) + label.AddText("CMS Simulation") + label.SetFillStyle(0) + label.SetBorderSize(0) + label.SetTextSize(0.04) + + return label + +def tdrWorkProgress(): + label = TPaveText() + label.SetX1NDC(0.21) + label.SetX2NDC(0.40) + label.SetY1NDC(0.94) + label.SetY2NDC(0.98) + label.SetTextFont(42) + label.AddText("Work in Progress") + label.SetFillStyle(0) + label.SetBorderSize(0) + label.SetTextSize(0.04) + + return label + diff --git a/python/templateBook.py b/python/templateBook.py new file mode 100644 index 0000000..ebbe1b8 --- /dev/null +++ b/python/templateBook.py @@ -0,0 +1,18 @@ +strSlurmTemplate=""" +#! /bin/bash +#SBATCH -J {job_name} +#SBATCH -p {node} +#SBATCH -N 1 +#SBATCH --open-mode=append +#SBATCH -o %x.out +#SBATCH -e %x.error +#SBATCH --ntasks=1 +#SBATCH --mem=1gb +#SBATCH --cpus-per-task=1 +#SBATCH --comment python +#SBATCH --hint=compute_bound + +{opts} +echo {command} +{command} +""" diff --git a/python/test.py b/python/test.py new file mode 100644 index 0000000..18cbbf5 --- /dev/null +++ b/python/test.py @@ -0,0 +1,19 @@ +import os + +import var + +class test: + def __init__(self, text): + self.text = text + + def load_yaml(self): + var.CONFIGS_ = {} + import yaml + try: + with open('/home/seohyun/work/ttbb/ttbbRun2/'+self.text, 'r') as f: + var.CONFIGS_ = yaml.load(f, Loader=yaml.FullLoader) + return True + except Exception as e: + return False + + diff --git a/python/ui.py b/python/ui.py new file mode 100644 index 0000000..ae22b68 --- /dev/null +++ b/python/ui.py @@ -0,0 +1,39 @@ +import sys +from PyQt5 import QtCore, QtWidgets +#from PyQt5.QtWidgets import QApplication, QWidget, QDesktopWidget, QPushButton, QLabel +#from PyQt5.QtCore import QCoreApplication, QRect + +import button +import var + +class MyApp(QtWidgets.QWidget): + _base_path = '/home/seohyun/work/ttbb/ttbbRun2/' + _config = [] + def __init__(self, batch): + if batch: + self.initUI() + else: + super(QtWidgets.QWidget,self).__init__() + self.initGUI() + + from batch import _select_command + from batch import _run_command + from gui import _make_layout + from gui import _make_cfg_btn + + def initGUI(self): + self.make_layout() + self.setWindowTitle('ttbb lep+jet analyzer') + + self.resize(1200,900) + qr = self.frameGeometry() + cp = QtWidgets.QDesktopWidget().availableGeometry().center() + qr.moveCenter(cp) + self.move(qr.topLeft()) + + self.show() + + def initUI(self): + self._set_config() + cmd = self._select_command() + self._run_command(cmd) diff --git a/python/unfoldPreProcess.py b/python/unfoldPreProcess.py new file mode 100644 index 0000000..0b0c0f0 --- /dev/null +++ b/python/unfoldPreProcess.py @@ -0,0 +1,241 @@ +import os, sys +import math +from array import array +from ROOT import * + +def makeInputHists(*args): + print 'Make unfold input from postfit ditritubions' + inputDir = args[0] + outputDir = args[1] + discriminant = args[2] + group = args[3] + recoMode = args[4] + + nbinsDR = -999 + nbinsM = -999 + widthDR = [] + widthM = [] + with open('macro/histBook.h', 'r') as f: + getNbinsDR = False + getNbinsM = False + getWidthDR = False + getWidthM = False + while True: + line = f.readline() + if not line: break + if 'nbins_reco_addbjets_dR' in line and getNbinsDR == False: + tmp = line.split('=') + tmp = tmp[-1].replace(';','') + nbinsDR = int(tmp) + getNbinsDR = True + if 'reco_addbjets_dR_width' in line and getWidthDR == False: + tmp = line.split('=') + tmp = tmp[-1].replace('{','') + tmp = tmp.replace('}','') + tmp = tmp.replace(';','') + tmp = tmp.replace(' ','') + tmp = tmp.split(',') + for value in tmp: + widthDR.append(float(value)) + getWidthDR = True + if 'nbins_reco_addbjets_M' in line and getNbinsM == False: + tmp = line.split('=') + tmp = tmp[-1].replace(';','') + nbinsM = int(tmp) + getNbinsM = True + if 'reco_addbjets_M_width' in line and getWidthM == False: + tmp = line.split('=') + tmp = tmp[-1].replace('{','') + tmp = tmp.replace('}','') + tmp = tmp.replace(';','') + tmp = tmp.replace(' ','') + tmp = tmp.split(',') + for value in tmp: + widthM.append(float(value)) + getWidthM = True + if getNbinsDR and getNbinsM and getWidthDR and getWidthM: break + + f_out = TFile.Open(outputDir+'/hist_input.root','recreate') + + systList = ['','__postfitup','__postfitdown'] + for process in group: + f_tmp = TFile.Open(inputDir+'/'+process+'_postfit_histos.root') + for syst in systList: + if 'data' in process and syst != '': continue + h_post = f_tmp.Get(discriminant+syst) + h_dR = TH1D('h_'+recoMode+'_RecoAddbJetDeltaR_Ch2_S3_'+process+syst,'',nbinsDR, array('d', widthDR)) + h_dR.SetXTitle('#DeltaR_{b#bar{b}}') + h_dR.SetYTitle('Entries') + h_dR.Sumw2() + h_M = TH1D('h_'+recoMode+'_RecoAddbJetInvMass_Ch2_S3_'+process+syst,'',nbinsM, array('d', widthM)) + h_M.SetXTitle('M_{b#bar{b}}(GeV)') + h_M.SetYTitle('Entries') + h_M.Sumw2() + + for ibin in range(1,nbinsDR+1): + value = 0.0 + sqrEr = 0.0 + for jbin in range(nbinsM): + value += h_post.GetBinContent(1+(ibin-1)*8+jbin) + sqrEr += pow(h_post.GetBinError(1+(ibin-1)*8+jbin),2) + h_dR.SetBinContent(ibin, value) + h_dR.SetBinError(ibin, math.sqrt(sqrEr)) + + for ibin in range(1,nbinsM+1): + value = 0.0 + sqrEr = 0.0 + for jbin in range(nbinsDR): + value += h_post.GetBinContent(ibin+jbin*8) + sqrEr += pow(h_post.GetBinError(ibin+jbin*8),2) + h_M.SetBinContent(ibin, value) + h_M.SetBinError(ibin, math.sqrt(sqrEr)) + + f_out.cd() + h_dR.Write() + h_M.Write() + f_tmp.Close() + + f_out.Close() + print 'Postfit distributions are saved successfully in '+str(outputDir) + +def extractMatrix(*args): + print 'Merge response matrix and MC input' + inputDir = args[0] + outputDir = args[1] + year = int(args[2]) + ttbb = args[3] + matrix = args[4] + recoMode = args[5] + genMode = args[6] + + if year == 16 or year == 2016: lumi = 35922 + if year == 17 or year == 2017: lumi = 41529 + if year == 18 or year == 2018: lumi = 59693 + with open('samples/xsec'+str(year)+'.txt', 'r') as f: + while True: + line = f.readline() + if not line: break + tmp = line.split(' ') + if ttbb in line: + ttbbXsec = float(tmp[1]) + if matrix in line: + preXsec = float(tmp[1]) + with open('samples/genevt'+str(year)+'.txt', 'r') as f: + while True: + line = f.readline() + if not line: break + tmp = line.split(' ') + if ttbb in line: + ttbbGenEvts = float(tmp[1]) + if matrix in line: + preGenEvts = float(tmp[1]) + + f_gen = TFile.Open(inputDir+'/hist_gen.root') + f_ttbb = TFile.Open(inputDir+'/hist_'+ttbb+'.root') + print inputDir+'/hist_'+ttbb+'.root' + f_postfit = TFile.Open(outputDir+'/hist_input.root') + f_matrix = TFile.Open(inputDir+'/hist_'+matrix+'.root') + + f_out = TFile.Open(outputDir+'/hist_matrix.root', 'recreate') + f_out.cd() + + variables = ['DeltaR', 'InvMass'] + systList = ['', + '__swup', '__swdown', '__psup', '__psdown', + '__tuneup', '__tunedown', '__hdampup', '__hdampdown', + '__pdfup', '__pdfdown', + '__jerup', '__jerdown', '__jecup', '__jecdown', + '__mutrgup', '__mutrgdown', + '__eltrgup', '__eltrgdown', + '__lfup', '__lfdown', '__hfup', '__hfdown', + '__hfstat1up','__hfstat1down', '__hfstat2up', '__hfstat2down', + '__lfstat1up','__lfstat1down', '__lfstat2up', '__lfstat2down', + '__cferr1up', '__cferr1down', '__cferr2up', '__cferr2down', + '__puup', '__pudown' + ] + if year == 16 or year == 2016: + systList.extend(['__musfup','__musfdown','__elsfup','__elsfdown']) + else: + systList.extend(['__muidup','__muiddown','__muisoup','__muisodown', + '__elidup','__eliddown','__elrecoup','__elrecodown', + '__elzvtxup','__elzvtxdown']) + if year == 17 or year == 2017: + systList.extend(['__prefireup','__prefiredown']) + + for vari in variables: + h_prefit = f_matrix.Get('h_'+recoMode+'_RecoAddbJet'+vari+'_Ch2_S3') + h_prefit.Scale(lumi*preXsec/preGenEvts) + + h_postfit = f_postfit.Get('h_'+recoMode+'_RecoAddbJet'+vari+'_Ch2_S3_ttbb') + + h_full = f_gen.Get('h_'+genMode+'_GenAddbJet'+vari+'_Ch2_nosel') + h_full.Scale(lumi*preXsec/preGenEvts) + if ttbb != matrix: + h_mc = f_ttbb.Get('h_'+recoMode+'_RecoAddbJet'+vari+'_Ch2_S3') + h_mc.Scale(lumi*ttbbXsec/ttbbGenEvts) + h_gen = f_ttbb.Get('h_'+genMode+'_GenAddbJet'+vari+'_Ch2_S3') + h_gen.Scale(lumi*ttbbXsec/ttbbGenEvts) + else: + h_mc = f_ttbb.Get('h_'+recoMode+'_RecoAddbJet'+vari+'2_Ch2_S3') + h_mc.Scale(lumi*ttbbXsec/ttbbGenEvts) + h_gen = f_ttbb.Get('h_'+genMode+'_GenAddbJet'+vari+'2_Ch2_S3') + h_gen.Scale(lumi*ttbbXsec/ttbbGenEvts) + h_gen.SetName('h_'+genMode+'_GenAddbJet'+vari+'_Ch2_S3') + + h_ratio = h_postfit.Clone() + h_ratio.Divide(h_prefit) + + h_mc.SetName(h_postfit.GetName()+'_closure') + h_prefit.SetName(h_prefit.GetName()+'_prefit') + h_postfit.SetName(h_postfit.GetName()+'_postfit') + h_ratio.SetName(h_ratio.GetName()+'_fitRatio') + + for syst in systList: + if ttbb != matrix: + h2_mat_prefit = f_matrix.Get('h_'+genMode+'_ResponseMatrix'+vari+'_Ch2_S3'+syst) + else: + h2_mat_prefit = f_matrix.Get('h_'+genMode+'_ResponseMatrix'+vari+'2_Ch2_S3'+syst) + + h2_mat_postfit = h2_mat_prefit.Clone() + for iybin in range(1,h2_mat_prefit.GetNbinsY()+1): + for ixbin in range(1,h2_mat_prefit.GetNbinsX()+1): + value = h2_mat_prefit.GetBinContent(ixbin, iybin)*h_ratio.GetBinContent(ixbin) + error = h2_mat_prefit.GetBinError(ixbin, iybin)*h_ratio.GetBinContent(ixbin) + h2_mat_postfit.SetBinContent(ixbin, iybin, value) + h2_mat_postfit.SetBinError(ixbin, iybin, error) + + h2_mat_prefit.SetName('h_'+genMode+'_ResponseMatrix'+vari+'_Ch2_S3_prefit'+syst) + h2_mat_postfit.SetName('h_'+genMode+'_ResponseMatrix'+vari+'_Ch2_S3_postfit'+syst) + + h2_mat_prefit.Write() + h2_mat_postfit.Write() + + h_gen.Write() + h_full.Write() + h_ratio.Write() + h_mc.Write() + h_prefit.Write() + h_postfit.Write() + + f_gen.Close() + f_ttbb.Close() + f_postfit.Close() + f_matrix.Close() + f_out.Close() + + print 'Response matrix and MC input are saved successfully in '+str(outputDir) + +def unfoldPreProcess(**kwargs): + prefitDir = kwargs['prefitDir'] + postfitDir = kwargs['postfitDir'] + outputDir = kwargs['outputDir'] + discriminant = kwargs['discriminant'] + group = kwargs['group'] + year = float(kwargs['year']) + ttbb = kwargs['ttbb'] + matrix = kwargs['matrix'] + recoMode = kwargs['recoMode'] + genMode = kwargs['genMode'] + + makeInputHists(postfitDir, outputDir, discriminant, group, recoMode) + extractMatrix(prefitDir, outputDir, year, ttbb, matrix, recoMode, genMode) diff --git a/python/var.py b/python/var.py new file mode 100644 index 0000000..5eda481 --- /dev/null +++ b/python/var.py @@ -0,0 +1,2 @@ +BASE_PATH_ = "/home/seohyun/work/ttbb/ttbbRun2/" +CONFIGS_ = {} diff --git a/runAnalysis.py b/runAnalysis.py index 8193ff7..386ebf7 100755 --- a/runAnalysis.py +++ b/runAnalysis.py @@ -1,16 +1,12 @@ #!/usr/bin/python import os import sys -import time -from datetime import datetime - -import multiprocessing as mp +import subprocess import argparse -from ROOT import TChain, TProof, TFile, TH1D, TH1F, TCanvas - -import macro.getSampleList -import macro.getQCD +import python.storeSampleInfo +import python.getQCD +import python.runTSelector def str2bool(v): if v.lower() in ('yes', 'true', 't', 'y', '1', 'True'): @@ -20,68 +16,18 @@ def str2bool(v): else: raise argparse.ArgumentTypeError('Boolean value expected') -def runAna(year, dir, file, name, isQCD=False, onProof=False): - # tmp: /data/users/seohyun/ntuple/Run2016/v808/nosplit/Nosys_Compile/TTLJ_PowhegPythia_ttbbFilter_ttbb - # process: Run2016/TTLJ_PowhegPythia_ttbb__jecup/TTLJ_PowhegPythia_ttbb - tmp = dir+'/'+str(name)+'/'+file[:-5] - tmp = tmp.split('/') - process = str(tmp[5])+'/'+str(tmp[-2])+'/'+str(tmp[-1]) - - print("Begin Process "+str(os.getpid())+": "+str(process)) - - outdir = 'output/root'+str(year) - if 'Tree' in file: - outdir += '/'+name - try: - os.makedirs(outdir) - except OSError: - print(outdir+": already exists") - - if isQCD: - chain = TChain("ttbbLepJetsQCD/tree", "events") - else: - chain = TChain("ttbbLepJets/tree","events") - - chain.Add(dir+"/"+file) - if onProof: - chain.SetProof() - chain.Process("macro/MyAnalysis.C+", process) - - f = TFile(dir+"/"+file,"read") - - ## save Event Summary histogram ## - if 'Tree' in process: - out = TFile(outdir+'/hist_'+file, 'update') - else: - out = TFile(outdir+'/hist_'+name+'.root', 'update') - - hevt = f.Get("ttbbLepJets/EventInfo") - hsw = f.Get("ttbbLepJets/ScaleWeights") - hpdf = f.Get("ttbbLepJets/PDFWeights") - hevt.Write() - if not hpdf == None: hpdf.Write() - if not hsw == None: hsw.Write() - out.Write() - out.Close() - - print("End Process "+str(os.getpid())+": "+str(process)) - if __name__ == '__main__': - start_time = time.time() - parser = argparse.ArgumentParser(description='Analyze ntuples') - parser.add_argument('-t', '--test', required=False, type=str2bool, default=False, help='Run test sample') parser.add_argument('-y', '--year', required=False, type=int, default=9999, help='Run special year') + parser.add_argument('-t', '--test', required=False, type=str2bool, default=False, help='Run test sample') parser.add_argument('-q', '--qcd', required=False, type=str2bool, default=False, help='QCD estimation') - parser.add_argument('-d', '--dataset', required=False, type=str, default='all', help='Option: all, data, ttbar, other. run splited dataset') args = parser.parse_args() run16 = False run17 = False run18 = False - dataset = "all" if args.year == 16 or args.year == 2016: run16 = True if args.year == 17 or args.year == 2017: run17 = True @@ -91,9 +37,8 @@ def runAna(year, dir, file, name, isQCD=False, onProof=False): run17 = True run18 = True - dataset = args.dataset - - macro.getSampleList.getSampleList(os.getcwd()+'/samples') + #python.storeSampleInfo.storeSampleList(os.getcwd()+'/samples') + #python.storeSampleInfo.storeNumberOfEvents(os.getcwd()+'/samples') for year in range(16,19): if year == 16 and run16 == False: continue @@ -107,8 +52,7 @@ def runAna(year, dir, file, name, isQCD=False, onProof=False): line = f.readline() if not line: break if n == 1: - inputDir_nosplit = line[:-1] - inputDir = line[:-8]+'split/' + inputDir = line[:-1] else: samples.append(line[:-1]) n += 1 @@ -120,136 +64,69 @@ def runAna(year, dir, file, name, isQCD=False, onProof=False): if not line: break data.append(line[:-1]) - if args.qcd: - samples.append("DataSingleMu") - samples.append("DataSingleEG") - else: - samples += data + samples += data - #Compiling TSelector - if dataset == 'data' or dataset == 'all': - runAna(year, inputDir_nosplit, "TTLJ_PowhegPythia_ttbb.root", "Nosys_Compile", False, False) + #Compile TSelector + python.runTSelector.runAna(year, inputDir+"/TTLJ_PowhegPythia_ttbb", "Tree_ttbbLepJets_000.root", "Nosys_Compile", "False") if args.test: - for sample in samples: - procs = [] - for item in os.listdir(inputDir+sample): - proc = mp.Process(target=runAna, args=(year, inputDir+sample, item, 'Nosys_'+sample)) - procs.append(proc) - proc.start() - for proc in procs: - proc.join() - - outdir = 'output/root'+str(year)+'_test' - if os.path.exists(outdir): - os.system('mv '+outdir+' '+outdir+'_'+str(datetime.today().strftime("%Y%m%d"))) - os.system('mv output/root'+str(year)+' '+outdir) + python.runTSelector.runAna(year, inputDir+'/TTLJ_PowhegPythia_ttbb', 'Tree_ttbbLepJets_000.root', 'Test_ttbb', 'False') + #testDataset = ['TTLJ_PowhegPythia_ttbb', 'TTLJ_PowhegPythiaCP5_ttbb', 'ttWToLNu_aMCatNLOMadspinPythia', 'TTLL_PowhegPythiaTuneCP5_ttbkg', 'TT_PowhegPythiaBkg_SYS_ISRDown'] + #for sample in testDataset: + #cmd = ['sbatch','job_slurm.sh', str(year), inputDir+'/'+sample, 'Tree_ttbbLepJets_000.root', sample, 'False'] + #subprocess.call(cmd) + #for item in os.listdir(inputDir+'/'+sample): + # cmd = ['sbatch','job_slurm.sh', str(year), inputDir+'/'+sample, item, sample, 'False'] + # subprocess.call(cmd) + #jetsyst = ['jerup','jerdown','jecup','jecdown'] + #for syst in jetsyst: + # for item in os.listdir(inputDir+'/'+sample): + # cmd = ['sbatch','job_slurm.sh',str(year),inputDir+'/'+sample,item,sample+'__'+syst,'False'] + # subprocess.call(cmd) elif args.qcd: - p = TProof.Open("", "workers=8") - for sample in samples: - runAna(year, inputDir, str(sample)+".root", "dataDriven_"+str(sample)) - - outdir = 'output/root'+str(year)+'_qcd' - if os.path.exists(outdir): - os.system('mv '+outdir+' '+outdir+'_backup_'+str(datetime.today().strftime("%Y%m%d"))) - os.system('mv output/root'+str(year)+' '+outdir) - - macro.getQCD.getQCDShape(os.getcwd(), year, samples) + for item in os.listdir(inputDir+'/'+sample): + cmd = ['sbatch','job_slurm.sh',str(year),inputDir+'/'+sample,item,'Nosys_'+sample,'False'] + subprocess.call(cmd) + cmd = ['sbatch','job_slurm.sh',str(year),inputDir+'/'+sample,item,'dataDriven_'+sample,'True'] + subprocess.call(cmd) + cmd = ['sbatch','job_slurm.sh',str(year),inputDir+'/'+sample,item,'dataDriven_'+sample+'__qcdisoup','True'] + subprocess.call(cmd) + cmd = ['sbatch','job_slurm.sh',str(year),inputDir+'/'+sample,item,'dataDriven_'+sample+'__qcdisodown','True'] + subprocess.call(cmd) + #python.getQCD.getQCDShape(os.getcwd(), year, samples) else: for sample in samples: - run = False - if dataset == "data": - if any(i in sample for i in ['Data', 'ttLF']): - run = True - elif dataset == "ttbar": - if 'TT' in sample: - if not any(i in sample for i in ['ttother', 'ttLF']): - run = True - elif dataset == "other": - if not any(i in sample for i in ['Data', 'TT']): - run = True - elif 'ttother' in sample: - run = True - else: - print("There is no such dataset") - break - - if not run: continue - - procs = [] - for item in os.listdir(inputDir+sample): - proc = mp.Process(target=runAna, args=(year, inputDir+sample, item, sample)) - procs.append(proc) - proc.start() - for proc in procs: - proc.join() - - if dataset == 'data' or dataset == 'all': - p = TProof.Open("", "workers=8") - - for sample in samples: - if not "QCD" in sample and not "Data" in sample: - runAna(year, inputDir_nosplit, str(sample)+".root", str(sample)+"__jerup", False, True) - runAna(year, inputDir_nosplit, str(sample)+".root", str(sample)+"__jerdown", False, True) - runAna(year, inputDir_nosplit, str(sample)+".root", str(sample)+"__jecup", False, True) - runAna(year, inputDir_nosplit, str(sample)+".root", str(sample)+"__jecdown", False, True) - - # hdamp, Tune - if not year == 16: - tmp_dic = {"TuneCP5Up":"tuneup", "TuneCP5Down":"tunedown", "hdampUp":"hdampup", "hdampDown":"hdampdown"} - for key, value in tmp_dic.items(): - runAna(year, inputDir_nosplit, "TTLJ_PowhegPythia_SYS_"+key+"_ttbb.root", "TTLJ_PowhegPythia_ttbb__"+value, False, True) - runAna(year, inputDir_nosplit, "TTLJ_PowhegPythia_SYS_"+key+"_ttbj.root", "TTLJ_PowhegPythia_ttbj__"+value, False, True) - runAna(year, inputDir_nosplit, "TTLJ_PowhegPythia_SYS_"+key+"_ttcc.root", "TTLJ_PowhegPythia_ttcc__"+value, False, True) - runAna(year, inputDir_nosplit, "TTLJ_PowhegPythia_SYS_"+key+"_ttLF.root", "TTLJ_PowhegPythia_ttLF__"+value, False, True) - runAna(year, inputDir_nosplit, "TTLJ_PowhegPythia_SYS_"+key+"_ttother.root", "TTLJ_PowhegPythia_ttother__"+value, False, True) - runAna(year, inputDir_nosplit, "TTJJ_PowhegPythiaBkg_SYS_"+key+".root", "TTJJ_PowhegPythiaBkg__"+value, False, True) - runAna(year, inputDir_nosplit, "TTLJ_PowhegPythiaBkg_SYS_"+key+".root", "TTLJ_PowhegPythiaBkg__"+value, False, True) - runAna(year, inputDir_nosplit, "TTLL_PowhegPythiaBkg_SYS_"+key+".root", "TTLL_PowhegPythiaBkg__"+value, False, True) + for item in os.listdir(inputDir+'/'+sample): + cmd = ['sbatch','job_slurm.sh',str(year),inputDir+'/'+sample,item,sample,'False'] + subprocess.call(cmd) + + for sample in samples: + if "QCD" in sample or "Data" in sample: continue + jetsyst = ['jerup','jerdown','jecup','jecdown'] + for syst in jetsyst: + for item in os.listdir(inputDir+'/'+sample): + cmd = ['sbatch','job_slurm.sh',str(year),inputDir+'/'+sample,item,sample+'__'+syst,'False'] + subprocess.call(cmd) + + extSystematics = [] + with open('samples/systematic'+str(year)+'.txt', 'r') as f: + while True: + line = f.readline() + if not line: break + extSystematics.append(line[:-1]) + + for syst in extSystematics: + tmp = syst.split('_') + if 'Bkg' in syst: + outName = tmp[0]+'_'+tmp[1]+'__'+tmp[-1].lower() else: - tmp_dic = {"TuneUp":"tuneup", "TuneDown":"tunedown", "hdampUp":"hdampup", "hdampDown":"hdampdown"} - for key, value in tmp_dic.items(): - if "tune" in value: tmp_name = "TT_PowhegPythia" - else: tmp_name = "TTLJ_PowhegPythia" - runAna(year, inputDir_nosplit, tmp_name+"_SYS_"+key+"_ttbb.root", tmp_name+"_ttbb__"+value, False, True) - runAna(year, inputDir_nosplit, tmp_name+"_SYS_"+key+"_ttbj.root", tmp_name+"_ttbj__"+value, False, True) - runAna(year, inputDir_nosplit, tmp_name+"_SYS_"+key+"_ttcc.root", tmp_name+"_ttcc__"+value, False, True) - runAna(year, inputDir_nosplit, tmp_name+"_SYS_"+key+"_ttLF.root", tmp_name+"_ttLF__"+value, False, True) - runAna(year, inputDir_nosplit, tmp_name+"_SYS_"+key+"_ttother.root", tmp_name+"_ttother__"+value, False, True) - if not "hdamp" in value: - runAna(year, inputDir_nosplit, "TT_PowhegPythiaBkg_SYS_"+key+".root", "TT_PowhegPythiaBkg__"+value, False, True) - - # 2016 only (Isr, Fsr) - if year == 16: - tmp_name = "TT_PowhegPythia_" - tmp_name2 = "TT_PowhegPythiaBkg_" - runAna(year, inputDir_nosplit, tmp_name+"SYS_ISRup_ttbb.root", tmp_name+"ttbb__isrup", False, True) - runAna(year, inputDir_nosplit, tmp_name+"SYS_ISRup_ttbj.root", tmp_name+"ttbj__isrup", False, True) - runAna(year, inputDir_nosplit, tmp_name+"SYS_ISRup_ttcc.root", tmp_name+"ttcc__isrup", False, True) - runAna(year, inputDir_nosplit, tmp_name+"SYS_ISRup_ttLF.root", tmp_name+"ttLF__isrup", False, True) - runAna(year, inputDir_nosplit, tmp_name+"SYS_ISRup_ttother.root", tmp_name+"ttother__isrup", False, True) - runAna(year, inputDir_nosplit, tmp_name+"SYS_ISRdown_ttbb.root", tmp_name+"ttbb__isrdown", False, True) - runAna(year, inputDir_nosplit, tmp_name+"SYS_ISRdown_ttbj.root", tmp_name+"ttbj__isrdown", False, True) - runAna(year, inputDir_nosplit, tmp_name+"SYS_ISRdown_ttcc.root", tmp_name+"ttcc__isrdown", False, True) - runAna(year, inputDir_nosplit, tmp_name+"SYS_ISRdown_ttLF.root", tmp_name+"ttLF__isrdown", False, True) - runAna(year, inputDir_nosplit, tmp_name+"SYS_ISRdown_ttother.root", tmp_name+"ttother__isrdown", False, True) - - runAna(year, inputDir_nosplit, tmp_name+"SYS_FSRup_ttbb.root", tmp_name+"ttbb__fsrup", False, True) - runAna(year, inputDir_nosplit, tmp_name+"SYS_FSRup_ttbj.root", tmp_name+"ttbj__fsrup", False, True) - runAna(year, inputDir_nosplit, tmp_name+"SYS_FSRup_ttcc.root", tmp_name+"ttcc__fsrup", False, True) - runAna(year, inputDir_nosplit, tmp_name+"SYS_FSRup_ttLF.root", tmp_name+"ttLF__fsrup", False, True) - runAna(year, inputDir_nosplit, tmp_name+"SYS_FSRup_ttother.root", tmp_name+"ttother__fsrup", False, True) - runAna(year, inputDir_nosplit, tmp_name+"SYS_FSRdown_ttbb.root", tmp_name+"ttbb__fsrdown", False, True) - runAna(year, inputDir_nosplit, tmp_name+"SYS_FSRdown_ttbj.root", tmp_name+"ttbj__fsrdown", False, True) - runAna(year, inputDir_nosplit, tmp_name+"SYS_FSRdown_ttcc.root", tmp_name+"ttcc__fsrdown", False, True) - runAna(year, inputDir_nosplit, tmp_name+"SYS_FSRdown_ttLF.root", tmp_name+"ttLF__fsrdown", False, True) - runAna(year, inputDir_nosplit, tmp_name+"SYS_FSRdown_ttother.root", tmp_name+"ttother__fsrdown", False, True) - runAna(year, inputDir_nosplit, tmp_name2+"SYS_ISRup.root", tmp_name2+"_isrup", False, True) - runAna(year, inputDir_nosplit, tmp_name2+"SYS_ISRdown.root", tmp_name2+"_isrdown", False, True) - runAna(year, inputDir_nosplit, tmp_name2+"SYS_FSRup.root", tmp_name2+"_fsrup", False, True) - runAna(year, inputDir_nosplit, tmp_name2+"SYS_FSRdown.root", tmp_name2+"_fsrdown", False, True) - - p.Close() - print("Total running time: %s" %(time.time() - start_time)) + outName = tmp[0]+'_'+tmp[1]+'_'+tmp[-1]+'__'+tmp[-2].lower() + if 'tunecuetp8m4' in outName: + outName = outName.replace('tunecuetp8m4','tune') + if 'tunecp5' in outName: + outName = outName.replace('tunecp5', 'tune') + for item in os.listdir(inputDir+'/'+syst): + cmd = ['sbatch','job_slurm.sh',str(year),inputDir+'/'+syst,item,outName,'False'] + subprocess.call(cmd) diff --git a/runPostProcess.py b/runPostProcess.py index 91fec86..45c26f2 100644 --- a/runPostProcess.py +++ b/runPostProcess.py @@ -2,7 +2,6 @@ import sys import glob import time -from datetime import datetime import multiprocessing as mp import subprocess @@ -10,13 +9,21 @@ from ROOT import * -import macro.postProcess as pp +import python.getQCD as gq +import python.postProcess as pp + +def str2bool(v): + if v.lower() in ('yes', 'true', 't', 'y', '1', 'True'): + return True + elif v.lower() in ('no', 'false', 'f', 'n', '0', 'False'): + return False + else: + raise argparse.ArgumentTypeError('Boolean value expected') def mergeHist(input_dir): tmp = input_dir.split('/') - output_dir = tmp[0]+'/'+tmp[1] + output_dir = '/'.join(tmp[:-1]) input_sample = tmp[-1] - root_list = glob.glob(input_dir+'/*') cmd = ['hadd', str(output_dir)+'/hist_'+str(input_sample)+'.root']+glob.glob(input_dir+'/*') subprocess.call(cmd) @@ -25,83 +32,95 @@ def runGentree(year): ntuple_loc = f_txt.readline()[:-1] f_txt.close() cmd = ['root', '-l', '-b', '-q', - 'macro/runGentree.C("'+str(ntuple_loc)+'", "'+str(os.getcwd())+"/output/root"+str(year)+'")'] + 'macro/runGentree.C("'+str(ntuple_loc)+'", "'+str(os.getcwd())+"/output/root"+str(year)+'/post")'] subprocess.call(cmd) -def str2bool(v): - if v.lower() in ('yes', 'true', 't', 'y', '1', 'True'): - return True - elif v.lower() in ('no', 'false', 'f', 'n', '0', 'False'): - return False - else: - raise argparse.ArgumentTypeError('Boolean value expected') - if __name__ == '__main__': start_time = time.time() parser = argparse.ArgumentParser(description='Run post process') parser.add_argument('-y', '--year', required=False, type=int, default=9999, help='Run special year') - parser.add_argument('-m', '--merge', required=False, type=str2bool, default=True, help='Merge histograms') - parser.add_argument('-p', '--post', required=False, type=str2bool, default=True, help='Run post process') - parser.add_argument('-g', '--gen', required=False, type=str2bool, default=True, help='Run gen tree') + parser.add_argument('-m', '--merge', required=False, type=str2bool, default=False, help='Merge histograms') + parser.add_argument('-q', '--qcd', required=False, type=str2bool, default=False, help='Get QCD shapes') + parser.add_argument('-d', '--dnn', required=False, type=str2bool, default=False, help='Get QCD shapes') args = parser.parse_args() + year = args.year + input_dir = os.getcwd()+'/output/root'+str(year) + if args.qcd: input_dir = os.getcwd()+'/output/root'+str(year)+'_qcd' + if args.dnn: input_dir = os.getcwd()+'/output/dnn'+str(year) + + if args.merge: + print "Merge histogram root files" + procs = [] + dir_list = filter(os.path.isdir, glob.glob(input_dir+'/*')) + for item in dir_list: + proc = mp.Process(target=mergeHist, args=(item,)) + procs.append(proc) + proc.start() + for proc in procs: + proc.join() + + for item in os.listdir(input_dir): + if os.path.isdir(input_dir+'/'+item): + os.system('rm -rf '+input_dir+'/'+item) + + if args.qcd: + listKind = ['Nosys', 'dataDriven'] + for kind in listKind: + for lep in ['Mu','EG']: + name = input_dir+'/hist_'+kind+'_DataSingle'+lep + cmd = ['hadd', name+'.root']+glob.glob(name+'?.root') + subprocess.call(cmd) + if kind != 'dataDriven': continue + listSyst = ['__qcdisoup', '__qcdisodown'] + for syst in listSyst: + name = input_dir+'/hist_'+kind+'_DataSingle'+lep + cmd = ['hadd', name+syst+'.root']+glob.glob(name+'*'+syst+'*') + subprocess.call(cmd) + else: + for lep in ['Mu','EG']: + cmd = ['hadd', input_dir+'/hist_DataSingle'+lep+'.root']+glob.glob(input_dir+'/hist_DataSingle'+lep+'*') + subprocess.call(cmd) + + + post_path = os.getcwd()+'/output/root'+str(year) + if args.dnn and os.path.exists(post_path): + for sample in os.listdir(input_dir): + tmp_dir = os.getcwd()+'/output/merge'+str(year) + if not os.path.exists(tmp_dir): + os.makedirs(tmp_dir) + cmd = ['hadd', tmp_dir+'/'+sample, post_path+'/'+sample, input_dir+'/'+sample] + subprocess.call(cmd) + + exit(0) + + if args.qcd: + gq.getQCDShape(os.getcwd(), year) - run16 = False - run17 = False - run18 = False - - if args.year == 16 or args.year == 2016: - run16 = True - elif args.year == 17 or args.year == 2017: - run17 = True - elif args.year == 18 or args.year == 2018: - run18 = True else: - run16 = True - run17 = True - run18 = True - - for year in range(16,19): - if year == 16 and run16 == False: continue - if year == 17 and run17 == False: continue - if year == 18 and run18 == False: continue - - input_dir = 'output/root'+str(year) - os.system('rm -rf '+input_dir+'/hist_Nosys_Compile.root') - - if args.merge: - print("Merge histogram root files") - procs = [] - dir_list = filter(os.path.isdir, glob.glob('output/root'+str(year)+'/*')) - for item in dir_list: - proc = mp.Process(target=mergeHist, args=(item,)) - procs.append(proc) - proc.start() - for proc in procs: - proc.join() - - for item in os.listdir(input_dir): - if not item.endswith('.root'): - os.system('rm -rf '+item) - - if args.post: - print("Run post process") - procs = [] - for item in os.listdir(input_dir): - if not item.endswith('.root'): - continue - if '__' in item or 'gen' in item: - continue - proc = mp.Process(target=pp.postProcess, args=(os.getcwd(), item, year)) - procs.append(proc) - proc.start() - for proc in procs: - proc.join() - - if args.gen: - print("Run gentree") - runGentree(year) + print("Run gentree") + runGentree(year) + + print("Run post process") + procs = [] + for item in os.listdir(input_dir): + if any(i in item for i in ['__','gen','Data']): continue + if year == 16 and ((not 'CP5' in item) or 'TT_PowhegPythiaBkg' in item): + isCP5 = False + else: + isCP5 = True + isCP5 = True + if not item.endswith('.root'): + continue + proc = mp.Process(target=pp.postProcess, args=(input_dir, item, year, isCP5)) + procs.append(proc) + proc.start() + for proc in procs: + proc.join() + for file in glob.glob(input_dir+'/hist_QCD*'): + cmd = ['cp',file,input_dir+'/post'] + subprocess.call(cmd) print("Total running time: %s" %(time.time() - start_time)) diff --git a/runUnfold.py b/runUnfold.py new file mode 100755 index 0000000..795857e --- /dev/null +++ b/runUnfold.py @@ -0,0 +1,92 @@ +import os +import sys +import time +import argparse +import subprocess + +from ROOT import * +import ROOT + +import python.unfoldPreProcess as upp +import python.drawUnfoldOutput as duo + +def str2bool(v): + if v.lower() in ('yes', 'true', 't', 'y', '1', 'True'): + return True + elif v.lower() in ('no', 'false', 'f', 'n', '0', 'False'): + return False + else: + raise argparse.ArgumentTypeError('Boolean value expected') + +def makeAcceptance(inputDir, outputDir, year, ttbb, genMode): + cmd = ['root', '-l', '-b', '-q', + 'macro/makeAcceptance.C+("'+inputDir+'", "'+outputDir+'", "'+str(year)+'", "'+ttbb+'", "'+genMode+'")'] + with open('output/unfold'+str(year)+'/acceptance.txt','w') as f_out: + subprocess.call(cmd, stdout=f_out) + +def runUnfold(unfoldDir, year, genMode, recoMode, scanLcurve, fixTau): + cmd = ['root', '-l', '-b', '-q', 'macro/ttbbDiffXsec.C+("'+unfoldDir+'", "'+str(year)+'", "'+genMode+'", "'+recoMode+'", '+scanLcurve+', '+fixTau+')'] + with open('output/unfold'+str(year)+'/result.txt','w') as f_out: + subprocess.call(cmd, stdout=f_out) + +if __name__ == '__main__': + start_time = time.time() + + parser = argparse.ArgumentParser(description='Unfolding process') + + parser.add_argument('-d', '--data', required=False, type=str2bool, default=True, help='Input data type') + parser.add_argument('-a', '--acceptance', required=False, type=str2bool, default=False, help='Run acceptance') + parser.add_argument('-u', '--unfold', required=False, type=str2bool, default=True, help='Run unfold') + parser.add_argument('-y', '--year', required=False, type=int, default=9999, help='Run special year') + parser.add_argument('-f', '--fixtau', required=False, type=str, default='false', help='Fix tau') + parser.add_argument('-l', '--scanLcurve', required=False, type=str, default='true', help='Fix tau') + + args = parser.parse_args() + + run16 = False + run17 = False + run18 = False + if args.year > 2018: + run16 = True + run17 = True + run18 = True + elif args.year == 16 or args.year == 2016: + run16 = True + elif args.year == 17 or args.year == 2017: + run17 = True + elif args.year == 18 or args.year == 2018: + run18 = True + + for year in range(16,19): + if year == 16 and run16 == False: continue + if year == 17 and run17 == False: continue + if year == 18 and run18 == False: continue + + + argDict = {'year':args.year} + group = [] + with open('./samples/unfold'+str(year)+'.txt','r') as f: + while True: + line = f.readline() + if not line: break + line = line.replace('\n', '') + tmp = line.split(' ') + if len(tmp) < 3: + argDict[tmp[0]] = tmp[1] + else: + group = tmp[1:] + + argDict['group'] = group + fixTau = (args.fixtau).lower() + scanLcurve = (args.scanLcurve).lower() + if not os.path.exists(argDict['outputDir']): + os.makedirs(argDict['outputDir']) + + lumi = {16:35922, 17:41529, 18:59693} + + upp.unfoldPreProcess(**argDict) + makeAcceptance(argDict['prefitDir'], argDict['outputDir'], year, argDict['matrix'], argDict['genMode']) + runUnfold(argDict['outputDir'], year, argDict['genMode'], argDict['recoMode'], scanLcurve, fixTau) + duo.drawHist(argDict['outputDir'], lumi[year], 'hist_accept.root', argDict['recoMode'], argDict['genMode']) + duo.drawHist(argDict['outputDir'], lumi[year], 'hist_output.root', argDict['recoMode'], argDict['genMode']) + duo.drawTable(year, argDict['outputDir'], lumi[year], 'hist_output.root', argDict['recoMode'], argDict['genMode']) diff --git a/samples/data16.txt b/samples/data16.txt new file mode 100644 index 0000000..3d9db96 --- /dev/null +++ b/samples/data16.txt @@ -0,0 +1,14 @@ +DataSingleEGB +DataSingleEGC +DataSingleEGD +DataSingleEGE +DataSingleEGF +DataSingleEGG +DataSingleEGH +DataSingleMuB +DataSingleMuC +DataSingleMuD +DataSingleMuE +DataSingleMuF +DataSingleMuG +DataSingleMuH diff --git a/samples/data17.txt b/samples/data17.txt new file mode 100644 index 0000000..bf22837 --- /dev/null +++ b/samples/data17.txt @@ -0,0 +1,10 @@ +DataSingleEGB +DataSingleEGC +DataSingleEGD +DataSingleEGE +DataSingleEGF +DataSingleMuC +DataSingleMuD +DataSingleMuE +DataSingleMuF +DataSingleMuB diff --git a/samples/data18.txt b/samples/data18.txt new file mode 100644 index 0000000..bb77255 --- /dev/null +++ b/samples/data18.txt @@ -0,0 +1,8 @@ +DataSingleEGA +DataSingleEGB +DataSingleEGC +DataSingleEGD +DataSingleMuA +DataSingleMuB +DataSingleMuC +DataSingleMuD diff --git a/samples/genevt16.txt b/samples/genevt16.txt index 2a3f308..03a7a4c 100644 --- a/samples/genevt16.txt +++ b/samples/genevt16.txt @@ -1,38 +1,79 @@ -TTLJ_PowhegPythia_ttbb 152627564.0 -TTLJ_PowhegPythia_ttother 152627564.0 -TTLJ_PowhegPythia_ttbbFilter_ttbb 19072787.0 -QCD_Pt-300toInf_EMEnriched 7373633.0 -SingleTop_t_Powheg 67240808.0 -SingleTop_tW_Powheg 6952830.0 -SingleTbar_tW_Powheg 6933094.0 -QCD_Pt-120to170_EMEnriched 35817281.0 -QCD_Pt-170to300_EMEnriched 11540163.0 -QCD_Pt-20to30_MuEnriched 31475157.0 -TTLJ_PowhegPythia_ttLF 152627564.0 -TTLJ_PowhegPythia_ttbj 152627564.0 -QCD_Pt-120to170_MuEnriched 11938140.0 -QCD_Pt-170to300_MuEnriched 7947159.0 -QCD_Pt-300to470_MuEnriched 16452588.0 -TTLJ_PowhegPythia_ttcc 152627564.0 -QCD_Pt-1000toInf_MuEnriched 9609821.0 -QCD_Pt-15to20_MuEnriched 4141251.0 -QCD_Pt-20to30_EMEnriched 9218954.0 -QCD_Pt-30to50_EMEnriched 6768384.0 -SingleTbar_t_Powheg 38811017.0 -ZJets_M50_aMCatNLO 81781064.0 -ttHbb_PowhegPythia 3772592.0 -WJets_aMCatNLO 177578225.0 -WW_Pythia 7981136.0 -WZ_Pythia 3995828.0 -ZZ_Pythia 1988098.0 -ZJets_M10to50_aMCatNLO 99831562.0 -ttW_Madgraph 2676676.0 -ttZ_Madgraph 3685785.0 -QCD_Pt-470to600_MuEnriched 5663755.0 -QCD_Pt-50to80_EMEnriched 23474171.0 -QCD_Pt-50to80_MuEnriched 19806915.0 -QCD_Pt-600to800_MuEnriched 5971175.0 -QCD_Pt-800to1000_MuEnriched 5838541.0 -QCD_Pt-80to120_EMEnriched 41853504.0 -QCD_Pt-80to120_MuEnriched 13669116.0 -TT_PowhegPythiaBkg 76837652.0 +TTLJ_PowhegPythia_SYS_hdampDown_ttbb: 29326144.000000 +QCD_Pt-120to170_MuEnriched: 7897731.000000 +QCD_Pt-15to20_MuEnriched: 4141251.000000 +QCD_Pt-170to300_EMEnriched: 11540163.000000 +QCD_Pt-20to30_EMEnriched: 9241500.000000 +QCD_Pt-20to30_MuEnriched: 31878740.000000 +QCD_Pt-300toInf_EMEnriched: 7380341.000000 +TTLJ_PowhegPythia_ttbj: 106736180.000000 +TTLJ_PowhegPythia_ttother: 106736180.000000 +TTJJ_PowhegPythiaBkg_SYS_hdampUp: 28565510.000000 +TTLJ_PowhegPythia_SYS_hdampDown_ttLF: 29326144.000000 +QCD_Pt-50to80_MuEnriched: 19662175.000000 +TTLJ_PowhegPythia_ttLF: 106736180.000000 +TTLJ_PowhegPythia_ttbb: 106736180.000000 +TTLJ_PowhegPythia_ttcc: 106736180.000000 +TTJJ_PowhegPythiaBkg_SYS_hdampDown: 28424480.000000 +TTLJ_PowhegPythiaBkg_SYS_hdampUp: 29537208.000000 +SingleTbar_tW_PowhegPythia: 4942374.000000 +SingleTbar_t_PowhegPythia: 17780700.000000 +SingleTop_s_aMCatNLOPythia: 6137801.000000 +SingleTop_tW_PowhegPythia: 4945734.000000 +SingleTop_t_PowhegPythia: 31848000.000000 +TTJJ_PowhegPythiaBkg: 67963984.000000 +TTJJ_PowhegPythiaBkg_SYS_TuneCP5Down: 27695376.000000 +TTJJ_PowhegPythiaBkg_SYS_TuneCP5Up: 27713380.000000 +TTLJ_PowhegPythiaBkg: 106736180.000000 +TTLJ_PowhegPythiaBkg_SYS_TuneCP5Down: 28718770.000000 +TTLJ_PowhegPythiaBkg_SYS_TuneCP5Up: 29002092.000000 +TTLJ_PowhegPythia_SYS_hdampDown_ttbj: 29326144.000000 +TTLJ_PowhegPythia_SYS_hdampDown_ttcc: 29326144.000000 +TTLJ_PowhegPythia_SYS_hdampDown_ttother: 29326144.000000 +TTLJ_PowhegPythia_SYS_hdampUp_ttLF: 29537208.000000 +TTLJ_PowhegPythia_SYS_hdampUp_ttbb: 29537208.000000 +TTLJ_PowhegPythia_SYS_hdampUp_ttbj: 29537208.000000 +TTLJ_PowhegPythia_SYS_hdampUp_ttcc: 29537208.000000 +TTLJ_PowhegPythia_SYS_hdampUp_ttother: 29537208.000000 +TTLL_PowhegPythiaBkg_SYS_hdampDown: 14663032.000000 +TTLL_PowhegPythiaBkg_SYS_hdampUp: 14821776.000000 +TTLJ_PowhegPythia_SYS_TuneCP5Down_ttLF: 28718770.000000 +TTLJ_PowhegPythia_SYS_TuneCP5Down_ttbb: 28718770.000000 +TTLJ_PowhegPythia_SYS_TuneCP5Down_ttbj: 28718770.000000 +TTLJ_PowhegPythia_SYS_TuneCP5Down_ttcc: 28718770.000000 +TTLJ_PowhegPythia_SYS_TuneCP5Down_ttother: 28718770.000000 +TTLJ_PowhegPythia_SYS_TuneCP5Up_ttLF: 29002092.000000 +TTLJ_PowhegPythia_SYS_TuneCP5Up_ttbb: 29002092.000000 +TTLJ_PowhegPythia_SYS_TuneCP5Up_ttbj: 29002092.000000 +TTLJ_PowhegPythia_SYS_TuneCP5Up_ttcc: 29002092.000000 +TTLJ_PowhegPythia_SYS_TuneCP5Up_ttother: 29002092.000000 +TTLJ_PowhegPythiaBkg_SYS_hdampDown: 29326144.000000 +TTLL_PowhegPythiaBkg: 67312164.000000 +ZZ_Pythia: 1988098.000000 +W1JetsToLNu_MadgraphPythia: 45283121.000000 +ZJets_M50_aMCatNLOPythia: 80478895.000000 +ttHToNonbb_PowhegPythia: 9757039.000000 +ttHTobb_PowhegPythia: 9764780.000000 +ttWToQQ_aMCatNLOMadspinPythia: 430310.000000 +ttZToQQ_aMCatNLOMadspinPythia: 351164.000000 +ttWToLNu_aMCatNLOMadspinPythia: 2716249.000000 +QCD_Pt-50to80_EMEnriched: 45789059.000000 +QCD_Pt-30to50_EMEnriched: 11508842.000000 +QCD_Pt-1000toInf_MuEnriched: 13577827.000000 +W2JetsToLNu_MadgraphPythia: 60438768.000000 +ZJets_M10to50_MadgraphPythia: 78843820.000000 +QCD_Pt-80to120_EMEnriched: 77800204.000000 +TTLL_PowhegPythiaBkg_SYS_TuneCP5Up: 14719314.000000 +QCD_Pt-470to600_MuEnriched: 19489276.000000 +WJetsToLNu_MadgraphPythia: 178695240.000000 +W4JetsToLNu_MadgraphPythia: 29941394.000000 +W3JetsToLNu_MadgraphPythia: 59300029.000000 +QCD_Pt-800to1000_MuEnriched: 19940747.000000 +ttZToLLNuNu_aMCatNLOMadspinPythia: 6420825.000000 +QCD_Pt-80to120_MuEnriched: 23560662.000000 +QCD_Pt-600to800_MuEnriched: 9981311.000000 +QCD_Pt-300to470_MuEnriched: 49005976.000000 +QCD_Pt-170to300_MuEnriched: 17350231.000000 +TTLL_PowhegPythiaBkg_SYS_TuneCP5Down: 14251228.000000 +QCD_Pt-120to170_EMEnriched: 78578415.000000 +WZ_Pythia: 3997571.000000 +WW_Pythia: 7837160.000000 diff --git a/samples/genevt17.txt b/samples/genevt17.txt index eff6337..72f0aaf 100644 --- a/samples/genevt17.txt +++ b/samples/genevt17.txt @@ -1,47 +1,80 @@ -SingleTbar_t_PowhegPythia 3675910.0 -SingleTbar_tW_PowhegPythia 7686032.0 -SingleTop_s_aMCatNLOPythia 6185062.0 -SingleTop_t_PowhegPythia 5982064.0 -SingleTop_tW_PowhegPythia 7884388.0 -ttHTobb_PowhegPythia 7833734.0 -ttHToNonbb_PowhegPythia 7814711.0 -TTJJ_PowhegPythiaBkg 129211204.0 -TTLJ_PowhegPythiaBkg 109124472.0 -TTLJ_PowhegPythia_ttbb 109124472.0 -TTLJ_PowhegPythia_ttbj 109124472.0 -TTLJ_PowhegPythia_ttcc 109124472.0 -TTLJ_PowhegPythia_ttLF 109124472.0 -TTLJ_PowhegPythia_ttother 109124472.0 -TTLL_PowhegPythiaBkg 68595608.0 -ttWToQQ_aMCatNLOMadspinPythia 441560.0 -ttZToLLNuNu_aMCatNLOMadspinPythia 3570720.0 -ttZToQQ_aMCatNLOMadspinPythia 356286.0 -W1JetsToLNu_MadgraphPythia 54106926.0 -W2JetsToLNu_MadgraphPythia 6570442.0 -W3JetsToLNu_MadgraphPythia 19669693.0 -W4JetsToLNu_MadgraphPythia 11074019.0 -WW_Pythia 7791498.0 -WZ_Pythia 3928630.0 -ZJets_M10to50_MadgraphPythia 39489654.0 -ZJets_M50_aMCatNLOPythia 123485957.0 -ZZ_Pythia 1949768.0 -WJetsToLNu_MadgraphPythia 77631180.0 -ttWToLNu_aMCatNLOMadspinPythia 2686141.0 -QCD_Pt-1000toInf_MuEnriched 11596693.0 -QCD_Pt-120to170_EMEnriched 8515107.0 -QCD_Pt-120to170_MuEnriched 20774848.0 -QCD_Pt-15to20_EMEnriched 11215220.0 -QCD_Pt-15to20_MuEnriched 5859904.0 -QCD_Pt-170to300_MuEnriched 46170668.0 -QCD_Pt-20to30_EMEnriched 11212810.0 -QCD_Pt-20to30_MuEnriched 28213684.0 -QCD_Pt-300to470_MuEnriched 17744779.0 -QCD_Pt-300toInf_EMEnriched 2874295.0 -QCD_Pt-30to50_EMEnriched 14766010.0 -QCD_Pt-470to600_MuEnriched 24243589.0 -QCD_Pt-50to80_EMEnriched 10477146.0 -QCD_Pt-50to80_MuEnriched 24068613.0 -QCD_Pt-600to800_MuEnriched 17263676.0 -QCD_Pt-800to1000_MuEnriched 17114527.0 -QCD_Pt-80to120_EMEnriched 9104852.0 -QCD_Pt-80to120_MuEnriched 23248995.0 +QCD_Pt-1000toInf_MuEnriched: 11596693.000000 +QCD_Pt-120to170_EMEnriched: 8515107.000000 +QCD_Pt-120to170_MuEnriched: 20774848.000000 +QCD_Pt-15to20_EMEnriched: 11215220.000000 +QCD_Pt-15to20_MuEnriched: 5859904.000000 +QCD_Pt-170to300_EMEnriched: 3433364.000000 +QCD_Pt-170to300_MuEnriched: 46170668.000000 +QCD_Pt-20to30_EMEnriched: 11212810.000000 +QCD_Pt-20to30_MuEnriched: 28213684.000000 +QCD_Pt-300to470_MuEnriched: 17744779.000000 +QCD_Pt-300toInf_EMEnriched: 2874295.000000 +QCD_Pt-30to50_EMEnriched: 14766010.000000 +QCD_Pt-470to600_MuEnriched: 24243589.000000 +QCD_Pt-50to80_EMEnriched: 10477146.000000 +QCD_Pt-50to80_MuEnriched: 24068613.000000 +QCD_Pt-600to800_MuEnriched: 17263676.000000 +QCD_Pt-800to1000_MuEnriched: 17114527.000000 +QCD_Pt-80to120_EMEnriched: 9104852.000000 +QCD_Pt-80to120_MuEnriched: 23248995.000000 +SingleTbar_tW_PowhegPythia: 7686032.000000 +SingleTbar_t_PowhegPythia: 3675910.000000 +SingleTop_s_aMCatNLOPythia: 6185062.000000 +SingleTop_tW_PowhegPythia: 7884388.000000 +SingleTop_t_PowhegPythia: 5982064.000000 +TTJJ_PowhegPythiaBkg: 129211204.000000 +TTJJ_PowhegPythiaBkg_SYS_TuneCP5Down: 27032802.000000 +TTJJ_PowhegPythiaBkg_SYS_TuneCP5Up: 26889896.000000 +TTJJ_PowhegPythiaBkg_SYS_hdampDown: 26671068.000000 +TTJJ_PowhegPythiaBkg_SYS_hdampUp: 27137584.000000 +TTLJ_PowhegPythiaBkg: 109124472.000000 +TTLJ_PowhegPythiaBkg_SYS_TuneCP5Down: 26886117.000000 +TTLJ_PowhegPythiaBkg_SYS_TuneCP5Up: 19959204.000000 +TTLJ_PowhegPythiaBkg_SYS_hdampDown: 25931989.000000 +TTLJ_PowhegPythiaBkg_SYS_hdampUp: 23868910.000000 +TTLJ_PowhegPythia_SYS_TuneCP5Down_ttLF: 26886117.000000 +TTLJ_PowhegPythia_SYS_TuneCP5Down_ttbb: 26886117.000000 +TTLJ_PowhegPythia_SYS_TuneCP5Down_ttbj: 26886117.000000 +TTLJ_PowhegPythia_SYS_TuneCP5Down_ttcc: 26886117.000000 +TTLJ_PowhegPythia_SYS_TuneCP5Down_ttother: 26886117.000000 +TTLJ_PowhegPythia_SYS_TuneCP5Up_ttLF: 19959204.000000 +TTLJ_PowhegPythia_SYS_TuneCP5Up_ttbb: 19959204.000000 +TTLJ_PowhegPythia_SYS_TuneCP5Up_ttbj: 19959204.000000 +TTLJ_PowhegPythia_SYS_TuneCP5Up_ttcc: 19959204.000000 +TTLJ_PowhegPythia_SYS_TuneCP5Up_ttother: 19959204.000000 +TTLJ_PowhegPythia_SYS_hdampDown_ttLF: 25931989.000000 +TTLJ_PowhegPythia_SYS_hdampDown_ttbb: 25931989.000000 +TTLJ_PowhegPythia_SYS_hdampDown_ttbj: 25931989.000000 +TTLJ_PowhegPythia_SYS_hdampDown_ttcc: 25931989.000000 +TTLJ_PowhegPythia_SYS_hdampDown_ttother: 25931989.000000 +TTLJ_PowhegPythia_SYS_hdampUp_ttLF: 23868910.000000 +TTLJ_PowhegPythia_SYS_hdampUp_ttbb: 23868910.000000 +TTLJ_PowhegPythia_SYS_hdampUp_ttbj: 23868910.000000 +TTLJ_PowhegPythia_SYS_hdampUp_ttcc: 23868910.000000 +TTLJ_PowhegPythia_SYS_hdampUp_ttother: 23868910.000000 +TTLJ_PowhegPythia_ttLF: 109124472.000000 +TTLJ_PowhegPythia_ttbb: 109124472.000000 +TTLJ_PowhegPythia_ttbj: 109124472.000000 +TTLJ_PowhegPythia_ttcc: 109124472.000000 +TTLJ_PowhegPythia_ttother: 109124472.000000 +TTLL_PowhegPythiaBkg: 68595608.000000 +TTLL_PowhegPythiaBkg_SYS_TuneCP5Down: 5455842.000000 +TTLL_PowhegPythiaBkg_SYS_TuneCP5Up: 5455706.000000 +TTLL_PowhegPythiaBkg_SYS_hdampDown: 5385951.000000 +TTLL_PowhegPythiaBkg_SYS_hdampUp: 5389292.000000 +W1JetsToLNu_MadgraphPythia: 54106926.000000 +W2JetsToLNu_MadgraphPythia: 6570442.000000 +W3JetsToLNu_MadgraphPythia: 19669693.000000 +W4JetsToLNu_MadgraphPythia: 11074019.000000 +WJetsToLNu_MadgraphPythia: 44587448.000000 +WW_Pythia: 7791498.000000 +WZ_Pythia: 3928630.000000 +ZJets_M10to50_MadgraphPythia: 39489654.000000 +ZJets_M50_aMCatNLOPythia: 123485957.000000 +ZZ_Pythia: 1949768.000000 +ttHToNonbb_PowhegPythia: 7814711.000000 +ttHTobb_PowhegPythia: 7833734.000000 +ttWToLNu_aMCatNLOMadspinPythia: 2686141.000000 +ttWToQQ_aMCatNLOMadspinPythia: 441560.000000 +ttZToLLNuNu_aMCatNLOMadspinPythia: 3570720.000000 +ttZToQQ_aMCatNLOMadspinPythia: 356286.000000 diff --git a/samples/genevt18.txt b/samples/genevt18.txt index 68bd273..056a517 100644 --- a/samples/genevt18.txt +++ b/samples/genevt18.txt @@ -1,47 +1,80 @@ -SingleTbar_tW_PowhegPythia 7588180.0 -SingleTbar_t_PowhegPythia 74227130.0 -SingleTop_s_aMCatNLOPythia 12447484.0 -SingleTop_tW_PowhegPythia 9553912.0 -SingleTop_t_PowhegPythia 144094782.0 -TTJJ_PowhegPythiaBkg 132725582.0 -TTLJ_PowhegPythiaBkg 100728756.0 -TTLJ_PowhegPythia_ttLF 100728756.0 -TTLJ_PowhegPythia_ttbb 100728756.0 -TTLJ_PowhegPythia_ttbj 100728756.0 -TTLJ_PowhegPythia_ttcc 100728756.0 -TTLJ_PowhegPythia_ttother 100728756.0 -TTLL_PowhegPythiaBkg 63791484.0 -W1JetsToLNu_MadgraphPythia 51047866.0 -W2JetsToLNu_MadgraphPythia 23272818.0 -W3JetsToLNu_MadgraphPythia 14492897.0 -W4JetsToLNu_MadgraphPythia 10062333.0 -WJetsToLNu_MadgraphPythia 70966439.0 -WW_Pythia 7850000.0 -WZ_Pythia 3885000.0 -ZJets_M50_aMCatNLOPythia 100114403.0 -ZZ_Pythia 1979000.0 -ttHToNonbb_PowhegPythia 7368333.0 -ttHTobb_PowhegPythia 11590377.0 -ttWToQQ_aMCatNLOMadspinPythia 458226.0 -ttZToLLNuNu_aMCatNLOMadspinPythia 6274046.0 -ttZToQQ_aMCatNLOMadspinPythia 355226.0 -ZJets_M10to50_MadgraphPythia 39360792.0 -ttWToLNu_aMCatNLOMadspinPythia 2686095.0 -QCD_Pt-1000toInf_MuEnriched 10719790.0 -QCD_Pt-120to170_EMEnriched 9964143.0 -QCD_Pt-120to170_MuEnriched 20682254.0 -QCD_Pt-15to20_EMEnriched 14578212.0 -QCD_Pt-15to20_MuEnriched 4576061.0 -QCD_Pt-170to300_EMEnriched 3712174.0 -QCD_Pt-170to300_MuEnriched 35978539.0 -QCD_Pt-20to30_EMEnriched 14255377.0 -QCD_Pt-20to30_MuEnriched 30612338.0 -QCD_Pt-300to470_MuEnriched 28996145.0 -QCD_Pt-300toInf_EMEnriched 2901355.0 -QCD_Pt-30to50_EMEnriched 15086084.0 -QCD_Pt-470to600_MuEnriched 20003034.0 -QCD_Pt-50to80_EMEnriched 10798233.0 -QCD_Pt-50to80_MuEnriched 20268872.0 -QCD_Pt-600to800_MuEnriched 16618977.0 -QCD_Pt-80to120_EMEnriched 9648791.0 -QCD_Pt-80to120_MuEnriched 25039361.0 +QCD_Pt-1000toInf_MuEnriched 10719790 +QCD_Pt-120to170_EMEnriched 9964143 +QCD_Pt-120to170_MuEnriched 20682254 +QCD_Pt-15to20_EMEnriched 14578212 +QCD_Pt-15to20_MuEnriched 4576061 +QCD_Pt-170to300_EMEnriched 3712174 +QCD_Pt-170to300_MuEnriched 35978539 +QCD_Pt-20to30_EMEnriched 14255377 +QCD_Pt-20to30_MuEnriched 30612338 +QCD_Pt-300to470_MuEnriched 28996145 +QCD_Pt-300toInf_EMEnriched 2901355 +QCD_Pt-30to50_EMEnriched 15086084 +QCD_Pt-470to600_MuEnriched 20003034 +QCD_Pt-50to80_EMEnriched 10798233 +QCD_Pt-50to80_MuEnriched 20268872 +QCD_Pt-600to800_MuEnriched 16618977 +QCD_Pt-800to1000_MuEnriched 16749914 +QCD_Pt-80to120_EMEnriched 9648791 +QCD_Pt-80to120_MuEnriched 25039361 +SingleTbar_tW_PowhegPythia 7588180 +SingleTbar_t_PowhegPythia 74227130 +SingleTop_s_aMCatNLOPythia 12447484 +SingleTop_tW_PowhegPythia 9553912 +SingleTop_t_PowhegPythia 144094782 +TTJJ_PowhegPythiaBkg 132725582 +TTJJ_PowhegPythiaBkg_SYS_TuneCP5Down 26459542 +TTJJ_PowhegPythiaBkg_SYS_TuneCP5Up 23298972 +TTJJ_PowhegPythiaBkg_SYS_hdampDown 25988142 +TTJJ_PowhegPythiaBkg_SYS_hdampUp 24851988 +TTLJ_PowhegPythiaBkg 100728756 +TTLJ_PowhegPythiaBkg_SYS_TuneCP5Down 20316262 +TTLJ_PowhegPythiaBkg_SYS_TuneCP5Up 26729924 +TTLJ_PowhegPythiaBkg_SYS_hdampDown 25476596 +TTLJ_PowhegPythiaBkg_SYS_hdampUp 26841790 +TTLJ_PowhegPythia_SYS_TuneCP5Down_ttLF 20316262 +TTLJ_PowhegPythia_SYS_TuneCP5Down_ttbb 20316262 +TTLJ_PowhegPythia_SYS_TuneCP5Down_ttbj 20316262 +TTLJ_PowhegPythia_SYS_TuneCP5Down_ttcc 20316262 +TTLJ_PowhegPythia_SYS_TuneCP5Down_ttother 20316262 +TTLJ_PowhegPythia_SYS_TuneCP5Up_ttLF 26729924 +TTLJ_PowhegPythia_SYS_TuneCP5Up_ttbb 26729924 +TTLJ_PowhegPythia_SYS_TuneCP5Up_ttbj 26729924 +TTLJ_PowhegPythia_SYS_TuneCP5Up_ttcc 26729924 +TTLJ_PowhegPythia_SYS_TuneCP5Up_ttother 26729924 +TTLJ_PowhegPythia_SYS_hdampDown_ttLF 25476596 +TTLJ_PowhegPythia_SYS_hdampDown_ttbb 25476596 +TTLJ_PowhegPythia_SYS_hdampDown_ttbj 25476596 +TTLJ_PowhegPythia_SYS_hdampDown_ttcc 25476596 +TTLJ_PowhegPythia_SYS_hdampDown_ttother 25476596 +TTLJ_PowhegPythia_SYS_hdampUp_ttLF 26841790 +TTLJ_PowhegPythia_SYS_hdampUp_ttbb 26841790 +TTLJ_PowhegPythia_SYS_hdampUp_ttbj 26841790 +TTLJ_PowhegPythia_SYS_hdampUp_ttcc 26841790 +TTLJ_PowhegPythia_SYS_hdampUp_ttother 26841790 +TTLJ_PowhegPythia_ttLF 100728756 +TTLJ_PowhegPythia_ttbb 100728756 +TTLJ_PowhegPythia_ttbj 100728756 +TTLJ_PowhegPythia_ttcc 100728756 +TTLJ_PowhegPythia_ttother 100728756 +TTLL_PowhegPythiaBkg 63791484 +TTLL_PowhegPythiaBkg_SYS_TuneCP5Down 4914480 +TTLL_PowhegPythiaBkg_SYS_TuneCP5Up 5401744 +TTLL_PowhegPythiaBkg_SYS_hdampDown 5368300 +TTLL_PowhegPythiaBkg_SYS_hdampUp 5236080 +W1JetsToLNu_MadgraphPythia 51047866 +W2JetsToLNu_MadgraphPythia 23272818 +W3JetsToLNu_MadgraphPythia 14492897 +W4JetsToLNu_MadgraphPythia 10062333 +WJetsToLNu_MadgraphPythia 70966439 +WW_Pythia 7850000 +WZ_Pythia 3885000 +ZJets_M10to50_MadgraphPythia 39360792 +ZJets_M50_aMCatNLOPythia 130939668 +ZZ_Pythia 1979000 +ttHToNonbb_PowhegPythia 7368333 +ttHTobb_PowhegPythia 11590377 +ttWToLNu_aMCatNLOMadspinPythia 2686095 +ttWToQQ_aMCatNLOMadspinPythia 458226 +ttZToLLNuNu_aMCatNLOMadspinPythia 6274046 +ttZToQQ_aMCatNLOMadspinPythia 355226 diff --git a/samples/sample16.txt b/samples/sample16.txt index d18fd4e..0decc03 100644 --- a/samples/sample16.txt +++ b/samples/sample16.txt @@ -1,39 +1,48 @@ -/data/users/seohyun/ntuple/Run2016/v808/nosplit -TTLJ_PowhegPythia_ttbb -TTLJ_PowhegPythia_ttother -TTLJ_PowhegPythia_ttbbFilter_ttbb -QCD_Pt-300toInf_EMEnriched -SingleTop_t_Powheg -SingleTop_tW_Powheg -SingleTbar_tW_Powheg -QCD_Pt-120to170_EMEnriched +/home/seohyun/work/ttbb/ttbbRun2/samples +QCD_Pt-120to170_MuEnriched +QCD_Pt-15to20_MuEnriched QCD_Pt-170to300_EMEnriched +QCD_Pt-20to30_EMEnriched QCD_Pt-20to30_MuEnriched -TTLJ_PowhegPythia_ttLF +QCD_Pt-300toInf_EMEnriched TTLJ_PowhegPythia_ttbj -QCD_Pt-120to170_MuEnriched -QCD_Pt-170to300_MuEnriched -QCD_Pt-300to470_MuEnriched +TTLJ_PowhegPythia_ttother +QCD_Pt-50to80_MuEnriched +TTLJ_PowhegPythia_ttLF +TTLJ_PowhegPythia_ttbb TTLJ_PowhegPythia_ttcc -QCD_Pt-1000toInf_MuEnriched -QCD_Pt-15to20_MuEnriched -QCD_Pt-20to30_EMEnriched -QCD_Pt-30to50_EMEnriched -SingleTbar_t_Powheg -ZJets_M50_aMCatNLO -ttHbb_PowhegPythia -WJets_aMCatNLO -WW_Pythia -WZ_Pythia +SingleTbar_tW_PowhegPythia +SingleTbar_t_PowhegPythia +SingleTop_s_aMCatNLOPythia +SingleTop_tW_PowhegPythia +SingleTop_t_PowhegPythia +TTJJ_PowhegPythiaBkg +TTLJ_PowhegPythiaBkg +TTLL_PowhegPythiaBkg ZZ_Pythia -ZJets_M10to50_aMCatNLO -ttW_Madgraph -ttZ_Madgraph -QCD_Pt-470to600_MuEnriched +W1JetsToLNu_MadgraphPythia +ZJets_M50_aMCatNLOPythia +ttHToNonbb_PowhegPythia +ttHTobb_PowhegPythia +ttWToQQ_aMCatNLOMadspinPythia +ttZToQQ_aMCatNLOMadspinPythia +ttWToLNu_aMCatNLOMadspinPythia QCD_Pt-50to80_EMEnriched -QCD_Pt-50to80_MuEnriched -QCD_Pt-600to800_MuEnriched -QCD_Pt-800to1000_MuEnriched +QCD_Pt-30to50_EMEnriched +QCD_Pt-1000toInf_MuEnriched +W2JetsToLNu_MadgraphPythia +ZJets_M10to50_MadgraphPythia QCD_Pt-80to120_EMEnriched +QCD_Pt-470to600_MuEnriched +WJetsToLNu_MadgraphPythia +W4JetsToLNu_MadgraphPythia +W3JetsToLNu_MadgraphPythia +QCD_Pt-800to1000_MuEnriched +ttZToLLNuNu_aMCatNLOMadspinPythia QCD_Pt-80to120_MuEnriched -TT_PowhegPythiaBkg +QCD_Pt-600to800_MuEnriched +QCD_Pt-300to470_MuEnriched +QCD_Pt-170to300_MuEnriched +QCD_Pt-120to170_EMEnriched +WZ_Pythia +WW_Pythia diff --git a/samples/sample17.txt b/samples/sample17.txt index 84c3a04..78fc2b5 100644 --- a/samples/sample17.txt +++ b/samples/sample17.txt @@ -1,48 +1,49 @@ -/data/users/seohyun/ntuple/Run2017/V9_6/nosplit -SingleTbar_t_PowhegPythia +/home/seohyun/work/ttbb/ttbbRun2/samples +QCD_Pt-1000toInf_MuEnriched +QCD_Pt-120to170_EMEnriched +QCD_Pt-120to170_MuEnriched +QCD_Pt-15to20_EMEnriched +QCD_Pt-15to20_MuEnriched +QCD_Pt-170to300_EMEnriched +QCD_Pt-170to300_MuEnriched +QCD_Pt-20to30_EMEnriched +QCD_Pt-20to30_MuEnriched +QCD_Pt-300to470_MuEnriched +QCD_Pt-300toInf_EMEnriched +QCD_Pt-30to50_EMEnriched +QCD_Pt-470to600_MuEnriched +QCD_Pt-50to80_EMEnriched +QCD_Pt-50to80_MuEnriched +QCD_Pt-600to800_MuEnriched +QCD_Pt-800to1000_MuEnriched +QCD_Pt-80to120_EMEnriched +QCD_Pt-80to120_MuEnriched SingleTbar_tW_PowhegPythia +SingleTbar_t_PowhegPythia SingleTop_s_aMCatNLOPythia -SingleTop_t_PowhegPythia SingleTop_tW_PowhegPythia -ttHTobb_PowhegPythia -ttHToNonbb_PowhegPythia +SingleTop_t_PowhegPythia TTJJ_PowhegPythiaBkg TTLJ_PowhegPythiaBkg +TTLJ_PowhegPythia_ttLF TTLJ_PowhegPythia_ttbb TTLJ_PowhegPythia_ttbj TTLJ_PowhegPythia_ttcc -TTLJ_PowhegPythia_ttLF TTLJ_PowhegPythia_ttother TTLL_PowhegPythiaBkg -ttWToQQ_aMCatNLOMadspinPythia -ttZToLLNuNu_aMCatNLOMadspinPythia -ttZToQQ_aMCatNLOMadspinPythia W1JetsToLNu_MadgraphPythia W2JetsToLNu_MadgraphPythia W3JetsToLNu_MadgraphPythia W4JetsToLNu_MadgraphPythia +WJetsToLNu_MadgraphPythia WW_Pythia WZ_Pythia ZJets_M10to50_MadgraphPythia ZJets_M50_aMCatNLOPythia ZZ_Pythia -WJetsToLNu_MadgraphPythia +ttHToNonbb_PowhegPythia +ttHTobb_PowhegPythia ttWToLNu_aMCatNLOMadspinPythia -QCD_Pt-1000toInf_MuEnriched -QCD_Pt-120to170_EMEnriched -QCD_Pt-120to170_MuEnriched -QCD_Pt-15to20_EMEnriched -QCD_Pt-15to20_MuEnriched -QCD_Pt-170to300_MuEnriched -QCD_Pt-20to30_EMEnriched -QCD_Pt-20to30_MuEnriched -QCD_Pt-300to470_MuEnriched -QCD_Pt-300toInf_EMEnriched -QCD_Pt-30to50_EMEnriched -QCD_Pt-470to600_MuEnriched -QCD_Pt-50to80_EMEnriched -QCD_Pt-50to80_MuEnriched -QCD_Pt-600to800_MuEnriched -QCD_Pt-800to1000_MuEnriched -QCD_Pt-80to120_EMEnriched -QCD_Pt-80to120_MuEnriched +ttWToQQ_aMCatNLOMadspinPythia +ttZToLLNuNu_aMCatNLOMadspinPythia +ttZToQQ_aMCatNLOMadspinPythia diff --git a/samples/sample18.txt b/samples/sample18.txt index 853f369..90fc94f 100644 --- a/samples/sample18.txt +++ b/samples/sample18.txt @@ -1,4 +1,23 @@ -/data/users/seohyun/ntuple/Run2018/V10_2/nosplit +/data/users/seohyun/ntuple/Run2018/sync +QCD_Pt-1000toInf_MuEnriched +QCD_Pt-120to170_EMEnriched +QCD_Pt-120to170_MuEnriched +QCD_Pt-15to20_EMEnriched +QCD_Pt-15to20_MuEnriched +QCD_Pt-170to300_EMEnriched +QCD_Pt-170to300_MuEnriched +QCD_Pt-20to30_EMEnriched +QCD_Pt-20to30_MuEnriched +QCD_Pt-300to470_MuEnriched +QCD_Pt-300toInf_EMEnriched +QCD_Pt-30to50_EMEnriched +QCD_Pt-470to600_MuEnriched +QCD_Pt-50to80_EMEnriched +QCD_Pt-50to80_MuEnriched +QCD_Pt-600to800_MuEnriched +QCD_Pt-800to1000_MuEnriched +QCD_Pt-80to120_EMEnriched +QCD_Pt-80to120_MuEnriched SingleTbar_tW_PowhegPythia SingleTbar_t_PowhegPythia SingleTop_s_aMCatNLOPythia @@ -19,30 +38,12 @@ W4JetsToLNu_MadgraphPythia WJetsToLNu_MadgraphPythia WW_Pythia WZ_Pythia +ZJets_M10to50_MadgraphPythia ZJets_M50_aMCatNLOPythia ZZ_Pythia ttHToNonbb_PowhegPythia ttHTobb_PowhegPythia +ttWToLNu_aMCatNLOMadspinPythia ttWToQQ_aMCatNLOMadspinPythia ttZToLLNuNu_aMCatNLOMadspinPythia ttZToQQ_aMCatNLOMadspinPythia -ZJets_M10to50_MadgraphPythia -ttWToLNu_aMCatNLOMadspinPythia -QCD_Pt-1000toInf_MuEnriched -QCD_Pt-120to170_EMEnriched -QCD_Pt-120to170_MuEnriched -QCD_Pt-15to20_EMEnriched -QCD_Pt-15to20_MuEnriched -QCD_Pt-170to300_EMEnriched -QCD_Pt-170to300_MuEnriched -QCD_Pt-20to30_EMEnriched -QCD_Pt-20to30_MuEnriched -QCD_Pt-300to470_MuEnriched -QCD_Pt-300toInf_EMEnriched -QCD_Pt-30to50_EMEnriched -QCD_Pt-470to600_MuEnriched -QCD_Pt-50to80_EMEnriched -QCD_Pt-50to80_MuEnriched -QCD_Pt-600to800_MuEnriched -QCD_Pt-80to120_EMEnriched -QCD_Pt-80to120_MuEnriched diff --git a/samples/scale16.txt b/samples/scale16.txt deleted file mode 100644 index 3ad8726..0000000 --- a/samples/scale16.txt +++ /dev/null @@ -1,38 +0,0 @@ -TTLJ_PowhegPythia_ttbb 0.915188 -TTLJ_PowhegPythia_ttother 0.936838 -TTLJ_PowhegPythia_ttbbFilter_ttbb 1.0 -QCD_Pt-300toInf_EMEnriched 0.936838 -SingleTop_t_Powheg 0.960297 -SingleTop_tW_Powheg 0.960297 -SingleTbar_tW_Powheg 0.960297 -QCD_Pt-120to170_EMEnriched 0.936838 -QCD_Pt-170to300_EMEnriched 0.936838 -QCD_Pt-20to30_MuEnriched 0.936838 -TTLJ_PowhegPythia_ttLF 0.960297 -TTLJ_PowhegPythia_ttbj 0.772274 -QCD_Pt-120to170_MuEnriched 0.936838 -QCD_Pt-170to300_MuEnriched 0.936838 -QCD_Pt-300to470_MuEnriched 0.936838 -TTLJ_PowhegPythia_ttcc 0.960297 -QCD_Pt-1000toInf_MuEnriched 0.936838 -QCD_Pt-15to20_MuEnriched 0.936838 -QCD_Pt-20to30_EMEnriched 0.936838 -QCD_Pt-30to50_EMEnriched 0.936838 -SingleTbar_t_Powheg 0.960297 -ZJets_M50_aMCatNLO 0.936838 -ttHbb_PowhegPythia 0.915188 -WJets_aMCatNLO 0.936838 -WW_Pythia 0.936838 -WZ_Pythia 0.936838 -ZZ_Pythia 0.936838 -ZJets_M10to50_aMCatNLO 0.936838 -ttW_Madgraph 0.915188 -ttZ_Madgraph 0.915188 -QCD_Pt-470to600_MuEnriched 0.936838 -QCD_Pt-50to80_EMEnriched 0.936838 -QCD_Pt-50to80_MuEnriched 0.936838 -QCD_Pt-600to800_MuEnriched 0.936838 -QCD_Pt-800to1000_MuEnriched 0.936838 -QCD_Pt-80to120_EMEnriched 0.936838 -QCD_Pt-80to120_MuEnriched 0.936838 -TT_PowhegPythiaBkg 0.960297 diff --git a/samples/scale17.txt b/samples/scale17.txt deleted file mode 100644 index ecce7c3..0000000 --- a/samples/scale17.txt +++ /dev/null @@ -1,47 +0,0 @@ -SingleTbar_t_PowhegPythia 1.03462 -SingleTbar_tW_PowhegPythia 1.03462 -SingleTop_s_aMCatNLOPythia 1.03462 -SingleTop_t_PowhegPythia 1.03462 -SingleTop_tW_PowhegPythia 1.03462 -ttHTobb_PowhegPythia 1.83317 -ttHToNonbb_PowhegPythia 1.83317 -TTJJ_PowhegPythiaBkg 1.03462 -TTLJ_PowhegPythiaBkg 1.03462 -TTLJ_PowhegPythia_ttbb 1.83317 -TTLJ_PowhegPythia_ttbj 0.661772 -TTLJ_PowhegPythia_ttcc 1.03462 -TTLJ_PowhegPythia_ttLF 1.03462 -TTLJ_PowhegPythia_ttother 1.27736 -TTLL_PowhegPythiaBkg 1.03462 -ttWToQQ_aMCatNLOMadspinPythia 1.83317 -ttZToLLNuNu_aMCatNLOMadspinPythia 1.83317 -ttZToQQ_aMCatNLOMadspinPythia 1.83317 -W1JetsToLNu_MadgraphPythia 1.27736 -W2JetsToLNu_MadgraphPythia 1.27736 -W3JetsToLNu_MadgraphPythia 1.27736 -W4JetsToLNu_MadgraphPythia 1.27736 -WW_Pythia 1.27736 -WZ_Pythia 1.27736 -ZJets_M10to50_MadgraphPythia 1.27736 -ZJets_M50_aMCatNLOPythia 1.27736 -ZZ_Pythia 1.27736 -WJetsToLNu_MadgraphPythia 1.27736 -ttWToLNu_aMCatNLOMadspinPythia 1.83317 -QCD_Pt-1000toInf_MuEnriched 1.27736 -QCD_Pt-120to170_EMEnriched 1.27736 -QCD_Pt-120to170_MuEnriched 1.27736 -QCD_Pt-15to20_EMEnriched 1.27736 -QCD_Pt-15to20_MuEnriched 1.27736 -QCD_Pt-170to300_MuEnriched 1.27736 -QCD_Pt-20to30_EMEnriched 1.27736 -QCD_Pt-20to30_MuEnriched 1.27736 -QCD_Pt-300to470_MuEnriched 1.27736 -QCD_Pt-300toInf_EMEnriched 1.27736 -QCD_Pt-30to50_EMEnriched 1.27736 -QCD_Pt-470to600_MuEnriched 1.27736 -QCD_Pt-50to80_EMEnriched 1.27736 -QCD_Pt-50to80_MuEnriched 1.27736 -QCD_Pt-600to800_MuEnriched 1.27736 -QCD_Pt-800to1000_MuEnriched 1.27736 -QCD_Pt-80to120_EMEnriched 1.27736 -QCD_Pt-80to120_MuEnriched 1.27736 diff --git a/samples/scale18.txt b/samples/scale18.txt deleted file mode 100644 index b826ade..0000000 --- a/samples/scale18.txt +++ /dev/null @@ -1,47 +0,0 @@ -SingleTbar_tW_PowhegPythia 0.998599 -SingleTbar_t_PowhegPythia 0.998599 -SingleTop_s_aMCatNLOPythia 0.998599 -SingleTop_tW_PowhegPythia 0.998599 -SingleTop_t_PowhegPythia 0.998599 -TTJJ_PowhegPythiaBkg 0.998599 -TTLJ_PowhegPythiaBkg 0.998599 -TTLJ_PowhegPythia_ttLF 0.998599 -TTLJ_PowhegPythia_ttbb 1.40784 -TTLJ_PowhegPythia_ttbj 1.1248 -TTLJ_PowhegPythia_ttcc 0.998599 -TTLJ_PowhegPythia_ttother 1.10095 -TTLL_PowhegPythiaBkg 0.998599 -W1JetsToLNu_MadgraphPythia 1.10095 -W2JetsToLNu_MadgraphPythia 1.10095 -W3JetsToLNu_MadgraphPythia 1.10095 -W4JetsToLNu_MadgraphPythia 1.10095 -WJetsToLNu_MadgraphPythia 1.10095 -WW_Pythia 1.10095 -WZ_Pythia 1.10095 -ZJets_M50_aMCatNLOPythia 1.10095 -ZZ_Pythia 1.10095 -ttHToNonbb_PowhegPythia 1.40784 -ttHTobb_PowhegPythia 1.40784 -ttWToQQ_aMCatNLOMadspinPythia 1.40784 -ttZToLLNuNu_aMCatNLOMadspinPythia 1.40784 -ttZToQQ_aMCatNLOMadspinPythia 1.40784 -ZJets_M10to50_MadgraphPythia 1.10095 -ttWToLNu_aMCatNLOMadspinPythia 1.40784 -QCD_Pt-1000toInf_MuEnriched 1.10095 -QCD_Pt-120to170_EMEnriched 1.10095 -QCD_Pt-120to170_MuEnriched 1.10095 -QCD_Pt-15to20_EMEnriched 1.10095 -QCD_Pt-15to20_MuEnriched 1.10095 -QCD_Pt-170to300_EMEnriched 1.10095 -QCD_Pt-170to300_MuEnriched 1.10095 -QCD_Pt-20to30_EMEnriched 1.10095 -QCD_Pt-20to30_MuEnriched 1.10095 -QCD_Pt-300to470_MuEnriched 1.10095 -QCD_Pt-300toInf_EMEnriched 1.10095 -QCD_Pt-30to50_EMEnriched 1.10095 -QCD_Pt-470to600_MuEnriched 1.10095 -QCD_Pt-50to80_EMEnriched 1.10095 -QCD_Pt-50to80_MuEnriched 1.10095 -QCD_Pt-600to800_MuEnriched 1.10095 -QCD_Pt-80to120_EMEnriched 1.10095 -QCD_Pt-80to120_MuEnriched 1.10095 diff --git a/samples/systematic16.txt b/samples/systematic16.txt new file mode 100644 index 0000000..fcbe0c6 --- /dev/null +++ b/samples/systematic16.txt @@ -0,0 +1,32 @@ +TTLJ_PowhegPythia_SYS_hdampDown_ttbb +TTJJ_PowhegPythiaBkg_SYS_hdampUp +TTLJ_PowhegPythia_SYS_hdampDown_ttLF +TTJJ_PowhegPythiaBkg_SYS_hdampDown +TTLJ_PowhegPythiaBkg_SYS_hdampUp +TTJJ_PowhegPythiaBkg_SYS_TuneCP5Down +TTJJ_PowhegPythiaBkg_SYS_TuneCP5Up +TTLJ_PowhegPythiaBkg_SYS_TuneCP5Down +TTLJ_PowhegPythiaBkg_SYS_TuneCP5Up +TTLJ_PowhegPythia_SYS_hdampDown_ttbj +TTLJ_PowhegPythia_SYS_hdampDown_ttcc +TTLJ_PowhegPythia_SYS_hdampDown_ttother +TTLJ_PowhegPythia_SYS_hdampUp_ttLF +TTLJ_PowhegPythia_SYS_hdampUp_ttbb +TTLJ_PowhegPythia_SYS_hdampUp_ttbj +TTLJ_PowhegPythia_SYS_hdampUp_ttcc +TTLJ_PowhegPythia_SYS_hdampUp_ttother +TTLL_PowhegPythiaBkg_SYS_hdampDown +TTLL_PowhegPythiaBkg_SYS_hdampUp +TTLJ_PowhegPythia_SYS_TuneCP5Down_ttLF +TTLJ_PowhegPythia_SYS_TuneCP5Down_ttbb +TTLJ_PowhegPythia_SYS_TuneCP5Down_ttbj +TTLJ_PowhegPythia_SYS_TuneCP5Down_ttcc +TTLJ_PowhegPythia_SYS_TuneCP5Down_ttother +TTLJ_PowhegPythia_SYS_TuneCP5Up_ttLF +TTLJ_PowhegPythia_SYS_TuneCP5Up_ttbb +TTLJ_PowhegPythia_SYS_TuneCP5Up_ttbj +TTLJ_PowhegPythia_SYS_TuneCP5Up_ttcc +TTLJ_PowhegPythia_SYS_TuneCP5Up_ttother +TTLJ_PowhegPythiaBkg_SYS_hdampDown +TTLL_PowhegPythiaBkg_SYS_TuneCP5Up +TTLL_PowhegPythiaBkg_SYS_TuneCP5Down diff --git a/samples/systematic17.txt b/samples/systematic17.txt new file mode 100644 index 0000000..301acc4 --- /dev/null +++ b/samples/systematic17.txt @@ -0,0 +1,32 @@ +TTJJ_PowhegPythiaBkg_SYS_TuneCP5Down +TTJJ_PowhegPythiaBkg_SYS_TuneCP5Up +TTJJ_PowhegPythiaBkg_SYS_hdampDown +TTJJ_PowhegPythiaBkg_SYS_hdampUp +TTLJ_PowhegPythiaBkg_SYS_TuneCP5Down +TTLJ_PowhegPythiaBkg_SYS_TuneCP5Up +TTLJ_PowhegPythiaBkg_SYS_hdampDown +TTLJ_PowhegPythiaBkg_SYS_hdampUp +TTLJ_PowhegPythia_SYS_TuneCP5Down_ttLF +TTLJ_PowhegPythia_SYS_TuneCP5Down_ttbb +TTLJ_PowhegPythia_SYS_TuneCP5Down_ttbj +TTLJ_PowhegPythia_SYS_TuneCP5Down_ttcc +TTLJ_PowhegPythia_SYS_TuneCP5Down_ttother +TTLJ_PowhegPythia_SYS_TuneCP5Up_ttLF +TTLJ_PowhegPythia_SYS_TuneCP5Up_ttbb +TTLJ_PowhegPythia_SYS_TuneCP5Up_ttbj +TTLJ_PowhegPythia_SYS_TuneCP5Up_ttcc +TTLJ_PowhegPythia_SYS_TuneCP5Up_ttother +TTLJ_PowhegPythia_SYS_hdampDown_ttLF +TTLJ_PowhegPythia_SYS_hdampDown_ttbb +TTLJ_PowhegPythia_SYS_hdampDown_ttbj +TTLJ_PowhegPythia_SYS_hdampDown_ttcc +TTLJ_PowhegPythia_SYS_hdampDown_ttother +TTLJ_PowhegPythia_SYS_hdampUp_ttLF +TTLJ_PowhegPythia_SYS_hdampUp_ttbb +TTLJ_PowhegPythia_SYS_hdampUp_ttbj +TTLJ_PowhegPythia_SYS_hdampUp_ttcc +TTLJ_PowhegPythia_SYS_hdampUp_ttother +TTLL_PowhegPythiaBkg_SYS_TuneCP5Down +TTLL_PowhegPythiaBkg_SYS_TuneCP5Up +TTLL_PowhegPythiaBkg_SYS_hdampDown +TTLL_PowhegPythiaBkg_SYS_hdampUp diff --git a/samples/systematic18.txt b/samples/systematic18.txt new file mode 100644 index 0000000..301acc4 --- /dev/null +++ b/samples/systematic18.txt @@ -0,0 +1,32 @@ +TTJJ_PowhegPythiaBkg_SYS_TuneCP5Down +TTJJ_PowhegPythiaBkg_SYS_TuneCP5Up +TTJJ_PowhegPythiaBkg_SYS_hdampDown +TTJJ_PowhegPythiaBkg_SYS_hdampUp +TTLJ_PowhegPythiaBkg_SYS_TuneCP5Down +TTLJ_PowhegPythiaBkg_SYS_TuneCP5Up +TTLJ_PowhegPythiaBkg_SYS_hdampDown +TTLJ_PowhegPythiaBkg_SYS_hdampUp +TTLJ_PowhegPythia_SYS_TuneCP5Down_ttLF +TTLJ_PowhegPythia_SYS_TuneCP5Down_ttbb +TTLJ_PowhegPythia_SYS_TuneCP5Down_ttbj +TTLJ_PowhegPythia_SYS_TuneCP5Down_ttcc +TTLJ_PowhegPythia_SYS_TuneCP5Down_ttother +TTLJ_PowhegPythia_SYS_TuneCP5Up_ttLF +TTLJ_PowhegPythia_SYS_TuneCP5Up_ttbb +TTLJ_PowhegPythia_SYS_TuneCP5Up_ttbj +TTLJ_PowhegPythia_SYS_TuneCP5Up_ttcc +TTLJ_PowhegPythia_SYS_TuneCP5Up_ttother +TTLJ_PowhegPythia_SYS_hdampDown_ttLF +TTLJ_PowhegPythia_SYS_hdampDown_ttbb +TTLJ_PowhegPythia_SYS_hdampDown_ttbj +TTLJ_PowhegPythia_SYS_hdampDown_ttcc +TTLJ_PowhegPythia_SYS_hdampDown_ttother +TTLJ_PowhegPythia_SYS_hdampUp_ttLF +TTLJ_PowhegPythia_SYS_hdampUp_ttbb +TTLJ_PowhegPythia_SYS_hdampUp_ttbj +TTLJ_PowhegPythia_SYS_hdampUp_ttcc +TTLJ_PowhegPythia_SYS_hdampUp_ttother +TTLL_PowhegPythiaBkg_SYS_TuneCP5Down +TTLL_PowhegPythiaBkg_SYS_TuneCP5Up +TTLL_PowhegPythiaBkg_SYS_hdampDown +TTLL_PowhegPythiaBkg_SYS_hdampUp diff --git a/samples/unfold16.txt b/samples/unfold16.txt new file mode 100644 index 0000000..2c2287f --- /dev/null +++ b/samples/unfold16.txt @@ -0,0 +1,9 @@ +prefitDir /home/seohyun/work/ttbb/ttbbRun2_dev/output/root16_post +postfitDir /home/seohyun/work/ttbb/ttbbRun2_dev/output/post16 +outputDir /home/seohyun/work/ttbb/ttbbRun2_dev/output/unfold16 +discriminant bb_2D_dRvsM +group data_obs ttbb ttbj ttcc ttLF ttbkg other qcd +ttbb TTLJ_PowhegPythia_ttbbFilter_ttbb +matrix TTLJ_PowhegPythia_ttbb +recoMode mindR +genMode mindR diff --git a/samples/unfold17.txt b/samples/unfold17.txt new file mode 100644 index 0000000..7aa3aef --- /dev/null +++ b/samples/unfold17.txt @@ -0,0 +1,10 @@ +baseDir /home/seohyun/work/ttbb/ttbbRun2_dev/output +prefitDir root17 +postfitDir post17 +outputDir unfold17 +discriminant bb_2D_dRvsM +group data_obs ttbb ttbj ttcc ttLF ttbkg other qcd +ttbb TTLJ_PowhegPythia_ttbb +matrix TTLJ_PowhegPythia_ttbb +recojet mindR +genjet mindR diff --git a/samples/unfold18.txt b/samples/unfold18.txt new file mode 100644 index 0000000..cdaedf7 --- /dev/null +++ b/samples/unfold18.txt @@ -0,0 +1,10 @@ +baseDir /home/seohyun/work/ttbb/ttbbRun2_dev/output +prefitDir root18 +postfitDir post18 +outputDir unfold18 +discriminant bb_2D_dRvsM +group data_obs ttbb ttbj ttcc ttLF ttbkg other qcd +ttbb TTLJ_PowhegPythia_ttbb +matrix TTLJ_PowhegPythia_ttbb +recojet mindR +genjet mindR diff --git a/samples/xsec16.txt b/samples/xsec16.txt index 27f002b..63cd4c4 100644 --- a/samples/xsec16.txt +++ b/samples/xsec16.txt @@ -1,39 +1,49 @@ -Sample Xsec DrawOrder Legend -ttZ_Madgraph 0.2529 8 #ff66ff ttX -ttW_Madgraph 0.2043 7 #ff66ff ttX -ttHbb_PowhegPythia 0.2923 6 #ff66ff ttX -SingleTbar_t_Powheg 80.95 10 #990099 SingleT -SingleTbar_tW_Powheg 35.85 12 #990099 SingleT -SingleTop_t_Powheg 136.02 9 #990099 SingleT -SingleTop_tW_Powheg 35.85 11 #990099 SingleT -ZZ_Pythia 16.523 15 #00cccc VV -ZJets_M50_aMCatNLO 6225.42 16 #000099 ZJets -ZJets_M10to50_aMCatNLO 18610.0 17 #000099 ZJets -WZ_Pythia 47.13 14 #00cccc VV -WW_Pythia 118.7 13 #00cccc VV -WJets_aMCatNLO 61526.7 18 #ff9933 WJets -TT_PowhegPythiaBkg 831.76 5 #ff6666 ttbkg -TTLJ_PowhegPythia_ttother 365.34 4 #ff6666 ttbkg -TTLJ_PowhegPythia_ttcc 365.34 2 #990000 ttcc -TTLJ_PowhegPythia_ttbj 365.34 1 #660000 ttbj -TTLJ_PowhegPythia_ttbbFilter_ttbb 31.06 -1 #000000 ttbb -TTLJ_PowhegPythia_ttbb 365.34 0 #330000 ttbb -TTLJ_PowhegPythia_ttLF 365.34 3 #cc0000 ttLF -QCD_Pt-15to20_MuEnriched 3819570 19 #d0cfd4 QCD -QCD_Pt-20to30_MuEnriched 2960198.4 20 #d0cfd4 QCD -QCD_Pt-50to80_MuEnriched 437504.1 21 #d0cfd4 QCD -QCD_Pt-80to120_MuEnriched 106033.6648 22 #d0cfd4 QCD -QCD_Pt-120to170_MuEnriched 25190.51514 23 #d0cfd4 QCD -QCD_Pt-170to300_MuEnriched 8654.49315 24 #d0cfd4 QCD -QCD_Pt-300to470_MuEnriched 797.35269 25 #d0cfd4 QCD -QCD_Pt-470to600_MuEnriched 79.02553776 26 #d0cfd4 QCD -QCD_Pt-600to800_MuEnriched 25.09505908 27 #d0cfd4 QCD -QCD_Pt-800to1000_MuEnriched 4.707368272 28 #d0cfd4 QCD -QCD_Pt-1000toInf_MuEnriched 1.62131692 29 #d0cfd4 QCD -QCD_Pt-20to30_EMEnriched 5352960 30 #d0cfd4 QCD -QCD_Pt-30to50_EMEnriched 9928000 31 #d0cfd4 QCD -QCD_Pt-50to80_EMEnriched 2890800 32 #d0cfd4 QCD -QCD_Pt-80to120_EMEnriched 350000 33 #d0cfd4 QCD -QCD_Pt-120to170_EMEnriched 62964 34 #d0cfd4 QCD -QCD_Pt-170to300_EMEnriched 18810 35 #d0cfd4 QCD -QCD_Pt-300toInf_EMEnriched 1350 36 #d0cfd4 QCD +Sample Xsec DrawOrder Color Legend +TTLJ_PowhegPythia_ttbb 365.34 1 #330000 ttbb +TTLJ_PowhegPythia_ttbj 365.34 2 #660000 ttbj +TTLJ_PowhegPythia_ttcc 365.34 3 #990000 ttcc +TTLJ_PowhegPythia_ttLF 365.34 4 #cc0000 ttLF +TTLJ_PowhegPythia_ttother 365.34 5 #ff6666 ttbkg +TTLJ_PowhegPythiaBkg 365.34 6 #ff6666 ttbkg +TTLL_PowhegPythiaBkg 88.29 7 #ff6666 ttbkg +TTJJ_PowhegPythiaBkg 377.96 8 #ff6666 ttbkg +SingleTop_s_aMCatNLOPythia 3.36 9 #990099 SingleT +SingleTop_t_PowhegPythia 136.02 10 #990099 SingleT +SingleTop_tW_PowhegPythia 35.85 11 #990099 SingleT +SingleTbar_t_PowhegPythia 80.95 12 #990099 SingleT +SingleTbar_tW_PowhegPythia 35.85 13 #990099 SingleT +ttZToQQ_aMCatNLOMadspinPythia 0.5297 11 #ff66ff ttX +ttZToLLNuNu_aMCatNLOMadspinPythia 0.2529 12 #ff66ff ttX +ttWToQQ_aMCatNLOMadspinPythia 0.4062 13 #ff66ff ttX +ttWToLNu_aMCatNLOMadspinPythia 0.2043 14 #ff66ff ttX +ttHTobb_PowhegPythia 0.2934 14 #ff66ff ttX +ttHToNonbb_PowhegPythia 0.2151 15 #ff66ff ttX +WW_Pythia 118.7 17 #00cccc VV +WZ_Pythia 47.13 18 #00cccc VV +ZZ_Pythia 16.523 19 #00cccc VV +ZJets_M10to50_MadgraphPythia 18610 20 #000099 ZJets +ZJets_M50_aMCatNLOPythia 6077.22 21 #000099 ZJets +WJetsToLNu_MadgraphPythia 61526.7 -16 #ff9933 WJets +W1JetsToLNu_MadgraphPythia 9625 22 #ff9933 WJets +W2JetsToLNu_MadgraphPythia 2793 23 #ff9933 WJets +W3JetsToLNu_MadgraphPythia 992.5 24 #ff9933 WJets +W4JetsToLNu_MadgraphPythia 544.3 25 #ff9933 WJets +QCD_Pt-15to20_MuEnriched 3819570 26 #d0cfd4 QCD +QCD_Pt-20to30_MuEnriched 2960198.4 27 #d0cfd4 QCD +QCD_Pt-30to50_MuEnriched 1652471.46 -28 #d0cfd4 QCD +QCD_Pt-50to80_MuEnriched 437504.1 29 #d0cfd4 QCD +QCD_Pt-80to120_MuEnriched 106033.6648 30 #d0cfd4 QCD +QCD_Pt-120to170_MuEnriched 25190.51514 31 #d0cfd4 QCD +QCD_Pt-170to300_MuEnriched 8654.49315 32 #d0cfd4 QCD +QCD_Pt-300to470_MuEnriched 797.35269 33 #d0cfd4 QCD +QCD_Pt-470to600_MuEnriched 79.02553776 34 #d0cfd4 QCD +QCD_Pt-600to800_MuEnriched 25.09505908 35 #d0cfd4 QCD +QCD_Pt-800to1000_MuEnriched 4.707368272 36 #d0cfd4 QCD +QCD_Pt-1000toInf_MuEnriched 1.62131692 37 #d0cfd4 QCD +QCD_Pt-20to30_EMEnriched 5352960 38 #d0cfd4 QCD +QCD_Pt-30to50_EMEnriched 9928000 39 #d0cfd4 QCD +QCD_Pt-50to80_EMEnriched 2890800 40 #d0cfd4 QCD +QCD_Pt-80to120_EMEnriched 350000 41 #d0cfd4 QCD +QCD_Pt-120to170_EMEnriched 62964 42 #d0cfd4 QCD +QCD_Pt-170to300_EMEnriched 18810 43 #d0cfd4 QCD +QCD_Pt-300toInf_EMEnriched 1350 44 #d0cfd4 QCD diff --git a/samples/xsec16_oldTune.txt b/samples/xsec16_oldTune.txt new file mode 100644 index 0000000..8c236f7 --- /dev/null +++ b/samples/xsec16_oldTune.txt @@ -0,0 +1,62 @@ +Sample Xsec DrawOrder Color Legend +TTLJ_PowhegPythia_ttbb 365.34 -1 #330000 ttbb +TTLJ_PowhegPythia_ttbj 365.34 -1 #660000 ttbj +TTLJ_PowhegPythia_ttcc 365.34 -2 #990000 ttcc +TTLJ_PowhegPythia_ttLF 365.34 -3 #cc0000 ttLF +TTLJ_PowhegPythia_ttother 365.34 -4 #ff6666 ttbkg +TT_PowhegPythiaBkg 831.76 -5 #ff6666 ttbkg +TTLJ_PowhegPythiaTuneCP5_ttbb 365.34 1 #330000 ttbb +TTLJ_PowhegPythiaTuneCP5_ttbj 365.34 2 #660000 ttbj +TTLJ_PowhegPythiaTuneCP5_ttcc 365.34 3 #990000 ttcc +TTLJ_PowhegPythiaTuneCP5_ttLF 365.34 4 #cc0000 ttLF +TTLJ_PowhegPythiaTuneCP5_ttother 365.34 5 #ff6666 ttbkg +TTLJ_PowhegPythiaTuneCP5_ttbkg 365.34 6 #ff6666 ttbkg +TTLL_PowhegPythiaTuneCP5_ttbkg 88.29 7 #ff6666 ttbkg +TTJJ_PowhegPythiaTuneCP5_ttbkg 377.96 8 #ff6666 ttbkg +SingleTop_s_aMCatNLOPythia 3.36 -6 #990099 SingleT +SingleTop_t_PowhegPythia 136.02 -7 #990099 SingleT +SingleTop_tW_PowhegPythia 35.85 -8 #990099 SingleT +SingleTbar_t_PowhegPythia 80.95 -9 #990099 SingleT +SingleTbar_tW_PowhegPythia 35.85 -10 #990099 SingleT +SingleTop_s_aMCatNLOPythiaTuneCP5 3.36 9 #990099 SingleT +SingleTop_t_PowhegPythiaTuneCP5 136.02 10 #990099 SingleT +SingleTop_tW_PowhegPythiaTuneCP5 35.85 11 #990099 SingleT +SingleTbar_t_PowhegPythiaTuneCP5 80.95 12 #990099 SingleT +SingleTbar_tW_PowhegPythiaTuneCP5 35.85 13 #990099 SingleT +ttZToQQ_aMCatNLOMadspinPythia 0.5297 11 #ff66ff ttX +ttZToLLNuNu_aMCatNLOMadspinPythia 0.2529 12 #ff66ff ttX +ttWToQQ_aMCatNLOMadspinPythia 0.4062 13 #ff66ff ttX +ttWToLNu_aMCatNLOMadspinPythia 0.2043 14 #ff66ff ttX +ttHTobb_PowhegPythia 0.2934 -15 #ff66ff ttX +ttHToNonbb_PowhegPythia 0.2151 -16 #ff66ff ttX +ttHTobb_PowhegPythiaTuneCP5 0.2934 14 #ff66ff ttX +ttHToNonbb_PowhegPythiaTuneCP5 0.2151 15 #ff66ff ttX +WW_Pythia 118.7 17 #00cccc VV +WZ_Pythia 47.13 18 #00cccc VV +ZZ_Pythia 16.523 19 #00cccc VV +ZJets_M10to50_MadgraphPythia 18610 20 #000099 ZJets +ZJets_M50_aMCatNLOPythia 6077.22 21 #000099 ZJets +WJetsToLNu_MadgraphPythia 61526.7 -16 #ff9933 WJets +W1JetsToLNu_MadgraphPythia 9625 22 #ff9933 WJets +W2JetsToLNu_MadgraphPythia 2793 23 #ff9933 WJets +W3JetsToLNu_MadgraphPythia 992.5 24 #ff9933 WJets +W4JetsToLNu_MadgraphPythia 544.3 25 #ff9933 WJets +QCD_Pt-15to20_MuEnriched 3819570 26 #d0cfd4 QCD +QCD_Pt-20to30_MuEnriched 2960198.4 27 #d0cfd4 QCD +QCD_Pt-30to50_MuEnriched 1652471.46 28 #d0cfd4 QCD +QCD_Pt-50to80_MuEnriched 437504.1 29 #d0cfd4 QCD +QCD_Pt-80to120_MuEnriched 106033.6648 30 #d0cfd4 QCD +QCD_Pt-120to170_MuEnriched 25190.51514 31 #d0cfd4 QCD +QCD_Pt-170to300_MuEnriched 8654.49315 32 #d0cfd4 QCD +QCD_Pt-300to470_MuEnriched 797.35269 33 #d0cfd4 QCD +QCD_Pt-470to600_MuEnriched 79.02553776 34 #d0cfd4 QCD +QCD_Pt-600to800_MuEnriched 25.09505908 35 #d0cfd4 QCD +QCD_Pt-800to1000_MuEnriched 4.707368272 36 #d0cfd4 QCD +QCD_Pt-1000toInf_MuEnriched 1.62131692 37 #d0cfd4 QCD +QCD_Pt-20to30_EMEnriched 5352960 38 #d0cfd4 QCD +QCD_Pt-30to50_EMEnriched 9928000 39 #d0cfd4 QCD +QCD_Pt-50to80_EMEnriched 2890800 40 #d0cfd4 QCD +QCD_Pt-80to120_EMEnriched 350000 41 #d0cfd4 QCD +QCD_Pt-120to170_EMEnriched 62964 42 #d0cfd4 QCD +QCD_Pt-170to300_EMEnriched 18810 43 #d0cfd4 QCD +QCD_Pt-300toInf_EMEnriched 1350 44 #d0cfd4 QCD diff --git a/samples/xsec17.txt b/samples/xsec17.txt index e36864c..ccd9446 100644 --- a/samples/xsec17.txt +++ b/samples/xsec17.txt @@ -10,11 +10,11 @@ ZJets_M50_aMCatNLOPythia 6225.42 22 #000099 ZJets ZJets_M10to50_MadgraphPythia 18610.0 23 #000099 ZJets WZ_Pythia 47.13 20 #00cccc VV WW_Pythia 118.7 19 #00cccc VV -WJetsToLNu_MadgraphPythia 61526.7 24 #ff9933 WJets -W4JetsToLNu_MadgraphPythia 544.3 -25 #ff9933 WJets -W3JetsToLNu_MadgraphPythia 992.5 -26 #ff9933 WJets -W2JetsToLNu_MadgraphPythia 2793 -27 #ff9933 WJets -W1JetsToLNu_MadgraphPythia 9625 -28 #ff9933 WJets +WJetsToLNu_MadgraphPythia 61526.7 -24 #ff9933 WJets +W4JetsToLNu_MadgraphPythia 544.3 25 #ff9933 WJets +W3JetsToLNu_MadgraphPythia 992.5 26 #ff9933 WJets +W2JetsToLNu_MadgraphPythia 2793 27 #ff9933 WJets +W1JetsToLNu_MadgraphPythia 9625 28 #ff9933 WJets TTLL_PowhegPythiaBkg 88.29 5 #ff6666 ttbkg TTLJ_PowhegPythia_ttother 365.34 4 #ff6666 ttbkg TTLJ_PowhegPythia_ttcc 365.34 2 #990000 ttcc diff --git a/ttbbDiffXsec/preProcess.C b/ttbbDiffXsec/preProcess.C deleted file mode 100644 index 6d04ceb..0000000 --- a/ttbbDiffXsec/preProcess.C +++ /dev/null @@ -1,58 +0,0 @@ -void preProcess(std::string year){ - std::cout << "Run Pre-process, year: " << year << std::endl; - std::vector v_process = {"data_obs", "ttbb", "ttbj", "ttcc", "ttLF", "ttbkg", "other"}; - std::vector v_variable = {"DeltaR", "InvMass"}; - TFile *f_out; - if ( year != "19" ){ - f_out = TFile::Open(Form("../output/postfit/%s/hist_postfit.root", year.c_str()), "recreate"); - TFile *f_post = TFile::Open(Form("../output/postfit/datacards_200114_run20%s_2/ttbb/postfit_shapes_ttbb_Discriminant_bb_All.root", year.c_str())); - for( int i=0; i < 2; ++i ){ - f_out->cd(); - for( unsigned int j = 0; j < v_process.size(); ++j ){ - auto tmp0 = (TH1 *)f_post->Get(Form("bb_%s_postfit/%s", v_variable[i], v_process[j])); - tmp0->SetName(Form("h_mindR_RecoAddbJet%s_Ch2_S3_%s", v_variable[i], v_process[j])); - tmp0->Scale(2.0); - tmp0->Write(); - if( j == 1 ){ - auto *h_ratio = (TH1 *)tmp0->Clone(); - auto *h_prefit0 = (TH1 *)f_post->Get(Form("bb_%s_prefit/ttbb", v_variable[i])); - h_prefit0->Scale(2.0); - h_ratio->Divide(h_prefit0); - h_ratio->SetName(Form("h_mindR_RecoAddbJet%s_Ch2_S3_ratio", v_variable[i])); - h_ratio->Write(); - h_ratio->Draw("hist"); - } - } - } - } - else{ - TFile *f_post17 = TFile::Open(Form("../output/postfit/datacards_200114_run2017_2/ttbb/postfit_shapes_ttbb_Discriminant_bb_All.root")); - TFile *f_post18 = TFile::Open(Form("../output/postfit/datacards_200114_run2018_2/ttbb/postfit_shapes_ttbb_Discriminant_bb_All.root")); - f_out = TFile::Open(Form("../output/postfit/19/hist_postfit.root"), "recreate"); - for( int i = 0; i < 2; ++i ){ - f_out->cd(); - for ( unsigned int j = 0; j < v_process.size(); ++j ){ - auto tmp0 = (TH1 *)f_post17->Get(Form("bb_%s_postfit/%s", v_variable[i], v_process[j])); - auto tmp1 = (TH1 *)f_post18->Get(Form("bb_%s_postfit/%s", v_variable[i], v_process[j])); - tmp0->Scale(2.0); - tmp1->Scale(2.0); - tmp0->Add(tmp1); - tmp0->SetName(Form("h_mindR_RecoAddbJet%s_Ch2_S3_%s", v_variable[i], v_process[j])); - tmp0->Write(); - if( j == 1 ){ - auto *h_ratio = (TH1 *)tmp0->Clone(); - auto *h_prefit0 = (TH1 *)f_post17->Get(Form("bb_%s_prefit/ttbb", v_variable[i])); - auto *h_prefit1 = (TH1 *)f_post18->Get(Form("bb_%s_prefit/ttbb", v_variable[i])); - h_prefit0->Scale(2.0); - h_prefit1->Scale(2.0); - h_prefit0->Add(h_prefit1); - h_ratio->Divide(h_prefit0); - h_ratio->SetName(Form("h_mindR_RecoAddbJet%s_Ch2_S3_ratio", v_variable[i])); - h_ratio->Write(); - h_ratio->Draw("hist"); - } - } - } - } - f_out->Close(); -} diff --git a/ttbbDiffXsec/runUnfold.py b/ttbbDiffXsec/runUnfold.py deleted file mode 100755 index 9781e2d..0000000 --- a/ttbbDiffXsec/runUnfold.py +++ /dev/null @@ -1,86 +0,0 @@ -import os -import sys -from ROOT import * -import ROOT - -import argparse -import subprocess - -parser = argparse.ArgumentParser(description='Unfolding process') - -parser.add_argument('-d', '--data', required=True, help='Input data type') -parser.add_argument('-a', '--acceptance', required=False, default="False", help='Run acceptance') -parser.add_argument('-u', '--unfold', required=False, default="True", help='Run unfold') -parser.add_argument('-y', '--year', required=False, type=int, default=9999, help='Run special year') -parser.add_argument('-s', '--sys', required=False, default="False", help='Run systematics') -parser.add_argument('-t', '--tunfold', required=False, default="True", help='Unfold by TUnfold') -parser.add_argument('-m', '--matrix', required=False, default="", help='Set input matrix') -parser.add_argument('-f', '--fixtau', required=False, default="False", help='Fix tau') - -args = parser.parse_args() - -def runAcceptance(year, ttbb, runSys): - cmd = ['root', '-l', '-b', '-q', 'makeAcceptance.C("'+str(year)+'", "'+ttbb+'", '+runSys+')'] - with open('../output/unfold/'+str(year)+'/acceptance.txt','w') as f_out: - subprocess.call(cmd, stdout=f_out) - -def runUnfold(year, matrix_name, isData, runSys, useTUnfold, fixtau): - out = "mc" - if isData == 'true': out = "data" - cmd = ['root', '-l', '-b', '-q', 'ttbbDiffXsec.C+("'+str(year)+'", "'+matrix_name+'", '+isData+', '+runSys+', '+useTUnfold+', '+fixtau+')'] - cmd2 = ['root', '-l', '-b', '-q', 'drawUnfoldedHist.C("'+str(year)+'",'+isData+')'] - with open('../output/unfold/'+str(year)+'/result_'+out+'.txt','w') as f_out: - subprocess.call(cmd, stdout=f_out) - subprocess.call(cmd2) - -for year in range(16,20): - # Arguments - # year - if args.year == 16 or args.year == 2016: - if year != 16: continue - if args.year == 17 or args.year == 2017: - if year != 17: continue - if args.year == 18 or args.year == 2018: - if year != 18: continue - if args.year == 19 or args.year == 2019: - if year != 19: continue - - # sys - runSys = 'false' - args.sys = (args.sys).lower() - if args.sys == 'true': runSys = 'true' - # acceptance - runAcc = False - args.acceptance = (args.acceptance).lower() - if args.acceptance == "true": runAcc = True - if runAcc: runAcceptance(year, "TTLJ_PowhegPythia_ttbb", runSys) - # data - isData = 'false' - args.data = (args.data).lower() - if args.data == 'true': isData = 'true' - # tunfold - useTUnfold = 'false' - args.tunfold = (args.tunfold).lower() - if args.tunfold == 'true': useTUnfold = 'true' - # matrix - if args.matrix == "": - matrix_name = "ResponseMatrix_ttbb" - else: - matrix_name = args.matrix - - fixtau= 'false' - args.fixtau = (args.fixtau).lower() - if args.fixtau == 'true': fixtau= 'true' - - if not os.path.exists('../output/unfold'): - os.mkdir('../output/unfold') - - if not os.path.exists('../output/unfold/'+str(year)): - os.mkdir('../output/unfold/'+str(year)) - - print("Year: "+str(year)) - print("Matrix: "+matrix_name) - runUnf = False - args.unfold = (args.unfold).lower() - if args.unfold == "true": runUnf = True - if runUnf: runUnfold(year, matrix_name, isData, runSys, useTUnfold, fixtau) diff --git a/ttbbDiffXsec/ttbbDiffXsec.C b/ttbbDiffXsec/ttbbDiffXsec.C deleted file mode 100644 index 61c769f..0000000 --- a/ttbbDiffXsec/ttbbDiffXsec.C +++ /dev/null @@ -1,440 +0,0 @@ -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include "ttbbDiffXsec.h" -#include "runTUnfold.C" -#include "preProcess.C" -//#include "runSVDUnfold.C" - -void ttbbDiffXsec(std::string year, const char * matrix_name, bool isData, bool runSystematics, bool useTUnfold, bool fixtau){ - std::cout << "Start ttbbDiffXsec" << std::endl; - size_t pos; - //gErrorIgnoreLevel = kFatal; // kWarning - gROOT->ProcessLine("setTDRStyle();"); - - std::string input_mc_dir = "../output/root" + year; - std::string input_data_dir = "../output/root" + year; - std::string output_dir = "../output/unfold/" + year; - const char *outname; - if(isData){ - input_data_dir = "../output/postfit/" + year; - outname = "data"; - preProcess(year); - } - else outname = "ttbb"; - - if(year == "19") year = "18"; - - double lumi = 1.0; - lumi = m_lumi[year]; - std::string ttbb = "TTLJ_PowhegPythia_ttbb"; - - std::string test = ""; - if(year == "16") test = ttbb; - else test = "ResponseMatrix_ttbb"; - - std::cout << "Load sample informations..." << std::endl; - - std::vector syst_matrix = syst_ttbar; - std::vector syst_bkg = syst_basic; - std::vector syst_accpt = syst_total; - //syst_accpt.insert(syst_accpt.end(), syst_basic.begin(), syst_basic.end()); - if( year == "16" || year == "2016" ){ - syst_accpt.push_back("__musfup"); syst_accpt.push_back("__musfdown"); - syst_accpt.push_back("__elsfup"); syst_accpt.push_back("__elsfdown"); - } - else{ - syst_accpt.push_back("__muidup"); syst_accpt.push_back("__muiddown"); - syst_accpt.push_back("__muisoup"); syst_accpt.push_back("__muisodown"); - syst_accpt.push_back("__elidup"); syst_accpt.push_back("__eliddown"); - syst_accpt.push_back("__elrecoup"); syst_accpt.push_back("__elrecodown"); - syst_accpt.push_back("__elzvtxup"); syst_accpt.push_back("__elzvtxdown"); - } - - std::string tmp_str; - std::string tmp_name; double tmp_value; - - ifstream sample(Form("../samples/sample%s.txt", year.c_str())); - std::vector v_sample_name; - while(getline(sample, tmp_str)){ - if( (pos = tmp_str.find("ntuple",0)) != std::string::npos ) continue; - v_sample_name.push_back(tmp_str); - } - sample.close(); - - ifstream xsec(Form("../samples/xsec%s.txt", year.c_str())); - std::map m_xsec; - while(getline(xsec, tmp_str)){ - if( (pos = tmp_str.find("Sample",0)) != std::string::npos ) continue; - std::stringstream ss; - ss.str(tmp_str); - ss >> tmp_name; - ss >> tmp_value; - m_xsec.insert(pair(tmp_name, tmp_value)); - } - xsec.close(); - - ifstream genevt(Form("../samples/genevt%s.txt", year.c_str())); - std::map m_genevt; - while(getline(genevt, tmp_str)){ - std::stringstream ss; - ss.str(tmp_str); - ss >> tmp_name; - ss >> tmp_value; - m_genevt.insert(pair(tmp_name, tmp_value)); - } - genevt.close(); - - ifstream sf(Form("../samples/scale%s.txt", year.c_str())); - std::map m_sf; - while(getline(sf, tmp_str)){ - std::stringstream ss; - ss.str(tmp_str); - ss >> tmp_name; - ss >> tmp_value; - if(year == "16") tmp_value = 1; - m_sf.insert(pair(tmp_name, tmp_value)); - } - sf.close(); - - ifstream tau(Form("tau/tau%s.txt", year.c_str())); - std::map m_tau; - while(getline(tau, tmp_str)){ - std::stringstream ss; - ss.str(tmp_str); - ss >> tmp_name; - ss >> tmp_value; - m_tau.insert(pair(tmp_name, tmp_value)); - } - - double fixedtau_dR = m_tau["fixedtau_dR"]; - double taumin_dR = m_tau["taumin_dR"]; - double taumax_dR = m_tau["taumax_dR"]; - - double fixedtau_M = m_tau["fixedtau_M"]; - double taumin_M = m_tau["taumin_M"]; - double taumax_M = m_tau["taumax_M"]; - - std::cout << "Load Files..." << std::endl; - - TFile *f_out = TFile::Open(Form("%s/hist_unfolded_%s.root", output_dir.c_str(), outname),"recreate"); - TFile *f_input; - TFile *f_matrix = TFile::Open(Form("%s/hist_%s.root", input_mc_dir.c_str(), matrix_name)); - TFile *f_accept = TFile::Open(Form("%s/hist_accept_%s.root", input_mc_dir.c_str(), genMode)); - TFile *f_ratio = TFile::Open(Form("../output/postfit/%s/hist_postfit.root", year.c_str())); - if(isData){ - f_input = TFile::Open(Form("%s/hist_postfit.root", input_data_dir.c_str())); - } - else{ - f_input = TFile::Open(Form("%s/hist_%s.root", input_mc_dir.c_str(), test.c_str())); - } - TFile *f_ttbb = TFile::Open(Form("%s/hist_%s.root", input_mc_dir.c_str(), ttbb.c_str())); - - std::cout << "Input file: " << f_input << " " << f_input->GetName() << std::endl; - std::cout << "Acceptance file: " << f_accept << " " << f_accept->GetName() << std::endl; - std::cout << "Matrix file: " << f_matrix << " " << f_matrix->GetName() << std::endl; - std::cout << "ttbb file: " << f_ttbb << " " << f_ttbb->GetName() << std::endl; - std::cout << "Load histograms..." << std::endl; - - TH2 *h_resp_dR[nChannel], *h_resp_M[nChannel]; - TH1 *h_data_dR[nChannel], *h_data_M[nChannel]; - TH1 *h_reco_dR[nChannel], *h_reco_M[nChannel]; - TH1 *h_gen_dR[nChannel], *h_gen_M[nChannel]; - TH1 *h_gen_nosel_dR[nChannel], *h_gen_nosel_M[nChannel]; - - TH2 *h_resp_dR_copy[nChannel], *h_resp_M_copy[nChannel]; - TH1 *h_reco_ratio_dR[nChannel], *h_reco_ratio_M[nChannel]; - TH1 *h_gen_ratio_dR[nChannel], *h_gen_ratio_M[nChannel]; - - for(int ich=0; ichGet(Form("h_%s_%s_Ch%d_S3", genMode, MATRIX_DR_, ich)); - h_resp_M[ich] = (TH2 *)f_matrix->Get(Form("h_%s_%s_Ch%d_S3", genMode, MATRIX_M_, ich)); - h_resp_dR_copy[ich] = (TH2 *)h_resp_dR[ich]->Clone(); - h_resp_dR_copy[ich]->SetName(Form("h_%s_%s_Ch%d_S3_copy", genMode, MATRIX_DR_, ich)); - h_resp_M_copy[ich] = (TH2 *)h_resp_M[ich]->Clone(); - h_resp_M_copy[ich]->SetName(Form("h_%s_%s_Ch%d_S3_copy", genMode, MATRIX_M_, ich)); - - h_reco_dR[ich] = (TH1 *)f_ttbb->Get(Form("h_%s_%s_Ch%d_S3", genMode, RECO_ADD_DR_, ich)); - h_reco_M[ich] = (TH1 *)f_ttbb->Get(Form("h_%s_%s_Ch%d_S3", genMode, RECO_ADD_M_, ich)); - if(isData){ - h_data_dR[ich] = (TH1 *)f_input->Get(Form("h_%s_%s_Ch%d_S3_data_obs", genMode, RECO_ADD_DR_, ich)); - h_data_M[ich] = (TH1 *)f_input->Get(Form("h_%s_%s_Ch%d_S3_data_obs", genMode, RECO_ADD_M_, ich)); - - h_gen_dR[ich] = (TH1 *)f_ttbb->Get(Form("h_%s_%s_Ch%d_S3", genMode, GEN_ADD_DR_, ich)); - h_gen_M[ich] = (TH1 *)f_ttbb->Get(Form("h_%s_%s_Ch%d_S3", genMode, GEN_ADD_M_, ich)); - - h_reco_ratio_dR[ich] = (TH1 *)f_input->Get(Form("h_%s_%s_Ch%d_S3_ratio", genMode, RECO_ADD_DR_, ich)); - h_reco_ratio_M[ich] = (TH1 *)f_input->Get(Form("h_%s_%s_Ch%d_S3_ratio", genMode, RECO_ADD_M_, ich)); - } - else{ - h_data_dR[ich] = (TH1 *)f_input->Get(Form("h_%s_%s_Ch%d_S3", genMode, RECO_ADD_DR_, ich)); - h_data_M[ich] = (TH1 *)f_input->Get(Form("h_%s_%s_Ch%d_S3", genMode, RECO_ADD_M_, ich)); - - h_reco_ratio_dR[ich] = (TH1 *)f_ratio->Get(Form("h_%s_%s_Ch%d_S3_ratio", genMode, RECO_ADD_DR_, ich)); - h_reco_ratio_M[ich] = (TH1 *)f_ratio->Get(Form("h_%s_%s_Ch%d_S3_ratio", genMode, RECO_ADD_M_, ich)); - - if( year == "16" ){ - h_gen_dR[ich] = (TH1 *)f_ttbb->Get(Form("h_%s_%s_Ch%d_S3", genMode, GEN_ADD_DR_, ich)); - h_gen_M[ich] = (TH1 *)f_ttbb->Get(Form("h_%s_%s_Ch%d_S3", genMode, GEN_ADD_M_, ich)); - } - else{ - h_gen_dR[ich] = (TH1 *)f_matrix->Get(Form("h_%s_%s_Ch%d_S3", genMode, GEN_ADD_DR_, ich)); - h_gen_M[ich] = (TH1 *)f_matrix->Get(Form("h_%s_%s_Ch%d_S3", genMode, GEN_ADD_M_, ich)); - } - } - h_gen_nosel_dR[ich] = (TH1 *)f_ttbb->Get(Form("h_%s_%s_Ch%d_nosel", genMode, GEN_ADD_DR_, ich )); - h_gen_nosel_M[ich] = (TH1 *)f_ttbb->Get(Form("h_%s_%s_Ch%d_nosel", genMode, GEN_ADD_M_, ich )); - } - - std::cout << "Save histograms in std::map..." << std::endl; - - std::map m_sys_dR[nChannel], m_sys_M[nChannel]; - for(int ich=0; ichGet("EventInfo"); - //double scale = m_sf[matrix_name]*lumi*m_xsec[matrix_name]/EventInfo->GetBinContent(2); - //h_resp_dR[ich]->Scale(scale); h_resp_M[ich]->Scale(scale); - - // Apply fitting results - //if( isData ){ - if( ich == 2){ - for( int iybin = 1; iybin <= h_resp_dR[ich]->GetNbinsY(); ++iybin ){ - for( int ixbin = 1; ixbin <= h_resp_dR[ich]->GetNbinsX(); ++ixbin ){ - auto tmp = h_resp_dR[ich]->GetBinContent(ixbin, iybin); - tmp *= h_reco_ratio_dR[ich]->GetBinContent(ixbin); - h_resp_dR[ich]->SetBinContent(ixbin, iybin, tmp); - } - } - for( int iybin = 1; iybin <= h_resp_M[ich]->GetNbinsY(); ++iybin ){ - for( int ixbin = 1; ixbin <= h_resp_M[ich]->GetNbinsX(); ++ixbin ){ - auto tmp = h_resp_M[ich]->GetBinContent(ixbin, iybin); - tmp *= h_reco_ratio_M[ich]->GetBinContent(ixbin); - h_resp_M[ich]->SetBinContent(ixbin, iybin, tmp); - } - } - } - //} - - f_out->cd(); - TH1 *tmp_projY_dR = (TH1 *)h_resp_dR_copy[ich]->ProjectionY(); - TH1 *tmp_projY_M = (TH1 *)h_resp_M_copy[ich]->ProjectionY(); - TH1 *tmp_projY_dR2 = (TH1 *)h_resp_dR[ich]->ProjectionY(); - TH1 *tmp_projY_M2 = (TH1 *)h_resp_M[ich]->ProjectionY(); - h_gen_ratio_dR[ich] = (TH1 *)tmp_projY_dR2->Clone(); - h_gen_ratio_dR[ich]->Divide(tmp_projY_dR); - h_gen_ratio_dR[ich]->SetName(Form("h_%s_%s_Ch%d_S3_ratio", genMode, GEN_ADD_DR_, ich)); - h_gen_ratio_M[ich] = (TH1 *)tmp_projY_M2->Clone(); - h_gen_ratio_M[ich]->Divide(tmp_projY_M); - h_gen_ratio_M[ich]->SetName(Form("h_%s_%s_Ch%d_S3_ratio", genMode, GEN_ADD_M_, ich)); - - if( !isData and runSystematics ){ - for(auto v_itr = syst_matrix.begin(); v_itr != syst_matrix.end(); ++v_itr){ - TH2 *tmp_dR, *tmp_M; - tmp_dR = (TH2 *)f_matrix->Get(Form("h_%s_%s_Ch%d_S3%s", genMode, MATRIX_DR_, ich, (*v_itr).c_str())); - tmp_M = (TH2 *)f_matrix->Get(Form("h_%s_%s_Ch%d_S3%s", genMode, MATRIX_M_, ich, (*v_itr).c_str())); - //tmp_dR->Scale(scale); tmp_M->Scale(scale); - m_sys_dR[ich].insert(pair((*v_itr).c_str(), tmp_dR)); - m_sys_M[ich].insert(pair((*v_itr).c_str(), tmp_M)); - } - } - } - - std::map m_bkg_dR[nChannel], m_bkg_M[nChannel]; - std::map m_scale; - std::vector v_bkg = { "ttbj", "ttcc", "ttLF", "ttbkg", "other" }; - if( isData ){ - for( auto v_itr = v_bkg.begin(); v_itr != v_bkg.end(); ++v_itr ){ - m_scale.insert(pair(*v_itr, 1)); - for( int ich=0; ich < nChannel; ++ich){ - if( ich != 2 ) continue; - auto tmp_dR = (TH1 *)f_input->Get(Form("h_%s_%s_Ch%d_S3_%s", genMode, RECO_ADD_DR_, ich, *v_itr)); - m_bkg_dR[ich].insert(pair(*v_itr, tmp_dR)); - auto tmp_M = (TH1 *)f_input->Get(Form("h_%s_%s_Ch%d_S3_%s", genMode, RECO_ADD_M_, ich, *v_itr)); - m_bkg_M[ich].insert(pair(*v_itr, tmp_M)); - } - } - } - else{ - std::cout << "Normalize input MC" << std::endl; - double scale = lumi*m_xsec[ttbb]/m_genevt[ttbb]; - for(int ich=0; ich < nChannel; ++ich){ - h_data_dR[ich]->Scale(scale); h_data_M[ich]->Scale(scale); - if( ich == 2){ - h_data_dR[ich]->Multiply(h_reco_ratio_dR[ich]); - h_data_M[ich]->Multiply(h_reco_ratio_M[ich]); - } - } - } - // Background systematic unceratinty will be updated... - std::cout << "Normalize ttbb distributions" << std::endl; - double scale = lumi*m_xsec[ttbb]/m_genevt[ttbb]; - for(int ich=0; ich < nChannel; ++ich){ - h_reco_dR[ich]->Scale(scale); h_reco_M[ich]->Scale(scale); - h_gen_dR[ich]->Scale(scale); h_gen_M[ich]->Scale(scale); - h_gen_nosel_dR[ich]->Scale(scale); h_gen_nosel_M[ich]->Scale(scale); - } - - f_out->cd(); - cout << "Start unfolding..." << endl; - - for(int ich=0; ich v_unfolded_dR, v_unfolded_M; - std::vector v_test_dR, v_test_M; - std::map m_unbkgsys_dR, m_unbkgsys_M; - if( useTUnfold ){ - v_unfolded_dR = runTUnfold( - output_dir, input.c_str(), h_data_dR[ich], h_resp_dR[ich], - m_bkg_dR[ich], m_scale, m_sys_dR[ich], - scanLcurve, taumin_dR, taumax_dR, fixtau, fixedtau_dR); - v_unfolded_M = runTUnfold( - output_dir, input.c_str(), h_data_M[ich], h_resp_M[ich], - m_bkg_M[ich], m_scale, m_sys_M[ich], - scanLcurve, taumin_M, taumax_M, fixtau, fixedtau_M); - } - /*else{ - if(findBestK){ - cout << "Find Best k" << endl; - vector v_bestk_dR, v_bestk_M, v_bestk_dEta, v_bestk_dPhi; - for(int i=2; i < nbins_gen_addbjets_dR; ++i){ - vector v_tmp_dR = runSVDUnfold( - h_data_dR[ich], h_resp_dR[ich], - std::map(), std::map(), - std::map(), i - ); - v_bestk_dR.push_back(v_tmp_dR[0]); - } - for(int i=2; i < nbins_gen_addbjets_M; ++i){ - vector v_tmp_M = runSVDUnfold( - h_data_M[ich], h_resp_M[ich], - std::map(), std::map(), - std::map(), i - ); - v_bestk_M.push_back(v_tmp_M[0]); - } - for(int i=2; i < nbins_gen_addbjets_dEta; ++i){ - vector v_tmp_dEta = runSVDUnfold( - h_data_dEta[ich], h_resp_dEta[ich], - std::map(), std::map(), - std::map(), i - ); - v_bestk_dEta.push_back(v_tmp_dEta[0]); - } - for(int i=2; i < nbins_gen_addbjets_dPhi; ++i){ - vector v_tmp_dPhi = runSVDUnfold( - h_data_dPhi[ich], h_resp_dPhi[ich], - std::map(), std::map(), - std::map(), i - ); - v_bestk_dPhi.push_back(v_tmp_dPhi[0]); - } - findBestk(input.c_str(), v_unfolded_dR, h_gen_dR[ich]); - findBestk(input.c_str(), v_unfolded_M, h_gen_M[ich]); - findBestk(input.c_str(), v_unfolded_dEta, h_gen_dEta[ich]); - findBestk(input.c_str(), v_unfolded_dPhi, h_gen_dPhi[ich]); - } - v_unfolded_dR = runSVDUnfold( - h_data_dR[ich], h_resp_dR[ich], - m_bkg_dR[ich], m_scale, m_sys_dR[ich], reg_dR); - v_unfolded_M = runSVDUnfold( - h_data_M[ich], h_resp_M[ich], - m_bkg_M[ich], m_scale, m_sys_M[ich], reg_M); - v_unfolded_dEta = runSVDUnfold( - h_data_dEta[ich], h_resp_dEta[ich], - m_bkg_dEta[ich], m_scale, m_sys_dEta[ich], reg_dEta); - v_unfolded_dPhi = runSVDUnfold( - h_data_dPhi[ich], h_resp_dPhi[ich], - m_bkg_dPhi[ich], m_scale, m_sys_dPhi[ich], reg_dPhi); - }*/ - - cout << "Save unfolded histograms" << endl; - - TH1 *h_unfolded_dR, *h_unfolded_M; - h_unfolded_dR = v_unfolded_dR[0]; - h_unfolded_M = v_unfolded_M[0]; - h_unfolded_dR->Divide(h_gen_ratio_dR[ich]); - h_unfolded_M->Divide(h_gen_ratio_M[ich]); - - TH1 *h_input_dR, *h_input_M; - h_input_dR = v_unfolded_dR[1]; - h_input_M = v_unfolded_M[1]; - - TH1 *h_acc_dR = (TH1 *)f_accept->Get(Form("h_%s_Ch%d", ACC_DR_, ich)); - TH1 *h_acc_M = (TH1 *)f_accept->Get(Form("h_%s_Ch%d", ACC_M_, ich)); - - TH1 *h_MC_diffXsec_nosel_dR = calculateDiffXsec(year, h_gen_nosel_dR[2], NULL, true); - TH1 *h_MC_diffXsec_nosel_M = calculateDiffXsec(year ,h_gen_nosel_M[2], NULL, true); - TH1 *h_diffXsec_dR = calculateDiffXsec(year, h_unfolded_dR, h_acc_dR); - TH1 *h_diffXsec_M = calculateDiffXsec(year, h_unfolded_M, h_acc_M); - TH1 *h_diffXsec_from_gen_dR = calculateDiffXsec(year, h_gen_dR[ich], h_acc_dR); - TH1 *h_diffXsec_from_gen_M = calculateDiffXsec(year, h_gen_M[ich], h_acc_M); - - std::vectorv_dR_sys, v_M_sys; - if( runSystematics ){ - // Acceptance uncertainties - for(auto v_itr=syst_accpt.begin(); v_itr != syst_accpt.end(); ++v_itr){ - if ( *v_itr == "" ) continue; - TH1 *h_dR1 = (TH1 *)f_accept->Get(Form("h_%s_Ch%d%s", ACC_DR_, ich, (*v_itr).c_str())); - TH1 *h_dR2 = (TH1 *)calculateDiffXsec(year, h_unfolded_dR, h_dR1); - h_dR2->SetName(Form("%s_Acceptance%s", h_dR2->GetName(), (*v_itr).c_str())); - v_dR_sys.push_back(h_dR2); - - TH1 *h_M1 = (TH1 *)f_accept->Get(Form("h_%s_Ch%d%s", ACC_M_, ich, (*v_itr).c_str())); - TH1 *h_M2 = (TH1 *)calculateDiffXsec(year, h_unfolded_M, h_M1); - h_M2->SetName(Form("%s_Acceptance%s", h_M2->GetName(), (*v_itr).c_str())); - v_M_sys.push_back(h_M2); - } - - // Matrix uncertainties - for( unsigned int i=5; i < v_unfolded_dR.size(); ++i ){ - TH1 *h_dR = calculateDiffXsec(year, v_unfolded_dR.at(i), h_acc_dR); - TH1 *h_M = calculateDiffXsec(year, v_unfolded_M.at(i), h_acc_M); - h_dR->SetTitle(""); - h_M->SetTitle(""); - v_dR_sys.push_back(h_dR); - v_M_sys.push_back(h_M); - } - } - - //Save histograms - std::cout << "SAVE THE HISTOGRAMS" << std::endl; - if( isData ){ - h_gen_ratio_dR[ich]->Write(); h_gen_ratio_M[ich]->Write(); - h_reco_ratio_dR[ich]->Write(); h_reco_ratio_M[ich]->Write(); - } - h_acc_dR->Write(); h_acc_M->Write(); - h_unfolded_dR->Write(); h_unfolded_M->Write(); - h_input_dR->Write(); h_input_M->Write(); - h_resp_dR[ich]->Write(); h_resp_M[ich]->Write(); - h_resp_dR_copy[ich]->Write(); h_resp_M_copy[ich]->Write(); - h_reco_dR[ich]->Write(); h_reco_M[ich]->Write(); - h_gen_dR[ich]->Write(); h_gen_M[ich]->Write(); - h_diffXsec_dR->Write(); h_diffXsec_M->Write(); - h_diffXsec_from_gen_dR->Write(); h_diffXsec_from_gen_M->Write(); - h_MC_diffXsec_nosel_dR->Write(); h_MC_diffXsec_nosel_M->Write(); - v_unfolded_dR[2]->Write(); v_unfolded_M[2]->Write(); - v_unfolded_dR[3]->Write(); v_unfolded_M[3]->Write(); - v_unfolded_dR[4]->Write(); v_unfolded_M[4]->Write(); - //v_unfolded_dR[5]->Write(); v_unfolded_M[5]->Write(); - for(auto v_itr=v_dR_sys.begin(); v_itr != v_dR_sys.end(); ++v_itr) (*v_itr)->Write(); - for(auto v_itr=v_M_sys.begin(); v_itr != v_M_sys.end(); ++v_itr) (*v_itr)->Write(); - } - - std::cout << "Finish unfolding" << endl; - f_out->Close(); -} diff --git a/ui/__init__.py b/ui/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/ui/__init__.pyc b/ui/__init__.pyc new file mode 100644 index 0000000..1ef56ef Binary files /dev/null and b/ui/__init__.pyc differ diff --git a/ui/action.py b/ui/action.py new file mode 100644 index 0000000..e471a60 --- /dev/null +++ b/ui/action.py @@ -0,0 +1,152 @@ +import os +import sys +import textwrap + +def _get_config(self): + import yaml + try: + with open(os.path.join(self.base_path, self.cfg), 'r') as f: + self.config = yaml.load(f, Loader=yaml.FullLoader) + if not self.batch: self.cfg_status_lbl.setText(str("Success")) + except Exception as e: + if self.batch: + print(str(e)) + else: + self.log_qte.append(str(e)) + self.cfg_status_lbl.setText(str("Fail")) + + if not self.batch: self.log_qte.append("Setup configs: "+str(self.config)) + +def _run_cmd(self): + try: + if 'sample' in self.cmd: + from func import sampleinfo as si + c = si.SaveSamples(self.config['year'], self.config['ntuple'], self.sample_path) + + if not self.batch: self.cmd_status_lbl.setText(str("Success")) + + elif 'tselector' in self.cmd: + from func import slurm as sl + c = sl.MakeSlurmJob(self.config['year'], self.config['ntuple'], self.base_path, 'tselector.py') + if 'test' in self.cmd: + c.make_slurm_job(True, False) + elif 'qcd' in self.cmd: + c.make_slurm_job(False, True) + else: + c.make_slurm_job() + + if not self.batch: self.cmd_status_lbl.setText(str("Success")) + + elif 'DNN' in self.cmd: + if 'model' in self.cmd: + from func import dnn_model as mm + model = mm.MakeModel(self.config) + model.compile_train() + + elif 'n2a' in self.cmd: + from func import slurm as sl + c = sl.MakeSlurmJob(self.config['year'], self.config['ntuple'], self.base_path, 'dnn_n2a.py') + c.make_slurm_job() + + elif 'pred' in self.cmd: + outputDir = self.base_path+'/output/pred'+str(self.config['year']) + if not os.path.exists(outputDir): + os.makedirs(outputDir) + from func import dnn_pred as pd + pd.prediction(self.config['year'], self.config['array'], outputDir) + + elif 'hist' in self.cmd: + from func import slurm as sl + c = sl.MakeSlurmJob(self.config['year'], self.base_path+'/output/pred'+str(year), self.base_path, 'dnn_ana.py') + c.make_slurm_job() + + if not self.batch: self.cmd_status_lbl.setText(str("Success")) + + elif 'post' in self.cmd: + from func import postproc as pp + post = pp.PostProcess(self.base_path, self.output_path, self.config['year']) + if 'merge' in self.cmd: + post.merge_hist() + else: + post.do_post_process() + + if not self.batch: self.cmd_status_lbl.setText(str("Success")) + + elif 'qcd' in self.cmd: + post_path = self.base_path+'/output/post'+str(self.config['year']) + from func import qcd + qcd = qcd.GetQCDshape(self.config['year'], self.config['luminosity'], post_path) + qcd.get_qcd_shape() + + elif 'gen' in self.cmd: + post_path = self.base_path+'/output/post'+str(self.config['year']) + from func import genhist as gh + gen = gh.RunWithGenTree(self.config['ntuple'], 'TTLJ_PowhegPythia_ttbb', post_path) + gen.run_with_gen_tree() + + elif 'draw' in self.cmd: + post_path = self.base_path+'/output/post'+str(self.config['year']) + if 'table' in self.cmd: + output_path = self.output_path+'/table'+str(self.config['year']) + + from func import drawCutflowTable as cf + table = cf.DrawYieldsTable(self.config['year'], self.config['luminosity'], post_path, output_path) + table.draw_yields() + + if not self.batch: self.cmd_status_lbl.setText(str("Success")) + elif 'syst' in self.cmd: + output_path = self.output_path+'/syst'+str(self.config['year']) + + from func import drawSystPlots as sp + hist = sp.DrawSystPlots(self.config['year'], post_path, self.config['hist'], output_path) + hist.draw_histograms() + + if not self.batch: self.cmd_status_lbl.setText(str("Success")) + elif 'plotIt' in self.cmd: + text = textwrap.dedent("""\ + This command only make plotIt config files. + If you want to run plotIt, please activate SL7 environment first. + Setup command: source plotIt/setup_sl7_env.sh + plotIt command: plotIt plotIt/configs/config[YEAR].yml -o output/pdf/[YEAR] + """) + if not self.batch: + self.log_qte.append(text) + else: + print text + + from func import makePlotItConfigs as mpc + + config_path = os.path.join(self.base_path,'plotIt/configs') + make = mpc.MakeConfigs(self.config['year'], post_path, config_path) + make.make_file_configs() + make.make_histogram_configs() + + if not self.batch: self.cmd_status_lbl.setText(str("Success")) + + elif 'selection' in self.cmd: + text = textwrap.dedent("""\ + ...Event selection + Step 0: one lepton + Step 1: Step 0 + Njets >= 1 + Step 2: Step 0 + 2 <= Njets < 4 + Step 3: Step 0 + Njets >= 4 + Step 4: Step 3 + Nbjets >= 2 + Step 5: Step 0 + 2 <= Njets < 6 + Step 6: Step 0 + Njets >= 6 + Step 7: Step 6 + Nbjets >= 2 + Step 8: Step 6 + Nbjets >= 3 + Step 9: Step 6 + Nbjets >= 4 + """) + + if self.batch: + print text + else: + self.log_qte.append(text) + + else: + if not self.batch: self.cmd_status_lbl.setText(str("?")) + + except Exception as e: + if not self.batch: + self.log_qte.append(str(e)) + self.cmd_status_lbl.setText(str('Fail')) diff --git a/ui/action.pyc b/ui/action.pyc new file mode 100644 index 0000000..6b319f0 Binary files /dev/null and b/ui/action.pyc differ diff --git a/ui/batch.py b/ui/batch.py new file mode 100644 index 0000000..8445f2f --- /dev/null +++ b/ui/batch.py @@ -0,0 +1,96 @@ +import os +import sys +import subprocess +import argparse +from argparse import RawTextHelpFormatter +import textwrap + +def _write_config(self): + print textwrap.dedent("""\ + ...Write config file's location and name + ...Default config file: configs/config16.yml + """) + self.cfg = raw_input("...Config file: ") + if self.cfg == '': self.cfg = 'configs/config16.yml' + + try: + self._get_config() + print self._config + except Exception as e: + print(str(e)) + +def _select_command(self): + print textwrap.dedent("""\ + ...Select run option + 1. sample: save ntuple information + 2. tselector: run tselector for basic plots + 3. dnn: run dnn analyzer code + 4. qcd: run tselector for qcd estimation + 5. post: run post process + 6. draw: draw cut flow table and histograms\ + """) + + cmd = raw_input("...Choose option: selection/sample/tselector/dnn/qcd/post/draw/exit ") + if not any(i in cmd for i in ['selection','sample','tselector','dnn','qcd','post','draw','exit']): + print "...Wrong command" + exit(0) + if cmd == "exit": + exit(0) + + sub_cmd = '' + if cmd == 'tselector': + print textwrap.dedent("""\ + ...Select sub-option + 1. test: Test analyzer + 2. qcd: Run analyzer with anti-isolation selection + 3. common: Run basic plots + """) + sub_cmd = raw_input("Choose subcommand: test/qcd/common/exit ") + if not any(i in sub_cmd for i in ['test','qcd','common','exit']): + print "...Wrong command" + exit(0) + if sub_cmd == 'exit': exit(0) + + elif cmd == 'post': + print textwrap.dedent("""\ + ....Select sub-option + 1. merge: Merge root files + 2. scale: Scale histograms + """) + sub_cmd = raw_input("Choose subcommand: merge/scale/exit ") + if not any(i in sub_cmd for i in ['merge', 'scale', 'exit']): + print "...Wrong command" + exit(0) + if sub_cmd == 'exit': exit(0) + + elif cmd == 'dnn': + print textwrap.dedent("""\ + cmd in htop: conda activate py27 + ...Select sub-option + 1. model: Make DNN model + 2. n2a: make array from ntuple + 3. pred: predict DNN score + 4. hist: make DNN output histograms\ + """) + sub_cmd = raw_input("Choose subcommand: model/n2a/pred/hist/exit ") + if not any(i in sub_cmd for i in ['mode','n2a','pred','hist','exit']): + print "...Wrong command" + exit(0) + if sub_cmd == 'exit': exit(0) + + elif cmd == 'draw': + print textwrap.dedent("""\ + ...Select sub-option + 1. table: make cut flow table + 2. syst: draw systematic plot for each source + 3. plotIt: run plotter + 4. exit: Close program\ + """) + sub_cmd = raw_input("...Choose subcommand: table/syst/plotIt/exit ") + if not any(i in sub_cmd for i in ['table','syst','plotIt','exit']): + print "...Wrong command" + exit(0) + if sub_cmd == 'exit': exit(0) + if not sub_cmd == '': cmd = cmd + '/' + sub_cmd + + return cmd diff --git a/ui/batch.pyc b/ui/batch.pyc new file mode 100644 index 0000000..3a863c3 Binary files /dev/null and b/ui/batch.pyc differ diff --git a/ui/gui.py b/ui/gui.py new file mode 100644 index 0000000..5664da8 --- /dev/null +++ b/ui/gui.py @@ -0,0 +1,133 @@ +import sys +from PyQt5 import QtCore, QtWidgets + +def _make_layout(self): + grid = QtWidgets.QGridLayout() + self.setLayout(grid) + + self.log_qte = QtWidgets.QTextEdit(self) + + # Config + cfg_qle, self.cfg_name_lbl = self._make_qle_with_lbl() + cfg_btn, self.cfg_status_lbl = self._make_cfg_btn() + cfg_combo = self._make_cfg_combo() + + grid.addWidget(QtWidgets.QLabel("Config:"), 0, 0, 2, 1) + grid.addWidget(cfg_combo, 0, 1, 1, 1) + grid.addWidget(cfg_qle, 0, 2, 1, 3) + grid.addWidget(cfg_btn, 1, 1, 1, 1) + grid.addWidget(self.cfg_name_lbl, 1, 2, 1, 2) + grid.addWidget(self.cfg_status_lbl, 1, 4, 1, 1) + + # Command + cmd_qle, self.cmd_name_lbl = self._make_qle_with_lbl() + cmd_btn, self.cmd_status_lbl = self._make_cmd_btn() + cmd_cmb, cmd_sub_cmb = self._make_cmd_combo() + + grid.addWidget(QtWidgets.QLabel("Command:"), 2, 0, 2, 1) + grid.addWidget(cmd_cmb, 2, 1, 1, 1) + grid.addWidget(cmd_sub_cmb, 2, 2, 1, 1) + grid.addWidget(cmd_qle, 2, 3, 1, 2) + grid.addWidget(cmd_btn, 3, 1, 1, 1) + grid.addWidget(self.cmd_name_lbl, 3, 2, 1, 2) + grid.addWidget(self.cmd_status_lbl, 3, 4, 1, 1) + + # Log + grid.addWidget(QtWidgets.QLabel("Log:"), 4, 0) + grid.addWidget(self.log_qte, 4, 1, 1, 4) + +def _make_qle_with_lbl(self): + def change_label(qle, label): + label.setText(qle.text()) + + label = QtWidgets.QLabel(self) + qle = QtWidgets.QLineEdit(self) + qle.textChanged.connect(lambda: change_label(qle, label)) + qle.returnPressed.connect(lambda: change_label(qle, label)) + + return qle, label + +def _make_cfg_btn(self): + def set_cfg(label): + self.cfg = label.text() + + label = QtWidgets.QLabel("Status") + btn = QtWidgets.QPushButton('Setup', self) + btn.clicked.connect(lambda: set_cfg(self.cfg_name_lbl)) + btn.clicked.connect(lambda: self._get_config()) + + return btn, label + +def _make_cmd_btn(self): + def set_cmd(label): + self.cmd = label.text() + + label = QtWidgets.QLabel("Status") + btn = QtWidgets.QPushButton('Run', self) + btn.clicked.connect(lambda: set_cmd(self.cmd_name_lbl)) + btn.clicked.connect(lambda: self._run_cmd()) + + return btn, label + +def _make_cfg_combo(self): + def select_combo(label): + label.setText(cb.currentText()) + + cb = QtWidgets.QComboBox(self) + cb.addItem('') + cb.addItem('configs/config16.yml') + cb.addItem('configs/config17.yml') + cb.addItem('configs/config18.yml') + cb.currentTextChanged.connect(lambda: select_combo(self.cfg_name_lbl)) + + return cb + +def _make_cmd_combo(self): + def select_combo(cb, cb2, label): + if not cb2.currentText() == '': + label.setText(cb.currentText()+'/'+cb2.currentText()) + else: + label.setText(cb.currentText()) + + def make_subcombo(cb): + cb2.clear() + if cb.currentText() == 'tselector': + cb2.addItem('') + cb2.addItem('test') + cb2.addItem('qcd') + cb2.addItem('common') + elif cb.currentText() == 'DNN': + cb2.addItem('') + cb2.addItem('model') + cb2.addItem('n2a') + cb2.addItem('pred') + cb2.addItem('hist') + elif cb.currentText() == 'post': + cb2.addItem('') + cb2.addItem('merge') + cb2.addItem('scale') + elif cb.currentText() == 'draw': + cb2.addItem('') + cb2.addItem('table') + cb2.addItem('syst') + cb2.addItem('plotIt') + else: + cb2.addItem('') + + cb = QtWidgets.QComboBox(self) + cb2 = QtWidgets.QComboBox(self) + + cb.addItem('') + cb.addItem('selection') + cb.addItem('sample') + cb.addItem('tselector') + cb.addItem('DNN') + cb.addItem('qcd') + cb.addItem('post') + cb.addItem('draw') + + cb.currentTextChanged.connect(lambda: select_combo(cb, cb2, self.cmd_name_lbl)) + cb.currentTextChanged.connect(lambda: make_subcombo(cb)) + cb2.currentTextChanged.connect(lambda: select_combo(cb, cb2, self.cmd_name_lbl)) + + return cb, cb2 diff --git a/ui/gui.pyc b/ui/gui.pyc new file mode 100644 index 0000000..818cdb5 Binary files /dev/null and b/ui/gui.pyc differ diff --git a/ui/ui.py b/ui/ui.py new file mode 100644 index 0000000..11fd61e --- /dev/null +++ b/ui/ui.py @@ -0,0 +1,53 @@ +import os, sys +from PyQt5 import QtCore, QtWidgets + +class MyApp(QtWidgets.QWidget): + def __init__(self, base_path, batch): + super(QtWidgets.QWidget,self).__init__() + + self.base_path = base_path + self.ui_path = os.path.join(self.base_path, 'ui') + self.func_path = os.path.join(self.base_path, 'func') + self.macro_path = os.path.join(self.base_path, 'macro') + self.sample_path = os.path.join(self.base_path, 'samples') + self.output_path = os.path.join(self.base_path, 'output') + self.config = [] + self.batch = batch + self.cfg = '' + self.cmd = '' + + if self.batch: + self.initUI() + else: + self.initGUI() + + from batch import _write_config + from batch import _select_command + + from gui import _make_layout + from gui import _make_qle_with_lbl + from gui import _make_cfg_btn + from gui import _make_cmd_btn + from gui import _make_cfg_combo + from gui import _make_cmd_combo + + from action import _get_config + from action import _run_cmd + + def initGUI(self): + self._make_layout() + self.setWindowTitle('ttbb lep+jet analyzer') + + self.resize(1200,900) + qr = self.frameGeometry() + cp = QtWidgets.QDesktopWidget().availableGeometry().center() + qr.moveCenter(cp) + self.move(qr.topLeft()) + + self.show() + + def initUI(self): + self._write_config() + while True: + self.cmd = self._select_command() + self._run_cmd() diff --git a/ui/ui.pyc b/ui/ui.pyc new file mode 100644 index 0000000..a2f1b8a Binary files /dev/null and b/ui/ui.pyc differ diff --git a/ttbbDiffXsec/calError.py b/useless/calError.py similarity index 100% rename from ttbbDiffXsec/calError.py rename to useless/calError.py diff --git a/ttbbDiffXsec/drawUnfoldedHist.C b/useless/drawUnfoldedHist.C similarity index 100% rename from ttbbDiffXsec/drawUnfoldedHist.C rename to useless/drawUnfoldedHist.C diff --git a/useless/histFactory.C b/useless/histFactory.C new file mode 100644 index 0000000..a5f90a8 --- /dev/null +++ b/useless/histFactory.C @@ -0,0 +1,162 @@ +#include +#include +#include +#include +#include +#include + +#include "TFile.h" +#include "TROOT.h" +#include "TSystem.h" +#include "RooWorkspace.h" +#include "RooAbsData.h" +#include "RooRealVar.h" +#include "RooStats/HistFactory/Measurement.h" +#include "RooStats/HistFactory/MakeModelAndMeasurementsFast.h" + +void histFactory(int year){ + ssize_t pos; + + double lumi = 1.0; + if (year == 16) lumi = 35922; + else if(year == 17) lumi = 41529; + else if(year == 18) lumi = 59693; + else { + std::cout << "Wrong year" << std::endl; + return; + } + + ifstream sample(Form("../samples/sample%d.txt", year)); + std::vector v_sample; + std::string tmp_str; + int i = 1; + while(getline(sample, tmp_str)){ + if(i != 1) v_sample.push_back(tmp_str); + ++i; + } + + i = 1; + std::stringstream ss; + ifstream xsec(Form("../samples/xsec%d.txt", year)); + std::map m_xsec; + std::string tmp_name; double tmp_value; + while(getline(xsec, tmp_str)){ + if( i != 1){ + ss.str(tmp_str); + ss >> tmp_name; + ss >> tmp_value; + m_xsec.insert(std::pair(tmp_name, tmp_value)); + } + ++i; + } + xsec.close(); + + ifstream genevt(Form("../samples/genevt%d.txt", year)); + std::map m_genevt; + while(getline(genevt, tmp_str)){ + ss.str(tmp_str); + ss >> tmp_name; + ss >> tmp_value; + m_genevt.insert(std::pair(tmp_name, tmp_value)); + } + genevt.close(); + + TFile *f_data[2]; + f_data[0] = TFile::Open(Form("../output/root%d/hist_DataSingleMu.root",year)); + f_data[1] = TFile::Open(Form("../output/root%d/hist_DataSingleEG.root",year)); + + std::map m_fsample; + for(auto v_itr = v_sample.begin(); v_itr != v_sample.end(); ++v_itr){ + m_fsample.insert(std::pair( + *v_itr ,TFile::Open(Form("../output/root%d/hist_%s.root",year, (*v_itr).c_str())))); + } + + for(int ich=0; ich < 1; ++ich){ + std::string hist_name = Form("h_nbJets_Ch%d_S1",ich); + auto h_data = (TH1 *)f_data[ich]->Get(hist_name.c_str()); + + std::map m_hsim; + for(auto v_itr = v_sample.begin(); v_itr != v_sample.end(); ++v_itr){ + auto h_tmp = (TH1 *)m_fsample[*v_itr]->Get(hist_name.c_str()); + // Normaize without luminosity + h_tmp->Scale(lumi*m_xsec[*v_itr]/m_genevt[*v_itr]); + if((pos = (*v_itr).find("Bkg",0)) != std::string::npos + || (pos = (*v_itr).find("ttother",0)) != std::string::npos) continue; + m_hsim.insert(std::pair(*v_itr, h_tmp)); + } + // Merge ttbar background histograms + if( year == 2016 ){ + std::string ttbkg = "TT_PowhegPythiaBkg"; + std::string ttother = "TTLJ_PowhegPythia_ttother"; + auto h_bkg = (TH1 *)m_fsample[ttbkg]->Get(hist_name.c_str()); + auto h_ttother = (TH1 *)m_fsample[ttother]->Get(hist_name.c_str()); + h_bkg->Scale(lumi*m_xsec[ttbkg]/m_genevt[ttbkg]); + h_ttother->Scale(lumi*m_xsec[ttother]/m_genevt[ttother]); + h_bkg->Add(h_ttother); + m_hsim.insert(std::pair("ttbkg", h_bkg)); + } + else{ + std::string ttjjbkg = "TTJJ_PowhegPythiaBkg"; + std::string ttljbkg = "TTLJ_PowhegPythiaBkg"; + std::string ttllbkg = "TTLL_PowhegPythiaBkg"; + std::string ttother = "TTLJ_PowhegPythia_ttother"; + auto h_ttjj = (TH1 *)m_fsample[ttjjbkg]->Get(hist_name.c_str()); + auto h_ttlj = (TH1 *)m_fsample[ttljbkg]->Get(hist_name.c_str()); + auto h_ttll = (TH1 *)m_fsample[ttllbkg]->Get(hist_name.c_str()); + auto h_ttother = (TH1 *)m_fsample[ttother]->Get(hist_name.c_str()); + h_ttjj->Scale(lumi*m_xsec[ttjjbkg]/m_genevt[ttjjbkg]); + h_ttlj->Scale(lumi*m_xsec[ttljbkg]/m_genevt[ttljbkg]); + h_ttll->Scale(lumi*m_xsec[ttllbkg]/m_genevt[ttllbkg]); + h_ttother->Scale(lumi*m_xsec[ttother]/m_genevt[ttother]); + h_ttjj->Add(h_ttlj); + h_ttjj->Add(h_ttll); + h_ttjj->Add(h_ttother); + m_hsim.insert(std::pair("ttbkg", h_ttjj)); + } + + std::cout << "Start Fitting" << std::endl; + RooStats::HistFactory::Measurement meas("meas", "meas"); + meas.SetOutputFilePrefix(Form("../output/workspace/%d/",year)); + meas.SetPOI("ttbb"); + //meas.SetPOI("ttbj"); + //meas.SetPOI("ttcc"); + //meas.SetPOI("ttLF"); + //meas.SetPOI("ttbkg"); + meas.SetLumi(1.0); + meas.AddConstantParam("Lumi"); + + std::cout << "Set channel" << std::endl; + RooStats::HistFactory::Channel channel("bJet"); + channel.SetData(h_data); + + std::cout << "Set signal" << std::endl; + RooStats::HistFactory::Sample signal("signal"); + signal.SetHisto(m_hsim["TTLJ_PowhegPythia_ttbb"]); + signal.AddNormFactor("ttbb",1,0.5,1.5); + channel.AddSample(signal); + + std::cout << "Set background" << std::endl; + RooStats::HistFactory::Sample sample[v_sample.size()-1]; + int i = 0; + for(auto m_itr = m_hsim.begin(); m_itr != m_hsim.end(); ++m_itr){ + std::cout << "Sample: " << m_itr->first << std::endl; + if( m_itr->first == "TTLJ_PowhegPythia_ttbb" ) continue; + bool flag = false; + if ( m_itr->first == "TTLJ_PowhegPythia_ttbj" ) flag = true; + else if( m_itr->first == "TTLJ_PowhegPythia_ttcc" ) flag = true; + else if( m_itr->first == "TTLJ_PowhegPythia_ttLF" ) flag = true; + else if( m_itr->first == "ttbkg" ) flag = true; + sample[i].SetName(m_itr->first); + sample[i].SetHisto(m_itr->second); + if(flag) sample[i].AddNormFactor(m_itr->first, 1, 0.5, 1.5); + channel.AddSample(sample[i]); + ++i; + } + std::cout << "Add channel" << std::endl; + meas.AddChannel(channel); + //std::cout << "CollectHistograms" << std::endl; + ///meas.CollectHistograms(); + + RooWorkspace *w = RooStats::HistFactory::MakeModelAndMeasurementFast(meas); + } +} diff --git a/macro/makePlots.C b/useless/makePlots.C similarity index 100% rename from macro/makePlots.C rename to useless/makePlots.C diff --git a/useless/merge1718.py b/useless/merge1718.py new file mode 100644 index 0000000..5dba0da --- /dev/null +++ b/useless/merge1718.py @@ -0,0 +1,166 @@ +import os, sys + +from ROOT import * +import ROOT + +print("Start merging 2017 and 2018 dataset") + +path_17 = '../output/root17/' +path_18 = '../output/root18/' +path_merged = '../output/root19/' +if not os.path.exists(path_merged): os.mkdir(path_merged) +lumi17 = 41529.0 +lumi18 = 59693.0 + +sample17 = [] +with open('../samples/sample17.txt','r') as f: + while True: + line = f.readline() + if not line: break + if '/' in line: continue + else: sample17.append(line[:-1]) + +sample18 = [] +with open('../samples/sample18.txt', 'r') as f: + while True: + line = f.readline() + if not line: break + if '/' in line: continue + else: sample18.append(line[:-1]) + +nevt17 = {} +with open('../samples/genevt17.txt', 'r') as f: + while True: + line = f.readline() + if not line: break + tmp = line.split(' ') + nevt17[tmp[0]] = float(tmp[1]) + +nevt18 = {} +with open('../samples/genevt18.txt', 'r') as f: + while True: + line = f.readline() + if not line: break + tmp = line.split(' ') + nevt18[tmp[0]] = float(tmp[1]) + +# Merge Response Matrix +print('Merge Response Matrix') +matrix17 = ROOT.TFile(os.path.join(path_17, 'hist_ResponseMatrix_ttbb.root')) +matrix18 = ROOT.TFile(os.path.join(path_18, 'hist_ResponseMatrix_ttbb.root')) +matrix_merged = ROOT.TFile(os.path.join(path_merged, 'hist_ResponseMatrix_ttbb.root'), 'recreate') + +hist_list = [x.GetName() for x in matrix17.GetListOfKeys()] +scale = (lumi17*nevt18['TTLJ_PowhegPythia_ttbb'])/(lumi18*nevt17['TTLJ_PowhegPythia_ttbb']) + +matrix_merged.cd() +for hist in hist_list: + if '__' in hist and (not 'up' in hist and not 'down' in hist): continue + if 'pref' in hist: continue + tmp0 = matrix17.Get(hist) + tmp1 = matrix18.Get(hist) + tmp0.Scale(scale) + tmp1.Add(tmp0) + tmp1.Write() + +matrix17.Close() +matrix18.Close() +matrix_merged.Close() +print('Merging matrix is completed') + +# Merge Data +print('Merge Data') +data_muon17 = ROOT.TFile(os.path.join(path_17, 'hist_DataSingleMu.root')) +data_muon18 = ROOT.TFile(os.path.join(path_18, 'hist_DataSingleMu.root')) +data_muon_merged = ROOT.TFile(os.path.join(path_merged, 'hist_DataSingleMu.root'), 'recreate') + +hist_list = [x.GetName() for x in data_muon17.GetListOfKeys()] +data_muon_merged.cd() +for hist in hist_list: + tmp0 = data_muon17.Get(hist) + tmp1 = data_muon18.Get(hist) + tmp1.Add(tmp0) + tmp1.Write() + +data_muon17.Close() +data_muon18.Close() +data_muon_merged.Close() + +data_electron17 = ROOT.TFile(os.path.join(path_17, 'hist_DataSingleEG.root')) +data_electron18 = ROOT.TFile(os.path.join(path_18, 'hist_DataSingleEG.root')) +data_electron_merged = ROOT.TFile(os.path.join(path_merged, 'hist_DataSingleEG.root'), 'recreate') + +data_electron_merged.cd() +for hist in hist_list: + tmp0 = data_electron17.Get(hist) + tmp1 = data_electron18.Get(hist) + tmp1.Add(tmp0) + tmp1.Write() + +data_electron17.Close() +data_electron18.Close() +data_electron_merged.Close() +print('Merging data is completed') + +# Merge non-QCD MC +print('Merge non-QCD MC samples') +for sample in sample17: + if not 'ttbb' in sample: continue + if 'QCD' in sample: continue + print(sample) + mc17 = ROOT.TFile(os.path.join(path_17, 'hist_'+sample+'.root')) + mc18 = ROOT.TFile(os.path.join(path_18, 'hist_'+sample+'.root')) + mc_merged = ROOT.TFile(os.path.join(path_merged, 'hist_'+sample+'.root'), 'recreate') + + hist_list = [x.GetName() for x in mc17.GetListOfKeys()] + scale = (lumi17*nevt18[sample])/(lumi18*nevt17[sample]) + + mc_merged.cd() + for hist in hist_list: + if '__' in hist and (not 'up' in hist and not 'down' in hist): continue + if 'pref' in hist: continue + tmp0 = mc17.Get(hist) + tmp1 = mc18.Get(hist) + tmp0.Scale(scale) + tmp1.Add(tmp0) + tmp1.Write() + + mc17.Close() + mc18.Close() + mc_merged.Close() +print('Merged non-QCD MC is completed') + +""" +# Merge QCD MC +# 17 only QCD samples are not included... +print('Merge QCD MC samples') +for sample in sample17: + if not 'QCD' in sample: continue + qcd17 = ROOT.TFile(os.path.join(path_17, 'hist_'+sample+'.root')) + if os.path.exists(os.path.join(path_18, 'hist_'+sample+'.root')): + qcd18 = ROOT.TFile(os.path.join(path_18, 'hist_'+sample+'.root')) + qcd_merged = ROOT.TFile(os.path.join(path_merged, 'hist_'+sample+'.root'), 'recreate') + + hist_list = [x.GetName() for x in qcd17.GetListOfKeys()] + qcd_merged.cd() + if os.path.exists(os.path.join(path_18, 'hist_'+sample+'.root')): + scale = (lumi17*nevt18[sample])/(lumi18*nevt17[sample]) + for hist in hist_list: + tmp0 = qcd17.Get(hist) + tmp1 = qcd18.Get(hist) + tmp0.Scale(scale) + tmp1.Add(tmp0) + tmp1.Write() + + qcd17.Close() + qcd18.Close() + qcd_merged.Close() + +for sample in sample18: + if not 'QCD' in sample: continue + if not os.path.exists(os.path.join(path_17, 'hist_'+sample+'.root')): + os.system('cp '+path_18+'/hist_'+sample+'.root '+path_merged+'/hist_'+sample+'.root') + +print('Merged QCD MC is completed') +""" +print('All processes are finished') diff --git a/ttbbDiffXsec/runSVDUnfold.C b/useless/runSVDUnfold.C similarity index 100% rename from ttbbDiffXsec/runSVDUnfold.C rename to useless/runSVDUnfold.C diff --git a/ttbbDiffXsec/runTUnfold.C b/useless/runTUnfold.C similarity index 75% rename from ttbbDiffXsec/runTUnfold.C rename to useless/runTUnfold.C index f48f0a1..c920af2 100644 --- a/ttbbDiffXsec/runTUnfold.C +++ b/useless/runTUnfold.C @@ -5,7 +5,7 @@ #include "TUnfold.h" #include "TUnfoldDensity.h" -void drawRegHist(std::string outdir_, const char *data_name_, const char *h_name_, +void drawRegHist(std::string outdir_, const char *h_name_, TSpline *spl_logTauscanX_, TGraph *grp_BestLcurveX_, TGraph *grp_BestTau_, TGraph *grp_Lcurve_, bool scanLcurve_=true, TSpline *spl_Tauscan_=NULL){ @@ -21,6 +21,7 @@ void drawRegHist(std::string outdir_, const char *data_name_, const char *h_name TCanvas *c = new TCanvas("","",800,800); c->cd(); + spl_logTauscanX->SetTitle(/*log(chi^2)log(tau)*/"; log_{10}(#tau); log_{10}(#chi^{2})"); spl_logTauscanX->Draw(); //spl_logTauscanX->GetXaxis()->SetLabelSize(0.1); @@ -30,7 +31,7 @@ void drawRegHist(std::string outdir_, const char *data_name_, const char *h_name grp_BestLcurveX->SetMarkerStyle(kFullStar); grp_BestLcurveX->Draw("p"); //grp_BestLcurveX->SetEditable(false); - c->Print(Form("%s/%s_TUnfold_regular_logTaulogChi2_%s.pdf", outdir_.c_str(), data_name_, h_name_),"pdf"); + c->Print(Form("%s/TUnfold_regular_logTaulogChi2_%s.pdf", outdir_.c_str(), h_name_),"pdf"); c->Clear(); c->cd(); @@ -45,7 +46,7 @@ void drawRegHist(std::string outdir_, const char *data_name_, const char *h_name grp_Lcurve->Draw(); grp_BestTau->Draw("p"); //grp_BestTau->SetEditable(false); - c->Print(Form("%s/%s_TUnfold_regular_Lcurve_%s.pdf", outdir_.c_str(), data_name_, h_name_), "pdf"); + c->Print(Form("%s/TUnfold_regular_Lcurve_%s.pdf", outdir_.c_str(), h_name_), "pdf"); } else{ spl_Tauscan->SetTitle(/*Tau scan*/"; log_{10}(#tau); avg #rho"); @@ -56,15 +57,15 @@ void drawRegHist(std::string outdir_, const char *data_name_, const char *h_name spl_Tauscan->Draw("lp"); grp_BestTau->Draw("p"); //grp_BestTau->SetEditable(false); - c->Print(Form("%s/%s_TUnfold_regular_minRho_%s.pdf", outdir_.c_str(), data_name_, h_name_), "pdf"); + c->Print(Form("%s/TUnfold_regular_minRho_%s.pdf", outdir_.c_str(), h_name_), "pdf"); } } -std::vector runTUnfold(std::string outdir_, const char *data_name_, TH1 *h_in_, TH2 *h_resp_, +std::vector runTUnfold(std::string outdir_, TH1 *h_in_, TH2 *h_resp_, std::map m_bkgs_, std::map m_scale_, std::map m_sys_, bool scanLcurve_ = false, double tauMin_ = 0., double tauMax_ = 0., - bool fixTau_ = false, double fixedTau_ = 0.){ + bool fixTau_ = false, double fixedTau_ = 0., const char * specialName = ""){ TH1 * h_in = (TH1 *)h_in_->Clone(); TH2 * h_resp = (TH2 *)h_resp_->Clone(); @@ -91,7 +92,7 @@ std::vector runTUnfold(std::string outdir_, const char *data_name_, TH1 * } } if( !m_sys_.empty() ){ - std::cout << "Number of sys sources: " << m_bkgs_.size() << std::endl; + std::cout << "Number of sys sources: " << m_sys_.size() << std::endl; for( auto m_itr = m_sys_.begin(); m_itr != m_sys_.end(); ++m_itr ){ std::cout << "Source: " << m_itr->first << std::endl; unfold->AddSysError(m_itr->second, m_itr->first, TUnfold::kHistMapOutputVert, TUnfoldSys::kSysErrModeMatrix); @@ -137,10 +138,10 @@ std::vector runTUnfold(std::string outdir_, const char *data_name_, TH1 * //TSpline *spl_logTauscanX_, TGraph *grp_BestLcurveX_, TGraph *grp_BestTau_, TGraph *grp_Lcurve_, //bool scanLcurve_=false, TSpline *spl_Tauscan_=NULL TGraph *grp_BestLcurveX = new TGraph(1, &bestTau, &bestTauX); - if( scanLcurve ) - drawRegHist(outdir_, data_name_, h_in->GetName(), spl_logTauscanX, grp_BestLcurveX, grp_BestTau, grp_Lcurve); + if( scanLcurve_ ) + drawRegHist(outdir_, h_in->GetName(), spl_logTauscanX, grp_BestLcurveX, grp_BestTau, grp_Lcurve); else - drawRegHist(outdir_, data_name_, h_in->GetName(), spl_logTauscanX, grp_BestLcurveX, grp_BestTau, grp_Lcurve, false, spl_Tauscan); + drawRegHist(outdir_, h_in->GetName(), spl_logTauscanX, grp_BestLcurveX, grp_BestTau, grp_Lcurve, false, spl_Tauscan); } } if( fixTau_ ) std::cout << "Fixed Tau : " << bestTau << std::endl; @@ -152,48 +153,50 @@ std::vector runTUnfold(std::string outdir_, const char *data_name_, TH1 * std::cout << "----------------------------------------" << std::endl; const double unfoldResult = unfold->DoUnfold(bestTau, h_in); - auto h_output = unfold->GetOutput(Form("Unfolded_%s",h_in->GetName()),"",0,"*[UO]",true); - auto h_input = unfold->GetInput(Form("Input_%s", h_in->GetName()),"",0,"*[UO]",true); - auto h2_emat = unfold->GetEmatrixTotal(Form("%s_EmatrixTot",h_in->GetName())); - for( int ibin = 1; ibin <= h_output->GetNbinsX(); ibin++ ){ - auto error = sqrt(h2_emat->GetBinContent(ibin, ibin)); - h_output->SetBinError(ibin, error); - } + auto h_output = unfold->GetOutput(Form("Unfolded_%s%s",h_in->GetName(), specialName),"",0,"*[UO]",true); + auto h_input = unfold->GetInput(Form("Input_%s%s", h_in->GetName(), specialName),"",0,"*[UO]",true); + //auto h2_emat = unfold->GetEmatrixInput(Form("EmatrixInput_%s",h_in->GetName())); + auto h2_emat = unfold->GetEmatrixInput(Form("TempMatrix_%s%s",h_in->GetName(), specialName)); + //for( int ibin = 1; ibin <= h_output->GetNbinsX(); ibin++ ){ + // auto error = sqrt(h2_emat->GetBinContent(ibin, ibin)); + // h_output->SetBinError(ibin, error); + //} //Output vector //[0]: TUnfold output //[1]: TUnfold input //[2]: Covariance matrix including all contributions //[3]: Covariance contribution from the input statistical uncertainties //[4]: Covariance contribution from uncorrelated (statistical) uncertainties of the response matrix - //[5]: Covariance matrix from tau - //[6]~[6+nsys*2]: + //[5]: 1-sigma shift from tau + //[6]: Covariance matrix from tau + //[7]~[7+nsys*2]: // 1. Covariance matrix from the systematics of the input matrix // 2. Correlated systematic 1-sigma shift of the input matrix //[6+nsys*2+1]~[6+nsys*2+1+nbkg*3] // 1. Covraiance matrix from the uncorrelated background unceratinties // 2. 1-sigma shift corresponding to a background scale uncertainty vector v_output; - v_output.push_back(h_output); - v_output.push_back(h_input); - v_output.push_back(unfold->GetEmatrixTotal(Form("%s_EmatrixTotal", h_in->GetName()))); - v_output.push_back(unfold->GetEmatrixInput(Form("%s_EmatrixInput",h_in->GetName()))); - v_output.push_back(unfold->GetEmatrixSysUncorr(Form("%s_EmatrixSysUncorr", h_in->GetName()))); + v_output.push_back(h_output); //[0] + v_output.push_back(h_input); //[1] + v_output.push_back(unfold->GetEmatrixTotal(Form("EmatrixTotal_%s%s",h_in->GetName(), specialName))); //[2] + v_output.push_back(unfold->GetEmatrixInput(Form("EmatrixInput_%s%s",h_in->GetName(), specialName))); //[3] + v_output.push_back(unfold->GetEmatrixSysUncorr(Form("EmatrixSysUncorr_%s%s", h_in->GetName(), specialName))); //[4] //v_output.push_back(unfold->GetBias(Form("%s_Bias", h_in->GetName()))); - //v_output.push_back(unfold->GetDeltaSysTau(Form("%s_DeltaSysTau", h_in->GetName()))); - //TH2D *h2_emat_tau = new TH2D("","",10,0,10,10,0,10); - //unfold->GetEmatrixSysTau(h2_emat_tau); - //h2_emat_tau->SetName(Form("%s_EmatrixSysTau", h_in->GetName())); - //v_output.push_back(h2_emat_tau); - /* + v_output.push_back(unfold->GetDeltaSysTau(Form("DeltaSysTau_%s%s", h_in->GetName(), specialName))); //[4] + TH2D *h2_emat_tau = (TH2D *)h2_emat->Clone(); + unfold->GetEmatrixSysTau(h2_emat_tau); + h2_emat_tau->SetName(Form("EmatrixSysTau_%s%s", h_in->GetName(), specialName)); + v_output.push_back(h2_emat_tau); + for(auto m_itr=m_sys_.begin(); m_itr != m_sys_.end(); ++m_itr){ - TH2 *h2_emat_source; + TH2D *h2_emat_source = (TH2D *)h2_emat->Clone(); unfold->GetEmatrixSysSource(h2_emat_source, m_itr->first); - h2_emat_source->SetName(Form("%s_EmatrixSysSource%s", h_in->GetName(), m_itr->first)); + h2_emat_source->SetName(Form("EmatrixSysSource_%s%s%s", h_in->GetName(), m_itr->first, specialName)); v_output.push_back(h2_emat_source); v_output.push_back(unfold->GetDeltaSysSource(m_itr->first, - Form("%s_DeltaSysSource%s", h_in->GetName(), m_itr->first))); + Form("DeltaSysSource_%s%s%s", h_in->GetName(), m_itr->first, specialName))); } - + /* for(auto m_itr=m_bkgs_.begin(); m_itr != m_bkgs_.end(); ++m_itr){ v_output.push_back(unfold->GetEmatrixSysBackgroundUncorr(m_itr->first, Form("%s_EmatrixSysBkgUncorr%s", h_in->GetName(), m_itr->first))); @@ -204,7 +207,7 @@ std::vector runTUnfold(std::string outdir_, const char *data_name_, TH1 * v_output.push_back(unfold->GetDeltaSysBackgroundScale(m_itr->first, Form("%s_DeltaBkgScale%s", h_in->GetName(), m_itr->first))); } -*/ + */ std::cout << "Return TUnfold output vector, size: " << v_output.size() < #include +#include + #include #include #include #include -#include "../include/histBook.h" -#include "../include/tdrstyle.C" - -string outdir = "../output/unfold/"; +#include "histBook.h" +#include "tdrstyle.C" //Unfolding options const char *genMode = "mindR"; const bool scanLcurve = true; -const bool findBestK = false; -const int reg_dR = 3, reg_M = 3, reg_dEta = 3, reg_dPhi = 3; std::map m_lumi = {{"16",35922}, {"17",41529}, {"18",59693}}; -double bratio = 0.436572; // 2*3*0.1086*0.67 - -std::vector syst_basic = { - "__jerup", "__jerdown", "__jecup", "__jecdown", - "__mutrgup", "__mutrgdown", - "__eltrgup", "__eltrgdown", - "__lfup", "__lfdown", "__hfup", "__hfdown", - "__hfstat1up","__hfstat1down", "__hfstat2up", "__hfstat2down", - "__lfstat1up","__lfstat1down", "__lfstat2up", "__lfstat2down", - "__cferr1up", "__cferr1down", "__cferr2up", "__cferr2down", - "__puup", "__pudown" -}; - -std::vector syst_ttbar = { - "__swup", "__swdown", "__psup", "__psdown", - "__tuneup", "__tunedown", "__hdampup", "__hdampdown", - "__pdfup", "__pdfdown" -}; - -std::vector syst_total = { - "__swup", "__swdown", "__psup", "__psdown", - "__tuneup", "__tunedown", "__hdampup", "__hdampdown", - "__pdfup", "__pdfdown", - "__jerup", "__jerdown", "__jecup", "__jecdown", - "__mutrgup", "__mutrgdown", - "__eltrgup", "__eltrgdown", - "__lfup", "__lfdown", "__hfup", "__hfdown", - "__hfstat1up","__hfstat1down", "__hfstat2up", "__hfstat2down", - "__lfstat1up","__lfstat1down", "__lfstat2up", "__lfstat2down", - "__cferr1up", "__cferr1down", "__cferr2up", "__cferr2down", - "__puup", "__pudown" -}; +double BRATIO_ = 0.436572; // 2*3*0.1086*0.67 TH1 *calculateDiffXsec(std::string year, TH1 *h_in, TH1 *h_acceptance, bool gen = false){ TH1 *h_out = (TH1 *)h_in->Clone(); @@ -67,14 +34,14 @@ TH1 *calculateDiffXsec(std::string year, TH1 *h_in, TH1 *h_acceptance, bool gen // diffXsec = (1/bin width)*(nevt/accp*lumi) bin_width = h_in->GetXaxis()->GetBinWidth(ibin); if(gen){ - diffXsec = h_in->GetBinContent(ibin)/(bin_width*m_lumi[year]*bratio); - diffXsec_err = h_in->GetBinError(ibin)/(bin_width*m_lumi[year]*bratio); + diffXsec = h_in->GetBinContent(ibin)/(bin_width*m_lumi[year]*BRATIO_); + diffXsec_err = h_in->GetBinError(ibin)/(bin_width*m_lumi[year]*BRATIO_); } else{ diffXsec = h_in->GetBinContent(ibin) - / (h_acceptance->GetBinContent(ibin)*bin_width*m_lumi[year]*bratio); + / (h_acceptance->GetBinContent(ibin)*bin_width*m_lumi[year]*BRATIO_); diffXsec_err = h_in->GetBinError(ibin) - / (h_acceptance->GetBinContent(ibin)*bin_width*m_lumi[year]*bratio); + / (h_acceptance->GetBinContent(ibin)*bin_width*m_lumi[year]*BRATIO_); if(h_acceptance->GetBinContent(ibin) == 0.0){ diffXsec = 0.0; diffXsec_err = 0.0; @@ -92,7 +59,10 @@ TH1 *calculateDiffXsec(std::string year, TH1 *h_in, TH1 *h_acceptance, bool gen std::cout << "inclusive Xsection : " << incXsec << " || error : " << sqrt(incXsec_err) << std::endl; std::cout << "--------------------------------------------------------"<< std::endl; + + std::string tmp_name = h_out->GetName(); + tmp_name.replace(tmp_name, "Unfold_", ""); - h_out->SetName(Form("diffXsec_%s",h_out->GetName())); + h_out->SetName(Form("DiffXsec_%s",tmp_name.c_str())); return h_out; }