From 8fe5470841a931d992f7e568eaabdcc5f037e0de Mon Sep 17 00:00:00 2001 From: NTrevisani Date: Thu, 7 Aug 2025 11:27:03 +0200 Subject: [PATCH 01/44] minor fix to avoid crashes --- ControlRegions/SS/scripts/mkSystAnalyzer.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ControlRegions/SS/scripts/mkSystAnalyzer.py b/ControlRegions/SS/scripts/mkSystAnalyzer.py index 390db96a..aa05ca6d 100644 --- a/ControlRegions/SS/scripts/mkSystAnalyzer.py +++ b/ControlRegions/SS/scripts/mkSystAnalyzer.py @@ -95,6 +95,8 @@ def syst_analyzer(input_file_name, cut, variable, sample, systematic, output_dir c1.Print(f"{output_file_name}.png") # c1.Print(f"{output_file_name}.pdf") + c1.Close() + del c1 del pad1 del pad2 From 6bea79ef77fafc9ad41fda88a15ffae9375c8b6e Mon Sep 17 00:00:00 2001 From: ntrevisa Date: Tue, 12 Aug 2025 09:53:24 +0200 Subject: [PATCH 02/44] Fake rates using cone pt 2018 --- FakeRate/Full2018_v9/README.md | 2 +- FakeRate/Full2018_v9/aliases.py | 6 ++ FakeRate/Full2018_v9/do_fake_rate.sh | 36 +++++----- FakeRate/Full2018_v9/samples.py | 6 +- FakeRate/Full2018_v9/variables.py | 101 ++++++++++++--------------- 5 files changed, 73 insertions(+), 78 deletions(-) diff --git a/FakeRate/Full2018_v9/README.md b/FakeRate/Full2018_v9/README.md index 6e1a5b85..cfcb4935 100644 --- a/FakeRate/Full2018_v9/README.md +++ b/FakeRate/Full2018_v9/README.md @@ -46,4 +46,4 @@ Plot distributions: All the instructions are summarized in the `do_fake_rate.sh` bash script: - bash do_fake_rate.sh \ No newline at end of file + bash do_fake_rate.sh \ No newline at end of file diff --git a/FakeRate/Full2018_v9/aliases.py b/FakeRate/Full2018_v9/aliases.py index 919a9f2f..57be9557 100644 --- a/FakeRate/Full2018_v9/aliases.py +++ b/FakeRate/Full2018_v9/aliases.py @@ -78,6 +78,12 @@ 'expr': 'CleanJet_pt[0] >= 10 ? TMath::Sqrt(dphilep1jet1*dphilep1jet1 + (Lepton_eta[0]-CleanJet_eta[0])*(Lepton_eta[0]-CleanJet_eta[0])) : -9999', } +aliases['Lepton_conept'] = { + 'expr': 'LeptonConePt(Lepton_pt, Lepton_pdgId, Lepton_electronIdx, Lepton_muonIdx, Electron_jetRelIso, Muon_jetRelIso)', + 'linesToAdd': [f'#include "{configurations}/../utils/macros/LeptonConePt_class.cc"'], + 'samples': mc + ['DATA', 'DATA_unprescaled'] +} + # # Lepton SF (not considering the ttHMVA discriminant) # aliases['LepWPSF'] = { diff --git a/FakeRate/Full2018_v9/do_fake_rate.sh b/FakeRate/Full2018_v9/do_fake_rate.sh index e6f4307d..46f883ed 100644 --- a/FakeRate/Full2018_v9/do_fake_rate.sh +++ b/FakeRate/Full2018_v9/do_fake_rate.sh @@ -5,30 +5,30 @@ if [[ "$(uname -a)" == *portal* ]] || [[ "$(uname -a)" == *bms* ]]; then input_dir=/ceph/${USER} else echo "We are on lxplus!" - input_dir=/eos/user/${USER}/${USER:0:1} + input_dir=/eos/user/${USER:0:1}/${USER} fi # Muons -python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2018_v9/rootFile/mkShapes__Fake_Full2018_v9.root --outputFolder ../Full2018_v9/fakerate/cut_Tight_HWWW_tthmva_82 --outputFileName MuonFR_45.root --jet_pt 45 --flavor muon --variable pt2_eta2 --do_prompt_rate True --outputFileNamePR MuonPR.root +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2018_v9/rootFile/mkShapes__Fake_Full2018_v9.root --outputFolder ../Full2018_v9/FakeRate_Full2018_v9/cut_Tight_HWWW_tthmva_82 --outputFileName MuonFR_jet45.root --jet_pt 45 --flavor muon --variable pt2_eta2 --do_prompt_rate True --outputFileNamePR MuonPR.root -python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2018_v9/rootFile/mkShapes__Fake_Full2018_v9.root --outputFolder ../Full2018_v9/fakerate/cut_Tight_HWWW_tthmva_82 --outputFileName MuonFR_jet10.root --jet_pt 10 --flavor muon --variable pt1_eta1 -python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2018_v9/rootFile/mkShapes__Fake_Full2018_v9.root --outputFolder ../Full2018_v9/fakerate/cut_Tight_HWWW_tthmva_82 --outputFileName MuonFR_jet15.root --jet_pt 15 --flavor muon --variable pt1_eta1 -python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2018_v9/rootFile/mkShapes__Fake_Full2018_v9.root --outputFolder ../Full2018_v9/fakerate/cut_Tight_HWWW_tthmva_82 --outputFileName MuonFR_jet20.root --jet_pt 20 --flavor muon --variable pt1_eta1 -python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2018_v9/rootFile/mkShapes__Fake_Full2018_v9.root --outputFolder ../Full2018_v9/fakerate/cut_Tight_HWWW_tthmva_82 --outputFileName MuonFR_jet25.root --jet_pt 25 --flavor muon --variable pt1_eta1 -python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2018_v9/rootFile/mkShapes__Fake_Full2018_v9.root --outputFolder ../Full2018_v9/fakerate/cut_Tight_HWWW_tthmva_82 --outputFileName MuonFR_jet30.root --jet_pt 30 --flavor muon --variable pt1_eta1 -python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2018_v9/rootFile/mkShapes__Fake_Full2018_v9.root --outputFolder ../Full2018_v9/fakerate/cut_Tight_HWWW_tthmva_82 --outputFileName MuonFR_jet35.root --jet_pt 35 --flavor muon --variable pt1_eta1 -python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2018_v9/rootFile/mkShapes__Fake_Full2018_v9.root --outputFolder ../Full2018_v9/fakerate/cut_Tight_HWWW_tthmva_82 --outputFileName MuonFR_jet40.root --jet_pt 40 --flavor muon --variable pt1_eta1 -python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2018_v9/rootFile/mkShapes__Fake_Full2018_v9.root --outputFolder ../Full2018_v9/fakerate/cut_Tight_HWWW_tthmva_82 --outputFileName MuonFR_jet45.root --jet_pt 45 --flavor muon --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2018_v9/rootFile/mkShapes__Fake_Full2018_v9.root --outputFolder ../Full2018_v9/FakeRate_Full2018_v9/cut_Tight_HWWW_tthmva_82 --outputFileName MuonFR_jet10.root --jet_pt 10 --flavor muon --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2018_v9/rootFile/mkShapes__Fake_Full2018_v9.root --outputFolder ../Full2018_v9/FakeRate_Full2018_v9/cut_Tight_HWWW_tthmva_82 --outputFileName MuonFR_jet15.root --jet_pt 15 --flavor muon --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2018_v9/rootFile/mkShapes__Fake_Full2018_v9.root --outputFolder ../Full2018_v9/FakeRate_Full2018_v9/cut_Tight_HWWW_tthmva_82 --outputFileName MuonFR_jet20.root --jet_pt 20 --flavor muon --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2018_v9/rootFile/mkShapes__Fake_Full2018_v9.root --outputFolder ../Full2018_v9/FakeRate_Full2018_v9/cut_Tight_HWWW_tthmva_82 --outputFileName MuonFR_jet25.root --jet_pt 25 --flavor muon --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2018_v9/rootFile/mkShapes__Fake_Full2018_v9.root --outputFolder ../Full2018_v9/FakeRate_Full2018_v9/cut_Tight_HWWW_tthmva_82 --outputFileName MuonFR_jet30.root --jet_pt 30 --flavor muon --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2018_v9/rootFile/mkShapes__Fake_Full2018_v9.root --outputFolder ../Full2018_v9/FakeRate_Full2018_v9/cut_Tight_HWWW_tthmva_82 --outputFileName MuonFR_jet35.root --jet_pt 35 --flavor muon --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2018_v9/rootFile/mkShapes__Fake_Full2018_v9.root --outputFolder ../Full2018_v9/FakeRate_Full2018_v9/cut_Tight_HWWW_tthmva_82 --outputFileName MuonFR_jet40.root --jet_pt 40 --flavor muon --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2018_v9/rootFile/mkShapes__Fake_Full2018_v9.root --outputFolder ../Full2018_v9/FakeRate_Full2018_v9/cut_Tight_HWWW_tthmva_82 --outputFileName MuonFR_jet45.root --jet_pt 45 --flavor muon --variable pt1_eta1 # Electrons -python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2018_v9/rootFile/mkShapes__Fake_Full2018_v9.root --outputFolder ../Full2018_v9/fakerate/mvaFall17V2Iso_WP90_tthmva_UL_90 --outputFileName EleFR_45.root --jet_pt 45 --flavor ele --variable pt2_eta2 --do_prompt_rate True --outputFileNamePR ElePR.root +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2018_v9/rootFile/mkShapes__Fake_Full2018_v9.root --outputFolder ../Full2018_v9/FakeRate_Full2018_v9/mvaFall17V2Iso_WP90_tthmva_UL_90 --outputFileName EleFR_jet45.root --jet_pt 45 --flavor ele --variable pt2_eta2 --do_prompt_rate True --outputFileNamePR ElePR.root -python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2018_v9/rootFile/mkShapes__Fake_Full2018_v9.root --outputFolder ../Full2018_v9/fakerate/mvaFall17V2Iso_WP90_tthmva_UL_90 --outputFileName EleFR_jet10.root --jet_pt 10 --flavor ele --variable pt1_eta1 -python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2018_v9/rootFile/mkShapes__Fake_Full2018_v9.root --outputFolder ../Full2018_v9/fakerate/mvaFall17V2Iso_WP90_tthmva_UL_90 --outputFileName EleFR_jet15.root --jet_pt 15 --flavor ele --variable pt1_eta1 -python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2018_v9/rootFile/mkShapes__Fake_Full2018_v9.root --outputFolder ../Full2018_v9/fakerate/mvaFall17V2Iso_WP90_tthmva_UL_90 --outputFileName EleFR_jet25.root --jet_pt 25 --flavor ele --variable pt1_eta1 -python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2018_v9/rootFile/mkShapes__Fake_Full2018_v9.root --outputFolder ../Full2018_v9/fakerate/mvaFall17V2Iso_WP90_tthmva_UL_90 --outputFileName EleFR_jet30.root --jet_pt 30 --flavor ele --variable pt1_eta1 -python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2018_v9/rootFile/mkShapes__Fake_Full2018_v9.root --outputFolder ../Full2018_v9/fakerate/mvaFall17V2Iso_WP90_tthmva_UL_90 --outputFileName EleFR_jet35.root --jet_pt 35 --flavor ele --variable pt1_eta1 -python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2018_v9/rootFile/mkShapes__Fake_Full2018_v9.root --outputFolder ../Full2018_v9/fakerate/mvaFall17V2Iso_WP90_tthmva_UL_90 --outputFileName EleFR_jet40.root --jet_pt 40 --flavor ele --variable pt1_eta1 -python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2018_v9/rootFile/mkShapes__Fake_Full2018_v9.root --outputFolder ../Full2018_v9/fakerate/mvaFall17V2Iso_WP90_tthmva_UL_90 --outputFileName EleFR_jet45.root --jet_pt 45 --flavor ele --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2018_v9/rootFile/mkShapes__Fake_Full2018_v9.root --outputFolder ../Full2018_v9/FakeRate_Full2018_v9/mvaFall17V2Iso_WP90_tthmva_UL_90 --outputFileName EleFR_jet10.root --jet_pt 10 --flavor ele --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2018_v9/rootFile/mkShapes__Fake_Full2018_v9.root --outputFolder ../Full2018_v9/FakeRate_Full2018_v9/mvaFall17V2Iso_WP90_tthmva_UL_90 --outputFileName EleFR_jet15.root --jet_pt 15 --flavor ele --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2018_v9/rootFile/mkShapes__Fake_Full2018_v9.root --outputFolder ../Full2018_v9/FakeRate_Full2018_v9/mvaFall17V2Iso_WP90_tthmva_UL_90 --outputFileName EleFR_jet25.root --jet_pt 25 --flavor ele --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2018_v9/rootFile/mkShapes__Fake_Full2018_v9.root --outputFolder ../Full2018_v9/FakeRate_Full2018_v9/mvaFall17V2Iso_WP90_tthmva_UL_90 --outputFileName EleFR_jet30.root --jet_pt 30 --flavor ele --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2018_v9/rootFile/mkShapes__Fake_Full2018_v9.root --outputFolder ../Full2018_v9/FakeRate_Full2018_v9/mvaFall17V2Iso_WP90_tthmva_UL_90 --outputFileName EleFR_jet35.root --jet_pt 35 --flavor ele --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2018_v9/rootFile/mkShapes__Fake_Full2018_v9.root --outputFolder ../Full2018_v9/FakeRate_Full2018_v9/mvaFall17V2Iso_WP90_tthmva_UL_90 --outputFileName EleFR_jet40.root --jet_pt 40 --flavor ele --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2018_v9/rootFile/mkShapes__Fake_Full2018_v9.root --outputFolder ../Full2018_v9/FakeRate_Full2018_v9/mvaFall17V2Iso_WP90_tthmva_UL_90 --outputFileName EleFR_jet45.root --jet_pt 45 --flavor ele --variable pt1_eta1 cd - diff --git a/FakeRate/Full2018_v9/samples.py b/FakeRate/Full2018_v9/samples.py index 4d11c97a..88219a09 100644 --- a/FakeRate/Full2018_v9/samples.py +++ b/FakeRate/Full2018_v9/samples.py @@ -12,7 +12,7 @@ dataReco = 'Run2018_UL2018_nAODv9_Full2018v9' mcSteps = 'MCl1loose2018v9__MCCorr2018v9NoJERInHorn' -dataSteps = 'DATAl1loose2018v9__fakeSel' +dataSteps = 'DATAl1loose2018v9' ############################################## ###### Tree base directory for the site ###### @@ -101,6 +101,7 @@ def addSampleWeight(samples, sampleName, sampleNameType, weight): # Unprescaled triggers for prompt rate estimation DataRunUnprescaled = [ + ['A','Run2018A-UL2018-v1'], ['B','Run2018B-UL2018-v1'], ['C','Run2018C-UL2018-v1'], ['D','Run2018D-UL2018-v1'], @@ -291,7 +292,8 @@ def addSampleWeight(samples, sampleName, sampleNameType, weight): for pd in DataSetsUnprescaled: tag_data = pd + '_' + sd - if ( ('SingleMuon' in pd and 'Run2018B' in sd) + if ( ('SingleMuon' in pd and 'Run2018A' in sd) + or ('SingleMuon' in pd and 'Run2018B' in sd) or ('SingleMuon' in pd and 'Run2018C' in sd)): print("sd = {}".format(sd)) print("pd = {}".format(pd)) diff --git a/FakeRate/Full2018_v9/variables.py b/FakeRate/Full2018_v9/variables.py index d3073570..f0845ee5 100644 --- a/FakeRate/Full2018_v9/variables.py +++ b/FakeRate/Full2018_v9/variables.py @@ -16,18 +16,35 @@ ################### # ptbins[8] = {10, 15, 20, 25, 30, 35, 40, 45, 50}; -# etabins[5] = {0, 0.5, 1.0, 1.5, 2.0, 2.5}; +# etabins[2] = {0, 1.479, 2.5}; + +# variables['pt1_eta1'] = { +# 'name' : 'Lepton_pt[0]:abs(Lepton_eta[0])', +# 'range' : ([10, 15, 20, 25, 30, 35, 40, 45, 50],[0.0, 0.5, 1.0, 1.5, 2.0, 2.5],), +# 'xaxis' : 'p_{T}^{#ell 1}:#eta^{#ell 1}', +# 'fold' : 3, +# } + +# Cone_pt1 vs eta1 variables['pt1_eta1'] = { - 'name' : 'Lepton_pt[0]:abs(Lepton_eta[0])', - 'range' : ([10, 15, 20, 25, 30, 35, 40, 45, 50],[0.0, 0.5, 1.0, 1.5, 2.0, 2.5],), - 'xaxis' : 'p_{T}^{#ell 1}:#eta^{#ell 1}', + 'name' : 'Lepton_conept[0]:abs(Lepton_eta[0])', + 'range' : ([10, 15, 20, 25, 30, 35, 40, 45, 50],[0.0, 1.479, 2.5]), + 'xaxis' : 'p_{T}^{cone}(#ell 1):|#eta(#ell 1})|', 'fold' : 3, } +# variables['pt2_eta2'] = { +# 'name' : 'Alt(Lepton_pt,1,0):abs(Alt(Lepton_eta,1,999))', +# 'range' : ([10, 15, 20, 25, 30, 35, 40, 45, 50],[0.0, 0.5, 1.0, 1.5, 2.0, 2.5],), +# 'xaxis' : 'p_{T}^{#ell 2}:#eta^{#ell 2}', +# 'fold' : 3, +# } + +# Cone_pt2 vs eta2 variables['pt2_eta2'] = { - 'name' : 'Alt(Lepton_pt,1,0):abs(Alt(Lepton_eta,1,999))', - 'range' : ([10, 15, 20, 25, 30, 35, 40, 45, 50],[0.0, 0.5, 1.0, 1.5, 2.0, 2.5],), - 'xaxis' : 'p_{T}^{#ell 2}:#eta^{#ell 2}', + 'name' : 'Lepton_conept[1]:abs(Lepton_eta[1])', + 'range' : ([10, 15, 20, 25, 30, 35, 40, 45, 50],[0.0, 1.479, 2.5]), + 'xaxis' : 'p_{T}^{cone}(#ell 2):|#eta^{#ell 2}|', 'fold' : 3, } @@ -45,6 +62,13 @@ 'fold' : 0 } +variables['conept1'] = { + 'name' : 'Lepton_conept[0]', + 'range' : (20,0,100), + 'xaxis' : 'p_{T}^{cone} 1st lep', + 'fold' : 0 +} + variables['eta1'] = { 'name' : 'Lepton_eta[0]', 'range' : (40,-3,3), @@ -59,6 +83,13 @@ 'fold' : 0 } +variables['conept2'] = { + 'name' : 'Lepton_conept[1]', + 'range' : (20,0,100), + 'xaxis' : 'p_{T}^{cone} 2nd lep', + 'fold' : 0 +} + variables['eta2'] = { 'name' : 'Alt(Lepton_eta,1,999)', 'range' : (40,-3,3), @@ -94,27 +125,12 @@ 'fold' : 3 } - -# variables['puppimet'] = { -# 'name' : 'PuppiMET_pt', -# 'range' : (20,0,200), -# 'xaxis' : 'PUPPI met [GeV]', -# 'fold' : 3 -# } - -# variables['mtw2'] = { -# 'name' : 'mtw2', -# 'range' : (40,0,200), -# 'xaxis' : 'm_{T}^{W_{2}} [GeV]', -# 'fold' : 3 -# } - -# variables['eta2'] = { -# 'name' : 'Lepton_eta[1]', -# 'range' : (40,-3,3), -# 'xaxis' : '#eta 2nd lep', -# 'fold' : 3 -# } +variables['puppimet'] = { + 'name' : 'PuppiMET_pt', + 'range' : (20,0,200), + 'xaxis' : 'PUPPI met [GeV]', + 'fold' : 3 +} # variables['jetpt1'] = { # 'name' : 'CleanJet_pt[0]*(CleanJet_pt[0]>30)', @@ -122,32 +138,3 @@ # 'xaxis' : 'p_{T} 1st jet', # 'fold' : 2 # } - -# variables['jetpt2'] = { -# 'name' : 'CleanJet_pt[1]*(CleanJet_pt[1]>30)', -# 'range' : (40,0,200), -# 'xaxis' : 'p_{T} 2nd jet', -# 'fold' : 0 -# } - -# variables['pt2'] = { -# 'name' : 'Lepton_pt[1]', -# 'range' : (20,0,100), -# 'xaxis' : 'p_{T} 2nd lep', -# 'fold' : 3 -# } - -# variables['mth'] = { -# 'name' : 'mth', -# 'range' : (40,0,200), -# 'xaxis' : 'm_{T}^{H} [GeV]', -# 'fold' : 0 -# } - -# variables['ptll'] = { -# 'name' : 'ptll', -# 'range' : (40, 0,200), -# 'xaxis' : 'p_{T}^{ll} [GeV]', -# 'fold' : 0 -# } - From 0d1a990214f980fdfc9ce0dd2d37bcb678ad4cfe Mon Sep 17 00:00:00 2001 From: ntrevisa Date: Tue, 12 Aug 2025 09:59:17 +0200 Subject: [PATCH 03/44] Fake rates using cone pt 2017 --- FakeRate/Full2017_v9/README.md | 49 ++++ FakeRate/Full2017_v9/aliases.py | 78 ++++++ FakeRate/Full2017_v9/configuration.py | 89 +++++++ FakeRate/Full2017_v9/cuts.py | 92 +++++++ FakeRate/Full2017_v9/do_fake_rate.sh | 34 +++ FakeRate/Full2017_v9/do_plots.sh | 9 + FakeRate/Full2017_v9/nuisances.py | 27 ++ FakeRate/Full2017_v9/plot.py | 64 +++++ FakeRate/Full2017_v9/repeat.sh | 27 ++ FakeRate/Full2017_v9/samples.py | 235 ++++++++++++++++++ FakeRate/Full2017_v9/structure.py | 26 ++ .../unprescaled_cfg/configuration.py | 87 +++++++ FakeRate/Full2017_v9/unprescaled_cfg/cuts.py | 92 +++++++ FakeRate/Full2017_v9/unprescaled_cfg/plot.py | 62 +++++ FakeRate/Full2017_v9/variables.py | 140 +++++++++++ 15 files changed, 1111 insertions(+) create mode 100644 FakeRate/Full2017_v9/README.md create mode 100644 FakeRate/Full2017_v9/aliases.py create mode 100644 FakeRate/Full2017_v9/configuration.py create mode 100644 FakeRate/Full2017_v9/cuts.py create mode 100644 FakeRate/Full2017_v9/do_fake_rate.sh create mode 100644 FakeRate/Full2017_v9/do_plots.sh create mode 100644 FakeRate/Full2017_v9/nuisances.py create mode 100644 FakeRate/Full2017_v9/plot.py create mode 100644 FakeRate/Full2017_v9/repeat.sh create mode 100644 FakeRate/Full2017_v9/samples.py create mode 100644 FakeRate/Full2017_v9/structure.py create mode 100644 FakeRate/Full2017_v9/unprescaled_cfg/configuration.py create mode 100644 FakeRate/Full2017_v9/unprescaled_cfg/cuts.py create mode 100644 FakeRate/Full2017_v9/unprescaled_cfg/plot.py create mode 100644 FakeRate/Full2017_v9/variables.py diff --git a/FakeRate/Full2017_v9/README.md b/FakeRate/Full2017_v9/README.md new file mode 100644 index 00000000..cfcb4935 --- /dev/null +++ b/FakeRate/Full2017_v9/README.md @@ -0,0 +1,49 @@ +# Fake Rate Measurement + +The configuration prepares the histograms needed for extracting fake rates. + +The instructions to run the analysis follow. + +### Load the mkShapesRDF environment + +Here, we assume `PlotsConfigurationsRun3` was installed in the same directory as `mkShapesRDF`. E.g., let's assume we have a `Run3` directory where we installed both `mkShapesRDF` and `PlotsConfigurationsRun3`. + +Then, we can source the `mkShapesRDF` environment using these commands: + + cd ../../../mkShapesRDF/ + + source start.sh + + cd - + +### Produce distributions using mkShapesMulti.py in batch mode + +Compile the configuration. Do it after every change to any file in this directory: + + mkShapesRDF -c 1 + +Produce histograms using batch: + + mkShapesRDF -c 1 -o 0 -f . -b 1 + +Check jobs status: + + mkShapesRDF -o 1 -f . + +Resubmit failed jobs: + + mkShapesRDF -o 1 -f . -r 1 + +Merge rootfiles: + + mkShapesRDF -o 2 -f . + +Plot distributions: + + bash do_plots.sh + +### Measure Fake Rate + +All the instructions are summarized in the `do_fake_rate.sh` bash script: + + bash do_fake_rate.sh \ No newline at end of file diff --git a/FakeRate/Full2017_v9/aliases.py b/FakeRate/Full2017_v9/aliases.py new file mode 100644 index 00000000..044adc63 --- /dev/null +++ b/FakeRate/Full2017_v9/aliases.py @@ -0,0 +1,78 @@ +import os +import copy +import inspect + +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/FakeRate/Full2017_v9 + +configurations = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file +configurations = os.path.dirname(configurations) # Full2017_v9 +configurations = os.path.dirname(configurations) # FakeRate + +aliases = {} +aliases = OrderedDict() + +mc = [skey for skey in samples if skey not in ('Fake', 'DATA')] + + +# Evaluate BDT discriminant +aliases['Lepton_mvaTTH_UL'] = { + 'linesToAdd' : [f'#include "{configurations}/macros/ttH_MVA_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('ttH_MVA_reader ttHMVA = ttH_MVA_reader(\"BDTG\",\"{configurations}/data/UL20_el_TTH-like_2017_BDTG.weights.xml\",\"BDTG\",\"{configurations}/data/UL20_mu_TTH-like_2017_BDTG.weights.xml\");')"], + 'expr' : 'ttHMVA(nLepton,Lepton_pdgId,Lepton_electronIdx,Electron_jetIdx,event,Electron_mvaTTH,Electron_mvaFall17V2noIso_WPL,Electron_lostHits,Electron_pt,Electron_eta,Electron_pfRelIso03_all,Electron_miniPFRelIso_chg,Electron_miniPFRelIso_all,Electron_jetNDauCharged,Electron_jetPtRelv2,Electron_jetRelIso,Jet_btagDeepFlavB,Electron_sip3d,Electron_dxy,Electron_dz,Electron_mvaFall17V2noIso,Lepton_muonIdx,Muon_jetIdx,Muon_mvaTTH,Muon_looseId,Muon_isGlobal,Muon_isTracker,Muon_isPFcand,Muon_mediumId,Muon_pt,Muon_eta,Muon_pfRelIso03_all,Muon_miniPFRelIso_chg,Muon_miniPFRelIso_all,Muon_jetNDauCharged,Muon_jetPtRelv2,Muon_jetRelIso,Muon_sip3d,Muon_dxy,Muon_dz,Muon_segmentComp)', + 'samples': ['DATA','DATA_unprescaled'], +} + +# LepCut2l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW +eleWP = 'mvaFall17V2Iso_WP90' +muWP = 'cut_Tight_HWWW' + +aliases['LepWPCut2l'] = { + # 'expr': 'LepCut2l__ele_' + eleWP + '__mu_' + muWP, + 'expr': 'LepCut2l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW*\ + ( ((abs(Lepton_pdgId[0])==13 && Muon_mvaTTH[Lepton_muonIdx[0]]>0.82) || (abs(Lepton_pdgId[0])==11 && Lepton_mvaTTH_UL[0]>0.90)) \ + && ((abs(Lepton_pdgId[1])==13 && Muon_mvaTTH[Lepton_muonIdx[1]]>0.82) || (abs(Lepton_pdgId[1])==11 && Lepton_mvaTTH_UL[1]>0.90)) )', + 'samples': mc + ['DATA','DATA_unprescaled'] +} + +aliases['LepWPCut1l'] = { + 'expr': '(abs(Lepton_pdgId[0])==11 && Lepton_isTightElectron_'+eleWP+'[0]>0.5 && Lepton_mvaTTH_UL[0]>0.90) \ + || (abs(Lepton_pdgId[0])==13 && Lepton_isTightMuon_'+muWP+'[0]>0.5 && Muon_mvaTTH[Lepton_muonIdx[0]]>0.82)', + 'samples': mc + ['DATA','DATA_unprescaled'] +} + +# No jet with pt > 30 GeV +aliases['zeroJet'] = { + 'expr': 'Alt(CleanJet_pt, 0, 0) < 30.' +} + +aliases['oneJet'] = { + 'expr': 'Alt(CleanJet_pt, 0, 0) > 30. && Alt(CleanJet_pt, 1, 0) < 30.' +} + +aliases['multiJet'] = { + 'expr': 'Alt(CleanJet_pt, 1, 0) > 30.' +} + +jet_pt_thrs = [10, 15, 20, 25, 30, 35, 40, 45] + +for jet_pt_threshold in jet_pt_thrs: + + # DeltaR(lep,jet) + aliases[f'drlj_{jet_pt_threshold}'] = { + 'linesToAdd': [f'#include "{configurations}/macros/away_jet.cc"'], + 'class': 'drlj', + 'args' : f'{jet_pt_threshold},nLepton,nCleanJet,Lepton_pt,Lepton_eta,Lepton_phi,CleanJet_pt,CleanJet_eta,CleanJet_phi', + 'samples': mc + ['DATA','DATA_unprescaled'] +} + +# DeltaR (l1,j1) +aliases['dRl1j1'] = { + 'expr': 'CleanJet_pt[0] >= 10 ? TMath::Sqrt(dphilep1jet1*dphilep1jet1 + (Lepton_eta[0]-CleanJet_eta[0])*(Lepton_eta[0]-CleanJet_eta[0])) : -9999', +} + +# Cone pt +aliases['Lepton_conept'] = { + 'expr': 'LeptonConePt(Lepton_pt, Lepton_pdgId, Lepton_electronIdx, Lepton_muonIdx, Electron_jetRelIso, Muon_jetRelIso)', + 'linesToAdd': [f'#include "{configurations}/../utils/macros/LeptonConePt_class.cc"'], + 'samples': mc + ['DATA', 'DATA_unprescaled'] +} diff --git a/FakeRate/Full2017_v9/configuration.py b/FakeRate/Full2017_v9/configuration.py new file mode 100644 index 00000000..b236b110 --- /dev/null +++ b/FakeRate/Full2017_v9/configuration.py @@ -0,0 +1,89 @@ +# Configuration file for fake rate measurement using the UL 2017 dataset + +# Tag used to identify the configuration folder version +tag = 'Fake_Full2017_v9' + +# File to use as runner script, default uses mkShapesRDF.shapeAnalysis.runner, otherwise specify path to script +runnerFile = "default" + +# Output file name +outputFile = "mkShapes__{}.root".format(tag) + +# Path to ouput folder +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +if 'portal' in os.uname()[1]: + outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" + +# Path to batch folder (used for condor submission) +batchFolder = "condor" + +# Path to configuration folder (will contain all the compiled configuration files) +configsFolder = "configs" + +# Luminosity to normalize to (in 1/fb) +lumi = 1 + +# File with dict of aliases to define +aliasesFile = "aliases.py" + +# File with dict of variables +variablesFile = "variables.py" + +# File with dict of cuts +cutsFile = "cuts.py" + +# File with dict of samples +samplesFile = "samples.py" + +# File with dict of samples for plotting +plotFile = 'plot.py' + +# File with dict of structure (used to define processes in combine) +structureFile = "structure.py" + +# Nuisances file for mkDatacards and for mkShape +nuisancesFile = "nuisances.py" + +# Path to folder where to save plots +plotPath = 'plots_' + tag + +# This lines are executed right before the runner on the condor node +mountEOS = [] + +# List of imports to import when compiling the whole configuration folder, it should not contain imports used by configuration.py +imports = ["os", "glob", ("collections", "OrderedDict"), "ROOT"] + +# List of files to compile +filesToExec = [ + samplesFile, + aliasesFile, + variablesFile, + cutsFile, + plotFile, + nuisancesFile, + structureFile, +] + +# List of variables to keep in the compiled configuration folder +varsToKeep = [ + "batchVars", + "outputFolder", + "batchFolder", + "configsFolder", + "outputFile", + "runnerFile", + "tag", + "samples", + "aliases", + "variables", + ("cuts", {"cuts": "cuts", "preselections": "preselections"}), + ("plot", {"plot": "plot", "groupPlot": "groupPlot", "legend": "legend"}), + "nuisances", + "structure", + "lumi", +] + +# List of variables to keep in the batch submission script (script.py) +batchVars = varsToKeep[varsToKeep.index("samples") :] + +varsToKeep += ['plotPath'] diff --git a/FakeRate/Full2017_v9/cuts.py b/FakeRate/Full2017_v9/cuts.py new file mode 100644 index 00000000..1d394bf7 --- /dev/null +++ b/FakeRate/Full2017_v9/cuts.py @@ -0,0 +1,92 @@ +jet_pt_thresholds = [10, 15, 20, 25, 30, 35, 40, 45] + +# cuts +cuts = {} + +preselections = 'nLepton > 0 \ + && ((abs(Lepton_pdgId[0]) == 11 && Lepton_pt[0] > 10 && abs(Lepton_eta[0]) < 2.4) \ + || (abs(Lepton_pdgId[0]) == 13 && Lepton_pt[0] > 13 && abs(Lepton_eta[0]) < 2.5)) \ +' + +# Prompt rate selections +cuts['Zpeak_PR_loose'] = { + 'expr' : 'nLepton>1 && Lepton_pt[0]>25 && LepWPCut1l && Lepton_pt[1]>10 && mll>76 && mll<106 && PuppiMET_pt<20', + 'categories' : { + 'ele' : 'Lepton_pdgId[0]*Lepton_pdgId[1] == -121', + 'muon' : 'Lepton_pdgId[0]*Lepton_pdgId[1] == -169', + } +} + +# Prompt rate selections +cuts['Zpeak_PR_tight'] = { + 'expr' : 'nLepton>1 && Lepton_pt[0]>25 && Lepton_pt[1]>10 && LepWPCut2l && mll>76 && mll<106 && PuppiMET_pt<20', + 'categories' : { + 'ele' : 'Lepton_pdgId[0]*Lepton_pdgId[1] == -121', + 'muon' : 'Lepton_pdgId[0]*Lepton_pdgId[1] == -169', + } +} + + +for jet_pt_threshold in jet_pt_thresholds: + + ########################## + # Loose leptons selections + ########################## + + # QCD region + cuts[f'QCD_loose_jet_pt_{jet_pt_threshold}'] = { + 'expr' : f'nLepton == 1 && mtw1 < 20 && PuppiMET_pt < 20 && drlj_{jet_pt_threshold} > 1', + 'categories' : { + 'ele' : 'abs(Lepton_pdgId[0]) == 11', + 'muon' : 'abs(Lepton_pdgId[0]) == 13', + } + } + + # Z-peak + cuts[f'Zpeak_loose_jet_pt_{jet_pt_threshold}'] = { + 'expr' : f'nLepton > 1 && Lepton_pt[0] > 25 && Lepton_pt[1] > 10 && PuppiMET_pt < 20 && mll > 60 && mll < 120', + 'categories' : { + 'ele' : 'Lepton_pdgId[0]*Lepton_pdgId[1] == -121 && Lepton_pt[1] > 13', + 'muon' : 'Lepton_pdgId[0]*Lepton_pdgId[1] == -169', + } + } + + # WJets region + cuts[f'WJets_loose_jet_pt_{jet_pt_threshold}'] = { + 'expr' : f'nLepton == 1 && mtw1 > 20 && PuppiMET_pt < 20 && drlj_{jet_pt_threshold} > 1', + 'categories' : { + 'ele' : 'abs(Lepton_pdgId[0]) == 11', + 'muon' : 'abs(Lepton_pdgId[0]) == 13', + } + } + + ########################## + # Tight leptons selections + ########################## + + # QCD region + cuts[f'QCD_tight_jet_pt_{jet_pt_threshold}'] = { + 'expr' : f'nLepton == 1 && mtw1 < 20 && PuppiMET_pt < 20 && drlj_{jet_pt_threshold} > 1 && LepWPCut1l', + 'categories' : { + 'ele' : 'abs(Lepton_pdgId[0]) == 11', + 'muon' : 'abs(Lepton_pdgId[0]) == 13', + } + } + + # Z-peak + cuts[f'Zpeak_tight_jet_pt_{jet_pt_threshold}'] = { + 'expr' : f'nLepton > 1 && PuppiMET_pt < 20 && mll > 60 && mll < 120 && LepWPCut1l', + 'categories' : { + 'ele' : 'Lepton_pdgId[0]*Lepton_pdgId[1] == -121 && Lepton_pt[1] > 13', + 'muon' : 'Lepton_pdgId[0]*Lepton_pdgId[1] == -169', + } + } + + # WJets region + cuts[f'WJets_tight_jet_pt_{jet_pt_threshold}'] = { + 'expr' : f'nLepton == 1 && mtw1 > 20 && PuppiMET_pt < 20 && drlj_{jet_pt_threshold} > 1 && LepWPCut1l', + 'categories' : { + 'ele' : 'abs(Lepton_pdgId[0]) == 11', + 'muon' : 'abs(Lepton_pdgId[0]) == 13', + } + } diff --git a/FakeRate/Full2017_v9/do_fake_rate.sh b/FakeRate/Full2017_v9/do_fake_rate.sh new file mode 100644 index 00000000..a82ed221 --- /dev/null +++ b/FakeRate/Full2017_v9/do_fake_rate.sh @@ -0,0 +1,34 @@ +cd ../scripts/ + +if [[ "$(uname -a)" == *portal* ]] || [[ "$(uname -a)" == *bms* ]]; then + echo "We are at KIT!" + input_dir=/ceph/${USER} +else + echo "We are on lxplus!" + input_dir=/eos/user/${USER:0:1}/${USER} +fi + +# Muons +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2017_v9/rootFile/mkShapes__Fake_Full2017_v9.root --outputFolder ../Full2017_v9/FakeRate_Full2017_v9/cut_Tight_HWWW_tthmva_82 --outputFileName MuonFR_jet45.root --jet_pt 45 --flavor muon --variable pt2_eta2 --do_prompt_rate True --outputFileNamePR MuonPR.root + +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2017_v9/rootFile/mkShapes__Fake_Full2017_v9.root --outputFolder ../Full2017_v9/FakeRate_Full2017_v9/cut_Tight_HWWW_tthmva_82 --outputFileName MuonFR_jet10.root --jet_pt 10 --flavor muon --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2017_v9/rootFile/mkShapes__Fake_Full2017_v9.root --outputFolder ../Full2017_v9/FakeRate_Full2017_v9/cut_Tight_HWWW_tthmva_82 --outputFileName MuonFR_jet15.root --jet_pt 15 --flavor muon --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2017_v9/rootFile/mkShapes__Fake_Full2017_v9.root --outputFolder ../Full2017_v9/FakeRate_Full2017_v9/cut_Tight_HWWW_tthmva_82 --outputFileName MuonFR_jet20.root --jet_pt 20 --flavor muon --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2017_v9/rootFile/mkShapes__Fake_Full2017_v9.root --outputFolder ../Full2017_v9/FakeRate_Full2017_v9/cut_Tight_HWWW_tthmva_82 --outputFileName MuonFR_jet25.root --jet_pt 25 --flavor muon --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2017_v9/rootFile/mkShapes__Fake_Full2017_v9.root --outputFolder ../Full2017_v9/FakeRate_Full2017_v9/cut_Tight_HWWW_tthmva_82 --outputFileName MuonFR_jet30.root --jet_pt 30 --flavor muon --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2017_v9/rootFile/mkShapes__Fake_Full2017_v9.root --outputFolder ../Full2017_v9/FakeRate_Full2017_v9/cut_Tight_HWWW_tthmva_82 --outputFileName MuonFR_jet35.root --jet_pt 35 --flavor muon --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2017_v9/rootFile/mkShapes__Fake_Full2017_v9.root --outputFolder ../Full2017_v9/FakeRate_Full2017_v9/cut_Tight_HWWW_tthmva_82 --outputFileName MuonFR_jet40.root --jet_pt 40 --flavor muon --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2017_v9/rootFile/mkShapes__Fake_Full2017_v9.root --outputFolder ../Full2017_v9/FakeRate_Full2017_v9/cut_Tight_HWWW_tthmva_82 --outputFileName MuonFR_jet45.root --jet_pt 45 --flavor muon --variable pt1_eta1 + +# Electrons +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2017_v9/rootFile/mkShapes__Fake_Full2017_v9.root --outputFolder ../Full2017_v9/FakeRate_Full2017_v9/mvaFall17V2Iso_WP90_tthmva_UL_90 --outputFileName EleFR_jet45.root --jet_pt 45 --flavor ele --variable pt2_eta2 --do_prompt_rate True --outputFileNamePR ElePR.root + +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2017_v9/rootFile/mkShapes__Fake_Full2017_v9.root --outputFolder ../Full2017_v9/FakeRate_Full2017_v9/mvaFall17V2Iso_WP90_tthmva_UL_90 --outputFileName EleFR_jet10.root --jet_pt 10 --flavor ele --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2017_v9/rootFile/mkShapes__Fake_Full2017_v9.root --outputFolder ../Full2017_v9/FakeRate_Full2017_v9/mvaFall17V2Iso_WP90_tthmva_UL_90 --outputFileName EleFR_jet15.root --jet_pt 15 --flavor ele --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2017_v9/rootFile/mkShapes__Fake_Full2017_v9.root --outputFolder ../Full2017_v9/FakeRate_Full2017_v9/mvaFall17V2Iso_WP90_tthmva_UL_90 --outputFileName EleFR_jet25.root --jet_pt 25 --flavor ele --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2017_v9/rootFile/mkShapes__Fake_Full2017_v9.root --outputFolder ../Full2017_v9/FakeRate_Full2017_v9/mvaFall17V2Iso_WP90_tthmva_UL_90 --outputFileName EleFR_jet30.root --jet_pt 30 --flavor ele --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2017_v9/rootFile/mkShapes__Fake_Full2017_v9.root --outputFolder ../Full2017_v9/FakeRate_Full2017_v9/mvaFall17V2Iso_WP90_tthmva_UL_90 --outputFileName EleFR_jet35.root --jet_pt 35 --flavor ele --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2017_v9/rootFile/mkShapes__Fake_Full2017_v9.root --outputFolder ../Full2017_v9/FakeRate_Full2017_v9/mvaFall17V2Iso_WP90_tthmva_UL_90 --outputFileName EleFR_jet40.root --jet_pt 40 --flavor ele --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_Full2017_v9/rootFile/mkShapes__Fake_Full2017_v9.root --outputFolder ../Full2017_v9/FakeRate_Full2017_v9/mvaFall17V2Iso_WP90_tthmva_UL_90 --outputFileName EleFR_jet45.root --jet_pt 45 --flavor ele --variable pt1_eta1 + +cd - diff --git a/FakeRate/Full2017_v9/do_plots.sh b/FakeRate/Full2017_v9/do_plots.sh new file mode 100644 index 00000000..b585f221 --- /dev/null +++ b/FakeRate/Full2017_v9/do_plots.sh @@ -0,0 +1,9 @@ +# Plots used for fake rate: using prescaled triggers +mkShapesRDF -c 1 +mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png + +# Plots used for prompt rate: using unprescaled triggers +cd unprescaled_cfg/ +mkShapesRDF -c 1 +mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png +cd - diff --git a/FakeRate/Full2017_v9/nuisances.py b/FakeRate/Full2017_v9/nuisances.py new file mode 100644 index 00000000..45965277 --- /dev/null +++ b/FakeRate/Full2017_v9/nuisances.py @@ -0,0 +1,27 @@ +import sys + +nuisances = {} + +mc = [skey for skey in samples if skey not in ('Fake', 'DATA','ChargeFlip')] + +redirector = "" + +useXROOTD = False + +################################ EXPERIMENTAL UNCERTAINTIES ################################# + +#### Luminosity + +# https://twiki.cern.ch/twiki/bin/view/CMS/LumiRecommendationsRun2#LumiComb +# Uncorrelated 2016 1.0 +# Uncorrelated 2017 2.0 +# Uncorrelated 2018 1.5 +# Correlated 2016, 2017, 2018 0.6, 0.9, 2.0 +# Correlated 2017, 2018 0.6, 0.2 + +nuisances['lumi_Uncorrelated'] = { + 'name' : 'lumi_13TeV_2017', + 'type' : 'lnN', + 'samples' : dict((skey, '1.020') for skey in mc if skey not in ['WZ']) +} + diff --git a/FakeRate/Full2017_v9/plot.py b/FakeRate/Full2017_v9/plot.py new file mode 100644 index 00000000..93e83d8f --- /dev/null +++ b/FakeRate/Full2017_v9/plot.py @@ -0,0 +1,64 @@ +# Plot configuration + +# Groups of samples to improve the plots. +# If not defined, normal plots is used + +lepton_categories = ['_ele_low_pt', '_ele_high_pt', '_muon_low_pt', '_muon_high_pt'] + +groupPlot = {} + +groupPlot['DY'] = { + 'nameHR' : "DY", + 'isSignal' : 0, + 'color' : 418, # kGreen+2 + 'samples' : ['DY' + lep_cat for lep_cat in lepton_categories] +} + +groupPlot['WJets'] = { + 'nameHR' : "WJets", + 'isSignal' : 0, + 'color' : 11, # kGrey + 'samples' : ['WJets' + lep_cat for lep_cat in lepton_categories] +} + +# keys here must match keys in samples.py + +plot = {} + +for lep_cat in lepton_categories: + + plot['DY' + lep_cat] = { + 'nameHR' : 'DY', + 'color' : 418, # kGreen+2 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0, + } + + plot['WJets' + lep_cat] = { + 'nameHR' : 'WJets', + 'color' : 11, # kGrey + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0, + } + +######## +# Data # +######## + +plot['DATA'] = { + 'nameHR' : 'Data', + 'color' : 1 , + 'isSignal' : 0, + 'isData' : 1, + 'isBlind' : 0 +} + + +# Define legend + +legend = {} + +legend['lumi'] = '' # L = 41.5 fb^{-1}' +legend['sqrt'] = '#sqrt{s} = 13 TeV' diff --git a/FakeRate/Full2017_v9/repeat.sh b/FakeRate/Full2017_v9/repeat.sh new file mode 100644 index 00000000..0733e7a4 --- /dev/null +++ b/FakeRate/Full2017_v9/repeat.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +if [ $# -eq 0 ]; then + echo "$0: Missing arguments" + exit 1 +else + echo "We got some argument(s)" + echo "===========================" + echo "Number of arguments. : $#" + echo "List of arguments... : $@" + echo "Arg #1: sample : $1" + echo "Arg #2: compile : $2" + echo "===========================" + SAMPLE=$1 + COMPILE=$2 +fi + + +if [ "$COMPILE" == "True" ]; then + mkShapesRDF -c 1 + mkShapesRDF -o 0 -f . -b 1 -dR 1 +fi +cd condor/Fake_Full2017_v9/${SAMPLE}/ +cp ../../../../../../../../mkShapesRDF/mkShapesRDF/include/headers.hh ../../../../../../../../mkShapesRDF/mkShapesRDF/shapeAnalysis/runner.py . +python runner.py +cp output.root /eos/user/n/ntrevisa/mkShapesRDF_rootfiles/Fake_Full2017_v9/rootFile/mkShapes__Fake_Full2017_v9__ALL__${SAMPLE}.root +rm output.root diff --git a/FakeRate/Full2017_v9/samples.py b/FakeRate/Full2017_v9/samples.py new file mode 100644 index 00000000..1449c035 --- /dev/null +++ b/FakeRate/Full2017_v9/samples.py @@ -0,0 +1,235 @@ +import os,sys,glob + +################################################ +################# SKIMS ######################## +################################################ + +# MC: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Summer20UL17_106x_nAODv9_Full2017v9/MCl1loose2017v9__MCCorr2017v9NoJERInHorn/ +# DATA: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Run2017_UL2017_nAODv9_Full2017v9/DATAl1loose2017v9/ + +mcProduction = 'Summer20UL17_106x_nAODv9_Full2017v9' +dataReco = 'Run2017_UL2017_nAODv9_Full2017v9' + +mcSteps = 'MCl1loose2017v9__MCCorr2017v9NoJERInHorn' +dataSteps = 'DATAl1loose2017v9' + +############################################## +###### Tree base directory for the site ###### +############################################## + +treeBaseDir = '/eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano' +if 'portal' in os.uname()[1]: + treeBaseDir = '/ceph/ntrevisa/HWWNano' + +limitFiles = -1 + +def makeMCDirectory(var=''): + return os.path.join(treeBaseDir, mcProduction, mcSteps.format(var='')) + +mcDirectory = makeMCDirectory() +dataDirectory = os.path.join(treeBaseDir, dataReco, dataSteps) + +samples = {} + +from mkShapesRDF.lib.search_files import SearchFiles +s = SearchFiles() + +useXROOTD = True +redirector = 'root://eoscms.cern.ch/' +if 'portal' in os.uname()[1]: + redirector = '' + +def nanoGetSampleFiles(path, name): + _files = s.searchFiles(path, name, redirector=redirector) + if limitFiles != -1 and len(_files) > limitFiles: + return [(name, _files[:limitFiles])] + else: + return [(name, _files)] + +def CombineBaseW(samples, proc, samplelist): + _filtFiles = list(filter(lambda k: k[0] in samplelist, samples[proc]['name'])) + _files = list(map(lambda k: k[1], _filtFiles)) + _l = list(map(lambda k: len(k), _files)) + leastFiles = _files[_l.index(min(_l))] + dfSmall = ROOT.RDataFrame('Runs', leastFiles) + s = dfSmall.Sum('genEventSumw').GetValue() + f = ROOT.TFile.Open(leastFiles[0]) + t = f.Get('Events') + t.GetEntry(1) + xs = t.baseW * s + + __files = [] + for f in _files: + __files += f + df = ROOT.RDataFrame('Runs', __files) + s = df.Sum('genEventSumw').GetValue() + newbaseW = str(xs / s) + weight = newbaseW + '/baseW' + + for iSample in samplelist: + addSampleWeight(samples, proc, iSample, weight) + +def addSampleWeight(samples, sampleName, sampleNameType, weight): + obj = list(filter(lambda k: k[0] == sampleNameType, samples[sampleName]['name']))[0] + samples[sampleName]['name'] = list(filter(lambda k: k[0] != sampleNameType, samples[sampleName]['name'])) + if len(obj) > 2: + samples[sampleName]['name'].append((obj[0], obj[1], obj[2] + '*(' + weight + ')')) + else: + samples[sampleName]['name'].append((obj[0], obj[1], '(' + weight + ')' )) + + +################################################ +############ DATA DECLARATION ################## +################################################ + +DataRun = [ + # ['B','Run2017B-UL2017-v1'], # the prescaled trigger paths are not available in Run 2017B (https://twiki.cern.ch/twiki/bin/viewauth/CMS/HLTPathsRunIIList) + ['C','Run2017C-UL2017-v1'], + ['D','Run2017D-UL2017-v1'], + ['E','Run2017E-UL2017-v1'], + ['F','Run2017F-UL2017-v1'], +] + +# Pre-scaled triggers for fake rate estimation +DataSets = ['DoubleMuon','SingleElectron'] + +DataTrig = { + 'DoubleMuon' : '(Lepton_pt[0] <= 20 && HLT_Mu8_TrkIsoVVL > 0.5) || (Lepton_pt[0] > 20 && HLT_Mu17_TrkIsoVVL > 0.5)', + 'SingleElectron' : '(HLT_Mu8_TrkIsoVVL < 0.5) && (HLT_Mu17_TrkIsoVVL < 0.5) && ((Lepton_pt[0] <= 25 && HLT_Ele8_CaloIdL_TrackIdL_IsoVL_PFJet30 > 0.5) || (Lepton_pt[0] > 25 && HLT_Ele23_CaloIdL_TrackIdL_IsoVL_PFJet30 > 0.5))', +} + +# Unprescaled triggers for prompt rate estimation +DataRunUnprescaled = [ + ['B','Run2017B-UL2017-v1'], + ['C','Run2017C-UL2017-v1'], + ['D','Run2017D-UL2017-v1'], + ['E','Run2017E-UL2017-v1'], + ['F','Run2017F-UL2017-v1'], +] + +DataSetsUnprescaled = ['SingleMuon','SingleElectron'] + +DataTrigUnprescaled = { + 'SingleMuon' : 'HLT_IsoMu27 > 0.5', + 'SingleElectron' : 'HLT_IsoMu27 < 0.5 && HLT_Ele35_WPTight_Gsf > 0.5', +} + +######################################### +############ MC COMMON ################## +######################################### + +# SFweight does not include btag weights +# mcCommonWeight = 'XSWeight/1000.' +# XSWeight = baseW * Generator_weight +mcCommonWeight = 'baseW*puWeight*Generator_weight/1000.' + +########################################### +############# BACKGROUNDS ############### +########################################### + +lumi_ele_low_pt = '3.973*(HLT_Ele8_CaloIdL_TrackIdL_IsoVL_PFJet30 > 0.5)*(Lepton_pt[0]<=25)'; +lumi_ele_high_pt = '43.469*(HLT_Ele23_CaloIdL_TrackIdL_IsoVL_PFJet30 > 0.5)*(Lepton_pt[0]>25)'; +lumi_muon_low_pt = '2.903*(HLT_Mu8_TrkIsoVVL > 0.5)*(Lepton_pt[0]<=20)'; +lumi_muon_high_pt = '65.944*(HLT_Mu17_TrkIsoVVL > 0.5)*(Lepton_pt[0]>20)'; +lumi_full_2018 = '41479' + +# DY +files = nanoGetSampleFiles(mcDirectory, 'DYJetsToLL_M-50') + +samples['DY_ele_low_pt'] = { + 'name': files, + 'weight': mcCommonWeight + '*' + lumi_ele_low_pt, + 'FilesPerJob': 4, +} + +samples['DY_ele_high_pt'] = { + 'name': files, + 'weight': mcCommonWeight + '*' + lumi_ele_high_pt, + 'FilesPerJob': 4, +} + +samples['DY_muon_low_pt'] = { + 'name': files, + 'weight': mcCommonWeight + '*' + lumi_muon_low_pt, + 'FilesPerJob': 4, +} + +samples['DY_muon_high_pt'] = { + 'name': files, + 'weight': mcCommonWeight + '*' + lumi_muon_high_pt, + 'FilesPerJob': 4, +} + +samples['DY_unprescaled'] = { + 'name': files, + 'weight': mcCommonWeight + '*' + lumi_full_2018, + 'FilesPerJob': 4, +} + +##### WJets ####### +files = nanoGetSampleFiles(mcDirectory, 'WJetsToLNu-LO') + +samples['WJets_ele_low_pt'] = { + 'name': files, + 'weight': mcCommonWeight + '*' + lumi_ele_low_pt + '*(XSWeight < 1)', + 'FilesPerJob': 4, +} + +samples['WJets_ele_high_pt'] = { + 'name': files, + 'weight': mcCommonWeight + '*' + lumi_ele_high_pt + '*(XSWeight < 1)', + 'FilesPerJob': 4, +} + +samples['WJets_muon_low_pt'] = { + 'name': files, + 'weight': mcCommonWeight + '*' + lumi_muon_low_pt + '*(XSWeight < 1)', + 'FilesPerJob': 4, +} + +samples['WJets_muon_high_pt'] = { + 'name': files, + 'weight': mcCommonWeight + '*' + lumi_muon_high_pt + '*(XSWeight < 1)', + 'FilesPerJob': 4, +} + +########################################### +################## DATA ################### +########################################### + +# Prescaled +samples['DATA'] = { + 'name': [], + 'weight': 'METFilter_DATA', + 'weights': [], + 'isData': ['all'], + 'FilesPerJob': 10 +} + +for _, sd in DataRun: + for pd in DataSets: + tag_data = pd + '_' + sd + + files = nanoGetSampleFiles(dataDirectory, tag_data) + + samples['DATA']['name'].extend(files) + addSampleWeight(samples, 'DATA', tag_data, DataTrig[pd]) + + +# Unprescaled +samples['DATA_unprescaled'] = { + 'name': [], + 'weight': 'METFilter_DATA', + 'weights': [], + 'isData': ['all'], + 'FilesPerJob': 10 +} + +for _, sd in DataRunUnprescaled: + for pd in DataSetsUnprescaled: + tag_data = pd + '_' + sd + + files = nanoGetSampleFiles(dataDirectory, tag_data) + + samples['DATA_unprescaled']['name'].extend(files) + addSampleWeight(samples, 'DATA_unprescaled', tag_data, DataTrigUnprescaled[pd]) diff --git a/FakeRate/Full2017_v9/structure.py b/FakeRate/Full2017_v9/structure.py new file mode 100644 index 00000000..21a11db6 --- /dev/null +++ b/FakeRate/Full2017_v9/structure.py @@ -0,0 +1,26 @@ +# structure configuration for datacard + +# keys here must match keys in samples.py + +structure = {} + +structure['DY'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['Top'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['WJets'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +# Data +structure['DATA'] = { + 'isSignal' : 0, + 'isData' : 1 +} diff --git a/FakeRate/Full2017_v9/unprescaled_cfg/configuration.py b/FakeRate/Full2017_v9/unprescaled_cfg/configuration.py new file mode 100644 index 00000000..f9d1b11b --- /dev/null +++ b/FakeRate/Full2017_v9/unprescaled_cfg/configuration.py @@ -0,0 +1,87 @@ +# Configuration file for fake rate measurement using the UL 2018 dataset + +# Tag used to identify the configuration folder version +tag = 'Fake_Full2017_v9' + +# File to use as runner script, default uses mkShapesRDF.shapeAnalysis.runner, otherwise specify path to script +runnerFile = "default" + +# Output file name +outputFile = "mkShapes__{}.root".format(tag) + +# Path to ouput folder +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" + +# Path to batch folder (used for condor submission) +batchFolder = "condor" + +# Path to configuration folder (will contain all the compiled configuration files) +configsFolder = "configs" + +# Luminosity to normalize to (in 1/fb) +lumi = 1 + +# File with dict of aliases to define +aliasesFile = "../aliases.py" + +# File with dict of variables +variablesFile = "../variables.py" + +# File with dict of cuts +cutsFile = "cuts.py" + +# File with dict of samples +samplesFile = "../samples.py" + +# File with dict of samples for plotting +plotFile = 'plot.py' + +# File with dict of structure (used to define processes in combine) +structureFile = "../structure.py" + +# Nuisances file for mkDatacards and for mkShape +nuisancesFile = "../nuisances.py" + +# Path to folder where to save plots +plotPath = '../plots_' + tag + +# This lines are executed right before the runner on the condor node +mountEOS = [] + +# List of imports to import when compiling the whole configuration folder, it should not contain imports used by configuration.py +imports = ["os", "glob", ("collections", "OrderedDict"), "ROOT"] + +# List of files to compile +filesToExec = [ + samplesFile, + aliasesFile, + variablesFile, + cutsFile, + plotFile, + nuisancesFile, + structureFile, +] + +# List of variables to keep in the compiled configuration folder +varsToKeep = [ + "batchVars", + "outputFolder", + "batchFolder", + "configsFolder", + "outputFile", + "runnerFile", + "tag", + "samples", + "aliases", + "variables", + ("cuts", {"cuts": "cuts", "preselections": "preselections"}), + ("plot", {"plot": "plot", "groupPlot": "groupPlot", "legend": "legend"}), + "nuisances", + "structure", + "lumi", +] + +# List of variables to keep in the batch submission script (script.py) +batchVars = varsToKeep[varsToKeep.index("samples") :] + +varsToKeep += ['plotPath'] diff --git a/FakeRate/Full2017_v9/unprescaled_cfg/cuts.py b/FakeRate/Full2017_v9/unprescaled_cfg/cuts.py new file mode 100644 index 00000000..96eb7f22 --- /dev/null +++ b/FakeRate/Full2017_v9/unprescaled_cfg/cuts.py @@ -0,0 +1,92 @@ +jet_pt_thresholds = [10, 15, 20, 25, 30, 35, 40, 45] + +# cuts +cuts = {} + +preselections = 'nLepton > 0 \ + && ((abs(Lepton_pdgId[0]) == 11 && Lepton_pt[0] > 10 && abs(Lepton_eta[0]) < 2.4) \ + || (abs(Lepton_pdgId[0]) == 13 && Lepton_pt[0] > 13 && abs(Lepton_eta[0]) < 2.5)) \ +' + +# Prompt rate selections +cuts['Zpeak_PR_loose'] = { + 'expr' : 'nLepton>1 && Lepton_pt[0]>25 && LepWPCut1l && Lepton_pt[1]>10 && mll>76 && mll<106 && PuppiMET_pt<20', + 'categories' : { + 'ele' : 'Lepton_pdgId[0]*Lepton_pdgId[1] == -121', + 'muon' : 'Lepton_pdgId[0]*Lepton_pdgId[1] == -169', + } +} + +# Prompt rate selections +cuts['Zpeak_PR_tight'] = { + 'expr' : 'nLepton>1 && Lepton_pt[0]>25 && Lepton_pt[1]>10 && LepWPCut2l && mll>76 && mll<106 && PuppiMET_pt<20', + 'categories' : { + 'ele' : 'Lepton_pdgId[0]*Lepton_pdgId[1] == -121', + 'muon' : 'Lepton_pdgId[0]*Lepton_pdgId[1] == -169', + } +} + + +# for jet_pt_threshold in jet_pt_thresholds: + +# ########################## +# # Loose leptons selections +# ########################## + +# # QCD region +# cuts[f'QCD_loose_jet_pt_{jet_pt_threshold}'] = { +# 'expr' : f'nLepton == 1 && mtw1 < 20 && PuppiMET_pt < 20 && drlj_{jet_pt_threshold} > 1', +# 'categories' : { +# 'ele' : 'abs(Lepton_pdgId[0]) == 11', +# 'muon' : 'abs(Lepton_pdgId[0]) == 13', +# } +# } + +# # Z-peak +# cuts[f'Zpeak_loose_jet_pt_{jet_pt_threshold}'] = { +# 'expr' : f'nLepton > 1 && Lepton_pt[0] > 25 && Lepton_pt[1] > 10 && PuppiMET_pt < 20 && mll > 60 && mll < 120', +# 'categories' : { +# 'ele' : 'Lepton_pdgId[0]*Lepton_pdgId[1] == -121 && Lepton_pt[1] > 13', +# 'muon' : 'Lepton_pdgId[0]*Lepton_pdgId[1] == -169', +# } +# } + +# # WJets region +# cuts[f'WJets_loose_jet_pt_{jet_pt_threshold}'] = { +# 'expr' : f'nLepton == 1 && mtw1 > 20 && PuppiMET_pt < 20 && drlj_{jet_pt_threshold} > 1', +# 'categories' : { +# 'ele' : 'abs(Lepton_pdgId[0]) == 11', +# 'muon' : 'abs(Lepton_pdgId[0]) == 13', +# } +# } + +# ########################## +# # Tight leptons selections +# ########################## + +# # QCD region +# cuts[f'QCD_tight_jet_pt_{jet_pt_threshold}'] = { +# 'expr' : f'nLepton == 1 && mtw1 < 20 && PuppiMET_pt < 20 && drlj_{jet_pt_threshold} > 1 && LepWPCut1l', +# 'categories' : { +# 'ele' : 'abs(Lepton_pdgId[0]) == 11', +# 'muon' : 'abs(Lepton_pdgId[0]) == 13', +# } +# } + +# # Z-peak +# cuts[f'Zpeak_tight_jet_pt_{jet_pt_threshold}'] = { +# 'expr' : f'nLepton > 1 && PuppiMET_pt < 20 && mll > 60 && mll < 120 && LepWPCut1l', +# 'categories' : { +# 'ele' : 'Lepton_pdgId[0]*Lepton_pdgId[1] == -121 && Lepton_pt[1] > 13', +# 'muon' : 'Lepton_pdgId[0]*Lepton_pdgId[1] == -169', +# } +# } + +# # WJets region +# cuts[f'WJets_tight_jet_pt_{jet_pt_threshold}'] = { +# 'expr' : f'nLepton == 1 && mtw1 > 20 && PuppiMET_pt < 20 && drlj_{jet_pt_threshold} > 1 && LepWPCut1l', +# 'categories' : { +# 'ele' : 'abs(Lepton_pdgId[0]) == 11', +# 'muon' : 'abs(Lepton_pdgId[0]) == 13', +# } +# } diff --git a/FakeRate/Full2017_v9/unprescaled_cfg/plot.py b/FakeRate/Full2017_v9/unprescaled_cfg/plot.py new file mode 100644 index 00000000..8b6e5647 --- /dev/null +++ b/FakeRate/Full2017_v9/unprescaled_cfg/plot.py @@ -0,0 +1,62 @@ +# plot configuration + +# Groups of samples to improve the plots. +# If not defined, normal plots is used + +# lepton_categories = ['_ele_low_pt', '_ele_high_pt', '_muon_low_pt', '_muon_high_pt'] + +groupPlot = {} + +groupPlot['DY'] = { + 'nameHR' : "DY", + 'isSignal' : 0, + 'color' : 418, # kGreen+2 + 'samples' : ['DY_unprescaled'] +} + +# groupPlot['WJets'] = { +# 'nameHR' : "WJets", +# 'isSignal' : 0, +# 'color' : 11, # kGrey +# 'samples' : ['WJets' + lep_cat for lep_cat in lepton_categories] +# } + +plot = {} + +# for lep_cat in lepton_categories: + +plot['DY_unprescaled'] = { + 'nameHR' : 'DY', + 'color' : 418, # kGreen+2 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0, +} + + # plot['WJets' + lep_cat] = { + # 'nameHR' : 'WJets', + # 'color' : 11, # kGrey + # 'isSignal' : 0, + # 'isData' : 0, + # 'scale' : 1.0, + # } + +######## +# Data # +######## + +plot['DATA_unprescaled'] = { + 'nameHR' : 'Data', + 'color' : 1 , + 'isSignal' : 0, + 'isData' : 1, + 'isBlind' : 0 +} + + +# Define legend + +legend = {} + +legend['lumi'] = 'L = 41.5 fb^{-1}' +legend['sqrt'] = '#sqrt{s} = 13 TeV' diff --git a/FakeRate/Full2017_v9/variables.py b/FakeRate/Full2017_v9/variables.py new file mode 100644 index 00000000..f0845ee5 --- /dev/null +++ b/FakeRate/Full2017_v9/variables.py @@ -0,0 +1,140 @@ +# variables + +# 0 = not fold (default), 1 = fold underflowbin, 2 = fold overflow bin, 3 = fold underflow and overflow + +variables = {} + +variables['events'] = { + 'name' : '1', + 'range' : (1,0,2), + 'xaxis' : 'events', + 'fold' : 3 +} + +################### +# Control variables +################### + +# ptbins[8] = {10, 15, 20, 25, 30, 35, 40, 45, 50}; +# etabins[2] = {0, 1.479, 2.5}; + +# variables['pt1_eta1'] = { +# 'name' : 'Lepton_pt[0]:abs(Lepton_eta[0])', +# 'range' : ([10, 15, 20, 25, 30, 35, 40, 45, 50],[0.0, 0.5, 1.0, 1.5, 2.0, 2.5],), +# 'xaxis' : 'p_{T}^{#ell 1}:#eta^{#ell 1}', +# 'fold' : 3, +# } + +# Cone_pt1 vs eta1 +variables['pt1_eta1'] = { + 'name' : 'Lepton_conept[0]:abs(Lepton_eta[0])', + 'range' : ([10, 15, 20, 25, 30, 35, 40, 45, 50],[0.0, 1.479, 2.5]), + 'xaxis' : 'p_{T}^{cone}(#ell 1):|#eta(#ell 1})|', + 'fold' : 3, +} + +# variables['pt2_eta2'] = { +# 'name' : 'Alt(Lepton_pt,1,0):abs(Alt(Lepton_eta,1,999))', +# 'range' : ([10, 15, 20, 25, 30, 35, 40, 45, 50],[0.0, 0.5, 1.0, 1.5, 2.0, 2.5],), +# 'xaxis' : 'p_{T}^{#ell 2}:#eta^{#ell 2}', +# 'fold' : 3, +# } + +# Cone_pt2 vs eta2 +variables['pt2_eta2'] = { + 'name' : 'Lepton_conept[1]:abs(Lepton_eta[1])', + 'range' : ([10, 15, 20, 25, 30, 35, 40, 45, 50],[0.0, 1.479, 2.5]), + 'xaxis' : 'p_{T}^{cone}(#ell 2):|#eta^{#ell 2}|', + 'fold' : 3, +} + +variables['mll'] = { + 'name' : 'mll', + 'range' : (20, 60,120), + 'xaxis' : 'm_{ll} [GeV]', + 'fold' : 0 +} + +variables['pt1'] = { + 'name' : 'Lepton_pt[0]', + 'range' : (20,0,100), + 'xaxis' : 'p_{T} 1st lep', + 'fold' : 0 +} + +variables['conept1'] = { + 'name' : 'Lepton_conept[0]', + 'range' : (20,0,100), + 'xaxis' : 'p_{T}^{cone} 1st lep', + 'fold' : 0 +} + +variables['eta1'] = { + 'name' : 'Lepton_eta[0]', + 'range' : (40,-3,3), + 'xaxis' : '#eta 1st lep', + 'fold' : 3 +} + +variables['pt2'] = { + 'name' : 'Alt(Lepton_pt,1,0)', + 'range' : (20,0,100), + 'xaxis' : 'p_{T} 2nd lep', + 'fold' : 0 +} + +variables['conept2'] = { + 'name' : 'Lepton_conept[1]', + 'range' : (20,0,100), + 'xaxis' : 'p_{T}^{cone} 2nd lep', + 'fold' : 0 +} + +variables['eta2'] = { + 'name' : 'Alt(Lepton_eta,1,999)', + 'range' : (40,-3,3), + 'xaxis' : '#eta 2nd lep', + 'fold' : 3 +} + +variables['mtw1'] = { + 'name' : 'mtw1', + 'range' : (20,0,100), + 'xaxis' : 'm_{T}^{W_{1}} [GeV]', + 'fold' : 3 +} + +variables['LepWPCut1l'] = { + 'name' : 'LepWPCut1l', + 'range' : (2,0,2), + 'xaxis' : 'Tight lepton flag', + 'fold' : 3 +} + +variables['dRl1j1'] = { + 'name' : 'dRl1j1', + 'range' : (20,0,10), + 'xaxis' : '#Delta R (#ell1,jet1)', + 'fold' : 3 +} + +variables['dphilep1jet1'] = { + 'name' : 'dphilep1jet1', + 'range' : (10,0,5), + 'xaxis' : '#Delta #phi (#ell1,jet1)', + 'fold' : 3 +} + +variables['puppimet'] = { + 'name' : 'PuppiMET_pt', + 'range' : (20,0,200), + 'xaxis' : 'PUPPI met [GeV]', + 'fold' : 3 +} + +# variables['jetpt1'] = { +# 'name' : 'CleanJet_pt[0]*(CleanJet_pt[0]>30)', +# 'range' : (40,0,200), +# 'xaxis' : 'p_{T} 1st jet', +# 'fold' : 2 +# } From 74141f0b92d0f577336813fb4020b5f9fe4e8452 Mon Sep 17 00:00:00 2001 From: ntrevisa Date: Tue, 12 Aug 2025 10:01:46 +0200 Subject: [PATCH 04/44] Fake rates using cone pt 2016noHIPM --- FakeRate/2016noHIPM_v9/README.md | 49 ++++ FakeRate/2016noHIPM_v9/aliases.py | 78 ++++++ FakeRate/2016noHIPM_v9/configuration.py | 89 +++++++ FakeRate/2016noHIPM_v9/cuts.py | 92 +++++++ FakeRate/2016noHIPM_v9/do_fake_rate.sh | 34 +++ FakeRate/2016noHIPM_v9/do_plots.sh | 9 + FakeRate/2016noHIPM_v9/nuisances.py | 27 ++ FakeRate/2016noHIPM_v9/plot.py | 64 +++++ FakeRate/2016noHIPM_v9/repeat.sh | 27 ++ FakeRate/2016noHIPM_v9/samples.py | 245 ++++++++++++++++++ FakeRate/2016noHIPM_v9/structure.py | 26 ++ .../unprescaled_cfg/configuration.py | 87 +++++++ .../2016noHIPM_v9/unprescaled_cfg/cuts.py | 92 +++++++ .../2016noHIPM_v9/unprescaled_cfg/plot.py | 62 +++++ FakeRate/2016noHIPM_v9/variables.py | 140 ++++++++++ 15 files changed, 1121 insertions(+) create mode 100644 FakeRate/2016noHIPM_v9/README.md create mode 100644 FakeRate/2016noHIPM_v9/aliases.py create mode 100644 FakeRate/2016noHIPM_v9/configuration.py create mode 100644 FakeRate/2016noHIPM_v9/cuts.py create mode 100644 FakeRate/2016noHIPM_v9/do_fake_rate.sh create mode 100644 FakeRate/2016noHIPM_v9/do_plots.sh create mode 100644 FakeRate/2016noHIPM_v9/nuisances.py create mode 100644 FakeRate/2016noHIPM_v9/plot.py create mode 100644 FakeRate/2016noHIPM_v9/repeat.sh create mode 100644 FakeRate/2016noHIPM_v9/samples.py create mode 100644 FakeRate/2016noHIPM_v9/structure.py create mode 100644 FakeRate/2016noHIPM_v9/unprescaled_cfg/configuration.py create mode 100644 FakeRate/2016noHIPM_v9/unprescaled_cfg/cuts.py create mode 100644 FakeRate/2016noHIPM_v9/unprescaled_cfg/plot.py create mode 100644 FakeRate/2016noHIPM_v9/variables.py diff --git a/FakeRate/2016noHIPM_v9/README.md b/FakeRate/2016noHIPM_v9/README.md new file mode 100644 index 00000000..cfcb4935 --- /dev/null +++ b/FakeRate/2016noHIPM_v9/README.md @@ -0,0 +1,49 @@ +# Fake Rate Measurement + +The configuration prepares the histograms needed for extracting fake rates. + +The instructions to run the analysis follow. + +### Load the mkShapesRDF environment + +Here, we assume `PlotsConfigurationsRun3` was installed in the same directory as `mkShapesRDF`. E.g., let's assume we have a `Run3` directory where we installed both `mkShapesRDF` and `PlotsConfigurationsRun3`. + +Then, we can source the `mkShapesRDF` environment using these commands: + + cd ../../../mkShapesRDF/ + + source start.sh + + cd - + +### Produce distributions using mkShapesMulti.py in batch mode + +Compile the configuration. Do it after every change to any file in this directory: + + mkShapesRDF -c 1 + +Produce histograms using batch: + + mkShapesRDF -c 1 -o 0 -f . -b 1 + +Check jobs status: + + mkShapesRDF -o 1 -f . + +Resubmit failed jobs: + + mkShapesRDF -o 1 -f . -r 1 + +Merge rootfiles: + + mkShapesRDF -o 2 -f . + +Plot distributions: + + bash do_plots.sh + +### Measure Fake Rate + +All the instructions are summarized in the `do_fake_rate.sh` bash script: + + bash do_fake_rate.sh \ No newline at end of file diff --git a/FakeRate/2016noHIPM_v9/aliases.py b/FakeRate/2016noHIPM_v9/aliases.py new file mode 100644 index 00000000..113dd69f --- /dev/null +++ b/FakeRate/2016noHIPM_v9/aliases.py @@ -0,0 +1,78 @@ +import os +import copy +import inspect + +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/FakeRate/2016noHIPM_v9 + +configurations = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file +configurations = os.path.dirname(configurations) # 2016noHIPM_v9 +configurations = os.path.dirname(configurations) # FakeRate + +aliases = {} +aliases = OrderedDict() + +mc = [skey for skey in samples if skey not in ('Fake', 'DATA')] + + +# Evaluate BDT discriminant +aliases['Lepton_mvaTTH_UL'] = { + 'linesToAdd' : [f'#include "{configurations}/macros/ttH_MVA_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('ttH_MVA_reader ttHMVA = ttH_MVA_reader(\"BDTG\",\"{configurations}/data/UL20_el_TTH-like_2016_BDTG.weights.xml\",\"BDTG\",\"{configurations}/data/UL20_mu_TTH-like_2016_BDTG.weights.xml\");')"], + 'expr' : 'ttHMVA(nLepton,Lepton_pdgId,Lepton_electronIdx,Electron_jetIdx,event,Electron_mvaTTH,Electron_mvaFall17V2noIso_WPL,Electron_lostHits,Electron_pt,Electron_eta,Electron_pfRelIso03_all,Electron_miniPFRelIso_chg,Electron_miniPFRelIso_all,Electron_jetNDauCharged,Electron_jetPtRelv2,Electron_jetRelIso,Jet_btagDeepFlavB,Electron_sip3d,Electron_dxy,Electron_dz,Electron_mvaFall17V2noIso,Lepton_muonIdx,Muon_jetIdx,Muon_mvaTTH,Muon_looseId,Muon_isGlobal,Muon_isTracker,Muon_isPFcand,Muon_mediumId,Muon_pt,Muon_eta,Muon_pfRelIso03_all,Muon_miniPFRelIso_chg,Muon_miniPFRelIso_all,Muon_jetNDauCharged,Muon_jetPtRelv2,Muon_jetRelIso,Muon_sip3d,Muon_dxy,Muon_dz,Muon_segmentComp)', + 'samples': ['DATA','DATA_unprescaled'], +} + +# LepCut2l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight80x +eleWP = 'mvaFall17V2Iso_WP90' +muWP = 'cut_Tight80x' + +aliases['LepWPCut2l'] = { + # 'expr': 'LepCut2l__ele_' + eleWP + '__mu_' + muWP, + 'expr': 'LepCut2l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight80x*\ + ( ((abs(Lepton_pdgId[0])==13 && Muon_mvaTTH[Lepton_muonIdx[0]]>0.82) || (abs(Lepton_pdgId[0])==11 && Lepton_mvaTTH_UL[0]>0.90)) \ + && ((abs(Lepton_pdgId[1])==13 && Muon_mvaTTH[Lepton_muonIdx[1]]>0.82) || (abs(Lepton_pdgId[1])==11 && Lepton_mvaTTH_UL[1]>0.90)) )', + 'samples': mc + ['DATA','DATA_unprescaled'] +} + +aliases['LepWPCut1l'] = { + 'expr': '(abs(Lepton_pdgId[0])==11 && Lepton_isTightElectron_'+eleWP+'[0]>0.5 && Lepton_mvaTTH_UL[0]>0.90) \ + || (abs(Lepton_pdgId[0])==13 && Lepton_isTightMuon_'+muWP+'[0]>0.5 && Muon_mvaTTH[Lepton_muonIdx[0]]>0.82)', + 'samples': mc + ['DATA','DATA_unprescaled'] +} + +# No jet with pt > 30 GeV +aliases['zeroJet'] = { + 'expr': 'Alt(CleanJet_pt, 0, 0) < 30.' +} + +aliases['oneJet'] = { + 'expr': 'Alt(CleanJet_pt, 0, 0) > 30. && Alt(CleanJet_pt, 1, 0) < 30.' +} + +aliases['multiJet'] = { + 'expr': 'Alt(CleanJet_pt, 1, 0) > 30.' +} + +jet_pt_thrs = [10, 15, 20, 25, 30, 35, 40, 45] + +for jet_pt_threshold in jet_pt_thrs: + + # DeltaR(lep,jet) + aliases[f'drlj_{jet_pt_threshold}'] = { + 'linesToAdd': [f'#include "{configurations}/macros/away_jet.cc"'], + 'class': 'drlj', + 'args' : f'{jet_pt_threshold},nLepton,nCleanJet,Lepton_pt,Lepton_eta,Lepton_phi,CleanJet_pt,CleanJet_eta,CleanJet_phi', + 'samples': mc + ['DATA','DATA_unprescaled'] +} + +# DeltaR (l1,j1) +aliases['dRl1j1'] = { + 'expr': 'CleanJet_pt[0] >= 10 ? TMath::Sqrt(dphilep1jet1*dphilep1jet1 + (Lepton_eta[0]-CleanJet_eta[0])*(Lepton_eta[0]-CleanJet_eta[0])) : -9999', +} + +# Cone pt +aliases['Lepton_conept'] = { + 'expr': 'LeptonConePt(Lepton_pt, Lepton_pdgId, Lepton_electronIdx, Lepton_muonIdx, Electron_jetRelIso, Muon_jetRelIso)', + 'linesToAdd': [f'#include "{configurations}/../utils/macros/LeptonConePt_class.cc"'], + 'samples': mc + ['DATA', 'DATA_unprescaled'] +} diff --git a/FakeRate/2016noHIPM_v9/configuration.py b/FakeRate/2016noHIPM_v9/configuration.py new file mode 100644 index 00000000..286dba95 --- /dev/null +++ b/FakeRate/2016noHIPM_v9/configuration.py @@ -0,0 +1,89 @@ +# Configuration file for fake rate measurement using the UL 2016noHIPM dataset + +# Tag used to identify the configuration folder version +tag = 'Fake_2016noHIPM_v9' + +# File to use as runner script, default uses mkShapesRDF.shapeAnalysis.runner, otherwise specify path to script +runnerFile = "default" + +# Output file name +outputFile = "mkShapes__{}.root".format(tag) + +# Path to ouput folder +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +if 'portal' in os.uname()[1]: + outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" + +# Path to batch folder (used for condor submission) +batchFolder = "condor" + +# Path to configuration folder (will contain all the compiled configuration files) +configsFolder = "configs" + +# Luminosity to normalize to (in 1/fb) +lumi = 1 + +# File with dict of aliases to define +aliasesFile = "aliases.py" + +# File with dict of variables +variablesFile = "variables.py" + +# File with dict of cuts +cutsFile = "cuts.py" + +# File with dict of samples +samplesFile = "samples.py" + +# File with dict of samples for plotting +plotFile = 'plot.py' + +# File with dict of structure (used to define processes in combine) +structureFile = "structure.py" + +# Nuisances file for mkDatacards and for mkShape +nuisancesFile = "nuisances.py" + +# Path to folder where to save plots +plotPath = 'plots_' + tag + +# This lines are executed right before the runner on the condor node +mountEOS = [] + +# List of imports to import when compiling the whole configuration folder, it should not contain imports used by configuration.py +imports = ["os", "glob", ("collections", "OrderedDict"), "ROOT"] + +# List of files to compile +filesToExec = [ + samplesFile, + aliasesFile, + variablesFile, + cutsFile, + plotFile, + nuisancesFile, + structureFile, +] + +# List of variables to keep in the compiled configuration folder +varsToKeep = [ + "batchVars", + "outputFolder", + "batchFolder", + "configsFolder", + "outputFile", + "runnerFile", + "tag", + "samples", + "aliases", + "variables", + ("cuts", {"cuts": "cuts", "preselections": "preselections"}), + ("plot", {"plot": "plot", "groupPlot": "groupPlot", "legend": "legend"}), + "nuisances", + "structure", + "lumi", +] + +# List of variables to keep in the batch submission script (script.py) +batchVars = varsToKeep[varsToKeep.index("samples") :] + +varsToKeep += ['plotPath'] diff --git a/FakeRate/2016noHIPM_v9/cuts.py b/FakeRate/2016noHIPM_v9/cuts.py new file mode 100644 index 00000000..1d394bf7 --- /dev/null +++ b/FakeRate/2016noHIPM_v9/cuts.py @@ -0,0 +1,92 @@ +jet_pt_thresholds = [10, 15, 20, 25, 30, 35, 40, 45] + +# cuts +cuts = {} + +preselections = 'nLepton > 0 \ + && ((abs(Lepton_pdgId[0]) == 11 && Lepton_pt[0] > 10 && abs(Lepton_eta[0]) < 2.4) \ + || (abs(Lepton_pdgId[0]) == 13 && Lepton_pt[0] > 13 && abs(Lepton_eta[0]) < 2.5)) \ +' + +# Prompt rate selections +cuts['Zpeak_PR_loose'] = { + 'expr' : 'nLepton>1 && Lepton_pt[0]>25 && LepWPCut1l && Lepton_pt[1]>10 && mll>76 && mll<106 && PuppiMET_pt<20', + 'categories' : { + 'ele' : 'Lepton_pdgId[0]*Lepton_pdgId[1] == -121', + 'muon' : 'Lepton_pdgId[0]*Lepton_pdgId[1] == -169', + } +} + +# Prompt rate selections +cuts['Zpeak_PR_tight'] = { + 'expr' : 'nLepton>1 && Lepton_pt[0]>25 && Lepton_pt[1]>10 && LepWPCut2l && mll>76 && mll<106 && PuppiMET_pt<20', + 'categories' : { + 'ele' : 'Lepton_pdgId[0]*Lepton_pdgId[1] == -121', + 'muon' : 'Lepton_pdgId[0]*Lepton_pdgId[1] == -169', + } +} + + +for jet_pt_threshold in jet_pt_thresholds: + + ########################## + # Loose leptons selections + ########################## + + # QCD region + cuts[f'QCD_loose_jet_pt_{jet_pt_threshold}'] = { + 'expr' : f'nLepton == 1 && mtw1 < 20 && PuppiMET_pt < 20 && drlj_{jet_pt_threshold} > 1', + 'categories' : { + 'ele' : 'abs(Lepton_pdgId[0]) == 11', + 'muon' : 'abs(Lepton_pdgId[0]) == 13', + } + } + + # Z-peak + cuts[f'Zpeak_loose_jet_pt_{jet_pt_threshold}'] = { + 'expr' : f'nLepton > 1 && Lepton_pt[0] > 25 && Lepton_pt[1] > 10 && PuppiMET_pt < 20 && mll > 60 && mll < 120', + 'categories' : { + 'ele' : 'Lepton_pdgId[0]*Lepton_pdgId[1] == -121 && Lepton_pt[1] > 13', + 'muon' : 'Lepton_pdgId[0]*Lepton_pdgId[1] == -169', + } + } + + # WJets region + cuts[f'WJets_loose_jet_pt_{jet_pt_threshold}'] = { + 'expr' : f'nLepton == 1 && mtw1 > 20 && PuppiMET_pt < 20 && drlj_{jet_pt_threshold} > 1', + 'categories' : { + 'ele' : 'abs(Lepton_pdgId[0]) == 11', + 'muon' : 'abs(Lepton_pdgId[0]) == 13', + } + } + + ########################## + # Tight leptons selections + ########################## + + # QCD region + cuts[f'QCD_tight_jet_pt_{jet_pt_threshold}'] = { + 'expr' : f'nLepton == 1 && mtw1 < 20 && PuppiMET_pt < 20 && drlj_{jet_pt_threshold} > 1 && LepWPCut1l', + 'categories' : { + 'ele' : 'abs(Lepton_pdgId[0]) == 11', + 'muon' : 'abs(Lepton_pdgId[0]) == 13', + } + } + + # Z-peak + cuts[f'Zpeak_tight_jet_pt_{jet_pt_threshold}'] = { + 'expr' : f'nLepton > 1 && PuppiMET_pt < 20 && mll > 60 && mll < 120 && LepWPCut1l', + 'categories' : { + 'ele' : 'Lepton_pdgId[0]*Lepton_pdgId[1] == -121 && Lepton_pt[1] > 13', + 'muon' : 'Lepton_pdgId[0]*Lepton_pdgId[1] == -169', + } + } + + # WJets region + cuts[f'WJets_tight_jet_pt_{jet_pt_threshold}'] = { + 'expr' : f'nLepton == 1 && mtw1 > 20 && PuppiMET_pt < 20 && drlj_{jet_pt_threshold} > 1 && LepWPCut1l', + 'categories' : { + 'ele' : 'abs(Lepton_pdgId[0]) == 11', + 'muon' : 'abs(Lepton_pdgId[0]) == 13', + } + } diff --git a/FakeRate/2016noHIPM_v9/do_fake_rate.sh b/FakeRate/2016noHIPM_v9/do_fake_rate.sh new file mode 100644 index 00000000..346bb495 --- /dev/null +++ b/FakeRate/2016noHIPM_v9/do_fake_rate.sh @@ -0,0 +1,34 @@ +cd ../scripts/ + +if [[ "$(uname -a)" == *portal* ]] || [[ "$(uname -a)" == *bms* ]]; then + echo "We are at KIT!" + input_dir=/ceph/${USER} +else + echo "We are on lxplus!" + input_dir=/eos/user/${USER:0:1}/${USER} +fi + +# Muons +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_2016noHIPM_v9/rootFile/mkShapes__Fake_2016noHIPM_v9.root --outputFolder ../2016noHIPM_v9/FakeRate_2016noHIPM_v9/cut_Tight_HWWW_tthmva_82 --outputFileName MuonFR_jet45.root --jet_pt 45 --flavor muon --variable pt2_eta2 --do_prompt_rate True --outputFileNamePR MuonPR.root + +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_2016noHIPM_v9/rootFile/mkShapes__Fake_2016noHIPM_v9.root --outputFolder ../2016noHIPM_v9/FakeRate_2016noHIPM_v9/cut_Tight_HWWW_tthmva_82 --outputFileName MuonFR_jet10.root --jet_pt 10 --flavor muon --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_2016noHIPM_v9/rootFile/mkShapes__Fake_2016noHIPM_v9.root --outputFolder ../2016noHIPM_v9/FakeRate_2016noHIPM_v9/cut_Tight_HWWW_tthmva_82 --outputFileName MuonFR_jet15.root --jet_pt 15 --flavor muon --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_2016noHIPM_v9/rootFile/mkShapes__Fake_2016noHIPM_v9.root --outputFolder ../2016noHIPM_v9/FakeRate_2016noHIPM_v9/cut_Tight_HWWW_tthmva_82 --outputFileName MuonFR_jet20.root --jet_pt 20 --flavor muon --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_2016noHIPM_v9/rootFile/mkShapes__Fake_2016noHIPM_v9.root --outputFolder ../2016noHIPM_v9/FakeRate_2016noHIPM_v9/cut_Tight_HWWW_tthmva_82 --outputFileName MuonFR_jet25.root --jet_pt 25 --flavor muon --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_2016noHIPM_v9/rootFile/mkShapes__Fake_2016noHIPM_v9.root --outputFolder ../2016noHIPM_v9/FakeRate_2016noHIPM_v9/cut_Tight_HWWW_tthmva_82 --outputFileName MuonFR_jet30.root --jet_pt 30 --flavor muon --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_2016noHIPM_v9/rootFile/mkShapes__Fake_2016noHIPM_v9.root --outputFolder ../2016noHIPM_v9/FakeRate_2016noHIPM_v9/cut_Tight_HWWW_tthmva_82 --outputFileName MuonFR_jet35.root --jet_pt 35 --flavor muon --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_2016noHIPM_v9/rootFile/mkShapes__Fake_2016noHIPM_v9.root --outputFolder ../2016noHIPM_v9/FakeRate_2016noHIPM_v9/cut_Tight_HWWW_tthmva_82 --outputFileName MuonFR_jet40.root --jet_pt 40 --flavor muon --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_2016noHIPM_v9/rootFile/mkShapes__Fake_2016noHIPM_v9.root --outputFolder ../2016noHIPM_v9/FakeRate_2016noHIPM_v9/cut_Tight_HWWW_tthmva_82 --outputFileName MuonFR_jet45.root --jet_pt 45 --flavor muon --variable pt1_eta1 + +# Electrons +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_2016noHIPM_v9/rootFile/mkShapes__Fake_2016noHIPM_v9.root --outputFolder ../2016noHIPM_v9/FakeRate_2016noHIPM_v9/mvaFall17V2Iso_WP90_tthmva_UL_90 --outputFileName EleFR_jet45.root --jet_pt 45 --flavor ele --variable pt2_eta2 --do_prompt_rate True --outputFileNamePR ElePR.root + +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_2016noHIPM_v9/rootFile/mkShapes__Fake_2016noHIPM_v9.root --outputFolder ../2016noHIPM_v9/FakeRate_2016noHIPM_v9/mvaFall17V2Iso_WP90_tthmva_UL_90 --outputFileName EleFR_jet10.root --jet_pt 10 --flavor ele --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_2016noHIPM_v9/rootFile/mkShapes__Fake_2016noHIPM_v9.root --outputFolder ../2016noHIPM_v9/FakeRate_2016noHIPM_v9/mvaFall17V2Iso_WP90_tthmva_UL_90 --outputFileName EleFR_jet15.root --jet_pt 15 --flavor ele --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_2016noHIPM_v9/rootFile/mkShapes__Fake_2016noHIPM_v9.root --outputFolder ../2016noHIPM_v9/FakeRate_2016noHIPM_v9/mvaFall17V2Iso_WP90_tthmva_UL_90 --outputFileName EleFR_jet25.root --jet_pt 25 --flavor ele --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_2016noHIPM_v9/rootFile/mkShapes__Fake_2016noHIPM_v9.root --outputFolder ../2016noHIPM_v9/FakeRate_2016noHIPM_v9/mvaFall17V2Iso_WP90_tthmva_UL_90 --outputFileName EleFR_jet30.root --jet_pt 30 --flavor ele --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_2016noHIPM_v9/rootFile/mkShapes__Fake_2016noHIPM_v9.root --outputFolder ../2016noHIPM_v9/FakeRate_2016noHIPM_v9/mvaFall17V2Iso_WP90_tthmva_UL_90 --outputFileName EleFR_jet35.root --jet_pt 35 --flavor ele --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_2016noHIPM_v9/rootFile/mkShapes__Fake_2016noHIPM_v9.root --outputFolder ../2016noHIPM_v9/FakeRate_2016noHIPM_v9/mvaFall17V2Iso_WP90_tthmva_UL_90 --outputFileName EleFR_jet40.root --jet_pt 40 --flavor ele --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_2016noHIPM_v9/rootFile/mkShapes__Fake_2016noHIPM_v9.root --outputFolder ../2016noHIPM_v9/FakeRate_2016noHIPM_v9/mvaFall17V2Iso_WP90_tthmva_UL_90 --outputFileName EleFR_jet45.root --jet_pt 45 --flavor ele --variable pt1_eta1 + +cd - diff --git a/FakeRate/2016noHIPM_v9/do_plots.sh b/FakeRate/2016noHIPM_v9/do_plots.sh new file mode 100644 index 00000000..b585f221 --- /dev/null +++ b/FakeRate/2016noHIPM_v9/do_plots.sh @@ -0,0 +1,9 @@ +# Plots used for fake rate: using prescaled triggers +mkShapesRDF -c 1 +mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png + +# Plots used for prompt rate: using unprescaled triggers +cd unprescaled_cfg/ +mkShapesRDF -c 1 +mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png +cd - diff --git a/FakeRate/2016noHIPM_v9/nuisances.py b/FakeRate/2016noHIPM_v9/nuisances.py new file mode 100644 index 00000000..abda5484 --- /dev/null +++ b/FakeRate/2016noHIPM_v9/nuisances.py @@ -0,0 +1,27 @@ +import sys + +nuisances = {} + +mc = [skey for skey in samples if skey not in ('Fake', 'DATA','ChargeFlip')] + +redirector = "" + +useXROOTD = False + +################################ EXPERIMENTAL UNCERTAINTIES ################################# + +#### Luminosity + +# https://twiki.cern.ch/twiki/bin/view/CMS/LumiRecommendationsRun2#LumiComb +# Uncorrelated 2016 1.0 +# Uncorrelated 2017 2.0 +# Uncorrelated 2018 1.5 +# Correlated 2016, 2017, 2018 0.6, 0.9, 2.0 +# Correlated 2017, 2018 0.6, 0.2 + +nuisances['lumi_Uncorrelated'] = { + 'name' : 'lumi_13TeV_2016', + 'type' : 'lnN', + 'samples' : dict((skey, '1.010') for skey in mc if skey not in ['WZ']) +} + diff --git a/FakeRate/2016noHIPM_v9/plot.py b/FakeRate/2016noHIPM_v9/plot.py new file mode 100644 index 00000000..cf2c3159 --- /dev/null +++ b/FakeRate/2016noHIPM_v9/plot.py @@ -0,0 +1,64 @@ +# Plot configuration + +# Groups of samples to improve the plots. +# If not defined, normal plots is used + +lepton_categories = ['_ele_low_pt', '_ele_high_pt', '_muon_low_pt', '_muon_high_pt'] + +groupPlot = {} + +groupPlot['DY'] = { + 'nameHR' : "DY", + 'isSignal' : 0, + 'color' : 418, # kGreen+2 + 'samples' : ['DY' + lep_cat for lep_cat in lepton_categories] +} + +groupPlot['WJets'] = { + 'nameHR' : "WJets", + 'isSignal' : 0, + 'color' : 11, # kGrey + 'samples' : ['WJets' + lep_cat for lep_cat in lepton_categories] +} + +# keys here must match keys in samples.py + +plot = {} + +for lep_cat in lepton_categories: + + plot['DY' + lep_cat] = { + 'nameHR' : 'DY', + 'color' : 418, # kGreen+2 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0, + } + + plot['WJets' + lep_cat] = { + 'nameHR' : 'WJets', + 'color' : 11, # kGrey + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0, + } + +######## +# Data # +######## + +plot['DATA'] = { + 'nameHR' : 'Data', + 'color' : 1 , + 'isSignal' : 0, + 'isData' : 1, + 'isBlind' : 0 +} + + +# Define legend + +legend = {} + +legend['lumi'] = '' # L = 16.8 fb^{-1}' +legend['sqrt'] = '#sqrt{s} = 13 TeV' diff --git a/FakeRate/2016noHIPM_v9/repeat.sh b/FakeRate/2016noHIPM_v9/repeat.sh new file mode 100644 index 00000000..a48b2c02 --- /dev/null +++ b/FakeRate/2016noHIPM_v9/repeat.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +if [ $# -eq 0 ]; then + echo "$0: Missing arguments" + exit 1 +else + echo "We got some argument(s)" + echo "===========================" + echo "Number of arguments. : $#" + echo "List of arguments... : $@" + echo "Arg #1: sample : $1" + echo "Arg #2: compile : $2" + echo "===========================" + SAMPLE=$1 + COMPILE=$2 +fi + + +if [ "$COMPILE" == "True" ]; then + mkShapesRDF -c 1 + mkShapesRDF -o 0 -f . -b 1 -dR 1 +fi +cd condor/Fake_2016noHIPM_v9/${SAMPLE}/ +cp ../../../../../../../../mkShapesRDF/mkShapesRDF/include/headers.hh ../../../../../../../../mkShapesRDF/mkShapesRDF/shapeAnalysis/runner.py . +python runner.py +cp output.root /eos/user/n/ntrevisa/mkShapesRDF_rootfiles/Fake_2016noHIPM_v9/rootFile/mkShapes__Fake_2016noHIPM_v9__ALL__${SAMPLE}.root +rm output.root diff --git a/FakeRate/2016noHIPM_v9/samples.py b/FakeRate/2016noHIPM_v9/samples.py new file mode 100644 index 00000000..4dd58909 --- /dev/null +++ b/FakeRate/2016noHIPM_v9/samples.py @@ -0,0 +1,245 @@ +import os,sys,glob + +################################################ +################# SKIMS ######################## +################################################ + +# MC: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Summer20UL16_106x_nAODv9_noHIPM_Full2016v9/MCl1loose2016v9__MCCorr2016v9NoJERInHorn/ +# DATA: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Run2016_UL2016_nAODv9_noHIPM_Full2016v9/DATAl1loose2016v9/ + +mcProduction = 'Summer20UL16_106x_nAODv9_noHIPM_Full2016v9' +dataReco = 'Run2016_UL2016_nAODv9_noHIPM_Full2016v9' + +mcSteps = 'MCl1loose2016v9__MCCorr2016v9NoJERInHorn' +dataSteps = 'DATAl1loose2016v9' + +############################################## +###### Tree base directory for the site ###### +############################################## + +treeBaseDir = '/eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano' +if 'portal' in os.uname()[1]: + treeBaseDir = '/ceph/ntrevisa/HWWNano' + +limitFiles = -1 + +def makeMCDirectory(var=''): + return os.path.join(treeBaseDir, mcProduction, mcSteps.format(var='')) + +mcDirectory = makeMCDirectory() +dataDirectory = os.path.join(treeBaseDir, dataReco, dataSteps) + +samples = {} + +from mkShapesRDF.lib.search_files import SearchFiles +s = SearchFiles() + +useXROOTD = True +redirector = 'root://eoscms.cern.ch/' +if 'portal' in os.uname()[1]: + redirector = '' + +def nanoGetSampleFiles(path, name): + _files = s.searchFiles(path, name, redirector=redirector) + if limitFiles != -1 and len(_files) > limitFiles: + return [(name, _files[:limitFiles])] + else: + return [(name, _files)] + +def CombineBaseW(samples, proc, samplelist): + _filtFiles = list(filter(lambda k: k[0] in samplelist, samples[proc]['name'])) + _files = list(map(lambda k: k[1], _filtFiles)) + _l = list(map(lambda k: len(k), _files)) + leastFiles = _files[_l.index(min(_l))] + dfSmall = ROOT.RDataFrame('Runs', leastFiles) + s = dfSmall.Sum('genEventSumw').GetValue() + f = ROOT.TFile.Open(leastFiles[0]) + t = f.Get('Events') + t.GetEntry(1) + xs = t.baseW * s + + __files = [] + for f in _files: + __files += f + df = ROOT.RDataFrame('Runs', __files) + s = df.Sum('genEventSumw').GetValue() + newbaseW = str(xs / s) + weight = newbaseW + '/baseW' + + for iSample in samplelist: + addSampleWeight(samples, proc, iSample, weight) + +def addSampleWeight(samples, sampleName, sampleNameType, weight): + obj = list(filter(lambda k: k[0] == sampleNameType, samples[sampleName]['name']))[0] + samples[sampleName]['name'] = list(filter(lambda k: k[0] != sampleNameType, samples[sampleName]['name'])) + if len(obj) > 2: + samples[sampleName]['name'].append((obj[0], obj[1], obj[2] + '*(' + weight + ')')) + else: + samples[sampleName]['name'].append((obj[0], obj[1], '(' + weight + ')' )) + + +################################################ +############ DATA DECLARATION ################## +################################################ + +DataRun = [ + ['F','Run2016F-UL2016-v1'], + ['G','Run2016G_UL2016-v1'], + ['H','Run2016H_UL2016-v1'], +] + +# Pre-scaled triggers for fake rate estimation +DataSets = ['DoubleMuon','DoubleEG'] + +DataTrig = { + 'DoubleMuon' : '(Lepton_pt[0] <= 20 && HLT_Mu8_TrkIsoVVL > 0.5) || (Lepton_pt[0] > 20 && HLT_Mu17_TrkIsoVVL > 0.5)', + 'DoubleEG' : '(HLT_Mu8_TrkIsoVVL < 0.5) && (HLT_Mu17_TrkIsoVVL < 0.5) && ((Lepton_pt[0] <= 25 && HLT_Ele12_CaloIdL_TrackIdL_IsoVL_PFJet30 > 0.5) || (Lepton_pt[0] > 25 && HLT_Ele23_CaloIdL_TrackIdL_IsoVL_PFJet30 > 0.5))', +} + +# Unprescaled triggers for prompt rate estimation +DataRunUnprescaled = [ + ['F','Run2016F-UL2016-v1'], + ['G','Run2016G_UL2016-v1'], + ['H','Run2016H_UL2016-v1'], +] + +DataSetsUnprescaled = ['SingleMuon','SingleElectron'] + +DataTrigUnprescaled = { + 'SingleMuon' : 'HLT_IsoMu24 > 0.5 || HLT_IsoTkMu24 > 0.5', + 'SingleElectron' : '(HLT_IsoMu24 < 0.5 && HLT_IsoTkMu24 < 0.5) && HLT_Ele27_WPTight_Gsf > 0.5', +} + +######################################### +############ MC COMMON ################## +######################################### + +# SFweight does not include btag weights +# mcCommonWeight = 'XSWeight/1000.' +# XSWeight = baseW * Generator_weight +mcCommonWeight = 'baseW*puWeight*Generator_weight/1000.' + +########################################### +############# BACKGROUNDS ############### +########################################### + +lumi_ele_low_pt = '3.980*(HLT_Ele12_CaloIdL_TrackIdL_IsoVL_PFJet30 > 0.5)*(Lepton_pt[0]<=25)'; +lumi_ele_high_pt = '10.699*(HLT_Ele23_CaloIdL_TrackIdL_IsoVL_PFJet30 > 0.5)*(Lepton_pt[0]>25)'; +lumi_muon_low_pt = '1.297*(HLT_Mu8_TrkIsoVVL > 0.5)*(Lepton_pt[0]<=20)'; +lumi_muon_high_pt = '26.873*(HLT_Mu17_TrkIsoVVL > 0.5)*(Lepton_pt[0]>20)'; +lumi_full_2018 = '16812' + +# DY +files = nanoGetSampleFiles(mcDirectory, 'DYJetsToLL_M-50') + +samples['DY_ele_low_pt'] = { + 'name': files, + 'weight': mcCommonWeight + '*' + lumi_ele_low_pt, + 'FilesPerJob': 4, +} + +samples['DY_ele_high_pt'] = { + 'name': files, + 'weight': mcCommonWeight + '*' + lumi_ele_high_pt, + 'FilesPerJob': 4, +} + +samples['DY_muon_low_pt'] = { + 'name': files, + 'weight': mcCommonWeight + '*' + lumi_muon_low_pt, + 'FilesPerJob': 4, +} + +samples['DY_muon_high_pt'] = { + 'name': files, + 'weight': mcCommonWeight + '*' + lumi_muon_high_pt, + 'FilesPerJob': 4, +} + +samples['DY_unprescaled'] = { + 'name': files, + 'weight': mcCommonWeight + '*' + lumi_full_2018, + 'FilesPerJob': 4, +} + +##### WJets ####### +files = nanoGetSampleFiles(mcDirectory, 'WJetsToLNu-LO') + +samples['WJets_ele_low_pt'] = { + 'name': files, + 'weight': mcCommonWeight + '*' + lumi_ele_low_pt + '*(XSWeight < 1)', + 'FilesPerJob': 4, +} + +samples['WJets_ele_high_pt'] = { + 'name': files, + 'weight': mcCommonWeight + '*' + lumi_ele_high_pt + '*(XSWeight < 1)', + 'FilesPerJob': 4, +} + +samples['WJets_muon_low_pt'] = { + 'name': files, + 'weight': mcCommonWeight + '*' + lumi_muon_low_pt + '*(XSWeight < 1)', + 'FilesPerJob': 4, +} + +samples['WJets_muon_high_pt'] = { + 'name': files, + 'weight': mcCommonWeight + '*' + lumi_muon_high_pt + '*(XSWeight < 1)', + 'FilesPerJob': 4, +} + +########################################### +################## DATA ################### +########################################### + +# Prescaled +samples['DATA'] = { + 'name': [], + 'weight': 'METFilter_DATA', + 'weights': [], + 'isData': ['all'], + 'FilesPerJob': 10 +} + +for _, sd in DataRun: + for pd in DataSets: + tag_data = pd + '_' + sd + + if 'DoubleMuon' in pd and 'Run2016G' in sd: + print("sd = {}".format(sd)) + print("pd = {}".format(pd)) + print("Old tag = {}".format(tag_data)) + tag_data = tag_data.replace('v1','v2') + print("New tag = {}".format(tag_data)) + + files = nanoGetSampleFiles(dataDirectory, tag_data) + + samples['DATA']['name'].extend(files) + addSampleWeight(samples, 'DATA', tag_data, DataTrig[pd]) + + +# Unprescaled +samples['DATA_unprescaled'] = { + 'name': [], + 'weight': 'METFilter_DATA', + 'weights': [], + 'isData': ['all'], + 'FilesPerJob': 10 +} + +for _, sd in DataRunUnprescaled: + for pd in DataSetsUnprescaled: + tag_data = pd + '_' + sd + + if 'DoubleMuon' in pd and 'Run2016G' in sd: + print("sd = {}".format(sd)) + print("pd = {}".format(pd)) + print("Old tag = {}".format(tag_data)) + tag_data = tag_data.replace('v1','v2') + print("New tag = {}".format(tag_data)) + + files = nanoGetSampleFiles(dataDirectory, tag_data) + + samples['DATA_unprescaled']['name'].extend(files) + addSampleWeight(samples, 'DATA_unprescaled', tag_data, DataTrigUnprescaled[pd]) diff --git a/FakeRate/2016noHIPM_v9/structure.py b/FakeRate/2016noHIPM_v9/structure.py new file mode 100644 index 00000000..21a11db6 --- /dev/null +++ b/FakeRate/2016noHIPM_v9/structure.py @@ -0,0 +1,26 @@ +# structure configuration for datacard + +# keys here must match keys in samples.py + +structure = {} + +structure['DY'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['Top'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['WJets'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +# Data +structure['DATA'] = { + 'isSignal' : 0, + 'isData' : 1 +} diff --git a/FakeRate/2016noHIPM_v9/unprescaled_cfg/configuration.py b/FakeRate/2016noHIPM_v9/unprescaled_cfg/configuration.py new file mode 100644 index 00000000..5ec14eab --- /dev/null +++ b/FakeRate/2016noHIPM_v9/unprescaled_cfg/configuration.py @@ -0,0 +1,87 @@ +# Configuration file for fake rate measurement using the UL 2018 dataset + +# Tag used to identify the configuration folder version +tag = 'Fake_2016noHIPM_v9' + +# File to use as runner script, default uses mkShapesRDF.shapeAnalysis.runner, otherwise specify path to script +runnerFile = "default" + +# Output file name +outputFile = "mkShapes__{}.root".format(tag) + +# Path to ouput folder +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" + +# Path to batch folder (used for condor submission) +batchFolder = "condor" + +# Path to configuration folder (will contain all the compiled configuration files) +configsFolder = "configs" + +# Luminosity to normalize to (in 1/fb) +lumi = 1 + +# File with dict of aliases to define +aliasesFile = "../aliases.py" + +# File with dict of variables +variablesFile = "../variables.py" + +# File with dict of cuts +cutsFile = "cuts.py" + +# File with dict of samples +samplesFile = "../samples.py" + +# File with dict of samples for plotting +plotFile = 'plot.py' + +# File with dict of structure (used to define processes in combine) +structureFile = "../structure.py" + +# Nuisances file for mkDatacards and for mkShape +nuisancesFile = "../nuisances.py" + +# Path to folder where to save plots +plotPath = '../plots_' + tag + +# This lines are executed right before the runner on the condor node +mountEOS = [] + +# List of imports to import when compiling the whole configuration folder, it should not contain imports used by configuration.py +imports = ["os", "glob", ("collections", "OrderedDict"), "ROOT"] + +# List of files to compile +filesToExec = [ + samplesFile, + aliasesFile, + variablesFile, + cutsFile, + plotFile, + nuisancesFile, + structureFile, +] + +# List of variables to keep in the compiled configuration folder +varsToKeep = [ + "batchVars", + "outputFolder", + "batchFolder", + "configsFolder", + "outputFile", + "runnerFile", + "tag", + "samples", + "aliases", + "variables", + ("cuts", {"cuts": "cuts", "preselections": "preselections"}), + ("plot", {"plot": "plot", "groupPlot": "groupPlot", "legend": "legend"}), + "nuisances", + "structure", + "lumi", +] + +# List of variables to keep in the batch submission script (script.py) +batchVars = varsToKeep[varsToKeep.index("samples") :] + +varsToKeep += ['plotPath'] diff --git a/FakeRate/2016noHIPM_v9/unprescaled_cfg/cuts.py b/FakeRate/2016noHIPM_v9/unprescaled_cfg/cuts.py new file mode 100644 index 00000000..96eb7f22 --- /dev/null +++ b/FakeRate/2016noHIPM_v9/unprescaled_cfg/cuts.py @@ -0,0 +1,92 @@ +jet_pt_thresholds = [10, 15, 20, 25, 30, 35, 40, 45] + +# cuts +cuts = {} + +preselections = 'nLepton > 0 \ + && ((abs(Lepton_pdgId[0]) == 11 && Lepton_pt[0] > 10 && abs(Lepton_eta[0]) < 2.4) \ + || (abs(Lepton_pdgId[0]) == 13 && Lepton_pt[0] > 13 && abs(Lepton_eta[0]) < 2.5)) \ +' + +# Prompt rate selections +cuts['Zpeak_PR_loose'] = { + 'expr' : 'nLepton>1 && Lepton_pt[0]>25 && LepWPCut1l && Lepton_pt[1]>10 && mll>76 && mll<106 && PuppiMET_pt<20', + 'categories' : { + 'ele' : 'Lepton_pdgId[0]*Lepton_pdgId[1] == -121', + 'muon' : 'Lepton_pdgId[0]*Lepton_pdgId[1] == -169', + } +} + +# Prompt rate selections +cuts['Zpeak_PR_tight'] = { + 'expr' : 'nLepton>1 && Lepton_pt[0]>25 && Lepton_pt[1]>10 && LepWPCut2l && mll>76 && mll<106 && PuppiMET_pt<20', + 'categories' : { + 'ele' : 'Lepton_pdgId[0]*Lepton_pdgId[1] == -121', + 'muon' : 'Lepton_pdgId[0]*Lepton_pdgId[1] == -169', + } +} + + +# for jet_pt_threshold in jet_pt_thresholds: + +# ########################## +# # Loose leptons selections +# ########################## + +# # QCD region +# cuts[f'QCD_loose_jet_pt_{jet_pt_threshold}'] = { +# 'expr' : f'nLepton == 1 && mtw1 < 20 && PuppiMET_pt < 20 && drlj_{jet_pt_threshold} > 1', +# 'categories' : { +# 'ele' : 'abs(Lepton_pdgId[0]) == 11', +# 'muon' : 'abs(Lepton_pdgId[0]) == 13', +# } +# } + +# # Z-peak +# cuts[f'Zpeak_loose_jet_pt_{jet_pt_threshold}'] = { +# 'expr' : f'nLepton > 1 && Lepton_pt[0] > 25 && Lepton_pt[1] > 10 && PuppiMET_pt < 20 && mll > 60 && mll < 120', +# 'categories' : { +# 'ele' : 'Lepton_pdgId[0]*Lepton_pdgId[1] == -121 && Lepton_pt[1] > 13', +# 'muon' : 'Lepton_pdgId[0]*Lepton_pdgId[1] == -169', +# } +# } + +# # WJets region +# cuts[f'WJets_loose_jet_pt_{jet_pt_threshold}'] = { +# 'expr' : f'nLepton == 1 && mtw1 > 20 && PuppiMET_pt < 20 && drlj_{jet_pt_threshold} > 1', +# 'categories' : { +# 'ele' : 'abs(Lepton_pdgId[0]) == 11', +# 'muon' : 'abs(Lepton_pdgId[0]) == 13', +# } +# } + +# ########################## +# # Tight leptons selections +# ########################## + +# # QCD region +# cuts[f'QCD_tight_jet_pt_{jet_pt_threshold}'] = { +# 'expr' : f'nLepton == 1 && mtw1 < 20 && PuppiMET_pt < 20 && drlj_{jet_pt_threshold} > 1 && LepWPCut1l', +# 'categories' : { +# 'ele' : 'abs(Lepton_pdgId[0]) == 11', +# 'muon' : 'abs(Lepton_pdgId[0]) == 13', +# } +# } + +# # Z-peak +# cuts[f'Zpeak_tight_jet_pt_{jet_pt_threshold}'] = { +# 'expr' : f'nLepton > 1 && PuppiMET_pt < 20 && mll > 60 && mll < 120 && LepWPCut1l', +# 'categories' : { +# 'ele' : 'Lepton_pdgId[0]*Lepton_pdgId[1] == -121 && Lepton_pt[1] > 13', +# 'muon' : 'Lepton_pdgId[0]*Lepton_pdgId[1] == -169', +# } +# } + +# # WJets region +# cuts[f'WJets_tight_jet_pt_{jet_pt_threshold}'] = { +# 'expr' : f'nLepton == 1 && mtw1 > 20 && PuppiMET_pt < 20 && drlj_{jet_pt_threshold} > 1 && LepWPCut1l', +# 'categories' : { +# 'ele' : 'abs(Lepton_pdgId[0]) == 11', +# 'muon' : 'abs(Lepton_pdgId[0]) == 13', +# } +# } diff --git a/FakeRate/2016noHIPM_v9/unprescaled_cfg/plot.py b/FakeRate/2016noHIPM_v9/unprescaled_cfg/plot.py new file mode 100644 index 00000000..2e12e88b --- /dev/null +++ b/FakeRate/2016noHIPM_v9/unprescaled_cfg/plot.py @@ -0,0 +1,62 @@ +# plot configuration + +# Groups of samples to improve the plots. +# If not defined, normal plots is used + +# lepton_categories = ['_ele_low_pt', '_ele_high_pt', '_muon_low_pt', '_muon_high_pt'] + +groupPlot = {} + +groupPlot['DY'] = { + 'nameHR' : "DY", + 'isSignal' : 0, + 'color' : 418, # kGreen+2 + 'samples' : ['DY_unprescaled'] +} + +# groupPlot['WJets'] = { +# 'nameHR' : "WJets", +# 'isSignal' : 0, +# 'color' : 11, # kGrey +# 'samples' : ['WJets' + lep_cat for lep_cat in lepton_categories] +# } + +plot = {} + +# for lep_cat in lepton_categories: + +plot['DY_unprescaled'] = { + 'nameHR' : 'DY', + 'color' : 418, # kGreen+2 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0, +} + + # plot['WJets' + lep_cat] = { + # 'nameHR' : 'WJets', + # 'color' : 11, # kGrey + # 'isSignal' : 0, + # 'isData' : 0, + # 'scale' : 1.0, + # } + +######## +# Data # +######## + +plot['DATA_unprescaled'] = { + 'nameHR' : 'Data', + 'color' : 1 , + 'isSignal' : 0, + 'isData' : 1, + 'isBlind' : 0 +} + + +# Define legend + +legend = {} + +legend['lumi'] = 'L = 16.8 fb^{-1}' +legend['sqrt'] = '#sqrt{s} = 13 TeV' diff --git a/FakeRate/2016noHIPM_v9/variables.py b/FakeRate/2016noHIPM_v9/variables.py new file mode 100644 index 00000000..f0845ee5 --- /dev/null +++ b/FakeRate/2016noHIPM_v9/variables.py @@ -0,0 +1,140 @@ +# variables + +# 0 = not fold (default), 1 = fold underflowbin, 2 = fold overflow bin, 3 = fold underflow and overflow + +variables = {} + +variables['events'] = { + 'name' : '1', + 'range' : (1,0,2), + 'xaxis' : 'events', + 'fold' : 3 +} + +################### +# Control variables +################### + +# ptbins[8] = {10, 15, 20, 25, 30, 35, 40, 45, 50}; +# etabins[2] = {0, 1.479, 2.5}; + +# variables['pt1_eta1'] = { +# 'name' : 'Lepton_pt[0]:abs(Lepton_eta[0])', +# 'range' : ([10, 15, 20, 25, 30, 35, 40, 45, 50],[0.0, 0.5, 1.0, 1.5, 2.0, 2.5],), +# 'xaxis' : 'p_{T}^{#ell 1}:#eta^{#ell 1}', +# 'fold' : 3, +# } + +# Cone_pt1 vs eta1 +variables['pt1_eta1'] = { + 'name' : 'Lepton_conept[0]:abs(Lepton_eta[0])', + 'range' : ([10, 15, 20, 25, 30, 35, 40, 45, 50],[0.0, 1.479, 2.5]), + 'xaxis' : 'p_{T}^{cone}(#ell 1):|#eta(#ell 1})|', + 'fold' : 3, +} + +# variables['pt2_eta2'] = { +# 'name' : 'Alt(Lepton_pt,1,0):abs(Alt(Lepton_eta,1,999))', +# 'range' : ([10, 15, 20, 25, 30, 35, 40, 45, 50],[0.0, 0.5, 1.0, 1.5, 2.0, 2.5],), +# 'xaxis' : 'p_{T}^{#ell 2}:#eta^{#ell 2}', +# 'fold' : 3, +# } + +# Cone_pt2 vs eta2 +variables['pt2_eta2'] = { + 'name' : 'Lepton_conept[1]:abs(Lepton_eta[1])', + 'range' : ([10, 15, 20, 25, 30, 35, 40, 45, 50],[0.0, 1.479, 2.5]), + 'xaxis' : 'p_{T}^{cone}(#ell 2):|#eta^{#ell 2}|', + 'fold' : 3, +} + +variables['mll'] = { + 'name' : 'mll', + 'range' : (20, 60,120), + 'xaxis' : 'm_{ll} [GeV]', + 'fold' : 0 +} + +variables['pt1'] = { + 'name' : 'Lepton_pt[0]', + 'range' : (20,0,100), + 'xaxis' : 'p_{T} 1st lep', + 'fold' : 0 +} + +variables['conept1'] = { + 'name' : 'Lepton_conept[0]', + 'range' : (20,0,100), + 'xaxis' : 'p_{T}^{cone} 1st lep', + 'fold' : 0 +} + +variables['eta1'] = { + 'name' : 'Lepton_eta[0]', + 'range' : (40,-3,3), + 'xaxis' : '#eta 1st lep', + 'fold' : 3 +} + +variables['pt2'] = { + 'name' : 'Alt(Lepton_pt,1,0)', + 'range' : (20,0,100), + 'xaxis' : 'p_{T} 2nd lep', + 'fold' : 0 +} + +variables['conept2'] = { + 'name' : 'Lepton_conept[1]', + 'range' : (20,0,100), + 'xaxis' : 'p_{T}^{cone} 2nd lep', + 'fold' : 0 +} + +variables['eta2'] = { + 'name' : 'Alt(Lepton_eta,1,999)', + 'range' : (40,-3,3), + 'xaxis' : '#eta 2nd lep', + 'fold' : 3 +} + +variables['mtw1'] = { + 'name' : 'mtw1', + 'range' : (20,0,100), + 'xaxis' : 'm_{T}^{W_{1}} [GeV]', + 'fold' : 3 +} + +variables['LepWPCut1l'] = { + 'name' : 'LepWPCut1l', + 'range' : (2,0,2), + 'xaxis' : 'Tight lepton flag', + 'fold' : 3 +} + +variables['dRl1j1'] = { + 'name' : 'dRl1j1', + 'range' : (20,0,10), + 'xaxis' : '#Delta R (#ell1,jet1)', + 'fold' : 3 +} + +variables['dphilep1jet1'] = { + 'name' : 'dphilep1jet1', + 'range' : (10,0,5), + 'xaxis' : '#Delta #phi (#ell1,jet1)', + 'fold' : 3 +} + +variables['puppimet'] = { + 'name' : 'PuppiMET_pt', + 'range' : (20,0,200), + 'xaxis' : 'PUPPI met [GeV]', + 'fold' : 3 +} + +# variables['jetpt1'] = { +# 'name' : 'CleanJet_pt[0]*(CleanJet_pt[0]>30)', +# 'range' : (40,0,200), +# 'xaxis' : 'p_{T} 1st jet', +# 'fold' : 2 +# } From 7ed024e24fa5dee933a7c5704e75e738b61f8ce8 Mon Sep 17 00:00:00 2001 From: ntrevisa Date: Tue, 12 Aug 2025 10:03:30 +0200 Subject: [PATCH 05/44] Fake rates using cone pt 2016HIPM --- FakeRate/2016HIPM_v9/README.md | 49 ++++ FakeRate/2016HIPM_v9/aliases.py | 78 ++++++ FakeRate/2016HIPM_v9/configuration.py | 89 +++++++ FakeRate/2016HIPM_v9/cuts.py | 92 +++++++ FakeRate/2016HIPM_v9/do_fake_rate.sh | 34 +++ FakeRate/2016HIPM_v9/do_plots.sh | 9 + FakeRate/2016HIPM_v9/nuisances.py | 27 ++ FakeRate/2016HIPM_v9/plot.py | 64 +++++ FakeRate/2016HIPM_v9/repeat.sh | 27 ++ FakeRate/2016HIPM_v9/samples.py | 251 ++++++++++++++++++ FakeRate/2016HIPM_v9/structure.py | 26 ++ .../unprescaled_cfg/configuration.py | 87 ++++++ FakeRate/2016HIPM_v9/unprescaled_cfg/cuts.py | 92 +++++++ FakeRate/2016HIPM_v9/unprescaled_cfg/plot.py | 62 +++++ FakeRate/2016HIPM_v9/variables.py | 140 ++++++++++ 15 files changed, 1127 insertions(+) create mode 100644 FakeRate/2016HIPM_v9/README.md create mode 100644 FakeRate/2016HIPM_v9/aliases.py create mode 100644 FakeRate/2016HIPM_v9/configuration.py create mode 100644 FakeRate/2016HIPM_v9/cuts.py create mode 100644 FakeRate/2016HIPM_v9/do_fake_rate.sh create mode 100644 FakeRate/2016HIPM_v9/do_plots.sh create mode 100644 FakeRate/2016HIPM_v9/nuisances.py create mode 100644 FakeRate/2016HIPM_v9/plot.py create mode 100644 FakeRate/2016HIPM_v9/repeat.sh create mode 100644 FakeRate/2016HIPM_v9/samples.py create mode 100644 FakeRate/2016HIPM_v9/structure.py create mode 100644 FakeRate/2016HIPM_v9/unprescaled_cfg/configuration.py create mode 100644 FakeRate/2016HIPM_v9/unprescaled_cfg/cuts.py create mode 100644 FakeRate/2016HIPM_v9/unprescaled_cfg/plot.py create mode 100644 FakeRate/2016HIPM_v9/variables.py diff --git a/FakeRate/2016HIPM_v9/README.md b/FakeRate/2016HIPM_v9/README.md new file mode 100644 index 00000000..cfcb4935 --- /dev/null +++ b/FakeRate/2016HIPM_v9/README.md @@ -0,0 +1,49 @@ +# Fake Rate Measurement + +The configuration prepares the histograms needed for extracting fake rates. + +The instructions to run the analysis follow. + +### Load the mkShapesRDF environment + +Here, we assume `PlotsConfigurationsRun3` was installed in the same directory as `mkShapesRDF`. E.g., let's assume we have a `Run3` directory where we installed both `mkShapesRDF` and `PlotsConfigurationsRun3`. + +Then, we can source the `mkShapesRDF` environment using these commands: + + cd ../../../mkShapesRDF/ + + source start.sh + + cd - + +### Produce distributions using mkShapesMulti.py in batch mode + +Compile the configuration. Do it after every change to any file in this directory: + + mkShapesRDF -c 1 + +Produce histograms using batch: + + mkShapesRDF -c 1 -o 0 -f . -b 1 + +Check jobs status: + + mkShapesRDF -o 1 -f . + +Resubmit failed jobs: + + mkShapesRDF -o 1 -f . -r 1 + +Merge rootfiles: + + mkShapesRDF -o 2 -f . + +Plot distributions: + + bash do_plots.sh + +### Measure Fake Rate + +All the instructions are summarized in the `do_fake_rate.sh` bash script: + + bash do_fake_rate.sh \ No newline at end of file diff --git a/FakeRate/2016HIPM_v9/aliases.py b/FakeRate/2016HIPM_v9/aliases.py new file mode 100644 index 00000000..82206c18 --- /dev/null +++ b/FakeRate/2016HIPM_v9/aliases.py @@ -0,0 +1,78 @@ +import os +import copy +import inspect + +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/FakeRate/2016HIPM_v9 + +configurations = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file +configurations = os.path.dirname(configurations) # 2016HIPM_v9 +configurations = os.path.dirname(configurations) # FakeRate + +aliases = {} +aliases = OrderedDict() + +mc = [skey for skey in samples if skey not in ('Fake', 'DATA')] + + +# Evaluate BDT discriminant +aliases['Lepton_mvaTTH_UL'] = { + 'linesToAdd' : [f'#include "{configurations}/macros/ttH_MVA_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('ttH_MVA_reader ttHMVA = ttH_MVA_reader(\"BDTG\",\"{configurations}/data/UL20_el_TTH-like_2016_preVFP_BDTG.weights.xml\",\"BDTG\",\"{configurations}/data/UL20_mu_TTH-like_2016_preVFP_BDTG.weights.xml\");')"], + 'expr' : 'ttHMVA(nLepton,Lepton_pdgId,Lepton_electronIdx,Electron_jetIdx,event,Electron_mvaTTH,Electron_mvaFall17V2noIso_WPL,Electron_lostHits,Electron_pt,Electron_eta,Electron_pfRelIso03_all,Electron_miniPFRelIso_chg,Electron_miniPFRelIso_all,Electron_jetNDauCharged,Electron_jetPtRelv2,Electron_jetRelIso,Jet_btagDeepFlavB,Electron_sip3d,Electron_dxy,Electron_dz,Electron_mvaFall17V2noIso,Lepton_muonIdx,Muon_jetIdx,Muon_mvaTTH,Muon_looseId,Muon_isGlobal,Muon_isTracker,Muon_isPFcand,Muon_mediumId,Muon_pt,Muon_eta,Muon_pfRelIso03_all,Muon_miniPFRelIso_chg,Muon_miniPFRelIso_all,Muon_jetNDauCharged,Muon_jetPtRelv2,Muon_jetRelIso,Muon_sip3d,Muon_dxy,Muon_dz,Muon_segmentComp)', + 'samples': ['DATA','DATA_unprescaled'], +} + +# LepCut2l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight80x +eleWP = 'mvaFall17V2Iso_WP90' +muWP = 'cut_Tight80x' + +aliases['LepWPCut2l'] = { + # 'expr': 'LepCut2l__ele_' + eleWP + '__mu_' + muWP, + 'expr': 'LepCut2l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight80x*\ + ( ((abs(Lepton_pdgId[0])==13 && Muon_mvaTTH[Lepton_muonIdx[0]]>0.82) || (abs(Lepton_pdgId[0])==11 && Lepton_mvaTTH_UL[0]>0.90)) \ + && ((abs(Lepton_pdgId[1])==13 && Muon_mvaTTH[Lepton_muonIdx[1]]>0.82) || (abs(Lepton_pdgId[1])==11 && Lepton_mvaTTH_UL[1]>0.90)) )', + 'samples': mc + ['DATA','DATA_unprescaled'] +} + +aliases['LepWPCut1l'] = { + 'expr': '(abs(Lepton_pdgId[0])==11 && Lepton_isTightElectron_'+eleWP+'[0]>0.5 && Lepton_mvaTTH_UL[0]>0.90) \ + || (abs(Lepton_pdgId[0])==13 && Lepton_isTightMuon_'+muWP+'[0]>0.5 && Muon_mvaTTH[Lepton_muonIdx[0]]>0.82)', + 'samples': mc + ['DATA','DATA_unprescaled'] +} + +# No jet with pt > 30 GeV +aliases['zeroJet'] = { + 'expr': 'Alt(CleanJet_pt, 0, 0) < 30.' +} + +aliases['oneJet'] = { + 'expr': 'Alt(CleanJet_pt, 0, 0) > 30. && Alt(CleanJet_pt, 1, 0) < 30.' +} + +aliases['multiJet'] = { + 'expr': 'Alt(CleanJet_pt, 1, 0) > 30.' +} + +jet_pt_thrs = [10, 15, 20, 25, 30, 35, 40, 45] + +for jet_pt_threshold in jet_pt_thrs: + + # DeltaR(lep,jet) + aliases[f'drlj_{jet_pt_threshold}'] = { + 'linesToAdd': [f'#include "{configurations}/macros/away_jet.cc"'], + 'class': 'drlj', + 'args' : f'{jet_pt_threshold},nLepton,nCleanJet,Lepton_pt,Lepton_eta,Lepton_phi,CleanJet_pt,CleanJet_eta,CleanJet_phi', + 'samples': mc + ['DATA','DATA_unprescaled'] +} + +# DeltaR (l1,j1) +aliases['dRl1j1'] = { + 'expr': 'CleanJet_pt[0] >= 10 ? TMath::Sqrt(dphilep1jet1*dphilep1jet1 + (Lepton_eta[0]-CleanJet_eta[0])*(Lepton_eta[0]-CleanJet_eta[0])) : -9999', +} + +# Cone pt +aliases['Lepton_conept'] = { + 'expr': 'LeptonConePt(Lepton_pt, Lepton_pdgId, Lepton_electronIdx, Lepton_muonIdx, Electron_jetRelIso, Muon_jetRelIso)', + 'linesToAdd': [f'#include "{configurations}/../utils/macros/LeptonConePt_class.cc"'], + 'samples': mc + ['DATA', 'DATA_unprescaled'] +} diff --git a/FakeRate/2016HIPM_v9/configuration.py b/FakeRate/2016HIPM_v9/configuration.py new file mode 100644 index 00000000..c8fe0412 --- /dev/null +++ b/FakeRate/2016HIPM_v9/configuration.py @@ -0,0 +1,89 @@ +# Configuration file for fake rate measurement using the UL 2016noHIPM dataset + +# Tag used to identify the configuration folder version +tag = 'Fake_2016HIPM_v9' + +# File to use as runner script, default uses mkShapesRDF.shapeAnalysis.runner, otherwise specify path to script +runnerFile = "default" + +# Output file name +outputFile = "mkShapes__{}.root".format(tag) + +# Path to ouput folder +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +if 'portal' in os.uname()[1]: + outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" + +# Path to batch folder (used for condor submission) +batchFolder = "condor" + +# Path to configuration folder (will contain all the compiled configuration files) +configsFolder = "configs" + +# Luminosity to normalize to (in 1/fb) +lumi = 1 + +# File with dict of aliases to define +aliasesFile = "aliases.py" + +# File with dict of variables +variablesFile = "variables.py" + +# File with dict of cuts +cutsFile = "cuts.py" + +# File with dict of samples +samplesFile = "samples.py" + +# File with dict of samples for plotting +plotFile = 'plot.py' + +# File with dict of structure (used to define processes in combine) +structureFile = "structure.py" + +# Nuisances file for mkDatacards and for mkShape +nuisancesFile = "nuisances.py" + +# Path to folder where to save plots +plotPath = 'plots_' + tag + +# This lines are executed right before the runner on the condor node +mountEOS = [] + +# List of imports to import when compiling the whole configuration folder, it should not contain imports used by configuration.py +imports = ["os", "glob", ("collections", "OrderedDict"), "ROOT"] + +# List of files to compile +filesToExec = [ + samplesFile, + aliasesFile, + variablesFile, + cutsFile, + plotFile, + nuisancesFile, + structureFile, +] + +# List of variables to keep in the compiled configuration folder +varsToKeep = [ + "batchVars", + "outputFolder", + "batchFolder", + "configsFolder", + "outputFile", + "runnerFile", + "tag", + "samples", + "aliases", + "variables", + ("cuts", {"cuts": "cuts", "preselections": "preselections"}), + ("plot", {"plot": "plot", "groupPlot": "groupPlot", "legend": "legend"}), + "nuisances", + "structure", + "lumi", +] + +# List of variables to keep in the batch submission script (script.py) +batchVars = varsToKeep[varsToKeep.index("samples") :] + +varsToKeep += ['plotPath'] diff --git a/FakeRate/2016HIPM_v9/cuts.py b/FakeRate/2016HIPM_v9/cuts.py new file mode 100644 index 00000000..1d394bf7 --- /dev/null +++ b/FakeRate/2016HIPM_v9/cuts.py @@ -0,0 +1,92 @@ +jet_pt_thresholds = [10, 15, 20, 25, 30, 35, 40, 45] + +# cuts +cuts = {} + +preselections = 'nLepton > 0 \ + && ((abs(Lepton_pdgId[0]) == 11 && Lepton_pt[0] > 10 && abs(Lepton_eta[0]) < 2.4) \ + || (abs(Lepton_pdgId[0]) == 13 && Lepton_pt[0] > 13 && abs(Lepton_eta[0]) < 2.5)) \ +' + +# Prompt rate selections +cuts['Zpeak_PR_loose'] = { + 'expr' : 'nLepton>1 && Lepton_pt[0]>25 && LepWPCut1l && Lepton_pt[1]>10 && mll>76 && mll<106 && PuppiMET_pt<20', + 'categories' : { + 'ele' : 'Lepton_pdgId[0]*Lepton_pdgId[1] == -121', + 'muon' : 'Lepton_pdgId[0]*Lepton_pdgId[1] == -169', + } +} + +# Prompt rate selections +cuts['Zpeak_PR_tight'] = { + 'expr' : 'nLepton>1 && Lepton_pt[0]>25 && Lepton_pt[1]>10 && LepWPCut2l && mll>76 && mll<106 && PuppiMET_pt<20', + 'categories' : { + 'ele' : 'Lepton_pdgId[0]*Lepton_pdgId[1] == -121', + 'muon' : 'Lepton_pdgId[0]*Lepton_pdgId[1] == -169', + } +} + + +for jet_pt_threshold in jet_pt_thresholds: + + ########################## + # Loose leptons selections + ########################## + + # QCD region + cuts[f'QCD_loose_jet_pt_{jet_pt_threshold}'] = { + 'expr' : f'nLepton == 1 && mtw1 < 20 && PuppiMET_pt < 20 && drlj_{jet_pt_threshold} > 1', + 'categories' : { + 'ele' : 'abs(Lepton_pdgId[0]) == 11', + 'muon' : 'abs(Lepton_pdgId[0]) == 13', + } + } + + # Z-peak + cuts[f'Zpeak_loose_jet_pt_{jet_pt_threshold}'] = { + 'expr' : f'nLepton > 1 && Lepton_pt[0] > 25 && Lepton_pt[1] > 10 && PuppiMET_pt < 20 && mll > 60 && mll < 120', + 'categories' : { + 'ele' : 'Lepton_pdgId[0]*Lepton_pdgId[1] == -121 && Lepton_pt[1] > 13', + 'muon' : 'Lepton_pdgId[0]*Lepton_pdgId[1] == -169', + } + } + + # WJets region + cuts[f'WJets_loose_jet_pt_{jet_pt_threshold}'] = { + 'expr' : f'nLepton == 1 && mtw1 > 20 && PuppiMET_pt < 20 && drlj_{jet_pt_threshold} > 1', + 'categories' : { + 'ele' : 'abs(Lepton_pdgId[0]) == 11', + 'muon' : 'abs(Lepton_pdgId[0]) == 13', + } + } + + ########################## + # Tight leptons selections + ########################## + + # QCD region + cuts[f'QCD_tight_jet_pt_{jet_pt_threshold}'] = { + 'expr' : f'nLepton == 1 && mtw1 < 20 && PuppiMET_pt < 20 && drlj_{jet_pt_threshold} > 1 && LepWPCut1l', + 'categories' : { + 'ele' : 'abs(Lepton_pdgId[0]) == 11', + 'muon' : 'abs(Lepton_pdgId[0]) == 13', + } + } + + # Z-peak + cuts[f'Zpeak_tight_jet_pt_{jet_pt_threshold}'] = { + 'expr' : f'nLepton > 1 && PuppiMET_pt < 20 && mll > 60 && mll < 120 && LepWPCut1l', + 'categories' : { + 'ele' : 'Lepton_pdgId[0]*Lepton_pdgId[1] == -121 && Lepton_pt[1] > 13', + 'muon' : 'Lepton_pdgId[0]*Lepton_pdgId[1] == -169', + } + } + + # WJets region + cuts[f'WJets_tight_jet_pt_{jet_pt_threshold}'] = { + 'expr' : f'nLepton == 1 && mtw1 > 20 && PuppiMET_pt < 20 && drlj_{jet_pt_threshold} > 1 && LepWPCut1l', + 'categories' : { + 'ele' : 'abs(Lepton_pdgId[0]) == 11', + 'muon' : 'abs(Lepton_pdgId[0]) == 13', + } + } diff --git a/FakeRate/2016HIPM_v9/do_fake_rate.sh b/FakeRate/2016HIPM_v9/do_fake_rate.sh new file mode 100644 index 00000000..143a7301 --- /dev/null +++ b/FakeRate/2016HIPM_v9/do_fake_rate.sh @@ -0,0 +1,34 @@ +cd ../scripts/ + +if [[ "$(uname -a)" == *portal* ]] || [[ "$(uname -a)" == *bms* ]]; then + echo "We are at KIT!" + input_dir=/ceph/${USER} +else + echo "We are on lxplus!" + input_dir=/eos/user/${USER:0:1}/${USER} +fi + +# Muons +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_2016HIPM_v9/rootFile/mkShapes__Fake_2016HIPM_v9.root --outputFolder ../2016HIPM_v9/FakeRate_2016HIPM_v9/cut_Tight_HWWW_tthmva_82 --outputFileName MuonFR_jet45.root --jet_pt 45 --flavor muon --variable pt2_eta2 --do_prompt_rate True --outputFileNamePR MuonPR.root + +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_2016HIPM_v9/rootFile/mkShapes__Fake_2016HIPM_v9.root --outputFolder ../2016HIPM_v9/FakeRate_2016HIPM_v9/cut_Tight_HWWW_tthmva_82 --outputFileName MuonFR_jet10.root --jet_pt 10 --flavor muon --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_2016HIPM_v9/rootFile/mkShapes__Fake_2016HIPM_v9.root --outputFolder ../2016HIPM_v9/FakeRate_2016HIPM_v9/cut_Tight_HWWW_tthmva_82 --outputFileName MuonFR_jet15.root --jet_pt 15 --flavor muon --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_2016HIPM_v9/rootFile/mkShapes__Fake_2016HIPM_v9.root --outputFolder ../2016HIPM_v9/FakeRate_2016HIPM_v9/cut_Tight_HWWW_tthmva_82 --outputFileName MuonFR_jet20.root --jet_pt 20 --flavor muon --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_2016HIPM_v9/rootFile/mkShapes__Fake_2016HIPM_v9.root --outputFolder ../2016HIPM_v9/FakeRate_2016HIPM_v9/cut_Tight_HWWW_tthmva_82 --outputFileName MuonFR_jet25.root --jet_pt 25 --flavor muon --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_2016HIPM_v9/rootFile/mkShapes__Fake_2016HIPM_v9.root --outputFolder ../2016HIPM_v9/FakeRate_2016HIPM_v9/cut_Tight_HWWW_tthmva_82 --outputFileName MuonFR_jet30.root --jet_pt 30 --flavor muon --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_2016HIPM_v9/rootFile/mkShapes__Fake_2016HIPM_v9.root --outputFolder ../2016HIPM_v9/FakeRate_2016HIPM_v9/cut_Tight_HWWW_tthmva_82 --outputFileName MuonFR_jet35.root --jet_pt 35 --flavor muon --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_2016HIPM_v9/rootFile/mkShapes__Fake_2016HIPM_v9.root --outputFolder ../2016HIPM_v9/FakeRate_2016HIPM_v9/cut_Tight_HWWW_tthmva_82 --outputFileName MuonFR_jet40.root --jet_pt 40 --flavor muon --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_2016HIPM_v9/rootFile/mkShapes__Fake_2016HIPM_v9.root --outputFolder ../2016HIPM_v9/FakeRate_2016HIPM_v9/cut_Tight_HWWW_tthmva_82 --outputFileName MuonFR_jet45.root --jet_pt 45 --flavor muon --variable pt1_eta1 + +# Electrons +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_2016HIPM_v9/rootFile/mkShapes__Fake_2016HIPM_v9.root --outputFolder ../2016HIPM_v9/FakeRate_2016HIPM_v9/mvaFall17V2Iso_WP90_tthmva_UL_90 --outputFileName EleFR_jet45.root --jet_pt 45 --flavor ele --variable pt2_eta2 --do_prompt_rate True --outputFileNamePR ElePR.root + +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_2016HIPM_v9/rootFile/mkShapes__Fake_2016HIPM_v9.root --outputFolder ../2016HIPM_v9/FakeRate_2016HIPM_v9/mvaFall17V2Iso_WP90_tthmva_UL_90 --outputFileName EleFR_jet10.root --jet_pt 10 --flavor ele --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_2016HIPM_v9/rootFile/mkShapes__Fake_2016HIPM_v9.root --outputFolder ../2016HIPM_v9/FakeRate_2016HIPM_v9/mvaFall17V2Iso_WP90_tthmva_UL_90 --outputFileName EleFR_jet15.root --jet_pt 15 --flavor ele --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_2016HIPM_v9/rootFile/mkShapes__Fake_2016HIPM_v9.root --outputFolder ../2016HIPM_v9/FakeRate_2016HIPM_v9/mvaFall17V2Iso_WP90_tthmva_UL_90 --outputFileName EleFR_jet25.root --jet_pt 25 --flavor ele --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_2016HIPM_v9/rootFile/mkShapes__Fake_2016HIPM_v9.root --outputFolder ../2016HIPM_v9/FakeRate_2016HIPM_v9/mvaFall17V2Iso_WP90_tthmva_UL_90 --outputFileName EleFR_jet30.root --jet_pt 30 --flavor ele --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_2016HIPM_v9/rootFile/mkShapes__Fake_2016HIPM_v9.root --outputFolder ../2016HIPM_v9/FakeRate_2016HIPM_v9/mvaFall17V2Iso_WP90_tthmva_UL_90 --outputFileName EleFR_jet35.root --jet_pt 35 --flavor ele --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_2016HIPM_v9/rootFile/mkShapes__Fake_2016HIPM_v9.root --outputFolder ../2016HIPM_v9/FakeRate_2016HIPM_v9/mvaFall17V2Iso_WP90_tthmva_UL_90 --outputFileName EleFR_jet40.root --jet_pt 40 --flavor ele --variable pt1_eta1 +python mkFakeRate.py --inputFile ${input_dir}/mkShapesRDF_rootfiles/Fake_2016HIPM_v9/rootFile/mkShapes__Fake_2016HIPM_v9.root --outputFolder ../2016HIPM_v9/FakeRate_2016HIPM_v9/mvaFall17V2Iso_WP90_tthmva_UL_90 --outputFileName EleFR_jet45.root --jet_pt 45 --flavor ele --variable pt1_eta1 + +cd - diff --git a/FakeRate/2016HIPM_v9/do_plots.sh b/FakeRate/2016HIPM_v9/do_plots.sh new file mode 100644 index 00000000..b585f221 --- /dev/null +++ b/FakeRate/2016HIPM_v9/do_plots.sh @@ -0,0 +1,9 @@ +# Plots used for fake rate: using prescaled triggers +mkShapesRDF -c 1 +mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png + +# Plots used for prompt rate: using unprescaled triggers +cd unprescaled_cfg/ +mkShapesRDF -c 1 +mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png +cd - diff --git a/FakeRate/2016HIPM_v9/nuisances.py b/FakeRate/2016HIPM_v9/nuisances.py new file mode 100644 index 00000000..abda5484 --- /dev/null +++ b/FakeRate/2016HIPM_v9/nuisances.py @@ -0,0 +1,27 @@ +import sys + +nuisances = {} + +mc = [skey for skey in samples if skey not in ('Fake', 'DATA','ChargeFlip')] + +redirector = "" + +useXROOTD = False + +################################ EXPERIMENTAL UNCERTAINTIES ################################# + +#### Luminosity + +# https://twiki.cern.ch/twiki/bin/view/CMS/LumiRecommendationsRun2#LumiComb +# Uncorrelated 2016 1.0 +# Uncorrelated 2017 2.0 +# Uncorrelated 2018 1.5 +# Correlated 2016, 2017, 2018 0.6, 0.9, 2.0 +# Correlated 2017, 2018 0.6, 0.2 + +nuisances['lumi_Uncorrelated'] = { + 'name' : 'lumi_13TeV_2016', + 'type' : 'lnN', + 'samples' : dict((skey, '1.010') for skey in mc if skey not in ['WZ']) +} + diff --git a/FakeRate/2016HIPM_v9/plot.py b/FakeRate/2016HIPM_v9/plot.py new file mode 100644 index 00000000..60443bac --- /dev/null +++ b/FakeRate/2016HIPM_v9/plot.py @@ -0,0 +1,64 @@ +# Plot configuration + +# Groups of samples to improve the plots. +# If not defined, normal plots is used + +lepton_categories = ['_ele_low_pt', '_ele_high_pt', '_muon_low_pt', '_muon_high_pt'] + +groupPlot = {} + +groupPlot['DY'] = { + 'nameHR' : "DY", + 'isSignal' : 0, + 'color' : 418, # kGreen+2 + 'samples' : ['DY' + lep_cat for lep_cat in lepton_categories] +} + +groupPlot['WJets'] = { + 'nameHR' : "WJets", + 'isSignal' : 0, + 'color' : 11, # kGrey + 'samples' : ['WJets' + lep_cat for lep_cat in lepton_categories] +} + +# keys here must match keys in samples.py + +plot = {} + +for lep_cat in lepton_categories: + + plot['DY' + lep_cat] = { + 'nameHR' : 'DY', + 'color' : 418, # kGreen+2 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0, + } + + plot['WJets' + lep_cat] = { + 'nameHR' : 'WJets', + 'color' : 11, # kGrey + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0, + } + +######## +# Data # +######## + +plot['DATA'] = { + 'nameHR' : 'Data', + 'color' : 1 , + 'isSignal' : 0, + 'isData' : 1, + 'isBlind' : 0 +} + + +# Define legend + +legend = {} + +legend['lumi'] = '' # L = 19.5 fb^{-1}' +legend['sqrt'] = '#sqrt{s} = 13 TeV' diff --git a/FakeRate/2016HIPM_v9/repeat.sh b/FakeRate/2016HIPM_v9/repeat.sh new file mode 100644 index 00000000..bb239505 --- /dev/null +++ b/FakeRate/2016HIPM_v9/repeat.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +if [ $# -eq 0 ]; then + echo "$0: Missing arguments" + exit 1 +else + echo "We got some argument(s)" + echo "===========================" + echo "Number of arguments. : $#" + echo "List of arguments... : $@" + echo "Arg #1: sample : $1" + echo "Arg #2: compile : $2" + echo "===========================" + SAMPLE=$1 + COMPILE=$2 +fi + + +if [ "$COMPILE" == "True" ]; then + mkShapesRDF -c 1 + mkShapesRDF -o 0 -f . -b 1 -dR 1 +fi +cd condor/Fake_2016HIPM_v9/${SAMPLE}/ +cp ../../../../../../../../mkShapesRDF/mkShapesRDF/include/headers.hh ../../../../../../../../mkShapesRDF/mkShapesRDF/shapeAnalysis/runner.py . +python runner.py +cp output.root /eos/user/n/ntrevisa/mkShapesRDF_rootfiles/Fake_2016HIPM_v9/rootFile/mkShapes__Fake_2016HIPM_v9__ALL__${SAMPLE}.root +rm output.root diff --git a/FakeRate/2016HIPM_v9/samples.py b/FakeRate/2016HIPM_v9/samples.py new file mode 100644 index 00000000..5477ba02 --- /dev/null +++ b/FakeRate/2016HIPM_v9/samples.py @@ -0,0 +1,251 @@ +import os,sys,glob + +################################################ +################# SKIMS ######################## +################################################ + +# MC: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Summer20UL16_106x_nAODv9_HIPM_Full2016v9/MCl1loose2016v9__MCCorr2016v9NoJERInHorn/ +# DATA: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Run2016_UL2016_nAODv9_HIPM_Full2016v9/DATAl1loose2016v9/ + +mcProduction = 'Summer20UL16_106x_nAODv9_HIPM_Full2016v9' +dataReco = 'Run2016_UL2016_nAODv9_HIPM_Full2016v9' + +mcSteps = 'MCl1loose2016v9__MCCorr2016v9NoJERInHorn' +dataSteps = 'DATAl1loose2016v9' + +############################################## +###### Tree base directory for the site ###### +############################################## + +treeBaseDir = '/eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano' +if 'portal' in os.uname()[1]: + treeBaseDir = '/ceph/ntrevisa/HWWNano' + +limitFiles = -1 + +def makeMCDirectory(var=''): + return os.path.join(treeBaseDir, mcProduction, mcSteps.format(var='')) + +mcDirectory = makeMCDirectory() +dataDirectory = os.path.join(treeBaseDir, dataReco, dataSteps) + +samples = {} + +from mkShapesRDF.lib.search_files import SearchFiles +s = SearchFiles() + +useXROOTD = True +redirector = 'root://eoscms.cern.ch/' +if 'portal' in os.uname()[1]: + redirector = '' + +def nanoGetSampleFiles(path, name): + _files = s.searchFiles(path, name, redirector=redirector) + if limitFiles != -1 and len(_files) > limitFiles: + return [(name, _files[:limitFiles])] + else: + return [(name, _files)] + +def CombineBaseW(samples, proc, samplelist): + _filtFiles = list(filter(lambda k: k[0] in samplelist, samples[proc]['name'])) + _files = list(map(lambda k: k[1], _filtFiles)) + _l = list(map(lambda k: len(k), _files)) + leastFiles = _files[_l.index(min(_l))] + dfSmall = ROOT.RDataFrame('Runs', leastFiles) + s = dfSmall.Sum('genEventSumw').GetValue() + f = ROOT.TFile.Open(leastFiles[0]) + t = f.Get('Events') + t.GetEntry(1) + xs = t.baseW * s + + __files = [] + for f in _files: + __files += f + df = ROOT.RDataFrame('Runs', __files) + s = df.Sum('genEventSumw').GetValue() + newbaseW = str(xs / s) + weight = newbaseW + '/baseW' + + for iSample in samplelist: + addSampleWeight(samples, proc, iSample, weight) + +def addSampleWeight(samples, sampleName, sampleNameType, weight): + obj = list(filter(lambda k: k[0] == sampleNameType, samples[sampleName]['name']))[0] + samples[sampleName]['name'] = list(filter(lambda k: k[0] != sampleNameType, samples[sampleName]['name'])) + if len(obj) > 2: + samples[sampleName]['name'].append((obj[0], obj[1], obj[2] + '*(' + weight + ')')) + else: + samples[sampleName]['name'].append((obj[0], obj[1], '(' + weight + ')' )) + + +################################################ +############ DATA DECLARATION ################## +################################################ + +DataRun = [ + ['B','Run2016B-ver1_HIPM_UL2016-v2'], + ['B','Run2016B-ver2_HIPM_UL2016-v2'], + ['C','Run2016C-HIPM_UL2016-v2'], + ['D','Run2016D-HIPM_UL2016-v2'], + ['E','Run2016E-HIPM_UL2016-v2'], + ['F','Run2016F-HIPM_UL2016-v2'], +] + +# Pre-scaled triggers for fake rate estimation +DataSets = ['DoubleMuon','DoubleEG'] + +DataTrig = { + 'DoubleMuon' : '(Lepton_pt[0] <= 20 && HLT_Mu8_TrkIsoVVL > 0.5) || (Lepton_pt[0] > 20 && HLT_Mu17_TrkIsoVVL > 0.5)', + 'DoubleEG' : '(HLT_Mu8_TrkIsoVVL < 0.5) && (HLT_Mu17_TrkIsoVVL < 0.5) && ((Lepton_pt[0] <= 25 && HLT_Ele12_CaloIdL_TrackIdL_IsoVL_PFJet30 > 0.5) || (Lepton_pt[0] > 25 && HLT_Ele23_CaloIdL_TrackIdL_IsoVL_PFJet30 > 0.5))', +} + +# Unprescaled triggers for prompt rate estimation +DataRunUnprescaled = [ + ['B','Run2016B-ver1_HIPM_UL2016-v2'], + ['B','Run2016B-ver2_HIPM_UL2016-v2'], + ['C','Run2016C-HIPM_UL2016-v2'], + ['D','Run2016D-HIPM_UL2016-v2'], + ['E','Run2016E-HIPM_UL2016-v2'], + ['F','Run2016F-HIPM_UL2016-v2'], +] + +DataSetsUnprescaled = ['SingleMuon','SingleElectron'] + +DataTrigUnprescaled = { + 'SingleMuon' : 'HLT_IsoMu24 > 0.5 || HLT_IsoTkMu24 > 0.5', + 'SingleElectron' : '(HLT_IsoMu24 < 0.5 && HLT_IsoTkMu24 < 0.5) && HLT_Ele27_WPTight_Gsf > 0.5', +} + +######################################### +############ MC COMMON ################## +######################################### + +# SFweight does not include btag weights +# mcCommonWeight = 'XSWeight/1000.' +# XSWeight = baseW * Generator_weight +mcCommonWeight = 'baseW*puWeight*Generator_weight/1000.' + +########################################### +############# BACKGROUNDS ############### +########################################### + +lumi_ele_low_pt = '11.028*(HLT_Ele12_CaloIdL_TrackIdL_IsoVL_PFJet30 > 0.5)*(Lepton_pt[0]<=25)'; +lumi_ele_high_pt = '52.768*(HLT_Ele23_CaloIdL_TrackIdL_IsoVL_PFJet30 > 0.5)*(Lepton_pt[0]>25)'; +lumi_muon_low_pt = '6.584*(HLT_Mu8_TrkIsoVVL > 0.5)*(Lepton_pt[0]<=20)'; +lumi_muon_high_pt = '192.064*(HLT_Mu17_TrkIsoVVL > 0.5)*(Lepton_pt[0]>20)'; +lumi_full_2018 = '19521' + +# DY +files = nanoGetSampleFiles(mcDirectory, 'DYJetsToLL_M-50') + +samples['DY_ele_low_pt'] = { + 'name': files, + 'weight': mcCommonWeight + '*' + lumi_ele_low_pt, + 'FilesPerJob': 4, +} + +samples['DY_ele_high_pt'] = { + 'name': files, + 'weight': mcCommonWeight + '*' + lumi_ele_high_pt, + 'FilesPerJob': 4, +} + +samples['DY_muon_low_pt'] = { + 'name': files, + 'weight': mcCommonWeight + '*' + lumi_muon_low_pt, + 'FilesPerJob': 4, +} + +samples['DY_muon_high_pt'] = { + 'name': files, + 'weight': mcCommonWeight + '*' + lumi_muon_high_pt, + 'FilesPerJob': 4, +} + +samples['DY_unprescaled'] = { + 'name': files, + 'weight': mcCommonWeight + '*' + lumi_full_2018, + 'FilesPerJob': 4, +} + +##### WJets ####### +files = nanoGetSampleFiles(mcDirectory, 'WJetsToLNu-LO') + +samples['WJets_ele_low_pt'] = { + 'name': files, + 'weight': mcCommonWeight + '*' + lumi_ele_low_pt + '*(XSWeight < 1)', + 'FilesPerJob': 4, +} + +samples['WJets_ele_high_pt'] = { + 'name': files, + 'weight': mcCommonWeight + '*' + lumi_ele_high_pt + '*(XSWeight < 1)', + 'FilesPerJob': 4, +} + +samples['WJets_muon_low_pt'] = { + 'name': files, + 'weight': mcCommonWeight + '*' + lumi_muon_low_pt + '*(XSWeight < 1)', + 'FilesPerJob': 4, +} + +samples['WJets_muon_high_pt'] = { + 'name': files, + 'weight': mcCommonWeight + '*' + lumi_muon_high_pt + '*(XSWeight < 1)', + 'FilesPerJob': 4, +} + +########################################### +################## DATA ################### +########################################### + +# Prescaled +samples['DATA'] = { + 'name': [], + 'weight': 'METFilter_DATA', + 'weights': [], + 'isData': ['all'], + 'FilesPerJob': 10 +} + +for _, sd in DataRun: + for pd in DataSets: + tag_data = pd + '_' + sd + + if 'DoubleEG' in pd and 'Run2016B-ver2' in sd: + print("sd = {}".format(sd)) + print("pd = {}".format(pd)) + print("Old tag = {}".format(tag_data)) + tag_data = tag_data.replace('v2','v3') + print("New tag = {}".format(tag_data)) + + files = nanoGetSampleFiles(dataDirectory, tag_data) + + samples['DATA']['name'].extend(files) + addSampleWeight(samples, 'DATA', tag_data, DataTrig[pd]) + + +# Unprescaled +samples['DATA_unprescaled'] = { + 'name': [], + 'weight': 'METFilter_DATA', + 'weights': [], + 'isData': ['all'], + 'FilesPerJob': 10 +} + +for _, sd in DataRunUnprescaled: + for pd in DataSetsUnprescaled: + tag_data = pd + '_' + sd + + if 'DoubleEG' in pd and 'Run2016B-ver2' in sd: + print("sd = {}".format(sd)) + print("pd = {}".format(pd)) + print("Old tag = {}".format(tag_data)) + tag_data = tag_data.replace('v2','v3') + print("New tag = {}".format(tag_data)) + + files = nanoGetSampleFiles(dataDirectory, tag_data) + + samples['DATA_unprescaled']['name'].extend(files) + addSampleWeight(samples, 'DATA_unprescaled', tag_data, DataTrigUnprescaled[pd]) diff --git a/FakeRate/2016HIPM_v9/structure.py b/FakeRate/2016HIPM_v9/structure.py new file mode 100644 index 00000000..21a11db6 --- /dev/null +++ b/FakeRate/2016HIPM_v9/structure.py @@ -0,0 +1,26 @@ +# structure configuration for datacard + +# keys here must match keys in samples.py + +structure = {} + +structure['DY'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['Top'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['WJets'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +# Data +structure['DATA'] = { + 'isSignal' : 0, + 'isData' : 1 +} diff --git a/FakeRate/2016HIPM_v9/unprescaled_cfg/configuration.py b/FakeRate/2016HIPM_v9/unprescaled_cfg/configuration.py new file mode 100644 index 00000000..5f093c05 --- /dev/null +++ b/FakeRate/2016HIPM_v9/unprescaled_cfg/configuration.py @@ -0,0 +1,87 @@ +# Configuration file for fake rate measurement using the UL 2018 dataset + +# Tag used to identify the configuration folder version +tag = 'Fake_2016HIPM_v9' + +# File to use as runner script, default uses mkShapesRDF.shapeAnalysis.runner, otherwise specify path to script +runnerFile = "default" + +# Output file name +outputFile = "mkShapes__{}.root".format(tag) + +# Path to ouput folder +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" + +# Path to batch folder (used for condor submission) +batchFolder = "condor" + +# Path to configuration folder (will contain all the compiled configuration files) +configsFolder = "configs" + +# Luminosity to normalize to (in 1/fb) +lumi = 1 + +# File with dict of aliases to define +aliasesFile = "../aliases.py" + +# File with dict of variables +variablesFile = "../variables.py" + +# File with dict of cuts +cutsFile = "cuts.py" + +# File with dict of samples +samplesFile = "../samples.py" + +# File with dict of samples for plotting +plotFile = 'plot.py' + +# File with dict of structure (used to define processes in combine) +structureFile = "../structure.py" + +# Nuisances file for mkDatacards and for mkShape +nuisancesFile = "../nuisances.py" + +# Path to folder where to save plots +plotPath = '../plots_' + tag + +# This lines are executed right before the runner on the condor node +mountEOS = [] + +# List of imports to import when compiling the whole configuration folder, it should not contain imports used by configuration.py +imports = ["os", "glob", ("collections", "OrderedDict"), "ROOT"] + +# List of files to compile +filesToExec = [ + samplesFile, + aliasesFile, + variablesFile, + cutsFile, + plotFile, + nuisancesFile, + structureFile, +] + +# List of variables to keep in the compiled configuration folder +varsToKeep = [ + "batchVars", + "outputFolder", + "batchFolder", + "configsFolder", + "outputFile", + "runnerFile", + "tag", + "samples", + "aliases", + "variables", + ("cuts", {"cuts": "cuts", "preselections": "preselections"}), + ("plot", {"plot": "plot", "groupPlot": "groupPlot", "legend": "legend"}), + "nuisances", + "structure", + "lumi", +] + +# List of variables to keep in the batch submission script (script.py) +batchVars = varsToKeep[varsToKeep.index("samples") :] + +varsToKeep += ['plotPath'] diff --git a/FakeRate/2016HIPM_v9/unprescaled_cfg/cuts.py b/FakeRate/2016HIPM_v9/unprescaled_cfg/cuts.py new file mode 100644 index 00000000..96eb7f22 --- /dev/null +++ b/FakeRate/2016HIPM_v9/unprescaled_cfg/cuts.py @@ -0,0 +1,92 @@ +jet_pt_thresholds = [10, 15, 20, 25, 30, 35, 40, 45] + +# cuts +cuts = {} + +preselections = 'nLepton > 0 \ + && ((abs(Lepton_pdgId[0]) == 11 && Lepton_pt[0] > 10 && abs(Lepton_eta[0]) < 2.4) \ + || (abs(Lepton_pdgId[0]) == 13 && Lepton_pt[0] > 13 && abs(Lepton_eta[0]) < 2.5)) \ +' + +# Prompt rate selections +cuts['Zpeak_PR_loose'] = { + 'expr' : 'nLepton>1 && Lepton_pt[0]>25 && LepWPCut1l && Lepton_pt[1]>10 && mll>76 && mll<106 && PuppiMET_pt<20', + 'categories' : { + 'ele' : 'Lepton_pdgId[0]*Lepton_pdgId[1] == -121', + 'muon' : 'Lepton_pdgId[0]*Lepton_pdgId[1] == -169', + } +} + +# Prompt rate selections +cuts['Zpeak_PR_tight'] = { + 'expr' : 'nLepton>1 && Lepton_pt[0]>25 && Lepton_pt[1]>10 && LepWPCut2l && mll>76 && mll<106 && PuppiMET_pt<20', + 'categories' : { + 'ele' : 'Lepton_pdgId[0]*Lepton_pdgId[1] == -121', + 'muon' : 'Lepton_pdgId[0]*Lepton_pdgId[1] == -169', + } +} + + +# for jet_pt_threshold in jet_pt_thresholds: + +# ########################## +# # Loose leptons selections +# ########################## + +# # QCD region +# cuts[f'QCD_loose_jet_pt_{jet_pt_threshold}'] = { +# 'expr' : f'nLepton == 1 && mtw1 < 20 && PuppiMET_pt < 20 && drlj_{jet_pt_threshold} > 1', +# 'categories' : { +# 'ele' : 'abs(Lepton_pdgId[0]) == 11', +# 'muon' : 'abs(Lepton_pdgId[0]) == 13', +# } +# } + +# # Z-peak +# cuts[f'Zpeak_loose_jet_pt_{jet_pt_threshold}'] = { +# 'expr' : f'nLepton > 1 && Lepton_pt[0] > 25 && Lepton_pt[1] > 10 && PuppiMET_pt < 20 && mll > 60 && mll < 120', +# 'categories' : { +# 'ele' : 'Lepton_pdgId[0]*Lepton_pdgId[1] == -121 && Lepton_pt[1] > 13', +# 'muon' : 'Lepton_pdgId[0]*Lepton_pdgId[1] == -169', +# } +# } + +# # WJets region +# cuts[f'WJets_loose_jet_pt_{jet_pt_threshold}'] = { +# 'expr' : f'nLepton == 1 && mtw1 > 20 && PuppiMET_pt < 20 && drlj_{jet_pt_threshold} > 1', +# 'categories' : { +# 'ele' : 'abs(Lepton_pdgId[0]) == 11', +# 'muon' : 'abs(Lepton_pdgId[0]) == 13', +# } +# } + +# ########################## +# # Tight leptons selections +# ########################## + +# # QCD region +# cuts[f'QCD_tight_jet_pt_{jet_pt_threshold}'] = { +# 'expr' : f'nLepton == 1 && mtw1 < 20 && PuppiMET_pt < 20 && drlj_{jet_pt_threshold} > 1 && LepWPCut1l', +# 'categories' : { +# 'ele' : 'abs(Lepton_pdgId[0]) == 11', +# 'muon' : 'abs(Lepton_pdgId[0]) == 13', +# } +# } + +# # Z-peak +# cuts[f'Zpeak_tight_jet_pt_{jet_pt_threshold}'] = { +# 'expr' : f'nLepton > 1 && PuppiMET_pt < 20 && mll > 60 && mll < 120 && LepWPCut1l', +# 'categories' : { +# 'ele' : 'Lepton_pdgId[0]*Lepton_pdgId[1] == -121 && Lepton_pt[1] > 13', +# 'muon' : 'Lepton_pdgId[0]*Lepton_pdgId[1] == -169', +# } +# } + +# # WJets region +# cuts[f'WJets_tight_jet_pt_{jet_pt_threshold}'] = { +# 'expr' : f'nLepton == 1 && mtw1 > 20 && PuppiMET_pt < 20 && drlj_{jet_pt_threshold} > 1 && LepWPCut1l', +# 'categories' : { +# 'ele' : 'abs(Lepton_pdgId[0]) == 11', +# 'muon' : 'abs(Lepton_pdgId[0]) == 13', +# } +# } diff --git a/FakeRate/2016HIPM_v9/unprescaled_cfg/plot.py b/FakeRate/2016HIPM_v9/unprescaled_cfg/plot.py new file mode 100644 index 00000000..8f15a9a3 --- /dev/null +++ b/FakeRate/2016HIPM_v9/unprescaled_cfg/plot.py @@ -0,0 +1,62 @@ +# plot configuration + +# Groups of samples to improve the plots. +# If not defined, normal plots is used + +# lepton_categories = ['_ele_low_pt', '_ele_high_pt', '_muon_low_pt', '_muon_high_pt'] + +groupPlot = {} + +groupPlot['DY'] = { + 'nameHR' : "DY", + 'isSignal' : 0, + 'color' : 418, # kGreen+2 + 'samples' : ['DY_unprescaled'] +} + +# groupPlot['WJets'] = { +# 'nameHR' : "WJets", +# 'isSignal' : 0, +# 'color' : 11, # kGrey +# 'samples' : ['WJets' + lep_cat for lep_cat in lepton_categories] +# } + +plot = {} + +# for lep_cat in lepton_categories: + +plot['DY_unprescaled'] = { + 'nameHR' : 'DY', + 'color' : 418, # kGreen+2 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0, +} + + # plot['WJets' + lep_cat] = { + # 'nameHR' : 'WJets', + # 'color' : 11, # kGrey + # 'isSignal' : 0, + # 'isData' : 0, + # 'scale' : 1.0, + # } + +######## +# Data # +######## + +plot['DATA_unprescaled'] = { + 'nameHR' : 'Data', + 'color' : 1 , + 'isSignal' : 0, + 'isData' : 1, + 'isBlind' : 0 +} + + +# Define legend + +legend = {} + +legend['lumi'] = 'L = 19.5 fb^{-1}' +legend['sqrt'] = '#sqrt{s} = 13 TeV' diff --git a/FakeRate/2016HIPM_v9/variables.py b/FakeRate/2016HIPM_v9/variables.py new file mode 100644 index 00000000..f0845ee5 --- /dev/null +++ b/FakeRate/2016HIPM_v9/variables.py @@ -0,0 +1,140 @@ +# variables + +# 0 = not fold (default), 1 = fold underflowbin, 2 = fold overflow bin, 3 = fold underflow and overflow + +variables = {} + +variables['events'] = { + 'name' : '1', + 'range' : (1,0,2), + 'xaxis' : 'events', + 'fold' : 3 +} + +################### +# Control variables +################### + +# ptbins[8] = {10, 15, 20, 25, 30, 35, 40, 45, 50}; +# etabins[2] = {0, 1.479, 2.5}; + +# variables['pt1_eta1'] = { +# 'name' : 'Lepton_pt[0]:abs(Lepton_eta[0])', +# 'range' : ([10, 15, 20, 25, 30, 35, 40, 45, 50],[0.0, 0.5, 1.0, 1.5, 2.0, 2.5],), +# 'xaxis' : 'p_{T}^{#ell 1}:#eta^{#ell 1}', +# 'fold' : 3, +# } + +# Cone_pt1 vs eta1 +variables['pt1_eta1'] = { + 'name' : 'Lepton_conept[0]:abs(Lepton_eta[0])', + 'range' : ([10, 15, 20, 25, 30, 35, 40, 45, 50],[0.0, 1.479, 2.5]), + 'xaxis' : 'p_{T}^{cone}(#ell 1):|#eta(#ell 1})|', + 'fold' : 3, +} + +# variables['pt2_eta2'] = { +# 'name' : 'Alt(Lepton_pt,1,0):abs(Alt(Lepton_eta,1,999))', +# 'range' : ([10, 15, 20, 25, 30, 35, 40, 45, 50],[0.0, 0.5, 1.0, 1.5, 2.0, 2.5],), +# 'xaxis' : 'p_{T}^{#ell 2}:#eta^{#ell 2}', +# 'fold' : 3, +# } + +# Cone_pt2 vs eta2 +variables['pt2_eta2'] = { + 'name' : 'Lepton_conept[1]:abs(Lepton_eta[1])', + 'range' : ([10, 15, 20, 25, 30, 35, 40, 45, 50],[0.0, 1.479, 2.5]), + 'xaxis' : 'p_{T}^{cone}(#ell 2):|#eta^{#ell 2}|', + 'fold' : 3, +} + +variables['mll'] = { + 'name' : 'mll', + 'range' : (20, 60,120), + 'xaxis' : 'm_{ll} [GeV]', + 'fold' : 0 +} + +variables['pt1'] = { + 'name' : 'Lepton_pt[0]', + 'range' : (20,0,100), + 'xaxis' : 'p_{T} 1st lep', + 'fold' : 0 +} + +variables['conept1'] = { + 'name' : 'Lepton_conept[0]', + 'range' : (20,0,100), + 'xaxis' : 'p_{T}^{cone} 1st lep', + 'fold' : 0 +} + +variables['eta1'] = { + 'name' : 'Lepton_eta[0]', + 'range' : (40,-3,3), + 'xaxis' : '#eta 1st lep', + 'fold' : 3 +} + +variables['pt2'] = { + 'name' : 'Alt(Lepton_pt,1,0)', + 'range' : (20,0,100), + 'xaxis' : 'p_{T} 2nd lep', + 'fold' : 0 +} + +variables['conept2'] = { + 'name' : 'Lepton_conept[1]', + 'range' : (20,0,100), + 'xaxis' : 'p_{T}^{cone} 2nd lep', + 'fold' : 0 +} + +variables['eta2'] = { + 'name' : 'Alt(Lepton_eta,1,999)', + 'range' : (40,-3,3), + 'xaxis' : '#eta 2nd lep', + 'fold' : 3 +} + +variables['mtw1'] = { + 'name' : 'mtw1', + 'range' : (20,0,100), + 'xaxis' : 'm_{T}^{W_{1}} [GeV]', + 'fold' : 3 +} + +variables['LepWPCut1l'] = { + 'name' : 'LepWPCut1l', + 'range' : (2,0,2), + 'xaxis' : 'Tight lepton flag', + 'fold' : 3 +} + +variables['dRl1j1'] = { + 'name' : 'dRl1j1', + 'range' : (20,0,10), + 'xaxis' : '#Delta R (#ell1,jet1)', + 'fold' : 3 +} + +variables['dphilep1jet1'] = { + 'name' : 'dphilep1jet1', + 'range' : (10,0,5), + 'xaxis' : '#Delta #phi (#ell1,jet1)', + 'fold' : 3 +} + +variables['puppimet'] = { + 'name' : 'PuppiMET_pt', + 'range' : (20,0,200), + 'xaxis' : 'PUPPI met [GeV]', + 'fold' : 3 +} + +# variables['jetpt1'] = { +# 'name' : 'CleanJet_pt[0]*(CleanJet_pt[0]>30)', +# 'range' : (40,0,200), +# 'xaxis' : 'p_{T} 1st jet', +# 'fold' : 2 +# } From c37ecf7365bb7856b65d0cc86ce1bf31b2b5987b Mon Sep 17 00:00:00 2001 From: ntrevisa Date: Tue, 12 Aug 2025 10:12:35 +0200 Subject: [PATCH 06/44] updating scripts and instructions for fake rate vs cone pt --- FakeRate/README.md | 5 +++ FakeRate/scripts/mkFakeRate.py | 62 +++++++++++++++++++++++++++--- utils/macros/LeptonConePt_class.cc | 35 +++++++++++++++++ 3 files changed, 97 insertions(+), 5 deletions(-) create mode 100644 utils/macros/LeptonConePt_class.cc diff --git a/FakeRate/README.md b/FakeRate/README.md index e9a583df..5320eef2 100644 --- a/FakeRate/README.md +++ b/FakeRate/README.md @@ -2,6 +2,11 @@ Configurations to estimate fake and prompt rates. +### Run 2 Effective Luminosities + +You can find a summary of the Run 2 effective luminosities at this link: +https://github.com/NTrevisani/FakeRateMeasurement/blob/master/certification/BRILCALC.md + ### Run 3 Effective Luminosities Since we are using some pre-scaled triggers, we need to calculate their effective luminosities. diff --git a/FakeRate/scripts/mkFakeRate.py b/FakeRate/scripts/mkFakeRate.py index eb966282..45239b12 100644 --- a/FakeRate/scripts/mkFakeRate.py +++ b/FakeRate/scripts/mkFakeRate.py @@ -14,6 +14,8 @@ import ROOT +ROOT.gStyle.SetOptStat(0) + if __name__ == '__main__': sys.argv = argv @@ -196,10 +198,10 @@ # Bins structure: # pt bins = 8: [10, 15, 20, 25, 30, 35, 40, 45, 50] - # eta bins = 5: [0, 0.5, 1.0, 1.5, 2.0, 2.5] + # eta bins = 5: [0, 1.479, 2.5] # variable: Lepton_pt[0]:abs(Lepton_eta[0]) --> Need to loop over abs(eta) and then on pT - eta_bins = 5 - eta_binning = [0, 0.5, 1.0, 1.5, 2.0, 2.5, 100] + eta_bins = 2 + eta_binning = [0, 1.479, 2.5, 100] pt_bins = 8 pt_binning = [10, 15, 20, 25, 30, 35, 40, 45, 50, 1000] @@ -225,11 +227,19 @@ # Ensure we are not dividing by 0 fake_rate = 0 + fake_rate_error = 0 + if loose_yields_DATA > 0: fake_rate = tight_yields_DATA / loose_yields_DATA + if tight_yields_DATA > 0: + fake_rate_error = fake_rate * math.sqrt(1./tight_yields_DATA + 1./loose_yields_DATA) + fake_rate_EWKsub = 0 + fake_rate_EWKsub_error = 0 if loose_yields_DATA_EWKsub > 0: fake_rate_EWKsub = tight_yields_DATA_EWKsub / loose_yields_DATA_EWKsub + if tight_yields_DATA_EWKsub > 0: + fake_rate_EWKsub_error = fake_rate_EWKsub * math.sqrt(1/tight_yields_DATA_EWKsub + 1/loose_yields_DATA_EWKsub) # Output histogram filling fake_rate_histo_numerator.SetBinContent(pt_bin,eta_bin+1,tight_yields_DATA) @@ -238,8 +248,11 @@ fake_rate_histo_EWKcorr_numerator.SetBinContent(pt_bin,eta_bin+1,tight_yields_DATA_EWKsub) fake_rate_histo_EWKcorr_denominator.SetBinContent(pt_bin,eta_bin+1,loose_yields_DATA_EWKsub) - fake_rate_histo .SetBinContent(pt_bin,eta_bin+1,fake_rate) + fake_rate_histo.SetBinContent(pt_bin,eta_bin+1,fake_rate) + fake_rate_histo.SetBinError(pt_bin,eta_bin+1,fake_rate_error) + fake_rate_histo_EWKcorr.SetBinContent(pt_bin,eta_bin+1,fake_rate_EWKsub) + fake_rate_histo_EWKcorr.SetBinError(pt_bin,eta_bin+1,fake_rate_EWKsub_error) # Printout - for debugging print(f"Number of tight events: {tight_yields_DATA} - Number of loose events: {loose_yields_DATA}") @@ -256,9 +269,23 @@ fake_rate_histo.Write() fake_rate_histo_EWKcorr.Write() + # Plot 2D histograms containing the fake rates + output_plot_name = f'{outputFolder}/{outputFileName.replace(".root",".png")}' + + c_fake_rate = ROOT.TCanvas('c_fake_rate', 'c_fake_rate', 800, 600) + c_fake_rate.cd() + fake_rate_histo.Draw('colz,text') + c_fake_rate.SaveAs(output_plot_name) + c_fake_rate.Close() + + c_fake_rate_ewk = ROOT.TCanvas('c_fake_rate_ewk', 'c_fake_rate_ewk', 800, 600) + c_fake_rate_ewk.cd() + fake_rate_histo_EWKcorr.Draw('colz,text') + c_fake_rate_ewk.SaveAs(output_plot_name) + c_fake_rate_ewk.Close() + outfile.Close() - if do_prompt_rate == 'True': # Create output file @@ -287,16 +314,25 @@ # Ensure we are not dividing by 0 prompt_rate = 0 + prompt_rate_error = 0 if loose_yields_Zpeak_DATA > 0: prompt_rate = tight_yields_Zpeak_DATA / loose_yields_Zpeak_DATA + if tight_yields_Zpeak_DATA > 0: + prompt_rate_error = prompt_rate * math.sqrt(1/tight_yields_Zpeak_DATA + 1/loose_yields_Zpeak_DATA) prompt_rate_MC = 0 + prompt_rate_MC_error = 0 if loose_yields_Zpeak_DY > 0: prompt_rate_MC = tight_yields_Zpeak_DY / loose_yields_Zpeak_DY + if tight_yields_Zpeak_DY > 0: + prompt_rate_MC_error = prompt_rate_MC * math.sqrt(1/tight_yields_Zpeak_DY + 1/loose_yields_Zpeak_DY) # Output histogram filling prompt_rate_histo .SetBinContent(pt_bin,eta_bin+1,prompt_rate) + prompt_rate_histo .SetBinError(pt_bin,eta_bin+1,prompt_rate_error) prompt_rate_histo_MC.SetBinContent(pt_bin,eta_bin+1,prompt_rate_MC) + prompt_rate_histo_MC.SetBinError(pt_bin,eta_bin+1,prompt_rate_MC_error) + # Printout - for debugging print(f"Number of tight events in data: {tight_yields_Zpeak_DATA} - Number of loose events in data: {loose_yields_Zpeak_DATA}") @@ -308,4 +344,20 @@ prompt_rate_histo.Write() prompt_rate_histo_MC.Write() + # Plot 2D histograms containing the fake rates + output_plot_name_PR = f'{outputFolder}/{outputFileNamePR.replace(".root",".png")}' + output_plot_name_PR = f'{outputFolder}/{outputFileNamePR.replace(".root",".png")}' + + c_prompt_rate = ROOT.TCanvas('c_prompt_rate', 'c_prompt_rate', 800, 600) + c_prompt_rate.cd() + prompt_rate_histo.Draw('colz,text') + c_prompt_rate.SaveAs(output_plot_name_PR) + c_prompt_rate.Close() + + # c_prompt_rate_MC = ROOT.TCanvas('c_prompt_rate_MC', 'c_prompt_rate_MC', 800, 600) + # c_prompt_rate_MC.cd() + # prompt_rate_histo_MC.Draw('colz,text') + # c_prompt_rate_MC.SaveAs(output_plot_name_PR) + # c_prompt_rate_MC.Close() + outfile_PR.Close() diff --git a/utils/macros/LeptonConePt_class.cc b/utils/macros/LeptonConePt_class.cc new file mode 100644 index 00000000..a08b8f45 --- /dev/null +++ b/utils/macros/LeptonConePt_class.cc @@ -0,0 +1,35 @@ +#ifndef LEPTON_CONEPT +#define LEPTON_CONEPT + +#include +#include "ROOT/RVec.hxx" + +using namespace ROOT; +using namespace ROOT::VecOps; + +RVec LeptonConePt(RVecF Lepton_pt, + RVecI Lepton_pdgId, + RVecI Lepton_electronIdx, + RVecI Lepton_muonIdx, + RVecF Electron_jetRelIso, + RVecF Muon_jetRelIso) { + + RVec conept; + + for (size_t i = 0; i < Lepton_pt.size(); ++i) { + float iso = 0.0; + int pdgId = abs(Lepton_pdgId[i]); + + if (pdgId == 11) { + int idx = Lepton_electronIdx[i]; + iso = Electron_jetRelIso[idx]; + } else if (pdgId == 13) { + int idx = Lepton_muonIdx[i]; + iso = Muon_jetRelIso[idx]; + } + conept.push_back(0.9 * Lepton_pt[i] * (1 + iso)); + } + return conept; +} + +#endif From 6131e87ff3d1d81ab2b11b0c57510783ca85f7d8 Mon Sep 17 00:00:00 2001 From: ntrevisa Date: Thu, 14 Aug 2025 08:40:37 +0200 Subject: [PATCH 07/44] same-sign CR 2018 --- ControlRegions/SS/Full2018_v9/aliases.py | 69 ++++++--- ControlRegions/SS/Full2018_v9/cuts.py | 164 +++++--------------- ControlRegions/SS/Full2018_v9/nuisances.py | 116 +++++++++++--- ControlRegions/SS/Full2018_v9/samples.py | 2 +- ControlRegions/SS/Full2018_v9/variables.py | 171 ++++++++++++++------- 5 files changed, 299 insertions(+), 223 deletions(-) diff --git a/ControlRegions/SS/Full2018_v9/aliases.py b/ControlRegions/SS/Full2018_v9/aliases.py index 4d60dd43..6d18d94e 100644 --- a/ControlRegions/SS/Full2018_v9/aliases.py +++ b/ControlRegions/SS/Full2018_v9/aliases.py @@ -114,11 +114,18 @@ # 'samples': ['Fake'] # } +# Conept +aliases['Lepton_conept'] = { + 'expr': 'LeptonConePt(Lepton_pt, Lepton_pdgId, Lepton_electronIdx, Lepton_muonIdx, Electron_jetRelIso, Muon_jetRelIso)', + 'linesToAdd': [f'#include "{configurations}/utils/macros/LeptonConePt_class.cc"'], + 'samples': mc + ['Fake', 'DATA', 'DATA_unprescaled'] +} + # Fake leptons transfer factor aliases['fakeW'] = { 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"nominal\", 2, \"std\", \"{configurations}/ControlRegions/SS/\");')"], - 'expr' : 'fr_reader(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'expr' : 'fr_reader(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'] } @@ -126,53 +133,53 @@ aliases['fakeWEleUp'] = { 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleUp = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"EleUp\", 2, \"std\", \"{configurations}/ControlRegions/SS/\");')"], - 'expr' : 'fr_reader_EleUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples' : ['Fake'] + 'expr' : 'fr_reader_EleUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] } aliases['fakeWEleDown'] = { 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleDown = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"EleDown\", 2, \"std\", \"{configurations}/ControlRegions/SS/\");')"], - 'expr' : 'fr_reader_EleDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples' : ['Fake'] + 'expr' : 'fr_reader_EleDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] } aliases['fakeWMuUp'] = { 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuUp = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"MuUp\", 2, \"std\", \"{configurations}/ControlRegions/SS/\");')"], - 'expr' : 'fr_reader_MuUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples' : ['Fake'] + 'expr' : 'fr_reader_MuUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] } aliases['fakeWMuDown'] = { 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuDown = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"MuDown\", 2, \"std\", \"{configurations}/ControlRegions/SS/\");')"], - 'expr' : 'fr_reader_MuDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples' : ['Fake'] + 'expr' : 'fr_reader_MuDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] } aliases['fakeWStatEleUp'] = { 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleUp = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"StatEleUp\", 2, \"std\", \"{configurations}/ControlRegions/SS/\");')"], - 'expr' : 'fr_reader_StatEleUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples' : ['Fake'] + 'expr' : 'fr_reader_StatEleUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] } aliases['fakeWStatEleDown'] = { 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleDown = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"StatEleDown\", 2, \"std\", \"{configurations}/ControlRegions/SS/\");')"], - 'expr' : 'fr_reader_StatEleDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples' : ['Fake'] + 'expr' : 'fr_reader_StatEleDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] } aliases['fakeWStatMuUp'] = { 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuUp = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"StatMuUp\", 2, \"std\", \"{configurations}/ControlRegions/SS/\");')"], - 'expr' : 'fr_reader_StatMuUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples' : ['Fake'] + 'expr' : 'fr_reader_StatMuUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] } aliases['fakeWStatMuDown'] = { 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuDown = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"StatMuDown\", 2, \"std\", \"{configurations}/ControlRegions/SS/\");')"], - 'expr' : 'fr_reader_StatMuDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples' : ['Fake'] + 'expr' : 'fr_reader_StatMuDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] } # # Charge-flip efficiencies and uncertainties @@ -382,10 +389,24 @@ ) ', } -# # Evaluate BDT discriminant -# aliases['BDT_WHSS_TopSemileptonic_v9'] = { -# 'linesToAdd' : ['#include "%s/macros/BDT_WHSS_TopSemileptonic_v9_class.cc"' % configurations], -# 'linesToProcess' : ["ROOT.gInterpreter.Declare('BDT_WHSS_TopSemileptonic_v9 BDT_WHSS = BDT_WHSS_TopSemileptonic_v9(\"BDTG_6\",\"{0}/data/BDT/2018/WHSS/weights/TMVAClassification_BDTG_6.weights.xml\");')".format(configurations)], -# 'expr' : 'BDT_WHSS(mll,mjj,mtw1,mtw2,ptll,mlljj20_whss,PuppiMET_pt,dphill,dphijj,dphillmet,dphilmet2,dphijet1met,CleanJet_pt,Jet_btagDeepB,CleanJet_jetIdx)', -# 'samples' : mc + ['DATA','Fake'], -# } +# Evaluate BDT discriminant +aliases['BDT_WHSS_TopSemileptonic_v9'] = { + 'linesToAdd' : ['#include "%s/ControlRegions/SS/macros/BDT_WHSS_TopSemileptonic_v9_class.cc"' % configurations], + 'linesToProcess' : ["ROOT.gInterpreter.Declare('BDT_WHSS_TopSemileptonic_v9 BDT_WHSS = BDT_WHSS_TopSemileptonic_v9(\"BDTG_6\",\"{0}/ControlRegions/SS/data/BDT/2018/WHSS/weights/TMVAClassification_BDTG_6.weights.xml\");')".format(configurations)], + 'expr' : 'BDT_WHSS(mll,mjj,mtw1,mtw2,ptll,mlljj20_whss,PuppiMET_pt,dphill,dphijj,dphillmet,dphilmet2,dphijet1met,CleanJet_pt,Jet_btagDeepB,CleanJet_jetIdx)', + 'samples' : mc + ['DATA','Fake'], +} + +aliases['BDT_WH3l_OSSF_new_v9'] = { + 'linesToAdd' : ['#include "%s/ControlRegions/SS/macros/BDT_WH3l_OSSF_v9_class.cc"' % configurations], + 'linesToProcess' : ["ROOT.gInterpreter.Declare('BDT_WH3l_OSSF_v9 BDT_WH3l_OSSF = BDT_WH3l_OSSF_v9(\"BDTG4C3\",\"{0}/ControlRegions/SS/data/BDT/2018/WH3l/OSSF/weights/TMVAClassification_BDTG4C3.weights.xml\");')".format(configurations)], + 'expr' : 'BDT_WH3l_OSSF(WH3l_dphilllmet,WH3l_mOSll,WH3l_ptOSll,WH3l_drOSll,WH3l_ZVeto,WH3l_mtlmet,WH3l_dphilmet,WH3l_ptWWW,PuppiMET_pt,Lepton_pt)', + 'samples' : mc + ['DATA','Fake'], +} + +aliases['BDT_WH3l_SSSF_new_v9'] = { + 'linesToAdd' : ['#include "%s/ControlRegions/SS/macros/BDT_WH3l_SSSF_v9_class.cc"' % configurations], + 'linesToProcess' : ["ROOT.gInterpreter.Declare('BDT_WH3l_SSSF_v9 BDT_WH3l_SSSF = BDT_WH3l_SSSF_v9(\"BDTG4C3\",\"{0}/ControlRegions/SS/data/BDT/2018/WH3l/SSSF/weights/TMVAClassification_BDTG4SK01_05shrinkage.weights.xml\");')".format(configurations)], + 'expr' : 'BDT_WH3l_SSSF(WH3l_dphilllmet,WH3l_mOSll,WH3l_ptOSll,WH3l_drOSll,WH3l_dphilmet,WH3l_ptWWW,PuppiMET_pt,Lepton_pt)', + 'samples' : mc + ['DATA','Fake'], +} diff --git a/ControlRegions/SS/Full2018_v9/cuts.py b/ControlRegions/SS/Full2018_v9/cuts.py index b8181969..47084c96 100644 --- a/ControlRegions/SS/Full2018_v9/cuts.py +++ b/ControlRegions/SS/Full2018_v9/cuts.py @@ -6,14 +6,10 @@ && Lepton_pt[1]>10 \ && (abs(Lepton_pdgId[1])==13 || Lepton_pt[1]>13) \ && abs(Lepton_eta[0])<2.5 && abs(Lepton_eta[1])<2.5 \ + && bVeto \ && !hole_veto \ ' -# How do we make these plots orthogonal to signal region? -# - PuppiMET_pt < 30 ? -# - detall > 2.0 ? -# - mlljj < 50 ? - ########################################################################### # B-veto: pre-selection compared to the WH charge-asymmetry signal region # @@ -21,34 +17,34 @@ # mu-mu cuts['hww2l2v_13TeV_WH_SS_mm_2j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 13*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && bVeto', + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 13*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30', 'categories' : { 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]>=20', 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]>=20', - 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20', - 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20', + # 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20', + # 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20', } } # mu-e cuts['hww2l2v_13TeV_WH_SS_em_2j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && bVeto', + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30', 'categories' : { 'SS_CR_plus_pt2ge20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]>=20', 'SS_CR_minus_pt2ge20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]>=20', - 'SS_CR_plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20', - 'SS_CR_minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20', + # 'SS_CR_plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20', + # 'SS_CR_minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20', } } # e-e cuts['hww2l2v_13TeV_WH_SS_ee_2j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*11) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && abs(mll-91.2)>15 && bVeto', + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*11) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && abs(mll-91.2)>15', 'categories' : { 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20', 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20', - 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20', - 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20', + # 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20', + # 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20', } } @@ -57,34 +53,34 @@ # mu-mu cuts['hww2l2v_13TeV_WH_SS_mm_1j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 13*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)<30 && bVeto', + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 13*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)<30', 'categories' : { 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]>=20', 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]>=20', - 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20', - 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20', + # 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20', + # 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20', } } # mu-e cuts['hww2l2v_13TeV_WH_SS_em_1j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)<30 && bVeto', + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)<30', 'categories' : { 'SS_CR_plus_pt2ge20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]>=20', 'SS_CR_minus_pt2ge20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]>=20', - 'SS_CR_plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20', - 'SS_CR_minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20', + # 'SS_CR_plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20', + # 'SS_CR_minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20', } } # e-e cuts['hww2l2v_13TeV_WH_SS_ee_1j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*11) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)<30 && abs(mll-91.2)>15 && bVeto', + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*11) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)<30 && abs(mll-91.2)>15', 'categories' : { 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20', 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20', - 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20', - 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20', + # 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20', + # 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20', } } @@ -93,132 +89,48 @@ # mu-mu cuts['hww2l2v_13TeV_WH_SS_mm_0j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 13*13) && nLepton==2 && Alt(CleanJet_pt,0,0)<30 && bVeto', + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 13*13) && nLepton==2 && Alt(CleanJet_pt,0,0)<30', 'categories' : { 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]>=20', 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]>=20', - 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20', - 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20', + # 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20', + # 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20', } } # mu-e cuts['hww2l2v_13TeV_WH_SS_em_0j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*13) && nLepton==2 && Alt(CleanJet_pt,0,0)<30 && bVeto', + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*13) && nLepton==2 && Alt(CleanJet_pt,0,0)<30', 'categories' : { 'SS_CR_plus_pt2ge20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]>=20', 'SS_CR_minus_pt2ge20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]>=20', - 'SS_CR_plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20', - 'SS_CR_minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20', + # 'SS_CR_plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20', + # 'SS_CR_minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20', } } # e-e cuts['hww2l2v_13TeV_WH_SS_ee_0j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*11) && nLepton==2 && Alt(CleanJet_pt,0,0)<30 && abs(mll-91.2)>15 && bVeto', + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*11) && nLepton==2 && Alt(CleanJet_pt,0,0)<30 && abs(mll-91.2)>15', 'categories' : { 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20', 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20', - 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20', - 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20', + # 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20', + # 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20', } } -# ## Same-sign control region in the 0 jet bin: used in the WH3l category. Considering different flavor to avoid DY -# cuts['wh3l_13TeV_SS_CR'] = { -# 'expr' : 'Alt(Lepton_pt,2,0) < 15 && abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 11*13 && Alt(CleanJet_pt,0,0) < 30 && bVeto', -# 'categories' : { -# 'plus_pt2ge20' : 'Lepton_pdgId[0] < 0 && Lepton_pdgId[1] < 0', -# 'minus_pt2ge20' : 'Lepton_pdgId[0] > 0 && Lepton_pdgId[1] > 0', -# } -# } - -# ################################################ -# # B-tag: Really orthogonal to WH signal region # -# ################################################ - -# # - PuppiMET_pt < 30 ? -# # - detall > 2.0 ? -# # - mlljj < 50 ? - -# # mu-mu -# cuts['hww2l2v_13TeV_WH_SS_btag_mm_2j'] = { -# 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 13*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && bReq && detall<=2.0 && mlljj20_whss>50 && PuppiMET_pt>30 && mjj < 100', -# 'categories' : { -# 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]>=20', -# 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]>=20', -# 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20', -# 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20', -# } -# } - -# # mu-e -# cuts['hww2l2v_13TeV_WH_SS_btag_em_2j'] = { -# 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && bReq && detall<=2.0 && mlljj20_whss>50 && PuppiMET_pt>30 && mjj < 100', -# 'categories' : { -# 'SS_CR_plus_pt2ge20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]>=20', -# 'SS_CR_minus_pt2ge20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]>=20', -# 'SS_CR_plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20', -# 'SS_CR_minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20', -# } -# } - -# # e-e -# cuts['hww2l2v_13TeV_WH_SS_btag_ee_2j'] = { -# 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*11) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && abs(mll-91.2)>15 && bReq && detall<=2.0 && mlljj20_whss>50 && PuppiMET_pt>30 && mjj < 100', -# 'categories' : { -# 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20', -# 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20', -# 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20', -# 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20', -# } -# } - - -# ## SR 1jet - -# # mu-mu -# cuts['hww2l2v_13TeV_WH_SS_btag_mm_1j'] = { -# 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 13*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)<30 && bReq && detall<=2.0 && mlljj20_whss>50 && PuppiMET_pt>30', -# 'categories' : { -# 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]>=20', -# 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]>=20', -# 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20', -# 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20', -# } -# } - -# # mu-e -# cuts['hww2l2v_13TeV_WH_SS_btag_em_1j'] = { -# 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)<30 && bReq && detall<=2.0 && mlljj20_whss>50 && PuppiMET_pt>30', -# 'categories' : { -# 'SS_CR_plus_pt2ge20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]>=20', -# 'SS_CR_minus_pt2ge20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]>=20', -# 'SS_CR_plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20', -# 'SS_CR_minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20', -# } -# } - -# # e-e -# cuts['hww2l2v_13TeV_WH_SS_btag_ee_1j'] = { -# 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*11) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)<30 && abs(mll-91.2)>15 && bReq && detall<=2.0 && mlljj20_whss>50 && PuppiMET_pt>30', -# 'categories' : { -# 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20', -# 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20', -# 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20', -# 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20', -# } -# } - -# ## Same-sign control region in the 0 jet bin: used in the WH3l category. Considering different flavor to avoid DY -# cuts['wh3l_13TeV_SS_btag_CR'] = { -# 'expr' : 'Alt(Lepton_pt,2,0) < 15 && abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 11*13 && Alt(CleanJet_pt,0,0) < 30 && bReq', -# 'categories' : { -# 'plus_pt2ge20' : 'Lepton_pdgId[0] < 0 && Lepton_pdgId[1] < 0', -# 'minus_pt2ge20' : 'Lepton_pdgId[0] > 0 && Lepton_pdgId[1] > 0', -# } -# } +## SR 3 leptons: only 0 jet bin +cuts['hww2l2v_13TeV_WH_3l'] = { + 'expr' : 'nLepton>=3 && Alt(Lepton_pt,3,0)<10 && Alt(CleanJet_pt,0,0)<30 && (WH3l_mOSll[0]<0 || WH3l_mOSll[0]>12) && (WH3l_mOSll[1]<0 || WH3l_mOSll[1]>12) && (WH3l_mOSll[2]<0 || WH3l_mOSll[2]>12)', + 'categories' : { + 'sssf_plus_pt2ge20' : 'WH3l_flagOSSF == 0 && abs(WH3l_chlll) == 1 && Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]>0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15', + 'sssf_minus_pt2ge20' : 'WH3l_flagOSSF == 0 && abs(WH3l_chlll) == 1 && Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]<0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15', + 'ossf_plus_pt2ge20' : 'WH3l_flagOSSF == 1 && abs(WH3l_chlll) == 1 && Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]>0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15 && WH3l_ZVeto > 20 && PuppiMET_pt > 40', + 'ossf_minus_pt2ge20' : 'WH3l_flagOSSF == 1 && abs(WH3l_chlll) == 1 && Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]<0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15 && WH3l_ZVeto > 20 && PuppiMET_pt > 40', + } +} # mlljj20_whss: # inv_mass of: (jet1, jet2, 2*closest_lep_to_jets) diff --git a/ControlRegions/SS/Full2018_v9/nuisances.py b/ControlRegions/SS/Full2018_v9/nuisances.py index 38c34642..99a790d4 100644 --- a/ControlRegions/SS/Full2018_v9/nuisances.py +++ b/ControlRegions/SS/Full2018_v9/nuisances.py @@ -59,7 +59,9 @@ def makeMCDirectory(var=''): } -# Fakes +### Fakes + +# Per lepton nuisances['fake_ele'] = { 'name' : 'CMS_WH_hww_fake_e_2018', 'kind' : 'weight', @@ -70,15 +72,16 @@ def makeMCDirectory(var=''): } } -# nuisances['fake_ele_stat'] = { -# 'name' : 'CMS_WH_hww_fake_stat_e_2018', -# 'kind' : 'weight', -# 'type' : 'shape', -# 'samples' : { -# 'Fake_ee' : ['fakeWStatEleUp', 'fakeWStatEleDown'], -# 'Fake_em' : ['fakeWStatEleUp', 'fakeWStatEleDown'], -# } -# } +nuisances['fake_ele_stat'] = { + 'name' : 'CMS_WH_hww_fake_stat_e_2018', + 'kind' : 'weight', + 'type' : 'shape', + 'samples' : { + 'Fake_ee' : ['fakeWStatEleUp', 'fakeWStatEleDown'], + 'Fake_em' : ['fakeWStatEleUp', 'fakeWStatEleDown'], + } +} + nuisances['fake_mu'] = { 'name' : 'CMS_WH_hww_fake_m_2018', @@ -90,15 +93,90 @@ def makeMCDirectory(var=''): } } -# nuisances['fake_mu_stat'] = { -# 'name' : 'CMS_WH_hww_fake_stat_m_2018', -# 'kind' : 'weight', -# 'type' : 'shape', -# 'samples' : { -# 'Fake_mm' : ['fakeWStatMuUp', 'fakeWStatMuDown'], -# 'Fake_em' : ['fakeWStatMuUp', 'fakeWStatMuDown'], -# } -# } +nuisances['fake_mu_stat'] = { + 'name' : 'CMS_WH_hww_fake_stat_m_2018', + 'kind' : 'weight', + 'type' : 'shape', + 'samples' : { + 'Fake_mm' : ['fakeWStatMuUp', 'fakeWStatMuDown'], + 'Fake_em' : ['fakeWStatMuUp', 'fakeWStatMuDown'], + } +} + + +# Normalization per final state +jet_bins = ['0j','1j','2j'] +channels = ['ee', 'em', 'mm'] +charges = ['plus', 'minus'] + +eta_regimes = ['barrel', 'endcap'] +pt_regimes = ['high', 'medium'] + +fake_syst_dict = { + 'endcap_medium_pt': ['1.0*(abs(Lepton_eta[1])<=1.479) + 1.0*(Lepton_pt[1]> 35) + 1.1*(abs(Lepton_eta[1])> 1.479 && Lepton_pt[1]<=35)', + '1.0*(abs(Lepton_eta[1])<=1.479) + 1.0*(Lepton_pt[1]> 35) + 1.0/1.1*(abs(Lepton_eta[1])> 1.479 && Lepton_pt[1]<=35)'], + 'barrel_medium_pt': ['1.0*(abs(Lepton_eta[1])> 1.479) + 1.0*(Lepton_pt[1]> 35) + 1.1*(abs(Lepton_eta[1])<=1.479 && Lepton_pt[1]<=35)', + '1.0*(abs(Lepton_eta[1])> 1.479) + 1.0*(Lepton_pt[1]> 35) + 1.0/1.1*(abs(Lepton_eta[1])<=1.479 && Lepton_pt[1]<=35)'], + 'endcap_high_pt' : ['1.0*(abs(Lepton_eta[1])<=1.479) + 1.0*(Lepton_pt[1]<=35) + 1.1*(abs(Lepton_eta[1])> 1.479 && Lepton_pt[1]> 35)', + '1.0*(abs(Lepton_eta[1])<=1.479) + 1.0*(Lepton_pt[1]<=35) + 1.0/1.1*(abs(Lepton_eta[1])> 1.479 && Lepton_pt[1]> 35)'], + 'barrel_high_pt' : ['1.0*(abs(Lepton_eta[1])> 1.479) + 1.0*(Lepton_pt[1]<=35) + 1.1*(abs(Lepton_eta[1])<=1.479 && Lepton_pt[1]> 35)', + '1.0*(abs(Lepton_eta[1])> 1.479) + 1.0*(Lepton_pt[1]<=35) + 1.0/1.1*(abs(Lepton_eta[1])<=1.479 && Lepton_pt[1]> 35)'], +} + +for jet_bin in jet_bins: + for channel in channels: + for charge in charges: + + nuisances[f'CMS_WH_hww_fake_syst_{jet_bin}_{channel}_{charge}'] = { + 'name' : f'CMS_WH_hww_fake_syst_{jet_bin}_{channel}_{charge}_2018', + 'samples' : { + f'Fake_{channel}' : '1.30', + }, + 'type' : 'lnN', + 'cuts' : [ + f'hww2l2v_13TeV_WH_SS_{channel}_{jet_bin}_SS_CR_{charge}_pt2ge20', + ], + } + + # for eta_regime in eta_regimes: + # for pt_regime in pt_regimes: + # nuisances[f'CMS_WH_hww_fake_syst_{eta_regime}_{pt_regime}_{channel}'] = { + # 'name' : f'CMS_WH_hww_fake_syst_{eta_regime}_{pt_regime}_{channel}_2018', + # 'samples' : { + # f'Fake_{channel}' : f'{eta_regime}_{pt_regime}_pt', + # }, + # 'type' : 'shape', + # 'cuts' : [cut for cut in cuts if (f'_{channel}_' in cut)], + # } + + +flavors = ['sssf', 'ossf'] + +for flavor in flavors: + for charge in charges: + + nuisances[f'CMS_WH_hww_fake_syst_{flavor}_{charge}'] = { + 'name' : f'CMS_WH_hww_fake_syst_{flavor}_{charge}_2018', + 'samples' : { + 'Fake' : '1.30', + }, + 'type' : 'lnN', + 'cuts' : [ + f'hww2l2v_13TeV_WH_3l_{flavor}_{charge}_pt2ge20', + ], + } + + # for eta_regime in eta_regimes: + # for pt_regime in pt_regimes: + # nuisances[f'CMS_WH_hww_fake_syst_{eta_regime}_{pt_regime}_{flavor}'] = { + # 'name' : f'CMS_WH_hww_fake_syst_{eta_regime}_{pt_regime}_{flavor}_2018', + # 'samples' : { + # f'Fake' : f'{eta_regime}_{pt_regime}_pt', + # }, + # 'type' : 'shape', + # 'cuts' : [cut for cut in cuts if (f'_{flavor}_' in cut)], + # } + # ###### B-tagger diff --git a/ControlRegions/SS/Full2018_v9/samples.py b/ControlRegions/SS/Full2018_v9/samples.py index 5d139dcb..5384168c 100644 --- a/ControlRegions/SS/Full2018_v9/samples.py +++ b/ControlRegions/SS/Full2018_v9/samples.py @@ -122,7 +122,7 @@ def addSampleWeight(samples, sampleName, sampleNameType, weight): samples['DY'] = { 'name': files, - 'weight': mcCommonWeight + '*(Lepton_pdgId[0]*Lepton_pdgId[1] == -11*13 || Lepton_pdgId[0]*Lepton_pdgId[1] == -13*13)*( !(Sum(PhotonGen_isPrompt==1 && PhotonGen_pt>15 && abs(PhotonGen_eta)<2.6) > 0))', + 'weight': mcCommonWeight + '*(nLepton<3)*(abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 11*13 || abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 13*13)*( !(Sum(PhotonGen_isPrompt==1 && PhotonGen_pt>15 && abs(PhotonGen_eta)<2.6) > 0))', 'FilesPerJob': 8, } diff --git a/ControlRegions/SS/Full2018_v9/variables.py b/ControlRegions/SS/Full2018_v9/variables.py index 6f668fac..d84d13d5 100644 --- a/ControlRegions/SS/Full2018_v9/variables.py +++ b/ControlRegions/SS/Full2018_v9/variables.py @@ -15,25 +15,25 @@ # Control variables ################### -variables['puppimet'] = { - 'name' : 'PuppiMET_pt', - 'range' : (20,0,200), - 'xaxis' : 'PUPPI met [GeV]', - 'fold' : 3 +variables['BDTG6_TT'] = { + 'name' : 'BDT_WHSS_TopSemileptonic_v9', + 'range' : (40,-1,1), + 'xaxis' : 'BDT discriminant', + 'fold' : 3, } -variables['mll'] = { - 'name' : 'mll', - 'range' : (20, 40,120), - 'xaxis' : 'm_{ll} [GeV]', - 'fold' : 0 +variables['BDT_WH3l_OSSF_new_v9'] = { + 'name' : 'BDT_WH3l_OSSF_new_v9', + 'range' : (40,-1.,1.), + 'xaxis' : 'MVA discriminant', + 'fold' : 3, } -variables['ptll'] = { - 'name' : 'ptll', - 'range' : (20, 0,200), - 'xaxis' : 'p_{T}^{ll} [GeV]', - 'fold' : 0 +variables['BDT_WH3l_SSSF_new_v9'] = { + 'name' : 'BDT_WH3l_SSSF_new_v9', + 'range' : (40,-1.,1.), + 'xaxis' : 'MVA discriminant', + 'fold' : 3, } variables['pt1'] = { @@ -45,57 +45,78 @@ variables['pt2'] = { 'name' : 'Lepton_pt[1]', - 'range' : (20,0,100), + 'range' : (30,0,100), 'xaxis' : 'p_{T} 2nd lep', 'fold' : 3 } -variables['mlljj20_whss_bin2'] = { - 'name' : 'mlljj20_whss', - # 'range' : ([60.,100.,110.,120.,130.,140.,150.,160.,170.,180.,190.,200.,250.,300.],), - 'range' : (20,0,1000), - 'xaxis' : 'mlljj20_whss [GeV]', - 'fold' : 3 +variables['conept1'] = { + 'name' : 'Lepton_conept[0]', + 'range' : (30,0,150), + 'xaxis' : 'p_{T} 1st lep', + 'fold' : 0 +} + +variables['conept2'] = { + 'name' : 'Lepton_conept[1]', + 'range' : (30,0,100), + 'xaxis' : 'p_{T} 2nd lep', + 'fold' : 3 +} + +variables['eta1'] = { + 'name' : 'Lepton_eta[0]', + 'range' : (50,-2.5,2.5), + 'xaxis' : '#eta 1st lep', + 'fold' : 3 +} + +variables['eta2'] = { + 'name' : 'Lepton_eta[1]', + 'range' : (50,-2.5,2.5), + 'xaxis' : '#eta 2nd lep', + 'fold' : 3 } variables['detall'] = { 'name' : 'abs(Lepton_eta[0] - Lepton_eta[1])', - 'range' : (20,0.,10.), - 'xaxis' : 'detall', + 'range' : (20,0.,5.), + 'xaxis' : '#Delta#eta_{jj}', 'fold' : 3 } -variables['mth'] = { - 'name' : 'mth', - 'range' : (40,0,200), - 'xaxis' : 'm_{T}^{H} [GeV]', - 'fold' : 0 -} - variables['dphill'] = { 'name' : 'abs(dphill)', - 'range' : (20,0,3.14), + 'range' : (20, 0,3.2), 'xaxis' : '#Delta#phi_{ll}', 'fold' : 3 } -variables['eta1'] = { - 'name' : 'Lepton_eta[0]', - 'range' : (40,-3,3), - 'xaxis' : '#eta 1st lep', - 'fold' : 3 +variables['drll'] = { + 'name' : 'abs(drll)', + 'range' : (20, 0,5.), + 'xaxis' : '#Delta#R_{ll}', + 'fold' : 3 } -variables['eta2'] = { - 'name' : 'Lepton_eta[1]', - 'range' : (40,-3,3), - 'xaxis' : '#eta 2nd lep', - 'fold' : 3 +variables['mll'] = { + 'name' : 'mll', + 'range' : (25, 0,250), + 'xaxis' : 'm_{ll} [GeV]', + 'fold' : 0 +} + +variables['ptll'] = { + 'name' : 'ptll', + 'range' : (20, 0,200), + 'xaxis' : 'p_{T}^{ll} [GeV]', + 'fold' : 0 } + variables['jetpt1'] = { 'name' : 'CleanJet_pt[0]*(CleanJet_pt[0]>30)', - 'range' : (40,0,200), + 'range' : (40,0,400), 'xaxis' : 'p_{T} 1st jet', 'fold' : 2 } @@ -107,6 +128,34 @@ 'fold' : 0 } +variables['jeteta1'] = { + 'name' : 'CleanJet_eta[0]*(CleanJet_pt[0]>30)', + 'range' : (50,-5,5), + 'xaxis' : '#eta 1st jet', + 'fold' : 2 +} + +variables['jeteta2'] = { + 'name' : 'CleanJet_eta[1]*(CleanJet_pt[1]>30)', + 'range' : (50,-5,5), + 'xaxis' : '#eta 2nd jet', + 'fold' : 0 +} + +variables['detajj'] = { + 'name' : 'abs(CleanJet_eta[0] - CleanJet_eta[1])*(CleanJet_pt[1]>30)', + 'range' : (20,0.,10.), + 'xaxis' : '#Delta#eta_{jj}', + 'fold' : 3 +} + +variables['dphijj'] = { + 'name' : 'dphijj', + 'range' : (20,0,3.2), + 'xaxis' : '#Delta#phi_{jj}', + 'fold' : 3 +} + variables['mjj'] = { 'name' : 'mjj*(CleanJet_pt[1]>30)', 'range' : (20,0,1000), @@ -114,16 +163,39 @@ 'fold' : 3 } + +variables['puppimet'] = { + 'name' : 'PuppiMET_pt', + 'range' : (20,0,200), + 'xaxis' : 'PUPPI met [GeV]', + 'fold' : 3 +} + + +variables['mlljj20'] = { + 'name' : 'mlljj20_whss', + 'range' : (20,0,1000), + 'xaxis' : 'mlljj20 [GeV]', + 'fold' : 3 +} + +variables['mth'] = { + 'name' : 'mth', + 'range' : (50,0,250), + 'xaxis' : 'm_{T}^{H} [GeV]', + 'fold' : 0 +} + variables['mtw1'] = { 'name' : 'mtw1', - 'range' : (40,0,200), + 'range' : (50,0,250), 'xaxis' : 'm_{T}^{W_{1}} [GeV]', 'fold' : 3 } variables['mtw2'] = { 'name' : 'mtw2', - 'range' : (40,0,200), + 'range' : (50,0,200), 'xaxis' : 'm_{T}^{W_{2}} [GeV]', 'fold' : 3 } @@ -200,18 +272,11 @@ variables['ht'] = { 'name' : 'ht', - 'range' : (40,0,200), + 'range' : (30,0,1500), 'xaxis' : 'ht [GeV]', 'fold' : 3 } -variables['dphijj'] = { - 'name' : 'dphijj', - 'range' : (20,0,3.2), - 'xaxis' : 'dphijj', - 'fold' : 3 -} - variables['dphijet1met'] = { 'name' : 'dphijet1met', 'range' : (20,0,3.2), From 77ed614252e3ffc03e9c0ca4ae2fef9bac9e8fdd Mon Sep 17 00:00:00 2001 From: ntrevisa Date: Thu, 14 Aug 2025 08:44:58 +0200 Subject: [PATCH 08/44] same-sign CR 2017 --- ControlRegions/SS/Full2017_v9/README.md | 117 +++ ControlRegions/SS/Full2017_v9/aliases.py | 402 +++++++ .../SS/Full2017_v9/configuration.py | 105 ++ ControlRegions/SS/Full2017_v9/cuts.py | 139 +++ ControlRegions/SS/Full2017_v9/nuisances.py | 979 ++++++++++++++++++ ControlRegions/SS/Full2017_v9/plot.py | 336 ++++++ ControlRegions/SS/Full2017_v9/repeat.sh | 38 + ControlRegions/SS/Full2017_v9/samples.py | 383 +++++++ ControlRegions/SS/Full2017_v9/structure.py | 156 +++ ControlRegions/SS/Full2017_v9/variables.py | 285 +++++ 10 files changed, 2940 insertions(+) create mode 100644 ControlRegions/SS/Full2017_v9/README.md create mode 100644 ControlRegions/SS/Full2017_v9/aliases.py create mode 100644 ControlRegions/SS/Full2017_v9/configuration.py create mode 100644 ControlRegions/SS/Full2017_v9/cuts.py create mode 100644 ControlRegions/SS/Full2017_v9/nuisances.py create mode 100644 ControlRegions/SS/Full2017_v9/plot.py create mode 100644 ControlRegions/SS/Full2017_v9/repeat.sh create mode 100644 ControlRegions/SS/Full2017_v9/samples.py create mode 100644 ControlRegions/SS/Full2017_v9/structure.py create mode 100644 ControlRegions/SS/Full2017_v9/variables.py diff --git a/ControlRegions/SS/Full2017_v9/README.md b/ControlRegions/SS/Full2017_v9/README.md new file mode 100644 index 00000000..67f2cc5c --- /dev/null +++ b/ControlRegions/SS/Full2017_v9/README.md @@ -0,0 +1,117 @@ +# Same-sign control region + +This configuration allows to produce control plots for the two-leptons same-sign and the three-leptons control regions. They are used to check the description of the non-prompt leptons. + +The instructions to run the analysis follow. + +### Load the mkShapesRDF environment + +Here, we assume `PlotsConfigurationsRun3` was installed in the same directory as `mkShapesRDF`. E.g., let's assume we have a `Run3` directory where we installed both `mkShapesRDF` and `PlotsConfigurationsRun3`. + +Then, we can source the `mkShapesRDF` environment using these commands: + + cd ../../../mkShapesRDF/ + + source start.sh + + cd - + +### Produce distributions using mkShapesMulti.py in batch mode + +Compile the configuration. Do it after every change to any file in this directory: + + mkShapesRDF -c 1 + +Produce histograms using batch: + + mkShapesRDF -c 1 -o 0 -f . -b 1 + +Check jobs status: + + mkShapesRDF -o 1 -f . + +Resubmit failed jobs: + + mkShapesRDF -o 1 -f . -r 1 + +Merge rootfiles: + + mkShapesRDF -o 2 -f . + +Plot distributions: + + mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png + +### Perform goodness of fit test + +Create datacards: + + mkDatacards + +Produce workspaces: + + mkdir -p GoF + + cd GoF/ + + VARIABLE=mjj + FINAL_STATE=mm_2j_SS_CR_plus + OUT_NAME=_${FINAL_STATE}_${VARIABLE} + + combineTool.py -M T2W -m 125 \ + -o datacard.root \ + -i ../datacards/hww2l2v_13TeV_WH_SS_${FINAL_STATE}_pt2ge20/${VARIABLE}/datacard.txt \ + --channel-masks \ + -P HiggsAnalysis.CombinedLimit.PhysicsModel:multiSignalModel \ + --PO 'map=.*/WH_h.*_plus:r_WH[1,-10.0,10.0]' \ + --PO 'map=.*/WH_h.*_minus:r_WH[1,-10.0,10.0]' + +Perform fit on real data: + + combineTool.py -M GoodnessOfFit ../datacards/hww2l2v_13TeV_WH_SS_${FINAL_STATE}_pt2ge20/${VARIABLE}/datacard.root \ + --algo=saturated \ + --setParameters r_WH=1 \ + --setParameterRanges r_WH=-5,5 \ + --redefineSignalPOIs r_WH \ + -n ${OUT_NAME} + +Produce toys based on the predictions: + + combineTool.py -M GoodnessOfFit ../datacards/hww2l2v_13TeV_WH_SS_${FINAL_STATE}_pt2ge20/${VARIABLE}/datacard.root \ + --algo=saturated \ + -t 1 \ + -s 0:10:1 \ + --dry-run \ + --job-mode=condor \ + --setParameters r_WH=1 \ + --setParameterRanges r_WH=-5,5 \ + --redefineSignalPOIs r_WH \ + -n ${OUT_NAME} + +Modify the sh file in order to submit 10 jobs running the 100 toys + + sed -i 's/-t 1/-t 10/g' condor_combine_task.sh + +If you run on the KIT machines, remember to adapt the submission file to the HTCondor requirements, by adding these lines to the top of `condor_combine_task.sub`: + + text_to_add=$'universe = container\ncontainer_image = /cvmfs/unpacked.cern.ch/registry.hub.docker.com/cverstege/alma9-gridjob:latest' + + printf "%s\n" "$text_to_add" | cat - condor_combine_task.sub > temp && mv temp condor_combine_task.sub + +Submit the jobs to condor + + condor_submit condor_combine_task.sub + +Once all jobs are done, merge the output and plot the results: + + hadd -f higgsCombine_${OUT_NAME}.GoodnessOfFit.mH120.toys.root higgsCombine${OUT_NAME}.GoodnessOfFit.mH120.*.root + + combineTool.py -M CollectGoodnessOfFit --input higgsCombine${OUT_NAME}.GoodnessOfFit.mH120.root higgsCombine_${OUT_NAME}.GoodnessOfFit.mH120.toys.root -m 125 -o GoF_${OUT_NAME}.json + + plotGof.py GoF_${OUT_NAME}.json --statistic saturated --mass 120.0 -o GoF_${OUT_NAME} --title-right=${OUT_NAME} --range 0 200 + +Clean the mess: + + rm combine* + rm condor* + rm higgsCombine* diff --git a/ControlRegions/SS/Full2017_v9/aliases.py b/ControlRegions/SS/Full2017_v9/aliases.py new file mode 100644 index 00000000..5f7b66bb --- /dev/null +++ b/ControlRegions/SS/Full2017_v9/aliases.py @@ -0,0 +1,402 @@ +import os +import copy +import inspect + +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/ControlRegions/SS/Full2017_v9/ + +configurations = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file +configurations = os.path.dirname(configurations) # Full2017_v9 +configurations = os.path.dirname(configurations) # SS +configurations = os.path.dirname(configurations) # ControlRegions +configurations = os.path.dirname(configurations) # PlotsConfigurationsRun3 + +aliases = {} +aliases = OrderedDict() + +mc = [skey for skey in samples if skey not in ('Fake', 'DATA', 'Fake_from_ntuple')] + + +# LepCut2l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW_tthmva_80 +eleWP = 'mvaFall17V2Iso_WP90' +muWP = 'cut_Tight_HWWW' + +aliases['LepWPCut'] = { + 'expr': 'LepCut2l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW*\ + ( ((abs(Lepton_pdgId[0])==13 && Muon_mvaTTH[Lepton_muonIdx[0]]>0.82) || (abs(Lepton_pdgId[0])==11 && Lepton_mvaTTH_UL[0]>0.90)) \ + && ((abs(Lepton_pdgId[1])==13 && Muon_mvaTTH[Lepton_muonIdx[1]]>0.82) || (abs(Lepton_pdgId[1])==11 && Lepton_mvaTTH_UL[1]>0.90)) )', + 'samples': mc + ['DATA'] +} + + +# Lepton SF (not considering the ttHMVA discriminant) +aliases['LepWPSF'] = { + 'expr': 'LepSF2l__ele_'+eleWP+'__mu_'+muWP, + 'samples': mc +} + + +# ttHMVA SFs and uncertainties +aliases['LepWPttHMVASF'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/ttHMVASF_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('ttHMVASF ttH = ttHMVASF(\"2017\", 2, \"all\", \"nominal\",\"{configurations}/WH_chargeAsymmetry/UL/data/\");')"], + 'expr' : 'ttH(Lepton_pt, Lepton_eta, Lepton_pdgId)', + 'samples' : mc +} + +aliases['LepWPttHMVASFEleUp'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/ttHMVASF_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('ttHMVASF ttH_EleUp = ttHMVASF(\"2017\", 2, \"all\", \"eleUp\" ,\"{configurations}/WH_chargeAsymmetry/UL/data/\");')"], + 'expr' : 'ttH_EleUp(Lepton_pt, Lepton_eta, Lepton_pdgId)', + 'samples' : mc +} +aliases['LepWPttHMVASFEleDown'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/ttHMVASF_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('ttHMVASF ttH_EleDown = ttHMVASF(\"2017\", 2, \"all\", \"eleDown\" ,\"{configurations}/WH_chargeAsymmetry/UL/data/\");')"], + 'expr' : 'ttH_EleDown(Lepton_pt, Lepton_eta, Lepton_pdgId)', + 'samples' : mc +} + +aliases['LepWPttHMVASFMuUp'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/ttHMVASF_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('ttHMVASF ttH_MuUp = ttHMVASF(\"2017\", 2, \"all\", \"muUp\" ,\"{configurations}/WH_chargeAsymmetry/UL/data/\");')"], + 'expr' : 'ttH_MuUp(Lepton_pt, Lepton_eta, Lepton_pdgId)', + 'samples' : mc +} +aliases['LepWPttHMVASFMuDown'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/ttHMVASF_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('ttHMVASF ttH_MuDown = ttHMVASF(\"2017\", 2, \"all\", \"muDown\" ,\"{configurations}/WH_chargeAsymmetry/UL/data/\");')"], + 'expr' : 'ttH_MuDown(Lepton_pt, Lepton_eta, Lepton_pdgId)', + 'samples' : mc +} + + +# # LepCut2l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW_tthmva_80 +# eleWP_fake = 'mvaFall17V2Iso_WP90' +# muWP_fake = 'cut_Tight_HWWW_tthmva_80' + +# # Fake leptons transfer factor +# aliases['fakeW'] = { +# 'expr': 'fakeW2l_ele_'+eleWP_fake+'_mu_'+muWP_fake, +# 'samples': ['Fake'] +# } + +# # And variations - already divided by central values in formulas ! +# aliases['fakeWEleUp'] = { +# 'expr': 'fakeW2l_ele_'+eleWP_fake+'_mu_'+muWP_fake+'_EleUp', +# 'samples': ['Fake'] +# } +# aliases['fakeWEleDown'] = { +# 'expr': 'fakeW2l_ele_'+eleWP_fake+'_mu_'+muWP_fake+'_EleDown', +# 'samples': ['Fake'] +# } +# aliases['fakeWMuUp'] = { +# 'expr': 'fakeW2l_ele_'+eleWP_fake+'_mu_'+muWP_fake+'_MuUp', +# 'samples': ['Fake'] +# } +# aliases['fakeWMuDown'] = { +# 'expr': 'fakeW2l_ele_'+eleWP_fake+'_mu_'+muWP_fake+'_MuDown', +# 'samples': ['Fake'] +# } +# aliases['fakeWStatEleUp'] = { +# 'expr': 'fakeW2l_ele_'+eleWP_fake+'_mu_'+muWP_fake+'_statEleUp', +# 'samples': ['Fake'] +# } +# aliases['fakeWStatEleDown'] = { +# 'expr': 'fakeW2l_ele_'+eleWP_fake+'_mu_'+muWP_fake+'_statEleDown', +# 'samples': ['Fake'] +# } +# aliases['fakeWStatMuUp'] = { +# 'expr': 'fakeW2l_ele_'+eleWP_fake+'_mu_'+muWP_fake+'_statMuUp', +# 'samples': ['Fake'] +# } +# aliases['fakeWStatMuDown'] = { +# 'expr': 'fakeW2l_ele_'+eleWP_fake+'_mu_'+muWP_fake+'_statMuDown', +# 'samples': ['Fake'] +# } + +# Conept +aliases['Lepton_conept'] = { + 'expr': 'LeptonConePt(Lepton_pt, Lepton_pdgId, Lepton_electronIdx, Lepton_muonIdx, Electron_jetRelIso, Muon_jetRelIso)', + 'linesToAdd': [f'#include "{configurations}/utils/macros/LeptonConePt_class.cc"'], + 'samples': mc + ['Fake', 'DATA', 'DATA_unprescaled'] +} + +# Fake leptons transfer factor +aliases['fakeW'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"nominal\", 2, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} + +# And variations - already divided by central values in formulas ! +aliases['fakeWEleUp'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleUp = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"EleUp\", 2, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_EleUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} +aliases['fakeWEleDown'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleDown = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"EleDown\", 2, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_EleDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} + +aliases['fakeWMuUp'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuUp = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"MuUp\", 2, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_MuUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} +aliases['fakeWMuDown'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuDown = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"MuDown\", 2, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_MuDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} + +aliases['fakeWStatEleUp'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleUp = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"StatEleUp\", 2, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_StatEleUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} +aliases['fakeWStatEleDown'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleDown = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"StatEleDown\", 2, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_StatEleDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} + +aliases['fakeWStatMuUp'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuUp = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"StatMuUp\", 2, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_StatMuUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} +aliases['fakeWStatMuDown'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuDown = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"StatMuDown\", 2, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_StatMuDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} + +# # Charge-flip efficiencies and uncertainties +# aliases['ttHMVA_eff_flip_2l'] = { +# 'linesToAdd': ['#include "%s/macros/flipper_eff_class.cc"' % configurations], +# 'linesToProcess': ["ROOT.gInterpreter.Declare('flipper_eff flipper = flipper_eff(\"UL_2017\", 2, \"Total_SF\", \"false\");')"], +# 'expr' : 'flipper(Lepton_pt, Lepton_eta, Lepton_pdgId)', +# 'samples': ['DY','ChargeFlip'], +# } + +# aliases['ttHMVA_eff_err_flip_2l'] = { +# 'linesToAdd': ['#include "%s/macros/flipper_eff_class.cc"' % configurations], +# 'linesToProcess': ["ROOT.gInterpreter.Declare('flipper_eff flipper_unc = flipper_eff(\"UL_2017\", 2, \"Total_SF\", \"false\");')"], +# 'expr' : 'flipper_unc(Lepton_pt, Lepton_eta, Lepton_pdgId)', +# 'samples': ['DY','ChargeFlip'], +# } + + +# No jet with pt > 30 GeV +aliases['zeroJet'] = { + 'expr': 'Alt(CleanJet_pt, 0, 0) < 30.' +} + +aliases['oneJet'] = { + 'expr': 'Alt(CleanJet_pt, 0, 0) > 30. && Alt(CleanJet_pt, 1, 0) < 30.' +} + +aliases['multiJet'] = { + 'expr': 'Alt(CleanJet_pt, 1, 0) > 30.' +} + +#################################################################################### +# b tagging WPs: https://twiki.cern.ch/twiki/bin/view/CMS/BtagRecommendation106XUL17 +#################################################################################### + +# DeepB = DeepCSV +bWP_loose_deepB = '0.1355' +bWP_medium_deepB = '0.4506' +bWP_tight_deepB = '0.7738' + +# DeepFlavB = DeepJet +bWP_loose_deepFlavB = '0.0532' +bWP_medium_deepFlavB = '0.3040' +bWP_tight_deepFlavB = '0.7476' + +# Actual algo and WP definition. BE CONSISTENT!! +bAlgo = 'DeepB' # ['DeepB', 'DeepFlavB' ] +bWP = bWP_medium_deepB # [bWP_loose_deepB, bWP_loose_deepFlavB] +bSF = 'deepcsv' # ['deepcsv', 'deepjet' ] + +# b veto +aliases['bVeto'] = { + 'expr': 'Sum(CleanJet_pt > 20. && abs(CleanJet_eta) < 2.5 && Take(Jet_btag{}, CleanJet_jetIdx) > {}) == 0'.format(bAlgo, bWP) +} + +aliases['bVetoSF'] = { + 'expr': 'TMath::Exp(Sum(LogVec((CleanJet_pt>20 && abs(CleanJet_eta)<2.5)*Take(Jet_btagSF_{}_shape, CleanJet_jetIdx)+1*(CleanJet_pt<20 || abs(CleanJet_eta)>2.5))))'.format(bSF), + 'samples': mc +} + + +# At least one b-tagged jet +aliases['bReq'] = { + 'expr': 'Sum(CleanJet_pt > 30. && abs(CleanJet_eta) < 2.5 && Take(Jet_btag{}, CleanJet_jetIdx) > {}) >= 1'.format(bAlgo, bWP) +} + +aliases['bReqSF'] = { + 'expr': 'TMath::Exp(Sum(LogVec((CleanJet_pt>30 && abs(CleanJet_eta)<2.5)*Take(Jet_btagSF_{}_shape, CleanJet_jetIdx)+1*(CleanJet_pt<30 || abs(CleanJet_eta)>2.5))))'.format(bSF), + 'samples': mc +} + +# Top control region +aliases['topcr'] = { + 'expr': 'mtw2>30 && mll>50 && ((zeroJet && !bVeto) || bReq)' +} + +# WW control region +aliases['wwcr'] = { + 'expr': 'mth>60 && mtw2>30 && mll>100 && bVeto' +} + +# Overall b tag SF +aliases['btagSF'] = { + 'expr': '(bVeto || (topcr && zeroJet))*bVetoSF + (topcr && !zeroJet)*bReqSF', + 'samples': mc +} + +for shift in ['jesAbsolute', 'jesAbsolute_2017', 'jesBBEC1', 'jesBBEC1_2017', 'jesEC2', + 'jesEC2_2017', 'jesFlavorQCD', 'jesHF', 'jesHF_2017', 'jesRelativeBal', + 'jesRelativeSample_2017']: + for var in ['up','down']: + aliases[f'Jet_btagSF_{bSF}_shape_{shift.replace("jes","JES")}{var[:2]}'] = { + 'expr' : f'Jet_btagSF_{bSF}_shape_{var}_{shift}', + 'samples' : mc + } + +for shift in ['jesAbsolute', 'jesAbsolute_2017', 'jesBBEC1', 'jesBBEC1_2017', 'jesEC2', + 'jesEC2_2017', 'jesFlavorQCD', 'jesHF', 'jesHF_2017', 'jesRelativeBal', + 'jesRelativeSample_2017', 'lf', 'hf', 'lfstats1', 'lfstats2', + 'hfstats1', 'hfstats2', 'cferr1', 'cferr2']: + + for targ in ['bVeto', 'bReq']: + alias = aliases['%sSF%sup' % (targ, shift)] = copy.deepcopy(aliases['%sSF' % targ]) + alias['expr'] = alias['expr'].replace('btagSF_{}_shape'.format(bSF), 'btagSF_{}_shape_up_{}'.format(bSF, shift)) + + alias = aliases['%sSF%sdown' % (targ, shift)] = copy.deepcopy(aliases['%sSF' % targ]) + alias['expr'] = alias['expr'].replace('btagSF_{}_shape'.format(bSF), 'btagSF_{}_shape_down_{}'.format(bSF, shift)) + + aliases['btagSF%sup' % shift] = { + 'expr': aliases['btagSF']['expr'].replace('SF', 'SF' + shift + 'up'), + 'samples': mc + } + + aliases['btagSF%sdown' % shift] = { + 'expr': aliases['btagSF']['expr'].replace('SF', 'SF' + shift + 'down'), + 'samples': mc + } + +#################################################################################### +# End of b tagging pippone +#################################################################################### + +# Need to redefine PUID scale factors, so that they are double and not vectors +aliases['Jet_PUIDSF'] = { + 'expr' : 'TMath::Exp(Sum((Jet_jetId>=2)*LogVec(Jet_PUIDSF_loose)))', + 'samples': mc +} + +aliases['Jet_PUIDSF_up'] = { + 'expr' : 'TMath::Exp(Sum((Jet_jetId>=2)*LogVec(Jet_PUIDSF_loose_up)))', + 'samples': mc +} + +aliases['Jet_PUIDSF_down'] = { + 'expr' : 'TMath::Exp(Sum((Jet_jetId>=2)*LogVec(Jet_PUIDSF_loose_down)))', + 'samples': mc +} + + +aliases['gstarLow'] = { + 'expr': 'Gen_ZGstar_mass > 0 && Gen_ZGstar_mass < 4', + 'samples': 'VgS' +} + +aliases['gstarHigh'] = { + 'expr': 'Gen_ZGstar_mass < 0 || Gen_ZGstar_mass > 4', + 'samples': 'WZ' +} + +# gen-matching to prompt only (GenLepMatch2l matches to *any* gen lepton) +aliases['PromptGenLepMatch2l'] = { + 'expr': 'Alt(Lepton_promptgenmatched, 0, 0) * Alt(Lepton_promptgenmatched, 1, 0)', + 'samples': mc +} + +# # PostProcessing did not create (anti)topGenPt for ST samples with _ext1 +# lastcopy = (1 << 13) + +aliases['Top_pTrw'] = { + 'expr': '(topGenPt * antitopGenPt > 0.) * (TMath::Sqrt(TMath::Exp(0.0615 - 0.0005 * topGenPt) * TMath::Exp(0.0615 - 0.0005 * antitopGenPt))) + (topGenPt * antitopGenPt <= 0.)', + 'samples': ['top'] +} + +# data/MC scale factors +aliases['SFweight'] = { + 'expr': ' * '.join(['SFweight2l', 'LepWPCut', 'LepWPSF','Jet_PUIDSF', 'btagSF', 'LepWPttHMVASF']), + 'samples': mc, +} + +# variations +aliases['SFweightEleUp'] = { + 'expr': 'LepSF2l__ele_'+eleWP+'__Up', + 'samples': mc +} +aliases['SFweightEleDown'] = { + 'expr': 'LepSF2l__ele_'+eleWP+'__Do', + 'samples': mc +} + +aliases['SFweightMuUp'] = { + 'expr': 'LepSF2l__mu_'+muWP+'__Up', + 'samples': mc +} +aliases['SFweightMuDown'] = { + 'expr': 'LepSF2l__mu_'+muWP+'__Do', + 'samples': mc +} + +# TriggerSFWeight_2l:TriggerSFWeight_2l_u:TriggerSFWeight_2l_d +aliases['SFtriggUp'] = { + 'expr': 'TriggerSFWeight_2l_u/TriggerSFWeight_2l', + 'samples': mc +} +aliases['SFtriggDown'] = { + 'expr': 'TriggerSFWeight_2l_d/TriggerSFWeight_2l', + 'samples': mc +} + + +# Evaluate BDT discriminant +aliases['BDT_WHSS_TopSemileptonic_v9'] = { + 'linesToAdd' : ['#include "%s/ControlRegions/SS/macros/BDT_WHSS_TopSemileptonic_v9_class.cc"' % configurations], + 'linesToProcess' : ["ROOT.gInterpreter.Declare('BDT_WHSS_TopSemileptonic_v9 BDT_WHSS = BDT_WHSS_TopSemileptonic_v9(\"BDTG_6\",\"{0}/ControlRegions/SS/data/BDT/2017/WHSS/weights/TMVAClassification_BDTG_6.weights.xml\");')".format(configurations)], + 'expr' : 'BDT_WHSS(mll,mjj,mtw1,mtw2,ptll,mlljj20_whss,PuppiMET_pt,dphill,dphijj,dphillmet,dphilmet2,dphijet1met,CleanJet_pt,Jet_btagDeepB,CleanJet_jetIdx)', + 'samples' : mc + ['DATA','Fake'], +} + +aliases['BDT_WH3l_OSSF_new_v9'] = { + 'linesToAdd' : ['#include "%s/ControlRegions/SS/macros/BDT_WH3l_OSSF_v9_class.cc"' % configurations], + 'linesToProcess' : ["ROOT.gInterpreter.Declare('BDT_WH3l_OSSF_v9 BDT_WH3l_OSSF = BDT_WH3l_OSSF_v9(\"BDTG4C3\",\"{0}/ControlRegions/SS/data/BDT/2017/WH3l/OSSF/weights/TMVAClassification_BDTG4C3.weights.xml\");')".format(configurations)], + 'expr' : 'BDT_WH3l_OSSF(WH3l_dphilllmet,WH3l_mOSll,WH3l_ptOSll,WH3l_drOSll,WH3l_ZVeto,WH3l_mtlmet,WH3l_dphilmet,WH3l_ptWWW,PuppiMET_pt,Lepton_pt)', + 'samples' : mc + ['DATA','Fake'], +} + +aliases['BDT_WH3l_SSSF_new_v9'] = { + 'linesToAdd' : ['#include "%s/ControlRegions/SS/macros/BDT_WH3l_SSSF_v9_class.cc"' % configurations], + 'linesToProcess' : ["ROOT.gInterpreter.Declare('BDT_WH3l_SSSF_v9 BDT_WH3l_SSSF = BDT_WH3l_SSSF_v9(\"BDTG4C3\",\"{0}/ControlRegions/SS/data/BDT/2017/WH3l/SSSF/weights/TMVAClassification_BDTG4SK01_05shrinkage.weights.xml\");')".format(configurations)], + 'expr' : 'BDT_WH3l_SSSF(WH3l_dphilllmet,WH3l_mOSll,WH3l_ptOSll,WH3l_drOSll,WH3l_dphilmet,WH3l_ptWWW,PuppiMET_pt,Lepton_pt)', + 'samples' : mc + ['DATA','Fake'], +} diff --git a/ControlRegions/SS/Full2017_v9/configuration.py b/ControlRegions/SS/Full2017_v9/configuration.py new file mode 100644 index 00000000..e24f14ab --- /dev/null +++ b/ControlRegions/SS/Full2017_v9/configuration.py @@ -0,0 +1,105 @@ +# Configuration file for two-leptons same-sign and three-leptons using the UL 2017 dataset + +import sys,inspect + +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' + +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/ControlRegions/SS/Full2017_v9/ + +configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file +configurations_nuisance = os.path.dirname(configurations_nuisance) # Full2017_v9 +configurations_nuisance = os.path.dirname(configurations_nuisance) # SS +configurations_nuisance = os.path.dirname(configurations_nuisance) # ControlRegions + +# Tag used to identify the configuration folder version +tag = 'SS_2017_v9' + +# File to use as runner script, default uses mkShapesRDF.shapeAnalysis.runner, otherwise specify path to script +runnerFile = "default" + +# Output file name +outputFile = "mkShapes__{}.root".format(tag) + +# Path to ouput folder +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +if site == 'kit': + outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" + +# Path to batch folder (used for condor submission) +batchFolder = "condor" + +# Path to configuration folder (will contain all the compiled configuration files) +configsFolder = "configs" + +# Luminosity to normalize to (in 1/fb) +# https://github.com/latinos/LatinoAnalysis/blob/UL_production/NanoGardener/python/data/TrigMaker_cfg.py#L514 (519, 589, 660, 729, 798) +# 4.803371586 + 9.574029838 + 4.247792714 + 9.314581016 + 13.53990537 = 41.479680524 +lumi = 41.48 + +# File with dict of aliases to define +aliasesFile = "aliases.py" + +# File with dict of variables +variablesFile = "variables.py" + +# File with dict of cuts +cutsFile = "cuts.py" + +# File with dict of samples +samplesFile = "samples.py" + +# File with dict of samples for plotting +plotFile = 'plot.py' + +# File with dict of structure (used to define processes in combine) +structureFile = "structure.py" + +# Nuisances file for mkDatacards and for mkShape +nuisancesFile = "nuisances.py" + +# Path to folder where to save plots +plotPath = 'plots_' + tag + +# This lines are executed right before the runner on the condor node +mountEOS = [] + +# List of imports to import when compiling the whole configuration folder, it should not contain imports used by configuration.py +imports = ["os", "glob", ("collections", "OrderedDict"), "ROOT"] + +# List of files to compile +filesToExec = [ + samplesFile, + aliasesFile, + variablesFile, + cutsFile, + plotFile, + nuisancesFile, + structureFile, +] + +# List of variables to keep in the compiled configuration folder +varsToKeep = [ + "batchVars", + "outputFolder", + "batchFolder", + "configsFolder", + "outputFile", + "runnerFile", + "tag", + "samples", + "aliases", + "variables", + ("cuts", {"cuts": "cuts", "preselections": "preselections"}), + ("plot", {"plot": "plot", "groupPlot": "groupPlot", "legend": "legend"}), + "nuisances", + "structure", + "lumi", +] + +# List of variables to keep in the batch submission script (script.py) +batchVars = varsToKeep[varsToKeep.index("samples") :] + +varsToKeep += ['plotPath'] diff --git a/ControlRegions/SS/Full2017_v9/cuts.py b/ControlRegions/SS/Full2017_v9/cuts.py new file mode 100644 index 00000000..5b25d208 --- /dev/null +++ b/ControlRegions/SS/Full2017_v9/cuts.py @@ -0,0 +1,139 @@ +cuts = {} + +# cuts +preselections = 'mll>12 \ + && Lepton_pt[0]>25 \ + && Lepton_pt[1]>10 \ + && (abs(Lepton_pdgId[1])==13 || Lepton_pt[1]>13) \ + && abs(Lepton_eta[0])<2.5 && abs(Lepton_eta[1])<2.5 \ + && bVeto \ +' + + +########################################################################### +# B-veto: pre-selection compared to the WH charge-asymmetry signal region # +########################################################################### + +# mu-mu +cuts['hww2l2v_13TeV_WH_SS_mm_2j'] = { + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 13*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30', + 'categories' : { + 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]>=20', + 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]>=20', + # 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20', + # 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20', + } +} + +# mu-e +cuts['hww2l2v_13TeV_WH_SS_em_2j'] = { + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30', + 'categories' : { + 'SS_CR_plus_pt2ge20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]>=20', + 'SS_CR_minus_pt2ge20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]>=20', + # 'SS_CR_plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20', + # 'SS_CR_minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20', + } +} + +# e-e +cuts['hww2l2v_13TeV_WH_SS_ee_2j'] = { + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*11) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && abs(mll-91.2)>15', + 'categories' : { + 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20', + 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20', + # 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20', + # 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20', + } +} + + +## SR 1jet + +# mu-mu +cuts['hww2l2v_13TeV_WH_SS_mm_1j'] = { + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 13*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)<30', + 'categories' : { + 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]>=20', + 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]>=20', + # 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20', + # 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20', + } +} + +# mu-e +cuts['hww2l2v_13TeV_WH_SS_em_1j'] = { + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)<30', + 'categories' : { + 'SS_CR_plus_pt2ge20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]>=20', + 'SS_CR_minus_pt2ge20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]>=20', + # 'SS_CR_plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20', + # 'SS_CR_minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20', + } +} + +# e-e +cuts['hww2l2v_13TeV_WH_SS_ee_1j'] = { + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*11) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)<30 && abs(mll-91.2)>15', + 'categories' : { + 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20', + 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20', + # 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20', + # 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20', + } +} + + +## SR 0jet + +# mu-mu +cuts['hww2l2v_13TeV_WH_SS_mm_0j'] = { + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 13*13) && nLepton==2 && Alt(CleanJet_pt,0,0)<30', + 'categories' : { + 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]>=20', + 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]>=20', + # 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20', + # 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20', + } +} + +# mu-e +cuts['hww2l2v_13TeV_WH_SS_em_0j'] = { + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*13) && nLepton==2 && Alt(CleanJet_pt,0,0)<30', + 'categories' : { + 'SS_CR_plus_pt2ge20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]>=20', + 'SS_CR_minus_pt2ge20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]>=20', + # 'SS_CR_plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20', + # 'SS_CR_minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20', + } +} + +# e-e +cuts['hww2l2v_13TeV_WH_SS_ee_0j'] = { + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*11) && nLepton==2 && Alt(CleanJet_pt,0,0)<30 && abs(mll-91.2)>15', + 'categories' : { + 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20', + 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20', + # 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20', + # 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20', + } +} + + +## SR 3 leptons: only 0 jet bin +cuts['hww2l2v_13TeV_WH_3l'] = { + 'expr' : 'nLepton>=3 && Alt(Lepton_pt,3,0)<10 && Alt(CleanJet_pt,0,0)<30 && (WH3l_mOSll[0]<0 || WH3l_mOSll[0]>12) && (WH3l_mOSll[1]<0 || WH3l_mOSll[1]>12) && (WH3l_mOSll[2]<0 || WH3l_mOSll[2]>12)', + 'categories' : { + 'sssf_plus_pt2ge20' : 'WH3l_flagOSSF == 0 && abs(WH3l_chlll) == 1 && Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]>0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15', + 'sssf_minus_pt2ge20' : 'WH3l_flagOSSF == 0 && abs(WH3l_chlll) == 1 && Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]<0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15', + 'ossf_plus_pt2ge20' : 'WH3l_flagOSSF == 1 && abs(WH3l_chlll) == 1 && Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]>0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15 && WH3l_ZVeto > 20 && PuppiMET_pt > 40', + 'ossf_minus_pt2ge20' : 'WH3l_flagOSSF == 1 && abs(WH3l_chlll) == 1 && Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]<0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15 && WH3l_ZVeto > 20 && PuppiMET_pt > 40', + } +} + +# mlljj20_whss: +# inv_mass of: (jet1, jet2, 2*closest_lep_to_jets) +# jets are considered with pT > 20 GeV + +# Definitions of WH3l variables: +# https://github.com/latinos/LatinoAnalysis/blob/76e7c4b93aa5f056c92440d4e8d24e7de749c8fe/NanoGardener/python/modules/l3KinProducer.py diff --git a/ControlRegions/SS/Full2017_v9/nuisances.py b/ControlRegions/SS/Full2017_v9/nuisances.py new file mode 100644 index 00000000..9c51fcfc --- /dev/null +++ b/ControlRegions/SS/Full2017_v9/nuisances.py @@ -0,0 +1,979 @@ +import sys + +nuisances = {} + +mcProduction = 'Summer20UL17_106x_nAODv9_Full2017v9' +dataReco = 'Run2017_UL2017_nAODv9_Full2017v9' +mcSteps = 'MCl1loose2017v9__MCCorr2017v9NoJERInHorn__l2tightOR2017v9' +fakeSteps = 'DATAl1loose2017v9__l2loose__fakeW' +dataSteps = 'DATAl1loose2017v9__l2loose__l2tightOR2017v9' + +treeBaseDir = '/eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano' +limitFiles = -1 + +mc = [skey for skey in samples if skey not in ('Fake', 'DATA','ChargeFlip')] + +redirector = "" + +useXROOTD = False + +def makeMCDirectory(var=''): + if var== '': + print(os.path.join(treeBaseDir, mcProduction, mcSteps)) + return os.path.join(treeBaseDir, mcProduction, mcSteps) + else: + print(os.path.join(treeBaseDir, mcProduction, mcSteps + '__' + var)) + return os.path.join(treeBaseDir, mcProduction, mcSteps + '__' + var) + +mcDirectory = makeMCDirectory() +fakeDirectory = os.path.join(treeBaseDir, dataReco, fakeSteps) +dataDirectory = os.path.join(treeBaseDir, dataReco, dataSteps) + +################################ EXPERIMENTAL UNCERTAINTIES ################################# + +#### Luminosity + +# https://twiki.cern.ch/twiki/bin/view/CMS/LumiRecommendationsRun2#LumiComb +# Uncorrelated 2016 1.0 +# Uncorrelated 2017 2.0 +# Uncorrelated 2018 1.5 +# Correlated 2016, 2017, 2018 0.6, 0.9, 2.0 +# Correlated 2017, 2018 0.6, 0.2 + +nuisances['lumi_Uncorrelated'] = { + 'name' : 'lumi_13TeV_2017', + 'type' : 'lnN', + 'samples' : dict((skey, '1.020') for skey in mc if skey not in ['WZ']) +} + +nuisances['lumi_Correlated_Run2'] = { + 'name' : 'lumi_13TeV_correlated', + 'type' : 'lnN', + 'samples' : dict((skey, '1.009') for skey in mc if skey not in ['WZ']) +} + +nuisances['lumi_Correlated_2017_2018'] = { + 'name' : 'lumi_13TeV_1718', + 'type' : 'lnN', + 'samples' : dict((skey, '1.006') for skey in mc if skey not in ['WZ']) +} + + +### Fakes + +# Per lepton +nuisances['fake_ele'] = { + 'name' : 'CMS_WH_hww_fake_e_2017', + 'kind' : 'weight', + 'type' : 'shape', + 'samples' : { + 'Fake_ee' : ['fakeWEleUp', 'fakeWEleDown'], + 'Fake_em' : ['fakeWEleUp', 'fakeWEleDown'], + } +} + +nuisances['fake_ele_stat'] = { + 'name' : 'CMS_WH_hww_fake_stat_e_2017', + 'kind' : 'weight', + 'type' : 'shape', + 'samples' : { + 'Fake_ee' : ['fakeWStatEleUp', 'fakeWStatEleDown'], + 'Fake_em' : ['fakeWStatEleUp', 'fakeWStatEleDown'], + } +} + + +nuisances['fake_mu'] = { + 'name' : 'CMS_WH_hww_fake_m_2017', + 'kind' : 'weight', + 'type' : 'shape', + 'samples' : { + 'Fake_mm' : ['fakeWMuUp', 'fakeWMuDown'], + 'Fake_em' : ['fakeWMuUp', 'fakeWMuDown'], + } +} + +nuisances['fake_mu_stat'] = { + 'name' : 'CMS_WH_hww_fake_stat_m_2017', + 'kind' : 'weight', + 'type' : 'shape', + 'samples' : { + 'Fake_mm' : ['fakeWStatMuUp', 'fakeWStatMuDown'], + 'Fake_em' : ['fakeWStatMuUp', 'fakeWStatMuDown'], + } +} + +# Normalization per final state +jet_bins = ['0j','1j','2j'] +channels = ['ee','em','mm'] +charges = ['plus', 'minus'] + +eta_regimes = ['barrel', 'endcap'] +pt_regimes = ['high', 'medium'] + +fake_syst_dict = { + 'endcap_medium_pt': ['1.0*(abs(Lepton_eta[1])<=1.479) + 1.0*(Lepton_pt[1]> 35) + 1.1*(abs(Lepton_eta[1])> 1.479 && Lepton_pt[1]<=35)', + '1.0*(abs(Lepton_eta[1])<=1.479) + 1.0*(Lepton_pt[1]> 35) + 1.0/1.1*(abs(Lepton_eta[1])> 1.479 && Lepton_pt[1]<=35)'], + 'barrel_medium_pt': ['1.0*(abs(Lepton_eta[1])> 1.479) + 1.0*(Lepton_pt[1]> 35) + 1.1*(abs(Lepton_eta[1])<=1.479 && Lepton_pt[1]<=35)', + '1.0*(abs(Lepton_eta[1])> 1.479) + 1.0*(Lepton_pt[1]> 35) + 1.0/1.1*(abs(Lepton_eta[1])<=1.479 && Lepton_pt[1]<=35)'], + 'endcap_high_pt' : ['1.0*(abs(Lepton_eta[1])<=1.479) + 1.0*(Lepton_pt[1]<=35) + 1.1*(abs(Lepton_eta[1])> 1.479 && Lepton_pt[1]> 35)', + '1.0*(abs(Lepton_eta[1])<=1.479) + 1.0*(Lepton_pt[1]<=35) + 1.0/1.1*(abs(Lepton_eta[1])> 1.479 && Lepton_pt[1]> 35)'], + 'barrel_high_pt' : ['1.0*(abs(Lepton_eta[1])> 1.479) + 1.0*(Lepton_pt[1]<=35) + 1.1*(abs(Lepton_eta[1])<=1.479 && Lepton_pt[1]> 35)', + '1.0*(abs(Lepton_eta[1])> 1.479) + 1.0*(Lepton_pt[1]<=35) + 1.0/1.1*(abs(Lepton_eta[1])<=1.479 && Lepton_pt[1]> 35)'], +} + + +for channel in channels: + my_list = [cut for cut in cuts if f'{channel}' in cut] + print(f"Cuts with {channel} in them: {my_list}") + + +for jet_bin in jet_bins: + for charge in charges: + for channel in channels: + + nuisances[f'CMS_WH_hww_fake_syst_{jet_bin}_{channel}_{charge}'] = { + 'name' : f'CMS_WH_hww_fake_syst_{jet_bin}_{channel}_{charge}_2017', + 'samples' : { + f'Fake_{channel}' : '1.30', + }, + 'type' : 'lnN', + 'cuts' : [ + f'hww2l2v_13TeV_WH_SS_{channel}_{jet_bin}_SS_CR_{charge}_pt2ge20', + ], + } + +# for channel in channels: +# for eta_regime in eta_regimes: +# for pt_regime in pt_regimes: +# nuisances[f'CMS_WH_hww_fake_syst_{eta_regime}_{pt_regime}_{channel}'] = { +# 'name' : f'CMS_WH_hww_fake_syst_{eta_regime}_{pt_regime}_{channel}_2017', +# 'samples' : { +# f'Fake_{channel}' : fake_syst_dict[f'{eta_regime}_{pt_regime}_pt'], +# }, +# 'type' : 'shape', +# 'cuts' : [cut for cut in cuts if (f'{channel}' in cut)], +# } + + +flavors = ['sssf', 'ossf'] + +for flavor in flavors: + for charge in charges: + + nuisances[f'CMS_WH_hww_fake_syst_{flavor}_{charge}'] = { + 'name' : f'CMS_WH_hww_fake_syst_{flavor}_{charge}_2017', + 'samples' : { + 'Fake_em' : '1.30', + 'Fake_mm' : '1.30', + 'Fake_ee' : '1.30', + }, + 'type' : 'lnN', + 'cuts' : [ + f'hww2l2v_13TeV_WH_3l_{flavor}_{charge}_pt2ge20', + ], + } + +# for flavor in flavors: +# for eta_regime in eta_regimes: +# for pt_regime in pt_regimes: +# nuisances[f'CMS_WH_hww_fake_syst_{eta_regime}_{pt_regime}_{flavor}'] = { +# 'name' : f'CMS_WH_hww_fake_syst_{eta_regime}_{pt_regime}_{flavor}_2017', +# 'samples' : { +# f'Fake_em' : fake_syst_dict[f'{eta_regime}_{pt_regime}_pt'], +# f'Fake_ee' : fake_syst_dict[f'{eta_regime}_{pt_regime}_pt'], +# f'Fake_mm' : fake_syst_dict[f'{eta_regime}_{pt_regime}_pt'], +# }, +# 'type' : 'shape', +# 'cuts' : [cut for cut in cuts if (f'{flavor}' in cut)], +# } + + +# ###### B-tagger + +# for shift in ['lf', 'hf', 'hfstats1', 'hfstats2', 'lfstats1', 'lfstats2', 'cferr1', 'cferr2']: +# btag_syst = ['(btagSF%sup)/(btagSF)' % shift, '(btagSF%sdown)/(btagSF)' % shift] + +# name = 'CMS_btag_%s' % shift +# if 'stats' in shift: +# name += '_2017' + +# nuisances['btag_shape_%s' % shift] = { +# 'name' : name, +# 'kind' : 'weight', +# 'type' : 'shape', +# 'samples' : dict((skey, btag_syst) for skey in mc), +# } + +# ##### Trigger Scale Factors + +# trig_syst = ['TriggerSFWeight_2l_u/TriggerSFWeight_2l', 'TriggerSFWeight_2l_d/TriggerSFWeight_2l'] + +# nuisances['trigg'] = { +# 'name' : 'CMS_eff_hwwtrigger_2017', +# 'kind' : 'weight', +# 'type' : 'shape', +# 'samples' : dict((skey, trig_syst) for skey in mc) +# } + +# ##### Electron Efficiency and energy scale + +# nuisances['eff_e'] = { +# 'name' : 'CMS_eff_e_2017', +# 'kind' : 'weight', +# 'type' : 'shape', +# 'samples' : dict((skey, ['SFweightEleUp', 'SFweightEleDown']) for skey in mc) +# } + +# nuisances['eff_ttHMVA_e'] = { +# 'name' : 'CMS_eff_ttHMVA_e_2017', +# 'kind' : 'weight', +# 'type' : 'shape', +# 'samples' : dict((skey, ['LepWPttHMVASFEleUp', 'LepWPttHMVASFEleDown']) for skey in mc) +# } + +# nuisances['electronpt'] = { +# 'name' : 'CMS_scale_e_2017', +# 'kind' : 'suffix', +# 'type' : 'shape', +# 'mapUp' : 'ElepTup', +# 'mapDown' : 'ElepTdo', +# 'samples' : dict((skey, ['1', '1']) for skey in mc), +# 'folderUp' : makeMCDirectory('ElepTup_suffix'), +# 'folderDown' : makeMCDirectory('ElepTdo_suffix'), +# 'AsLnN' : '0' +# } + +# ##### Muon Efficiency and energy scale + +# nuisances['eff_m'] = { +# 'name' : 'CMS_eff_m_2017', +# 'kind' : 'weight', +# 'type' : 'shape', +# 'samples' : dict((skey, ['SFweightMuUp', 'SFweightMuDown']) for skey in mc) +# } + +# nuisances['eff_ttHMVA_m'] = { +# 'name' : 'CMS_eff_ttHMVA_m_2017', +# 'kind' : 'weight', +# 'type' : 'shape', +# 'samples' : dict((skey, ['LepWPttHMVASFMuUp', 'LepWPttHMVASFMuDown']) for skey in mc) +# } + +# nuisances['muonpt'] = { +# 'name' : 'CMS_scale_m_2017', +# 'kind' : 'suffix', +# 'type' : 'shape', +# 'mapUp' : 'MupTup', +# 'mapDown' : 'MupTdo', +# 'samples' : dict((skey, ['1', '1']) for skey in mc), +# 'folderUp' : makeMCDirectory('MupTup_suffix'), +# 'folderDown' : makeMCDirectory('MupTdo_suffix'), +# 'AsLnN' : '0' +# } + +# ##### Jet energy scale +# jes_systs = ['JESAbsolute','JESAbsolute_2017','JESBBEC1','JESBBEC1_2017','JESEC2','JESEC2_2017','JESFlavorQCD','JESHF','JESHF_2017','JESRelativeBal','JESRelativeSample_2017'] + +# for js in jes_systs: + +# nuisances[js] = { +# 'name' : 'CMS_scale_' + js.replace("JES","j_"), +# 'kind' : 'suffix', +# 'type' : 'shape', +# 'mapUp' : js + 'up', +# 'mapDown' : js + 'do', +# 'samples' : dict((skey, ['1', '1']) for skey in mc), +# 'folderUp' : makeMCDirectory('RDF__JESup_suffix'), +# 'folderDown': makeMCDirectory('RDF__JESdo_suffix'), +# 'reweight' : ['btagSF'+js.replace('JES','jes')+'up/btagSF','btagSF'+js.replace('JES','jes')+'down/btagSF'], +# 'AsLnN' : '0' +# } + +# ##### Jet energy resolution +# nuisances['JER'] = { +# 'name' : 'CMS_res_j_2017', +# 'kind' : 'suffix', +# 'type' : 'shape', +# 'mapUp' : 'JERup', +# 'mapDown' : 'JERdo', +# 'samples' : dict((skey, ['1', '1']) for skey in mc), +# 'folderUp' : makeMCDirectory('JERup_suffix'), +# 'folderDown': makeMCDirectory('JERdo_suffix'), +# 'AsLnN' : '0' +# } + +# ##### MET unclustered energy + +# # metUp.PuppiMET_pt_METup +# nuisances['met'] = { +# 'name' : 'CMS_scale_met_2017', +# 'kind' : 'suffix', +# 'type' : 'shape', +# 'mapUp' : 'METup', +# 'mapDown' : 'METdo', +# 'samples' : dict((skey, ['1', '1']) for skey in mc), +# 'folderUp' : makeMCDirectory('METup_suffix'), +# 'folderDown': makeMCDirectory('METdo_suffix'), +# 'AsLnN' : '0' +# } + + +# ##### Pileup + +# # puWeight_UL2017 +# nuisances['PU'] = { +# 'name' : 'CMS_pileup_2017', +# 'kind' : 'weight', +# 'type' : 'shape', +# 'samples' : { +# 'DY' : ['0.998687*(puWeightUp/puWeight)', '1.001976*(puWeightDown/puWeight)'], +# 'top' : ['1.002595*(puWeightUp/puWeight)', '0.997470*(puWeightDown/puWeight)'], +# 'WW' : ['1.004449*(puWeightUp/puWeight)', '0.995660*(puWeightDown/puWeight)'], +# 'WWewk' : ['1.002122*(puWeightUp/puWeight)', '0.998087*(puWeightDown/puWeight)'], +# 'ggWW' : ['1.004870*(puWeightUp/puWeight)', '0.995315*(puWeightDown/puWeight)'], +# 'WZ' : ['0.999330*(puWeightUp/puWeight)', '1.000992*(puWeightDown/puWeight)'], +# 'ZZ' : ['0.999469*(puWeightUp/puWeight)', '1.000751*(puWeightDown/puWeight)'], +# 'VVV' : ['1.003485*(puWeightUp/puWeight)', '0.997561*(puWeightDown/puWeight)'], +# 'ggH_hww' : ['1.003677*(puWeightUp/puWeight)', '0.995996*(puWeightDown/puWeight)'], +# 'qqH_hww' : ['1.003747*(puWeightUp/puWeight)', '0.995878*(puWeightDown/puWeight)'], +# }, +# 'AsLnN' : '0', +# } + +# ### PU ID SF uncertainty + +# # puid_syst = ['Jet_PUIDSF_loose_up/Jet_PUIDSF_loose', 'Jet_PUIDSF_loose_down/Jet_PUIDSF_loose'] +# puid_syst = ['Jet_PUIDSF_up/Jet_PUIDSF', 'Jet_PUIDSF_down/Jet_PUIDSF'] + +# nuisances['jetPUID'] = { +# 'name' : 'CMS_eff_j_PUJET_id_2017', +# 'kind' : 'weight', +# 'type' : 'shape', +# 'samples' : dict((skey, puid_syst) for skey in mc) +# } + +# ### PS and UE + +# nuisances['PS_ISR'] = { +# 'name' : 'PS_WH_hww_ISR', +# 'kind' : 'weight', +# 'type' : 'shape', +# 'samples' : dict((skey, ['PSWeight[2]', 'PSWeight[0]']) for skey in mc), +# 'AsLnN' : '0', +# } + +# nuisances['PS_FSR'] = { +# 'name' : 'PS_WH_hww_FSR', +# 'kind' : 'weight', +# 'type' : 'shape', +# 'samples' : dict((skey, ['PSWeight[3]', 'PSWeight[1]']) for skey in mc), +# 'AsLnN' : '0', +# } + +# nuisances['UE_CP5'] = { +# 'name' : 'CMS_WH_hww_UE', +# 'skipCMS' : 1, +# 'type' : 'lnN', +# 'samples' : dict((skey, '1.015') for skey in mc), +# } + +# # Charge flip efficiency +# nuisances['chargeFlipEff'] = { +# 'name' : 'CMS_whss_chargeFlipEff_2017', +# 'kind' : 'weight', +# 'type' : 'shape', +# 'samples' : dict((skey, ['1-ttHMVA_eff_err_flip_2l', '1+ttHMVA_eff_err_flip_2l']) for skey in ['DY','ChargeFlip']), +# 'cuts' : [cut for cut in cuts if ('_ee_' in cut or '_em_' in cut)], +# } + +# # Charge flip: uncertainty on opposite sign processes not affected by charge-flip +# nuisances['chargeFlip_syst'] = { +# 'name' : 'CMS_ChargeFlip_syst', +# 'type' : 'lnN', +# 'samples' : { +# 'ChargeFlip' : '1.10', +# }, +# 'cuts' : [cut for cut in cuts if ('_ee_' in cut or '_em_' in cut)], +# } + +# ## Top pT reweighting uncertainty + +# nuisances['TopPtRew'] = { +# 'name' : 'CMS_top_pT_reweighting', # Theory uncertainty +# 'kind' : 'weight', +# 'type' : 'shape', +# 'samples' : { +# 'top': ["1.", "1./Top_pTrw"] +# }, +# 'symmetrize' : True +# } + +# nuisances['VgStar'] = { +# 'name' : 'CMS_hww_VgStarScale', +# 'type' : 'lnN', +# 'samples' : { +# 'VgS' : '1.25' +# } +# } + +# nuisances['Vg'] = { +# 'name' : 'CMS_hww_VgScale', +# 'type' : 'lnN', +# 'samples' : { +# 'Vg' : '1.25' +# } +# } + +# ###### pdf uncertainties + +# valuesggh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggH', '125.09','pdf','sm') +# valuesggzh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggZH','125.09','pdf','sm') +# valuesbbh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','bbH', '125.09','pdf','sm') + +# nuisances['pdf_Higgs_gg'] = { +# 'name' : 'pdf_Higgs_gg', +# 'samples' : { +# 'ggH_hww' : valuesggh, +# 'ggH_htt' : valuesggh, +# 'ggZH_hww' : valuesggzh, +# 'bbH_hww' : valuesbbh, +# }, +# 'type' : 'lnN', +# } + +# # For ttH, we need to use 1./values +# values = str(1./float(HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ttH','125.09','pdf','sm'))) + +# nuisances['pdf_Higgs_ttH'] = { +# 'name' : 'pdf_Higgs_ttH', +# 'samples' : { +# 'ttH_hww': values, +# }, +# 'type' : 'lnN', +# } + +# valuesqqh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','vbfH','125.09','pdf','sm') +# valueswh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','WH', '125.09','pdf','sm') +# valueszh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ZH', '125.09','pdf','sm') + +# nuisances['pdf_Higgs_qqbar'] = { +# 'name' : 'pdf_Higgs_qqbar', +# 'type' : 'lnN', +# 'samples': { +# 'qqH_hww' : valuesqqh, +# 'qqH_htt' : valuesqqh, +# 'WH_hww_plus' : valueswh, +# 'WH_hww_minus': valueswh, +# 'WH_htt_plus' : valueswh, +# 'WH_htt_minus': valueswh, +# 'ZH_hww' : valueszh, +# 'ZH_htt' : valueszh +# }, +# } + +# nuisances['pdf_qqbar'] = { +# 'name' : 'pdf_qqbar', +# 'type' : 'lnN', +# 'samples' : { +# 'Vg' : '1.04', +# 'ZZ' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 +# # 'WZ' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 +# 'VgS' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 +# }, +# } + +# nuisances['pdf_gg'] = { +# 'name': 'pdf_WH_hww_gg', +# 'type': 'lnN', +# 'samples': { +# 'ggWW' : '1.05', +# }, +# } + +# nuisances['pdf_Higgs_gg_ACCEPT'] = { +# 'name' : 'pdf_WH_hww_Higgs_gg_ACCEPT', +# 'samples' : { +# 'ggH_hww' : '1.006', +# 'ggH_htt' : '1.006', +# 'ggZH_hww' : '1.006', +# 'bbH_hww' : '1.006' +# }, +# 'type' : 'lnN', +# } +# nuisances['pdf_gg_ACCEPT'] = { +# 'name' : 'pdf_WH_hww_gg_ACCEPT', +# 'samples' : { +# 'ggWW' : '1.006', +# }, +# 'type' : 'lnN', +# } + +# nuisances['pdf_Higgs_qqbar_ACCEPT'] = { +# 'name' : 'pdf_WH_hww_Higgs_qqbar_ACCEPT', +# 'type' : 'lnN', +# 'samples' : { +# 'qqH_hww' : '1.002', +# 'qqH_htt' : '1.002', +# 'WH_hww_plus' : '1.003', +# 'WH_hww_minus': '1.003', +# 'WH_htt_plus' : '1.003', +# 'WH_htt_minus': '1.003', +# 'ZH_hww' : '1.002', +# 'ZH_htt' : '1.002', +# }, +# } + +# nuisances['pdf_qqbar_ACCEPT'] = { +# 'name' : 'pdf_WH_hww_qqbar_ACCEPT', +# 'type' : 'lnN', +# 'samples' : { +# 'ZZ' : '1.001', +# # 'WZ' : '1.001', +# }, +# } + +# ##### Renormalization & factorization scales + +# ## Shape nuisance due to QCD scale variations for DY +# ## LHE scale variation weights (w_var / w_nominal) + +# ## This should work for samples with either 8 or 9 LHE scale weights (Length$(LHEScaleWeight) == 8 or 9) +# variations = ['Alt(LHEScaleWeight,0,1)', 'Alt(LHEScaleWeight,1,1)', 'Alt(LHEScaleWeight,3,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-4,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-2,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-1,1)'] + +# # nuisances['QCDscale_V'] = { +# # 'name' : 'QCDscale_V', +# # 'skipCMS' : 1, +# # 'kind' : 'weight_envelope', +# # 'type' : 'shape', +# # 'samples' : { +# # 'DY' : variations +# # }, +# # 'AsLnN' : '0' +# # } + +# nuisances['QCDscale_VV'] = { +# 'name' : 'QCDscale_VV', +# 'kind' : 'weight_envelope', +# 'type' : 'shape', +# 'samples' : { +# 'WW' : variations, +# 'Vg' : variations, +# 'ZZ' : variations, +# 'WZ' : variations, +# 'VgS' : variations, +# } +# } + +# nuisances['QCDscale_ggVV'] = { +# 'name' : 'QCDscale_ggVV', +# 'type' : 'lnN', +# 'samples' : { +# 'ggWW' : '1.15', +# }, +# } + +# #### QCD scale uncertainties for Higgs signals other than ggH + +# values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','vbfH','125.09','scale','sm') + +# nuisances['QCDscale_qqH'] = { +# 'name' : 'QCDscale_qqH', +# 'samples' : { +# 'qqH_hww' : values, +# 'qqH_htt' : values, +# }, +# 'type' : 'lnN' +# } + +# valueswh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','WH','125.09','scale','sm') +# valueszh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ZH','125.09','scale','sm') + +# nuisances['QCDscale_VH'] = { +# 'name' : 'QCDscale_VH', +# 'samples' : { +# 'WH_hww_plus' : valueswh, +# 'WH_hww_minus' : valueswh, +# 'WH_htt_plus' : valueswh, +# 'WH_htt_minus' : valueswh, +# 'ZH_hww' : valueszh, +# 'ZH_htt' : valueszh, +# }, +# 'type' : 'lnN', +# } + +# values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggZH','125.09','scale','sm') + +# nuisances['QCDscale_ggZH'] = { +# 'name' : 'QCDscale_ggZH', +# 'samples' : { +# 'ggZH_hww' : values, +# }, +# 'type' : 'lnN', +# } + +# values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ttH','125.09','scale','sm') + +# nuisances['QCDscale_ttH'] = { +# 'name' : 'QCDscale_ttH', +# 'samples' : { +# 'ttH_hww' : values, +# }, +# 'type' : 'lnN', +# } + +# nuisances['QCDscale_WWewk'] = { +# 'name' : 'QCDscale_WWewk', +# 'samples' : { +# 'WWewk' : '1.11', +# }, +# 'type' : 'lnN' +# } + +# nuisances['QCDscale_qqbar_ACCEPT'] = { +# 'name' : 'QCDscale_qqbar_ACCEPT', +# 'type' : 'lnN', +# 'samples' : { +# 'qqH_hww' : '1.003', +# 'qqH_htt' : '1.003', +# 'WH_hww_plus' : '1.010', +# 'WH_hww_minus' : '1.010', +# 'WH_htt_plus' : '1.010', +# 'WH_htt_minus' : '1.010', +# 'ZH_hww' : '1.015', +# 'ZH_htt' : '1.015', +# } +# } + +# # FIXME: these come from HIG-16-042, maybe should be recomputed? +# nuisances['QCDscale_gg_ACCEPT'] = { +# 'name' : 'QCDscale_gg_ACCEPT', +# 'samples' : { +# 'ggH_htt' : '1.012', +# 'ggH_hww' : '1.012', +# 'ggZH_hww' : '1.012', +# 'ggWW' : '1.012', +# }, +# 'type' : 'lnN', +# } + +# # WZ normalization from control region +# nuisances['WZ2jnorm'] = { +# 'name' : 'CMS_hww_WZ3l2jnorm', +# 'samples' : { +# 'WZ' : '1.00', +# }, +# 'type' : 'rateParam', +# 'cuts' : [cut for cut in cuts if '2j' in cut], +# } + +# nuisances['WZ1jnorm'] = { +# 'name' : 'CMS_hww_WZ3l1jnorm', +# 'samples' : { +# 'WZ' : '1.00', +# }, +# 'type' : 'rateParam', +# 'cuts' : [cut for cut in cuts if '1j' in cut], +# } + +# # WZ migration from W+Z to W-Z +# nuisances['WZ2j_charge_migration'] = { +# 'name' : 'CMS_hww_WZ2jchargemigration', +# 'samples' : { +# 'WZ' : '1.02', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_noZveto_mm_2j_plus_pt2ge20', +# 'hww2l2v_13TeV_WH_SS_noZveto_mm_2j_plus_pt2lt20', +# 'hww2l2v_13TeV_WH_SS_em_2j_plus_pt2ge20', +# 'hww2l2v_13TeV_WH_SS_em_2j_plus_pt2lt20', +# 'hww2l2v_13TeV_WH_SS_ee_2j_plus_pt2ge20', +# 'hww2l2v_13TeV_WH_SS_ee_2j_plus_pt2lt20', +# ], +# } + +# nuisances['WZ1j_charge_migration'] = { +# 'name' : 'CMS_hww_WZ1jchargemigration', +# 'samples' : { +# 'WZ' : '1.02', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_noZveto_mm_1j_plus_pt2ge20', +# 'hww2l2v_13TeV_WH_SS_noZveto_mm_1j_plus_pt2lt20', +# 'hww2l2v_13TeV_WH_SS_em_1j_plus_pt2ge20', +# 'hww2l2v_13TeV_WH_SS_em_1j_plus_pt2lt20', +# 'hww2l2v_13TeV_WH_SS_ee_1j_plus_pt2ge20', +# 'hww2l2v_13TeV_WH_SS_ee_1j_plus_pt2lt20', +# ], +# } + +# # Nonprompt leptons normalization per category +# nuisances['CMS_WH_hww_fake_syst_2jee_plus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_2jee_plus_2017', +# 'samples' : { +# 'Fake_ee' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_ee_2j_plus_pt2ge20', +# ], +# } +# nuisances['CMS_WH_hww_fake_syst_2jee_plus_lowpt'] = { +# 'name' : 'CMS_WH_hww_fake_syst_2jee_plus_lowpt_2017', +# 'samples' : { +# 'Fake_ee' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_ee_2j_plus_pt2lt20', +# ], +# } + +# nuisances['CMS_WH_hww_fake_syst_2jem_plus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_2jem_plus_2017', +# 'samples' : { +# 'Fake_em' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_em_2j_plus_pt2ge20', +# ], +# } +# nuisances['CMS_WH_hww_fake_syst_2jem_plus_lowpt'] = { +# 'name' : 'CMS_WH_hww_fake_syst_2jem_plus_lowpt_2017', +# 'samples' : { +# 'Fake_em' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_em_2j_plus_pt2lt20', +# ], +# } + +# nuisances['CMS_WH_hww_fake_syst_2jmm_plus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_2jmm_plus_2017', +# 'samples' : { +# 'Fake_mm' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_noZeto_mm_2j_plus_pt2ge20', +# ], +# } +# nuisances['CMS_WH_hww_fake_syst_2jmm_plus_lowpt'] = { +# 'name' : 'CMS_WH_hww_fake_syst_2jmm_plus_lowpt_2017', +# 'samples' : { +# 'Fake_mm' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_noZeto_mm_2j_plus_pt2lt20', +# ], +# } + +# nuisances['CMS_WH_hww_fake_syst_1jee_plus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_1jee_plus_2017', +# 'samples' : { +# 'Fake_ee' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_ee_1j_plus_pt2ge20', +# ], +# } +# nuisances['CMS_WH_hww_fake_syst_1jee_plus_lowpt'] = { +# 'name' : 'CMS_WH_hww_fake_syst_1jee_plus_lowpt_2017', +# 'samples' : { +# 'Fake_ee' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_ee_1j_plus_pt2lt20', +# ], +# } + +# nuisances['CMS_WH_hww_fake_syst_1jem_plus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_1jem_plus_2017', +# 'samples' : { +# 'Fake_em' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_em_1j_plus_pt2ge20', +# ], +# } +# nuisances['CMS_WH_hww_fake_syst_1jem_plus_lowpt'] = { +# 'name' : 'CMS_WH_hww_fake_syst_1jem_plus_lowpt_2017', +# 'samples' : { +# 'Fake_em' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_em_1j_plus_pt2lt20', +# ], +# } + +# nuisances['CMS_WH_hww_fake_syst_1jmm_plus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_1jmm_plus_2017', +# 'samples' : { +# 'Fake_mm' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_noZeto_mm_1j_plus_pt2ge20', +# ], +# } +# nuisances['CMS_WH_hww_fake_syst_1jmm_plus_lowpt'] = { +# 'name' : 'CMS_WH_hww_fake_syst_1jmm_plus_lowpt_2017', +# 'samples' : { +# 'Fake_mm' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_noZeto_mm_1j_plus_pt2lt20', +# ], +# } + + +# nuisances['CMS_WH_hww_fake_syst_2jee_minus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_2jee_minus_2017', +# 'samples' : { +# 'Fake_ee' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_ee_2j_minus_pt2ge20', +# ], +# } +# nuisances['CMS_WH_hww_fake_syst_2jee_minus_lowpt'] = { +# 'name' : 'CMS_WH_hww_fake_syst_2jee_minus_lowpt_2017', +# 'samples' : { +# 'Fake_ee' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_ee_2j_minus_pt2lt20', +# ], +# } + +# nuisances['CMS_WH_hww_fake_syst_2jem_minus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_2jem_minus_2017', +# 'samples' : { +# 'Fake_em' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_em_2j_minus_pt2ge20', +# ], +# } +# nuisances['CMS_WH_hww_fake_syst_2jem_minus_lowpt'] = { +# 'name' : 'CMS_WH_hww_fake_syst_2jem_minus_lowpt_2017', +# 'samples' : { +# 'Fake_em' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_em_2j_minus_pt2lt20', +# ], +# } + +# nuisances['CMS_WH_hww_fake_syst_2jmm_minus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_2jmm_minus_2017', +# 'samples' : { +# 'Fake_mm' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_noZeto_mm_2j_minus_pt2ge20', +# ], +# } +# nuisances['CMS_WH_hww_fake_syst_2jmm_minus_lowpt'] = { +# 'name' : 'CMS_WH_hww_fake_syst_2jmm_minus_lowpt_2017', +# 'samples' : { +# 'Fake_mm' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_noZeto_mm_2j_minus_pt2lt20', +# ], +# } + +# nuisances['CMS_WH_hww_fake_syst_1jee_minus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_1jee_minus_2017', +# 'samples' : { +# 'Fake_ee' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_ee_1j_minus_pt2ge20', +# ], +# } +# nuisances['CMS_WH_hww_fake_syst_1jee_minus_lowpt'] = { +# 'name' : 'CMS_WH_hww_fake_syst_1jee_minus_lowpt_2017', +# 'samples' : { +# 'Fake_ee' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_ee_1j_minus_pt2lt20', +# ], +# } + +# nuisances['CMS_WH_hww_fake_syst_1jem_minus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_1jem_minus_2017', +# 'samples' : { +# 'Fake_em' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_em_1j_minus_pt2ge20', +# ], +# } +# nuisances['CMS_WH_hww_fake_syst_1jem_minus_lowpt'] = { +# 'name' : 'CMS_WH_hww_fake_syst_1jem_minus_lowpt_2017', +# 'samples' : { +# 'Fake_em' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_em_1j_minus_pt2lt20', +# ], +# } + +# nuisances['CMS_WH_hww_fake_syst_1jmm_minus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_1jmm_minus_2017', +# 'samples' : { +# 'Fake_mm' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_noZeto_mm_1j_minus_pt2ge20', +# ], +# } +# nuisances['CMS_WH_hww_fake_syst_1jmm_minus_lowpt'] = { +# 'name' : 'CMS_WH_hww_fake_syst_1jmm_minus_lowpt_2017', +# 'samples' : { +# 'Fake_mm' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_noZeto_mm_1j_minus_pt2lt20', +# ], +# } + +# End of Nonprompt leptons normalization per category + +## Use the following if you want to apply the automatic combine MC stat nuisances. +nuisances['stat'] = { + 'type' : 'auto', + 'maxPoiss' : '10', + 'includeSignal' : '0', + 'samples' : {} +} +# nuisance ['maxPoiss'] = Number of threshold events for Poisson modelling +# nuisance ['includeSignal'] = Include MC stat nuisances on signal processes (1=True, 0=False) + +for n in nuisances.values(): + n['skipCMS'] = 1 diff --git a/ControlRegions/SS/Full2017_v9/plot.py b/ControlRegions/SS/Full2017_v9/plot.py new file mode 100644 index 00000000..72e8f7e0 --- /dev/null +++ b/ControlRegions/SS/Full2017_v9/plot.py @@ -0,0 +1,336 @@ +# plot configuration + +# Groups of samples to improve the plots. +# If not defined, normal plots is used + +groupPlot = {} + +groupPlot['top'] = { + 'nameHR' : 'tW+ and t#bar{t}', + 'isSignal' : 0, + 'color' : 400, # kYellow + 'samples' : ['top'] +} + +groupPlot['WW'] = { + 'nameHR' : 'WW', + 'isSignal' : 0, + 'color' : 851, # kAzure -9 + 'samples' : ['WW', 'ggWW', 'WWewk'] +} + +groupPlot['Fake'] = { + 'nameHR' : 'Non-prompt', + 'isSignal' : 0, + 'color' : 921, # kGray + 1 + 'samples' : ['Fake_mm','Fake_em','Fake_ee'] +} + +groupPlot['DY'] = { + 'nameHR' : "DY", + 'isSignal' : 0, + 'color' : 418, # kGreen+2 + 'samples' : ['DY'] +} + +groupPlot['VVV'] = { + 'nameHR' : 'VVV', + 'isSignal' : 0, + 'color' : 857, # kAzure -3 + 'samples' : ['VVV'] +} + +groupPlot['ZZ'] = { + 'nameHR' : "ZZ", + 'isSignal' : 0, + 'color' : 617, # kViolet + 1 + 'samples' : ['ZZ'] +} + +groupPlot['WZ'] = { + 'nameHR' : "WZ", + 'isSignal' : 0, + 'color' : 619, # kViolet + 1 + 'samples' : ['WZ'] +} + +groupPlot['Vg'] = { + 'nameHR' : "V#gamma", + 'isSignal' : 0, + 'color' : 810, # kOrange + 10 + 'samples' : ['Vg'] +} + +groupPlot['VgS'] = { + 'nameHR' : "V#gamma*", + 'isSignal' : 0, + 'color' : 412, # kGreen - 9 + 'samples' : ['VgS'] +} + +groupPlot['Higgs'] = { + 'nameHR' : 'Higgs', + 'isSignal' : 0, + 'color' : 632, # kRed + 'samples' : ['ggH_hww','qqH_hww','ZH_hww','ggZH_hww','ttH_hww','ggH_htt','qqH_htt','ZH_htt'] +} + +groupPlot['WH_minus'] = { + 'nameHR' : 'W^{-} H (x 10)', + 'isSignal' : 2, + 'color' : 600, # kBlue + 'samples' : ['WH_hww_minus','WH_htt_minus'] +} + +groupPlot['WH_plus'] = { + 'nameHR' : 'W^{+} H (x 10)', + 'isSignal' : 2, + 'color' : 632, # kRed + 'samples' : ['WH_hww_plus', 'WH_htt_plus'] +} + + +# keys here must match keys in samples.py + +plot = {} + +plot['DY'] = { + 'nameHR' : 'DY', + 'color' : 418, # kGreen+2 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0, +} + +plot['top'] = { + 'nameHR' : 'tW and t#bar{t}', + 'color' : 400, # kYellow + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0, +} + +plot['WW'] = { + 'nameHR' : 'WW', + 'color' : 851, # kAzure -9 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['WWewk'] = { + 'nameHR' : 'WWewk', + 'color' : 850, # kAzure -10 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['ggWW'] = { + 'nameHR' : 'ggWW', + 'color' : 850, # kAzure -10 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['Vg'] = { + 'nameHR' : 'Vg', + 'color' : 859, # kAzure -1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['VgS'] = { + 'nameHR' : 'VgS', + 'color' : 859, # kAzure -1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['WZ'] = { + 'nameHR' : 'WZ', + 'color' : 858, # kAzure -2 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.138 # NLO -> NNLO k-factor! +} + +plot['ZZ'] = { + 'nameHR' : 'ZZ', + 'color' : 858, # kAzure -2 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['VVV'] = { + 'nameHR' : 'VVV', + 'color' : 857, # kAzure -3 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +########### +# Signals # +########### + +# HWW + +plot['ggH_hww'] = { + 'nameHR' : 'ggH_hww', + 'color' : 632, # kRed + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['qqH_hww'] = { + 'nameHR' : 'qqH_hww', + 'color' : 632+1, # kRed+1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['ZH_hww'] = { + 'nameHR' : 'ZH_hww', + 'color' : 632+3, # kRed+3 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['ggZH_hww'] = { + 'nameHR' : 'ggZH_hww', + 'color' : 632+4, # kRed+4 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['WH_hww_plus'] = { + 'nameHR' : 'WH_hww_plus', + 'color' : 632+2, # kRed+2 + 'isSignal' : 2, + 'isData' : 0, + 'scale' : 10 +} + +plot['WH_hww_minus'] = { + 'nameHR' : 'WH_hww_minus', + 'color' : 600, # kBlue + 'isSignal' : 2, + 'isData' : 0, + 'scale' : 10 +} + +plot['ttH_hww'] = { + 'nameHR' : 'ttH_hww', + 'color' : 632+3, # kRed+3 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + + +# Htautau + +plot['ggH_htt'] = { + 'nameHR' : 'ggH_htt', + 'color' : 632, # kRed + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['qqH_htt'] = { + 'nameHR' : 'qqH_htt', + 'color' : 632+1, # kRed+1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['ZH_htt'] = { + 'nameHR' : 'ZH_htt', + 'color' : 632+3, # kRed+3 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['WH_htt_plus'] = { + 'nameHR' : 'WH_htt_plus', + 'color' : 632+2, # kRed+2 + 'isSignal' : 2, + 'isData' : 0, + 'scale' : 10 +} + +plot['WH_htt_minus'] = { + 'nameHR' : 'WH_htt_minus', + 'color' : 632+2, # kRed+2 + 'isSignal' : 2, + 'isData' : 0, + 'scale' : 10 +} + + +######## +# Fake # +######## + +plot['Fake_em'] = { + 'nameHR' : 'Fake_em', + 'color' : 921, # kGray + 1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['Fake_ee'] = { + 'nameHR' : 'Fake_ee', + 'color' : 921, # kGray + 1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['Fake_mm'] = { + 'nameHR' : 'Fake_mm', + 'color' : 921, # kGray + 1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +# plot['Fake'] = { +# 'color' : 921, # kGray + 1 +# 'isSignal' : 0, +# 'isData' : 0, +# 'scale' : 1.0 +# } + +######## +# Data # +######## + +plot['DATA'] = { + 'nameHR' : 'Data', + 'color' : 1 , + 'isSignal' : 0, + 'isData' : 1, + 'isBlind' : 0 +} + + +# Define legend + +legend = {} + +legend['lumi'] = 'L = 41.5 fb^{-1}' +legend['sqrt'] = '#sqrt{s} = 13 TeV' diff --git a/ControlRegions/SS/Full2017_v9/repeat.sh b/ControlRegions/SS/Full2017_v9/repeat.sh new file mode 100644 index 00000000..6441ca09 --- /dev/null +++ b/ControlRegions/SS/Full2017_v9/repeat.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +if [ $# -eq 0 ]; then + echo "$0: Missing arguments" + exit 1 +else + echo "We got some argument(s)" + echo "===========================" + echo "Number of arguments. : $#" + echo "List of arguments... : $@" + echo "Arg #1: sample : $1" + echo "Arg #2: compile : $2" + echo "===========================" + SAMPLE=$1 + COMPILE=$2 +fi + +# Site definition +hostname=$(uname -a | awk '{print $2}') + + +if [ "$COMPILE" == "True" ]; then + mkShapesRDF -c 1 + mkShapesRDF -o 0 -f . -b 1 -dR 1 +fi +cd condor/SS_2017_v9/${SAMPLE}/ +cp ../../../../../../../mkShapesRDF/mkShapesRDF/include/headers.hh ../../../../../../../mkShapesRDF/mkShapesRDF/shapeAnalysis/runner.py . +python runner.py + +if [[ "$hostname" == *portal* || "$hostname" == *bms* ]]; then + echo "We are at KIT" + cp output.root /ceph/${USER}/mkShapesRDF_rootfiles/SS_2017_v9/rootFile/mkShapes__SS_2017_v9__ALL__${SAMPLE}.root +else + echo "We are on lxplus" + cp output.root /eos/user/${USER:0:1}/${USER}/mkShapesRDF_rootfiles/SS_2017_v9/rootFile/mkShapes__SS_2017_v9__ALL__${SAMPLE}.root +fi + +rm output.root diff --git a/ControlRegions/SS/Full2017_v9/samples.py b/ControlRegions/SS/Full2017_v9/samples.py new file mode 100644 index 00000000..ec00bcde --- /dev/null +++ b/ControlRegions/SS/Full2017_v9/samples.py @@ -0,0 +1,383 @@ +import os,glob + +################################################ +################# SKIMS ######################## +################################################ + +# MC: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Summer20UL17_106x_nAODv9_Full2017v9/MCl1loose2017v9__MCCorr2017v9NoJERInHorn__l2tightOR2017v9/ +# DATA: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Run2017_UL2017_nAODv9_Full2017v9/DATAl1loose2017v9__l2loose__l2tightOR2017v9/ +# FAKE: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Run2017_UL2017_nAODv9_Full2017v9/DATAl1loose2017v9__l2loose__fakeW/ + +mcProduction = 'Summer20UL17_106x_nAODv9_Full2017v9' +dataReco = 'Run2017_UL2017_nAODv9_Full2017v9' +mcSteps = 'MCl1loose2017v9__MCCorr2017v9NoJERInHorn__l2tightOR2017v9{var}' +fakeSteps = 'DATAl1loose2017v9__l2loose__fakeW' +dataSteps = 'DATAl1loose2017v9__l2loose__l2tightOR2017v9' + +############################################## +###### Tree base directory for the site ###### +############################################## + +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' + +treeBaseDir = '/eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano' +if site == 'kit': + treeBaseDir = '/ceph/ntrevisa/HWWNano' +limitFiles = -1 + +def makeMCDirectory(var=''): + return os.path.join(treeBaseDir, mcProduction, mcSteps.format(var='')) + +mcDirectory = makeMCDirectory() +fakeDirectory = os.path.join(treeBaseDir, dataReco, fakeSteps) +dataDirectory = os.path.join(treeBaseDir, dataReco, dataSteps) + +samples = {} + +from mkShapesRDF.lib.search_files import SearchFiles +s = SearchFiles() + +useXROOTD = True +redirector = 'root://eoscms.cern.ch/' +if site == 'kit': + redirector = '' + +def nanoGetSampleFiles(path, name): + _files = s.searchFiles(path, name, redirector=redirector) + if limitFiles != -1 and len(_files) > limitFiles: + return [(name, _files[:limitFiles])] + else: + return [(name, _files)] + +def CombineBaseW(samples, proc, samplelist): + _filtFiles = list(filter(lambda k: k[0] in samplelist, samples[proc]['name'])) + _files = list(map(lambda k: k[1], _filtFiles)) + _l = list(map(lambda k: len(k), _files)) + leastFiles = _files[_l.index(min(_l))] + dfSmall = ROOT.RDataFrame('Runs', leastFiles) + s = dfSmall.Sum('genEventSumw').GetValue() + f = ROOT.TFile.Open(leastFiles[0]) + t = f.Get('Events') + t.GetEntry(1) + xs = t.baseW * s + + __files = [] + for f in _files: + __files += f + df = ROOT.RDataFrame('Runs', __files) + s = df.Sum('genEventSumw').GetValue() + newbaseW = str(xs / s) + weight = newbaseW + '/baseW' + + for iSample in samplelist: + addSampleWeight(samples, proc, iSample, weight) + +def addSampleWeight(samples, sampleName, sampleNameType, weight): + obj = list(filter(lambda k: k[0] == sampleNameType, samples[sampleName]['name']))[0] + samples[sampleName]['name'] = list(filter(lambda k: k[0] != sampleNameType, samples[sampleName]['name'])) + if len(obj) > 2: + samples[sampleName]['name'].append((obj[0], obj[1], obj[2] + '*(' + weight + ')')) + else: + samples[sampleName]['name'].append((obj[0], obj[1], '(' + weight + ')' )) + + +################################################ +############ DATA DECLARATION ################## +################################################ + +DataRun = [ + ['B','Run2017B-UL2017-v1'], + ['C','Run2017C-UL2017-v1'], + ['D','Run2017D-UL2017-v1'], + ['E','Run2017E-UL2017-v1'], + ['F','Run2017F-UL2017-v1'], +] + +DataSets = ['MuonEG','SingleMuon','SingleElectron','DoubleMuon', 'DoubleEG'] + +DataTrig = { + 'MuonEG' : ' Trigger_ElMu' , + 'SingleMuon' : '!Trigger_ElMu && Trigger_sngMu' , + 'SingleElectron' : '!Trigger_ElMu && !Trigger_sngMu && Trigger_sngEl', + 'DoubleMuon' : '!Trigger_ElMu && !Trigger_sngMu && !Trigger_sngEl && Trigger_dblMu', + 'DoubleEG' : '!Trigger_ElMu && !Trigger_sngMu && !Trigger_sngEl && !Trigger_dblMu && Trigger_dblEl' +} + +######################################### +############ MC COMMON ################## +######################################### + +# SFweight does not include btag weights +mcCommonWeightNoMatch = 'XSWeight*SFweight*METFilter_MC' +mcCommonWeight = 'XSWeight*SFweight*METFilter_MC*PromptGenLepMatch2l' + +########################################### +############# BACKGROUNDS ############### +########################################### + +###### DY ####### +files = nanoGetSampleFiles(mcDirectory, 'DYJetsToLL_M-10to50_NLO') + \ + nanoGetSampleFiles(mcDirectory, 'DYJetsToLL_M-50') + +samples['DY'] = { + 'name': files, + 'weight': mcCommonWeight + '*(nLepton<3)*(abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 11*13 || abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 11*11)*( !(Sum(PhotonGen_isPrompt==1 && PhotonGen_pt>15 && abs(PhotonGen_eta)<2.6) > 0))', + 'FilesPerJob': 8, +} + +##### Top ####### +files = nanoGetSampleFiles(mcDirectory, 'TTTo2L2Nu') + \ + nanoGetSampleFiles(mcDirectory, 'ST_s-channel') + \ + nanoGetSampleFiles(mcDirectory, 'ST_t-channel_top') + \ + nanoGetSampleFiles(mcDirectory, 'ST_t-channel_antitop') + \ + nanoGetSampleFiles(mcDirectory, 'ST_tW_antitop') + \ + nanoGetSampleFiles(mcDirectory, 'ST_tW_top') + +samples['top'] = { + 'name': files, + 'weight': mcCommonWeight, + 'FilesPerJob': 8, +} +addSampleWeight(samples,'top','TTTo2L2Nu','Top_pTrw') + +###### WW ######## +samples['WW'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'WWTo2L2Nu'), + 'weight': mcCommonWeight + '*nllW*ewknloW', + 'FilesPerJob': 4 +} + +samples['WWewk'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'WpWmJJ_EWK_noTop'), + 'weight': mcCommonWeight + '*(Sum(abs(GenPart_pdgId)==6 || GenPart_pdgId==25)==0)', # Filter tops and Higgs, + 'FilesPerJob': 8 +} + +files = nanoGetSampleFiles(mcDirectory, 'GluGluToWWToENEN') + \ + nanoGetSampleFiles(mcDirectory, 'GluGluToWWToENMN') + \ + nanoGetSampleFiles(mcDirectory, 'GluGluToWWToENTN') + \ + nanoGetSampleFiles(mcDirectory, 'GluGluToWWToMNEN') + \ + nanoGetSampleFiles(mcDirectory, 'GluGluToWWToMNMN') + \ + nanoGetSampleFiles(mcDirectory, 'GluGluToWWToMNTN') + \ + nanoGetSampleFiles(mcDirectory, 'GluGluToWWToTNEN') + \ + nanoGetSampleFiles(mcDirectory, 'GluGluToWWToTNMN') + \ + nanoGetSampleFiles(mcDirectory, 'GluGluToWWToTNTN') + +samples['ggWW'] = { + 'name': files, + 'weight': mcCommonWeight + '*1.53/1.4', + 'FilesPerJob': 8 +} + +######## Vg ######## +files = nanoGetSampleFiles(mcDirectory, 'Wg_AMCNLOFXFX_01J') + \ + nanoGetSampleFiles(mcDirectory, 'ZGToLLG') + +samples['Vg'] = { + 'name': files, + 'weight': mcCommonWeightNoMatch + '*(Gen_ZGstar_mass <= 0)', + 'FilesPerJob': 4, +} + +######## VgS ######## +files = nanoGetSampleFiles(mcDirectory, 'Wg_AMCNLOFXFX_01J') + \ + nanoGetSampleFiles(mcDirectory, 'WZTo3LNu_mllmin0p1') + \ + nanoGetSampleFiles(mcDirectory, 'ZGToLLG') + +samples['VgS'] = { + 'name': files, + 'weight': mcCommonWeight, + 'FilesPerJob': 4, +} +addSampleWeight(samples, 'VgS', 'Wg_AMCNLOFXFX_01J', '((Gen_ZGstar_mass > 0 && Gen_ZGstar_mass <= 0.1))*(gstarLow*0.94)') +addSampleWeight(samples, 'VgS', 'WZTo3LNu_mllmin0p1', '((Gen_ZGstar_mass > 0.1)*(0.601644*58.59/4.666))*(gstarLow*0.94)') +addSampleWeight(samples, 'VgS', 'ZGToLLG', '(Gen_ZGstar_mass > 0)') + + +############ WZ ############ +files = nanoGetSampleFiles(mcDirectory, 'WZTo3LNu_mllmin0p1') + \ + nanoGetSampleFiles(mcDirectory, 'WZTo2Q2L_mllmin4p0') + +samples['WZ'] = { + 'name': files, + 'weight': mcCommonWeight + ' * (gstarHigh)', + 'FilesPerJob': 4, +} +addSampleWeight(samples, 'WZ', 'WZTo3LNu_mllmin0p1', '(0.601644*58.59/4.666)') + + +############ ZZ ############ +files = nanoGetSampleFiles(mcDirectory, 'ZZTo2L2Nu') + \ + nanoGetSampleFiles(mcDirectory, 'ZZTo2Q2L_mllmin4p0') + \ + nanoGetSampleFiles(mcDirectory, 'ZZTo4L') + +samples['ZZ'] = { + 'name': files, + 'weight': mcCommonWeight, + 'FilesPerJob': 2, +} + + +########## VVV ######### +files = nanoGetSampleFiles(mcDirectory, 'ZZZ') + \ + nanoGetSampleFiles(mcDirectory, 'WZZ') + \ + nanoGetSampleFiles(mcDirectory, 'WWZ') + \ + nanoGetSampleFiles(mcDirectory, 'WWW') + +samples['VVV'] = { + 'name': files, + 'weight': mcCommonWeight, + 'FilesPerJob': 8, +} + +########################################### +############# SIGNALS ################## +########################################### + +signals = [] + +############ ggH H->WW ############ +samples['ggH_hww'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'GluGluHToWWTo2L2Nu_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 4, +} +signals.append('ggH_hww') + +############ VBF H->WW ############ +samples['qqH_hww'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'VBFHToWWTo2L2Nu_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 8, +} +signals.append('qqH_hww') + +############ ZH H->WW ############ +samples['ZH_hww'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'HZJ_HToWW_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 8, +} +signals.append('ZH_hww') + +samples['ggZH_hww'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'GluGluZH_HToWWTo2L2Nu_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 8, +} +signals.append('ggZH_hww') + +############ WH H->WW ############ +samples['WH_hww_plus'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'HWplusJ_HToWW_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 4, +} +signals.append('WH_hww_plus') + +samples['WH_hww_minus'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'HWminusJ_HToWW_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 4, +} + +signals.append('WH_hww_minus') + +############ ttH ############ +samples['ttH_hww'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'ttHToNonbb_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 4, +} +signals.append('ttH_hww') + +############ H->TauTau ############ +samples['ggH_htt'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'GluGluHToTauTau_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 20, +} +signals.append('ggH_htt') + +samples['qqH_htt'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'VBFHToTauTau_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 20, +} +signals.append('qqH_htt') + +samples['ZH_htt'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'ZHToTauTau_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 8, +} +signals.append('ZH_htt') + +############ WH H->TauTau ############ +samples['WH_htt_plus'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'WplusHToTauTau_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 4, +} +signals.append('WH_htt_plus') + +samples['WH_htt_minus'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'WminusHToTauTau_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 4, +} +signals.append('WH_htt_minus') + + + +########################################### +################## FAKE ################### +########################################### + +samples['Fake'] = { + 'name': [], + 'weight': 'METFilter_DATA*fakeW', + 'weights': [], + 'isData': ['all'], + 'FilesPerJob': 50 +} + +for _, sd in DataRun: + for pd in DataSets: + tag_data = pd + '_' + sd + + files = nanoGetSampleFiles(fakeDirectory, tag_data) + + samples['Fake']['name'].extend(files) + addSampleWeight(samples, 'Fake', tag_data, DataTrig[pd]) + +samples['Fake']['subsamples'] = { + 'em': 'abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 11*13', + 'mm': 'abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 13*13', + 'ee': 'abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 11*11' +} + + +########################################### +################## DATA ################### +########################################### + +samples['DATA'] = { + 'name': [], + 'weight': 'LepWPCut*METFilter_DATA', + 'weights': [], + 'isData': ['all'], + 'FilesPerJob': 50 +} + +for _, sd in DataRun: + for pd in DataSets: + tag_data = pd + '_' + sd + + files = nanoGetSampleFiles(dataDirectory, tag_data) + + samples['DATA']['name'].extend(files) + addSampleWeight(samples, 'DATA', tag_data, DataTrig[pd]) diff --git a/ControlRegions/SS/Full2017_v9/structure.py b/ControlRegions/SS/Full2017_v9/structure.py new file mode 100644 index 00000000..6f1d9617 --- /dev/null +++ b/ControlRegions/SS/Full2017_v9/structure.py @@ -0,0 +1,156 @@ +# structure configuration for datacard + +# keys here must match keys in samples.py + +structure = {} + +structure['DY'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['top'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['WW'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['WWewk'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['ggWW'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['Wg'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['Zg'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['WgS'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['ZgS'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['WZ'] = { + 'isSignal' : 0, + 'isData' : 0, + 'scaleSampleForDatacard' : 1.138 # NLO -> NNLO k-factor +} + +structure['ZZ'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['VVV'] = { + 'isSignal' : 0, + 'isData' : 0, +} + + +# Higgs +structure['ggH_hww'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['qqH_hww'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['ZH_hww'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['ggZH_hww'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['WH_hww_plus'] = { + 'isSignal' : 1, + 'isData' : 0, + 'scaleSampleForDatacard' : 1 # scaling signal to have sensitivity +} + +structure['WH_hww_minus'] = { + 'isSignal' : 1, + 'isData' : 0, + 'scaleSampleForDatacard' : 1 # scaling signal to have sensitivity +} + +structure['ttH_hww'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['ggH_htt'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['qqH_htt'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['ZH_htt'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['WH_htt_plus'] = { + 'isSignal' : 1, + 'isData' : 0, + 'scaleSampleForDatacard' : 1 # scaling signal to have sensitivity +} + +structure['WH_htt_minus'] = { + 'isSignal' : 1, + 'isData' : 0, + 'scaleSampleForDatacard' : 1 # scaling signal to have sensitivity +} + + +# Fakes +structure['Fake_ee'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['Fake_mm'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['Fake_em'] = { + 'isSignal' : 0, + 'isData' : 0, +} + + +# Data +structure['DATA'] = { + 'isSignal' : 0, + 'isData' : 1 +} diff --git a/ControlRegions/SS/Full2017_v9/variables.py b/ControlRegions/SS/Full2017_v9/variables.py new file mode 100644 index 00000000..d84d13d5 --- /dev/null +++ b/ControlRegions/SS/Full2017_v9/variables.py @@ -0,0 +1,285 @@ +# variables + +# 0 = not fold (default), 1 = fold underflowbin, 2 = fold overflow bin, 3 = fold underflow and overflow + +variables = {} + +variables['events'] = { + 'name' : '1', + 'range' : (1,0,2), + 'xaxis' : 'events', + 'fold' : 3 +} + +################### +# Control variables +################### + +variables['BDTG6_TT'] = { + 'name' : 'BDT_WHSS_TopSemileptonic_v9', + 'range' : (40,-1,1), + 'xaxis' : 'BDT discriminant', + 'fold' : 3, +} + +variables['BDT_WH3l_OSSF_new_v9'] = { + 'name' : 'BDT_WH3l_OSSF_new_v9', + 'range' : (40,-1.,1.), + 'xaxis' : 'MVA discriminant', + 'fold' : 3, +} + +variables['BDT_WH3l_SSSF_new_v9'] = { + 'name' : 'BDT_WH3l_SSSF_new_v9', + 'range' : (40,-1.,1.), + 'xaxis' : 'MVA discriminant', + 'fold' : 3, +} + +variables['pt1'] = { + 'name' : 'Lepton_pt[0]', + 'range' : (30,0,150), + 'xaxis' : 'p_{T} 1st lep', + 'fold' : 0 +} + +variables['pt2'] = { + 'name' : 'Lepton_pt[1]', + 'range' : (30,0,100), + 'xaxis' : 'p_{T} 2nd lep', + 'fold' : 3 +} + +variables['conept1'] = { + 'name' : 'Lepton_conept[0]', + 'range' : (30,0,150), + 'xaxis' : 'p_{T} 1st lep', + 'fold' : 0 +} + +variables['conept2'] = { + 'name' : 'Lepton_conept[1]', + 'range' : (30,0,100), + 'xaxis' : 'p_{T} 2nd lep', + 'fold' : 3 +} + +variables['eta1'] = { + 'name' : 'Lepton_eta[0]', + 'range' : (50,-2.5,2.5), + 'xaxis' : '#eta 1st lep', + 'fold' : 3 +} + +variables['eta2'] = { + 'name' : 'Lepton_eta[1]', + 'range' : (50,-2.5,2.5), + 'xaxis' : '#eta 2nd lep', + 'fold' : 3 +} + +variables['detall'] = { + 'name' : 'abs(Lepton_eta[0] - Lepton_eta[1])', + 'range' : (20,0.,5.), + 'xaxis' : '#Delta#eta_{jj}', + 'fold' : 3 +} + +variables['dphill'] = { + 'name' : 'abs(dphill)', + 'range' : (20, 0,3.2), + 'xaxis' : '#Delta#phi_{ll}', + 'fold' : 3 +} + +variables['drll'] = { + 'name' : 'abs(drll)', + 'range' : (20, 0,5.), + 'xaxis' : '#Delta#R_{ll}', + 'fold' : 3 +} + +variables['mll'] = { + 'name' : 'mll', + 'range' : (25, 0,250), + 'xaxis' : 'm_{ll} [GeV]', + 'fold' : 0 +} + +variables['ptll'] = { + 'name' : 'ptll', + 'range' : (20, 0,200), + 'xaxis' : 'p_{T}^{ll} [GeV]', + 'fold' : 0 +} + + +variables['jetpt1'] = { + 'name' : 'CleanJet_pt[0]*(CleanJet_pt[0]>30)', + 'range' : (40,0,400), + 'xaxis' : 'p_{T} 1st jet', + 'fold' : 2 +} + +variables['jetpt2'] = { + 'name' : 'CleanJet_pt[1]*(CleanJet_pt[1]>30)', + 'range' : (40,0,200), + 'xaxis' : 'p_{T} 2nd jet', + 'fold' : 0 +} + +variables['jeteta1'] = { + 'name' : 'CleanJet_eta[0]*(CleanJet_pt[0]>30)', + 'range' : (50,-5,5), + 'xaxis' : '#eta 1st jet', + 'fold' : 2 +} + +variables['jeteta2'] = { + 'name' : 'CleanJet_eta[1]*(CleanJet_pt[1]>30)', + 'range' : (50,-5,5), + 'xaxis' : '#eta 2nd jet', + 'fold' : 0 +} + +variables['detajj'] = { + 'name' : 'abs(CleanJet_eta[0] - CleanJet_eta[1])*(CleanJet_pt[1]>30)', + 'range' : (20,0.,10.), + 'xaxis' : '#Delta#eta_{jj}', + 'fold' : 3 +} + +variables['dphijj'] = { + 'name' : 'dphijj', + 'range' : (20,0,3.2), + 'xaxis' : '#Delta#phi_{jj}', + 'fold' : 3 +} + +variables['mjj'] = { + 'name' : 'mjj*(CleanJet_pt[1]>30)', + 'range' : (20,0,1000), + 'xaxis' : 'm_{jj} [GeV]', + 'fold' : 3 +} + + +variables['puppimet'] = { + 'name' : 'PuppiMET_pt', + 'range' : (20,0,200), + 'xaxis' : 'PUPPI met [GeV]', + 'fold' : 3 +} + + +variables['mlljj20'] = { + 'name' : 'mlljj20_whss', + 'range' : (20,0,1000), + 'xaxis' : 'mlljj20 [GeV]', + 'fold' : 3 +} + +variables['mth'] = { + 'name' : 'mth', + 'range' : (50,0,250), + 'xaxis' : 'm_{T}^{H} [GeV]', + 'fold' : 0 +} + +variables['mtw1'] = { + 'name' : 'mtw1', + 'range' : (50,0,250), + 'xaxis' : 'm_{T}^{W_{1}} [GeV]', + 'fold' : 3 +} + +variables['mtw2'] = { + 'name' : 'mtw2', + 'range' : (50,0,200), + 'xaxis' : 'm_{T}^{W_{2}} [GeV]', + 'fold' : 3 +} + +variables['dphilljet'] = { + 'name' : 'dphilljet', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilljet', + 'fold' : 3 +} + +variables['dphilljetjet'] = { + 'name' : 'dphilljetjet*(CleanJet_pt[1]>30)', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilljetjet', + 'fold' : 3 +} + +variables['dphilmet'] = { + 'name' : 'dphilmet', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilmet', + 'fold' : 3 +} + +variables['dphilmet2'] = { + 'name' : 'dphilmet2', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilmet2', + 'fold' : 3 +} + +variables['dphillmet'] = { + 'name' : 'dphillmet', + 'range' : (20,0,3.2), + 'xaxis' : 'dphillmet', + 'fold' : 3 +} + +variables['dphilep1jet1'] = { + 'name' : 'dphilep1jet1', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilep1jet1', + 'fold' : 3 +} + +variables['dphilep1jet2'] = { + 'name' : 'dphilep1jet2*(CleanJet_pt[1]>30)', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilep1jet2', + 'fold' : 3 +} + +variables['dphilep2jet1'] = { + 'name' : 'dphilep2jet1', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilep2jet1', + 'fold' : 3 +} + +variables['dphilep2jet2'] = { + 'name' : 'dphilep2jet2*(CleanJet_pt[1]>30)', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilep1jet2', + 'fold' : 3 +} + +variables['dphijjmet'] = { + 'name' : 'dphijjmet', + 'range' : (20,0,3.2), + 'xaxis' : 'dphijjmet', + 'fold' : 3 +} + +variables['ht'] = { + 'name' : 'ht', + 'range' : (30,0,1500), + 'xaxis' : 'ht [GeV]', + 'fold' : 3 +} + +variables['dphijet1met'] = { + 'name' : 'dphijet1met', + 'range' : (20,0,3.2), + 'xaxis' : 'dphijet1met', + 'fold' : 3 +} From b51e778ab0736937e0c5b15143e07f93064145dc Mon Sep 17 00:00:00 2001 From: ntrevisa Date: Thu, 14 Aug 2025 08:45:58 +0200 Subject: [PATCH 09/44] same-sign CR 2016noHIPM --- ControlRegions/SS/2016noHIPM/README.md | 117 +++ ControlRegions/SS/2016noHIPM/aliases.py | 401 ++++++++ ControlRegions/SS/2016noHIPM/configuration.py | 105 ++ ControlRegions/SS/2016noHIPM/cuts.py | 139 +++ ControlRegions/SS/2016noHIPM/nuisances.py | 961 ++++++++++++++++++ ControlRegions/SS/2016noHIPM/plot.py | 336 ++++++ ControlRegions/SS/2016noHIPM/repeat.sh | 38 + ControlRegions/SS/2016noHIPM/samples.py | 395 +++++++ ControlRegions/SS/2016noHIPM/structure.py | 156 +++ ControlRegions/SS/2016noHIPM/variables.py | 285 ++++++ 10 files changed, 2933 insertions(+) create mode 100644 ControlRegions/SS/2016noHIPM/README.md create mode 100644 ControlRegions/SS/2016noHIPM/aliases.py create mode 100644 ControlRegions/SS/2016noHIPM/configuration.py create mode 100644 ControlRegions/SS/2016noHIPM/cuts.py create mode 100644 ControlRegions/SS/2016noHIPM/nuisances.py create mode 100644 ControlRegions/SS/2016noHIPM/plot.py create mode 100644 ControlRegions/SS/2016noHIPM/repeat.sh create mode 100644 ControlRegions/SS/2016noHIPM/samples.py create mode 100644 ControlRegions/SS/2016noHIPM/structure.py create mode 100644 ControlRegions/SS/2016noHIPM/variables.py diff --git a/ControlRegions/SS/2016noHIPM/README.md b/ControlRegions/SS/2016noHIPM/README.md new file mode 100644 index 00000000..67f2cc5c --- /dev/null +++ b/ControlRegions/SS/2016noHIPM/README.md @@ -0,0 +1,117 @@ +# Same-sign control region + +This configuration allows to produce control plots for the two-leptons same-sign and the three-leptons control regions. They are used to check the description of the non-prompt leptons. + +The instructions to run the analysis follow. + +### Load the mkShapesRDF environment + +Here, we assume `PlotsConfigurationsRun3` was installed in the same directory as `mkShapesRDF`. E.g., let's assume we have a `Run3` directory where we installed both `mkShapesRDF` and `PlotsConfigurationsRun3`. + +Then, we can source the `mkShapesRDF` environment using these commands: + + cd ../../../mkShapesRDF/ + + source start.sh + + cd - + +### Produce distributions using mkShapesMulti.py in batch mode + +Compile the configuration. Do it after every change to any file in this directory: + + mkShapesRDF -c 1 + +Produce histograms using batch: + + mkShapesRDF -c 1 -o 0 -f . -b 1 + +Check jobs status: + + mkShapesRDF -o 1 -f . + +Resubmit failed jobs: + + mkShapesRDF -o 1 -f . -r 1 + +Merge rootfiles: + + mkShapesRDF -o 2 -f . + +Plot distributions: + + mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png + +### Perform goodness of fit test + +Create datacards: + + mkDatacards + +Produce workspaces: + + mkdir -p GoF + + cd GoF/ + + VARIABLE=mjj + FINAL_STATE=mm_2j_SS_CR_plus + OUT_NAME=_${FINAL_STATE}_${VARIABLE} + + combineTool.py -M T2W -m 125 \ + -o datacard.root \ + -i ../datacards/hww2l2v_13TeV_WH_SS_${FINAL_STATE}_pt2ge20/${VARIABLE}/datacard.txt \ + --channel-masks \ + -P HiggsAnalysis.CombinedLimit.PhysicsModel:multiSignalModel \ + --PO 'map=.*/WH_h.*_plus:r_WH[1,-10.0,10.0]' \ + --PO 'map=.*/WH_h.*_minus:r_WH[1,-10.0,10.0]' + +Perform fit on real data: + + combineTool.py -M GoodnessOfFit ../datacards/hww2l2v_13TeV_WH_SS_${FINAL_STATE}_pt2ge20/${VARIABLE}/datacard.root \ + --algo=saturated \ + --setParameters r_WH=1 \ + --setParameterRanges r_WH=-5,5 \ + --redefineSignalPOIs r_WH \ + -n ${OUT_NAME} + +Produce toys based on the predictions: + + combineTool.py -M GoodnessOfFit ../datacards/hww2l2v_13TeV_WH_SS_${FINAL_STATE}_pt2ge20/${VARIABLE}/datacard.root \ + --algo=saturated \ + -t 1 \ + -s 0:10:1 \ + --dry-run \ + --job-mode=condor \ + --setParameters r_WH=1 \ + --setParameterRanges r_WH=-5,5 \ + --redefineSignalPOIs r_WH \ + -n ${OUT_NAME} + +Modify the sh file in order to submit 10 jobs running the 100 toys + + sed -i 's/-t 1/-t 10/g' condor_combine_task.sh + +If you run on the KIT machines, remember to adapt the submission file to the HTCondor requirements, by adding these lines to the top of `condor_combine_task.sub`: + + text_to_add=$'universe = container\ncontainer_image = /cvmfs/unpacked.cern.ch/registry.hub.docker.com/cverstege/alma9-gridjob:latest' + + printf "%s\n" "$text_to_add" | cat - condor_combine_task.sub > temp && mv temp condor_combine_task.sub + +Submit the jobs to condor + + condor_submit condor_combine_task.sub + +Once all jobs are done, merge the output and plot the results: + + hadd -f higgsCombine_${OUT_NAME}.GoodnessOfFit.mH120.toys.root higgsCombine${OUT_NAME}.GoodnessOfFit.mH120.*.root + + combineTool.py -M CollectGoodnessOfFit --input higgsCombine${OUT_NAME}.GoodnessOfFit.mH120.root higgsCombine_${OUT_NAME}.GoodnessOfFit.mH120.toys.root -m 125 -o GoF_${OUT_NAME}.json + + plotGof.py GoF_${OUT_NAME}.json --statistic saturated --mass 120.0 -o GoF_${OUT_NAME} --title-right=${OUT_NAME} --range 0 200 + +Clean the mess: + + rm combine* + rm condor* + rm higgsCombine* diff --git a/ControlRegions/SS/2016noHIPM/aliases.py b/ControlRegions/SS/2016noHIPM/aliases.py new file mode 100644 index 00000000..f69e2537 --- /dev/null +++ b/ControlRegions/SS/2016noHIPM/aliases.py @@ -0,0 +1,401 @@ +import os +import copy +import inspect + +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/ControlRegions/SS/2016noHIPM_v9/ + +configurations = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file +configurations = os.path.dirname(configurations) # 2016noHIPM_v9 +configurations = os.path.dirname(configurations) # SS +configurations = os.path.dirname(configurations) # ControlRegions +configurations = os.path.dirname(configurations) # PlotsConfigurationsRun3 + +aliases = {} +aliases = OrderedDict() + +mc = [skey for skey in samples if skey not in ('Fake', 'DATA', 'Fake_from_ntuple')] + + +# LepCut2l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW_tthmva_80 +eleWP = 'mvaFall17V2Iso_WP90' +muWP = 'cut_Tight80x' + +aliases['LepWPCut'] = { + 'expr': 'LepCut2l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight80x*\ + ( ((abs(Lepton_pdgId[0])==13 && Muon_mvaTTH[Lepton_muonIdx[0]]>0.82) || (abs(Lepton_pdgId[0])==11 && Lepton_mvaTTH_UL[0]>0.90)) \ + && ((abs(Lepton_pdgId[1])==13 && Muon_mvaTTH[Lepton_muonIdx[1]]>0.82) || (abs(Lepton_pdgId[1])==11 && Lepton_mvaTTH_UL[1]>0.90)) )', + 'samples': mc + ['DATA'] +} + + +# Lepton SF (not considering the ttHMVA discriminant) +aliases['LepWPSF'] = { + 'expr': 'LepSF2l__ele_'+eleWP+'__mu_'+muWP, + 'samples': mc +} + + +# ttHMVA SFs and uncertainties +aliases['LepWPttHMVASF'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/ttHMVASF_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('ttHMVASF ttH = ttHMVASF(\"2016noHIPM\", 2, \"all\", \"nominal\",\"{configurations}/WH_chargeAsymmetry/UL/data/\");')"], + 'expr' : 'ttH(Lepton_pt, Lepton_eta, Lepton_pdgId)', + 'samples' : mc +} + +aliases['LepWPttHMVASFEleUp'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/ttHMVASF_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('ttHMVASF ttH_EleUp = ttHMVASF(\"2016noHIPM\", 2, \"all\", \"eleUp\" ,\"{configurations}/WH_chargeAsymmetry/UL/data/\");')"], + 'expr' : 'ttH_EleUp(Lepton_pt, Lepton_eta, Lepton_pdgId)', + 'samples' : mc +} +aliases['LepWPttHMVASFEleDown'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/ttHMVASF_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('ttHMVASF ttH_EleDown = ttHMVASF(\"2016noHIPM\", 2, \"all\", \"eleDown\" ,\"{configurations}/WH_chargeAsymmetry/UL/data/\");')"], + 'expr' : 'ttH_EleDown(Lepton_pt, Lepton_eta, Lepton_pdgId)', + 'samples' : mc +} + +aliases['LepWPttHMVASFMuUp'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/ttHMVASF_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('ttHMVASF ttH_MuUp = ttHMVASF(\"2016noHIPM\", 2, \"all\", \"muUp\" ,\"{configurations}/WH_chargeAsymmetry/UL/data/\");')"], + 'expr' : 'ttH_MuUp(Lepton_pt, Lepton_eta, Lepton_pdgId)', + 'samples' : mc +} +aliases['LepWPttHMVASFMuDown'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/ttHMVASF_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('ttHMVASF ttH_MuDown = ttHMVASF(\"2016noHIPM\", 2, \"all\", \"muDown\" ,\"{configurations}/WH_chargeAsymmetry/UL/data/\");')"], + 'expr' : 'ttH_MuDown(Lepton_pt, Lepton_eta, Lepton_pdgId)', + 'samples' : mc +} + + +# # LepCut2l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW_tthmva_80 +# eleWP_fake = 'mvaFall17V2Iso_WP90' +# muWP_fake = 'cut_Tight_HWWW_tthmva_80' + +# # Fake leptons transfer factor +# aliases['fakeW'] = { +# 'expr': 'fakeW2l_ele_'+eleWP_fake+'_mu_'+muWP_fake, +# 'samples': ['Fake'] +# } + +# # And variations - already divided by central values in formulas ! +# aliases['fakeWEleUp'] = { +# 'expr': 'fakeW2l_ele_'+eleWP_fake+'_mu_'+muWP_fake+'_EleUp', +# 'samples': ['Fake'] +# } +# aliases['fakeWEleDown'] = { +# 'expr': 'fakeW2l_ele_'+eleWP_fake+'_mu_'+muWP_fake+'_EleDown', +# 'samples': ['Fake'] +# } +# aliases['fakeWMuUp'] = { +# 'expr': 'fakeW2l_ele_'+eleWP_fake+'_mu_'+muWP_fake+'_MuUp', +# 'samples': ['Fake'] +# } +# aliases['fakeWMuDown'] = { +# 'expr': 'fakeW2l_ele_'+eleWP_fake+'_mu_'+muWP_fake+'_MuDown', +# 'samples': ['Fake'] +# } +# aliases['fakeWStatEleUp'] = { +# 'expr': 'fakeW2l_ele_'+eleWP_fake+'_mu_'+muWP_fake+'_statEleUp', +# 'samples': ['Fake'] +# } +# aliases['fakeWStatEleDown'] = { +# 'expr': 'fakeW2l_ele_'+eleWP_fake+'_mu_'+muWP_fake+'_statEleDown', +# 'samples': ['Fake'] +# } +# aliases['fakeWStatMuUp'] = { +# 'expr': 'fakeW2l_ele_'+eleWP_fake+'_mu_'+muWP_fake+'_statMuUp', +# 'samples': ['Fake'] +# } +# aliases['fakeWStatMuDown'] = { +# 'expr': 'fakeW2l_ele_'+eleWP_fake+'_mu_'+muWP_fake+'_statMuDown', +# 'samples': ['Fake'] +# } + +# Conept +aliases['Lepton_conept'] = { + 'expr': 'LeptonConePt(Lepton_pt, Lepton_pdgId, Lepton_electronIdx, Lepton_muonIdx, Electron_jetRelIso, Muon_jetRelIso)', + 'linesToAdd': [f'#include "{configurations}/utils/macros/LeptonConePt_class.cc"'], + 'samples': mc + ['Fake', 'DATA', 'DATA_unprescaled'] +} + +# Fake leptons transfer factor +aliases['fakeW'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"nominal\", 2, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} + +# And variations - already divided by central values in formulas ! +aliases['fakeWEleUp'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleUp = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"EleUp\", 2, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_EleUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} +aliases['fakeWEleDown'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleDown = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"EleDown\", 2, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_EleDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} + +aliases['fakeWMuUp'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuUp = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"MuUp\", 2, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_MuUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} +aliases['fakeWMuDown'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuDown = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"MuDown\", 2, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_MuDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} + +aliases['fakeWStatEleUp'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleUp = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"StatEleUp\", 2, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_StatEleUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} +aliases['fakeWStatEleDown'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleDown = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"StatEleDown\", 2, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_StatEleDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} + +aliases['fakeWStatMuUp'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuUp = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"StatMuUp\", 2, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_StatMuUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} +aliases['fakeWStatMuDown'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuDown = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"StatMuDown\", 2, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_StatMuDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} + +# # Charge-flip efficiencies and uncertainties +# aliases['ttHMVA_eff_flip_2l'] = { +# 'linesToAdd': ['#include "%s/macros/flipper_eff_class.cc"' % configurations], +# 'linesToProcess': ["ROOT.gInterpreter.Declare('flipper_eff flipper = flipper_eff(\"UL_2017\", 2, \"Total_SF\", \"false\");')"], +# 'expr' : 'flipper(Lepton_pt, Lepton_eta, Lepton_pdgId)', +# 'samples': ['DY','ChargeFlip'], +# } + +# aliases['ttHMVA_eff_err_flip_2l'] = { +# 'linesToAdd': ['#include "%s/macros/flipper_eff_class.cc"' % configurations], +# 'linesToProcess': ["ROOT.gInterpreter.Declare('flipper_eff flipper_unc = flipper_eff(\"UL_2017\", 2, \"Total_SF\", \"false\");')"], +# 'expr' : 'flipper_unc(Lepton_pt, Lepton_eta, Lepton_pdgId)', +# 'samples': ['DY','ChargeFlip'], +# } + + +# No jet with pt > 30 GeV +aliases['zeroJet'] = { + 'expr': 'Alt(CleanJet_pt, 0, 0) < 30.' +} + +aliases['oneJet'] = { + 'expr': 'Alt(CleanJet_pt, 0, 0) > 30. && Alt(CleanJet_pt, 1, 0) < 30.' +} + +aliases['multiJet'] = { + 'expr': 'Alt(CleanJet_pt, 1, 0) > 30.' +} + +########################################################################################### +# b tagging WPs: https://twiki.cern.ch/twiki/bin/view/CMS/BtagRecommendation106XUL16postVFP +########################################################################################### + +# DeepB = DeepCSV +bWP_loose_deepB = '0.1918' +bWP_medium_deepB = '0.5847' +bWP_tight_deepB = '0.8767' + +# DeepFlavB = DeepJet +bWP_loose_deepFlavB = '0.0480' +bWP_medium_deepFlavB = '0.2489' +bWP_tight_deepFlavB = '0.6377' + +# Actual algo and WP definition. BE CONSISTENT!! +bAlgo = 'DeepB' # ['DeepB', 'DeepFlavB' ] +bWP = bWP_medium_deepB # [bWP_loose_deepB, bWP_loose_deepFlavB] +bSF = 'deepcsv' # ['deepcsv', 'deepjet' ] + +# b veto +aliases['bVeto'] = { + 'expr': 'Sum(CleanJet_pt > 20. && abs(CleanJet_eta) < 2.5 && Take(Jet_btag{}, CleanJet_jetIdx) > {}) == 0'.format(bAlgo, bWP) +} + +aliases['bVetoSF'] = { + 'expr': 'TMath::Exp(Sum(LogVec((CleanJet_pt>20 && abs(CleanJet_eta)<2.5)*Take(Jet_btagSF_{}_shape, CleanJet_jetIdx)+1*(CleanJet_pt<20 || abs(CleanJet_eta)>2.5))))'.format(bSF), + 'samples': mc +} + +# At least one b-tagged jet +aliases['bReq'] = { + 'expr': 'Sum(CleanJet_pt > 30. && abs(CleanJet_eta) < 2.5 && Take(Jet_btag{}, CleanJet_jetIdx) > {}) >= 1'.format(bAlgo, bWP) +} + +aliases['bReqSF'] = { + 'expr': 'TMath::Exp(Sum(LogVec((CleanJet_pt>30 && abs(CleanJet_eta)<2.5)*Take(Jet_btagSF_{}_shape, CleanJet_jetIdx)+1*(CleanJet_pt<30 || abs(CleanJet_eta)>2.5))))'.format(bSF), + 'samples': mc +} + +# Top control region +aliases['topcr'] = { + 'expr': 'mtw2>30 && mll>50 && ((zeroJet && !bVeto) || bReq)' +} + +# WW control region +aliases['wwcr'] = { + 'expr': 'mth>60 && mtw2>30 && mll>100 && bVeto' +} + +# Overall b tag SF +aliases['btagSF'] = { + 'expr': '(bVeto || (topcr && zeroJet))*bVetoSF + (topcr && !zeroJet)*bReqSF', + 'samples': mc +} + +for shift in ['jesAbsolute', 'jesAbsolute_2016', 'jesBBEC1', 'jesBBEC1_2016', 'jesEC2', + 'jesEC2_2016', 'jesFlavorQCD', 'jesHF', 'jesHF_2016', 'jesRelativeBal', + 'jesRelativeSample_2016']: + for var in ['up','down']: + aliases[f'Jet_btagSF_{bSF}_shape_{shift.replace("jes","JES")}{var[:2]}'] = { + 'expr' : f'Jet_btagSF_{bSF}_shape_{var}_{shift}', + 'samples' : mc + } + +for shift in ['jesAbsolute', 'jesAbsolute_2016', 'jesBBEC1', 'jesBBEC1_2016', 'jesEC2', + 'jesEC2_2016', 'jesFlavorQCD', 'jesHF', 'jesHF_2016', 'jesRelativeBal', + 'jesRelativeSample_2016', 'lf', 'hf', 'lfstats1', 'lfstats2', + 'hfstats1', 'hfstats2', 'cferr1', 'cferr2']: + + for targ in ['bVeto', 'bReq']: + alias = aliases['%sSF%sup' % (targ, shift)] = copy.deepcopy(aliases['%sSF' % targ]) + alias['expr'] = alias['expr'].replace('btagSF_{}_shape'.format(bSF), 'btagSF_{}_shape_up_{}'.format(bSF, shift)) + + alias = aliases['%sSF%sdown' % (targ, shift)] = copy.deepcopy(aliases['%sSF' % targ]) + alias['expr'] = alias['expr'].replace('btagSF_{}_shape'.format(bSF), 'btagSF_{}_shape_down_{}'.format(bSF, shift)) + + aliases['btagSF%sup' % shift] = { + 'expr': aliases['btagSF']['expr'].replace('SF', 'SF' + shift + 'up'), + 'samples': mc + } + + aliases['btagSF%sdown' % shift] = { + 'expr': aliases['btagSF']['expr'].replace('SF', 'SF' + shift + 'down'), + 'samples': mc + } + +#################################################################################### +# End of b tagging pippone +#################################################################################### + + +# Need to redefine PUID scale factors, so that they are double and not vectors +aliases['Jet_PUIDSF'] = { + 'expr' : 'TMath::Exp(Sum((Jet_jetId>=2)*LogVec(Jet_PUIDSF_loose)))', + 'samples': mc +} + +aliases['Jet_PUIDSF_up'] = { + 'expr' : 'TMath::Exp(Sum((Jet_jetId>=2)*LogVec(Jet_PUIDSF_loose_up)))', + 'samples': mc +} + +aliases['Jet_PUIDSF_down'] = { + 'expr' : 'TMath::Exp(Sum((Jet_jetId>=2)*LogVec(Jet_PUIDSF_loose_down)))', + 'samples': mc +} + + +aliases['gstarLow'] = { + 'expr': 'Gen_ZGstar_mass > 0 && Gen_ZGstar_mass < 4', + 'samples': 'VgS' +} + +aliases['gstarHigh'] = { + 'expr': 'Gen_ZGstar_mass < 0 || Gen_ZGstar_mass > 4', + 'samples': 'WZ' +} + +# gen-matching to prompt only (GenLepMatch2l matches to *any* gen lepton) +aliases['PromptGenLepMatch2l'] = { + 'expr': 'Alt(Lepton_promptgenmatched, 0, 0) * Alt(Lepton_promptgenmatched, 1, 0)', + 'samples': mc +} + +# # PostProcessing did not create (anti)topGenPt for ST samples with _ext1 +# lastcopy = (1 << 13) + +aliases['Top_pTrw'] = { + 'expr': '(topGenPt * antitopGenPt > 0.) * (TMath::Sqrt(TMath::Exp(0.0615 - 0.0005 * topGenPt) * TMath::Exp(0.0615 - 0.0005 * antitopGenPt))) + (topGenPt * antitopGenPt <= 0.)', + 'samples': ['top'] +} + +# data/MC scale factors +aliases['SFweight'] = { + 'expr': ' * '.join(['SFweight2l', 'LepWPCut', 'LepWPSF','Jet_PUIDSF', 'btagSF', 'LepWPttHMVASF']), + 'samples': mc, +} + +# variations +aliases['SFweightEleUp'] = { + 'expr': 'LepSF2l__ele_'+eleWP+'__Up', + 'samples': mc +} +aliases['SFweightEleDown'] = { + 'expr': 'LepSF2l__ele_'+eleWP+'__Do', + 'samples': mc +} + +aliases['SFweightMuUp'] = { + 'expr': 'LepSF2l__mu_'+muWP+'__Up', + 'samples': mc +} +aliases['SFweightMuDown'] = { + 'expr': 'LepSF2l__mu_'+muWP+'__Do', + 'samples': mc +} + +# TriggerSFWeight_2l:TriggerSFWeight_2l_u:TriggerSFWeight_2l_d +aliases['SFtriggUp'] = { + 'expr': 'TriggerSFWeight_2l_u/TriggerSFWeight_2l', + 'samples': mc +} +aliases['SFtriggDown'] = { + 'expr': 'TriggerSFWeight_2l_d/TriggerSFWeight_2l', + 'samples': mc +} + +# Evaluate BDT discriminant +aliases['BDT_WHSS_TopSemileptonic_v9'] = { + 'linesToAdd' : ['#include "%s/ControlRegions/SS/macros/BDT_WHSS_TopSemileptonic_v9_class.cc"' % configurations], + 'linesToProcess' : ["ROOT.gInterpreter.Declare('BDT_WHSS_TopSemileptonic_v9 BDT_WHSS = BDT_WHSS_TopSemileptonic_v9(\"BDTG_6\",\"{0}/ControlRegions/SS/data/BDT/2016noHIPM/WHSS/weights/TMVAClassification_BDTG_6.weights.xml\");')".format(configurations)], + 'expr' : 'BDT_WHSS(mll,mjj,mtw1,mtw2,ptll,mlljj20_whss,PuppiMET_pt,dphill,dphijj,dphillmet,dphilmet2,dphijet1met,CleanJet_pt,Jet_btagDeepB,CleanJet_jetIdx)', + 'samples' : mc + ['DATA','Fake'], +} + +aliases['BDT_WH3l_OSSF_new_v9'] = { + 'linesToAdd' : ['#include "%s/ControlRegions/SS/macros/BDT_WH3l_OSSF_v9_class.cc"' % configurations], + 'linesToProcess' : ["ROOT.gInterpreter.Declare('BDT_WH3l_OSSF_v9 BDT_WH3l_OSSF = BDT_WH3l_OSSF_v9(\"BDTG4C3\",\"{0}/ControlRegions/SS/data/BDT/2016noHIPM/WH3l/OSSF/weights/TMVAClassification_BDTG4C3.weights.xml\");')".format(configurations)], + 'expr' : 'BDT_WH3l_OSSF(WH3l_dphilllmet,WH3l_mOSll,WH3l_ptOSll,WH3l_drOSll,WH3l_ZVeto,WH3l_mtlmet,WH3l_dphilmet,WH3l_ptWWW,PuppiMET_pt,Lepton_pt)', + 'samples' : mc + ['DATA','Fake'], +} + +aliases['BDT_WH3l_SSSF_new_v9'] = { + 'linesToAdd' : ['#include "%s/ControlRegions/SS/macros/BDT_WH3l_SSSF_v9_class.cc"' % configurations], + 'linesToProcess' : ["ROOT.gInterpreter.Declare('BDT_WH3l_SSSF_v9 BDT_WH3l_SSSF = BDT_WH3l_SSSF_v9(\"BDTG4C3\",\"{0}/ControlRegions/SS/data/BDT/2016noHIPM/WH3l/SSSF/weights/TMVAClassification_BDTG4SK01_05shrinkage.weights.xml\");')".format(configurations)], + 'expr' : 'BDT_WH3l_SSSF(WH3l_dphilllmet,WH3l_mOSll,WH3l_ptOSll,WH3l_drOSll,WH3l_dphilmet,WH3l_ptWWW,PuppiMET_pt,Lepton_pt)', + 'samples' : mc + ['DATA','Fake'], +} diff --git a/ControlRegions/SS/2016noHIPM/configuration.py b/ControlRegions/SS/2016noHIPM/configuration.py new file mode 100644 index 00000000..8e63091c --- /dev/null +++ b/ControlRegions/SS/2016noHIPM/configuration.py @@ -0,0 +1,105 @@ +# Configuration file for two-leptons same-sign and three-leptons using the UL 2016noHIPM dataset + +import sys,inspect + +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' + +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/ControlRegions/SS/2016noHIPM_v9/ + +configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file +configurations_nuisance = os.path.dirname(configurations_nuisance) # 2016noHIPM_v9 +configurations_nuisance = os.path.dirname(configurations_nuisance) # SS +configurations_nuisance = os.path.dirname(configurations_nuisance) # ControlRegions + +# Tag used to identify the configuration folder version +tag = 'SS_2016noHIPM_v9' + +# File to use as runner script, default uses mkShapesRDF.shapeAnalysis.runner, otherwise specify path to script +runnerFile = "default" + +# Output file name +outputFile = "mkShapes__{}.root".format(tag) + +# Path to ouput folder +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +if site == 'kit': + outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" + +# Path to batch folder (used for condor submission) +batchFolder = "condor" + +# Path to configuration folder (will contain all the compiled configuration files) +configsFolder = "configs" + +# Luminosity to normalize to (in 1/fb) +# https://github.com/latinos/LatinoAnalysis/blob/UL_production/NanoGardener/python/data/TrigMaker_cfg.py#L239 (#311 #377 #445) +# 0.418771191 + 7.653261227 + 7.866107374 + 0.8740119304 = 16.8121517224 +lumi = 16.81 + +# File with dict of aliases to define +aliasesFile = "aliases.py" + +# File with dict of variables +variablesFile = "variables.py" + +# File with dict of cuts +cutsFile = "cuts.py" + +# File with dict of samples +samplesFile = "samples.py" + +# File with dict of samples for plotting +plotFile = 'plot.py' + +# File with dict of structure (used to define processes in combine) +structureFile = "structure.py" + +# Nuisances file for mkDatacards and for mkShape +nuisancesFile = "nuisances.py" + +# Path to folder where to save plots +plotPath = 'plots_' + tag + +# This lines are executed right before the runner on the condor node +mountEOS = [] + +# List of imports to import when compiling the whole configuration folder, it should not contain imports used by configuration.py +imports = ["os", "glob", ("collections", "OrderedDict"), "ROOT"] + +# List of files to compile +filesToExec = [ + samplesFile, + aliasesFile, + variablesFile, + cutsFile, + plotFile, + nuisancesFile, + structureFile, +] + +# List of variables to keep in the compiled configuration folder +varsToKeep = [ + "batchVars", + "outputFolder", + "batchFolder", + "configsFolder", + "outputFile", + "runnerFile", + "tag", + "samples", + "aliases", + "variables", + ("cuts", {"cuts": "cuts", "preselections": "preselections"}), + ("plot", {"plot": "plot", "groupPlot": "groupPlot", "legend": "legend"}), + "nuisances", + "structure", + "lumi", +] + +# List of variables to keep in the batch submission script (script.py) +batchVars = varsToKeep[varsToKeep.index("samples") :] + +varsToKeep += ['plotPath'] diff --git a/ControlRegions/SS/2016noHIPM/cuts.py b/ControlRegions/SS/2016noHIPM/cuts.py new file mode 100644 index 00000000..5b25d208 --- /dev/null +++ b/ControlRegions/SS/2016noHIPM/cuts.py @@ -0,0 +1,139 @@ +cuts = {} + +# cuts +preselections = 'mll>12 \ + && Lepton_pt[0]>25 \ + && Lepton_pt[1]>10 \ + && (abs(Lepton_pdgId[1])==13 || Lepton_pt[1]>13) \ + && abs(Lepton_eta[0])<2.5 && abs(Lepton_eta[1])<2.5 \ + && bVeto \ +' + + +########################################################################### +# B-veto: pre-selection compared to the WH charge-asymmetry signal region # +########################################################################### + +# mu-mu +cuts['hww2l2v_13TeV_WH_SS_mm_2j'] = { + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 13*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30', + 'categories' : { + 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]>=20', + 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]>=20', + # 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20', + # 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20', + } +} + +# mu-e +cuts['hww2l2v_13TeV_WH_SS_em_2j'] = { + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30', + 'categories' : { + 'SS_CR_plus_pt2ge20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]>=20', + 'SS_CR_minus_pt2ge20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]>=20', + # 'SS_CR_plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20', + # 'SS_CR_minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20', + } +} + +# e-e +cuts['hww2l2v_13TeV_WH_SS_ee_2j'] = { + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*11) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && abs(mll-91.2)>15', + 'categories' : { + 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20', + 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20', + # 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20', + # 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20', + } +} + + +## SR 1jet + +# mu-mu +cuts['hww2l2v_13TeV_WH_SS_mm_1j'] = { + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 13*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)<30', + 'categories' : { + 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]>=20', + 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]>=20', + # 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20', + # 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20', + } +} + +# mu-e +cuts['hww2l2v_13TeV_WH_SS_em_1j'] = { + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)<30', + 'categories' : { + 'SS_CR_plus_pt2ge20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]>=20', + 'SS_CR_minus_pt2ge20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]>=20', + # 'SS_CR_plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20', + # 'SS_CR_minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20', + } +} + +# e-e +cuts['hww2l2v_13TeV_WH_SS_ee_1j'] = { + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*11) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)<30 && abs(mll-91.2)>15', + 'categories' : { + 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20', + 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20', + # 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20', + # 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20', + } +} + + +## SR 0jet + +# mu-mu +cuts['hww2l2v_13TeV_WH_SS_mm_0j'] = { + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 13*13) && nLepton==2 && Alt(CleanJet_pt,0,0)<30', + 'categories' : { + 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]>=20', + 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]>=20', + # 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20', + # 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20', + } +} + +# mu-e +cuts['hww2l2v_13TeV_WH_SS_em_0j'] = { + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*13) && nLepton==2 && Alt(CleanJet_pt,0,0)<30', + 'categories' : { + 'SS_CR_plus_pt2ge20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]>=20', + 'SS_CR_minus_pt2ge20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]>=20', + # 'SS_CR_plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20', + # 'SS_CR_minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20', + } +} + +# e-e +cuts['hww2l2v_13TeV_WH_SS_ee_0j'] = { + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*11) && nLepton==2 && Alt(CleanJet_pt,0,0)<30 && abs(mll-91.2)>15', + 'categories' : { + 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20', + 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20', + # 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20', + # 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20', + } +} + + +## SR 3 leptons: only 0 jet bin +cuts['hww2l2v_13TeV_WH_3l'] = { + 'expr' : 'nLepton>=3 && Alt(Lepton_pt,3,0)<10 && Alt(CleanJet_pt,0,0)<30 && (WH3l_mOSll[0]<0 || WH3l_mOSll[0]>12) && (WH3l_mOSll[1]<0 || WH3l_mOSll[1]>12) && (WH3l_mOSll[2]<0 || WH3l_mOSll[2]>12)', + 'categories' : { + 'sssf_plus_pt2ge20' : 'WH3l_flagOSSF == 0 && abs(WH3l_chlll) == 1 && Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]>0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15', + 'sssf_minus_pt2ge20' : 'WH3l_flagOSSF == 0 && abs(WH3l_chlll) == 1 && Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]<0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15', + 'ossf_plus_pt2ge20' : 'WH3l_flagOSSF == 1 && abs(WH3l_chlll) == 1 && Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]>0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15 && WH3l_ZVeto > 20 && PuppiMET_pt > 40', + 'ossf_minus_pt2ge20' : 'WH3l_flagOSSF == 1 && abs(WH3l_chlll) == 1 && Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]<0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15 && WH3l_ZVeto > 20 && PuppiMET_pt > 40', + } +} + +# mlljj20_whss: +# inv_mass of: (jet1, jet2, 2*closest_lep_to_jets) +# jets are considered with pT > 20 GeV + +# Definitions of WH3l variables: +# https://github.com/latinos/LatinoAnalysis/blob/76e7c4b93aa5f056c92440d4e8d24e7de749c8fe/NanoGardener/python/modules/l3KinProducer.py diff --git a/ControlRegions/SS/2016noHIPM/nuisances.py b/ControlRegions/SS/2016noHIPM/nuisances.py new file mode 100644 index 00000000..c08e6781 --- /dev/null +++ b/ControlRegions/SS/2016noHIPM/nuisances.py @@ -0,0 +1,961 @@ +import sys + +nuisances = {} + +mcProduction = 'Summer20UL16_106x_nAODv9_noHIPM_Full2016v9' +dataReco = 'Run2016_UL2016_nAODv9_noHIPM_Full2016v9' +mcSteps = 'MCl1loose2016v9__MCCorr2016v9NoJERInHorn__l2tightOR2016v9' +fakeSteps = 'DATAl1loose2016v9__l2loose__fakeW' +dataSteps = 'DATAl1loose2016v9__l2loose__l2tightOR2016v9' + +treeBaseDir = '/eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano' +limitFiles = -1 + +mc = [skey for skey in samples if skey not in ('Fake', 'DATA','ChargeFlip')] + +redirector = "" + +useXROOTD = False + +def makeMCDirectory(var=''): + if var== '': + print(os.path.join(treeBaseDir, mcProduction, mcSteps)) + return os.path.join(treeBaseDir, mcProduction, mcSteps) + else: + print(os.path.join(treeBaseDir, mcProduction, mcSteps + '__' + var)) + return os.path.join(treeBaseDir, mcProduction, mcSteps + '__' + var) + +mcDirectory = makeMCDirectory() +fakeDirectory = os.path.join(treeBaseDir, dataReco, fakeSteps) +dataDirectory = os.path.join(treeBaseDir, dataReco, dataSteps) + +################################ EXPERIMENTAL UNCERTAINTIES ################################# + +#### Luminosity + +# https://twiki.cern.ch/twiki/bin/view/CMS/LumiRecommendationsRun2#LumiComb +# Uncorrelated 2016 1.0 +# Uncorrelated 2017 2.0 +# Uncorrelated 2018 1.5 +# Correlated 2016, 2017, 2018 0.6, 0.9, 2.0 +# Correlated 2017, 2018 0.6, 0.2 + +nuisances['lumi_Uncorrelated'] = { + 'name' : 'lumi_13TeV_2016', + 'type' : 'lnN', + 'samples' : dict((skey, '1.010') for skey in mc if skey not in ['WZ']) +} + +nuisances['lumi_Correlated_Run2'] = { + 'name' : 'lumi_13TeV_correlated', + 'type' : 'lnN', + 'samples' : dict((skey, '1.006') for skey in mc if skey not in ['WZ']) +} + + +### Fakes + +# Per lepton +nuisances['fake_ele'] = { + 'name' : 'CMS_WH_hww_fake_e_2016', + 'kind' : 'weight', + 'type' : 'shape', + 'samples' : { + 'Fake_ee' : ['fakeWEleUp', 'fakeWEleDown'], + 'Fake_em' : ['fakeWEleUp', 'fakeWEleDown'], + } +} + +nuisances['fake_ele_stat'] = { + 'name' : 'CMS_WH_hww_fake_stat_e_2016', + 'kind' : 'weight', + 'type' : 'shape', + 'samples' : { + 'Fake_ee' : ['fakeWStatEleUp', 'fakeWStatEleDown'], + 'Fake_em' : ['fakeWStatEleUp', 'fakeWStatEleDown'], + } +} + + +nuisances['fake_mu'] = { + 'name' : 'CMS_WH_hww_fake_m_2016', + 'kind' : 'weight', + 'type' : 'shape', + 'samples' : { + 'Fake_mm' : ['fakeWMuUp', 'fakeWMuDown'], + 'Fake_em' : ['fakeWMuUp', 'fakeWMuDown'], + } +} + +nuisances['fake_mu_stat'] = { + 'name' : 'CMS_WH_hww_fake_stat_m_2016', + 'kind' : 'weight', + 'type' : 'shape', + 'samples' : { + 'Fake_mm' : ['fakeWStatMuUp', 'fakeWStatMuDown'], + 'Fake_em' : ['fakeWStatMuUp', 'fakeWStatMuDown'], + } +} + +# Normalization per final state +jet_bins = ['0j','1j','2j'] +channels = ['ee', 'em', 'mm'] +charges = ['plus', 'minus'] + +eta_regimes = ['barrel', 'endcap'] +pt_regimes = ['high', 'medium'] + +fake_syst_dict = { + 'endcap_medium_pt': ['1.0*(abs(Lepton_eta[1])<=1.479) + 1.0*(Lepton_pt[1]> 35) + 1.1*(abs(Lepton_eta[1])> 1.479 && Lepton_pt[1]<=35)', + '1.0*(abs(Lepton_eta[1])<=1.479) + 1.0*(Lepton_pt[1]> 35) + 1.0/1.1*(abs(Lepton_eta[1])> 1.479 && Lepton_pt[1]<=35)'], + 'barrel_medium_pt': ['1.0*(abs(Lepton_eta[1])> 1.479) + 1.0*(Lepton_pt[1]> 35) + 1.1*(abs(Lepton_eta[1])<=1.479 && Lepton_pt[1]<=35)', + '1.0*(abs(Lepton_eta[1])> 1.479) + 1.0*(Lepton_pt[1]> 35) + 1.0/1.1*(abs(Lepton_eta[1])<=1.479 && Lepton_pt[1]<=35)'], + 'endcap_high_pt' : ['1.0*(abs(Lepton_eta[1])<=1.479) + 1.0*(Lepton_pt[1]<=35) + 1.1*(abs(Lepton_eta[1])> 1.479 && Lepton_pt[1]> 35)', + '1.0*(abs(Lepton_eta[1])<=1.479) + 1.0*(Lepton_pt[1]<=35) + 1.0/1.1*(abs(Lepton_eta[1])> 1.479 && Lepton_pt[1]> 35)'], + 'barrel_high_pt' : ['1.0*(abs(Lepton_eta[1])> 1.479) + 1.0*(Lepton_pt[1]<=35) + 1.1*(abs(Lepton_eta[1])<=1.479 && Lepton_pt[1]> 35)', + '1.0*(abs(Lepton_eta[1])> 1.479) + 1.0*(Lepton_pt[1]<=35) + 1.0/1.1*(abs(Lepton_eta[1])<=1.479 && Lepton_pt[1]> 35)'], +} + +for jet_bin in jet_bins: + for channel in channels: + for charge in charges: + + nuisances[f'CMS_WH_hww_fake_syst_{jet_bin}_{channel}_{charge}'] = { + 'name' : f'CMS_WH_hww_fake_syst_{jet_bin}_{channel}_{charge}_2016', + 'samples' : { + f'Fake_{channel}' : '1.30', + }, + 'type' : 'lnN', + 'cuts' : [ + f'hww2l2v_13TeV_WH_SS_{channel}_{jet_bin}_SS_CR_{charge}_pt2ge20', + ], + } + + # for eta_regime in eta_regimes: + # for pt_regime in pt_regimes: + # nuisances[f'CMS_WH_hww_fake_syst_{eta_regime}_{pt_regime}_{channel}'] = { + # 'name' : f'CMS_WH_hww_fake_syst_{eta_regime}_{pt_regime}_{channel}_2016', + # 'samples' : { + # f'Fake_{channel}' : f'{eta_regime}_{pt_regime}_pt', + # }, + # 'type' : 'shape', + # 'cuts' : [cut for cut in cuts if (f'_{channel}_' in cut)], + # } + + +flavors = ['sssf', 'ossf'] + +for flavor in flavors: + for charge in charges: + + nuisances[f'CMS_WH_hww_fake_syst_{flavor}_{charge}'] = { + 'name' : f'CMS_WH_hww_fake_syst_{flavor}_{charge}_2016', + 'samples' : { + 'Fake' : '1.30', + }, + 'type' : 'lnN', + 'cuts' : [ + f'hww2l2v_13TeV_WH_3l_{flavor}_{charge}_pt2ge20', + ], + } + + # for eta_regime in eta_regimes: + # for pt_regime in pt_regimes: + # nuisances[f'CMS_WH_hww_fake_syst_{eta_regime}_{pt_regime}_{flavor}'] = { + # 'name' : f'CMS_WH_hww_fake_syst_{eta_regime}_{pt_regime}_{flavor}_2016', + # 'samples' : { + # f'Fake' : f'{eta_regime}_{pt_regime}_pt', + # }, + # 'type' : 'shape', + # 'cuts' : [cut for cut in cuts if (f'_{flavor}_' in cut)], + # } + + +# ###### B-tagger + +# for shift in ['lf', 'hf', 'hfstats1', 'hfstats2', 'lfstats1', 'lfstats2', 'cferr1', 'cferr2']: +# btag_syst = ['(btagSF%sup)/(btagSF)' % shift, '(btagSF%sdown)/(btagSF)' % shift] + +# name = 'CMS_btag_%s' % shift +# if 'stats' in shift: +# name += '_2017' + +# nuisances['btag_shape_%s' % shift] = { +# 'name' : name, +# 'kind' : 'weight', +# 'type' : 'shape', +# 'samples' : dict((skey, btag_syst) for skey in mc), +# } + +# ##### Trigger Scale Factors + +# trig_syst = ['TriggerSFWeight_2l_u/TriggerSFWeight_2l', 'TriggerSFWeight_2l_d/TriggerSFWeight_2l'] + +# nuisances['trigg'] = { +# 'name' : 'CMS_eff_hwwtrigger_2017', +# 'kind' : 'weight', +# 'type' : 'shape', +# 'samples' : dict((skey, trig_syst) for skey in mc) +# } + +# ##### Electron Efficiency and energy scale + +# nuisances['eff_e'] = { +# 'name' : 'CMS_eff_e_2017', +# 'kind' : 'weight', +# 'type' : 'shape', +# 'samples' : dict((skey, ['SFweightEleUp', 'SFweightEleDown']) for skey in mc) +# } + +# nuisances['eff_ttHMVA_e'] = { +# 'name' : 'CMS_eff_ttHMVA_e_2017', +# 'kind' : 'weight', +# 'type' : 'shape', +# 'samples' : dict((skey, ['LepWPttHMVASFEleUp', 'LepWPttHMVASFEleDown']) for skey in mc) +# } + +# nuisances['electronpt'] = { +# 'name' : 'CMS_scale_e_2017', +# 'kind' : 'suffix', +# 'type' : 'shape', +# 'mapUp' : 'ElepTup', +# 'mapDown' : 'ElepTdo', +# 'samples' : dict((skey, ['1', '1']) for skey in mc), +# 'folderUp' : makeMCDirectory('ElepTup_suffix'), +# 'folderDown' : makeMCDirectory('ElepTdo_suffix'), +# 'AsLnN' : '0' +# } + +# ##### Muon Efficiency and energy scale + +# nuisances['eff_m'] = { +# 'name' : 'CMS_eff_m_2017', +# 'kind' : 'weight', +# 'type' : 'shape', +# 'samples' : dict((skey, ['SFweightMuUp', 'SFweightMuDown']) for skey in mc) +# } + +# nuisances['eff_ttHMVA_m'] = { +# 'name' : 'CMS_eff_ttHMVA_m_2017', +# 'kind' : 'weight', +# 'type' : 'shape', +# 'samples' : dict((skey, ['LepWPttHMVASFMuUp', 'LepWPttHMVASFMuDown']) for skey in mc) +# } + +# nuisances['muonpt'] = { +# 'name' : 'CMS_scale_m_2017', +# 'kind' : 'suffix', +# 'type' : 'shape', +# 'mapUp' : 'MupTup', +# 'mapDown' : 'MupTdo', +# 'samples' : dict((skey, ['1', '1']) for skey in mc), +# 'folderUp' : makeMCDirectory('MupTup_suffix'), +# 'folderDown' : makeMCDirectory('MupTdo_suffix'), +# 'AsLnN' : '0' +# } + +# ##### Jet energy scale +# jes_systs = ['JESAbsolute','JESAbsolute_2017','JESBBEC1','JESBBEC1_2017','JESEC2','JESEC2_2017','JESFlavorQCD','JESHF','JESHF_2017','JESRelativeBal','JESRelativeSample_2017'] + +# for js in jes_systs: + +# nuisances[js] = { +# 'name' : 'CMS_scale_' + js.replace("JES","j_"), +# 'kind' : 'suffix', +# 'type' : 'shape', +# 'mapUp' : js + 'up', +# 'mapDown' : js + 'do', +# 'samples' : dict((skey, ['1', '1']) for skey in mc), +# 'folderUp' : makeMCDirectory('RDF__JESup_suffix'), +# 'folderDown': makeMCDirectory('RDF__JESdo_suffix'), +# 'reweight' : ['btagSF'+js.replace('JES','jes')+'up/btagSF','btagSF'+js.replace('JES','jes')+'down/btagSF'], +# 'AsLnN' : '0' +# } + +# ##### Jet energy resolution +# nuisances['JER'] = { +# 'name' : 'CMS_res_j_2017', +# 'kind' : 'suffix', +# 'type' : 'shape', +# 'mapUp' : 'JERup', +# 'mapDown' : 'JERdo', +# 'samples' : dict((skey, ['1', '1']) for skey in mc), +# 'folderUp' : makeMCDirectory('JERup_suffix'), +# 'folderDown': makeMCDirectory('JERdo_suffix'), +# 'AsLnN' : '0' +# } + +# ##### MET unclustered energy + +# # metUp.PuppiMET_pt_METup +# nuisances['met'] = { +# 'name' : 'CMS_scale_met_2017', +# 'kind' : 'suffix', +# 'type' : 'shape', +# 'mapUp' : 'METup', +# 'mapDown' : 'METdo', +# 'samples' : dict((skey, ['1', '1']) for skey in mc), +# 'folderUp' : makeMCDirectory('METup_suffix'), +# 'folderDown': makeMCDirectory('METdo_suffix'), +# 'AsLnN' : '0' +# } + + +# ##### Pileup + +# # puWeight_UL2017 +# nuisances['PU'] = { +# 'name' : 'CMS_pileup_2017', +# 'kind' : 'weight', +# 'type' : 'shape', +# 'samples' : { +# 'DY' : ['0.998687*(puWeightUp/puWeight)', '1.001976*(puWeightDown/puWeight)'], +# 'top' : ['1.002595*(puWeightUp/puWeight)', '0.997470*(puWeightDown/puWeight)'], +# 'WW' : ['1.004449*(puWeightUp/puWeight)', '0.995660*(puWeightDown/puWeight)'], +# 'WWewk' : ['1.002122*(puWeightUp/puWeight)', '0.998087*(puWeightDown/puWeight)'], +# 'ggWW' : ['1.004870*(puWeightUp/puWeight)', '0.995315*(puWeightDown/puWeight)'], +# 'WZ' : ['0.999330*(puWeightUp/puWeight)', '1.000992*(puWeightDown/puWeight)'], +# 'ZZ' : ['0.999469*(puWeightUp/puWeight)', '1.000751*(puWeightDown/puWeight)'], +# 'VVV' : ['1.003485*(puWeightUp/puWeight)', '0.997561*(puWeightDown/puWeight)'], +# 'ggH_hww' : ['1.003677*(puWeightUp/puWeight)', '0.995996*(puWeightDown/puWeight)'], +# 'qqH_hww' : ['1.003747*(puWeightUp/puWeight)', '0.995878*(puWeightDown/puWeight)'], +# }, +# 'AsLnN' : '0', +# } + +# ### PU ID SF uncertainty + +# # puid_syst = ['Jet_PUIDSF_loose_up/Jet_PUIDSF_loose', 'Jet_PUIDSF_loose_down/Jet_PUIDSF_loose'] +# puid_syst = ['Jet_PUIDSF_up/Jet_PUIDSF', 'Jet_PUIDSF_down/Jet_PUIDSF'] + +# nuisances['jetPUID'] = { +# 'name' : 'CMS_eff_j_PUJET_id_2017', +# 'kind' : 'weight', +# 'type' : 'shape', +# 'samples' : dict((skey, puid_syst) for skey in mc) +# } + +# ### PS and UE + +# nuisances['PS_ISR'] = { +# 'name' : 'PS_WH_hww_ISR', +# 'kind' : 'weight', +# 'type' : 'shape', +# 'samples' : dict((skey, ['PSWeight[2]', 'PSWeight[0]']) for skey in mc), +# 'AsLnN' : '0', +# } + +# nuisances['PS_FSR'] = { +# 'name' : 'PS_WH_hww_FSR', +# 'kind' : 'weight', +# 'type' : 'shape', +# 'samples' : dict((skey, ['PSWeight[3]', 'PSWeight[1]']) for skey in mc), +# 'AsLnN' : '0', +# } + +# nuisances['UE_CP5'] = { +# 'name' : 'CMS_WH_hww_UE', +# 'skipCMS' : 1, +# 'type' : 'lnN', +# 'samples' : dict((skey, '1.015') for skey in mc), +# } + +# # Charge flip efficiency +# nuisances['chargeFlipEff'] = { +# 'name' : 'CMS_whss_chargeFlipEff_2017', +# 'kind' : 'weight', +# 'type' : 'shape', +# 'samples' : dict((skey, ['1-ttHMVA_eff_err_flip_2l', '1+ttHMVA_eff_err_flip_2l']) for skey in ['DY','ChargeFlip']), +# 'cuts' : [cut for cut in cuts if ('_ee_' in cut or '_em_' in cut)], +# } + +# # Charge flip: uncertainty on opposite sign processes not affected by charge-flip +# nuisances['chargeFlip_syst'] = { +# 'name' : 'CMS_ChargeFlip_syst', +# 'type' : 'lnN', +# 'samples' : { +# 'ChargeFlip' : '1.10', +# }, +# 'cuts' : [cut for cut in cuts if ('_ee_' in cut or '_em_' in cut)], +# } + +# ## Top pT reweighting uncertainty + +# nuisances['TopPtRew'] = { +# 'name' : 'CMS_top_pT_reweighting', # Theory uncertainty +# 'kind' : 'weight', +# 'type' : 'shape', +# 'samples' : { +# 'top': ["1.", "1./Top_pTrw"] +# }, +# 'symmetrize' : True +# } + +# nuisances['VgStar'] = { +# 'name' : 'CMS_hww_VgStarScale', +# 'type' : 'lnN', +# 'samples' : { +# 'VgS' : '1.25' +# } +# } + +# nuisances['Vg'] = { +# 'name' : 'CMS_hww_VgScale', +# 'type' : 'lnN', +# 'samples' : { +# 'Vg' : '1.25' +# } +# } + +# ###### pdf uncertainties + +# valuesggh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggH', '125.09','pdf','sm') +# valuesggzh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggZH','125.09','pdf','sm') +# valuesbbh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','bbH', '125.09','pdf','sm') + +# nuisances['pdf_Higgs_gg'] = { +# 'name' : 'pdf_Higgs_gg', +# 'samples' : { +# 'ggH_hww' : valuesggh, +# 'ggH_htt' : valuesggh, +# 'ggZH_hww' : valuesggzh, +# 'bbH_hww' : valuesbbh, +# }, +# 'type' : 'lnN', +# } + +# # For ttH, we need to use 1./values +# values = str(1./float(HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ttH','125.09','pdf','sm'))) + +# nuisances['pdf_Higgs_ttH'] = { +# 'name' : 'pdf_Higgs_ttH', +# 'samples' : { +# 'ttH_hww': values, +# }, +# 'type' : 'lnN', +# } + +# valuesqqh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','vbfH','125.09','pdf','sm') +# valueswh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','WH', '125.09','pdf','sm') +# valueszh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ZH', '125.09','pdf','sm') + +# nuisances['pdf_Higgs_qqbar'] = { +# 'name' : 'pdf_Higgs_qqbar', +# 'type' : 'lnN', +# 'samples': { +# 'qqH_hww' : valuesqqh, +# 'qqH_htt' : valuesqqh, +# 'WH_hww_plus' : valueswh, +# 'WH_hww_minus': valueswh, +# 'WH_htt_plus' : valueswh, +# 'WH_htt_minus': valueswh, +# 'ZH_hww' : valueszh, +# 'ZH_htt' : valueszh +# }, +# } + +# nuisances['pdf_qqbar'] = { +# 'name' : 'pdf_qqbar', +# 'type' : 'lnN', +# 'samples' : { +# 'Vg' : '1.04', +# 'ZZ' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 +# # 'WZ' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 +# 'VgS' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 +# }, +# } + +# nuisances['pdf_gg'] = { +# 'name': 'pdf_WH_hww_gg', +# 'type': 'lnN', +# 'samples': { +# 'ggWW' : '1.05', +# }, +# } + +# nuisances['pdf_Higgs_gg_ACCEPT'] = { +# 'name' : 'pdf_WH_hww_Higgs_gg_ACCEPT', +# 'samples' : { +# 'ggH_hww' : '1.006', +# 'ggH_htt' : '1.006', +# 'ggZH_hww' : '1.006', +# 'bbH_hww' : '1.006' +# }, +# 'type' : 'lnN', +# } +# nuisances['pdf_gg_ACCEPT'] = { +# 'name' : 'pdf_WH_hww_gg_ACCEPT', +# 'samples' : { +# 'ggWW' : '1.006', +# }, +# 'type' : 'lnN', +# } + +# nuisances['pdf_Higgs_qqbar_ACCEPT'] = { +# 'name' : 'pdf_WH_hww_Higgs_qqbar_ACCEPT', +# 'type' : 'lnN', +# 'samples' : { +# 'qqH_hww' : '1.002', +# 'qqH_htt' : '1.002', +# 'WH_hww_plus' : '1.003', +# 'WH_hww_minus': '1.003', +# 'WH_htt_plus' : '1.003', +# 'WH_htt_minus': '1.003', +# 'ZH_hww' : '1.002', +# 'ZH_htt' : '1.002', +# }, +# } + +# nuisances['pdf_qqbar_ACCEPT'] = { +# 'name' : 'pdf_WH_hww_qqbar_ACCEPT', +# 'type' : 'lnN', +# 'samples' : { +# 'ZZ' : '1.001', +# # 'WZ' : '1.001', +# }, +# } + +# ##### Renormalization & factorization scales + +# ## Shape nuisance due to QCD scale variations for DY +# ## LHE scale variation weights (w_var / w_nominal) + +# ## This should work for samples with either 8 or 9 LHE scale weights (Length$(LHEScaleWeight) == 8 or 9) +# variations = ['Alt(LHEScaleWeight,0,1)', 'Alt(LHEScaleWeight,1,1)', 'Alt(LHEScaleWeight,3,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-4,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-2,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-1,1)'] + +# # nuisances['QCDscale_V'] = { +# # 'name' : 'QCDscale_V', +# # 'skipCMS' : 1, +# # 'kind' : 'weight_envelope', +# # 'type' : 'shape', +# # 'samples' : { +# # 'DY' : variations +# # }, +# # 'AsLnN' : '0' +# # } + +# nuisances['QCDscale_VV'] = { +# 'name' : 'QCDscale_VV', +# 'kind' : 'weight_envelope', +# 'type' : 'shape', +# 'samples' : { +# 'WW' : variations, +# 'Vg' : variations, +# 'ZZ' : variations, +# 'WZ' : variations, +# 'VgS' : variations, +# } +# } + +# nuisances['QCDscale_ggVV'] = { +# 'name' : 'QCDscale_ggVV', +# 'type' : 'lnN', +# 'samples' : { +# 'ggWW' : '1.15', +# }, +# } + +# #### QCD scale uncertainties for Higgs signals other than ggH + +# values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','vbfH','125.09','scale','sm') + +# nuisances['QCDscale_qqH'] = { +# 'name' : 'QCDscale_qqH', +# 'samples' : { +# 'qqH_hww' : values, +# 'qqH_htt' : values, +# }, +# 'type' : 'lnN' +# } + +# valueswh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','WH','125.09','scale','sm') +# valueszh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ZH','125.09','scale','sm') + +# nuisances['QCDscale_VH'] = { +# 'name' : 'QCDscale_VH', +# 'samples' : { +# 'WH_hww_plus' : valueswh, +# 'WH_hww_minus' : valueswh, +# 'WH_htt_plus' : valueswh, +# 'WH_htt_minus' : valueswh, +# 'ZH_hww' : valueszh, +# 'ZH_htt' : valueszh, +# }, +# 'type' : 'lnN', +# } + +# values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggZH','125.09','scale','sm') + +# nuisances['QCDscale_ggZH'] = { +# 'name' : 'QCDscale_ggZH', +# 'samples' : { +# 'ggZH_hww' : values, +# }, +# 'type' : 'lnN', +# } + +# values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ttH','125.09','scale','sm') + +# nuisances['QCDscale_ttH'] = { +# 'name' : 'QCDscale_ttH', +# 'samples' : { +# 'ttH_hww' : values, +# }, +# 'type' : 'lnN', +# } + +# nuisances['QCDscale_WWewk'] = { +# 'name' : 'QCDscale_WWewk', +# 'samples' : { +# 'WWewk' : '1.11', +# }, +# 'type' : 'lnN' +# } + +# nuisances['QCDscale_qqbar_ACCEPT'] = { +# 'name' : 'QCDscale_qqbar_ACCEPT', +# 'type' : 'lnN', +# 'samples' : { +# 'qqH_hww' : '1.003', +# 'qqH_htt' : '1.003', +# 'WH_hww_plus' : '1.010', +# 'WH_hww_minus' : '1.010', +# 'WH_htt_plus' : '1.010', +# 'WH_htt_minus' : '1.010', +# 'ZH_hww' : '1.015', +# 'ZH_htt' : '1.015', +# } +# } + +# # FIXME: these come from HIG-16-042, maybe should be recomputed? +# nuisances['QCDscale_gg_ACCEPT'] = { +# 'name' : 'QCDscale_gg_ACCEPT', +# 'samples' : { +# 'ggH_htt' : '1.012', +# 'ggH_hww' : '1.012', +# 'ggZH_hww' : '1.012', +# 'ggWW' : '1.012', +# }, +# 'type' : 'lnN', +# } + +# # WZ normalization from control region +# nuisances['WZ2jnorm'] = { +# 'name' : 'CMS_hww_WZ3l2jnorm', +# 'samples' : { +# 'WZ' : '1.00', +# }, +# 'type' : 'rateParam', +# 'cuts' : [cut for cut in cuts if '2j' in cut], +# } + +# nuisances['WZ1jnorm'] = { +# 'name' : 'CMS_hww_WZ3l1jnorm', +# 'samples' : { +# 'WZ' : '1.00', +# }, +# 'type' : 'rateParam', +# 'cuts' : [cut for cut in cuts if '1j' in cut], +# } + +# # WZ migration from W+Z to W-Z +# nuisances['WZ2j_charge_migration'] = { +# 'name' : 'CMS_hww_WZ2jchargemigration', +# 'samples' : { +# 'WZ' : '1.02', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_noZveto_mm_2j_plus_pt2ge20', +# 'hww2l2v_13TeV_WH_SS_noZveto_mm_2j_plus_pt2lt20', +# 'hww2l2v_13TeV_WH_SS_em_2j_plus_pt2ge20', +# 'hww2l2v_13TeV_WH_SS_em_2j_plus_pt2lt20', +# 'hww2l2v_13TeV_WH_SS_ee_2j_plus_pt2ge20', +# 'hww2l2v_13TeV_WH_SS_ee_2j_plus_pt2lt20', +# ], +# } + +# nuisances['WZ1j_charge_migration'] = { +# 'name' : 'CMS_hww_WZ1jchargemigration', +# 'samples' : { +# 'WZ' : '1.02', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_noZveto_mm_1j_plus_pt2ge20', +# 'hww2l2v_13TeV_WH_SS_noZveto_mm_1j_plus_pt2lt20', +# 'hww2l2v_13TeV_WH_SS_em_1j_plus_pt2ge20', +# 'hww2l2v_13TeV_WH_SS_em_1j_plus_pt2lt20', +# 'hww2l2v_13TeV_WH_SS_ee_1j_plus_pt2ge20', +# 'hww2l2v_13TeV_WH_SS_ee_1j_plus_pt2lt20', +# ], +# } + +# # Nonprompt leptons normalization per category +# nuisances['CMS_WH_hww_fake_syst_2jee_plus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_2jee_plus_2017', +# 'samples' : { +# 'Fake_ee' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_ee_2j_plus_pt2ge20', +# ], +# } +# nuisances['CMS_WH_hww_fake_syst_2jee_plus_lowpt'] = { +# 'name' : 'CMS_WH_hww_fake_syst_2jee_plus_lowpt_2017', +# 'samples' : { +# 'Fake_ee' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_ee_2j_plus_pt2lt20', +# ], +# } + +# nuisances['CMS_WH_hww_fake_syst_2jem_plus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_2jem_plus_2017', +# 'samples' : { +# 'Fake_em' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_em_2j_plus_pt2ge20', +# ], +# } +# nuisances['CMS_WH_hww_fake_syst_2jem_plus_lowpt'] = { +# 'name' : 'CMS_WH_hww_fake_syst_2jem_plus_lowpt_2017', +# 'samples' : { +# 'Fake_em' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_em_2j_plus_pt2lt20', +# ], +# } + +# nuisances['CMS_WH_hww_fake_syst_2jmm_plus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_2jmm_plus_2017', +# 'samples' : { +# 'Fake_mm' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_noZeto_mm_2j_plus_pt2ge20', +# ], +# } +# nuisances['CMS_WH_hww_fake_syst_2jmm_plus_lowpt'] = { +# 'name' : 'CMS_WH_hww_fake_syst_2jmm_plus_lowpt_2017', +# 'samples' : { +# 'Fake_mm' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_noZeto_mm_2j_plus_pt2lt20', +# ], +# } + +# nuisances['CMS_WH_hww_fake_syst_1jee_plus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_1jee_plus_2017', +# 'samples' : { +# 'Fake_ee' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_ee_1j_plus_pt2ge20', +# ], +# } +# nuisances['CMS_WH_hww_fake_syst_1jee_plus_lowpt'] = { +# 'name' : 'CMS_WH_hww_fake_syst_1jee_plus_lowpt_2017', +# 'samples' : { +# 'Fake_ee' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_ee_1j_plus_pt2lt20', +# ], +# } + +# nuisances['CMS_WH_hww_fake_syst_1jem_plus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_1jem_plus_2017', +# 'samples' : { +# 'Fake_em' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_em_1j_plus_pt2ge20', +# ], +# } +# nuisances['CMS_WH_hww_fake_syst_1jem_plus_lowpt'] = { +# 'name' : 'CMS_WH_hww_fake_syst_1jem_plus_lowpt_2017', +# 'samples' : { +# 'Fake_em' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_em_1j_plus_pt2lt20', +# ], +# } + +# nuisances['CMS_WH_hww_fake_syst_1jmm_plus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_1jmm_plus_2017', +# 'samples' : { +# 'Fake_mm' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_noZeto_mm_1j_plus_pt2ge20', +# ], +# } +# nuisances['CMS_WH_hww_fake_syst_1jmm_plus_lowpt'] = { +# 'name' : 'CMS_WH_hww_fake_syst_1jmm_plus_lowpt_2017', +# 'samples' : { +# 'Fake_mm' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_noZeto_mm_1j_plus_pt2lt20', +# ], +# } + + +# nuisances['CMS_WH_hww_fake_syst_2jee_minus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_2jee_minus_2017', +# 'samples' : { +# 'Fake_ee' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_ee_2j_minus_pt2ge20', +# ], +# } +# nuisances['CMS_WH_hww_fake_syst_2jee_minus_lowpt'] = { +# 'name' : 'CMS_WH_hww_fake_syst_2jee_minus_lowpt_2017', +# 'samples' : { +# 'Fake_ee' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_ee_2j_minus_pt2lt20', +# ], +# } + +# nuisances['CMS_WH_hww_fake_syst_2jem_minus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_2jem_minus_2017', +# 'samples' : { +# 'Fake_em' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_em_2j_minus_pt2ge20', +# ], +# } +# nuisances['CMS_WH_hww_fake_syst_2jem_minus_lowpt'] = { +# 'name' : 'CMS_WH_hww_fake_syst_2jem_minus_lowpt_2017', +# 'samples' : { +# 'Fake_em' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_em_2j_minus_pt2lt20', +# ], +# } + +# nuisances['CMS_WH_hww_fake_syst_2jmm_minus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_2jmm_minus_2017', +# 'samples' : { +# 'Fake_mm' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_noZeto_mm_2j_minus_pt2ge20', +# ], +# } +# nuisances['CMS_WH_hww_fake_syst_2jmm_minus_lowpt'] = { +# 'name' : 'CMS_WH_hww_fake_syst_2jmm_minus_lowpt_2017', +# 'samples' : { +# 'Fake_mm' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_noZeto_mm_2j_minus_pt2lt20', +# ], +# } + +# nuisances['CMS_WH_hww_fake_syst_1jee_minus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_1jee_minus_2017', +# 'samples' : { +# 'Fake_ee' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_ee_1j_minus_pt2ge20', +# ], +# } +# nuisances['CMS_WH_hww_fake_syst_1jee_minus_lowpt'] = { +# 'name' : 'CMS_WH_hww_fake_syst_1jee_minus_lowpt_2017', +# 'samples' : { +# 'Fake_ee' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_ee_1j_minus_pt2lt20', +# ], +# } + +# nuisances['CMS_WH_hww_fake_syst_1jem_minus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_1jem_minus_2017', +# 'samples' : { +# 'Fake_em' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_em_1j_minus_pt2ge20', +# ], +# } +# nuisances['CMS_WH_hww_fake_syst_1jem_minus_lowpt'] = { +# 'name' : 'CMS_WH_hww_fake_syst_1jem_minus_lowpt_2017', +# 'samples' : { +# 'Fake_em' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_em_1j_minus_pt2lt20', +# ], +# } + +# nuisances['CMS_WH_hww_fake_syst_1jmm_minus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_1jmm_minus_2017', +# 'samples' : { +# 'Fake_mm' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_noZeto_mm_1j_minus_pt2ge20', +# ], +# } +# nuisances['CMS_WH_hww_fake_syst_1jmm_minus_lowpt'] = { +# 'name' : 'CMS_WH_hww_fake_syst_1jmm_minus_lowpt_2017', +# 'samples' : { +# 'Fake_mm' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_noZeto_mm_1j_minus_pt2lt20', +# ], +# } + +# End of Nonprompt leptons normalization per category + +## Use the following if you want to apply the automatic combine MC stat nuisances. +nuisances['stat'] = { + 'type' : 'auto', + 'maxPoiss' : '10', + 'includeSignal' : '0', + 'samples' : {} +} +# nuisance ['maxPoiss'] = Number of threshold events for Poisson modelling +# nuisance ['includeSignal'] = Include MC stat nuisances on signal processes (1=True, 0=False) + +for n in nuisances.values(): + n['skipCMS'] = 1 diff --git a/ControlRegions/SS/2016noHIPM/plot.py b/ControlRegions/SS/2016noHIPM/plot.py new file mode 100644 index 00000000..c506db8e --- /dev/null +++ b/ControlRegions/SS/2016noHIPM/plot.py @@ -0,0 +1,336 @@ +# plot configuration + +# Groups of samples to improve the plots. +# If not defined, normal plots is used + +groupPlot = {} + +groupPlot['top'] = { + 'nameHR' : 'tW+ and t#bar{t}', + 'isSignal' : 0, + 'color' : 400, # kYellow + 'samples' : ['top'] +} + +groupPlot['WW'] = { + 'nameHR' : 'WW', + 'isSignal' : 0, + 'color' : 851, # kAzure -9 + 'samples' : ['WW', 'ggWW', 'WWewk'] +} + +groupPlot['Fake'] = { + 'nameHR' : 'Non-prompt', + 'isSignal' : 0, + 'color' : 921, # kGray + 1 + 'samples' : ['Fake_mm','Fake_em','Fake_ee'] +} + +groupPlot['DY'] = { + 'nameHR' : "DY", + 'isSignal' : 0, + 'color' : 418, # kGreen+2 + 'samples' : ['DY'] +} + +groupPlot['VVV'] = { + 'nameHR' : 'VVV', + 'isSignal' : 0, + 'color' : 857, # kAzure -3 + 'samples' : ['VVV'] +} + +groupPlot['ZZ'] = { + 'nameHR' : "ZZ", + 'isSignal' : 0, + 'color' : 617, # kViolet + 1 + 'samples' : ['ZZ'] +} + +groupPlot['WZ'] = { + 'nameHR' : "WZ", + 'isSignal' : 0, + 'color' : 619, # kViolet + 1 + 'samples' : ['WZ'] +} + +groupPlot['Vg'] = { + 'nameHR' : "V#gamma", + 'isSignal' : 0, + 'color' : 810, # kOrange + 10 + 'samples' : ['Vg'] +} + +groupPlot['VgS'] = { + 'nameHR' : "V#gamma*", + 'isSignal' : 0, + 'color' : 412, # kGreen - 9 + 'samples' : ['VgS'] +} + +groupPlot['Higgs'] = { + 'nameHR' : 'Higgs', + 'isSignal' : 0, + 'color' : 632, # kRed + 'samples' : ['ggH_hww','qqH_hww','ZH_hww','ggZH_hww','ttH_hww','ggH_htt','qqH_htt','ZH_htt'] +} + +groupPlot['WH_minus'] = { + 'nameHR' : 'W^{-} H (x 10)', + 'isSignal' : 2, + 'color' : 600, # kBlue + 'samples' : ['WH_hww_minus','WH_htt_minus'] +} + +groupPlot['WH_plus'] = { + 'nameHR' : 'W^{+} H (x 10)', + 'isSignal' : 2, + 'color' : 632, # kRed + 'samples' : ['WH_hww_plus', 'WH_htt_plus'] +} + + +# keys here must match keys in samples.py + +plot = {} + +plot['DY'] = { + 'nameHR' : 'DY', + 'color' : 418, # kGreen+2 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0, +} + +plot['top'] = { + 'nameHR' : 'tW and t#bar{t}', + 'color' : 400, # kYellow + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0, +} + +plot['WW'] = { + 'nameHR' : 'WW', + 'color' : 851, # kAzure -9 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['WWewk'] = { + 'nameHR' : 'WWewk', + 'color' : 850, # kAzure -10 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['ggWW'] = { + 'nameHR' : 'ggWW', + 'color' : 850, # kAzure -10 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['Vg'] = { + 'nameHR' : 'Vg', + 'color' : 859, # kAzure -1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['VgS'] = { + 'nameHR' : 'VgS', + 'color' : 859, # kAzure -1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['WZ'] = { + 'nameHR' : 'WZ', + 'color' : 858, # kAzure -2 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.138 # NLO -> NNLO k-factor! +} + +plot['ZZ'] = { + 'nameHR' : 'ZZ', + 'color' : 858, # kAzure -2 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['VVV'] = { + 'nameHR' : 'VVV', + 'color' : 857, # kAzure -3 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +########### +# Signals # +########### + +# HWW + +plot['ggH_hww'] = { + 'nameHR' : 'ggH_hww', + 'color' : 632, # kRed + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['qqH_hww'] = { + 'nameHR' : 'qqH_hww', + 'color' : 632+1, # kRed+1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['ZH_hww'] = { + 'nameHR' : 'ZH_hww', + 'color' : 632+3, # kRed+3 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['ggZH_hww'] = { + 'nameHR' : 'ggZH_hww', + 'color' : 632+4, # kRed+4 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['WH_hww_plus'] = { + 'nameHR' : 'WH_hww_plus', + 'color' : 632+2, # kRed+2 + 'isSignal' : 2, + 'isData' : 0, + 'scale' : 10 +} + +plot['WH_hww_minus'] = { + 'nameHR' : 'WH_hww_minus', + 'color' : 600, # kBlue + 'isSignal' : 2, + 'isData' : 0, + 'scale' : 10 +} + +plot['ttH_hww'] = { + 'nameHR' : 'ttH_hww', + 'color' : 632+3, # kRed+3 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + + +# Htautau + +plot['ggH_htt'] = { + 'nameHR' : 'ggH_htt', + 'color' : 632, # kRed + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['qqH_htt'] = { + 'nameHR' : 'qqH_htt', + 'color' : 632+1, # kRed+1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['ZH_htt'] = { + 'nameHR' : 'ZH_htt', + 'color' : 632+3, # kRed+3 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['WH_htt_plus'] = { + 'nameHR' : 'WH_htt_plus', + 'color' : 632+2, # kRed+2 + 'isSignal' : 2, + 'isData' : 0, + 'scale' : 10 +} + +plot['WH_htt_minus'] = { + 'nameHR' : 'WH_htt_minus', + 'color' : 632+2, # kRed+2 + 'isSignal' : 2, + 'isData' : 0, + 'scale' : 10 +} + + +######## +# Fake # +######## + +plot['Fake_em'] = { + 'nameHR' : 'Fake_em', + 'color' : 921, # kGray + 1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['Fake_ee'] = { + 'nameHR' : 'Fake_ee', + 'color' : 921, # kGray + 1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['Fake_mm'] = { + 'nameHR' : 'Fake_mm', + 'color' : 921, # kGray + 1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +# plot['Fake'] = { +# 'color' : 921, # kGray + 1 +# 'isSignal' : 0, +# 'isData' : 0, +# 'scale' : 1.0 +# } + +######## +# Data # +######## + +plot['DATA'] = { + 'nameHR' : 'Data', + 'color' : 1 , + 'isSignal' : 0, + 'isData' : 1, + 'isBlind' : 0 +} + + +# Define legend + +legend = {} + +legend['lumi'] = 'L = 16.8 fb^{-1}' +legend['sqrt'] = '#sqrt{s} = 13 TeV' diff --git a/ControlRegions/SS/2016noHIPM/repeat.sh b/ControlRegions/SS/2016noHIPM/repeat.sh new file mode 100644 index 00000000..e9fb916a --- /dev/null +++ b/ControlRegions/SS/2016noHIPM/repeat.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +if [ $# -eq 0 ]; then + echo "$0: Missing arguments" + exit 1 +else + echo "We got some argument(s)" + echo "===========================" + echo "Number of arguments. : $#" + echo "List of arguments... : $@" + echo "Arg #1: sample : $1" + echo "Arg #2: compile : $2" + echo "===========================" + SAMPLE=$1 + COMPILE=$2 +fi + +# Site definition +hostname=$(uname -a | awk '{print $2}') + + +if [ "$COMPILE" == "True" ]; then + mkShapesRDF -c 1 + mkShapesRDF -o 0 -f . -b 1 -dR 1 +fi +cd condor/SS_2016noHIPM_v9/${SAMPLE}/ +cp ../../../../../../../mkShapesRDF/mkShapesRDF/include/headers.hh ../../../../../../../mkShapesRDF/mkShapesRDF/shapeAnalysis/runner.py . +python runner.py + +if [[ "$hostname" == *portal* || "$hostname" == *bms* ]]; then + echo "We are at KIT" + cp output.root /ceph/${USER}/mkShapesRDF_rootfiles/SS_2016noHIPM_v9/rootFile/mkShapes__SS_2016noHIPM_v9__ALL__${SAMPLE}.root +else + echo "We are on lxplus" + cp output.root /eos/user/${USER:0:1}/${USER}/mkShapesRDF_rootfiles/SS_2016noHIPM_v9/rootFile/mkShapes__SS_2016noHIPM_v9__ALL__${SAMPLE}.root +fi + +rm output.root diff --git a/ControlRegions/SS/2016noHIPM/samples.py b/ControlRegions/SS/2016noHIPM/samples.py new file mode 100644 index 00000000..893e56cd --- /dev/null +++ b/ControlRegions/SS/2016noHIPM/samples.py @@ -0,0 +1,395 @@ +import os,glob + +################################################ +################# SKIMS ######################## +################################################ + +# MC: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Summer20UL16_106x_nAODv9_noHIPM_Full2016v9/MCl1loose2016v9__MCCorr2016v9NoJERInHorn__l2tightOR2016v9/ +# DATA: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Run2016_UL2016_nAODv9_noHIPM_Full2016v9/DATAl1loose2016v9__l2loose__l2tightOR2016v9/ +# FAKE: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Run2016_UL2016_nAODv9_noHIPM_Full2016v9/DATAl1loose2016v9__l2loose__fakeW/ + +mcProduction = 'Summer20UL16_106x_nAODv9_noHIPM_Full2016v9' +dataReco = 'Run2016_UL2016_nAODv9_noHIPM_Full2016v9' +mcSteps = 'MCl1loose2016v9__MCCorr2016v9NoJERInHorn__l2tightOR2016v9{var}' +fakeSteps = 'DATAl1loose2016v9__l2loose__fakeW' +dataSteps = 'DATAl1loose2016v9__l2loose__l2tightOR2016v9' + +############################################## +###### Tree base directory for the site ###### +############################################## + +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' + +treeBaseDir = '/eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano' +if site == 'kit': + treeBaseDir = '/ceph/ntrevisa/HWWNano' +limitFiles = -1 + +def makeMCDirectory(var=''): + return os.path.join(treeBaseDir, mcProduction, mcSteps.format(var='')) + +mcDirectory = makeMCDirectory() +fakeDirectory = os.path.join(treeBaseDir, dataReco, fakeSteps) +dataDirectory = os.path.join(treeBaseDir, dataReco, dataSteps) + +samples = {} + +from mkShapesRDF.lib.search_files import SearchFiles +s = SearchFiles() + +useXROOTD = True +redirector = 'root://eoscms.cern.ch/' +if site == 'kit': + redirector = '' + +def nanoGetSampleFiles(path, name): + _files = s.searchFiles(path, name, redirector=redirector) + if limitFiles != -1 and len(_files) > limitFiles: + return [(name, _files[:limitFiles])] + else: + return [(name, _files)] + +def CombineBaseW(samples, proc, samplelist): + _filtFiles = list(filter(lambda k: k[0] in samplelist, samples[proc]['name'])) + _files = list(map(lambda k: k[1], _filtFiles)) + _l = list(map(lambda k: len(k), _files)) + leastFiles = _files[_l.index(min(_l))] + dfSmall = ROOT.RDataFrame('Runs', leastFiles) + s = dfSmall.Sum('genEventSumw').GetValue() + f = ROOT.TFile.Open(leastFiles[0]) + t = f.Get('Events') + t.GetEntry(1) + xs = t.baseW * s + + __files = [] + for f in _files: + __files += f + df = ROOT.RDataFrame('Runs', __files) + s = df.Sum('genEventSumw').GetValue() + newbaseW = str(xs / s) + weight = newbaseW + '/baseW' + + for iSample in samplelist: + addSampleWeight(samples, proc, iSample, weight) + +def addSampleWeight(samples, sampleName, sampleNameType, weight): + obj = list(filter(lambda k: k[0] == sampleNameType, samples[sampleName]['name']))[0] + samples[sampleName]['name'] = list(filter(lambda k: k[0] != sampleNameType, samples[sampleName]['name'])) + if len(obj) > 2: + samples[sampleName]['name'].append((obj[0], obj[1], obj[2] + '*(' + weight + ')')) + else: + samples[sampleName]['name'].append((obj[0], obj[1], '(' + weight + ')' )) + + +################################################ +############ DATA DECLARATION ################## +################################################ + +DataRun = [ + ['F','Run2016F-UL2016-v1'], + ['G','Run2016G_UL2016-v1'], + ['H','Run2016H_UL2016-v1'], +] + +DataSets = ['MuonEG','SingleMuon','SingleElectron','DoubleMuon', 'DoubleEG'] + +DataTrig = { + 'MuonEG' : ' Trigger_ElMu' , + 'SingleMuon' : '!Trigger_ElMu && Trigger_sngMu' , + 'SingleElectron' : '!Trigger_ElMu && !Trigger_sngMu && Trigger_sngEl', + 'DoubleMuon' : '!Trigger_ElMu && !Trigger_sngMu && !Trigger_sngEl && Trigger_dblMu', + 'DoubleEG' : '!Trigger_ElMu && !Trigger_sngMu && !Trigger_sngEl && !Trigger_dblMu && Trigger_dblEl' +} + +######################################### +############ MC COMMON ################## +######################################### + +# SFweight does not include btag weights +mcCommonWeightNoMatch = 'XSWeight*SFweight*METFilter_MC' +mcCommonWeight = 'XSWeight*SFweight*METFilter_MC*PromptGenLepMatch2l' + +########################################### +############# BACKGROUNDS ############### +########################################### + +###### DY ####### +files = nanoGetSampleFiles(mcDirectory, 'DYJetsToLL_M-10to50_NLO') + \ + nanoGetSampleFiles(mcDirectory, 'DYJetsToLL_M-50') + +samples['DY'] = { + 'name': files, + 'weight': mcCommonWeight + '*(nLepton<3)*(abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 11*13 || abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 13*13)*( !(Sum(PhotonGen_isPrompt==1 && PhotonGen_pt>15 && abs(PhotonGen_eta)<2.6) > 0))', + 'FilesPerJob': 8, +} + +##### Top ####### +files = nanoGetSampleFiles(mcDirectory, 'TTTo2L2Nu') + \ + nanoGetSampleFiles(mcDirectory, 'ST_s-channel') + \ + nanoGetSampleFiles(mcDirectory, 'ST_t-channel_top') + \ + nanoGetSampleFiles(mcDirectory, 'ST_t-channel_antitop') + \ + nanoGetSampleFiles(mcDirectory, 'ST_tW_antitop') + \ + nanoGetSampleFiles(mcDirectory, 'ST_tW_top') + +samples['top'] = { + 'name': files, + 'weight': mcCommonWeight, + 'FilesPerJob': 8, +} +addSampleWeight(samples,'top','TTTo2L2Nu','Top_pTrw') + +###### WW ######## +samples['WW'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'WWTo2L2Nu'), + 'weight': mcCommonWeight + '*nllW*ewknloW', + 'FilesPerJob': 4 +} + +samples['WWewk'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'WpWmJJ_EWK_noTop'), + 'weight': mcCommonWeight + '*(Sum(abs(GenPart_pdgId)==6 || GenPart_pdgId==25)==0)', # Filter tops and Higgs, + 'FilesPerJob': 8 +} + +files = nanoGetSampleFiles(mcDirectory, 'GluGluToWWToENEN') + \ + nanoGetSampleFiles(mcDirectory, 'GluGluToWWToENMN') + \ + nanoGetSampleFiles(mcDirectory, 'GluGluToWWToENTN') + \ + nanoGetSampleFiles(mcDirectory, 'GluGluToWWToMNEN') + \ + nanoGetSampleFiles(mcDirectory, 'GluGluToWWToMNMN') + \ + nanoGetSampleFiles(mcDirectory, 'GluGluToWWToMNTN') + \ + nanoGetSampleFiles(mcDirectory, 'GluGluToWWToTNEN') + \ + nanoGetSampleFiles(mcDirectory, 'GluGluToWWToTNMN') + \ + nanoGetSampleFiles(mcDirectory, 'GluGluToWWToTNTN') + +samples['ggWW'] = { + 'name': files, + 'weight': mcCommonWeight + '*1.53/1.4', + 'FilesPerJob': 8 +} + +######## Vg ######## +files = nanoGetSampleFiles(mcDirectory, 'Wg_AMCNLOFXFX_01J') + \ + nanoGetSampleFiles(mcDirectory, 'ZGToLLG') + +samples['Vg'] = { + 'name': files, + 'weight': mcCommonWeightNoMatch + '*(Gen_ZGstar_mass <= 0)', + 'FilesPerJob': 4, +} + +######## VgS ######## +files = nanoGetSampleFiles(mcDirectory, 'Wg_AMCNLOFXFX_01J') + \ + nanoGetSampleFiles(mcDirectory, 'WZTo3LNu_mllmin0p1') + \ + nanoGetSampleFiles(mcDirectory, 'ZGToLLG') + +samples['VgS'] = { + 'name': files, + 'weight': mcCommonWeight, + 'FilesPerJob': 4, +} +addSampleWeight(samples, 'VgS', 'Wg_AMCNLOFXFX_01J', '((Gen_ZGstar_mass > 0 && Gen_ZGstar_mass <= 0.1))*(gstarLow*0.94)') +addSampleWeight(samples, 'VgS', 'WZTo3LNu_mllmin0p1', '((Gen_ZGstar_mass > 0.1)*(0.601644*58.59/4.666))*(gstarLow*0.94)') +addSampleWeight(samples, 'VgS', 'ZGToLLG', '(Gen_ZGstar_mass > 0)') + + +############ WZ ############ +files = nanoGetSampleFiles(mcDirectory, 'WZTo3LNu_mllmin0p1') + \ + nanoGetSampleFiles(mcDirectory, 'WZTo2Q2L_mllmin4p0') + +samples['WZ'] = { + 'name': files, + 'weight': mcCommonWeight + ' * (gstarHigh)', + 'FilesPerJob': 4, +} +addSampleWeight(samples, 'WZ', 'WZTo3LNu_mllmin0p1', '(0.601644*58.59/4.666)') + + +############ ZZ ############ +files = nanoGetSampleFiles(mcDirectory, 'ZZTo2L2Nu') + \ + nanoGetSampleFiles(mcDirectory, 'ZZTo2Q2L_mllmin4p0') + \ + nanoGetSampleFiles(mcDirectory, 'ZZTo4L') + +samples['ZZ'] = { + 'name': files, + 'weight': mcCommonWeight, + 'FilesPerJob': 2, +} + + +########## VVV ######### +files = nanoGetSampleFiles(mcDirectory, 'ZZZ') + \ + nanoGetSampleFiles(mcDirectory, 'WZZ') + \ + nanoGetSampleFiles(mcDirectory, 'WWZ') + \ + nanoGetSampleFiles(mcDirectory, 'WWW') + +samples['VVV'] = { + 'name': files, + 'weight': mcCommonWeight, + 'FilesPerJob': 8, +} + +########################################### +############# SIGNALS ################## +########################################### + +signals = [] + +############ ggH H->WW ############ +samples['ggH_hww'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'GluGluHToWWTo2L2Nu_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 4, +} +signals.append('ggH_hww') + +############ VBF H->WW ############ +samples['qqH_hww'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'VBFHToWWTo2L2Nu_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 8, +} +signals.append('qqH_hww') + +############ ZH H->WW ############ +samples['ZH_hww'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'HZJ_HToWW_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 8, +} +signals.append('ZH_hww') + +samples['ggZH_hww'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'ggZH_HToWW_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 8, +} +signals.append('ggZH_hww') + +############ WH H->WW ############ +samples['WH_hww_plus'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'HWplusJ_HToWW_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 4, +} +signals.append('WH_hww_plus') + +samples['WH_hww_minus'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'HWminusJ_HToWW_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 4, +} + +signals.append('WH_hww_minus') + +############ ttH ############ +samples['ttH_hww'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'ttHToNonbb_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 4, +} +signals.append('ttH_hww') + +############ H->TauTau ############ +samples['ggH_htt'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'GluGluHToTauTau_M125_Powheg'), + 'weight': mcCommonWeight, + 'FilesPerJob': 20, +} +signals.append('ggH_htt') + +samples['qqH_htt'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'VBFHToTauTau_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 20, +} +signals.append('qqH_htt') + +samples['ZH_htt'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'ZHToTauTau_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 8, +} +signals.append('ZH_htt') + +############ WH H->TauTau ############ +samples['WH_htt_plus'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'WplusHToTauTau_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 4, +} +signals.append('WH_htt_plus') + +samples['WH_htt_minus'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'WminusHToTauTau_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 4, +} +signals.append('WH_htt_minus') + + + +########################################### +################## FAKE ################### +########################################### + +samples['Fake'] = { + 'name': [], + 'weight': 'METFilter_DATA*fakeW', + 'weights': [], + 'isData': ['all'], + 'FilesPerJob': 50 +} + +for _, sd in DataRun: + for pd in DataSets: + tag_data = pd + '_' + sd + + if 'DoubleMuon' in pd and 'Run2016G' in sd: + print("sd = {}".format(sd)) + print("pd = {}".format(pd)) + print("Old tag = {}".format(tag_data)) + tag_data = tag_data.replace('v1','v2') + print("New tag = {}".format(tag_data)) + + files = nanoGetSampleFiles(fakeDirectory, tag_data) + + samples['Fake']['name'].extend(files) + addSampleWeight(samples, 'Fake', tag_data, DataTrig[pd]) + +samples['Fake']['subsamples'] = { + 'em': 'abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 11*13', + 'mm': 'abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 13*13', + 'ee': 'abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 11*11' +} + + +########################################### +################## DATA ################### +########################################### + +samples['DATA'] = { + 'name': [], + 'weight': 'LepWPCut*METFilter_DATA', + 'weights': [], + 'isData': ['all'], + 'FilesPerJob': 50 +} + +for _, sd in DataRun: + for pd in DataSets: + tag_data = pd + '_' + sd + + if 'DoubleMuon' in pd and 'Run2016G' in sd: + print("sd = {}".format(sd)) + print("pd = {}".format(pd)) + print("Old tag = {}".format(tag_data)) + tag_data = tag_data.replace('v1','v2') + print("New tag = {}".format(tag_data)) + + files = nanoGetSampleFiles(dataDirectory, tag_data) + + samples['DATA']['name'].extend(files) + addSampleWeight(samples, 'DATA', tag_data, DataTrig[pd]) diff --git a/ControlRegions/SS/2016noHIPM/structure.py b/ControlRegions/SS/2016noHIPM/structure.py new file mode 100644 index 00000000..6f1d9617 --- /dev/null +++ b/ControlRegions/SS/2016noHIPM/structure.py @@ -0,0 +1,156 @@ +# structure configuration for datacard + +# keys here must match keys in samples.py + +structure = {} + +structure['DY'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['top'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['WW'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['WWewk'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['ggWW'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['Wg'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['Zg'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['WgS'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['ZgS'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['WZ'] = { + 'isSignal' : 0, + 'isData' : 0, + 'scaleSampleForDatacard' : 1.138 # NLO -> NNLO k-factor +} + +structure['ZZ'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['VVV'] = { + 'isSignal' : 0, + 'isData' : 0, +} + + +# Higgs +structure['ggH_hww'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['qqH_hww'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['ZH_hww'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['ggZH_hww'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['WH_hww_plus'] = { + 'isSignal' : 1, + 'isData' : 0, + 'scaleSampleForDatacard' : 1 # scaling signal to have sensitivity +} + +structure['WH_hww_minus'] = { + 'isSignal' : 1, + 'isData' : 0, + 'scaleSampleForDatacard' : 1 # scaling signal to have sensitivity +} + +structure['ttH_hww'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['ggH_htt'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['qqH_htt'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['ZH_htt'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['WH_htt_plus'] = { + 'isSignal' : 1, + 'isData' : 0, + 'scaleSampleForDatacard' : 1 # scaling signal to have sensitivity +} + +structure['WH_htt_minus'] = { + 'isSignal' : 1, + 'isData' : 0, + 'scaleSampleForDatacard' : 1 # scaling signal to have sensitivity +} + + +# Fakes +structure['Fake_ee'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['Fake_mm'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['Fake_em'] = { + 'isSignal' : 0, + 'isData' : 0, +} + + +# Data +structure['DATA'] = { + 'isSignal' : 0, + 'isData' : 1 +} diff --git a/ControlRegions/SS/2016noHIPM/variables.py b/ControlRegions/SS/2016noHIPM/variables.py new file mode 100644 index 00000000..d84d13d5 --- /dev/null +++ b/ControlRegions/SS/2016noHIPM/variables.py @@ -0,0 +1,285 @@ +# variables + +# 0 = not fold (default), 1 = fold underflowbin, 2 = fold overflow bin, 3 = fold underflow and overflow + +variables = {} + +variables['events'] = { + 'name' : '1', + 'range' : (1,0,2), + 'xaxis' : 'events', + 'fold' : 3 +} + +################### +# Control variables +################### + +variables['BDTG6_TT'] = { + 'name' : 'BDT_WHSS_TopSemileptonic_v9', + 'range' : (40,-1,1), + 'xaxis' : 'BDT discriminant', + 'fold' : 3, +} + +variables['BDT_WH3l_OSSF_new_v9'] = { + 'name' : 'BDT_WH3l_OSSF_new_v9', + 'range' : (40,-1.,1.), + 'xaxis' : 'MVA discriminant', + 'fold' : 3, +} + +variables['BDT_WH3l_SSSF_new_v9'] = { + 'name' : 'BDT_WH3l_SSSF_new_v9', + 'range' : (40,-1.,1.), + 'xaxis' : 'MVA discriminant', + 'fold' : 3, +} + +variables['pt1'] = { + 'name' : 'Lepton_pt[0]', + 'range' : (30,0,150), + 'xaxis' : 'p_{T} 1st lep', + 'fold' : 0 +} + +variables['pt2'] = { + 'name' : 'Lepton_pt[1]', + 'range' : (30,0,100), + 'xaxis' : 'p_{T} 2nd lep', + 'fold' : 3 +} + +variables['conept1'] = { + 'name' : 'Lepton_conept[0]', + 'range' : (30,0,150), + 'xaxis' : 'p_{T} 1st lep', + 'fold' : 0 +} + +variables['conept2'] = { + 'name' : 'Lepton_conept[1]', + 'range' : (30,0,100), + 'xaxis' : 'p_{T} 2nd lep', + 'fold' : 3 +} + +variables['eta1'] = { + 'name' : 'Lepton_eta[0]', + 'range' : (50,-2.5,2.5), + 'xaxis' : '#eta 1st lep', + 'fold' : 3 +} + +variables['eta2'] = { + 'name' : 'Lepton_eta[1]', + 'range' : (50,-2.5,2.5), + 'xaxis' : '#eta 2nd lep', + 'fold' : 3 +} + +variables['detall'] = { + 'name' : 'abs(Lepton_eta[0] - Lepton_eta[1])', + 'range' : (20,0.,5.), + 'xaxis' : '#Delta#eta_{jj}', + 'fold' : 3 +} + +variables['dphill'] = { + 'name' : 'abs(dphill)', + 'range' : (20, 0,3.2), + 'xaxis' : '#Delta#phi_{ll}', + 'fold' : 3 +} + +variables['drll'] = { + 'name' : 'abs(drll)', + 'range' : (20, 0,5.), + 'xaxis' : '#Delta#R_{ll}', + 'fold' : 3 +} + +variables['mll'] = { + 'name' : 'mll', + 'range' : (25, 0,250), + 'xaxis' : 'm_{ll} [GeV]', + 'fold' : 0 +} + +variables['ptll'] = { + 'name' : 'ptll', + 'range' : (20, 0,200), + 'xaxis' : 'p_{T}^{ll} [GeV]', + 'fold' : 0 +} + + +variables['jetpt1'] = { + 'name' : 'CleanJet_pt[0]*(CleanJet_pt[0]>30)', + 'range' : (40,0,400), + 'xaxis' : 'p_{T} 1st jet', + 'fold' : 2 +} + +variables['jetpt2'] = { + 'name' : 'CleanJet_pt[1]*(CleanJet_pt[1]>30)', + 'range' : (40,0,200), + 'xaxis' : 'p_{T} 2nd jet', + 'fold' : 0 +} + +variables['jeteta1'] = { + 'name' : 'CleanJet_eta[0]*(CleanJet_pt[0]>30)', + 'range' : (50,-5,5), + 'xaxis' : '#eta 1st jet', + 'fold' : 2 +} + +variables['jeteta2'] = { + 'name' : 'CleanJet_eta[1]*(CleanJet_pt[1]>30)', + 'range' : (50,-5,5), + 'xaxis' : '#eta 2nd jet', + 'fold' : 0 +} + +variables['detajj'] = { + 'name' : 'abs(CleanJet_eta[0] - CleanJet_eta[1])*(CleanJet_pt[1]>30)', + 'range' : (20,0.,10.), + 'xaxis' : '#Delta#eta_{jj}', + 'fold' : 3 +} + +variables['dphijj'] = { + 'name' : 'dphijj', + 'range' : (20,0,3.2), + 'xaxis' : '#Delta#phi_{jj}', + 'fold' : 3 +} + +variables['mjj'] = { + 'name' : 'mjj*(CleanJet_pt[1]>30)', + 'range' : (20,0,1000), + 'xaxis' : 'm_{jj} [GeV]', + 'fold' : 3 +} + + +variables['puppimet'] = { + 'name' : 'PuppiMET_pt', + 'range' : (20,0,200), + 'xaxis' : 'PUPPI met [GeV]', + 'fold' : 3 +} + + +variables['mlljj20'] = { + 'name' : 'mlljj20_whss', + 'range' : (20,0,1000), + 'xaxis' : 'mlljj20 [GeV]', + 'fold' : 3 +} + +variables['mth'] = { + 'name' : 'mth', + 'range' : (50,0,250), + 'xaxis' : 'm_{T}^{H} [GeV]', + 'fold' : 0 +} + +variables['mtw1'] = { + 'name' : 'mtw1', + 'range' : (50,0,250), + 'xaxis' : 'm_{T}^{W_{1}} [GeV]', + 'fold' : 3 +} + +variables['mtw2'] = { + 'name' : 'mtw2', + 'range' : (50,0,200), + 'xaxis' : 'm_{T}^{W_{2}} [GeV]', + 'fold' : 3 +} + +variables['dphilljet'] = { + 'name' : 'dphilljet', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilljet', + 'fold' : 3 +} + +variables['dphilljetjet'] = { + 'name' : 'dphilljetjet*(CleanJet_pt[1]>30)', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilljetjet', + 'fold' : 3 +} + +variables['dphilmet'] = { + 'name' : 'dphilmet', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilmet', + 'fold' : 3 +} + +variables['dphilmet2'] = { + 'name' : 'dphilmet2', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilmet2', + 'fold' : 3 +} + +variables['dphillmet'] = { + 'name' : 'dphillmet', + 'range' : (20,0,3.2), + 'xaxis' : 'dphillmet', + 'fold' : 3 +} + +variables['dphilep1jet1'] = { + 'name' : 'dphilep1jet1', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilep1jet1', + 'fold' : 3 +} + +variables['dphilep1jet2'] = { + 'name' : 'dphilep1jet2*(CleanJet_pt[1]>30)', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilep1jet2', + 'fold' : 3 +} + +variables['dphilep2jet1'] = { + 'name' : 'dphilep2jet1', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilep2jet1', + 'fold' : 3 +} + +variables['dphilep2jet2'] = { + 'name' : 'dphilep2jet2*(CleanJet_pt[1]>30)', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilep1jet2', + 'fold' : 3 +} + +variables['dphijjmet'] = { + 'name' : 'dphijjmet', + 'range' : (20,0,3.2), + 'xaxis' : 'dphijjmet', + 'fold' : 3 +} + +variables['ht'] = { + 'name' : 'ht', + 'range' : (30,0,1500), + 'xaxis' : 'ht [GeV]', + 'fold' : 3 +} + +variables['dphijet1met'] = { + 'name' : 'dphijet1met', + 'range' : (20,0,3.2), + 'xaxis' : 'dphijet1met', + 'fold' : 3 +} From 275d359e3d4fbc68bcbbfed4c494987191447b21 Mon Sep 17 00:00:00 2001 From: ntrevisa Date: Thu, 14 Aug 2025 08:46:36 +0200 Subject: [PATCH 10/44] same-sign CR 2016HIPM --- ControlRegions/SS/2016HIPM/README.md | 117 +++ ControlRegions/SS/2016HIPM/aliases.py | 402 ++++++++ ControlRegions/SS/2016HIPM/configuration.py | 105 +++ ControlRegions/SS/2016HIPM/cuts.py | 139 +++ ControlRegions/SS/2016HIPM/nuisances.py | 961 ++++++++++++++++++++ ControlRegions/SS/2016HIPM/plot.py | 336 +++++++ ControlRegions/SS/2016HIPM/repeat.sh | 38 + ControlRegions/SS/2016HIPM/samples.py | 398 ++++++++ ControlRegions/SS/2016HIPM/structure.py | 156 ++++ ControlRegions/SS/2016HIPM/variables.py | 285 ++++++ 10 files changed, 2937 insertions(+) create mode 100644 ControlRegions/SS/2016HIPM/README.md create mode 100644 ControlRegions/SS/2016HIPM/aliases.py create mode 100644 ControlRegions/SS/2016HIPM/configuration.py create mode 100644 ControlRegions/SS/2016HIPM/cuts.py create mode 100644 ControlRegions/SS/2016HIPM/nuisances.py create mode 100644 ControlRegions/SS/2016HIPM/plot.py create mode 100644 ControlRegions/SS/2016HIPM/repeat.sh create mode 100644 ControlRegions/SS/2016HIPM/samples.py create mode 100644 ControlRegions/SS/2016HIPM/structure.py create mode 100644 ControlRegions/SS/2016HIPM/variables.py diff --git a/ControlRegions/SS/2016HIPM/README.md b/ControlRegions/SS/2016HIPM/README.md new file mode 100644 index 00000000..67f2cc5c --- /dev/null +++ b/ControlRegions/SS/2016HIPM/README.md @@ -0,0 +1,117 @@ +# Same-sign control region + +This configuration allows to produce control plots for the two-leptons same-sign and the three-leptons control regions. They are used to check the description of the non-prompt leptons. + +The instructions to run the analysis follow. + +### Load the mkShapesRDF environment + +Here, we assume `PlotsConfigurationsRun3` was installed in the same directory as `mkShapesRDF`. E.g., let's assume we have a `Run3` directory where we installed both `mkShapesRDF` and `PlotsConfigurationsRun3`. + +Then, we can source the `mkShapesRDF` environment using these commands: + + cd ../../../mkShapesRDF/ + + source start.sh + + cd - + +### Produce distributions using mkShapesMulti.py in batch mode + +Compile the configuration. Do it after every change to any file in this directory: + + mkShapesRDF -c 1 + +Produce histograms using batch: + + mkShapesRDF -c 1 -o 0 -f . -b 1 + +Check jobs status: + + mkShapesRDF -o 1 -f . + +Resubmit failed jobs: + + mkShapesRDF -o 1 -f . -r 1 + +Merge rootfiles: + + mkShapesRDF -o 2 -f . + +Plot distributions: + + mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png + +### Perform goodness of fit test + +Create datacards: + + mkDatacards + +Produce workspaces: + + mkdir -p GoF + + cd GoF/ + + VARIABLE=mjj + FINAL_STATE=mm_2j_SS_CR_plus + OUT_NAME=_${FINAL_STATE}_${VARIABLE} + + combineTool.py -M T2W -m 125 \ + -o datacard.root \ + -i ../datacards/hww2l2v_13TeV_WH_SS_${FINAL_STATE}_pt2ge20/${VARIABLE}/datacard.txt \ + --channel-masks \ + -P HiggsAnalysis.CombinedLimit.PhysicsModel:multiSignalModel \ + --PO 'map=.*/WH_h.*_plus:r_WH[1,-10.0,10.0]' \ + --PO 'map=.*/WH_h.*_minus:r_WH[1,-10.0,10.0]' + +Perform fit on real data: + + combineTool.py -M GoodnessOfFit ../datacards/hww2l2v_13TeV_WH_SS_${FINAL_STATE}_pt2ge20/${VARIABLE}/datacard.root \ + --algo=saturated \ + --setParameters r_WH=1 \ + --setParameterRanges r_WH=-5,5 \ + --redefineSignalPOIs r_WH \ + -n ${OUT_NAME} + +Produce toys based on the predictions: + + combineTool.py -M GoodnessOfFit ../datacards/hww2l2v_13TeV_WH_SS_${FINAL_STATE}_pt2ge20/${VARIABLE}/datacard.root \ + --algo=saturated \ + -t 1 \ + -s 0:10:1 \ + --dry-run \ + --job-mode=condor \ + --setParameters r_WH=1 \ + --setParameterRanges r_WH=-5,5 \ + --redefineSignalPOIs r_WH \ + -n ${OUT_NAME} + +Modify the sh file in order to submit 10 jobs running the 100 toys + + sed -i 's/-t 1/-t 10/g' condor_combine_task.sh + +If you run on the KIT machines, remember to adapt the submission file to the HTCondor requirements, by adding these lines to the top of `condor_combine_task.sub`: + + text_to_add=$'universe = container\ncontainer_image = /cvmfs/unpacked.cern.ch/registry.hub.docker.com/cverstege/alma9-gridjob:latest' + + printf "%s\n" "$text_to_add" | cat - condor_combine_task.sub > temp && mv temp condor_combine_task.sub + +Submit the jobs to condor + + condor_submit condor_combine_task.sub + +Once all jobs are done, merge the output and plot the results: + + hadd -f higgsCombine_${OUT_NAME}.GoodnessOfFit.mH120.toys.root higgsCombine${OUT_NAME}.GoodnessOfFit.mH120.*.root + + combineTool.py -M CollectGoodnessOfFit --input higgsCombine${OUT_NAME}.GoodnessOfFit.mH120.root higgsCombine_${OUT_NAME}.GoodnessOfFit.mH120.toys.root -m 125 -o GoF_${OUT_NAME}.json + + plotGof.py GoF_${OUT_NAME}.json --statistic saturated --mass 120.0 -o GoF_${OUT_NAME} --title-right=${OUT_NAME} --range 0 200 + +Clean the mess: + + rm combine* + rm condor* + rm higgsCombine* diff --git a/ControlRegions/SS/2016HIPM/aliases.py b/ControlRegions/SS/2016HIPM/aliases.py new file mode 100644 index 00000000..0092e9ac --- /dev/null +++ b/ControlRegions/SS/2016HIPM/aliases.py @@ -0,0 +1,402 @@ +import os +import copy +import inspect + +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/ControlRegions/SS/2016HIPM_v9/ + +configurations = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file +configurations = os.path.dirname(configurations) # 2016HIPM_v9 +configurations = os.path.dirname(configurations) # SS +configurations = os.path.dirname(configurations) # ControlRegions +configurations = os.path.dirname(configurations) # PlotsConfigurationsRun3 + +aliases = {} +aliases = OrderedDict() + +mc = [skey for skey in samples if skey not in ('Fake', 'DATA', 'Fake_from_ntuple')] + + +# LepCut2l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight80x_tthmva_80 +eleWP = 'mvaFall17V2Iso_WP90' +muWP = 'cut_Tight80x' + +aliases['LepWPCut'] = { + 'expr': 'LepCut2l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight80x*\ + ( ((abs(Lepton_pdgId[0])==13 && Muon_mvaTTH[Lepton_muonIdx[0]]>0.82) || (abs(Lepton_pdgId[0])==11 && Lepton_mvaTTH_UL[0]>0.90)) \ + && ((abs(Lepton_pdgId[1])==13 && Muon_mvaTTH[Lepton_muonIdx[1]]>0.82) || (abs(Lepton_pdgId[1])==11 && Lepton_mvaTTH_UL[1]>0.90)) )', + 'samples': mc + ['DATA'] +} + + +# Lepton SF (not considering the ttHMVA discriminant) +aliases['LepWPSF'] = { + 'expr': 'LepSF2l__ele_'+eleWP+'__mu_'+muWP, + 'samples': mc +} + + +# ttHMVA SFs and uncertainties +aliases['LepWPttHMVASF'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/ttHMVASF_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('ttHMVASF ttH = ttHMVASF(\"2016noHIPM\", 2, \"all\", \"nominal\",\"{configurations}/WH_chargeAsymmetry/UL/data/\");')"], + 'expr' : 'ttH(Lepton_pt, Lepton_eta, Lepton_pdgId)', + 'samples' : mc +} + +aliases['LepWPttHMVASFEleUp'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/ttHMVASF_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('ttHMVASF ttH_EleUp = ttHMVASF(\"2016noHIPM\", 2, \"all\", \"eleUp\" ,\"{configurations}/WH_chargeAsymmetry/UL/data/\");')"], + 'expr' : 'ttH_EleUp(Lepton_pt, Lepton_eta, Lepton_pdgId)', + 'samples' : mc +} +aliases['LepWPttHMVASFEleDown'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/ttHMVASF_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('ttHMVASF ttH_EleDown = ttHMVASF(\"2016noHIPM\", 2, \"all\", \"eleDown\" ,\"{configurations}/WH_chargeAsymmetry/UL/data/\");')"], + 'expr' : 'ttH_EleDown(Lepton_pt, Lepton_eta, Lepton_pdgId)', + 'samples' : mc +} + +aliases['LepWPttHMVASFMuUp'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/ttHMVASF_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('ttHMVASF ttH_MuUp = ttHMVASF(\"2016noHIPM\", 2, \"all\", \"muUp\" ,\"{configurations}/WH_chargeAsymmetry/UL/data/\");')"], + 'expr' : 'ttH_MuUp(Lepton_pt, Lepton_eta, Lepton_pdgId)', + 'samples' : mc +} +aliases['LepWPttHMVASFMuDown'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/ttHMVASF_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('ttHMVASF ttH_MuDown = ttHMVASF(\"2016noHIPM\", 2, \"all\", \"muDown\" ,\"{configurations}/WH_chargeAsymmetry/UL/data/\");')"], + 'expr' : 'ttH_MuDown(Lepton_pt, Lepton_eta, Lepton_pdgId)', + 'samples' : mc +} + + +# # LepCut2l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW_tthmva_80 +# eleWP_fake = 'mvaFall17V2Iso_WP90' +# muWP_fake = 'cut_Tight_HWWW_tthmva_80' + +# # Fake leptons transfer factor +# aliases['fakeW'] = { +# 'expr': 'fakeW2l_ele_'+eleWP_fake+'_mu_'+muWP_fake, +# 'samples': ['Fake'] +# } + +# # And variations - already divided by central values in formulas ! +# aliases['fakeWEleUp'] = { +# 'expr': 'fakeW2l_ele_'+eleWP_fake+'_mu_'+muWP_fake+'_EleUp', +# 'samples': ['Fake'] +# } +# aliases['fakeWEleDown'] = { +# 'expr': 'fakeW2l_ele_'+eleWP_fake+'_mu_'+muWP_fake+'_EleDown', +# 'samples': ['Fake'] +# } +# aliases['fakeWMuUp'] = { +# 'expr': 'fakeW2l_ele_'+eleWP_fake+'_mu_'+muWP_fake+'_MuUp', +# 'samples': ['Fake'] +# } +# aliases['fakeWMuDown'] = { +# 'expr': 'fakeW2l_ele_'+eleWP_fake+'_mu_'+muWP_fake+'_MuDown', +# 'samples': ['Fake'] +# } +# aliases['fakeWStatEleUp'] = { +# 'expr': 'fakeW2l_ele_'+eleWP_fake+'_mu_'+muWP_fake+'_statEleUp', +# 'samples': ['Fake'] +# } +# aliases['fakeWStatEleDown'] = { +# 'expr': 'fakeW2l_ele_'+eleWP_fake+'_mu_'+muWP_fake+'_statEleDown', +# 'samples': ['Fake'] +# } +# aliases['fakeWStatMuUp'] = { +# 'expr': 'fakeW2l_ele_'+eleWP_fake+'_mu_'+muWP_fake+'_statMuUp', +# 'samples': ['Fake'] +# } +# aliases['fakeWStatMuDown'] = { +# 'expr': 'fakeW2l_ele_'+eleWP_fake+'_mu_'+muWP_fake+'_statMuDown', +# 'samples': ['Fake'] +# } + +# Conept +aliases['Lepton_conept'] = { + 'expr': 'LeptonConePt(Lepton_pt, Lepton_pdgId, Lepton_electronIdx, Lepton_muonIdx, Electron_jetRelIso, Muon_jetRelIso)', + 'linesToAdd': [f'#include "{configurations}/utils/macros/LeptonConePt_class.cc"'], + 'samples': mc + ['Fake', 'DATA', 'DATA_unprescaled'] +} + +# Fake leptons transfer factor +aliases['fakeW'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"nominal\", 2, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} + +# And variations - already divided by central values in formulas ! +aliases['fakeWEleUp'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleUp = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"EleUp\", 2, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_EleUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} +aliases['fakeWEleDown'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleDown = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"EleDown\", 2, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_EleDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} + +aliases['fakeWMuUp'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuUp = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"MuUp\", 2, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_MuUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} +aliases['fakeWMuDown'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuDown = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"MuDown\", 2, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_MuDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} + +aliases['fakeWStatEleUp'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleUp = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"StatEleUp\", 2, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_StatEleUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} +aliases['fakeWStatEleDown'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleDown = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"StatEleDown\", 2, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_StatEleDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} + +aliases['fakeWStatMuUp'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuUp = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"StatMuUp\", 2, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_StatMuUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} +aliases['fakeWStatMuDown'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuDown = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"StatMuDown\", 2, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_StatMuDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} + +# # Charge-flip efficiencies and uncertainties +# aliases['ttHMVA_eff_flip_2l'] = { +# 'linesToAdd': ['#include "%s/macros/flipper_eff_class.cc"' % configurations], +# 'linesToProcess': ["ROOT.gInterpreter.Declare('flipper_eff flipper = flipper_eff(\"UL_2017\", 2, \"Total_SF\", \"false\");')"], +# 'expr' : 'flipper(Lepton_pt, Lepton_eta, Lepton_pdgId)', +# 'samples': ['DY','ChargeFlip'], +# } + +# aliases['ttHMVA_eff_err_flip_2l'] = { +# 'linesToAdd': ['#include "%s/macros/flipper_eff_class.cc"' % configurations], +# 'linesToProcess': ["ROOT.gInterpreter.Declare('flipper_eff flipper_unc = flipper_eff(\"UL_2017\", 2, \"Total_SF\", \"false\");')"], +# 'expr' : 'flipper_unc(Lepton_pt, Lepton_eta, Lepton_pdgId)', +# 'samples': ['DY','ChargeFlip'], +# } + + +# No jet with pt > 30 GeV +aliases['zeroJet'] = { + 'expr': 'Alt(CleanJet_pt, 0, 0) < 30.' +} + +aliases['oneJet'] = { + 'expr': 'Alt(CleanJet_pt, 0, 0) > 30. && Alt(CleanJet_pt, 1, 0) < 30.' +} + +aliases['multiJet'] = { + 'expr': 'Alt(CleanJet_pt, 1, 0) > 30.' +} + + +########################################################################################## +# b tagging WPs: https://twiki.cern.ch/twiki/bin/view/CMS/BtagRecommendation106XUL16preVFP +########################################################################################## + +# DeepB = DeepCSV +bWP_loose_deepB = '0.2027' +bWP_medium_deepB = '0.6001' +bWP_tight_deepB = '0.8819' + +# DeepFlavB = DeepJet +bWP_loose_deepFlavB = '0.0508' +bWP_medium_deepFlavB = '0.2598' +bWP_tight_deepFlavB = '0.6502' + +# Actual algo and WP definition. BE CONSISTENT!! +bAlgo = 'DeepB' # ['DeepB', 'DeepFlavB' ] +bWP = bWP_medium_deepB # [bWP_loose_deepB, bWP_loose_deepFlavB] +bSF = 'deepcsv' # ['deepcsv', 'deepjet' ] + +# b veto +aliases['bVeto'] = { + 'expr': 'Sum(CleanJet_pt > 20. && abs(CleanJet_eta) < 2.5 && Take(Jet_btag{}, CleanJet_jetIdx) > {}) == 0'.format(bAlgo, bWP) +} + +aliases['bVetoSF'] = { + 'expr': 'TMath::Exp(Sum(LogVec((CleanJet_pt>20 && abs(CleanJet_eta)<2.5)*Take(Jet_btagSF_{}_shape, CleanJet_jetIdx)+1*(CleanJet_pt<20 || abs(CleanJet_eta)>2.5))))'.format(bSF), + 'samples': mc +} + +# At least one b-tagged jet +aliases['bReq'] = { + 'expr': 'Sum(CleanJet_pt > 30. && abs(CleanJet_eta) < 2.5 && Take(Jet_btag{}, CleanJet_jetIdx) > {}) >= 1'.format(bAlgo, bWP) +} + +aliases['bReqSF'] = { + 'expr': 'TMath::Exp(Sum(LogVec((CleanJet_pt>30 && abs(CleanJet_eta)<2.5)*Take(Jet_btagSF_{}_shape, CleanJet_jetIdx)+1*(CleanJet_pt<30 || abs(CleanJet_eta)>2.5))))'.format(bSF), + 'samples': mc +} + +# Top control region +aliases['topcr'] = { + 'expr': 'mtw2>30 && mll>50 && ((zeroJet && !bVeto) || bReq)' +} + +# WW control region +aliases['wwcr'] = { + 'expr': 'mth>60 && mtw2>30 && mll>100 && bVeto' +} + +# Overall b tag SF +aliases['btagSF'] = { + 'expr': '(bVeto || (topcr && zeroJet))*bVetoSF + (topcr && !zeroJet)*bReqSF', + 'samples': mc +} + +for shift in ['jesAbsolute', 'jesAbsolute_2016', 'jesBBEC1', 'jesBBEC1_2016', 'jesEC2', + 'jesEC2_2016', 'jesFlavorQCD', 'jesHF', 'jesHF_2016', 'jesRelativeBal', + 'jesRelativeSample_2016']: + for var in ['up','down']: + aliases[f'Jet_btagSF_{bSF}_shape_{shift.replace("jes","JES")}{var[:2]}'] = { + 'expr' : f'Jet_btagSF_{bSF}_shape_{var}_{shift}', + 'samples' : mc + } + +for shift in ['jesAbsolute', 'jesAbsolute_2016', 'jesBBEC1', 'jesBBEC1_2016', 'jesEC2', + 'jesEC2_2016', 'jesFlavorQCD', 'jesHF', 'jesHF_2016', 'jesRelativeBal', + 'jesRelativeSample_2016', 'lf', 'hf', 'lfstats1', 'lfstats2', + 'hfstats1', 'hfstats2', 'cferr1', 'cferr2']: + + for targ in ['bVeto', 'bReq']: + alias = aliases['%sSF%sup' % (targ, shift)] = copy.deepcopy(aliases['%sSF' % targ]) + alias['expr'] = alias['expr'].replace('btagSF_{}_shape'.format(bSF), 'btagSF_{}_shape_up_{}'.format(bSF, shift)) + + alias = aliases['%sSF%sdown' % (targ, shift)] = copy.deepcopy(aliases['%sSF' % targ]) + alias['expr'] = alias['expr'].replace('btagSF_{}_shape'.format(bSF), 'btagSF_{}_shape_down_{}'.format(bSF, shift)) + + aliases['btagSF%sup' % shift] = { + 'expr': aliases['btagSF']['expr'].replace('SF', 'SF' + shift + 'up'), + 'samples': mc + } + + aliases['btagSF%sdown' % shift] = { + 'expr': aliases['btagSF']['expr'].replace('SF', 'SF' + shift + 'down'), + 'samples': mc + } + +#################################################################################### +# End of b tagging pippone +#################################################################################### + + +# Need to redefine PUID scale factors, so that they are double and not vectors +aliases['Jet_PUIDSF'] = { + 'expr' : 'TMath::Exp(Sum((Jet_jetId>=2)*LogVec(Jet_PUIDSF_loose)))', + 'samples': mc +} + +aliases['Jet_PUIDSF_up'] = { + 'expr' : 'TMath::Exp(Sum((Jet_jetId>=2)*LogVec(Jet_PUIDSF_loose_up)))', + 'samples': mc +} + +aliases['Jet_PUIDSF_down'] = { + 'expr' : 'TMath::Exp(Sum((Jet_jetId>=2)*LogVec(Jet_PUIDSF_loose_down)))', + 'samples': mc +} + + +aliases['gstarLow'] = { + 'expr': 'Gen_ZGstar_mass > 0 && Gen_ZGstar_mass < 4', + 'samples': 'VgS' +} + +aliases['gstarHigh'] = { + 'expr': 'Gen_ZGstar_mass < 0 || Gen_ZGstar_mass > 4', + 'samples': 'WZ' +} + +# gen-matching to prompt only (GenLepMatch2l matches to *any* gen lepton) +aliases['PromptGenLepMatch2l'] = { + 'expr': 'Alt(Lepton_promptgenmatched, 0, 0) * Alt(Lepton_promptgenmatched, 1, 0)', + 'samples': mc +} + +# # PostProcessing did not create (anti)topGenPt for ST samples with _ext1 +# lastcopy = (1 << 13) + +aliases['Top_pTrw'] = { + 'expr': '(topGenPt * antitopGenPt > 0.) * (TMath::Sqrt(TMath::Exp(0.0615 - 0.0005 * topGenPt) * TMath::Exp(0.0615 - 0.0005 * antitopGenPt))) + (topGenPt * antitopGenPt <= 0.)', + 'samples': ['top'] +} + +# data/MC scale factors +aliases['SFweight'] = { + 'expr': ' * '.join(['SFweight2l', 'LepWPCut', 'LepWPSF','Jet_PUIDSF', 'btagSF', 'LepWPttHMVASF']), + 'samples': mc, +} + +# variations +aliases['SFweightEleUp'] = { + 'expr': 'LepSF2l__ele_'+eleWP+'__Up', + 'samples': mc +} +aliases['SFweightEleDown'] = { + 'expr': 'LepSF2l__ele_'+eleWP+'__Do', + 'samples': mc +} + +aliases['SFweightMuUp'] = { + 'expr': 'LepSF2l__mu_'+muWP+'__Up', + 'samples': mc +} +aliases['SFweightMuDown'] = { + 'expr': 'LepSF2l__mu_'+muWP+'__Do', + 'samples': mc +} + +# TriggerSFWeight_2l:TriggerSFWeight_2l_u:TriggerSFWeight_2l_d +aliases['SFtriggUp'] = { + 'expr': 'TriggerSFWeight_2l_u/TriggerSFWeight_2l', + 'samples': mc +} +aliases['SFtriggDown'] = { + 'expr': 'TriggerSFWeight_2l_d/TriggerSFWeight_2l', + 'samples': mc +} + +# Evaluate BDT discriminant +aliases['BDT_WHSS_TopSemileptonic_v9'] = { + 'linesToAdd' : ['#include "%s/ControlRegions/SS/macros/BDT_WHSS_TopSemileptonic_v9_class.cc"' % configurations], + 'linesToProcess' : ["ROOT.gInterpreter.Declare('BDT_WHSS_TopSemileptonic_v9 BDT_WHSS = BDT_WHSS_TopSemileptonic_v9(\"BDTG_6\",\"{0}/ControlRegions/SS/data/BDT/2016HIPM/WHSS/weights/TMVAClassification_BDTG_6.weights.xml\");')".format(configurations)], + 'expr' : 'BDT_WHSS(mll,mjj,mtw1,mtw2,ptll,mlljj20_whss,PuppiMET_pt,dphill,dphijj,dphillmet,dphilmet2,dphijet1met,CleanJet_pt,Jet_btagDeepB,CleanJet_jetIdx)', + 'samples' : mc + ['DATA','Fake'], +} + +aliases['BDT_WH3l_OSSF_new_v9'] = { + 'linesToAdd' : ['#include "%s/ControlRegions/SS/macros/BDT_WH3l_OSSF_v9_class.cc"' % configurations], + 'linesToProcess' : ["ROOT.gInterpreter.Declare('BDT_WH3l_OSSF_v9 BDT_WH3l_OSSF = BDT_WH3l_OSSF_v9(\"BDTG4C3\",\"{0}/ControlRegions/SS/data/BDT/2016HIPM/WH3l/OSSF/weights/TMVAClassification_BDTG4C3.weights.xml\");')".format(configurations)], + 'expr' : 'BDT_WH3l_OSSF(WH3l_dphilllmet,WH3l_mOSll,WH3l_ptOSll,WH3l_drOSll,WH3l_ZVeto,WH3l_mtlmet,WH3l_dphilmet,WH3l_ptWWW,PuppiMET_pt,Lepton_pt)', + 'samples' : mc + ['DATA','Fake'], +} + +aliases['BDT_WH3l_SSSF_new_v9'] = { + 'linesToAdd' : ['#include "%s/ControlRegions/SS/macros/BDT_WH3l_SSSF_v9_class.cc"' % configurations], + 'linesToProcess' : ["ROOT.gInterpreter.Declare('BDT_WH3l_SSSF_v9 BDT_WH3l_SSSF = BDT_WH3l_SSSF_v9(\"BDTG4C3\",\"{0}/ControlRegions/SS/data/BDT/2016HIPM/WH3l/SSSF/weights/TMVAClassification_BDTG4SK01_05shrinkage.weights.xml\");')".format(configurations)], + 'expr' : 'BDT_WH3l_SSSF(WH3l_dphilllmet,WH3l_mOSll,WH3l_ptOSll,WH3l_drOSll,WH3l_dphilmet,WH3l_ptWWW,PuppiMET_pt,Lepton_pt)', + 'samples' : mc + ['DATA','Fake'], +} diff --git a/ControlRegions/SS/2016HIPM/configuration.py b/ControlRegions/SS/2016HIPM/configuration.py new file mode 100644 index 00000000..17acf538 --- /dev/null +++ b/ControlRegions/SS/2016HIPM/configuration.py @@ -0,0 +1,105 @@ +# Configuration file for two-leptons same-sign and three-leptons using the UL 2016HIPM dataset + +import sys,inspect + +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' + +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/ControlRegions/SS/2016HIPM_v9/ + +configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file +configurations_nuisance = os.path.dirname(configurations_nuisance) # 2016HIPM_v9 +configurations_nuisance = os.path.dirname(configurations_nuisance) # SS +configurations_nuisance = os.path.dirname(configurations_nuisance) # ControlRegions + +# Tag used to identify the configuration folder version +tag = 'SS_2016HIPM_v9' + +# File to use as runner script, default uses mkShapesRDF.shapeAnalysis.runner, otherwise specify path to script +runnerFile = "default" + +# Output file name +outputFile = "mkShapes__{}.root".format(tag) + +# Path to ouput folder +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +if site == 'kit': + outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" + +# Path to batch folder (used for condor submission) +batchFolder = "condor" + +# Path to configuration folder (will contain all the compiled configuration files) +configsFolder = "configs" + +# luminosity to normalize to (in 1/fb) +# https://github.com/latinos/LatinoAnalysis/blob/UL_production/NanoGardener/python/data/TrigMaker_cfg.py#L27 (#95 #165) +# 16.802739097 + 1.063261220 + 1.655228036 = 19.521228353 +lumi = 19.52 + +# File with dict of aliases to define +aliasesFile = "aliases.py" + +# File with dict of variables +variablesFile = "variables.py" + +# File with dict of cuts +cutsFile = "cuts.py" + +# File with dict of samples +samplesFile = "samples.py" + +# File with dict of samples for plotting +plotFile = 'plot.py' + +# File with dict of structure (used to define processes in combine) +structureFile = "structure.py" + +# Nuisances file for mkDatacards and for mkShape +nuisancesFile = "nuisances.py" + +# Path to folder where to save plots +plotPath = 'plots_' + tag + +# This lines are executed right before the runner on the condor node +mountEOS = [] + +# List of imports to import when compiling the whole configuration folder, it should not contain imports used by configuration.py +imports = ["os", "glob", ("collections", "OrderedDict"), "ROOT"] + +# List of files to compile +filesToExec = [ + samplesFile, + aliasesFile, + variablesFile, + cutsFile, + plotFile, + nuisancesFile, + structureFile, +] + +# List of variables to keep in the compiled configuration folder +varsToKeep = [ + "batchVars", + "outputFolder", + "batchFolder", + "configsFolder", + "outputFile", + "runnerFile", + "tag", + "samples", + "aliases", + "variables", + ("cuts", {"cuts": "cuts", "preselections": "preselections"}), + ("plot", {"plot": "plot", "groupPlot": "groupPlot", "legend": "legend"}), + "nuisances", + "structure", + "lumi", +] + +# List of variables to keep in the batch submission script (script.py) +batchVars = varsToKeep[varsToKeep.index("samples") :] + +varsToKeep += ['plotPath'] diff --git a/ControlRegions/SS/2016HIPM/cuts.py b/ControlRegions/SS/2016HIPM/cuts.py new file mode 100644 index 00000000..5b25d208 --- /dev/null +++ b/ControlRegions/SS/2016HIPM/cuts.py @@ -0,0 +1,139 @@ +cuts = {} + +# cuts +preselections = 'mll>12 \ + && Lepton_pt[0]>25 \ + && Lepton_pt[1]>10 \ + && (abs(Lepton_pdgId[1])==13 || Lepton_pt[1]>13) \ + && abs(Lepton_eta[0])<2.5 && abs(Lepton_eta[1])<2.5 \ + && bVeto \ +' + + +########################################################################### +# B-veto: pre-selection compared to the WH charge-asymmetry signal region # +########################################################################### + +# mu-mu +cuts['hww2l2v_13TeV_WH_SS_mm_2j'] = { + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 13*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30', + 'categories' : { + 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]>=20', + 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]>=20', + # 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20', + # 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20', + } +} + +# mu-e +cuts['hww2l2v_13TeV_WH_SS_em_2j'] = { + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30', + 'categories' : { + 'SS_CR_plus_pt2ge20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]>=20', + 'SS_CR_minus_pt2ge20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]>=20', + # 'SS_CR_plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20', + # 'SS_CR_minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20', + } +} + +# e-e +cuts['hww2l2v_13TeV_WH_SS_ee_2j'] = { + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*11) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && abs(mll-91.2)>15', + 'categories' : { + 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20', + 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20', + # 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20', + # 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20', + } +} + + +## SR 1jet + +# mu-mu +cuts['hww2l2v_13TeV_WH_SS_mm_1j'] = { + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 13*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)<30', + 'categories' : { + 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]>=20', + 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]>=20', + # 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20', + # 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20', + } +} + +# mu-e +cuts['hww2l2v_13TeV_WH_SS_em_1j'] = { + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)<30', + 'categories' : { + 'SS_CR_plus_pt2ge20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]>=20', + 'SS_CR_minus_pt2ge20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]>=20', + # 'SS_CR_plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20', + # 'SS_CR_minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20', + } +} + +# e-e +cuts['hww2l2v_13TeV_WH_SS_ee_1j'] = { + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*11) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)<30 && abs(mll-91.2)>15', + 'categories' : { + 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20', + 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20', + # 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20', + # 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20', + } +} + + +## SR 0jet + +# mu-mu +cuts['hww2l2v_13TeV_WH_SS_mm_0j'] = { + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 13*13) && nLepton==2 && Alt(CleanJet_pt,0,0)<30', + 'categories' : { + 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]>=20', + 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]>=20', + # 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20', + # 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20', + } +} + +# mu-e +cuts['hww2l2v_13TeV_WH_SS_em_0j'] = { + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*13) && nLepton==2 && Alt(CleanJet_pt,0,0)<30', + 'categories' : { + 'SS_CR_plus_pt2ge20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]>=20', + 'SS_CR_minus_pt2ge20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]>=20', + # 'SS_CR_plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20', + # 'SS_CR_minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20', + } +} + +# e-e +cuts['hww2l2v_13TeV_WH_SS_ee_0j'] = { + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*11) && nLepton==2 && Alt(CleanJet_pt,0,0)<30 && abs(mll-91.2)>15', + 'categories' : { + 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20', + 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20', + # 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20', + # 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20', + } +} + + +## SR 3 leptons: only 0 jet bin +cuts['hww2l2v_13TeV_WH_3l'] = { + 'expr' : 'nLepton>=3 && Alt(Lepton_pt,3,0)<10 && Alt(CleanJet_pt,0,0)<30 && (WH3l_mOSll[0]<0 || WH3l_mOSll[0]>12) && (WH3l_mOSll[1]<0 || WH3l_mOSll[1]>12) && (WH3l_mOSll[2]<0 || WH3l_mOSll[2]>12)', + 'categories' : { + 'sssf_plus_pt2ge20' : 'WH3l_flagOSSF == 0 && abs(WH3l_chlll) == 1 && Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]>0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15', + 'sssf_minus_pt2ge20' : 'WH3l_flagOSSF == 0 && abs(WH3l_chlll) == 1 && Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]<0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15', + 'ossf_plus_pt2ge20' : 'WH3l_flagOSSF == 1 && abs(WH3l_chlll) == 1 && Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]>0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15 && WH3l_ZVeto > 20 && PuppiMET_pt > 40', + 'ossf_minus_pt2ge20' : 'WH3l_flagOSSF == 1 && abs(WH3l_chlll) == 1 && Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]<0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15 && WH3l_ZVeto > 20 && PuppiMET_pt > 40', + } +} + +# mlljj20_whss: +# inv_mass of: (jet1, jet2, 2*closest_lep_to_jets) +# jets are considered with pT > 20 GeV + +# Definitions of WH3l variables: +# https://github.com/latinos/LatinoAnalysis/blob/76e7c4b93aa5f056c92440d4e8d24e7de749c8fe/NanoGardener/python/modules/l3KinProducer.py diff --git a/ControlRegions/SS/2016HIPM/nuisances.py b/ControlRegions/SS/2016HIPM/nuisances.py new file mode 100644 index 00000000..3304e5e4 --- /dev/null +++ b/ControlRegions/SS/2016HIPM/nuisances.py @@ -0,0 +1,961 @@ +import sys + +nuisances = {} + +mcProduction = 'Summer20UL16_106x_nAODv9_HIPM_Full2016v9' +dataReco = 'Run2016_UL2016_nAODv9_HIPM_Full2016v9' +mcSteps = 'MCl1loose2016v9__MCCorr2016v9NoJERInHorn__l2tightOR2016v9' +fakeSteps = 'DATAl1loose2016v9__l2loose__fakeW' +dataSteps = 'DATAl1loose2016v9__l2loose__l2tightOR2016v9' + +treeBaseDir = '/eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano' +limitFiles = -1 + +mc = [skey for skey in samples if skey not in ('Fake', 'DATA','ChargeFlip')] + +redirector = "" + +useXROOTD = False + +def makeMCDirectory(var=''): + if var== '': + print(os.path.join(treeBaseDir, mcProduction, mcSteps)) + return os.path.join(treeBaseDir, mcProduction, mcSteps) + else: + print(os.path.join(treeBaseDir, mcProduction, mcSteps + '__' + var)) + return os.path.join(treeBaseDir, mcProduction, mcSteps + '__' + var) + +mcDirectory = makeMCDirectory() +fakeDirectory = os.path.join(treeBaseDir, dataReco, fakeSteps) +dataDirectory = os.path.join(treeBaseDir, dataReco, dataSteps) + +################################ EXPERIMENTAL UNCERTAINTIES ################################# + +#### Luminosity + +# https://twiki.cern.ch/twiki/bin/view/CMS/LumiRecommendationsRun2#LumiComb +# Uncorrelated 2016 1.0 +# Uncorrelated 2017 2.0 +# Uncorrelated 2018 1.5 +# Correlated 2016, 2017, 2018 0.6, 0.9, 2.0 +# Correlated 2017, 2018 0.6, 0.2 + +nuisances['lumi_Uncorrelated'] = { + 'name' : 'lumi_13TeV_2016', + 'type' : 'lnN', + 'samples' : dict((skey, '1.010') for skey in mc if skey not in ['WZ']) +} + +nuisances['lumi_Correlated_Run2'] = { + 'name' : 'lumi_13TeV_correlated', + 'type' : 'lnN', + 'samples' : dict((skey, '1.006') for skey in mc if skey not in ['WZ']) +} + + +### Fakes + +# Per lepton +nuisances['fake_ele'] = { + 'name' : 'CMS_WH_hww_fake_e_2016', + 'kind' : 'weight', + 'type' : 'shape', + 'samples' : { + 'Fake_ee' : ['fakeWEleUp', 'fakeWEleDown'], + 'Fake_em' : ['fakeWEleUp', 'fakeWEleDown'], + } +} + +nuisances['fake_ele_stat'] = { + 'name' : 'CMS_WH_hww_fake_stat_e_2016', + 'kind' : 'weight', + 'type' : 'shape', + 'samples' : { + 'Fake_ee' : ['fakeWStatEleUp', 'fakeWStatEleDown'], + 'Fake_em' : ['fakeWStatEleUp', 'fakeWStatEleDown'], + } +} + + +nuisances['fake_mu'] = { + 'name' : 'CMS_WH_hww_fake_m_2016', + 'kind' : 'weight', + 'type' : 'shape', + 'samples' : { + 'Fake_mm' : ['fakeWMuUp', 'fakeWMuDown'], + 'Fake_em' : ['fakeWMuUp', 'fakeWMuDown'], + } +} + +nuisances['fake_mu_stat'] = { + 'name' : 'CMS_WH_hww_fake_stat_m_2016', + 'kind' : 'weight', + 'type' : 'shape', + 'samples' : { + 'Fake_mm' : ['fakeWStatMuUp', 'fakeWStatMuDown'], + 'Fake_em' : ['fakeWStatMuUp', 'fakeWStatMuDown'], + } +} + +# Normalization per final state +jet_bins = ['0j','1j','2j'] +channels = ['ee', 'em', 'mm'] +charges = ['plus', 'minus'] + +eta_regimes = ['barrel', 'endcap'] +pt_regimes = ['high', 'medium'] + +fake_syst_dict = { + 'endcap_medium_pt': ['1.0*(abs(Lepton_eta[1])<=1.479) + 1.0*(Lepton_pt[1]> 35) + 1.1*(abs(Lepton_eta[1])> 1.479 && Lepton_pt[1]<=35)', + '1.0*(abs(Lepton_eta[1])<=1.479) + 1.0*(Lepton_pt[1]> 35) + 1.0/1.1*(abs(Lepton_eta[1])> 1.479 && Lepton_pt[1]<=35)'], + 'barrel_medium_pt': ['1.0*(abs(Lepton_eta[1])> 1.479) + 1.0*(Lepton_pt[1]> 35) + 1.1*(abs(Lepton_eta[1])<=1.479 && Lepton_pt[1]<=35)', + '1.0*(abs(Lepton_eta[1])> 1.479) + 1.0*(Lepton_pt[1]> 35) + 1.0/1.1*(abs(Lepton_eta[1])<=1.479 && Lepton_pt[1]<=35)'], + 'endcap_high_pt' : ['1.0*(abs(Lepton_eta[1])<=1.479) + 1.0*(Lepton_pt[1]<=35) + 1.1*(abs(Lepton_eta[1])> 1.479 && Lepton_pt[1]> 35)', + '1.0*(abs(Lepton_eta[1])<=1.479) + 1.0*(Lepton_pt[1]<=35) + 1.0/1.1*(abs(Lepton_eta[1])> 1.479 && Lepton_pt[1]> 35)'], + 'barrel_high_pt' : ['1.0*(abs(Lepton_eta[1])> 1.479) + 1.0*(Lepton_pt[1]<=35) + 1.1*(abs(Lepton_eta[1])<=1.479 && Lepton_pt[1]> 35)', + '1.0*(abs(Lepton_eta[1])> 1.479) + 1.0*(Lepton_pt[1]<=35) + 1.0/1.1*(abs(Lepton_eta[1])<=1.479 && Lepton_pt[1]> 35)'], +} + +for jet_bin in jet_bins: + for channel in channels: + for charge in charges: + + nuisances[f'CMS_WH_hww_fake_syst_{jet_bin}_{channel}_{charge}'] = { + 'name' : f'CMS_WH_hww_fake_syst_{jet_bin}_{channel}_{charge}_2016', + 'samples' : { + f'Fake_{channel}' : '1.30', + }, + 'type' : 'lnN', + 'cuts' : [ + f'hww2l2v_13TeV_WH_SS_{channel}_{jet_bin}_SS_CR_{charge}_pt2ge20', + ], + } + + # for eta_regime in eta_regimes: + # for pt_regime in pt_regimes: + # nuisances[f'CMS_WH_hww_fake_syst_{eta_regime}_{pt_regime}_{channel}'] = { + # 'name' : f'CMS_WH_hww_fake_syst_{eta_regime}_{pt_regime}_{channel}_2016', + # 'samples' : { + # f'Fake_{channel}' : f'{eta_regime}_{pt_regime}_pt', + # }, + # 'type' : 'shape', + # 'cuts' : [cut for cut in cuts if (f'_{channel}_' in cut)], + # } + + +flavors = ['sssf', 'ossf'] + +for flavor in flavors: + for charge in charges: + + nuisances[f'CMS_WH_hww_fake_syst_{flavor}_{charge}'] = { + 'name' : f'CMS_WH_hww_fake_syst_{flavor}_{charge}_2016', + 'samples' : { + 'Fake' : '1.30', + }, + 'type' : 'lnN', + 'cuts' : [ + f'hww2l2v_13TeV_WH_3l_{flavor}_{charge}_pt2ge20', + ], + } + + # for eta_regime in eta_regimes: + # for pt_regime in pt_regimes: + # nuisances[f'CMS_WH_hww_fake_syst_{eta_regime}_{pt_regime}_{flavor}'] = { + # 'name' : f'CMS_WH_hww_fake_syst_{eta_regime}_{pt_regime}_{flavor}_2016', + # 'samples' : { + # f'Fake' : f'{eta_regime}_{pt_regime}_pt', + # }, + # 'type' : 'shape', + # 'cuts' : [cut for cut in cuts if (f'_{flavor}_' in cut)], + # } + + +# ###### B-tagger + +# for shift in ['lf', 'hf', 'hfstats1', 'hfstats2', 'lfstats1', 'lfstats2', 'cferr1', 'cferr2']: +# btag_syst = ['(btagSF%sup)/(btagSF)' % shift, '(btagSF%sdown)/(btagSF)' % shift] + +# name = 'CMS_btag_%s' % shift +# if 'stats' in shift: +# name += '_2017' + +# nuisances['btag_shape_%s' % shift] = { +# 'name' : name, +# 'kind' : 'weight', +# 'type' : 'shape', +# 'samples' : dict((skey, btag_syst) for skey in mc), +# } + +# ##### Trigger Scale Factors + +# trig_syst = ['TriggerSFWeight_2l_u/TriggerSFWeight_2l', 'TriggerSFWeight_2l_d/TriggerSFWeight_2l'] + +# nuisances['trigg'] = { +# 'name' : 'CMS_eff_hwwtrigger_2017', +# 'kind' : 'weight', +# 'type' : 'shape', +# 'samples' : dict((skey, trig_syst) for skey in mc) +# } + +# ##### Electron Efficiency and energy scale + +# nuisances['eff_e'] = { +# 'name' : 'CMS_eff_e_2017', +# 'kind' : 'weight', +# 'type' : 'shape', +# 'samples' : dict((skey, ['SFweightEleUp', 'SFweightEleDown']) for skey in mc) +# } + +# nuisances['eff_ttHMVA_e'] = { +# 'name' : 'CMS_eff_ttHMVA_e_2017', +# 'kind' : 'weight', +# 'type' : 'shape', +# 'samples' : dict((skey, ['LepWPttHMVASFEleUp', 'LepWPttHMVASFEleDown']) for skey in mc) +# } + +# nuisances['electronpt'] = { +# 'name' : 'CMS_scale_e_2017', +# 'kind' : 'suffix', +# 'type' : 'shape', +# 'mapUp' : 'ElepTup', +# 'mapDown' : 'ElepTdo', +# 'samples' : dict((skey, ['1', '1']) for skey in mc), +# 'folderUp' : makeMCDirectory('ElepTup_suffix'), +# 'folderDown' : makeMCDirectory('ElepTdo_suffix'), +# 'AsLnN' : '0' +# } + +# ##### Muon Efficiency and energy scale + +# nuisances['eff_m'] = { +# 'name' : 'CMS_eff_m_2017', +# 'kind' : 'weight', +# 'type' : 'shape', +# 'samples' : dict((skey, ['SFweightMuUp', 'SFweightMuDown']) for skey in mc) +# } + +# nuisances['eff_ttHMVA_m'] = { +# 'name' : 'CMS_eff_ttHMVA_m_2017', +# 'kind' : 'weight', +# 'type' : 'shape', +# 'samples' : dict((skey, ['LepWPttHMVASFMuUp', 'LepWPttHMVASFMuDown']) for skey in mc) +# } + +# nuisances['muonpt'] = { +# 'name' : 'CMS_scale_m_2017', +# 'kind' : 'suffix', +# 'type' : 'shape', +# 'mapUp' : 'MupTup', +# 'mapDown' : 'MupTdo', +# 'samples' : dict((skey, ['1', '1']) for skey in mc), +# 'folderUp' : makeMCDirectory('MupTup_suffix'), +# 'folderDown' : makeMCDirectory('MupTdo_suffix'), +# 'AsLnN' : '0' +# } + +# ##### Jet energy scale +# jes_systs = ['JESAbsolute','JESAbsolute_2017','JESBBEC1','JESBBEC1_2017','JESEC2','JESEC2_2017','JESFlavorQCD','JESHF','JESHF_2017','JESRelativeBal','JESRelativeSample_2017'] + +# for js in jes_systs: + +# nuisances[js] = { +# 'name' : 'CMS_scale_' + js.replace("JES","j_"), +# 'kind' : 'suffix', +# 'type' : 'shape', +# 'mapUp' : js + 'up', +# 'mapDown' : js + 'do', +# 'samples' : dict((skey, ['1', '1']) for skey in mc), +# 'folderUp' : makeMCDirectory('RDF__JESup_suffix'), +# 'folderDown': makeMCDirectory('RDF__JESdo_suffix'), +# 'reweight' : ['btagSF'+js.replace('JES','jes')+'up/btagSF','btagSF'+js.replace('JES','jes')+'down/btagSF'], +# 'AsLnN' : '0' +# } + +# ##### Jet energy resolution +# nuisances['JER'] = { +# 'name' : 'CMS_res_j_2017', +# 'kind' : 'suffix', +# 'type' : 'shape', +# 'mapUp' : 'JERup', +# 'mapDown' : 'JERdo', +# 'samples' : dict((skey, ['1', '1']) for skey in mc), +# 'folderUp' : makeMCDirectory('JERup_suffix'), +# 'folderDown': makeMCDirectory('JERdo_suffix'), +# 'AsLnN' : '0' +# } + +# ##### MET unclustered energy + +# # metUp.PuppiMET_pt_METup +# nuisances['met'] = { +# 'name' : 'CMS_scale_met_2017', +# 'kind' : 'suffix', +# 'type' : 'shape', +# 'mapUp' : 'METup', +# 'mapDown' : 'METdo', +# 'samples' : dict((skey, ['1', '1']) for skey in mc), +# 'folderUp' : makeMCDirectory('METup_suffix'), +# 'folderDown': makeMCDirectory('METdo_suffix'), +# 'AsLnN' : '0' +# } + + +# ##### Pileup + +# # puWeight_UL2017 +# nuisances['PU'] = { +# 'name' : 'CMS_pileup_2017', +# 'kind' : 'weight', +# 'type' : 'shape', +# 'samples' : { +# 'DY' : ['0.998687*(puWeightUp/puWeight)', '1.001976*(puWeightDown/puWeight)'], +# 'top' : ['1.002595*(puWeightUp/puWeight)', '0.997470*(puWeightDown/puWeight)'], +# 'WW' : ['1.004449*(puWeightUp/puWeight)', '0.995660*(puWeightDown/puWeight)'], +# 'WWewk' : ['1.002122*(puWeightUp/puWeight)', '0.998087*(puWeightDown/puWeight)'], +# 'ggWW' : ['1.004870*(puWeightUp/puWeight)', '0.995315*(puWeightDown/puWeight)'], +# 'WZ' : ['0.999330*(puWeightUp/puWeight)', '1.000992*(puWeightDown/puWeight)'], +# 'ZZ' : ['0.999469*(puWeightUp/puWeight)', '1.000751*(puWeightDown/puWeight)'], +# 'VVV' : ['1.003485*(puWeightUp/puWeight)', '0.997561*(puWeightDown/puWeight)'], +# 'ggH_hww' : ['1.003677*(puWeightUp/puWeight)', '0.995996*(puWeightDown/puWeight)'], +# 'qqH_hww' : ['1.003747*(puWeightUp/puWeight)', '0.995878*(puWeightDown/puWeight)'], +# }, +# 'AsLnN' : '0', +# } + +# ### PU ID SF uncertainty + +# # puid_syst = ['Jet_PUIDSF_loose_up/Jet_PUIDSF_loose', 'Jet_PUIDSF_loose_down/Jet_PUIDSF_loose'] +# puid_syst = ['Jet_PUIDSF_up/Jet_PUIDSF', 'Jet_PUIDSF_down/Jet_PUIDSF'] + +# nuisances['jetPUID'] = { +# 'name' : 'CMS_eff_j_PUJET_id_2017', +# 'kind' : 'weight', +# 'type' : 'shape', +# 'samples' : dict((skey, puid_syst) for skey in mc) +# } + +# ### PS and UE + +# nuisances['PS_ISR'] = { +# 'name' : 'PS_WH_hww_ISR', +# 'kind' : 'weight', +# 'type' : 'shape', +# 'samples' : dict((skey, ['PSWeight[2]', 'PSWeight[0]']) for skey in mc), +# 'AsLnN' : '0', +# } + +# nuisances['PS_FSR'] = { +# 'name' : 'PS_WH_hww_FSR', +# 'kind' : 'weight', +# 'type' : 'shape', +# 'samples' : dict((skey, ['PSWeight[3]', 'PSWeight[1]']) for skey in mc), +# 'AsLnN' : '0', +# } + +# nuisances['UE_CP5'] = { +# 'name' : 'CMS_WH_hww_UE', +# 'skipCMS' : 1, +# 'type' : 'lnN', +# 'samples' : dict((skey, '1.015') for skey in mc), +# } + +# # Charge flip efficiency +# nuisances['chargeFlipEff'] = { +# 'name' : 'CMS_whss_chargeFlipEff_2017', +# 'kind' : 'weight', +# 'type' : 'shape', +# 'samples' : dict((skey, ['1-ttHMVA_eff_err_flip_2l', '1+ttHMVA_eff_err_flip_2l']) for skey in ['DY','ChargeFlip']), +# 'cuts' : [cut for cut in cuts if ('_ee_' in cut or '_em_' in cut)], +# } + +# # Charge flip: uncertainty on opposite sign processes not affected by charge-flip +# nuisances['chargeFlip_syst'] = { +# 'name' : 'CMS_ChargeFlip_syst', +# 'type' : 'lnN', +# 'samples' : { +# 'ChargeFlip' : '1.10', +# }, +# 'cuts' : [cut for cut in cuts if ('_ee_' in cut or '_em_' in cut)], +# } + +# ## Top pT reweighting uncertainty + +# nuisances['TopPtRew'] = { +# 'name' : 'CMS_top_pT_reweighting', # Theory uncertainty +# 'kind' : 'weight', +# 'type' : 'shape', +# 'samples' : { +# 'top': ["1.", "1./Top_pTrw"] +# }, +# 'symmetrize' : True +# } + +# nuisances['VgStar'] = { +# 'name' : 'CMS_hww_VgStarScale', +# 'type' : 'lnN', +# 'samples' : { +# 'VgS' : '1.25' +# } +# } + +# nuisances['Vg'] = { +# 'name' : 'CMS_hww_VgScale', +# 'type' : 'lnN', +# 'samples' : { +# 'Vg' : '1.25' +# } +# } + +# ###### pdf uncertainties + +# valuesggh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggH', '125.09','pdf','sm') +# valuesggzh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggZH','125.09','pdf','sm') +# valuesbbh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','bbH', '125.09','pdf','sm') + +# nuisances['pdf_Higgs_gg'] = { +# 'name' : 'pdf_Higgs_gg', +# 'samples' : { +# 'ggH_hww' : valuesggh, +# 'ggH_htt' : valuesggh, +# 'ggZH_hww' : valuesggzh, +# 'bbH_hww' : valuesbbh, +# }, +# 'type' : 'lnN', +# } + +# # For ttH, we need to use 1./values +# values = str(1./float(HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ttH','125.09','pdf','sm'))) + +# nuisances['pdf_Higgs_ttH'] = { +# 'name' : 'pdf_Higgs_ttH', +# 'samples' : { +# 'ttH_hww': values, +# }, +# 'type' : 'lnN', +# } + +# valuesqqh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','vbfH','125.09','pdf','sm') +# valueswh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','WH', '125.09','pdf','sm') +# valueszh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ZH', '125.09','pdf','sm') + +# nuisances['pdf_Higgs_qqbar'] = { +# 'name' : 'pdf_Higgs_qqbar', +# 'type' : 'lnN', +# 'samples': { +# 'qqH_hww' : valuesqqh, +# 'qqH_htt' : valuesqqh, +# 'WH_hww_plus' : valueswh, +# 'WH_hww_minus': valueswh, +# 'WH_htt_plus' : valueswh, +# 'WH_htt_minus': valueswh, +# 'ZH_hww' : valueszh, +# 'ZH_htt' : valueszh +# }, +# } + +# nuisances['pdf_qqbar'] = { +# 'name' : 'pdf_qqbar', +# 'type' : 'lnN', +# 'samples' : { +# 'Vg' : '1.04', +# 'ZZ' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 +# # 'WZ' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 +# 'VgS' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 +# }, +# } + +# nuisances['pdf_gg'] = { +# 'name': 'pdf_WH_hww_gg', +# 'type': 'lnN', +# 'samples': { +# 'ggWW' : '1.05', +# }, +# } + +# nuisances['pdf_Higgs_gg_ACCEPT'] = { +# 'name' : 'pdf_WH_hww_Higgs_gg_ACCEPT', +# 'samples' : { +# 'ggH_hww' : '1.006', +# 'ggH_htt' : '1.006', +# 'ggZH_hww' : '1.006', +# 'bbH_hww' : '1.006' +# }, +# 'type' : 'lnN', +# } +# nuisances['pdf_gg_ACCEPT'] = { +# 'name' : 'pdf_WH_hww_gg_ACCEPT', +# 'samples' : { +# 'ggWW' : '1.006', +# }, +# 'type' : 'lnN', +# } + +# nuisances['pdf_Higgs_qqbar_ACCEPT'] = { +# 'name' : 'pdf_WH_hww_Higgs_qqbar_ACCEPT', +# 'type' : 'lnN', +# 'samples' : { +# 'qqH_hww' : '1.002', +# 'qqH_htt' : '1.002', +# 'WH_hww_plus' : '1.003', +# 'WH_hww_minus': '1.003', +# 'WH_htt_plus' : '1.003', +# 'WH_htt_minus': '1.003', +# 'ZH_hww' : '1.002', +# 'ZH_htt' : '1.002', +# }, +# } + +# nuisances['pdf_qqbar_ACCEPT'] = { +# 'name' : 'pdf_WH_hww_qqbar_ACCEPT', +# 'type' : 'lnN', +# 'samples' : { +# 'ZZ' : '1.001', +# # 'WZ' : '1.001', +# }, +# } + +# ##### Renormalization & factorization scales + +# ## Shape nuisance due to QCD scale variations for DY +# ## LHE scale variation weights (w_var / w_nominal) + +# ## This should work for samples with either 8 or 9 LHE scale weights (Length$(LHEScaleWeight) == 8 or 9) +# variations = ['Alt(LHEScaleWeight,0,1)', 'Alt(LHEScaleWeight,1,1)', 'Alt(LHEScaleWeight,3,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-4,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-2,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-1,1)'] + +# # nuisances['QCDscale_V'] = { +# # 'name' : 'QCDscale_V', +# # 'skipCMS' : 1, +# # 'kind' : 'weight_envelope', +# # 'type' : 'shape', +# # 'samples' : { +# # 'DY' : variations +# # }, +# # 'AsLnN' : '0' +# # } + +# nuisances['QCDscale_VV'] = { +# 'name' : 'QCDscale_VV', +# 'kind' : 'weight_envelope', +# 'type' : 'shape', +# 'samples' : { +# 'WW' : variations, +# 'Vg' : variations, +# 'ZZ' : variations, +# 'WZ' : variations, +# 'VgS' : variations, +# } +# } + +# nuisances['QCDscale_ggVV'] = { +# 'name' : 'QCDscale_ggVV', +# 'type' : 'lnN', +# 'samples' : { +# 'ggWW' : '1.15', +# }, +# } + +# #### QCD scale uncertainties for Higgs signals other than ggH + +# values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','vbfH','125.09','scale','sm') + +# nuisances['QCDscale_qqH'] = { +# 'name' : 'QCDscale_qqH', +# 'samples' : { +# 'qqH_hww' : values, +# 'qqH_htt' : values, +# }, +# 'type' : 'lnN' +# } + +# valueswh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','WH','125.09','scale','sm') +# valueszh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ZH','125.09','scale','sm') + +# nuisances['QCDscale_VH'] = { +# 'name' : 'QCDscale_VH', +# 'samples' : { +# 'WH_hww_plus' : valueswh, +# 'WH_hww_minus' : valueswh, +# 'WH_htt_plus' : valueswh, +# 'WH_htt_minus' : valueswh, +# 'ZH_hww' : valueszh, +# 'ZH_htt' : valueszh, +# }, +# 'type' : 'lnN', +# } + +# values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggZH','125.09','scale','sm') + +# nuisances['QCDscale_ggZH'] = { +# 'name' : 'QCDscale_ggZH', +# 'samples' : { +# 'ggZH_hww' : values, +# }, +# 'type' : 'lnN', +# } + +# values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ttH','125.09','scale','sm') + +# nuisances['QCDscale_ttH'] = { +# 'name' : 'QCDscale_ttH', +# 'samples' : { +# 'ttH_hww' : values, +# }, +# 'type' : 'lnN', +# } + +# nuisances['QCDscale_WWewk'] = { +# 'name' : 'QCDscale_WWewk', +# 'samples' : { +# 'WWewk' : '1.11', +# }, +# 'type' : 'lnN' +# } + +# nuisances['QCDscale_qqbar_ACCEPT'] = { +# 'name' : 'QCDscale_qqbar_ACCEPT', +# 'type' : 'lnN', +# 'samples' : { +# 'qqH_hww' : '1.003', +# 'qqH_htt' : '1.003', +# 'WH_hww_plus' : '1.010', +# 'WH_hww_minus' : '1.010', +# 'WH_htt_plus' : '1.010', +# 'WH_htt_minus' : '1.010', +# 'ZH_hww' : '1.015', +# 'ZH_htt' : '1.015', +# } +# } + +# # FIXME: these come from HIG-16-042, maybe should be recomputed? +# nuisances['QCDscale_gg_ACCEPT'] = { +# 'name' : 'QCDscale_gg_ACCEPT', +# 'samples' : { +# 'ggH_htt' : '1.012', +# 'ggH_hww' : '1.012', +# 'ggZH_hww' : '1.012', +# 'ggWW' : '1.012', +# }, +# 'type' : 'lnN', +# } + +# # WZ normalization from control region +# nuisances['WZ2jnorm'] = { +# 'name' : 'CMS_hww_WZ3l2jnorm', +# 'samples' : { +# 'WZ' : '1.00', +# }, +# 'type' : 'rateParam', +# 'cuts' : [cut for cut in cuts if '2j' in cut], +# } + +# nuisances['WZ1jnorm'] = { +# 'name' : 'CMS_hww_WZ3l1jnorm', +# 'samples' : { +# 'WZ' : '1.00', +# }, +# 'type' : 'rateParam', +# 'cuts' : [cut for cut in cuts if '1j' in cut], +# } + +# # WZ migration from W+Z to W-Z +# nuisances['WZ2j_charge_migration'] = { +# 'name' : 'CMS_hww_WZ2jchargemigration', +# 'samples' : { +# 'WZ' : '1.02', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_noZveto_mm_2j_plus_pt2ge20', +# 'hww2l2v_13TeV_WH_SS_noZveto_mm_2j_plus_pt2lt20', +# 'hww2l2v_13TeV_WH_SS_em_2j_plus_pt2ge20', +# 'hww2l2v_13TeV_WH_SS_em_2j_plus_pt2lt20', +# 'hww2l2v_13TeV_WH_SS_ee_2j_plus_pt2ge20', +# 'hww2l2v_13TeV_WH_SS_ee_2j_plus_pt2lt20', +# ], +# } + +# nuisances['WZ1j_charge_migration'] = { +# 'name' : 'CMS_hww_WZ1jchargemigration', +# 'samples' : { +# 'WZ' : '1.02', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_noZveto_mm_1j_plus_pt2ge20', +# 'hww2l2v_13TeV_WH_SS_noZveto_mm_1j_plus_pt2lt20', +# 'hww2l2v_13TeV_WH_SS_em_1j_plus_pt2ge20', +# 'hww2l2v_13TeV_WH_SS_em_1j_plus_pt2lt20', +# 'hww2l2v_13TeV_WH_SS_ee_1j_plus_pt2ge20', +# 'hww2l2v_13TeV_WH_SS_ee_1j_plus_pt2lt20', +# ], +# } + +# # Nonprompt leptons normalization per category +# nuisances['CMS_WH_hww_fake_syst_2jee_plus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_2jee_plus_2017', +# 'samples' : { +# 'Fake_ee' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_ee_2j_plus_pt2ge20', +# ], +# } +# nuisances['CMS_WH_hww_fake_syst_2jee_plus_lowpt'] = { +# 'name' : 'CMS_WH_hww_fake_syst_2jee_plus_lowpt_2017', +# 'samples' : { +# 'Fake_ee' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_ee_2j_plus_pt2lt20', +# ], +# } + +# nuisances['CMS_WH_hww_fake_syst_2jem_plus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_2jem_plus_2017', +# 'samples' : { +# 'Fake_em' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_em_2j_plus_pt2ge20', +# ], +# } +# nuisances['CMS_WH_hww_fake_syst_2jem_plus_lowpt'] = { +# 'name' : 'CMS_WH_hww_fake_syst_2jem_plus_lowpt_2017', +# 'samples' : { +# 'Fake_em' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_em_2j_plus_pt2lt20', +# ], +# } + +# nuisances['CMS_WH_hww_fake_syst_2jmm_plus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_2jmm_plus_2017', +# 'samples' : { +# 'Fake_mm' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_noZeto_mm_2j_plus_pt2ge20', +# ], +# } +# nuisances['CMS_WH_hww_fake_syst_2jmm_plus_lowpt'] = { +# 'name' : 'CMS_WH_hww_fake_syst_2jmm_plus_lowpt_2017', +# 'samples' : { +# 'Fake_mm' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_noZeto_mm_2j_plus_pt2lt20', +# ], +# } + +# nuisances['CMS_WH_hww_fake_syst_1jee_plus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_1jee_plus_2017', +# 'samples' : { +# 'Fake_ee' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_ee_1j_plus_pt2ge20', +# ], +# } +# nuisances['CMS_WH_hww_fake_syst_1jee_plus_lowpt'] = { +# 'name' : 'CMS_WH_hww_fake_syst_1jee_plus_lowpt_2017', +# 'samples' : { +# 'Fake_ee' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_ee_1j_plus_pt2lt20', +# ], +# } + +# nuisances['CMS_WH_hww_fake_syst_1jem_plus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_1jem_plus_2017', +# 'samples' : { +# 'Fake_em' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_em_1j_plus_pt2ge20', +# ], +# } +# nuisances['CMS_WH_hww_fake_syst_1jem_plus_lowpt'] = { +# 'name' : 'CMS_WH_hww_fake_syst_1jem_plus_lowpt_2017', +# 'samples' : { +# 'Fake_em' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_em_1j_plus_pt2lt20', +# ], +# } + +# nuisances['CMS_WH_hww_fake_syst_1jmm_plus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_1jmm_plus_2017', +# 'samples' : { +# 'Fake_mm' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_noZeto_mm_1j_plus_pt2ge20', +# ], +# } +# nuisances['CMS_WH_hww_fake_syst_1jmm_plus_lowpt'] = { +# 'name' : 'CMS_WH_hww_fake_syst_1jmm_plus_lowpt_2017', +# 'samples' : { +# 'Fake_mm' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_noZeto_mm_1j_plus_pt2lt20', +# ], +# } + + +# nuisances['CMS_WH_hww_fake_syst_2jee_minus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_2jee_minus_2017', +# 'samples' : { +# 'Fake_ee' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_ee_2j_minus_pt2ge20', +# ], +# } +# nuisances['CMS_WH_hww_fake_syst_2jee_minus_lowpt'] = { +# 'name' : 'CMS_WH_hww_fake_syst_2jee_minus_lowpt_2017', +# 'samples' : { +# 'Fake_ee' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_ee_2j_minus_pt2lt20', +# ], +# } + +# nuisances['CMS_WH_hww_fake_syst_2jem_minus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_2jem_minus_2017', +# 'samples' : { +# 'Fake_em' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_em_2j_minus_pt2ge20', +# ], +# } +# nuisances['CMS_WH_hww_fake_syst_2jem_minus_lowpt'] = { +# 'name' : 'CMS_WH_hww_fake_syst_2jem_minus_lowpt_2017', +# 'samples' : { +# 'Fake_em' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_em_2j_minus_pt2lt20', +# ], +# } + +# nuisances['CMS_WH_hww_fake_syst_2jmm_minus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_2jmm_minus_2017', +# 'samples' : { +# 'Fake_mm' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_noZeto_mm_2j_minus_pt2ge20', +# ], +# } +# nuisances['CMS_WH_hww_fake_syst_2jmm_minus_lowpt'] = { +# 'name' : 'CMS_WH_hww_fake_syst_2jmm_minus_lowpt_2017', +# 'samples' : { +# 'Fake_mm' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_noZeto_mm_2j_minus_pt2lt20', +# ], +# } + +# nuisances['CMS_WH_hww_fake_syst_1jee_minus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_1jee_minus_2017', +# 'samples' : { +# 'Fake_ee' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_ee_1j_minus_pt2ge20', +# ], +# } +# nuisances['CMS_WH_hww_fake_syst_1jee_minus_lowpt'] = { +# 'name' : 'CMS_WH_hww_fake_syst_1jee_minus_lowpt_2017', +# 'samples' : { +# 'Fake_ee' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_ee_1j_minus_pt2lt20', +# ], +# } + +# nuisances['CMS_WH_hww_fake_syst_1jem_minus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_1jem_minus_2017', +# 'samples' : { +# 'Fake_em' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_em_1j_minus_pt2ge20', +# ], +# } +# nuisances['CMS_WH_hww_fake_syst_1jem_minus_lowpt'] = { +# 'name' : 'CMS_WH_hww_fake_syst_1jem_minus_lowpt_2017', +# 'samples' : { +# 'Fake_em' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_em_1j_minus_pt2lt20', +# ], +# } + +# nuisances['CMS_WH_hww_fake_syst_1jmm_minus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_1jmm_minus_2017', +# 'samples' : { +# 'Fake_mm' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_noZeto_mm_1j_minus_pt2ge20', +# ], +# } +# nuisances['CMS_WH_hww_fake_syst_1jmm_minus_lowpt'] = { +# 'name' : 'CMS_WH_hww_fake_syst_1jmm_minus_lowpt_2017', +# 'samples' : { +# 'Fake_mm' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_noZeto_mm_1j_minus_pt2lt20', +# ], +# } + +# End of Nonprompt leptons normalization per category + +## Use the following if you want to apply the automatic combine MC stat nuisances. +nuisances['stat'] = { + 'type' : 'auto', + 'maxPoiss' : '10', + 'includeSignal' : '0', + 'samples' : {} +} +# nuisance ['maxPoiss'] = Number of threshold events for Poisson modelling +# nuisance ['includeSignal'] = Include MC stat nuisances on signal processes (1=True, 0=False) + +for n in nuisances.values(): + n['skipCMS'] = 1 diff --git a/ControlRegions/SS/2016HIPM/plot.py b/ControlRegions/SS/2016HIPM/plot.py new file mode 100644 index 00000000..27404c7b --- /dev/null +++ b/ControlRegions/SS/2016HIPM/plot.py @@ -0,0 +1,336 @@ +# plot configuration + +# Groups of samples to improve the plots. +# If not defined, normal plots is used + +groupPlot = {} + +groupPlot['top'] = { + 'nameHR' : 'tW+ and t#bar{t}', + 'isSignal' : 0, + 'color' : 400, # kYellow + 'samples' : ['top'] +} + +groupPlot['WW'] = { + 'nameHR' : 'WW', + 'isSignal' : 0, + 'color' : 851, # kAzure -9 + 'samples' : ['WW', 'ggWW', 'WWewk'] +} + +groupPlot['Fake'] = { + 'nameHR' : 'Non-prompt', + 'isSignal' : 0, + 'color' : 921, # kGray + 1 + 'samples' : ['Fake_mm','Fake_em','Fake_ee'] +} + +groupPlot['DY'] = { + 'nameHR' : "DY", + 'isSignal' : 0, + 'color' : 418, # kGreen+2 + 'samples' : ['DY'] +} + +groupPlot['VVV'] = { + 'nameHR' : 'VVV', + 'isSignal' : 0, + 'color' : 857, # kAzure -3 + 'samples' : ['VVV'] +} + +groupPlot['ZZ'] = { + 'nameHR' : "ZZ", + 'isSignal' : 0, + 'color' : 617, # kViolet + 1 + 'samples' : ['ZZ'] +} + +groupPlot['WZ'] = { + 'nameHR' : "WZ", + 'isSignal' : 0, + 'color' : 619, # kViolet + 1 + 'samples' : ['WZ'] +} + +groupPlot['Vg'] = { + 'nameHR' : "V#gamma", + 'isSignal' : 0, + 'color' : 810, # kOrange + 10 + 'samples' : ['Vg'] +} + +groupPlot['VgS'] = { + 'nameHR' : "V#gamma*", + 'isSignal' : 0, + 'color' : 412, # kGreen - 9 + 'samples' : ['VgS'] +} + +groupPlot['Higgs'] = { + 'nameHR' : 'Higgs', + 'isSignal' : 0, + 'color' : 632, # kRed + 'samples' : ['ggH_hww','qqH_hww','ZH_hww','ggZH_hww','ttH_hww','ggH_htt','qqH_htt','ZH_htt'] +} + +groupPlot['WH_minus'] = { + 'nameHR' : 'W^{-} H (x 10)', + 'isSignal' : 2, + 'color' : 600, # kBlue + 'samples' : ['WH_hww_minus','WH_htt_minus'] +} + +groupPlot['WH_plus'] = { + 'nameHR' : 'W^{+} H (x 10)', + 'isSignal' : 2, + 'color' : 632, # kRed + 'samples' : ['WH_hww_plus', 'WH_htt_plus'] +} + + +# keys here must match keys in samples.py + +plot = {} + +plot['DY'] = { + 'nameHR' : 'DY', + 'color' : 418, # kGreen+2 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0, +} + +plot['top'] = { + 'nameHR' : 'tW and t#bar{t}', + 'color' : 400, # kYellow + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0, +} + +plot['WW'] = { + 'nameHR' : 'WW', + 'color' : 851, # kAzure -9 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['WWewk'] = { + 'nameHR' : 'WWewk', + 'color' : 850, # kAzure -10 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['ggWW'] = { + 'nameHR' : 'ggWW', + 'color' : 850, # kAzure -10 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['Vg'] = { + 'nameHR' : 'Vg', + 'color' : 859, # kAzure -1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['VgS'] = { + 'nameHR' : 'VgS', + 'color' : 859, # kAzure -1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['WZ'] = { + 'nameHR' : 'WZ', + 'color' : 858, # kAzure -2 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.138 # NLO -> NNLO k-factor! +} + +plot['ZZ'] = { + 'nameHR' : 'ZZ', + 'color' : 858, # kAzure -2 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['VVV'] = { + 'nameHR' : 'VVV', + 'color' : 857, # kAzure -3 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +########### +# Signals # +########### + +# HWW + +plot['ggH_hww'] = { + 'nameHR' : 'ggH_hww', + 'color' : 632, # kRed + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['qqH_hww'] = { + 'nameHR' : 'qqH_hww', + 'color' : 632+1, # kRed+1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['ZH_hww'] = { + 'nameHR' : 'ZH_hww', + 'color' : 632+3, # kRed+3 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['ggZH_hww'] = { + 'nameHR' : 'ggZH_hww', + 'color' : 632+4, # kRed+4 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['WH_hww_plus'] = { + 'nameHR' : 'WH_hww_plus', + 'color' : 632+2, # kRed+2 + 'isSignal' : 2, + 'isData' : 0, + 'scale' : 10 +} + +plot['WH_hww_minus'] = { + 'nameHR' : 'WH_hww_minus', + 'color' : 600, # kBlue + 'isSignal' : 2, + 'isData' : 0, + 'scale' : 10 +} + +plot['ttH_hww'] = { + 'nameHR' : 'ttH_hww', + 'color' : 632+3, # kRed+3 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + + +# Htautau + +plot['ggH_htt'] = { + 'nameHR' : 'ggH_htt', + 'color' : 632, # kRed + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['qqH_htt'] = { + 'nameHR' : 'qqH_htt', + 'color' : 632+1, # kRed+1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['ZH_htt'] = { + 'nameHR' : 'ZH_htt', + 'color' : 632+3, # kRed+3 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['WH_htt_plus'] = { + 'nameHR' : 'WH_htt_plus', + 'color' : 632+2, # kRed+2 + 'isSignal' : 2, + 'isData' : 0, + 'scale' : 10 +} + +plot['WH_htt_minus'] = { + 'nameHR' : 'WH_htt_minus', + 'color' : 632+2, # kRed+2 + 'isSignal' : 2, + 'isData' : 0, + 'scale' : 10 +} + + +######## +# Fake # +######## + +plot['Fake_em'] = { + 'nameHR' : 'Fake_em', + 'color' : 921, # kGray + 1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['Fake_ee'] = { + 'nameHR' : 'Fake_ee', + 'color' : 921, # kGray + 1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['Fake_mm'] = { + 'nameHR' : 'Fake_mm', + 'color' : 921, # kGray + 1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +# plot['Fake'] = { +# 'color' : 921, # kGray + 1 +# 'isSignal' : 0, +# 'isData' : 0, +# 'scale' : 1.0 +# } + +######## +# Data # +######## + +plot['DATA'] = { + 'nameHR' : 'Data', + 'color' : 1 , + 'isSignal' : 0, + 'isData' : 1, + 'isBlind' : 0 +} + + +# Define legend + +legend = {} + +legend['lumi'] = 'L = 19.5 fb^{-1}' +legend['sqrt'] = '#sqrt{s} = 13 TeV' diff --git a/ControlRegions/SS/2016HIPM/repeat.sh b/ControlRegions/SS/2016HIPM/repeat.sh new file mode 100644 index 00000000..aea87e6f --- /dev/null +++ b/ControlRegions/SS/2016HIPM/repeat.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +if [ $# -eq 0 ]; then + echo "$0: Missing arguments" + exit 1 +else + echo "We got some argument(s)" + echo "===========================" + echo "Number of arguments. : $#" + echo "List of arguments... : $@" + echo "Arg #1: sample : $1" + echo "Arg #2: compile : $2" + echo "===========================" + SAMPLE=$1 + COMPILE=$2 +fi + +# Site definition +hostname=$(uname -a | awk '{print $2}') + + +if [ "$COMPILE" == "True" ]; then + mkShapesRDF -c 1 + mkShapesRDF -o 0 -f . -b 1 -dR 1 +fi +cd condor/SS_2016HIPM_v9/${SAMPLE}/ +cp ../../../../../../../mkShapesRDF/mkShapesRDF/include/headers.hh ../../../../../../../mkShapesRDF/mkShapesRDF/shapeAnalysis/runner.py . +python runner.py + +if [[ "$hostname" == *portal* || "$hostname" == *bms* ]]; then + echo "We are at KIT" + cp output.root /ceph/${USER}/mkShapesRDF_rootfiles/SS_2016HIPM_v9/rootFile/mkShapes__SS_2016HIPM_v9__ALL__${SAMPLE}.root +else + echo "We are on lxplus" + cp output.root /eos/user/${USER:0:1}/${USER}/mkShapesRDF_rootfiles/SS_2016HIPM_v9/rootFile/mkShapes__SS_2016HIPM_v9__ALL__${SAMPLE}.root +fi + +rm output.root diff --git a/ControlRegions/SS/2016HIPM/samples.py b/ControlRegions/SS/2016HIPM/samples.py new file mode 100644 index 00000000..d85551ed --- /dev/null +++ b/ControlRegions/SS/2016HIPM/samples.py @@ -0,0 +1,398 @@ +import os,glob + +################################################ +################# SKIMS ######################## +################################################ + +# MC: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Summer20UL16_106x_nAODv9_HIPM_Full2016v9/MCl1loose2016v9__MCCorr2016v9NoJERInHorn__l2tightOR2016v9/ +# DATA: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Run2016_UL2016_nAODv9_HIPM_Full2016v9/DATAl1loose2016v9__l2loose__l2tightOR2016v9/ +# FAKE: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Run2016_UL2016_nAODv9_HIPM_Full2016v9/DATAl1loose2016v9__l2loose__fakeW/ + +mcProduction = 'Summer20UL16_106x_nAODv9_HIPM_Full2016v9' +dataReco = 'Run2016_UL2016_nAODv9_HIPM_Full2016v9' +mcSteps = 'MCl1loose2016v9__MCCorr2016v9NoJERInHorn__l2tightOR2016v9{var}' +fakeSteps = 'DATAl1loose2016v9__l2loose__fakeW' +dataSteps = 'DATAl1loose2016v9__l2loose__l2tightOR2016v9' + +############################################## +###### Tree base directory for the site ###### +############################################## + +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' + +treeBaseDir = '/eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano' +if site == 'kit': + treeBaseDir = '/ceph/ntrevisa/HWWNano' +limitFiles = -1 + +def makeMCDirectory(var=''): + return os.path.join(treeBaseDir, mcProduction, mcSteps.format(var='')) + +mcDirectory = makeMCDirectory() +fakeDirectory = os.path.join(treeBaseDir, dataReco, fakeSteps) +dataDirectory = os.path.join(treeBaseDir, dataReco, dataSteps) + +samples = {} + +from mkShapesRDF.lib.search_files import SearchFiles +s = SearchFiles() + +useXROOTD = True +redirector = 'root://eoscms.cern.ch/' +if site == 'kit': + redirector = '' + +def nanoGetSampleFiles(path, name): + _files = s.searchFiles(path, name, redirector=redirector) + if limitFiles != -1 and len(_files) > limitFiles: + return [(name, _files[:limitFiles])] + else: + return [(name, _files)] + +def CombineBaseW(samples, proc, samplelist): + _filtFiles = list(filter(lambda k: k[0] in samplelist, samples[proc]['name'])) + _files = list(map(lambda k: k[1], _filtFiles)) + _l = list(map(lambda k: len(k), _files)) + leastFiles = _files[_l.index(min(_l))] + dfSmall = ROOT.RDataFrame('Runs', leastFiles) + s = dfSmall.Sum('genEventSumw').GetValue() + f = ROOT.TFile.Open(leastFiles[0]) + t = f.Get('Events') + t.GetEntry(1) + xs = t.baseW * s + + __files = [] + for f in _files: + __files += f + df = ROOT.RDataFrame('Runs', __files) + s = df.Sum('genEventSumw').GetValue() + newbaseW = str(xs / s) + weight = newbaseW + '/baseW' + + for iSample in samplelist: + addSampleWeight(samples, proc, iSample, weight) + +def addSampleWeight(samples, sampleName, sampleNameType, weight): + obj = list(filter(lambda k: k[0] == sampleNameType, samples[sampleName]['name']))[0] + samples[sampleName]['name'] = list(filter(lambda k: k[0] != sampleNameType, samples[sampleName]['name'])) + if len(obj) > 2: + samples[sampleName]['name'].append((obj[0], obj[1], obj[2] + '*(' + weight + ')')) + else: + samples[sampleName]['name'].append((obj[0], obj[1], '(' + weight + ')' )) + + +################################################ +############ DATA DECLARATION ################## +################################################ + +DataRun = [ + ['B','Run2016B-ver1_HIPM_UL2016-v2'], + ['B','Run2016B-ver2_HIPM_UL2016-v2'], + ['C','Run2016C-HIPM_UL2016-v2'], + ['D','Run2016D-HIPM_UL2016-v2'], + ['E','Run2016E-HIPM_UL2016-v2'], + ['F','Run2016F-HIPM_UL2016-v2'], +] + +DataSets = ['MuonEG','SingleMuon','SingleElectron','DoubleMuon', 'DoubleEG'] + +DataTrig = { + 'MuonEG' : ' Trigger_ElMu' , + 'SingleMuon' : '!Trigger_ElMu && Trigger_sngMu' , + 'SingleElectron' : '!Trigger_ElMu && !Trigger_sngMu && Trigger_sngEl', + 'DoubleMuon' : '!Trigger_ElMu && !Trigger_sngMu && !Trigger_sngEl && Trigger_dblMu', + 'DoubleEG' : '!Trigger_ElMu && !Trigger_sngMu && !Trigger_sngEl && !Trigger_dblMu && Trigger_dblEl' +} + +######################################### +############ MC COMMON ################## +######################################### + +# SFweight does not include btag weights +mcCommonWeightNoMatch = 'XSWeight*SFweight*METFilter_MC' +mcCommonWeight = 'XSWeight*SFweight*METFilter_MC*PromptGenLepMatch2l' + +########################################### +############# BACKGROUNDS ############### +########################################### + +###### DY ####### +files = nanoGetSampleFiles(mcDirectory, 'DYJetsToLL_M-10to50_NLO') + \ + nanoGetSampleFiles(mcDirectory, 'DYJetsToLL_M-50') + +samples['DY'] = { + 'name': files, + 'weight': mcCommonWeight + '*(nLepton<3)*(abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 11*13 || abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 13*13)*( !(Sum(PhotonGen_isPrompt==1 && PhotonGen_pt>15 && abs(PhotonGen_eta)<2.6) > 0))', + 'FilesPerJob': 8, +} + +##### Top ####### +files = nanoGetSampleFiles(mcDirectory, 'TTTo2L2Nu') + \ + nanoGetSampleFiles(mcDirectory, 'ST_s-channel') + \ + nanoGetSampleFiles(mcDirectory, 'ST_t-channel_top') + \ + nanoGetSampleFiles(mcDirectory, 'ST_t-channel_antitop') + \ + nanoGetSampleFiles(mcDirectory, 'ST_tW_antitop') + \ + nanoGetSampleFiles(mcDirectory, 'ST_tW_top') + +samples['top'] = { + 'name': files, + 'weight': mcCommonWeight, + 'FilesPerJob': 8, +} +addSampleWeight(samples,'top','TTTo2L2Nu','Top_pTrw') + +###### WW ######## +samples['WW'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'WWTo2L2Nu'), + 'weight': mcCommonWeight + '*nllW*ewknloW', + 'FilesPerJob': 4 +} + +samples['WWewk'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'WpWmJJ_EWK_noTop'), + 'weight': mcCommonWeight + '*(Sum(abs(GenPart_pdgId)==6 || GenPart_pdgId==25)==0)', # Filter tops and Higgs, + 'FilesPerJob': 8 +} + +files = nanoGetSampleFiles(mcDirectory, 'GluGluToWWToENEN') + \ + nanoGetSampleFiles(mcDirectory, 'GluGluToWWToENMN') + \ + nanoGetSampleFiles(mcDirectory, 'GluGluToWWToENTN') + \ + nanoGetSampleFiles(mcDirectory, 'GluGluToWWToMNEN') + \ + nanoGetSampleFiles(mcDirectory, 'GluGluToWWToMNMN') + \ + nanoGetSampleFiles(mcDirectory, 'GluGluToWWToMNTN') + \ + nanoGetSampleFiles(mcDirectory, 'GluGluToWWToTNEN') + \ + nanoGetSampleFiles(mcDirectory, 'GluGluToWWToTNMN') + \ + nanoGetSampleFiles(mcDirectory, 'GluGluToWWToTNTN') + +samples['ggWW'] = { + 'name': files, + 'weight': mcCommonWeight + '*1.53/1.4', + 'FilesPerJob': 8 +} + +######## Vg ######## +files = nanoGetSampleFiles(mcDirectory, 'Wg_AMCNLOFXFX_01J') + \ + nanoGetSampleFiles(mcDirectory, 'ZGToLLG') + +samples['Vg'] = { + 'name': files, + 'weight': mcCommonWeightNoMatch + '*(Gen_ZGstar_mass <= 0)', + 'FilesPerJob': 4, +} + +######## VgS ######## +files = nanoGetSampleFiles(mcDirectory, 'Wg_AMCNLOFXFX_01J') + \ + nanoGetSampleFiles(mcDirectory, 'WZTo3LNu_mllmin0p1') + \ + nanoGetSampleFiles(mcDirectory, 'ZGToLLG') + +samples['VgS'] = { + 'name': files, + 'weight': mcCommonWeight, + 'FilesPerJob': 4, +} +addSampleWeight(samples, 'VgS', 'Wg_AMCNLOFXFX_01J', '((Gen_ZGstar_mass > 0 && Gen_ZGstar_mass <= 0.1))*(gstarLow*0.94)') +addSampleWeight(samples, 'VgS', 'WZTo3LNu_mllmin0p1', '((Gen_ZGstar_mass > 0.1)*(0.601644*58.59/4.666))*(gstarLow*0.94)') +addSampleWeight(samples, 'VgS', 'ZGToLLG', '(Gen_ZGstar_mass > 0)') + + +############ WZ ############ +files = nanoGetSampleFiles(mcDirectory, 'WZTo3LNu_mllmin0p1') + \ + nanoGetSampleFiles(mcDirectory, 'WZTo2Q2L_mllmin4p0') + +samples['WZ'] = { + 'name': files, + 'weight': mcCommonWeight + ' * (gstarHigh)', + 'FilesPerJob': 4, +} +addSampleWeight(samples, 'WZ', 'WZTo3LNu_mllmin0p1', '(0.601644*58.59/4.666)') + + +############ ZZ ############ +files = nanoGetSampleFiles(mcDirectory, 'ZZTo2L2Nu') + \ + nanoGetSampleFiles(mcDirectory, 'ZZTo2Q2L_mllmin4p0') + \ + nanoGetSampleFiles(mcDirectory, 'ZZTo4L') + +samples['ZZ'] = { + 'name': files, + 'weight': mcCommonWeight, + 'FilesPerJob': 2, +} + + +########## VVV ######### +files = nanoGetSampleFiles(mcDirectory, 'ZZZ') + \ + nanoGetSampleFiles(mcDirectory, 'WZZ') + \ + nanoGetSampleFiles(mcDirectory, 'WWZ') + \ + nanoGetSampleFiles(mcDirectory, 'WWW') + +samples['VVV'] = { + 'name': files, + 'weight': mcCommonWeight, + 'FilesPerJob': 8, +} + +########################################### +############# SIGNALS ################## +########################################### + +signals = [] + +############ ggH H->WW ############ +samples['ggH_hww'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'GluGluHToWWTo2L2Nu_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 4, +} +signals.append('ggH_hww') + +############ VBF H->WW ############ +samples['qqH_hww'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'VBFHToWWTo2L2Nu_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 8, +} +signals.append('qqH_hww') + +############ ZH H->WW ############ +samples['ZH_hww'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'HZJ_HToWW_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 8, +} +signals.append('ZH_hww') + +samples['ggZH_hww'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'ggZH_HToWW_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 8, +} +signals.append('ggZH_hww') + +############ WH H->WW ############ +samples['WH_hww_plus'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'HWplusJ_HToWW_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 4, +} +signals.append('WH_hww_plus') + +samples['WH_hww_minus'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'HWminusJ_HToWW_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 4, +} + +signals.append('WH_hww_minus') + +############ ttH ############ +samples['ttH_hww'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'ttHToNonbb_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 4, +} +signals.append('ttH_hww') + +############ H->TauTau ############ +samples['ggH_htt'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'GluGluHToTauTau_M125_Powheg'), + 'weight': mcCommonWeight, + 'FilesPerJob': 20, +} +signals.append('ggH_htt') + +samples['qqH_htt'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'VBFHToTauTau_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 20, +} +signals.append('qqH_htt') + +samples['ZH_htt'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'ZHToTauTau_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 8, +} +signals.append('ZH_htt') + +############ WH H->TauTau ############ +samples['WH_htt_plus'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'WplusHToTauTau_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 4, +} +signals.append('WH_htt_plus') + +samples['WH_htt_minus'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'WminusHToTauTau_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 4, +} +signals.append('WH_htt_minus') + + + +########################################### +################## FAKE ################### +########################################### + +samples['Fake'] = { + 'name': [], + 'weight': 'METFilter_DATA*fakeW', + 'weights': [], + 'isData': ['all'], + 'FilesPerJob': 50 +} + +for _, sd in DataRun: + for pd in DataSets: + tag_data = pd + '_' + sd + + if 'DoubleEG' in pd and 'Run2016B-ver2' in sd: # Run2016B-ver2_HIPM_UL2016-v2 + print("sd = {}".format(sd)) + print("pd = {}".format(pd)) + print("Old tag = {}".format(tag_data)) + tag_data = tag_data.replace('v2','v3') + print("New tag = {}".format(tag_data)) + + files = nanoGetSampleFiles(fakeDirectory, tag_data) + + samples['Fake']['name'].extend(files) + addSampleWeight(samples, 'Fake', tag_data, DataTrig[pd]) + +samples['Fake']['subsamples'] = { + 'em': 'abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 11*13', + 'mm': 'abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 13*13', + 'ee': 'abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 11*11' +} + + +########################################### +################## DATA ################### +########################################### + +samples['DATA'] = { + 'name': [], + 'weight': 'LepWPCut*METFilter_DATA', + 'weights': [], + 'isData': ['all'], + 'FilesPerJob': 50 +} + +for _, sd in DataRun: + for pd in DataSets: + tag_data = pd + '_' + sd + + if 'DoubleEG' in pd and 'Run2016B-ver2' in sd: # Run2016B-ver2_HIPM_UL2016-v2 + print("sd = {}".format(sd)) + print("pd = {}".format(pd)) + print("Old tag = {}".format(tag_data)) + tag_data = tag_data.replace('v2','v3') + print("New tag = {}".format(tag_data)) + + files = nanoGetSampleFiles(dataDirectory, tag_data) + + samples['DATA']['name'].extend(files) + addSampleWeight(samples, 'DATA', tag_data, DataTrig[pd]) diff --git a/ControlRegions/SS/2016HIPM/structure.py b/ControlRegions/SS/2016HIPM/structure.py new file mode 100644 index 00000000..6f1d9617 --- /dev/null +++ b/ControlRegions/SS/2016HIPM/structure.py @@ -0,0 +1,156 @@ +# structure configuration for datacard + +# keys here must match keys in samples.py + +structure = {} + +structure['DY'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['top'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['WW'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['WWewk'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['ggWW'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['Wg'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['Zg'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['WgS'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['ZgS'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['WZ'] = { + 'isSignal' : 0, + 'isData' : 0, + 'scaleSampleForDatacard' : 1.138 # NLO -> NNLO k-factor +} + +structure['ZZ'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['VVV'] = { + 'isSignal' : 0, + 'isData' : 0, +} + + +# Higgs +structure['ggH_hww'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['qqH_hww'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['ZH_hww'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['ggZH_hww'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['WH_hww_plus'] = { + 'isSignal' : 1, + 'isData' : 0, + 'scaleSampleForDatacard' : 1 # scaling signal to have sensitivity +} + +structure['WH_hww_minus'] = { + 'isSignal' : 1, + 'isData' : 0, + 'scaleSampleForDatacard' : 1 # scaling signal to have sensitivity +} + +structure['ttH_hww'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['ggH_htt'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['qqH_htt'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['ZH_htt'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['WH_htt_plus'] = { + 'isSignal' : 1, + 'isData' : 0, + 'scaleSampleForDatacard' : 1 # scaling signal to have sensitivity +} + +structure['WH_htt_minus'] = { + 'isSignal' : 1, + 'isData' : 0, + 'scaleSampleForDatacard' : 1 # scaling signal to have sensitivity +} + + +# Fakes +structure['Fake_ee'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['Fake_mm'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['Fake_em'] = { + 'isSignal' : 0, + 'isData' : 0, +} + + +# Data +structure['DATA'] = { + 'isSignal' : 0, + 'isData' : 1 +} diff --git a/ControlRegions/SS/2016HIPM/variables.py b/ControlRegions/SS/2016HIPM/variables.py new file mode 100644 index 00000000..d84d13d5 --- /dev/null +++ b/ControlRegions/SS/2016HIPM/variables.py @@ -0,0 +1,285 @@ +# variables + +# 0 = not fold (default), 1 = fold underflowbin, 2 = fold overflow bin, 3 = fold underflow and overflow + +variables = {} + +variables['events'] = { + 'name' : '1', + 'range' : (1,0,2), + 'xaxis' : 'events', + 'fold' : 3 +} + +################### +# Control variables +################### + +variables['BDTG6_TT'] = { + 'name' : 'BDT_WHSS_TopSemileptonic_v9', + 'range' : (40,-1,1), + 'xaxis' : 'BDT discriminant', + 'fold' : 3, +} + +variables['BDT_WH3l_OSSF_new_v9'] = { + 'name' : 'BDT_WH3l_OSSF_new_v9', + 'range' : (40,-1.,1.), + 'xaxis' : 'MVA discriminant', + 'fold' : 3, +} + +variables['BDT_WH3l_SSSF_new_v9'] = { + 'name' : 'BDT_WH3l_SSSF_new_v9', + 'range' : (40,-1.,1.), + 'xaxis' : 'MVA discriminant', + 'fold' : 3, +} + +variables['pt1'] = { + 'name' : 'Lepton_pt[0]', + 'range' : (30,0,150), + 'xaxis' : 'p_{T} 1st lep', + 'fold' : 0 +} + +variables['pt2'] = { + 'name' : 'Lepton_pt[1]', + 'range' : (30,0,100), + 'xaxis' : 'p_{T} 2nd lep', + 'fold' : 3 +} + +variables['conept1'] = { + 'name' : 'Lepton_conept[0]', + 'range' : (30,0,150), + 'xaxis' : 'p_{T} 1st lep', + 'fold' : 0 +} + +variables['conept2'] = { + 'name' : 'Lepton_conept[1]', + 'range' : (30,0,100), + 'xaxis' : 'p_{T} 2nd lep', + 'fold' : 3 +} + +variables['eta1'] = { + 'name' : 'Lepton_eta[0]', + 'range' : (50,-2.5,2.5), + 'xaxis' : '#eta 1st lep', + 'fold' : 3 +} + +variables['eta2'] = { + 'name' : 'Lepton_eta[1]', + 'range' : (50,-2.5,2.5), + 'xaxis' : '#eta 2nd lep', + 'fold' : 3 +} + +variables['detall'] = { + 'name' : 'abs(Lepton_eta[0] - Lepton_eta[1])', + 'range' : (20,0.,5.), + 'xaxis' : '#Delta#eta_{jj}', + 'fold' : 3 +} + +variables['dphill'] = { + 'name' : 'abs(dphill)', + 'range' : (20, 0,3.2), + 'xaxis' : '#Delta#phi_{ll}', + 'fold' : 3 +} + +variables['drll'] = { + 'name' : 'abs(drll)', + 'range' : (20, 0,5.), + 'xaxis' : '#Delta#R_{ll}', + 'fold' : 3 +} + +variables['mll'] = { + 'name' : 'mll', + 'range' : (25, 0,250), + 'xaxis' : 'm_{ll} [GeV]', + 'fold' : 0 +} + +variables['ptll'] = { + 'name' : 'ptll', + 'range' : (20, 0,200), + 'xaxis' : 'p_{T}^{ll} [GeV]', + 'fold' : 0 +} + + +variables['jetpt1'] = { + 'name' : 'CleanJet_pt[0]*(CleanJet_pt[0]>30)', + 'range' : (40,0,400), + 'xaxis' : 'p_{T} 1st jet', + 'fold' : 2 +} + +variables['jetpt2'] = { + 'name' : 'CleanJet_pt[1]*(CleanJet_pt[1]>30)', + 'range' : (40,0,200), + 'xaxis' : 'p_{T} 2nd jet', + 'fold' : 0 +} + +variables['jeteta1'] = { + 'name' : 'CleanJet_eta[0]*(CleanJet_pt[0]>30)', + 'range' : (50,-5,5), + 'xaxis' : '#eta 1st jet', + 'fold' : 2 +} + +variables['jeteta2'] = { + 'name' : 'CleanJet_eta[1]*(CleanJet_pt[1]>30)', + 'range' : (50,-5,5), + 'xaxis' : '#eta 2nd jet', + 'fold' : 0 +} + +variables['detajj'] = { + 'name' : 'abs(CleanJet_eta[0] - CleanJet_eta[1])*(CleanJet_pt[1]>30)', + 'range' : (20,0.,10.), + 'xaxis' : '#Delta#eta_{jj}', + 'fold' : 3 +} + +variables['dphijj'] = { + 'name' : 'dphijj', + 'range' : (20,0,3.2), + 'xaxis' : '#Delta#phi_{jj}', + 'fold' : 3 +} + +variables['mjj'] = { + 'name' : 'mjj*(CleanJet_pt[1]>30)', + 'range' : (20,0,1000), + 'xaxis' : 'm_{jj} [GeV]', + 'fold' : 3 +} + + +variables['puppimet'] = { + 'name' : 'PuppiMET_pt', + 'range' : (20,0,200), + 'xaxis' : 'PUPPI met [GeV]', + 'fold' : 3 +} + + +variables['mlljj20'] = { + 'name' : 'mlljj20_whss', + 'range' : (20,0,1000), + 'xaxis' : 'mlljj20 [GeV]', + 'fold' : 3 +} + +variables['mth'] = { + 'name' : 'mth', + 'range' : (50,0,250), + 'xaxis' : 'm_{T}^{H} [GeV]', + 'fold' : 0 +} + +variables['mtw1'] = { + 'name' : 'mtw1', + 'range' : (50,0,250), + 'xaxis' : 'm_{T}^{W_{1}} [GeV]', + 'fold' : 3 +} + +variables['mtw2'] = { + 'name' : 'mtw2', + 'range' : (50,0,200), + 'xaxis' : 'm_{T}^{W_{2}} [GeV]', + 'fold' : 3 +} + +variables['dphilljet'] = { + 'name' : 'dphilljet', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilljet', + 'fold' : 3 +} + +variables['dphilljetjet'] = { + 'name' : 'dphilljetjet*(CleanJet_pt[1]>30)', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilljetjet', + 'fold' : 3 +} + +variables['dphilmet'] = { + 'name' : 'dphilmet', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilmet', + 'fold' : 3 +} + +variables['dphilmet2'] = { + 'name' : 'dphilmet2', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilmet2', + 'fold' : 3 +} + +variables['dphillmet'] = { + 'name' : 'dphillmet', + 'range' : (20,0,3.2), + 'xaxis' : 'dphillmet', + 'fold' : 3 +} + +variables['dphilep1jet1'] = { + 'name' : 'dphilep1jet1', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilep1jet1', + 'fold' : 3 +} + +variables['dphilep1jet2'] = { + 'name' : 'dphilep1jet2*(CleanJet_pt[1]>30)', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilep1jet2', + 'fold' : 3 +} + +variables['dphilep2jet1'] = { + 'name' : 'dphilep2jet1', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilep2jet1', + 'fold' : 3 +} + +variables['dphilep2jet2'] = { + 'name' : 'dphilep2jet2*(CleanJet_pt[1]>30)', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilep1jet2', + 'fold' : 3 +} + +variables['dphijjmet'] = { + 'name' : 'dphijjmet', + 'range' : (20,0,3.2), + 'xaxis' : 'dphijjmet', + 'fold' : 3 +} + +variables['ht'] = { + 'name' : 'ht', + 'range' : (30,0,1500), + 'xaxis' : 'ht [GeV]', + 'fold' : 3 +} + +variables['dphijet1met'] = { + 'name' : 'dphijet1met', + 'range' : (20,0,3.2), + 'xaxis' : 'dphijet1met', + 'fold' : 3 +} From fae1d70da30a8d87e8b2e1962fa378f816b08267 Mon Sep 17 00:00:00 2001 From: ntrevisa Date: Thu, 14 Aug 2025 08:48:06 +0200 Subject: [PATCH 11/44] supporting macros for BDT evaluation --- .../SS/macros/BDT_WH3l_OSSF_v9_class.cc | 222 +++ .../SS/macros/BDT_WH3l_SSSF_v9_class.cc | 198 +++ .../BDT_WHSS_TopSemileptonic_v9_class.cc | 162 +++ .../SS/macros/fake_rate_reader_class.cc | 1200 +++++++++++++++++ 4 files changed, 1782 insertions(+) create mode 100644 ControlRegions/SS/macros/BDT_WH3l_OSSF_v9_class.cc create mode 100644 ControlRegions/SS/macros/BDT_WH3l_SSSF_v9_class.cc create mode 100644 ControlRegions/SS/macros/BDT_WHSS_TopSemileptonic_v9_class.cc create mode 100644 ControlRegions/SS/macros/fake_rate_reader_class.cc diff --git a/ControlRegions/SS/macros/BDT_WH3l_OSSF_v9_class.cc b/ControlRegions/SS/macros/BDT_WH3l_OSSF_v9_class.cc new file mode 100644 index 00000000..dcca3ed5 --- /dev/null +++ b/ControlRegions/SS/macros/BDT_WH3l_OSSF_v9_class.cc @@ -0,0 +1,222 @@ +#ifndef BDT_WH3L_OSSF_v9 +#define BDT_WH3L_OSSF_v9 + +#include +#include "TVector2.h" +#include "TLorentzVector.h" +#include "Math/Vector4Dfwd.h" +#include "Math/GenVector/LorentzVector.h" +#include "Math/GenVector/PtEtaPhiM4D.h" +#include +#include +#include + +#include "Math/Point3D.h" +#include "Math/Vector3D.h" +#include "Math/Vector4D.h" +#include "Math/Rotation3D.h" +#include "Math/EulerAngles.h" +#include "Math/AxisAngle.h" +#include "Math/Quaternion.h" +#include "Math/RotationX.h" +#include "Math/RotationY.h" +#include "Math/RotationZ.h" +#include "Math/RotationZYX.h" +#include "Math/LorentzRotation.h" +#include "Math/Boost.h" +#include "Math/BoostX.h" +#include "Math/BoostY.h" +#include "Math/BoostZ.h" +#include "Math/Transform3D.h" +#include "Math/Plane3D.h" +#include "Math/VectorUtil.h" +#include "TMatrixD.h" +#include "TVectorD.h" +#include "TMath.h" + +#include "TFile.h" +#include "TTree.h" +#include "TString.h" +#include "TSystem.h" +#include "TROOT.h" +#include "TStopwatch.h" + +#include "TMVA/Tools.h" +#include "TMVA/Reader.h" +#include "TMVA/MethodCuts.h" + +#include "ROOT/RVec.hxx" + +using namespace ROOT; +using namespace ROOT::VecOps; + +class BDT_WH3l_OSSF_v9{ + +public: + + BDT_WH3l_OSSF_v9( TString BDT_name, TString xml_file_name ); + ~BDT_WH3l_OSSF_v9(); + + TString BDT_name_; + TString xml_file_name_; + + float WH3l_dphilllmet_; + float WH3l_mOSll_min_; + float WH3l_ptOSll_min_; + float WH3l_drOSll_min_; + float WH3l_ZVeto_; + float WH3l_mtlmet_1_; + float WH3l_mtlmet_2_; + float WH3l_dphilmet_0_; + float WH3l_dphilmet_1_; + float WH3l_dphilmet_2_; + float WH3l_ptWWW_; + float PuppiMET_pt_; + float Lepton_pt_0_; + float Lepton_pt_1_; + float Lepton_pt_2_; + + TMVA::Reader *reader = new TMVA::Reader(); + + double operator() ( float WH3l_dphilllmet, + RVecF WH3l_mOSll, + RVecF WH3l_ptOSll, + RVecF WH3l_drOSll, + float WH3l_ZVeto, + RVecF WH3l_mtlmet, + RVecF WH3l_dphilmet, + float WH3l_ptWWW, + float PuppiMET_pt, + RVecF Lepton_pt){ + + // Assign variables values + WH3l_dphilllmet_ = WH3l_dphilllmet; + WH3l_mOSll_min_ = std::min({WH3l_mOSll[0], WH3l_mOSll[1], WH3l_mOSll[2]}); + WH3l_ptOSll_min_ = std::min({WH3l_ptOSll[0], WH3l_ptOSll[1], WH3l_ptOSll[2]}); + WH3l_drOSll_min_ = std::min({WH3l_drOSll[0], WH3l_drOSll[1], WH3l_drOSll[2]}); + WH3l_ZVeto_ = WH3l_ZVeto; + WH3l_mtlmet_1_ = WH3l_mtlmet[1]; + WH3l_mtlmet_2_ = WH3l_mtlmet[2]; + WH3l_dphilmet_0_ = WH3l_dphilmet[0]; + WH3l_dphilmet_1_ = WH3l_dphilmet[1]; + WH3l_dphilmet_2_ = WH3l_dphilmet[2]; + WH3l_ptWWW_ = WH3l_ptWWW; + PuppiMET_pt_ = PuppiMET_pt; + Lepton_pt_0_ = Lepton_pt[0]; + Lepton_pt_1_ = Lepton_pt[1]; + Lepton_pt_2_ = Lepton_pt[2]; + + // Evaluate the classifier + double classifier = reader->EvaluateMVA(BDT_name_); + + return classifier; + } + +}; + +BDT_WH3l_OSSF_v9::BDT_WH3l_OSSF_v9( TString BDT_name, TString xml_file_name ){ + + std::cout << "BDT name: " << BDT_name << std::endl; + std::cout << "xml file name: " << xml_file_name << std::endl; + + BDT_name_ = BDT_name; + xml_file_name_ = xml_file_name; + + // Pass variables to the reader + reader->AddVariable("WH3l_dphilllmet", &WH3l_dphilllmet_); + reader->AddVariable("MinIf$(WH3l_mOSll[], WH3l_mOSll[Iteration$]>0)", &WH3l_mOSll_min_); + reader->AddVariable("MinIf$(WH3l_ptOSll[], WH3l_ptOSll[Iteration$]>0)", &WH3l_ptOSll_min_); + reader->AddVariable("MinIf$(WH3l_drOSll[], WH3l_drOSll[Iteration$]>0)", &WH3l_drOSll_min_); + reader->AddVariable("WH3l_ZVeto", &WH3l_ZVeto_); + reader->AddVariable("WH3l_mtlmet[1]", &WH3l_mtlmet_1_); + reader->AddVariable("WH3l_mtlmet[2]", &WH3l_mtlmet_2_); + reader->AddVariable("WH3l_dphilmet[0]", &WH3l_dphilmet_0_); + reader->AddVariable("WH3l_dphilmet[1]", &WH3l_dphilmet_1_); + reader->AddVariable("WH3l_dphilmet[2]", &WH3l_dphilmet_2_); + reader->AddVariable("WH3l_ptWWW", &WH3l_ptWWW_); + reader->AddVariable("PuppiMET_pt", &PuppiMET_pt_); + reader->AddVariable("Alt$(Lepton_pt[0],0)", &Lepton_pt_0_); + reader->AddVariable("Alt$(Lepton_pt[1],0)", &Lepton_pt_1_); + reader->AddVariable("Alt$(Lepton_pt[2],0)", &Lepton_pt_2_); + + reader->BookMVA(BDT_name, xml_file_name); +} + +BDT_WH3l_OSSF_v9::~BDT_WH3l_OSSF_v9(){ + + std::cout << "Deleting reader" << std::endl; + + reader->Delete(); +} + +#endif + + +// float BDT_WH3l_OSSF_v9( +// TString BDT_name, +// TString xml_file_name, +// float WH3l_dphilllmet, +// RVecF WH3l_mOSll, +// RVecF WH3l_ptOSll, +// RVecF WH3l_drOSll, +// float WH3l_ZVeto, +// RVecF WH3l_mtlmet, +// RVecF WH3l_dphilmet, +// float WH3l_ptWWW, +// float PuppiMET_pt, +// RVecF Lepton_pt +// ){ + + +// // Assign variables values +// float WH3l_dphilllmet_ = WH3l_dphilllmet; +// float WH3l_mOSll_min_ = std::min({WH3l_mOSll[0], WH3l_mOSll[1], WH3l_mOSll[2]}); +// float WH3l_ptOSll_min_ = std::min({WH3l_ptOSll[0], WH3l_ptOSll[1], WH3l_ptOSll[2]}); +// float WH3l_drOSll_min_ = std::min({WH3l_drOSll[0], WH3l_drOSll[1], WH3l_drOSll[2]}); +// float WH3l_ZVeto_ = WH3l_ZVeto; +// float WH3l_mtlmet_1_ = WH3l_mtlmet[1]; +// float WH3l_mtlmet_2_ = WH3l_mtlmet[2]; +// float WH3l_dphilmet_0_ = WH3l_dphilmet[0]; +// float WH3l_dphilmet_1_ = WH3l_dphilmet[1]; +// float WH3l_dphilmet_2_ = WH3l_dphilmet[2]; +// float WH3l_ptWWW_ = WH3l_ptWWW; +// float PuppiMET_pt_ = PuppiMET_pt; +// float Lepton_pt_0_ = Lepton_pt[0]; +// float Lepton_pt_1_ = Lepton_pt[1]; +// float Lepton_pt_2_ = Lepton_pt[2]; + +// // Create reader object +// TMVA::Reader *reader = new TMVA::Reader( "!Color:Silent" ); + +// // Pass variables to the reader +// reader->AddVariable("WH3l_dphilllmet", &WH3l_dphilllmet_); +// reader->AddVariable("MinIf$(WH3l_mOSll[], WH3l_mOSll[Iteration$]>0)", &WH3l_mOSll_min_); +// reader->AddVariable("MinIf$(WH3l_ptOSll[], WH3l_ptOSll[Iteration$]>0)", &WH3l_ptOSll_min_); +// reader->AddVariable("MinIf$(WH3l_drOSll[], WH3l_drOSll[Iteration$]>0)", &WH3l_drOSll_min_); +// reader->AddVariable("WH3l_ZVeto", &WH3l_ZVeto_); +// reader->AddVariable("WH3l_mtlmet[1]", &WH3l_mtlmet_1_); +// reader->AddVariable("WH3l_mtlmet[2]", &WH3l_mtlmet_2_); +// reader->AddVariable("WH3l_dphilmet[0]", &WH3l_dphilmet_0_); +// reader->AddVariable("WH3l_dphilmet[1]", &WH3l_dphilmet_1_); +// reader->AddVariable("WH3l_dphilmet[2]", &WH3l_dphilmet_2_); +// reader->AddVariable("WH3l_ptWWW", &WH3l_ptWWW_); +// reader->AddVariable("PuppiMET_pt", &PuppiMET_pt_); +// reader->AddVariable("Alt$(Lepton_pt[0],0)", &Lepton_pt_0_); +// reader->AddVariable("Alt$(Lepton_pt[1],0)", &Lepton_pt_1_); +// reader->AddVariable("Alt$(Lepton_pt[2],0)", &Lepton_pt_2_); + +// // Tell the reader which xml file to read +// reader->BookMVA(BDT_name, xml_file_name); + +// // Evaluate the BDT value +// float classifier = reader->EvaluateMVA(BDT_name); + +// // Delete reader object +// delete reader; + +// // Return BDT value +// return classifier; + +// } + +// #endif diff --git a/ControlRegions/SS/macros/BDT_WH3l_SSSF_v9_class.cc b/ControlRegions/SS/macros/BDT_WH3l_SSSF_v9_class.cc new file mode 100644 index 00000000..12035f6e --- /dev/null +++ b/ControlRegions/SS/macros/BDT_WH3l_SSSF_v9_class.cc @@ -0,0 +1,198 @@ +#ifndef BDT_WH3L_SSSF_v9 +#define BDT_WH3L_SSSF_v9 + +#include +#include "TVector2.h" +#include "TLorentzVector.h" +#include "Math/Vector4Dfwd.h" +#include "Math/GenVector/LorentzVector.h" +#include "Math/GenVector/PtEtaPhiM4D.h" +#include +#include +#include + +#include "Math/Point3D.h" +#include "Math/Vector3D.h" +#include "Math/Vector4D.h" +#include "Math/Rotation3D.h" +#include "Math/EulerAngles.h" +#include "Math/AxisAngle.h" +#include "Math/Quaternion.h" +#include "Math/RotationX.h" +#include "Math/RotationY.h" +#include "Math/RotationZ.h" +#include "Math/RotationZYX.h" +#include "Math/LorentzRotation.h" +#include "Math/Boost.h" +#include "Math/BoostX.h" +#include "Math/BoostY.h" +#include "Math/BoostZ.h" +#include "Math/Transform3D.h" +#include "Math/Plane3D.h" +#include "Math/VectorUtil.h" +#include "TMatrixD.h" +#include "TVectorD.h" +#include "TMath.h" + +#include "TFile.h" +#include "TTree.h" +#include "TString.h" +#include "TSystem.h" +#include "TROOT.h" +#include "TStopwatch.h" + +#include "TMVA/Tools.h" +#include "TMVA/Reader.h" +#include "TMVA/MethodCuts.h" + +#include "ROOT/RVec.hxx" + +using namespace ROOT; +using namespace ROOT::VecOps; + + +class BDT_WH3l_SSSF_v9{ + +public: + + BDT_WH3l_SSSF_v9( TString BDT_name, TString xml_file_name ); + ~BDT_WH3l_SSSF_v9(); + + TString BDT_name_; + TString xml_file_name_; + + float WH3l_dphilllmet_; + float WH3l_mOSll_min_; + float WH3l_ptOSll_min_; + float WH3l_drOSll_min_; + float WH3l_dphilmet_0_; + float WH3l_dphilmet_1_; + float WH3l_dphilmet_2_; + float WH3l_ptWWW_; + float PuppiMET_pt_; + float Lepton_pt_0_; + float Lepton_pt_1_; + float Lepton_pt_2_; + + TMVA::Reader *reader = new TMVA::Reader(); + + double operator() ( float WH3l_dphilllmet, + RVecF WH3l_mOSll, + RVecF WH3l_ptOSll, + RVecF WH3l_drOSll, + RVecF WH3l_dphilmet, + float WH3l_ptWWW, + float PuppiMET_pt, + RVecF Lepton_pt){ + + // Assign variables values + WH3l_dphilllmet_ = WH3l_dphilllmet; + WH3l_mOSll_min_ = std::min({WH3l_mOSll[0], WH3l_mOSll[1], WH3l_mOSll[2]}); + WH3l_ptOSll_min_ = std::min({WH3l_ptOSll[0], WH3l_ptOSll[1], WH3l_ptOSll[2]}); + WH3l_drOSll_min_ = std::min({WH3l_drOSll[0], WH3l_drOSll[1], WH3l_drOSll[2]}); + WH3l_dphilmet_0_ = WH3l_dphilmet[0]; + WH3l_dphilmet_1_ = WH3l_dphilmet[1]; + WH3l_dphilmet_2_ = WH3l_dphilmet[2]; + WH3l_ptWWW_ = WH3l_ptWWW; + PuppiMET_pt_ = PuppiMET_pt; + Lepton_pt_0_ = Lepton_pt[0]; + Lepton_pt_1_ = Lepton_pt[1]; + Lepton_pt_2_ = Lepton_pt[2]; + + // Evaluate the classifier + double classifier = reader->EvaluateMVA(BDT_name_); + + return classifier; + } + +}; + +BDT_WH3l_SSSF_v9::BDT_WH3l_SSSF_v9( TString BDT_name, TString xml_file_name ){ + + std::cout << "BDT name: " << BDT_name << std::endl; + std::cout << "xml file name: " << xml_file_name << std::endl; + + BDT_name_ = BDT_name; + xml_file_name_ = xml_file_name; + + // Pass variables to the reader + reader->AddVariable("WH3l_dphilllmet", &WH3l_dphilllmet_); + reader->AddVariable("MinIf$(WH3l_mOSll[], WH3l_mOSll[Iteration$]>0)", &WH3l_mOSll_min_); + reader->AddVariable("MinIf$(WH3l_ptOSll[], WH3l_ptOSll[Iteration$]>0)", &WH3l_ptOSll_min_); + reader->AddVariable("MinIf$(WH3l_drOSll[], WH3l_drOSll[Iteration$]>0)", &WH3l_drOSll_min_); + reader->AddVariable("WH3l_dphilmet[0]", &WH3l_dphilmet_0_); + reader->AddVariable("WH3l_dphilmet[1]", &WH3l_dphilmet_1_); + reader->AddVariable("WH3l_dphilmet[2]", &WH3l_dphilmet_2_); + reader->AddVariable("WH3l_ptWWW", &WH3l_ptWWW_); + reader->AddVariable("PuppiMET_pt", &PuppiMET_pt_); + reader->AddVariable("Alt$(Lepton_pt[0],0)", &Lepton_pt_0_); + reader->AddVariable("Alt$(Lepton_pt[1],0)", &Lepton_pt_1_); + reader->AddVariable("Alt$(Lepton_pt[2],0)", &Lepton_pt_2_); + + reader->BookMVA(BDT_name, xml_file_name); +} + +BDT_WH3l_SSSF_v9::~BDT_WH3l_SSSF_v9(){ + + std::cout << "Deleting reader" << std::endl; + + reader->Delete(); +} + +#endif + + + // float BDT_WH3l_SSSF_v9(TString BDT_name, TString xml_file_name, float WH3l_dphilllmet, RVecF WH3l_mOSll, RVecF WH3l_ptOSll, RVecF WH3l_drOSll, RVecF WH3l_dphilmet, float WH3l_ptWWW, float PuppiMET_pt, RVecF Lepton_pt){ + +// // Assign variables values +// float WH3l_dphilllmet_ = WH3l_dphilllmet; +// float WH3l_mOSll_min_ = std::min({WH3l_mOSll[0], WH3l_mOSll[1], WH3l_mOSll[2]}); +// float WH3l_ptOSll_min_ = std::min({WH3l_ptOSll[0], WH3l_ptOSll[1], WH3l_ptOSll[2]}); +// float WH3l_drOSll_min_ = std::min({WH3l_drOSll[0], WH3l_drOSll[1], WH3l_drOSll[2]}); +// // float WH3l_ZVeto_ = WH3l_ZVeto; +// // float WH3l_mtlmet_1_ = WH3l_mtlmet[1]; +// // float WH3l_mtlmet_2_ = WH3l_mtlmet[2]; +// float WH3l_dphilmet_0_ = WH3l_dphilmet[0]; +// float WH3l_dphilmet_1_ = WH3l_dphilmet[1]; +// float WH3l_dphilmet_2_ = WH3l_dphilmet[2]; +// float WH3l_ptWWW_ = WH3l_ptWWW; +// float PuppiMET_pt_ = PuppiMET_pt; +// float Lepton_pt_0_ = Lepton_pt[0]; +// float Lepton_pt_1_ = Lepton_pt[1]; +// float Lepton_pt_2_ = Lepton_pt[2]; + +// // Create reader object +// TMVA::Reader *reader = new TMVA::Reader( "!Color:Silent" ); + +// // Pass variables to the reader +// reader->AddVariable("WH3l_dphilllmet", &WH3l_dphilllmet_); +// reader->AddVariable("MinIf$(WH3l_mOSll[], WH3l_mOSll[Iteration$]>0)", &WH3l_mOSll_min_); +// reader->AddVariable("MinIf$(WH3l_ptOSll[], WH3l_ptOSll[Iteration$]>0)", &WH3l_ptOSll_min_); +// reader->AddVariable("MinIf$(WH3l_drOSll[], WH3l_drOSll[Iteration$]>0)", &WH3l_drOSll_min_); +// // reader->AddVariable("WH3l_ZVeto", &WH3l_ZVeto_); +// // reader->AddVariable("WH3l_mtlmet[1]", &WH3l_mtlmet_1_); +// // reader->AddVariable("WH3l_mtlmet[2]", &WH3l_mtlmet_2_); +// reader->AddVariable("WH3l_dphilmet[0]", &WH3l_dphilmet_0_); +// reader->AddVariable("WH3l_dphilmet[1]", &WH3l_dphilmet_1_); +// reader->AddVariable("WH3l_dphilmet[2]", &WH3l_dphilmet_2_); +// reader->AddVariable("WH3l_ptWWW", &WH3l_ptWWW_); +// reader->AddVariable("PuppiMET_pt", &PuppiMET_pt_); +// reader->AddVariable("Alt$(Lepton_pt[0],0)", &Lepton_pt_0_); +// reader->AddVariable("Alt$(Lepton_pt[1],0)", &Lepton_pt_1_); +// reader->AddVariable("Alt$(Lepton_pt[2],0)", &Lepton_pt_2_); + +// // Tell the reader which xml file to read +// reader->BookMVA(BDT_name, xml_file_name); + +// // Evaluate the BDT value +// float classifier = reader->EvaluateMVA(BDT_name); + +// // Delete reader object +// delete reader; + +// // Return BDT value +// return classifier; + +// } + +// #endif diff --git a/ControlRegions/SS/macros/BDT_WHSS_TopSemileptonic_v9_class.cc b/ControlRegions/SS/macros/BDT_WHSS_TopSemileptonic_v9_class.cc new file mode 100644 index 00000000..426bccb4 --- /dev/null +++ b/ControlRegions/SS/macros/BDT_WHSS_TopSemileptonic_v9_class.cc @@ -0,0 +1,162 @@ +#ifndef BDT_WHSS_TOPSEMILEPTONIC_V9 +#define BDT_WHSS_TOPSEMILEPTONIC_V9 + +#include +#include "TVector2.h" +#include "TLorentzVector.h" +#include "Math/Vector4Dfwd.h" +#include "Math/GenVector/LorentzVector.h" +#include "Math/GenVector/PtEtaPhiM4D.h" +#include +#include +#include + +#include "Math/Point3D.h" +#include "Math/Vector3D.h" +#include "Math/Vector4D.h" +#include "Math/Rotation3D.h" +#include "Math/EulerAngles.h" +#include "Math/AxisAngle.h" +#include "Math/Quaternion.h" +#include "Math/RotationX.h" +#include "Math/RotationY.h" +#include "Math/RotationZ.h" +#include "Math/RotationZYX.h" +#include "Math/LorentzRotation.h" +#include "Math/Boost.h" +#include "Math/BoostX.h" +#include "Math/BoostY.h" +#include "Math/BoostZ.h" +#include "Math/Transform3D.h" +#include "Math/Plane3D.h" +#include "Math/VectorUtil.h" +#include "TMatrixD.h" +#include "TVectorD.h" +#include "TMath.h" + +#include "TFile.h" +#include "TTree.h" +#include "TString.h" +#include "TSystem.h" +#include "TROOT.h" +#include "TStopwatch.h" + +#include "TMVA/Tools.h" +#include "TMVA/Reader.h" +#include "TMVA/MethodCuts.h" + +#include "ROOT/RVec.hxx" + +using namespace ROOT; +using namespace ROOT::VecOps; + + +class BDT_WHSS_TopSemileptonic_v9{ + +public: + + BDT_WHSS_TopSemileptonic_v9( TString BDT_name, TString xml_file_name ); + ~BDT_WHSS_TopSemileptonic_v9(); + + TString BDT_name_; + TString xml_file_name_; + + float mll_; + float mjj_; + float mtw1_; + float mtw2_; + float ptll_; + float mlljj20_whss_; + float PuppiMET_pt_; + float dphill_; + float dphijj_; + float dphillmet_; + float dphilmet2_; + float dphijet1met_; + float jetpt1_; + float Jet_btagDeepB_0_; + float Jet_btagDeepB_1_; + + TMVA::Reader *reader = new TMVA::Reader(); + + // RVecF jet_btagDeepB; + // RVecI cleanJet_jetIdx; + + double operator()( float mll, + float mjj, + float mtw1, + float mtw2, + float ptll, + float mlljj20_whss, + float PuppiMET_pt, + float dphill, + float dphijj, + float dphillmet, + float dphilmet2, + float dphijet1met, + RVecF cleanJet_pt, + RVecF jet_btagDeepB, + RVecI cleanJet_jetIdx){ + + // Assign variables values + mll_ = mll; + mjj_ = mjj; + mtw1_ = mtw1; + mtw2_ = mtw2; + ptll_ = ptll; + mlljj20_whss_ = mlljj20_whss; + PuppiMET_pt_ = PuppiMET_pt; + dphill_ = dphill; + dphijj_ = dphijj; + dphillmet_ = dphillmet; + dphilmet2_ = dphilmet2; + dphijet1met_ = dphijet1met; + jetpt1_ = cleanJet_pt[0]; + Jet_btagDeepB_0_ = cleanJet_jetIdx[0]>=0 ? jet_btagDeepB[cleanJet_jetIdx[0]] : -2; + Jet_btagDeepB_1_ = cleanJet_jetIdx[1]>=0 ? jet_btagDeepB[cleanJet_jetIdx[1]] : -2; + + // Evaluate the classifier + double classifier = reader->EvaluateMVA(BDT_name_); + + return classifier; + } + +}; + +BDT_WHSS_TopSemileptonic_v9::BDT_WHSS_TopSemileptonic_v9( TString BDT_name, TString xml_file_name ){ + + std::cout << "BDT name: " << BDT_name << std::endl; + std::cout << "xml file name: " << xml_file_name << std::endl; + + BDT_name_ = BDT_name; + xml_file_name_ = xml_file_name; + + // Pass variables to the reader + reader->AddVariable("mll ", &mll_ ); + reader->AddVariable("mjj ", &mjj_ ); + reader->AddVariable("mtw1 ", &mtw1_ ); + reader->AddVariable("mtw2 ", &mtw2_ ); + reader->AddVariable("ptll ", &ptll_ ); + reader->AddVariable("mlljj20_whss ", &mlljj20_whss_ ); + reader->AddVariable("PuppiMET_pt ", &PuppiMET_pt_ ); + reader->AddVariable("dphill ", &dphill_ ); + reader->AddVariable("dphijj ", &dphijj_ ); + reader->AddVariable("dphillmet ", &dphillmet_ ); + reader->AddVariable("dphilmet2 ", &dphilmet2_ ); + reader->AddVariable("dphijet1met ", &dphijet1met_ ); + // Variables with Alt$ values + reader->AddVariable("Alt$(CleanJet_pt[0],0)", &jetpt1_ ); + reader->AddVariable("Alt$(Jet_btagDeepB[CleanJet_jetIdx[0]],-2)", &Jet_btagDeepB_0_); + reader->AddVariable("Alt$(Jet_btagDeepB[CleanJet_jetIdx[1]],-2)", &Jet_btagDeepB_1_); + + reader->BookMVA(BDT_name, xml_file_name); +} + +BDT_WHSS_TopSemileptonic_v9::~BDT_WHSS_TopSemileptonic_v9(){ + + std::cout << "Deleting reader" << std::endl; + + reader->Delete(); +} + +#endif diff --git a/ControlRegions/SS/macros/fake_rate_reader_class.cc b/ControlRegions/SS/macros/fake_rate_reader_class.cc new file mode 100644 index 00000000..88cf9908 --- /dev/null +++ b/ControlRegions/SS/macros/fake_rate_reader_class.cc @@ -0,0 +1,1200 @@ +/* + To have the complete formulas: + https://github.com/latinos/LatinoAnalysis/blob/master/NanoGardener/python/modules/LeptonFakeWMaker.py + https://github.com/latinos/LatinoAnalysis/blob/UL_production/NanoGardener/python/data/formulasToAdd_FAKE_Full2018v9.py +*/ + + +#ifndef FAKERATEREADER +#define FAKERATEREADER + +#include "TSystem.h" + +#include +#include +#include +#include +#include + +#include "TLorentzVector.h" +#include "TMath.h" + +#include "TH2D.h" +#include "TFile.h" +#include + +#include "ROOT/RVec.hxx" + +using namespace ROOT; +using namespace ROOT::VecOps; + +using namespace std; + +typedef std::map> map_dict; + +class fake_rate_reader{ +public: + + fake_rate_reader( TString year , TString ele_WP, TString muon_WP, float ele_WP_number, float muon_WP_number, TString kind, uint nLeptons, TString electron_tight_charge, TString mkShapesRDF_base ); + + // std::tuple GetFR_2l( double pt1 , double eta1, double pdg1, double isTight1, double pt2 , double eta2, double pdg2, double isTight2); + std::tuple GetRate(TH2F* fake_rate_histo, double pt, double eta, double lepton_pt_max); + float GetFR_1l( double pt1 , double eta1, double pdg1, double isTight1, TH2F* fake_rate_ele_, TH2F* fake_rate_muon_, TString stat); + float GetFR_2l( double pt1 , double eta1, double pdg1, double isTight1, double pt2 , double eta2, double pdg2, double isTight2, TH2F* fake_rate_ele_, TH2F* fake_rate_muon_, TString stat); + float GetFR_3l( double pt1 , double eta1, double pdg1, double isTight1, double pt2 , double eta2, double pdg2, double isTight2, double pt3 , double eta3, double pdg3, double isTight3, TH2F* fake_rate_ele_, TH2F* fake_rate_muon_, TString stat); + + TString year_; + unsigned int nLeptons_; + TString electron_tight_charge_; + std::string SF_type_; + TString ele_WP_; + TString muon_WP_; + float ele_WP_number_; + float muon_WP_number_; + TString kind_; + + RVecI Lepton_pdgId; + RVecF Lepton_pt; + RVecF Lepton_eta; + RVecI Lepton_isTightMuon_cut_Tight_HWWW; // 2016 -> Lepton_isTightMuon_cut_Tight80x + RVecI Lepton_isTightElectron_mvaFall17V2Iso_WP90; + RVecF Lepton_mvaTTH_UL; + RVecF Muon_mvaTTH; + RVecI Lepton_muonIdx; + RVecF CleanJet_pt; + int nCleanJet; + + map_dict fake_rate_reader_map_; + + TH2F* fake_rate_muon_10_; + TH2F* fake_rate_muon_15_; + TH2F* fake_rate_muon_20_; + TH2F* fake_rate_muon_25_; + TH2F* fake_rate_muon_30_; + TH2F* fake_rate_muon_35_; + TH2F* fake_rate_muon_45_; + TH2F* fake_rate_ele_25_; + TH2F* fake_rate_ele_35_; + TH2F* fake_rate_ele_45_; + TH2F* prompt_rate_muon_; + TH2F* prompt_rate_ele_; + + int isTight_[3]; + + float operator()(RVecI Lepton_pdgId, + RVecF Lepton_pt, + RVecF Lepton_eta, + RVecI Lepton_isTightMuon_cut_Tight_HWWW, + RVecI Lepton_isTightElectron_mvaFall17V2Iso_WP90, + RVecF Lepton_mvaTTH_UL, + RVecF Muon_mvaTTH, + RVecI Lepton_muonIdx, + RVecF CleanJet_pt, + int nCleanJet + ){ + + double SF = 1.; + + isTight_[0] = 0; + isTight_[1] = 0; + isTight_[2] = 0; + + // Build tight lepton definitions + for (unsigned int i = 0; i < nLeptons_ ; i++) { + if (TMath::Abs(Lepton_pdgId[i]) == 11) + if (Lepton_isTightElectron_mvaFall17V2Iso_WP90[i] == 1 && Lepton_mvaTTH_UL[i] > ele_WP_number_) + isTight_[i] = 1; + if (TMath::Abs(Lepton_pdgId[i]) == 13) + if (Lepton_isTightMuon_cut_Tight_HWWW[i] == 1 && Muon_mvaTTH[Lepton_muonIdx[i]] > muon_WP_number_) + isTight_[i] = 1; + } + + // Case 1 lepton + if (nLeptons_ == 1){ + + // Calculate the per-event fake rate + float fakeWeight_1l0j = GetFR_1l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + fake_rate_ele_35_, fake_rate_muon_20_, "Nominal"); + + float fakeWeight_1l1j = GetFR_1l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + fake_rate_ele_35_, fake_rate_muon_25_, "Nominal"); + + float fakeWeight_1l2j = GetFR_1l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + fake_rate_ele_35_, fake_rate_muon_35_, "Nominal"); + + float fakeWeight = fakeWeight_1l0j*( nCleanJet == 0 || CleanJet_pt[0] < 30) + + fakeWeight_1l1j*((nCleanJet == 1 && CleanJet_pt[0] >= 30) || + (nCleanJet > 1 && CleanJet_pt[0] >= 30 && CleanJet_pt[1] < 30)) + + fakeWeight_1l2j*( nCleanJet > 1 && CleanJet_pt[1] >= 30); + + if (kind_ == "nominal") return fakeWeight; + + // Calculate the per-event fake rate - EleUp + if (kind_ == "EleUp"){ + float fakeWeight_1l0jElUp = GetFR_1l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + fake_rate_ele_45_, fake_rate_muon_20_, "Nominal"); + + float fakeWeight_1l1jElUp = GetFR_1l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + fake_rate_ele_45_, fake_rate_muon_25_, "Nominal"); + + float fakeWeight_1l2jElUp = GetFR_1l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + fake_rate_ele_45_, fake_rate_muon_35_, "Nominal"); + + float fakeWeightEleUp = 0.; + if (fakeWeight != 0.){ + float num = fakeWeight_1l0jElUp*( nCleanJet == 0 || CleanJet_pt[0] < 30) + + fakeWeight_1l1jElUp*((nCleanJet == 1 && CleanJet_pt[0] >= 30) || + (nCleanJet > 1 && CleanJet_pt[0] >= 30 && CleanJet_pt[1] < 30)) + + fakeWeight_1l2jElUp*( nCleanJet > 1 && CleanJet_pt[1] >= 30); + + fakeWeightEleUp = num / fakeWeight; + } + + return fakeWeightEleUp; + } + + // Calculate the per-event fake rate - EleDown + if (kind_ == "EleDown"){ + float fakeWeight_1l0jElDown = GetFR_1l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + fake_rate_ele_25_, fake_rate_muon_20_, "Nominal"); + + float fakeWeight_1l1jElDown = GetFR_1l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + fake_rate_ele_25_, fake_rate_muon_25_, "Nominal"); + + float fakeWeight_1l2jElDown = GetFR_1l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + fake_rate_ele_25_, fake_rate_muon_35_, "Nominal"); + + float fakeWeightEleDown = 0.; + if (fakeWeight != 0.){ + float num = fakeWeight_1l0jElDown*( nCleanJet == 0 || CleanJet_pt[0] < 30) + + fakeWeight_1l1jElDown*((nCleanJet == 1 && CleanJet_pt[0] >= 30) || + (nCleanJet > 1 && CleanJet_pt[0] >= 30 && CleanJet_pt[1] < 30)) + + fakeWeight_1l2jElDown*( nCleanJet > 1 && CleanJet_pt[1] >= 30); + + fakeWeightEleDown = num / fakeWeight; + } + + return fakeWeightEleDown; + } + + // Calculate the per-event fake rate - MuUp + if (kind_ == "MuUp"){ + float fakeWeight_1l0jMuUp = GetFR_1l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + fake_rate_ele_35_, fake_rate_muon_30_, "Nominal"); + + float fakeWeight_1l1jMuUp = GetFR_1l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + fake_rate_ele_35_, fake_rate_muon_35_, "Nominal"); + + float fakeWeight_1l2jMuUp = GetFR_1l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + fake_rate_ele_35_, fake_rate_muon_45_, "Nominal"); + + float fakeWeightMuUp = 0.; + if (fakeWeight != 0.){ + float num = fakeWeight_1l0jMuUp*( nCleanJet == 0 || CleanJet_pt[0] < 30) + + fakeWeight_1l1jMuUp*((nCleanJet == 1 && CleanJet_pt[0] >= 30) || + (nCleanJet > 1 && CleanJet_pt[0] >= 30 && CleanJet_pt[1] < 30)) + + fakeWeight_1l2jMuUp*( nCleanJet > 1 && CleanJet_pt[1] >= 30); + + fakeWeightMuUp = num / fakeWeight; + } + + return fakeWeightMuUp; + } + + // Calculate the per-event fake rate - MuDown + if (kind_ == "MuDown"){ + float fakeWeight_1l0jMuDown = GetFR_1l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + fake_rate_ele_35_, fake_rate_muon_10_, "Nominal"); + + float fakeWeight_1l1jMuDown = GetFR_1l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + fake_rate_ele_35_, fake_rate_muon_15_, "Nominal"); + + float fakeWeight_1l2jMuDown = GetFR_1l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + fake_rate_ele_35_, fake_rate_muon_25_, "Nominal"); + + float fakeWeightMuDown = 0.; + if (fakeWeight != 0.){ + float num = fakeWeight_1l0jMuDown*( nCleanJet == 0 || CleanJet_pt[0] < 30) + + fakeWeight_1l1jMuDown*((nCleanJet == 1 && CleanJet_pt[0] >= 30) || + (nCleanJet > 1 && CleanJet_pt[0] >= 30 && CleanJet_pt[1] < 30)) + + fakeWeight_1l2jMuDown*( nCleanJet > 1 && CleanJet_pt[1] >= 30); + + fakeWeightMuDown = num / fakeWeight; + } + + return fakeWeightMuDown; + } + + // Calculate the per-event fake rate - StatEleUp + if (kind_ == "StatEleUp"){ + float fakeWeight_1l0jstatElUp = GetFR_1l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + fake_rate_ele_35_, fake_rate_muon_20_, "ElUp"); + + float fakeWeight_1l1jstatElUp = GetFR_1l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + fake_rate_ele_35_, fake_rate_muon_25_, "ElUp"); + + float fakeWeight_1l2jstatElUp = GetFR_1l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + fake_rate_ele_35_, fake_rate_muon_35_, "ElUp"); + + float fakeWeightstatEleUp = 0.; + if (fakeWeight != 0.){ + float num = fakeWeight_1l0jstatElUp*( nCleanJet == 0 || CleanJet_pt[0] < 30) + + fakeWeight_1l1jstatElUp*((nCleanJet == 1 && CleanJet_pt[0] >= 30) || + (nCleanJet > 1 && CleanJet_pt[0] >= 30 && CleanJet_pt[1] < 30)) + + fakeWeight_1l2jstatElUp*( nCleanJet > 1 && CleanJet_pt[1] >= 30); + + fakeWeightstatEleUp = num / fakeWeight; + } + + return fakeWeightstatEleUp; + } + + // Calculate the per-event fake rate - StatEleDown + if (kind_ == "StatEleDown"){ + float fakeWeight_1l0jstatElDown = GetFR_1l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + fake_rate_ele_35_, fake_rate_muon_20_, "ElDown"); + + float fakeWeight_1l1jstatElDown = GetFR_1l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + fake_rate_ele_35_, fake_rate_muon_25_, "ElDown"); + + float fakeWeight_1l2jstatElDown = GetFR_1l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + fake_rate_ele_35_, fake_rate_muon_35_, "ElDown"); + + float fakeWeightstatEleDown = 0.; + if (fakeWeight != 0.){ + float num = fakeWeight_1l0jstatElDown*( nCleanJet == 0 || CleanJet_pt[0] < 30) + + fakeWeight_1l1jstatElDown*((nCleanJet == 1 && CleanJet_pt[0] >= 30) || + (nCleanJet > 1 && CleanJet_pt[0] >= 30 && CleanJet_pt[1] < 30)) + + fakeWeight_1l2jstatElDown*( nCleanJet > 1 && CleanJet_pt[1] >= 30); + + fakeWeightstatEleDown = num / fakeWeight; + } + + return fakeWeightstatEleDown; + } + + // Calculate the per-event fake rate - StatMuUp + if (kind_ == "StatMuUp"){ + float fakeWeight_1l0jstatMuUp = GetFR_1l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + fake_rate_ele_35_, fake_rate_muon_20_, "MuUp"); + + float fakeWeight_1l1jstatMuUp = GetFR_1l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + fake_rate_ele_35_, fake_rate_muon_25_, "MuUp"); + + float fakeWeight_1l2jstatMuUp = GetFR_1l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + fake_rate_ele_35_, fake_rate_muon_35_, "MuUp"); + + float fakeWeightstatMuUp = 0.; + if (fakeWeight != 0.){ + float num = fakeWeight_1l0jstatMuUp*( nCleanJet == 0 || CleanJet_pt[0] < 30) + + fakeWeight_1l1jstatMuUp*((nCleanJet == 1 && CleanJet_pt[0] >= 30) || + (nCleanJet > 1 && CleanJet_pt[0] >= 30 && CleanJet_pt[1] < 30)) + + fakeWeight_1l2jstatMuUp*( nCleanJet > 1 && CleanJet_pt[1] >= 30); + + fakeWeightstatMuUp = num / fakeWeight; + } + + return fakeWeightstatMuUp; + } + + // Calculate the per-event fake rate - StatMuDown + if (kind_ == "StatMuDown"){ + float fakeWeight_1l0jstatMuDown = GetFR_1l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + fake_rate_ele_35_, fake_rate_muon_20_, "MuDown"); + + float fakeWeight_1l1jstatMuDown = GetFR_1l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + fake_rate_ele_35_, fake_rate_muon_25_, "MuDown"); + + float fakeWeight_1l2jstatMuDown = GetFR_1l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + fake_rate_ele_35_, fake_rate_muon_35_, "MuDown"); + + float fakeWeightstatMuDown = 0.; + if (fakeWeight != 0.){ + float num = fakeWeight_1l0jstatMuDown*( nCleanJet == 0 || CleanJet_pt[0] < 30) + + fakeWeight_1l1jstatMuDown*((nCleanJet == 1 && CleanJet_pt[0] >= 30) || + (nCleanJet > 1 && CleanJet_pt[0] >= 30 && CleanJet_pt[1] < 30)) + + fakeWeight_1l2jstatMuDown*( nCleanJet > 1 && CleanJet_pt[1] >= 30); + + fakeWeightstatMuDown = num / fakeWeight; + } + + return fakeWeightstatMuDown; + } + + else + return -1; + + } + + // Case 2 leptons + if (nLeptons_ == 2){ + + // Calculate the per-event fake rate + float fakeWeight_2l0j = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_35_, fake_rate_muon_20_, "Nominal"); + + float fakeWeight_2l1j = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_35_, fake_rate_muon_25_, "Nominal"); + + float fakeWeight_2l2j = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_35_, fake_rate_muon_45_, "Nominal"); + + float fakeWeight = fakeWeight_2l0j*( nCleanJet == 0 || CleanJet_pt[0] < 30) + + fakeWeight_2l1j*((nCleanJet == 1 && CleanJet_pt[0] >= 30) || + (nCleanJet > 1 && CleanJet_pt[0] >= 30 && CleanJet_pt[1] < 30)) + + fakeWeight_2l2j*( nCleanJet > 1 && CleanJet_pt[1] >= 30); + + // std::cout << + // "Lepton pTs = " << Lepton_pt[0] << ", " << Lepton_pt[1] << " \n " << + // "Lepton etas = " << Lepton_eta[0] << ", " << Lepton_eta[1] << " \n " << + // "Lepton pdgIds = " << Lepton_pdgId[0] << ", " << Lepton_pdgId[1] << " \n " << + // "Is tight = " << isTight_[0] << ", " << isTight_[1] << " \n " << + // "fakeWeight_2l0j = " << fakeWeight_2l0j << " \n " << + // "fakeWeight_2l1j = " << fakeWeight_2l1j << " \n " << + // "fakeWeight_2l2j = " << fakeWeight_2l2j << std::endl; + + if (kind_ == "nominal") return fakeWeight; + + + // Calculate the per-event fake rate - EleUp + if (kind_ == "EleUp"){ + float fakeWeight_2l0jElUp = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_45_, fake_rate_muon_20_, "Nominal"); + + float fakeWeight_2l1jElUp = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_45_, fake_rate_muon_25_, "Nominal"); + + float fakeWeight_2l2jElUp = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_45_, fake_rate_muon_35_, "Nominal"); + + float fakeWeightEleUp = 0.; + if (fakeWeight != 0.){ + float num = fakeWeight_2l0jElUp*( nCleanJet == 0 || CleanJet_pt[0] < 30) + + fakeWeight_2l1jElUp*((nCleanJet == 1 && CleanJet_pt[0] >= 30) || + (nCleanJet > 1 && CleanJet_pt[0] >= 30 && CleanJet_pt[1] < 30)) + + fakeWeight_2l2jElUp*( nCleanJet > 1 && CleanJet_pt[1] >= 30); + + fakeWeightEleUp = num / fakeWeight; + } + + return fakeWeightEleUp; + } + + + // Calculate the per-event fake rate - EleDown + if (kind_ == "EleDown"){ + float fakeWeight_2l0jElDown = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_25_, fake_rate_muon_20_, "Nominal"); + + float fakeWeight_2l1jElDown = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_25_, fake_rate_muon_25_, "Nominal"); + + float fakeWeight_2l2jElDown = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_25_, fake_rate_muon_35_, "Nominal"); + + float fakeWeightEleDown = 0.; + if (fakeWeight != 0.){ + float num = fakeWeight_2l0jElDown*( nCleanJet == 0 || CleanJet_pt[0] < 30) + + fakeWeight_2l1jElDown*((nCleanJet == 1 && CleanJet_pt[0] >= 30) || + (nCleanJet > 1 && CleanJet_pt[0] >= 30 && CleanJet_pt[1] < 30)) + + fakeWeight_2l2jElDown*( nCleanJet > 1 && CleanJet_pt[1] >= 30); + + fakeWeightEleDown = num / fakeWeight; + } + + return fakeWeightEleDown; + } + + + // Calculate the per-event fake rate - MuUp + if (kind_ == "MuUp"){ + float fakeWeight_2l0jMuUp = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_35_, fake_rate_muon_30_, "Nominal"); + + float fakeWeight_2l1jMuUp = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_35_, fake_rate_muon_35_, "Nominal"); + + float fakeWeight_2l2jMuUp = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_35_, fake_rate_muon_45_, "Nominal"); + + float fakeWeightMuUp = 0.; + if (fakeWeight != 0.){ + float num = fakeWeight_2l0jMuUp*( nCleanJet == 0 || CleanJet_pt[0] < 30) + + fakeWeight_2l1jMuUp*((nCleanJet == 1 && CleanJet_pt[0] >= 30) || + (nCleanJet > 1 && CleanJet_pt[0] >= 30 && CleanJet_pt[1] < 30)) + + fakeWeight_2l2jMuUp*( nCleanJet > 1 && CleanJet_pt[1] >= 30); + + fakeWeightMuUp = num / fakeWeight; + } + + return fakeWeightMuUp; + } + + + // Calculate the per-event fake rate - MuDown + if (kind_ == "MuDown"){ + float fakeWeight_2l0jMuDown = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_35_, fake_rate_muon_10_, "Nominal"); + + float fakeWeight_2l1jMuDown = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_35_, fake_rate_muon_15_, "Nominal"); + + float fakeWeight_2l2jMuDown = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_35_, fake_rate_muon_25_, "Nominal"); + + float fakeWeightMuDown = 0.; + if (fakeWeight != 0.){ + float num = fakeWeight_2l0jMuDown*( nCleanJet == 0 || CleanJet_pt[0] < 30) + + fakeWeight_2l1jMuDown*((nCleanJet == 1 && CleanJet_pt[0] >= 30) || + (nCleanJet > 1 && CleanJet_pt[0] >= 30 && CleanJet_pt[1] < 30)) + + fakeWeight_2l2jMuDown*( nCleanJet > 1 && CleanJet_pt[1] >= 30); + + fakeWeightMuDown = num / fakeWeight; + } + + return fakeWeightMuDown; + } + + + // Calculate the per-event fake rate - StatEleUp + if (kind_ == "StatEleUp"){ + float fakeWeight_2l0jstatElUp = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_35_, fake_rate_muon_20_, "ElUp"); + + float fakeWeight_2l1jstatElUp = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_35_, fake_rate_muon_25_, "ElUp"); + + float fakeWeight_2l2jstatElUp = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_35_, fake_rate_muon_35_, "ElUp"); + + float fakeWeightstatEleUp = 0.; + if (fakeWeight != 0.){ + float num = fakeWeight_2l0jstatElUp*( nCleanJet == 0 || CleanJet_pt[0] < 30) + + fakeWeight_2l1jstatElUp*((nCleanJet == 1 && CleanJet_pt[0] >= 30) || + (nCleanJet > 1 && CleanJet_pt[0] >= 30 && CleanJet_pt[1] < 30)) + + fakeWeight_2l2jstatElUp*( nCleanJet > 1 && CleanJet_pt[1] >= 30); + + fakeWeightstatEleUp = num / fakeWeight; + } + + return fakeWeightstatEleUp; + } + + + // Calculate the per-event fake rate - StatEleDown + if (kind_ == "StatEleDown"){ + float fakeWeight_2l0jstatElDown = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_35_, fake_rate_muon_20_, "ElDown"); + + float fakeWeight_2l1jstatElDown = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_35_, fake_rate_muon_25_, "ElDown"); + + float fakeWeight_2l2jstatElDown = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_35_, fake_rate_muon_35_, "ElDown"); + + float fakeWeightstatEleDown = 0.; + if (fakeWeight != 0.){ + float num = fakeWeight_2l0jstatElDown*( nCleanJet == 0 || CleanJet_pt[0] < 30) + + fakeWeight_2l1jstatElDown*((nCleanJet == 1 && CleanJet_pt[0] >= 30) || + (nCleanJet > 1 && CleanJet_pt[0] >= 30 && CleanJet_pt[1] < 30)) + + fakeWeight_2l2jstatElDown*( nCleanJet > 1 && CleanJet_pt[1] >= 30); + + fakeWeightstatEleDown = num / fakeWeight; + } + + return fakeWeightstatEleDown; + } + + + // Calculate the per-event fake rate - StatMuUp + if (kind_ == "StatMuUp"){ + float fakeWeight_2l0jstatMuUp = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_35_, fake_rate_muon_20_, "MuUp"); + + float fakeWeight_2l1jstatMuUp = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_35_, fake_rate_muon_25_, "MuUp"); + + float fakeWeight_2l2jstatMuUp = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_35_, fake_rate_muon_35_, "MuUp"); + + float fakeWeightstatMuUp = 0.; + if (fakeWeight != 0.){ + float num = fakeWeight_2l0jstatMuUp*( nCleanJet == 0 || CleanJet_pt[0] < 30) + + fakeWeight_2l1jstatMuUp*((nCleanJet == 1 && CleanJet_pt[0] >= 30) || + (nCleanJet > 1 && CleanJet_pt[0] >= 30 && CleanJet_pt[1] < 30)) + + fakeWeight_2l2jstatMuUp*( nCleanJet > 1 && CleanJet_pt[1] >= 30); + + fakeWeightstatMuUp = num / fakeWeight; + } + + return fakeWeightstatMuUp; + } + + + // Calculate the per-event fake rate - StatMuDown + if (kind_ == "StatMuDown"){ + float fakeWeight_2l0jstatMuDown = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_35_, fake_rate_muon_20_, "MuDown"); + + float fakeWeight_2l1jstatMuDown = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_35_, fake_rate_muon_25_, "MuDown"); + + float fakeWeight_2l2jstatMuDown = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_35_, fake_rate_muon_35_, "MuDown"); + + float fakeWeightstatMuDown = 0.; + if (fakeWeight != 0.){ + float num = fakeWeight_2l0jstatMuDown*( nCleanJet == 0 || CleanJet_pt[0] < 30) + + fakeWeight_2l1jstatMuDown*((nCleanJet == 1 && CleanJet_pt[0] >= 30) || + (nCleanJet > 1 && CleanJet_pt[0] >= 30 && CleanJet_pt[1] < 30)) + + fakeWeight_2l2jstatMuDown*( nCleanJet > 1 && CleanJet_pt[1] >= 30); + + fakeWeightstatMuDown = num / fakeWeight; + } + + return fakeWeightstatMuDown; + } + + else + return -1; + } + + else if (nLeptons_ == 3){ + + // Calculate the per-event fake rate + float fakeWeight_3l = GetFR_3l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + Lepton_pt[2], Lepton_eta[2], Lepton_pdgId[2], isTight_[2], + fake_rate_ele_35_, fake_rate_muon_35_, "Nominal"); + + if (kind_ == "nominal") return fakeWeight_3l; + + // Calculate the per-event fake rate - EleUp + if (kind_ == "EleUp"){ + float fakeWeight_3lElUp = GetFR_3l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + Lepton_pt[2], Lepton_eta[2], Lepton_pdgId[2], isTight_[2], + fake_rate_ele_45_, fake_rate_muon_35_, "Nominal"); + + + float fakeWeightEleUp = fakeWeight_3lElUp / fakeWeight_3l; + + return fakeWeightEleUp; + } + + // Calculate the per-event fake rate - Eledown + if (kind_ == "EleDown"){ + float fakeWeight_3lElDown = GetFR_3l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + Lepton_pt[2], Lepton_eta[2], Lepton_pdgId[2], isTight_[2], + fake_rate_ele_25_, fake_rate_muon_35_, "Nominal"); + + + float fakeWeightEleDown = fakeWeight_3lElDown / fakeWeight_3l; + + return fakeWeightEleDown; + } + + // Calculate the per-event fake rate - MuUp + if (kind_ == "MuUp"){ + float fakeWeight_3lMuUp = GetFR_3l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + Lepton_pt[2], Lepton_eta[2], Lepton_pdgId[2], isTight_[2], + fake_rate_ele_35_, fake_rate_muon_45_, "Nominal"); + + + float fakeWeightMuUp = fakeWeight_3lMuUp / fakeWeight_3l; + + return fakeWeightMuUp; + } + + // Calculate the per-event fake rate - MuDown + if (kind_ == "MuDown"){ + float fakeWeight_3lMuDown = GetFR_3l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + Lepton_pt[2], Lepton_eta[2], Lepton_pdgId[2], isTight_[2], + fake_rate_ele_35_, fake_rate_muon_25_, "Nominal"); + + + float fakeWeightMuDown = fakeWeight_3lMuDown / fakeWeight_3l; + + return fakeWeightMuDown; + } + + // Calculate the per-event fake rate - StatEleUp + if (kind_ == "StatEleUp"){ + float fakeWeight_3lstatEleUp = GetFR_3l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + Lepton_pt[2], Lepton_eta[2], Lepton_pdgId[2], isTight_[2], + fake_rate_ele_35_, fake_rate_muon_35_, "ElUp"); + + + float fakeWeightstatEleUp = fakeWeight_3lstatEleUp / fakeWeight_3l; + + return fakeWeightstatEleUp; + } + + // Calculate the per-event fake rate - StatEleDown + if (kind_ == "StatEleDown"){ + float fakeWeight_3lstatEleDown = GetFR_3l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + Lepton_pt[2], Lepton_eta[2], Lepton_pdgId[2], isTight_[2], + fake_rate_ele_35_, fake_rate_muon_35_, "ElDown"); + + + float fakeWeightstatEleDown = fakeWeight_3lstatEleDown / fakeWeight_3l; + + return fakeWeightstatEleDown; + } + + // Calculate the per-event fake rate - StatMuUp + if (kind_ == "StatMuUp"){ + float fakeWeight_3lstatMuUp = GetFR_3l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + Lepton_pt[2], Lepton_eta[2], Lepton_pdgId[2], isTight_[2], + fake_rate_ele_35_, fake_rate_muon_35_, "MuUp"); + + + float fakeWeightstatMuUp = fakeWeight_3lstatMuUp / fakeWeight_3l; + + return fakeWeightstatMuUp; + } + + // Calculate the per-event fake rate - StatMuDown + if (kind_ == "StatMuDown"){ + float fakeWeight_3lstatMuDown = GetFR_3l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + Lepton_pt[2], Lepton_eta[2], Lepton_pdgId[2], isTight_[2], + fake_rate_ele_35_, fake_rate_muon_35_, "MuDown"); + + + float fakeWeightstatMuDown = fakeWeight_3lstatMuDown / fakeWeight_3l; + + return fakeWeightstatMuDown; + } + + else{ + std::cout << "kind_ not known"< GetSF( double pt_in , double eta_in ); + +}; + + +// Read fake and prompt rate histograms +fake_rate_reader::fake_rate_reader( TString year , TString ele_WP, TString muon_WP, float ele_WP_number, float muon_WP_number, TString kind, uint nLeptons, TString electron_tight_charge, TString mkShapesRDF_base ){ + + cout << "Year: " << year << endl; + cout << "Ele WP: " << ele_WP << endl; + cout << "Muon WP: " << muon_WP << endl; + cout << "Ele WP number: " << ele_WP_number << endl; + cout << "Muon WP number: " << muon_WP_number << endl; + cout << "Kind: " << kind << endl; + cout << "nLeptons: " << nLeptons << endl; + cout << "Ele tight charge: " << electron_tight_charge << endl; + + year_ = year; + ele_WP_ = ele_WP; + muon_WP_ = muon_WP; + ele_WP_number_ = ele_WP_number; + muon_WP_number_ = muon_WP_number; + kind_ = kind; + nLeptons_ = nLeptons; + electron_tight_charge_ = electron_tight_charge; // ['std','ss'] + + TString ele_tight_suffix = ""; + if (electron_tight_charge_ == "ss") + ele_tight_suffix = "_SS"; + + // std::string mkShapesRDF_base = std::getenv("CMSSW_BASE"); + // TString mkShapesRDF_base = "/afs/cern.ch/work/b/bcamaian/mkShapesRDF_el7"; + // mkShapesRDF_base = "/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/"; + + // Fake rate input files + TString fake_muon_file_name_10 = mkShapesRDF_base + "/data/fakerate/" + year + "/cut_Tight_HWWW_tthmva_" + muon_WP + "/MuonFR_jet10.root"; + TString fake_muon_file_name_15 = mkShapesRDF_base + "/data/fakerate/" + year + "/cut_Tight_HWWW_tthmva_" + muon_WP + "/MuonFR_jet15.root"; + TString fake_muon_file_name_20 = mkShapesRDF_base + "/data/fakerate/" + year + "/cut_Tight_HWWW_tthmva_" + muon_WP + "/MuonFR_jet20.root"; + TString fake_muon_file_name_25 = mkShapesRDF_base + "/data/fakerate/" + year + "/cut_Tight_HWWW_tthmva_" + muon_WP + "/MuonFR_jet25.root"; + TString fake_muon_file_name_30 = mkShapesRDF_base + "/data/fakerate/" + year + "/cut_Tight_HWWW_tthmva_" + muon_WP + "/MuonFR_jet30.root"; + TString fake_muon_file_name_35 = mkShapesRDF_base + "/data/fakerate/" + year + "/cut_Tight_HWWW_tthmva_" + muon_WP + "/MuonFR_jet35.root"; + TString fake_muon_file_name_45 = mkShapesRDF_base + "/data/fakerate/" + year + "/cut_Tight_HWWW_tthmva_" + muon_WP + "/MuonFR_jet45.root"; + + if (year_ == "2016_HIPM" || year_ == "2016_noHIPM"){ + fake_muon_file_name_10 = mkShapesRDF_base + "/data/fakerate/" + year + "/cut_Tight80x_tthmva_" + muon_WP + "/MuonFR_jet10.root"; + fake_muon_file_name_15 = mkShapesRDF_base + "/data/fakerate/" + year + "/cut_Tight80x_tthmva_" + muon_WP + "/MuonFR_jet15.root"; + fake_muon_file_name_20 = mkShapesRDF_base + "/data/fakerate/" + year + "/cut_Tight80x_tthmva_" + muon_WP + "/MuonFR_jet20.root"; + fake_muon_file_name_25 = mkShapesRDF_base + "/data/fakerate/" + year + "/cut_Tight80x_tthmva_" + muon_WP + "/MuonFR_jet25.root"; + fake_muon_file_name_30 = mkShapesRDF_base + "/data/fakerate/" + year + "/cut_Tight80x_tthmva_" + muon_WP + "/MuonFR_jet30.root"; + fake_muon_file_name_35 = mkShapesRDF_base + "/data/fakerate/" + year + "/cut_Tight80x_tthmva_" + muon_WP + "/MuonFR_jet35.root"; + fake_muon_file_name_45 = mkShapesRDF_base + "/data/fakerate/" + year + "/cut_Tight80x_tthmva_" + muon_WP + "/MuonFR_jet45.root"; + } + + TString fake_ele_file_name_25 = mkShapesRDF_base + "/data/fakerate/" + year + "/mvaFall17V2Iso_WP90" + ele_tight_suffix + "_tthmva_UL_" + ele_WP + "/EleFR_jet25.root"; + TString fake_ele_file_name_35 = mkShapesRDF_base + "/data/fakerate/" + year + "/mvaFall17V2Iso_WP90" + ele_tight_suffix + "_tthmva_UL_" + ele_WP + "/EleFR_jet35.root"; + TString fake_ele_file_name_45 = mkShapesRDF_base + "/data/fakerate/" + year + "/mvaFall17V2Iso_WP90" + ele_tight_suffix + "_tthmva_UL_" + ele_WP + "/EleFR_jet45.root"; + + // Prompt rate input files + TString pr_muon_file_name = mkShapesRDF_base + "/data/fakerate/" + year + "/cut_Tight_HWWW_tthmva_" + muon_WP + "/MuonPR.root"; + if (year_ == "2016_HIPM" || year_ == "2016_noHIPM") + pr_muon_file_name = mkShapesRDF_base + "/data/fakerate/" + year + "/cut_Tight80x_tthmva_" + muon_WP + "/MuonPR.root"; + TString pr_ele_file_name = mkShapesRDF_base + "/data/fakerate/" + year + "/mvaFall17V2Iso_WP90" + ele_tight_suffix + "_tthmva_UL_" + ele_WP + "/ElePR.root"; + + // Get fake and prompt rates + // Muons + TFile* f_muon_10 = new TFile(fake_muon_file_name_10); + fake_rate_muon_10_ = (TH2F*) f_muon_10 -> Get("FR_pT_eta_EWKcorr"); + + TFile* f_muon_15 = new TFile(fake_muon_file_name_15); + fake_rate_muon_15_ = (TH2F*) f_muon_15 -> Get("FR_pT_eta_EWKcorr"); + + TFile* f_muon_20 = new TFile(fake_muon_file_name_20); + fake_rate_muon_20_ = (TH2F*) f_muon_20 -> Get("FR_pT_eta_EWKcorr"); + + TFile* f_muon_25 = new TFile(fake_muon_file_name_25); + fake_rate_muon_25_ = (TH2F*) f_muon_25 -> Get("FR_pT_eta_EWKcorr"); + + TFile* f_muon_30 = new TFile(fake_muon_file_name_30); + fake_rate_muon_30_ = (TH2F*) f_muon_30 -> Get("FR_pT_eta_EWKcorr"); + + TFile* f_muon_35 = new TFile(fake_muon_file_name_35); + fake_rate_muon_35_ = (TH2F*) f_muon_35 -> Get("FR_pT_eta_EWKcorr"); + + TFile* f_muon_45 = new TFile(fake_muon_file_name_45); + fake_rate_muon_45_ = (TH2F*) f_muon_45 -> Get("FR_pT_eta_EWKcorr"); + + TFile* f_muon_PR = new TFile(pr_muon_file_name); + prompt_rate_muon_ = (TH2F*) f_muon_PR -> Get("h_Muon_signal_pt_eta_bin"); + + // Electrons + TFile* f_ele_25 = new TFile(fake_ele_file_name_25); + fake_rate_ele_25_ = (TH2F*) f_ele_25 -> Get("FR_pT_eta_EWKcorr"); + + TFile* f_ele_35 = new TFile(fake_ele_file_name_35); + fake_rate_ele_35_ = (TH2F*) f_ele_35 -> Get("FR_pT_eta_EWKcorr"); + + TFile* f_ele_45 = new TFile(fake_ele_file_name_45); + fake_rate_ele_45_ = (TH2F*) f_ele_45 -> Get("FR_pT_eta_EWKcorr"); + + TFile* f_ele_PR = new TFile(pr_ele_file_name); + prompt_rate_ele_ = (TH2F*) f_ele_PR -> Get("h_Ele_signal_pt_eta_bin"); +} + + +// Get fake rate and its statistical uncertainty +std::tuple +fake_rate_reader::GetRate(TH2F* fake_rate_histo, + double pt, + double eta, + double lepton_pt_max){ + + double aeta = abs(eta); + int nbinsx = fake_rate_histo->GetNbinsX(); + + if (lepton_pt_max <= 0.){ + lepton_pt_max = fake_rate_histo->GetXaxis()->GetBinCenter(nbinsx); + } + + double rate_value = fake_rate_histo->GetBinContent(fake_rate_histo->FindBin(min(pt, lepton_pt_max), aeta)); + double rate_error = fake_rate_histo->GetBinError (fake_rate_histo->FindBin(min(pt, lepton_pt_max), aeta)); + + std::tuple rate_and_error = std::make_tuple(rate_value,rate_error); + + return rate_and_error; + +} + +// Get fake rate for 1-lepton events +// std::tuple +float +fake_rate_reader::GetFR_1l( double pt1 , double eta1, double pdg1, double isTight1, + TH2F* fake_rate_ele_, TH2F* fake_rate_muon_, + TString stat + ){ + double p1 = 1.; // leading lepton prompt rate + double f1 = 0.; // leading lepton fake rate + double pE1 = 0.; // leading lepton prompt rate statistical uncertainty + double fE1 = 0.; // leading lepton fake rate statistical uncertainty + double fake_probability1 = 0.; + + // Case electron + if (abs(pdg1) == 11){ + std::tuple p = GetRate(prompt_rate_ele_, pt1, eta1, -999.); + p1 = std::get<0>(p); + pE1 = std::get<1>(p); + std::tuple f = GetRate(fake_rate_ele_, pt1, eta1, 35.); + f1 = std::get<0>(f); + fE1 = std::get<1>(f); + + if (stat == "ElUp") f1 = f1 + fE1; + else if (stat == "ElDown") f1 = f1 - fE1; + } + // case muon + else if (abs(pdg1) == 13){ + std::tuple p = GetRate(prompt_rate_muon_, pt1, eta1, -999.); + p1 = std::get<0>(p); + pE1 = std::get<1>(p); + std::tuple f = GetRate(fake_rate_muon_, pt1, eta1, 35.); + f1 = std::get<0>(f); + fE1 = std::get<1>(f); + + if (stat == "MuUp") f1 = f1 + fE1; + else if (stat == "MuDown") f1 = f1 - fE1; + } + + // Compute per-lepton probabilities + int nTight = 0; + if (isTight1 == 1){ + ++nTight; + fake_probability1 = f1*(p1 - 1.) / (p1 - f1); + } + else{ + fake_probability1 = f1*p1 / (p1 - f1); + } + + return fake_probability1; +} + +// Get fake rate for 2-leptons events +// std::tuple +float +fake_rate_reader::GetFR_2l( double pt1 , double eta1, double pdg1, double isTight1, + double pt2 , double eta2, double pdg2, double isTight2, + TH2F* fake_rate_ele_, TH2F* fake_rate_muon_, + TString stat + ){ + + double p1 = 1.; // leading lepton prompt rate + double f1 = 0.; // leading lepton fake rate + double pE1 = 0.; // leading lepton prompt rate statistical uncertainty + double fE1 = 0.; // leading lepton fake rate statistical uncertainty + double prompt_probability1 = 1.; + double fake_probability1 = 0.; + + double p2 = 1.; // sub-leading lepton prompt rate + double f2 = 0.; // sub-leading lepton fake rate + double pE2 = 0.; // sub-leading lepton prompt rate statistical uncertainty + double fE2 = 0.; // sub-leading lepton fake rate statistical uncertainty + double prompt_probability2 = 1.; + double fake_probability2 = 0.; + + // Leading lepton + // Case electron + if (abs(pdg1) == 11){ + std::tuple p = GetRate(prompt_rate_ele_, pt1, eta1, -999.); + p1 = std::get<0>(p); + pE1 = std::get<1>(p); + std::tuple f = GetRate(fake_rate_ele_, pt1, eta1, 35.); + f1 = std::get<0>(f); + fE1 = std::get<1>(f); + + if (stat == "ElUp") f1 = f1 + fE1; + else if (stat == "ElDown") f1 = f1 - fE1; + } + // case muon + else if (abs(pdg1) == 13){ + std::tuple p = GetRate(prompt_rate_muon_, pt1, eta1, -999.); + p1 = std::get<0>(p); + pE1 = std::get<1>(p); + std::tuple f = GetRate(fake_rate_muon_, pt1, eta1, 35.); + f1 = std::get<0>(f); + fE1 = std::get<1>(f); + + if (stat == "MuUp") f1 = f1 + fE1; + else if (stat == "MuDown") f1 = f1 - fE1; + } + + // Sub-leading lepton + // case electron + if (abs(pdg2) == 11){ + std::tuple p = GetRate(prompt_rate_ele_, pt2, eta2, -999.); + p2 = std::get<0>(p); + pE2 = std::get<1>(p); + std::tuple f = GetRate(fake_rate_ele_, pt2, eta2, 35.); + f2 = std::get<0>(f); + fE2 = std::get<1>(f); + + if (stat == "ElUp") f2 = f2 + fE2; + else if (stat == "ElDown") f2 = f2 - fE2; + } + // case muon + else if (abs(pdg2) == 13){ + std::tuple p = GetRate(prompt_rate_muon_, pt2, eta2, -999.); + p2 = std::get<0>(p); + pE2 = std::get<1>(p); + std::tuple f = GetRate(fake_rate_muon_, pt2, eta2, 35.); + f2 = std::get<0>(f); + fE2 = std::get<1>(f); + + if (stat == "MuUp") f2 = f2 + fE2; + else if (stat == "MuDown") f2 = f2 - fE2; + } + + // std::cout << "Prompt rates = " << p1 << ", " << p2 << std::endl; + // std::cout << "Fake rates = " << f1 << ", " << f2 << std::endl; + + + // Compute per-lepton probabilities + int nTight = 0; + if (isTight1 == 1){ + ++nTight; + prompt_probability1 = p1*(1. - f1) / (p1 - f1); + fake_probability1 = f1*(1. - p1) / (p1 - f1); + } + else{ + prompt_probability1 = p1*f1 / (p1 - f1); + fake_probability1 = f1*p1 / (p1 - f1); + } + + if (isTight2 == 1){ + ++nTight; + prompt_probability2 = p2*(1. - f2) / (p2 - f2); + fake_probability2 = f2*(1. - p2) / (p2 - f2); + } + else{ + prompt_probability2 = p2*f2 / (p2 - f2); + fake_probability2 = f2*p2 / (p2 - f2); + } + + // Per-event weight + // Leading lepton prompt - sub-leading lepton fake + float PF = prompt_probability1*fake_probability2; + // Leading lepton fake - sub-leading lepton prompt + float FP = fake_probability1*prompt_probability2; + // Both leptons fake + float FF = fake_probability1*fake_probability2; + + if (nTight == 1) + FF *= -1.; + else{ + PF *= -1.; + FP *= -1.; + } + + // std::cout << "nTight = " << nTight << std::endl; + + // std::cout << "prompt probability 1 = " << prompt_probability1 << std::endl; + // std::cout << "prompt probability 2 = " << prompt_probability2 << std::endl; + + // std::cout << "fake probability 1 = " << fake_probability1 << std::endl; + // std::cout << "fake probability 2 = " << fake_probability2 << std::endl; + + // std::cout << "PF = " << PF << std::endl; + // std::cout << "FP = " << FP << std::endl; + // std::cout << "FF = " << FF << std::endl; + + float sf = PF + FP + FF; + + return sf; +} + +// Get fake rate for 3-leptons events +// std::tuple +float +fake_rate_reader::GetFR_3l( double pt1 , double eta1, double pdg1, double isTight1, + double pt2 , double eta2, double pdg2, double isTight2, + double pt3 , double eta3, double pdg3, double isTight3, + TH2F* fake_rate_ele_, TH2F* fake_rate_muon_, + TString stat + ){ + + double p1 = 1.; // leading lepton prompt rate + double f1 = 0.; // leading lepton fake rate + double pE1 = 0.; // leading lepton prompt rate statistical uncertainty + double fE1 = 0.; // leading lepton fake rate statistical uncertainty + double prompt_probability1 = 1.; + double fake_probability1 = 0.; + + double p2 = 1.; // sub-leading lepton prompt rate + double f2 = 0.; // sub-leading lepton fake rate + double pE2 = 0.; // sub-leading lepton prompt rate statistical uncertainty + double fE2 = 0.; // sub-leading lepton fake rate statistical uncertainty + double prompt_probability2 = 1.; + double fake_probability2 = 0.; + + double p3 = 1.; // third lepton prompt rate + double f3 = 0.; // third lepton fake rate + double pE3 = 0.; // third lepton prompt rate statistical uncertainty + double fE3 = 0.; // third lepton fake rate statistical uncertainty + double prompt_probability3 = 1.; + double fake_probability3 = 0.; + + // Leading lepton + // Case electron + if (abs(pdg1) == 11){ + std::tuple p = GetRate(prompt_rate_ele_, pt1, eta1, -999.); + p1 = std::get<0>(p); + pE1 = std::get<1>(p); + std::tuple f = GetRate(fake_rate_ele_, pt1, eta1, 35.); + f1 = std::get<0>(f); + fE1 = std::get<1>(f); + + if (stat == "ElUp") f1 = f1 + fE1; + else if (stat == "ElDown") f1 = f1 - fE1; + } + // case muon + else if (abs(pdg1) == 13){ + std::tuple p = GetRate(prompt_rate_muon_, pt1, eta1, -999.); + p1 = std::get<0>(p); + pE1 = std::get<1>(p); + std::tuple f = GetRate(fake_rate_muon_, pt1, eta1, 35.); + f1 = std::get<0>(f); + fE1 = std::get<1>(f); + + if (stat == "MuUp") f1 = f1 + fE1; + else if (stat == "MuDown") f1 = f1 - fE1; + } + + // Sub-leading lepton + // case electron + if (abs(pdg2) == 11){ + std::tuple p = GetRate(prompt_rate_ele_, pt2, eta2, -999.); + p2 = std::get<0>(p); + pE2 = std::get<1>(p); + std::tuple f = GetRate(fake_rate_ele_, pt2, eta2, 35.); + f2 = std::get<0>(f); + fE2 = std::get<1>(f); + + if (stat == "ElUp") f2 = f2 + fE2; + else if (stat == "ElDown") f2 = f2 - fE2; + } + // case muon + else if (abs(pdg2) == 13){ + std::tuple p = GetRate(prompt_rate_muon_, pt2, eta2, -999.); + p2 = std::get<0>(p); + pE2 = std::get<1>(p); + std::tuple f = GetRate(fake_rate_muon_, pt2, eta2, 35.); + f2 = std::get<0>(f); + fE2 = std::get<1>(f); + + if (stat == "MuUp") f2 = f2 + fE2; + else if (stat == "MuDown") f2 = f2 - fE2; + } + + // Third lepton + // case electron + if (abs(pdg3) == 11){ + std::tuple p = GetRate(prompt_rate_ele_, pt3, eta3, -999.); + p3 = std::get<0>(p); + pE3 = std::get<1>(p); + std::tuple f = GetRate(fake_rate_ele_, pt3, eta3, 35.); + f3 = std::get<0>(f); + fE3 = std::get<1>(f); + + if (stat == "ElUp") f3 = f3 + fE3; + else if (stat == "ElDown") f3 = f3 - fE3; + } + // case muon + else if (abs(pdg3) == 13){ + std::tuple p = GetRate(prompt_rate_muon_, pt3, eta3, -999.); + p3 = std::get<0>(p); + pE3 = std::get<1>(p); + std::tuple f = GetRate(fake_rate_muon_, pt3, eta3, 35.); + f3 = std::get<0>(f); + fE3 = std::get<1>(f); + + if (stat == "MuUp") f3 = f3 + fE3; + else if (stat == "MuDown") f3 = f3 - fE3; + } + + // Compute per-lepton probabilities + int nTight = 0; + if (isTight1 == 1){ + ++nTight; + prompt_probability1 = p1*(1. - f1) / (p1 - f1); + fake_probability1 = f1*(1. - p1) / (p1 - f1); + } + else{ + prompt_probability1 = p1*f1 / (p1 - f1); + fake_probability1 = f1*p1 / (p1 - f1); + } + + if (isTight2 == 1){ + ++nTight; + prompt_probability2 = p2*(1. - f2) / (p2 - f2); + fake_probability2 = f2*(1. - p2) / (p2 - f2); + } + else{ + prompt_probability2 = p2*f2 / (p2 - f2); + fake_probability2 = f2*p2 / (p2 - f2); + } + + if (isTight3 == 1){ + ++nTight; + prompt_probability3 = p3*(1. - f3) / (p3 - f3); + fake_probability3 = f3*(1. - p3) / (p3 - f3); + } + else{ + prompt_probability3 = p3*f3 / (p3 - f3); + fake_probability3 = f3*p3 / (p3 - f3); + } + + // Per-event weight + // Letters indicate wether the lepton is prompt (P) or fake (F) + + float PPF = prompt_probability1*prompt_probability2*fake_probability3; + float PFP = prompt_probability1*fake_probability2*prompt_probability3; + float FPP = fake_probability1*prompt_probability2*prompt_probability3; + + float PFF = prompt_probability1*fake_probability2*fake_probability3; + float FPF = fake_probability1*prompt_probability2*fake_probability3; + float FFP = fake_probability1*fake_probability2*prompt_probability3; + + float FFF = fake_probability1*fake_probability2*fake_probability3; + + if (nTight == 1 || nTight == 3){ + PPF *= -1.; + PFP *= -1.; + FPP *= -1.; + FFF *= -1.; + } + else{ + PFF *= -1.; + FPF *= -1.; + FFP *= -1.; + } + + float sf = PPF+PFP+FPP + PFF+FPF+FFP + FFF; + + return sf; + +} + +#endif From cf3a183c89e4c96573c7b7a5aca637947d293e70 Mon Sep 17 00:00:00 2001 From: ntrevisa Date: Thu, 14 Aug 2025 13:53:09 +0200 Subject: [PATCH 12/44] 3l control region 2018 --- ControlRegions/3l/Full2018_v9/README.md | 117 +++ ControlRegions/3l/Full2018_v9/aliases.py | 352 +++++++ .../3l/Full2018_v9/configuration.py | 105 ++ ControlRegions/3l/Full2018_v9/cuts.py | 45 + ControlRegions/3l/Full2018_v9/nuisances.py | 968 ++++++++++++++++++ ControlRegions/3l/Full2018_v9/plot.py | 306 ++++++ ControlRegions/3l/Full2018_v9/repeat.sh | 38 + ControlRegions/3l/Full2018_v9/samples.py | 395 +++++++ ControlRegions/3l/Full2018_v9/structure.py | 127 +++ ControlRegions/3l/Full2018_v9/variables.py | 285 ++++++ 10 files changed, 2738 insertions(+) create mode 100644 ControlRegions/3l/Full2018_v9/README.md create mode 100644 ControlRegions/3l/Full2018_v9/aliases.py create mode 100644 ControlRegions/3l/Full2018_v9/configuration.py create mode 100644 ControlRegions/3l/Full2018_v9/cuts.py create mode 100644 ControlRegions/3l/Full2018_v9/nuisances.py create mode 100644 ControlRegions/3l/Full2018_v9/plot.py create mode 100644 ControlRegions/3l/Full2018_v9/repeat.sh create mode 100644 ControlRegions/3l/Full2018_v9/samples.py create mode 100644 ControlRegions/3l/Full2018_v9/structure.py create mode 100644 ControlRegions/3l/Full2018_v9/variables.py diff --git a/ControlRegions/3l/Full2018_v9/README.md b/ControlRegions/3l/Full2018_v9/README.md new file mode 100644 index 00000000..830ccadd --- /dev/null +++ b/ControlRegions/3l/Full2018_v9/README.md @@ -0,0 +1,117 @@ +# Three leptons control region + +This configuration plots control distributions for the three-leptons phase space + +The instructions to run the analysis follow. + +### Load the mkShapesRDF environment + +Here, we assume `PlotsConfigurationsRun3` was installed in the same directory as `mkShapesRDF`. E.g., let's assume we have a `Run3` directory where we installed both `mkShapesRDF` and `PlotsConfigurationsRun3`. + +Then, we can source the `mkShapesRDF` environment using these commands: + + cd ../../../mkShapesRDF/ + + source start.sh + + cd - + +### Produce distributions using mkShapesMulti.py in batch mode + +Compile the configuration. Do it after every change to any file in this directory: + + mkShapesRDF -c 1 + +Produce histograms using batch: + + mkShapesRDF -c 1 -o 0 -f . -b 1 + +Check jobs status: + + mkShapesRDF -o 1 -f . + +Resubmit failed jobs: + + mkShapesRDF -o 1 -f . -r 1 + +Merge rootfiles: + + mkShapesRDF -o 2 -f . + +Plot distributions: + + mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png + +### Perform goodness of fit test + +Create datacards: + + mkDatacards + +Produce workspaces: + + mkdir -p GoF + + cd GoF/ + + VARIABLE=mjj + FINAL_STATE=mm_2j_SS_CR_plus + OUT_NAME=_${FINAL_STATE}_${VARIABLE} + + combineTool.py -M T2W -m 125 \ + -o datacard.root \ + -i ../datacards/hww2l2v_13TeV_WH_SS_${FINAL_STATE}_pt2ge20/${VARIABLE}/datacard.txt \ + --channel-masks \ + -P HiggsAnalysis.CombinedLimit.PhysicsModel:multiSignalModel \ + --PO 'map=.*/WH_h.*_plus:r_WH[1,-10.0,10.0]' \ + --PO 'map=.*/WH_h.*_minus:r_WH[1,-10.0,10.0]' + +Perform fit on real data: + + combineTool.py -M GoodnessOfFit ../datacards/hww2l2v_13TeV_WH_SS_${FINAL_STATE}_pt2ge20/${VARIABLE}/datacard.root \ + --algo=saturated \ + --setParameters r_WH=1 \ + --setParameterRanges r_WH=-5,5 \ + --redefineSignalPOIs r_WH \ + -n ${OUT_NAME} + +Produce toys based on the predictions: + + combineTool.py -M GoodnessOfFit ../datacards/hww2l2v_13TeV_WH_SS_${FINAL_STATE}_pt2ge20/${VARIABLE}/datacard.root \ + --algo=saturated \ + -t 1 \ + -s 0:10:1 \ + --dry-run \ + --job-mode=condor \ + --setParameters r_WH=1 \ + --setParameterRanges r_WH=-5,5 \ + --redefineSignalPOIs r_WH \ + -n ${OUT_NAME} + +Modify the sh file in order to submit 10 jobs running the 100 toys + + sed -i 's/-t 1/-t 10/g' condor_combine_task.sh + +If you run on the KIT machines, remember to adapt the submission file to the HTCondor requirements, by adding these lines to the top of `condor_combine_task.sub`: + + text_to_add=$'universe = container\ncontainer_image = /cvmfs/unpacked.cern.ch/registry.hub.docker.com/cverstege/alma9-gridjob:latest' + + printf "%s\n" "$text_to_add" | cat - condor_combine_task.sub > temp && mv temp condor_combine_task.sub + +Submit the jobs to condor + + condor_submit condor_combine_task.sub + +Once all jobs are done, merge the output and plot the results: + + hadd -f higgsCombine_${OUT_NAME}.GoodnessOfFit.mH120.toys.root higgsCombine${OUT_NAME}.GoodnessOfFit.mH120.*.root + + combineTool.py -M CollectGoodnessOfFit --input higgsCombine${OUT_NAME}.GoodnessOfFit.mH120.root higgsCombine_${OUT_NAME}.GoodnessOfFit.mH120.toys.root -m 125 -o GoF_${OUT_NAME}.json + + plotGof.py GoF_${OUT_NAME}.json --statistic saturated --mass 120.0 -o GoF_${OUT_NAME} --title-right=${OUT_NAME} --range 0 200 + +Clean the mess: + + rm combine* + rm condor* + rm higgsCombine* diff --git a/ControlRegions/3l/Full2018_v9/aliases.py b/ControlRegions/3l/Full2018_v9/aliases.py new file mode 100644 index 00000000..187d3854 --- /dev/null +++ b/ControlRegions/3l/Full2018_v9/aliases.py @@ -0,0 +1,352 @@ +import os +import copy +import inspect + +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/ControlRegions/3l/Full2018_v9/ + +configurations = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file +configurations = os.path.dirname(configurations) # Full2018_v9 +configurations = os.path.dirname(configurations) # 3l +configurations = os.path.dirname(configurations) # ControlRegions +configurations = os.path.dirname(configurations) # PlotsConfigurationsRun3 + +aliases = {} +aliases = OrderedDict() + +mc = [skey for skey in samples if skey not in ('Fake', 'DATA', 'Fake_from_ntuple')] + + +# LepCut2l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW_tthmva_80 +eleWP = 'mvaFall17V2Iso_WP90' +muWP = 'cut_Tight_HWWW' + +aliases['LepWPCut'] = { + 'expr': 'LepCut3l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW*\ + ( ((abs(Lepton_pdgId[0])==13 && Muon_mvaTTH[Lepton_muonIdx[0]]>0.82) || (abs(Lepton_pdgId[0])==11 && Lepton_mvaTTH_UL[0]>0.90)) \ + && ((abs(Lepton_pdgId[1])==13 && Muon_mvaTTH[Lepton_muonIdx[1]]>0.82) || (abs(Lepton_pdgId[1])==11 && Lepton_mvaTTH_UL[1]>0.90)) \ + && ((abs(Lepton_pdgId[2])==13 && Muon_mvaTTH[Lepton_muonIdx[2]]>0.82) || (abs(Lepton_pdgId[2])==11 && Lepton_mvaTTH_UL[2]>0.90)) )', + 'samples': mc + ['DATA'] +} + +# Lepton SF (not considering the ttHMVA discriminant) +aliases['LepWPSF'] = { + 'expr': 'LepSF3l__ele_'+eleWP+'__mu_'+muWP, + 'samples': mc +} + + +# ttHMVA SFs and uncertainties +aliases['LepWPttHMVASF'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/ttHMVASF_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('ttHMVASF ttH = ttHMVASF(\"2018\", 3, \"all\", \"nominal\",\"{configurations}/WH_chargeAsymmetry/UL/data/\");')"], + 'expr' : 'ttH(Lepton_pt, Lepton_eta, Lepton_pdgId)', + 'samples' : mc +} + +aliases['LepWPttHMVASFEleUp'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/ttHMVASF_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('ttHMVASF ttH_EleUp = ttHMVASF(\"2018\", 3, \"all\", \"eleUp\" ,\"{configurations}/WH_chargeAsymmetry/UL/data/\");')"], + 'expr' : 'ttH_EleUp(Lepton_pt, Lepton_eta, Lepton_pdgId)', + 'samples' : mc +} +aliases['LepWPttHMVASFEleDown'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/ttHMVASF_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('ttHMVASF ttH_EleDown = ttHMVASF(\"2018\", 3, \"all\", \"eleDown\" ,\"{configurations}/WH_chargeAsymmetry/UL/data/\");')"], + 'expr' : 'ttH_EleDown(Lepton_pt, Lepton_eta, Lepton_pdgId)', + 'samples' : mc +} + +aliases['LepWPttHMVASFMuUp'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/ttHMVASF_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('ttHMVASF ttH_MuUp = ttHMVASF(\"2018\", 3, \"all\", \"muUp\" ,\"{configurations}/WH_chargeAsymmetry/UL/data/\");')"], + 'expr' : 'ttH_MuUp(Lepton_pt, Lepton_eta, Lepton_pdgId)', + 'samples' : mc +} +aliases['LepWPttHMVASFMuDown'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/ttHMVASF_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('ttHMVASF ttH_MuDown = ttHMVASF(\"2018\", 3, \"all\", \"muDown\" ,\"{configurations}/WH_chargeAsymmetry/UL/data/\");')"], + 'expr' : 'ttH_MuDown(Lepton_pt, Lepton_eta, Lepton_pdgId)', + 'samples' : mc +} + + +# Conept +aliases['Lepton_conept'] = { + 'expr': 'LeptonConePt(Lepton_pt, Lepton_pdgId, Lepton_electronIdx, Lepton_muonIdx, Electron_jetRelIso, Muon_jetRelIso)', + 'linesToAdd': [f'#include "{configurations}/utils/macros/LeptonConePt_class.cc"'], + 'samples': mc + ['Fake', 'DATA', 'DATA_unprescaled'] +} + +# Fake leptons transfer factor +aliases['fakeW'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"nominal\", 3, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} + +# And variations - already divided by central values in formulas ! +aliases['fakeWEleUp'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleUp = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"EleUp\", 3, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_EleUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} +aliases['fakeWEleDown'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleDown = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"EleDown\", 3, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_EleDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} + +aliases['fakeWMuUp'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuUp = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"MuUp\", 3, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_MuUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} +aliases['fakeWMuDown'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuDown = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"MuDown\", 3, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_MuDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} + +aliases['fakeWStatEleUp'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleUp = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"StatEleUp\", 3, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_StatEleUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} +aliases['fakeWStatEleDown'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleDown = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"StatEleDown\", 3, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_StatEleDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} + +aliases['fakeWStatMuUp'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuUp = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"StatMuUp\", 3, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_StatMuUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} +aliases['fakeWStatMuDown'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuDown = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"StatMuDown\", 3, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_StatMuDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} + +# No jet with pt > 30 GeV +aliases['zeroJet'] = { + 'expr': 'Alt(CleanJet_pt, 0, 0) < 30.' +} + +aliases['oneJet'] = { + 'expr': 'Alt(CleanJet_pt, 0, 0) > 30. && Alt(CleanJet_pt, 1, 0) < 30.' +} + +aliases['multiJet'] = { + 'expr': 'Alt(CleanJet_pt, 1, 0) > 30.' +} + +#################################################################################### +# b tagging WPs: https://twiki.cern.ch/twiki/bin/view/CMS/BtagRecommendation106XUL18 +#################################################################################### + +# DeepB = DeepCSV +bWP_loose_deepB = '0.1208' +bWP_medium_deepB = '0.4168' +bWP_tight_deepB = '0.7665' + +# DeepFlavB = DeepJet +bWP_loose_deepFlavB = '0.0490' +bWP_medium_deepFlavB = '0.2783' +bWP_tight_deepFlavB = '0.7100' + +# Actual algo and WP definition. BE CONSISTENT!! +bAlgo = 'DeepB' # ['DeepB', 'DeepFlavB' ] +bWP = bWP_medium_deepB # [bWP_loose_deepB, bWP_loose_deepFlavB] +bSF = 'deepcsv' # ['deepcsv', 'deepjet' ] + +# b veto +aliases['bVeto'] = { + 'expr': 'Sum(CleanJet_pt > 20. && abs(CleanJet_eta) < 2.5 && Take(Jet_btag{}, CleanJet_jetIdx) > {}) == 0'.format(bAlgo, bWP) +} + +aliases['bVetoSF'] = { + 'expr': 'TMath::Exp(Sum(LogVec((CleanJet_pt>20 && abs(CleanJet_eta)<2.5)*Take(Jet_btagSF_{}_shape, CleanJet_jetIdx)+1*(CleanJet_pt<20 || abs(CleanJet_eta)>2.5))))'.format(bSF), + 'samples': mc +} + +# At least one b-tagged jet +aliases['bReq'] = { + 'expr': 'Sum(CleanJet_pt > 30. && abs(CleanJet_eta) < 2.5 && Take(Jet_btag{}, CleanJet_jetIdx) > {}) >= 1'.format(bAlgo, bWP) +} + +aliases['bReqSF'] = { + 'expr': 'TMath::Exp(Sum(LogVec((CleanJet_pt>30 && abs(CleanJet_eta)<2.5)*Take(Jet_btagSF_{}_shape, CleanJet_jetIdx)+1*(CleanJet_pt<30 || abs(CleanJet_eta)>2.5))))'.format(bSF), + 'samples': mc +} + +# Top control region +aliases['topcr'] = { + 'expr': 'mtw2>30 && mll>50 && ((zeroJet && !bVeto) || bReq)' +} + +# WW control region +aliases['wwcr'] = { + 'expr': 'mth>60 && mtw2>30 && mll>100 && bVeto' +} + +# Overall b tag SF +aliases['btagSF'] = { + 'expr': '(bVeto || (topcr && zeroJet))*bVetoSF + (topcr && !zeroJet)*bReqSF', + 'samples': mc +} + +for shift in ['jesAbsolute', 'jesAbsolute_2018', 'jesBBEC1', 'jesBBEC1_2018', 'jesEC2', + 'jesEC2_2018', 'jesFlavorQCD', 'jesHF', 'jesHF_2018', 'jesRelativeBal', + 'jesRelativeSample_2018']: + for var in ['up','down']: + aliases[f'Jet_btagSF_{bSF}_shape_{shift.replace("jes","JES")}{var[:2]}'] = { + 'expr' : f'Jet_btagSF_{bSF}_shape_{var}_{shift}', + 'samples' : mc + } + +for shift in ['jesAbsolute', 'jesAbsolute_2018', 'jesBBEC1', 'jesBBEC1_2018', 'jesEC2', + 'jesEC2_2018', 'jesFlavorQCD', 'jesHF', 'jesHF_2018', 'jesRelativeBal', + 'jesRelativeSample_2018', 'lf', 'hf', 'lfstats1', 'lfstats2', + 'hfstats1', 'hfstats2', 'cferr1', 'cferr2']: + + for targ in ['bVeto', 'bReq']: + alias = aliases['%sSF%sup' % (targ, shift)] = copy.deepcopy(aliases['%sSF' % targ]) + alias['expr'] = alias['expr'].replace('btagSF_{}_shape'.format(bSF), 'btagSF_{}_shape_up_{}'.format(bSF, shift)) + + alias = aliases['%sSF%sdown' % (targ, shift)] = copy.deepcopy(aliases['%sSF' % targ]) + alias['expr'] = alias['expr'].replace('btagSF_{}_shape'.format(bSF), 'btagSF_{}_shape_down_{}'.format(bSF, shift)) + + aliases['btagSF%sup' % shift] = { + 'expr': aliases['btagSF']['expr'].replace('SF', 'SF' + shift + 'up'), + 'samples': mc + } + + aliases['btagSF%sdown' % shift] = { + 'expr': aliases['btagSF']['expr'].replace('SF', 'SF' + shift + 'down'), + 'samples': mc + } + +#################################################################################### +# End of b tagging pippone +#################################################################################### + +# Need to redefine PUID scale factors, so that they are double and not vectors +aliases['Jet_PUIDSF'] = { + 'expr' : 'TMath::Exp(Sum((Jet_jetId>=2)*LogVec(Jet_PUIDSF_loose)))', + 'samples': mc +} + +aliases['Jet_PUIDSF_up'] = { + 'expr' : 'TMath::Exp(Sum((Jet_jetId>=2)*LogVec(Jet_PUIDSF_loose_up)))', + 'samples': mc +} + +aliases['Jet_PUIDSF_down'] = { + 'expr' : 'TMath::Exp(Sum((Jet_jetId>=2)*LogVec(Jet_PUIDSF_loose_down)))', + 'samples': mc +} + + +aliases['gstarLow'] = { + 'expr': 'Gen_ZGstar_mass > 0 && Gen_ZGstar_mass < 4', + 'samples': 'VgS' +} + +aliases['gstarHigh'] = { + 'expr': 'Gen_ZGstar_mass < 0 || Gen_ZGstar_mass > 4', + 'samples': 'WZ' +} + +# gen-matching to prompt only (GenLepMatch3l matches to *any* gen lepton) +aliases['PromptGenLepMatch3l'] = { + 'expr': 'Alt(Lepton_promptgenmatched, 0, 0) * Alt(Lepton_promptgenmatched, 1, 0) * Alt(Lepton_promptgenmatched, 2, 0)', + 'samples': mc +} + +# # PostProcessing did not create (anti)topGenPt for ST samples with _ext1 +# lastcopy = (1 << 13) + +aliases['Top_pTrw'] = { + 'expr': '(topGenPt * antitopGenPt > 0.) * (TMath::Sqrt(TMath::Exp(0.0615 - 0.0005 * topGenPt) * TMath::Exp(0.0615 - 0.0005 * antitopGenPt))) + (topGenPt * antitopGenPt <= 0.)', + 'samples': ['top'] +} + +# data/MC scale factors +aliases['SFweight'] = { + 'expr': ' * '.join(['SFweight2l', 'LepWPCut', 'LepWPSF','Jet_PUIDSF', 'btagSF', 'LepWPttHMVASF']), + # 'expr': ' * '.join(['SFweight2l', 'LepWPCut', 'LepWPSF','Jet_PUIDSF', 'btagSF']), + 'samples': mc, +} + +# variations +aliases['SFweightEleUp'] = { + 'expr': 'LepSF2l__ele_'+eleWP+'__Up', + 'samples': mc +} +aliases['SFweightEleDown'] = { + 'expr': 'LepSF2l__ele_'+eleWP+'__Do', + 'samples': mc +} + +aliases['SFweightMuUp'] = { + 'expr': 'LepSF2l__mu_'+muWP+'__Up', + 'samples': mc +} +aliases['SFweightMuDown'] = { + 'expr': 'LepSF2l__mu_'+muWP+'__Do', + 'samples': mc +} + +# TriggerSFWeight_2l:TriggerSFWeight_2l_u:TriggerSFWeight_2l_d +aliases['SFtriggUp'] = { + 'expr': 'TriggerSFWeight_2l_u/TriggerSFWeight_2l', + 'samples': mc +} +aliases['SFtriggDown'] = { + 'expr': 'TriggerSFWeight_2l_d/TriggerSFWeight_2l', + 'samples': mc +} + +# Veto events in the problematic region: +# electrons or jets in: +# (-1.57 < phi < -0.87) , (-2.5 < eta < -1.3) +aliases['hole_veto'] = { + 'expr': '( ( (Lepton_eta[0] < -1.3 && Lepton_eta[0] > -2.5 ) && (Lepton_phi[0] > -1.57 && Lepton_phi[0] < -0.87) && (abs(Lepton_pdgId[0])==11) ) \ + || ( (Lepton_eta[1] < -1.3 && Lepton_eta[1] > -2.5 ) && (Lepton_phi[1] > -1.57 && Lepton_phi[1] < -0.87) && (abs(Lepton_pdgId[1])==11) ) \ + || ( (Alt(CleanJet_eta, 0, 99) < -1.3 && (Alt(CleanJet_eta, 0, -99) > -2.5)) && (Alt(CleanJet_phi, 0, -99) > -1.57 && Alt(CleanJet_phi, 0, 99) < -0.87) ) \ + || ( (Alt(CleanJet_eta, 1, 99) < -1.3 && (Alt(CleanJet_eta, 1, -99) > -2.5)) && (Alt(CleanJet_phi, 1, -99) > -1.57 && Alt(CleanJet_phi, 1, 99) < -0.87) ) \ + ) ', +} + +# Evaluate BDT discriminant +aliases['BDT_WHSS_TopSemileptonic_v9'] = { + 'linesToAdd' : ['#include "%s/ControlRegions/SS/macros/BDT_WHSS_TopSemileptonic_v9_class.cc"' % configurations], + 'linesToProcess' : ["ROOT.gInterpreter.Declare('BDT_WHSS_TopSemileptonic_v9 BDT_WHSS = BDT_WHSS_TopSemileptonic_v9(\"BDTG_6\",\"{0}/ControlRegions/SS/data/BDT/2018/WHSS/weights/TMVAClassification_BDTG_6.weights.xml\");')".format(configurations)], + 'expr' : 'BDT_WHSS(mll,mjj,mtw1,mtw2,ptll,mlljj20_whss,PuppiMET_pt,dphill,dphijj,dphillmet,dphilmet2,dphijet1met,CleanJet_pt,Jet_btagDeepB,CleanJet_jetIdx)', + 'samples' : mc + ['DATA','Fake'], +} + +aliases['BDT_WH3l_OSSF_new_v9'] = { + 'linesToAdd' : ['#include "%s/ControlRegions/SS/macros/BDT_WH3l_OSSF_v9_class.cc"' % configurations], + 'linesToProcess' : ["ROOT.gInterpreter.Declare('BDT_WH3l_OSSF_v9 BDT_WH3l_OSSF = BDT_WH3l_OSSF_v9(\"BDTG4C3\",\"{0}/ControlRegions/SS/data/BDT/2018/WH3l/OSSF/weights/TMVAClassification_BDTG4C3.weights.xml\");')".format(configurations)], + 'expr' : 'BDT_WH3l_OSSF(WH3l_dphilllmet,WH3l_mOSll,WH3l_ptOSll,WH3l_drOSll,WH3l_ZVeto,WH3l_mtlmet,WH3l_dphilmet,WH3l_ptWWW,PuppiMET_pt,Lepton_pt)', + 'samples' : mc + ['DATA','Fake'], +} + +aliases['BDT_WH3l_SSSF_new_v9'] = { + 'linesToAdd' : ['#include "%s/ControlRegions/SS/macros/BDT_WH3l_SSSF_v9_class.cc"' % configurations], + 'linesToProcess' : ["ROOT.gInterpreter.Declare('BDT_WH3l_SSSF_v9 BDT_WH3l_SSSF = BDT_WH3l_SSSF_v9(\"BDTG4C3\",\"{0}/ControlRegions/SS/data/BDT/2018/WH3l/SSSF/weights/TMVAClassification_BDTG4SK01_05shrinkage.weights.xml\");')".format(configurations)], + 'expr' : 'BDT_WH3l_SSSF(WH3l_dphilllmet,WH3l_mOSll,WH3l_ptOSll,WH3l_drOSll,WH3l_dphilmet,WH3l_ptWWW,PuppiMET_pt,Lepton_pt)', + 'samples' : mc + ['DATA','Fake'], +} diff --git a/ControlRegions/3l/Full2018_v9/configuration.py b/ControlRegions/3l/Full2018_v9/configuration.py new file mode 100644 index 00000000..3cb2a2de --- /dev/null +++ b/ControlRegions/3l/Full2018_v9/configuration.py @@ -0,0 +1,105 @@ +# Configuration file for charge asymmetry WHSS analysis using the UL 2018 dataset + +import sys,inspect + +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' + +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/ControlRegions/SS/Full2018_v9/ + +configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file +configurations_nuisance = os.path.dirname(configurations_nuisance) # Full2018_v9 +configurations_nuisance = os.path.dirname(configurations_nuisance) # SS +configurations_nuisance = os.path.dirname(configurations_nuisance) # ControlRegions + +# Tag used to identify the configuration folder version +tag = '3l_2018_v9' + +# File to use as runner script, default uses mkShapesRDF.shapeAnalysis.runner, otherwise specify path to script +runnerFile = "default" + +# Output file name +outputFile = "mkShapes__{}.root".format(tag) + +# Path to ouput folder +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +if site == 'kit': + outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" + +# Path to batch folder (used for condor submission) +batchFolder = "condor" + +# Path to configuration folder (will contain all the compiled configuration files) +configsFolder = "configs" + +# Luminosity to normalize to (in 1/fb) +# https://github.com/latinos/LatinoAnalysis/blob/UL_production/NanoGardener/python/data/TrigMaker_cfg.py#L868 (874) +# 59.832475339 +lumi = 59.83 + +# File with dict of aliases to define +aliasesFile = "aliases.py" + +# File with dict of variables +variablesFile = "variables.py" + +# File with dict of cuts +cutsFile = "cuts.py" + +# File with dict of samples +samplesFile = "samples.py" + +# File with dict of samples for plotting +plotFile = 'plot.py' + +# File with dict of structure (used to define processes in combine) +structureFile = "structure.py" + +# Nuisances file for mkDatacards and for mkShape +nuisancesFile = "nuisances.py" + +# Path to folder where to save plots +plotPath = 'plots_' + tag + +# This lines are executed right before the runner on the condor node +mountEOS = [] + +# List of imports to import when compiling the whole configuration folder, it should not contain imports used by configuration.py +imports = ["os", "glob", ("collections", "OrderedDict"), "ROOT"] + +# List of files to compile +filesToExec = [ + samplesFile, + aliasesFile, + variablesFile, + cutsFile, + plotFile, + nuisancesFile, + structureFile, +] + +# List of variables to keep in the compiled configuration folder +varsToKeep = [ + "batchVars", + "outputFolder", + "batchFolder", + "configsFolder", + "outputFile", + "runnerFile", + "tag", + "samples", + "aliases", + "variables", + ("cuts", {"cuts": "cuts", "preselections": "preselections"}), + ("plot", {"plot": "plot", "groupPlot": "groupPlot", "legend": "legend"}), + "nuisances", + "structure", + "lumi", +] + +# List of variables to keep in the batch submission script (script.py) +batchVars = varsToKeep[varsToKeep.index("samples") :] + +varsToKeep += ['plotPath'] diff --git a/ControlRegions/3l/Full2018_v9/cuts.py b/ControlRegions/3l/Full2018_v9/cuts.py new file mode 100644 index 00000000..cbb188e5 --- /dev/null +++ b/ControlRegions/3l/Full2018_v9/cuts.py @@ -0,0 +1,45 @@ +# cuts + +cuts = {} + +# MinIf$( WH3l_mOSll[], WH3l_mOSll[Iteration$] > 0) > 12 +# Alt(WH3l_mOSll,0,9999) > 12 && Alt(WH3l_mOSll,1,9999) > 12 && Alt(WH3l_mOSll,2,9999) > 12 \ + +preselections = '(nLepton>=3 && Alt(Lepton_pt,3,0)<10) \ + && Alt(Lepton_pt,0,0)>25 \ + && Alt(Lepton_pt,1,0)>10 \ + && (abs(Lepton_pdgId[1])==13 || Lepton_pt[1]>13) \ + && (WH3l_mOSll[0] < 0 || WH3l_mOSll[0] > 12) \ + && (WH3l_mOSll[1] < 0 || WH3l_mOSll[1] > 12) \ + && (WH3l_mOSll[2] < 0 || WH3l_mOSll[2] > 12) \ + && bVeto \ + && !hole_veto \ + ' + +## Signal region + +# SSSF +cuts['wh3l_13TeV_sssf'] = { + 'expr' : 'WH3l_flagOSSF == 0 && Alt(CleanJet_pt, 0, 0) < 30 && abs(WH3l_chlll) == 1', + 'categories' : { + 'plus_pt2ge20' : 'Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]>0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15', + 'minus_pt2ge20' : 'Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]<0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15', + # 'plus_pt2lt20' : 'Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]>0 && Lepton_pt[1]<20', + # 'minus_pt2lt20' : 'Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]<0 && Lepton_pt[1]<20', + } +} + +# OSSF +cuts['wh3l_13TeV_ossf'] = { + 'expr' : 'WH3l_flagOSSF == 1 && WH3l_ZVeto > 20 && PuppiMET_pt > 40 && Alt(CleanJet_pt,0,0) < 30 && abs(WH3l_chlll) == 1', + 'categories' : { + 'plus_pt2ge20' : 'Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]>0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15', + 'minus_pt2ge20' : 'Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]<0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15', + # 'plus_pt2lt20' : 'Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]>0 && Lepton_pt[1]<20', + # 'minus_pt2lt20' : 'Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]<0 && Lepton_pt[1]<20', + } +} + +# 11 = e +# 13 = mu +# 15 = tau diff --git a/ControlRegions/3l/Full2018_v9/nuisances.py b/ControlRegions/3l/Full2018_v9/nuisances.py new file mode 100644 index 00000000..7c1988fb --- /dev/null +++ b/ControlRegions/3l/Full2018_v9/nuisances.py @@ -0,0 +1,968 @@ +import sys + +nuisances = {} + +mcProduction = 'Summer20UL18_106x_nAODv9_Full2018v9' +dataReco = 'Run2018_UL2018_nAODv9_Full2018v9' +mcSteps = 'MCl1loose2018v9__MCCorr2018v9NoJERInHorn__l2tightOR2018v9' +fakeSteps = 'DATAl1loose2018v9__l2loose__fakeW' +dataSteps = 'DATAl1loose2018v9__l2loose__l2tightOR2018v9' + +treeBaseDir = '/eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano' +limitFiles = -1 + +mc = [skey for skey in samples if skey not in ('Fake', 'DATA','ChargeFlip')] + +redirector = "" + +useXROOTD = False + +def makeMCDirectory(var=''): + if var== '': + print(os.path.join(treeBaseDir, mcProduction, mcSteps)) + return os.path.join(treeBaseDir, mcProduction, mcSteps) + else: + print(os.path.join(treeBaseDir, mcProduction, mcSteps + '__' + var)) + return os.path.join(treeBaseDir, mcProduction, mcSteps + '__' + var) + +mcDirectory = makeMCDirectory() +fakeDirectory = os.path.join(treeBaseDir, dataReco, fakeSteps) +dataDirectory = os.path.join(treeBaseDir, dataReco, dataSteps) + +################################ EXPERIMENTAL UNCERTAINTIES ################################# + +#### Luminosity + +# https://twiki.cern.ch/twiki/bin/view/CMS/LumiRecommendationsRun2#LumiComb +# Uncorrelated 2016 1.0 +# Uncorrelated 2017 2.0 +# Uncorrelated 2018 1.5 +# Correlated 2016, 2017, 2018 0.6, 0.9, 2.0 +# Correlated 2017, 2018 0.6, 0.2 + +nuisances['lumi_Uncorrelated'] = { + 'name' : 'lumi_13TeV_2018', + 'type' : 'lnN', + 'samples' : dict((skey, '1.015') for skey in mc if skey not in ['WZ']) +} + +nuisances['lumi_Correlated_Run2'] = { + 'name' : 'lumi_13TeV_correlated', + 'type' : 'lnN', + 'samples' : dict((skey, '1.020') for skey in mc if skey not in ['WZ']) +} + +nuisances['lumi_Correlated_2017_2018'] = { + 'name' : 'lumi_13TeV_1718', + 'type' : 'lnN', + 'samples' : dict((skey, '1.002') for skey in mc if skey not in ['WZ']) +} + + +### Fakes + +# Per lepton +nuisances['fake_ele'] = { + 'name' : 'CMS_WH_hww_fake_e_2018', + 'kind' : 'weight', + 'type' : 'shape', + 'samples' : { + 'Fake_ee' : ['fakeWEleUp', 'fakeWEleDown'], + 'Fake_em' : ['fakeWEleUp', 'fakeWEleDown'], + } +} + +nuisances['fake_ele_stat'] = { + 'name' : 'CMS_WH_hww_fake_stat_e_2018', + 'kind' : 'weight', + 'type' : 'shape', + 'samples' : { + 'Fake_ee' : ['fakeWStatEleUp', 'fakeWStatEleDown'], + 'Fake_em' : ['fakeWStatEleUp', 'fakeWStatEleDown'], + } +} + + +nuisances['fake_mu'] = { + 'name' : 'CMS_WH_hww_fake_m_2018', + 'kind' : 'weight', + 'type' : 'shape', + 'samples' : { + 'Fake_mm' : ['fakeWMuUp', 'fakeWMuDown'], + 'Fake_em' : ['fakeWMuUp', 'fakeWMuDown'], + } +} + +nuisances['fake_mu_stat'] = { + 'name' : 'CMS_WH_hww_fake_stat_m_2018', + 'kind' : 'weight', + 'type' : 'shape', + 'samples' : { + 'Fake_mm' : ['fakeWStatMuUp', 'fakeWStatMuDown'], + 'Fake_em' : ['fakeWStatMuUp', 'fakeWStatMuDown'], + } +} + + +# # Normalization per final state +# jet_bins = ['0j','1j','2j'] +# channels = ['ee', 'em', 'mm'] +# charges = ['plus', 'minus'] + +# eta_regimes = ['barrel', 'endcap'] +# pt_regimes = ['high', 'medium'] + +# fake_syst_dict = { +# 'endcap_medium_pt': ['1.0*(abs(Lepton_eta[1])<=1.479) + 1.0*(Lepton_pt[1]> 35) + 1.1*(abs(Lepton_eta[1])> 1.479 && Lepton_pt[1]<=35)', +# '1.0*(abs(Lepton_eta[1])<=1.479) + 1.0*(Lepton_pt[1]> 35) + 1.0/1.1*(abs(Lepton_eta[1])> 1.479 && Lepton_pt[1]<=35)'], +# 'barrel_medium_pt': ['1.0*(abs(Lepton_eta[1])> 1.479) + 1.0*(Lepton_pt[1]> 35) + 1.1*(abs(Lepton_eta[1])<=1.479 && Lepton_pt[1]<=35)', +# '1.0*(abs(Lepton_eta[1])> 1.479) + 1.0*(Lepton_pt[1]> 35) + 1.0/1.1*(abs(Lepton_eta[1])<=1.479 && Lepton_pt[1]<=35)'], +# 'endcap_high_pt' : ['1.0*(abs(Lepton_eta[1])<=1.479) + 1.0*(Lepton_pt[1]<=35) + 1.1*(abs(Lepton_eta[1])> 1.479 && Lepton_pt[1]> 35)', +# '1.0*(abs(Lepton_eta[1])<=1.479) + 1.0*(Lepton_pt[1]<=35) + 1.0/1.1*(abs(Lepton_eta[1])> 1.479 && Lepton_pt[1]> 35)'], +# 'barrel_high_pt' : ['1.0*(abs(Lepton_eta[1])> 1.479) + 1.0*(Lepton_pt[1]<=35) + 1.1*(abs(Lepton_eta[1])<=1.479 && Lepton_pt[1]> 35)', +# '1.0*(abs(Lepton_eta[1])> 1.479) + 1.0*(Lepton_pt[1]<=35) + 1.0/1.1*(abs(Lepton_eta[1])<=1.479 && Lepton_pt[1]> 35)'], +# } + +# for jet_bin in jet_bins: +# for channel in channels: +# for charge in charges: + +# nuisances[f'CMS_WH_hww_fake_syst_{jet_bin}_{channel}_{charge}'] = { +# 'name' : f'CMS_WH_hww_fake_syst_{jet_bin}_{channel}_{charge}_2018', +# 'samples' : { +# f'Fake_{channel}' : '1.30', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# f'hww2l2v_13TeV_WH_SS_{channel}_{jet_bin}_SS_CR_{charge}_pt2ge20', +# ], +# } + +# # for eta_regime in eta_regimes: +# # for pt_regime in pt_regimes: +# # nuisances[f'CMS_WH_hww_fake_syst_{eta_regime}_{pt_regime}_{channel}'] = { +# # 'name' : f'CMS_WH_hww_fake_syst_{eta_regime}_{pt_regime}_{channel}_2018', +# # 'samples' : { +# # f'Fake_{channel}' : f'{eta_regime}_{pt_regime}_pt', +# # }, +# # 'type' : 'shape', +# # 'cuts' : [cut for cut in cuts if (f'_{channel}_' in cut)], +# # } + + +# flavors = ['sssf', 'ossf'] + +# for flavor in flavors: +# for charge in charges: + +# nuisances[f'CMS_WH_hww_fake_syst_{flavor}_{charge}'] = { +# 'name' : f'CMS_WH_hww_fake_syst_{flavor}_{charge}_2018', +# 'samples' : { +# 'Fake' : '1.30', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# f'hww2l2v_13TeV_WH_3l_{flavor}_{charge}_pt2ge20', +# ], +# } + +# # for eta_regime in eta_regimes: +# # for pt_regime in pt_regimes: +# # nuisances[f'CMS_WH_hww_fake_syst_{eta_regime}_{pt_regime}_{flavor}'] = { +# # 'name' : f'CMS_WH_hww_fake_syst_{eta_regime}_{pt_regime}_{flavor}_2018', +# # 'samples' : { +# # f'Fake' : f'{eta_regime}_{pt_regime}_pt', +# # }, +# # 'type' : 'shape', +# # 'cuts' : [cut for cut in cuts if (f'_{flavor}_' in cut)], +# # } + + +# ###### B-tagger + +# for shift in ['lf', 'hf', 'hfstats1', 'hfstats2', 'lfstats1', 'lfstats2', 'cferr1', 'cferr2']: +# btag_syst = ['(btagSF%sup)/(btagSF)' % shift, '(btagSF%sdown)/(btagSF)' % shift] + +# name = 'CMS_btag_%s' % shift +# if 'stats' in shift: +# name += '_2018' + +# nuisances['btag_shape_%s' % shift] = { +# 'name' : name, +# 'kind' : 'weight', +# 'type' : 'shape', +# 'samples' : dict((skey, btag_syst) for skey in mc), +# } + +# ##### Trigger Scale Factors + +# trig_syst = ['TriggerSFWeight_2l_u/TriggerSFWeight_2l', 'TriggerSFWeight_2l_d/TriggerSFWeight_2l'] + +# nuisances['trigg'] = { +# 'name' : 'CMS_eff_hwwtrigger_2018', +# 'kind' : 'weight', +# 'type' : 'shape', +# 'samples' : dict((skey, trig_syst) for skey in mc) +# } + +# ##### Electron Efficiency and energy scale + +# nuisances['eff_e'] = { +# 'name' : 'CMS_eff_e_2018', +# 'kind' : 'weight', +# 'type' : 'shape', +# 'samples' : dict((skey, ['SFweightEleUp', 'SFweightEleDown']) for skey in mc) +# } + +# nuisances['eff_ttHMVA_e'] = { +# 'name' : 'CMS_eff_ttHMVA_e_2018', +# 'kind' : 'weight', +# 'type' : 'shape', +# 'samples' : dict((skey, ['LepWPttHMVASFEleUp', 'LepWPttHMVASFEleDown']) for skey in mc) +# } + +# nuisances['electronpt'] = { +# 'name' : 'CMS_scale_e_2018', +# 'kind' : 'suffix', +# 'type' : 'shape', +# 'mapUp' : 'ElepTup', +# 'mapDown' : 'ElepTdo', +# 'samples' : dict((skey, ['1', '1']) for skey in mc), +# 'folderUp' : makeMCDirectory('ElepTup_suffix'), +# 'folderDown' : makeMCDirectory('ElepTdo_suffix'), +# 'AsLnN' : '0' +# } + +# ##### Muon Efficiency and energy scale + +# nuisances['eff_m'] = { +# 'name' : 'CMS_eff_m_2018', +# 'kind' : 'weight', +# 'type' : 'shape', +# 'samples' : dict((skey, ['SFweightMuUp', 'SFweightMuDown']) for skey in mc) +# } + +# nuisances['eff_ttHMVA_m'] = { +# 'name' : 'CMS_eff_ttHMVA_m_2018', +# 'kind' : 'weight', +# 'type' : 'shape', +# 'samples' : dict((skey, ['LepWPttHMVASFMuUp', 'LepWPttHMVASFMuDown']) for skey in mc) +# } + +# nuisances['muonpt'] = { +# 'name' : 'CMS_scale_m_2018', +# 'kind' : 'suffix', +# 'type' : 'shape', +# 'mapUp' : 'MupTup', +# 'mapDown' : 'MupTdo', +# 'samples' : dict((skey, ['1', '1']) for skey in mc), +# 'folderUp' : makeMCDirectory('MupTup_suffix'), +# 'folderDown' : makeMCDirectory('MupTdo_suffix'), +# 'AsLnN' : '0' +# } + +# ##### Jet energy scale +# jes_systs = ['JESAbsolute','JESAbsolute_2018','JESBBEC1','JESBBEC1_2018','JESEC2','JESEC2_2018','JESFlavorQCD','JESHF','JESHF_2018','JESRelativeBal','JESRelativeSample_2018'] + +# for js in jes_systs: + +# nuisances[js] = { +# 'name' : 'CMS_scale_' + js.replace("JES","j_"), +# 'kind' : 'suffix', +# 'type' : 'shape', +# 'mapUp' : js + 'up', +# 'mapDown' : js + 'do', +# 'samples' : dict((skey, ['1', '1']) for skey in mc), +# 'folderUp' : makeMCDirectory('RDF__JESup_suffix'), +# 'folderDown': makeMCDirectory('RDF__JESdo_suffix'), +# 'reweight' : ['btagSF'+js.replace('JES','jes')+'up/btagSF','btagSF'+js.replace('JES','jes')+'down/btagSF'], +# 'AsLnN' : '0' +# } + +# ##### Jet energy resolution +# nuisances['JER'] = { +# 'name' : 'CMS_res_j_2018', +# 'kind' : 'suffix', +# 'type' : 'shape', +# 'mapUp' : 'JERup', +# 'mapDown' : 'JERdo', +# 'samples' : dict((skey, ['1', '1']) for skey in mc), +# 'folderUp' : makeMCDirectory('JERup_suffix'), +# 'folderDown': makeMCDirectory('JERdo_suffix'), +# 'AsLnN' : '0' +# } + +# ##### MET unclustered energy + +# # metUp.PuppiMET_pt_METup +# nuisances['met'] = { +# 'name' : 'CMS_scale_met_2018', +# 'kind' : 'suffix', +# 'type' : 'shape', +# 'mapUp' : 'METup', +# 'mapDown' : 'METdo', +# 'samples' : dict((skey, ['1', '1']) for skey in mc), +# 'folderUp' : makeMCDirectory('METup_suffix'), +# 'folderDown': makeMCDirectory('METdo_suffix'), +# 'AsLnN' : '0' +# } + + +# ##### Pileup + +# # puWeight_UL2018 +# nuisances['PU'] = { +# 'name' : 'CMS_pileup_2018', +# 'kind' : 'weight', +# 'type' : 'shape', +# 'samples' : { +# 'DY' : ['0.998687*(puWeightUp/puWeight)', '1.001976*(puWeightDown/puWeight)'], +# 'top' : ['1.002595*(puWeightUp/puWeight)', '0.997470*(puWeightDown/puWeight)'], +# 'WW' : ['1.004449*(puWeightUp/puWeight)', '0.995660*(puWeightDown/puWeight)'], +# 'WWewk' : ['1.002122*(puWeightUp/puWeight)', '0.998087*(puWeightDown/puWeight)'], +# 'ggWW' : ['1.004870*(puWeightUp/puWeight)', '0.995315*(puWeightDown/puWeight)'], +# 'WZ' : ['0.999330*(puWeightUp/puWeight)', '1.000992*(puWeightDown/puWeight)'], +# 'ZZ' : ['0.999469*(puWeightUp/puWeight)', '1.000751*(puWeightDown/puWeight)'], +# 'VVV' : ['1.003485*(puWeightUp/puWeight)', '0.997561*(puWeightDown/puWeight)'], +# 'ggH_hww' : ['1.003677*(puWeightUp/puWeight)', '0.995996*(puWeightDown/puWeight)'], +# 'qqH_hww' : ['1.003747*(puWeightUp/puWeight)', '0.995878*(puWeightDown/puWeight)'], +# }, +# 'AsLnN' : '0', +# } + +# ### PU ID SF uncertainty + +# # puid_syst = ['Jet_PUIDSF_loose_up/Jet_PUIDSF_loose', 'Jet_PUIDSF_loose_down/Jet_PUIDSF_loose'] +# puid_syst = ['Jet_PUIDSF_up/Jet_PUIDSF', 'Jet_PUIDSF_down/Jet_PUIDSF'] + +# nuisances['jetPUID'] = { +# 'name' : 'CMS_eff_j_PUJET_id_2018', +# 'kind' : 'weight', +# 'type' : 'shape', +# 'samples' : dict((skey, puid_syst) for skey in mc) +# } + +# ### PS and UE + +# nuisances['PS_ISR'] = { +# 'name' : 'PS_WH_hww_ISR', +# 'kind' : 'weight', +# 'type' : 'shape', +# 'samples' : dict((skey, ['PSWeight[2]', 'PSWeight[0]']) for skey in mc), +# 'AsLnN' : '0', +# } + +# nuisances['PS_FSR'] = { +# 'name' : 'PS_WH_hww_FSR', +# 'kind' : 'weight', +# 'type' : 'shape', +# 'samples' : dict((skey, ['PSWeight[3]', 'PSWeight[1]']) for skey in mc), +# 'AsLnN' : '0', +# } + +# nuisances['UE_CP5'] = { +# 'name' : 'CMS_WH_hww_UE', +# 'skipCMS' : 1, +# 'type' : 'lnN', +# 'samples' : dict((skey, '1.015') for skey in mc), +# } + +# # Charge flip efficiency +# nuisances['chargeFlipEff'] = { +# 'name' : 'CMS_whss_chargeFlipEff_2018', +# 'kind' : 'weight', +# 'type' : 'shape', +# 'samples' : dict((skey, ['1-ttHMVA_eff_err_flip_2l', '1+ttHMVA_eff_err_flip_2l']) for skey in ['DY','ChargeFlip']), +# 'cuts' : [cut for cut in cuts if ('_ee_' in cut or '_em_' in cut)], +# } + +# # Charge flip: uncertainty on opposite sign processes not affected by charge-flip +# nuisances['chargeFlip_syst'] = { +# 'name' : 'CMS_ChargeFlip_syst', +# 'type' : 'lnN', +# 'samples' : { +# 'ChargeFlip' : '1.10', +# }, +# 'cuts' : [cut for cut in cuts if ('_ee_' in cut or '_em_' in cut)], +# } + +# ## Top pT reweighting uncertainty + +# nuisances['TopPtRew'] = { +# 'name' : 'CMS_top_pT_reweighting', # Theory uncertainty +# 'kind' : 'weight', +# 'type' : 'shape', +# 'samples' : { +# 'top': ["1.", "1./Top_pTrw"] +# }, +# 'symmetrize' : True +# } + +# nuisances['VgStar'] = { +# 'name' : 'CMS_hww_VgStarScale', +# 'type' : 'lnN', +# 'samples' : { +# 'VgS' : '1.25' +# } +# } + +# nuisances['Vg'] = { +# 'name' : 'CMS_hww_VgScale', +# 'type' : 'lnN', +# 'samples' : { +# 'Vg' : '1.25' +# } +# } + +# ###### pdf uncertainties + +# valuesggh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggH', '125.09','pdf','sm') +# valuesggzh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggZH','125.09','pdf','sm') +# valuesbbh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','bbH', '125.09','pdf','sm') + +# nuisances['pdf_Higgs_gg'] = { +# 'name' : 'pdf_Higgs_gg', +# 'samples' : { +# 'ggH_hww' : valuesggh, +# 'ggH_htt' : valuesggh, +# 'ggZH_hww' : valuesggzh, +# 'bbH_hww' : valuesbbh, +# }, +# 'type' : 'lnN', +# } + +# # For ttH, we need to use 1./values +# values = str(1./float(HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ttH','125.09','pdf','sm'))) + +# nuisances['pdf_Higgs_ttH'] = { +# 'name' : 'pdf_Higgs_ttH', +# 'samples' : { +# 'ttH_hww': values, +# }, +# 'type' : 'lnN', +# } + +# valuesqqh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','vbfH','125.09','pdf','sm') +# valueswh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','WH', '125.09','pdf','sm') +# valueszh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ZH', '125.09','pdf','sm') + +# nuisances['pdf_Higgs_qqbar'] = { +# 'name' : 'pdf_Higgs_qqbar', +# 'type' : 'lnN', +# 'samples': { +# 'qqH_hww' : valuesqqh, +# 'qqH_htt' : valuesqqh, +# 'WH_hww_plus' : valueswh, +# 'WH_hww_minus': valueswh, +# 'WH_htt_plus' : valueswh, +# 'WH_htt_minus': valueswh, +# 'ZH_hww' : valueszh, +# 'ZH_htt' : valueszh +# }, +# } + +# nuisances['pdf_qqbar'] = { +# 'name' : 'pdf_qqbar', +# 'type' : 'lnN', +# 'samples' : { +# 'Vg' : '1.04', +# 'ZZ' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 +# # 'WZ' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 +# 'VgS' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 +# }, +# } + +# nuisances['pdf_gg'] = { +# 'name': 'pdf_WH_hww_gg', +# 'type': 'lnN', +# 'samples': { +# 'ggWW' : '1.05', +# }, +# } + +# nuisances['pdf_Higgs_gg_ACCEPT'] = { +# 'name' : 'pdf_WH_hww_Higgs_gg_ACCEPT', +# 'samples' : { +# 'ggH_hww' : '1.006', +# 'ggH_htt' : '1.006', +# 'ggZH_hww' : '1.006', +# 'bbH_hww' : '1.006' +# }, +# 'type' : 'lnN', +# } +# nuisances['pdf_gg_ACCEPT'] = { +# 'name' : 'pdf_WH_hww_gg_ACCEPT', +# 'samples' : { +# 'ggWW' : '1.006', +# }, +# 'type' : 'lnN', +# } + +# nuisances['pdf_Higgs_qqbar_ACCEPT'] = { +# 'name' : 'pdf_WH_hww_Higgs_qqbar_ACCEPT', +# 'type' : 'lnN', +# 'samples' : { +# 'qqH_hww' : '1.002', +# 'qqH_htt' : '1.002', +# 'WH_hww_plus' : '1.003', +# 'WH_hww_minus': '1.003', +# 'WH_htt_plus' : '1.003', +# 'WH_htt_minus': '1.003', +# 'ZH_hww' : '1.002', +# 'ZH_htt' : '1.002', +# }, +# } + +# nuisances['pdf_qqbar_ACCEPT'] = { +# 'name' : 'pdf_WH_hww_qqbar_ACCEPT', +# 'type' : 'lnN', +# 'samples' : { +# 'ZZ' : '1.001', +# # 'WZ' : '1.001', +# }, +# } + +# ##### Renormalization & factorization scales + +# ## Shape nuisance due to QCD scale variations for DY +# ## LHE scale variation weights (w_var / w_nominal) + +# ## This should work for samples with either 8 or 9 LHE scale weights (Length$(LHEScaleWeight) == 8 or 9) +# variations = ['Alt(LHEScaleWeight,0,1)', 'Alt(LHEScaleWeight,1,1)', 'Alt(LHEScaleWeight,3,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-4,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-2,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-1,1)'] + +# # nuisances['QCDscale_V'] = { +# # 'name' : 'QCDscale_V', +# # 'skipCMS' : 1, +# # 'kind' : 'weight_envelope', +# # 'type' : 'shape', +# # 'samples' : { +# # 'DY' : variations +# # }, +# # 'AsLnN' : '0' +# # } + +# nuisances['QCDscale_VV'] = { +# 'name' : 'QCDscale_VV', +# 'kind' : 'weight_envelope', +# 'type' : 'shape', +# 'samples' : { +# 'WW' : variations, +# 'Vg' : variations, +# 'ZZ' : variations, +# 'WZ' : variations, +# 'VgS' : variations, +# } +# } + +# nuisances['QCDscale_ggVV'] = { +# 'name' : 'QCDscale_ggVV', +# 'type' : 'lnN', +# 'samples' : { +# 'ggWW' : '1.15', +# }, +# } + +# #### QCD scale uncertainties for Higgs signals other than ggH + +# values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','vbfH','125.09','scale','sm') + +# nuisances['QCDscale_qqH'] = { +# 'name' : 'QCDscale_qqH', +# 'samples' : { +# 'qqH_hww' : values, +# 'qqH_htt' : values, +# }, +# 'type' : 'lnN' +# } + +# valueswh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','WH','125.09','scale','sm') +# valueszh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ZH','125.09','scale','sm') + +# nuisances['QCDscale_VH'] = { +# 'name' : 'QCDscale_VH', +# 'samples' : { +# 'WH_hww_plus' : valueswh, +# 'WH_hww_minus' : valueswh, +# 'WH_htt_plus' : valueswh, +# 'WH_htt_minus' : valueswh, +# 'ZH_hww' : valueszh, +# 'ZH_htt' : valueszh, +# }, +# 'type' : 'lnN', +# } + +# values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggZH','125.09','scale','sm') + +# nuisances['QCDscale_ggZH'] = { +# 'name' : 'QCDscale_ggZH', +# 'samples' : { +# 'ggZH_hww' : values, +# }, +# 'type' : 'lnN', +# } + +# values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ttH','125.09','scale','sm') + +# nuisances['QCDscale_ttH'] = { +# 'name' : 'QCDscale_ttH', +# 'samples' : { +# 'ttH_hww' : values, +# }, +# 'type' : 'lnN', +# } + +# nuisances['QCDscale_WWewk'] = { +# 'name' : 'QCDscale_WWewk', +# 'samples' : { +# 'WWewk' : '1.11', +# }, +# 'type' : 'lnN' +# } + +# nuisances['QCDscale_qqbar_ACCEPT'] = { +# 'name' : 'QCDscale_qqbar_ACCEPT', +# 'type' : 'lnN', +# 'samples' : { +# 'qqH_hww' : '1.003', +# 'qqH_htt' : '1.003', +# 'WH_hww_plus' : '1.010', +# 'WH_hww_minus' : '1.010', +# 'WH_htt_plus' : '1.010', +# 'WH_htt_minus' : '1.010', +# 'ZH_hww' : '1.015', +# 'ZH_htt' : '1.015', +# } +# } + +# # FIXME: these come from HIG-16-042, maybe should be recomputed? +# nuisances['QCDscale_gg_ACCEPT'] = { +# 'name' : 'QCDscale_gg_ACCEPT', +# 'samples' : { +# 'ggH_htt' : '1.012', +# 'ggH_hww' : '1.012', +# 'ggZH_hww' : '1.012', +# 'ggWW' : '1.012', +# }, +# 'type' : 'lnN', +# } + +# # WZ normalization from control region +# nuisances['WZ2jnorm'] = { +# 'name' : 'CMS_hww_WZ3l2jnorm', +# 'samples' : { +# 'WZ' : '1.00', +# }, +# 'type' : 'rateParam', +# 'cuts' : [cut for cut in cuts if '2j' in cut], +# } + +# nuisances['WZ1jnorm'] = { +# 'name' : 'CMS_hww_WZ3l1jnorm', +# 'samples' : { +# 'WZ' : '1.00', +# }, +# 'type' : 'rateParam', +# 'cuts' : [cut for cut in cuts if '1j' in cut], +# } + +# # WZ migration from W+Z to W-Z +# nuisances['WZ2j_charge_migration'] = { +# 'name' : 'CMS_hww_WZ2jchargemigration', +# 'samples' : { +# 'WZ' : '1.02', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_noZveto_mm_2j_plus_pt2ge20', +# 'hww2l2v_13TeV_WH_SS_noZveto_mm_2j_plus_pt2lt20', +# 'hww2l2v_13TeV_WH_SS_em_2j_plus_pt2ge20', +# 'hww2l2v_13TeV_WH_SS_em_2j_plus_pt2lt20', +# 'hww2l2v_13TeV_WH_SS_ee_2j_plus_pt2ge20', +# 'hww2l2v_13TeV_WH_SS_ee_2j_plus_pt2lt20', +# ], +# } + +# nuisances['WZ1j_charge_migration'] = { +# 'name' : 'CMS_hww_WZ1jchargemigration', +# 'samples' : { +# 'WZ' : '1.02', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_noZveto_mm_1j_plus_pt2ge20', +# 'hww2l2v_13TeV_WH_SS_noZveto_mm_1j_plus_pt2lt20', +# 'hww2l2v_13TeV_WH_SS_em_1j_plus_pt2ge20', +# 'hww2l2v_13TeV_WH_SS_em_1j_plus_pt2lt20', +# 'hww2l2v_13TeV_WH_SS_ee_1j_plus_pt2ge20', +# 'hww2l2v_13TeV_WH_SS_ee_1j_plus_pt2lt20', +# ], +# } + +# # Nonprompt leptons normalization per category +# nuisances['CMS_WH_hww_fake_syst_2jee_plus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_2jee_plus_2018', +# 'samples' : { +# 'Fake_ee' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_ee_2j_plus_pt2ge20', +# ], +# } +# nuisances['CMS_WH_hww_fake_syst_2jee_plus_lowpt'] = { +# 'name' : 'CMS_WH_hww_fake_syst_2jee_plus_lowpt_2018', +# 'samples' : { +# 'Fake_ee' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_ee_2j_plus_pt2lt20', +# ], +# } + +# nuisances['CMS_WH_hww_fake_syst_2jem_plus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_2jem_plus_2018', +# 'samples' : { +# 'Fake_em' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_em_2j_plus_pt2ge20', +# ], +# } +# nuisances['CMS_WH_hww_fake_syst_2jem_plus_lowpt'] = { +# 'name' : 'CMS_WH_hww_fake_syst_2jem_plus_lowpt_2018', +# 'samples' : { +# 'Fake_em' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_em_2j_plus_pt2lt20', +# ], +# } + +# nuisances['CMS_WH_hww_fake_syst_2jmm_plus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_2jmm_plus_2018', +# 'samples' : { +# 'Fake_mm' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_noZeto_mm_2j_plus_pt2ge20', +# ], +# } +# nuisances['CMS_WH_hww_fake_syst_2jmm_plus_lowpt'] = { +# 'name' : 'CMS_WH_hww_fake_syst_2jmm_plus_lowpt_2018', +# 'samples' : { +# 'Fake_mm' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_noZeto_mm_2j_plus_pt2lt20', +# ], +# } + +# nuisances['CMS_WH_hww_fake_syst_1jee_plus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_1jee_plus_2018', +# 'samples' : { +# 'Fake_ee' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_ee_1j_plus_pt2ge20', +# ], +# } +# nuisances['CMS_WH_hww_fake_syst_1jee_plus_lowpt'] = { +# 'name' : 'CMS_WH_hww_fake_syst_1jee_plus_lowpt_2018', +# 'samples' : { +# 'Fake_ee' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_ee_1j_plus_pt2lt20', +# ], +# } + +# nuisances['CMS_WH_hww_fake_syst_1jem_plus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_1jem_plus_2018', +# 'samples' : { +# 'Fake_em' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_em_1j_plus_pt2ge20', +# ], +# } +# nuisances['CMS_WH_hww_fake_syst_1jem_plus_lowpt'] = { +# 'name' : 'CMS_WH_hww_fake_syst_1jem_plus_lowpt_2018', +# 'samples' : { +# 'Fake_em' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_em_1j_plus_pt2lt20', +# ], +# } + +# nuisances['CMS_WH_hww_fake_syst_1jmm_plus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_1jmm_plus_2018', +# 'samples' : { +# 'Fake_mm' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_noZeto_mm_1j_plus_pt2ge20', +# ], +# } +# nuisances['CMS_WH_hww_fake_syst_1jmm_plus_lowpt'] = { +# 'name' : 'CMS_WH_hww_fake_syst_1jmm_plus_lowpt_2018', +# 'samples' : { +# 'Fake_mm' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_noZeto_mm_1j_plus_pt2lt20', +# ], +# } + + +# nuisances['CMS_WH_hww_fake_syst_2jee_minus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_2jee_minus_2018', +# 'samples' : { +# 'Fake_ee' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_ee_2j_minus_pt2ge20', +# ], +# } +# nuisances['CMS_WH_hww_fake_syst_2jee_minus_lowpt'] = { +# 'name' : 'CMS_WH_hww_fake_syst_2jee_minus_lowpt_2018', +# 'samples' : { +# 'Fake_ee' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_ee_2j_minus_pt2lt20', +# ], +# } + +# nuisances['CMS_WH_hww_fake_syst_2jem_minus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_2jem_minus_2018', +# 'samples' : { +# 'Fake_em' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_em_2j_minus_pt2ge20', +# ], +# } +# nuisances['CMS_WH_hww_fake_syst_2jem_minus_lowpt'] = { +# 'name' : 'CMS_WH_hww_fake_syst_2jem_minus_lowpt_2018', +# 'samples' : { +# 'Fake_em' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_em_2j_minus_pt2lt20', +# ], +# } + +# nuisances['CMS_WH_hww_fake_syst_2jmm_minus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_2jmm_minus_2018', +# 'samples' : { +# 'Fake_mm' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_noZeto_mm_2j_minus_pt2ge20', +# ], +# } +# nuisances['CMS_WH_hww_fake_syst_2jmm_minus_lowpt'] = { +# 'name' : 'CMS_WH_hww_fake_syst_2jmm_minus_lowpt_2018', +# 'samples' : { +# 'Fake_mm' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_noZeto_mm_2j_minus_pt2lt20', +# ], +# } + +# nuisances['CMS_WH_hww_fake_syst_1jee_minus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_1jee_minus_2018', +# 'samples' : { +# 'Fake_ee' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_ee_1j_minus_pt2ge20', +# ], +# } +# nuisances['CMS_WH_hww_fake_syst_1jee_minus_lowpt'] = { +# 'name' : 'CMS_WH_hww_fake_syst_1jee_minus_lowpt_2018', +# 'samples' : { +# 'Fake_ee' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_ee_1j_minus_pt2lt20', +# ], +# } + +# nuisances['CMS_WH_hww_fake_syst_1jem_minus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_1jem_minus_2018', +# 'samples' : { +# 'Fake_em' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_em_1j_minus_pt2ge20', +# ], +# } +# nuisances['CMS_WH_hww_fake_syst_1jem_minus_lowpt'] = { +# 'name' : 'CMS_WH_hww_fake_syst_1jem_minus_lowpt_2018', +# 'samples' : { +# 'Fake_em' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_em_1j_minus_pt2lt20', +# ], +# } + +# nuisances['CMS_WH_hww_fake_syst_1jmm_minus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_1jmm_minus_2018', +# 'samples' : { +# 'Fake_mm' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_noZeto_mm_1j_minus_pt2ge20', +# ], +# } +# nuisances['CMS_WH_hww_fake_syst_1jmm_minus_lowpt'] = { +# 'name' : 'CMS_WH_hww_fake_syst_1jmm_minus_lowpt_2018', +# 'samples' : { +# 'Fake_mm' : '1.50', +# }, +# 'type' : 'lnN', +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_noZeto_mm_1j_minus_pt2lt20', +# ], +# } + +# End of Nonprompt leptons normalization per category + +## Use the following if you want to apply the automatic combine MC stat nuisances. +nuisances['stat'] = { + 'type' : 'auto', + 'maxPoiss' : '10', + 'includeSignal' : '0', + 'samples' : {} +} +# nuisance ['maxPoiss'] = Number of threshold events for Poisson modelling +# nuisance ['includeSignal'] = Include MC stat nuisances on signal processes (1=True, 0=False) + +for n in nuisances.values(): + n['skipCMS'] = 1 diff --git a/ControlRegions/3l/Full2018_v9/plot.py b/ControlRegions/3l/Full2018_v9/plot.py new file mode 100644 index 00000000..b620aa28 --- /dev/null +++ b/ControlRegions/3l/Full2018_v9/plot.py @@ -0,0 +1,306 @@ +# plot configuration + +# Groups of samples to improve the plots. +# If not defined, normal plots is used + +groupPlot = {} + +groupPlot['top'] = { + 'nameHR' : 'tW+ and t#bar{t}', + 'isSignal' : 0, + 'color' : 400, # kYellow + 'samples' : ['top'] +} + +groupPlot['Fake'] = { + 'nameHR' : 'Non-prompt', + 'isSignal' : 0, + 'color' : 921, # kGray + 1 + 'samples' : ['Fake'] +} + +groupPlot['WW'] = { + 'nameHR' : 'WW', + 'isSignal' : 0, + 'color' : 851, # kAzure -9 + 'samples' : ['WW'] # , 'ggWW', 'WWewk'] +} + +groupPlot['VVV'] = { + 'nameHR' : 'VVV', + 'isSignal' : 0, + 'color' : 857, # kAzure -3 + 'samples' : ['VVV'] +} + +# groupPlot['Zg'] = { +# 'nameHR' : "Z#gamma", +# 'isSignal' : 0, +# 'color' : 810, # kOrange + 10 +# 'samples' : ['Zg'] +# } + +# groupPlot['ZgS'] = { +# 'nameHR' : "Z#gamma*", +# 'isSignal' : 0, +# 'color' : 617, +# 'samples' : ['ZgS'] +# } + +groupPlot['Vg'] = { + 'nameHR' : "V#gamma", + 'isSignal' : 0, + 'color' : 859, + 'samples' : ['Vg'] +} + +groupPlot['VgS'] = { + 'nameHR' : "V#gamma*", + 'isSignal' : 0, + 'color' : 409, # kGreen - 9 + 'samples' : ['VgS'] +} + +groupPlot['ZZ'] = { + 'nameHR' : "ZZ", + 'isSignal' : 0, + 'color' : 617, # kViolet + 1 + 'samples' : ['ZZ'] +} + +groupPlot['WZ'] = { + 'nameHR' : "WZ", + 'isSignal' : 0, + 'color' : 619, # kViolet + 1 + 'samples' : ['WZ'] +} + +groupPlot['Higgs'] = { + 'nameHR' : 'Higgs', + 'isSignal' : 0, + 'color' : 632, # kRed + 'samples' : ['ggH_hww','qqH_hww','ZH_hww','ggZH_hww','ttH_hww','ggH_hww','qqH_htt','ZH_htt'] +} + +groupPlot['WH_minus'] = { + 'nameHR' : 'W^{-} H (x 10)', + 'isSignal' : 2, + 'color' : 600, # kBlue + 'samples' : ['WH_hww_minus','WH_htt_minus'] +} + +groupPlot['WH_plus'] = { + 'nameHR' : 'W^{+} H (x 10)', + 'isSignal' : 2, + 'color' : 632, # kRed + 'samples' : ['WH_hww_plus', 'WH_htt_plus'] +} + + +# keys here must match keys in samples.py + +plot = {} + +plot['top'] = { + 'nameHR' : 'tW and t#bar{t}', + 'color' : 400, # kYellow + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0, +} + +plot['WW'] = { + 'color' : 851, # kAzure -9 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['Vg'] = { + 'color' : 859, # kAzure -1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['VgS'] = { + 'color' : 859, # kAzure -1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +# plot['Wg'] = { +# 'color' : 859, # kAzure -1 +# 'isSignal' : 0, +# 'isData' : 0, +# 'scale' : 1.0 +# } + +# plot['Zg'] = { +# 'color' : 859, # kAzure -1 +# 'isSignal' : 0, +# 'isData' : 0, +# 'scale' : 1.0 +# } + +# plot['WgS'] = { +# 'color' : 859, # kAzure -1 +# 'isSignal' : 0, +# 'isData' : 0, +# 'scale' : 1.0 +# } + +# plot['ZgS'] = { +# 'color' : 617, # kViolet + 1 +# 'isSignal' : 0, +# 'isData' : 0, +# 'scale' : 1.0 +# } + +plot['ZZ'] = { + 'color' : 858, # kAzure -2 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['WZ'] = { + 'color' : 858, # kAzure -2 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.138*1.12 # NLO -> NNLO k-factor! +} + +plot['VVV'] = { + 'color' : 857, # kAzure -3 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +########### +# Signals # +########### + +# HWW + +plot['ggH_hww'] = { + 'color' : 632, # kRed + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['qqH_hww'] = { + 'color' : 632+1, # kRed+1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['ZH_hww'] = { + 'color' : 632+3, # kRed+3 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['ggZH_hww'] = { + 'color' : 632+4, # kRed+4 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['WH_hww_minus'] = { + 'color' : 600, # kBlue + 'isSignal' : 2, + 'isData' : 0, + 'scale' : 10 +} + +plot['WH_hww_plus'] = { + 'color' : 632+2, # kRed+2 + 'isSignal' : 2, + 'isData' : 0, + 'scale' : 10 +} + +plot['ttH_hww'] = { + 'color' : 632+3, # kRed+3 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + + +# Htautau + +plot['ggH_htt'] = { + 'color' : 632, # kRed + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['qqH_htt'] = { + 'color' : 632+1, # kRed+1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['ZH_htt'] = { + 'color' : 632+3, # kRed+3 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['WH_htt_plus'] = { + 'color' : 632+2, # kRed+2 + 'isSignal' : 1, + 'isData' : 0, + 'scale' : 10 +} + +plot['WH_htt_minus'] = { + 'color' : 632+2, # kRed+2 + 'isSignal' : 1, + 'isData' : 0, + 'scale' : 10 +} + + +######## +# Fake # +######## + +plot['Fake'] = { + 'color' : 921, # kGray + 1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + + +######## +# Data # +######## + +plot['DATA'] = { + 'nameHR' : 'Data', + 'color' : 1 , + 'isSignal' : 0, + 'isData' : 1, + 'isBlind' : 0 +} + + +# Define legend + +legend = {} + +legend['lumi'] = 'L = 59.8 fb^{-1}' +legend['sqrt'] = '#sqrt{s} = 13 TeV' diff --git a/ControlRegions/3l/Full2018_v9/repeat.sh b/ControlRegions/3l/Full2018_v9/repeat.sh new file mode 100644 index 00000000..7bc54e34 --- /dev/null +++ b/ControlRegions/3l/Full2018_v9/repeat.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +if [ $# -eq 0 ]; then + echo "$0: Missing arguments" + exit 1 +else + echo "We got some argument(s)" + echo "===========================" + echo "Number of arguments. : $#" + echo "List of arguments... : $@" + echo "Arg #1: sample : $1" + echo "Arg #2: compile : $2" + echo "===========================" + SAMPLE=$1 + COMPILE=$2 +fi + +# Site definition +hostname=$(uname -a | awk '{print $2}') + + +if [ "$COMPILE" == "True" ]; then + mkShapesRDF -c 1 + mkShapesRDF -o 0 -f . -b 1 -dR 1 +fi +cd condor/3l_2018_v9/${SAMPLE}/ +cp ../../../../../../../mkShapesRDF/mkShapesRDF/include/headers.hh ../../../../../../../mkShapesRDF/mkShapesRDF/shapeAnalysis/runner.py . +python runner.py + +if [[ "$hostname" == *portal* || "$hostname" == *bms* ]]; then + echo "We are at KIT" + cp output.root /ceph/${USER}/mkShapesRDF_rootfiles/3l_2018_v9/rootFile/mkShapes__3l_2018_v9__ALL__${SAMPLE}.root +else + echo "We are on lxplus" + cp output.root /eos/user/${USER:0:1}/${USER}/mkShapesRDF_rootfiles/3l_2018_v9/rootFile/mkShapes__3l_2018_v9__ALL__${SAMPLE}.root +fi + +rm output.root diff --git a/ControlRegions/3l/Full2018_v9/samples.py b/ControlRegions/3l/Full2018_v9/samples.py new file mode 100644 index 00000000..4c3cdf68 --- /dev/null +++ b/ControlRegions/3l/Full2018_v9/samples.py @@ -0,0 +1,395 @@ +import os,glob + +################################################ +################# SKIMS ######################## +################################################ + +# MC: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Summer20UL18_106x_nAODv9_Full2018v9/MCl1loose2018v9__MCCorr2018v9NoJERInHorn__l2tightOR2018v9/ +# DATA: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Run2018_UL2018_nAODv9_Full2018v9/DATAl1loose2018v9__l2loose__l2tightOR2018v9/ +# FAKE: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Run2018_UL2018_nAODv9_Full2018v9/DATAl1loose2018v9__l2loose__fakeW/ + +mcProduction = 'Summer20UL18_106x_nAODv9_Full2018v9' +dataReco = 'Run2018_UL2018_nAODv9_Full2018v9' +mcSteps = 'MCl1loose2018v9__MCCorr2018v9NoJERInHorn__l2tightOR2018v9{var}' +fakeSteps = 'DATAl1loose2018v9__l2loose__fakeW' +dataSteps = 'DATAl1loose2018v9__l2loose__l2tightOR2018v9' + +############################################## +###### Tree base directory for the site ###### +############################################## + +treeBaseDir = '/eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano' +limitFiles = -1 + +def makeMCDirectory(var=''): + return os.path.join(treeBaseDir, mcProduction, mcSteps.format(var='')) + +mcDirectory = makeMCDirectory() +fakeDirectory = os.path.join(treeBaseDir, dataReco, fakeSteps) +dataDirectory = os.path.join(treeBaseDir, dataReco, dataSteps) + +samples = {} + +from mkShapesRDF.lib.search_files import SearchFiles +s = SearchFiles() + +useXROOTD = True +redirector = 'root://eoscms.cern.ch/' + +def nanoGetSampleFiles(path, name): + _files = s.searchFiles(path, name, redirector=redirector) + if limitFiles != -1 and len(_files) > limitFiles: + return [(name, _files[:limitFiles])] + else: + return [(name, _files)] + +def CombineBaseW(samples, proc, samplelist): + _filtFiles = list(filter(lambda k: k[0] in samplelist, samples[proc]['name'])) + _files = list(map(lambda k: k[1], _filtFiles)) + _l = list(map(lambda k: len(k), _files)) + leastFiles = _files[_l.index(min(_l))] + dfSmall = ROOT.RDataFrame('Runs', leastFiles) + s = dfSmall.Sum('genEventSumw').GetValue() + f = ROOT.TFile.Open(leastFiles[0]) + t = f.Get('Events') + t.GetEntry(1) + xs = t.baseW * s + + __files = [] + for f in _files: + __files += f + df = ROOT.RDataFrame('Runs', __files) + s = df.Sum('genEventSumw').GetValue() + newbaseW = str(xs / s) + weight = newbaseW + '/baseW' + + for iSample in samplelist: + addSampleWeight(samples, proc, iSample, weight) + +def addSampleWeight(samples, sampleName, sampleNameType, weight): + obj = list(filter(lambda k: k[0] == sampleNameType, samples[sampleName]['name']))[0] + samples[sampleName]['name'] = list(filter(lambda k: k[0] != sampleNameType, samples[sampleName]['name'])) + if len(obj) > 2: + samples[sampleName]['name'].append((obj[0], obj[1], obj[2] + '*(' + weight + ')')) + else: + samples[sampleName]['name'].append((obj[0], obj[1], '(' + weight + ')' )) + + +################################################ +############ DATA DECLARATION ################## +################################################ + +DataRun = [ + ['A','Run2018A-UL2018-v1'], + ['B','Run2018B-UL2018-v1'], + ['C','Run2018C-UL2018-v1'], + ['D','Run2018D-UL2018-v1'], +] + +DataSets = ['MuonEG','SingleMuon','EGamma','DoubleMuon'] + +DataTrig = { + 'MuonEG' : 'Trigger_ElMu' , + 'DoubleMuon' : '!Trigger_ElMu && Trigger_dblMu' , + 'SingleMuon' : '!Trigger_ElMu && !Trigger_dblMu && Trigger_sngMu' , + 'EGamma' : '!Trigger_ElMu && !Trigger_dblMu && !Trigger_sngMu && (Trigger_sngEl || Trigger_dblEl)' , +} + +######################################### +############ MC COMMON ################## +######################################### + +# SFweight does not include btag weights +mcCommonWeight = 'XSWeight*SFweight*METFilter_MC' +mcCommonWeightMatched = 'XSWeight*SFweight*PromptGenLepMatch3l*METFilter_MC' + +########################################### +############# BACKGROUNDS ############### +########################################### + +##### Top ####### +files = nanoGetSampleFiles(mcDirectory, 'TTTo2L2Nu') + \ + nanoGetSampleFiles(mcDirectory, 'ST_s-channel') + \ + nanoGetSampleFiles(mcDirectory, 'ST_t-channel_top') + \ + nanoGetSampleFiles(mcDirectory, 'ST_t-channel_antitop') + \ + nanoGetSampleFiles(mcDirectory, 'ST_tW_antitop') + \ + nanoGetSampleFiles(mcDirectory, 'ST_tW_top') + +samples['top'] = { + 'name': files, + 'weight': mcCommonWeightMatched, + 'FilesPerJob': 8, +} +addSampleWeight(samples,'top','TTTo2L2Nu','Top_pTrw') + +###### WW ######## +samples['WW'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'WWTo2L2Nu'), + 'weight': mcCommonWeightMatched + '*nllW*ewknloW', + 'FilesPerJob': 4, +} + +######## Vg ######## +files = nanoGetSampleFiles(mcDirectory, 'Wg_AMCNLOFXFX_01J') + \ + nanoGetSampleFiles(mcDirectory, 'ZGToLLG') + +samples['Vg'] = { + 'name': files, + 'weight': mcCommonWeight + '*(Gen_ZGstar_mass <= 0)', + 'FilesPerJob': 4, +} + +######## VgS ######## +files = nanoGetSampleFiles(mcDirectory, 'Wg_AMCNLOFXFX_01J') + \ + nanoGetSampleFiles(mcDirectory, 'WZTo3LNu_mllmin0p1') + \ + nanoGetSampleFiles(mcDirectory, 'ZGToLLG') + +samples['VgS'] = { + 'name': files, + 'weight': mcCommonWeightMatched, + 'FilesPerJob': 4, +} +addSampleWeight(samples, 'VgS', 'Wg_AMCNLOFXFX_01J', '((Gen_ZGstar_mass > 0 && Gen_ZGstar_mass <= 0.1))*(gstarLow*0.94)') +addSampleWeight(samples, 'VgS', 'WZTo3LNu_mllmin0p1', '((Gen_ZGstar_mass > 0.1)*(0.601644*58.59/4.666))*(gstarLow*0.94)') +addSampleWeight(samples, 'VgS', 'ZGToLLG', '(Gen_ZGstar_mass > 0)') + +# ######## Wg ######## +# files = nanoGetSampleFiles(mcDirectory, 'Wg_AMCNLOFXFX_01J') + +# samples['Wg'] = { +# 'name': files, +# 'weight': mcCommonWeight + '*(Gen_ZGstar_mass <= 0)', +# 'FilesPerJob': 8, +# } + + +# ######## Zg ######## +# files = nanoGetSampleFiles(mcDirectory, 'ZGToLLG') + +# samples['Zg'] = { +# 'name': files, +# 'weight': mcCommonWeight + '*(Gen_ZGstar_mass <= 0)', +# 'FilesPerJob': 4, +# } + +# ######## WgS ######## +# files = nanoGetSampleFiles(mcDirectory, 'Wg_AMCNLOFXFX_01J') + \ +# nanoGetSampleFiles(mcDirectory, 'WZTo3LNu_mllmin0p1') + +# samples['WgS'] = { +# 'name': files, +# 'weight': mcCommonWeightMatched + ' * (gstarLow * 0.94)', +# 'FilesPerJob': 4, +# } +# addSampleWeight(samples, 'WgS', 'Wg_AMCNLOFXFX_01J', '(Gen_ZGstar_mass > 0 && Gen_ZGstar_mass <= 0.1)') +# addSampleWeight(samples, 'WgS', 'WZTo3LNu_mllmin0p1', '(Gen_ZGstar_mass > 0.1)*(0.601644*58.59/4.666)') + + +# ######## ZgS ######## +# files = nanoGetSampleFiles(mcDirectory, 'ZGToLLG') + +# samples['ZgS'] = { +# 'name': files, +# 'weight': mcCommonWeightMatched + '*(Gen_ZGstar_mass > 0)', +# 'FilesPerJob': 4, +# } +# addSampleWeight(samples, 'ZgS', 'ZGToLLG', '(Gen_ZGstar_mass > 0)') + + +############ ZZ ############ +files = nanoGetSampleFiles(mcDirectory, 'ZZTo4L') + +samples['ZZ'] = { + 'name': files, + 'weight': mcCommonWeightMatched, + 'FilesPerJob': 1, +} + + +############ WZ ############ +files = nanoGetSampleFiles(mcDirectory, 'WZTo3LNu_mllmin0p1') + +samples['WZ'] = { + 'name': files, + 'weight': mcCommonWeightMatched + ' * (gstarHigh)', + 'FilesPerJob': 4, +} +addSampleWeight(samples, 'WZ', 'WZTo3LNu_mllmin0p1', '(0.601644*58.59/4.666)') + + +########## VVV ######### +files = nanoGetSampleFiles(mcDirectory, 'ZZZ') + \ + nanoGetSampleFiles(mcDirectory, 'WZZ') + \ + nanoGetSampleFiles(mcDirectory, 'WWZ') + \ + nanoGetSampleFiles(mcDirectory, 'WWW') + +samples['VVV'] = { + 'name': files, + 'weight': mcCommonWeight, + 'FilesPerJob': 8, +} + +########################################### +############# SIGNALS ################## +########################################### + +signals = [] + +############ ggH H->WW ############ +samples['ggH_hww'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'GluGluHToWWTo2L2Nu_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 4, +} +signals.append('ggH_hww') + +############ VBF H->WW ############ +samples['qqH_hww'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'VBFHToWWTo2L2Nu_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 8, +} +signals.append('qqH_hww') + +############ ZH H->WW ############ +samples['ZH_hww'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'HZJ_HToWW_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 8, +} +signals.append('ZH_hww') + +samples['ggZH_hww'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'GluGluZH_HToWWTo2L2Nu_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 8, +} +signals.append('ggZH_hww') + +############ WH H->WW ############ +samples['WH_hww_plus'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'HWplusJ_HToWWTo2L2Nu_WToLNu_M125'), + # 'name': nanoGetSampleFiles(mcDirectory, 'HWplusJ_HToWW_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 4, +} +signals.append('WH_hww_plus') + +samples['WH_hww_minus'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'HWminusJ_HToWWTo2L2Nu_WToLNu_M125'), + # 'name': nanoGetSampleFiles(mcDirectory, 'HWminusJ_HToWW_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 4, +} +signals.append('WH_hww_minus') + +############ ttH ############ +samples['ttH_hww'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'ttHToNonbb_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 4, +} +signals.append('ttH_hww') + +############ H->TauTau ############ +samples['ggH_htt'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'GluGluHToTauTau_M125_Powheg'), + 'weight': mcCommonWeight, + 'FilesPerJob': 20, +} +signals.append('ggH_htt') + +samples['qqH_htt'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'VBFHToTauTau_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 10, +} +signals.append('qqH_htt') + +samples['ZH_htt'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'ZHToTauTau_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 8, +} +signals.append('ZH_htt') + +############ WH H->TauTau ############ +samples['WH_htt_plus'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'WplusHToTauTau_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 8, +} +signals.append('WH_htt_plus') + +samples['WH_htt_minus'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'WminusHToTauTau_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 8, +} +signals.append('WH_htt_minus') + + +########################################### +################## FAKE ################### +########################################### + +samples['Fake'] = { + 'name': [], + 'weight': 'METFilter_DATA*fakeW', + 'weights': [], + 'isData': ['all'], + 'FilesPerJob': 50 +} + +for _, sd in DataRun: + for pd in DataSets: + tag_data = pd + '_' + sd + + if ( ('DoubleMuon' in pd and 'Run2018B' in sd) + or ('DoubleMuon' in pd and 'Run2018D' in sd) + or ('SingleMuon' in pd and 'Run2018A' in sd) + or ('SingleMuon' in pd and 'Run2018B' in sd) + or ('SingleMuon' in pd and 'Run2018C' in sd)): + print("sd = {}".format(sd)) + print("pd = {}".format(pd)) + print("Old tag = {}".format(tag_data)) + tag_data = tag_data.replace('v1','v2') + print("New tag = {}".format(tag_data)) + + files = nanoGetSampleFiles(fakeDirectory, tag_data) + + samples['Fake']['name'].extend(files) + addSampleWeight(samples, 'Fake', tag_data, DataTrig[pd]) + + +########################################### +################## DATA ################### +########################################### + +samples['DATA'] = { + 'name': [], + 'weight': 'LepWPCut*METFilter_DATA', + 'weights': [], + 'isData': ['all'], + 'FilesPerJob': 50 +} + +for _, sd in DataRun: + for pd in DataSets: + tag_data = pd + '_' + sd + + if ( ('DoubleMuon' in pd and 'Run2018B' in sd) + or ('DoubleMuon' in pd and 'Run2018D' in sd) + or ('SingleMuon' in pd and 'Run2018A' in sd) + or ('SingleMuon' in pd and 'Run2018B' in sd) + or ('SingleMuon' in pd and 'Run2018C' in sd)): + print("sd = {}".format(sd)) + print("pd = {}".format(pd)) + print("Old tag = {}".format(tag_data)) + tag_data = tag_data.replace('v1','v2') + print("New tag = {}".format(tag_data)) + + files = nanoGetSampleFiles(dataDirectory, tag_data) + + samples['DATA']['name'].extend(files) + addSampleWeight(samples, 'DATA', tag_data, DataTrig[pd]) diff --git a/ControlRegions/3l/Full2018_v9/structure.py b/ControlRegions/3l/Full2018_v9/structure.py new file mode 100644 index 00000000..04315d30 --- /dev/null +++ b/ControlRegions/3l/Full2018_v9/structure.py @@ -0,0 +1,127 @@ +# structure configuration for datacard + +# keys here must match keys in samples.py + +structure = {} + +structure['top'] = { + 'isSignal' : 0, + 'isData' : 0 +} + +structure['WW'] = { + 'isSignal' : 0, + 'isData' : 0 +} + +structure['Vg'] = { + 'isSignal' : 0, + 'isData' : 0 +} + +# structure['Zg'] = { +# 'isSignal' : 0, +# 'isData' : 0 +# } + +structure['VgS'] = { + 'isSignal' : 0, + 'isData' : 0 +} + +# structure['ZgS'] = { +# 'isSignal' : 0, +# 'isData' : 0 +# } + +structure['ZZ'] = { + 'isSignal' : 0, + 'isData' : 0 +} + +structure['WZ'] = { + 'isSignal' : 0, + 'isData' : 0, + 'scaleSampleForDatacard' : 1.138 # NLO -> NNLO k-factor +} + +structure['VVV'] = { + 'isSignal' : 0, + 'isData' : 0 +} + +structure['ggH_hww'] = { + 'isSignal' : 0, + 'isData' : 0 +} + +structure['qqH_hww'] = { + 'isSignal' : 0, + 'isData' : 0 +} + +structure['ZH_hww'] = { + 'isSignal' : 0, + 'isData' : 0 +} + +structure['ggZH_hww'] = { + 'isSignal' : 0, + 'isData' : 0 +} + +structure['WH_hww_plus'] = { + 'isSignal' : 1, + 'isData' : 0, + 'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity +} + +structure['WH_hww_minus'] = { + 'isSignal' : 1, + 'isData' : 0, + 'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity +} + +structure['ttH_hww'] = { + 'isSignal' : 0, + 'isData' : 0 +} + +structure['ggH_htt'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['qqH_htt'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['ZH_htt'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['WH_htt_plus'] = { + 'isSignal' : 1, + 'isData' : 0, + 'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity +} + +structure['WH_htt_minus'] = { + 'isSignal' : 1, + 'isData' : 0, + 'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity +} + +structure['Fake'] = { + 'isSignal' : 0, + 'isData' : 0 +} + + +# Data +structure['DATA'] = { + 'isSignal' : 0, + 'isData' : 1 +} diff --git a/ControlRegions/3l/Full2018_v9/variables.py b/ControlRegions/3l/Full2018_v9/variables.py new file mode 100644 index 00000000..ccbcbbc1 --- /dev/null +++ b/ControlRegions/3l/Full2018_v9/variables.py @@ -0,0 +1,285 @@ +# variables + +# 0 = not fold (default), 1 = fold underflowbin, 2 = fold overflow bin, 3 = fold underflow and overflow + +variables = {} + +variables['events'] = { + 'name' : '1', + 'range' : (1,0,2), + 'xaxis' : 'events', + 'fold' : 3 +} + +################### +# Control variables +################### + +variables['BDTG6_TT'] = { + 'name' : 'BDT_WHSS_TopSemileptonic_v9', + 'range' : (40,-1,1), + 'xaxis' : 'BDT discriminant', + 'fold' : 3, +} + +variables['BDT_WH3l_OSSF_new_v9'] = { + 'name' : 'BDT_WH3l_OSSF_new_v9', + 'range' : (40,-1.,1.), + 'xaxis' : 'MVA discriminant', + 'fold' : 3, +} + +variables['BDT_WH3l_SSSF_new_v9'] = { + 'name' : 'BDT_WH3l_SSSF_new_v9', + 'range' : (40,-1.,1.), + 'xaxis' : 'MVA discriminant', + 'fold' : 3, +} + +variables['pt1'] = { + 'name' : 'Lepton_pt[0]', + 'range' : (30,0,150), + 'xaxis' : 'p_{T} 1st lep', + 'fold' : 0 +} + +variables['pt2'] = { + 'name' : 'Lepton_pt[1]', + 'range' : (30,0,100), + 'xaxis' : 'p_{T} 2nd lep', + 'fold' : 3 +} + +variables['conept1'] = { + 'name' : 'Lepton_conept[0]', + 'range' : (30,0,150), + 'xaxis' : 'p_{T} 1st lep', + 'fold' : 0 +} + +variables['conept2'] = { + 'name' : 'Lepton_conept[1]', + 'range' : (30,0,100), + 'xaxis' : 'p_{T} 2nd lep', + 'fold' : 3 +} + +variables['eta1'] = { + 'name' : 'Lepton_eta[0]', + 'range' : (50,-2.5,2.5), + 'xaxis' : '#eta 1st lep', + 'fold' : 3 +} + +variables['eta2'] = { + 'name' : 'Lepton_eta[1]', + 'range' : (50,-2.5,2.5), + 'xaxis' : '#eta 2nd lep', + 'fold' : 3 +} + +variables['detall'] = { + 'name' : 'abs(Lepton_eta[0] - Lepton_eta[1])', + 'range' : (20,0.,5.), + 'xaxis' : '#Delta#eta_{#ell #ell}', + 'fold' : 3 +} + +variables['dphill'] = { + 'name' : 'abs(dphill)', + 'range' : (20, 0,3.2), + 'xaxis' : '#Delta#phi_{ll}', + 'fold' : 3 +} + +variables['drll'] = { + 'name' : 'abs(drll)', + 'range' : (20, 0,5.), + 'xaxis' : '#Delta#R_{ll}', + 'fold' : 3 +} + +variables['mll'] = { + 'name' : 'mll', + 'range' : (25, 0,250), + 'xaxis' : 'm_{ll} [GeV]', + 'fold' : 0 +} + +variables['ptll'] = { + 'name' : 'ptll', + 'range' : (20, 0,200), + 'xaxis' : 'p_{T}^{ll} [GeV]', + 'fold' : 0 +} + + +variables['jetpt1'] = { + 'name' : 'CleanJet_pt[0]*(CleanJet_pt[0]>30)', + 'range' : (40,0,400), + 'xaxis' : 'p_{T} 1st jet', + 'fold' : 2 +} + +variables['jetpt2'] = { + 'name' : 'CleanJet_pt[1]*(CleanJet_pt[1]>30)', + 'range' : (40,0,200), + 'xaxis' : 'p_{T} 2nd jet', + 'fold' : 0 +} + +variables['jeteta1'] = { + 'name' : 'CleanJet_eta[0]*(CleanJet_pt[0]>30)', + 'range' : (50,-5,5), + 'xaxis' : '#eta 1st jet', + 'fold' : 2 +} + +variables['jeteta2'] = { + 'name' : 'CleanJet_eta[1]*(CleanJet_pt[1]>30)', + 'range' : (50,-5,5), + 'xaxis' : '#eta 2nd jet', + 'fold' : 0 +} + +variables['detajj'] = { + 'name' : 'abs(CleanJet_eta[0] - CleanJet_eta[1])*(CleanJet_pt[1]>30)', + 'range' : (20,0.,10.), + 'xaxis' : '#Delta#eta_{jj}', + 'fold' : 3 +} + +variables['dphijj'] = { + 'name' : 'dphijj', + 'range' : (20,0,3.2), + 'xaxis' : '#Delta#phi_{jj}', + 'fold' : 3 +} + +variables['mjj'] = { + 'name' : 'mjj*(CleanJet_pt[1]>30)', + 'range' : (20,0,1000), + 'xaxis' : 'm_{jj} [GeV]', + 'fold' : 3 +} + + +variables['puppimet'] = { + 'name' : 'PuppiMET_pt', + 'range' : (20,0,200), + 'xaxis' : 'PUPPI met [GeV]', + 'fold' : 3 +} + + +variables['mlljj20'] = { + 'name' : 'mlljj20_whss', + 'range' : (20,0,1000), + 'xaxis' : 'mlljj20 [GeV]', + 'fold' : 3 +} + +variables['mth'] = { + 'name' : 'mth', + 'range' : (50,0,250), + 'xaxis' : 'm_{T}^{H} [GeV]', + 'fold' : 0 +} + +variables['mtw1'] = { + 'name' : 'mtw1', + 'range' : (50,0,250), + 'xaxis' : 'm_{T}^{W_{1}} [GeV]', + 'fold' : 3 +} + +variables['mtw2'] = { + 'name' : 'mtw2', + 'range' : (50,0,200), + 'xaxis' : 'm_{T}^{W_{2}} [GeV]', + 'fold' : 3 +} + +variables['dphilljet'] = { + 'name' : 'dphilljet', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilljet', + 'fold' : 3 +} + +variables['dphilljetjet'] = { + 'name' : 'dphilljetjet*(CleanJet_pt[1]>30)', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilljetjet', + 'fold' : 3 +} + +variables['dphilmet'] = { + 'name' : 'dphilmet', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilmet', + 'fold' : 3 +} + +variables['dphilmet2'] = { + 'name' : 'dphilmet2', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilmet2', + 'fold' : 3 +} + +variables['dphillmet'] = { + 'name' : 'dphillmet', + 'range' : (20,0,3.2), + 'xaxis' : 'dphillmet', + 'fold' : 3 +} + +variables['dphilep1jet1'] = { + 'name' : 'dphilep1jet1', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilep1jet1', + 'fold' : 3 +} + +variables['dphilep1jet2'] = { + 'name' : 'dphilep1jet2*(CleanJet_pt[1]>30)', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilep1jet2', + 'fold' : 3 +} + +variables['dphilep2jet1'] = { + 'name' : 'dphilep2jet1', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilep2jet1', + 'fold' : 3 +} + +variables['dphilep2jet2'] = { + 'name' : 'dphilep2jet2*(CleanJet_pt[1]>30)', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilep1jet2', + 'fold' : 3 +} + +variables['dphijjmet'] = { + 'name' : 'dphijjmet', + 'range' : (20,0,3.2), + 'xaxis' : 'dphijjmet', + 'fold' : 3 +} + +variables['ht'] = { + 'name' : 'ht', + 'range' : (30,0,1500), + 'xaxis' : 'ht [GeV]', + 'fold' : 3 +} + +variables['dphijet1met'] = { + 'name' : 'dphijet1met', + 'range' : (20,0,3.2), + 'xaxis' : 'dphijet1met', + 'fold' : 3 +} From b33aebcb5f744c42e643ac22260b2de6a47e2119 Mon Sep 17 00:00:00 2001 From: ntrevisa Date: Thu, 14 Aug 2025 16:51:32 +0200 Subject: [PATCH 13/44] 3l control region 2017 --- ControlRegions/3l/Full2017_v9/README.md | 117 ++++++ ControlRegions/3l/Full2017_v9/aliases.py | 337 ++++++++++++++++++ .../3l/Full2017_v9/configuration.py | 105 ++++++ ControlRegions/3l/Full2017_v9/cuts.py | 46 +++ ControlRegions/3l/Full2017_v9/nuisances.py | 118 ++++++ ControlRegions/3l/Full2017_v9/plot.py | 264 ++++++++++++++ ControlRegions/3l/Full2017_v9/repeat.sh | 38 ++ ControlRegions/3l/Full2017_v9/samples.py | 332 +++++++++++++++++ ControlRegions/3l/Full2017_v9/structure.py | 121 +++++++ ControlRegions/3l/Full2017_v9/variables.py | 285 +++++++++++++++ 10 files changed, 1763 insertions(+) create mode 100644 ControlRegions/3l/Full2017_v9/README.md create mode 100644 ControlRegions/3l/Full2017_v9/aliases.py create mode 100644 ControlRegions/3l/Full2017_v9/configuration.py create mode 100644 ControlRegions/3l/Full2017_v9/cuts.py create mode 100644 ControlRegions/3l/Full2017_v9/nuisances.py create mode 100644 ControlRegions/3l/Full2017_v9/plot.py create mode 100644 ControlRegions/3l/Full2017_v9/repeat.sh create mode 100644 ControlRegions/3l/Full2017_v9/samples.py create mode 100644 ControlRegions/3l/Full2017_v9/structure.py create mode 100644 ControlRegions/3l/Full2017_v9/variables.py diff --git a/ControlRegions/3l/Full2017_v9/README.md b/ControlRegions/3l/Full2017_v9/README.md new file mode 100644 index 00000000..830ccadd --- /dev/null +++ b/ControlRegions/3l/Full2017_v9/README.md @@ -0,0 +1,117 @@ +# Three leptons control region + +This configuration plots control distributions for the three-leptons phase space + +The instructions to run the analysis follow. + +### Load the mkShapesRDF environment + +Here, we assume `PlotsConfigurationsRun3` was installed in the same directory as `mkShapesRDF`. E.g., let's assume we have a `Run3` directory where we installed both `mkShapesRDF` and `PlotsConfigurationsRun3`. + +Then, we can source the `mkShapesRDF` environment using these commands: + + cd ../../../mkShapesRDF/ + + source start.sh + + cd - + +### Produce distributions using mkShapesMulti.py in batch mode + +Compile the configuration. Do it after every change to any file in this directory: + + mkShapesRDF -c 1 + +Produce histograms using batch: + + mkShapesRDF -c 1 -o 0 -f . -b 1 + +Check jobs status: + + mkShapesRDF -o 1 -f . + +Resubmit failed jobs: + + mkShapesRDF -o 1 -f . -r 1 + +Merge rootfiles: + + mkShapesRDF -o 2 -f . + +Plot distributions: + + mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png + +### Perform goodness of fit test + +Create datacards: + + mkDatacards + +Produce workspaces: + + mkdir -p GoF + + cd GoF/ + + VARIABLE=mjj + FINAL_STATE=mm_2j_SS_CR_plus + OUT_NAME=_${FINAL_STATE}_${VARIABLE} + + combineTool.py -M T2W -m 125 \ + -o datacard.root \ + -i ../datacards/hww2l2v_13TeV_WH_SS_${FINAL_STATE}_pt2ge20/${VARIABLE}/datacard.txt \ + --channel-masks \ + -P HiggsAnalysis.CombinedLimit.PhysicsModel:multiSignalModel \ + --PO 'map=.*/WH_h.*_plus:r_WH[1,-10.0,10.0]' \ + --PO 'map=.*/WH_h.*_minus:r_WH[1,-10.0,10.0]' + +Perform fit on real data: + + combineTool.py -M GoodnessOfFit ../datacards/hww2l2v_13TeV_WH_SS_${FINAL_STATE}_pt2ge20/${VARIABLE}/datacard.root \ + --algo=saturated \ + --setParameters r_WH=1 \ + --setParameterRanges r_WH=-5,5 \ + --redefineSignalPOIs r_WH \ + -n ${OUT_NAME} + +Produce toys based on the predictions: + + combineTool.py -M GoodnessOfFit ../datacards/hww2l2v_13TeV_WH_SS_${FINAL_STATE}_pt2ge20/${VARIABLE}/datacard.root \ + --algo=saturated \ + -t 1 \ + -s 0:10:1 \ + --dry-run \ + --job-mode=condor \ + --setParameters r_WH=1 \ + --setParameterRanges r_WH=-5,5 \ + --redefineSignalPOIs r_WH \ + -n ${OUT_NAME} + +Modify the sh file in order to submit 10 jobs running the 100 toys + + sed -i 's/-t 1/-t 10/g' condor_combine_task.sh + +If you run on the KIT machines, remember to adapt the submission file to the HTCondor requirements, by adding these lines to the top of `condor_combine_task.sub`: + + text_to_add=$'universe = container\ncontainer_image = /cvmfs/unpacked.cern.ch/registry.hub.docker.com/cverstege/alma9-gridjob:latest' + + printf "%s\n" "$text_to_add" | cat - condor_combine_task.sub > temp && mv temp condor_combine_task.sub + +Submit the jobs to condor + + condor_submit condor_combine_task.sub + +Once all jobs are done, merge the output and plot the results: + + hadd -f higgsCombine_${OUT_NAME}.GoodnessOfFit.mH120.toys.root higgsCombine${OUT_NAME}.GoodnessOfFit.mH120.*.root + + combineTool.py -M CollectGoodnessOfFit --input higgsCombine${OUT_NAME}.GoodnessOfFit.mH120.root higgsCombine_${OUT_NAME}.GoodnessOfFit.mH120.toys.root -m 125 -o GoF_${OUT_NAME}.json + + plotGof.py GoF_${OUT_NAME}.json --statistic saturated --mass 120.0 -o GoF_${OUT_NAME} --title-right=${OUT_NAME} --range 0 200 + +Clean the mess: + + rm combine* + rm condor* + rm higgsCombine* diff --git a/ControlRegions/3l/Full2017_v9/aliases.py b/ControlRegions/3l/Full2017_v9/aliases.py new file mode 100644 index 00000000..0cf5e2c9 --- /dev/null +++ b/ControlRegions/3l/Full2017_v9/aliases.py @@ -0,0 +1,337 @@ +import os +import copy +import inspect + +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/ControlRegions/3l/Full2017_v9/ + +configurations = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file +configurations = os.path.dirname(configurations) # Full2017_v9 +configurations = os.path.dirname(configurations) # 3l +configurations = os.path.dirname(configurations) # ControlRegions +configurations = os.path.dirname(configurations) # PlotsConfigurationsRun3 + +aliases = {} +aliases = OrderedDict() + +mc = [skey for skey in samples if skey not in ('Fake', 'DATA')] + + +# LepCut2l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW_tthmva_82 +eleWP = 'mvaFall17V2Iso_WP90' +muWP = 'cut_Tight_HWWW' + +aliases['LepWPCut'] = { + 'expr' : 'LepCut3l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW*\ + ( ((abs(Lepton_pdgId[0])==13 && Muon_mvaTTH[Lepton_muonIdx[0]]>0.82) || (abs(Lepton_pdgId[0])==11 && Lepton_mvaTTH_UL[0]>0.90)) \ + && ((abs(Lepton_pdgId[1])==13 && Muon_mvaTTH[Lepton_muonIdx[1]]>0.82) || (abs(Lepton_pdgId[1])==11 && Lepton_mvaTTH_UL[1]>0.90)) \ + && ((abs(Lepton_pdgId[2])==13 && Muon_mvaTTH[Lepton_muonIdx[2]]>0.82) || (abs(Lepton_pdgId[2])==11 && Lepton_mvaTTH_UL[2]>0.90)) )', + 'samples' : mc + ['DATA'] +} + +# Lepton SF (not considering the ttHMVA discriminant) +aliases['LepWPSF'] = { + 'expr' : 'LepSF3l__ele_'+eleWP+'__mu_'+muWP, + 'samples' : mc +} + +# ttHMVA SFs and uncertainties +aliases['LepWPttHMVASF'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/ttHMVASF_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('ttHMVASF ttH = ttHMVASF(\"2017\", 3, \"all\", \"nominal\",\"{configurations}/WH_chargeAsymmetry/UL/data/\");')"], + 'expr' : 'ttH(Lepton_pt, Lepton_eta, Lepton_pdgId)', + 'samples' : mc +} + +aliases['LepWPttHMVASFEleUp'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/ttHMVASF_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('ttHMVASF ttH_EleUp = ttHMVASF(\"2017\", 3, \"all\", \"eleUp\" ,\"{configurations}/WH_chargeAsymmetry/UL/data/\");')"], + 'expr' : 'ttH_EleUp(Lepton_pt, Lepton_eta, Lepton_pdgId)', + 'samples' : mc +} +aliases['LepWPttHMVASFEleDown'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/ttHMVASF_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('ttHMVASF ttH_EleDown = ttHMVASF(\"2017\", 3, \"all\", \"eleDown\" ,\"{configurations}/WH_chargeAsymmetry/UL/data/\");')"], + 'expr' : 'ttH_EleDown(Lepton_pt, Lepton_eta, Lepton_pdgId)', + 'samples' : mc +} + +aliases['LepWPttHMVASFMuUp'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/ttHMVASF_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('ttHMVASF ttH_MuUp = ttHMVASF(\"2017\", 3, \"all\", \"muUp\" ,\"{configurations}/WH_chargeAsymmetry/UL/data/\");')"], + 'expr' : 'ttH_MuUp(Lepton_pt, Lepton_eta, Lepton_pdgId)', + 'samples' : mc +} +aliases['LepWPttHMVASFMuDown'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/ttHMVASF_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('ttHMVASF ttH_MuDown = ttHMVASF(\"2017\", 3, \"all\", \"muDown\" ,\"{configurations}/WH_chargeAsymmetry/UL/data/\");')"], + 'expr' : 'ttH_MuDown(Lepton_pt, Lepton_eta, Lepton_pdgId)', + 'samples' : mc +} + + +# Conept +aliases['Lepton_conept'] = { + 'expr': 'LeptonConePt(Lepton_pt, Lepton_pdgId, Lepton_electronIdx, Lepton_muonIdx, Electron_jetRelIso, Muon_jetRelIso)', + 'linesToAdd': [f'#include "{configurations}/utils/macros/LeptonConePt_class.cc"'], + 'samples': mc + ['Fake', 'DATA', 'DATA_unprescaled'] +} + +# Fake leptons transfer factor +aliases['fakeW'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"nominal\", 3, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} + +# And variations - already divided by central values in formulas ! +aliases['fakeWEleUp'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleUp = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"EleUp\", 3, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_EleUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} +aliases['fakeWEleDown'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleDown = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"EleDown\", 3, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_EleDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} + +aliases['fakeWMuUp'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuUp = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"MuUp\", 3, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_MuUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} +aliases['fakeWMuDown'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuDown = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"MuDown\", 3, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_MuDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} + +aliases['fakeWStatEleUp'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleUp = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"StatEleUp\", 3, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_StatEleUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} +aliases['fakeWStatEleDown'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleDown = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"StatEleDown\", 3, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_StatEleDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} + +aliases['fakeWStatMuUp'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuUp = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"StatMuUp\", 3, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_StatMuUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} +aliases['fakeWStatMuDown'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuDown = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"StatMuDown\", 3, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_StatMuDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} + +# No jet with pt > 30 GeV +aliases['zeroJet'] = { + 'expr' : 'Alt(CleanJet_pt, 0, 0) < 30.' +} + +aliases['oneJet'] = { + 'expr' : 'Alt(CleanJet_pt, 0, 0) > 30. && Alt(CleanJet_pt, 1, 0) < 30.' +} + +aliases['multiJet'] = { + 'expr' : 'Alt(CleanJet_pt, 1, 0) > 30.' +} + +#################################################################################### +# b tagging WPs: https://twiki.cern.ch/twiki/bin/view/CMS/BtagRecommendation106XUL17 +#################################################################################### + +# DeepB = DeepCSV +bWP_loose_deepB = '0.1355' +bWP_medium_deepB = '0.4506' +bWP_tight_deepB = '0.7738' + +# DeepFlavB = DeepJet +bWP_loose_deepFlavB = '0.0532' +bWP_medium_deepFlavB = '0.3040' +bWP_tight_deepFlavB = '0.7476' + +# Actual algo and WP definition. BE CONSISTENT!! +bAlgo = 'DeepB' # ['DeepB', 'DeepFlavB' ] +bWP = bWP_medium_deepB # [bWP_loose_deepB, bWP_loose_deepFlavB] +bSF = 'deepcsv' # ['deepcsv', 'deepjet' ] + +# b veto +aliases['bVeto'] = { + 'expr': 'Sum(CleanJet_pt > 20. && abs(CleanJet_eta) < 2.5 && Take(Jet_btag{}, CleanJet_jetIdx) > {}) == 0'.format(bAlgo, bWP) +} + +aliases['bVetoSF'] = { + 'expr': 'TMath::Exp(Sum(LogVec((CleanJet_pt>20 && abs(CleanJet_eta)<2.5)*Take(Jet_btagSF_{}_shape, CleanJet_jetIdx)+1*(CleanJet_pt<20 || abs(CleanJet_eta)>2.5))))'.format(bSF), + 'samples': mc +} + +# At least one b-tagged jet +aliases['bReq'] = { + 'expr': 'Sum(CleanJet_pt > 30. && abs(CleanJet_eta) < 2.5 && Take(Jet_btag{}, CleanJet_jetIdx) > {}) >= 1'.format(bAlgo, bWP) +} + +aliases['bReqSF'] = { + 'expr': 'TMath::Exp(Sum(LogVec((CleanJet_pt>30 && abs(CleanJet_eta)<2.5)*Take(Jet_btagSF_{}_shape, CleanJet_jetIdx)+1*(CleanJet_pt<30 || abs(CleanJet_eta)>2.5))))'.format(bSF), + 'samples': mc +} + +# Top control region +aliases['topcr'] = { + 'expr': 'mtw2>30 && mll>50 && ((zeroJet && !bVeto) || bReq)' +} + +# WW control region +aliases['wwcr'] = { + 'expr': 'mth>60 && mtw2>30 && mll>100 && bVeto' +} + +# Overall b tag SF +aliases['btagSF'] = { + 'expr': '(bVeto || (topcr && zeroJet))*bVetoSF + (topcr && !zeroJet)*bReqSF', + 'samples': mc +} + +for shift in ['jesAbsolute', 'jesAbsolute_2017', 'jesBBEC1', 'jesBBEC1_2017', 'jesEC2', + 'jesEC2_2017', 'jesFlavorQCD', 'jesHF', 'jesHF_2017', 'jesRelativeBal', + 'jesRelativeSample_2017']: + for var in ['up','down']: + aliases[f'Jet_btagSF_{bSF}_shape_{shift.replace("jes","JES")}{var[:2]}'] = { + 'expr' : f'Jet_btagSF_{bSF}_shape_{var}_{shift}', + 'samples' : mc + } + +for shift in ['jesAbsolute', 'jesAbsolute_2017', 'jesBBEC1', 'jesBBEC1_2017', 'jesEC2', + 'jesEC2_2017', 'jesFlavorQCD', 'jesHF', 'jesHF_2017', 'jesRelativeBal', + 'jesRelativeSample_2017', 'lf', 'hf', 'lfstats1', 'lfstats2', + 'hfstats1', 'hfstats2', 'cferr1', 'cferr2']: + + for targ in ['bVeto', 'bReq']: + alias = aliases['%sSF%sup' % (targ, shift)] = copy.deepcopy(aliases['%sSF' % targ]) + alias['expr'] = alias['expr'].replace('btagSF_{}_shape'.format(bSF), 'btagSF_{}_shape_up_{}'.format(bSF, shift)) + + alias = aliases['%sSF%sdown' % (targ, shift)] = copy.deepcopy(aliases['%sSF' % targ]) + alias['expr'] = alias['expr'].replace('btagSF_{}_shape'.format(bSF), 'btagSF_{}_shape_down_{}'.format(bSF, shift)) + + aliases['btagSF%sup' % shift] = { + 'expr': aliases['btagSF']['expr'].replace('SF', 'SF' + shift + 'up'), + 'samples': mc + } + + aliases['btagSF%sdown' % shift] = { + 'expr': aliases['btagSF']['expr'].replace('SF', 'SF' + shift + 'down'), + 'samples': mc + } + +#################################################################################### +# End of b tagging pippone +#################################################################################### + +aliases['gstarLow'] = { + 'expr': 'Gen_ZGstar_mass > 0 && Gen_ZGstar_mass < 4', + 'samples': 'VgS' +} + +aliases['gstarHigh'] = { + 'expr': 'Gen_ZGstar_mass < 0 || Gen_ZGstar_mass > 4', + 'samples': 'WZ' +} + +# gen-matching to prompt only (GenLepMatch3l matches to *any* gen lepton) +aliases['PromptGenLepMatch3l'] = { + 'expr': 'Alt(Lepton_promptgenmatched, 0, 0) * Alt(Lepton_promptgenmatched, 1, 0) * Alt(Lepton_promptgenmatched, 2, 0)', + 'samples': mc +} + +# Need to redefine PUID scale factors, so that they are double and not vectors +aliases['Jet_PUIDSF'] = { + 'expr' : 'TMath::Exp(Sum((Jet_jetId>=2)*LogVec(Jet_PUIDSF_loose)))', + 'samples': mc +} + +aliases['Jet_PUIDSF_up'] = { + 'expr' : 'TMath::Exp(Sum((Jet_jetId>=2)*LogVec(Jet_PUIDSF_loose_up)))', + 'samples': mc +} + +aliases['Jet_PUIDSF_down'] = { + 'expr' : 'TMath::Exp(Sum((Jet_jetId>=2)*LogVec(Jet_PUIDSF_loose_down)))', + 'samples': mc +} + + +aliases['Top_pTrw'] = { + 'expr': '(topGenPt * antitopGenPt > 0.) * (TMath::Sqrt(TMath::Exp(0.0615 - 0.0005 * topGenPt) * TMath::Exp(0.0615 - 0.0005 * antitopGenPt))) + (topGenPt * antitopGenPt <= 0.)', + 'samples': ['top'] +} + +# data/MC scale factors +aliases['SFweight'] = { + # 'expr': ' * '.join(['SFweight3l', 'LepWPCut', 'LepWPSF','Jet_PUIDSF_loose', 'btagSF', 'LepWPttHMVASF']), + 'expr': ' * '.join(['SFweight3l', 'LepWPCut', 'LepWPSF', 'Jet_PUIDSF', 'btagSF', 'LepWPttHMVASF']), + 'samples': mc +} + +# variations +aliases['SFweightEleUp'] = { + 'expr': 'LepSF3l__ele_'+eleWP+'__Up', + 'samples': mc +} +aliases['SFweightEleDown'] = { + 'expr': 'LepSF3l__ele_'+eleWP+'__Do', + 'samples': mc +} + +aliases['SFweightMuUp'] = { + 'expr': 'LepSF3l__mu_'+muWP+'__Up', + 'samples': mc +} +aliases['SFweightMuDown'] = { + 'expr': 'LepSF3l__mu_'+muWP+'__Do', + 'samples': mc +} + +# TriggerSFWeight_3l:TriggerSFWeight_3l_u:TriggerSFWeight_3l_d +aliases['SFtriggUp'] = { + 'expr': 'TriggerSFWeight_3l_u/TriggerSFWeight_3l', + 'samples': mc +} +aliases['SFtriggDown'] = { + 'expr': 'TriggerSFWeight_3l_d/TriggerSFWeight_3l', + 'samples': mc +} + +# Evaluate BDT discriminant +aliases['BDT_WHSS_TopSemileptonic_v9'] = { + 'linesToAdd' : ['#include "%s/ControlRegions/SS/macros/BDT_WHSS_TopSemileptonic_v9_class.cc"' % configurations], + 'linesToProcess' : ["ROOT.gInterpreter.Declare('BDT_WHSS_TopSemileptonic_v9 BDT_WHSS = BDT_WHSS_TopSemileptonic_v9(\"BDTG_6\",\"{0}/ControlRegions/SS/data/BDT/2017/WHSS/weights/TMVAClassification_BDTG_6.weights.xml\");')".format(configurations)], + 'expr' : 'BDT_WHSS(mll,mjj,mtw1,mtw2,ptll,mlljj20_whss,PuppiMET_pt,dphill,dphijj,dphillmet,dphilmet2,dphijet1met,CleanJet_pt,Jet_btagDeepB,CleanJet_jetIdx)', + 'samples' : mc + ['DATA','Fake'], +} + +aliases['BDT_WH3l_OSSF_new_v9'] = { + 'linesToAdd' : ['#include "%s/ControlRegions/SS/macros/BDT_WH3l_OSSF_v9_class.cc"' % configurations], + 'linesToProcess' : ["ROOT.gInterpreter.Declare('BDT_WH3l_OSSF_v9 BDT_WH3l_OSSF = BDT_WH3l_OSSF_v9(\"BDTG4C3\",\"{0}/ControlRegions/SS/data/BDT/2017/WH3l/OSSF/weights/TMVAClassification_BDTG4C3.weights.xml\");')".format(configurations)], + 'expr' : 'BDT_WH3l_OSSF(WH3l_dphilllmet,WH3l_mOSll,WH3l_ptOSll,WH3l_drOSll,WH3l_ZVeto,WH3l_mtlmet,WH3l_dphilmet,WH3l_ptWWW,PuppiMET_pt,Lepton_pt)', + 'samples' : mc + ['DATA','Fake'], +} + +aliases['BDT_WH3l_SSSF_new_v9'] = { + 'linesToAdd' : ['#include "%s/ControlRegions/SS/macros/BDT_WH3l_SSSF_v9_class.cc"' % configurations], + 'linesToProcess' : ["ROOT.gInterpreter.Declare('BDT_WH3l_SSSF_v9 BDT_WH3l_SSSF = BDT_WH3l_SSSF_v9(\"BDTG4C3\",\"{0}/ControlRegions/SS/data/BDT/2017/WH3l/SSSF/weights/TMVAClassification_BDTG4SK01_05shrinkage.weights.xml\");')".format(configurations)], + 'expr' : 'BDT_WH3l_SSSF(WH3l_dphilllmet,WH3l_mOSll,WH3l_ptOSll,WH3l_drOSll,WH3l_dphilmet,WH3l_ptWWW,PuppiMET_pt,Lepton_pt)', + 'samples' : mc + ['DATA','Fake'], +} diff --git a/ControlRegions/3l/Full2017_v9/configuration.py b/ControlRegions/3l/Full2017_v9/configuration.py new file mode 100644 index 00000000..d35bc7c4 --- /dev/null +++ b/ControlRegions/3l/Full2017_v9/configuration.py @@ -0,0 +1,105 @@ +# Configuration file for charge asymmetry WH3l analysis using the UL 2017 dataset + +import sys,inspect + +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' + +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/ControlRegions/SS/Full2018_v9/ + +configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file +configurations_nuisance = os.path.dirname(configurations_nuisance) # Full2017_v9 +configurations_nuisance = os.path.dirname(configurations_nuisance) # 3l +configurations_nuisance = os.path.dirname(configurations_nuisance) # ControlRegions + +# Tag used to identify the configuration folder version +tag = '3l_2017_v9' + +# File to use as runner script, default uses mkShapesRDF.shapeAnalysis.runner, otherwise specify path to script +runnerFile = "default" + +# Output file name +outputFile = "mkShapes__{}.root".format(tag) + +# Path to ouput folder +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +if site == 'kit': + outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" + +# Path to batch folder (used for condor submission) +batchFolder = "condor" + +# Path to configuration folder (will contain all the compiled configuration files) +configsFolder = "configs" + +# luminosity to normalize to (in 1/fb) +# https://github.com/latinos/LatinoAnalysis/blob/UL_production/NanoGardener/python/data/TrigMaker_cfg.py#L514 (519, 589, 660, 729, 798) +# 4.803371586 + 9.574029838 + 4.247792714 + 9.314581016 + 13.53990537 = 41.479680524 +lumi = 41.48 + +# File with dict of aliases to define +aliasesFile = "aliases.py" + +# File with dict of variables +variablesFile = "variables.py" + +# File with dict of cuts +cutsFile = "cuts.py" + +# File with dict of samples +samplesFile = "samples.py" + +# File with dict of samples for plotting +plotFile = 'plot.py' + +# File with dict of structure (used to define processes in combine) +structureFile = "structure.py" + +# Nuisances file for mkDatacards and for mkShape +nuisancesFile = "nuisances.py" + +# Path to folder where to save plots +plotPath = 'plots_' + tag + +# This lines are executed right before the runner on the condor node +mountEOS = [] + +# List of imports to import when compiling the whole configuration folder, it should not contain imports used by configuration.py +imports = ["os", "glob", ("collections", "OrderedDict"), "ROOT"] + +# List of files to compile +filesToExec = [ + samplesFile, + aliasesFile, + variablesFile, + cutsFile, + plotFile, + nuisancesFile, + structureFile, +] + +# List of variables to keep in the compiled configuration folder +varsToKeep = [ + "batchVars", + "outputFolder", + "batchFolder", + "configsFolder", + "outputFile", + "runnerFile", + "tag", + "samples", + "aliases", + "variables", + ("cuts", {"cuts": "cuts", "preselections": "preselections"}), + ("plot", {"plot": "plot", "groupPlot": "groupPlot", "legend": "legend"}), + "nuisances", + "structure", + "lumi", +] + +# List of variables to keep in the batch submission script (script.py) +batchVars = varsToKeep[varsToKeep.index("samples") :] + +varsToKeep += ['plotPath'] diff --git a/ControlRegions/3l/Full2017_v9/cuts.py b/ControlRegions/3l/Full2017_v9/cuts.py new file mode 100644 index 00000000..40670a46 --- /dev/null +++ b/ControlRegions/3l/Full2017_v9/cuts.py @@ -0,0 +1,46 @@ +# cuts + +cuts = {} + +# MinIf$( WH3l_mOSll[], WH3l_mOSll[Iteration$] > 0) > 12 +# Alt(WH3l_mOSll,0,9999) > 12 && Alt(WH3l_mOSll,1,9999) > 12 && Alt(WH3l_mOSll,2,9999) > 12 \ + +preselections = '(nLepton>=3 && Alt(Lepton_pt,3,0)<10) \ + && Alt(Lepton_pt,0,0)>25 \ + && Alt(Lepton_pt,1,0)>10 \ + && (abs(Lepton_pdgId[1])==13 || Lepton_pt[1]>13) \ + && Alt(Lepton_pt,2,0)>10 \ + && (WH3l_mOSll[0] < 0 || WH3l_mOSll[0] > 12) \ + && (WH3l_mOSll[1] < 0 || WH3l_mOSll[1] > 12) \ + && (WH3l_mOSll[2] < 0 || WH3l_mOSll[2] > 12) \ + && abs(WH3l_chlll) == 1 \ + && bVeto \ + ' + +## Signal region + +# SSSF +cuts['wh3l_13TeV_sssf'] = { + 'expr' : 'WH3l_flagOSSF == 0 && Alt(CleanJet_pt, 0, 0) < 30', + 'categories' : { + 'plus_pt2ge20' : 'Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]>0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15', + 'minus_pt2ge20' : 'Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]<0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15', + # 'plus_pt2lt20' : 'Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]>0 && Lepton_pt[1]<20', + # 'minus_pt2lt20' : 'Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]<0 && Lepton_pt[1]<20', + } +} + +# OSSF +cuts['wh3l_13TeV_ossf'] = { + 'expr' : 'WH3l_flagOSSF == 1 && WH3l_ZVeto > 20 && PuppiMET_pt > 40 && Alt(CleanJet_pt, 0, 0) < 30', + 'categories' : { + 'plus_pt2ge20' : 'Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]>0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15', + 'minus_pt2ge20' : 'Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]<0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15', + # 'plus_pt2lt20' : 'Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]>0 && Lepton_pt[1]<20', + # 'minus_pt2lt20' : 'Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]<0 && Lepton_pt[1]<20', + } +} + +# 11 = e +# 13 = mu +# 15 = tau diff --git a/ControlRegions/3l/Full2017_v9/nuisances.py b/ControlRegions/3l/Full2017_v9/nuisances.py new file mode 100644 index 00000000..2686505e --- /dev/null +++ b/ControlRegions/3l/Full2017_v9/nuisances.py @@ -0,0 +1,118 @@ +import sys + +nuisances = {} + +mcProduction = 'Summer20UL17_106x_nAODv9_Full2017v9' +dataReco = 'Run2017_UL2017_nAODv9_Full2017v9' +mcSteps = 'MCl1loose2017v9__MCCorr2017v9NoJERInHorn__l2tightOR2017v9' +fakeSteps = 'DATAl1loose2017v9__l2loose__fakeW' +dataSteps = 'DATAl1loose2017v9__l2loose__l2tightOR2017v9' + +treeBaseDir = '/eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano' +limitFiles = -1 + +mc = [skey for skey in samples if skey not in ('Fake', 'DATA')] + +redirector = "" + +useXROOTD = False + +def makeMCDirectory(var=''): + if var== '': + print(os.path.join(treeBaseDir, mcProduction, mcSteps)) + return os.path.join(treeBaseDir, mcProduction, mcSteps) + else: + print(os.path.join(treeBaseDir, mcProduction, mcSteps + '__' + var)) + return os.path.join(treeBaseDir, mcProduction, mcSteps + '__' + var) + +mcDirectory = makeMCDirectory() +fakeDirectory = os.path.join(treeBaseDir, dataReco, fakeSteps) +dataDirectory = os.path.join(treeBaseDir, dataReco, dataSteps) + +################################ EXPERIMENTAL UNCERTAINTIES ################################# + +#### Luminosity + +# https://twiki.cern.ch/twiki/bin/view/CMS/LumiRecommendationsRun2#LumiComb +# Uncorrelated 2016 1.0 +# Uncorrelated 2017 2.0 +# Uncorrelated 2018 1.5 +# Correlated 2016, 2017, 2018 0.6, 0.9, 2.0 +# Correlated 2017, 2018 0.6, 0.2 + +nuisances['lumi_Uncorrelated'] = { + 'name' : 'lumi_13TeV_2017', + 'type' : 'lnN', + 'samples' : dict((skey, '1.020') for skey in mc if skey not in ['WZ']) +} + +nuisances['lumi_Correlated_Run2'] = { + 'name' : 'lumi_13TeV_correlated', + 'type' : 'lnN', + 'samples' : dict((skey, '1.009') for skey in mc if skey not in ['WZ']) +} + +nuisances['lumi_Correlated_2017_2018'] = { + 'name' : 'lumi_13TeV_1718', + 'type' : 'lnN', + 'samples' : dict((skey, '1.006') for skey in mc if skey not in ['WZ']) +} + + +### Fakes + +# Per lepton +nuisances['fake_ele'] = { + 'name' : 'CMS_WH_hww_fake_e_2018', + 'kind' : 'weight', + 'type' : 'shape', + 'samples' : { + 'Fake_ee' : ['fakeWEleUp', 'fakeWEleDown'], + 'Fake_em' : ['fakeWEleUp', 'fakeWEleDown'], + } +} + +nuisances['fake_ele_stat'] = { + 'name' : 'CMS_WH_hww_fake_stat_e_2018', + 'kind' : 'weight', + 'type' : 'shape', + 'samples' : { + 'Fake_ee' : ['fakeWStatEleUp', 'fakeWStatEleDown'], + 'Fake_em' : ['fakeWStatEleUp', 'fakeWStatEleDown'], + } +} + + +nuisances['fake_mu'] = { + 'name' : 'CMS_WH_hww_fake_m_2018', + 'kind' : 'weight', + 'type' : 'shape', + 'samples' : { + 'Fake_mm' : ['fakeWMuUp', 'fakeWMuDown'], + 'Fake_em' : ['fakeWMuUp', 'fakeWMuDown'], + } +} + +nuisances['fake_mu_stat'] = { + 'name' : 'CMS_WH_hww_fake_stat_m_2018', + 'kind' : 'weight', + 'type' : 'shape', + 'samples' : { + 'Fake_mm' : ['fakeWStatMuUp', 'fakeWStatMuDown'], + 'Fake_em' : ['fakeWStatMuUp', 'fakeWStatMuDown'], + } +} + + +# Use the following if you want to apply the automatic combine MC stat nuisances. +nuisances['stat'] = { + 'type' : 'auto', + 'maxPoiss' : '10', + 'includeSignal' : '0', + 'samples' : {} +} +# nuisance ['maxPoiss'] = Number of threshold events for Poisson modelling +# nuisance ['includeSignal'] = Include MC stat nuisances on signal processes (1=True, 0=False) + +for n in nuisances.values(): + n['skipCMS'] = 1 diff --git a/ControlRegions/3l/Full2017_v9/plot.py b/ControlRegions/3l/Full2017_v9/plot.py new file mode 100644 index 00000000..1336ad05 --- /dev/null +++ b/ControlRegions/3l/Full2017_v9/plot.py @@ -0,0 +1,264 @@ +# plot configuration + +# Groups of samples to improve the plots. +# If not defined, normal plots is used + +groupPlot = {} + +groupPlot['top'] = { + 'nameHR' : 'tW+ and t#bar{t}', + 'isSignal' : 0, + 'color' : 400, # kYellow + 'samples' : ['top'] +} + +groupPlot['Fake'] = { + 'nameHR' : 'Non-prompt', + 'isSignal' : 0, + 'color' : 921, # kGray + 1 + 'samples' : ['Fake'] +} + +groupPlot['WW'] = { + 'nameHR' : 'WW', + 'isSignal' : 0, + 'color' : 851, # kAzure -9 + 'samples' : ['WW'] # , 'ggWW', 'WWewk'] +} + +groupPlot['VVV'] = { + 'nameHR' : 'VVV', + 'isSignal' : 0, + 'color' : 857, # kAzure -3 + 'samples' : ['VVV'] +} + +groupPlot['Vg'] = { + 'nameHR' : "W#gamma", + 'isSignal' : 0, + 'color' : 859, + 'samples' : ['Vg'] +} + +groupPlot['VgS'] = { + 'nameHR' : "V#gamma*", + 'isSignal' : 0, + 'color' : 409, # kGreen - 9 + 'samples' : ['VgS'] +} + +groupPlot['ZZ'] = { + 'nameHR' : "ZZ", + 'isSignal' : 0, + 'color' : 617, # kViolet + 1 + 'samples' : ['ZZ'] +} + +groupPlot['WZ'] = { + 'nameHR' : "WZ", + 'isSignal' : 0, + 'color' : 619, # kViolet + 1 + 'samples' : ['WZ'] +} + +groupPlot['Higgs'] = { + 'nameHR' : 'Higgs', + 'isSignal' : 0, + 'color' : 632, # kRed + 'samples' : ['ggH_hww','qqH_hww','ZH_hww','ggZH_hww','ttH_hww','ggH_hww','qqH_htt','ZH_htt'] +} + +groupPlot['WH_minus'] = { + 'nameHR' : 'W^{-} H (x 10)', + 'isSignal' : 2, + 'color' : 600, # kBlue + 'samples' : ['WH_hww_minus','WH_htt_minus'] +} + +groupPlot['WH_plus'] = { + 'nameHR' : 'W^{+} H (x 10)', + 'isSignal' : 2, + 'color' : 632, # kRed + 'samples' : ['WH_hww_plus', 'WH_htt_plus'] +} + + +# keys here must match keys in samples.py + +plot = {} + +plot['top'] = { + 'nameHR' : 'tW and t#bar{t}', + 'color' : 400, # kYellow + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0, +} + +plot['WW'] = { + 'color' : 851, # kAzure -9 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['Vg'] = { + 'color' : 859, # kAzure -1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['VgS'] = { + 'color' : 617, # kViolet + 1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['ZZ'] = { + 'color' : 858, # kAzure -2 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['WZ'] = { + 'color' : 858, # kAzure -2 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.138*1.12 # NLO -> NNLO k-factor! +} + +plot['VVV'] = { + 'color' : 857, # kAzure -3 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +########### +# Signals # +########### + +# HWW + +plot['ggH_hww'] = { + 'color' : 632, # kRed + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['qqH_hww'] = { + 'color' : 632+1, # kRed+1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['ZH_hww'] = { + 'color' : 632+3, # kRed+3 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['ggZH_hww'] = { + 'color' : 632+4, # kRed+4 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['WH_hww_minus'] = { + 'color' : 600, # kBlue + 'isSignal' : 2, + 'isData' : 0, + 'scale' : 10 +} + +plot['WH_hww_plus'] = { + 'color' : 632+2, # kRed+2 + 'isSignal' : 2, + 'isData' : 0, + 'scale' : 10 +} + +plot['ttH_hww'] = { + 'color' : 632+3, # kRed+3 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + + +# Htautau + +plot['ggH_htt'] = { + 'color' : 632, # kRed + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['qqH_htt'] = { + 'color' : 632+1, # kRed+1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['ZH_htt'] = { + 'color' : 632+3, # kRed+3 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['WH_htt_plus'] = { + 'color' : 632+2, # kRed+2 + 'isSignal' : 1, + 'isData' : 0, + 'scale' : 10 +} + +plot['WH_htt_minus'] = { + 'color' : 632+2, # kRed+2 + 'isSignal' : 1, + 'isData' : 0, + 'scale' : 10 +} + + +######## +# Fake # +######## + +plot['Fake'] = { + 'color' : 921, # kGray + 1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + + +######## +# Data # +######## + +plot['DATA'] = { + 'nameHR' : 'Data', + 'color' : 1 , + 'isSignal' : 0, + 'isData' : 1, + 'isBlind' : 0 +} + + +# Define legend + +legend = {} + +legend['lumi'] = 'L = 41.5 fb^{-1}' +legend['sqrt'] = '#sqrt{s} = 13 TeV' diff --git a/ControlRegions/3l/Full2017_v9/repeat.sh b/ControlRegions/3l/Full2017_v9/repeat.sh new file mode 100644 index 00000000..6d5b8951 --- /dev/null +++ b/ControlRegions/3l/Full2017_v9/repeat.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +if [ $# -eq 0 ]; then + echo "$0: Missing arguments" + exit 1 +else + echo "We got some argument(s)" + echo "===========================" + echo "Number of arguments. : $#" + echo "List of arguments... : $@" + echo "Arg #1: sample : $1" + echo "Arg #2: compile : $2" + echo "===========================" + SAMPLE=$1 + COMPILE=$2 +fi + +# Site definition +hostname=$(uname -a | awk '{print $2}') + + +if [ "$COMPILE" == "True" ]; then + mkShapesRDF -c 1 + mkShapesRDF -o 0 -f . -b 1 -dR 1 +fi +cd condor/3l_2017_v9/${SAMPLE}/ +cp ../../../../../../../mkShapesRDF/mkShapesRDF/include/headers.hh ../../../../../../../mkShapesRDF/mkShapesRDF/shapeAnalysis/runner.py . +python runner.py + +if [[ "$hostname" == *portal* || "$hostname" == *bms* ]]; then + echo "We are at KIT" + cp output.root /ceph/${USER}/mkShapesRDF_rootfiles/3l_2017_v9/rootFile/mkShapes__3l_2017_v9__ALL__${SAMPLE}.root +else + echo "We are on lxplus" + cp output.root /eos/user/${USER:0:1}/${USER}/mkShapesRDF_rootfiles/3l_2017_v9/rootFile/mkShapes__3l_2017_v9__ALL__${SAMPLE}.root +fi + +rm output.root diff --git a/ControlRegions/3l/Full2017_v9/samples.py b/ControlRegions/3l/Full2017_v9/samples.py new file mode 100644 index 00000000..b3a2c0c7 --- /dev/null +++ b/ControlRegions/3l/Full2017_v9/samples.py @@ -0,0 +1,332 @@ +import os,glob + +################################################ +################# SKIMS ######################## +################################################ + +# MC: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Summer20UL17_106x_nAODv9_Full2017v9/MCl1loose2017v9__MCCorr2017v9NoJERInHorn__l2tightOR2017v9/ +# DATA: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Run2017_UL2017_nAODv9_Full2017v9/DATAl1loose2017v9__l2loose__l2tightOR2017v9/ +# FAKE: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Run2017_UL2017_nAODv9_Full2017v9/DATAl1loose2017v9__l2loose__fakeW/ + +mcProduction = 'Summer20UL17_106x_nAODv9_Full2017v9' +dataReco = 'Run2017_UL2017_nAODv9_Full2017v9' +mcSteps = 'MCl1loose2017v9__MCCorr2017v9NoJERInHorn__l2tightOR2017v9{var}' +fakeSteps = 'DATAl1loose2017v9__l2loose__fakeW' +dataSteps = 'DATAl1loose2017v9__l2loose__l2tightOR2017v9' + +############################################## +###### Tree base directory for the site ###### +############################################## + +treeBaseDir = '/eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano' +limitFiles = -1 + +def makeMCDirectory(var=''): + return os.path.join(treeBaseDir, mcProduction, mcSteps.format(var='')) + +mcDirectory = makeMCDirectory() +fakeDirectory = os.path.join(treeBaseDir, dataReco, fakeSteps) +dataDirectory = os.path.join(treeBaseDir, dataReco, dataSteps) + +samples = {} + +from mkShapesRDF.lib.search_files import SearchFiles +s = SearchFiles() + +useXROOTD = True +redirector = 'root://eoscms.cern.ch/' + +def nanoGetSampleFiles(path, name): + _files = s.searchFiles(path, name, redirector=redirector) + if limitFiles != -1 and len(_files) > limitFiles: + return [(name, _files[:limitFiles])] + else: + return [(name, _files)] + +def CombineBaseW(samples, proc, samplelist): + _filtFiles = list(filter(lambda k: k[0] in samplelist, samples[proc]['name'])) + _files = list(map(lambda k: k[1], _filtFiles)) + _l = list(map(lambda k: len(k), _files)) + leastFiles = _files[_l.index(min(_l))] + dfSmall = ROOT.RDataFrame('Runs', leastFiles) + s = dfSmall.Sum('genEventSumw').GetValue() + f = ROOT.TFile.Open(leastFiles[0]) + t = f.Get('Events') + t.GetEntry(1) + xs = t.baseW * s + + __files = [] + for f in _files: + __files += f + df = ROOT.RDataFrame('Runs', __files) + s = df.Sum('genEventSumw').GetValue() + newbaseW = str(xs / s) + weight = newbaseW + '/baseW' + + for iSample in samplelist: + addSampleWeight(samples, proc, iSample, weight) + +def addSampleWeight(samples, sampleName, sampleNameType, weight): + obj = list(filter(lambda k: k[0] == sampleNameType, samples[sampleName]['name']))[0] + samples[sampleName]['name'] = list(filter(lambda k: k[0] != sampleNameType, samples[sampleName]['name'])) + if len(obj) > 2: + samples[sampleName]['name'].append((obj[0], obj[1], obj[2] + '*(' + weight + ')')) + else: + samples[sampleName]['name'].append((obj[0], obj[1], '(' + weight + ')' )) + + +################################################ +############ DATA DECLARATION ################## +################################################ + +DataRun = [ + ['B','Run2017B-UL2017-v1'], + ['C','Run2017C-UL2017-v1'], + ['D','Run2017D-UL2017-v1'], + ['E','Run2017E-UL2017-v1'], + ['F','Run2017F-UL2017-v1'], +] + +DataSets = ['MuonEG','SingleMuon','SingleElectron','DoubleMuon', 'DoubleEG'] + +DataTrig = { + 'MuonEG' : ' Trigger_ElMu' , + 'SingleMuon' : '!Trigger_ElMu && Trigger_sngMu' , + 'SingleElectron' : '!Trigger_ElMu && !Trigger_sngMu && Trigger_sngEl', + 'DoubleMuon' : '!Trigger_ElMu && !Trigger_sngMu && !Trigger_sngEl && Trigger_dblMu', + 'DoubleEG' : '!Trigger_ElMu && !Trigger_sngMu && !Trigger_sngEl && !Trigger_dblMu && Trigger_dblEl' +} + +######################################### +############ MC COMMON ################## +######################################### + +# SFweight does not include btag weights +mcCommonWeight = 'XSWeight*SFweight*METFilter_MC' +mcCommonWeightMatched = 'XSWeight*SFweight*PromptGenLepMatch3l*METFilter_MC' + +########################################### +############# BACKGROUNDS ############### +########################################### + +##### Top ####### +files = nanoGetSampleFiles(mcDirectory, 'TTTo2L2Nu') + \ + nanoGetSampleFiles(mcDirectory, 'ST_s-channel') + \ + nanoGetSampleFiles(mcDirectory, 'ST_t-channel_top') + \ + nanoGetSampleFiles(mcDirectory, 'ST_t-channel_antitop') + \ + nanoGetSampleFiles(mcDirectory, 'ST_tW_antitop') + \ + nanoGetSampleFiles(mcDirectory, 'ST_tW_top') + +samples['top'] = { + 'name': files, + 'weight': mcCommonWeightMatched, + 'FilesPerJob': 8, +} +addSampleWeight(samples,'top','TTTo2L2Nu','Top_pTrw') + +###### WW ######## +samples['WW'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'WWTo2L2Nu'), + 'weight': mcCommonWeightMatched + '*nllW*ewknloW', + 'FilesPerJob': 4, +} + +######## Vg ######## +files = nanoGetSampleFiles(mcDirectory, 'Wg_AMCNLOFXFX_01J') + \ + nanoGetSampleFiles(mcDirectory, 'ZGToLLG') + +samples['Vg'] = { + 'name': files, + 'weight': mcCommonWeight + '*(Gen_ZGstar_mass <= 0)', + 'FilesPerJob': 4, +} + +######## VgS ######## +files = nanoGetSampleFiles(mcDirectory, 'Wg_AMCNLOFXFX_01J') + \ + nanoGetSampleFiles(mcDirectory, 'WZTo3LNu_mllmin0p1') + \ + nanoGetSampleFiles(mcDirectory, 'ZGToLLG') + +samples['VgS'] = { + 'name': files, + 'weight': mcCommonWeightMatched, + 'FilesPerJob': 4, +} +addSampleWeight(samples, 'VgS', 'Wg_AMCNLOFXFX_01J', '((Gen_ZGstar_mass > 0 && Gen_ZGstar_mass <= 0.1))*(gstarLow*0.94)') +addSampleWeight(samples, 'VgS', 'WZTo3LNu_mllmin0p1', '((Gen_ZGstar_mass > 0.1)*(0.601644*58.59/4.666))*(gstarLow*0.94)') +addSampleWeight(samples, 'VgS', 'ZGToLLG', '(Gen_ZGstar_mass > 0)') + +############ ZZ ############ +files = nanoGetSampleFiles(mcDirectory, 'ZZTo4L') + +samples['ZZ'] = { + 'name': files, + 'weight': mcCommonWeightMatched, + 'FilesPerJob': 1, +} + + +############ WZ ############ +files = nanoGetSampleFiles(mcDirectory, 'WZTo3LNu_mllmin0p1') + +samples['WZ'] = { + 'name': files, + 'weight': mcCommonWeightMatched + ' * (gstarHigh)', + 'FilesPerJob': 4, +} +addSampleWeight(samples, 'WZ', 'WZTo3LNu_mllmin0p1', '(0.601644*58.59/4.666)') + + +########## VVV ######### +files = nanoGetSampleFiles(mcDirectory, 'ZZZ') + \ + nanoGetSampleFiles(mcDirectory, 'WZZ') + \ + nanoGetSampleFiles(mcDirectory, 'WWZ') + \ + nanoGetSampleFiles(mcDirectory, 'WWW') + +samples['VVV'] = { + 'name': files, + 'weight': mcCommonWeight, + 'FilesPerJob': 8, +} + +########################################### +############# SIGNALS ################## +########################################### + +signals = [] + +############ ggH H->WW ############ +samples['ggH_hww'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'GluGluHToWWTo2L2Nu_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 4, +} +signals.append('ggH_hww') + +############ VBF H->WW ############ +samples['qqH_hww'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'VBFHToWWTo2L2Nu_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 8, +} +signals.append('qqH_hww') + +############ ZH H->WW ############ +samples['ZH_hww'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'HZJ_HToWW_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 8, +} +signals.append('ZH_hww') + +samples['ggZH_hww'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'GluGluZH_HToWWTo2L2Nu_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 8, +} +signals.append('ggZH_hww') + +############ WH H->WW ############ +samples['WH_hww_plus'] = { + # 'name': nanoGetSampleFiles(mcDirectory, 'HWplusJ_HToWWTo2L2Nu_WTo2L_M125'), + 'name': nanoGetSampleFiles(mcDirectory, 'HWplusJ_HToWW_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 4, +} +signals.append('WH_hww_plus') + +samples['WH_hww_minus'] = { + # 'name': nanoGetSampleFiles(mcDirectory, 'HWminusJ_HToWWTo2L2Nu_WTo2L_M125'), + 'name': nanoGetSampleFiles(mcDirectory, 'HWminusJ_HToWW_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 4, +} +signals.append('WH_hww_minus') + +############ ttH ############ +samples['ttH_hww'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'ttHToNonbb_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 4, +} +signals.append('ttH_hww') + +############ H->TauTau ############ +samples['ggH_htt'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'GluGluHToTauTau_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 20, +} +signals.append('ggH_htt') + +samples['qqH_htt'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'VBFHToTauTau_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 10, +} +signals.append('qqH_htt') + +samples['ZH_htt'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'ZHToTauTau_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 8, +} +signals.append('ZH_htt') + +############ WH H->TauTau ############ +samples['WH_htt_plus'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'WplusHToTauTau_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 8, +} +signals.append('WH_htt_plus') + +samples['WH_htt_minus'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'WminusHToTauTau_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 8, +} +signals.append('WH_htt_minus') + + +########################################### +################## FAKE ################### +########################################### + +samples['Fake'] = { + 'name': [], + 'weight': 'METFilter_DATA*fakeW', + 'weights': [], + 'isData': ['all'], + 'FilesPerJob': 50 +} + +for _, sd in DataRun: + for pd in DataSets: + tag_data = pd + '_' + sd + + files = nanoGetSampleFiles(fakeDirectory, tag_data) + + samples['Fake']['name'].extend(files) + addSampleWeight(samples, 'Fake', tag_data, DataTrig[pd]) + + +########################################### +################## DATA ################### +########################################### + +samples['DATA'] = { + 'name': [], + 'weight': 'LepWPCut*METFilter_DATA', + 'weights': [], + 'isData': ['all'], + 'FilesPerJob': 50 +} + +for _, sd in DataRun: + for pd in DataSets: + tag_data = pd + '_' + sd + + files = nanoGetSampleFiles(dataDirectory, tag_data) + + samples['DATA']['name'].extend(files) + addSampleWeight(samples, 'DATA', tag_data, DataTrig[pd]) diff --git a/ControlRegions/3l/Full2017_v9/structure.py b/ControlRegions/3l/Full2017_v9/structure.py new file mode 100644 index 00000000..6e7afcc8 --- /dev/null +++ b/ControlRegions/3l/Full2017_v9/structure.py @@ -0,0 +1,121 @@ +# structure configuration for datacard + +# keys here must match keys in samples.py + +structure = {} + +structure['top'] = { + 'isSignal' : 0, + 'isData' : 0 +} + +structure['WW'] = { + 'isSignal' : 0, + 'isData' : 0 +} + +structure['Vg'] = { + 'isSignal' : 0, + 'isData' : 0 +} + +structure['VgS'] = { + 'isSignal' : 0, + 'isData' : 0 +} + +structure['ZZ'] = { + 'isSignal' : 0, + 'isData' : 0 +} + +structure['WZ'] = { + 'isSignal' : 0, + 'isData' : 0, + 'scaleSampleForDatacard' : 1.138 # NLO -> NNLO k-factor +} + +structure['VVV'] = { + 'isSignal' : 0, + 'isData' : 0 +} + +structure['ggH_hww'] = { + 'isSignal' : 0, + 'isData' : 0 +} + +structure['qqH_hww'] = { + 'isSignal' : 0, + 'isData' : 0 +} + +structure['ZH_hww'] = { + 'isSignal' : 0, + 'isData' : 0 +} + +structure['ggZH_hww'] = { + 'isSignal' : 0, + 'isData' : 0 +} + +structure['WH_hww_plus'] = { + 'isSignal' : 1, + 'isData' : 0, + 'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity +} + +structure['WH_hww_minus'] = { + 'isSignal' : 1, + 'isData' : 0, + 'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity +} + +structure['ttH_hww'] = { + 'isSignal' : 0, + 'isData' : 0 +} + +structure['ggH_htt'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['qqH_htt'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['ZH_htt'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['WH_htt_plus'] = { + 'isSignal' : 1, + 'isData' : 0, + 'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity +} + +structure['WH_htt_minus'] = { + 'isSignal' : 1, + 'isData' : 0, + 'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity +} + +structure['Fake'] = { + 'isSignal' : 0, + 'isData' : 0 +} + + +# Data +structure['DATA'] = { + 'isSignal' : 0, + 'isData' : 1 +} + + + + diff --git a/ControlRegions/3l/Full2017_v9/variables.py b/ControlRegions/3l/Full2017_v9/variables.py new file mode 100644 index 00000000..ccbcbbc1 --- /dev/null +++ b/ControlRegions/3l/Full2017_v9/variables.py @@ -0,0 +1,285 @@ +# variables + +# 0 = not fold (default), 1 = fold underflowbin, 2 = fold overflow bin, 3 = fold underflow and overflow + +variables = {} + +variables['events'] = { + 'name' : '1', + 'range' : (1,0,2), + 'xaxis' : 'events', + 'fold' : 3 +} + +################### +# Control variables +################### + +variables['BDTG6_TT'] = { + 'name' : 'BDT_WHSS_TopSemileptonic_v9', + 'range' : (40,-1,1), + 'xaxis' : 'BDT discriminant', + 'fold' : 3, +} + +variables['BDT_WH3l_OSSF_new_v9'] = { + 'name' : 'BDT_WH3l_OSSF_new_v9', + 'range' : (40,-1.,1.), + 'xaxis' : 'MVA discriminant', + 'fold' : 3, +} + +variables['BDT_WH3l_SSSF_new_v9'] = { + 'name' : 'BDT_WH3l_SSSF_new_v9', + 'range' : (40,-1.,1.), + 'xaxis' : 'MVA discriminant', + 'fold' : 3, +} + +variables['pt1'] = { + 'name' : 'Lepton_pt[0]', + 'range' : (30,0,150), + 'xaxis' : 'p_{T} 1st lep', + 'fold' : 0 +} + +variables['pt2'] = { + 'name' : 'Lepton_pt[1]', + 'range' : (30,0,100), + 'xaxis' : 'p_{T} 2nd lep', + 'fold' : 3 +} + +variables['conept1'] = { + 'name' : 'Lepton_conept[0]', + 'range' : (30,0,150), + 'xaxis' : 'p_{T} 1st lep', + 'fold' : 0 +} + +variables['conept2'] = { + 'name' : 'Lepton_conept[1]', + 'range' : (30,0,100), + 'xaxis' : 'p_{T} 2nd lep', + 'fold' : 3 +} + +variables['eta1'] = { + 'name' : 'Lepton_eta[0]', + 'range' : (50,-2.5,2.5), + 'xaxis' : '#eta 1st lep', + 'fold' : 3 +} + +variables['eta2'] = { + 'name' : 'Lepton_eta[1]', + 'range' : (50,-2.5,2.5), + 'xaxis' : '#eta 2nd lep', + 'fold' : 3 +} + +variables['detall'] = { + 'name' : 'abs(Lepton_eta[0] - Lepton_eta[1])', + 'range' : (20,0.,5.), + 'xaxis' : '#Delta#eta_{#ell #ell}', + 'fold' : 3 +} + +variables['dphill'] = { + 'name' : 'abs(dphill)', + 'range' : (20, 0,3.2), + 'xaxis' : '#Delta#phi_{ll}', + 'fold' : 3 +} + +variables['drll'] = { + 'name' : 'abs(drll)', + 'range' : (20, 0,5.), + 'xaxis' : '#Delta#R_{ll}', + 'fold' : 3 +} + +variables['mll'] = { + 'name' : 'mll', + 'range' : (25, 0,250), + 'xaxis' : 'm_{ll} [GeV]', + 'fold' : 0 +} + +variables['ptll'] = { + 'name' : 'ptll', + 'range' : (20, 0,200), + 'xaxis' : 'p_{T}^{ll} [GeV]', + 'fold' : 0 +} + + +variables['jetpt1'] = { + 'name' : 'CleanJet_pt[0]*(CleanJet_pt[0]>30)', + 'range' : (40,0,400), + 'xaxis' : 'p_{T} 1st jet', + 'fold' : 2 +} + +variables['jetpt2'] = { + 'name' : 'CleanJet_pt[1]*(CleanJet_pt[1]>30)', + 'range' : (40,0,200), + 'xaxis' : 'p_{T} 2nd jet', + 'fold' : 0 +} + +variables['jeteta1'] = { + 'name' : 'CleanJet_eta[0]*(CleanJet_pt[0]>30)', + 'range' : (50,-5,5), + 'xaxis' : '#eta 1st jet', + 'fold' : 2 +} + +variables['jeteta2'] = { + 'name' : 'CleanJet_eta[1]*(CleanJet_pt[1]>30)', + 'range' : (50,-5,5), + 'xaxis' : '#eta 2nd jet', + 'fold' : 0 +} + +variables['detajj'] = { + 'name' : 'abs(CleanJet_eta[0] - CleanJet_eta[1])*(CleanJet_pt[1]>30)', + 'range' : (20,0.,10.), + 'xaxis' : '#Delta#eta_{jj}', + 'fold' : 3 +} + +variables['dphijj'] = { + 'name' : 'dphijj', + 'range' : (20,0,3.2), + 'xaxis' : '#Delta#phi_{jj}', + 'fold' : 3 +} + +variables['mjj'] = { + 'name' : 'mjj*(CleanJet_pt[1]>30)', + 'range' : (20,0,1000), + 'xaxis' : 'm_{jj} [GeV]', + 'fold' : 3 +} + + +variables['puppimet'] = { + 'name' : 'PuppiMET_pt', + 'range' : (20,0,200), + 'xaxis' : 'PUPPI met [GeV]', + 'fold' : 3 +} + + +variables['mlljj20'] = { + 'name' : 'mlljj20_whss', + 'range' : (20,0,1000), + 'xaxis' : 'mlljj20 [GeV]', + 'fold' : 3 +} + +variables['mth'] = { + 'name' : 'mth', + 'range' : (50,0,250), + 'xaxis' : 'm_{T}^{H} [GeV]', + 'fold' : 0 +} + +variables['mtw1'] = { + 'name' : 'mtw1', + 'range' : (50,0,250), + 'xaxis' : 'm_{T}^{W_{1}} [GeV]', + 'fold' : 3 +} + +variables['mtw2'] = { + 'name' : 'mtw2', + 'range' : (50,0,200), + 'xaxis' : 'm_{T}^{W_{2}} [GeV]', + 'fold' : 3 +} + +variables['dphilljet'] = { + 'name' : 'dphilljet', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilljet', + 'fold' : 3 +} + +variables['dphilljetjet'] = { + 'name' : 'dphilljetjet*(CleanJet_pt[1]>30)', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilljetjet', + 'fold' : 3 +} + +variables['dphilmet'] = { + 'name' : 'dphilmet', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilmet', + 'fold' : 3 +} + +variables['dphilmet2'] = { + 'name' : 'dphilmet2', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilmet2', + 'fold' : 3 +} + +variables['dphillmet'] = { + 'name' : 'dphillmet', + 'range' : (20,0,3.2), + 'xaxis' : 'dphillmet', + 'fold' : 3 +} + +variables['dphilep1jet1'] = { + 'name' : 'dphilep1jet1', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilep1jet1', + 'fold' : 3 +} + +variables['dphilep1jet2'] = { + 'name' : 'dphilep1jet2*(CleanJet_pt[1]>30)', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilep1jet2', + 'fold' : 3 +} + +variables['dphilep2jet1'] = { + 'name' : 'dphilep2jet1', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilep2jet1', + 'fold' : 3 +} + +variables['dphilep2jet2'] = { + 'name' : 'dphilep2jet2*(CleanJet_pt[1]>30)', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilep1jet2', + 'fold' : 3 +} + +variables['dphijjmet'] = { + 'name' : 'dphijjmet', + 'range' : (20,0,3.2), + 'xaxis' : 'dphijjmet', + 'fold' : 3 +} + +variables['ht'] = { + 'name' : 'ht', + 'range' : (30,0,1500), + 'xaxis' : 'ht [GeV]', + 'fold' : 3 +} + +variables['dphijet1met'] = { + 'name' : 'dphijet1met', + 'range' : (20,0,3.2), + 'xaxis' : 'dphijet1met', + 'fold' : 3 +} From f4c690df4735d8a62d88d3808865400427f15c24 Mon Sep 17 00:00:00 2001 From: ntrevisa Date: Thu, 14 Aug 2025 16:57:30 +0200 Subject: [PATCH 14/44] 3l control region 2016noHIPM --- ControlRegions/3l/2016noHIPM/README.md | 117 ++++++ ControlRegions/3l/2016noHIPM/aliases.py | 338 +++++++++++++++ ControlRegions/3l/2016noHIPM/configuration.py | 105 +++++ ControlRegions/3l/2016noHIPM/cuts.py | 46 +++ ControlRegions/3l/2016noHIPM/nuisances.py | 112 +++++ ControlRegions/3l/2016noHIPM/plot.py | 264 ++++++++++++ ControlRegions/3l/2016noHIPM/repeat.sh | 38 ++ ControlRegions/3l/2016noHIPM/samples.py | 387 ++++++++++++++++++ ControlRegions/3l/2016noHIPM/structure.py | 121 ++++++ ControlRegions/3l/2016noHIPM/variables.py | 285 +++++++++++++ 10 files changed, 1813 insertions(+) create mode 100644 ControlRegions/3l/2016noHIPM/README.md create mode 100644 ControlRegions/3l/2016noHIPM/aliases.py create mode 100644 ControlRegions/3l/2016noHIPM/configuration.py create mode 100644 ControlRegions/3l/2016noHIPM/cuts.py create mode 100644 ControlRegions/3l/2016noHIPM/nuisances.py create mode 100644 ControlRegions/3l/2016noHIPM/plot.py create mode 100644 ControlRegions/3l/2016noHIPM/repeat.sh create mode 100644 ControlRegions/3l/2016noHIPM/samples.py create mode 100644 ControlRegions/3l/2016noHIPM/structure.py create mode 100644 ControlRegions/3l/2016noHIPM/variables.py diff --git a/ControlRegions/3l/2016noHIPM/README.md b/ControlRegions/3l/2016noHIPM/README.md new file mode 100644 index 00000000..830ccadd --- /dev/null +++ b/ControlRegions/3l/2016noHIPM/README.md @@ -0,0 +1,117 @@ +# Three leptons control region + +This configuration plots control distributions for the three-leptons phase space + +The instructions to run the analysis follow. + +### Load the mkShapesRDF environment + +Here, we assume `PlotsConfigurationsRun3` was installed in the same directory as `mkShapesRDF`. E.g., let's assume we have a `Run3` directory where we installed both `mkShapesRDF` and `PlotsConfigurationsRun3`. + +Then, we can source the `mkShapesRDF` environment using these commands: + + cd ../../../mkShapesRDF/ + + source start.sh + + cd - + +### Produce distributions using mkShapesMulti.py in batch mode + +Compile the configuration. Do it after every change to any file in this directory: + + mkShapesRDF -c 1 + +Produce histograms using batch: + + mkShapesRDF -c 1 -o 0 -f . -b 1 + +Check jobs status: + + mkShapesRDF -o 1 -f . + +Resubmit failed jobs: + + mkShapesRDF -o 1 -f . -r 1 + +Merge rootfiles: + + mkShapesRDF -o 2 -f . + +Plot distributions: + + mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png + +### Perform goodness of fit test + +Create datacards: + + mkDatacards + +Produce workspaces: + + mkdir -p GoF + + cd GoF/ + + VARIABLE=mjj + FINAL_STATE=mm_2j_SS_CR_plus + OUT_NAME=_${FINAL_STATE}_${VARIABLE} + + combineTool.py -M T2W -m 125 \ + -o datacard.root \ + -i ../datacards/hww2l2v_13TeV_WH_SS_${FINAL_STATE}_pt2ge20/${VARIABLE}/datacard.txt \ + --channel-masks \ + -P HiggsAnalysis.CombinedLimit.PhysicsModel:multiSignalModel \ + --PO 'map=.*/WH_h.*_plus:r_WH[1,-10.0,10.0]' \ + --PO 'map=.*/WH_h.*_minus:r_WH[1,-10.0,10.0]' + +Perform fit on real data: + + combineTool.py -M GoodnessOfFit ../datacards/hww2l2v_13TeV_WH_SS_${FINAL_STATE}_pt2ge20/${VARIABLE}/datacard.root \ + --algo=saturated \ + --setParameters r_WH=1 \ + --setParameterRanges r_WH=-5,5 \ + --redefineSignalPOIs r_WH \ + -n ${OUT_NAME} + +Produce toys based on the predictions: + + combineTool.py -M GoodnessOfFit ../datacards/hww2l2v_13TeV_WH_SS_${FINAL_STATE}_pt2ge20/${VARIABLE}/datacard.root \ + --algo=saturated \ + -t 1 \ + -s 0:10:1 \ + --dry-run \ + --job-mode=condor \ + --setParameters r_WH=1 \ + --setParameterRanges r_WH=-5,5 \ + --redefineSignalPOIs r_WH \ + -n ${OUT_NAME} + +Modify the sh file in order to submit 10 jobs running the 100 toys + + sed -i 's/-t 1/-t 10/g' condor_combine_task.sh + +If you run on the KIT machines, remember to adapt the submission file to the HTCondor requirements, by adding these lines to the top of `condor_combine_task.sub`: + + text_to_add=$'universe = container\ncontainer_image = /cvmfs/unpacked.cern.ch/registry.hub.docker.com/cverstege/alma9-gridjob:latest' + + printf "%s\n" "$text_to_add" | cat - condor_combine_task.sub > temp && mv temp condor_combine_task.sub + +Submit the jobs to condor + + condor_submit condor_combine_task.sub + +Once all jobs are done, merge the output and plot the results: + + hadd -f higgsCombine_${OUT_NAME}.GoodnessOfFit.mH120.toys.root higgsCombine${OUT_NAME}.GoodnessOfFit.mH120.*.root + + combineTool.py -M CollectGoodnessOfFit --input higgsCombine${OUT_NAME}.GoodnessOfFit.mH120.root higgsCombine_${OUT_NAME}.GoodnessOfFit.mH120.toys.root -m 125 -o GoF_${OUT_NAME}.json + + plotGof.py GoF_${OUT_NAME}.json --statistic saturated --mass 120.0 -o GoF_${OUT_NAME} --title-right=${OUT_NAME} --range 0 200 + +Clean the mess: + + rm combine* + rm condor* + rm higgsCombine* diff --git a/ControlRegions/3l/2016noHIPM/aliases.py b/ControlRegions/3l/2016noHIPM/aliases.py new file mode 100644 index 00000000..b667a15d --- /dev/null +++ b/ControlRegions/3l/2016noHIPM/aliases.py @@ -0,0 +1,338 @@ +import os +import copy +import inspect + +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/ControlRegions/3l/2017noHIPM_v9/ + +configurations = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file +configurations = os.path.dirname(configurations) # 2016noHIPM_v9 +configurations = os.path.dirname(configurations) # 3l +configurations = os.path.dirname(configurations) # ControlRegions +configurations = os.path.dirname(configurations) # PlotsConfigurationsRun3 + +aliases = {} +aliases = OrderedDict() + +mc = [skey for skey in samples if skey not in ('Fake', 'DATA')] + + +# LepCut2l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight80x_tthmva_82 +eleWP = 'mvaFall17V2Iso_WP90' +muWP = 'cut_Tight80x' + +aliases['LepWPCut'] = { + 'expr' : 'LepCut3l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight80x*\ + ( ((abs(Lepton_pdgId[0])==13 && Muon_mvaTTH[Lepton_muonIdx[0]]>0.82) || (abs(Lepton_pdgId[0])==11 && Lepton_mvaTTH_UL[0]>0.90)) \ + && ((abs(Lepton_pdgId[1])==13 && Muon_mvaTTH[Lepton_muonIdx[1]]>0.82) || (abs(Lepton_pdgId[1])==11 && Lepton_mvaTTH_UL[1]>0.90)) \ + && ((abs(Lepton_pdgId[2])==13 && Muon_mvaTTH[Lepton_muonIdx[2]]>0.82) || (abs(Lepton_pdgId[2])==11 && Lepton_mvaTTH_UL[2]>0.90)) )', + 'samples' : mc + ['DATA'] +} + +# Lepton SF (not considering the ttHMVA discriminant) +aliases['LepWPSF'] = { + 'expr' : 'LepSF3l__ele_'+eleWP+'__mu_'+muWP, + 'samples' : mc +} + +# ttHMVA SFs and uncertainties +aliases['LepWPttHMVASF'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/ttHMVASF_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('ttHMVASF ttH = ttHMVASF(\"2016noHIPM\", 3, \"all\", \"nominal\",\"{configurations}/WH_chargeAsymmetry/UL/data/\");')"], + 'expr' : 'ttH(Lepton_pt, Lepton_eta, Lepton_pdgId)', + 'samples' : mc +} + +aliases['LepWPttHMVASFEleUp'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/ttHMVASF_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('ttHMVASF ttH_EleUp = ttHMVASF(\"2016noHIPM\", 3, \"all\", \"eleUp\" ,\"{configurations}/WH_chargeAsymmetry/UL/data/\");')"], + 'expr' : 'ttH_EleUp(Lepton_pt, Lepton_eta, Lepton_pdgId)', + 'samples' : mc +} +aliases['LepWPttHMVASFEleDown'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/ttHMVASF_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('ttHMVASF ttH_EleDown = ttHMVASF(\"2016noHIPM\", 3, \"all\", \"eleDown\" ,\"{configurations}/WH_chargeAsymmetry/UL/data/\");')"], + 'expr' : 'ttH_EleDown(Lepton_pt, Lepton_eta, Lepton_pdgId)', + 'samples' : mc +} + +aliases['LepWPttHMVASFMuUp'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/ttHMVASF_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('ttHMVASF ttH_MuUp = ttHMVASF(\"2016noHIPM\", 3, \"all\", \"muUp\" ,\"{configurations}/WH_chargeAsymmetry/UL/data/\");')"], + 'expr' : 'ttH_MuUp(Lepton_pt, Lepton_eta, Lepton_pdgId)', + 'samples' : mc +} +aliases['LepWPttHMVASFMuDown'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/ttHMVASF_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('ttHMVASF ttH_MuDown = ttHMVASF(\"2016noHIPM\", 3, \"all\", \"muDown\" ,\"{configurations}/WH_chargeAsymmetry/UL/data/\");')"], + 'expr' : 'ttH_MuDown(Lepton_pt, Lepton_eta, Lepton_pdgId)', + 'samples' : mc +} + + +# Conept +aliases['Lepton_conept'] = { + 'expr': 'LeptonConePt(Lepton_pt, Lepton_pdgId, Lepton_electronIdx, Lepton_muonIdx, Electron_jetRelIso, Muon_jetRelIso)', + 'linesToAdd': [f'#include "{configurations}/utils/macros/LeptonConePt_class.cc"'], + 'samples': mc + ['Fake', 'DATA', 'DATA_unprescaled'] +} + +# Fake leptons transfer factor +aliases['fakeW'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"nominal\", 3, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} + +# And variations - already divided by central values in formulas ! +aliases['fakeWEleUp'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleUp = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"EleUp\", 3, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_EleUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} +aliases['fakeWEleDown'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleDown = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"EleDown\", 3, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_EleDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} + +aliases['fakeWMuUp'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuUp = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"MuUp\", 3, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_MuUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} +aliases['fakeWMuDown'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuDown = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"MuDown\", 3, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_MuDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} + +aliases['fakeWStatEleUp'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleUp = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"StatEleUp\", 3, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_StatEleUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} +aliases['fakeWStatEleDown'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleDown = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"StatEleDown\", 3, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_StatEleDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} + +aliases['fakeWStatMuUp'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuUp = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"StatMuUp\", 3, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_StatMuUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} +aliases['fakeWStatMuDown'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuDown = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"StatMuDown\", 3, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_StatMuDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} + + +# No jet with pt > 30 GeV +aliases['zeroJet'] = { + 'expr' : 'Alt(CleanJet_pt, 0, 0) < 30.' +} + +aliases['oneJet'] = { + 'expr' : 'Alt(CleanJet_pt, 0, 0) > 30. && Alt(CleanJet_pt, 1, 0) < 30.' +} + +aliases['multiJet'] = { + 'expr' : 'Alt(CleanJet_pt, 1, 0) > 30.' +} + +########################################################################################### +# b tagging WPs: https://twiki.cern.ch/twiki/bin/view/CMS/BtagRecommendation106XUL16postVFP +########################################################################################### + +# DeepB = DeepCSV +bWP_loose_deepB = '0.1918' +bWP_medium_deepB = '0.5847' +bWP_tight_deepB = '0.8767' + +# DeepFlavB = DeepJet +bWP_loose_deepFlavB = '0.0480' +bWP_medium_deepFlavB = '0.2489' +bWP_tight_deepFlavB = '0.6377' + +# Actual algo and WP definition. BE CONSISTENT!! +bAlgo = 'DeepB' # ['DeepB', 'DeepFlavB' ] +bWP = bWP_medium_deepB # [bWP_loose_deepB, bWP_loose_deepFlavB] +bSF = 'deepcsv' # ['deepcsv', 'deepjet' ] + +# b veto +aliases['bVeto'] = { + 'expr': 'Sum(CleanJet_pt > 20. && abs(CleanJet_eta) < 2.5 && Take(Jet_btag{}, CleanJet_jetIdx) > {}) == 0'.format(bAlgo, bWP) +} + +aliases['bVetoSF'] = { + 'expr': 'TMath::Exp(Sum(LogVec((CleanJet_pt>20 && abs(CleanJet_eta)<2.5)*Take(Jet_btagSF_{}_shape, CleanJet_jetIdx)+1*(CleanJet_pt<20 || abs(CleanJet_eta)>2.5))))'.format(bSF), + 'samples': mc +} + +# At least one b-tagged jet +aliases['bReq'] = { + 'expr': 'Sum(CleanJet_pt > 30. && abs(CleanJet_eta) < 2.5 && Take(Jet_btag{}, CleanJet_jetIdx) > {}) >= 1'.format(bAlgo, bWP) +} + +aliases['bReqSF'] = { + 'expr': 'TMath::Exp(Sum(LogVec((CleanJet_pt>30 && abs(CleanJet_eta)<2.5)*Take(Jet_btagSF_{}_shape, CleanJet_jetIdx)+1*(CleanJet_pt<30 || abs(CleanJet_eta)>2.5))))'.format(bSF), + 'samples': mc +} + +# Top control region +aliases['topcr'] = { + 'expr': 'mtw2>30 && mll>50 && ((zeroJet && !bVeto) || bReq)' +} + +# WW control region +aliases['wwcr'] = { + 'expr': 'mth>60 && mtw2>30 && mll>100 && bVeto' +} + +# Overall b tag SF +aliases['btagSF'] = { + 'expr': '(bVeto || (topcr && zeroJet))*bVetoSF + (topcr && !zeroJet)*bReqSF', + 'samples': mc +} + +for shift in ['jesAbsolute', 'jesAbsolute_2016', 'jesBBEC1', 'jesBBEC1_2016', 'jesEC2', + 'jesEC2_2016', 'jesFlavorQCD', 'jesHF', 'jesHF_2016', 'jesRelativeBal', + 'jesRelativeSample_2016']: + for var in ['up','down']: + aliases[f'Jet_btagSF_{bSF}_shape_{shift.replace("jes","JES")}{var[:2]}'] = { + 'expr' : f'Jet_btagSF_{bSF}_shape_{var}_{shift}', + 'samples' : mc + } + +for shift in ['jesAbsolute', 'jesAbsolute_2016', 'jesBBEC1', 'jesBBEC1_2016', 'jesEC2', + 'jesEC2_2016', 'jesFlavorQCD', 'jesHF', 'jesHF_2016', 'jesRelativeBal', + 'jesRelativeSample_2016', 'lf', 'hf', 'lfstats1', 'lfstats2', + 'hfstats1', 'hfstats2', 'cferr1', 'cferr2']: + + for targ in ['bVeto', 'bReq']: + alias = aliases['%sSF%sup' % (targ, shift)] = copy.deepcopy(aliases['%sSF' % targ]) + alias['expr'] = alias['expr'].replace('btagSF_{}_shape'.format(bSF), 'btagSF_{}_shape_up_{}'.format(bSF, shift)) + + alias = aliases['%sSF%sdown' % (targ, shift)] = copy.deepcopy(aliases['%sSF' % targ]) + alias['expr'] = alias['expr'].replace('btagSF_{}_shape'.format(bSF), 'btagSF_{}_shape_down_{}'.format(bSF, shift)) + + aliases['btagSF%sup' % shift] = { + 'expr': aliases['btagSF']['expr'].replace('SF', 'SF' + shift + 'up'), + 'samples': mc + } + + aliases['btagSF%sdown' % shift] = { + 'expr': aliases['btagSF']['expr'].replace('SF', 'SF' + shift + 'down'), + 'samples': mc + } + +#################################################################################### +# End of b tagging pippone +#################################################################################### + +aliases['gstarLow'] = { + 'expr': 'Gen_ZGstar_mass > 0 && Gen_ZGstar_mass < 4', + 'samples': 'VgS' +} + +aliases['gstarHigh'] = { + 'expr': 'Gen_ZGstar_mass < 0 || Gen_ZGstar_mass > 4', + 'samples': 'WZ' +} + +# gen-matching to prompt only (GenLepMatch3l matches to *any* gen lepton) +aliases['PromptGenLepMatch3l'] = { + 'expr': 'Alt(Lepton_promptgenmatched, 0, 0) * Alt(Lepton_promptgenmatched, 1, 0) * Alt(Lepton_promptgenmatched, 2, 0)', + 'samples': mc +} + +# Need to redefine PUID scale factors, so that they are double and not vectors +aliases['Jet_PUIDSF'] = { + 'expr' : 'TMath::Exp(Sum((Jet_jetId>=2)*LogVec(Jet_PUIDSF_loose)))', + 'samples': mc +} + +aliases['Jet_PUIDSF_up'] = { + 'expr' : 'TMath::Exp(Sum((Jet_jetId>=2)*LogVec(Jet_PUIDSF_loose_up)))', + 'samples': mc +} + +aliases['Jet_PUIDSF_down'] = { + 'expr' : 'TMath::Exp(Sum((Jet_jetId>=2)*LogVec(Jet_PUIDSF_loose_down)))', + 'samples': mc +} + + +aliases['Top_pTrw'] = { + 'expr': '(topGenPt * antitopGenPt > 0.) * (TMath::Sqrt(TMath::Exp(0.0615 - 0.0005 * topGenPt) * TMath::Exp(0.0615 - 0.0005 * antitopGenPt))) + (topGenPt * antitopGenPt <= 0.)', + 'samples': ['top'] +} + +# data/MC scale factors +aliases['SFweight'] = { + # 'expr': ' * '.join(['SFweight3l', 'LepWPCut', 'LepWPSF','Jet_PUIDSF_loose', 'btagSF', 'LepWPttHMVASF']), + 'expr': ' * '.join(['SFweight3l', 'LepWPCut', 'LepWPSF', 'Jet_PUIDSF', 'btagSF', 'LepWPttHMVASF']), + 'samples': mc +} + +# variations +aliases['SFweightEleUp'] = { + 'expr': 'LepSF3l__ele_'+eleWP+'__Up', + 'samples': mc +} +aliases['SFweightEleDown'] = { + 'expr': 'LepSF3l__ele_'+eleWP+'__Do', + 'samples': mc +} + +aliases['SFweightMuUp'] = { + 'expr': 'LepSF3l__mu_'+muWP+'__Up', + 'samples': mc +} +aliases['SFweightMuDown'] = { + 'expr': 'LepSF3l__mu_'+muWP+'__Do', + 'samples': mc +} + +# TriggerSFWeight_3l:TriggerSFWeight_3l_u:TriggerSFWeight_3l_d +aliases['SFtriggUp'] = { + 'expr': 'TriggerSFWeight_3l_u/TriggerSFWeight_3l', + 'samples': mc +} +aliases['SFtriggDown'] = { + 'expr': 'TriggerSFWeight_3l_d/TriggerSFWeight_3l', + 'samples': mc +} + +# Evaluate BDT discriminant +aliases['BDT_WHSS_TopSemileptonic_v9'] = { + 'linesToAdd' : ['#include "%s/ControlRegions/SS/macros/BDT_WHSS_TopSemileptonic_v9_class.cc"' % configurations], + 'linesToProcess' : ["ROOT.gInterpreter.Declare('BDT_WHSS_TopSemileptonic_v9 BDT_WHSS = BDT_WHSS_TopSemileptonic_v9(\"BDTG_6\",\"{0}/ControlRegions/SS/data/BDT/2016noHIPM/WHSS/weights/TMVAClassification_BDTG_6.weights.xml\");')".format(configurations)], + 'expr' : 'BDT_WHSS(mll,mjj,mtw1,mtw2,ptll,mlljj20_whss,PuppiMET_pt,dphill,dphijj,dphillmet,dphilmet2,dphijet1met,CleanJet_pt,Jet_btagDeepB,CleanJet_jetIdx)', + 'samples' : mc + ['DATA','Fake'], +} + +aliases['BDT_WH3l_OSSF_new_v9'] = { + 'linesToAdd' : ['#include "%s/ControlRegions/SS/macros/BDT_WH3l_OSSF_v9_class.cc"' % configurations], + 'linesToProcess' : ["ROOT.gInterpreter.Declare('BDT_WH3l_OSSF_v9 BDT_WH3l_OSSF = BDT_WH3l_OSSF_v9(\"BDTG4C3\",\"{0}/ControlRegions/SS/data/BDT/2016noHIPM/WH3l/OSSF/weights/TMVAClassification_BDTG4C3.weights.xml\");')".format(configurations)], + 'expr' : 'BDT_WH3l_OSSF(WH3l_dphilllmet,WH3l_mOSll,WH3l_ptOSll,WH3l_drOSll,WH3l_ZVeto,WH3l_mtlmet,WH3l_dphilmet,WH3l_ptWWW,PuppiMET_pt,Lepton_pt)', + 'samples' : mc + ['DATA','Fake'], +} + +aliases['BDT_WH3l_SSSF_new_v9'] = { + 'linesToAdd' : ['#include "%s/ControlRegions/SS/macros/BDT_WH3l_SSSF_v9_class.cc"' % configurations], + 'linesToProcess' : ["ROOT.gInterpreter.Declare('BDT_WH3l_SSSF_v9 BDT_WH3l_SSSF = BDT_WH3l_SSSF_v9(\"BDTG4C3\",\"{0}/ControlRegions/SS/data/BDT/2016noHIPM/WH3l/SSSF/weights/TMVAClassification_BDTG4SK01_05shrinkage.weights.xml\");')".format(configurations)], + 'expr' : 'BDT_WH3l_SSSF(WH3l_dphilllmet,WH3l_mOSll,WH3l_ptOSll,WH3l_drOSll,WH3l_dphilmet,WH3l_ptWWW,PuppiMET_pt,Lepton_pt)', + 'samples' : mc + ['DATA','Fake'], +} diff --git a/ControlRegions/3l/2016noHIPM/configuration.py b/ControlRegions/3l/2016noHIPM/configuration.py new file mode 100644 index 00000000..46c39c66 --- /dev/null +++ b/ControlRegions/3l/2016noHIPM/configuration.py @@ -0,0 +1,105 @@ +# Configuration file for charge asymmetry WH3l analysis using the UL 2016noHIPM dataset + +import sys,inspect + +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' + +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/ControlRegions/3l/Full2018_v9/ + +configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file +configurations_nuisance = os.path.dirname(configurations_nuisance) # 2016noHIPM_v9 +configurations_nuisance = os.path.dirname(configurations_nuisance) # 3l +configurations_nuisance = os.path.dirname(configurations_nuisance) # ControlRegions + +# Tag used to identify the configuration folder version +tag = '3l_2016noHIPM_v9' + +# File to use as runner script, default uses mkShapesRDF.shapeAnalysis.runner, otherwise specify path to script +runnerFile = "default" + +# Output file name +outputFile = "mkShapes__{}.root".format(tag) + +# Path to ouput folder +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +if site == 'kit': + outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" + +# Path to batch folder (used for condor submission) +batchFolder = "condor" + +# Path to configuration folder (will contain all the compiled configuration files) +configsFolder = "configs" + +# luminosity to normalize to (in 1/fb) +# https://github.com/latinos/LatinoAnalysis/blob/UL_production/NanoGardener/python/data/TrigMaker_cfg.py#L239 (#311 #377 #445) +# 0.418771191 + 7.653261227 + 7.866107374 + 0.8740119304 = 16.8121517224 +lumi = 16.81 + +# File with dict of aliases to define +aliasesFile = "aliases.py" + +# File with dict of variables +variablesFile = "variables.py" + +# File with dict of cuts +cutsFile = "cuts.py" + +# File with dict of samples +samplesFile = "samples.py" + +# File with dict of samples for plotting +plotFile = 'plot.py' + +# File with dict of structure (used to define processes in combine) +structureFile = "structure.py" + +# Nuisances file for mkDatacards and for mkShape +nuisancesFile = "nuisances.py" + +# Path to folder where to save plots +plotPath = 'plots_' + tag + +# This lines are executed right before the runner on the condor node +mountEOS = [] + +# List of imports to import when compiling the whole configuration folder, it should not contain imports used by configuration.py +imports = ["os", "glob", ("collections", "OrderedDict"), "ROOT"] + +# List of files to compile +filesToExec = [ + samplesFile, + aliasesFile, + variablesFile, + cutsFile, + plotFile, + nuisancesFile, + structureFile, +] + +# List of variables to keep in the compiled configuration folder +varsToKeep = [ + "batchVars", + "outputFolder", + "batchFolder", + "configsFolder", + "outputFile", + "runnerFile", + "tag", + "samples", + "aliases", + "variables", + ("cuts", {"cuts": "cuts", "preselections": "preselections"}), + ("plot", {"plot": "plot", "groupPlot": "groupPlot", "legend": "legend"}), + "nuisances", + "structure", + "lumi", +] + +# List of variables to keep in the batch submission script (script.py) +batchVars = varsToKeep[varsToKeep.index("samples") :] + +varsToKeep += ['plotPath'] diff --git a/ControlRegions/3l/2016noHIPM/cuts.py b/ControlRegions/3l/2016noHIPM/cuts.py new file mode 100644 index 00000000..40670a46 --- /dev/null +++ b/ControlRegions/3l/2016noHIPM/cuts.py @@ -0,0 +1,46 @@ +# cuts + +cuts = {} + +# MinIf$( WH3l_mOSll[], WH3l_mOSll[Iteration$] > 0) > 12 +# Alt(WH3l_mOSll,0,9999) > 12 && Alt(WH3l_mOSll,1,9999) > 12 && Alt(WH3l_mOSll,2,9999) > 12 \ + +preselections = '(nLepton>=3 && Alt(Lepton_pt,3,0)<10) \ + && Alt(Lepton_pt,0,0)>25 \ + && Alt(Lepton_pt,1,0)>10 \ + && (abs(Lepton_pdgId[1])==13 || Lepton_pt[1]>13) \ + && Alt(Lepton_pt,2,0)>10 \ + && (WH3l_mOSll[0] < 0 || WH3l_mOSll[0] > 12) \ + && (WH3l_mOSll[1] < 0 || WH3l_mOSll[1] > 12) \ + && (WH3l_mOSll[2] < 0 || WH3l_mOSll[2] > 12) \ + && abs(WH3l_chlll) == 1 \ + && bVeto \ + ' + +## Signal region + +# SSSF +cuts['wh3l_13TeV_sssf'] = { + 'expr' : 'WH3l_flagOSSF == 0 && Alt(CleanJet_pt, 0, 0) < 30', + 'categories' : { + 'plus_pt2ge20' : 'Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]>0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15', + 'minus_pt2ge20' : 'Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]<0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15', + # 'plus_pt2lt20' : 'Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]>0 && Lepton_pt[1]<20', + # 'minus_pt2lt20' : 'Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]<0 && Lepton_pt[1]<20', + } +} + +# OSSF +cuts['wh3l_13TeV_ossf'] = { + 'expr' : 'WH3l_flagOSSF == 1 && WH3l_ZVeto > 20 && PuppiMET_pt > 40 && Alt(CleanJet_pt, 0, 0) < 30', + 'categories' : { + 'plus_pt2ge20' : 'Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]>0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15', + 'minus_pt2ge20' : 'Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]<0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15', + # 'plus_pt2lt20' : 'Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]>0 && Lepton_pt[1]<20', + # 'minus_pt2lt20' : 'Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]<0 && Lepton_pt[1]<20', + } +} + +# 11 = e +# 13 = mu +# 15 = tau diff --git a/ControlRegions/3l/2016noHIPM/nuisances.py b/ControlRegions/3l/2016noHIPM/nuisances.py new file mode 100644 index 00000000..6af5b4c8 --- /dev/null +++ b/ControlRegions/3l/2016noHIPM/nuisances.py @@ -0,0 +1,112 @@ +import sys + +nuisances = {} + +mcProduction = 'Summer20UL16_106x_nAODv9_noHIPM_Full2016v9' +dataReco = 'Run2016_UL2016_nAODv9_noHIPM_Full2016v9' +mcSteps = 'MCl1loose2016v9__MCCorr2016v9NoJERInHorn__l2tightOR2016v9' +fakeSteps = 'DATAl1loose2016v9__l2loose__fakeW' +dataSteps = 'DATAl1loose2016v9__l2loose__l2tightOR2016v9' + +treeBaseDir = '/eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano' +limitFiles = -1 + +mc = [skey for skey in samples if skey not in ('Fake', 'DATA')] + +redirector = "" + +useXROOTD = False + +def makeMCDirectory(var=''): + if var== '': + print(os.path.join(treeBaseDir, mcProduction, mcSteps)) + return os.path.join(treeBaseDir, mcProduction, mcSteps) + else: + print(os.path.join(treeBaseDir, mcProduction, mcSteps + '__' + var)) + return os.path.join(treeBaseDir, mcProduction, mcSteps + '__' + var) + +mcDirectory = makeMCDirectory() +fakeDirectory = os.path.join(treeBaseDir, dataReco, fakeSteps) +dataDirectory = os.path.join(treeBaseDir, dataReco, dataSteps) + +################################ EXPERIMENTAL UNCERTAINTIES ################################# + +#### Luminosity + +# https://twiki.cern.ch/twiki/bin/view/CMS/LumiRecommendationsRun2#LumiComb +# Uncorrelated 2016 1.0 +# Uncorrelated 2017 2.0 +# Uncorrelated 2018 1.5 +# Correlated 2016, 2017, 2018 0.6, 0.9, 2.0 +# Correlated 2017, 2018 0.6, 0.2 + +nuisances['lumi_Uncorrelated'] = { + 'name' : 'lumi_13TeV_2016', + 'type' : 'lnN', + 'samples' : dict((skey, '1.010') for skey in mc if skey not in ['WZ']) +} + +nuisances['lumi_Correlated_Run2'] = { + 'name' : 'lumi_13TeV_correlated', + 'type' : 'lnN', + 'samples' : dict((skey, '1.006') for skey in mc if skey not in ['WZ']) +} + + +### Fakes + +# Per lepton +nuisances['fake_ele'] = { + 'name' : 'CMS_WH_hww_fake_e_2016', + 'kind' : 'weight', + 'type' : 'shape', + 'samples' : { + 'Fake_ee' : ['fakeWEleUp', 'fakeWEleDown'], + 'Fake_em' : ['fakeWEleUp', 'fakeWEleDown'], + } +} + +nuisances['fake_ele_stat'] = { + 'name' : 'CMS_WH_hww_fake_stat_e_2016', + 'kind' : 'weight', + 'type' : 'shape', + 'samples' : { + 'Fake_ee' : ['fakeWStatEleUp', 'fakeWStatEleDown'], + 'Fake_em' : ['fakeWStatEleUp', 'fakeWStatEleDown'], + } +} + + +nuisances['fake_mu'] = { + 'name' : 'CMS_WH_hww_fake_m_2016', + 'kind' : 'weight', + 'type' : 'shape', + 'samples' : { + 'Fake_mm' : ['fakeWMuUp', 'fakeWMuDown'], + 'Fake_em' : ['fakeWMuUp', 'fakeWMuDown'], + } +} + +nuisances['fake_mu_stat'] = { + 'name' : 'CMS_WH_hww_fake_stat_m_2016', + 'kind' : 'weight', + 'type' : 'shape', + 'samples' : { + 'Fake_mm' : ['fakeWStatMuUp', 'fakeWStatMuDown'], + 'Fake_em' : ['fakeWStatMuUp', 'fakeWStatMuDown'], + } +} + + +# Use the following if you want to apply the automatic combine MC stat nuisances. +nuisances['stat'] = { + 'type' : 'auto', + 'maxPoiss' : '10', + 'includeSignal' : '0', + 'samples' : {} +} +# nuisance ['maxPoiss'] = Number of threshold events for Poisson modelling +# nuisance ['includeSignal'] = Include MC stat nuisances on signal processes (1=True, 0=False) + +for n in nuisances.values(): + n['skipCMS'] = 1 diff --git a/ControlRegions/3l/2016noHIPM/plot.py b/ControlRegions/3l/2016noHIPM/plot.py new file mode 100644 index 00000000..f747921f --- /dev/null +++ b/ControlRegions/3l/2016noHIPM/plot.py @@ -0,0 +1,264 @@ +# plot configuration + +# Groups of samples to improve the plots. +# If not defined, normal plots is used + +groupPlot = {} + +groupPlot['top'] = { + 'nameHR' : 'tW+ and t#bar{t}', + 'isSignal' : 0, + 'color' : 400, # kYellow + 'samples' : ['top'] +} + +groupPlot['Fake'] = { + 'nameHR' : 'Non-prompt', + 'isSignal' : 0, + 'color' : 921, # kGray + 1 + 'samples' : ['Fake'] +} + +groupPlot['WW'] = { + 'nameHR' : 'WW', + 'isSignal' : 0, + 'color' : 851, # kAzure -9 + 'samples' : ['WW'] # , 'ggWW', 'WWewk'] +} + +groupPlot['VVV'] = { + 'nameHR' : 'VVV', + 'isSignal' : 0, + 'color' : 857, # kAzure -3 + 'samples' : ['VVV'] +} + +groupPlot['Vg'] = { + 'nameHR' : "V#gamma", + 'isSignal' : 0, + 'color' : 810, # kOrange + 10 + 'samples' : ['Vg'] +} + +groupPlot['VgS'] = { + 'nameHR' : "V#gamma*", + 'isSignal' : 0, + 'color' : 409, # kGreen - 9 + 'samples' : ['VgS'] +} + +groupPlot['ZZ'] = { + 'nameHR' : "ZZ", + 'isSignal' : 0, + 'color' : 617, # kViolet + 1 + 'samples' : ['ZZ'] +} + +groupPlot['WZ'] = { + 'nameHR' : "WZ", + 'isSignal' : 0, + 'color' : 619, # kViolet + 1 + 'samples' : ['WZ'] +} + +groupPlot['Higgs'] = { + 'nameHR' : 'Higgs', + 'isSignal' : 0, + 'color' : 632, # kRed + 'samples' : ['ggH_hww','qqH_hww','ZH_hww','ggZH_hww','ttH_hww','ggH_hww','qqH_htt','ZH_htt'] +} + +groupPlot['WH_minus'] = { + 'nameHR' : 'W^{-} H (x 10)', + 'isSignal' : 2, + 'color' : 600, # kBlue + 'samples' : ['WH_hww_minus','WH_htt_minus'] +} + +groupPlot['WH_plus'] = { + 'nameHR' : 'W^{+} H (x 10)', + 'isSignal' : 2, + 'color' : 632, # kRed + 'samples' : ['WH_hww_plus', 'WH_htt_plus'] +} + + +# keys here must match keys in samples.py + +plot = {} + +plot['top'] = { + 'nameHR' : 'tW and t#bar{t}', + 'color' : 400, # kYellow + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0, +} + +plot['WW'] = { + 'color' : 851, # kAzure -9 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['Vg'] = { + 'color' : 859, # kAzure -1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['VgS'] = { + 'color' : 617, # kViolet + 1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['ZZ'] = { + 'color' : 858, # kAzure -2 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['WZ'] = { + 'color' : 858, # kAzure -2 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.138*1.12 # NLO -> NNLO k-factor! +} + +plot['VVV'] = { + 'color' : 857, # kAzure -3 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +########### +# Signals # +########### + +# HWW + +plot['ggH_hww'] = { + 'color' : 632, # kRed + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['qqH_hww'] = { + 'color' : 632+1, # kRed+1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['ZH_hww'] = { + 'color' : 632+3, # kRed+3 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['ggZH_hww'] = { + 'color' : 632+4, # kRed+4 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['WH_hww_minus'] = { + 'color' : 600, # kBlue + 'isSignal' : 2, + 'isData' : 0, + 'scale' : 10 +} + +plot['WH_hww_plus'] = { + 'color' : 632+2, # kRed+2 + 'isSignal' : 2, + 'isData' : 0, + 'scale' : 10 +} + +plot['ttH_hww'] = { + 'color' : 632+3, # kRed+3 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + + +# Htautau + +plot['ggH_htt'] = { + 'color' : 632, # kRed + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['qqH_htt'] = { + 'color' : 632+1, # kRed+1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['ZH_htt'] = { + 'color' : 632+3, # kRed+3 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['WH_htt_plus'] = { + 'color' : 632+2, # kRed+2 + 'isSignal' : 1, + 'isData' : 0, + 'scale' : 10 +} + +plot['WH_htt_minus'] = { + 'color' : 632+2, # kRed+2 + 'isSignal' : 1, + 'isData' : 0, + 'scale' : 10 +} + + +######## +# Fake # +######## + +plot['Fake'] = { + 'color' : 921, # kGray + 1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + + +######## +# Data # +######## + +plot['DATA'] = { + 'nameHR' : 'Data', + 'color' : 1 , + 'isSignal' : 0, + 'isData' : 1, + 'isBlind' : 0 +} + + +# Define legend + +legend = {} + +legend['lumi'] = 'L = 16.8 fb^{-1}' +legend['sqrt'] = '#sqrt{s} = 13 TeV' diff --git a/ControlRegions/3l/2016noHIPM/repeat.sh b/ControlRegions/3l/2016noHIPM/repeat.sh new file mode 100644 index 00000000..cd682fcd --- /dev/null +++ b/ControlRegions/3l/2016noHIPM/repeat.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +if [ $# -eq 0 ]; then + echo "$0: Missing arguments" + exit 1 +else + echo "We got some argument(s)" + echo "===========================" + echo "Number of arguments. : $#" + echo "List of arguments... : $@" + echo "Arg #1: sample : $1" + echo "Arg #2: compile : $2" + echo "===========================" + SAMPLE=$1 + COMPILE=$2 +fi + +# Site definition +hostname=$(uname -a | awk '{print $2}') + + +if [ "$COMPILE" == "True" ]; then + mkShapesRDF -c 1 + mkShapesRDF -o 0 -f . -b 1 -dR 1 +fi +cd condor/3l_2016noHIPM_v9/${SAMPLE}/ +cp ../../../../../../../mkShapesRDF/mkShapesRDF/include/headers.hh ../../../../../../../mkShapesRDF/mkShapesRDF/shapeAnalysis/runner.py . +python runner.py + +if [[ "$hostname" == *portal* || "$hostname" == *bms* ]]; then + echo "We are at KIT" + cp output.root /ceph/${USER}/mkShapesRDF_rootfiles/3l_2016noHIPM_v9/rootFile/mkShapes__3l_2016noHIPM_v9__ALL__${SAMPLE}.root +else + echo "We are on lxplus" + cp output.root /eos/user/${USER:0:1}/${USER}/mkShapesRDF_rootfiles/3l_2016noHIPM_v9/rootFile/mkShapes__3l_2016noHIPM_v9__ALL__${SAMPLE}.root +fi + +rm output.root diff --git a/ControlRegions/3l/2016noHIPM/samples.py b/ControlRegions/3l/2016noHIPM/samples.py new file mode 100644 index 00000000..2070f1a0 --- /dev/null +++ b/ControlRegions/3l/2016noHIPM/samples.py @@ -0,0 +1,387 @@ +import os,glob + +################################################ +################# SKIMS ######################## +################################################ + +# MC: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Summer20UL16_106x_nAODv9_noHIPM_Full2016v9/MCl1loose2016v9__MCCorr2016v9NoJERInHorn__l2tightOR2016v9/ +# DATA: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Run2016_UL2016_nAODv9_noHIPM_Full2016v9/DATAl1loose2016v9__l2loose__l2tightOR2016v9/ +# FAKE: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Run2016_UL2016_nAODv9_noHIPM_Full2016v9/DATAl1loose2016v9__l2loose__fakeW/ + +mcProduction = 'Summer20UL16_106x_nAODv9_noHIPM_Full2016v9' +dataReco = 'Run2016_UL2016_nAODv9_noHIPM_Full2016v9' +mcSteps = 'MCl1loose2016v9__MCCorr2016v9NoJERInHorn__l2tightOR2016v9{var}' +fakeSteps = 'DATAl1loose2016v9__l2loose__fakeW' +dataSteps = 'DATAl1loose2016v9__l2loose__l2tightOR2016v9' + +############################################## +###### Tree base directory for the site ###### +############################################## + +treeBaseDir = '/eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano' +limitFiles = -1 + +def makeMCDirectory(var=''): + return os.path.join(treeBaseDir, mcProduction, mcSteps.format(var='')) + +mcDirectory = makeMCDirectory() +fakeDirectory = os.path.join(treeBaseDir, dataReco, fakeSteps) +dataDirectory = os.path.join(treeBaseDir, dataReco, dataSteps) + +samples = {} + +from mkShapesRDF.lib.search_files import SearchFiles +s = SearchFiles() + +useXROOTD = True +redirector = 'root://eoscms.cern.ch/' + +def nanoGetSampleFiles(path, name): + _files = s.searchFiles(path, name, redirector=redirector) + if limitFiles != -1 and len(_files) > limitFiles: + return [(name, _files[:limitFiles])] + else: + return [(name, _files)] + +def CombineBaseW(samples, proc, samplelist): + _filtFiles = list(filter(lambda k: k[0] in samplelist, samples[proc]['name'])) + _files = list(map(lambda k: k[1], _filtFiles)) + _l = list(map(lambda k: len(k), _files)) + leastFiles = _files[_l.index(min(_l))] + dfSmall = ROOT.RDataFrame('Runs', leastFiles) + s = dfSmall.Sum('genEventSumw').GetValue() + f = ROOT.TFile.Open(leastFiles[0]) + t = f.Get('Events') + t.GetEntry(1) + xs = t.baseW * s + + __files = [] + for f in _files: + __files += f + df = ROOT.RDataFrame('Runs', __files) + s = df.Sum('genEventSumw').GetValue() + newbaseW = str(xs / s) + weight = newbaseW + '/baseW' + + for iSample in samplelist: + addSampleWeight(samples, proc, iSample, weight) + +def addSampleWeight(samples, sampleName, sampleNameType, weight): + obj = list(filter(lambda k: k[0] == sampleNameType, samples[sampleName]['name']))[0] + samples[sampleName]['name'] = list(filter(lambda k: k[0] != sampleNameType, samples[sampleName]['name'])) + if len(obj) > 2: + samples[sampleName]['name'].append((obj[0], obj[1], obj[2] + '*(' + weight + ')')) + else: + samples[sampleName]['name'].append((obj[0], obj[1], '(' + weight + ')' )) + + +################################################ +############ DATA DECLARATION ################## +################################################ + +DataRun = [ + ['F','Run2016F-UL2016-v1'], + ['G','Run2016G_UL2016-v1'], + ['H','Run2016H_UL2016-v1'], +] + +DataSets = ['MuonEG','SingleMuon','SingleElectron','DoubleMuon', 'DoubleEG'] + +DataTrig = { + 'MuonEG' : ' Trigger_ElMu' , + 'SingleMuon' : '!Trigger_ElMu && Trigger_sngMu' , + 'SingleElectron' : '!Trigger_ElMu && !Trigger_sngMu && Trigger_sngEl', + 'DoubleMuon' : '!Trigger_ElMu && !Trigger_sngMu && !Trigger_sngEl && Trigger_dblMu', + 'DoubleEG' : '!Trigger_ElMu && !Trigger_sngMu && !Trigger_sngEl && !Trigger_dblMu && Trigger_dblEl' +} + +######################################### +############ MC COMMON ################## +######################################### + +# SFweight does not include btag weights +mcCommonWeight = 'XSWeight*SFweight*METFilter_MC' +mcCommonWeightMatched = 'XSWeight*SFweight*PromptGenLepMatch3l*METFilter_MC' + +########################################### +############# BACKGROUNDS ############### +########################################### + +##### Top ####### +files = nanoGetSampleFiles(mcDirectory, 'TTTo2L2Nu') + \ + nanoGetSampleFiles(mcDirectory, 'ST_s-channel') + \ + nanoGetSampleFiles(mcDirectory, 'ST_t-channel_top') + \ + nanoGetSampleFiles(mcDirectory, 'ST_t-channel_antitop') + \ + nanoGetSampleFiles(mcDirectory, 'ST_tW_antitop') + \ + nanoGetSampleFiles(mcDirectory, 'ST_tW_top') + +samples['top'] = { + 'name': files, + 'weight': mcCommonWeightMatched, + 'FilesPerJob': 8, +} +addSampleWeight(samples,'top','TTTo2L2Nu','Top_pTrw') + +###### WW ######## +samples['WW'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'WWTo2L2Nu'), + 'weight': mcCommonWeightMatched + '*nllW*ewknloW', + 'FilesPerJob': 4, +} + +######## Vg ######## +files = nanoGetSampleFiles(mcDirectory, 'Wg_AMCNLOFXFX_01J') + \ + nanoGetSampleFiles(mcDirectory, 'ZGToLLG') + +samples['Vg'] = { + 'name': files, + 'weight': mcCommonWeight + '*(Gen_ZGstar_mass <= 0)', + 'FilesPerJob': 4, +} + +######## VgS ######## +files = nanoGetSampleFiles(mcDirectory, 'Wg_AMCNLOFXFX_01J') + \ + nanoGetSampleFiles(mcDirectory, 'WZTo3LNu_mllmin0p1') + \ + nanoGetSampleFiles(mcDirectory, 'ZGToLLG') + +samples['VgS'] = { + 'name': files, + 'weight': mcCommonWeightMatched, + 'FilesPerJob': 4, +} +addSampleWeight(samples, 'VgS', 'Wg_AMCNLOFXFX_01J', '((Gen_ZGstar_mass > 0 && Gen_ZGstar_mass <= 0.1))*(gstarLow*0.94)') +addSampleWeight(samples, 'VgS', 'WZTo3LNu_mllmin0p1', '((Gen_ZGstar_mass > 0.1)*(0.601644*58.59/4.666))*(gstarLow*0.94)') +addSampleWeight(samples, 'VgS', 'ZGToLLG', '(Gen_ZGstar_mass > 0)') + +# ######## Wg ######## +# files = nanoGetSampleFiles(mcDirectory, 'Wg_AMCNLOFXFX_01J') + +# samples['Wg'] = { +# 'name': files, +# 'weight': mcCommonWeight + '*(Gen_ZGstar_mass <= 0)', +# 'FilesPerJob': 8, +# } + + +# ######## Zg ######## +# files = nanoGetSampleFiles(mcDirectory, 'ZGToLLG') + +# samples['Zg'] = { +# 'name': files, +# 'weight': mcCommonWeight + '*(Gen_ZGstar_mass <= 0)', +# 'FilesPerJob': 4, +# } + +# ######## WgS ######## +# files = nanoGetSampleFiles(mcDirectory, 'Wg_AMCNLOFXFX_01J') + \ +# nanoGetSampleFiles(mcDirectory, 'WZTo3LNu_mllmin0p1') + +# samples['WgS'] = { +# 'name': files, +# 'weight': mcCommonWeightMatched + ' * (gstarLow * 0.94)', +# 'FilesPerJob': 4, +# } +# addSampleWeight(samples, 'WgS', 'Wg_AMCNLOFXFX_01J', '(Gen_ZGstar_mass > 0 && Gen_ZGstar_mass <= 0.1)') +# addSampleWeight(samples, 'WgS', 'WZTo3LNu_mllmin0p1', '(Gen_ZGstar_mass > 0.1)*(0.601644*58.59/4.666)') + + +# ######## ZgS ######## +# files = nanoGetSampleFiles(mcDirectory, 'ZGToLLG') + +# samples['ZgS'] = { +# 'name': files, +# 'weight': mcCommonWeightMatched + '*(Gen_ZGstar_mass > 0)', +# 'FilesPerJob': 4, +# } +# addSampleWeight(samples, 'ZgS', 'ZGToLLG', '(Gen_ZGstar_mass > 0)') + + +############ ZZ ############ +files = nanoGetSampleFiles(mcDirectory, 'ZZTo4L') + +samples['ZZ'] = { + 'name': files, + 'weight': mcCommonWeightMatched, + 'FilesPerJob': 1, +} + + +############ WZ ############ +files = nanoGetSampleFiles(mcDirectory, 'WZTo3LNu_mllmin0p1') + +samples['WZ'] = { + 'name': files, + 'weight': mcCommonWeightMatched + ' * (gstarHigh)', + 'FilesPerJob': 4, +} +addSampleWeight(samples, 'WZ', 'WZTo3LNu_mllmin0p1', '(0.601644*58.59/4.666)') + + +########## VVV ######### +files = nanoGetSampleFiles(mcDirectory, 'ZZZ') + \ + nanoGetSampleFiles(mcDirectory, 'WZZ') + \ + nanoGetSampleFiles(mcDirectory, 'WWZ') + \ + nanoGetSampleFiles(mcDirectory, 'WWW') + +samples['VVV'] = { + 'name': files, + 'weight': mcCommonWeight, + 'FilesPerJob': 8, +} + +########################################### +############# SIGNALS ################## +########################################### + +signals = [] + +############ ggH H->WW ############ +samples['ggH_hww'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'GluGluHToWWTo2L2Nu_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 4, +} +signals.append('ggH_hww') + +############ VBF H->WW ############ +samples['qqH_hww'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'VBFHToWWTo2L2Nu_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 8, +} +signals.append('qqH_hww') + +############ ZH H->WW ############ +samples['ZH_hww'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'HZJ_HToWW_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 8, +} +signals.append('ZH_hww') + +samples['ggZH_hww'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'ggZH_HToWW_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 8, +} +signals.append('ggZH_hww') + +############ WH H->WW ############ +samples['WH_hww_plus'] = { + # 'name': nanoGetSampleFiles(mcDirectory, 'HWplusJ_HToWWTo2L2Nu_WTo2L_M125'), + 'name': nanoGetSampleFiles(mcDirectory, 'HWplusJ_HToWW_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 4, +} +signals.append('WH_hww_plus') + +samples['WH_hww_minus'] = { + # 'name': nanoGetSampleFiles(mcDirectory, 'HWminusJ_HToWWTo2L2Nu_WTo2L_M125'), + 'name': nanoGetSampleFiles(mcDirectory, 'HWminusJ_HToWW_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 4, +} +signals.append('WH_hww_minus') + +############ ttH ############ +samples['ttH_hww'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'ttHToNonbb_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 4, +} +signals.append('ttH_hww') + +############ H->TauTau ############ +samples['ggH_htt'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'GluGluHToTauTau_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 20, +} +signals.append('ggH_htt') + +samples['qqH_htt'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'VBFHToTauTau_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 10, +} +signals.append('qqH_htt') + +samples['ZH_htt'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'ZHToTauTau_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 8, +} +signals.append('ZH_htt') + +############ WH H->TauTau ############ +samples['WH_htt_plus'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'WplusHToTauTau_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 8, +} +signals.append('WH_htt_plus') + +samples['WH_htt_minus'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'WminusHToTauTau_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 8, +} +signals.append('WH_htt_minus') + + +########################################### +################## FAKE ################### +########################################### + +samples['Fake'] = { + 'name': [], + 'weight': 'METFilter_DATA*fakeW', + 'weights': [], + 'isData': ['all'], + 'FilesPerJob': 50 +} + +for _, sd in DataRun: + for pd in DataSets: + tag_data = pd + '_' + sd + + if 'DoubleMuon' in pd and 'Run2016G' in sd: + print("sd = {}".format(sd)) + print("pd = {}".format(pd)) + print("Old tag = {}".format(tag_data)) + tag_data = tag_data.replace('v1','v2') + print("New tag = {}".format(tag_data)) + + files = nanoGetSampleFiles(fakeDirectory, tag_data) + + samples['Fake']['name'].extend(files) + addSampleWeight(samples, 'Fake', tag_data, DataTrig[pd]) + + +########################################### +################## DATA ################### +########################################### + +samples['DATA'] = { + 'name': [], + 'weight': 'LepWPCut*METFilter_DATA', + 'weights': [], + 'isData': ['all'], + 'FilesPerJob': 50 +} + +for _, sd in DataRun: + for pd in DataSets: + tag_data = pd + '_' + sd + + if 'DoubleMuon' in pd and 'Run2016G' in sd: + print("sd = {}".format(sd)) + print("pd = {}".format(pd)) + print("Old tag = {}".format(tag_data)) + tag_data = tag_data.replace('v1','v2') + print("New tag = {}".format(tag_data)) + + files = nanoGetSampleFiles(dataDirectory, tag_data) + + samples['DATA']['name'].extend(files) + addSampleWeight(samples, 'DATA', tag_data, DataTrig[pd]) diff --git a/ControlRegions/3l/2016noHIPM/structure.py b/ControlRegions/3l/2016noHIPM/structure.py new file mode 100644 index 00000000..6e7afcc8 --- /dev/null +++ b/ControlRegions/3l/2016noHIPM/structure.py @@ -0,0 +1,121 @@ +# structure configuration for datacard + +# keys here must match keys in samples.py + +structure = {} + +structure['top'] = { + 'isSignal' : 0, + 'isData' : 0 +} + +structure['WW'] = { + 'isSignal' : 0, + 'isData' : 0 +} + +structure['Vg'] = { + 'isSignal' : 0, + 'isData' : 0 +} + +structure['VgS'] = { + 'isSignal' : 0, + 'isData' : 0 +} + +structure['ZZ'] = { + 'isSignal' : 0, + 'isData' : 0 +} + +structure['WZ'] = { + 'isSignal' : 0, + 'isData' : 0, + 'scaleSampleForDatacard' : 1.138 # NLO -> NNLO k-factor +} + +structure['VVV'] = { + 'isSignal' : 0, + 'isData' : 0 +} + +structure['ggH_hww'] = { + 'isSignal' : 0, + 'isData' : 0 +} + +structure['qqH_hww'] = { + 'isSignal' : 0, + 'isData' : 0 +} + +structure['ZH_hww'] = { + 'isSignal' : 0, + 'isData' : 0 +} + +structure['ggZH_hww'] = { + 'isSignal' : 0, + 'isData' : 0 +} + +structure['WH_hww_plus'] = { + 'isSignal' : 1, + 'isData' : 0, + 'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity +} + +structure['WH_hww_minus'] = { + 'isSignal' : 1, + 'isData' : 0, + 'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity +} + +structure['ttH_hww'] = { + 'isSignal' : 0, + 'isData' : 0 +} + +structure['ggH_htt'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['qqH_htt'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['ZH_htt'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['WH_htt_plus'] = { + 'isSignal' : 1, + 'isData' : 0, + 'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity +} + +structure['WH_htt_minus'] = { + 'isSignal' : 1, + 'isData' : 0, + 'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity +} + +structure['Fake'] = { + 'isSignal' : 0, + 'isData' : 0 +} + + +# Data +structure['DATA'] = { + 'isSignal' : 0, + 'isData' : 1 +} + + + + diff --git a/ControlRegions/3l/2016noHIPM/variables.py b/ControlRegions/3l/2016noHIPM/variables.py new file mode 100644 index 00000000..ccbcbbc1 --- /dev/null +++ b/ControlRegions/3l/2016noHIPM/variables.py @@ -0,0 +1,285 @@ +# variables + +# 0 = not fold (default), 1 = fold underflowbin, 2 = fold overflow bin, 3 = fold underflow and overflow + +variables = {} + +variables['events'] = { + 'name' : '1', + 'range' : (1,0,2), + 'xaxis' : 'events', + 'fold' : 3 +} + +################### +# Control variables +################### + +variables['BDTG6_TT'] = { + 'name' : 'BDT_WHSS_TopSemileptonic_v9', + 'range' : (40,-1,1), + 'xaxis' : 'BDT discriminant', + 'fold' : 3, +} + +variables['BDT_WH3l_OSSF_new_v9'] = { + 'name' : 'BDT_WH3l_OSSF_new_v9', + 'range' : (40,-1.,1.), + 'xaxis' : 'MVA discriminant', + 'fold' : 3, +} + +variables['BDT_WH3l_SSSF_new_v9'] = { + 'name' : 'BDT_WH3l_SSSF_new_v9', + 'range' : (40,-1.,1.), + 'xaxis' : 'MVA discriminant', + 'fold' : 3, +} + +variables['pt1'] = { + 'name' : 'Lepton_pt[0]', + 'range' : (30,0,150), + 'xaxis' : 'p_{T} 1st lep', + 'fold' : 0 +} + +variables['pt2'] = { + 'name' : 'Lepton_pt[1]', + 'range' : (30,0,100), + 'xaxis' : 'p_{T} 2nd lep', + 'fold' : 3 +} + +variables['conept1'] = { + 'name' : 'Lepton_conept[0]', + 'range' : (30,0,150), + 'xaxis' : 'p_{T} 1st lep', + 'fold' : 0 +} + +variables['conept2'] = { + 'name' : 'Lepton_conept[1]', + 'range' : (30,0,100), + 'xaxis' : 'p_{T} 2nd lep', + 'fold' : 3 +} + +variables['eta1'] = { + 'name' : 'Lepton_eta[0]', + 'range' : (50,-2.5,2.5), + 'xaxis' : '#eta 1st lep', + 'fold' : 3 +} + +variables['eta2'] = { + 'name' : 'Lepton_eta[1]', + 'range' : (50,-2.5,2.5), + 'xaxis' : '#eta 2nd lep', + 'fold' : 3 +} + +variables['detall'] = { + 'name' : 'abs(Lepton_eta[0] - Lepton_eta[1])', + 'range' : (20,0.,5.), + 'xaxis' : '#Delta#eta_{#ell #ell}', + 'fold' : 3 +} + +variables['dphill'] = { + 'name' : 'abs(dphill)', + 'range' : (20, 0,3.2), + 'xaxis' : '#Delta#phi_{ll}', + 'fold' : 3 +} + +variables['drll'] = { + 'name' : 'abs(drll)', + 'range' : (20, 0,5.), + 'xaxis' : '#Delta#R_{ll}', + 'fold' : 3 +} + +variables['mll'] = { + 'name' : 'mll', + 'range' : (25, 0,250), + 'xaxis' : 'm_{ll} [GeV]', + 'fold' : 0 +} + +variables['ptll'] = { + 'name' : 'ptll', + 'range' : (20, 0,200), + 'xaxis' : 'p_{T}^{ll} [GeV]', + 'fold' : 0 +} + + +variables['jetpt1'] = { + 'name' : 'CleanJet_pt[0]*(CleanJet_pt[0]>30)', + 'range' : (40,0,400), + 'xaxis' : 'p_{T} 1st jet', + 'fold' : 2 +} + +variables['jetpt2'] = { + 'name' : 'CleanJet_pt[1]*(CleanJet_pt[1]>30)', + 'range' : (40,0,200), + 'xaxis' : 'p_{T} 2nd jet', + 'fold' : 0 +} + +variables['jeteta1'] = { + 'name' : 'CleanJet_eta[0]*(CleanJet_pt[0]>30)', + 'range' : (50,-5,5), + 'xaxis' : '#eta 1st jet', + 'fold' : 2 +} + +variables['jeteta2'] = { + 'name' : 'CleanJet_eta[1]*(CleanJet_pt[1]>30)', + 'range' : (50,-5,5), + 'xaxis' : '#eta 2nd jet', + 'fold' : 0 +} + +variables['detajj'] = { + 'name' : 'abs(CleanJet_eta[0] - CleanJet_eta[1])*(CleanJet_pt[1]>30)', + 'range' : (20,0.,10.), + 'xaxis' : '#Delta#eta_{jj}', + 'fold' : 3 +} + +variables['dphijj'] = { + 'name' : 'dphijj', + 'range' : (20,0,3.2), + 'xaxis' : '#Delta#phi_{jj}', + 'fold' : 3 +} + +variables['mjj'] = { + 'name' : 'mjj*(CleanJet_pt[1]>30)', + 'range' : (20,0,1000), + 'xaxis' : 'm_{jj} [GeV]', + 'fold' : 3 +} + + +variables['puppimet'] = { + 'name' : 'PuppiMET_pt', + 'range' : (20,0,200), + 'xaxis' : 'PUPPI met [GeV]', + 'fold' : 3 +} + + +variables['mlljj20'] = { + 'name' : 'mlljj20_whss', + 'range' : (20,0,1000), + 'xaxis' : 'mlljj20 [GeV]', + 'fold' : 3 +} + +variables['mth'] = { + 'name' : 'mth', + 'range' : (50,0,250), + 'xaxis' : 'm_{T}^{H} [GeV]', + 'fold' : 0 +} + +variables['mtw1'] = { + 'name' : 'mtw1', + 'range' : (50,0,250), + 'xaxis' : 'm_{T}^{W_{1}} [GeV]', + 'fold' : 3 +} + +variables['mtw2'] = { + 'name' : 'mtw2', + 'range' : (50,0,200), + 'xaxis' : 'm_{T}^{W_{2}} [GeV]', + 'fold' : 3 +} + +variables['dphilljet'] = { + 'name' : 'dphilljet', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilljet', + 'fold' : 3 +} + +variables['dphilljetjet'] = { + 'name' : 'dphilljetjet*(CleanJet_pt[1]>30)', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilljetjet', + 'fold' : 3 +} + +variables['dphilmet'] = { + 'name' : 'dphilmet', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilmet', + 'fold' : 3 +} + +variables['dphilmet2'] = { + 'name' : 'dphilmet2', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilmet2', + 'fold' : 3 +} + +variables['dphillmet'] = { + 'name' : 'dphillmet', + 'range' : (20,0,3.2), + 'xaxis' : 'dphillmet', + 'fold' : 3 +} + +variables['dphilep1jet1'] = { + 'name' : 'dphilep1jet1', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilep1jet1', + 'fold' : 3 +} + +variables['dphilep1jet2'] = { + 'name' : 'dphilep1jet2*(CleanJet_pt[1]>30)', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilep1jet2', + 'fold' : 3 +} + +variables['dphilep2jet1'] = { + 'name' : 'dphilep2jet1', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilep2jet1', + 'fold' : 3 +} + +variables['dphilep2jet2'] = { + 'name' : 'dphilep2jet2*(CleanJet_pt[1]>30)', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilep1jet2', + 'fold' : 3 +} + +variables['dphijjmet'] = { + 'name' : 'dphijjmet', + 'range' : (20,0,3.2), + 'xaxis' : 'dphijjmet', + 'fold' : 3 +} + +variables['ht'] = { + 'name' : 'ht', + 'range' : (30,0,1500), + 'xaxis' : 'ht [GeV]', + 'fold' : 3 +} + +variables['dphijet1met'] = { + 'name' : 'dphijet1met', + 'range' : (20,0,3.2), + 'xaxis' : 'dphijet1met', + 'fold' : 3 +} From 9b23322c0097f633667e4f5a65cea8ed43fe21ce Mon Sep 17 00:00:00 2001 From: ntrevisa Date: Thu, 14 Aug 2025 17:04:11 +0200 Subject: [PATCH 15/44] 3l control region 2016HIPM --- ControlRegions/3l/2016HIPM/README.md | 117 ++++++ ControlRegions/3l/2016HIPM/aliases.py | 338 +++++++++++++++++ ControlRegions/3l/2016HIPM/configuration.py | 105 ++++++ ControlRegions/3l/2016HIPM/cuts.py | 46 +++ ControlRegions/3l/2016HIPM/nuisances.py | 112 ++++++ ControlRegions/3l/2016HIPM/plot.py | 264 +++++++++++++ ControlRegions/3l/2016HIPM/repeat.sh | 38 ++ ControlRegions/3l/2016HIPM/samples.py | 390 ++++++++++++++++++++ ControlRegions/3l/2016HIPM/structure.py | 121 ++++++ ControlRegions/3l/2016HIPM/variables.py | 285 ++++++++++++++ 10 files changed, 1816 insertions(+) create mode 100644 ControlRegions/3l/2016HIPM/README.md create mode 100644 ControlRegions/3l/2016HIPM/aliases.py create mode 100644 ControlRegions/3l/2016HIPM/configuration.py create mode 100644 ControlRegions/3l/2016HIPM/cuts.py create mode 100644 ControlRegions/3l/2016HIPM/nuisances.py create mode 100644 ControlRegions/3l/2016HIPM/plot.py create mode 100644 ControlRegions/3l/2016HIPM/repeat.sh create mode 100644 ControlRegions/3l/2016HIPM/samples.py create mode 100644 ControlRegions/3l/2016HIPM/structure.py create mode 100644 ControlRegions/3l/2016HIPM/variables.py diff --git a/ControlRegions/3l/2016HIPM/README.md b/ControlRegions/3l/2016HIPM/README.md new file mode 100644 index 00000000..830ccadd --- /dev/null +++ b/ControlRegions/3l/2016HIPM/README.md @@ -0,0 +1,117 @@ +# Three leptons control region + +This configuration plots control distributions for the three-leptons phase space + +The instructions to run the analysis follow. + +### Load the mkShapesRDF environment + +Here, we assume `PlotsConfigurationsRun3` was installed in the same directory as `mkShapesRDF`. E.g., let's assume we have a `Run3` directory where we installed both `mkShapesRDF` and `PlotsConfigurationsRun3`. + +Then, we can source the `mkShapesRDF` environment using these commands: + + cd ../../../mkShapesRDF/ + + source start.sh + + cd - + +### Produce distributions using mkShapesMulti.py in batch mode + +Compile the configuration. Do it after every change to any file in this directory: + + mkShapesRDF -c 1 + +Produce histograms using batch: + + mkShapesRDF -c 1 -o 0 -f . -b 1 + +Check jobs status: + + mkShapesRDF -o 1 -f . + +Resubmit failed jobs: + + mkShapesRDF -o 1 -f . -r 1 + +Merge rootfiles: + + mkShapesRDF -o 2 -f . + +Plot distributions: + + mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png + +### Perform goodness of fit test + +Create datacards: + + mkDatacards + +Produce workspaces: + + mkdir -p GoF + + cd GoF/ + + VARIABLE=mjj + FINAL_STATE=mm_2j_SS_CR_plus + OUT_NAME=_${FINAL_STATE}_${VARIABLE} + + combineTool.py -M T2W -m 125 \ + -o datacard.root \ + -i ../datacards/hww2l2v_13TeV_WH_SS_${FINAL_STATE}_pt2ge20/${VARIABLE}/datacard.txt \ + --channel-masks \ + -P HiggsAnalysis.CombinedLimit.PhysicsModel:multiSignalModel \ + --PO 'map=.*/WH_h.*_plus:r_WH[1,-10.0,10.0]' \ + --PO 'map=.*/WH_h.*_minus:r_WH[1,-10.0,10.0]' + +Perform fit on real data: + + combineTool.py -M GoodnessOfFit ../datacards/hww2l2v_13TeV_WH_SS_${FINAL_STATE}_pt2ge20/${VARIABLE}/datacard.root \ + --algo=saturated \ + --setParameters r_WH=1 \ + --setParameterRanges r_WH=-5,5 \ + --redefineSignalPOIs r_WH \ + -n ${OUT_NAME} + +Produce toys based on the predictions: + + combineTool.py -M GoodnessOfFit ../datacards/hww2l2v_13TeV_WH_SS_${FINAL_STATE}_pt2ge20/${VARIABLE}/datacard.root \ + --algo=saturated \ + -t 1 \ + -s 0:10:1 \ + --dry-run \ + --job-mode=condor \ + --setParameters r_WH=1 \ + --setParameterRanges r_WH=-5,5 \ + --redefineSignalPOIs r_WH \ + -n ${OUT_NAME} + +Modify the sh file in order to submit 10 jobs running the 100 toys + + sed -i 's/-t 1/-t 10/g' condor_combine_task.sh + +If you run on the KIT machines, remember to adapt the submission file to the HTCondor requirements, by adding these lines to the top of `condor_combine_task.sub`: + + text_to_add=$'universe = container\ncontainer_image = /cvmfs/unpacked.cern.ch/registry.hub.docker.com/cverstege/alma9-gridjob:latest' + + printf "%s\n" "$text_to_add" | cat - condor_combine_task.sub > temp && mv temp condor_combine_task.sub + +Submit the jobs to condor + + condor_submit condor_combine_task.sub + +Once all jobs are done, merge the output and plot the results: + + hadd -f higgsCombine_${OUT_NAME}.GoodnessOfFit.mH120.toys.root higgsCombine${OUT_NAME}.GoodnessOfFit.mH120.*.root + + combineTool.py -M CollectGoodnessOfFit --input higgsCombine${OUT_NAME}.GoodnessOfFit.mH120.root higgsCombine_${OUT_NAME}.GoodnessOfFit.mH120.toys.root -m 125 -o GoF_${OUT_NAME}.json + + plotGof.py GoF_${OUT_NAME}.json --statistic saturated --mass 120.0 -o GoF_${OUT_NAME} --title-right=${OUT_NAME} --range 0 200 + +Clean the mess: + + rm combine* + rm condor* + rm higgsCombine* diff --git a/ControlRegions/3l/2016HIPM/aliases.py b/ControlRegions/3l/2016HIPM/aliases.py new file mode 100644 index 00000000..8b6ecfe7 --- /dev/null +++ b/ControlRegions/3l/2016HIPM/aliases.py @@ -0,0 +1,338 @@ +import os +import copy +import inspect + +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/ControlRegions/3l/2016HIPM_v9/ + +configurations = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file +configurations = os.path.dirname(configurations) # 2016HIPM_v9 +configurations = os.path.dirname(configurations) # 3l +configurations = os.path.dirname(configurations) # ControlRegions +configurations = os.path.dirname(configurations) # PlotsConfigurationsRun3 + +aliases = {} +aliases = OrderedDict() + +mc = [skey for skey in samples if skey not in ('Fake', 'DATA')] + + +# LepCut2l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight80x_tthmva_82 +eleWP = 'mvaFall17V2Iso_WP90' +muWP = 'cut_Tight80x' + +aliases['LepWPCut'] = { + 'expr' : 'LepCut3l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight80x*\ + ( ((abs(Lepton_pdgId[0])==13 && Muon_mvaTTH[Lepton_muonIdx[0]]>0.82) || (abs(Lepton_pdgId[0])==11 && Lepton_mvaTTH_UL[0]>0.90)) \ + && ((abs(Lepton_pdgId[1])==13 && Muon_mvaTTH[Lepton_muonIdx[1]]>0.82) || (abs(Lepton_pdgId[1])==11 && Lepton_mvaTTH_UL[1]>0.90)) \ + && ((abs(Lepton_pdgId[2])==13 && Muon_mvaTTH[Lepton_muonIdx[2]]>0.82) || (abs(Lepton_pdgId[2])==11 && Lepton_mvaTTH_UL[2]>0.90)) )', + 'samples' : mc + ['DATA'] +} + +# Lepton SF (not considering the ttHMVA discriminant) +aliases['LepWPSF'] = { + 'expr' : 'LepSF3l__ele_'+eleWP+'__mu_'+muWP, + 'samples' : mc +} + +# ttHMVA SFs and uncertainties +aliases['LepWPttHMVASF'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/ttHMVASF_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('ttHMVASF ttH = ttHMVASF(\"2016HIPM\", 3, \"all\", \"nominal\",\"{configurations}/WH_chargeAsymmetry/UL/data/\");')"], + 'expr' : 'ttH(Lepton_pt, Lepton_eta, Lepton_pdgId)', + 'samples' : mc +} + +aliases['LepWPttHMVASFEleUp'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/ttHMVASF_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('ttHMVASF ttH_EleUp = ttHMVASF(\"2016HIPM\", 3, \"all\", \"eleUp\" ,\"{configurations}/WH_chargeAsymmetry/UL/data/\");')"], + 'expr' : 'ttH_EleUp(Lepton_pt, Lepton_eta, Lepton_pdgId)', + 'samples' : mc +} +aliases['LepWPttHMVASFEleDown'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/ttHMVASF_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('ttHMVASF ttH_EleDown = ttHMVASF(\"2016HIPM\", 3, \"all\", \"eleDown\" ,\"{configurations}/WH_chargeAsymmetry/UL/data/\");')"], + 'expr' : 'ttH_EleDown(Lepton_pt, Lepton_eta, Lepton_pdgId)', + 'samples' : mc +} + +aliases['LepWPttHMVASFMuUp'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/ttHMVASF_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('ttHMVASF ttH_MuUp = ttHMVASF(\"2016HIPM\", 3, \"all\", \"muUp\" ,\"{configurations}/WH_chargeAsymmetry/UL/data/\");')"], + 'expr' : 'ttH_MuUp(Lepton_pt, Lepton_eta, Lepton_pdgId)', + 'samples' : mc +} +aliases['LepWPttHMVASFMuDown'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/ttHMVASF_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('ttHMVASF ttH_MuDown = ttHMVASF(\"2016HIPM\", 3, \"all\", \"muDown\" ,\"{configurations}/WH_chargeAsymmetry/UL/data/\");')"], + 'expr' : 'ttH_MuDown(Lepton_pt, Lepton_eta, Lepton_pdgId)', + 'samples' : mc +} + + +# Conept +aliases['Lepton_conept'] = { + 'expr': 'LeptonConePt(Lepton_pt, Lepton_pdgId, Lepton_electronIdx, Lepton_muonIdx, Electron_jetRelIso, Muon_jetRelIso)', + 'linesToAdd': [f'#include "{configurations}/utils/macros/LeptonConePt_class.cc"'], + 'samples': mc + ['Fake', 'DATA', 'DATA_unprescaled'] +} + +# Fake leptons transfer factor +aliases['fakeW'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"nominal\", 3, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} + +# And variations - already divided by central values in formulas ! +aliases['fakeWEleUp'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleUp = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"EleUp\", 3, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_EleUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} +aliases['fakeWEleDown'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleDown = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"EleDown\", 3, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_EleDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} + +aliases['fakeWMuUp'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuUp = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"MuUp\", 3, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_MuUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} +aliases['fakeWMuDown'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuDown = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"MuDown\", 3, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_MuDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} + +aliases['fakeWStatEleUp'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleUp = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"StatEleUp\", 3, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_StatEleUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} +aliases['fakeWStatEleDown'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleDown = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"StatEleDown\", 3, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_StatEleDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} + +aliases['fakeWStatMuUp'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuUp = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"StatMuUp\", 3, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_StatMuUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} +aliases['fakeWStatMuDown'] = { + 'linesToAdd' : [f'#include "{configurations}/utils/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuDown = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"StatMuDown\", 3, \"std\", \"{configurations}/ControlRegions/SS/\");')"], + 'expr' : 'fr_reader_StatMuDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] +} + + +# No jet with pt > 30 GeV +aliases['zeroJet'] = { + 'expr' : 'Alt(CleanJet_pt, 0, 0) < 30.' +} + +aliases['oneJet'] = { + 'expr' : 'Alt(CleanJet_pt, 0, 0) > 30. && Alt(CleanJet_pt, 1, 0) < 30.' +} + +aliases['multiJet'] = { + 'expr' : 'Alt(CleanJet_pt, 1, 0) > 30.' +} + +########################################################################################### +# b tagging WPs: https://twiki.cern.ch/twiki/bin/view/CMS/BtagRecommendation106XUL16postVFP +########################################################################################### + +# DeepB = DeepCSV +bWP_loose_deepB = '0.1918' +bWP_medium_deepB = '0.5847' +bWP_tight_deepB = '0.8767' + +# DeepFlavB = DeepJet +bWP_loose_deepFlavB = '0.0480' +bWP_medium_deepFlavB = '0.2489' +bWP_tight_deepFlavB = '0.6377' + +# Actual algo and WP definition. BE CONSISTENT!! +bAlgo = 'DeepB' # ['DeepB', 'DeepFlavB' ] +bWP = bWP_medium_deepB # [bWP_loose_deepB, bWP_loose_deepFlavB] +bSF = 'deepcsv' # ['deepcsv', 'deepjet' ] + +# b veto +aliases['bVeto'] = { + 'expr': 'Sum(CleanJet_pt > 20. && abs(CleanJet_eta) < 2.5 && Take(Jet_btag{}, CleanJet_jetIdx) > {}) == 0'.format(bAlgo, bWP) +} + +aliases['bVetoSF'] = { + 'expr': 'TMath::Exp(Sum(LogVec((CleanJet_pt>20 && abs(CleanJet_eta)<2.5)*Take(Jet_btagSF_{}_shape, CleanJet_jetIdx)+1*(CleanJet_pt<20 || abs(CleanJet_eta)>2.5))))'.format(bSF), + 'samples': mc +} + +# At least one b-tagged jet +aliases['bReq'] = { + 'expr': 'Sum(CleanJet_pt > 30. && abs(CleanJet_eta) < 2.5 && Take(Jet_btag{}, CleanJet_jetIdx) > {}) >= 1'.format(bAlgo, bWP) +} + +aliases['bReqSF'] = { + 'expr': 'TMath::Exp(Sum(LogVec((CleanJet_pt>30 && abs(CleanJet_eta)<2.5)*Take(Jet_btagSF_{}_shape, CleanJet_jetIdx)+1*(CleanJet_pt<30 || abs(CleanJet_eta)>2.5))))'.format(bSF), + 'samples': mc +} + +# Top control region +aliases['topcr'] = { + 'expr': 'mtw2>30 && mll>50 && ((zeroJet && !bVeto) || bReq)' +} + +# WW control region +aliases['wwcr'] = { + 'expr': 'mth>60 && mtw2>30 && mll>100 && bVeto' +} + +# Overall b tag SF +aliases['btagSF'] = { + 'expr': '(bVeto || (topcr && zeroJet))*bVetoSF + (topcr && !zeroJet)*bReqSF', + 'samples': mc +} + +for shift in ['jesAbsolute', 'jesAbsolute_2016', 'jesBBEC1', 'jesBBEC1_2016', 'jesEC2', + 'jesEC2_2016', 'jesFlavorQCD', 'jesHF', 'jesHF_2016', 'jesRelativeBal', + 'jesRelativeSample_2016']: + for var in ['up','down']: + aliases[f'Jet_btagSF_{bSF}_shape_{shift.replace("jes","JES")}{var[:2]}'] = { + 'expr' : f'Jet_btagSF_{bSF}_shape_{var}_{shift}', + 'samples' : mc + } + +for shift in ['jesAbsolute', 'jesAbsolute_2016', 'jesBBEC1', 'jesBBEC1_2016', 'jesEC2', + 'jesEC2_2016', 'jesFlavorQCD', 'jesHF', 'jesHF_2016', 'jesRelativeBal', + 'jesRelativeSample_2016', 'lf', 'hf', 'lfstats1', 'lfstats2', + 'hfstats1', 'hfstats2', 'cferr1', 'cferr2']: + + for targ in ['bVeto', 'bReq']: + alias = aliases['%sSF%sup' % (targ, shift)] = copy.deepcopy(aliases['%sSF' % targ]) + alias['expr'] = alias['expr'].replace('btagSF_{}_shape'.format(bSF), 'btagSF_{}_shape_up_{}'.format(bSF, shift)) + + alias = aliases['%sSF%sdown' % (targ, shift)] = copy.deepcopy(aliases['%sSF' % targ]) + alias['expr'] = alias['expr'].replace('btagSF_{}_shape'.format(bSF), 'btagSF_{}_shape_down_{}'.format(bSF, shift)) + + aliases['btagSF%sup' % shift] = { + 'expr': aliases['btagSF']['expr'].replace('SF', 'SF' + shift + 'up'), + 'samples': mc + } + + aliases['btagSF%sdown' % shift] = { + 'expr': aliases['btagSF']['expr'].replace('SF', 'SF' + shift + 'down'), + 'samples': mc + } + +#################################################################################### +# End of b tagging pippone +#################################################################################### + +aliases['gstarLow'] = { + 'expr': 'Gen_ZGstar_mass > 0 && Gen_ZGstar_mass < 4', + 'samples': 'VgS' +} + +aliases['gstarHigh'] = { + 'expr': 'Gen_ZGstar_mass < 0 || Gen_ZGstar_mass > 4', + 'samples': 'WZ' +} + +# gen-matching to prompt only (GenLepMatch3l matches to *any* gen lepton) +aliases['PromptGenLepMatch3l'] = { + 'expr': 'Alt(Lepton_promptgenmatched, 0, 0) * Alt(Lepton_promptgenmatched, 1, 0) * Alt(Lepton_promptgenmatched, 2, 0)', + 'samples': mc +} + +# Need to redefine PUID scale factors, so that they are double and not vectors +aliases['Jet_PUIDSF'] = { + 'expr' : 'TMath::Exp(Sum((Jet_jetId>=2)*LogVec(Jet_PUIDSF_loose)))', + 'samples': mc +} + +aliases['Jet_PUIDSF_up'] = { + 'expr' : 'TMath::Exp(Sum((Jet_jetId>=2)*LogVec(Jet_PUIDSF_loose_up)))', + 'samples': mc +} + +aliases['Jet_PUIDSF_down'] = { + 'expr' : 'TMath::Exp(Sum((Jet_jetId>=2)*LogVec(Jet_PUIDSF_loose_down)))', + 'samples': mc +} + + +aliases['Top_pTrw'] = { + 'expr': '(topGenPt * antitopGenPt > 0.) * (TMath::Sqrt(TMath::Exp(0.0615 - 0.0005 * topGenPt) * TMath::Exp(0.0615 - 0.0005 * antitopGenPt))) + (topGenPt * antitopGenPt <= 0.)', + 'samples': ['top'] +} + +# data/MC scale factors +aliases['SFweight'] = { + # 'expr': ' * '.join(['SFweight3l', 'LepWPCut', 'LepWPSF','Jet_PUIDSF_loose', 'btagSF', 'LepWPttHMVASF']), + 'expr': ' * '.join(['SFweight3l', 'LepWPCut', 'LepWPSF', 'Jet_PUIDSF', 'btagSF', 'LepWPttHMVASF']), + 'samples': mc +} + +# variations +aliases['SFweightEleUp'] = { + 'expr': 'LepSF3l__ele_'+eleWP+'__Up', + 'samples': mc +} +aliases['SFweightEleDown'] = { + 'expr': 'LepSF3l__ele_'+eleWP+'__Do', + 'samples': mc +} + +aliases['SFweightMuUp'] = { + 'expr': 'LepSF3l__mu_'+muWP+'__Up', + 'samples': mc +} +aliases['SFweightMuDown'] = { + 'expr': 'LepSF3l__mu_'+muWP+'__Do', + 'samples': mc +} + +# TriggerSFWeight_3l:TriggerSFWeight_3l_u:TriggerSFWeight_3l_d +aliases['SFtriggUp'] = { + 'expr': 'TriggerSFWeight_3l_u/TriggerSFWeight_3l', + 'samples': mc +} +aliases['SFtriggDown'] = { + 'expr': 'TriggerSFWeight_3l_d/TriggerSFWeight_3l', + 'samples': mc +} + +# Evaluate BDT discriminant +aliases['BDT_WHSS_TopSemileptonic_v9'] = { + 'linesToAdd' : ['#include "%s/ControlRegions/SS/macros/BDT_WHSS_TopSemileptonic_v9_class.cc"' % configurations], + 'linesToProcess' : ["ROOT.gInterpreter.Declare('BDT_WHSS_TopSemileptonic_v9 BDT_WHSS = BDT_WHSS_TopSemileptonic_v9(\"BDTG_6\",\"{0}/ControlRegions/SS/data/BDT/2016HIPM/WHSS/weights/TMVAClassification_BDTG_6.weights.xml\");')".format(configurations)], + 'expr' : 'BDT_WHSS(mll,mjj,mtw1,mtw2,ptll,mlljj20_whss,PuppiMET_pt,dphill,dphijj,dphillmet,dphilmet2,dphijet1met,CleanJet_pt,Jet_btagDeepB,CleanJet_jetIdx)', + 'samples' : mc + ['DATA','Fake'], +} + +aliases['BDT_WH3l_OSSF_new_v9'] = { + 'linesToAdd' : ['#include "%s/ControlRegions/SS/macros/BDT_WH3l_OSSF_v9_class.cc"' % configurations], + 'linesToProcess' : ["ROOT.gInterpreter.Declare('BDT_WH3l_OSSF_v9 BDT_WH3l_OSSF = BDT_WH3l_OSSF_v9(\"BDTG4C3\",\"{0}/ControlRegions/SS/data/BDT/2016HIPM/WH3l/OSSF/weights/TMVAClassification_BDTG4C3.weights.xml\");')".format(configurations)], + 'expr' : 'BDT_WH3l_OSSF(WH3l_dphilllmet,WH3l_mOSll,WH3l_ptOSll,WH3l_drOSll,WH3l_ZVeto,WH3l_mtlmet,WH3l_dphilmet,WH3l_ptWWW,PuppiMET_pt,Lepton_pt)', + 'samples' : mc + ['DATA','Fake'], +} + +aliases['BDT_WH3l_SSSF_new_v9'] = { + 'linesToAdd' : ['#include "%s/ControlRegions/SS/macros/BDT_WH3l_SSSF_v9_class.cc"' % configurations], + 'linesToProcess' : ["ROOT.gInterpreter.Declare('BDT_WH3l_SSSF_v9 BDT_WH3l_SSSF = BDT_WH3l_SSSF_v9(\"BDTG4C3\",\"{0}/ControlRegions/SS/data/BDT/2016HIPM/WH3l/SSSF/weights/TMVAClassification_BDTG4SK01_05shrinkage.weights.xml\");')".format(configurations)], + 'expr' : 'BDT_WH3l_SSSF(WH3l_dphilllmet,WH3l_mOSll,WH3l_ptOSll,WH3l_drOSll,WH3l_dphilmet,WH3l_ptWWW,PuppiMET_pt,Lepton_pt)', + 'samples' : mc + ['DATA','Fake'], +} diff --git a/ControlRegions/3l/2016HIPM/configuration.py b/ControlRegions/3l/2016HIPM/configuration.py new file mode 100644 index 00000000..c31e788b --- /dev/null +++ b/ControlRegions/3l/2016HIPM/configuration.py @@ -0,0 +1,105 @@ +# Configuration file for charge asymmetry WH3l analysis using the UL 2016HIPM dataset + +import sys,inspect + +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' + +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/ControlRegions/3l/Full2018_v9/ + +configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file +configurations_nuisance = os.path.dirname(configurations_nuisance) # 2016HIPM_v9 +configurations_nuisance = os.path.dirname(configurations_nuisance) # 3l +configurations_nuisance = os.path.dirname(configurations_nuisance) # ControlRegions + +# Tag used to identify the configuration folder version +tag = '3l_2016HIPM_v9' + +# File to use as runner script, default uses mkShapesRDF.shapeAnalysis.runner, otherwise specify path to script +runnerFile = "default" + +# Output file name +outputFile = "mkShapes__{}.root".format(tag) + +# Path to ouput folder +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +if site == 'kit': + outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" + +# Path to batch folder (used for condor submission) +batchFolder = "condor" + +# Path to configuration folder (will contain all the compiled configuration files) +configsFolder = "configs" + +# luminosity to normalize to (in 1/fb) +# https://github.com/latinos/LatinoAnalysis/blob/UL_production/NanoGardener/python/data/TrigMaker_cfg.py#L239 (#311 #377 #445) +# 0.418771191 + 7.653261227 + 7.866107374 + 0.8740119304 = 16.8121517224 +lumi = 16.81 + +# File with dict of aliases to define +aliasesFile = "aliases.py" + +# File with dict of variables +variablesFile = "variables.py" + +# File with dict of cuts +cutsFile = "cuts.py" + +# File with dict of samples +samplesFile = "samples.py" + +# File with dict of samples for plotting +plotFile = 'plot.py' + +# File with dict of structure (used to define processes in combine) +structureFile = "structure.py" + +# Nuisances file for mkDatacards and for mkShape +nuisancesFile = "nuisances.py" + +# Path to folder where to save plots +plotPath = 'plots_' + tag + +# This lines are executed right before the runner on the condor node +mountEOS = [] + +# List of imports to import when compiling the whole configuration folder, it should not contain imports used by configuration.py +imports = ["os", "glob", ("collections", "OrderedDict"), "ROOT"] + +# List of files to compile +filesToExec = [ + samplesFile, + aliasesFile, + variablesFile, + cutsFile, + plotFile, + nuisancesFile, + structureFile, +] + +# List of variables to keep in the compiled configuration folder +varsToKeep = [ + "batchVars", + "outputFolder", + "batchFolder", + "configsFolder", + "outputFile", + "runnerFile", + "tag", + "samples", + "aliases", + "variables", + ("cuts", {"cuts": "cuts", "preselections": "preselections"}), + ("plot", {"plot": "plot", "groupPlot": "groupPlot", "legend": "legend"}), + "nuisances", + "structure", + "lumi", +] + +# List of variables to keep in the batch submission script (script.py) +batchVars = varsToKeep[varsToKeep.index("samples") :] + +varsToKeep += ['plotPath'] diff --git a/ControlRegions/3l/2016HIPM/cuts.py b/ControlRegions/3l/2016HIPM/cuts.py new file mode 100644 index 00000000..40670a46 --- /dev/null +++ b/ControlRegions/3l/2016HIPM/cuts.py @@ -0,0 +1,46 @@ +# cuts + +cuts = {} + +# MinIf$( WH3l_mOSll[], WH3l_mOSll[Iteration$] > 0) > 12 +# Alt(WH3l_mOSll,0,9999) > 12 && Alt(WH3l_mOSll,1,9999) > 12 && Alt(WH3l_mOSll,2,9999) > 12 \ + +preselections = '(nLepton>=3 && Alt(Lepton_pt,3,0)<10) \ + && Alt(Lepton_pt,0,0)>25 \ + && Alt(Lepton_pt,1,0)>10 \ + && (abs(Lepton_pdgId[1])==13 || Lepton_pt[1]>13) \ + && Alt(Lepton_pt,2,0)>10 \ + && (WH3l_mOSll[0] < 0 || WH3l_mOSll[0] > 12) \ + && (WH3l_mOSll[1] < 0 || WH3l_mOSll[1] > 12) \ + && (WH3l_mOSll[2] < 0 || WH3l_mOSll[2] > 12) \ + && abs(WH3l_chlll) == 1 \ + && bVeto \ + ' + +## Signal region + +# SSSF +cuts['wh3l_13TeV_sssf'] = { + 'expr' : 'WH3l_flagOSSF == 0 && Alt(CleanJet_pt, 0, 0) < 30', + 'categories' : { + 'plus_pt2ge20' : 'Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]>0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15', + 'minus_pt2ge20' : 'Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]<0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15', + # 'plus_pt2lt20' : 'Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]>0 && Lepton_pt[1]<20', + # 'minus_pt2lt20' : 'Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]<0 && Lepton_pt[1]<20', + } +} + +# OSSF +cuts['wh3l_13TeV_ossf'] = { + 'expr' : 'WH3l_flagOSSF == 1 && WH3l_ZVeto > 20 && PuppiMET_pt > 40 && Alt(CleanJet_pt, 0, 0) < 30', + 'categories' : { + 'plus_pt2ge20' : 'Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]>0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15', + 'minus_pt2ge20' : 'Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]<0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15', + # 'plus_pt2lt20' : 'Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]>0 && Lepton_pt[1]<20', + # 'minus_pt2lt20' : 'Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]<0 && Lepton_pt[1]<20', + } +} + +# 11 = e +# 13 = mu +# 15 = tau diff --git a/ControlRegions/3l/2016HIPM/nuisances.py b/ControlRegions/3l/2016HIPM/nuisances.py new file mode 100644 index 00000000..35358750 --- /dev/null +++ b/ControlRegions/3l/2016HIPM/nuisances.py @@ -0,0 +1,112 @@ +import sys + +nuisances = {} + +mcProduction = 'Summer20UL16_106x_nAODv9_HIPM_Full2016v9' +dataReco = 'Run2016_UL2016_nAODv9_HIPM_Full2016v9' +mcSteps = 'MCl1loose2016v9__MCCorr2016v9NoJERInHorn__l2tightOR2016v9' +fakeSteps = 'DATAl1loose2016v9__l2loose__fakeW' +dataSteps = 'DATAl1loose2016v9__l2loose__l2tightOR2016v9' + +treeBaseDir = '/eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano' +limitFiles = -1 + +mc = [skey for skey in samples if skey not in ('Fake', 'DATA')] + +redirector = "" + +useXROOTD = False + +def makeMCDirectory(var=''): + if var== '': + print(os.path.join(treeBaseDir, mcProduction, mcSteps)) + return os.path.join(treeBaseDir, mcProduction, mcSteps) + else: + print(os.path.join(treeBaseDir, mcProduction, mcSteps + '__' + var)) + return os.path.join(treeBaseDir, mcProduction, mcSteps + '__' + var) + +mcDirectory = makeMCDirectory() +fakeDirectory = os.path.join(treeBaseDir, dataReco, fakeSteps) +dataDirectory = os.path.join(treeBaseDir, dataReco, dataSteps) + +################################ EXPERIMENTAL UNCERTAINTIES ################################# + +#### Luminosity + +# https://twiki.cern.ch/twiki/bin/view/CMS/LumiRecommendationsRun2#LumiComb +# Uncorrelated 2016 1.0 +# Uncorrelated 2017 2.0 +# Uncorrelated 2018 1.5 +# Correlated 2016, 2017, 2018 0.6, 0.9, 2.0 +# Correlated 2017, 2018 0.6, 0.2 + +nuisances['lumi_Uncorrelated'] = { + 'name' : 'lumi_13TeV_2016', + 'type' : 'lnN', + 'samples' : dict((skey, '1.010') for skey in mc if skey not in ['WZ']) +} + +nuisances['lumi_Correlated_Run2'] = { + 'name' : 'lumi_13TeV_correlated', + 'type' : 'lnN', + 'samples' : dict((skey, '1.006') for skey in mc if skey not in ['WZ']) +} + + +### Fakes + +# Per lepton +nuisances['fake_ele'] = { + 'name' : 'CMS_WH_hww_fake_e_2016', + 'kind' : 'weight', + 'type' : 'shape', + 'samples' : { + 'Fake_ee' : ['fakeWEleUp', 'fakeWEleDown'], + 'Fake_em' : ['fakeWEleUp', 'fakeWEleDown'], + } +} + +nuisances['fake_ele_stat'] = { + 'name' : 'CMS_WH_hww_fake_stat_e_2016', + 'kind' : 'weight', + 'type' : 'shape', + 'samples' : { + 'Fake_ee' : ['fakeWStatEleUp', 'fakeWStatEleDown'], + 'Fake_em' : ['fakeWStatEleUp', 'fakeWStatEleDown'], + } +} + + +nuisances['fake_mu'] = { + 'name' : 'CMS_WH_hww_fake_m_2016', + 'kind' : 'weight', + 'type' : 'shape', + 'samples' : { + 'Fake_mm' : ['fakeWMuUp', 'fakeWMuDown'], + 'Fake_em' : ['fakeWMuUp', 'fakeWMuDown'], + } +} + +nuisances['fake_mu_stat'] = { + 'name' : 'CMS_WH_hww_fake_stat_m_2016', + 'kind' : 'weight', + 'type' : 'shape', + 'samples' : { + 'Fake_mm' : ['fakeWStatMuUp', 'fakeWStatMuDown'], + 'Fake_em' : ['fakeWStatMuUp', 'fakeWStatMuDown'], + } +} + + +# Use the following if you want to apply the automatic combine MC stat nuisances. +nuisances['stat'] = { + 'type' : 'auto', + 'maxPoiss' : '10', + 'includeSignal' : '0', + 'samples' : {} +} +# nuisance ['maxPoiss'] = Number of threshold events for Poisson modelling +# nuisance ['includeSignal'] = Include MC stat nuisances on signal processes (1=True, 0=False) + +for n in nuisances.values(): + n['skipCMS'] = 1 diff --git a/ControlRegions/3l/2016HIPM/plot.py b/ControlRegions/3l/2016HIPM/plot.py new file mode 100644 index 00000000..83fc4ecc --- /dev/null +++ b/ControlRegions/3l/2016HIPM/plot.py @@ -0,0 +1,264 @@ +# plot configuration + +# Groups of samples to improve the plots. +# If not defined, normal plots is used + +groupPlot = {} + +groupPlot['top'] = { + 'nameHR' : 'tW+ and t#bar{t}', + 'isSignal' : 0, + 'color' : 400, # kYellow + 'samples' : ['top'] +} + +groupPlot['Fake'] = { + 'nameHR' : 'Non-prompt', + 'isSignal' : 0, + 'color' : 921, # kGray + 1 + 'samples' : ['Fake'] +} + +groupPlot['WW'] = { + 'nameHR' : 'WW', + 'isSignal' : 0, + 'color' : 851, # kAzure -9 + 'samples' : ['WW'] # , 'ggWW', 'WWewk'] +} + +groupPlot['VVV'] = { + 'nameHR' : 'VVV', + 'isSignal' : 0, + 'color' : 857, # kAzure -3 + 'samples' : ['VVV'] +} + +groupPlot['Vg'] = { + 'nameHR' : "V#gamma", + 'isSignal' : 0, + 'color' : 810, # kOrange + 10 + 'samples' : ['Vg'] +} + +groupPlot['VgS'] = { + 'nameHR' : "V#gamma*", + 'isSignal' : 0, + 'color' : 409, # kGreen - 9 + 'samples' : ['VgS'] +} + +groupPlot['ZZ'] = { + 'nameHR' : "ZZ", + 'isSignal' : 0, + 'color' : 617, # kViolet + 1 + 'samples' : ['ZZ'] +} + +groupPlot['WZ'] = { + 'nameHR' : "WZ", + 'isSignal' : 0, + 'color' : 619, # kViolet + 1 + 'samples' : ['WZ'] +} + +groupPlot['Higgs'] = { + 'nameHR' : 'Higgs', + 'isSignal' : 0, + 'color' : 632, # kRed + 'samples' : ['ggH_hww','qqH_hww','ZH_hww','ggZH_hww','ttH_hww','ggH_hww','qqH_htt','ZH_htt'] +} + +groupPlot['WH_minus'] = { + 'nameHR' : 'W^{-} H (x 10)', + 'isSignal' : 2, + 'color' : 600, # kBlue + 'samples' : ['WH_hww_minus','WH_htt_minus'] +} + +groupPlot['WH_plus'] = { + 'nameHR' : 'W^{+} H (x 10)', + 'isSignal' : 2, + 'color' : 632, # kRed + 'samples' : ['WH_hww_plus', 'WH_htt_plus'] +} + + +# keys here must match keys in samples.py + +plot = {} + +plot['top'] = { + 'nameHR' : 'tW and t#bar{t}', + 'color' : 400, # kYellow + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0, +} + +plot['WW'] = { + 'color' : 851, # kAzure -9 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['Vg'] = { + 'color' : 859, # kAzure -1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['VgS'] = { + 'color' : 617, # kViolet + 1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['ZZ'] = { + 'color' : 858, # kAzure -2 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['WZ'] = { + 'color' : 858, # kAzure -2 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.138*1.12 # NLO -> NNLO k-factor! +} + +plot['VVV'] = { + 'color' : 857, # kAzure -3 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +########### +# Signals # +########### + +# HWW + +plot['ggH_hww'] = { + 'color' : 632, # kRed + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['qqH_hww'] = { + 'color' : 632+1, # kRed+1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['ZH_hww'] = { + 'color' : 632+3, # kRed+3 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['ggZH_hww'] = { + 'color' : 632+4, # kRed+4 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['WH_hww_minus'] = { + 'color' : 600, # kBlue + 'isSignal' : 2, + 'isData' : 0, + 'scale' : 10 +} + +plot['WH_hww_plus'] = { + 'color' : 632+2, # kRed+2 + 'isSignal' : 2, + 'isData' : 0, + 'scale' : 10 +} + +plot['ttH_hww'] = { + 'color' : 632+3, # kRed+3 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + + +# Htautau + +plot['ggH_htt'] = { + 'color' : 632, # kRed + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['qqH_htt'] = { + 'color' : 632+1, # kRed+1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['ZH_htt'] = { + 'color' : 632+3, # kRed+3 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['WH_htt_plus'] = { + 'color' : 632+2, # kRed+2 + 'isSignal' : 1, + 'isData' : 0, + 'scale' : 10 +} + +plot['WH_htt_minus'] = { + 'color' : 632+2, # kRed+2 + 'isSignal' : 1, + 'isData' : 0, + 'scale' : 10 +} + + +######## +# Fake # +######## + +plot['Fake'] = { + 'color' : 921, # kGray + 1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + + +######## +# Data # +######## + +plot['DATA'] = { + 'nameHR' : 'Data', + 'color' : 1 , + 'isSignal' : 0, + 'isData' : 1, + 'isBlind' : 0 +} + + +# Define legend + +legend = {} + +legend['lumi'] = 'L = 19.5 fb^{-1}' +legend['sqrt'] = '#sqrt{s} = 13 TeV' diff --git a/ControlRegions/3l/2016HIPM/repeat.sh b/ControlRegions/3l/2016HIPM/repeat.sh new file mode 100644 index 00000000..c61d0f87 --- /dev/null +++ b/ControlRegions/3l/2016HIPM/repeat.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +if [ $# -eq 0 ]; then + echo "$0: Missing arguments" + exit 1 +else + echo "We got some argument(s)" + echo "===========================" + echo "Number of arguments. : $#" + echo "List of arguments... : $@" + echo "Arg #1: sample : $1" + echo "Arg #2: compile : $2" + echo "===========================" + SAMPLE=$1 + COMPILE=$2 +fi + +# Site definition +hostname=$(uname -a | awk '{print $2}') + + +if [ "$COMPILE" == "True" ]; then + mkShapesRDF -c 1 + mkShapesRDF -o 0 -f . -b 1 -dR 1 +fi +cd condor/3l_2016HIPM_v9/${SAMPLE}/ +cp ../../../../../../../mkShapesRDF/mkShapesRDF/include/headers.hh ../../../../../../../mkShapesRDF/mkShapesRDF/shapeAnalysis/runner.py . +python runner.py + +if [[ "$hostname" == *portal* || "$hostname" == *bms* ]]; then + echo "We are at KIT" + cp output.root /ceph/${USER}/mkShapesRDF_rootfiles/3l_2016HIPM_v9/rootFile/mkShapes__3l_2016HIPM_v9__ALL__${SAMPLE}.root +else + echo "We are on lxplus" + cp output.root /eos/user/${USER:0:1}/${USER}/mkShapesRDF_rootfiles/3l_2016HIPM_v9/rootFile/mkShapes__3l_2016HIPM_v9__ALL__${SAMPLE}.root +fi + +rm output.root diff --git a/ControlRegions/3l/2016HIPM/samples.py b/ControlRegions/3l/2016HIPM/samples.py new file mode 100644 index 00000000..226df0c2 --- /dev/null +++ b/ControlRegions/3l/2016HIPM/samples.py @@ -0,0 +1,390 @@ +import os,glob + +################################################ +################# SKIMS ######################## +################################################ + +# MC: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Summer20UL16_106x_nAODv9_HIPM_Full2016v9/MCl1loose2016v9__MCCorr2016v9NoJERInHorn__l2tightOR2016v9/ +# DATA: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Run2016_UL2016_nAODv9_HIPM_Full2016v9/DATAl1loose2016v9__l2loose__l2tightOR2016v9/ +# FAKE: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Run2016_UL2016_nAODv9_HIPM_Full2016v9/DATAl1loose2016v9__l2loose__fakeW/ + +mcProduction = 'Summer20UL16_106x_nAODv9_HIPM_Full2016v9' +dataReco = 'Run2016_UL2016_nAODv9_HIPM_Full2016v9' +mcSteps = 'MCl1loose2016v9__MCCorr2016v9NoJERInHorn__l2tightOR2016v9{var}' +fakeSteps = 'DATAl1loose2016v9__l2loose__fakeW' +dataSteps = 'DATAl1loose2016v9__l2loose__l2tightOR2016v9' + +############################################## +###### Tree base directory for the site ###### +############################################## + +treeBaseDir = '/eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano' +limitFiles = -1 + +def makeMCDirectory(var=''): + return os.path.join(treeBaseDir, mcProduction, mcSteps.format(var='')) + +mcDirectory = makeMCDirectory() +fakeDirectory = os.path.join(treeBaseDir, dataReco, fakeSteps) +dataDirectory = os.path.join(treeBaseDir, dataReco, dataSteps) + +samples = {} + +from mkShapesRDF.lib.search_files import SearchFiles +s = SearchFiles() + +useXROOTD = True +redirector = 'root://eoscms.cern.ch/' + +def nanoGetSampleFiles(path, name): + _files = s.searchFiles(path, name, redirector=redirector) + if limitFiles != -1 and len(_files) > limitFiles: + return [(name, _files[:limitFiles])] + else: + return [(name, _files)] + +def CombineBaseW(samples, proc, samplelist): + _filtFiles = list(filter(lambda k: k[0] in samplelist, samples[proc]['name'])) + _files = list(map(lambda k: k[1], _filtFiles)) + _l = list(map(lambda k: len(k), _files)) + leastFiles = _files[_l.index(min(_l))] + dfSmall = ROOT.RDataFrame('Runs', leastFiles) + s = dfSmall.Sum('genEventSumw').GetValue() + f = ROOT.TFile.Open(leastFiles[0]) + t = f.Get('Events') + t.GetEntry(1) + xs = t.baseW * s + + __files = [] + for f in _files: + __files += f + df = ROOT.RDataFrame('Runs', __files) + s = df.Sum('genEventSumw').GetValue() + newbaseW = str(xs / s) + weight = newbaseW + '/baseW' + + for iSample in samplelist: + addSampleWeight(samples, proc, iSample, weight) + +def addSampleWeight(samples, sampleName, sampleNameType, weight): + obj = list(filter(lambda k: k[0] == sampleNameType, samples[sampleName]['name']))[0] + samples[sampleName]['name'] = list(filter(lambda k: k[0] != sampleNameType, samples[sampleName]['name'])) + if len(obj) > 2: + samples[sampleName]['name'].append((obj[0], obj[1], obj[2] + '*(' + weight + ')')) + else: + samples[sampleName]['name'].append((obj[0], obj[1], '(' + weight + ')' )) + + +################################################ +############ DATA DECLARATION ################## +################################################ + +DataRun = [ + ['B','Run2016B-ver1_HIPM_UL2016-v2'], + ['B','Run2016B-ver2_HIPM_UL2016-v2'], + ['C','Run2016C-HIPM_UL2016-v2'], + ['D','Run2016D-HIPM_UL2016-v2'], + ['E','Run2016E-HIPM_UL2016-v2'], + ['F','Run2016F-HIPM_UL2016-v2'], +] + +DataSets = ['MuonEG','SingleMuon','SingleElectron','DoubleMuon', 'DoubleEG'] + +DataTrig = { + 'MuonEG' : ' Trigger_ElMu' , + 'SingleMuon' : '!Trigger_ElMu && Trigger_sngMu' , + 'SingleElectron' : '!Trigger_ElMu && !Trigger_sngMu && Trigger_sngEl', + 'DoubleMuon' : '!Trigger_ElMu && !Trigger_sngMu && !Trigger_sngEl && Trigger_dblMu', + 'DoubleEG' : '!Trigger_ElMu && !Trigger_sngMu && !Trigger_sngEl && !Trigger_dblMu && Trigger_dblEl' +} + +######################################### +############ MC COMMON ################## +######################################### + +# SFweight does not include btag weights +mcCommonWeight = 'XSWeight*SFweight*METFilter_MC' +mcCommonWeightMatched = 'XSWeight*SFweight*PromptGenLepMatch3l*METFilter_MC' + +########################################### +############# BACKGROUNDS ############### +########################################### + +##### Top ####### +files = nanoGetSampleFiles(mcDirectory, 'TTTo2L2Nu') + \ + nanoGetSampleFiles(mcDirectory, 'ST_s-channel') + \ + nanoGetSampleFiles(mcDirectory, 'ST_t-channel_top') + \ + nanoGetSampleFiles(mcDirectory, 'ST_t-channel_antitop') + \ + nanoGetSampleFiles(mcDirectory, 'ST_tW_antitop') + \ + nanoGetSampleFiles(mcDirectory, 'ST_tW_top') + +samples['top'] = { + 'name': files, + 'weight': mcCommonWeightMatched, + 'FilesPerJob': 8, +} +addSampleWeight(samples,'top','TTTo2L2Nu','Top_pTrw') + +###### WW ######## +samples['WW'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'WWTo2L2Nu'), + 'weight': mcCommonWeightMatched + '*nllW*ewknloW', + 'FilesPerJob': 4, +} + +######## Vg ######## +files = nanoGetSampleFiles(mcDirectory, 'Wg_AMCNLOFXFX_01J') + \ + nanoGetSampleFiles(mcDirectory, 'ZGToLLG') + +samples['Vg'] = { + 'name': files, + 'weight': mcCommonWeight + '*(Gen_ZGstar_mass <= 0)', + 'FilesPerJob': 4, +} + +######## VgS ######## +files = nanoGetSampleFiles(mcDirectory, 'Wg_AMCNLOFXFX_01J') + \ + nanoGetSampleFiles(mcDirectory, 'WZTo3LNu_mllmin0p1') + \ + nanoGetSampleFiles(mcDirectory, 'ZGToLLG') + +samples['VgS'] = { + 'name': files, + 'weight': mcCommonWeightMatched, + 'FilesPerJob': 4, +} +addSampleWeight(samples, 'VgS', 'Wg_AMCNLOFXFX_01J', '((Gen_ZGstar_mass > 0 && Gen_ZGstar_mass <= 0.1))*(gstarLow*0.94)') +addSampleWeight(samples, 'VgS', 'WZTo3LNu_mllmin0p1', '((Gen_ZGstar_mass > 0.1)*(0.601644*58.59/4.666))*(gstarLow*0.94)') +addSampleWeight(samples, 'VgS', 'ZGToLLG', '(Gen_ZGstar_mass > 0)') + +# ######## Wg ######## +# files = nanoGetSampleFiles(mcDirectory, 'Wg_AMCNLOFXFX_01J') + +# samples['Wg'] = { +# 'name': files, +# 'weight': mcCommonWeight + '*(Gen_ZGstar_mass <= 0)', +# 'FilesPerJob': 8, +# } + + +# ######## Zg ######## +# files = nanoGetSampleFiles(mcDirectory, 'ZGToLLG') + +# samples['Zg'] = { +# 'name': files, +# 'weight': mcCommonWeight + '*(Gen_ZGstar_mass <= 0)', +# 'FilesPerJob': 4, +# } + +# ######## WgS ######## +# files = nanoGetSampleFiles(mcDirectory, 'Wg_AMCNLOFXFX_01J') + \ +# nanoGetSampleFiles(mcDirectory, 'WZTo3LNu_mllmin0p1') + +# samples['WgS'] = { +# 'name': files, +# 'weight': mcCommonWeightMatched + ' * (gstarLow * 0.94)', +# 'FilesPerJob': 4, +# } +# addSampleWeight(samples, 'WgS', 'Wg_AMCNLOFXFX_01J', '(Gen_ZGstar_mass > 0 && Gen_ZGstar_mass <= 0.1)') +# addSampleWeight(samples, 'WgS', 'WZTo3LNu_mllmin0p1', '(Gen_ZGstar_mass > 0.1)*(0.601644*58.59/4.666)') + + +# ######## ZgS ######## +# files = nanoGetSampleFiles(mcDirectory, 'ZGToLLG') + +# samples['ZgS'] = { +# 'name': files, +# 'weight': mcCommonWeightMatched + '*(Gen_ZGstar_mass > 0)', +# 'FilesPerJob': 4, +# } +# addSampleWeight(samples, 'ZgS', 'ZGToLLG', '(Gen_ZGstar_mass > 0)') + + +############ ZZ ############ +files = nanoGetSampleFiles(mcDirectory, 'ZZTo4L') + +samples['ZZ'] = { + 'name': files, + 'weight': mcCommonWeightMatched, + 'FilesPerJob': 1, +} + + +############ WZ ############ +files = nanoGetSampleFiles(mcDirectory, 'WZTo3LNu_mllmin0p1') + +samples['WZ'] = { + 'name': files, + 'weight': mcCommonWeightMatched + ' * (gstarHigh)', + 'FilesPerJob': 4, +} +addSampleWeight(samples, 'WZ', 'WZTo3LNu_mllmin0p1', '(0.601644*58.59/4.666)') + + +########## VVV ######### +files = nanoGetSampleFiles(mcDirectory, 'ZZZ') + \ + nanoGetSampleFiles(mcDirectory, 'WZZ') + \ + nanoGetSampleFiles(mcDirectory, 'WWZ') + \ + nanoGetSampleFiles(mcDirectory, 'WWW') + +samples['VVV'] = { + 'name': files, + 'weight': mcCommonWeight, + 'FilesPerJob': 8, +} + +########################################### +############# SIGNALS ################## +########################################### + +signals = [] + +############ ggH H->WW ############ +samples['ggH_hww'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'GluGluHToWWTo2L2Nu_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 4, +} +signals.append('ggH_hww') + +############ VBF H->WW ############ +samples['qqH_hww'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'VBFHToWWTo2L2Nu_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 8, +} +signals.append('qqH_hww') + +############ ZH H->WW ############ +samples['ZH_hww'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'HZJ_HToWW_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 8, +} +signals.append('ZH_hww') + +samples['ggZH_hww'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'ggZH_HToWW_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 8, +} +signals.append('ggZH_hww') + +############ WH H->WW ############ +samples['WH_hww_plus'] = { + # 'name': nanoGetSampleFiles(mcDirectory, 'HWplusJ_HToWWTo2L2Nu_WTo2L_M125'), + 'name': nanoGetSampleFiles(mcDirectory, 'HWplusJ_HToWW_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 4, +} +signals.append('WH_hww_plus') + +samples['WH_hww_minus'] = { + # 'name': nanoGetSampleFiles(mcDirectory, 'HWminusJ_HToWWTo2L2Nu_WTo2L_M125'), + 'name': nanoGetSampleFiles(mcDirectory, 'HWminusJ_HToWW_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 4, +} +signals.append('WH_hww_minus') + +############ ttH ############ +samples['ttH_hww'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'ttHToNonbb_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 4, +} +signals.append('ttH_hww') + +############ H->TauTau ############ +samples['ggH_htt'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'GluGluHToTauTau_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 20, +} +signals.append('ggH_htt') + +samples['qqH_htt'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'VBFHToTauTau_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 10, +} +signals.append('qqH_htt') + +samples['ZH_htt'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'ZHToTauTau_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 8, +} +signals.append('ZH_htt') + +############ WH H->TauTau ############ +samples['WH_htt_plus'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'WplusHToTauTau_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 8, +} +signals.append('WH_htt_plus') + +samples['WH_htt_minus'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'WminusHToTauTau_M125'), + 'weight': mcCommonWeight, + 'FilesPerJob': 8, +} +signals.append('WH_htt_minus') + + +########################################### +################## FAKE ################### +########################################### + +samples['Fake'] = { + 'name': [], + 'weight': 'METFilter_DATA*fakeW', + 'weights': [], + 'isData': ['all'], + 'FilesPerJob': 50 +} + +for _, sd in DataRun: + for pd in DataSets: + tag_data = pd + '_' + sd + + if 'DoubleEG' in pd and 'Run2016B-ver2' in sd: # Run2016B-ver2_HIPM_UL2016-v2 + print("sd = {}".format(sd)) + print("pd = {}".format(pd)) + print("Old tag = {}".format(tag_data)) + tag_data = tag_data.replace('v2','v3') + print("New tag = {}".format(tag_data)) + + files = nanoGetSampleFiles(fakeDirectory, tag_data) + + samples['Fake']['name'].extend(files) + addSampleWeight(samples, 'Fake', tag_data, DataTrig[pd]) + + +########################################### +################## DATA ################### +########################################### + +samples['DATA'] = { + 'name': [], + 'weight': 'LepWPCut*METFilter_DATA', + 'weights': [], + 'isData': ['all'], + 'FilesPerJob': 50 +} + +for _, sd in DataRun: + for pd in DataSets: + tag_data = pd + '_' + sd + + if 'DoubleEG' in pd and 'Run2016B-ver2' in sd: # Run2016B-ver2_HIPM_UL2016-v2 + print("sd = {}".format(sd)) + print("pd = {}".format(pd)) + print("Old tag = {}".format(tag_data)) + tag_data = tag_data.replace('v2','v3') + print("New tag = {}".format(tag_data)) + + files = nanoGetSampleFiles(dataDirectory, tag_data) + + samples['DATA']['name'].extend(files) + addSampleWeight(samples, 'DATA', tag_data, DataTrig[pd]) diff --git a/ControlRegions/3l/2016HIPM/structure.py b/ControlRegions/3l/2016HIPM/structure.py new file mode 100644 index 00000000..6e7afcc8 --- /dev/null +++ b/ControlRegions/3l/2016HIPM/structure.py @@ -0,0 +1,121 @@ +# structure configuration for datacard + +# keys here must match keys in samples.py + +structure = {} + +structure['top'] = { + 'isSignal' : 0, + 'isData' : 0 +} + +structure['WW'] = { + 'isSignal' : 0, + 'isData' : 0 +} + +structure['Vg'] = { + 'isSignal' : 0, + 'isData' : 0 +} + +structure['VgS'] = { + 'isSignal' : 0, + 'isData' : 0 +} + +structure['ZZ'] = { + 'isSignal' : 0, + 'isData' : 0 +} + +structure['WZ'] = { + 'isSignal' : 0, + 'isData' : 0, + 'scaleSampleForDatacard' : 1.138 # NLO -> NNLO k-factor +} + +structure['VVV'] = { + 'isSignal' : 0, + 'isData' : 0 +} + +structure['ggH_hww'] = { + 'isSignal' : 0, + 'isData' : 0 +} + +structure['qqH_hww'] = { + 'isSignal' : 0, + 'isData' : 0 +} + +structure['ZH_hww'] = { + 'isSignal' : 0, + 'isData' : 0 +} + +structure['ggZH_hww'] = { + 'isSignal' : 0, + 'isData' : 0 +} + +structure['WH_hww_plus'] = { + 'isSignal' : 1, + 'isData' : 0, + 'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity +} + +structure['WH_hww_minus'] = { + 'isSignal' : 1, + 'isData' : 0, + 'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity +} + +structure['ttH_hww'] = { + 'isSignal' : 0, + 'isData' : 0 +} + +structure['ggH_htt'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['qqH_htt'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['ZH_htt'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['WH_htt_plus'] = { + 'isSignal' : 1, + 'isData' : 0, + 'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity +} + +structure['WH_htt_minus'] = { + 'isSignal' : 1, + 'isData' : 0, + 'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity +} + +structure['Fake'] = { + 'isSignal' : 0, + 'isData' : 0 +} + + +# Data +structure['DATA'] = { + 'isSignal' : 0, + 'isData' : 1 +} + + + + diff --git a/ControlRegions/3l/2016HIPM/variables.py b/ControlRegions/3l/2016HIPM/variables.py new file mode 100644 index 00000000..ccbcbbc1 --- /dev/null +++ b/ControlRegions/3l/2016HIPM/variables.py @@ -0,0 +1,285 @@ +# variables + +# 0 = not fold (default), 1 = fold underflowbin, 2 = fold overflow bin, 3 = fold underflow and overflow + +variables = {} + +variables['events'] = { + 'name' : '1', + 'range' : (1,0,2), + 'xaxis' : 'events', + 'fold' : 3 +} + +################### +# Control variables +################### + +variables['BDTG6_TT'] = { + 'name' : 'BDT_WHSS_TopSemileptonic_v9', + 'range' : (40,-1,1), + 'xaxis' : 'BDT discriminant', + 'fold' : 3, +} + +variables['BDT_WH3l_OSSF_new_v9'] = { + 'name' : 'BDT_WH3l_OSSF_new_v9', + 'range' : (40,-1.,1.), + 'xaxis' : 'MVA discriminant', + 'fold' : 3, +} + +variables['BDT_WH3l_SSSF_new_v9'] = { + 'name' : 'BDT_WH3l_SSSF_new_v9', + 'range' : (40,-1.,1.), + 'xaxis' : 'MVA discriminant', + 'fold' : 3, +} + +variables['pt1'] = { + 'name' : 'Lepton_pt[0]', + 'range' : (30,0,150), + 'xaxis' : 'p_{T} 1st lep', + 'fold' : 0 +} + +variables['pt2'] = { + 'name' : 'Lepton_pt[1]', + 'range' : (30,0,100), + 'xaxis' : 'p_{T} 2nd lep', + 'fold' : 3 +} + +variables['conept1'] = { + 'name' : 'Lepton_conept[0]', + 'range' : (30,0,150), + 'xaxis' : 'p_{T} 1st lep', + 'fold' : 0 +} + +variables['conept2'] = { + 'name' : 'Lepton_conept[1]', + 'range' : (30,0,100), + 'xaxis' : 'p_{T} 2nd lep', + 'fold' : 3 +} + +variables['eta1'] = { + 'name' : 'Lepton_eta[0]', + 'range' : (50,-2.5,2.5), + 'xaxis' : '#eta 1st lep', + 'fold' : 3 +} + +variables['eta2'] = { + 'name' : 'Lepton_eta[1]', + 'range' : (50,-2.5,2.5), + 'xaxis' : '#eta 2nd lep', + 'fold' : 3 +} + +variables['detall'] = { + 'name' : 'abs(Lepton_eta[0] - Lepton_eta[1])', + 'range' : (20,0.,5.), + 'xaxis' : '#Delta#eta_{#ell #ell}', + 'fold' : 3 +} + +variables['dphill'] = { + 'name' : 'abs(dphill)', + 'range' : (20, 0,3.2), + 'xaxis' : '#Delta#phi_{ll}', + 'fold' : 3 +} + +variables['drll'] = { + 'name' : 'abs(drll)', + 'range' : (20, 0,5.), + 'xaxis' : '#Delta#R_{ll}', + 'fold' : 3 +} + +variables['mll'] = { + 'name' : 'mll', + 'range' : (25, 0,250), + 'xaxis' : 'm_{ll} [GeV]', + 'fold' : 0 +} + +variables['ptll'] = { + 'name' : 'ptll', + 'range' : (20, 0,200), + 'xaxis' : 'p_{T}^{ll} [GeV]', + 'fold' : 0 +} + + +variables['jetpt1'] = { + 'name' : 'CleanJet_pt[0]*(CleanJet_pt[0]>30)', + 'range' : (40,0,400), + 'xaxis' : 'p_{T} 1st jet', + 'fold' : 2 +} + +variables['jetpt2'] = { + 'name' : 'CleanJet_pt[1]*(CleanJet_pt[1]>30)', + 'range' : (40,0,200), + 'xaxis' : 'p_{T} 2nd jet', + 'fold' : 0 +} + +variables['jeteta1'] = { + 'name' : 'CleanJet_eta[0]*(CleanJet_pt[0]>30)', + 'range' : (50,-5,5), + 'xaxis' : '#eta 1st jet', + 'fold' : 2 +} + +variables['jeteta2'] = { + 'name' : 'CleanJet_eta[1]*(CleanJet_pt[1]>30)', + 'range' : (50,-5,5), + 'xaxis' : '#eta 2nd jet', + 'fold' : 0 +} + +variables['detajj'] = { + 'name' : 'abs(CleanJet_eta[0] - CleanJet_eta[1])*(CleanJet_pt[1]>30)', + 'range' : (20,0.,10.), + 'xaxis' : '#Delta#eta_{jj}', + 'fold' : 3 +} + +variables['dphijj'] = { + 'name' : 'dphijj', + 'range' : (20,0,3.2), + 'xaxis' : '#Delta#phi_{jj}', + 'fold' : 3 +} + +variables['mjj'] = { + 'name' : 'mjj*(CleanJet_pt[1]>30)', + 'range' : (20,0,1000), + 'xaxis' : 'm_{jj} [GeV]', + 'fold' : 3 +} + + +variables['puppimet'] = { + 'name' : 'PuppiMET_pt', + 'range' : (20,0,200), + 'xaxis' : 'PUPPI met [GeV]', + 'fold' : 3 +} + + +variables['mlljj20'] = { + 'name' : 'mlljj20_whss', + 'range' : (20,0,1000), + 'xaxis' : 'mlljj20 [GeV]', + 'fold' : 3 +} + +variables['mth'] = { + 'name' : 'mth', + 'range' : (50,0,250), + 'xaxis' : 'm_{T}^{H} [GeV]', + 'fold' : 0 +} + +variables['mtw1'] = { + 'name' : 'mtw1', + 'range' : (50,0,250), + 'xaxis' : 'm_{T}^{W_{1}} [GeV]', + 'fold' : 3 +} + +variables['mtw2'] = { + 'name' : 'mtw2', + 'range' : (50,0,200), + 'xaxis' : 'm_{T}^{W_{2}} [GeV]', + 'fold' : 3 +} + +variables['dphilljet'] = { + 'name' : 'dphilljet', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilljet', + 'fold' : 3 +} + +variables['dphilljetjet'] = { + 'name' : 'dphilljetjet*(CleanJet_pt[1]>30)', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilljetjet', + 'fold' : 3 +} + +variables['dphilmet'] = { + 'name' : 'dphilmet', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilmet', + 'fold' : 3 +} + +variables['dphilmet2'] = { + 'name' : 'dphilmet2', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilmet2', + 'fold' : 3 +} + +variables['dphillmet'] = { + 'name' : 'dphillmet', + 'range' : (20,0,3.2), + 'xaxis' : 'dphillmet', + 'fold' : 3 +} + +variables['dphilep1jet1'] = { + 'name' : 'dphilep1jet1', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilep1jet1', + 'fold' : 3 +} + +variables['dphilep1jet2'] = { + 'name' : 'dphilep1jet2*(CleanJet_pt[1]>30)', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilep1jet2', + 'fold' : 3 +} + +variables['dphilep2jet1'] = { + 'name' : 'dphilep2jet1', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilep2jet1', + 'fold' : 3 +} + +variables['dphilep2jet2'] = { + 'name' : 'dphilep2jet2*(CleanJet_pt[1]>30)', + 'range' : (20,0,3.2), + 'xaxis' : 'dphilep1jet2', + 'fold' : 3 +} + +variables['dphijjmet'] = { + 'name' : 'dphijjmet', + 'range' : (20,0,3.2), + 'xaxis' : 'dphijjmet', + 'fold' : 3 +} + +variables['ht'] = { + 'name' : 'ht', + 'range' : (30,0,1500), + 'xaxis' : 'ht [GeV]', + 'fold' : 3 +} + +variables['dphijet1met'] = { + 'name' : 'dphijet1met', + 'range' : (20,0,3.2), + 'xaxis' : 'dphijet1met', + 'fold' : 3 +} From 3829c4acba418d2e3415a25c2f3335b0e2adf73f Mon Sep 17 00:00:00 2001 From: Nicolo Trevisani Date: Fri, 15 Aug 2025 10:29:39 +0200 Subject: [PATCH 16/44] renaming 2016 directories --- ControlRegions/SS/{2016HIPM => 2016HIPM_v9}/README.md | 0 ControlRegions/SS/{2016HIPM => 2016HIPM_v9}/aliases.py | 0 ControlRegions/SS/{2016HIPM => 2016HIPM_v9}/configuration.py | 0 ControlRegions/SS/{2016HIPM => 2016HIPM_v9}/cuts.py | 0 ControlRegions/SS/{2016HIPM => 2016HIPM_v9}/nuisances.py | 0 ControlRegions/SS/{2016HIPM => 2016HIPM_v9}/plot.py | 0 ControlRegions/SS/{2016HIPM => 2016HIPM_v9}/repeat.sh | 0 ControlRegions/SS/{2016HIPM => 2016HIPM_v9}/samples.py | 0 ControlRegions/SS/{2016HIPM => 2016HIPM_v9}/structure.py | 0 ControlRegions/SS/{2016HIPM => 2016HIPM_v9}/variables.py | 0 ControlRegions/SS/{2016noHIPM => 2016noHIPM_v9}/README.md | 0 ControlRegions/SS/{2016noHIPM => 2016noHIPM_v9}/aliases.py | 0 ControlRegions/SS/{2016noHIPM => 2016noHIPM_v9}/configuration.py | 0 ControlRegions/SS/{2016noHIPM => 2016noHIPM_v9}/cuts.py | 0 ControlRegions/SS/{2016noHIPM => 2016noHIPM_v9}/nuisances.py | 0 ControlRegions/SS/{2016noHIPM => 2016noHIPM_v9}/plot.py | 0 ControlRegions/SS/{2016noHIPM => 2016noHIPM_v9}/repeat.sh | 0 ControlRegions/SS/{2016noHIPM => 2016noHIPM_v9}/samples.py | 0 ControlRegions/SS/{2016noHIPM => 2016noHIPM_v9}/structure.py | 0 ControlRegions/SS/{2016noHIPM => 2016noHIPM_v9}/variables.py | 0 20 files changed, 0 insertions(+), 0 deletions(-) rename ControlRegions/SS/{2016HIPM => 2016HIPM_v9}/README.md (100%) rename ControlRegions/SS/{2016HIPM => 2016HIPM_v9}/aliases.py (100%) rename ControlRegions/SS/{2016HIPM => 2016HIPM_v9}/configuration.py (100%) rename ControlRegions/SS/{2016HIPM => 2016HIPM_v9}/cuts.py (100%) rename ControlRegions/SS/{2016HIPM => 2016HIPM_v9}/nuisances.py (100%) rename ControlRegions/SS/{2016HIPM => 2016HIPM_v9}/plot.py (100%) rename ControlRegions/SS/{2016HIPM => 2016HIPM_v9}/repeat.sh (100%) rename ControlRegions/SS/{2016HIPM => 2016HIPM_v9}/samples.py (100%) rename ControlRegions/SS/{2016HIPM => 2016HIPM_v9}/structure.py (100%) rename ControlRegions/SS/{2016HIPM => 2016HIPM_v9}/variables.py (100%) rename ControlRegions/SS/{2016noHIPM => 2016noHIPM_v9}/README.md (100%) rename ControlRegions/SS/{2016noHIPM => 2016noHIPM_v9}/aliases.py (100%) rename ControlRegions/SS/{2016noHIPM => 2016noHIPM_v9}/configuration.py (100%) rename ControlRegions/SS/{2016noHIPM => 2016noHIPM_v9}/cuts.py (100%) rename ControlRegions/SS/{2016noHIPM => 2016noHIPM_v9}/nuisances.py (100%) rename ControlRegions/SS/{2016noHIPM => 2016noHIPM_v9}/plot.py (100%) rename ControlRegions/SS/{2016noHIPM => 2016noHIPM_v9}/repeat.sh (100%) rename ControlRegions/SS/{2016noHIPM => 2016noHIPM_v9}/samples.py (100%) rename ControlRegions/SS/{2016noHIPM => 2016noHIPM_v9}/structure.py (100%) rename ControlRegions/SS/{2016noHIPM => 2016noHIPM_v9}/variables.py (100%) diff --git a/ControlRegions/SS/2016HIPM/README.md b/ControlRegions/SS/2016HIPM_v9/README.md similarity index 100% rename from ControlRegions/SS/2016HIPM/README.md rename to ControlRegions/SS/2016HIPM_v9/README.md diff --git a/ControlRegions/SS/2016HIPM/aliases.py b/ControlRegions/SS/2016HIPM_v9/aliases.py similarity index 100% rename from ControlRegions/SS/2016HIPM/aliases.py rename to ControlRegions/SS/2016HIPM_v9/aliases.py diff --git a/ControlRegions/SS/2016HIPM/configuration.py b/ControlRegions/SS/2016HIPM_v9/configuration.py similarity index 100% rename from ControlRegions/SS/2016HIPM/configuration.py rename to ControlRegions/SS/2016HIPM_v9/configuration.py diff --git a/ControlRegions/SS/2016HIPM/cuts.py b/ControlRegions/SS/2016HIPM_v9/cuts.py similarity index 100% rename from ControlRegions/SS/2016HIPM/cuts.py rename to ControlRegions/SS/2016HIPM_v9/cuts.py diff --git a/ControlRegions/SS/2016HIPM/nuisances.py b/ControlRegions/SS/2016HIPM_v9/nuisances.py similarity index 100% rename from ControlRegions/SS/2016HIPM/nuisances.py rename to ControlRegions/SS/2016HIPM_v9/nuisances.py diff --git a/ControlRegions/SS/2016HIPM/plot.py b/ControlRegions/SS/2016HIPM_v9/plot.py similarity index 100% rename from ControlRegions/SS/2016HIPM/plot.py rename to ControlRegions/SS/2016HIPM_v9/plot.py diff --git a/ControlRegions/SS/2016HIPM/repeat.sh b/ControlRegions/SS/2016HIPM_v9/repeat.sh similarity index 100% rename from ControlRegions/SS/2016HIPM/repeat.sh rename to ControlRegions/SS/2016HIPM_v9/repeat.sh diff --git a/ControlRegions/SS/2016HIPM/samples.py b/ControlRegions/SS/2016HIPM_v9/samples.py similarity index 100% rename from ControlRegions/SS/2016HIPM/samples.py rename to ControlRegions/SS/2016HIPM_v9/samples.py diff --git a/ControlRegions/SS/2016HIPM/structure.py b/ControlRegions/SS/2016HIPM_v9/structure.py similarity index 100% rename from ControlRegions/SS/2016HIPM/structure.py rename to ControlRegions/SS/2016HIPM_v9/structure.py diff --git a/ControlRegions/SS/2016HIPM/variables.py b/ControlRegions/SS/2016HIPM_v9/variables.py similarity index 100% rename from ControlRegions/SS/2016HIPM/variables.py rename to ControlRegions/SS/2016HIPM_v9/variables.py diff --git a/ControlRegions/SS/2016noHIPM/README.md b/ControlRegions/SS/2016noHIPM_v9/README.md similarity index 100% rename from ControlRegions/SS/2016noHIPM/README.md rename to ControlRegions/SS/2016noHIPM_v9/README.md diff --git a/ControlRegions/SS/2016noHIPM/aliases.py b/ControlRegions/SS/2016noHIPM_v9/aliases.py similarity index 100% rename from ControlRegions/SS/2016noHIPM/aliases.py rename to ControlRegions/SS/2016noHIPM_v9/aliases.py diff --git a/ControlRegions/SS/2016noHIPM/configuration.py b/ControlRegions/SS/2016noHIPM_v9/configuration.py similarity index 100% rename from ControlRegions/SS/2016noHIPM/configuration.py rename to ControlRegions/SS/2016noHIPM_v9/configuration.py diff --git a/ControlRegions/SS/2016noHIPM/cuts.py b/ControlRegions/SS/2016noHIPM_v9/cuts.py similarity index 100% rename from ControlRegions/SS/2016noHIPM/cuts.py rename to ControlRegions/SS/2016noHIPM_v9/cuts.py diff --git a/ControlRegions/SS/2016noHIPM/nuisances.py b/ControlRegions/SS/2016noHIPM_v9/nuisances.py similarity index 100% rename from ControlRegions/SS/2016noHIPM/nuisances.py rename to ControlRegions/SS/2016noHIPM_v9/nuisances.py diff --git a/ControlRegions/SS/2016noHIPM/plot.py b/ControlRegions/SS/2016noHIPM_v9/plot.py similarity index 100% rename from ControlRegions/SS/2016noHIPM/plot.py rename to ControlRegions/SS/2016noHIPM_v9/plot.py diff --git a/ControlRegions/SS/2016noHIPM/repeat.sh b/ControlRegions/SS/2016noHIPM_v9/repeat.sh similarity index 100% rename from ControlRegions/SS/2016noHIPM/repeat.sh rename to ControlRegions/SS/2016noHIPM_v9/repeat.sh diff --git a/ControlRegions/SS/2016noHIPM/samples.py b/ControlRegions/SS/2016noHIPM_v9/samples.py similarity index 100% rename from ControlRegions/SS/2016noHIPM/samples.py rename to ControlRegions/SS/2016noHIPM_v9/samples.py diff --git a/ControlRegions/SS/2016noHIPM/structure.py b/ControlRegions/SS/2016noHIPM_v9/structure.py similarity index 100% rename from ControlRegions/SS/2016noHIPM/structure.py rename to ControlRegions/SS/2016noHIPM_v9/structure.py diff --git a/ControlRegions/SS/2016noHIPM/variables.py b/ControlRegions/SS/2016noHIPM_v9/variables.py similarity index 100% rename from ControlRegions/SS/2016noHIPM/variables.py rename to ControlRegions/SS/2016noHIPM_v9/variables.py From 9a4e5f0307e7225e97ecd6be28e706fc751ed727 Mon Sep 17 00:00:00 2001 From: ntrevisa Date: Fri, 15 Aug 2025 16:27:43 +0200 Subject: [PATCH 17/44] fixing samples to plot DY and removing 3l cuts --- ControlRegions/SS/2016HIPM_v9/cuts.py | 20 ++++++++++---------- ControlRegions/SS/2016HIPM_v9/samples.py | 2 +- ControlRegions/SS/2016noHIPM_v9/cuts.py | 20 ++++++++++---------- ControlRegions/SS/2016noHIPM_v9/samples.py | 2 +- ControlRegions/SS/Full2017_v9/cuts.py | 20 ++++++++++---------- ControlRegions/SS/Full2017_v9/samples.py | 2 +- ControlRegions/SS/Full2018_v9/cuts.py | 20 ++++++++++---------- ControlRegions/SS/Full2018_v9/samples.py | 2 +- ControlRegions/SS/Full2018_v9/variables.py | 2 +- 9 files changed, 45 insertions(+), 45 deletions(-) diff --git a/ControlRegions/SS/2016HIPM_v9/cuts.py b/ControlRegions/SS/2016HIPM_v9/cuts.py index 5b25d208..9e364058 100644 --- a/ControlRegions/SS/2016HIPM_v9/cuts.py +++ b/ControlRegions/SS/2016HIPM_v9/cuts.py @@ -120,16 +120,16 @@ } -## SR 3 leptons: only 0 jet bin -cuts['hww2l2v_13TeV_WH_3l'] = { - 'expr' : 'nLepton>=3 && Alt(Lepton_pt,3,0)<10 && Alt(CleanJet_pt,0,0)<30 && (WH3l_mOSll[0]<0 || WH3l_mOSll[0]>12) && (WH3l_mOSll[1]<0 || WH3l_mOSll[1]>12) && (WH3l_mOSll[2]<0 || WH3l_mOSll[2]>12)', - 'categories' : { - 'sssf_plus_pt2ge20' : 'WH3l_flagOSSF == 0 && abs(WH3l_chlll) == 1 && Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]>0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15', - 'sssf_minus_pt2ge20' : 'WH3l_flagOSSF == 0 && abs(WH3l_chlll) == 1 && Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]<0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15', - 'ossf_plus_pt2ge20' : 'WH3l_flagOSSF == 1 && abs(WH3l_chlll) == 1 && Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]>0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15 && WH3l_ZVeto > 20 && PuppiMET_pt > 40', - 'ossf_minus_pt2ge20' : 'WH3l_flagOSSF == 1 && abs(WH3l_chlll) == 1 && Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]<0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15 && WH3l_ZVeto > 20 && PuppiMET_pt > 40', - } -} +# ## SR 3 leptons: only 0 jet bin +# cuts['hww2l2v_13TeV_WH_3l'] = { +# 'expr' : 'nLepton>=3 && Alt(Lepton_pt,3,0)<10 && Alt(CleanJet_pt,0,0)<30 && (WH3l_mOSll[0]<0 || WH3l_mOSll[0]>12) && (WH3l_mOSll[1]<0 || WH3l_mOSll[1]>12) && (WH3l_mOSll[2]<0 || WH3l_mOSll[2]>12)', +# 'categories' : { +# 'sssf_plus_pt2ge20' : 'WH3l_flagOSSF == 0 && abs(WH3l_chlll) == 1 && Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]>0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15', +# 'sssf_minus_pt2ge20' : 'WH3l_flagOSSF == 0 && abs(WH3l_chlll) == 1 && Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]<0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15', +# 'ossf_plus_pt2ge20' : 'WH3l_flagOSSF == 1 && abs(WH3l_chlll) == 1 && Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]>0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15 && WH3l_ZVeto > 20 && PuppiMET_pt > 40', +# 'ossf_minus_pt2ge20' : 'WH3l_flagOSSF == 1 && abs(WH3l_chlll) == 1 && Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]<0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15 && WH3l_ZVeto > 20 && PuppiMET_pt > 40', +# } +# } # mlljj20_whss: # inv_mass of: (jet1, jet2, 2*closest_lep_to_jets) diff --git a/ControlRegions/SS/2016HIPM_v9/samples.py b/ControlRegions/SS/2016HIPM_v9/samples.py index d85551ed..39feb41a 100644 --- a/ControlRegions/SS/2016HIPM_v9/samples.py +++ b/ControlRegions/SS/2016HIPM_v9/samples.py @@ -125,7 +125,7 @@ def addSampleWeight(samples, sampleName, sampleNameType, weight): samples['DY'] = { 'name': files, - 'weight': mcCommonWeight + '*(nLepton<3)*(abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 11*13 || abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 13*13)*( !(Sum(PhotonGen_isPrompt==1 && PhotonGen_pt>15 && abs(PhotonGen_eta)<2.6) > 0))', + 'weight': mcCommonWeight + '*(abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 11*13 || abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 11*11)*( !(Sum(PhotonGen_isPrompt==1 && PhotonGen_pt>15 && abs(PhotonGen_eta)<2.6) > 0))', 'FilesPerJob': 8, } diff --git a/ControlRegions/SS/2016noHIPM_v9/cuts.py b/ControlRegions/SS/2016noHIPM_v9/cuts.py index 5b25d208..9e364058 100644 --- a/ControlRegions/SS/2016noHIPM_v9/cuts.py +++ b/ControlRegions/SS/2016noHIPM_v9/cuts.py @@ -120,16 +120,16 @@ } -## SR 3 leptons: only 0 jet bin -cuts['hww2l2v_13TeV_WH_3l'] = { - 'expr' : 'nLepton>=3 && Alt(Lepton_pt,3,0)<10 && Alt(CleanJet_pt,0,0)<30 && (WH3l_mOSll[0]<0 || WH3l_mOSll[0]>12) && (WH3l_mOSll[1]<0 || WH3l_mOSll[1]>12) && (WH3l_mOSll[2]<0 || WH3l_mOSll[2]>12)', - 'categories' : { - 'sssf_plus_pt2ge20' : 'WH3l_flagOSSF == 0 && abs(WH3l_chlll) == 1 && Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]>0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15', - 'sssf_minus_pt2ge20' : 'WH3l_flagOSSF == 0 && abs(WH3l_chlll) == 1 && Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]<0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15', - 'ossf_plus_pt2ge20' : 'WH3l_flagOSSF == 1 && abs(WH3l_chlll) == 1 && Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]>0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15 && WH3l_ZVeto > 20 && PuppiMET_pt > 40', - 'ossf_minus_pt2ge20' : 'WH3l_flagOSSF == 1 && abs(WH3l_chlll) == 1 && Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]<0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15 && WH3l_ZVeto > 20 && PuppiMET_pt > 40', - } -} +# ## SR 3 leptons: only 0 jet bin +# cuts['hww2l2v_13TeV_WH_3l'] = { +# 'expr' : 'nLepton>=3 && Alt(Lepton_pt,3,0)<10 && Alt(CleanJet_pt,0,0)<30 && (WH3l_mOSll[0]<0 || WH3l_mOSll[0]>12) && (WH3l_mOSll[1]<0 || WH3l_mOSll[1]>12) && (WH3l_mOSll[2]<0 || WH3l_mOSll[2]>12)', +# 'categories' : { +# 'sssf_plus_pt2ge20' : 'WH3l_flagOSSF == 0 && abs(WH3l_chlll) == 1 && Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]>0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15', +# 'sssf_minus_pt2ge20' : 'WH3l_flagOSSF == 0 && abs(WH3l_chlll) == 1 && Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]<0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15', +# 'ossf_plus_pt2ge20' : 'WH3l_flagOSSF == 1 && abs(WH3l_chlll) == 1 && Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]>0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15 && WH3l_ZVeto > 20 && PuppiMET_pt > 40', +# 'ossf_minus_pt2ge20' : 'WH3l_flagOSSF == 1 && abs(WH3l_chlll) == 1 && Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]<0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15 && WH3l_ZVeto > 20 && PuppiMET_pt > 40', +# } +# } # mlljj20_whss: # inv_mass of: (jet1, jet2, 2*closest_lep_to_jets) diff --git a/ControlRegions/SS/2016noHIPM_v9/samples.py b/ControlRegions/SS/2016noHIPM_v9/samples.py index 893e56cd..2a0de541 100644 --- a/ControlRegions/SS/2016noHIPM_v9/samples.py +++ b/ControlRegions/SS/2016noHIPM_v9/samples.py @@ -122,7 +122,7 @@ def addSampleWeight(samples, sampleName, sampleNameType, weight): samples['DY'] = { 'name': files, - 'weight': mcCommonWeight + '*(nLepton<3)*(abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 11*13 || abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 13*13)*( !(Sum(PhotonGen_isPrompt==1 && PhotonGen_pt>15 && abs(PhotonGen_eta)<2.6) > 0))', + 'weight': mcCommonWeight + '*(abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 11*13 || abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 11*11)*( !(Sum(PhotonGen_isPrompt==1 && PhotonGen_pt>15 && abs(PhotonGen_eta)<2.6) > 0))', 'FilesPerJob': 8, } diff --git a/ControlRegions/SS/Full2017_v9/cuts.py b/ControlRegions/SS/Full2017_v9/cuts.py index 5b25d208..9e364058 100644 --- a/ControlRegions/SS/Full2017_v9/cuts.py +++ b/ControlRegions/SS/Full2017_v9/cuts.py @@ -120,16 +120,16 @@ } -## SR 3 leptons: only 0 jet bin -cuts['hww2l2v_13TeV_WH_3l'] = { - 'expr' : 'nLepton>=3 && Alt(Lepton_pt,3,0)<10 && Alt(CleanJet_pt,0,0)<30 && (WH3l_mOSll[0]<0 || WH3l_mOSll[0]>12) && (WH3l_mOSll[1]<0 || WH3l_mOSll[1]>12) && (WH3l_mOSll[2]<0 || WH3l_mOSll[2]>12)', - 'categories' : { - 'sssf_plus_pt2ge20' : 'WH3l_flagOSSF == 0 && abs(WH3l_chlll) == 1 && Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]>0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15', - 'sssf_minus_pt2ge20' : 'WH3l_flagOSSF == 0 && abs(WH3l_chlll) == 1 && Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]<0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15', - 'ossf_plus_pt2ge20' : 'WH3l_flagOSSF == 1 && abs(WH3l_chlll) == 1 && Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]>0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15 && WH3l_ZVeto > 20 && PuppiMET_pt > 40', - 'ossf_minus_pt2ge20' : 'WH3l_flagOSSF == 1 && abs(WH3l_chlll) == 1 && Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]<0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15 && WH3l_ZVeto > 20 && PuppiMET_pt > 40', - } -} +# ## SR 3 leptons: only 0 jet bin +# cuts['hww2l2v_13TeV_WH_3l'] = { +# 'expr' : 'nLepton>=3 && Alt(Lepton_pt,3,0)<10 && Alt(CleanJet_pt,0,0)<30 && (WH3l_mOSll[0]<0 || WH3l_mOSll[0]>12) && (WH3l_mOSll[1]<0 || WH3l_mOSll[1]>12) && (WH3l_mOSll[2]<0 || WH3l_mOSll[2]>12)', +# 'categories' : { +# 'sssf_plus_pt2ge20' : 'WH3l_flagOSSF == 0 && abs(WH3l_chlll) == 1 && Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]>0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15', +# 'sssf_minus_pt2ge20' : 'WH3l_flagOSSF == 0 && abs(WH3l_chlll) == 1 && Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]<0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15', +# 'ossf_plus_pt2ge20' : 'WH3l_flagOSSF == 1 && abs(WH3l_chlll) == 1 && Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]>0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15 && WH3l_ZVeto > 20 && PuppiMET_pt > 40', +# 'ossf_minus_pt2ge20' : 'WH3l_flagOSSF == 1 && abs(WH3l_chlll) == 1 && Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]<0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15 && WH3l_ZVeto > 20 && PuppiMET_pt > 40', +# } +# } # mlljj20_whss: # inv_mass of: (jet1, jet2, 2*closest_lep_to_jets) diff --git a/ControlRegions/SS/Full2017_v9/samples.py b/ControlRegions/SS/Full2017_v9/samples.py index ec00bcde..31be4fe3 100644 --- a/ControlRegions/SS/Full2017_v9/samples.py +++ b/ControlRegions/SS/Full2017_v9/samples.py @@ -124,7 +124,7 @@ def addSampleWeight(samples, sampleName, sampleNameType, weight): samples['DY'] = { 'name': files, - 'weight': mcCommonWeight + '*(nLepton<3)*(abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 11*13 || abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 11*11)*( !(Sum(PhotonGen_isPrompt==1 && PhotonGen_pt>15 && abs(PhotonGen_eta)<2.6) > 0))', + 'weight': mcCommonWeight + '*(abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 11*13 || abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 11*11)*( !(Sum(PhotonGen_isPrompt==1 && PhotonGen_pt>15 && abs(PhotonGen_eta)<2.6) > 0))', 'FilesPerJob': 8, } diff --git a/ControlRegions/SS/Full2018_v9/cuts.py b/ControlRegions/SS/Full2018_v9/cuts.py index 47084c96..22c5ebcb 100644 --- a/ControlRegions/SS/Full2018_v9/cuts.py +++ b/ControlRegions/SS/Full2018_v9/cuts.py @@ -121,16 +121,16 @@ } -## SR 3 leptons: only 0 jet bin -cuts['hww2l2v_13TeV_WH_3l'] = { - 'expr' : 'nLepton>=3 && Alt(Lepton_pt,3,0)<10 && Alt(CleanJet_pt,0,0)<30 && (WH3l_mOSll[0]<0 || WH3l_mOSll[0]>12) && (WH3l_mOSll[1]<0 || WH3l_mOSll[1]>12) && (WH3l_mOSll[2]<0 || WH3l_mOSll[2]>12)', - 'categories' : { - 'sssf_plus_pt2ge20' : 'WH3l_flagOSSF == 0 && abs(WH3l_chlll) == 1 && Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]>0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15', - 'sssf_minus_pt2ge20' : 'WH3l_flagOSSF == 0 && abs(WH3l_chlll) == 1 && Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]<0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15', - 'ossf_plus_pt2ge20' : 'WH3l_flagOSSF == 1 && abs(WH3l_chlll) == 1 && Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]>0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15 && WH3l_ZVeto > 20 && PuppiMET_pt > 40', - 'ossf_minus_pt2ge20' : 'WH3l_flagOSSF == 1 && abs(WH3l_chlll) == 1 && Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]<0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15 && WH3l_ZVeto > 20 && PuppiMET_pt > 40', - } -} +# ## SR 3 leptons: only 0 jet bin +# cuts['hww2l2v_13TeV_WH_3l'] = { +# 'expr' : 'nLepton>=3 && Alt(Lepton_pt,3,0)<10 && Alt(CleanJet_pt,0,0)<30 && (WH3l_mOSll[0]<0 || WH3l_mOSll[0]>12) && (WH3l_mOSll[1]<0 || WH3l_mOSll[1]>12) && (WH3l_mOSll[2]<0 || WH3l_mOSll[2]>12)', +# 'categories' : { +# 'sssf_plus_pt2ge20' : 'WH3l_flagOSSF == 0 && abs(WH3l_chlll) == 1 && Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]>0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15', +# 'sssf_minus_pt2ge20' : 'WH3l_flagOSSF == 0 && abs(WH3l_chlll) == 1 && Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]<0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15', +# 'ossf_plus_pt2ge20' : 'WH3l_flagOSSF == 1 && abs(WH3l_chlll) == 1 && Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]>0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15 && WH3l_ZVeto > 20 && PuppiMET_pt > 40', +# 'ossf_minus_pt2ge20' : 'WH3l_flagOSSF == 1 && abs(WH3l_chlll) == 1 && Lepton_pdgId[0]*Lepton_pdgId[1]*Lepton_pdgId[2]<0 && Lepton_pt[1]>=20 && Lepton_pt[2]>=15 && WH3l_ZVeto > 20 && PuppiMET_pt > 40', +# } +# } # mlljj20_whss: # inv_mass of: (jet1, jet2, 2*closest_lep_to_jets) diff --git a/ControlRegions/SS/Full2018_v9/samples.py b/ControlRegions/SS/Full2018_v9/samples.py index 5384168c..529a581f 100644 --- a/ControlRegions/SS/Full2018_v9/samples.py +++ b/ControlRegions/SS/Full2018_v9/samples.py @@ -122,7 +122,7 @@ def addSampleWeight(samples, sampleName, sampleNameType, weight): samples['DY'] = { 'name': files, - 'weight': mcCommonWeight + '*(nLepton<3)*(abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 11*13 || abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 13*13)*( !(Sum(PhotonGen_isPrompt==1 && PhotonGen_pt>15 && abs(PhotonGen_eta)<2.6) > 0))', + 'weight': mcCommonWeight + '*(abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 11*13 || abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 11*11)*( !(Sum(PhotonGen_isPrompt==1 && PhotonGen_pt>15 && abs(PhotonGen_eta)<2.6) > 0))', 'FilesPerJob': 8, } diff --git a/ControlRegions/SS/Full2018_v9/variables.py b/ControlRegions/SS/Full2018_v9/variables.py index d84d13d5..ccbcbbc1 100644 --- a/ControlRegions/SS/Full2018_v9/variables.py +++ b/ControlRegions/SS/Full2018_v9/variables.py @@ -81,7 +81,7 @@ variables['detall'] = { 'name' : 'abs(Lepton_eta[0] - Lepton_eta[1])', 'range' : (20,0.,5.), - 'xaxis' : '#Delta#eta_{jj}', + 'xaxis' : '#Delta#eta_{#ell #ell}', 'fold' : 3 } From c3bee7402f5e6f15850005c92172ff12868bbe7a Mon Sep 17 00:00:00 2001 From: Nicolo Trevisani Date: Fri, 15 Aug 2025 16:40:41 +0200 Subject: [PATCH 18/44] changing names --- ControlRegions/3l/{2016HIPM => 2016HIPM_v9}/README.md | 0 ControlRegions/3l/{2016HIPM => 2016HIPM_v9}/aliases.py | 0 ControlRegions/3l/{2016HIPM => 2016HIPM_v9}/configuration.py | 0 ControlRegions/3l/{2016HIPM => 2016HIPM_v9}/cuts.py | 0 ControlRegions/3l/{2016HIPM => 2016HIPM_v9}/nuisances.py | 0 ControlRegions/3l/{2016HIPM => 2016HIPM_v9}/plot.py | 0 ControlRegions/3l/{2016HIPM => 2016HIPM_v9}/repeat.sh | 0 ControlRegions/3l/{2016HIPM => 2016HIPM_v9}/samples.py | 0 ControlRegions/3l/{2016HIPM => 2016HIPM_v9}/structure.py | 0 ControlRegions/3l/{2016HIPM => 2016HIPM_v9}/variables.py | 0 ControlRegions/3l/{2016noHIPM => 2016noHIPM_v9}/README.md | 0 ControlRegions/3l/{2016noHIPM => 2016noHIPM_v9}/aliases.py | 0 ControlRegions/3l/{2016noHIPM => 2016noHIPM_v9}/configuration.py | 0 ControlRegions/3l/{2016noHIPM => 2016noHIPM_v9}/cuts.py | 0 ControlRegions/3l/{2016noHIPM => 2016noHIPM_v9}/nuisances.py | 0 ControlRegions/3l/{2016noHIPM => 2016noHIPM_v9}/plot.py | 0 ControlRegions/3l/{2016noHIPM => 2016noHIPM_v9}/repeat.sh | 0 ControlRegions/3l/{2016noHIPM => 2016noHIPM_v9}/samples.py | 0 ControlRegions/3l/{2016noHIPM => 2016noHIPM_v9}/structure.py | 0 ControlRegions/3l/{2016noHIPM => 2016noHIPM_v9}/variables.py | 0 20 files changed, 0 insertions(+), 0 deletions(-) rename ControlRegions/3l/{2016HIPM => 2016HIPM_v9}/README.md (100%) rename ControlRegions/3l/{2016HIPM => 2016HIPM_v9}/aliases.py (100%) rename ControlRegions/3l/{2016HIPM => 2016HIPM_v9}/configuration.py (100%) rename ControlRegions/3l/{2016HIPM => 2016HIPM_v9}/cuts.py (100%) rename ControlRegions/3l/{2016HIPM => 2016HIPM_v9}/nuisances.py (100%) rename ControlRegions/3l/{2016HIPM => 2016HIPM_v9}/plot.py (100%) rename ControlRegions/3l/{2016HIPM => 2016HIPM_v9}/repeat.sh (100%) rename ControlRegions/3l/{2016HIPM => 2016HIPM_v9}/samples.py (100%) rename ControlRegions/3l/{2016HIPM => 2016HIPM_v9}/structure.py (100%) rename ControlRegions/3l/{2016HIPM => 2016HIPM_v9}/variables.py (100%) rename ControlRegions/3l/{2016noHIPM => 2016noHIPM_v9}/README.md (100%) rename ControlRegions/3l/{2016noHIPM => 2016noHIPM_v9}/aliases.py (100%) rename ControlRegions/3l/{2016noHIPM => 2016noHIPM_v9}/configuration.py (100%) rename ControlRegions/3l/{2016noHIPM => 2016noHIPM_v9}/cuts.py (100%) rename ControlRegions/3l/{2016noHIPM => 2016noHIPM_v9}/nuisances.py (100%) rename ControlRegions/3l/{2016noHIPM => 2016noHIPM_v9}/plot.py (100%) rename ControlRegions/3l/{2016noHIPM => 2016noHIPM_v9}/repeat.sh (100%) rename ControlRegions/3l/{2016noHIPM => 2016noHIPM_v9}/samples.py (100%) rename ControlRegions/3l/{2016noHIPM => 2016noHIPM_v9}/structure.py (100%) rename ControlRegions/3l/{2016noHIPM => 2016noHIPM_v9}/variables.py (100%) diff --git a/ControlRegions/3l/2016HIPM/README.md b/ControlRegions/3l/2016HIPM_v9/README.md similarity index 100% rename from ControlRegions/3l/2016HIPM/README.md rename to ControlRegions/3l/2016HIPM_v9/README.md diff --git a/ControlRegions/3l/2016HIPM/aliases.py b/ControlRegions/3l/2016HIPM_v9/aliases.py similarity index 100% rename from ControlRegions/3l/2016HIPM/aliases.py rename to ControlRegions/3l/2016HIPM_v9/aliases.py diff --git a/ControlRegions/3l/2016HIPM/configuration.py b/ControlRegions/3l/2016HIPM_v9/configuration.py similarity index 100% rename from ControlRegions/3l/2016HIPM/configuration.py rename to ControlRegions/3l/2016HIPM_v9/configuration.py diff --git a/ControlRegions/3l/2016HIPM/cuts.py b/ControlRegions/3l/2016HIPM_v9/cuts.py similarity index 100% rename from ControlRegions/3l/2016HIPM/cuts.py rename to ControlRegions/3l/2016HIPM_v9/cuts.py diff --git a/ControlRegions/3l/2016HIPM/nuisances.py b/ControlRegions/3l/2016HIPM_v9/nuisances.py similarity index 100% rename from ControlRegions/3l/2016HIPM/nuisances.py rename to ControlRegions/3l/2016HIPM_v9/nuisances.py diff --git a/ControlRegions/3l/2016HIPM/plot.py b/ControlRegions/3l/2016HIPM_v9/plot.py similarity index 100% rename from ControlRegions/3l/2016HIPM/plot.py rename to ControlRegions/3l/2016HIPM_v9/plot.py diff --git a/ControlRegions/3l/2016HIPM/repeat.sh b/ControlRegions/3l/2016HIPM_v9/repeat.sh similarity index 100% rename from ControlRegions/3l/2016HIPM/repeat.sh rename to ControlRegions/3l/2016HIPM_v9/repeat.sh diff --git a/ControlRegions/3l/2016HIPM/samples.py b/ControlRegions/3l/2016HIPM_v9/samples.py similarity index 100% rename from ControlRegions/3l/2016HIPM/samples.py rename to ControlRegions/3l/2016HIPM_v9/samples.py diff --git a/ControlRegions/3l/2016HIPM/structure.py b/ControlRegions/3l/2016HIPM_v9/structure.py similarity index 100% rename from ControlRegions/3l/2016HIPM/structure.py rename to ControlRegions/3l/2016HIPM_v9/structure.py diff --git a/ControlRegions/3l/2016HIPM/variables.py b/ControlRegions/3l/2016HIPM_v9/variables.py similarity index 100% rename from ControlRegions/3l/2016HIPM/variables.py rename to ControlRegions/3l/2016HIPM_v9/variables.py diff --git a/ControlRegions/3l/2016noHIPM/README.md b/ControlRegions/3l/2016noHIPM_v9/README.md similarity index 100% rename from ControlRegions/3l/2016noHIPM/README.md rename to ControlRegions/3l/2016noHIPM_v9/README.md diff --git a/ControlRegions/3l/2016noHIPM/aliases.py b/ControlRegions/3l/2016noHIPM_v9/aliases.py similarity index 100% rename from ControlRegions/3l/2016noHIPM/aliases.py rename to ControlRegions/3l/2016noHIPM_v9/aliases.py diff --git a/ControlRegions/3l/2016noHIPM/configuration.py b/ControlRegions/3l/2016noHIPM_v9/configuration.py similarity index 100% rename from ControlRegions/3l/2016noHIPM/configuration.py rename to ControlRegions/3l/2016noHIPM_v9/configuration.py diff --git a/ControlRegions/3l/2016noHIPM/cuts.py b/ControlRegions/3l/2016noHIPM_v9/cuts.py similarity index 100% rename from ControlRegions/3l/2016noHIPM/cuts.py rename to ControlRegions/3l/2016noHIPM_v9/cuts.py diff --git a/ControlRegions/3l/2016noHIPM/nuisances.py b/ControlRegions/3l/2016noHIPM_v9/nuisances.py similarity index 100% rename from ControlRegions/3l/2016noHIPM/nuisances.py rename to ControlRegions/3l/2016noHIPM_v9/nuisances.py diff --git a/ControlRegions/3l/2016noHIPM/plot.py b/ControlRegions/3l/2016noHIPM_v9/plot.py similarity index 100% rename from ControlRegions/3l/2016noHIPM/plot.py rename to ControlRegions/3l/2016noHIPM_v9/plot.py diff --git a/ControlRegions/3l/2016noHIPM/repeat.sh b/ControlRegions/3l/2016noHIPM_v9/repeat.sh similarity index 100% rename from ControlRegions/3l/2016noHIPM/repeat.sh rename to ControlRegions/3l/2016noHIPM_v9/repeat.sh diff --git a/ControlRegions/3l/2016noHIPM/samples.py b/ControlRegions/3l/2016noHIPM_v9/samples.py similarity index 100% rename from ControlRegions/3l/2016noHIPM/samples.py rename to ControlRegions/3l/2016noHIPM_v9/samples.py diff --git a/ControlRegions/3l/2016noHIPM/structure.py b/ControlRegions/3l/2016noHIPM_v9/structure.py similarity index 100% rename from ControlRegions/3l/2016noHIPM/structure.py rename to ControlRegions/3l/2016noHIPM_v9/structure.py diff --git a/ControlRegions/3l/2016noHIPM/variables.py b/ControlRegions/3l/2016noHIPM_v9/variables.py similarity index 100% rename from ControlRegions/3l/2016noHIPM/variables.py rename to ControlRegions/3l/2016noHIPM_v9/variables.py From 189dc012e4833e738e17d53d7c0bf8c377e1a03d Mon Sep 17 00:00:00 2001 From: ntrevisa Date: Tue, 19 Aug 2025 16:28:08 +0200 Subject: [PATCH 19/44] Updated fake rates --- .../cut_Tight80x_tthmva_82/MuonFR_jet10.root | Bin 9777 -> 7200 bytes .../cut_Tight80x_tthmva_82/MuonFR_jet15.root | Bin 9777 -> 7198 bytes .../cut_Tight80x_tthmva_82/MuonFR_jet20.root | Bin 9762 -> 7197 bytes .../cut_Tight80x_tthmva_82/MuonFR_jet25.root | Bin 9768 -> 7202 bytes .../cut_Tight80x_tthmva_82/MuonFR_jet30.root | Bin 9758 -> 7194 bytes .../cut_Tight80x_tthmva_82/MuonFR_jet35.root | Bin 9744 -> 7197 bytes .../cut_Tight80x_tthmva_82/MuonFR_jet40.root | Bin 0 -> 7197 bytes .../cut_Tight80x_tthmva_82/MuonFR_jet45.root | Bin 9690 -> 7192 bytes .../cut_Tight80x_tthmva_82/MuonPR.root | Bin 4796 -> 5167 bytes .../EleFR_jet10.root | Bin 9749 -> 7215 bytes .../EleFR_jet15.root | Bin 9749 -> 7213 bytes .../EleFR_jet25.root | Bin 9756 -> 7214 bytes .../EleFR_jet30.root | Bin 9730 -> 7215 bytes .../EleFR_jet35.root | Bin 9727 -> 7213 bytes .../EleFR_jet40.root | Bin 0 -> 7210 bytes .../EleFR_jet45.root | Bin 9680 -> 7207 bytes .../ElePR.root | Bin 4835 -> 5187 bytes .../cut_Tight80x_tthmva_82/MuonFR_jet10.root | Bin 9761 -> 7188 bytes .../cut_Tight80x_tthmva_82/MuonFR_jet15.root | Bin 9761 -> 7188 bytes .../cut_Tight80x_tthmva_82/MuonFR_jet20.root | Bin 9750 -> 7177 bytes .../cut_Tight80x_tthmva_82/MuonFR_jet25.root | Bin 9743 -> 7186 bytes .../cut_Tight80x_tthmva_82/MuonFR_jet30.root | Bin 9725 -> 7180 bytes .../cut_Tight80x_tthmva_82/MuonFR_jet35.root | Bin 9688 -> 7186 bytes .../cut_Tight80x_tthmva_82/MuonFR_jet40.root | Bin 0 -> 7182 bytes .../cut_Tight80x_tthmva_82/MuonFR_jet45.root | Bin 9656 -> 7155 bytes .../cut_Tight80x_tthmva_82/MuonPR.root | Bin 4808 -> 5163 bytes .../EleFR_jet10.root | Bin 9716 -> 7202 bytes .../EleFR_jet15.root | Bin 9716 -> 7202 bytes .../EleFR_jet25.root | Bin 9709 -> 7201 bytes .../EleFR_jet30.root | Bin 9706 -> 7193 bytes .../EleFR_jet35.root | Bin 9705 -> 7193 bytes .../EleFR_jet40.root | Bin 0 -> 7185 bytes .../EleFR_jet45.root | Bin 9656 -> 7188 bytes .../ElePR.root | Bin 4840 -> 5183 bytes .../MuonFR_jet10.root | Bin 9752 -> 7197 bytes .../MuonFR_jet15.root | Bin 9752 -> 7196 bytes .../MuonFR_jet20.root | Bin 9739 -> 7199 bytes .../MuonFR_jet25.root | Bin 9731 -> 7194 bytes .../MuonFR_jet30.root | Bin 9710 -> 7190 bytes .../MuonFR_jet35.root | Bin 9701 -> 7187 bytes .../MuonFR_jet40.root | Bin 0 -> 7189 bytes .../MuonFR_jet45.root | Bin 9692 -> 7187 bytes .../2017/cut_Tight_HWWW_tthmva_82/MuonPR.root | Bin 4774 -> 5169 bytes .../EleFR_jet10.root | Bin 9705 -> 7209 bytes .../EleFR_jet15.root | Bin 9705 -> 7208 bytes .../EleFR_jet25.root | Bin 9678 -> 7205 bytes .../EleFR_jet30.root | Bin 9691 -> 7214 bytes .../EleFR_jet35.root | Bin 9680 -> 7208 bytes .../EleFR_jet40.root | Bin 0 -> 7203 bytes .../EleFR_jet45.root | Bin 9663 -> 7206 bytes .../ElePR.root | Bin 4798 -> 5183 bytes .../MuonFR_jet10.root | Bin 9714 -> 7175 bytes .../MuonFR_jet15.root | Bin 9714 -> 7176 bytes .../MuonFR_jet20.root | Bin 9689 -> 7177 bytes .../MuonFR_jet25.root | Bin 9665 -> 7168 bytes .../MuonFR_jet30.root | Bin 9658 -> 7174 bytes .../MuonFR_jet35.root | Bin 9642 -> 7163 bytes .../MuonFR_jet40.root | Bin 0 -> 7163 bytes .../MuonFR_jet45.root | Bin 9598 -> 7164 bytes .../2018/cut_Tight_HWWW_tthmva_82/MuonPR.root | Bin 4769 -> 5147 bytes .../EleFR_jet10.root | Bin 9635 -> 7192 bytes .../EleFR_jet15.root | Bin 9635 -> 7192 bytes .../EleFR_jet25.root | Bin 9625 -> 7190 bytes .../EleFR_jet30.root | Bin 9619 -> 7182 bytes .../EleFR_jet35.root | Bin 9631 -> 7188 bytes .../EleFR_jet40.root | Bin 0 -> 7177 bytes .../EleFR_jet45.root | Bin 9578 -> 7178 bytes .../ElePR.root | Bin 4798 -> 5166 bytes 68 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 WH_chargeAsymmetry/UL/data/fakerate/2016_HIPM/cut_Tight80x_tthmva_82/MuonFR_jet40.root create mode 100644 WH_chargeAsymmetry/UL/data/fakerate/2016_HIPM/mvaFall17V2Iso_WP90_tthmva_UL_90/EleFR_jet40.root create mode 100644 WH_chargeAsymmetry/UL/data/fakerate/2016_noHIPM/cut_Tight80x_tthmva_82/MuonFR_jet40.root create mode 100644 WH_chargeAsymmetry/UL/data/fakerate/2016_noHIPM/mvaFall17V2Iso_WP90_tthmva_UL_90/EleFR_jet40.root create mode 100644 WH_chargeAsymmetry/UL/data/fakerate/2017/cut_Tight_HWWW_tthmva_82/MuonFR_jet40.root create mode 100644 WH_chargeAsymmetry/UL/data/fakerate/2017/mvaFall17V2Iso_WP90_tthmva_UL_90/EleFR_jet40.root create mode 100644 WH_chargeAsymmetry/UL/data/fakerate/2018/cut_Tight_HWWW_tthmva_82/MuonFR_jet40.root create mode 100644 WH_chargeAsymmetry/UL/data/fakerate/2018/mvaFall17V2Iso_WP90_tthmva_UL_90/EleFR_jet40.root diff --git a/WH_chargeAsymmetry/UL/data/fakerate/2016_HIPM/cut_Tight80x_tthmva_82/MuonFR_jet10.root b/WH_chargeAsymmetry/UL/data/fakerate/2016_HIPM/cut_Tight80x_tthmva_82/MuonFR_jet10.root index 95a5e27073f4741081cecd131b386f6d3fd80d79..a2a567d22322f3c8b5dbe0069dac5d6380136d30 100644 GIT binary patch literal 7200 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 diff --git a/WH_chargeAsymmetry/UL/data/fakerate/2016_HIPM/cut_Tight80x_tthmva_82/MuonFR_jet15.root b/WH_chargeAsymmetry/UL/data/fakerate/2016_HIPM/cut_Tight80x_tthmva_82/MuonFR_jet15.root index f75362941a68945b02d821c89833df14f892e603..b4225800d7f8bda0eed7b522c27c0c8cc5570c60 100644 GIT binary patch literal 7198 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 Aq5uE@ literal 9777 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 diff --git a/WH_chargeAsymmetry/UL/data/fakerate/2016_HIPM/cut_Tight80x_tthmva_82/MuonFR_jet20.root b/WH_chargeAsymmetry/UL/data/fakerate/2016_HIPM/cut_Tight80x_tthmva_82/MuonFR_jet20.root index 1dfb97e14150588300cbb1c28209f1f0dc3ab187..c6ff90560397ae2eb2535bfc1c4d9b6f565ec1de 100644 GIT binary patch literal 7197 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 diff --git a/WH_chargeAsymmetry/UL/data/fakerate/2016_HIPM/cut_Tight80x_tthmva_82/MuonFR_jet30.root b/WH_chargeAsymmetry/UL/data/fakerate/2016_HIPM/cut_Tight80x_tthmva_82/MuonFR_jet30.root index 5661a4937abc059000fbd4afc258dd7054d2d700..67d6ef36e8baca9ec927b5911a057e55b033cd20 100644 GIT binary patch literal 7194 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 literal 9758 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 b;=eZNZ{gP4sqEk1ptmC)4T&p965u}o!P>)% diff --git a/WH_chargeAsymmetry/UL/data/fakerate/2016_HIPM/cut_Tight80x_tthmva_82/MuonFR_jet35.root b/WH_chargeAsymmetry/UL/data/fakerate/2016_HIPM/cut_Tight80x_tthmva_82/MuonFR_jet35.root index 27bdf2c3fee095d3d265ab82b571e16d7982978f..26a272b4fc73a7227855e9506e23425c7ea5d3a3 100644 GIT binary patch literal 7197 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 Z{8KF#n{?Pb_HR)OHcw_?3=mHT{s%0D1=aun literal 0 HcmV?d00001 diff --git a/WH_chargeAsymmetry/UL/data/fakerate/2016_HIPM/cut_Tight80x_tthmva_82/MuonFR_jet45.root b/WH_chargeAsymmetry/UL/data/fakerate/2016_HIPM/cut_Tight80x_tthmva_82/MuonFR_jet45.root index f1d3bcbb9a29815bf465a778b9bcd29122fc9130..daf96640f3c86e080630d6091b591808c9ef8e5d 100644 GIT binary patch literal 7192 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 literal 9690 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 KExWOP2mCK4iiPw5 diff --git a/WH_chargeAsymmetry/UL/data/fakerate/2016_HIPM/cut_Tight80x_tthmva_82/MuonPR.root b/WH_chargeAsymmetry/UL/data/fakerate/2016_HIPM/cut_Tight80x_tthmva_82/MuonPR.root index efeeb00822d36310d1540ecc6cdab637f23af5b2..7627d33b5905f9840e58b0a7e6c64ce8519f6199 100644 GIT binary patch literal 5167 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 literal 4796 zcmbuDXHZj7w}wv)MTCITL3&q^-kT7JAT@$C5n}=&AQ)OusuYnXO)1ig^p4a}1(dE- zQ9|#6bfnjd+#mPnz4P5Ov*zrXv)4M$n%VQt+OM;N0}cQ-W&i-N0s!iUi!i@fBQFAU z5fMcHy&xV00P9^+LN1Q@a!$bHvhu~>0D$=6 zJzIOUlr_>0?To~sMZ`tLq!F6;;kqK0t~kU)TZ|1(R@4oF!`VE4fkeoPi|D#KVBrSB z&i|Mki2pX|uX8&<`-*c2Gw8u5QB-9xXTUR}8IVW< zG0`KsY_k!I7mS#b)(`tW*uIU^zGGz<0UI+Q`icvSDQ&!Nx-Q6G6)Xt=lAy|$Y4ap0 z_h+39XZ1HxG_@Pq&Qtfp7ueqZ1`+p@kZ@}$>w>C5U=>4k5YCUY6j_}NYNAbN!`*7u zlM*fyM@h^Y&PRDS6ZN~*{lqDrgu{P%lXlE>8rWs9a73ztSwJdD>*nAqyXGc9|AS#l z0T25(b+=*!eppUGc8%woLcLyBO~O45e9JM6eO@I_a%$gYwY#!(&_rV~Hz-RrWOLz! zI)gUfQ6?B#O`tg+!{~KhOCsYxreJiZe5E=ZZfl2Ug; zxE?(((pY$RlBEttR1`bE*o_`!N>-65s=xnB5If+bF(1uax)_y6Sh3OCZp`ehz6E*r z24;Yo#lYx!SUMz5)aIKkWZmTF@{7)76J4b{o4$`N7e7o;XAN|_&(7M-lSz8CCTAVS``y=FIHq4YV!b)3rn zPTDl&308Q_HCSyiGS>?hx^crPX`u8}O@%MOe?Z0aL4f4)2l*l)&>@4Qi^Ks-ub^ZQT9IG)R2~eUFrRa0^f*=WS!T^=LJbZjiVxM0> zv|`TQF0C+Cpw`av_YNM&Hg0#9xJ8t$Ac9$u!3gLgOF!E>yCI47XzOeA2(p=Z(=K;g zRG4~WymvH@^@Kwe+@B0ol3_4>6a^>-xcD>zHI^S_kUPv}{fSJg*g|PFOv9)F3p(cQ zbD)|%DAbMQ4k(u0)i?64!V>oq33r!dV?M^y*uU^!j;sjhONc%76PPi7C_KNMx$|Za z;O-!aVV2$2KUy`}8kHAHvZwZUj7h3set{?9H;D+!)$MjXO6AVH(@fr00-_smQE=RA z?fdfffJ}?|Ba^nqAiNG!w5gH_WGg3v31nP!rM%}W^!1}@j{V{VgSB$h{K6A%c5*%R zFlkQclwqCh7a_YfK^qmP@cc77n3%wTCdT$>szw(fmJqrs8AF>hk!E7=%8Mi4@exz$ zWV;mV3ytDiztkv|e;V~qz5y%ZhdQ<{I0{3YGaC6E?R+0=?Le*W;EJ+$=dicM+M%s3 zUM{!`sVX7|*7+`^YWR_bJ&OsQ^2%-rji=M>*ZZTDydTc^^ae+;=~~d95vL-ear}?5 zpL&CmFJG=tG;XbiDY?j04?&Bz`?X>ZiUY2D&%WcI%u|7$#F0k1sb1wFqEh7G%-U`z zH|Uq!?{%}T=vuG4Lmk(kAh9>Ok-U-YdA2UUd2lx!kOO>`y+FPel=GAI-p6}u+y0cq z4#AuLB49_3eWj6QAPm~;#gPUUh!fckbet)@dvbySar{4%nCRL0t11|4`8H(^zCY|Q>eh9-g%A70EqviS0%1?4~$KMZ^HbsPAO~2Fs`1t*Ti#dfq zFX@`=IbU-PYiD@nqY#!>keh@Wy%S>6l+(~XD~Lx)k4FV4Gi+Ka9L~Xux}+Ip-`_X; zqYMI0i*eZ-+PZfQq!4(W!%>ipJrpqkx*l+RdxlMKj()y!aG)u4Q0MkcttENbCER59~wW9PLCpxGF zJI0PT=*TO^T^xru;w7~hJ{#i($l@&@GyFHTcwE`wbY5?WWbXOMo6!J)J>;le`)T)&1xC|%%Q%daT1&4z*&-_B z>m&TwAyjs5?fNuGY;^oOU@L@Hp7j=N+Zimh5J~%x3VmJi;*p2M*3cf!|Ky#E)eLGV zFngonZ=}Qqvn9-}d^q1rdO5dJspmePH&u0W*F0?uQ+LR8_{caP#>O()G_ zGwxF=|Ge^+up#RPod_?U2Ul1V{1;!P$q`)K0_%^SfF#9=O@w`o5osPY> zD07qU23PW?y4ry}s#{-<9pEt950iIau&e9~tm?Z>!1(ybO+gg84IlO0LNqIYe+xg| z!*RT9VaEKyw%1x;pq>Xsqd`yMvxyk6$W>CM1sVj1k14Fp$zSi-(AgsRk7_Vyxpo+F z;|$sB8#4raXzEw+}5=Fjv4zYN>JMgsKuHUT-P=U&bI7o1>oSxL7x1B;9q)dNwCt~C3w48sNiO_6Cvv8TNw zVCzmc^K26~Z4q;8sNR%=#UAHM`SGK0WOWrdyEK7V+hNe3JA`!`INUxYbKA82{Q)TZ z;`iQ;UeLnUVwIz05g0GeM}}{|d@XcrU(UtTc4As9ELxl&+{Iy)j09dj&;Cw1Hz9T} zcKHT?=Z+mS<_OVoV(xP_Jmzt7WgvmJS5X>e=flS4pQ&xIYBECNipz}*UWCN3Y71&> z;-@sW+U$2dzYt7^=-2Ds6kZ?aYPlFepD9F`?$^mAPEyqKc8cBeK?d<-BFZvFQsX~!LYIl{Ivq_C20+2$tbVrL{a=Km6?0sA zVk%*^oxhAE%R4v2Yq<&npTP_tdy@cX@p**BkMPt-Chx%TiGZ1;{XjFW`0U7=i_|TT zkKm%EX59DG6A2N0S>dt*x$d$eXr3L*ApZ7_j*csJa?r8zRyE_|zi$zj;fjzdS6yi7=1YC>@qgTo}wOA~C#bz&X9PgFX>b#QH0sU|5QJ6#URCBaTe# zdM5u+7$sv~ml{)%O;wlLjpsLw%|>ucsUbM}7v2bxpLw#?BS{gd#4h(c3bW?6DkBua zB37bFM?da{{wi5z@0(TX_+^wykhPg2K-Q&*pTDCM>1XCwP)hi8Q*+^_=HIgnPK9!L z9uX3xWt@rY^@v&C{U5p!y3)}*WioVA&uBj9dL<95zNRqe{_;v*dxy~cOI1Qq-9;$} zyjWnodv+Y z+@&TfSMj&n-j7PgYTbesMQHCO!g3UaU)+xTl+tdd6G+6&og?cOp00~XOW>h2#lQYw zDBjQ-Q2GU8%$W~7ZHO)h^KpmGoM%_H+#c0gvng|X`*nnaM7+z*R8P=H)x}$w;mOdqlC&TN?h|5hp5ZtqQO9)r&<;-< z%P!9yLzvL;^dPYhaV`@j?U{Yu`_>Kfdg|oUGlVN|9zob^xj*(X8P<|k>(%TTX{1ES zqp>FSYVTD0Bqo4v0Veb#sHT9eVXghcs_=^G2JJjb?eMtaX*gNUz1MR2t(p~~+nzmK zu7%&E3>K+xMK8Nw4=vqrC`k`$f66w+M~@DXG}dOS3DybM6HH6zYTr5_Yh=?-ezFa% zPf#cSDI_kPxEZGvs1#o?p~DsJbImzI!^7d*$R6CdIF{BdU(2{VCI}`ko-ocH@@%@E zB2uqBh>v&7gokayLo7LY@T*#9jnERG-y~1JNS3AP{Wv4FZ}C@9T$}nt2JO26+jcsI zfud--UI*?w__v3>4$|s*1$fTA=?6~=d6tjQw642RHs|R6UE$HzEVoKr;Czp!FT8#F zmEzZ|6ZFH*G$YMQF5w`bh9;U{F9k&totq}_?!hvoD?;o$9^gHdE5V+u8~^I}J4tr1 zbA(9%17vQ1>e-)xVzPHX0-r^#!oYpp{%*8ILPz+yvtk{F|Y!*r! z1hEKEB-z6S45T$7T`d${w>U@QM>bT>5jxPNb2U3CBeXcIQGhOYO)7fvndTGRFoZ6@ zIWhuE+&$0aS~zEUX1FSl#K_M6m!I%pQU9s#4>9gBfzc8UAMrb1($yPni0aaw3|PB0 zs~UPHQ||l-t62$>;KXzu1SRP5`-Vj0ruJTnCGqJeL%bTv5qVz;B=Gvxs1OC-%=b)= ztI`fkeH+f}qu*)W`=25Y<#jsLmsx)*^_D~IjIQyP!Uei;pBc3ZdR$sdmyhz?xjW#) z=%3Rw;vTSlN7lycnR$BwGg#bPD06w+6zdXOX=WD*giRdJpW~Ed${NWOrL~q&QPvpJ zf$6W?KYAhYK9g{&W3#mBNmDvS$(Y)$h=QWlLDxb&sgo5|d=5|MDaMZmZl1T6bb$_P zl&&14OR==)8mFcR)k~U58yVl*@w(X4(lsYh&{BQ$!!u3m_oS@5V2au-HQi^D{;d@< zFnXwdLyy^c=uw8l)K-PZpV!gLL1G4!EK7eO`rhShGwnR4V&s%NDN>TVDYn^UjW;Xq z$w=z5Brk>VdE(!9vXg%XfA&MEsUC@n88*buLt{N#!!TO7#$q#FgW$c!9*x|OYgguL*bT1_qw#EceST%eSV`w%ypOrGSd=b@{!5GH!pyiF r`u`sm%SC~U+rxk8d0ZqTFPX0W57VW&ba4^+|1ez;Q8&DliUIx$nv9%> diff --git a/WH_chargeAsymmetry/UL/data/fakerate/2016_HIPM/mvaFall17V2Iso_WP90_tthmva_UL_90/EleFR_jet10.root b/WH_chargeAsymmetry/UL/data/fakerate/2016_HIPM/mvaFall17V2Iso_WP90_tthmva_UL_90/EleFR_jet10.root index c1dd68326ba714ef3f7a3f8de63f4302d7f059e3..c461ff1cda5e7ddd4d879b4ca411a4e240a0ef70 100644 GIT binary patch literal 7215 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 literal 9749 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 diff --git a/WH_chargeAsymmetry/UL/data/fakerate/2016_HIPM/mvaFall17V2Iso_WP90_tthmva_UL_90/EleFR_jet15.root b/WH_chargeAsymmetry/UL/data/fakerate/2016_HIPM/mvaFall17V2Iso_WP90_tthmva_UL_90/EleFR_jet15.root index 64b478578e213fbf74950e13535ff368d99ca95b..79c23f46b719f31691738356be52f21084ea57b6 100644 GIT binary patch literal 7213 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 literal 9749 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 diff --git a/WH_chargeAsymmetry/UL/data/fakerate/2016_HIPM/mvaFall17V2Iso_WP90_tthmva_UL_90/EleFR_jet25.root b/WH_chargeAsymmetry/UL/data/fakerate/2016_HIPM/mvaFall17V2Iso_WP90_tthmva_UL_90/EleFR_jet25.root index eaee373164529e156f504f1a14f3626b708d9898..82974b3e4a378ff2f36e12e39641caad3870b4c1 100644 GIT binary patch literal 7214 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 B4TAsx literal 9756 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 diff --git a/WH_chargeAsymmetry/UL/data/fakerate/2016_HIPM/mvaFall17V2Iso_WP90_tthmva_UL_90/EleFR_jet30.root b/WH_chargeAsymmetry/UL/data/fakerate/2016_HIPM/mvaFall17V2Iso_WP90_tthmva_UL_90/EleFR_jet30.root index 9a89d46ed317359f04143318a9045fa135c9849a..5f7b4c8d8559cdc861f5f4a25dcdbfb341dd37ad 100644 GIT binary patch literal 7215 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 a-!t{MChL89_CGjN?~6W4Fn5k5!2bf2dW;_c diff --git a/WH_chargeAsymmetry/UL/data/fakerate/2016_HIPM/mvaFall17V2Iso_WP90_tthmva_UL_90/EleFR_jet35.root b/WH_chargeAsymmetry/UL/data/fakerate/2016_HIPM/mvaFall17V2Iso_WP90_tthmva_UL_90/EleFR_jet35.root index 9c3d44ba5352a1ce68f3ab1f7dd420cc15b09fec..03b4e6a4b766dbf35bfa0def44102cf4301e4637 100644 GIT binary patch literal 7213 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 literal 0 HcmV?d00001 diff --git a/WH_chargeAsymmetry/UL/data/fakerate/2016_HIPM/mvaFall17V2Iso_WP90_tthmva_UL_90/EleFR_jet45.root b/WH_chargeAsymmetry/UL/data/fakerate/2016_HIPM/mvaFall17V2Iso_WP90_tthmva_UL_90/EleFR_jet45.root index ba9eee35d86120b00d60e603f6b763c08d25e2ed..db8eb50762f3c1f3bfc28c56833faf485230fa3f 100644 GIT binary patch literal 7207 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 Xn$vSSVmkYGiiVgqvkTsoNe2E4TAmX3 literal 9680 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 b{ClPTR#?5hp8XH5)ay$h)r2cY0`R{8n)QZU diff --git a/WH_chargeAsymmetry/UL/data/fakerate/2016_HIPM/mvaFall17V2Iso_WP90_tthmva_UL_90/ElePR.root b/WH_chargeAsymmetry/UL/data/fakerate/2016_HIPM/mvaFall17V2Iso_WP90_tthmva_UL_90/ElePR.root index df564dd4ba239b1e5a261c095fbd879357753415..ce84d5c9c781925fbbcdae153bf729ed9d38591a 100644 GIT binary patch literal 5187 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 dUnGX=zY=qyFzG+ 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

@#OJc`C9}Wx_+zp0!jxhK{fDD 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 F{snFwV7twFrCTP3tAZ4 zn!6Z-%vso3*|-fI9HnKH6mF zE3?a==>MDD0Wg1}`WqPlqUbHC+_&~OIskwQ=l?Zj=;%K)gTwmUpZ?FxAU^!*53MH6 zE{^aPsFRwZImj5GBM+|y4Zwl}ctTVs`>-x+Vh_gu05PEi!`m0q5yaCN?^9*f?v|Z4!t@BOAlegP>zwm3mFRl1|yaO0OgQBIU)TzqWJI+ zd-(v+fw0(7W%cra=^)5_K5@XlaKgj}zBN`Yd?5Nhw6GEaw2hvjgK{Xg39K3*<-Wgg z=4(tDNXni?E_~P}7n>|r1f~iQC^?23B&?T)4dBFf)ivkx$zV4dNj^BG=IPT;{cd*8 zZu=$wiV85dX7V)6A1jA1J20~?FPb8i&m3QCN!P=cF~LZez@&VbFwTes@%{oggzb#8 zX>*kMMW0T?!Q>u?fpSK~#gs2)rnM+FUBKsqBH^q^$14U_Tyd&XoLly-H5%oN#62oa z%-RTMJ8sraOK_h~LXFOd@8m(ZscOCQp2;sfh&wJAyfcij2h{_%TbO{0u%9^LTD4S1SGGr@w*oa51gGSeVS$)*M*zO0PHpy!H&<|1b= zak>IbTxoWvKPC5PVI~%!y;M7=7nA6I7vY-1nwOcWc);aZ4 zfVF9cG^W*X^7<%r^LP-tYB`Iw!NshUPY!Sf0KC@)rb&fHk0TU*C_%$PA2M+Q;JHxkFMdgfEc7p*Lh zcdHsIQ3_l*kvD={^J4^Zvo1nW#D@qXZx`(<$>8nindrFb_tN;QAqF&OsjqQXhzfZjL-d4^=jWPpA zS_W8A>PN60&qE)(f}#w$_{KtEW4w&%@2r z0_&3^O21JLRTvJ*_Dtk4Z~-$6?nI4x*HjALTezIQ&b$I*NBb)P0LZt0^c#wZ|DuTV z4~k%h|3MMfKPWPEaI^nITSu2aP*xOjK0 z#W?ZjNL+$s(ITj=b#RRHNaiFwfsS}IS?mI$NPa+Ila*yPwthXr%7Kc912i7RWxLOZ zJvMj;3mp5^=G$c-u*d2xvy#&ZtX@znoYMM>xOkvNC^}>yD|)1Y`D4_l47)>T_tJFI zyzzGCG0{MHBFiC8L}fTQcv3|4Po_=c!!eZ9T?B=YeUORgyDqL^1N?;ddSswoJl)fm z`N-8u@bUrg%kvC;I*_~`5Fx#c7b>6z?erXMYg(N&FVUtXUqN_ao@-+8Yf^Nbu4|Hd zV6TSLffI5-u#)a;tg>ZMUx#EQQd6a1bQ%dM5cqPp+!12kK8(j@q0_)PYku3w0cXZ+HfOAm;-f9-1_-VIUoNjhxD&N7a!nP}V`@(}Ht$O3?W|ks5-^Oo3hXIqG%Oh=PX6`arpIU4>Ot zm9HFLzZid7v{V$wCz!11aK0ks6Dl)A_+;wZSv$udd6OAt+S*?GnosAMpKE6trCu{k zw9&J8x{;qmXdoYu6+i|p?m)Gf16Cbwn!+Ik%9lz?CHiGdzlV?L;`C8tfKX=*`pE)W z$U0+i9E%w!CXDeB^6R5G#>9=e)TC@N39ix8O#i@Ro_i6RjrZA)6mE;;z$oK<4B^nj zA7uM%Si;u_21(O8q18R^1>+9;3EOeo=1k0Y8j!nS)|X4YE!kd6fn)2$9f|VG!g;hf zlffP=8kvx@nB!!Tu6=x1!yH@IbBk*Q25qqTJw`Vz$ZTsOeX%3}j=_HsZBFBz;)fo8 z&By94Vt7kKxG$5uYMJmy?R`xC*u}sznQD%tlz$bt~NOt7^s&D%95{)`l?9w z?&tUY&Zi!h>7TO3&{W5UbxOfCndt>RM6dedTgUehrN*8dcb6DBl1ynhg%1Kd zQ4X>K#{Jej(&fU(+U~NiuKM=SyM(G@lPGvZXeZHdGfmB zxgNhjt?ADV0szpde+7m2S5WMK1cj*fkDxIAEhq_1Ia5cMzaY|u2H^cGJF=Env&0TV z>y2TYfR9S9YgRUs6SJ~0KM^FAD6Pj%kmL@ZsW7JtRvX9GhSerQFd~O2loaj?`vDI% z6j#_#MNu6ntqom8mJFXc}?dsSS@lKn4Q~Ad{=t3>5CrQU`oa znnsqee3Y=ESCK7Ft#lX?`8a{QV_P*7;-&=Y^vpC6;92HOZkpp9mM*iu3EvPwNu(2d zo+6E>nG!)TJ03xAD++*IHDTS(f#vaCND*S}i&Cg+H!-CWlnmawfbD}rhrxTcOCezy zLsREkBIl58Lq(e&qq>keXu4_mCV9^<+pF!?=%(vVK5}q<7KLmR&p3 zL`?0mSpDRyVcEy-l~<5u#yhUzg_QzK>-ehM5axTjxuRTy$so9m9jh!(=d<@bcq=s} zwoFZX8(v&-NuNa_kO4T#@xexDzY!U-*(iITlcDxNUH3@+E ziX%n8>RYJlzj`2Sqgduk$ww@WTX5%wWPjWLK#k1c;@2zVmUw8ZR!k6Fk~ca%eqj`L&!`C|Z09SpU1GHStgAZ~DJVf6&qcZm zj!r!%5xqwkd_{JC9L=(bsWB_Rcds^XKqOAV;zvViE-$nWnb>-d;|R*uzxv{n8wVX36_4 zSS6{Ley&=>6F|ExdGx@;)ki3#KXm8$#5?O`z%bG3A3ihmsz81qRTa|$>NB~bO?@b~ zo580OhFB%dq0Q)N3woDEY)4$XqN~cULyx{>{V0#dIUc28tii7;v7(4#E1-879iwFG z7Pwic%Y$aymWQ5F23fUO!{`(7CG;Avu%QM2lZi1QiyTcOG7_fCi5l_dw~|@Ta3P#` z8|K`WRSK^Z5t2mUj6yhKUexY7_|0|uP)@9oerL(L+D~Gn7Q!_14J>Wb=iGaBG zaGqFJtaGim;uiFNF1Y7gf$i~Gi9f?}la*f6o&sCL57w0up@XzLxm z&;xGKURfotP?tjA&EKe$_LoZJf2kz!hf1i2|4@nWKTzraOq5ih0p$PUlb3vw2XHVi z6<0PVSPw=VKTWlZSn_}mqXUL6oWezI0wLyWGKE?KMMMu0=DAidkuDK(jec#UX+R*7 zE56H!vQ$i8Z0)dXAjuGM6XEA6UCSoRUM^VIvei2#y z<({1YT1I$U-WOe)z$h{+D?6(}3Cfuo6~oq|;h^K7SNCb$0>QSOv_8!ikeRNvttc+g zGy#dw?J6r?`mi{F63VlP63a4e3r1=4Qe!=eeytp~I4Kh|(*!_zDlud_q!-1S>(dmtg$Coe69wkryAp8gG?Mx(#+NMPT;yM-UjFj!vd~M6Cf!Yb zU2#XD+@@6sQFV!Yq4$1Z8Z6q!yXfPq%LidCrEZPV2=V1Zp?giY{+`i~^ zOYt$Qq>VGbO*Wb~kNi2rDO`q=aJ*>08gF052F-sLyP;Y$A!29wUeKL!hVJ@(zTy%@ zBuaX#L3C6nZuGOOBM5`1@72adgN%6U0#`w#KD%kLzqqpw*0bUCp^(GF!pP#d|<(91) z`gdyYhI8K3mpiN@(<8NyU#nV;3`Bo((5MbaYW9odQVyS^iZ{#P1#ZuLz@lS zdF`1HLKYUf+6YDddQ{~bogjTUBi~MgMng0IDsew{u^oDjX@>IkAdwhVr0}`@g@HLV zzY?`{gr)u40{@IOtL!=NY|etiD8OrmXOkf7sx7^8OmpwUi3s$&n$^a8HblK(!Lzy# zf%00U#@ACa;&F@hdalyJ^Obh(svt}~5}mA0pRXvnIVP<>ujo!k51cGE4wXmw(fO}X zG$HBwZ&=FvizUjxSo-h>OIShwV2SuYV(I_N!ryEq%71~$R(?toIIw15|8Z}b>Tnt! zF@o47gLPnFoeq+a0*GFZ4-X$KO)Jj`TkENP!47PM3=5R~DC~ebWaMBWD}^*c=)NFs zO4e;nEH6(Kysy@Ry(k+IX?S-Tu)1`g^KLJ|MfiIv7Gd8kCS0GxJCXI3vaC z=G{=>^meiI+PZWe(@VmVX;NZ8e^P@?qAI+&fC+o&WPC`3oIJ%WS;Sbxml`jUpJGFJ z;`U~+g|}sakx30q_InP3eNpq`F&B}g>))pu$3EoYbu9YTQyQZE9PA^5z_>8tf}pxn zpvSmS;PMdzFXTJGUbB`vO`^1+G}n*^jAz=(-v{sa5yq5t&NSt+^}in+f?fh*%mKY_ zlq7TGQ6B76jDhKO1Ik`ZWSE`ZMgzJiiu?+<-hBjJm6;{ZndvSu9#lvU zk#+@yF+!|$+sRHjy3wlDlXB_3;A;Po3k}>bB}VQ;&cw5N-vO2K`0tq5q_gYWqcAWt zGdapaw$DMtwaC}HJpA578--?mE)O?wWeGFCeP&X#Rz6?FE=FWP_FV)Q4(jg;U#=_a zTc4X3k%PR469>-5KT-6L3H^|U`?0J@l=wLacC@_`H{$L+O$#hX63If+68Ap7)a8c;~Wy_^Rho_&IQ`LgQ0($LgJi-gM z@8f;Zz!ttqx(y2ksz@^Jrh9iPgnczcJ5s+-jc!+ZXYNl-X$+(YqDP4nHbOx!KY%j$ zYMF3lyD+Hv?zA=6E?*dAs}R-Jn7G0jrL1}9Y6vicjxs(xnno;@%30A1#p|~%SzlD zCL2`?aeMyTkR4r&DkaVTJ_VAOmRjT1b#Kol8 zJ_q_w>L!ZWPD#~WOU_U}p+e5>9{Oy%r@m*;S<`Z{AEW9Dh|{t%IvGunm%Rptui4do zK_+EpCz!es?OErB?i@Yd$)wA`IML$?iRH(PaY@yE(63YQFRKDA@NK8nDay?LN&nYJ z$d7n^iZI7-z!d{&C_d>pi}(_?il2F=o?B6+d(9znRL&?X`}=T z*Qk7_2;vb!Q0QXyc5Xi=?;&yS9eKhhii7}NM0XKyPwj3}Yo5=2pa)kl5_MtNO#{*M z37ZL?B$$AKJBO67FL=bY&?x(kbLC6r8e|2_-Rl)`U3Z3pytpI7%g%rOF2yF?H4k;B(lUNGPyJ< zoZ1d6_VMg_>-=q`z#1s-CAy#ZYe+1z4==v*`kMm}q%wj!t+6#^1xa~1S* z)AZ7;;v}bs$LUJ@#c_HyL z2BX3_Mw|z;Ksk}!3eFz@Vnio=$?~9RQ&}#n@<&=Pm`c2Q1ZwAa2G@vy0 zO1H)^V7+Xx@f7e-R)#x)k1t{whzBZvA`mqU`T)019qiAEqW`&kFG9q01gAqoB@!J_ z3Rv&pR6e=}V19YZgmSXSaT)heo0_CkiHy!6Q{nUF* z+;P=K4yJ}XaeJldY9tVfd&5W{sgT-731^(qdh5>%uT2Gpu{>{rf|HnF6Lpw)i&&6T?5#j(CSNn?3J-jQrT&T*UuJKfOS0dS0cN4`{iC@GED58JcU zTPf1vZ57&|q=MB2NhGWnwvN(XZ?ZhLj_MV?mdn?E5MJvRPd!`bOx7CV4fB7lTpIVT zo{@HzuGXe}Mhh;l>yDYSXp@igrTPd-oDsb1pT`4@L^X9?k9UPRLloF``a}@q4CzCU z)R6ChxXVL`gF%sfE-rS*XELJ1O9~)Uzm4JZ+Oe$%hy4K4FIWZyr>>#!kErT^=?uI0 zq4t=KZa`!n-2|404g<{=Z=t@1Cz(SSDQ{+4Lb1TZ3GQGSLeSvH^g9PDKB~ItM;wYo zkk`q@z_f25gkWs!3UW^kF%Pppw5G04Fep_ zg(ggU>Ru6_A4j)EmCP0fxgwwSRlG>H3fA}e1vB&I$k;^?%cc0qq#SkQIz)+9(rA;` zP(t<#z!y&1p-$Tcjjz^PBTU+)&n66V&VXhI?Fw``&4?1y;U0i;qJ{dVb$l~7728g$ zNxKgNKj5o`9G*c&CW|Cxoh)v(R4GwlRDZL$PDXJS-FaA*22ecA1n7o!D^Z}@Mk~#- z4rDW$n1`|$BGE0;B#~p$wGdTYbJV{fKdO7wi8XHc0aa3y0VC%)8B7^TdXX|g-SCK+HH{?0P4wumJ+y^~z@0LFI6Ni*XYLm*cLRfigODw}qDyr>Vj9)Im8BTr zGv3)i=+r*)8Taq(lzcrT)atqnO!4BU6>H9 z3zOp&yfN|8;EembeBb0Z6;WWOgm=nkd7>dujD&VvX6%n&F8R%axS1$b#B-q)GhCR9 zP-O~9ht=1M$PPt(06L46561?LV%=ktqy+bJd z`=x-KzmAWJ1=iR!RnrYUZj<_US|Lt>JL#&H2WQO&tFz2EdqyM#S(mccpHJ>;p=(Zr zLqObBuoP;y!m59Zu*&A8OTbyov&lO5L;$l$!h$G}FpJfD5#k)7NwF(W1`2OS^!qpN z``REBs^~Ei`&LJ9k<^9&1-JtF6JD}C&Cgp2Em0t4B(D&dD}dXv`SGm-VMiWXa*aep zc0i<>A?1waR0Z0|LaEaCEplU3~0-TK@(7xzW0pHS1`=W zphDGZ3Q1FCZ|e!I=|#~X{{k>-OR9sSp^VvhE&0(+zbJoVRqGkuH%|u3KJ2Nb$Pggn z>c@<{r+HNtLzymLt|hVOOt%#?`}xJtjks&0 z4!yLMuMA@~$C+@XWNM1OpK# zPZwk6Bm@yHa+aMktqQj^%5XRGFdg}P`uv&jtD(H;{;Qa+C{VOIrkxh2?1U?6*GAd^ zG=qZkr7J$p0cKq`X^hNcUHVa5f`up9&$6X~Og=sd*CECTWWC832h#Se&Q1t;oIY}FB|Ym{k+L7hO^ic!~|nuCXO zFUmpX8S~lo4R&vdTPNan^rG^c&;YBYiNl1%w0cpSF>gAAS+O z_Iw?NxN8)Iyvyez8Yt7q&0%ci)aF*#ki7DJ`%d@p7Dq*Q!^5;sp6uT0doP9@u}w^z zPS~FpM+i{nQ>|x;1TIrL1&(VM-@Ok*k`BVzR8Wcbf1@b*)tzh%P-(FtpV)bHG7%GbU}aNnOW77p@#%@Nlm)d{Yb)^2jrV=z zUtO}|U)4RVE_TFoW`~%FyX9VtzfB$ZK+|>|+Zu!A(;e~(xuGE_|5n6O^v9Ec5dWL> z|1H>gD~0)+^#2bO?7R&G`(}ImCo5zG?OFHuRP$LWy%4x0eUY5&j001$~0y5B=6 zXX5|>X50Vi<$zwDz5}qy+5MWQ?*Qa*dOxwDmY4=Tq4#cv7@U_C#>Lwi=V9gL>ha&z zndy?7fdCUQ;0JnmO+lw!pFu&-%rOQr(xRW|15H5AYnJ{rb4$GP0xIX_R>)DU;@z87 z`GZOTy^27i>m0Vo>KbI%mbhr{`#pY>pIy~)zHWKi^HbxuX890P_3PMaL}y@h6~M#& zmggPY1t%6e;IytRovq4f}RA9~X;a)R&U!QSBcn5eN@6^1NH>-Z<* z$`QY_f~@gBApvomOO1VToza%xLr%q zd74>s?Iu$plM)+RU%W$3dipi5=|P=O$fsN?Bb#*hGIyP-HrxrffANdlLKGg203 zq;yV6f$9Dv1^bJXEzZT&+0o^c)qh`0pk)UFEKX^8VzG~~Sa&SetQ$|sEeA)l!r?-2 zcnB1df>xWkKToAHZ=gfBU~v8Wj;Hu{I-Q-EvKXR04-`sNJ!BU=;RMlzK>9>NgpdfT zi*}#!01*of1Y*uy7o3M`<0U2i7~K)wXHA+_MhT_@gBLE9%?)4JkTrDD0eWEGP!=AmNxb2!|6hn}j5g6S?sP`$O+PDD#9%#E;V3HYA}@ zbtIWsx2fdT+5PWSp;L@7Qt5Lb(y<~Uh>Hq&OXD;eKijYj4oxd34mJNsOe#&5^~@Lq zDQ%*FlxiZORb-|hU?~)9P9QgQM$X}kobf3+;=Vu0o&SrRy0MOptB1#5bM0TX5h%KW z0Ea&)Ua>l*IN3>{Sb%avqfm7y6cHyJ<*wC8(#aIoQIN#l)ff@Lx6B0VTuxldXXHs* zWSV;de%9WK?_eMiqw2AW@k7y_bBV-kG-BYlb9lE9fGkThJD9nv?4)_; z0E{5hrr{+iARzZBN9RRnsSc??S-wCZ`y8`&3s_W(8w$@E&KroehL{j*9 zGoI$BJV~Gb$&>A$dH$yv`LA0EOuayW(;rL+&SvK1>CCi0W9s(@)1HQZVp@>5^kvy@ z>5OVJ$+OOXP(AmrsY;3ef1$eZf1z4Eq(0fthkomb;+^kDFJ9YhRO4^i}lG%7ea0t{}yL5f81$D$HKLaMpSxhhjY7mM5Q zZFu~Tb3!k1O+RFlh401Y_m8RmLV%T=vSJy*LtyB9`l;c))qG zYxS)^+9y+-`P*OsJaQ8n0RFIkk_r1cRhgOx8;A+8KPadWK3o$5H6CTy*DomUP0R!u z@P1?J!5zd_w{fP`&umt@udPWw6WnMPw)8J7|MB*TFd@l6N1>`;n z$#W=^t7`s?T!@IbY_DLe=~k?qxDtKOL9QsZb>EL7Eq!#4J7va4C-=t&SG4QohoX&& zrmTYjpPYik4GBS)srqzj=X(qi?W44+VBp@3bbEqQl+Tp%^h_zLr%IvB_){sge<}s@ zhe!YC8iI26K)};Kl#`0b&*SmOu^})mcI+&{?V_+)Vigp29_mFEEkgd_s<3vfFZIEd z0TF>V2GH6Z7Hb_%v@fOuMu+tX{hIl#!IQ>mF8Hc)fG1-s#Xr!nv7!jf@$v2IH#W!AUZOfHuNyD{M&VF+DP$jMfts zGLob}Npo3FDwvrDso#A5X&j1*D@08eg{rc4_v2BH4DD0$K%*=Wc+kqVi`WR!uPv{S ze*rzpk3+Rv9SK6S5Tbd>wF0ezhG~d^Lw}LgO`zd@BCHTMt!xU86gZeMWY}SZ#Ub#O z`vy!-eP8US;N;!X=4X2gp7}H1&!w*k-V>N)`=n5?{&h;kCqSKtYeIUnT(0U3U*mEs zTjT9})8Yd{O%A@luB!?xKT}wtDVL6aupxE}T5hjBm;t42?AcsqKcTi>X9#=d4{{6csda znW>S=%dif6+E+dF_du>CVPOa*f8YUAn3BrY5ZO&=RI(yx;%6C8d-+P!sYaKWj_S?8 z=_b#62Z7U`gEC{J8z=G6hFQAIVuf43yDz?|zgX7y4EB7_DRbzj&7=$TVOGE~s8r#_ z_myieTAB{3MQmb;?lf_J9!SEZLx?;RTLKarcA%D!$m}(l6n^olx;@xh+aAeUm-jtN z4Yeko*jq+9R=ZvTKfhO2^2{VN9;3sb34X3WS=Oweo-ughSuh+dbNwlpH2qO6ekfVH zeNR0k2u)>Kl{zp7*Ykaq#3WN=L!u_};10)H!;55Q3LtdlRwyN(dnO)>1CGSRQ_6zKDtlI zH*;9u47D4%8kQPx zU8rzte}q}wLVh`n_SfdR{k@RvaPuF)*Sxg;uf#_$LLbujLUNK{QjI+x+R~Cm(!zA) zmmWE`-1IT_9@{Pr2}-syV^|(*Id-g(8Q$R<{1U1mf0+4p(KjEF5(rUQ`_3iX5;Gvb z{jF4b8|GCPN~0sTZL)GT&xURo>p0L5)az?me69Onv)g=TMO?F)*s?{Z$URrPN4 z?FcKM&9~omIDYT@?DQRkao^bq8Vc{Y97B#Mps3z)m|mgqnL(D?Iz+Gw47lI<6@X(kZ-~JZw<*ciM+Wh&lgO0uY6mr{Gp`UQn@lX zlHtTIny_!wnfNtmM_*P*W3|#>ccp}5xAk!p5csKD!pQx$W%OJQM_Io!y$#aLy99n= zQ8V`EOPe=~hPj<^n^cae?qD?45sT=-L2>&p=5FuRg-daF<02)aet(Gia(H03DQ*dm z7wY^am^Zhrnqh8H~zOwcBh%Yj}?EgrO{Pt%v{Dq+pu#4q0=8PPPj~9tL#r*@nkx-5&^lQ+s++ik+^S3?`x-ATKP9Nya{;Y`cc0qI2Y;Fx5 zjy}qFChLmJj`fdQkMxp%b?ymt zhhM6$xHs0=Dg2;fwx8M_M|G^a*_2Rlcz;Ja1uuhGnlt z4|#Fx7+h-0>8>s%>pref49$85*i-B}%3F(WK{R0iUSpkzZPL zu}GJV)TY*WoqDk`Oz>S>FX7wXU#zCjuj6F@YFkEvdU~ceunH#dI#fXa)Q7}&ekyc(hT2?~;9Eh3(3H7Kml+2L|D zpFd%Og!Mo4qg*Gw|MDujMHmEK*Fmpj;S))aH4XK6#KL7r5w(Yn#242pwE)#stlBf>MGE&V&8>pVukSWn z*Sq*R2uod*yXl7w{5fl788m!OSC?b-T$7vEegq6lcGHeVwMgnyk&G@Xs?Fk#t<->K z_Affex-Q3Ji@?t|gWoCP8Dlt3!;&&Ov`)g0u&cDgnfhbGog>`Ml2HQGlm1i()L0~W zU-%%)QV!nYSPk`BkTW7LB;QX)F%f2+semIbR}NBRO(-81;&_TPl>#?aIFLr|`x#d= z9uN4q65CmKmr@-|4rf0x{jmWNnd@#BZRp_0q(OfT4z^E!Y5_0rSKP2#HJ{shW*pIz zWKOueXtnPBK(6*CO?^ z?>F%3C%NtVCFM4Wj&?M&-tcRB1gE$@&E-@?&A-gXKb~kQGoI2>?!Ok5UUD4ue5yh? z-yLUtRj2C8w%He@M>zim>V)oSgQ78w50))f4c;ap?{?cIY8GVis_IB9sgfqb@v8J$Ym_tuW$d$uKK|3kh%%>izN{ z(%Ph$PRRJCknoruUk^&fLo7j3rT${mScauF`#BLV`VA3cUbhz^)a~4Byb}5Lh+6Zl zBN>hW{vArhPd$Py#u599yn_jG@2hn0=4>=GZeUQ$GLi%GWlu8qz*00IulGf3dqb4t zqDPbh=XiFZx(ZSKcreui;W*ylxP0RqKESHmlep+)FDF7JMxO znaksdTBA877jgCu{ut@VCyDQsfs!AA#pK&pVx0st>y>z~kOV}*h=cF~6))u^AzSo( zS8Qx!*S^;QEhYIoG>(2pNxEO^i*GN+O<(fO*VzyhorX-n6E@gr5%oLfmUc2P} z4bAs_prT}ABi23{9NMt&X$0`+8U zCWj}kIdu6>Q6gz-JOav{i`v@rnJ(Z}4xT9{?e-~8t|^P1hHk~dM?YtujkUiXjX=IM zs(IOBP_=yfQ7sjFi;EEx_gyPOl7k{RxIM<9J-lkktU7wzQ}mo_s$k=~PH{E`{L#aj z2%g3cqY+3Bnq+jbt6#i8BR^{iLc+goDu4Tzyw;j6rci(rXP~5KBHmY?@YFT6A8L|@ z4B&ZH(e~EP$n)qb?aO@BWU8Cf?TcfuXw_#S(94F%W%m7^!|jgEp*F>v;VfzdrGT@v zRSBD(e9ezS|MEp>6*Bf?SYG!&d>(aV$LL20OTVJxJ_hdW-e85fihCknf4ckI>PSRHT zVr;KV*##cTidAHKYD#wJly4BgGJbqFta%)=lG&dYQpgm9|GG-EX|&cRd2^|Lk)>w+ z!SI6%@2}`#JbR@Sk9l#It>X?kfMShUU-d2PZa&|#VRO1#PrHkIieIYk!?sF2 z%1?6d*`KG+A{x*0r?z@xC(W~i=gogGDkRFk!O(DDXY#Eb66WuftAKnM_sF+{CsE6m znE&l!f~k}LO0u{ic%PM(Ly$(DbkSeOUAr;+>#cYC`$W70=1gPW?<{9 literal 9761 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 BH~Rnp literal 9750 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 R{}W5}n&yFU+_>U^{{_SZxxfGb diff --git a/WH_chargeAsymmetry/UL/data/fakerate/2016_noHIPM/cut_Tight80x_tthmva_82/MuonFR_jet25.root b/WH_chargeAsymmetry/UL/data/fakerate/2016_noHIPM/cut_Tight80x_tthmva_82/MuonFR_jet25.root index 5f839d36183bbb155f1301ac328c5b4c83f68d38..4e7d205219433343d265107a8ef31a49b34bf194 100644 GIT binary patch literal 7186 zcmd6s2T)U6x5rNiO$bN}gkGczA@m@KAYF<`k#0f>MS2G*5<>?mDovCk2o^vDqzZ(N zNY^V}dM^S}r0ENMckX>}zHjb(^UZf>UM4#^v-g~J_SwJxTIZ~_z1-b>0AP;=0027x zV50*7)<=ZnP(lL{S|>5#2Lk|*2||kiKpOl02!DOr&A9K-%-EQQZ-mkR%LhaZoEl2H z1IyF}e9kNrt_A=kM(R#37y~$5OadV;`x`dOop5@Nc(?r!P^sM{DH32C_3=`H;oHUW~;`4gHR01!zKrr$|u zXZHaB%r^hq;(%V9t^wHeYz;I{*8t>rdOop{ri3~@VfG$ID2$Ia%FWjm<7MsR?)9(w z%yr03L4YY32msx`aakLzOcPS`@dGn)@^J)%_&xFh{o~Hgryz@(Yed{?6mc(F$p=kt^WR*A3ZIR4kH<|?tTuF8x%fdW>`NmTmzY5n1lpd zgOhzjt;H3ul^(skP>;dem8?%&{OCGD_@!L?#jUJzAABxOw_O7h8>oG^c1>)bcQ9TGJ4g+-i($9?fOMctVoZ^Vz7tO&Ye5fAfPHiiqUhPk`s!zS=b z6XLz3AI%Z<-5*SL$bkOA}|=1 z29l0cowzqcd3DB6n{L+7;QO|>I&LV z;sGKSY6!%FxjHN#(acXu`X#nCw%dj@r<4Lr2?ozzDa}vaomsW4JQjZ}gF3&9g8*-_ z66O%4k8DO^yfnywtBzbB&M|$$Ma!itIcW>Jl09c<#Y4!L1ShGwG}1|um3Y`;F!Q&_ z_YZPfl6_u3e0hRXv&|e0E1QFj8R6kKIG=)SMxHkO+Ufo zE^LqmCTdb-et-CRop?|j-ciaarw;}rW;VqplM{Iegay*viz)SnNhN)zx2vs?KvehA zp*_HdldksEI16JkT&5ivfhiHGY&*NhN$)r83X%~~U1E-(YFETH?J_0RFA(9JE5Nwb zE};674Gdrh-?~NMHgLwx@r;|vDL3LX|2*?A)<3zanP}U(dwKooXMZ(DVCV?~9Dir1 zXMM_Ww2i>95aEGDAgU1vB5oMMQ?rhwjVZjfFqOBxE;2}9kqO$in6gm7$d@|DH2o0# zxTOi-%0MDP*=cW!wn3vq&)Io`%#_5BNJ(k>J<#akE<6cu1Z|}RqVy*3O*=+OAi@}C z3WLFZVfo$_F`*XA<`V}h4(`0*v;(549u3$4<_kGQyjXk_{Z+7*UUfQ$YIhUyHH)iG z@`CHbfIYHW>A+22u~{UVm~I)5?~iSpP9bKemH>a4#(Q7^vK)=vFy{8sUk%&)U@kH( zYJQSJ0&uUl$o$wGmHw+VEb|b^9_N((EE>`1fxvS|@CT!9Ag09Xd0OC*c05-no+4hA zCQKgGjib>Cf7+6R&ClZc6!>wDIBokuUWq~QqUFLBL62nnb^k1zy!AExov}c*J9OQE zLjs9bZ<=N6UTk-#o1cZZ`wIX$vi*ppe&)aK8$Dqw(`?DjMP=+GHZmouOi zr$9+F{%}P0e+K&B9P+P62~fR3fXnYtd(Rwm^wcpO&Y%YT4z;uPpP&}zFU&96FPvdb zBYE8R53J|^8mo-t{}-(5{|?sYW>vku*Y*Ns%T2P}4EI{Ap&wG}&W-rh!KKEh55rHS zx`9Pm`-hfh3wAZ|lK1oNY)sz{ogPN54)(}eo#ge__F6ho8)`tPfC5+7X2O$G_!KK~ z_!(BoQ>^43e_%cL2i8B22)H&tKsfO~;;7RZu7-93F4;3&g1_VP_yZS@sgg7sL`UZa zm#>lxE0`V({;tgxN7+dfJ0gn+3yTDUTW*rVxrE{o$yn?=p0_;Z=^(+PW_&Xq|Kq&K zOHBQbOKGBa;|qF*R8F|SN-jC^jNpC=GAP$MV(Kg!7EQ0_wjC}TYJUAux@%*~P93C( zmL`%ef7~{$y)ti-CK+kuO%duhyh|QQ%$n3>k(9(p;4%eCHzM+6Kc$fqkkj-+2qD+; z_@uZtZewEhdyMz`m+a7`zW`ZQGTcD~4n!>^H4Ub>#q%Iobj`u{uS=KI7b`hxCi#Y4 zo{U+R#q5}`g;vV$D8y=))vc6G?XQ{r^h+CgSZMj`Vrfum$BU_yWAD1YsC%C>4;sfp zR?8Wk1#heSN7pY7J>kp#U$4*M-iM%cw|qq<2^(Zh0`s{=iGER$HQauODreohJCh(L3Mqj}h#LU`41 z6ZY*@ek2mqewfgGSO3cfQXZWtMdef}6p#N<3hf_CLH!=l z|G9^toP7}R=y&C0;PEqf{Bb-Ms>y+#B7|K88clo^fu5o9p^OzHkGU?Y74J{Auh%Ok z+{^%4nMR{+Vu_Z)Wh1b37%Uw{WM-+vsNday1rbXT9^aJ`9w062a4HC-2pR*;XoDzO zLrED)N!#zDwM19jhH6|6Y^7WqI9AA*0UI!;0v47k_X5!3^4JXTS9(AXFCe4!Mqme1 z^+&0%$;*T>Q^WNeSRW-KD0#4|mk@{w8_xhfxIsLmNeD>}hWrBPUKM zmLopxD2`1injY-rPO$n!4F`SQO0Ktdwig@ooYfzR3fvn4HE z^2K3e?@9gW#zxn&yvbAA(jXt%Zw+%AjCBH)6PT#+vHri(5a}#OU4Oi^-?Vq{n4jLo za^q0X=2Xu~GK-kFPp+;9A=Z9ly0m3g-;)pB(%wpb^-IudC>F^qERNo#%B=d7IA$Jd z2{{WkOc~D;&vF(*u;E`MNJtM*I+f6ACIi@!80k29`#=nRyfD^;*KI8~dv`ijcV8Qq zKrR<2H)o6;;m_NLpdSSYu*gq{JinPwxU-o+ugLF>#;lL}&hXwJdyret`|f`5xObo25b64_q*$XI9cGCan?E}Q zpVtVMc0Yzb*>%b8KeQcnqq(0GbPOuF{QUdUjpvQ^`|reTVk`>jv(3R$0l9hJfyAf%UKsB^TqR}_AGt4L8RSY6w*rN0e1MyHeu&Aba$f{b_4Nh~H zgyZtlTee5zHmW-}%j=nk$w-V(bVu=u zwVnE|K57pqOiPtpdA_r?agxS<@OpSgkb%gH&AmZpNlS&raN3iNRfoIS+z5*wz*>H0 z&l>U3bKHGuf5@}6my|;f`ZqN%!D*q|3JVENjko+ve22D5u%T(z<_wENjmJ)vas%5u zee*bVg@f!5bN&Tf>A{ezE8lr8HOBQSY<(+{-Gcg5f(P&M-atja6Kzk=B4i(^~l&y$Ihd zESpsKjU=KQ(mx81!TUI33S+{{yduiq#p zwca!MD1uL#{PXkD=<5M*Z@Dtk{oo2VSBjEv|J53O>HctfMm}isf#7!2Bl3F*F$3f4 zO^#bMJTL$8{2q7dxN^I+cc z+bS3ONo-p_E?QprQsb1|_n5m4h|v`gRt*x*vZuK`9L>~UVn33^py>*|JS>4q1Nj$z z`c|7(nZlp9^kmj-NAKHm`41(P#`2}U!7LXJ@#H<@wv@HdZT(9k>dWPUI!nczJ53Lw zf#9$2q>MeCtzxI2ahCSD(%Zt#eT!ii<}~6DU)sK(GsC&N&WEvfN zu`nDH^7>>M55wRSG@y!9t$h|~gE3@t0db)U2eT?htxs)mlkwZ69O^AqX#>iY|N!X347Mdo8JC%dTy z>+P?EX^YahKJD$wom52mx*@qMH#YkZJ|`5olC>x1#s?;@M)@ct1kwj=wx2i15DdTiP$fj>Y=>Vi(0Gd%fM)h4lwl3 zSN0~2nm)THH5)XLbU)7R2-`ry6#&c-p`Z`o6k4`sjMS~XJ)?e(YWs&?w(tT|S7B~q zBV*H5xRr}oxA2!8<(pfgGnR%(Xzp@szYnjr;g#lRUGKb8t7t?Ms=esjl=5!jv~0}Y zUH?*Gj-=7B7N^wsV%m9FC?IZj6p$HPB-U;#v!OX$tyW|Lz4)=Yi|}pfDN@xJ(sprp zwIwG-H9lACrWFFN4to}F#4b^3@>qAt+Ry?KSaOli`b+XWKkZ7Bjz?AmKgt11MHW@4dW^Y}I?>rmlJ6(Q5K< z5`+3~vsRicNu>?p!?83$({7pEnrpA)H~IVwWg-nj4YZLGFtVq^4vMkO^waMYi~jtY--#B97SaWytwIOR>*#QPK40(Q zvlj_PlijkXR(UP+^|hQ1BD&e~j-5=eM(zonQ+2yjk!A3tZQpkaSk@4R+o-sd4ym2| zBm6q;K(_vnXxkufgLJeo)o38)J{1~H-W}1$vhWOVd8~?fbCEkTA6pP0r}y%%8ej`6tH&z;!brlW-NSb8A$q1lghh}d*Ti+F7- zXErr*EiBC8=_5t&1S&BrE@ov9Y&3wp-m=4n~N4i7|dj>_EiS6RN=$R~M6 zC51v(-_0jK;LIpdG_WpSR&vAXt#1QYqMsHYM?V=W6D{z>*j(4H(AzSfS4zMH)>0*R#2UUHQvc1W z(Yn@GJGJw{ss?RgjXcj=cFm4B?%5-O$ni(7qYaO9WN>qtobj7^%a`6{Jn{VO>a-T$ zT4gc(O)K#{933TP$)ph-j(JB-t8}%^dlQK~JBe;ls zOE2E#Vs?!ZzaB|YG?X|LFI@IgUK+AVFQ8{@7r*ko8fYvo*rs+0I7-!-uPM3-8C6L9 z>@MHX`T@1o%l#Q$flIVlrYfJXa@(Ai)=ah=c$t%L zj7h6y%$sM-a=W%eu`l6p>hVy^o6nK(m&TPZ8x1QKofE1kIU3!JnRr9231yCRVPP$C zjx7-t3+C@)x4gyAt7KfPTh%VgJqJs;Um3|)*J?Znd4?qUJlEbMS*Tu+vj8Cx+A>pc zK2gwIu|vHO=EfK*>6%J*zfFGRp3y^Nnh6i$dsWu_!QR;W=sNAo0>o&Bhl{h|5Hwch zF_z|<5qyzjuk&E5b)&yo@m2(jDnTjW94!^XOHYBumk*$>F$xA*+>$gXgx|RZIbl>@ zU`u8*zMsHTp>=#Nz(rGR3eZ)MQ|zX=@KKehc_9ye(L?w>mtRi77Ch^l@C0VkpGu49 zqfE9g(c(Q!Z^ds#%zLk%X%zN!j*2aHhU83_x)nd^PrMxH6Fjr@@cPOuy#U9R&>5J! z>{BG*hf|+yu`DZTXDT~hx?dhU&6SOleD1VDhjM+-bu=h>Aim=ZHISJYpUb(jYLeUx z+2_@lZtVIsj0NxWlD!uy@M1?dQl6K#lNF5bax1;SM^Uy6f0~h=+cxGO3a|_xhlDo_ zLzc38GO;h1Lh)++`yTUSuGu6WZ~{f@ z@&0O?HXQ=~r2`gpRo?c3yNdG__n@04UT=Tp-F0B4&mkJl52UhwXfMmRjpr|j`79zX zw9Zg_PkZ!(JscY7lXn?@KQY0-l`lopj#%i!T(X%<;8L2T5qOV{jq@V48tGi1wx?EI z?%M5-`g=tDy%tPEz8^>TNUR>RwUS;`lK{UiRvDqR&8Gd@wQ?!fTOeQu6}c@>Psn2> zPV-n$!&wq?w);WYEjUX;{;u5*f^|~D75@`E4g@p*se(Ac)ZbB~C7AuYDuw?>wdy}m hwjj_8Jyi@q@uy))mrLTb!L=P&&T_%ClV4=Vrw literal 9743 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 HCjtH!1aq|{ diff --git a/WH_chargeAsymmetry/UL/data/fakerate/2016_noHIPM/cut_Tight80x_tthmva_82/MuonFR_jet30.root b/WH_chargeAsymmetry/UL/data/fakerate/2016_noHIPM/cut_Tight80x_tthmva_82/MuonFR_jet30.root index 2f9b6ab38d8315110dfcea36b7ae9a0649e7a005..fc342c67a5d8d725173911b16fa9ee55133fa8ea 100644 GIT binary patch literal 7180 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 Z|5VJ$c^olp{o52n42?M;elp3xzX1-M4(b2^ literal 9725 zcmb`Nbx<8$x8@J-?(PztgIjQS_uwuEcMA~Q-6d%7;O})x2NL+&|{d zy|=4&bys!o-D~%L>Q}3uy_`TG7XaXF0{{S+0svGm?=9*5+UmW5y|*05e_h}_0{{p& z05HbrhpHwCw3EzQ2>s^v&a?Ns|EXgM@Mj=zhvu9~fWhC9-`@rRK&eSs*_sKM8`+pS z8M&A-16f!(4eUWu(n|8oCax|9YE~AOF5E001}-j^c5X%n+(2e|SCGAgih;G63mXfQ z)1T=7o819Wf1>&u833%{J*b@b_BT2Jfa2o+HD$=4KQn{D_}icE&&&A`mX2%sYes{{$afB|@bRVI1LCA#Adk$AynBl8e$!2{_e3xtfqU{9`0gqlXp zIm2ec33ZY_L*y?bhHg0sQ|UIF5}@xJ0=s|03P*e`q#Z8WP>Ji|2jI=)HubY~7yT5G zlzR?sA9?bPS-bM=I(vG(q^Oa`u!OYC7NQZN2Xh6_gR#zo1_(hZ&EHSIC4v;cJY01I z07@agIBBg?0}%57N|LYu4BAWl!LiT)ML=OUC4iTXG*6N^8u3*J*$50t$j+)|#I18> zVB4DbyOXDKB00>ki4p`SpcG>ch#F=n4kl#MU|zZ3QLRMtz^z@(C0 z?G%!9k7KZ4)lzRliB&-p2q%vRCW>ctCKH?p@7wZK?7NVegt9gUIO-#Q&=iQh`E-ow zO`k`@%J>BBh~kh%nroWa7}k&CG2g8Ys0`S3Eg|MZvk~rPIL=!5&8{L_*~s{GcyLlr zG1e!eFS%Jg#>KERt`&Y}(|jykH>VOk9`4wF&}x-va2ecOw6iEHD$JUZ9GQ5^;UCJB zs7=Df@$mJ|L>46op_tYhR=2EnZg73VA{1sLVHy<#Y^=zF6zC`SrYrO=$={iwL4<}Ft6 z?>_Ibqo`eH698Qm3oP#r>F2KNDk%1ca%(r6tUn=3`y;o0bjtEB%?yX3ixOL$&Sm{Y zSk9fGiMw*cUtyEdGD?s#D0rjD(0x+e%W?`q2P$i#y)I6nvBv(rbjU>1LnJT~LOc{5 z-?mI+gQJPzOFJ&SLT`_&fEJRb!DCXIbUMXF(lnY`f~apk?;ldp5`vhCNme$6jKwav z5aQLBNhfI$Q$VrjC+j`qy`S8HL3y)_JN(`Hk?)L00uCD7`3rlLSLxP~$CTX2G7A+z zM@W-Uyj)iUN>SO~z*q&R54Fr2tua&1`;@?!9Dj?YDYkx8ks|qq0N?nwq#9i%HfPXA zTur-v0edXEjXq*e;-c85^RrDSm`3EwE4$1SApwx^bqReZ#4f{b1jZ1J#3HA1`=|JV z|9o&}K_z!1fQ8oZ}RU&+lG#N z`v|s`a2f6OhA~7_z9gS!qkCT8x`@qVj&7OYvcB)nuk@s==(d}uyL8OfKl%s8+Dlt7V6&Gu?7m`&FLhngX^aiFQShWKHfK&ZN5Yb-*vHw93RL?&M!uSV4 z2KKIYe<%xb`U9hVFaXgX7@Z__$?7U&4t1UF3=A?zWCb%pr9vkm6Vc&2gLBXtM+-`c zsU!q^aFhz}H_Z6vFO<*A4KMP9l5|K48{r>-jI1!t1jPue51(DQ;@-vO=?Tk}9x?Wm z<2})md*^#coU=YcO8EJTNcgjJSR7!|um?N@MTa(UN~eOFqf?x73159IP_RMIrNt0 zrvkw06TuXc3eh7q)u9hq)vyn4Nd2XJ2+5KEd)THbQLjn6b=?!b#yj@n4h3HmG4>+Q zD8hvNI*s;KRPti&SC`Hgq#S`C_2L1S0??T#_}AGL-jnb)a`grqvEcKyg2&W5M+KQM6kZgNUR-0KE-_K0scm0xu$zwhp@t}}1GBjKcvicP6ciC!?GMvt(H>c^kDl{P1ntq;< zL+L4L0BQkEm9TBk_($Fac1B^3Xq)>@W#P>4dIz`Hleua`?Muc97R?QNeKO9xNCuhg z=(yrJT_0^dOqQev-&oUNcwC9UMDxGsBasZ9z7e+hE9ur$y^BQduSiJ#iiGozNMLsV z5ee46MPh1Z53;ke|KBn}0tb-%OC|zRe`NCJ=^1W?t!pjpfQH$FI55p5zMK^R`5gEa zmb}+SOc*9{52p}caI-M4RQ95r)~zBEti&xYrl>8(bvi;swu>-=@h;~oK@wFD7(Vur z?R?ttcGq=B#FSr(NZrF97;D%m84v*Pu?_}cM)mk<(GW$wsZl?Bco0nk{kZi#z8@79 zwwr}_Rt5Z-1#qSb9>}7`$X^MGN@a*541U@swjn#1@X{w!h)%uU@+&casR^dXVnBb^ zwd*4j9T-+$5NZHG-C9@)0;4=q+nveWp-C(EJ*)}l-leu(n}>SJOtrTgeyC)(VU$S)vL*f)N8f!Wb4~!| z9OF-z=>8znox!tY9Jxt%GN&F`IW%RuW*ssB+D(1G$C<8SvVhU~z2VBXNnzs9`H#ras_{1Is?J=I$({F8`_al+7p9yv_L(fSL;rvDSh zo-9e4Dsx)n5BDR?Urb)Vef+Ah9Vpj{eJ&Zybmwls`m79i?cVg&8jv3^1hz>8EF<_8 zG;>exb${7x>lpkzZ#=O#Uw(l}tQ%?v03cKTY6<7BmVke>1P}a2OKAVrlDMX<3CQU$ zZge35IRDChY*?}^Fo!0qWLJQJgSh0TsK>||Y7!=kSHnwoVY2C8wKzqRj+@m+$V+tz zfK;3#De?Pi;>^;VS{nG@B)-B)bCk~6>7Wn%WX~5fF_yAe)aRpSd)OR%65Qk8dtQBO zKVu8+#->oB$@>V25BZBgI1-Qs21N@1SOau)w>&znq{I0YNMnhdU||EWmA)C(VuRH3ILeI_#9X=&b^nfx=+)0m0 zM?BGi=8!kDJOA3m%3hfKVDG^VpG6!-JrThoyXCdGe+fnfGEV_fJT9X|yMC~u z-kD5u-f`!3PAyOZxrcnx=KX4??4P3!1G8wsR6_!#L*DdA!uY$9UoQIfV?``m(4vWg zRfaa4%&HpB({(Q_1S8%aFRyzP>z<|hpuzx*BZ2#VYwn1yC4t^?$B`IRLPSDODA*lq znZt22_b~=0_Z6>6lqyRTFInEYbaBF6Z|y!SDEJF!n_TIe`7Alr*SpO#Z=0W{)4LBP zWW3F5D_Twzey~9@!Nsp!DRGJ<^_DFB0S|ACxz?J_gVQ8#m%gXsbRL<-klg_G?IS5q zGxc+|fg7q2pF74e^Mn50!{@PGgL>&GOD_cz#ROY|Z`UB}u)Sq$JvRPA+W4H|Es)Is zG`^yt`<+0NX$*_+O=Qidar%1qdm`JilLQ6J$Gn9^V5;rlKo!>9eYMV0&2n3j6=$QI z5j_1Gck7dN5dtUF_aQ5caoWZ7?$IvxsQJ#qc}c8O@q?tFz(*PC#s?Camzo-Ms$F&O zRd!61ftJj^O&EsbR=u{Q1ttT3fY!yL5UzeDc9)Tjv-!Sp#aZi##*A@LLcS@k;kc2r zpX;Ug6O^qS?YZ-UW(?!J2sERFKn;xp=c%LW&m_|n6&hLQe$`wcn; z_K|Dz^C28I=WS#O)JJJrB2Mq6rl5%NB@I^AK%e&IjV7ma2clIHbMA~8)taH}*lN26 z5vsG}-jOhA&y><%&o3tMVHx$d?-l>%Emr7)Rsl@+>O31_iP>J9_Q0f0n zhvXpvWPkY7kYpn_qlr7XmZA~Ak4QhOaMWMwp&j4`8=>@AU&I)gXsnK?Hd>^IlczU2 zz%&0XfSWJWWYZ2|!fweiAp*EK#RZH*(ETe_pcKb_~^)P;V<7)mOZ#jNF2z(fl4{B=u-rY-r(j$S)Qm8@Mc1F$I@mLP;-}LCd*T z4xxeY`|>=<-{N&itgqZiu)nx({t8HOt~_$h8ZYHR_i)7_RwFGFSEh-F#B@6} zm((p|-%8Bp{Zg2gAlQWIw8gIv#YNo2h=nSklPZVKaN6J=QWO( zolNcs|JEdYl1PMBCbFmqx(k-Nd^PibXxC@T2{7lZ@OK~tzeL$_1N(OON>uu3F0k@> zW7(V-PeNAP~rG~r!Ut1cYkP3C1IAG)U_YQ35 zuSteKG9IF9V zdA!2znw?z9i~Yzr3T-p=!~E?W9$D9e-?mV{5e{fPbHp1Qr7WPaaonWVYx@HXli!@J zF#1~p-^>gGD@BGu$MtI5_AO&=N`ug7(vuhw3we!uw4qlbTEb60%|02zYGSl!dO>+# z#{~jEtCOeI*X|J0Os(hrdM;y5-w*tK4P;*{D(F;9gSYp-J5h($0B>FPZnUu(G?82_ zN-zTDYa8p8N;>w6-@vpX;%?rF^z|>1DE<=Z;~yen==?(@qW?&w|10-?&zUIxl{0xN zCAq%)MYrG|#OvjRAfm(=q4eYukveS}A!K?3V5SdiYu=?#5ZW6!tn!%sMGUt-6{vU=-VHpWxYDi(l>?-`Ud-ltPdK18RBb0_mJ5 z5D?FC5KoMTmN?vP+O$6gYZWH7PWEWLED_%?D27jnOOBixf*yt#)^n~A8x$srNNz3| zh8Uh-#WV1Yj1r*Cffs0bO3Ct_Vj%vrk#!i>_ps|vFOCem&J7FncUyo=H)(R(a=`6x zIL09_ zWrirTe{F5ibV47EB0S26d5tT1(mP~04YCz30M;F1Q=-{WxnjWwPe`>2rWGujkedpa z;731ifq!A-TOOi<#`=ES(c+^@D8EyDE*~t#@y3z26cCBK6F!Bauqf1eb{*$G_9-kD zllgG6K|CziDs3o#&E++rJ+03_w1k52u~(r9nB*p<9X=EkH>HQwb}P<_Y+t>q<~#)r zw0Mn;tpjz>OKobs?IGKaP#5nzarrC@$f`9x*0)=!qT*rbI&&OoxS{9d>l<8?2!8ca zwvQ_Lt`G4R-E!5E1-yzWlDV;CxAM~w-9CqIbko}*v#&qN+`rdR^GiwwYB}OS=?h2E zy_iWc9r4_4oO=y>w;+kL%^TiX?k$M!VS79@3g&LfonN_TC!-!#aeQePn%uiwg$lDM ztbDLuCQ_@y43lR770^DcB+KnU7c#izCaeDFdmTUUcg3+F4b$YR&c9`CT!5kU8TuZu zEn^bxxM54g+@!?e&?ZE3F<$q?1XWn@)oP=We3=yUR-!>qV47^Bm&q16F2g8qdQ)T)V-?^^557tkyVFjC(J#P${o1xS@6FKGr z$15Fk+i%*wq;Tm!3fjNc(EYXa-`#8K)4zlg`a`HcMnAw5N=?qn*#%M6#mUU*-87Q6 zHwU4Mfn1GkJxOh?>}||U-%rji?>15e0^pSTJ#U)T(YGbk#QJ!2Q-$H}xY;kgR8N)q zO06)xV4o)=GPdAY0lCurYk5v#n%&*~^moU_ag=~FSL2LG#pO?#?bcI1gc1N=OubQnJF!K?IebJa-cw=5-^dt&Hd??R;#vt7lnfS>CUwyyy3Vc>o?j zz(*gj0Da``)i&R!+mp*cWGGPBc_1@{1L>W>!T}&kWWt9u7lJm0`7*>|qgwF!*#eAo zPw3S3@z`hQQ4RMJ>3PL<*n;dbYzx57#xlc?et)e#%m-i=>4G@-0EY%Z>^zLRD$i2P z@T;ib_CEWhLtR4xileV}s}20uONN?G0gojm*b{ho!WIEIE~U@-A_kv7!mLvT`mrPF z$Cd7d37d>!b!w=DqXLQn>z(XMM>hcUZ_gPJ4t5w$7K8!fy`G;PwD3!4$7H;}ntowUMHNe7tDiA6x-2YRf|m3voMrW zK!H*SP@~$pUp`yh%;KD@UL<{|efSX!@KWhgbS5h=sKQ~;EcdVkW@#&8@EZ&@_=#?V zSYZo$yMB7AGh$kfZli@^T91pO5j&Xa(M>U6AMFeexB(-!`x%lRrKZj&NAiXT%j*6l zmH8QQN1_oi+o3#JVaXIZUoJ3cxd??5H(_|iWsO5JzBNqvL{d%6gOI47dN=Q^dnZ^iQY0?8%e&#R3A2pK~# zzOh~R{92~IE?7gVk=a`f|LFp^ekcLUR zMGODHlr<#2QB|GE4+hNvBx0^tmJ}!q zUn@?uOc>j-GE*Dgbq)eI{# z8R-QmC77#kTE(_-QnK!}8FzTo^8u>FWpO^GXD~}p)XHF2N){6aL=3cu>7*BCemD=Q z(7+W7F~)VpxD(G;ZKsuDUdLrMoLGP`A12l<(j=B;)-@MVSOe+bk{#7P=|mefHb4|r zr$fntrUNO$i7o*Tmk)3r=T>{EfSSI~2{zdD`d0eKq*c3smD+Dc(UcU!jp((>1Cyw*Ca0nY;U~#7PV%uPg}o~qppzmyxZv3d@)*g zty~$u>+GgJHLX^RWcrFYPmdxEN2+glPEA$1Xes--co^>vvr70Ih0<8W)D$r1q;-*r z96;F&J7}g)frSByK3k3c>|;vgFLoYFsuyn=o>ynD9X^k4AukKD7FX5tg$BH)l`ign zRm#!PjE7MA9lViw7ots`RuoIHi{7L6sKipOO(7wcu^2O17|l&v;>pcyMtN-#N;5b# zGz8wtBeGoEE2>d>r6kD!n@(d5rc?98Yt+|Ujs6UL_?gcBtPos+`C2MmLijorAdBFa z+&%6#Qn*QUnN=-H^))_H7b@E`aAV@N(GmNqbl>=jk}x1c+$%Xwj&Rr|N?bc8Bf4SA zDX(P+I|HeLXg;`XmIHkWLd`Tk1x^OFfMzBN8Mkyq6tBXvVMG+ojzB|u!38fT+y&ds z*8qC1l)G^uGbRVhS$e3vaOrKRb)iKHBrohm=dch*M<=P_BDF>8Y zJQnj$d>TH1^zQ^xI|Nc!ulZzrwY-$f&_*UHny#oZn^bqdb`S6)O<#wjQl}t*9P(uPHFU)hsl>a;UV4AjN6KDjc`#y@C<^w z2Dl!Z9pBj#bmpQYRf~sZ`G>0+P|RA)l%b3+7Aw{z?T>6tE-8{;aU=BxkZlRp^{E_$ zIj)(FO9gAC`A$6c{|=%YPah-%*t_4L!_^7}nqJ<;W!cMo5UGffz0D9W=4W!Fi~XKG zs4W))iBD0??Gc?PZ;+c#iLBKel&T7B?+vc*L((Ao1~6<-tc9Sah}w87YUrU`k~^`i z@rdkSAcY2wcxWlm`wKh!G9m71UYA5sq{&tI;IoxUmDAm&!S<1g;T&iwL?=xuW_|Rv z*Lm1GXS<>wo@txIJ&U6?pi<6J^d6`Y<4I^e*@mCsvqYRI9J1Lb8JDUlK8rXPLrrz( zhVC(XhbqBC#(cGHP3S$-Z9~s`c{OmQ zDqUpqIry2Z2WM}BDdV^K3KPp#rL){A*65pKn~4X&+7V~?71~rr+^z(}M~$Tr4EEXn2d^dg** zXNC$`3HDtpVI#?sPxIT0XD5MhiqQTqr)^6QdGpQA` zkbF823`+YKp_ST>maC;;9{32%-Rp9_HIrXCPCP$~FhOMr>}P5S>9;Kwb=Kue$)qlrP n{_lA|@88hs&k_OP|Gh+itFqqz%l;>p=>0d3>cyQS3GlxFtc0@T diff --git a/WH_chargeAsymmetry/UL/data/fakerate/2016_noHIPM/cut_Tight80x_tthmva_82/MuonFR_jet35.root b/WH_chargeAsymmetry/UL/data/fakerate/2016_noHIPM/cut_Tight80x_tthmva_82/MuonFR_jet35.root index 4b40800f6fd9c3cbf7419c2bed178a1466d1dbdb..5dd505d85a8d2a58fb4989b30b6d170482893bb3 100644 GIT binary patch literal 7186 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 Il}rKt11|0w761SM literal 9688 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 diff --git a/WH_chargeAsymmetry/UL/data/fakerate/2016_noHIPM/cut_Tight80x_tthmva_82/MuonFR_jet40.root b/WH_chargeAsymmetry/UL/data/fakerate/2016_noHIPM/cut_Tight80x_tthmva_82/MuonFR_jet40.root new file mode 100644 index 0000000000000000000000000000000000000000..544136923108338c66e09b1cca0019f2f3747440 GIT binary patch literal 7182 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 AtpET3 literal 0 HcmV?d00001 diff --git a/WH_chargeAsymmetry/UL/data/fakerate/2016_noHIPM/cut_Tight80x_tthmva_82/MuonFR_jet45.root b/WH_chargeAsymmetry/UL/data/fakerate/2016_noHIPM/cut_Tight80x_tthmva_82/MuonFR_jet45.root index 17c07ee7e0c6ae7c5351ecd6e36755165321a44f..9007185420b2e36e787075b8d7071df3583bce89 100644 GIT binary patch literal 7155 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 literal 9656 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 Y{Vk|^IhXxUY|+axkG9c`Hy-f600+c^?EnA( diff --git a/WH_chargeAsymmetry/UL/data/fakerate/2016_noHIPM/cut_Tight80x_tthmva_82/MuonPR.root b/WH_chargeAsymmetry/UL/data/fakerate/2016_noHIPM/cut_Tight80x_tthmva_82/MuonPR.root index 08a21357daf542f0a8028c045352f38915426711..bcedcd752edef0f211aff258b74c51b22e5f1998 100644 GIT binary patch literal 5163 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 literal 4808 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 E0S-qt*#H0l literal 9716 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 literal 9716 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 diff --git a/WH_chargeAsymmetry/UL/data/fakerate/2016_noHIPM/mvaFall17V2Iso_WP90_tthmva_UL_90/EleFR_jet25.root b/WH_chargeAsymmetry/UL/data/fakerate/2016_noHIPM/mvaFall17V2Iso_WP90_tthmva_UL_90/EleFR_jet25.root index 7e3aeb9ebcbc0a59c095d4f24db578e0c5246db2..c91d789649c93ea5275c669c9119a7313202c421 100644 GIT binary patch literal 7201 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 DL>4e( literal 9709 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 diff --git a/WH_chargeAsymmetry/UL/data/fakerate/2016_noHIPM/mvaFall17V2Iso_WP90_tthmva_UL_90/EleFR_jet30.root b/WH_chargeAsymmetry/UL/data/fakerate/2016_noHIPM/mvaFall17V2Iso_WP90_tthmva_UL_90/EleFR_jet30.root index bcae7b39359d1fafc8aa24416f35789f66b8af69..0cec45531c8477e4b1d2f96961c7034bcd911569 100644 GIT binary patch literal 7193 zcmd6s2T)T@yT?xmO$ePpK)Q4xgq{G>tAHTA6FMkOI-*FVN=K=pbWstICRHGGq=SWC zr8nt_px(gu&imdw-<|K?x%0g<_e?f9vpeV6?Ee1yoPD14^6>BhfFni#0PF#Pi2(pE zC*$tJaRr1cU+{5X4gdi8f-B(w$Va&r>#s|-Q^g9+jDFPg4cGd=xj@vwxuLYXu*_#b z(1m4OZva4Gpz7l4UpL*Yqgu7jjD~StFWYz zh=#X^wXrS=VeRANjH|Xb)Urk)gj8G|RQ0THIrxYo;9ln=`x{LI1m~l<7!iPn!VLyD zMdx#PeleK;Pg4cTJD(A-$;I<(=Q9HG!#!w^Z=f!sN`o7Or-8MDkBzmvubYFHjgN=d ze^+OwMXUz`Ou#?@C{FL1CRl;;eqFDI))ndpt?a_#CIwV-B36o6BR!2d^`uq~eqqI` zdd1u2W#ykaCMKiD%qI)Wh6Ypx@OQVSXNc5VQN4ZdGis!zPuUUX-K4QWCRI+n#JVc+ zZS?uNx3+5|1#6^NYfrlx-J3;`t2#Y*EI|?FZ@y3uVu3!2JPs;vaf<6bcrrQa=F$G3 zVjHJgfBZtXMau+)Cmpo4fm@uhTG2`Rn^M`7ol-wh=i;_m4##6Xz89_wWw5#k`)5 ztFIFt(tzI$zB-~sH}&?=@}~sXyPjqYy>!lkq(^qB8Bo8QQ^N>XOe&y+8M$8`kM1%&*d9}uh~;Fr^!c9bb(?b!bn`U^OL8E)ZtlwA9Ctk_iSAfWa`7kaVQ- z^uq;G#RYv$>aY5G`+MG^`_!6yF=a7$hh7MTunOh?Jnjn7fIXTnbugA*7#R2u*mkIrC_cK3|4~EMH*1~5StMz=4W79eu1Z4nIOyb zU|^{?7+>^wn$^B?SP*qpPQ=)kdiiSR@s z5VZ&d9y<(iN4^~Wr#GWFO*U%?0H)b zrXY*$qeh)wQDxzx=*nEm(*aAKhtHT#5>TWB!TxuDzwNGbnPyH0k=ON-BUOv4rF>_q z@7$#hY%$e!PWnio4du!I$S`0;@)P0PJ_HET-X_NJ{Bpt5^@1nPp8^13`ky?R|C#51 zT8IC-701*I1i1debl_q=PMohtrwgV5e=zN?|0kv|3znBw9G5SsrV%{t_y<*re@#_F z^#2Rht^W(v4(E|zW5Uld@CR39ELcp>yi6$@XFGzLlS$j!jM8iyPZ3}X`z6N)nLQ8B zrK3Jyhst=*z=N&&-l{$=`rnoPa7meQoAsz%P@srwDFEQ{oKwXQyPzt1PLSMpHqU_(*eKWtt)-&JxXXi+_Z}Wv3 z+dZ+ao=#DBVgFKH>BpMMS<78mTIOUwLzC@wFaFvr`_jaNg|1D9@lPD?<1>}U619Z} zUiA}JccUTuDLHbh%Qxe`VK0_{A3ht9popMQL{P=wAbgzHQvErs&Cg?&M7rsL)7FSM z!KT!>$!4{|=)|u9DK)`!@6s7Zr}Z1jYZ2CRBUO*RA1xiaOwI!IdgQH>g^XH zjejAN*CvU$T_v8vg-nt!WTJE~6OxoaWkU6*OsxNK=KoxSlg%LrNd7}M8CdKB7JC+p zfvU5h=WreufkxviBG3zzKBUn?#E*0YHDdkAj&BSI@wd`~*5}b^+i1KsaK$(*9R^Fc z#xu2$r_=3g!hrC_aBu8t5l@hYO&A#jQVe|r&FFy0+dv8F2njnMpfv0<$|}k* zRUvTbPomm!B&<(}3F4`qdxOmc3`=bL5zdp_+HZI%j&65Q2n0p7NZV4PY&b}evIx-L4rfldk z&WQ8Sb|`N!8LaWY@A7xL^h6XSi1`1SEehpz{z0uqQCka`E$UuM8zAl3Rg z1kXFAIVh!mkJ1tnnY)fk=M$}}J%p~e9ull~`aU30Rc_>py=9nZbKt}OW52SJYdVeY z3>p6P>TKQb6}1YoY5gbOFNZ@=ddXnI=kYbzp)`%QLlsOglGL&)V_+Vp?O&8ikE*sK zP!@Z1mvz1VMH<5;AawOsC<)JX|g7G-U(0%PN|bSxujfW5T_84mG;* zWqj?Fmd`hEuyUK_U{lqy2J)$K$aJT;XgeTD!QggcbyR~2W9eJsZH$2XaF$n|r}6kB zpQx^qbsKxtLtX2mP<|@1+-i#M_U2hi#}S>dj37OMS35@|45Ah?D`8YWw>O*~U~Qa) z^}TMhkl0rLNOCxrIPs?!Wl=f-tHo=*sYETtR1o{^$*V218`dRf1S1d*eJsmhXg}($X}$5=l#-BnfzhHCtw;nj z!xEUY@|Mz-Ap*O$-W7{0U+P?v2A{Hb0FShJ_?3f%vm7a}jYZK9l{$_m(yF^buZ@XV zr-A%me*9LSR-M9~zxwQ}>A{U}Yn9*Sm6|J82S>78S%j003_DUbgZFf$1XR~51GQF5 zSPxnrM*;U{-iaCBxosIepT}C(??z(>H}frlU0GC%{qfrF{h~pB2h1*mb+Ri2NqWjC ze0*Ho_LHH@ckQcO!u^Cu@u**)qn1vN9k)d-VTl4AKd%Ku_+hthKK@lD&F+XXxZpe4!grXF_glV8TYEk4$_ZO~6hk zgX3b!R zgQnmx?a)&7K;nc+-b1mkLBol0G47|BCIYqqU;)n>`WQ~4VP{H5-p<)S;peP!{KLx* zUTEUR&yH_kXtDvfbQS93|8k&Uv@5t^p^t>-u0;>|aBAwywdVD_^G>ay6pXL+qUn&& zw+hv;HGQY^rO*sXsb(Wgs`kaC`^QTjVbjxq%;;jFPCJQh^|4x&Vq@sl-qs%6r>(zO zS(i`K)v0I~B}O*2SnsZJA6y%f7i&ttqf4iKv(v0u^z)CBkd}vJ_Zrx_@64s9x6jiO zNoyOg^&zkAgzaAK3%p!!Gz|UXIp3LA^244QY(WLMvO6T8FZr!NtqAFQW|T+P9z5WuVJ>#%HJ zuS4FDdD)3Ac~mI}DXpQEpDHX~y0fFU^YZ%J`%SiW?g7q%61>t@0qA=_=4>p3hbgqQ zSU*uTdioqiK+!~2j^s*jBxc^Av=C9P7I*C>2GnwYQoGc4x)fX7o3$I6!R&?i17RTM(i7 zt~TNNcGhfi^{LWM3i0)K#;^iBLQ)X#d{7#PrLY)=Z8xgGPI=hjX2JP1h5ZxsI2-o#`S&=?Q9 zq&LOk`i6{eg_&NmtM-2=xC#UUf+ z0JkRsX%G>zSC`2qP7SB7jd)tp&IvhSf?Nf9mL5ggniNwD7+VPlj%xFCBNV+vlEfA3 zcpFEvENxjRgg9ungz&jNUtq}EIM=zw3Z2+$%y&*vtU-KxBy2ylakl72oGJ>A$3=a0 zsC(z_)Uu4M5i2P10hzKV*@s{Wa*)r*H|vK(BxAy-B>b0qd^Hm|r@J7FbSX>q@{BXf z_8fIT8)mbLCaa-k4YD~|zJ8OJtgfs_fSSA*XZnQ|1`I@G0-lRq(ePT1H@pj-T7A*S zRJ!_}p?KXP1Iq0Q@l~=7`pRq*d+PAoMu-txLrdiTIHJaIUfx}lrJXNEGV)2vM+Knd z`@Le~-5as4SF`Knxo;2zMM3d{vHTUUrNtpTG(0!#>|@vWYk}sH!aZ`AfYVg1rMhAx z$b?M7ClBeS_7B#(Ek2Xt^d@pS;Jedr%vx^B-T8*(c{Wf{GQJh-lm-s1KXUa@*Ba4J zOfOiA3bz!m5BOrvVQ-uC@q|?B3P0bkToivD5wpq3Z;w3cLf0svOl2;9g^ooHjfHG? z@ER-EB)vx4q<#a?}v>|p$lxu>ITZ$CxAUmI4xZq~0_xgB3a%F^s^NY8oS2AAKs z6cW-FW+LMh{F!-i&Y?j=}!Ty+FjL%ZP!Bo9gOX|c0k^rdQH&N766 zZ`V}j_D>o0b$jbq{Ok_;^4cb%edS5X9vS_VCYkUcuA++84~~Z3r#e)x3lS3;p02lf zN1@S5Pcf9&4d5#*N8Km8?b}1GvR2`Y$~dKfb2OB2o1Q|oFCRcXlO(i~p{wGc``owN zkkba0g?2=?Q^)ZfRT^iP0$kOF<^XLOlx!c#m0o4M*5!QoRZsr+Y<@X~yYQ@U{L>Dz z{$v_>y%O2lcqTtpNV-zAB^2xBi}Y$Zxy#%u3KcR-gq?p=*q_%+ScAZ60!;K_r7P`4%clH zPFR6r)mVR(9osG*|FU6o>KboH-b2}?s)x{>Qm^vg`45~f)8ycd6$FymJaLrd+QV`e zKKdje%(q2b|4?({gCiUo=#zg99+wdB-_DhyZjaCRVKK?nHE=ae)Bt?M#Kd})T!nBk zQ1gyPL+<9SUfm-+?g4Z9QQzK)BLd4OOznhMRYbsVN|eS)?Xsz6de)_Ky?Fu-tRwcM zX>d_2>O2SmHC+TD7snpBgMo`6-gVs#(*>P?@EN@O#K}>TAbOxD^>V^ l$XERvau+yy7tt#~@|SQfPUUdX>)$OLT%gRv;4hvG{0GBm4zK_K literal 9706 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 diff --git a/WH_chargeAsymmetry/UL/data/fakerate/2016_noHIPM/mvaFall17V2Iso_WP90_tthmva_UL_90/EleFR_jet35.root b/WH_chargeAsymmetry/UL/data/fakerate/2016_noHIPM/mvaFall17V2Iso_WP90_tthmva_UL_90/EleFR_jet35.root index f996fc80cfd122b462adbb2d26b3f420ccbd2425..cba8257816ccfe3c454519dc07ed05308dc26c3c 100644 GIT binary patch literal 7193 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 literal 0 HcmV?d00001 diff --git a/WH_chargeAsymmetry/UL/data/fakerate/2016_noHIPM/mvaFall17V2Iso_WP90_tthmva_UL_90/EleFR_jet45.root b/WH_chargeAsymmetry/UL/data/fakerate/2016_noHIPM/mvaFall17V2Iso_WP90_tthmva_UL_90/EleFR_jet45.root index f06c36b03d28df3147b9ce7ebe0053965d4a4d13..24430d251aef76511e29bce0454ac4d71baa5b47 100644 GIT binary patch literal 7188 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 diff --git a/WH_chargeAsymmetry/UL/data/fakerate/2016_noHIPM/mvaFall17V2Iso_WP90_tthmva_UL_90/ElePR.root b/WH_chargeAsymmetry/UL/data/fakerate/2016_noHIPM/mvaFall17V2Iso_WP90_tthmva_UL_90/ElePR.root index 41a3acab14e55f6b0466782645600bb657413b29..a05ed4d5e999d9abd65da28c58ae41ca5c6d4e62 100644 GIT binary patch literal 5183 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 E08e|!@Bjb+ diff --git a/WH_chargeAsymmetry/UL/data/fakerate/2017/cut_Tight_HWWW_tthmva_82/MuonFR_jet10.root b/WH_chargeAsymmetry/UL/data/fakerate/2017/cut_Tight_HWWW_tthmva_82/MuonFR_jet10.root index 5a1838e63730519a0256ae47620e9a896ac70a50..031670cc0494e1e8fa3b24e88ebd7d92639b0a3e 100644 GIT binary patch literal 7197 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 diff --git a/WH_chargeAsymmetry/UL/data/fakerate/2017/cut_Tight_HWWW_tthmva_82/MuonFR_jet15.root b/WH_chargeAsymmetry/UL/data/fakerate/2017/cut_Tight_HWWW_tthmva_82/MuonFR_jet15.root index aea3dc45636a87e649755ad5d487975bee90597f..75db39069519fb06d241d0d9b27b6cc7dbe34572 100644 GIT binary patch literal 7196 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 ZFSVTS(c$yh|A<=fc``He{VNH;e*tNG7VrQ7 literal 9752 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 diff --git a/WH_chargeAsymmetry/UL/data/fakerate/2017/cut_Tight_HWWW_tthmva_82/MuonFR_jet20.root b/WH_chargeAsymmetry/UL/data/fakerate/2017/cut_Tight_HWWW_tthmva_82/MuonFR_jet20.root index fa80f077bdea28f961941c62b24f22b5cfcb483f..3d48cd9845515d3b61334c20a98ff0488f3e85d0 100644 GIT binary patch literal 7199 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

GVU3onIJB6A7koxkr^td`ktMSJMEq)WS4C0 z96jc0oOKR+i;G^zSyZ++7Gss(uU00S1#(pRVD?+PA<(8z zyM;~?zu2V%hAVQ3TkW=kcBVxI5Dvsblbhj~%zZ9%*QJb(^&d-MDb?9OVFw_V*!tu7$yX z;%c>YfcE@7vGu)z&Q9iX4c5}cM~x2#PzNw2)@IHr2_25BpVrI-Yy+1c2j5eKQ<>DsvfL}yTFj_!$Ef&j8x?E`SZtWpsxznz^scafsI;Y;N6qYWe zaPLbs)(?x$JatD6GxwiPRx_42sN~)E516E|JF{8{YVu|M&@Fk+$XrS(=&tk`J^w|x z#Z|_s<%K@>(&a{$k`+uABR`JB-^4NGBZouM4@|Lx1S`Q?5I)6A?d{PTKINhmSH~*AZCkgTfhMp`WGl!gW*}mixcFAJG?L<0Nb}`Gn7P zeA3gKf8YgP;o_TI(ruf3%QI<9+0fb4m3%N;KiXC{5+h!0R{glyI0$a)sC)?4zB0s&8{j^%4;HyegMk|Q1Y^tvBa zq+OV|2qP8x8n5JWq@=s*Z2v^~G{!{D&=S>Gk(%b6)lX|_BOb!{w6e9^#mw)AF8Mp4l5)Z?UwAhM|tXO zCa7o5T6k3bk&gMPqy~)&Ig^>JPQHi__N1j~@gbe*fP7 zwUcYKQ@}|1>edLw2QLL5U>$n%C&I70p7lY`R{q%m;h4y4tOIF<#roG??nkWa8!vVa zj+*I?Jfv_#OKF;5S78I* z%P}V1Yx*bL4gGCT<-ie@7b@!wePs6?R8=%tYf(%!8kDtk+heR$KwBW$P*LXkw9w?C zY5kXj?t5uM@yd&#;Br>U4~#8|91o^iVth?qV=ir)7>QVdHU%>dW_|@$OM-;M46{dR zW!(czcxbSW*}DDocZLV@L~09iy%y<<>?O@@Y+1QDHskb#Q@hA7-R?e9HMX@Z;rax+ zE-$BI&Yl44`c^%EJ3wRnW%|Q)68-@j=27b2gI&_gci7wcMYN>A9?vz#qbpJTg)aAnIK`juwFO&uBT>rX%LD|CMMV=E>|_fih{p{{XtI@{Rxi literal 9739 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 diff --git a/WH_chargeAsymmetry/UL/data/fakerate/2017/cut_Tight_HWWW_tthmva_82/MuonFR_jet25.root b/WH_chargeAsymmetry/UL/data/fakerate/2017/cut_Tight_HWWW_tthmva_82/MuonFR_jet25.root index d23e67293cca67d01930e7cb9e28ad9f37eea0f0..2df99557e6eeaeebb513ec243ba42cd0f8bb19d0 100644 GIT binary patch literal 7194 zcmd6s2T)Vn*2fb<}kVp|RX=o8r07NAf5Ibt9`CqAxoAA9xx^g9Dw7)lI+WxoP= zU0TLI4FJG1QgcH(=?Mu5tN9_3qHqyOTYqU`H9L1F13R>n?LT)q_@Ql$++1AIwi>3U zrnYFbtB1dxt(2&+t{=)%&A|4S6I%4Dkk7?*{%U&wyo+&Pjvas_gdH{p+b+is0MPmT zZ!ZN{c`^v6ApOzsCS@=pkURC0$Ec5xj>6AOCH9U;LOoenAZ} zhy(=saJ{A|5b2E4=$BXc5T>UZ;iNOBGGrBhyI)CSY8}-3ng8V7PQ< z;i-f;Uff}~p%HO4zA*8WX-dayreg4xG;w%K5I4Lf9)<9lo5d_sko8$8+_3{%b-fnA z$KPmFsP!O#S<&FQ3FG6_7Lep^0OyFjoK!>rb<>vGSTZe_tgJ3sXIe^hCAab7bbRzm=|U`J znuPc`?F7*f>p(tbygZu(NsMKb!3(olVPp4npGLE4rl|T3)0n5bv!`@qioodrHT)~< zV>G)O6rTZ+-vWPeD7aHGtU18*6c}UAui4+)TJJZb8`c*NmA9P-A;+|c@4z^vd~b|D ze-tCjKpz?`1`Q&x513l$3c)dR?Y|LGc*p*IlV`iIZy zUHaVoh0m41y`ntXvgcPz1LTg!7ZY_|OS21Y&jsgU1m?-XsdIG2t+Aq!9x|8Ni5y#R+J9Mesy1k%)N$zoO+>&DfxRC1Hy z*_#D8OSLE*d)|=m5s1a5*ur2Y;`>+9ahV{Zpy3saS2%#6K>bM=-9XK+&aX!xRsu~3 z7hVb0MSW_eisB2DCzPP{Yhdsp%d+za1iZ@&j$w=9x`VI>o8hVzYJ%<#U|5GR#EB}< zFd5)jBvj{KUT;Bo(PP%vtwv(AoOQ<2#wfaq(e}i4AvZ^-HXo zcsc$5z)JR?u}X;jf5E!<-(c<6;Oq7qDYuY}>B?P{I9YEK6!{jAKp6CCpuu9`<$?jV zbC~bsgHxf<`<&LM0-f7jgWEgBZmjzQ7{28;M30PQ)m;L_cI*@2bD>)}000jE1y$U8 zmsG_rs1myWrb_gi>Yry=TKho2J=}kM_S`OMbq-)@NnX<8`Gc0%Z(8hT3RfAyIyyI5 z{S+h^K$IZRH*MAgk|CV4G2Lr39b}Cju>wY9({h4-o*lt*6@MzO6_4V zDGB{-#<)xoG!YYFo*IRg0?VrSx?F*GuLMyL!38?~PXa?E<8=yjglDY5n!7*6%JoV0Ae9 z@m=U;{X)SO?h51S=CNwh9Q&_b&NnoEr};PQHrn^0176dMpYBKREA2ZS?R}Ck-3#7z z_Bc`qsqUF}b!n%4jjELSq1gSY^~0gn28%wF>t^;E<}w6~;j#jfmEdGbaPlNQ{0C3F zJs<87$=JH6wGX5$G?_ZN%ryyip)65y{r*4E9t*G3PZ0hKf`R?05?}L~s_&nz7DCI5wgdk? zgO$!95RmqVbh0s+RSf1VF`Qb18L^BFyKn>oR|$?-g`!E~g$d*I1vL``NRRZ!h534@ zfZHnwgnc~D7N~9xmIZ@l+2WX6DbU;)>kJ3tier~sO`={vO}l%fU~naM9Cda-Siz1O zAG>-Q2t{ZL?)1;JB99%!Jvy1U3FrX!Ag2acScY^dK$F$$^Sud$2b4m^1mwQ(@TrU& z^AIf=i7+~d(2Y)pv}8C5d$`IqIK08$JCIW`CUQ){M+$DmiUDrk>~>Y3odbpx zA4F<)yJ3}PB>*X7--I?m@2LrcBF_n0=A>X_!i-=qjVDAbSuhYy_@wI;z3ZKF?>+0K zYeJ1*J8N9JI!`Qfnj4pnZ1f+R*AeUrS&>*c9|z?wv6WDL`aIa?ul_O0PcQpLUAsZf zwHJmiFP5G$jO@@5$}0uL-aU|A+Nf}Go=dp?igNg%s&V5s|M-dX25~!WMxx$R!3h5u zvwRLI9_EJjGbJ~dflfhx)1<>sp9Cc9+Wq5qqS~hf(cel30uTtOBLdGE2O6f%mPNpp zMX1gV(wsyzcY8g_Yg8|_KDiaVaJ4SIX@E(fX^eXWNu5ML$CVdET)*J?bJf;=q`YEJ z3-z+$1^Lm4#Ck>6bI07=ms<_rnj~Izbzgo$gi7*nU8XD8V8gX{sUU?51zjXD07pC{ z9XDSz*bwdGWQSdGYkE4PC{$2>_Q>0;NH&HJt1X%%GB%H`6V>hmnPr8GM0U5Pu@GQIFtFGr%jUF=Z2UTk~}iENIl98u;s zzC-&YUiJ&^XEjdT2*4VU!v=~&)D0pdBnl7QqBJ8>!jy!fAEyGYHWXL#53o~(~ZemdT&MJgXne_S*dMe=+54TYd$L|i&VM-0%3T4d zdZxsL2#f7$#h-LqBqg7Dj1G+DUt#54ujzmkoCbKacxF7nM>vl#NIMhlYrBuK^JR*o zYod}q@IuM=8uGtC+VR^tI|xzLvVQlivYkY({idV<$WIteBUe!_W8(;YLtiAg;+Yz~ zqa6{O-s^N>8D6;b)T=!T)MjC z*Wq69-YJWw|9I_HXqty!L&uQs?P_xUpWLFyOT2_!ERiWE9kJv41!DSVxeU5@sF^$q zd+T&$X-*urvQ)&)a_Xz{zgW|{Pk(t4{Mn?rBi<>)TD!Vv@8sh&-9cyJ*`VCHO_K@Z?O~|_bw$Hax4Z)V%In+C(up|r6kASaf-hEc?6UHLzn-1h zhTi4By&kM&NZV)l!{&-j>3fkJ;{3x3Xh^r8AOhbJTT{UgMM3)*OTrh#9WR2`6hPlxY_xWm^Ca#p#Pk|Xl3vA zblC5-}yUqK%p5cyU9hHWt41UOx3@1RH!5iJo!nez%jWl}~ z5=3Lv>wGusvxO#OUesAU*i+WY8WuMsxMs)SL5qj7`Rrrk&~>+4!1C6U;xM6Rzv$@! zCF&x&_X*KREA#@{fd`@4Z6TAvSET=zArV_adC$C; zrrkq3liFgk=nf(j*+x!J8KJJ}ygO`3FcCD<4SL@%f*e&4=xxu-W6f4_crYr@UZuA^UY2t6m*K))4M7kGjN!(6V2J! z>V>OHSD&<;TDeT+RQbK#@cDZPOkfr>!(dNA@DBP=>d`8qYl|Y`ijpA!46SWu=1i!!B7oeh`~b@I#JC45Xjds>Xq-c(QW3J2xL_n}*KD4vZk5DroeGg~F3 zYOHn3YiB}=V1X-l;_}j8uB0_jQ$ViqcsYe9Joglm9g?Ezy%o90sC%19aMH%`8Z6Zr zdRvLHgW{}g%H6iotcrozJQ+HYM9WN{FMr1<)Am4_@^#GjE3cUIU)bTzhMQ*fPL#hq zx&@&DKZR#%8(Ix|IW-DNi+4p%u&KR={hMr0*Ct>!P2nh)iLjP#i< z&v>a&Eszbgmw#vcT(zryiD4yswsr?6R2RL8rU~Kh)rNjWBnsUeQU^g~SeMPYIcarv zYhDGJotQ{bT-m}8XH!bn3nHM)5g@^O)kgRM8n!>Q<_dU3_8 zH|`yyRc7O>2GeXtr3F<)X`GC5*=w#S@Kx_n2!Dr-dJ!(KCuP%{=(KN1RJ+@c8Id}x zv$B4D<0c_0;~sP5uUoFwR&!dE1U?sKt zrqo$T(TDz&FXzh2p2Nm{ydgJo6^X~m)P78&^GtQdWwx8d{nb`;1$U2%1_xARR0h1HpYKJFNETlv4ddawE`C~@MxRP-{y-3eY5j~y2jy9+DIaeA%j`-MKawGoNu&If&SgPBYW$4`}@b`3r*BD z?eYbW{rne*Y_4n<13P`_-wlf>>Y0ej2BwQ&(ezt~mCYe>+^~ z5%D3EpYSZq*ik#+7HqjhFRySwnSzm2Kzq91} z=#cvQnDW{cKHi^I(tNEXOlHTwP){j}k+H&-Dx7?Z{U0?oSMxnVTP&Ol8ydX}uh|!@ zh}#D{hmuZ~+h%&Jr=x|+jGLZy88&RVCp8l=cX=Aqa^AJW);@^B!g>>2Uq>~3vS^I| z;wwU?oLv#TGg|qC2nI=Ris5YUGoAuJmBO3;IPg-eM6I}B9gN5OB~I4;TvlV-(YBP2 z&B;(f*Gz1zHZ={E{SsAHkc2G zc)#|&o9L0ZiK180-53HDXeuw&fQt!chDAnliK!$bH>rW=N^hgR+sd4E2O)he`%LPt z4}Va8o=vgAh~xzN+$o|~%ZS6h_maTIWZ5WCaaT$AgSG7Yn{A_=`}7ZRGd$#TamVpS zA2FAki|rb#lIiEB`rVjFJyqzvxnv>tEI;t<$B(`*gDf+H+ zzk&&pmL4*G&d3_^3p*E*ok&?Kfb+F?SEca`6}O{3?V~e1mwrNA5#NsFPwd4CLM2f6 zPi=kx>q{0|Ov^}S0<$+BxX)H`t8pjk%3Qs>#Jg~2)b{ygI5&+qPHsIER6{TFj=DR6 zDSxp$+Q-Nx+F;*MkKYWq&y#ub{#QVg2#_yKH)jSa;pT71PKLD4(RfMmaB94OzojV8 zbDg5ZR>Z{8ik^jOKUSMBb%@a5!SI#(*{_?zE~WUp(o*s!jPc;1Z%wNY{FUb#GoI|? zaE)8i&XA6t9O79&WbEVOR}}@hKUbcMs!b+B`FTW6v{K5R2)`?rtH9>ALKnF$u=6rA zx!euG?jl@fCV$6n2-Y$__Gy2`E(F%hUsWK-n)*9xwpg=&SLN`(C|~^rWehC6pbNDC ai2qc}x8&0saRsW(dgu literal 9731 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 APyhe` diff --git a/WH_chargeAsymmetry/UL/data/fakerate/2017/cut_Tight_HWWW_tthmva_82/MuonFR_jet30.root b/WH_chargeAsymmetry/UL/data/fakerate/2017/cut_Tight_HWWW_tthmva_82/MuonFR_jet30.root index 7b4b3878a9ae76347fc54d35b5e959c060425f80..36ec9be98f3d1639a6f5e10fadd7fda92cd84a8f 100644 GIT binary patch literal 7190 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 literal 9710 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 diff --git a/WH_chargeAsymmetry/UL/data/fakerate/2017/cut_Tight_HWWW_tthmva_82/MuonFR_jet35.root b/WH_chargeAsymmetry/UL/data/fakerate/2017/cut_Tight_HWWW_tthmva_82/MuonFR_jet35.root index 95d1cd295b3d28e5f252396047864c9c410158f6..0d34bbe4cecb87deaac46e059e9770225903efdd 100644 GIT binary patch literal 7187 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 a07(DZoqv>I{inrIe}3htx4k&Qfd2wVpsQE_ diff --git a/WH_chargeAsymmetry/UL/data/fakerate/2017/cut_Tight_HWWW_tthmva_82/MuonFR_jet40.root b/WH_chargeAsymmetry/UL/data/fakerate/2017/cut_Tight_HWWW_tthmva_82/MuonFR_jet40.root new file mode 100644 index 0000000000000000000000000000000000000000..340d724e87425b23fb79094086b3f52399e62b14 GIT binary patch literal 7189 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 literal 0 HcmV?d00001 diff --git a/WH_chargeAsymmetry/UL/data/fakerate/2017/cut_Tight_HWWW_tthmva_82/MuonFR_jet45.root b/WH_chargeAsymmetry/UL/data/fakerate/2017/cut_Tight_HWWW_tthmva_82/MuonFR_jet45.root index c2d7f43e9854aa43d81bf06a4447ccfa9310c1db..cba145e941b7bc4f526a82da2bf8bdf9b175dafe 100644 GIT binary patch literal 7187 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 G0{#mF6(hX> literal 4774 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 literal 9705 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 literal 9705 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 W{?*$#?0;sG-VS!u2ksvd0sjGWo3)$( diff --git a/WH_chargeAsymmetry/UL/data/fakerate/2017/mvaFall17V2Iso_WP90_tthmva_UL_90/EleFR_jet25.root b/WH_chargeAsymmetry/UL/data/fakerate/2017/mvaFall17V2Iso_WP90_tthmva_UL_90/EleFR_jet25.root index a1002c565078d54ee80eff0f1624b60ea6e3ee7e..dd0129e123dee336a121093830beb48819894ec1 100644 GIT binary patch literal 7205 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 literal 9678 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%0DOaB(o$Ibe~23@S`(4H>h~zb9n1C zDgI+ZK#2WK@&9(#y!EU6P4WLnI&0pRf_-y3{*w(Z|CM{`|Jse^|NjNmf5$-n?|D6M h|DpAtLjoZF>yZ97S-sU^|1*d5R@hNZxU(k%{texpuyOzZ diff --git a/WH_chargeAsymmetry/UL/data/fakerate/2017/mvaFall17V2Iso_WP90_tthmva_UL_90/EleFR_jet30.root b/WH_chargeAsymmetry/UL/data/fakerate/2017/mvaFall17V2Iso_WP90_tthmva_UL_90/EleFR_jet30.root index 43c1cc36d2792899b577ca6c9fc5930084474523..d4d0359f0d82a5872b8255b8450e5ecb6e043d17 100644 GIT binary patch literal 7214 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 aK=zkt&X4Qx>FnPr8hqBwBH|~N4Ez@+y$D1A literal 9691 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 diff --git a/WH_chargeAsymmetry/UL/data/fakerate/2017/mvaFall17V2Iso_WP90_tthmva_UL_90/EleFR_jet35.root b/WH_chargeAsymmetry/UL/data/fakerate/2017/mvaFall17V2Iso_WP90_tthmva_UL_90/EleFR_jet35.root index 03edc88dc171778228cd3d975ee32d37da6b2a03..897f694db2a56bcc5c917186c69be77f55b0a403 100644 GIT binary patch literal 7208 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 VppKBv{+*&BWX&AHf$}N9e*sPc0!RP= literal 9680 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 diff --git a/WH_chargeAsymmetry/UL/data/fakerate/2017/mvaFall17V2Iso_WP90_tthmva_UL_90/EleFR_jet40.root b/WH_chargeAsymmetry/UL/data/fakerate/2017/mvaFall17V2Iso_WP90_tthmva_UL_90/EleFR_jet40.root new file mode 100644 index 0000000000000000000000000000000000000000..31d55477e364beec95e4eba0a068b8a060059092 GIT binary patch literal 7203 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 SXaCO7U}w#Y*Zstj0RIK7h8|S_ literal 0 HcmV?d00001 diff --git a/WH_chargeAsymmetry/UL/data/fakerate/2017/mvaFall17V2Iso_WP90_tthmva_UL_90/EleFR_jet45.root b/WH_chargeAsymmetry/UL/data/fakerate/2017/mvaFall17V2Iso_WP90_tthmva_UL_90/EleFR_jet45.root index efc92063df11bee3f4be819a80eefc1cc90c9f93..2bba7e822e2dcd22ff9773c47d4e23d09ff128e3 100644 GIT binary patch literal 7206 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 NXU#0Uq0;HV{{Xwu?>PVf literal 9663 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 diff --git a/WH_chargeAsymmetry/UL/data/fakerate/2017/mvaFall17V2Iso_WP90_tthmva_UL_90/ElePR.root b/WH_chargeAsymmetry/UL/data/fakerate/2017/mvaFall17V2Iso_WP90_tthmva_UL_90/ElePR.root index cfa68fe157b5b25be1cd9bf446c7975dfeed5bbd..9df12409c6890c4ac0205e4f97870c0d98c49531 100644 GIT binary patch literal 5183 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 diff --git a/WH_chargeAsymmetry/UL/data/fakerate/2018/cut_Tight_HWWW_tthmva_82/MuonFR_jet10.root b/WH_chargeAsymmetry/UL/data/fakerate/2018/cut_Tight_HWWW_tthmva_82/MuonFR_jet10.root index 2f93e88a1b74fec9fa43ae4a5dc7f67c82c16d29..ce09e0e0de80af558196b8e9ab79172c381cc69d 100644 GIT binary patch literal 7175 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 LGm&_SCjkEgLJKh@ literal 9714 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 diff --git a/WH_chargeAsymmetry/UL/data/fakerate/2018/cut_Tight_HWWW_tthmva_82/MuonFR_jet15.root b/WH_chargeAsymmetry/UL/data/fakerate/2018/cut_Tight_HWWW_tthmva_82/MuonFR_jet15.root index 34d1faf25d1913bdfcdd279ee85ec5a6a3492748..e2d4c80d395a34092f73c02f9adde46b9fbd62ce 100644 GIT binary patch literal 7176 zcmd6s2T)Vn*2hl>MIj(95PGjd2t7yqtnJ;s8&Y8U@>#UvMfA4eFS}u-`ZUC@P4*-A_05Dzv z0ESrH^#fc3;Tjen_k{rf$ONv10-!$kXMINarII)Al2fZ)t;Typ^cJUGs6EUumV4*+!N z|Lso!6`#!=Y;Znz)w8*S&}YBLzpW;sLWT3(={5@EW{z@jx5v1cyE(f2yFMe$3uYj| z01SA6Vs4gP2P=^KRd=gXl5-q}WJmC|vd83AQyc_UJid;n9#2g(NY24|NB^#1#hsuS zVu_$o(}B2mT5n#&7+jcLoBFbVr0kP&Sm>=A8>_6vFAL*rstRxW3E{)*QrlWgOX$+` zWSBB~HRUKyrhR4Itl;7Bvpe71`C#qoCf#0SglK<67h?A5`Zc4303NH+MebVQbEY^F zNti;Sh8Ky76DXRh!${DqXsn`yXk7wYdlIqFZU)LStp7;xGa5-grBBi`(JOg5o3jd{ z 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 literal 9714 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 HC%}IIc&`xH literal 9689 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 literal 9665 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 literal 9658 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 D(iJ9$ literal 9642 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 E4+9H14gdfE literal 0 HcmV?d00001 diff --git a/WH_chargeAsymmetry/UL/data/fakerate/2018/cut_Tight_HWWW_tthmva_82/MuonFR_jet45.root b/WH_chargeAsymmetry/UL/data/fakerate/2018/cut_Tight_HWWW_tthmva_82/MuonFR_jet45.root index 807780f9d52037bc502591a4af494b0123871e8e..acd7f0e37178df9d17930072d34bf8e7f834783d 100644 GIT binary patch literal 7164 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 diff --git a/WH_chargeAsymmetry/UL/data/fakerate/2018/cut_Tight_HWWW_tthmva_82/MuonPR.root b/WH_chargeAsymmetry/UL/data/fakerate/2018/cut_Tight_HWWW_tthmva_82/MuonPR.root index 852d91352965eb85337f286b279251208d64507e..9e30538701bba7576498a2d77c4c58d602293d51 100644 GIT binary patch literal 5147 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 Y|4-XArvLx| diff --git a/WH_chargeAsymmetry/UL/data/fakerate/2018/mvaFall17V2Iso_WP90_tthmva_UL_90/EleFR_jet10.root b/WH_chargeAsymmetry/UL/data/fakerate/2018/mvaFall17V2Iso_WP90_tthmva_UL_90/EleFR_jet10.root index d697b02039c45fd7eb2bdb46b1c7942970e6ff33..d51127f8daaa5faa8bde7d26e27b72aef86987f6 100644 GIT binary patch literal 7192 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 Lndtq*p922|{Ps9o literal 9635 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 LOb_!Gc?tX*Q_?u3 literal 9635 zcmb`Nbx>Tvw(j@fFa&oG8Xyqd-GaNj4({%*fk1Hg5D4zU9YSy?xQ5{Fc1g~A=hS=m zk9Xg>cdELkYj$fK-c_S#=BCwqGr060p znVr$;PyGMw2>{qXk^PMh0DXQ5EdQnbjSv7R68>MyhH?J0I(Uq~;k6!zZmz56$ z=qyu-#&!zc>ACl3+_}y2U%4K6ZTJ8;jxdfbL?cuQq6SsLASnWX1t9zDNpdx|?^BQv z86cahEIOkH)d|o6wn0Euz}E_+A}=@?m|PM~7{eKI6ui&kpM4X{!W;roggo;s&z2Zh z%so>>+m4@7S|wj84hVrr0478YXqb&JYJjFuvF-F_rt98Um3Ddldb@~NM%>?Lu*nV8 zzoh`i*6thgO7;rKTNb-QbBtyIs4#(UVcQV8tWoQv-yCn#C)99403wgju8TPW-7^R~ zsYc99h9;M>rPzH!Vuv9q(n3u}S<57bvj-c@(6uIe7UKcsVEs>5M9}qjg_?P-x9n)$8b1kSMY zyZ)(4H{&v?z$w;Gcq(vow_k`JnRo=%vaP+f>=9y)enb^M+xDs%uO1-}s`dURS|sF% z9Ul=s*@iUm+kuHnl%>6uOl1z)u!oIpPOCd)qy@VQYacI8zS<#o;C_pDtQzVJ<}y-! zgd;R%o30RhhS^F^o#I|xjH7A1JTAw~(|H*A0Vj@*^eAE5JxQmCm2Hr9Do)XFiHLW0 zUl>}opO!tKLA=NdSwQR4NH$2_xLA<@=de!oLuA>cT)6Uz1;cf{&wY0?kQ}D6nkJFP zaIgv&Wp)xp@oX{)=H9ry_ZuqTnOHIAN3|>^Y{S@XdMH^~NETH=w>Uz-zpxQPP7lM5 zbqvvYtU5>}916X_|L`RIj9TlpQbP+e4F0rE z?Ug1o^W46r_cZ!DL?+wxQGOvh&5HC>;+uE{I{KN$i6N6Al`a`?Hn4Sk{s8_1rHwn6 zCMSkzG`}eiB?~7Wsg2Q~!kF|)Eb&P7Dv4CDQDr^jXI*R6hTHd5lypS+qY8%&`{ONL zEXN4zj~KYESEE)2>jb=s{>5*~4g3M`GB&XH`LD{I5&v*#Yda~_Mcv-lmsfHHTnD6M z%sU?oYUqA;L#zt|HOO}vR+hJ84QP0%9C_T=TT_3fUeF)3KyBXWH&X@H;zFrOf;5DYp0?C;M6EPwF5k4PbfWbmCD8!iWE z_PdS_aJ*l6QpiCy9B5v!e<1Ha#odjtn!B()NSn`IKGclqfUw5f!LZ|dgi;Gse9qA^ za`Q}EtjO^6sOa34w)W?neM&X#krB3$KXKwr%j|8Khq&3W5-ysNgVVlaZ0n_+$7c5% zhC4x?awv*-7*d{4OD-~AfDJ|e7db?Kk;C=}Ik5HrL=NUZkz-)zYWs(*_D+A`a|8m2 z{=nxjQBYDx39G;3`YhivIX{TY#lgWs94QE4b~vMQ~-cRN9>%zO3S&jENY;9^1J=-F|+%75JI z{VvwRRy6g*`ULTr0SamWO#}hx7IJW5@^s`%lGT-3k&THi3YUPZDZocVSo544rVPaK z5V|1@e8Z>m0ei%Y5}{QjvGWt0oY)!kZ5}hlB#0E@v0tqiZ~kAjoproAo_hKwJ&a7 zpLlh;Sar@11Cc$U9)j{|VY0U1u2a2N9EWB678Luk(*_enp>sF4pBbDkYc7A|2_7-L zU#X+W&f05pEcJFYYhNAZ=AflYKl7E*noeM#XZ^7olk4>j=nYWvB0SK<4s?F84so!V~8O9SQQ zR=o9=64#J1v3L3l9Ca7~=O5XQrL3w3 z)&OdcKqwM9oEQ$REEq?U{sVZlDUpgC=0FH?bzjHfRhj?&QBO97DAsn39>*TLJ;Cs zL=0Hq!TFwj$$h_!kKX%|{S_uBXY|86HJ89Qdf;n;_bMWRe7wR=JOC@Aiv=xWGYTqT z!)iozi4}KWpn9^;s&*r6KGGT9vAtj0vdkMJVE7s@_9oX6-6YFV3o+rlBzatd7*{LC zdbFmwMq&hRSq8esYzP3;F|gKzO0aYSNfE31pSY$L%=H|&qC(Rg;xzHv_{tXx36Xr9eta{AMyE~~8o*omEqHFao zzb7G7RGwY7POTL$VP!EYTVRLu;w;vc*Hi;!m z=>#!*{>0YClv}xzi(NO#opyz3evmyj2k2{+j(ojXr1vRL(MpFoNE6l?7j9Nxa2B+y zLU<>=DESf_q6_OARHtrvYCyr&{sqzyyQgCa(L<_U>O!BBXx3dcjbJivXXR0>8(^sx8jGtGLy9OWG=5{t>(6eiA)!_&c1$QGRzeN_xp^{-@I^uu4QHsAU4cNpv5>ucVh zY(G)iY?w2#&=t?8DbwBbaXTito2@cGnr{mlPDf9atNiK%AWDA+KU0J49e$zO5G6>ngb5c-pJ zA@fN$CZ(yoRMSTcl-ZSGO;amTSj4VZalkEmI836RLBx?X1$l!6YI6R6YtaoNf= z0xPrpv@DtiA(f4Xnb=6$7P~4?_{uHnv(M_-xsSlu{{53rM~-&{qRP62Wb^CSl<;d( zWH96rKU4xkW*4Aq4j zj@8+_zCg629imc@d6%hT625feXd@&(?uv8EiTAXtkk59iDM$(8(X(%qm>Bt zv=8b`?cGn7ox85X3{5VrEmaY>pY|Ww+*wlh{qF^J92jf;e>N2H@C4CM`R*;6G>mIb z&EPYSc`5*-fl>@VbqBsh1^5_M!f(>s?8aukGFh4YHA(jq7Se{Jo_1Or!kw{~kpf@Z z^tDZM_FfL%b=K+rVnsHYFPV>u{2^{XATzYD@9}b1H4=;Wf^ZLy%8o?x;f6;8dt~18 zkcN=;*VE&D^+)mH3tChk8YPLx>;itXT3gwtUX$3$y7aJvu)A#U@b{kda88a^eh z^^Z#4GT9?#>$i2d!+(jo@E1?<>q^_O>~nrcxky$)PMxp({!7Fcjixb zJ+RlSZ0@ZMMXLl*cz zu%JiHwi-zGWaXPHu8`MAf*q!iT$zG-1MDyo3w$L@$NY|_800W8 z6c&pZ6%`SJK-e$X5KNrSuVR6D-jOm%IjDM>>^ZwF&XHS$DI(0+&+udWh8CKAej)GKed275h zjh03?>Qdv9S?Gy0p1Z;6?}&>?)9n*-+ulKsWR&*(m7}BgJ!K3%;0(;B+OxP;(KA|B ziYc~ph0%g)&U%Nd{<(5K+opu)4Q=9cg%(&p66}E`l2!JNJnbX@TmlEz`(*4rll;=` zbIlu#g`X3Zz0+ffG!PV$&qXWMgZ7=V-g9=<`wTp$>-?NlOvJ|f5U+S^`&-{zooh|C zniS|`WCN~i1;x-M&Nr6}{q{u}4HF3_V_!sGLp<~fkl0!i&o`sn zhl%tp43 z2ZVv-xCJp9`7)m8>u?S^^!tr5h)Y=>Siy2@femNra#@CvEMIw@V5W!0R!Sq_+#`Jb z^t_-|k?#ms9iU$&l`}vO*z%R%eSlONF|8JBb_fs-$B0sc9`o#vC z(O$ME(!dtnzpNnkcHHQ_wUJ?bl*FX5wBb~w$}>BdSBH`(+LPP&VH-IZZENAo&Z;&) z>UYzQP$SVU!N^HMBUgBUZB+^kxp|99b_#_+34_W<_PX$_AFMpieLd;{;T<_@eua_T z>TEvi?0@|*+O)I35G48>0JQ}GUMJ8%gHD|H^~-bidI(In<`xXU!@nL3+jQK;0XBqj zx(oF|$<=JP;QR*d|Jb!72nM*pPL)$F=SeyV!iJTb-i>7TD@}(6YMw+}=?La+9nALdVlv-O>6K z#aJgnNQD}rzxT&YK&@iq3e+9*8rn((Z6tu;K4h`z$aQvA-FX!jym4p6S>e_NoAkfP4GrgyQl~-Pw z=aSK+3XYHowAUUEK(nNQcYpb>@bxIMeg*=YX6AV;%g`#FIl4VH`p@PmMs$XMScAS?8pLkZ*IxHB?&GIX8To?^X! zwOK^ZNn+(+HcBKKe0mexUv-PxDZ(~3Kt5&YsgkQ;hmxj;sAi~vT{{2TTx|}eXKSJ0 zbjbhyvdtnhkv5j_vISD$_rY`_Cy^Er42f@rZEF5m#;KEp)ij;1H2K^aDZM#tvk*P^ zJubFaB=>c~)Y9h9SED{%s{EF)%O33DPEOtq2}6!R{tP&sICrk|^cW;mw2v*VUHsTA zyHwGrK-^b&udLP!tUdGP-{zqgwKNh##{o}gh04y8nPCPId&Z zHZs2hqbcpyrv80VpSzbBH z8~gKqOeJ>k2GjjUi%^XN_LNb-Pb`KNRHD7VH#R!sH3S$gf{5Rq0w4LVt_0a-n&|r_ zI_7^UZwcAqC)4##x*G3l@-YL6A=ybD3nc^Tl+^s;m974P@6LN+%R->!X^eo&hUoO_7%0?t3_&LIp;kZW_}LA7_8&zgkP5 zUmMRcpqe3x`O>TPV}}|=mMACrm3m6vnRVc@1?HNQeP$~mZ=TqA|5lrA(Ue9Jfsq%y z-nb=i>cz>hVzblUV}h0>cUA7d6yGJnh9wscU1ca#?XW)BYt$;;YqV}M#7lz8O=RjO z@U+6h>w@_Yfa znx->R6$Chrq* z79yveKtouE%ZXHAYI{7~qm?E+U;u$QvkW?Zj@UOnqpmetn~CPUX4DPJfn{uJR}gls z3HUfB#dr8drIZKQ7#wC{At4|SQ&uEFywO5XnnNS9Zs-~gB4bh!HTibc=>w_+>pC0e zp{vPN)bI)g8-2;3fMfL!Jx;#nv=a3~ToRHT0jKB*&V!TQ3v{=Ov&h>;KD3ICsH3Wa z!Wk$8mA>Yqlw6e-iTw$=B-MH?tPfY|$lnw zqPqTouK*h#-h<0&&G1;*f}q4IS&0#U1ziG>S9%}uDf%WL#0~vc1iD^KF%yqJ&2(C< zJu;ZK%;B>oJl_&>kY2YNfx{dN^pUYU%b#8i^wEYziiZ~Vt!Dg`pJSJPLJVXxps8lD zVR5TYJXz0x)~4C*bH6;<=P$1>FDXPD%v=?9FM|8uZbK-z>hwGZ`k&^Ko$4A{9Ku9AttUHr(C|MuKlS^_RYdLMfHg;A|;966o%hX4D@8UMk$~w_S^BC zU9;S@Z^&3z_Sz0|rd?Oxr32IK*KQ?U3+L)z`KB;q0O$ zhQ?RiCRh0AYJzmiV2^32s+gT-5wKQnXyL|nZmJbh7xY_Q8OX4RUK7ruTE+ZsH-}{u z%-#tNmq$#l>kz}t)-kICd`t+& zOlEYs|4RAv#ajaZcwD(%TBa$nF6wpQe#Ci0!q9wFAtoKQZcEtJ1Twd^7YeHUjgnV5 zu{7V8Ts614W<4)gTBfSpZ*p^#eMB>q46poUXV&&S?ePg?aIl`rO5?kawM#Mhl7%;) zJ4&P#YYuO^NHV_}Tpt(UM)~L8!DnD|M%x*XFYA*p7kSl+JECJ==8crW+w)da)ebHE z;)SiAk6W>uGca2!Q5w_zPNrH$-gX3Kwv6DM5HgXKtvV8{c(suIi$&W4=GTHwZ~mK4 zy;f42IG;*B(e9$Fez)Pnmna=bEXep4H^XStl`h^dVZ7onlx8>|`n6^uwB$ww&DpKk zO+4E6m06#KRDAMRQ>PMdd5lDlPqF7nNTbg~oj=owJ9t6hqFMZrL`nmUYpN*M>}+UB3YOKO+tZHR4M8bl(A%# zwfPpmQJqTT45=wzwFO^K%GL6tH@h0?1TG7*mY(q|UQLnG-$WJV*!j3>jB`sdHp-H6 z4Zl~tcm}LXYd|sK$Vbr@OXTW{m_mihO?RnY8aAi2b))41rSIc;5?SK&x{jmD{pbx( z49f2L9A3&tKL0TpKw^JW{J-TgFGVPSQ~dvta+#N@;9i`J|6(|c diff --git a/WH_chargeAsymmetry/UL/data/fakerate/2018/mvaFall17V2Iso_WP90_tthmva_UL_90/EleFR_jet25.root b/WH_chargeAsymmetry/UL/data/fakerate/2018/mvaFall17V2Iso_WP90_tthmva_UL_90/EleFR_jet25.root index c1992da5a581846dc99edf486999a66c74713256..4e3dd2270b78232baa702a9a0a9793933289fa8a 100644 GIT binary patch literal 7190 zcmd6s1yodByT{KkgmexiNJvWz4bsw$(nt&q0s{;!h;(e1hDF>rwqpZUKzzQJ}0A0MG+Q0tCNqkFKM{r$CAtfQycqwY#|)+{4KlVeamX_>anr)Nbj3 z00S`K4N85)tJibPT_kALTT|CsT4~kJt-#11v!dXl3 zD!Tr|ZO^QlQh(=h+HAr}gt6^|4{EMa6n&auT3fX@`4k0$5JbW|;nIortjYZ1bCcMYmf3k5u7`DVl&C ze+P~TuMD`>ni}VFm(kXEW<6DMdQ@5_Z1Xez0(3WAj~7Lx_J)!14I|ZSMqrXZ8A1MH zWMvI^cCv?GQ~HlfQJi2P!1$U|?8EjyI3;1q$Su%DO%bdt2(?_JQu3<4Ve-3W`*7j`?g^GBJ)(U%&OWa+R}P6=en1%X&>$BSZa(*WgmJjKJB&C0)E6Mc0@E*<4@zD zFLc19AX(^kCZ+QtXdis60*BwRlB??T^lr;}z}Jp{cRDRu=tV7cv5jTN3SIO|QXq~c z6{GpMhZXDtcFYt6l|$rZol8xL&Xe}Lcu9-T6442%#U5JHt-NqhooKttm3la1 zT7qIWal_2+hME2~GxXj+nce=2nY_NLr85HY*ZTTbbtrzWAi(aLpBoIOVGeVJ!RC69 zI7~%Q7ZE750SZN9poF?AHDmNpgmf3BG4(cw`Lb?MKzcS(*9*y+(^e^#lff^#I*{FD z7<{<>HkL387|b8r$`xcN&3lfCNi^;PgUt*gF_=P$>-nISdQ5s&lugau%-C3m3sJA)|Z3UL8}!vS7f-+tCRHbmj)A;|wKN?=#n$Z^yI})P_S{u zfw7Cv^Qz9ZvRm(mj(c~w+u=E`vmbi)_^M#7r7u9;X3!pVJD^P0#SrzE$#KmUJ>-Tf z|25ZJ&VO>n{*&upPbgmdARq+&AB)ibhF4oJikI*WFSb8;x%|nC(Lh>|22V}xA-#vR z&}}d&7<{ZsAC23O7Bwpj4G0JWgS+%Fx#`(spoxKjb&OSvH5nkbvQA_t68V#mv&6df z=lyi9=P`vN)3TTJU}?wP7;^A99~Oij8=WAVh*}BJ+4G&=f`CP9jznc%#=Z{|+SP$E z=oNfKY$L;zpoE1PrpHO}j%m{+fl7%0D-0K11dzbN7>0&jo~E|b0isF>D7(lW5}6R) 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 I5=;U94enVu1poj5 literal 9625 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 diff --git a/WH_chargeAsymmetry/UL/data/fakerate/2018/mvaFall17V2Iso_WP90_tthmva_UL_90/EleFR_jet30.root b/WH_chargeAsymmetry/UL/data/fakerate/2018/mvaFall17V2Iso_WP90_tthmva_UL_90/EleFR_jet30.root index 7038a748aa7f9151f71e712f876655c0171a2cfd..913bd9170577bb52d549222db19bbc74dd231096 100644 GIT binary patch literal 7182 zcmd6s2T)Vpw#QEhO$bN}y>}2o=pE@rs?w1XN&m|*7kCD_W^)?dH?_%0DzGc02mUm z*I`%#VQmN(`+)=i$a}0s0-%Ga>#P3y$|IQ0U1e`lcy+iw`5%9n8 zj2#UC@Ql=*U6IBxn2@@!tE&iHSjxsvT1eg21$o2P2Wj*7jc$In>b9<~!jdK;THfw9 zrUue*8y}xr*k&7J9UE!5keVw}{f5nLq>m^Z=5;=+zsN0scRmZOH30yQICc_4Si6`F z0MMEJS4#xSJ6{Q~*~Lm|oUa53b$&mtk*0_`C3XTHMm9(vTN{+G8`8_x$KC6nwOQy8 z8h`*ZFc1Jrzb>!eZa^jf_C~2d_t*J(bSR`dtZUdhkImDVTV)Imm&(HzE-)nU;rfNo zGdr7buYFKzb+L-xnVf*{*{b$F0}+-;&9|xd$L%b;$)qgoMEU0 zXp-?nT9vA*1CO6f=eU=--c=wu1t~Zc<1%yOsXtne>Xo7yH|cnkCSK+;GitVt!=5;_ zCc`pF#1PAi{)jtA^RoSv?$X@b%#nzzuLfgcPJIt{`#47*SO^o1WV6nT823()tn%Qm zCk5qPUxjdM^p|bhfTv)+{q&!_ug};A45gNBf))7#kCR@PYox z#{r3QcXLLa6Z+?^SVjmCV0q3c;kvvwSc&XzU1o1!LLA|*P%7cb!g36TgJT`fwM&_k z45vsl<+7Ms^)-%(*fUlHl0zaxS#yP@e6Pp-QUkI1Ch(B zMwX;m)f%RPmJs-*OgUt+{bEK2W;&g|V_q{_GESfFw;L?cAH+oH`D$O(IuuyHtPbN? zB(mb|r@%lmPgmzTS!ZAR+@?Xugi|3-qwG*izXoS-^1H2vkf4k~k>>BhE%V)}H5ZK|n+-*{%j*0>`{QLw=l-IWye$-^>{PWTs}SZSU^o^=EATt3E704-jzcoS!!Wp=XQm zL?EWR&_tZYa1SXsydDn6VWWk6YBu3@(L{6>XK;2mMFsIJ(LlSF(ie-UxiaQy=2F3r zI@-{kRCpr9y^i(>I|L%+l7lD6Tv7NKAD?W*1A&<6L*sEqlGlpB%S|{<9H>QsNMl+v zT3Xt(Fs_;s8k?ocg{0ByqdPBH9Do>-v{5_2VlfYgGYs8EsSMWAtIuLq9caV7c2n6| zmUm+UaFnW7JVF^Lv9|a!BH(v(Xpb;}AWtJdl&-t{tYzl_%u1j| z%8ggdL`&;cAypWcr!t~UM!x`o?6Z7z{EmRPdce_ak=(%uJBS&s`ZF!?-EK5%FPbP` zl`K>iG!Rav6Y;boFRU?5v4Is%A5422|AA?7;o`!Q3f1`T&UsIJ3{r^IB<9|c-V|!eeami_EKgSj7OpOOi4UFX0OJlnuvt1**&Hb?_ zzHqSR{#LC=gMY&a^6a{IW)nkVW3X1!x5^Hq?&tbC9mXFUfTBcNdf)_tipKs~@}6VG zjkv%ndXAOQ`8U=}zp?&#g~hcF0wQq#7J|+fxLUfgxFj!d@&19!<2NpLGevPmh>p&6 zR$oO41~4TUysORnfVdYYZc-8+8X5%#cbMSASoz}NDPdtX>=o=)Ss>n$c62)$eRx^m zC9?TYCR6ZUe9_>z$|);Y(KRog8ayIG0A;;|OPWJQuj$p^wa02l%55-3acx@3xd$KK z(T3OOAHGBGsKlA9Nq`?^B0&0vbJ-)APLq@%iWpZ4kSD?$fJdDkq_?sF(wbgyKB)~f zI{85tn=vlaed_xo%MOV0GeDAoAp9sY97M_|HV3A(N3+A}buGXN`r>7?r5%FNC+jrR z&6*)wrouM8)`#0{A#Vm~_OFq*uhWlR+n+*mYa?^HCm&l*e;OJu|NQx=ifqJ7Jt&ou zbTVa>YnilS+OXb#VbAT$y512j^nki(`gF3c>|lU_E@+6eBZ>KS&cv>R{$$VbwNC45 z)+XfRP1T@C23@ay6lRiG@bHe-aWG+HpwV|(IGj+V97hyHh<-+P5&zFp!wPSeXSbaV zEY9ue$Sz*i^;26i-dJoQtDUAk`m$*a4xgnt&W1OY))2XyyC2JpnyBcG`7JaNP7_~o zaJ#zwc;L1tbELz$u8ys^>MQVeAmM{>m7$Yrht%wIm%Qk`p0x5yULbJOdindUEYJB|e zdk8JTwXX37*CTr|w-)AA0y@ABjI5>&&5(WpXt8==B1RM+Qo@P|$i3lVV;Kfhq}OC6 zLg`3h1}zL}NpNEJFjW~iyxPt)fJ-Sld_d7l3U0}Y1}$IbMMMd&x4tCt>nXH;DLR|yhaV$C43RMvl_|iGo(HUj68JoTOXJFkD*q-G#40 zw5|zN-1KG`_I_j#^?6kbtDuFS5v4o=Zgt2Zk{aEtyKS}ddqr;hZT!=#OwP5LTl$eN zIim1^`Izj1i%bQ(({L|g71RVMo-61)e*qlujC7p6eISNDUPxQ)0<$`p;etG*~-$C-PUll=ndHr4bRVih)2ZO@yK{ zW`w|+EGAQdE&YqMx076z`E(QNL1)co@JzG!y@TKx?_ue2{Ef5ZIHNorI*}KcUp>6f z8+gkH9zmb{aLpb0X+MP`OUMg40hP%=-(9}`ytVnDM#w%M=T0-*m!S-srw|psem4fi7wuya1LF`0M^s1R2lB$+XV{>d} z5#fbd9XnGGHm`QxtvA0$ADYcq=QTj_InyLl)d=Rij38#xFl1$)LbZOC9$))3xpGX! z=NmX&waL7!AL_z-B+3pPVGW_Hu7$>lZS|G5v__pc?`&F#BV4qLy+?5#*{yYcla~R{REpI)~=-*7LOd4?XVoo6HInTP|ZzkF$nXulHXv~v{kxBDZure zHWy#_^tt$bg}VJ0j~C!X1J?>OZEN=8T%v6KHs9@Pv;5lk+Zi~BD1yZlW1gwMHE0zQ z+ZY^6i{ug~{P4UyMn9m!+KrmxkTuvsFh}^i6tc=$yd#t2UizI1}9hn6v7( z3dabZeMkS2CC8@*=ak_`Y+XRCE)TzIkZ_J8nfycy%}AN!WHObe8&rNm#3mEuU;KWn zF|#(E``Pl7@8)}YTPszEiYl#D%fn+iuFS$I`^H`A>mfS^G6L!=Re?Ior7U}G4`YDf z&oyGko-S5#a|JBrgKm`eFbm&OT8?>*_@6KB-_9F7>!P*KW|{5@l_EZ-7d|*B={Tk9 z@m=|THR*0rw0O*~k1-2J2acPfR>!l$3=q5oMzXBj^3jcIfL6&|4-DIMG<^HWDOlY*&~ zABMd9`g8?Ni$o`CKov+jhi@WoOiQ&F;TEef)2SlWhSkO})LUPqZ7OU=JN94Lq)>j# zMvz~Z6q8q*{-GV(&{%$h9?-}%zEqe2+M1MXDli5v% z+n=#NTae7{=}=$(7X=$%loVU-CT8U5Lt>E|L3dJqd|=XAw2xe3AY}li`|^#)+|U5oy_*Q;qQakwRWe+PdbK_^j zH8M6^gIT!>4e)>3Q!?2W{AOt=1eWh2p;!9b`>^kh!4g#iK5bX0 zSKHEJBs24kD6PBT`p|-Sa~g~RweIz9i&oK(KTAW~?vn&Jv2lBT&B*GUqau*iHC-8y zlE*}BUl|BwXfzpxe)9P0RVB`-Mi8$iIXXwW+5aKZMfY&eM~3}*c0vWkTa&{>GC3hL zLnrszS7W3AX>w}|59J7Q|}2%U6UhiE#;%g zm;vg$l_q_1c}v7Z99hsD>M@(<`s;WMm!F|TlwrsXZK>rvbUGfawy^=t`u!T@HHnwK z*n)etYLLnbLiLf-{3TC}2B!Gho4YM`4XA)yf)c#4)&Yp%pI>dQLPjs^=&*da-0b1A z9|c7aSUZxcyq5UqOrv@;ZW1o)8P8Z`=I}c`6bQei#MZ1#|JhD9**iKp z1hQ7Mkn)fvyG+6K%{HvbRhsz0^=O0q`;FWN86JB98PA%9KXkS*nglc_(q6hT!|wW; zgl~z7ZzA1FdLpZ{B5*b4Y3WJKlj%yqB2T29zIL_Vw#9;CA~LX%B&8?L@b$R*N2^xb zMqllW-iK=%=jI!JrCHvAM-@bq`i(YJjs&?pMT5}k9oEt^CtU==La|E_4v-Z zn-g1FNta=WXfaC~)xg#)r#-#^u@LzQo@mB9^J~UDmR^I#xMe%w_>lyusIP!qsz4@0 zgyaPS$<(p&jQp5~71dWEWLS`^K;J@aw4GTAg@CEGfZ(_;PcK~AOC&{Hxq-KNJjcq8 z`LYl@<%SS0x5x7^k`B&QZm}XK*1DURV`-Kkz8xagpSoCI)MHMSg$I+OzWNmXbM_iJ zCN}UTY4IVs^3>cPUS_KSqcqgpY~%8Tx#+lQ?I4AoJAe3yq5OpBEk28%~?P z4Up$ zOXoYA?KYojaT>F$dEh&WlY0)*A`pixD*=N@!(cR zWc8v&P29G(@MV?kD@|+KCHa?V6BBBqxSBeR#~=k#cpv7w2Stn3i}DsBczoODaxSNG znyU^rFZkJzhKjmoq5~BvY3|vBWM+?HL0qpY+uu1FdmrnQzbt}JWqY`~@Qy>{R33$q zT{D6$G4J;tZFg>tv@2Lg(yL;X0?yM?!9Mg9X?%JI>YFB_k_=xK2i@g%>5!T=sw%Q4 zu$wtZWUtmbxfI~4DfAW4m6KK&AmZp(#c5xB2D{?H|CZG+uV@>Vv&BD){Nhidh0`yQ ztBbRAA30S0v4n2_Re?tFVDFUBa_`-|xpGwLlaVC(K%d}m%c=US-zj;RuZDc1b(ef9 z1^9)lf9bHSEbFGJJXubtikoB24Htdxyh>r?_LlW{O!P>2&lh?_Vs>Ue@9LUqN;~9$ z(?Gnn?`$Fre85TYmaoW*3DHV?S=>RAH@**5&cQ`gxdMBdot57;?H>ZrPn_J1XqkX4 z=MFv&dqER|USA>IG+u2Nw_a?Rr>|X$9gXF9ucvF{-6x@t1bgdy!i~IUmvqDel&Hu1 zt6}VVc>K#pZ&K8GJM#WeSg5`a#gutfoIShe#6X#cGf@~wVw>tH$+d&#E{gpiAk4Qx z)p%cf>YXDD8tC&(9+r@l=-D0t-{{& je=S^K>4lw(1|a%VG#AHl*v$2>6b&{(W+e3&PXqn~()%>r literal 9619 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 h-l4^xO#3$tLq!T5nBH*9}qckYAER* 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 s-}Zk0c>@2IoAdGvE&gm0fcT%A^tWp2Px# diff --git a/WH_chargeAsymmetry/UL/data/fakerate/2018/mvaFall17V2Iso_WP90_tthmva_UL_90/EleFR_jet40.root b/WH_chargeAsymmetry/UL/data/fakerate/2018/mvaFall17V2Iso_WP90_tthmva_UL_90/EleFR_jet40.root new file mode 100644 index 0000000000000000000000000000000000000000..3994a693f01cdbe6f987fe622f05b77ed62d1844 GIT binary patch literal 7177 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 diff --git a/WH_chargeAsymmetry/UL/data/fakerate/2018/mvaFall17V2Iso_WP90_tthmva_UL_90/ElePR.root b/WH_chargeAsymmetry/UL/data/fakerate/2018/mvaFall17V2Iso_WP90_tthmva_UL_90/ElePR.root index 62607555e666698ba6c5047a4831653b2a97480d..7045c3a56def4921e88801b7cc098ef10bd55210 100644 GIT binary patch literal 5166 zcmcJTXH*pJl7O46Fd%6pNRE<*j36+AWC1~fWG29X=ny0$;bSBtIf#f#P7)*|d4Q3e zMH!Mxk{l%{L3U*K?Cy_y@9vNL^?9qiPrawBtLi+bx~tq>T|EKdkQD#`djMdB002WZ z;ohGhL1cyegl6D#XezvnF&0; zuuOOx0FaqzI-yYp5Qw;@7aA=kAt?{@RuI=jJVF^EJW;U!t#tNAXd=*P$s6~jbUa*P zW`+t9Fi+111U1Z552hd?u7O4w8bRFu#Pe@A2$22poFG|*w6G8y?;yxU1OPz)^8ZQ; zvFV@aNwY4ZH~14h5%SOTq$b)@noJL11kYg}PL3`JG|bHthVn$fkWMcDOmC@o>5K@- zA_aVjJmB#3PV77udm4oSYrjE!bA!Vx5OC7l67YH2;YgoBomlZ9yC0Wj1GKWWNiO${kFF4c( z+DY$N-F8yEzKI7Mn9NCkn@|v0$ifaO#;guCJ+Eeg3L)Zb9EkN z?G|^{Hi=ah2ASfln%1X37L3c{reDtq9R$u8+SU78%~qZHwI4ULN%QP%gdOPQma_)*4Z6Xwh)y#t_>7 zrT@DhEwida5%IchxXH~L`HbXqkBr&Y_Zo31>EDyDrOx};0_&(}mEP_Wd?#fw$D{+K z-|k)du6jwJW3*SrNCvO(Y*dpb{|>!9mHdDcD%b;stfvP)&CL(oFDp5OTA(GGoR=wg z@Sl{MosW9Im$k$!vHLqOeKsy zlKTIKiuIpB1=Cmi7h43h0AirvztFP4U7!_0K+6{S2Q4?`f1;Jp_m9zfcI4H?OC}Q* zf{7BMw5LxP?84#*Y|{746ITTz52-<1S#wxyMJk3$o050K9u6ywwBHUb~+A0jL>JCDSIxgb0R`C%tl$RE~TRayg|gbj;gu zs*-5H%?-0Rn-vghL3^2R41>uAKkF2^e3Q+dJgE~iM@&Sc5`UXWItFnbxU@~7LX*U% zM|oFKLShm5SR1Swkrl=z)4{^LaSJ=x)eaAug9oco>i@*zm@6*DXeNJFSul=${dvI**}X?ao%>Y0+Se^@lzWu~QH z|KwJcV*fEh^=C1SX9S*I?-L^4bhJ*f_Qw~TnTFtI9PBp~wRFJK6f!&gPQepeHC^o= z*0LZ=*TgQO-o(LofZw$0oW6Qu(7!eCJmY?5bF6&neMl}HgesNg^;0S|rgu;2) zUW52FLT1M}_YV8Et2WN$&a2{kTacM43bRlz)YCwtFP0}Gu~7uNCL+I9XH>fvDi2?Q z`qvs8Z0OVLZ#qvyC#}{S@gk*oz*q}J4dfP;qAzMap=1dxUz9wRKXm>10s!`8CVEaD zo*-jScND@I<*wu6;7YIV>V-u6aiN`D9--_B7Y|PYNJ=1JS%6TZK3UGXvYCNzDIQKm zZBBX3^TkdlW!E^(^XYGpzZIy7VejUXi7k0DeG}&F;N!UATFKOl-JROR;02!$vgz z+%AUrNelPaq35vIAYzZyHviPdJz5)3ME07(3nA&6_Xps$jsvo_F0a2RHPu`AV;-93 zAoe|lkAGBG^UtPTJ(Ul8De|@9d|9iCde%7Eqi{4>!6=1<{B>MCb|g)w^FRX=Bu`~i zlRh-Ztnc&oIg>)29htgJ)DzCN#{4vv%RtD=!w^cr$C-lE6U$^;!}I%ienIy#A~MEZ zDz9K79!f`6^)$B|>efwTbKK>jA$c!4_okk0-NFUFx46R^oGw)FK0yB^?S7iN3B+jy zPQ|We%*8Y1()LYZV*T^v>ItKem)~&p7RUaErcFI)yk*2qAsIv+;iN_CZjwfyUW%P_L>KVu)`2xI_m7YD?PZjue1(h2BGQxMxsSKhhr?# z)=JBvbZ1-Zj(=gY!>oP+8+jRn8>A=sA+a<*pq#W~s)?kL9qpSCIS3 ziQRHcP#VILae1Qc)TvHkbdP6vDMVB0S7z^`PXX790MPBVA3QhPo((DOZkONK1$({^ zq0yDvHD58vv!fq{I}J4k_4(M8-s?Wv>b9EQ6Mk;tE!L7$x1MZVIC4_H$9c3!G1(Q$ zI5)L@O;V_h&WJ-Bp?Zfwlz)LalU)BSU-l`q{;()xNrH0VPF@v)S&x)>@|Z%t8#iom{kOc^6i8N;U@KF~)KXhYTvbvuHGX zms%D)Cpz)AT`xj{on?uHulk`H?+BS)XaBM_@8<@m#Nn6RAAl%*L1A@&$u|zP%J@j8 zk#dL01V(LVurgi>mPX`L_;I^2tu9p{cjeWB#s1yx)#{%rYHigk!((sI9FmELrXNx_ zg7yq=ifXP_`{}KeaqhP#MFIg|YGq6xKeCCQ%i*jTbY`%FSbCK)^Db(|92eU)FPh|j zV75!=obC>mr#fMkJUS}vJY(thT3xsm9~d7Y8~OWFtr^k`V2;I?ukpA7XNs=)>=?iJ z^$1U;I6ns8ovtfJ83N#<@|S9=M z;FR|RjiY0CJ4k`KvoJTQiK+QI#0D)sApCh>_5QBdytT1BID0jE#FJ0g_*O?wU#-XU zdRno#_wEcIRB~-YbdVOc2A>NoCE zBK;kGgw;7%s%|Kxi*|gws~|%?v)JgO6G-wtI48z}X~*!Y{=F{CHtA2tWx?%FsRNq0 z1s;EU{sK40NTH~2wmKlMyc4=BGT?Wu@%||Iv)ecKYFRc7iWrR>qjNM{{o`Se^ndPq z-sH(okFBI{zW?(lt&+I8v7>9<+cBDBq98@K64L2*v=wPfbT0`;CwElB08Qj_%B{4hv-o|p_#z989@+(=` zR5D0iV*{3J;SQ*T+TBiO$+bq^Uu_kx{!(@E^5Y$?ox(fs0$Y&{F1`=M>n!wInuV|=Z$k;2qdepE-)aLA>BuwmBkIaupcb%}Q( z+~Ikc0$&AaDj1omj3Td84N_-Iti+3Qrl2h3NLs2MkVhW+n$=!C9rAW1bwGBPQ=Q6= zW+z+x+ysfwb$3cO;y5#D_V3bf5Pmt!vR0HYoB`vTJug<6bxs44+9Ui8MaVk_%bP;EdVH zUA_4({ng`fXQz!AT)h>3TPOYs1Rfz{&7|(v_QG*r$X6yv87~;Y_GEG0RM6Ue(3G@% zk0fR!RzCb2;G8U)29lyKx<);9VmhNd=4QkAO&o>sM~n6?MMWUZOX)?;Y(>Q;^aXn) zZo5k*%HD3c-ZJsV2FYAw&<rFWq>)*>2F{ z)zqa%71l4`?Rgr`n!dhyJ6#8^Xo662G18rpmdo)hI zC(rek8cOejrj+8xT@_n#y|CSO&uLjE^IKUYPi9Lj+wa|aye%*IYN)Dgax=y;jU=S; z5bdh1H)fphB5yS^%tp4+_p=p`Ju>m*FRGio!a~2Z6@(io*v)^PyXMdrpd-aI)cJ)~ zKP>9#%xAigta9>CGwF0rd+F6jx8h(dJ^x z#21KABpSFJ9NhWrL1$Racgx!7T@T4CYUv_P>$;`cmzm>Y>%#e)aHeCR9C@@_OK#hZj`Z#zPa>3WnzkJ`XH@&2E?ELZB<9FgQ>@f0bOx{ z#8kQ)`qA|XaJ1S>4DB5g$TG)a&#ztF)<_4`HjGuBKnh8gjvC>or$Fm-FHzq#CF6~d z6oX)`6+6s=2I!l;oBUo!oi*?@s*yythox8vR5PV%6^^!^DD^) zYYPm59JhkznO$$ZmIu5;G{1IQSCw}$Rh_QHR!7fqWrj%SJFU^foSV5$#-x8q?t6ia z@MC3b+0_zY#+`p)qfk|REfW}yOic6b}r6&vXBByvC44jL-9UDsC{XBD(A+hmsJ~;kVZF^Fo-o-=T9YLK6ZMT{IyVQzOEx<)R7sTc$_XYs$gX7H zw`3c}zC@2ae>{Ia&v|~|bME=x^ZlNCKd<}G``phP>W{c zG{V481oMylKPUyj|7b3V0O0L8OyYT5Pyqma%l|eiS^mF?D7Y``W&TYBlKNLqW~>Rl z$AW~PGr~Pkj;=OnxVtAD;b{Z6MY#fxbT1*v0B#Dv7gQAQd?(F}wIkE&_85Wdo+&>Q zcepOkD*BCXRU7%YOzkMP%<3@l)RX#TzXAdQfSR(Crv|o z9ZM(5+EMjN!?!Q`%4>1XB`#zJk;7OT@ND?k*hes0NW(lcW=bEp$O>kX%p~E4YcIrtn1>luX6| zSZaC)RE*f%mFyCYVBrp7B_R!}s`#ORjN`ZFnD}Mq=~<mHzOM%NO4aG- zW}QL@G3gd2+6~rIxVmyaMwKlK>c;_j%`|ZDr9#BRu<%M@DGfne3lBJ_{4hLIu0^OY zN=)v}{)qa08WBmu@EesKjTl#0$T5mI<04w{V9%V*^f!5I>kI!u!_c|W*g8fFyl{BG z82s$+nV5rdMyCs}npsWv&Le2&>t7wY`}!N2j&m5|beG7FYPHqgG2WXcKD~^?I-jqYO(dfm#w#e}|sLW2wewn~3hHCNh|2XjeZ_G+U0F6%TO zUGI-w#vbq}K4tl~CJ@(m4QBVD@o>P5^--?xUFfb(uc1{2?a^z|ty@qX9&wXLF)&`s z8yQa4&jR;u(uhd8%4|-A>?-bjl6GqO9xeH-*`7)B26_ll6|JKPX*a(pif>2=kuLPc+D)pcVo`lKg#Q&CGAK5 z4p?71#c7%I#yxT2c-H^MF#JOkVSJ~C z3Tm61*U8|~scC3k=75qae|XjDg|`Uu4A-4ecFS-}>VW_tY+&+O*A250G4ocg%Gg7m zuOI=l7`P&5HLE|RV6o420E=Fi!g`=R1V^_vq*X&?#Tl_|M;ppnk@I6R&5D`ecvg;C zx7#RHt!Ilr~6ifqiK{X2G&7zYko< zT9%!rICZ^sIb~-)DYGe@4CaCTZ4=*ipKqvi5VkG))JCX-{JqjMo!t8=u#`64sk^jy z^9hv^r6R(-B{Kfyglyt7f96yN1d|UNd>Hq~GGzs4=d%qqg*(o*&5bX8Te^SChCdX~ z%a(JKXIim3?;5Xg=3?$(A#8r#{2)tFx3fFSgGv)w*^*17y<(+7vDI(!{;YOQ-aV9z zkmgbQ@?DUQG)Lg7YT2&t-3aqbQJH8{QT^4{@Mq5>e)cmzX-SbRh;b`kB!3DrL>2kgPdx+o7%Y9mh!!o~%G(QH6_twUwyFVFVVZ+S6?fgkzVFVX!m~f%7pV#K0{^#-3|Re;5t}v=%ElT z7m?)BO)^>qE^hpGJH&86_Mp$#LB5wzL&K0*=ixZ)5qR*YuX=fH{JGlSAd*D@z;2NO zRTj}t56(_c4!R+Nv)&;T%ZhU$;Ofn0DTp;0<~Yp%a@NBJr1Tfkz|-bsWe6Y(!ITWv z?j%^m-L)=Rc>0;kZTb$KU)>|1m$4_F1LJ=zxF{UdJ>U#tk7x$6N)+JLUkjXkyDlRV z>SdJS4oZrkAOUe7|D$6bWm(P{KxOmiVhipu&j-e>=Tvwzwcl$4cA&a@1NwZ~5RxVK zVWh6yq>-T}C(v{gSl1z`j5>+dTp1DyO1%~>ZwC@$=zAU78Y`m?OYB0cl$v=05+5Uz19J0RVmmB_5QXW+zFdq=r?Ke!-!eMjugAf4De5yQ69K6eCEo< zQ~8+TZB;QNHreGS;`Rjrvso@a;8)DVV!kU4`u2p#vTb0ZYk9p?iC+!ec(i?#IbRba z{D6Pb<$at~GMGyW2yg&Ra*2z^QR{!*AyLW3c@Wa}Q<;3ytAAL`U-qEqTeyF=y{xRQ z6jfLk->YB{@j*Ghs zw2!BGApY+=>jgjG7I7Rplub>OOSQyEoV|Jas~(9P(PVtL_gNzz9&_tWd+8Bvld432 z$BjX2Kcg&t*UQOPlqS|@Oa-IdjwU0QTNlT3h~0rFd-ce)c!4+9_G%q+0$$sXXT}Rq zLL6f2z|}Qlh0+!YjMYC=U_bsgg=;VLpvQ3|-=g2Nsb+D<4NfkM(e(K@8!Mu~Q@)ar zCTaOb4Qr`j#Z+>OXdjuKlt?OCx~ST^W<@6G3NMZpi2g`{O|RQ!Ty>oK?HIQEiC?38 zGw5s^Z|L!3VM}kO$M0N@7yGU)=>{ZWT(5G+68;i>9|5d%GRx*Odm$k9xt3?t(BH3f zfb@zyU&~8t0YM_=YB+Eu0TW3-zhz@xC&Xbg!df7+&Q3a}j2xXg;a>089tk@Myn4!~ z=M1WI`!h0QG4^JjReHTqHSi3YJTQpbf1+m_C?A!?;r_?ckrc+Mqj-L0zPItYbr@kq?|J*4#u zn%=GsM}0YIl|Bno>Loe+oV;;5Job)eHf3~nAQR3z#2J~_X5O{TcUhM`Gm*yhZT7Zv z@D%dOEXFOZ?wWk|y@B?{dY9Zmv)rpTSPH8Flzh_eR*yjqX7x1ATvN6*t7A}M@6tR< zhFP#AjO0_#V+gj-DFxeC@go$g!RxI$coZf2i^QCfAvmCP; zQV*IWHF*L#+XV6E!$wf*XlnR=>DKVDIFY%wg%qLdND;r*R`w>0UJQBC_JC&Z4by-O()FkJd;#oL3 zGnFv7@6zjAZM*c|yW8PM6AE<2jS+;>9Q+W;C8Mu3gtu8nwHj;RA0!x8nlrxMPoaLv z!uB|+wbhC1EfXTWpS0<^otQXz*!E%ywQ$fX`TFFkb<%Azk0qN{OWve{>y*DFbK0Uc z2PcR}cm|5Lc#a+jJ!bFc9I>pd43_B{HBePJ3Mv@hPzmdyP3m@5aw^?n447&vq5H!y zHjsStk5p*h`mt7|-pXDFsR;EU4avv^ZvyYZYc_pw?8{abX=mY6eC;KexMm4M>^^C} zgC6Yus~Fs2P^dTkkt%8BJ%cn>#bo=R_Zq@O1Pa~XqbL+6sh?Z5cwcoNfsztzeW3rc za#F%P@~y8q)6v7&!GI^tkK-a87J{nFC#ohEE7TLM-~#9x@AvI`T<`O^_x5jXyWiUU*&YZjg!n?hOfd-2r4-8~>pM3qa9z09$o*tweM(!oA?N)P_ zIkz(2Q#C*Si++zNPe*I2SA;&TLA$Hm_5t*;VNpk)2+00r2yf7S*UzVZo$k|vH{)q@ z;vMiiZg-Z9a+o<@ylQZG8D`A=N%5tm8mG1GzO3Co8@-9LpdrNfCrN4Ka*Zm)JSz-8 ze~^{rMAb|xWU1rOqiR*nJYiBiy3!(riXdCv;+OG_%<}3M9$MTKcc&=k9p0i^$eJV=b{nA^gW#@PXI6$O{zsEvTt67~{}mCoOJ~&tFK~OXS)jm58ZY`RRT%dAKqtZuBFy+2_~Wn7pSNY?}jy4ca=@@f8u=!E3K} zs^YpwBk)%Q`7CQ+?0=`0b;e$%)jNb?Uvg+GMe4E3j!4bj0VReu*9u zK{uzUw`dJDH}0zj~#*GL#fc zQ#>fB@Q9M>GY8J+@uy}|^RF~zSM{iw+x{LFlAAjT+9BNa1{2zvyA;Yx4vw zcHHz2T{Z;kjw4nMqSt?h6T`3M>6H<~2m3P=6kp8crjn_ko6gweqP|Xt7W-sqZhz|OZoKx|Yt<))@IkF&@~`UmrxUYx z>$iUA=HN16m2y(6irrD==K=zAd(MHFmicwhg{PeO&Ybc{yi=0;Qv7Q@{`~>|RqB3D zD+PmAf{NK!UsJ_2jBLob(ry`yn)RC2G9u9Qx{Qe*EfQ}&V>CewF-#K%5b7`EX9Q4O zQ?sMlq5|EUTblSdQcfPm+!8g<=c$u6=?g+^pG|qqwyCOPjceJgw7gJJPbE#Re`kSG zn_Jn^$Ujsq_|0Bi#Pp8EL}X+#5^bpYpz8MwR<6Ujpd1wWlA3@+PTnw`xT1nLtUgY{ znxTmT6@5iY1@~j+;-RtG&6^QL0k^HU;Dsj&?&r(=+Y5I^;bO(Va97U#i;ETiKXg~l lo1EVl{(n}-c`f1si|T){F07^Vo5z2Obq>YQ;3F9i{1-pSxNraf From 91ee6d1c60e5fc682c8ddf5468ed2f96321e75c4 Mon Sep 17 00:00:00 2001 From: ntrevisa Date: Tue, 19 Aug 2025 16:31:56 +0200 Subject: [PATCH 20/44] update cfg to use new fake rate --- .../UL/Full2018_v9/WHSS/aliases.py | 92 +++++---- .../UL/Full2018_v9/WHSS/configuration.py | 10 +- .../UL/Full2018_v9/WHSS/cuts.py | 84 +++----- .../UL/Full2018_v9/WHSS/nuisances.py | 183 +++--------------- .../UL/Full2018_v9/WHSS/plot.py | 66 ++----- .../UL/Full2018_v9/WHSS/samples.py | 9 + 6 files changed, 128 insertions(+), 316 deletions(-) diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/aliases.py b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/aliases.py index 7d1f6aa7..5b421b1f 100644 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/aliases.py +++ b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/aliases.py @@ -3,7 +3,6 @@ import inspect # /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2018_v9/WHSS - configurations = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file configurations = os.path.dirname(configurations) # WHSS configurations = os.path.dirname(configurations) # Full2018_v9 @@ -69,80 +68,87 @@ } +# Conept +aliases['Lepton_conept'] = { + 'expr': 'LeptonConePt(Lepton_pt, Lepton_pdgId, Lepton_electronIdx, Lepton_muonIdx, Electron_jetRelIso, Muon_jetRelIso)', + 'linesToAdd': [f'#include "{configurations}/macros/LeptonConePt_class.cc"'], + 'samples': mc + ['Fake', 'DATA', 'DATA_unprescaled'] +} + # Fake leptons transfer factor aliases['fakeW'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess':["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"nominal\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr': 'fr_reader(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples' : ['Fake'] + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"nominal\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] } # And variations - already divided by central values in formulas ! aliases['fakeWEleUp'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess':["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleUp = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"EleUp\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr': 'fr_reader_EleUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples': ['Fake'] + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleUp = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"EleUp\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_EleUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] } aliases['fakeWEleDown'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess':["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleDown = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"EleDown\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr': 'fr_reader_EleDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples': ['Fake'] + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleDown = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"EleDown\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_EleDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] } aliases['fakeWMuUp'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess':["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuUp = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"MuUp\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr': 'fr_reader_MuUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples': ['Fake'] + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuUp = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"MuUp\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_MuUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] } aliases['fakeWMuDown'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess':["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuDown = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"MuDown\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr': 'fr_reader_MuDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples': ['Fake'] + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuDown = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"MuDown\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_MuDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] } aliases['fakeWStatEleUp'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess':["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleUp = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"StatEleUp\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr': 'fr_reader_StatEleUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples': ['Fake'] + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleUp = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"StatEleUp\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_StatEleUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] } aliases['fakeWStatEleDown'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess':["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleDown = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"StatEleDown\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr': 'fr_reader_StatEleDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples': ['Fake'] + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleDown = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"StatEleDown\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_StatEleDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] } aliases['fakeWStatMuUp'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess':["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuUp = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"StatMuUp\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr': 'fr_reader_StatMuUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples': ['Fake'] + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuUp = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"StatMuUp\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_StatMuUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] } aliases['fakeWStatMuDown'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess':["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuDown = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"StatMuDown\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr': 'fr_reader_StatMuDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples': ['Fake'] + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuDown = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"StatMuDown\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_StatMuDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] } # Charge-flip efficiencies and uncertainties aliases['ttHMVA_eff_flip_2l'] = { - 'linesToAdd': ['#include "%s/macros/flipper_eff_class.cc"' % configurations], - 'linesToProcess': ["ROOT.gInterpreter.Declare('flipper_eff flipper = flipper_eff(\"UL_2018\", 2, \"Total_SF\", \"false\");')"], + 'linesToAdd' : [f'#include "{configurations}/macros/flipper_eff_class.cc"'], + 'linesToProcess' : ["ROOT.gInterpreter.Declare('flipper_eff flipper = flipper_eff(\"UL_2018\", 2, \"Total_SF\", \"false\");')"], 'expr' : 'flipper(Lepton_pt, Lepton_eta, Lepton_pdgId)', - 'samples': ['DY','ChargeFlip'], + 'samples' : ['DY','ChargeFlip'], } aliases['ttHMVA_eff_err_flip_2l'] = { - 'linesToAdd': ['#include "%s/macros/flipper_eff_class.cc"' % configurations], - 'linesToProcess': ["ROOT.gInterpreter.Declare('flipper_eff flipper_unc = flipper_eff(\"UL_2018\", 2, \"Total_SF\", \"false\");')"], + 'linesToAdd' : [f'#include "{configurations}/macros/flipper_eff_class.cc"'], + 'linesToProcess' : ["ROOT.gInterpreter.Declare('flipper_eff flipper_unc = flipper_eff(\"UL_2018\", 2, \"Total_SF\", \"false\");')"], 'expr' : 'flipper_unc(Lepton_pt, Lepton_eta, Lepton_pdgId)', - 'samples': ['DY','ChargeFlip'], + 'samples' : ['DY','ChargeFlip'], } diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration.py b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration.py index 08bba064..259d6beb 100644 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration.py +++ b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration.py @@ -2,8 +2,12 @@ import sys,inspect -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/ +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/ configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file configurations_nuisance = os.path.dirname(configurations_nuisance) # WHSS configurations_nuisance = os.path.dirname(configurations_nuisance) # Full2018_v9 @@ -19,7 +23,9 @@ outputFile = "mkShapes__{}.root".format(tag) # Path to ouput folder -outputFolder = "../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +if site == 'kit': + outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" # Path to batch folder (used for condor submission) batchFolder = "condor" diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/cuts.py b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/cuts.py index 2d30dd5d..6ca99fa5 100644 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/cuts.py +++ b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/cuts.py @@ -23,15 +23,9 @@ # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', 'minus_pt2ge20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - 'minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT >= 20 GeV) - 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT < 20 GeV) - 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # 'minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', } } @@ -42,15 +36,9 @@ # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', 'minus_pt2ge20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - 'minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT >= 20 GeV) - 'SS_CR_plus_pt2ge20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2ge20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT < 20 GeV) - 'SS_CR_plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # 'minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', } } @@ -61,15 +49,9 @@ # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', 'minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT >= 20 GeV) - 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT < 20 GeV) - 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', } } @@ -83,15 +65,9 @@ # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', 'minus_pt2ge20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - 'minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT >= 20 GeV) - 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT < 20 GeV) - 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # 'minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', } } @@ -102,15 +78,9 @@ # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', 'minus_pt2ge20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - 'minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT >= 20 GeV) - 'SS_CR_plus_pt2ge20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2ge20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT < 20 GeV) - 'SS_CR_plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # 'minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', } } @@ -121,15 +91,9 @@ # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', 'minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT >= 20 GeV) - 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT < 20 GeV) - 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', } } @@ -151,9 +115,9 @@ # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20', 'minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20', - 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20', + # 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20', } } @@ -164,9 +128,9 @@ # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20', 'minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20', - 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20', + # 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20', } } diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/nuisances.py b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/nuisances.py index 1f2ee96f..ecf92ca6 100644 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/nuisances.py +++ b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/nuisances.py @@ -65,12 +65,13 @@ def makeMCDirectory(var=''): #### FAKES -fake_syst_endcap = ['1.0*(abs(Lepton_eta[1])<=1.4) + 1.3*(abs(Lepton_eta[1])>1.4)', - '1.0*(abs(Lepton_eta[1])<=1.4) + 1.0/1.3*(abs(Lepton_eta[1])>1.4)'] +fake_syst_endcap = ['1.0*(abs(Lepton_eta[1])<=1.479) + 1.1*(abs(Lepton_eta[1])>1.479)', + '1.0*(abs(Lepton_eta[1])<=1.479) + 1.0/1.1*(abs(Lepton_eta[1])>1.479)'] -fake_syst_barrel = [' 1.3*(abs(Lepton_eta[1])<=1.4) + 1.0*(abs(Lepton_eta[1])>1.4)', - '1.0/1.3*(abs(Lepton_eta[1])<=1.4) + 1.0*(abs(Lepton_eta[1])>1.4)'] +fake_syst_barrel = [' 1.1*(abs(Lepton_eta[1])<=1.479) + 1.0*(abs(Lepton_eta[1])>1.479)', + '1.0/1.1*(abs(Lepton_eta[1])<=1.479) + 1.0*(abs(Lepton_eta[1])>1.479)'] +# Systematic uncertainty splitted into barrel and endcap, and per final state: 10% per bin nuisances['fake_syst_mm_barrel'] = { 'name' : 'CMS_WH_hww_fake_syst_mm_barrel', 'kind' : 'weight', @@ -128,6 +129,28 @@ def makeMCDirectory(var=''): 'cuts' : [cut for cut in cuts if ('_ee_' in cut)] } +# Overall 30% normalization: split per charge +nuisances['fake_syst_plus'] = { + 'name' : 'CMS_WH_hww_fake_syst_plus_2018', + 'kind' : 'weight', + 'type' : 'lnN', + 'samples' : { + 'Fake' : 1.3, + }, + 'cuts' : [cut for cut in cuts if ('_plus_' in cut)] +} +nuisances['fake_syst_minus'] = { + 'name' : 'CMS_WH_hww_fake_syst_minus_2018', + 'kind' : 'weight', + 'type' : 'lnN', + 'samples' : { + 'Fake' : 1.3, + }, + 'cuts' : [cut for cut in cuts if ('_minus_' in cut)] +} + + +# Statistical and systematic uncertainty on the fake rates nuisances['fake_ele'] = { 'name' : 'CMS_WH_hww_fake_e_2018', 'kind' : 'weight', @@ -682,158 +705,6 @@ def makeMCDirectory(var=''): 'cuts' : [cut for cut in cuts if '1j' in cut], } -# Nonprompt leptons normalization from control region - split per charge -nuisances['Nonpromptee2jnorm_plus'] = { - 'name' : 'CMS_hww_Nonpromptee2jnorm_plus', - 'samples' : { - 'Fake_ee' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [ - 'hww2l2v_13TeV_WH_SS_ee_2j_plus_pt2ge20', - 'hww2l2v_13TeV_WH_SS_ee_2j_plus_pt2lt20', - 'hww2l2v_13TeV_WH_SS_ee_2j_SS_CR_plus_pt2ge20', - ], -} -nuisances['Nonpromptee2jnorm_minus'] = { - 'name' : 'CMS_hww_Nonpromptee2jnorm_minus', - 'samples' : { - 'Fake_ee' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [ - 'hww2l2v_13TeV_WH_SS_ee_2j_minus_pt2ge20', - 'hww2l2v_13TeV_WH_SS_ee_2j_minus_pt2lt20', - 'hww2l2v_13TeV_WH_SS_ee_2j_SS_CR_minus_pt2ge20', - ], -} - -nuisances['Nonpromptee1jnorm_plus'] = { - 'name' : 'CMS_hww_Nonpromptee1jnorm_plus', - 'samples' : { - 'Fake_ee' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [ - 'hww2l2v_13TeV_WH_SS_ee_1j_plus_pt2ge20', - 'hww2l2v_13TeV_WH_SS_ee_1j_plus_pt2lt20', - 'hww2l2v_13TeV_WH_SS_ee_1j_SS_CR_plus_pt2ge20', - ], -} -nuisances['Nonpromptee1jnorm_minus'] = { - 'name' : 'CMS_hww_Nonpromptee1jnorm_minus', - 'samples' : { - 'Fake_ee' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [ - 'hww2l2v_13TeV_WH_SS_ee_1j_minus_pt2ge20', - 'hww2l2v_13TeV_WH_SS_ee_1j_minus_pt2lt20', - 'hww2l2v_13TeV_WH_SS_ee_1j_SS_CR_minus_pt2ge20', - ], -} - - -nuisances['Nonpromptem2jnorm_plus'] = { - 'name' : 'CMS_hww_Nonpromptem2jnorm_plus', - 'samples' : { - 'Fake_em' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [ - 'hww2l2v_13TeV_WH_SS_em_2j_plus_pt2ge20', - 'hww2l2v_13TeV_WH_SS_em_2j_plus_pt2lt20', - 'hww2l2v_13TeV_WH_SS_em_2j_SS_CR_plus_pt2ge20', - ], -} -nuisances['Nonpromptem2jnorm_minus'] = { - 'name' : 'CMS_hww_Nonpromptem2jnorm_minus', - 'samples' : { - 'Fake_em' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [ - 'hww2l2v_13TeV_WH_SS_em_2j_minus_pt2ge20', - 'hww2l2v_13TeV_WH_SS_em_2j_minus_pt2lt20', - 'hww2l2v_13TeV_WH_SS_em_2j_SS_CR_minus_pt2ge20', - ], -} - -nuisances['Nonpromptem1jnorm_plus'] = { - 'name' : 'CMS_hww_Nonpromptem1jnorm_plus', - 'samples' : { - 'Fake_em' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [ - 'hww2l2v_13TeV_WH_SS_em_1j_plus_pt2ge20', - 'hww2l2v_13TeV_WH_SS_em_1j_plus_pt2lt20', - 'hww2l2v_13TeV_WH_SS_em_1j_SS_CR_plus_pt2ge20', - ], -} -nuisances['Nonpromptem1jnorm_minus'] = { - 'name' : 'CMS_hww_Nonpromptem1jnorm_minus', - 'samples' : { - 'Fake_em' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [ - 'hww2l2v_13TeV_WH_SS_em_1j_minus_pt2ge20', - 'hww2l2v_13TeV_WH_SS_em_1j_minus_pt2lt20', - 'hww2l2v_13TeV_WH_SS_em_1j_SS_CR_minus_pt2ge20', - ], -} - -nuisances['Nonpromptmm2jnorm_plus'] = { - 'name' : 'CMS_hww_Nonpromptmm2jnorm_plus', - 'samples' : { - 'Fake_mm' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [ - 'hww2l2v_13TeV_WH_SS_noZveto_mm_2j_plus_pt2ge20', - 'hww2l2v_13TeV_WH_SS_noZveto_mm_2j_plus_pt2lt20', - 'hww2l2v_13TeV_WH_SS_noZveto_mm_2j_SS_CR_plus_pt2ge20', - ], -} -nuisances['Nonpromptmm2jnorm_minus'] = { - 'name' : 'CMS_hww_Nonpromptmm2jnorm_minus', - 'samples' : { - 'Fake_mm' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [ - 'hww2l2v_13TeV_WH_SS_noZveto_mm_2j_minus_pt2ge20', - 'hww2l2v_13TeV_WH_SS_noZveto_mm_2j_minus_pt2lt20', - 'hww2l2v_13TeV_WH_SS_noZveto_mm_2j_SS_CR_minus_pt2ge20', - ], -} - -nuisances['Nonpromptmm1jnorm_plus'] = { - 'name' : 'CMS_hww_Nonpromptmm1jnorm_plus', - 'samples' : { - 'Fake_mm' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [ - 'hww2l2v_13TeV_WH_SS_noZveto_mm_1j_plus_pt2ge20', - 'hww2l2v_13TeV_WH_SS_noZveto_mm_1j_plus_pt2lt20', - 'hww2l2v_13TeV_WH_SS_noZveto_mm_1j_SS_CR_plus_pt2ge20', - ], -} -nuisances['Nonpromptmm1jnorm_minus'] = { - 'name' : 'CMS_hww_Nonpromptmm1jnorm_minus', - 'samples' : { - 'Fake_mm' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [ - 'hww2l2v_13TeV_WH_SS_noZveto_mm_1j_minus_pt2ge20', - 'hww2l2v_13TeV_WH_SS_noZveto_mm_1j_minus_pt2lt20', - 'hww2l2v_13TeV_WH_SS_noZveto_mm_1j_SS_CR_minus_pt2ge20', - ], -} - ## Use the following if you want to apply the automatic combine MC stat nuisances. nuisances['stat'] = { 'type' : 'auto', diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/plot.py b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/plot.py index d8187402..2959e352 100644 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/plot.py +++ b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/plot.py @@ -54,46 +54,18 @@ 'samples' : ['WZ'] } -# groupPlot['Vg'] = { -# 'nameHR' : "V#gamma", -# 'isSignal' : 0, -# 'color' : 810, # kOrange + 10 -# 'samples' : ['Wg','Zg'] -# } - -groupPlot['Zg'] = { - 'nameHR' : "Z#gamma", +groupPlot['Vg'] = { + 'nameHR' : "V#gamma", 'isSignal' : 0, 'color' : 810, # kOrange + 10 - 'samples' : ['Zg'] -} - -groupPlot['Wg'] = { - 'nameHR' : "W#gamma", - 'isSignal' : 0, - 'color' : 859, - 'samples' : ['Wg'] -} - -# groupPlot['VgS'] = { -# 'nameHR' : "V#gamma*", -# 'isSignal' : 0, -# 'color' : 412, # kGreen - 9 -# 'samples' : ['ZgS','WgS'] -# } - -groupPlot['WgS'] = { - 'nameHR' : "W#gamma*", - 'isSignal' : 0, - 'color' : 409, # kGreen - 9 - 'samples' : ['WgS'] + 'samples' : ['Vg'] } -groupPlot['ZgS'] = { - 'nameHR' : "Z#gamma*", +groupPlot['VgS'] = { + 'nameHR' : "V#gamma*", 'isSignal' : 0, - 'color' : 617, - 'samples' : ['ZgS'] + 'color' : 412, # kGreen - 9 + 'samples' : ['VgS'] } groupPlot['Higgs'] = { @@ -162,32 +134,16 @@ 'scale' : 1.0 } -plot['Zg'] = { - 'nameHR' : 'Zg', +plot['Vg'] = { + 'nameHR' : 'Vg', 'color' : 859, # kAzure -1 'isSignal' : 0, 'isData' : 0, 'scale' : 1.0 } -plot['Wg'] = { - 'nameHR' : 'Wg', - 'color' : 859, # kAzure -1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['ZgS'] = { - 'nameHR' : 'ZgS', - 'color' : 617, # kViolet + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['WgS'] = { - 'nameHR' : 'WgS', +plot['VgS'] = { + 'nameHR' : 'VgS', 'color' : 859, # kAzure -1 'isSignal' : 0, 'isData' : 0, diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/samples.py b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/samples.py index 927b814e..b08c7c4c 100644 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/samples.py +++ b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/samples.py @@ -18,7 +18,14 @@ ###### Tree base directory for the site ###### ############################################## +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' + treeBaseDir = '/eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano' +if site == 'kit': + treeBaseDir = '/ceph/ntrevisa/HWWNano' limitFiles = -1 def makeMCDirectory(var=''): @@ -35,6 +42,8 @@ def makeMCDirectory(var=''): useXROOTD = True redirector = 'root://eoscms.cern.ch/' +if site == 'kit': + redirector = '' def nanoGetSampleFiles(path, name): _files = s.searchFiles(path, name, redirector=redirector) From b9e208f32e31b9f92d0fb57957f87c729f7ccfd2 Mon Sep 17 00:00:00 2001 From: ntrevisa Date: Tue, 19 Aug 2025 16:32:58 +0200 Subject: [PATCH 21/44] fake rate evaluation macro to use cone pT and the same recoiling jet pT everywhere --- .../UL/macros/fake_rate_reader_class.cc | 420 ++++++++++-------- 1 file changed, 230 insertions(+), 190 deletions(-) diff --git a/WH_chargeAsymmetry/UL/macros/fake_rate_reader_class.cc b/WH_chargeAsymmetry/UL/macros/fake_rate_reader_class.cc index baa5e14d..352c0a0f 100644 --- a/WH_chargeAsymmetry/UL/macros/fake_rate_reader_class.cc +++ b/WH_chargeAsymmetry/UL/macros/fake_rate_reader_class.cc @@ -38,6 +38,7 @@ class fake_rate_reader{ fake_rate_reader( TString year , TString ele_WP, TString muon_WP, float ele_WP_number, float muon_WP_number, TString kind, uint nLeptons, TString electron_tight_charge, TString mkShapesRDF_base ); // std::tuple GetFR_2l( double pt1 , double eta1, double pdg1, double isTight1, double pt2 , double eta2, double pdg2, double isTight2); + std::tuple GetRate(TH2F* fake_rate_histo, double pt, double eta, double lepton_pt_max); float GetFR_2l( double pt1 , double eta1, double pdg1, double isTight1, double pt2 , double eta2, double pdg2, double isTight2, TH2F* fake_rate_ele_, TH2F* fake_rate_muon_, TString stat); float GetFR_3l( double pt1 , double eta1, double pdg1, double isTight1, double pt2 , double eta2, double pdg2, double isTight2, double pt3 , double eta3, double pdg3, double isTight3, TH2F* fake_rate_ele_, TH2F* fake_rate_muon_, TString stat); @@ -80,36 +81,36 @@ class fake_rate_reader{ int isTight_[3]; float operator()(RVecI Lepton_pdgId, - RVecF Lepton_pt, - RVecF Lepton_eta, - RVecI Lepton_isTightMuon_cut_Tight_HWWW, - RVecI Lepton_isTightElectron_mvaFall17V2Iso_WP90, - RVecF Lepton_mvaTTH_UL, - RVecF Muon_mvaTTH, - RVecI Lepton_muonIdx, - RVecF CleanJet_pt, - int nCleanJet - ){ + RVecF Lepton_pt, + RVecF Lepton_eta, + RVecI Lepton_isTightMuon_cut_Tight_HWWW, + RVecI Lepton_isTightElectron_mvaFall17V2Iso_WP90, + RVecF Lepton_mvaTTH_UL, + RVecF Muon_mvaTTH, + RVecI Lepton_muonIdx, + RVecF CleanJet_pt, + int nCleanJet + ){ double SF = 1.; isTight_[0] = 0; isTight_[1] = 0; isTight_[2] = 0; - + // Build tight lepton definitions for (unsigned int i = 0; i < nLeptons_ ; i++) { if (TMath::Abs(Lepton_pdgId[i]) == 11) if (Lepton_isTightElectron_mvaFall17V2Iso_WP90[i] == 1 && Lepton_mvaTTH_UL[i] > ele_WP_number_) - isTight_[i] = 1; + isTight_[i] = 1; if (TMath::Abs(Lepton_pdgId[i]) == 13) if (Lepton_isTightMuon_cut_Tight_HWWW[i] == 1 && Muon_mvaTTH[Lepton_muonIdx[i]] > muon_WP_number_) - isTight_[i] = 1; + isTight_[i] = 1; } - + // Case 2 leptons if (nLeptons_ == 2){ - + // Calculate the per-event fake rate float fakeWeight_2l0j = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], @@ -123,66 +124,73 @@ class fake_rate_reader{ Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], fake_rate_ele_35_, fake_rate_muon_35_, "Nominal"); - float fakeWeight = fakeWeight_2l0j*( nCleanJet == 0 || CleanJet_pt[0] < 30) + - fakeWeight_2l1j*((nCleanJet == 1 && CleanJet_pt[0] >= 30) || - (nCleanJet > 1 && CleanJet_pt[0] >= 30 && CleanJet_pt[1] < 30)) + - fakeWeight_2l2j*( nCleanJet > 1 && CleanJet_pt[1] >= 30); - + // float fakeWeight = + // fakeWeight_2l0j*( nCleanJet == 0 || CleanJet_pt[0] < 30) + + // fakeWeight_2l1j*((nCleanJet == 1 && CleanJet_pt[0] >= 30) || + // (nCleanJet > 1 && CleanJet_pt[0] >= 30 && CleanJet_pt[1] < 30)) + + // fakeWeight_2l2j*( nCleanJet > 1 && CleanJet_pt[1] >= 30); + + float fakeWeight = fakeWeight_2l1j; + if (kind_ == "nominal") return fakeWeight; - + // Calculate the per-event fake rate - EleUp if (kind_ == "EleUp"){ float fakeWeight_2l0jElUp = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], - Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], - fake_rate_ele_45_, fake_rate_muon_20_, "Nominal"); + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_45_, fake_rate_muon_20_, "Nominal"); float fakeWeight_2l1jElUp = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], - Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], - fake_rate_ele_45_, fake_rate_muon_25_, "Nominal"); + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_45_, fake_rate_muon_25_, "Nominal"); float fakeWeight_2l2jElUp = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], - Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], - fake_rate_ele_45_, fake_rate_muon_35_, "Nominal"); + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_45_, fake_rate_muon_35_, "Nominal"); float fakeWeightEleUp = 0.; if (fakeWeight != 0.){ - float num = fakeWeight_2l0jElUp*( nCleanJet == 0 || CleanJet_pt[0] < 30) + - fakeWeight_2l1jElUp*((nCleanJet == 1 && CleanJet_pt[0] >= 30) || - (nCleanJet > 1 && CleanJet_pt[0] >= 30 && CleanJet_pt[1] < 30)) + - fakeWeight_2l2jElUp*( nCleanJet > 1 && CleanJet_pt[1] >= 30); - + // float num = + // fakeWeight_2l0jElUp*( nCleanJet == 0 || CleanJet_pt[0] < 30) + + // fakeWeight_2l1jElUp*((nCleanJet == 1 && CleanJet_pt[0] >= 30) || + // (nCleanJet > 1 && CleanJet_pt[0] >= 30 && CleanJet_pt[1] < 30)) + + // fakeWeight_2l2jElUp*( nCleanJet > 1 && CleanJet_pt[1] >= 30); + float num = fakeWeight_2l1jElUp; + fakeWeightEleUp = num / fakeWeight; } - + return fakeWeightEleUp; } - - + + // Calculate the per-event fake rate - EleDown if (kind_ == "EleDown"){ float fakeWeight_2l0jElDown = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], - Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], - fake_rate_ele_25_, fake_rate_muon_20_, "Nominal"); + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_25_, fake_rate_muon_20_, "Nominal"); float fakeWeight_2l1jElDown = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], - Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], - fake_rate_ele_25_, fake_rate_muon_25_, "Nominal"); + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_25_, fake_rate_muon_25_, "Nominal"); float fakeWeight_2l2jElDown = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], - Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], - fake_rate_ele_25_, fake_rate_muon_35_, "Nominal"); - + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_25_, fake_rate_muon_35_, "Nominal"); + float fakeWeightEleDown = 0.; if (fakeWeight != 0.){ - float num = fakeWeight_2l0jElDown*( nCleanJet == 0 || CleanJet_pt[0] < 30) + - fakeWeight_2l1jElDown*((nCleanJet == 1 && CleanJet_pt[0] >= 30) || - (nCleanJet > 1 && CleanJet_pt[0] >= 30 && CleanJet_pt[1] < 30)) + - fakeWeight_2l2jElDown*( nCleanJet > 1 && CleanJet_pt[1] >= 30); - + // float num = + // fakeWeight_2l0jElDown*( nCleanJet == 0 || CleanJet_pt[0] < 30) + + // fakeWeight_2l1jElDown*((nCleanJet == 1 && CleanJet_pt[0] >= 30) || + // (nCleanJet > 1 && CleanJet_pt[0] >= 30 && CleanJet_pt[1] < 30)) + + // fakeWeight_2l2jElDown*( nCleanJet > 1 && CleanJet_pt[1] >= 30); + float num = fakeWeight_2l1jElDown; + fakeWeightEleDown = num / fakeWeight; } - + return fakeWeightEleDown; } @@ -190,27 +198,29 @@ class fake_rate_reader{ // Calculate the per-event fake rate - MuUp if (kind_ == "MuUp"){ float fakeWeight_2l0jMuUp = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], - Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], - fake_rate_ele_35_, fake_rate_muon_30_, "Nominal"); + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_35_, fake_rate_muon_30_, "Nominal"); float fakeWeight_2l1jMuUp = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], - Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], - fake_rate_ele_35_, fake_rate_muon_35_, "Nominal"); + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_35_, fake_rate_muon_35_, "Nominal"); float fakeWeight_2l2jMuUp = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], - Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], - fake_rate_ele_35_, fake_rate_muon_45_, "Nominal"); + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_35_, fake_rate_muon_45_, "Nominal"); float fakeWeightMuUp = 0.; if (fakeWeight != 0.){ - float num = fakeWeight_2l0jMuUp*( nCleanJet == 0 || CleanJet_pt[0] < 30) + - fakeWeight_2l1jMuUp*((nCleanJet == 1 && CleanJet_pt[0] >= 30) || - (nCleanJet > 1 && CleanJet_pt[0] >= 30 && CleanJet_pt[1] < 30)) + - fakeWeight_2l2jMuUp*( nCleanJet > 1 && CleanJet_pt[1] >= 30); + // float num = + // fakeWeight_2l0jMuUp*( nCleanJet == 0 || CleanJet_pt[0] < 30) + + // fakeWeight_2l1jMuUp*((nCleanJet == 1 && CleanJet_pt[0] >= 30) || + // (nCleanJet > 1 && CleanJet_pt[0] >= 30 && CleanJet_pt[1] < 30)) + + // fakeWeight_2l2jMuUp*( nCleanJet > 1 && CleanJet_pt[1] >= 30); + float num = fakeWeight_2l1jMuUp; fakeWeightMuUp = num / fakeWeight; } - + return fakeWeightMuUp; } @@ -218,24 +228,26 @@ class fake_rate_reader{ // Calculate the per-event fake rate - MuDown if (kind_ == "MuDown"){ float fakeWeight_2l0jMuDown = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], - Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], - fake_rate_ele_35_, fake_rate_muon_10_, "Nominal"); + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_35_, fake_rate_muon_10_, "Nominal"); float fakeWeight_2l1jMuDown = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], - Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], - fake_rate_ele_35_, fake_rate_muon_15_, "Nominal"); + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_35_, fake_rate_muon_15_, "Nominal"); float fakeWeight_2l2jMuDown = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], - Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], - fake_rate_ele_35_, fake_rate_muon_25_, "Nominal"); + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_35_, fake_rate_muon_25_, "Nominal"); float fakeWeightMuDown = 0.; if (fakeWeight != 0.){ - float num = fakeWeight_2l0jMuDown*( nCleanJet == 0 || CleanJet_pt[0] < 30) + - fakeWeight_2l1jMuDown*((nCleanJet == 1 && CleanJet_pt[0] >= 30) || - (nCleanJet > 1 && CleanJet_pt[0] >= 30 && CleanJet_pt[1] < 30)) + - fakeWeight_2l2jMuDown*( nCleanJet > 1 && CleanJet_pt[1] >= 30); - + // float num = + // fakeWeight_2l0jMuDown*( nCleanJet == 0 || CleanJet_pt[0] < 30) + + // fakeWeight_2l1jMuDown*((nCleanJet == 1 && CleanJet_pt[0] >= 30) || + // (nCleanJet > 1 && CleanJet_pt[0] >= 30 && CleanJet_pt[1] < 30)) + + // fakeWeight_2l2jMuDown*( nCleanJet > 1 && CleanJet_pt[1] >= 30); + float num = fakeWeight_2l1jMuDown; + fakeWeightMuDown = num / fakeWeight; } @@ -246,27 +258,30 @@ class fake_rate_reader{ // Calculate the per-event fake rate - StatEleUp if (kind_ == "StatEleUp"){ float fakeWeight_2l0jstatElUp = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], - Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], - fake_rate_ele_35_, fake_rate_muon_20_, "ElUp"); + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_35_, fake_rate_muon_20_, "ElUp"); float fakeWeight_2l1jstatElUp = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], - Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], - fake_rate_ele_35_, fake_rate_muon_25_, "ElUp"); + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_35_, fake_rate_muon_25_, "ElUp"); float fakeWeight_2l2jstatElUp = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], - Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], - fake_rate_ele_35_, fake_rate_muon_35_, "ElUp"); + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_35_, fake_rate_muon_35_, "ElUp"); float fakeWeightstatEleUp = 0.; if (fakeWeight != 0.){ - float num = fakeWeight_2l0jstatElUp*( nCleanJet == 0 || CleanJet_pt[0] < 30) + - fakeWeight_2l1jstatElUp*((nCleanJet == 1 && CleanJet_pt[0] >= 30) || - (nCleanJet > 1 && CleanJet_pt[0] >= 30 && CleanJet_pt[1] < 30)) + - fakeWeight_2l2jstatElUp*( nCleanJet > 1 && CleanJet_pt[1] >= 30); - + // float num = + // fakeWeight_2l0jstatElUp*( nCleanJet == 0 || CleanJet_pt[0] < 30) + + // fakeWeight_2l1jstatElUp*((nCleanJet == 1 && CleanJet_pt[0] >= 30) || + // (nCleanJet > 1 && CleanJet_pt[0] >= 30 && CleanJet_pt[1] < 30)) + + // fakeWeight_2l2jstatElUp*( nCleanJet > 1 && CleanJet_pt[1] >= 30); + + float num = fakeWeight_2l1jstatElUp; + fakeWeightstatEleUp = num / fakeWeight; } - + return fakeWeightstatEleUp; } @@ -274,24 +289,26 @@ class fake_rate_reader{ // Calculate the per-event fake rate - StatEleDown if (kind_ == "StatEleDown"){ float fakeWeight_2l0jstatElDown = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], - Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], - fake_rate_ele_35_, fake_rate_muon_20_, "ElDown"); + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_35_, fake_rate_muon_20_, "ElDown"); float fakeWeight_2l1jstatElDown = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], - Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], - fake_rate_ele_35_, fake_rate_muon_25_, "ElDown"); + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_35_, fake_rate_muon_25_, "ElDown"); float fakeWeight_2l2jstatElDown = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], - Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], - fake_rate_ele_35_, fake_rate_muon_35_, "ElDown"); + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_35_, fake_rate_muon_35_, "ElDown"); float fakeWeightstatEleDown = 0.; if (fakeWeight != 0.){ - float num = fakeWeight_2l0jstatElDown*( nCleanJet == 0 || CleanJet_pt[0] < 30) + - fakeWeight_2l1jstatElDown*((nCleanJet == 1 && CleanJet_pt[0] >= 30) || - (nCleanJet > 1 && CleanJet_pt[0] >= 30 && CleanJet_pt[1] < 30)) + - fakeWeight_2l2jstatElDown*( nCleanJet > 1 && CleanJet_pt[1] >= 30); + // float num = + // fakeWeight_2l0jstatElDown*( nCleanJet == 0 || CleanJet_pt[0] < 30) + + // fakeWeight_2l1jstatElDown*((nCleanJet == 1 && CleanJet_pt[0] >= 30) || + // (nCleanJet > 1 && CleanJet_pt[0] >= 30 && CleanJet_pt[1] < 30)) + + // fakeWeight_2l2jstatElDown*( nCleanJet > 1 && CleanJet_pt[1] >= 30); + float num = fakeWeight_2l1jstatElDown; fakeWeightstatEleDown = num / fakeWeight; } @@ -302,24 +319,27 @@ class fake_rate_reader{ // Calculate the per-event fake rate - StatMuUp if (kind_ == "StatMuUp"){ float fakeWeight_2l0jstatMuUp = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], - Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], - fake_rate_ele_35_, fake_rate_muon_20_, "MuUp"); + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_35_, fake_rate_muon_20_, "MuUp"); float fakeWeight_2l1jstatMuUp = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], - Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], - fake_rate_ele_35_, fake_rate_muon_25_, "MuUp"); + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_35_, fake_rate_muon_25_, "MuUp"); float fakeWeight_2l2jstatMuUp = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], - Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], - fake_rate_ele_35_, fake_rate_muon_35_, "MuUp"); + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_35_, fake_rate_muon_35_, "MuUp"); float fakeWeightstatMuUp = 0.; if (fakeWeight != 0.){ - float num = fakeWeight_2l0jstatMuUp*( nCleanJet == 0 || CleanJet_pt[0] < 30) + - fakeWeight_2l1jstatMuUp*((nCleanJet == 1 && CleanJet_pt[0] >= 30) || - (nCleanJet > 1 && CleanJet_pt[0] >= 30 && CleanJet_pt[1] < 30)) + - fakeWeight_2l2jstatMuUp*( nCleanJet > 1 && CleanJet_pt[1] >= 30); - + // float num = + // fakeWeight_2l0jstatMuUp*( nCleanJet == 0 || CleanJet_pt[0] < 30) + + // fakeWeight_2l1jstatMuUp*((nCleanJet == 1 && CleanJet_pt[0] >= 30) || + // (nCleanJet > 1 && CleanJet_pt[0] >= 30 && CleanJet_pt[1] < 30)) + + // fakeWeight_2l2jstatMuUp*( nCleanJet > 1 && CleanJet_pt[1] >= 30); + + float num = fakeWeight_2l1jstatMuUp; + fakeWeightstatMuUp = num / fakeWeight; } @@ -330,24 +350,26 @@ class fake_rate_reader{ // Calculate the per-event fake rate - StatMuDown if (kind_ == "StatMuDown"){ float fakeWeight_2l0jstatMuDown = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], - Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], - fake_rate_ele_35_, fake_rate_muon_20_, "MuDown"); + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_35_, fake_rate_muon_20_, "MuDown"); float fakeWeight_2l1jstatMuDown = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], - Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], - fake_rate_ele_35_, fake_rate_muon_25_, "MuDown"); + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_35_, fake_rate_muon_25_, "MuDown"); float fakeWeight_2l2jstatMuDown = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], - Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], - fake_rate_ele_35_, fake_rate_muon_35_, "MuDown"); + Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], + fake_rate_ele_35_, fake_rate_muon_35_, "MuDown"); float fakeWeightstatMuDown = 0.; if (fakeWeight != 0.){ - float num = fakeWeight_2l0jstatMuDown*( nCleanJet == 0 || CleanJet_pt[0] < 30) + - fakeWeight_2l1jstatMuDown*((nCleanJet == 1 && CleanJet_pt[0] >= 30) || - (nCleanJet > 1 && CleanJet_pt[0] >= 30 && CleanJet_pt[1] < 30)) + - fakeWeight_2l2jstatMuDown*( nCleanJet > 1 && CleanJet_pt[1] >= 30); - + // float num = + // fakeWeight_2l0jstatMuDown*( nCleanJet == 0 || CleanJet_pt[0] < 30) + + // fakeWeight_2l1jstatMuDown*((nCleanJet == 1 && CleanJet_pt[0] >= 30) || + // (nCleanJet > 1 && CleanJet_pt[0] >= 30 && CleanJet_pt[1] < 30)) + + // fakeWeight_2l2jstatMuDown*( nCleanJet > 1 && CleanJet_pt[1] >= 30); + float num = fakeWeight_2l1jstatMuDown; + fakeWeightstatMuDown = num / fakeWeight; } @@ -356,134 +378,136 @@ class fake_rate_reader{ else return -1; - } - - else if (nLeptons_ == 3){ - - // Calculate the per-event fake rate - float fakeWeight_3l = GetFR_3l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], + } + + else if (nLeptons_ == 3){ + + // Calculate the per-event fake rate + float fakeWeight_3l = GetFR_3l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], Lepton_pt[2], Lepton_eta[2], Lepton_pdgId[2], isTight_[2], - fake_rate_ele_35_, fake_rate_muon_35_, "Nominal"); - - if (kind_ == "nominal") return fakeWeight_3l; - - // Calculate the per-event fake rate - EleUp - if (kind_ == "EleUp"){ + fake_rate_ele_35_, fake_rate_muon_25_, "Nominal"); + // fake_rate_ele_35_, fake_rate_muon_35_, "Nominal"); + + if (kind_ == "nominal") return fakeWeight_3l; + + // Calculate the per-event fake rate - EleUp + if (kind_ == "EleUp"){ float fakeWeight_3lElUp = GetFR_3l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], Lepton_pt[2], Lepton_eta[2], Lepton_pdgId[2], isTight_[2], - fake_rate_ele_45_, fake_rate_muon_35_, "Nominal"); + fake_rate_ele_45_, fake_rate_muon_25_, "Nominal"); + // fake_rate_ele_45_, fake_rate_muon_35_, "Nominal"); - float fakeWeightEleUp = fakeWeight_3lElUp / fakeWeight_3l; return fakeWeightEleUp; - } - - // Calculate the per-event fake rate - Eledown - if (kind_ == "EleDown"){ + } + + // Calculate the per-event fake rate - Eledown + if (kind_ == "EleDown"){ float fakeWeight_3lElDown = GetFR_3l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], Lepton_pt[2], Lepton_eta[2], Lepton_pdgId[2], isTight_[2], - fake_rate_ele_25_, fake_rate_muon_35_, "Nominal"); + fake_rate_ele_25_, fake_rate_muon_25_, "Nominal"); + // fake_rate_ele_25_, fake_rate_muon_35_, "Nominal"); - float fakeWeightEleDown = fakeWeight_3lElDown / fakeWeight_3l; return fakeWeightEleDown; - } - - // Calculate the per-event fake rate - MuUp - if (kind_ == "MuUp"){ + } + + // Calculate the per-event fake rate - MuUp + if (kind_ == "MuUp"){ float fakeWeight_3lMuUp = GetFR_3l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], Lepton_pt[2], Lepton_eta[2], Lepton_pdgId[2], isTight_[2], - fake_rate_ele_35_, fake_rate_muon_45_, "Nominal"); + fake_rate_ele_35_, fake_rate_muon_35_, "Nominal"); + // fake_rate_ele_35_, fake_rate_muon_45_, "Nominal"); + - float fakeWeightMuUp = fakeWeight_3lMuUp / fakeWeight_3l; return fakeWeightMuUp; - } - - // Calculate the per-event fake rate - MuDown - if (kind_ == "MuDown"){ + } + + // Calculate the per-event fake rate - MuDown + if (kind_ == "MuDown"){ float fakeWeight_3lMuDown = GetFR_3l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], Lepton_pt[2], Lepton_eta[2], Lepton_pdgId[2], isTight_[2], - fake_rate_ele_35_, fake_rate_muon_25_, "Nominal"); + fake_rate_ele_35_, fake_rate_muon_15_, "Nominal"); + // fake_rate_ele_35_, fake_rate_muon_25_, "Nominal"); - float fakeWeightMuDown = fakeWeight_3lMuDown / fakeWeight_3l; return fakeWeightMuDown; - } - - // Calculate the per-event fake rate - StatEleUp - if (kind_ == "StatEleUp"){ + } + + // Calculate the per-event fake rate - StatEleUp + if (kind_ == "StatEleUp"){ float fakeWeight_3lstatEleUp = GetFR_3l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], Lepton_pt[2], Lepton_eta[2], Lepton_pdgId[2], isTight_[2], - fake_rate_ele_35_, fake_rate_muon_35_, "ElUp"); + fake_rate_ele_35_, fake_rate_muon_25_, "ElUp"); + // fake_rate_ele_35_, fake_rate_muon_35_, "ElUp"); - float fakeWeightstatEleUp = fakeWeight_3lstatEleUp / fakeWeight_3l; return fakeWeightstatEleUp; - } - - // Calculate the per-event fake rate - StatEleDown - if (kind_ == "StatEleDown"){ + } + + // Calculate the per-event fake rate - StatEleDown + if (kind_ == "StatEleDown"){ float fakeWeight_3lstatEleDown = GetFR_3l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], Lepton_pt[2], Lepton_eta[2], Lepton_pdgId[2], isTight_[2], - fake_rate_ele_35_, fake_rate_muon_35_, "ElDown"); + fake_rate_ele_35_, fake_rate_muon_25_, "ElDown"); + // fake_rate_ele_35_, fake_rate_muon_35_, "ElDown"); - float fakeWeightstatEleDown = fakeWeight_3lstatEleDown / fakeWeight_3l; return fakeWeightstatEleDown; - } - - // Calculate the per-event fake rate - StatMuUp - if (kind_ == "StatMuUp"){ + } + + // Calculate the per-event fake rate - StatMuUp + if (kind_ == "StatMuUp"){ float fakeWeight_3lstatMuUp = GetFR_3l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], Lepton_pt[2], Lepton_eta[2], Lepton_pdgId[2], isTight_[2], - fake_rate_ele_35_, fake_rate_muon_35_, "MuUp"); + fake_rate_ele_35_, fake_rate_muon_25_, "MuUp"); + // fake_rate_ele_35_, fake_rate_muon_35_, "MuUp"); - float fakeWeightstatMuUp = fakeWeight_3lstatMuUp / fakeWeight_3l; return fakeWeightstatMuUp; - } - - // Calculate the per-event fake rate - StatMuDown - if (kind_ == "StatMuDown"){ + } + + // Calculate the per-event fake rate - StatMuDown + if (kind_ == "StatMuDown"){ float fakeWeight_3lstatMuDown = GetFR_3l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], Lepton_pt[2], Lepton_eta[2], Lepton_pdgId[2], isTight_[2], - fake_rate_ele_35_, fake_rate_muon_35_, "MuDown"); + fake_rate_ele_35_, fake_rate_muon_25_, "MuDown"); + // fake_rate_ele_35_, fake_rate_muon_35_, "MuDown"); - float fakeWeightstatMuDown = fakeWeight_3lstatMuDown / fakeWeight_3l; return fakeWeightstatMuDown; - } - - else{ + } + + else{ std::cout << "kind_ not known"< GetSF( double pt_in , double eta_in ); @@ -493,7 +517,7 @@ class fake_rate_reader{ // Read fake and prompt rate histograms fake_rate_reader::fake_rate_reader( TString year , TString ele_WP, TString muon_WP, float ele_WP_number, float muon_WP_number, TString kind, uint nLeptons, TString electron_tight_charge, TString mkShapesRDF_base ){ - + cout << "Year: " << year << endl; cout << "Ele WP: " << ele_WP << endl; cout << "Muon WP: " << muon_WP << endl; @@ -502,7 +526,7 @@ fake_rate_reader::fake_rate_reader( TString year , TString ele_WP, TString muon_ cout << "Kind: " << kind << endl; cout << "nLeptons: " << nLeptons << endl; cout << "Ele tight charge: " << electron_tight_charge << endl; - + year_ = year; ele_WP_ = ele_WP; muon_WP_ = muon_WP; @@ -593,9 +617,9 @@ fake_rate_reader::fake_rate_reader( TString year , TString ele_WP, TString muon_ // Get fake rate and its statistical uncertainty std::tuple fake_rate_reader::GetRate(TH2F* fake_rate_histo, - double pt, - double eta, - double lepton_pt_max){ + double pt, + double eta, + double lepton_pt_max){ double aeta = abs(eta); int nbinsx = fake_rate_histo->GetNbinsX(); @@ -689,6 +713,10 @@ fake_rate_reader::GetFR_2l( double pt1 , double eta1, double pdg1, double isTigh else if (stat == "MuDown") f2 = f2 - fE2; } + // std::cout << "Prompt rates = " << p1 << ", " << p2 << std::endl; + // std::cout << "Fake rates = " << f1 << ", " << f2 << std::endl; + + // Compute per-lepton probabilities int nTight = 0; if (isTight1 == 1){ @@ -726,6 +754,18 @@ fake_rate_reader::GetFR_2l( double pt1 , double eta1, double pdg1, double isTigh FP *= -1.; } + // std::cout << "nTight = " << nTight << std::endl; + + // std::cout << "prompt probability 1 = " << prompt_probability1 << std::endl; + // std::cout << "prompt probability 2 = " << prompt_probability2 << std::endl; + + // std::cout << "fake probability 1 = " << fake_probability1 << std::endl; + // std::cout << "fake probability 2 = " << fake_probability2 << std::endl; + + // std::cout << "PF = " << PF << std::endl; + // std::cout << "FP = " << FP << std::endl; + // std::cout << "FF = " << FF << std::endl; + float sf = PF + FP + FF; return sf; @@ -735,11 +775,11 @@ fake_rate_reader::GetFR_2l( double pt1 , double eta1, double pdg1, double isTigh // std::tuple float fake_rate_reader::GetFR_3l( double pt1 , double eta1, double pdg1, double isTight1, - double pt2 , double eta2, double pdg2, double isTight2, - double pt3 , double eta3, double pdg3, double isTight3, - TH2F* fake_rate_ele_, TH2F* fake_rate_muon_, - TString stat - ){ + double pt2 , double eta2, double pdg2, double isTight2, + double pt3 , double eta3, double pdg3, double isTight3, + TH2F* fake_rate_ele_, TH2F* fake_rate_muon_, + TString stat + ){ double p1 = 1.; // leading lepton prompt rate double f1 = 0.; // leading lepton fake rate From 863dc908491c5d2794c4cfae77d05784d43fb5cc Mon Sep 17 00:00:00 2001 From: ntrevisa Date: Thu, 28 Aug 2025 09:58:15 +0200 Subject: [PATCH 22/44] Removing unused fake CR configs --- .../WHSS/configuration_1j_CR/README.md | 17 - .../WHSS/configuration_1j_CR/configuration.py | 99 ----- .../WHSS/configuration_1j_CR/cuts.py | 66 --- .../WHSS/configuration_1j_CR/plot.py | 299 ------------- .../WHSS/configuration_1j_CR/samples.py | 400 ------------------ .../WHSS/configuration_1j_CR/structure.py | 171 -------- .../WHSS/configuration_1j_mm_CR/README.md | 17 - .../configuration_1j_mm_CR/configuration.py | 99 ----- .../WHSS/configuration_1j_mm_CR/cuts.py | 37 -- .../WHSS/configuration_1j_mm_CR/plot.py | 356 ---------------- .../WHSS/configuration_1j_mm_CR/structure.py | 202 --------- .../WHSS/configuration_2j_CR/README.md | 17 - .../WHSS/configuration_2j_CR/configuration.py | 99 ----- .../WHSS/configuration_2j_CR/cuts.py | 65 --- .../WHSS/configuration_2j_CR/plot.py | 356 ---------------- .../WHSS/configuration_2j_CR/samples.py | 400 ------------------ .../WHSS/configuration_2j_CR/structure.py | 202 --------- .../WHSS/configuration_2j_mm_CR/README.md | 17 - .../configuration_2j_mm_CR/configuration.py | 99 ----- .../WHSS/configuration_2j_mm_CR/cuts.py | 37 -- .../WHSS/configuration_2j_mm_CR/plot.py | 356 ---------------- .../WHSS/configuration_2j_mm_CR/structure.py | 202 --------- 22 files changed, 3613 deletions(-) delete mode 100644 WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_CR/README.md delete mode 100644 WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_CR/configuration.py delete mode 100644 WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_CR/cuts.py delete mode 100644 WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_CR/plot.py delete mode 100644 WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_CR/samples.py delete mode 100644 WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_CR/structure.py delete mode 100644 WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_mm_CR/README.md delete mode 100644 WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_mm_CR/configuration.py delete mode 100644 WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_mm_CR/cuts.py delete mode 100644 WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_mm_CR/plot.py delete mode 100644 WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_mm_CR/structure.py delete mode 100644 WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_CR/README.md delete mode 100644 WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_CR/configuration.py delete mode 100644 WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_CR/cuts.py delete mode 100644 WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_CR/plot.py delete mode 100644 WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_CR/samples.py delete mode 100644 WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_CR/structure.py delete mode 100644 WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_mm_CR/README.md delete mode 100644 WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_mm_CR/configuration.py delete mode 100644 WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_mm_CR/cuts.py delete mode 100644 WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_mm_CR/plot.py delete mode 100644 WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_mm_CR/structure.py diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_CR/README.md b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_CR/README.md deleted file mode 100644 index ba17b328..00000000 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_CR/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# Configuration for WHSS 1j signal region - -### Plot distributions - -Compile configuration and plot distributions: - - mkShapesRDF -c 1 - - mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png - -### Produce datacards - -Compile configuration and produce datacards: - - mkShapesRDF -c 1 - - mkDatacards --outputDirDatacard ../datacards_original_signal_scale --skipMissingNuisance \ No newline at end of file diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_CR/configuration.py b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_CR/configuration.py deleted file mode 100644 index 3292fbe7..00000000 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_CR/configuration.py +++ /dev/null @@ -1,99 +0,0 @@ -# Configuration file for charge asymmetry WHSS analysis using the UL 2018 dataset - -import sys,inspect - -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_CR - -configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file -configurations_nuisance = os.path.dirname(configurations_nuisance) # configuration_1j_CR -configurations_nuisance = os.path.dirname(configurations_nuisance) # WHSS -configurations_nuisance = os.path.dirname(configurations_nuisance) # Full2018_v9 -configurations_nuisance = os.path.dirname(configurations_nuisance) # UL - -# Tag used to identify the configuration folder version -tag = 'WHSS_2018_v9_chargeAsymmetry_Mu82_EleUL90' - -# File to use as runner script, default uses mkShapesRDF.shapeAnalysis.runner, otherwise specify path to script -runnerFile = "default" - -# Output file name -outputFile = "plots_WHSS_2018_v9_chargeAsymmetry_Mu82_EleUL90_DYflip_data.root" # "mkShapes__{}.root".format(tag) - -# Path to ouput folder -outputFolder = "../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" - -# Path to batch folder (used for condor submission) -batchFolder = "condor" - -# Path to configuration folder (will contain all the compiled configuration files) -configsFolder = "configs" - -# Luminosity to normalize to (in 1/fb) -# https://github.com/latinos/LatinoAnalysis/blob/UL_production/NanoGardener/python/data/TrigMaker_cfg.py#L868 (874) -# 59.832475339 -lumi = 59.83 - -# File with dict of aliases to define -aliasesFile = "../aliases.py" - -# File with dict of variables -variablesFile = "../variables.py" - -# File with dict of cuts -cutsFile = "cuts.py" - -# File with dict of samples -samplesFile = "samples.py" - -# File with dict of samples for plotting -plotFile = 'plot.py' - -# File with dict of structure (used to define processes in combine) -structureFile = "structure.py" - -# Nuisances file for mkDatacards and for mkShape -nuisancesFile = "../nuisances.py" - -# Path to folder where to save plots -plotPath = '../plots_' + tag - -# This lines are executed right before the runner on the condor node -mountEOS = [] - -# List of imports to import when compiling the whole configuration folder, it should not contain imports used by configuration.py -imports = ["os", "glob", ("collections", "OrderedDict"), "ROOT"] - -# List of files to compile -filesToExec = [ - samplesFile, - aliasesFile, - variablesFile, - cutsFile, - plotFile, - nuisancesFile, - structureFile, -] - -# List of variables to keep in the compiled configuration folder -varsToKeep = [ - "batchVars", - "outputFolder", - "batchFolder", - "configsFolder", - "outputFile", - "runnerFile", - "tag", - "samples", - "aliases", - "variables", - ("cuts", {"cuts": "cuts", "preselections": "preselections"}), - ("plot", {"plot": "plot", "groupPlot": "groupPlot", "legend": "legend"}), - "nuisances", - "structure", - "lumi", -] - -# List of variables to keep in the batch submission script (script.py) -batchVars = varsToKeep[varsToKeep.index("samples") :] - -varsToKeep += ['plotPath'] diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_CR/cuts.py b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_CR/cuts.py deleted file mode 100644 index 9ff759bd..00000000 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_CR/cuts.py +++ /dev/null @@ -1,66 +0,0 @@ -cuts = {} - -# cuts -preselections = 'mll>12 \ - && Lepton_pt[0]>25 \ - && Lepton_pt[1]>10 \ - && (abs(Lepton_pdgId[1])==13 || Lepton_pt[1]>13) \ - && abs(Lepton_eta[0])<2.5 && abs(Lepton_eta[1])<2.5 \ - && bVeto \ - && PuppiMET_pt > 30 \ - && !hole_veto \ - ' - -# Splitting in sub-leading lepton pT -#################################### - -## SS CR 1jet - -# mu-e -cuts['hww2l2v_13TeV_WH_SS_em_1j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)<30 && mlljj20_whss > 50.', - 'categories' : { - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT >= 20 GeV) - 'SS_CR_plus_pt2ge20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2ge20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT < 20 GeV) - 'SS_CR_plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - } -} - -# e-e -cuts['hww2l2v_13TeV_WH_SS_ee_1j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*11) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)<30 && abs(mll-91.2)>15 && mlljj20_whss > 50.', - 'categories' : { - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT >= 20 GeV) - 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT < 20 GeV) - 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - } -} - - -## DY->ee CR - 2 same-sign electrons IN the Z peak. To check the charge-flip probability method to estimate DY in the signal region - -# DY CR 1jet -cuts['hww2l2v_13TeV_WH_SS_DYee_1j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*11) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)<30 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0 && abs(mll-91.2)<15 && mlljj20_whss > 50.', - 'categories' : { - # Sub-leading lepton pT >= 20 GeV - 'plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20', - 'minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20', - 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20', - } -} - -# mlljj20_whss: -# inv_mass of: (jet1, jet2, 2*closest_lep_to_jets) -# jets are considered with pT > 20 GeV - -# Definitions of WH3l variables: -# https://github.com/latinos/LatinoAnalysis/blob/76e7c4b93aa5f056c92440d4e8d24e7de749c8fe/NanoGardener/python/modules/l3KinProducer.py diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_CR/plot.py b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_CR/plot.py deleted file mode 100644 index 3474ac52..00000000 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_CR/plot.py +++ /dev/null @@ -1,299 +0,0 @@ -# plot configuration - -# Groups of samples to improve the plots. -# If not defined, normal plots is used -# - -# BTag normalization factors -# Cut = hww2l2v_13TeV_samesign_1j -scale_histo_ttH_hww = 0.403852438299/0.206065949512 # 1.95982130602 -scale_histo_WW = 20.7930003307/18.5931357677 # 1.11831595221 -scale_histo_DY = 38.1653356007/37.1564763287 # 1.02715164008 -scale_histo_WZ = 338.331846275/301.754102591 # 1.12121705511 -scale_histo_Wg = 313.554153169/280.951504356 # 1.11604368835 -scale_histo_Zg = 31.6778612999/26.9277000005 # 1.17640427141 -scale_histo_Vg = (31.6778612999+313.554153169)/(26.9277000005+280.951504356) -scale_histo_WgS = 159.019637682/133.120233942 # 1.19455647704 -scale_histo_ZgS = 13.8422447313/11.7705334283 # 1.17600827656 -scale_histo_VgS = (13.8422447313+159.019637682)/(11.7705334283+133.120233942) -scale_histo_ZH_htt = 0.52702471516/0.418377509104 # 1.25968701398 -scale_histo_WH_htt_plus = 3.51317983868/2.99417382907 # 1.17333863671 -scale_histo_ggZH_hww = 0.0487489906276/0.0416125294193 # 1.17149789517 -scale_histo_qqH_hww = 0.0551519111922/0.0493745882637 # 1.11701004771 -scale_histo_ZZ = 8.20543225456/7.02369155076 # 1.16825065498 -scale_histo_ggH_hww = 0.835377131709/0.704517384148 # 1.18574381627 -scale_histo_WH_htt_minus = 2.14421993024/1.78486436835 # 1.20133494077 -scale_histo_VVV = 10.9161024993/9.13050235687 # 1.19556428252 -scale_histo_WH_hww_plus = 10.0694789513/8.4373732424 # 1.19343765672 -scale_histo_ggH_htt = 0.245521798327/0.219229582295 # 1.11993005577 -scale_histo_ggWW = 1.29296483445/1.18493739596 # 1.09116721175 -scale_histo_top = 124.585001211/87.4139634172 # 1.42522997861 -scale_histo_WWewk = 0.142280711039/0.133346344487 # 1.06700121092 -scale_histo_ZH_hww = 1.42081496306/1.1573508904 # 1.2276440748 -scale_histo_WH_hww_minus = 5.96461104674/5.00138194371 # 1.19259259018 -scale_histo_qqH_htt = 0.011234128291/0.0123404588292 # 0.910349318975 - -groupPlot = {} - -groupPlot['Fake'] = { - 'nameHR' : 'Non-prompt', - 'isSignal' : 0, - 'color' : 921, # kGray + 1 - 'samples' : ['Fake_mm','Fake_em','Fake_ee'] -} - -groupPlot['ChargeFlip'] = { - 'nameHR' : "charge_flip", - 'isSignal' : 0, - 'color' : 418, # kGreen+2 - 'samples' : ['ChargeFlip'] -} - -groupPlot['VVV'] = { - 'nameHR' : 'VVV', - 'isSignal' : 0, - 'color' : 857, # kAzure -3 - 'samples' : ['VVV'] -} - -groupPlot['ZZ'] = { - 'nameHR' : "ZZ", - 'isSignal' : 0, - 'color' : 617, # kViolet + 1 - 'samples' : ['ZZ'] -} - -groupPlot['WZ'] = { - 'nameHR' : "WZ", - 'isSignal' : 0, - 'color' : 619, # kViolet + 1 - 'samples' : ['WZ'] -} - -groupPlot['Vg'] = { - 'nameHR' : "V#gamma", - 'isSignal' : 0, - 'color' : 810, # kOrange + 10 - 'samples' : ['Vg'] -} - -groupPlot['VgS'] = { - 'nameHR' : "V#gamma*", - 'isSignal' : 0, - 'color' : 412, # kGreen - 9 - 'samples' : ['VgS'] -} - -groupPlot['Higgs'] = { - 'nameHR' : 'Higgs', - 'isSignal' : 0, - 'color' : 632, # kRed - 'samples' : ['ggH_hww','qqH_hww','ZH_hww','ggZH_hww','ttH_hww','ggH_htt','qqH_htt','ZH_htt'] -} - -groupPlot['WH_minus'] = { - 'nameHR' : 'W^{-} H (x 10)', - 'isSignal' : 2, - 'color' : 600, # kBlue - 'samples' : ['WH_hww_minus','WH_htt_minus'] -} - -groupPlot['WH_plus'] = { - 'nameHR' : 'W^{+} H (x 10)', - 'isSignal' : 2, - 'color' : 632, # kRed - 'samples' : ['WH_hww_plus', 'WH_htt_plus'] -} - - -# keys here must match keys in samples.py - -plot = {} - -plot['ChargeFlip'] = { - 'color' : 418, # kGreen+2 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 0.5, -} - -plot['Vg'] = { - 'color' : 859, # kAzure -1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_Vg, -} - -plot['VgS'] = { - 'color' : 617, # kViolet + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_VgS, -} - -plot['WZ'] = { - 'color' : 858, # kAzure -2 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_WZ * 1.138, # NLO -> NNLO k-factor! -} - -plot['ZZ'] = { - 'color' : 858, # kAzure -2 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ZZ, -} - -plot['VVV'] = { - 'color' : 857, # kAzure -3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_VVV, -} - -########### -# Signals # -########### - -# HWW - -plot['ggH_hww'] = { - 'color' : 632, # kRed - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggH_hww, -} - -plot['qqH_hww'] = { - 'color' : 632+1, # kRed+1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_qqH_hww, -} - -plot['ZH_hww'] = { - 'color' : 632+3, # kRed+3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ZH_hww, -} - -plot['ggZH_hww'] = { - 'color' : 632+4, # kRed+4 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggZH_hww, -} - -plot['WH_hww_plus'] = { - 'color' : 632+2, # kRed+2 - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_hww_plus, -} - -plot['WH_hww_minus'] = { - 'color' : 600, # kBlue - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_hww_minus, -} - -plot['ttH_hww'] = { - 'color' : 632+3, # kRed+3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ttH_hww, -} - - -# Htautau - -plot['ggH_htt'] = { - 'color' : 632, # kRed - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggH_htt, -} - -plot['qqH_htt'] = { - 'color' : 632+1, # kRed+1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_qqH_htt, -} - -plot['ZH_htt'] = { - 'color' : 632+3, # kRed+3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ZH_htt, -} - -plot['WH_htt_plus'] = { - 'color' : 632+2, # kRed+2 - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_htt_plus, -} - -plot['WH_htt_minus'] = { - 'color' : 632+2, # kRed+2 - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_htt_minus, -} - - -######## -# Fake # -######## - -plot['Fake_em'] = { - 'color' : 921, # kGray + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['Fake_ee'] = { - 'color' : 921, # kGray + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['Fake_mm'] = { - 'color' : 921, # kGray + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -# plot['Fake'] = { -# 'color' : 921, # kGray + 1 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : 1.0 -# } - -######## -# Data # -######## - -plot['DATA'] = { - 'nameHR' : 'Data', - 'color' : 1 , - 'isSignal' : 0, - 'isData' : 1, - 'isBlind' : 0, -} - - -# Define legend - -legend = {} - -legend['lumi'] = 'L = 59.8 fb^{-1}' -legend['sqrt'] = '#sqrt{s} = 13 TeV' diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_CR/samples.py b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_CR/samples.py deleted file mode 100644 index 3bd7cb46..00000000 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_CR/samples.py +++ /dev/null @@ -1,400 +0,0 @@ -import os,glob - -################################################ -################# SKIMS ######################## -################################################ - -# MC: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Summer20UL18_106x_nAODv9_Full2018v9/MCl1loose2018v9__MCCorr2018v9NoJERInHorn__l2tightOR2018v9/ -# DATA: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Run2018_UL2018_nAODv9_Full2018v9/DATAl1loose2018v9__l2loose__l2tightOR2018v9/ -# FAKE: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Run2018_UL2018_nAODv9_Full2018v9/DATAl1loose2018v9__l2loose__fakeW/ - -mcProduction = 'Summer20UL18_106x_nAODv9_Full2018v9' -dataReco = 'Run2018_UL2018_nAODv9_Full2018v9' -mcSteps = 'MCl1loose2018v9__MCCorr2018v9NoJERInHorn__l2tightOR2018v9{var}' -fakeSteps = 'DATAl1loose2018v9__l2loose__fakeW' -dataSteps = 'DATAl1loose2018v9__l2loose__l2tightOR2018v9' - -############################################## -###### Tree base directory for the site ###### -############################################## - -treeBaseDir = '/eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano' -limitFiles = -1 - -def makeMCDirectory(var=''): - return os.path.join(treeBaseDir, mcProduction, mcSteps.format(var='')) - -mcDirectory = makeMCDirectory() -fakeDirectory = os.path.join(treeBaseDir, dataReco, fakeSteps) -dataDirectory = os.path.join(treeBaseDir, dataReco, dataSteps) - -samples = {} - -from mkShapesRDF.lib.search_files import SearchFiles -s = SearchFiles() - -useXROOTD = True -redirector = 'root://eoscms.cern.ch/' - -def nanoGetSampleFiles(path, name): - _files = s.searchFiles(path, name, redirector=redirector) - if limitFiles != -1 and len(_files) > limitFiles: - return [(name, _files[:limitFiles])] - else: - return [(name, _files)] - -def CombineBaseW(samples, proc, samplelist): - _filtFiles = list(filter(lambda k: k[0] in samplelist, samples[proc]['name'])) - _files = list(map(lambda k: k[1], _filtFiles)) - _l = list(map(lambda k: len(k), _files)) - leastFiles = _files[_l.index(min(_l))] - dfSmall = ROOT.RDataFrame('Runs', leastFiles) - s = dfSmall.Sum('genEventSumw').GetValue() - f = ROOT.TFile.Open(leastFiles[0]) - t = f.Get('Events') - t.GetEntry(1) - xs = t.baseW * s - - __files = [] - for f in _files: - __files += f - df = ROOT.RDataFrame('Runs', __files) - s = df.Sum('genEventSumw').GetValue() - newbaseW = str(xs / s) - weight = newbaseW + '/baseW' - - for iSample in samplelist: - addSampleWeight(samples, proc, iSample, weight) - -def addSampleWeight(samples, sampleName, sampleNameType, weight): - obj = list(filter(lambda k: k[0] == sampleNameType, samples[sampleName]['name']))[0] - samples[sampleName]['name'] = list(filter(lambda k: k[0] != sampleNameType, samples[sampleName]['name'])) - if len(obj) > 2: - samples[sampleName]['name'].append((obj[0], obj[1], obj[2] + '*(' + weight + ')')) - else: - samples[sampleName]['name'].append((obj[0], obj[1], '(' + weight + ')' )) - - -################################################ -############ DATA DECLARATION ################## -################################################ - -DataRun = [ - ['A','Run2018A-UL2018-v1'], - ['B','Run2018B-UL2018-v1'], - ['C','Run2018C-UL2018-v1'], - ['D','Run2018D-UL2018-v1'], -] - -DataSets = ['MuonEG','SingleMuon','EGamma','DoubleMuon'] - -DataTrig = { - 'MuonEG' : 'Trigger_ElMu' , - 'DoubleMuon' : '!Trigger_ElMu && Trigger_dblMu' , - 'SingleMuon' : '!Trigger_ElMu && !Trigger_dblMu && Trigger_sngMu' , - 'EGamma' : '!Trigger_ElMu && !Trigger_dblMu && !Trigger_sngMu && (Trigger_sngEl || Trigger_dblEl)' , -} - -######################################### -############ MC COMMON ################## -######################################### - -# SFweight does not include btag weights -mcCommonWeightNoMatch = 'XSWeight*SFweight*METFilter_MC' -mcCommonWeight = 'XSWeight*SFweight*METFilter_MC*PromptGenLepMatch2l' - -########################################### -############# BACKGROUNDS ############### -########################################### - -# ###### DY ####### -# files = nanoGetSampleFiles(mcDirectory, 'DYJetsToLL_M-10to50_NLO') + \ -# nanoGetSampleFiles(mcDirectory, 'DYJetsToLL_M-50') - -# samples['DY'] = { -# 'name': files, -# 'weight': mcCommonWeight + '*(Lepton_pdgId[0]*Lepton_pdgId[1] == -11*13)*( !(Sum(PhotonGen_isPrompt==1 && PhotonGen_pt>15 && abs(PhotonGen_eta)<2.6) > 0))', -# 'FilesPerJob': 8, -# } - -# ##### Top ####### -# files = nanoGetSampleFiles(mcDirectory, 'TTTo2L2Nu') + \ -# nanoGetSampleFiles(mcDirectory, 'ST_s-channel') + \ -# nanoGetSampleFiles(mcDirectory, 'ST_t-channel_top') + \ -# nanoGetSampleFiles(mcDirectory, 'ST_t-channel_antitop') + \ -# nanoGetSampleFiles(mcDirectory, 'ST_tW_antitop') + \ -# nanoGetSampleFiles(mcDirectory, 'ST_tW_top') - -# samples['top'] = { -# 'name': files, -# 'weight': mcCommonWeight, -# 'FilesPerJob': 8, -# } -# addSampleWeight(samples,'top','TTTo2L2Nu','Top_pTrw') - -# ###### WW ######## -# samples['WW'] = { -# 'name': nanoGetSampleFiles(mcDirectory, 'WWTo2L2Nu'), -# 'weight': mcCommonWeight + '*nllW*ewknloW', -# 'FilesPerJob': 4 -# } - -# samples['WWewk'] = { -# 'name': nanoGetSampleFiles(mcDirectory, 'WpWmJJ_EWK_noTop'), -# 'weight': mcCommonWeight + '*(Sum(abs(GenPart_pdgId)==6 || GenPart_pdgId==25)==0)', # Filter tops and Higgs, -# 'FilesPerJob': 8 -# } - -# files = nanoGetSampleFiles(mcDirectory, 'GluGluToWWToENEN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToENMN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToENTN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToMNEN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToMNMN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToMNTN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToTNEN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToTNMN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToTNTN') - -# samples['ggWW'] = { -# 'name': files, -# 'weight': mcCommonWeight + '*1.53/1.4', -# 'FilesPerJob': 8 -# } - -# Charge-flip estimated from data, and covering DY, WW, and Top -samples['ChargeFlip'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'DYJetsToLL_M-50'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4 -} - -######## Vg ######## -files = nanoGetSampleFiles(mcDirectory, 'Wg_AMCNLOFXFX_01J') + \ - nanoGetSampleFiles(mcDirectory, 'ZGToLLG') - -samples['Vg'] = { - 'name': files, - 'weight': mcCommonWeightNoMatch + '*(Gen_ZGstar_mass <= 0)', - 'FilesPerJob': 4, -} - -######## VgS ######## -files = nanoGetSampleFiles(mcDirectory, 'Wg_AMCNLOFXFX_01J') + \ - nanoGetSampleFiles(mcDirectory, 'WZTo3LNu_mllmin0p1') + \ - nanoGetSampleFiles(mcDirectory, 'ZGToLLG') - -samples['VgS'] = { - 'name': files, - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} -addSampleWeight(samples, 'VgS', 'Wg_AMCNLOFXFX_01J', '((Gen_ZGstar_mass > 0 && Gen_ZGstar_mass <= 0.1))*(gstarLow*0.94)') -addSampleWeight(samples, 'VgS', 'WZTo3LNu_mllmin0p1', '((Gen_ZGstar_mass > 0.1)*(0.601644*58.59/4.666))*(gstarLow*0.94)') -addSampleWeight(samples, 'VgS', 'ZGToLLG', '(Gen_ZGstar_mass > 0)') - - -############ WZ ############ -files = nanoGetSampleFiles(mcDirectory, 'WZTo3LNu_mllmin0p1') + \ - nanoGetSampleFiles(mcDirectory, 'WZTo2Q2L_mllmin4p0') - -samples['WZ'] = { - 'name': files, - 'weight': mcCommonWeight + ' * (gstarHigh)', - 'FilesPerJob': 4, -} -addSampleWeight(samples, 'WZ', 'WZTo3LNu_mllmin0p1', '(0.601644*58.59/4.666)') - - -############ ZZ ############ -files = nanoGetSampleFiles(mcDirectory, 'ZZTo2L2Nu') + \ - nanoGetSampleFiles(mcDirectory, 'ZZTo2Q2L_mllmin4p0') + \ - nanoGetSampleFiles(mcDirectory, 'ZZTo4L') - -samples['ZZ'] = { - 'name': files, - 'weight': mcCommonWeight, - 'FilesPerJob': 2, -} - - -########## VVV ######### -files = nanoGetSampleFiles(mcDirectory, 'ZZZ') + \ - nanoGetSampleFiles(mcDirectory, 'WZZ') + \ - nanoGetSampleFiles(mcDirectory, 'WWZ') + \ - nanoGetSampleFiles(mcDirectory, 'WWW') - -samples['VVV'] = { - 'name': files, - 'weight': mcCommonWeight, - 'FilesPerJob': 8, -} - -########################################### -############# SIGNALS ################## -########################################### - -signals = [] - -############ ggH H->WW ############ -samples['ggH_hww'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'GluGluHToWWTo2L2Nu_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} -signals.append('ggH_hww') - -############ VBF H->WW ############ -samples['qqH_hww'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'VBFHToWWTo2L2Nu_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 8, -} -signals.append('qqH_hww') - -############ ZH H->WW ############ -samples['ZH_hww'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'HZJ_HToWW_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 8, -} -signals.append('ZH_hww') - -samples['ggZH_hww'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'GluGluZH_HToWWTo2L2Nu_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 8, -} -signals.append('ggZH_hww') - -############ WH H->WW ############ -samples['WH_hww_plus'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'HWplusJ_HToWW_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} -signals.append('WH_hww_plus') - -samples['WH_hww_minus'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'HWminusJ_HToWW_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} - -signals.append('WH_hww_minus') - -############ ttH ############ -samples['ttH_hww'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'ttHToNonbb_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} -signals.append('ttH_hww') - -############ H->TauTau ############ -samples['ggH_htt'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'GluGluHToTauTau_M125_Powheg'), - 'weight': mcCommonWeight, - 'FilesPerJob': 20, -} -signals.append('ggH_htt') - -samples['qqH_htt'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'VBFHToTauTau_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 20, -} -signals.append('qqH_htt') - -samples['ZH_htt'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'ZHToTauTau_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 8, -} -signals.append('ZH_htt') - -############ WH H->TauTau ############ -samples['WH_htt_plus'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'WplusHToTauTau_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} -signals.append('WH_htt_plus') - -samples['WH_htt_minus'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'WminusHToTauTau_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} -signals.append('WH_htt_minus') - - -########################################### -################## FAKE ################### -########################################### - -samples['Fake'] = { - 'name': [], - 'weight': 'METFilter_DATA*fakeW', - 'weights': [], - 'isData': ['all'], - 'FilesPerJob': 50 -} - -for _, sd in DataRun: - for pd in DataSets: - tag_data = pd + '_' + sd - - if ( ('DoubleMuon' in pd and 'Run2018B' in sd) - or ('DoubleMuon' in pd and 'Run2018D' in sd) - or ('SingleMuon' in pd and 'Run2018A' in sd) - or ('SingleMuon' in pd and 'Run2018B' in sd) - or ('SingleMuon' in pd and 'Run2018C' in sd)): - print("sd = {}".format(sd)) - print("pd = {}".format(pd)) - print("Old tag = {}".format(tag_data)) - tag_data = tag_data.replace('v1','v2') - print("New tag = {}".format(tag_data)) - - files = nanoGetSampleFiles(fakeDirectory, tag_data) - - samples['Fake']['name'].extend(files) - addSampleWeight(samples, 'Fake', tag_data, DataTrig[pd]) - -samples['Fake']['subsamples'] = { - 'em': 'abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 11*13', - 'mm': 'abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 13*13', - 'ee': 'abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 11*11' -} - - -########################################### -################## DATA ################### -########################################### - -samples['DATA'] = { - 'name': [], - 'weight': 'LepWPCut*METFilter_DATA', - 'weights': [], - 'isData': ['all'], - 'FilesPerJob': 50 -} - -for _, sd in DataRun: - for pd in DataSets: - tag_data = pd + '_' + sd - - if ( ('DoubleMuon' in pd and 'Run2018B' in sd) - or ('DoubleMuon' in pd and 'Run2018D' in sd) - or ('SingleMuon' in pd and 'Run2018A' in sd) - or ('SingleMuon' in pd and 'Run2018B' in sd) - or ('SingleMuon' in pd and 'Run2018C' in sd)): - print("sd = {}".format(sd)) - print("pd = {}".format(pd)) - print("Old tag = {}".format(tag_data)) - tag_data = tag_data.replace('v1','v2') - print("New tag = {}".format(tag_data)) - - files = nanoGetSampleFiles(dataDirectory, tag_data) - - samples['DATA']['name'].extend(files) - addSampleWeight(samples, 'DATA', tag_data, DataTrig[pd]) diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_CR/structure.py b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_CR/structure.py deleted file mode 100644 index eaf34b5e..00000000 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_CR/structure.py +++ /dev/null @@ -1,171 +0,0 @@ -# structure configuration for datacard - -# keys here must match keys in samples.py - -signal_normalization = 10.0 - -# BTag normalization factors -# Cut = hww2l2v_13TeV_samesign_1j -scale_histo_ttH_hww = 0.403852438299/0.206065949512 # 1.95982130602 -scale_histo_WW = 20.7930003307/18.5931357677 # 1.11831595221 -scale_histo_DY = 38.1653356007/37.1564763287 # 1.02715164008 -scale_histo_WZ = 338.331846275/301.754102591 # 1.12121705511 -scale_histo_Wg = 313.554153169/280.951504356 # 1.11604368835 -scale_histo_Zg = 31.6778612999/26.9277000005 # 1.17640427141 -scale_histo_Vg = (31.6778612999+313.554153169)/(26.9277000005+280.951504356) -scale_histo_WgS = 159.019637682/133.120233942 # 1.19455647704 -scale_histo_ZgS = 13.8422447313/11.7705334283 # 1.17600827656 -scale_histo_VgS = (13.8422447313+159.019637682)/(11.7705334283+133.120233942) -scale_histo_ZH_htt = 0.52702471516/0.418377509104 # 1.25968701398 -scale_histo_WH_htt_plus = 3.51317983868/2.99417382907 # 1.17333863671 -scale_histo_ggZH_hww = 0.0487489906276/0.0416125294193 # 1.17149789517 -scale_histo_qqH_hww = 0.0551519111922/0.0493745882637 # 1.11701004771 -scale_histo_ZZ = 8.20543225456/7.02369155076 # 1.16825065498 -scale_histo_ggH_hww = 0.835377131709/0.704517384148 # 1.18574381627 -scale_histo_WH_htt_minus = 2.14421993024/1.78486436835 # 1.20133494077 -scale_histo_VVV = 10.9161024993/9.13050235687 # 1.19556428252 -scale_histo_WH_hww_plus = 10.0694789513/8.4373732424 # 1.19343765672 -scale_histo_ggH_htt = 0.245521798327/0.219229582295 # 1.11993005577 -scale_histo_ggWW = 1.29296483445/1.18493739596 # 1.09116721175 -scale_histo_top = 124.585001211/87.4139634172 # 1.42522997861 -scale_histo_WWewk = 0.142280711039/0.133346344487 # 1.06700121092 -scale_histo_ZH_hww = 1.42081496306/1.1573508904 # 1.2276440748 -scale_histo_WH_hww_minus = 5.96461104674/5.00138194371 # 1.19259259018 -scale_histo_qqH_htt = 0.011234128291/0.0123404588292 # 0.910349318975 - -structure = {} - -structure['Vg'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_Vg, -} - -structure['VgS'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_VgS, -} - -structure['WZ'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WZ * 1.138 # NLO -> NNLO k-factor -} - -structure['ZZ'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZZ, -} - -structure['VVV'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_VVV, -} - - -# Higgs -structure['ggH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ggH_hww, -} - -structure['qqH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_qqH_hww, -} - -structure['ZH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZH_hww, -} - -structure['ggZH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ggZH_hww, -} - -structure['WH_hww_plus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_hww_plus*signal_normalization, -} - -structure['WH_hww_minus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_hww_minus*signal_normalization, -} - -structure['ttH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ttH_hww, -} - -structure['ggH_htt'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ggH_htt, -} - -structure['qqH_htt'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_qqH_htt, -} - -structure['ZH_htt'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZH_htt, -} - -structure['WH_htt_plus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_htt_plus*signal_normalization, -} - -structure['WH_htt_minus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_htt_minus*signal_normalization, -} - - -# Fakes -structure['Fake_ee'] = { - 'isSignal' : 0, - 'isData' : 0, -} - -structure['Fake_mm'] = { - 'isSignal' : 0, - 'isData' : 0, -} - -structure['Fake_em'] = { - 'isSignal' : 0, - 'isData' : 0, -} - - -# Data-driven charge flip estimation -structure['ChargeFlip'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : 0.5, -} - -# Data -structure['DATA'] = { - 'isSignal' : 0, - 'isData' : 1 -} diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_mm_CR/README.md b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_mm_CR/README.md deleted file mode 100644 index ba17b328..00000000 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_mm_CR/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# Configuration for WHSS 1j signal region - -### Plot distributions - -Compile configuration and plot distributions: - - mkShapesRDF -c 1 - - mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png - -### Produce datacards - -Compile configuration and produce datacards: - - mkShapesRDF -c 1 - - mkDatacards --outputDirDatacard ../datacards_original_signal_scale --skipMissingNuisance \ No newline at end of file diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_mm_CR/configuration.py b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_mm_CR/configuration.py deleted file mode 100644 index 1236dc54..00000000 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_mm_CR/configuration.py +++ /dev/null @@ -1,99 +0,0 @@ -# Configuration file for charge asymmetry WHSS analysis using the UL 2018 dataset - -import sys,inspect - -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_mm_CR - -configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file -configurations_nuisance = os.path.dirname(configurations_nuisance) # configuration_1j_mm_CR -configurations_nuisance = os.path.dirname(configurations_nuisance) # WHSS -configurations_nuisance = os.path.dirname(configurations_nuisance) # Full2018_v9 -configurations_nuisance = os.path.dirname(configurations_nuisance) # UL - -# Tag used to identify the configuration folder version -tag = 'WHSS_2018_v9_chargeAsymmetry_Mu82_EleUL90' - -# File to use as runner script, default uses mkShapesRDF.shapeAnalysis.runner, otherwise specify path to script -runnerFile = "default" - -# Output file name -outputFile = "plots_WHSS_2018_v9_chargeAsymmetry_Mu82_EleUL90_DYflip_data.root" # "mkShapes__{}.root".format(tag) - -# Path to ouput folder -outputFolder = "../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" - -# Path to batch folder (used for condor submission) -batchFolder = "condor" - -# Path to configuration folder (will contain all the compiled configuration files) -configsFolder = "configs" - -# Luminosity to normalize to (in 1/fb) -# https://github.com/latinos/LatinoAnalysis/blob/UL_production/NanoGardener/python/data/TrigMaker_cfg.py#L868 (874) -# 59.832475339 -lumi = 59.83 - -# File with dict of aliases to define -aliasesFile = "../aliases.py" - -# File with dict of variables -variablesFile = "../variables.py" - -# File with dict of cuts -cutsFile = "cuts.py" - -# File with dict of samples -samplesFile = "../samples.py" - -# File with dict of samples for plotting -plotFile = 'plot.py' - -# File with dict of structure (used to define processes in combine) -structureFile = "structure.py" - -# Nuisances file for mkDatacards and for mkShape -nuisancesFile = "../nuisances.py" - -# Path to folder where to save plots -plotPath = '../plots_' + tag - -# This lines are executed right before the runner on the condor node -mountEOS = [] - -# List of imports to import when compiling the whole configuration folder, it should not contain imports used by configuration.py -imports = ["os", "glob", ("collections", "OrderedDict"), "ROOT"] - -# List of files to compile -filesToExec = [ - samplesFile, - aliasesFile, - variablesFile, - cutsFile, - plotFile, - nuisancesFile, - structureFile, -] - -# List of variables to keep in the compiled configuration folder -varsToKeep = [ - "batchVars", - "outputFolder", - "batchFolder", - "configsFolder", - "outputFile", - "runnerFile", - "tag", - "samples", - "aliases", - "variables", - ("cuts", {"cuts": "cuts", "preselections": "preselections"}), - ("plot", {"plot": "plot", "groupPlot": "groupPlot", "legend": "legend"}), - "nuisances", - "structure", - "lumi", -] - -# List of variables to keep in the batch submission script (script.py) -batchVars = varsToKeep[varsToKeep.index("samples") :] - -varsToKeep += ['plotPath'] diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_mm_CR/cuts.py b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_mm_CR/cuts.py deleted file mode 100644 index 091bbdd5..00000000 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_mm_CR/cuts.py +++ /dev/null @@ -1,37 +0,0 @@ -cuts = {} - -# cuts -preselections = 'mll>12 \ - && Lepton_pt[0]>25 \ - && Lepton_pt[1]>10 \ - && (abs(Lepton_pdgId[1])==13 || Lepton_pt[1]>13) \ - && abs(Lepton_eta[0])<2.5 && abs(Lepton_eta[1])<2.5 \ - && bVeto \ - && PuppiMET_pt > 30 \ - && !hole_veto \ - ' - -# Splitting in sub-leading lepton pT -#################################### - -## SR 1jet - -# mu-mu -cuts['hww2l2v_13TeV_WH_SS_noZveto_mm_1j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 13*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)<30 && mlljj20_whss > 50.', - 'categories' : { - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT >= 20 GeV) - 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT < 20 GeV) - 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - } -} - -# mlljj20_whss: -# inv_mass of: (jet1, jet2, 2*closest_lep_to_jets) -# jets are considered with pT > 20 GeV - -# Definitions of WH3l variables: -# https://github.com/latinos/LatinoAnalysis/blob/76e7c4b93aa5f056c92440d4e8d24e7de749c8fe/NanoGardener/python/modules/l3KinProducer.py diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_mm_CR/plot.py b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_mm_CR/plot.py deleted file mode 100644 index 85a4eb49..00000000 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_mm_CR/plot.py +++ /dev/null @@ -1,356 +0,0 @@ -# plot configuration - -# Groups of samples to improve the plots. -# If not defined, normal plots is used -# - -# BTag normalization factors -# Cut = hww2l2v_13TeV_samesign_1j -scale_histo_ttH_hww = 0.403852438299/0.206065949512 # 1.95982130602 -scale_histo_WW = 20.7930003307/18.5931357677 # 1.11831595221 -scale_histo_DY = 38.1653356007/37.1564763287 # 1.02715164008 -scale_histo_WZ = 338.331846275/301.754102591 # 1.12121705511 -scale_histo_Wg = 313.554153169/280.951504356 # 1.11604368835 -scale_histo_Zg = 31.6778612999/26.9277000005 # 1.17640427141 -scale_histo_Vg = (31.6778612999+313.554153169)/(26.9277000005+280.951504356) -scale_histo_WgS = 159.019637682/133.120233942 # 1.19455647704 -scale_histo_ZgS = 13.8422447313/11.7705334283 # 1.17600827656 -scale_histo_VgS = (13.8422447313+159.019637682)/(11.7705334283+133.120233942) -scale_histo_ZH_htt = 0.52702471516/0.418377509104 # 1.25968701398 -scale_histo_WH_htt_plus = 3.51317983868/2.99417382907 # 1.17333863671 -scale_histo_ggZH_hww = 0.0487489906276/0.0416125294193 # 1.17149789517 -scale_histo_qqH_hww = 0.0551519111922/0.0493745882637 # 1.11701004771 -scale_histo_ZZ = 8.20543225456/7.02369155076 # 1.16825065498 -scale_histo_ggH_hww = 0.835377131709/0.704517384148 # 1.18574381627 -scale_histo_WH_htt_minus = 2.14421993024/1.78486436835 # 1.20133494077 -scale_histo_VVV = 10.9161024993/9.13050235687 # 1.19556428252 -scale_histo_WH_hww_plus = 10.0694789513/8.4373732424 # 1.19343765672 -scale_histo_ggH_htt = 0.245521798327/0.219229582295 # 1.11993005577 -scale_histo_ggWW = 1.29296483445/1.18493739596 # 1.09116721175 -scale_histo_top = 124.585001211/87.4139634172 # 1.42522997861 -scale_histo_WWewk = 0.142280711039/0.133346344487 # 1.06700121092 -scale_histo_ZH_hww = 1.42081496306/1.1573508904 # 1.2276440748 -scale_histo_WH_hww_minus = 5.96461104674/5.00138194371 # 1.19259259018 -scale_histo_qqH_htt = 0.011234128291/0.0123404588292 # 0.910349318975 - -groupPlot = {} - -groupPlot['top'] = { - 'nameHR' : 'tW+ and t#bar{t}', - 'isSignal' : 0, - 'color' : 400, # kYellow - 'samples' : ['top'] -} - -groupPlot['WW'] = { - 'nameHR' : 'WW', - 'isSignal' : 0, - 'color' : 851, # kAzure -9 - 'samples' : ['WW', 'ggWW', 'WWewk'] -} - -groupPlot['DY'] = { - 'nameHR' : "DY", - 'isSignal' : 0, - 'color' : 418, # kGreen+2 - 'samples' : ['DY'] -} - -groupPlot['Fake'] = { - 'nameHR' : 'Non-prompt', - 'isSignal' : 0, - 'color' : 921, # kGray + 1 - 'samples' : ['Fake_mm','Fake_em','Fake_ee'] -} - -# groupPlot['ChargeFlip'] = { -# 'nameHR' : "charge_flip", -# 'isSignal' : 0, -# 'color' : 418, # kGreen+2 -# 'samples' : ['ChargeFlip'] -# } - -groupPlot['VVV'] = { - 'nameHR' : 'VVV', - 'isSignal' : 0, - 'color' : 857, # kAzure -3 - 'samples' : ['VVV'] -} - -groupPlot['ZZ'] = { - 'nameHR' : "ZZ", - 'isSignal' : 0, - 'color' : 617, # kViolet + 1 - 'samples' : ['ZZ'] -} - -groupPlot['WZ'] = { - 'nameHR' : "WZ", - 'isSignal' : 0, - 'color' : 619, # kViolet + 1 - 'samples' : ['WZ'] -} - -groupPlot['Vg'] = { - 'nameHR' : "V#gamma", - 'isSignal' : 0, - 'color' : 810, # kOrange + 10 - 'samples' : ['Vg'] -} - -groupPlot['VgS'] = { - 'nameHR' : "V#gamma*", - 'isSignal' : 0, - 'color' : 412, # kGreen - 9 - 'samples' : ['VgS'] -} - -groupPlot['Higgs'] = { - 'nameHR' : 'Higgs', - 'isSignal' : 0, - 'color' : 632, # kRed - 'samples' : ['ggH_hww','qqH_hww','ZH_hww','ggZH_hww','ttH_hww','ggH_htt','qqH_htt','ZH_htt'] -} - -groupPlot['WH_minus'] = { - 'nameHR' : 'W^{-} H (x 10)', - 'isSignal' : 2, - 'color' : 600, # kBlue - 'samples' : ['WH_hww_minus','WH_htt_minus'] -} - -groupPlot['WH_plus'] = { - 'nameHR' : 'W^{+} H (x 10)', - 'isSignal' : 2, - 'color' : 632, # kRed - 'samples' : ['WH_hww_plus', 'WH_htt_plus'] -} - - -# keys here must match keys in samples.py - -plot = {} - -# plot['ChargeFlip'] = { -# 'color' : 418, # kGreen+2 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : 0.5, -# } - -plot['DY'] = { - 'color' : 418, # kGreen+2 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_DY, -} - -plot['top'] = { - 'nameHR' : 'tW and t#bar{t}', - 'color' : 400, # kYellow - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_top, -} - -plot['WW'] = { - 'color' : 851, # kAzure -9 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_WW, -} - -plot['WWewk'] = { - 'color' : 850, # kAzure -10 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_WWewk, -} - -plot['ggWW'] = { - 'color' : 850, # kAzure -10 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggWW, -} - -plot['Vg'] = { - 'color' : 859, # kAzure -1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_Vg, -} - -plot['VgS'] = { - 'color' : 617, # kViolet + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_VgS, -} - -plot['WZ'] = { - 'color' : 858, # kAzure -2 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_WZ * 1.138, # NLO -> NNLO k-factor! -} - -plot['ZZ'] = { - 'color' : 858, # kAzure -2 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ZZ, -} - -plot['VVV'] = { - 'color' : 857, # kAzure -3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_VVV, -} - -########### -# Signals # -########### - -# HWW - -plot['ggH_hww'] = { - 'color' : 632, # kRed - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggH_hww, -} - -plot['qqH_hww'] = { - 'color' : 632+1, # kRed+1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_qqH_hww, -} - -plot['ZH_hww'] = { - 'color' : 632+3, # kRed+3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ZH_hww, -} - -plot['ggZH_hww'] = { - 'color' : 632+4, # kRed+4 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggZH_hww, -} - -plot['WH_hww_plus'] = { - 'color' : 632+2, # kRed+2 - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_hww_plus, -} - -plot['WH_hww_minus'] = { - 'color' : 600, # kBlue - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_hww_minus, -} - -plot['ttH_hww'] = { - 'color' : 632+3, # kRed+3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ttH_hww, -} - - -# Htautau - -plot['ggH_htt'] = { - 'color' : 632, # kRed - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggH_htt, -} - -plot['qqH_htt'] = { - 'color' : 632+1, # kRed+1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_qqH_htt, -} - -plot['ZH_htt'] = { - 'color' : 632+3, # kRed+3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ZH_htt, -} - -plot['WH_htt_plus'] = { - 'color' : 632+2, # kRed+2 - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_htt_plus, -} - -plot['WH_htt_minus'] = { - 'color' : 632+2, # kRed+2 - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_htt_minus, -} - - -######## -# Fake # -######## - -plot['Fake_em'] = { - 'color' : 921, # kGray + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['Fake_ee'] = { - 'color' : 921, # kGray + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['Fake_mm'] = { - 'color' : 921, # kGray + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -# plot['Fake'] = { -# 'color' : 921, # kGray + 1 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : 1.0 -# } - -######## -# Data # -######## - -plot['DATA'] = { - 'nameHR' : 'Data', - 'color' : 1 , - 'isSignal' : 0, - 'isData' : 1, - 'isBlind' : 0, -} - - -# Define legend - -legend = {} - -legend['lumi'] = 'L = 59.8 fb^{-1}' -legend['sqrt'] = '#sqrt{s} = 13 TeV' diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_mm_CR/structure.py b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_mm_CR/structure.py deleted file mode 100644 index c5147380..00000000 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_mm_CR/structure.py +++ /dev/null @@ -1,202 +0,0 @@ -# structure configuration for datacard - -# keys here must match keys in samples.py - -signal_normalization = 10.0 - -# BTag normalization factors -# Cut = hww2l2v_13TeV_samesign_1j -scale_histo_ttH_hww = 0.403852438299/0.206065949512 # 1.95982130602 -scale_histo_WW = 20.7930003307/18.5931357677 # 1.11831595221 -scale_histo_DY = 38.1653356007/37.1564763287 # 1.02715164008 -scale_histo_WZ = 338.331846275/301.754102591 # 1.12121705511 -scale_histo_Wg = 313.554153169/280.951504356 # 1.11604368835 -scale_histo_Zg = 31.6778612999/26.9277000005 # 1.17640427141 -scale_histo_Vg = (31.6778612999+313.554153169)/(26.9277000005+280.951504356) -scale_histo_WgS = 159.019637682/133.120233942 # 1.19455647704 -scale_histo_ZgS = 13.8422447313/11.7705334283 # 1.17600827656 -scale_histo_VgS = (13.8422447313+159.019637682)/(11.7705334283+133.120233942) -scale_histo_ZH_htt = 0.52702471516/0.418377509104 # 1.25968701398 -scale_histo_WH_htt_plus = 3.51317983868/2.99417382907 # 1.17333863671 -scale_histo_ggZH_hww = 0.0487489906276/0.0416125294193 # 1.17149789517 -scale_histo_qqH_hww = 0.0551519111922/0.0493745882637 # 1.11701004771 -scale_histo_ZZ = 8.20543225456/7.02369155076 # 1.16825065498 -scale_histo_ggH_hww = 0.835377131709/0.704517384148 # 1.18574381627 -scale_histo_WH_htt_minus = 2.14421993024/1.78486436835 # 1.20133494077 -scale_histo_VVV = 10.9161024993/9.13050235687 # 1.19556428252 -scale_histo_WH_hww_plus = 10.0694789513/8.4373732424 # 1.19343765672 -scale_histo_ggH_htt = 0.245521798327/0.219229582295 # 1.11993005577 -scale_histo_ggWW = 1.29296483445/1.18493739596 # 1.09116721175 -scale_histo_top = 124.585001211/87.4139634172 # 1.42522997861 -scale_histo_WWewk = 0.142280711039/0.133346344487 # 1.06700121092 -scale_histo_ZH_hww = 1.42081496306/1.1573508904 # 1.2276440748 -scale_histo_WH_hww_minus = 5.96461104674/5.00138194371 # 1.19259259018 -scale_histo_qqH_htt = 0.011234128291/0.0123404588292 # 0.910349318975 - -structure = {} - -# structure['DY'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_DY, -# } - -# structure['top'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_top, -# } - -# structure['WW'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_WW, -# } - -# structure['WWewk'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_WWewk, -# } - -# structure['ggWW'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_ggWW, -# } - - -# structure['Vg'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_Vg, -# } - -structure['VgS'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_VgS, -} - -structure['WZ'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WZ * 1.138 # NLO -> NNLO k-factor -} - -structure['ZZ'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZZ, -} - -structure['VVV'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_VVV, -} - - -# Higgs -structure['ggH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ggH_hww, -} - -structure['qqH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_qqH_hww, -} - -structure['ZH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZH_hww, -} - -structure['ggZH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ggZH_hww, -} - -structure['WH_hww_plus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_hww_plus*signal_normalization, -} - -structure['WH_hww_minus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_hww_minus*signal_normalization, -} - -structure['ttH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ttH_hww, -} - -structure['ggH_htt'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ggH_htt, -} - -structure['qqH_htt'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_qqH_htt, -} - -structure['ZH_htt'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZH_htt, -} - -structure['WH_htt_plus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_htt_plus*signal_normalization, -} - -structure['WH_htt_minus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_htt_minus*signal_normalization, -} - - -# Fakes -structure['Fake_ee'] = { - 'isSignal' : 0, - 'isData' : 0, -} - -structure['Fake_mm'] = { - 'isSignal' : 0, - 'isData' : 0, -} - -structure['Fake_em'] = { - 'isSignal' : 0, - 'isData' : 0, -} - - -# # Data-driven charge flip estimation -# structure['ChargeFlip'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : 0.5, -# } - -# Data -structure['DATA'] = { - 'isSignal' : 0, - 'isData' : 1 -} diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_CR/README.md b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_CR/README.md deleted file mode 100644 index ba17b328..00000000 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_CR/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# Configuration for WHSS 1j signal region - -### Plot distributions - -Compile configuration and plot distributions: - - mkShapesRDF -c 1 - - mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png - -### Produce datacards - -Compile configuration and produce datacards: - - mkShapesRDF -c 1 - - mkDatacards --outputDirDatacard ../datacards_original_signal_scale --skipMissingNuisance \ No newline at end of file diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_CR/configuration.py b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_CR/configuration.py deleted file mode 100644 index 04ba36c6..00000000 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_CR/configuration.py +++ /dev/null @@ -1,99 +0,0 @@ -# Configuration file for charge asymmetry WHSS analysis using the UL 2018 dataset - -import sys,inspect - -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_CR - -configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file -configurations_nuisance = os.path.dirname(configurations_nuisance) # configuration_2j_CR -configurations_nuisance = os.path.dirname(configurations_nuisance) # WHSS -configurations_nuisance = os.path.dirname(configurations_nuisance) # Full2018_v9 -configurations_nuisance = os.path.dirname(configurations_nuisance) # UL - -# Tag used to identify the configuration folder version -tag = 'WHSS_2018_v9_chargeAsymmetry_Mu82_EleUL90' - -# File to use as runner script, default uses mkShapesRDF.shapeAnalysis.runner, otherwise specify path to script -runnerFile = "default" - -# Output file name -outputFile = "plots_WHSS_2018_v9_chargeAsymmetry_Mu82_EleUL90_DYflip_data.root" # "mkShapes__{}.root".format(tag) - -# Path to ouput folder -outputFolder = "../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" - -# Path to batch folder (used for condor submission) -batchFolder = "condor" - -# Path to configuration folder (will contain all the compiled configuration files) -configsFolder = "configs" - -# Luminosity to normalize to (in 1/fb) -# https://github.com/latinos/LatinoAnalysis/blob/UL_production/NanoGardener/python/data/TrigMaker_cfg.py#L868 (874) -# 59.832475339 -lumi = 59.83 - -# File with dict of aliases to define -aliasesFile = "../aliases.py" - -# File with dict of variables -variablesFile = "../variables.py" - -# File with dict of cuts -cutsFile = "cuts.py" - -# File with dict of samples -samplesFile = "samples.py" - -# File with dict of samples for plotting -plotFile = 'plot.py' - -# File with dict of structure (used to define processes in combine) -structureFile = "structure.py" - -# Nuisances file for mkDatacards and for mkShape -nuisancesFile = "../nuisances.py" - -# Path to folder where to save plots -plotPath = '../plots_' + tag - -# This lines are executed right before the runner on the condor node -mountEOS = [] - -# List of imports to import when compiling the whole configuration folder, it should not contain imports used by configuration.py -imports = ["os", "glob", ("collections", "OrderedDict"), "ROOT"] - -# List of files to compile -filesToExec = [ - samplesFile, - aliasesFile, - variablesFile, - cutsFile, - plotFile, - nuisancesFile, - structureFile, -] - -# List of variables to keep in the compiled configuration folder -varsToKeep = [ - "batchVars", - "outputFolder", - "batchFolder", - "configsFolder", - "outputFile", - "runnerFile", - "tag", - "samples", - "aliases", - "variables", - ("cuts", {"cuts": "cuts", "preselections": "preselections"}), - ("plot", {"plot": "plot", "groupPlot": "groupPlot", "legend": "legend"}), - "nuisances", - "structure", - "lumi", -] - -# List of variables to keep in the batch submission script (script.py) -batchVars = varsToKeep[varsToKeep.index("samples") :] - -varsToKeep += ['plotPath'] diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_CR/cuts.py b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_CR/cuts.py deleted file mode 100644 index 7f25bb75..00000000 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_CR/cuts.py +++ /dev/null @@ -1,65 +0,0 @@ -cuts = {} - -# cuts -preselections = 'mll>12 \ - && Lepton_pt[0]>25 \ - && Lepton_pt[1]>10 \ - && (abs(Lepton_pdgId[1])==13 || Lepton_pt[1]>13) \ - && abs(Lepton_eta[0])<2.5 && abs(Lepton_eta[1])<2.5 \ - && bVeto \ - && PuppiMET_pt > 30 \ - && !hole_veto \ - ' - -# Splitting in sub-leading lepton pT -#################################### - -## SR 2jets - -# mu-e -cuts['hww2l2v_13TeV_WH_SS_em_2j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && mjj < 100 && mlljj20_whss > 50.', - 'categories' : { - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT >= 20 GeV) - 'SS_CR_plus_pt2ge20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2ge20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT < 20 GeV) - 'SS_CR_plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - } -} - -# e-e -cuts['hww2l2v_13TeV_WH_SS_ee_2j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*11) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && mjj < 100 && abs(mll-91.2)>15 && mlljj20_whss > 50.', - 'categories' : { - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT >= 20 GeV) - 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT < 20 GeV) - 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - } -} - -## DY->ee CR - 2 same-sign electrons IN the Z peak. To check the charge-flip probability method to estimate DY in the signal region - -# DY CR 2jets -cuts['hww2l2v_13TeV_WH_SS_DYee_2j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*11) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && mjj < 100 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0 && abs(mll-91.2)<15 && mlljj20_whss > 50.', - 'categories' : { - # Sub-leading lepton pT >= 20 GeV - 'plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20', - 'minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20', - 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20', - } -} - -# mlljj20_whss: -# inv_mass of: (jet1, jet2, 2*closest_lep_to_jets) -# jets are considered with pT > 20 GeV - -# Definitions of WH3l variables: -# https://github.com/latinos/LatinoAnalysis/blob/76e7c4b93aa5f056c92440d4e8d24e7de749c8fe/NanoGardener/python/modules/l3KinProducer.py diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_CR/plot.py b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_CR/plot.py deleted file mode 100644 index e0aa3d3b..00000000 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_CR/plot.py +++ /dev/null @@ -1,356 +0,0 @@ -# plot configuration - -# Groups of samples to improve the plots. -# If not defined, normal plots is used -# - -# BTag normalization factors -# Cut = hww2l2v_13TeV_samesign_2j -scale_histo_ttH_hww = 1.71005342426/1.09314151072 # 1.5643477148 -scale_histo_WW = 2.25800060639/1.91041058041 # 1.18194519521 -scale_histo_DY = 7.90909155209/10.3492826587 # 0.764216401555 -scale_histo_WZ = 49.3067818241/43.0657206854 # 1.14491946354 -scale_histo_Wg = 41.0307152872/32.8185201828 # 1.25023051188 -scale_histo_Zg = 4.88184592384/4.15039184398 # 1.17623735477 -scale_histo_Vg = (4.88184592384+41.0307152872)/(4.15039184398+32.8185201828) -scale_histo_WgS = 19.5784400987/16.5378866827 # 1.18385380637 -scale_histo_ZgS = 2.74664238533/2.21545099158 # 1.23976670925 -scale_histo_VgS = (2.74664238533+19.5784400987)/(2.21545099158+16.5378866827) -scale_histo_ZH_htt = 0.116319166763/0.091351528461 # 1.27331385388 -scale_histo_WH_htt_plus = 0.4131832122/0.323965810005 # 1.27539141304 -scale_histo_ggZH_hww = 0.0104452201343/0.00850780582798 # 1.22772197033 -scale_histo_qqH_hww = 0.00875809211317/0.00618184320386 # 1.41674446025 -scale_histo_ZZ = 1.19318174322/0.95378270042 # 1.25099956488 -scale_histo_ggH_hww = 0.152649430692/0.135132712642 # 1.1296260373 -scale_histo_WH_htt_minus = 0.263520609345/0.21247941852 # 1.24021710517 -scale_histo_VVV = 3.62299846954/3.27783418705 # 1.10530254515 -scale_histo_WH_hww_plus = 1.99024457637/1.64510255389 # 1.20979970013 -scale_histo_ggH_htt = 0.0137239155152/1 # 0.0137239155152 -scale_histo_ggWW = 0.138240992431/0.130499421048 # 1.05932264926 -scale_histo_top = 61.5535890766/44.34883106 # 1.38794163466 -scale_histo_WWewk = 0.0247224163572/0.0239052406614 # 1.03418395604 -scale_histo_ZH_hww = 0.343842150558/0.26623480593 # 1.29149961951 -scale_histo_WH_hww_minus = 1.24042862398/1.03231388643 # 1.20160024997 -scale_histo_qqH_htt = 0.00478130781574/0.00431274438945 # 1.10864623172 - -groupPlot = {} - -# groupPlot['top'] = { -# 'nameHR' : 'tW+ and t#bar{t}', -# 'isSignal' : 0, -# 'color' : 400, # kYellow -# 'samples' : ['top'] -# } - -# groupPlot['WW'] = { -# 'nameHR' : 'WW', -# 'isSignal' : 0, -# 'color' : 851, # kAzure -9 -# 'samples' : ['WW', 'ggWW', 'WWewk'] -# } - -# groupPlot['DY'] = { -# 'nameHR' : "DY", -# 'isSignal' : 0, -# 'color' : 418, # kGreen+2 -# 'samples' : ['DY'] -# } - -groupPlot['Fake'] = { - 'nameHR' : 'Non-prompt', - 'isSignal' : 0, - 'color' : 921, # kGray + 1 - 'samples' : ['Fake_mm','Fake_em','Fake_ee'] -} - -groupPlot['ChargeFlip'] = { - 'nameHR' : "charge_flip", - 'isSignal' : 0, - 'color' : 418, # kGreen+2 - 'samples' : ['ChargeFlip'] -} - -groupPlot['VVV'] = { - 'nameHR' : 'VVV', - 'isSignal' : 0, - 'color' : 857, # kAzure -3 - 'samples' : ['VVV'] -} - -groupPlot['ZZ'] = { - 'nameHR' : "ZZ", - 'isSignal' : 0, - 'color' : 617, # kViolet + 1 - 'samples' : ['ZZ'] -} - -groupPlot['WZ'] = { - 'nameHR' : "WZ", - 'isSignal' : 0, - 'color' : 619, # kViolet + 1 - 'samples' : ['WZ'] -} - -groupPlot['Vg'] = { - 'nameHR' : "V#gamma", - 'isSignal' : 0, - 'color' : 810, # kOrange + 10 - 'samples' : ['Vg'] -} - -groupPlot['VgS'] = { - 'nameHR' : "V#gamma*", - 'isSignal' : 0, - 'color' : 412, # kGreen - 9 - 'samples' : ['VgS'] -} - -groupPlot['Higgs'] = { - 'nameHR' : 'Higgs', - 'isSignal' : 0, - 'color' : 632, # kRed - 'samples' : ['ggH_hww','qqH_hww','ZH_hww','ggZH_hww','ttH_hww','ggH_htt','qqH_htt','ZH_htt'] -} - -groupPlot['WH_minus'] = { - 'nameHR' : 'W^{-} H (x 10)', - 'isSignal' : 2, - 'color' : 600, # kBlue - 'samples' : ['WH_hww_minus','WH_htt_minus'] -} - -groupPlot['WH_plus'] = { - 'nameHR' : 'W^{+} H (x 10)', - 'isSignal' : 2, - 'color' : 632, # kRed - 'samples' : ['WH_hww_plus', 'WH_htt_plus'] -} - - -# keys here must match keys in samples.py - -plot = {} - -plot['ChargeFlip'] = { - 'color' : 418, # kGreen+2 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 0.5, -} - -# plot['DY'] = { -# 'color' : 418, # kGreen+2 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : scale_histo_DY, -# } - -# plot['top'] = { -# 'nameHR' : 'tW and t#bar{t}', -# 'color' : 400, # kYellow -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : scale_histo_top, -# } - -# plot['WW'] = { -# 'color' : 851, # kAzure -9 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : scale_histo_WW, -# } - -# plot['WWewk'] = { -# 'color' : 850, # kAzure -10 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : scale_histo_WWewk, -# } - -# plot['ggWW'] = { -# 'color' : 850, # kAzure -10 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : scale_histo_ggWW, -# } - -plot['Vg'] = { - 'color' : 859, # kAzure -1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_Vg, -} - -plot['VgS'] = { - 'color' : 617, # kViolet + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_VgS, -} - -plot['WZ'] = { - 'color' : 858, # kAzure -2 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_WZ * 1.138, # NLO -> NNLO k-factor! -} - -plot['ZZ'] = { - 'color' : 858, # kAzure -2 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ZZ, -} - -plot['VVV'] = { - 'color' : 857, # kAzure -3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_VVV, -} - -########### -# Signals # -########### - -# HWW - -plot['ggH_hww'] = { - 'color' : 632, # kRed - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggH_hww, -} - -plot['qqH_hww'] = { - 'color' : 632+1, # kRed+1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_qqH_hww, -} - -plot['ZH_hww'] = { - 'color' : 632+3, # kRed+3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ZH_hww, -} - -plot['ggZH_hww'] = { - 'color' : 632+4, # kRed+4 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggZH_hww, -} - -plot['WH_hww_plus'] = { - 'color' : 632+2, # kRed+2 - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_hww_plus, -} - -plot['WH_hww_minus'] = { - 'color' : 600, # kBlue - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_hww_minus, -} - -plot['ttH_hww'] = { - 'color' : 632+3, # kRed+3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ttH_hww, -} - - -# Htautau - -plot['ggH_htt'] = { - 'color' : 632, # kRed - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggH_htt, -} - -plot['qqH_htt'] = { - 'color' : 632+1, # kRed+1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_qqH_htt, -} - -plot['ZH_htt'] = { - 'color' : 632+3, # kRed+3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ZH_htt, -} - -plot['WH_htt_plus'] = { - 'color' : 632+2, # kRed+2 - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_htt_plus, -} - -plot['WH_htt_minus'] = { - 'color' : 632+2, # kRed+2 - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_htt_minus, -} - - -######## -# Fake # -######## - -plot['Fake_em'] = { - 'color' : 921, # kGray + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['Fake_ee'] = { - 'color' : 921, # kGray + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['Fake_mm'] = { - 'color' : 921, # kGray + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -# plot['Fake'] = { -# 'color' : 921, # kGray + 1 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : 1.0 -# } - -######## -# Data # -######## - -plot['DATA'] = { - 'nameHR' : 'Data', - 'color' : 1 , - 'isSignal' : 0, - 'isData' : 1, - 'isBlind' : 0, -} - - -# Define legend - -legend = {} - -legend['lumi'] = 'L = 59.8 fb^{-1}' -legend['sqrt'] = '#sqrt{s} = 13 TeV' diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_CR/samples.py b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_CR/samples.py deleted file mode 100644 index 3bd7cb46..00000000 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_CR/samples.py +++ /dev/null @@ -1,400 +0,0 @@ -import os,glob - -################################################ -################# SKIMS ######################## -################################################ - -# MC: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Summer20UL18_106x_nAODv9_Full2018v9/MCl1loose2018v9__MCCorr2018v9NoJERInHorn__l2tightOR2018v9/ -# DATA: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Run2018_UL2018_nAODv9_Full2018v9/DATAl1loose2018v9__l2loose__l2tightOR2018v9/ -# FAKE: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Run2018_UL2018_nAODv9_Full2018v9/DATAl1loose2018v9__l2loose__fakeW/ - -mcProduction = 'Summer20UL18_106x_nAODv9_Full2018v9' -dataReco = 'Run2018_UL2018_nAODv9_Full2018v9' -mcSteps = 'MCl1loose2018v9__MCCorr2018v9NoJERInHorn__l2tightOR2018v9{var}' -fakeSteps = 'DATAl1loose2018v9__l2loose__fakeW' -dataSteps = 'DATAl1loose2018v9__l2loose__l2tightOR2018v9' - -############################################## -###### Tree base directory for the site ###### -############################################## - -treeBaseDir = '/eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano' -limitFiles = -1 - -def makeMCDirectory(var=''): - return os.path.join(treeBaseDir, mcProduction, mcSteps.format(var='')) - -mcDirectory = makeMCDirectory() -fakeDirectory = os.path.join(treeBaseDir, dataReco, fakeSteps) -dataDirectory = os.path.join(treeBaseDir, dataReco, dataSteps) - -samples = {} - -from mkShapesRDF.lib.search_files import SearchFiles -s = SearchFiles() - -useXROOTD = True -redirector = 'root://eoscms.cern.ch/' - -def nanoGetSampleFiles(path, name): - _files = s.searchFiles(path, name, redirector=redirector) - if limitFiles != -1 and len(_files) > limitFiles: - return [(name, _files[:limitFiles])] - else: - return [(name, _files)] - -def CombineBaseW(samples, proc, samplelist): - _filtFiles = list(filter(lambda k: k[0] in samplelist, samples[proc]['name'])) - _files = list(map(lambda k: k[1], _filtFiles)) - _l = list(map(lambda k: len(k), _files)) - leastFiles = _files[_l.index(min(_l))] - dfSmall = ROOT.RDataFrame('Runs', leastFiles) - s = dfSmall.Sum('genEventSumw').GetValue() - f = ROOT.TFile.Open(leastFiles[0]) - t = f.Get('Events') - t.GetEntry(1) - xs = t.baseW * s - - __files = [] - for f in _files: - __files += f - df = ROOT.RDataFrame('Runs', __files) - s = df.Sum('genEventSumw').GetValue() - newbaseW = str(xs / s) - weight = newbaseW + '/baseW' - - for iSample in samplelist: - addSampleWeight(samples, proc, iSample, weight) - -def addSampleWeight(samples, sampleName, sampleNameType, weight): - obj = list(filter(lambda k: k[0] == sampleNameType, samples[sampleName]['name']))[0] - samples[sampleName]['name'] = list(filter(lambda k: k[0] != sampleNameType, samples[sampleName]['name'])) - if len(obj) > 2: - samples[sampleName]['name'].append((obj[0], obj[1], obj[2] + '*(' + weight + ')')) - else: - samples[sampleName]['name'].append((obj[0], obj[1], '(' + weight + ')' )) - - -################################################ -############ DATA DECLARATION ################## -################################################ - -DataRun = [ - ['A','Run2018A-UL2018-v1'], - ['B','Run2018B-UL2018-v1'], - ['C','Run2018C-UL2018-v1'], - ['D','Run2018D-UL2018-v1'], -] - -DataSets = ['MuonEG','SingleMuon','EGamma','DoubleMuon'] - -DataTrig = { - 'MuonEG' : 'Trigger_ElMu' , - 'DoubleMuon' : '!Trigger_ElMu && Trigger_dblMu' , - 'SingleMuon' : '!Trigger_ElMu && !Trigger_dblMu && Trigger_sngMu' , - 'EGamma' : '!Trigger_ElMu && !Trigger_dblMu && !Trigger_sngMu && (Trigger_sngEl || Trigger_dblEl)' , -} - -######################################### -############ MC COMMON ################## -######################################### - -# SFweight does not include btag weights -mcCommonWeightNoMatch = 'XSWeight*SFweight*METFilter_MC' -mcCommonWeight = 'XSWeight*SFweight*METFilter_MC*PromptGenLepMatch2l' - -########################################### -############# BACKGROUNDS ############### -########################################### - -# ###### DY ####### -# files = nanoGetSampleFiles(mcDirectory, 'DYJetsToLL_M-10to50_NLO') + \ -# nanoGetSampleFiles(mcDirectory, 'DYJetsToLL_M-50') - -# samples['DY'] = { -# 'name': files, -# 'weight': mcCommonWeight + '*(Lepton_pdgId[0]*Lepton_pdgId[1] == -11*13)*( !(Sum(PhotonGen_isPrompt==1 && PhotonGen_pt>15 && abs(PhotonGen_eta)<2.6) > 0))', -# 'FilesPerJob': 8, -# } - -# ##### Top ####### -# files = nanoGetSampleFiles(mcDirectory, 'TTTo2L2Nu') + \ -# nanoGetSampleFiles(mcDirectory, 'ST_s-channel') + \ -# nanoGetSampleFiles(mcDirectory, 'ST_t-channel_top') + \ -# nanoGetSampleFiles(mcDirectory, 'ST_t-channel_antitop') + \ -# nanoGetSampleFiles(mcDirectory, 'ST_tW_antitop') + \ -# nanoGetSampleFiles(mcDirectory, 'ST_tW_top') - -# samples['top'] = { -# 'name': files, -# 'weight': mcCommonWeight, -# 'FilesPerJob': 8, -# } -# addSampleWeight(samples,'top','TTTo2L2Nu','Top_pTrw') - -# ###### WW ######## -# samples['WW'] = { -# 'name': nanoGetSampleFiles(mcDirectory, 'WWTo2L2Nu'), -# 'weight': mcCommonWeight + '*nllW*ewknloW', -# 'FilesPerJob': 4 -# } - -# samples['WWewk'] = { -# 'name': nanoGetSampleFiles(mcDirectory, 'WpWmJJ_EWK_noTop'), -# 'weight': mcCommonWeight + '*(Sum(abs(GenPart_pdgId)==6 || GenPart_pdgId==25)==0)', # Filter tops and Higgs, -# 'FilesPerJob': 8 -# } - -# files = nanoGetSampleFiles(mcDirectory, 'GluGluToWWToENEN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToENMN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToENTN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToMNEN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToMNMN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToMNTN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToTNEN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToTNMN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToTNTN') - -# samples['ggWW'] = { -# 'name': files, -# 'weight': mcCommonWeight + '*1.53/1.4', -# 'FilesPerJob': 8 -# } - -# Charge-flip estimated from data, and covering DY, WW, and Top -samples['ChargeFlip'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'DYJetsToLL_M-50'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4 -} - -######## Vg ######## -files = nanoGetSampleFiles(mcDirectory, 'Wg_AMCNLOFXFX_01J') + \ - nanoGetSampleFiles(mcDirectory, 'ZGToLLG') - -samples['Vg'] = { - 'name': files, - 'weight': mcCommonWeightNoMatch + '*(Gen_ZGstar_mass <= 0)', - 'FilesPerJob': 4, -} - -######## VgS ######## -files = nanoGetSampleFiles(mcDirectory, 'Wg_AMCNLOFXFX_01J') + \ - nanoGetSampleFiles(mcDirectory, 'WZTo3LNu_mllmin0p1') + \ - nanoGetSampleFiles(mcDirectory, 'ZGToLLG') - -samples['VgS'] = { - 'name': files, - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} -addSampleWeight(samples, 'VgS', 'Wg_AMCNLOFXFX_01J', '((Gen_ZGstar_mass > 0 && Gen_ZGstar_mass <= 0.1))*(gstarLow*0.94)') -addSampleWeight(samples, 'VgS', 'WZTo3LNu_mllmin0p1', '((Gen_ZGstar_mass > 0.1)*(0.601644*58.59/4.666))*(gstarLow*0.94)') -addSampleWeight(samples, 'VgS', 'ZGToLLG', '(Gen_ZGstar_mass > 0)') - - -############ WZ ############ -files = nanoGetSampleFiles(mcDirectory, 'WZTo3LNu_mllmin0p1') + \ - nanoGetSampleFiles(mcDirectory, 'WZTo2Q2L_mllmin4p0') - -samples['WZ'] = { - 'name': files, - 'weight': mcCommonWeight + ' * (gstarHigh)', - 'FilesPerJob': 4, -} -addSampleWeight(samples, 'WZ', 'WZTo3LNu_mllmin0p1', '(0.601644*58.59/4.666)') - - -############ ZZ ############ -files = nanoGetSampleFiles(mcDirectory, 'ZZTo2L2Nu') + \ - nanoGetSampleFiles(mcDirectory, 'ZZTo2Q2L_mllmin4p0') + \ - nanoGetSampleFiles(mcDirectory, 'ZZTo4L') - -samples['ZZ'] = { - 'name': files, - 'weight': mcCommonWeight, - 'FilesPerJob': 2, -} - - -########## VVV ######### -files = nanoGetSampleFiles(mcDirectory, 'ZZZ') + \ - nanoGetSampleFiles(mcDirectory, 'WZZ') + \ - nanoGetSampleFiles(mcDirectory, 'WWZ') + \ - nanoGetSampleFiles(mcDirectory, 'WWW') - -samples['VVV'] = { - 'name': files, - 'weight': mcCommonWeight, - 'FilesPerJob': 8, -} - -########################################### -############# SIGNALS ################## -########################################### - -signals = [] - -############ ggH H->WW ############ -samples['ggH_hww'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'GluGluHToWWTo2L2Nu_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} -signals.append('ggH_hww') - -############ VBF H->WW ############ -samples['qqH_hww'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'VBFHToWWTo2L2Nu_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 8, -} -signals.append('qqH_hww') - -############ ZH H->WW ############ -samples['ZH_hww'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'HZJ_HToWW_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 8, -} -signals.append('ZH_hww') - -samples['ggZH_hww'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'GluGluZH_HToWWTo2L2Nu_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 8, -} -signals.append('ggZH_hww') - -############ WH H->WW ############ -samples['WH_hww_plus'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'HWplusJ_HToWW_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} -signals.append('WH_hww_plus') - -samples['WH_hww_minus'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'HWminusJ_HToWW_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} - -signals.append('WH_hww_minus') - -############ ttH ############ -samples['ttH_hww'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'ttHToNonbb_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} -signals.append('ttH_hww') - -############ H->TauTau ############ -samples['ggH_htt'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'GluGluHToTauTau_M125_Powheg'), - 'weight': mcCommonWeight, - 'FilesPerJob': 20, -} -signals.append('ggH_htt') - -samples['qqH_htt'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'VBFHToTauTau_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 20, -} -signals.append('qqH_htt') - -samples['ZH_htt'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'ZHToTauTau_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 8, -} -signals.append('ZH_htt') - -############ WH H->TauTau ############ -samples['WH_htt_plus'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'WplusHToTauTau_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} -signals.append('WH_htt_plus') - -samples['WH_htt_minus'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'WminusHToTauTau_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} -signals.append('WH_htt_minus') - - -########################################### -################## FAKE ################### -########################################### - -samples['Fake'] = { - 'name': [], - 'weight': 'METFilter_DATA*fakeW', - 'weights': [], - 'isData': ['all'], - 'FilesPerJob': 50 -} - -for _, sd in DataRun: - for pd in DataSets: - tag_data = pd + '_' + sd - - if ( ('DoubleMuon' in pd and 'Run2018B' in sd) - or ('DoubleMuon' in pd and 'Run2018D' in sd) - or ('SingleMuon' in pd and 'Run2018A' in sd) - or ('SingleMuon' in pd and 'Run2018B' in sd) - or ('SingleMuon' in pd and 'Run2018C' in sd)): - print("sd = {}".format(sd)) - print("pd = {}".format(pd)) - print("Old tag = {}".format(tag_data)) - tag_data = tag_data.replace('v1','v2') - print("New tag = {}".format(tag_data)) - - files = nanoGetSampleFiles(fakeDirectory, tag_data) - - samples['Fake']['name'].extend(files) - addSampleWeight(samples, 'Fake', tag_data, DataTrig[pd]) - -samples['Fake']['subsamples'] = { - 'em': 'abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 11*13', - 'mm': 'abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 13*13', - 'ee': 'abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 11*11' -} - - -########################################### -################## DATA ################### -########################################### - -samples['DATA'] = { - 'name': [], - 'weight': 'LepWPCut*METFilter_DATA', - 'weights': [], - 'isData': ['all'], - 'FilesPerJob': 50 -} - -for _, sd in DataRun: - for pd in DataSets: - tag_data = pd + '_' + sd - - if ( ('DoubleMuon' in pd and 'Run2018B' in sd) - or ('DoubleMuon' in pd and 'Run2018D' in sd) - or ('SingleMuon' in pd and 'Run2018A' in sd) - or ('SingleMuon' in pd and 'Run2018B' in sd) - or ('SingleMuon' in pd and 'Run2018C' in sd)): - print("sd = {}".format(sd)) - print("pd = {}".format(pd)) - print("Old tag = {}".format(tag_data)) - tag_data = tag_data.replace('v1','v2') - print("New tag = {}".format(tag_data)) - - files = nanoGetSampleFiles(dataDirectory, tag_data) - - samples['DATA']['name'].extend(files) - addSampleWeight(samples, 'DATA', tag_data, DataTrig[pd]) diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_CR/structure.py b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_CR/structure.py deleted file mode 100644 index 3fecfc76..00000000 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_CR/structure.py +++ /dev/null @@ -1,202 +0,0 @@ -# structure configuration for datacard - -# keys here must match keys in samples.py - -signal_normalization = 10.0 - -# BTag normalization factors -# Cut = hww2l2v_13TeV_samesign_2j -scale_histo_ttH_hww = 1.71005342426/1.09314151072 # 1.5643477148 -scale_histo_WW = 2.25800060639/1.91041058041 # 1.18194519521 -scale_histo_DY = 7.90909155209/10.3492826587 # 0.764216401555 -scale_histo_WZ = 49.3067818241/43.0657206854 # 1.14491946354 -scale_histo_Wg = 41.0307152872/32.8185201828 # 1.25023051188 -scale_histo_Zg = 4.88184592384/4.15039184398 # 1.17623735477 -scale_histo_Vg = (4.88184592384+41.0307152872)/(4.15039184398+32.8185201828) -scale_histo_WgS = 19.5784400987/16.5378866827 # 1.18385380637 -scale_histo_ZgS = 2.74664238533/2.21545099158 # 1.23976670925 -scale_histo_VgS = (2.74664238533+19.5784400987)/(2.21545099158+16.5378866827) -scale_histo_ZH_htt = 0.116319166763/0.091351528461 # 1.27331385388 -scale_histo_WH_htt_plus = 0.4131832122/0.323965810005 # 1.27539141304 -scale_histo_ggZH_hww = 0.0104452201343/0.00850780582798 # 1.22772197033 -scale_histo_qqH_hww = 0.00875809211317/0.00618184320386 # 1.41674446025 -scale_histo_ZZ = 1.19318174322/0.95378270042 # 1.25099956488 -scale_histo_ggH_hww = 0.152649430692/0.135132712642 # 1.1296260373 -scale_histo_WH_htt_minus = 0.263520609345/0.21247941852 # 1.24021710517 -scale_histo_VVV = 3.62299846954/3.27783418705 # 1.10530254515 -scale_histo_WH_hww_plus = 1.99024457637/1.64510255389 # 1.20979970013 -scale_histo_ggH_htt = 0.0137239155152/1 # 0.0137239155152 -scale_histo_ggWW = 0.138240992431/0.130499421048 # 1.05932264926 -scale_histo_top = 61.5535890766/44.34883106 # 1.38794163466 -scale_histo_WWewk = 0.0247224163572/0.0239052406614 # 1.03418395604 -scale_histo_ZH_hww = 0.343842150558/0.26623480593 # 1.29149961951 -scale_histo_WH_hww_minus = 1.24042862398/1.03231388643 # 1.20160024997 -scale_histo_qqH_htt = 0.00478130781574/0.00431274438945 # 1.10864623172 - -structure = {} - -# structure['DY'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_DY, -# } - -# structure['top'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_top, -# } - -# structure['WW'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_WW, -# } - -# structure['WWewk'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_WWewk, -# } - -# structure['ggWW'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_ggWW, -# } - - -structure['Vg'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_Vg, -} - -structure['VgS'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_VgS, -} - -structure['WZ'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WZ * 1.138 # NLO -> NNLO k-factor -} - -structure['ZZ'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZZ, -} - -structure['VVV'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_VVV, -} - - -# Higgs -structure['ggH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ggH_hww, -} - -structure['qqH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_qqH_hww, -} - -structure['ZH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZH_hww, -} - -structure['ggZH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ggZH_hww, -} - -structure['WH_hww_plus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_hww_plus*signal_normalization, -} - -structure['WH_hww_minus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_hww_minus*signal_normalization, -} - -structure['ttH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ttH_hww, -} - -structure['ggH_htt'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ggH_htt, -} - -structure['qqH_htt'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_qqH_htt, -} - -structure['ZH_htt'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZH_htt, -} - -structure['WH_htt_plus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_htt_plus*signal_normalization, -} - -structure['WH_htt_minus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_htt_minus*signal_normalization, -} - - -# Fakes -structure['Fake_ee'] = { - 'isSignal' : 0, - 'isData' : 0, -} - -structure['Fake_mm'] = { - 'isSignal' : 0, - 'isData' : 0, -} - -structure['Fake_em'] = { - 'isSignal' : 0, - 'isData' : 0, -} - - -# Data-driven charge flip estimation -structure['ChargeFlip'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : 0.5, -} - -# Data -structure['DATA'] = { - 'isSignal' : 0, - 'isData' : 1 -} diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_mm_CR/README.md b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_mm_CR/README.md deleted file mode 100644 index ba17b328..00000000 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_mm_CR/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# Configuration for WHSS 1j signal region - -### Plot distributions - -Compile configuration and plot distributions: - - mkShapesRDF -c 1 - - mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png - -### Produce datacards - -Compile configuration and produce datacards: - - mkShapesRDF -c 1 - - mkDatacards --outputDirDatacard ../datacards_original_signal_scale --skipMissingNuisance \ No newline at end of file diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_mm_CR/configuration.py b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_mm_CR/configuration.py deleted file mode 100644 index 3542cfea..00000000 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_mm_CR/configuration.py +++ /dev/null @@ -1,99 +0,0 @@ -# Configuration file for charge asymmetry WHSS analysis using the UL 2018 dataset - -import sys,inspect - -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_mm_CR - -configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file -configurations_nuisance = os.path.dirname(configurations_nuisance) # configuration_2j_mm_CR -configurations_nuisance = os.path.dirname(configurations_nuisance) # WHSS -configurations_nuisance = os.path.dirname(configurations_nuisance) # Full2018_v9 -configurations_nuisance = os.path.dirname(configurations_nuisance) # UL - -# Tag used to identify the configuration folder version -tag = 'WHSS_2018_v9_chargeAsymmetry_Mu82_EleUL90' - -# File to use as runner script, default uses mkShapesRDF.shapeAnalysis.runner, otherwise specify path to script -runnerFile = "default" - -# Output file name -outputFile = "plots_WHSS_2018_v9_chargeAsymmetry_Mu82_EleUL90_DYflip_data.root" # "mkShapes__{}.root".format(tag) - -# Path to ouput folder -outputFolder = "../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" - -# Path to batch folder (used for condor submission) -batchFolder = "condor" - -# Path to configuration folder (will contain all the compiled configuration files) -configsFolder = "configs" - -# Luminosity to normalize to (in 1/fb) -# https://github.com/latinos/LatinoAnalysis/blob/UL_production/NanoGardener/python/data/TrigMaker_cfg.py#L868 (874) -# 59.832475339 -lumi = 59.83 - -# File with dict of aliases to define -aliasesFile = "../aliases.py" - -# File with dict of variables -variablesFile = "../variables.py" - -# File with dict of cuts -cutsFile = "cuts.py" - -# File with dict of samples -samplesFile = "../samples.py" - -# File with dict of samples for plotting -plotFile = 'plot.py' - -# File with dict of structure (used to define processes in combine) -structureFile = "structure.py" - -# Nuisances file for mkDatacards and for mkShape -nuisancesFile = "../nuisances.py" - -# Path to folder where to save plots -plotPath = '../plots_' + tag - -# This lines are executed right before the runner on the condor node -mountEOS = [] - -# List of imports to import when compiling the whole configuration folder, it should not contain imports used by configuration.py -imports = ["os", "glob", ("collections", "OrderedDict"), "ROOT"] - -# List of files to compile -filesToExec = [ - samplesFile, - aliasesFile, - variablesFile, - cutsFile, - plotFile, - nuisancesFile, - structureFile, -] - -# List of variables to keep in the compiled configuration folder -varsToKeep = [ - "batchVars", - "outputFolder", - "batchFolder", - "configsFolder", - "outputFile", - "runnerFile", - "tag", - "samples", - "aliases", - "variables", - ("cuts", {"cuts": "cuts", "preselections": "preselections"}), - ("plot", {"plot": "plot", "groupPlot": "groupPlot", "legend": "legend"}), - "nuisances", - "structure", - "lumi", -] - -# List of variables to keep in the batch submission script (script.py) -batchVars = varsToKeep[varsToKeep.index("samples") :] - -varsToKeep += ['plotPath'] diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_mm_CR/cuts.py b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_mm_CR/cuts.py deleted file mode 100644 index de3426fd..00000000 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_mm_CR/cuts.py +++ /dev/null @@ -1,37 +0,0 @@ -cuts = {} - -# cuts -preselections = 'mll>12 \ - && Lepton_pt[0]>25 \ - && Lepton_pt[1]>10 \ - && (abs(Lepton_pdgId[1])==13 || Lepton_pt[1]>13) \ - && abs(Lepton_eta[0])<2.5 && abs(Lepton_eta[1])<2.5 \ - && bVeto \ - && PuppiMET_pt > 30 \ - && !hole_veto \ - ' - -# Splitting in sub-leading lepton pT -#################################### - -## SR 2jets - -# mu-mu -cuts['hww2l2v_13TeV_WH_SS_noZveto_mm_2j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 13*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && mjj < 100 && mlljj20_whss > 50.', - 'categories' : { - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT >= 20 GeV) - 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT < 20 GeV) - 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - } -} - -# mlljj20_whss: -# inv_mass of: (jet1, jet2, 2*closest_lep_to_jets) -# jets are considered with pT > 20 GeV - -# Definitions of WH3l variables: -# https://github.com/latinos/LatinoAnalysis/blob/76e7c4b93aa5f056c92440d4e8d24e7de749c8fe/NanoGardener/python/modules/l3KinProducer.py diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_mm_CR/plot.py b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_mm_CR/plot.py deleted file mode 100644 index 389f1256..00000000 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_mm_CR/plot.py +++ /dev/null @@ -1,356 +0,0 @@ -# plot configuration - -# Groups of samples to improve the plots. -# If not defined, normal plots is used -# - -# BTag normalization factors -# Cut = hww2l2v_13TeV_samesign_2j -scale_histo_ttH_hww = 1.71005342426/1.09314151072 # 1.5643477148 -scale_histo_WW = 2.25800060639/1.91041058041 # 1.18194519521 -scale_histo_DY = 7.90909155209/10.3492826587 # 0.764216401555 -scale_histo_WZ = 49.3067818241/43.0657206854 # 1.14491946354 -scale_histo_Wg = 41.0307152872/32.8185201828 # 1.25023051188 -scale_histo_Zg = 4.88184592384/4.15039184398 # 1.17623735477 -scale_histo_Vg = (4.88184592384+41.0307152872)/(4.15039184398+32.8185201828) -scale_histo_WgS = 19.5784400987/16.5378866827 # 1.18385380637 -scale_histo_ZgS = 2.74664238533/2.21545099158 # 1.23976670925 -scale_histo_VgS = (2.74664238533+19.5784400987)/(2.21545099158+16.5378866827) -scale_histo_ZH_htt = 0.116319166763/0.091351528461 # 1.27331385388 -scale_histo_WH_htt_plus = 0.4131832122/0.323965810005 # 1.27539141304 -scale_histo_ggZH_hww = 0.0104452201343/0.00850780582798 # 1.22772197033 -scale_histo_qqH_hww = 0.00875809211317/0.00618184320386 # 1.41674446025 -scale_histo_ZZ = 1.19318174322/0.95378270042 # 1.25099956488 -scale_histo_ggH_hww = 0.152649430692/0.135132712642 # 1.1296260373 -scale_histo_WH_htt_minus = 0.263520609345/0.21247941852 # 1.24021710517 -scale_histo_VVV = 3.62299846954/3.27783418705 # 1.10530254515 -scale_histo_WH_hww_plus = 1.99024457637/1.64510255389 # 1.20979970013 -scale_histo_ggH_htt = 0.0137239155152/1 # 0.0137239155152 -scale_histo_ggWW = 0.138240992431/0.130499421048 # 1.05932264926 -scale_histo_top = 61.5535890766/44.34883106 # 1.38794163466 -scale_histo_WWewk = 0.0247224163572/0.0239052406614 # 1.03418395604 -scale_histo_ZH_hww = 0.343842150558/0.26623480593 # 1.29149961951 -scale_histo_WH_hww_minus = 1.24042862398/1.03231388643 # 1.20160024997 -scale_histo_qqH_htt = 0.00478130781574/0.00431274438945 # 1.10864623172 - -groupPlot = {} - -groupPlot['top'] = { - 'nameHR' : 'tW+ and t#bar{t}', - 'isSignal' : 0, - 'color' : 400, # kYellow - 'samples' : ['top'] -} - -groupPlot['WW'] = { - 'nameHR' : 'WW', - 'isSignal' : 0, - 'color' : 851, # kAzure -9 - 'samples' : ['WW', 'ggWW', 'WWewk'] -} - -groupPlot['DY'] = { - 'nameHR' : "DY", - 'isSignal' : 0, - 'color' : 418, # kGreen+2 - 'samples' : ['DY'] -} - -groupPlot['Fake'] = { - 'nameHR' : 'Non-prompt', - 'isSignal' : 0, - 'color' : 921, # kGray + 1 - 'samples' : ['Fake_mm','Fake_em','Fake_ee'] -} - -# groupPlot['ChargeFlip'] = { -# 'nameHR' : "charge_flip", -# 'isSignal' : 0, -# 'color' : 418, # kGreen+2 -# 'samples' : ['ChargeFlip'] -# } - -groupPlot['VVV'] = { - 'nameHR' : 'VVV', - 'isSignal' : 0, - 'color' : 857, # kAzure -3 - 'samples' : ['VVV'] -} - -groupPlot['ZZ'] = { - 'nameHR' : "ZZ", - 'isSignal' : 0, - 'color' : 617, # kViolet + 1 - 'samples' : ['ZZ'] -} - -groupPlot['WZ'] = { - 'nameHR' : "WZ", - 'isSignal' : 0, - 'color' : 619, # kViolet + 1 - 'samples' : ['WZ'] -} - -groupPlot['Vg'] = { - 'nameHR' : "V#gamma", - 'isSignal' : 0, - 'color' : 810, # kOrange + 10 - 'samples' : ['Vg'] -} - -groupPlot['VgS'] = { - 'nameHR' : "V#gamma*", - 'isSignal' : 0, - 'color' : 412, # kGreen - 9 - 'samples' : ['VgS'] -} - -groupPlot['Higgs'] = { - 'nameHR' : 'Higgs', - 'isSignal' : 0, - 'color' : 632, # kRed - 'samples' : ['ggH_hww','qqH_hww','ZH_hww','ggZH_hww','ttH_hww','ggH_htt','qqH_htt','ZH_htt'] -} - -groupPlot['WH_minus'] = { - 'nameHR' : 'W^{-} H (x 10)', - 'isSignal' : 2, - 'color' : 600, # kBlue - 'samples' : ['WH_hww_minus','WH_htt_minus'] -} - -groupPlot['WH_plus'] = { - 'nameHR' : 'W^{+} H (x 10)', - 'isSignal' : 2, - 'color' : 632, # kRed - 'samples' : ['WH_hww_plus', 'WH_htt_plus'] -} - - -# keys here must match keys in samples.py - -plot = {} - -# plot['ChargeFlip'] = { -# 'color' : 418, # kGreen+2 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : 0.5, -# } - -plot['DY'] = { - 'color' : 418, # kGreen+2 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_DY, -} - -plot['top'] = { - 'nameHR' : 'tW and t#bar{t}', - 'color' : 400, # kYellow - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_top, -} - -plot['WW'] = { - 'color' : 851, # kAzure -9 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_WW, -} - -plot['WWewk'] = { - 'color' : 850, # kAzure -10 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_WWewk, -} - -plot['ggWW'] = { - 'color' : 850, # kAzure -10 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggWW, -} - -plot['Vg'] = { - 'color' : 859, # kAzure -1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_Vg, -} - -plot['VgS'] = { - 'color' : 617, # kViolet + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_VgS, -} - -plot['WZ'] = { - 'color' : 858, # kAzure -2 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_WZ * 1.138, # NLO -> NNLO k-factor! -} - -plot['ZZ'] = { - 'color' : 858, # kAzure -2 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ZZ, -} - -plot['VVV'] = { - 'color' : 857, # kAzure -3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_VVV, -} - -########### -# Signals # -########### - -# HWW - -plot['ggH_hww'] = { - 'color' : 632, # kRed - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggH_hww, -} - -plot['qqH_hww'] = { - 'color' : 632+1, # kRed+1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_qqH_hww, -} - -plot['ZH_hww'] = { - 'color' : 632+3, # kRed+3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ZH_hww, -} - -plot['ggZH_hww'] = { - 'color' : 632+4, # kRed+4 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggZH_hww, -} - -plot['WH_hww_plus'] = { - 'color' : 632+2, # kRed+2 - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_hww_plus, -} - -plot['WH_hww_minus'] = { - 'color' : 600, # kBlue - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_hww_minus, -} - -plot['ttH_hww'] = { - 'color' : 632+3, # kRed+3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ttH_hww, -} - - -# Htautau - -plot['ggH_htt'] = { - 'color' : 632, # kRed - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggH_htt, -} - -plot['qqH_htt'] = { - 'color' : 632+1, # kRed+1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_qqH_htt, -} - -plot['ZH_htt'] = { - 'color' : 632+3, # kRed+3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ZH_htt, -} - -plot['WH_htt_plus'] = { - 'color' : 632+2, # kRed+2 - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_htt_plus, -} - -plot['WH_htt_minus'] = { - 'color' : 632+2, # kRed+2 - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_htt_minus, -} - - -######## -# Fake # -######## - -plot['Fake_em'] = { - 'color' : 921, # kGray + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['Fake_ee'] = { - 'color' : 921, # kGray + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['Fake_mm'] = { - 'color' : 921, # kGray + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -# plot['Fake'] = { -# 'color' : 921, # kGray + 1 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : 1.0 -# } - -######## -# Data # -######## - -plot['DATA'] = { - 'nameHR' : 'Data', - 'color' : 1 , - 'isSignal' : 0, - 'isData' : 1, - 'isBlind' : 0, -} - - -# Define legend - -legend = {} - -legend['lumi'] = 'L = 59.8 fb^{-1}' -legend['sqrt'] = '#sqrt{s} = 13 TeV' diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_mm_CR/structure.py b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_mm_CR/structure.py deleted file mode 100644 index 835ea24b..00000000 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_mm_CR/structure.py +++ /dev/null @@ -1,202 +0,0 @@ -# structure configuration for datacard - -# keys here must match keys in samples.py - -signal_normalization = 10.0 - -# BTag normalization factors -# Cut = hww2l2v_13TeV_samesign_2j -scale_histo_ttH_hww = 1.71005342426/1.09314151072 # 1.5643477148 -scale_histo_WW = 2.25800060639/1.91041058041 # 1.18194519521 -scale_histo_DY = 7.90909155209/10.3492826587 # 0.764216401555 -scale_histo_WZ = 49.3067818241/43.0657206854 # 1.14491946354 -scale_histo_Wg = 41.0307152872/32.8185201828 # 1.25023051188 -scale_histo_Zg = 4.88184592384/4.15039184398 # 1.17623735477 -scale_histo_Vg = (4.88184592384+41.0307152872)/(4.15039184398+32.8185201828) -scale_histo_WgS = 19.5784400987/16.5378866827 # 1.18385380637 -scale_histo_ZgS = 2.74664238533/2.21545099158 # 1.23976670925 -scale_histo_VgS = (2.74664238533+19.5784400987)/(2.21545099158+16.5378866827) -scale_histo_ZH_htt = 0.116319166763/0.091351528461 # 1.27331385388 -scale_histo_WH_htt_plus = 0.4131832122/0.323965810005 # 1.27539141304 -scale_histo_ggZH_hww = 0.0104452201343/0.00850780582798 # 1.22772197033 -scale_histo_qqH_hww = 0.00875809211317/0.00618184320386 # 1.41674446025 -scale_histo_ZZ = 1.19318174322/0.95378270042 # 1.25099956488 -scale_histo_ggH_hww = 0.152649430692/0.135132712642 # 1.1296260373 -scale_histo_WH_htt_minus = 0.263520609345/0.21247941852 # 1.24021710517 -scale_histo_VVV = 3.62299846954/3.27783418705 # 1.10530254515 -scale_histo_WH_hww_plus = 1.99024457637/1.64510255389 # 1.20979970013 -scale_histo_ggH_htt = 0.0137239155152/1 # 0.0137239155152 -scale_histo_ggWW = 0.138240992431/0.130499421048 # 1.05932264926 -scale_histo_top = 61.5535890766/44.34883106 # 1.38794163466 -scale_histo_WWewk = 0.0247224163572/0.0239052406614 # 1.03418395604 -scale_histo_ZH_hww = 0.343842150558/0.26623480593 # 1.29149961951 -scale_histo_WH_hww_minus = 1.24042862398/1.03231388643 # 1.20160024997 -scale_histo_qqH_htt = 0.00478130781574/0.00431274438945 # 1.10864623172 - -structure = {} - -# structure['DY'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_DY, -# } - -# structure['top'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_top, -# } - -# structure['WW'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_WW, -# } - -# structure['WWewk'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_WWewk, -# } - -# structure['ggWW'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_ggWW, -# } - - -structure['Vg'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_Vg, -} - -structure['VgS'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_VgS, -} - -structure['WZ'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WZ * 1.138 # NLO -> NNLO k-factor -} - -structure['ZZ'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZZ, -} - -structure['VVV'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_VVV, -} - - -# Higgs -structure['ggH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ggH_hww, -} - -structure['qqH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_qqH_hww, -} - -structure['ZH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZH_hww, -} - -structure['ggZH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ggZH_hww, -} - -structure['WH_hww_plus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_hww_plus*signal_normalization, -} - -structure['WH_hww_minus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_hww_minus*signal_normalization, -} - -structure['ttH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ttH_hww, -} - -structure['ggH_htt'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ggH_htt, -} - -structure['qqH_htt'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_qqH_htt, -} - -structure['ZH_htt'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZH_htt, -} - -structure['WH_htt_plus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_htt_plus*signal_normalization, -} - -structure['WH_htt_minus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_htt_minus*signal_normalization, -} - - -# Fakes -structure['Fake_ee'] = { - 'isSignal' : 0, - 'isData' : 0, -} - -structure['Fake_mm'] = { - 'isSignal' : 0, - 'isData' : 0, -} - -structure['Fake_em'] = { - 'isSignal' : 0, - 'isData' : 0, -} - - -# # Data-driven charge flip estimation -# structure['ChargeFlip'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : 0.5, -# } - -# Data -structure['DATA'] = { - 'isSignal' : 0, - 'isData' : 1 -} From 4a79f6747c652b99788ca8dc045af6c3f0028be3 Mon Sep 17 00:00:00 2001 From: ntrevisa Date: Thu, 28 Aug 2025 10:13:26 +0200 Subject: [PATCH 23/44] WHSS 2018 working using new fake rates --- .../WHSS/configuration_1j/configuration.py | 10 ++- .../Full2018_v9/WHSS/configuration_1j/cuts.py | 12 ++-- .../WHSS/configuration_1j/structure.py | 2 +- .../WHSS/configuration_1j_mm/configuration.py | 10 ++- .../WHSS/configuration_1j_mm/cuts.py | 6 +- .../WHSS/configuration_1j_mm/structure.py | 2 +- .../WHSS/configuration_2j/configuration.py | 10 ++- .../Full2018_v9/WHSS/configuration_2j/cuts.py | 16 ++--- .../WHSS/configuration_2j/structure.py | 2 +- .../WHSS/configuration_2j_mm/configuration.py | 10 ++- .../WHSS/configuration_2j_mm/cuts.py | 8 +-- .../UL/Full2018_v9/WHSS/cuts.py | 8 +-- .../UL/Full2018_v9/WHSS/do_datacards.sh | 20 ------ .../UL/Full2018_v9/WHSS/do_plots.sh | 20 ------ .../UL/Full2018_v9/WHSS/nuisances.py | 66 ++++++++++++++----- .../WHSS/script_datacards_binning_SS_CR.py | 40 +---------- 16 files changed, 111 insertions(+), 131 deletions(-) diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j/configuration.py b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j/configuration.py index 081f2f78..d7de504e 100644 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j/configuration.py +++ b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j/configuration.py @@ -2,8 +2,12 @@ import sys,inspect -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file configurations_nuisance = os.path.dirname(configurations_nuisance) # configuration_1j configurations_nuisance = os.path.dirname(configurations_nuisance) # WHSS @@ -20,7 +24,9 @@ outputFile = "plots_WHSS_2018_v9_chargeAsymmetry_Mu82_EleUL90_DYflip_data.root" # "mkShapes__{}.root".format(tag) # Path to ouput folder -outputFolder = "../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +if site == 'kit': + outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" # Path to batch folder (used for condor submission) batchFolder = "condor" diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j/cuts.py b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j/cuts.py index 7b309dfe..626f7ef3 100644 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j/cuts.py +++ b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j/cuts.py @@ -23,9 +23,9 @@ # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', 'minus_pt2ge20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - 'minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # 'minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', } } @@ -36,9 +36,9 @@ # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', 'minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', } } diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j/structure.py b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j/structure.py index a32d48c6..b2d5e848 100644 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j/structure.py +++ b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j/structure.py @@ -2,7 +2,7 @@ # keys here must match keys in samples.py -signal_normalization = 10.0 +signal_normalization = 1.0 # BTag normalization factors # Cut = hww2l2v_13TeV_samesign_1j diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_mm/configuration.py b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_mm/configuration.py index a47fb4c7..61af99f0 100644 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_mm/configuration.py +++ b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_mm/configuration.py @@ -2,8 +2,12 @@ import sys,inspect -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_mm +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_mm configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file configurations_nuisance = os.path.dirname(configurations_nuisance) # configuration_1j_mm configurations_nuisance = os.path.dirname(configurations_nuisance) # WHSS @@ -20,7 +24,9 @@ outputFile = "plots_WHSS_2018_v9_chargeAsymmetry_Mu82_EleUL90_DYflip_data.root" # "mkShapes__{}.root".format(tag) # Path to ouput folder -outputFolder = "../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +if site == 'kit': + outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" # Path to batch folder (used for condor submission) batchFolder = "condor" diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_mm/cuts.py b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_mm/cuts.py index ff47c1bc..63f4fa98 100644 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_mm/cuts.py +++ b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_mm/cuts.py @@ -23,9 +23,9 @@ # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', 'minus_pt2ge20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - 'minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # 'minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', } } diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_mm/structure.py b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_mm/structure.py index c5147380..befe2525 100644 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_mm/structure.py +++ b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_1j_mm/structure.py @@ -2,7 +2,7 @@ # keys here must match keys in samples.py -signal_normalization = 10.0 +signal_normalization = 1.0 # BTag normalization factors # Cut = hww2l2v_13TeV_samesign_1j diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j/configuration.py b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j/configuration.py index 9049ed98..6720ca9a 100644 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j/configuration.py +++ b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j/configuration.py @@ -2,8 +2,12 @@ import sys,inspect -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file configurations_nuisance = os.path.dirname(configurations_nuisance) # configuration_2j configurations_nuisance = os.path.dirname(configurations_nuisance) # WHSS @@ -20,7 +24,9 @@ outputFile = "plots_WHSS_2018_v9_chargeAsymmetry_Mu82_EleUL90_DYflip_data.root" # "mkShapes__{}.root".format(tag) # Path to ouput folder -outputFolder = "../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +if site == 'kit': + outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" # Path to batch folder (used for condor submission) batchFolder = "condor" diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j/cuts.py b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j/cuts.py index c286ef97..390cdb47 100644 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j/cuts.py +++ b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j/cuts.py @@ -18,27 +18,27 @@ # mu-e cuts['hww2l2v_13TeV_WH_SS_em_2j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && mjj < 100 && mlljj20_whss > 50.', + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && mjj < 400 && mlljj20_whss > 50.', 'categories' : { # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', 'minus_pt2ge20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - 'minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # 'minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', } } # e-e cuts['hww2l2v_13TeV_WH_SS_ee_2j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*11) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && mjj < 100 && abs(mll-91.2)>15 && mlljj20_whss > 50.', + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*11) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && mjj < 400 && abs(mll-91.2)>15 && mlljj20_whss > 50.', 'categories' : { # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', 'minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', } } diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j/structure.py b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j/structure.py index 3fecfc76..708ab3af 100644 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j/structure.py +++ b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j/structure.py @@ -2,7 +2,7 @@ # keys here must match keys in samples.py -signal_normalization = 10.0 +signal_normalization = 1.0 # BTag normalization factors # Cut = hww2l2v_13TeV_samesign_2j diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_mm/configuration.py b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_mm/configuration.py index 1a8ade7a..8ef781e0 100644 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_mm/configuration.py +++ b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_mm/configuration.py @@ -2,8 +2,12 @@ import sys,inspect -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_mm +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_mm configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file configurations_nuisance = os.path.dirname(configurations_nuisance) # configuration_2j_mm configurations_nuisance = os.path.dirname(configurations_nuisance) # WHSS @@ -20,7 +24,9 @@ outputFile = "plots_WHSS_2018_v9_chargeAsymmetry_Mu82_EleUL90_DYflip_data.root" # "mkShapes__{}.root".format(tag) # Path to ouput folder -outputFolder = "../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +if site == 'kit': + outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" # Path to batch folder (used for condor submission) batchFolder = "condor" diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_mm/cuts.py b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_mm/cuts.py index 8f7555b1..57ba1d3b 100644 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_mm/cuts.py +++ b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_mm/cuts.py @@ -18,14 +18,14 @@ # mu-mu cuts['hww2l2v_13TeV_WH_SS_noZveto_mm_2j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 13*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && mjj < 100 && mlljj20_whss > 50.', + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 13*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && mjj < 400 && mlljj20_whss > 50.', 'categories' : { # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', 'minus_pt2ge20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - 'minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # 'minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', } } diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/cuts.py b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/cuts.py index 6ca99fa5..bc795b2c 100644 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/cuts.py +++ b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/cuts.py @@ -18,7 +18,7 @@ # mu-mu cuts['hww2l2v_13TeV_WH_SS_noZveto_mm_2j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 13*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && mjj < 100 && mlljj20_whss > 50.', + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 13*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && mjj < 400 && mlljj20_whss > 50.', 'categories' : { # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', @@ -31,7 +31,7 @@ # mu-e cuts['hww2l2v_13TeV_WH_SS_em_2j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && mjj < 100 && mlljj20_whss > 50.', + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && mjj < 400 && mlljj20_whss > 50.', 'categories' : { # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', @@ -44,7 +44,7 @@ # e-e cuts['hww2l2v_13TeV_WH_SS_ee_2j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*11) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && mjj < 100 && abs(mll-91.2)>15 && mlljj20_whss > 50.', + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*11) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && mjj < 400 && abs(mll-91.2)>15 && mlljj20_whss > 50.', 'categories' : { # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', @@ -110,7 +110,7 @@ # DY CR 2jets cuts['hww2l2v_13TeV_WH_SS_DYee_2j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*11) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && mjj < 100 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0 && abs(mll-91.2)<15 && mlljj20_whss > 50.', + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*11) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && mjj < 400 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0 && abs(mll-91.2)<15 && mlljj20_whss > 50.', 'categories' : { # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20', diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/do_datacards.sh b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/do_datacards.sh index 9b334dff..b3b6c2f3 100644 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/do_datacards.sh +++ b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/do_datacards.sh @@ -5,37 +5,17 @@ mkShapesRDF -c 1 mkDatacards --outputDirDatacard ../datacards_original_signal_scale --skipMissingNuisance cd - -cd configuration_1j_CR -mkShapesRDF -c 1 -mkDatacards --outputDirDatacard ../datacards_original_signal_scale --skipMissingNuisance -cd - - cd configuration_1j_mm mkShapesRDF -c 1 mkDatacards --outputDirDatacard ../datacards_original_signal_scale --skipMissingNuisance cd - -cd configuration_1j_mm_CR -mkShapesRDF -c 1 -mkDatacards --outputDirDatacard ../datacards_original_signal_scale --skipMissingNuisance -cd - - cd configuration_2j mkShapesRDF -c 1 mkDatacards --outputDirDatacard ../datacards_original_signal_scale --skipMissingNuisance cd - -cd configuration_2j_CR -mkShapesRDF -c 1 -mkDatacards --outputDirDatacard ../datacards_original_signal_scale --skipMissingNuisance -cd - - cd configuration_2j_mm mkShapesRDF -c 1 mkDatacards --outputDirDatacard ../datacards_original_signal_scale --skipMissingNuisance cd - - -cd configuration_2j_mm_CR -mkShapesRDF -c 1 -mkDatacards --outputDirDatacard ../datacards_original_signal_scale --skipMissingNuisance -cd - diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/do_plots.sh b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/do_plots.sh index 54682ef1..74d53332 100644 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/do_plots.sh +++ b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/do_plots.sh @@ -17,41 +17,21 @@ mkShapesRDF -c 1 mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png cd - -cd configuration_1j_CR -mkShapesRDF -c 1 -mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png -cd - - cd configuration_1j_mm mkShapesRDF -c 1 mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png cd - -cd configuration_1j_mm_CR -mkShapesRDF -c 1 -mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png -cd - - cd configuration_2j mkShapesRDF -c 1 mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png cd - -cd configuration_2j_CR -mkShapesRDF -c 1 -mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png -cd - - cd configuration_2j_mm mkShapesRDF -c 1 mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png cd - -cd configuration_2j_mm_CR -mkShapesRDF -c 1 -mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png -cd - - cp ~/index.php plots_WHSS_2018_v9_chargeAsymmetry_Mu82_EleUL90/ if [ "$DATE" != "" ]; then diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/nuisances.py b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/nuisances.py index ecf92ca6..112e464d 100644 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/nuisances.py +++ b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/nuisances.py @@ -65,13 +65,18 @@ def makeMCDirectory(var=''): #### FAKES + +# Need to think about: +# - charge-dependent uncertainty --> How much? How do we correlate across eras? Maybe correlated +# - jet-dependent uncertainty --> How much? How do we correlate across eras? Maybe correlated + +# Systematic uncertainty split into barrel and endcap, and per final state: 10% per bin fake_syst_endcap = ['1.0*(abs(Lepton_eta[1])<=1.479) + 1.1*(abs(Lepton_eta[1])>1.479)', '1.0*(abs(Lepton_eta[1])<=1.479) + 1.0/1.1*(abs(Lepton_eta[1])>1.479)'] fake_syst_barrel = [' 1.1*(abs(Lepton_eta[1])<=1.479) + 1.0*(abs(Lepton_eta[1])>1.479)', '1.0/1.1*(abs(Lepton_eta[1])<=1.479) + 1.0*(abs(Lepton_eta[1])>1.479)'] -# Systematic uncertainty splitted into barrel and endcap, and per final state: 10% per bin nuisances['fake_syst_mm_barrel'] = { 'name' : 'CMS_WH_hww_fake_syst_mm_barrel', 'kind' : 'weight', @@ -129,26 +134,56 @@ def makeMCDirectory(var=''): 'cuts' : [cut for cut in cuts if ('_ee_' in cut)] } -# Overall 30% normalization: split per charge -nuisances['fake_syst_plus'] = { - 'name' : 'CMS_WH_hww_fake_syst_plus_2018', +# Overall 30% normalization +nuisances['fake_syst'] = { + 'name' : 'CMS_WH_hww_fake_syst_2018', 'kind' : 'weight', 'type' : 'lnN', 'samples' : { - 'Fake' : 1.3, + 'Fake_mm' : '1.3', + 'Fake_em' : '1.3', + 'Fake_ee' : '1.3', }, - 'cuts' : [cut for cut in cuts if ('_plus_' in cut)] -} -nuisances['fake_syst_minus'] = { - 'name' : 'CMS_WH_hww_fake_syst_minus_2018', - 'kind' : 'weight', - 'type' : 'lnN', - 'samples' : { - 'Fake' : 1.3, - }, - 'cuts' : [cut for cut in cuts if ('_minus_' in cut)] } +# Overall 30% normalization: split per charge +# nuisances['fake_syst_plus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_plus_2018', +# 'kind' : 'weight', +# 'type' : 'lnN', +# 'samples' : { +# 'Fake_mm' : '1.3', +# 'Fake_em' : '1.3', +# 'Fake_ee' : '1.3', +# }, +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_noZveto_mm_2j_plus_pt2ge20', +# 'hww2l2v_13TeV_WH_SS_em_2j_plus_pt2ge20', +# 'hww2l2v_13TeV_WH_SS_ee_2j_plus_pt2ge20', +# 'hww2l2v_13TeV_WH_SS_noZveto_mm_1j_plus_pt2ge20', +# 'hww2l2v_13TeV_WH_SS_em_1j_plus_pt2ge20', +# 'hww2l2v_13TeV_WH_SS_ee_1j_plus_pt2ge20', +# ] +# } +# nuisances['fake_syst_minus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_minus_2018', +# 'kind' : 'weight', +# 'type' : 'lnN', +# 'samples' : { +# 'Fake_mm' : '1.3', +# 'Fake_em' : '1.3', +# 'Fake_ee' : '1.3', +# }, +# 'cuts' : [ +# 'hww2l2v_13TeV_WH_SS_noZveto_mm_2j_minus_pt2ge20', +# 'hww2l2v_13TeV_WH_SS_em_2j_minus_pt2ge20', +# 'hww2l2v_13TeV_WH_SS_ee_2j_minus_pt2ge20', +# 'hww2l2v_13TeV_WH_SS_noZveto_mm_1j_minus_pt2ge20', +# 'hww2l2v_13TeV_WH_SS_em_1j_minus_pt2ge20', +# 'hww2l2v_13TeV_WH_SS_ee_1j_minus_pt2ge20', +# ] +# } + # Statistical and systematic uncertainty on the fake rates nuisances['fake_ele'] = { @@ -686,7 +721,6 @@ def makeMCDirectory(var=''): } # WZ normalization from control region - nuisances['WZ2jnorm'] = { 'name' : 'CMS_hww_WZ3l2jnorm', 'samples' : { diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/script_datacards_binning_SS_CR.py b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/script_datacards_binning_SS_CR.py index f1bc2831..bf7de5ba 100644 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/script_datacards_binning_SS_CR.py +++ b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/script_datacards_binning_SS_CR.py @@ -7,7 +7,7 @@ #for var in variables: for suff in suffix: - # Using ee, em, and mm final state, and including low-pT categories. Remove the Z veto for the mm final state. + # Using ee, em, and mm final state. Remove the Z veto for the mm final state. tmp_command = "combineCards.py WH_SS_em_2j_minus=datacards{0}/hww2l2v_13TeV_WH_SS_em_2j_minus_pt2ge20/BDTG6_TT_0_5/datacard.txt \ WH_SS_em_2j_plus=datacards{0}/hww2l2v_13TeV_WH_SS_em_2j_plus_pt2ge20/BDTG6_TT_0_5/datacard.txt \ WH_SS_mm_2j_minus=datacards{0}/hww2l2v_13TeV_WH_SS_noZveto_mm_2j_minus_pt2ge20/BDTG6_TT_0_5/datacard.txt \ @@ -20,48 +20,10 @@ WH_SS_mm_1j_plus=datacards{0}/hww2l2v_13TeV_WH_SS_noZveto_mm_1j_plus_pt2ge20/BDTG6_TT_0_6/datacard.txt \ WH_SS_ee_1j_minus=datacards{0}/hww2l2v_13TeV_WH_SS_ee_1j_minus_pt2ge20/BDTG6_TT_0_5/datacard.txt \ WH_SS_ee_1j_plus=datacards{0}/hww2l2v_13TeV_WH_SS_ee_1j_plus_pt2ge20/BDTG6_TT_0_5/datacard.txt \ - WH_SS_em_2j_minus_low_pt=datacards{0}/hww2l2v_13TeV_WH_SS_em_2j_minus_pt2lt20/BDTG6_TT_0_0/datacard.txt \ - WH_SS_em_2j_plus_low_pt=datacards{0}/hww2l2v_13TeV_WH_SS_em_2j_plus_pt2lt20/BDTG6_TT_0_0/datacard.txt \ - WH_SS_mm_2j_minus_low_pt=datacards{0}/hww2l2v_13TeV_WH_SS_noZveto_mm_2j_minus_pt2lt20/BDTG6_TT_0_0/datacard.txt \ - WH_SS_mm_2j_plus_low_pt=datacards{0}/hww2l2v_13TeV_WH_SS_noZveto_mm_2j_plus_pt2lt20/BDTG6_TT_0_0/datacard.txt \ - WH_SS_ee_2j_minus_low_pt=datacards{0}/hww2l2v_13TeV_WH_SS_ee_2j_minus_pt2lt20/BDTG6_TT_0_0/datacard.txt \ - WH_SS_ee_2j_plus_low_pt=datacards{0}/hww2l2v_13TeV_WH_SS_ee_2j_plus_pt2lt20/BDTG6_TT_0_0/datacard.txt \ - WH_SS_em_1j_minus_low_pt=datacards{0}/hww2l2v_13TeV_WH_SS_em_1j_minus_pt2lt20/BDTG6_TT_0_5/datacard.txt \ - WH_SS_em_1j_plus_low_pt=datacards{0}/hww2l2v_13TeV_WH_SS_em_1j_plus_pt2lt20/BDTG6_TT_0_5/datacard.txt \ - WH_SS_mm_1j_minus_low_pt=datacards{0}/hww2l2v_13TeV_WH_SS_noZveto_mm_1j_minus_pt2lt20/BDTG6_TT_0_5/datacard.txt \ - WH_SS_mm_1j_plus_low_pt=datacards{0}/hww2l2v_13TeV_WH_SS_noZveto_mm_1j_plus_pt2lt20/BDTG6_TT_0_5/datacard.txt \ - WH_SS_ee_1j_minus_low_pt=datacards{0}/hww2l2v_13TeV_WH_SS_ee_1j_minus_pt2lt20/BDTG6_TT_0_0/datacard.txt \ - WH_SS_ee_1j_plus_low_pt=datacards{0}/hww2l2v_13TeV_WH_SS_ee_1j_plus_pt2lt20/BDTG6_TT_0_0/datacard.txt \ WH_SS_WZ_1j=../WH3l/datacards{0}/hww2l2v_13TeV_WH_SS_WZ_1j/events/datacard.txt \ WH_SS_WZ_2j=../WH3l/datacards{0}/hww2l2v_13TeV_WH_SS_WZ_2j/events/datacard.txt \ - WH_SS_mm_2j_SS_CR_minus=datacards{0}/hww2l2v_13TeV_WH_SS_noZveto_mm_2j_SS_CR_minus_pt2ge20/events/datacard.txt \ - WH_SS_mm_2j_SS_CR_plus=datacards{0}/hww2l2v_13TeV_WH_SS_noZveto_mm_2j_SS_CR_plus_pt2ge20/events/datacard.txt \ - WH_SS_em_2j_SS_CR_minus=datacards{0}/hww2l2v_13TeV_WH_SS_em_2j_SS_CR_minus_pt2ge20/events/datacard.txt \ - WH_SS_em_2j_SS_CR_plus=datacards{0}/hww2l2v_13TeV_WH_SS_em_2j_SS_CR_plus_pt2ge20/events/datacard.txt \ - WH_SS_ee_2j_SS_CR_minus=datacards{0}/hww2l2v_13TeV_WH_SS_ee_2j_SS_CR_minus_pt2ge20/events/datacard.txt \ - WH_SS_ee_2j_SS_CR_plus=datacards{0}/hww2l2v_13TeV_WH_SS_ee_2j_SS_CR_plus_pt2ge20/events/datacard.txt \ - WH_SS_mm_1j_SS_CR_minus=datacards{0}/hww2l2v_13TeV_WH_SS_noZveto_mm_1j_SS_CR_minus_pt2ge20/events/datacard.txt \ - WH_SS_mm_1j_SS_CR_plus=datacards{0}/hww2l2v_13TeV_WH_SS_noZveto_mm_1j_SS_CR_plus_pt2ge20/events/datacard.txt \ - WH_SS_em_1j_SS_CR_minus=datacards{0}/hww2l2v_13TeV_WH_SS_em_1j_SS_CR_minus_pt2ge20/events/datacard.txt \ - WH_SS_em_1j_SS_CR_plus=datacards{0}/hww2l2v_13TeV_WH_SS_em_1j_SS_CR_plus_pt2ge20/events/datacard.txt \ - WH_SS_ee_1j_SS_CR_minus=datacards{0}/hww2l2v_13TeV_WH_SS_ee_1j_SS_CR_minus_pt2ge20/events/datacard.txt \ - WH_SS_ee_1j_SS_CR_plus=datacards{0}/hww2l2v_13TeV_WH_SS_ee_1j_SS_CR_plus_pt2ge20/events/datacard.txt \ > Combination/WH_chargeAsymmetry_WH_SS_Full2018_v9_SS_CR.txt".format(suff) print(tmp_command) print() print() os.system(tmp_command) - -# WH_SS_mm_2j_SS_CR_minus_low_pt=datacards{0}/hww2l2v_13TeV_WH_SS_noZveto_mm_2j_SS_CR_minus_pt2lt20/events/datacard.txt \ -# WH_SS_mm_2j_SS_CR_plus_low_pt=datacards{0}/hww2l2v_13TeV_WH_SS_noZveto_mm_2j_SS_CR_plus_pt2lt20/events/datacard.txt \ -# WH_SS_em_2j_SS_CR_minus_low_pt=datacards{0}/hww2l2v_13TeV_WH_SS_em_2j_SS_CR_minus_pt2lt20/events/datacard.txt \ -# WH_SS_em_2j_SS_CR_plus_low_pt=datacards{0}/hww2l2v_13TeV_WH_SS_em_2j_SS_CR_plus_pt2lt20/events/datacard.txt \ -# WH_SS_ee_2j_SS_CR_minus_low_pt=datacards{0}/hww2l2v_13TeV_WH_SS_ee_2j_SS_CR_minus_pt2lt20/events/datacard.txt \ -# WH_SS_ee_2j_SS_CR_plus_low_pt=datacards{0}/hww2l2v_13TeV_WH_SS_ee_2j_SS_CR_plus_pt2lt20/events/datacard.txt \ - -# WH_SS_mm_1j_SS_CR_minus_low_pt=datacards{0}/hww2l2v_13TeV_WH_SS_noZveto_mm_1j_SS_CR_minus_pt2lt20/events/datacard.txt \ -# WH_SS_mm_1j_SS_CR_plus_low_pt=datacards{0}/hww2l2v_13TeV_WH_SS_noZveto_mm_1j_SS_CR_plus_pt2lt20/events/datacard.txt \ -# WH_SS_em_1j_SS_CR_minus_low_pt=datacards{0}/hww2l2v_13TeV_WH_SS_em_1j_SS_CR_minus_pt2lt20/events/datacard.txt \ -# WH_SS_em_1j_SS_CR_plus_low_pt=datacards{0}/hww2l2v_13TeV_WH_SS_em_1j_SS_CR_plus_pt2lt20/events/datacard.txt \ -# WH_SS_ee_1j_SS_CR_minus_low_pt=datacards{0}/hww2l2v_13TeV_WH_SS_ee_1j_SS_CR_minus_pt2lt20/events/datacard.txt \ -# WH_SS_ee_1j_SS_CR_plus_low_pt=datacards{0}/hww2l2v_13TeV_WH_SS_ee_1j_SS_CR_plus_pt2lt20/events/datacard.txt \ From 4caf35f8f88135e65eed99e37062a82093b4c305 Mon Sep 17 00:00:00 2001 From: ntrevisa Date: Thu, 28 Aug 2025 10:56:18 +0200 Subject: [PATCH 24/44] WH3l 2018 working using new fake rates --- .../UL/Full2018_v9/WH3l/aliases.py | 88 ++++++++++--------- .../WH3l/configuration_OSSF/configuration.py | 10 ++- .../WH3l/configuration_OSSF/structure.py | 3 +- .../WH3l/configuration_SSSF/configuration.py | 10 ++- .../WH3l/configuration_SSSF/structure.py | 2 +- .../WH3l/configuration_WZ0j/configuration.py | 10 ++- .../WH3l/configuration_WZ0j/structure.py | 2 +- .../WH3l/configuration_WZ1j/configuration.py | 10 ++- .../WH3l/configuration_WZ1j/structure.py | 2 +- .../WH3l/configuration_WZ2j/configuration.py | 10 ++- .../WH3l/configuration_WZ2j/plot.py | 24 ++--- .../WH3l/configuration_WZ2j/structure.py | 10 +-- .../UL/Full2018_v9/WH3l/cuts.py | 2 +- .../UL/Full2018_v9/WH3l/nuisances.py | 47 +++++++++- 14 files changed, 152 insertions(+), 78 deletions(-) diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/aliases.py b/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/aliases.py index 9111b9fa..7b965587 100644 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/aliases.py +++ b/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/aliases.py @@ -3,7 +3,6 @@ import inspect # /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2018_v9/WH3l - configurations = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file configurations = os.path.dirname(configurations) # WHSS configurations = os.path.dirname(configurations) # Full2018_v9 @@ -37,98 +36,105 @@ # ttHMVA SFs and uncertainties aliases['LepWPttHMVASF'] = { - 'linesToAdd' : ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH = ttHMVASF(\"2018\", 3, \"all\", \"nominal\");')"], 'expr' : 'ttH(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc } aliases['LepWPttHMVASFEleUp'] = { - 'linesToAdd' : ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_EleUp = ttHMVASF(\"2018\", 3, \"all\", \"eleUp\");')"], 'expr' : 'ttH_EleUp(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc } aliases['LepWPttHMVASFEleDown'] = { - 'linesToAdd' : ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_EleDown = ttHMVASF(\"2018\", 3, \"all\", \"eleDown\");')"], 'expr' : 'ttH_EleDown(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc } aliases['LepWPttHMVASFMuUp'] = { - 'linesToAdd' : ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_MuUp = ttHMVASF(\"2018\", 3, \"all\", \"muUp\");')"], 'expr' : 'ttH_MuUp(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc } aliases['LepWPttHMVASFMuDown'] = { - 'linesToAdd' : ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_MuDown = ttHMVASF(\"2018\", 3, \"all\", \"muDown\");')"], 'expr' : 'ttH_MuDown(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc } +# Conept +aliases['Lepton_conept'] = { + 'expr' : 'LeptonConePt(Lepton_pt, Lepton_pdgId, Lepton_electronIdx, Lepton_muonIdx, Electron_jetRelIso, Muon_jetRelIso)', + 'linesToAdd' : [f'#include "{configurations}/macros/LeptonConePt_class.cc"'], + 'samples' : mc + ['Fake', 'DATA', 'DATA_unprescaled'] +} + # Fake leptons transfer factor aliases['fakeW'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"nominal\", 3, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr': 'fr_reader(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"nominal\", 3, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'] } # And variations - already divided by central values in formulas ! aliases['fakeWEleUp'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleUp = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"EleUp\", 3, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr': 'fr_reader_EleUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples' : ['Fake'] + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleUp = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"EleUp\", 3, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_EleUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] } aliases['fakeWEleDown'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleDown = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"EleDown\", 3, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr': 'fr_reader_EleDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples' : ['Fake'] + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleDown = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"EleDown\", 3, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_EleDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] } aliases['fakeWMuUp'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuUp = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"MuUp\", 3, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr': 'fr_reader_MuUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples' : ['Fake'] + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuUp = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"MuUp\", 3, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_MuUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] } aliases['fakeWMuDown'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuDown = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"MuDown\", 3, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr': 'fr_reader_MuDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples' : ['Fake'] + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuDown = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"MuDown\", 3, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_MuDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] } aliases['fakeWStatEleUp'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleUp = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"StatEleUp\", 3, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr': 'fr_reader_StatEleUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples' : ['Fake'] + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleUp = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"StatEleUp\", 3, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_StatEleUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] } aliases['fakeWStatEleDown'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleDown = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"StatEleDown\", 3, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr': 'fr_reader_StatEleDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples' : ['Fake'] + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleDown = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"StatEleDown\", 3, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_StatEleDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] } aliases['fakeWStatMuUp'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuUp = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"StatMuUp\", 3, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr': 'fr_reader_StatMuUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples' : ['Fake'] + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuUp = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"StatMuUp\", 3, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_StatMuUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] } aliases['fakeWStatMuDown'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuDown = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"StatMuDown\", 3, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr': 'fr_reader_StatMuDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples' : ['Fake'] + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuDown = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"StatMuDown\", 3, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_StatMuDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] } # No jet with pt > 30 GeV diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_OSSF/configuration.py b/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_OSSF/configuration.py index a48d80f1..43464211 100644 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_OSSF/configuration.py +++ b/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_OSSF/configuration.py @@ -2,8 +2,12 @@ import sys,inspect -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_OSSF/ +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_OSSF/ configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file configurations_nuisance = os.path.dirname(configurations_nuisance) # configuration_OSSF configurations_nuisance = os.path.dirname(configurations_nuisance) # WH3l @@ -20,7 +24,9 @@ outputFile = "mkShapes__{}.root".format(tag) # Path to ouput folder -outputFolder = "../../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +if site == 'kit': + outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" # Path to batch folder (used for condor submission) batchFolder = "condor" diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_OSSF/structure.py b/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_OSSF/structure.py index e357b58b..62c80e9d 100644 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_OSSF/structure.py +++ b/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_OSSF/structure.py @@ -1,9 +1,8 @@ # structure configuration for datacard # keys here must match keys in samples.py -# -signal_normalization = 10.0 +signal_normalization = 1.0 # BTag normalization factors # Cut = wh3l_13TeV_ossf diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_SSSF/configuration.py b/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_SSSF/configuration.py index 09c5d3d5..6b6ce9eb 100644 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_SSSF/configuration.py +++ b/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_SSSF/configuration.py @@ -2,8 +2,12 @@ import sys,inspect -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_SSSF/ +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_SSSF/ configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file configurations_nuisance = os.path.dirname(configurations_nuisance) # configuration_SSSF configurations_nuisance = os.path.dirname(configurations_nuisance) # WH3l @@ -20,7 +24,9 @@ outputFile = "mkShapes__{}.root".format(tag) # Path to ouput folder -outputFolder = "../../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +if site == 'kit': + outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" # Path to batch folder (used for condor submission) batchFolder = "condor" diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_SSSF/structure.py b/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_SSSF/structure.py index 66cbf657..52299c8e 100644 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_SSSF/structure.py +++ b/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_SSSF/structure.py @@ -3,7 +3,7 @@ # keys here must match keys in samples.py # -signal_normalization = 10.0 +signal_normalization = 1.0 # BTag normalization factors # Cut = wh3l_13TeV_sssf diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_WZ0j/configuration.py b/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_WZ0j/configuration.py index 59877b15..62c21331 100644 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_WZ0j/configuration.py +++ b/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_WZ0j/configuration.py @@ -2,8 +2,12 @@ import sys,inspect -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_WZ0j/ +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_WZ0j/ configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file configurations_nuisance = os.path.dirname(configurations_nuisance) # configuration_WZ0j configurations_nuisance = os.path.dirname(configurations_nuisance) # WH3l @@ -20,7 +24,9 @@ outputFile = "mkShapes__{}.root".format(tag) # Path to ouput folder -outputFolder = "../../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +if site == 'kit': + outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" # Path to batch folder (used for condor submission) batchFolder = "condor" diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_WZ0j/structure.py b/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_WZ0j/structure.py index d8629e23..3155d7ac 100644 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_WZ0j/structure.py +++ b/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_WZ0j/structure.py @@ -3,7 +3,7 @@ # keys here must match keys in samples.py # -signal_normalization = 10.0 +signal_normalization = 1.0 # BTag normalization factors # Cut = wh3l_13TeV_wz_CR_0j diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_WZ1j/configuration.py b/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_WZ1j/configuration.py index 61030007..04a2412a 100644 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_WZ1j/configuration.py +++ b/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_WZ1j/configuration.py @@ -2,8 +2,12 @@ import sys,inspect -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_WZ1j/ +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_WZ1j/ configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file configurations_nuisance = os.path.dirname(configurations_nuisance) # configuration_WZ1j configurations_nuisance = os.path.dirname(configurations_nuisance) # WH3l @@ -20,7 +24,9 @@ outputFile = "mkShapes__{}.root".format(tag) # Path to ouput folder -outputFolder = "../../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +if site == 'kit': + outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" # Path to batch folder (used for condor submission) batchFolder = "condor" diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_WZ1j/structure.py b/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_WZ1j/structure.py index 31071b34..6e5633f2 100644 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_WZ1j/structure.py +++ b/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_WZ1j/structure.py @@ -3,7 +3,7 @@ # keys here must match keys in samples.py # -signal_normalization = 10.0 +signal_normalization = 1.0 # BTag normalization factors # Cut = wh3l_13TeV_wz_CR_1j diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_WZ2j/configuration.py b/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_WZ2j/configuration.py index 8f0ec0bc..50bdaf44 100644 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_WZ2j/configuration.py +++ b/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_WZ2j/configuration.py @@ -2,8 +2,12 @@ import sys,inspect -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_WZ2j/ +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_WZ2j/ configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file configurations_nuisance = os.path.dirname(configurations_nuisance) # configuration_WZ2j configurations_nuisance = os.path.dirname(configurations_nuisance) # WH3l @@ -20,7 +24,9 @@ outputFile = "mkShapes__{}.root".format(tag) # Path to ouput folder -outputFolder = "../../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +if site == 'kit': + outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" # Path to batch folder (used for condor submission) batchFolder = "condor" diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_WZ2j/plot.py b/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_WZ2j/plot.py index 59447757..60bded09 100644 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_WZ2j/plot.py +++ b/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_WZ2j/plot.py @@ -41,12 +41,12 @@ 'samples' : ['top'] } -groupPlot['Fake'] = { - 'nameHR' : 'Non-prompt', - 'isSignal' : 0, - 'color' : 921, # kGray + 1 - 'samples' : ['Fake'] -} +# groupPlot['Fake'] = { +# 'nameHR' : 'Non-prompt', +# 'isSignal' : 0, +# 'color' : 921, # kGray + 1 +# 'samples' : ['Fake'] +# } groupPlot['WW'] = { 'nameHR' : 'WW', @@ -263,12 +263,12 @@ # Fake # ######## -plot['Fake'] = { - 'color' : 921, # kGray + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} +# plot['Fake'] = { +# 'color' : 921, # kGray + 1 +# 'isSignal' : 0, +# 'isData' : 0, +# 'scale' : 1.0 +# } ######## diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_WZ2j/structure.py b/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_WZ2j/structure.py index 9e572837..e3baf908 100644 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_WZ2j/structure.py +++ b/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration_WZ2j/structure.py @@ -3,7 +3,7 @@ # keys here must match keys in samples.py # -signal_normalization = 10.0 +signal_normalization = 1.0 # BTag normalization factors # Cut = wh3l_13TeV_wz_CR_2j @@ -150,10 +150,10 @@ 'scaleSampleForDatacard' : scale_histo_WH_htt_plus*signal_normalization, } -structure['Fake'] = { - 'isSignal' : 0, - 'isData' : 0 -} +# structure['Fake'] = { +# 'isSignal' : 0, +# 'isData' : 0 +# } # Data diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/cuts.py b/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/cuts.py index 4847794c..c7eac8bd 100644 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/cuts.py +++ b/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/cuts.py @@ -73,7 +73,7 @@ ' -# CR splitted into charge categories +# CR split into charge categories cuts['hww2l2v_13TeV_WH_SS_WZ'] = { 'expr' : '((Lepton_pdgId[0]*Lepton_pdgId[1] == 13*13) || (Lepton_pdgId[0]*Lepton_pdgId[1] == 11*13) || (Lepton_pdgId[0]*Lepton_pdgId[1] == 11*11)) && Lepton_pt[2]>15 && Alt(CleanJet_pt, 0, 0)>30 && WH3l_mlll > 100 && abs(WH3l_chlll) == 1 && Alt(Lepton_pt,2,0)>10', 'categories' : { diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/nuisances.py b/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/nuisances.py index 2bb18765..1cac0a61 100644 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/nuisances.py +++ b/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/nuisances.py @@ -65,11 +65,13 @@ def makeMCDirectory(var=''): #### FAKES -fake_syst_endcap = ['1.0*(abs(Lepton_eta[1])<=1.4) + 1.3*(abs(Lepton_eta[1])>1.4)', - '1.0*(abs(Lepton_eta[1])<=1.4) + 1.0/1.3*(abs(Lepton_eta[1])>1.4)'] -fake_syst_barrel = [' 1.3*(abs(Lepton_eta[1])<=1.4) + 1.0*(abs(Lepton_eta[1])>1.4)', - '1.0/1.3*(abs(Lepton_eta[1])<=1.4) + 1.0*(abs(Lepton_eta[1])>1.4)'] +# Systematic uncertainty splitted into barrel and endcap, and per final state: 10% per bin +fake_syst_endcap = ['1.0*(abs(Lepton_eta[1])<=1.479) + 1.1*(abs(Lepton_eta[1])>1.479)', + '1.0*(abs(Lepton_eta[1])<=1.479) + 1.0/1.1*(abs(Lepton_eta[1])>1.479)'] + +fake_syst_barrel = [' 1.1*(abs(Lepton_eta[1])<=1.479) + 1.0*(abs(Lepton_eta[1])>1.479)', + '1.0/1.1*(abs(Lepton_eta[1])<=1.479) + 1.0*(abs(Lepton_eta[1])>1.479)'] nuisances['fake_syst_barrel'] = { 'name' : 'CMS_WH_hww_fake_syst_barrel', @@ -88,6 +90,43 @@ def makeMCDirectory(var=''): }, } +# Overall 30% normalization +nuisances['fake_syst'] = { + 'name' : 'CMS_WH_hww_fake_syst_2018', + 'kind' : 'weight', + 'type' : 'lnN', + 'samples' : { + 'Fake' : 1.3, + }, +} + +# Overall 30% normalization: split per charge +# nuisances['fake_syst_plus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_plus_2018', +# 'kind' : 'weight', +# 'type' : 'lnN', +# 'samples' : { +# 'Fake' : 1.3, +# }, +# 'cuts' : [ +# 'wh3l_13TeV_sssf_plus_pt2ge20', +# 'wh3l_13TeV_ossf_plus_pt2ge20', +# ], +# } +# nuisances['fake_syst_minus'] = { +# 'name' : 'CMS_WH_hww_fake_syst_minus_2018', +# 'kind' : 'weight', +# 'type' : 'lnN', +# 'samples' : { +# 'Fake' : 1.3, +# }, +# 'cuts' : [ +# 'wh3l_13TeV_sssf_minus_pt2ge20', +# 'wh3l_13TeV_ossf_minus_pt2ge20', +# ], +# } + +# Statistical and systematic uncertainty on the fake rates nuisances['fake_ele'] = { 'name' : 'CMS_WH_hww_fake_e_2018', 'kind' : 'weight', From 12869a4d2f1398f34c259d2812a71d4ec32ba17f Mon Sep 17 00:00:00 2001 From: ntrevisa Date: Thu, 28 Aug 2025 10:57:06 +0200 Subject: [PATCH 25/44] WHSS DY_OS_CR 2018 working using new fake rates --- .../UL/Full2018_v9/WHSS/DY_OS_CR/aliases.py | 118 +++---- .../WHSS/DY_OS_CR/configuration.py | 11 +- .../UL/Full2018_v9/WHSS/DY_OS_CR/cuts.py | 32 +- .../UL/Full2018_v9/WHSS/DY_OS_CR/nuisances.py | 287 +----------------- .../UL/Full2018_v9/WHSS/DY_OS_CR/plot.py | 64 +--- .../UL/Full2018_v9/WHSS/DY_OS_CR/samples.py | 43 --- .../UL/Full2018_v9/WHSS/DY_OS_CR/structure.py | 14 +- 7 files changed, 101 insertions(+), 468 deletions(-) diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/DY_OS_CR/aliases.py b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/DY_OS_CR/aliases.py index 3e332480..7fda527b 100644 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/DY_OS_CR/aliases.py +++ b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/DY_OS_CR/aliases.py @@ -3,7 +3,6 @@ import inspect # /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/DY_OS_CR - configurations = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file configurations = os.path.dirname(configurations) # DY_OS_CR configurations = os.path.dirname(configurations) # WHSS @@ -21,7 +20,7 @@ muWP = 'cut_Tight_HWWW' aliases['LepWPCut'] = { - 'expr': 'LepCut2l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW*\ + 'expr' : 'LepCut2l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW*\ ( ((abs(Lepton_pdgId[0])==13 && Muon_mvaTTH[Lepton_muonIdx[0]]>0.82) || (abs(Lepton_pdgId[0])==11 && Lepton_mvaTTH_UL[0]>0.90)) \ && ((abs(Lepton_pdgId[1])==13 && Muon_mvaTTH[Lepton_muonIdx[1]]>0.82) || (abs(Lepton_pdgId[1])==11 && Lepton_mvaTTH_UL[1]>0.90)) )', 'samples': mc + ['DATA'] @@ -29,116 +28,123 @@ # Lepton SF (not considering the ttHMVA discriminant) aliases['LepWPSF'] = { - 'expr': 'LepSF2l__ele_'+eleWP+'__mu_'+muWP, - 'samples': mc + 'expr' : 'LepSF2l__ele_'+eleWP+'__mu_'+muWP, + 'samples' : mc } # ttHMVA SFs and uncertainties aliases['LepWPttHMVASF'] = { - 'linesToAdd': ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], - 'linesToProcess': ["ROOT.gInterpreter.Declare('ttHMVASF ttH = ttHMVASF(\"2018\", 2, \"all\", \"nominal\");')"], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], + 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH = ttHMVASF(\"2018\", 2, \"all\", \"nominal\");')"], 'expr' : 'ttH(Lepton_pt, Lepton_eta, Lepton_pdgId)', - 'samples': mc + 'samples' : mc, } aliases['LepWPttHMVASFEleUp'] = { - 'linesToAdd': ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], - 'linesToProcess': ["ROOT.gInterpreter.Declare('ttHMVASF ttH_EleUp = ttHMVASF(\"2018\", 2, \"all\", \"eleUp\");')"], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], + 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_EleUp = ttHMVASF(\"2018\", 2, \"all\", \"eleUp\");')"], 'expr' : 'ttH_EleUp(Lepton_pt, Lepton_eta, Lepton_pdgId)', - 'samples': mc + 'samples' : mc, } aliases['LepWPttHMVASFEleDown'] = { - 'linesToAdd': ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], - 'linesToProcess': ["ROOT.gInterpreter.Declare('ttHMVASF ttH_EleDown = ttHMVASF(\"2018\", 2, \"all\", \"eleDown\");')"], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], + 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_EleDown = ttHMVASF(\"2018\", 2, \"all\", \"eleDown\");')"], 'expr' : 'ttH_EleDown(Lepton_pt, Lepton_eta, Lepton_pdgId)', - 'samples': mc + 'samples' : mc, } aliases['LepWPttHMVASFMuUp'] = { - 'linesToAdd': ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], - 'linesToProcess': ["ROOT.gInterpreter.Declare('ttHMVASF ttH_MuUp = ttHMVASF(\"2018\", 2, \"all\", \"muUp\");')"], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], + 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_MuUp = ttHMVASF(\"2018\", 2, \"all\", \"muUp\");')"], 'expr' : 'ttH_MuUp(Lepton_pt, Lepton_eta, Lepton_pdgId)', - 'samples': mc + 'samples' : mc, } aliases['LepWPttHMVASFMuDown'] = { - 'linesToAdd': ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], - 'linesToProcess': ["ROOT.gInterpreter.Declare('ttHMVASF ttH_MuDown = ttHMVASF(\"2018\", 2, \"all\", \"muDown\");')"], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], + 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_MuDown = ttHMVASF(\"2018\", 2, \"all\", \"muDown\");')"], 'expr' : 'ttH_MuDown(Lepton_pt, Lepton_eta, Lepton_pdgId)', - 'samples': mc + 'samples' : mc, } +# Conept +aliases['Lepton_conept'] = { + 'expr': 'LeptonConePt(Lepton_pt, Lepton_pdgId, Lepton_electronIdx, Lepton_muonIdx, Electron_jetRelIso, Muon_jetRelIso)', + 'linesToAdd': [f'#include "{configurations}/macros/LeptonConePt_class.cc"'], + 'samples': mc + ['Fake', 'DATA', 'DATA_unprescaled'] +} + # Fake leptons transfer factor aliases['fakeW'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess':["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"nominal\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr': 'fr_reader(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples' : ['Fake'] + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"nominal\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] } # And variations - already divided by central values in formulas ! aliases['fakeWEleUp'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess':["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleUp = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"EleUp\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr': 'fr_reader_EleUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples': ['Fake'] + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleUp = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"EleUp\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_EleUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] } aliases['fakeWEleDown'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess':["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleDown = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"EleDown\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr': 'fr_reader_EleDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples': ['Fake'] + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleDown = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"EleDown\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_EleDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] } aliases['fakeWMuUp'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess':["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuUp = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"MuUp\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr': 'fr_reader_MuUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples': ['Fake'] + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuUp = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"MuUp\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_MuUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] } aliases['fakeWMuDown'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess':["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuDown = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"MuDown\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr': 'fr_reader_MuDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples': ['Fake'] + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuDown = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"MuDown\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_MuDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] } aliases['fakeWStatEleUp'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess':["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleUp = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"StatEleUp\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr': 'fr_reader_StatEleUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleUp = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"StatEleUp\", 2, \"std\", \"{configurations}\");')"], + 'expr': 'fr_reader_StatEleUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples': ['Fake'] } aliases['fakeWStatEleDown'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess':["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleDown = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"StatEleDown\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr': 'fr_reader_StatEleDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples': ['Fake'] + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleDown = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"StatEleDown\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_StatEleDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] } aliases['fakeWStatMuUp'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess':["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuUp = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"StatMuUp\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr': 'fr_reader_StatMuUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples': ['Fake'] + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuUp = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"StatMuUp\", 2, \"std\", \"{configurations}\");')"], + 'expr': 'fr_reader_StatMuUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] } aliases['fakeWStatMuDown'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess':["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuDown = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"StatMuDown\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr': 'fr_reader_StatMuDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples': ['Fake'] + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuDown = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"StatMuDown\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_StatMuDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] } # Charge-flip efficiencies and uncertainties aliases['ttHMVA_eff_flip_2l'] = { - 'linesToAdd' : ['#include "%s/macros/flipper_eff_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/flipper_eff_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('flipper_eff flipper = flipper_eff(\"UL_2018\", 2, \"Total_SF\", \"false\");')"], 'expr' : 'flipper(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc + ['DATA','Fake'], } aliases['ttHMVA_eff_err_flip_2l'] = { - 'linesToAdd' : ['#include "%s/macros/flipper_eff_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/flipper_eff_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('flipper_eff flipper_unc = flipper_eff(\"UL_2018\", 2, \"Total_SF\", \"false\");')"], 'expr' : 'flipper_unc(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc + ['DATA','Fake'], diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/DY_OS_CR/configuration.py b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/DY_OS_CR/configuration.py index ac0325d6..44b9f8da 100644 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/DY_OS_CR/configuration.py +++ b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/DY_OS_CR/configuration.py @@ -1,5 +1,12 @@ # Configuration file for charge asymmetry WHSS analysis using the UL 2018 dataset +import sys,inspect + +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' + # Tag used to identify the configuration folder version tag = 'WHSS_OSCR_2018_v9_chargeAsymmetry_Mu82_EleUL90' @@ -10,7 +17,9 @@ outputFile = "mkShapes__{}.root".format(tag) # Path to ouput folder -outputFolder = "../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +if site == 'kit': + outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" # Path to batch folder (used for condor submission) batchFolder = "condor" diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/DY_OS_CR/cuts.py b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/DY_OS_CR/cuts.py index 9447c4e9..9213d0b9 100644 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/DY_OS_CR/cuts.py +++ b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/DY_OS_CR/cuts.py @@ -16,16 +16,16 @@ # 2 Jets cuts['hww2l2v_13TeV_WH_OS_ee_2j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == -11*11) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && mjj < 100 && mlljj20_whss > 50.', + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == -11*11) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && mjj < 400 && mlljj20_whss > 50.', 'categories' : { # Sub-leading lepton pT >= 20 GeV 'pt2ge20' : 'abs(mll-91.2)>15 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # OUT Z-peak 'SS_CR_pt2ge20' : 'abs(mll-91.2)>15 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', # OUT Z-peak SS CR --> inverting detall cut 'DYeeCR_pt2ge20' : 'abs(mll-91.2)<=15 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # IN Z-peak - # Sub-leading lepton pT < 20 GeV - 'pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # OUT Z-peak - 'SS_CR_pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', # OUT Z-peak SS CR --> inverting detall cut - 'DYeeCR_pt2lt20' : 'abs(mll-91.2)<=15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # IN Z-peak + # # Sub-leading lepton pT < 20 GeV + # 'pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # OUT Z-peak + # 'SS_CR_pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', # OUT Z-peak SS CR --> inverting detall cut + # 'DYeeCR_pt2lt20' : 'abs(mll-91.2)<=15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # IN Z-peak } } @@ -37,10 +37,10 @@ 'pt2ge20' : 'abs(mll-91.2)>15 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # OUT Z-peak 'SS_CR_pt2ge20' : 'abs(mll-91.2)>15 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', # OUT Z-peak SS CR --> inverting detall cut 'DYeeCR_pt2ge20' : 'abs(mll-91.2)<=15 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # IN Z-peak - # Sub-leading lepton pT < 20 GeV - 'pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # OUT Z-peak - 'SS_CR_pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', # OUT Z-peak SS CR --> inverting detall cut - 'DYeeCR_pt2lt20' : 'abs(mll-91.2)<=15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # IN Z-peak + # # Sub-leading lepton pT < 20 GeV + # 'pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # OUT Z-peak + # 'SS_CR_pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', # OUT Z-peak SS CR --> inverting detall cut + # 'DYeeCR_pt2lt20' : 'abs(mll-91.2)<=15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # IN Z-peak } } @@ -48,14 +48,14 @@ # 2 Jets cuts['hww2l2v_13TeV_WH_OS_em_2j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == -11*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && mjj < 100 && mlljj20_whss > 50.', + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == -11*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && mjj < 400 && mlljj20_whss > 50.', 'categories' : { # Sub-leading lepton pT >= 20 GeV 'pt2ge20' : 'abs(mll-91.2)>15 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # OUT Z-peak 'SS_CR_pt2ge20' : 'abs(mll-91.2)>15 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', # OUT Z-peak SS CR --> inverting detall cut - # Sub-leading lepton pT < 20 GeV - 'pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # OUT Z-peak - 'SS_CR_pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', # OUT Z-peak SS CR --> inverting detall cut + # # Sub-leading lepton pT < 20 GeV + # 'pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # OUT Z-peak + # 'SS_CR_pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', # OUT Z-peak SS CR --> inverting detall cut } } @@ -66,9 +66,9 @@ # Sub-leading lepton pT >= 20 GeV 'pt2ge20' : 'abs(mll-91.2)>15 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # OUT Z-peak 'SS_CR_pt2ge20' : 'abs(mll-91.2)>15 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', # OUT Z-peak SS CR --> inverting detall cut - # Sub-leading lepton pT < 20 GeV - 'pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # OUT Z-peak - 'SS_CR_pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', # OUT Z-peak SS CR --> inverting detall cut + # # Sub-leading lepton pT < 20 GeV + # 'pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # OUT Z-peak + # 'SS_CR_pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', # OUT Z-peak SS CR --> inverting detall cut } } diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/DY_OS_CR/nuisances.py b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/DY_OS_CR/nuisances.py index d71f2baa..aec97915 100644 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/DY_OS_CR/nuisances.py +++ b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/DY_OS_CR/nuisances.py @@ -361,45 +361,7 @@ def makeMCDirectory(var=''): 'cuts' : [cut for cut in cuts if ('_ee_' in cut or '_em_' in cut)] } -# # Charge flip: uncertainty on opposite sign processes not affected by charge-flip -# nuisances['chargeFlip_syst'] = { -# 'name' : 'CMS_ChargeFlip_syst', -# 'type' : 'lnN', -# 'samples' : { -# 'ChargeFlip' : '1.10', -# } -# } - - -# ####### Generic "cross section uncertainties" - -# apply_on = { -# 'top': [ -# 'isSingleTop * 1.0816 + isTTbar', -# 'isSingleTop * 0.9184 + isTTbar' -# ] -# } - -# nuisances['singleTopToTTbar'] = { -# 'name' : 'singleTopToTTbar', -# 'skipCMS' : 1, -# 'kind' : 'weight', -# 'type' : 'shape', -# 'samples' : apply_on -# } - -## Top pT reweighting uncertainty - -# nuisances['TopPtRew'] = { -# 'name' : 'CMS_top_pT_reweighting', # Theory uncertainty -# 'kind' : 'weight', -# 'type' : 'shape', -# 'samples' : { -# 'top': ["1.", "1./Top_pTrw"] -# }, -# 'symmetrize' : True -# } - +# Generic "cross section uncertainties" nuisances['WgStar'] = { 'name' : 'CMS_hww_WgStarScale', 'type' : 'lnN', @@ -408,253 +370,6 @@ def makeMCDirectory(var=''): } } -# ###### pdf uncertainties - -# valuesggh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggH', '125.09','pdf','sm') -# valuesggzh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggZH','125.09','pdf','sm') -# valuesbbh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','bbH', '125.09','pdf','sm') - -# nuisances['pdf_Higgs_gg'] = { -# 'name' : 'pdf_Higgs_gg', -# 'samples' : { -# 'ggH_hww' : valuesggh, -# 'ggH_htt' : valuesggh, -# 'ggZH_hww' : valuesggzh, -# 'bbH_hww' : valuesbbh, -# }, -# 'type' : 'lnN', -# } - -# values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ttH','125.09','pdf','sm') - -# nuisances['pdf_Higgs_ttH'] = { -# 'name' : 'pdf_Higgs_ttH', -# 'samples' : { -# 'ttH_hww': values, -# }, -# 'type' : 'lnN', -# } - -# valuesqqh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','vbfH','125.09','pdf','sm') -# valueswh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','WH', '125.09','pdf','sm') -# valueszh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ZH', '125.09','pdf','sm') - -# nuisances['pdf_Higgs_qqbar'] = { -# 'name' : 'pdf_Higgs_qqbar', -# 'type' : 'lnN', -# 'samples': { -# 'qqH_hww' : valuesqqh, -# 'qqH_htt' : valuesqqh, -# 'WH_hww_plus' : valueswh, -# 'WH_hww_minus': valueswh, -# 'WH_htt_plus' : valueswh, -# 'WH_htt_minus': valueswh, -# 'ZH_hww' : valueszh, -# 'ZH_htt' : valueszh -# }, -# } - -# nuisances['pdf_qqbar'] = { -# 'name' : 'pdf_qqbar', -# 'type' : 'lnN', -# 'samples' : { -# 'Wg' : '1.04', -# 'Zg' : '1.04', -# 'ZZ' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 -# 'WZ' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 -# 'WgS' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 -# 'ZgS' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 -# }, -# } - -# nuisances['pdf_Higgs_gg_ACCEPT'] = { -# 'name' : 'pdf_WH_hww_Higgs_gg_ACCEPT', -# 'samples' : { -# 'ggH_hww' : '1.006', -# 'ggH_htt' : '1.006', -# 'ggZH_hww' : '1.006', -# 'bbH_hww' : '1.006' -# }, -# 'type' : 'lnN', -# } -# nuisances['pdf_gg_ACCEPT'] = { -# 'name' : 'pdf_WH_hww_gg_ACCEPT', -# 'samples' : { -# 'ggWW' : '1.006', -# }, -# 'type' : 'lnN', -# } - -# nuisances['pdf_Higgs_qqbar_ACCEPT'] = { -# 'name' : 'pdf_WH_hww_Higgs_qqbar_ACCEPT', -# 'type' : 'lnN', -# 'samples' : { -# 'qqH_hww' : '1.002', -# 'qqH_htt' : '1.002', -# 'WH_hww_plus' : '1.003', -# 'WH_hww_minus': '1.003', -# 'WH_htt_plus' : '1.003', -# 'WH_htt_minus': '1.003', -# 'ZH_hww' : '1.002', -# 'ZH_htt' : '1.002', -# }, -# } - -# nuisances['pdf_qqbar_ACCEPT'] = { -# 'name' : 'pdf_WH_hww_qqbar_ACCEPT', -# 'type' : 'lnN', -# 'samples' : { -# 'ZZ' : '1.001', -# 'WZ' : '1.001', -# }, -# } - -# ##### Renormalization & factorization scales - -# ## Shape nuisance due to QCD scale variations for DY -# ## LHE scale variation weights (w_var / w_nominal) - -# ## This should work for samples with either 8 or 9 LHE scale weights (Length$(LHEScaleWeight) == 8 or 9) -# variations = ['Alt(LHEScaleWeight,0,1)', 'Alt(LHEScaleWeight,1,1)', 'Alt(LHEScaleWeight,3,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-4,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-2,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-1,1)'] - -# # nuisances['QCDscale_V'] = { -# # 'name' : 'QCDscale_V', -# # 'skipCMS' : 1, -# # 'kind' : 'weight_envelope', -# # 'type' : 'shape', -# # 'samples' : { -# # 'DY' : variations -# # }, -# # 'AsLnN' : '0' -# # } - -# nuisances['QCDscale_VV'] = { -# 'name' : 'QCDscale_VV', -# 'kind' : 'weight_envelope', -# 'type' : 'shape', -# 'samples' : { -# 'WW' : variations, -# 'Zg' : variations, -# 'Wg' : variations, -# 'ZZ' : variations, -# 'WZ' : variations, -# 'WgS' : variations, -# 'ZgS' : variations -# } -# } - -# nuisances['QCDscale_ggVV'] = { -# 'name' : 'QCDscale_ggVV', -# 'type' : 'lnN', -# 'samples' : { -# 'ggWW' : '1.15', -# }, -# } - -# #### QCD scale uncertainties for Higgs signals other than ggH - -# values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','vbfH','125.09','scale','sm') - -# nuisances['QCDscale_qqH'] = { -# 'name' : 'QCDscale_qqH', -# 'samples' : { -# 'qqH_hww' : values, -# 'qqH_htt' : values, -# }, -# 'type' : 'lnN' -# } - -# valueswh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','WH','125.09','scale','sm') -# valueszh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ZH','125.09','scale','sm') - -# nuisances['QCDscale_VH'] = { -# 'name' : 'QCDscale_VH', -# 'samples' : { -# 'WH_hww_plus' : valueswh, -# 'WH_hww_minus' : valueswh, -# 'WH_htt_plus' : valueswh, -# 'WH_htt_minus' : valueswh, -# 'ZH_hww' : valueszh, -# 'ZH_htt' : valueszh, -# }, -# 'type' : 'lnN', -# } - -# values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggZH','125.09','scale','sm') - -# nuisances['QCDscale_ggZH'] = { -# 'name' : 'QCDscale_ggZH', -# 'samples' : { -# 'ggZH_hww' : values, -# }, -# 'type' : 'lnN', -# } - -# values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ttH','125.09','scale','sm') - -# nuisances['QCDscale_ttH'] = { -# 'name' : 'QCDscale_ttH', -# 'samples' : { -# 'ttH_hww' : values, -# }, -# 'type' : 'lnN', -# } - -# nuisances['QCDscale_WWewk'] = { -# 'name' : 'QCDscale_WWewk', -# 'samples' : { -# 'WWewk' : '1.11', -# }, -# 'type' : 'lnN' -# } - -# nuisances['QCDscale_qqbar_ACCEPT'] = { -# 'name' : 'QCDscale_qqbar_ACCEPT', -# 'type' : 'lnN', -# 'samples' : { -# 'qqH_hww' : '1.003', -# 'qqH_htt' : '1.003', -# 'WH_hww_plus' : '1.010', -# 'WH_hww_minus' : '1.010', -# 'WH_htt_plus' : '1.010', -# 'WH_htt_minus' : '1.010', -# 'ZH_hww' : '1.015', -# 'ZH_htt' : '1.015', -# } -# } - -# # FIXME: these come from HIG-16-042, maybe should be recomputed? -# nuisances['QCDscale_gg_ACCEPT'] = { -# 'name' : 'QCDscale_gg_ACCEPT', -# 'samples' : { -# 'ggH_htt' : '1.012', -# 'ggH_hww' : '1.012', -# 'ggZH_hww' : '1.012', -# 'ggWW' : '1.012', -# }, -# 'type' : 'lnN', -# } - -# # WZ normalization from control region - -# nuisances['WZ2jnorm'] = { -# 'name' : 'CMS_hww_WZ3l2jnorm', -# 'samples' : { -# 'WZ' : '1.00', -# }, -# 'type' : 'rateParam', -# 'cuts' : [cut for cut in cuts if '2j' in cut], -# } - -# nuisances['WZ1jnorm'] = { -# 'name' : 'CMS_hww_WZ3l1jnorm', -# 'samples' : { -# 'WZ' : '1.00', -# }, -# 'type' : 'rateParam', -# 'cuts' : [cut for cut in cuts if '1j' in cut], -# } - ## Use the following if you want to apply the automatic combine MC stat nuisances. nuisances['stat'] = { 'type' : 'auto', diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/DY_OS_CR/plot.py b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/DY_OS_CR/plot.py index da7f708d..9bb1b0fc 100644 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/DY_OS_CR/plot.py +++ b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/DY_OS_CR/plot.py @@ -40,39 +40,18 @@ 'samples' : ['WZ'] } -# groupPlot['Vg'] = { -# 'nameHR' : "V#gamma", -# 'isSignal' : 0, -# 'color' : 810, # kOrange + 10 -# 'samples' : ['Wg','Zg'] -# } - -groupPlot['Zg'] = { - 'nameHR' : "Z#gamma", +groupPlot['Vg'] = { + 'nameHR' : "V#gamma", 'isSignal' : 0, 'color' : 810, # kOrange + 10 - 'samples' : ['Zg'] + 'samples' : ['Vg'] } -groupPlot['Wg'] = { - 'nameHR' : "W#gamma", - 'isSignal' : 0, - 'color' : 859, - 'samples' : ['Wg'] -} - -# groupPlot['VgS'] = { -# 'nameHR' : "V#gamma*", -# 'isSignal' : 0, -# 'color' : 412, # kGreen - 9 -# 'samples' : ['ZgS','WgS'] -# } - -groupPlot['WgS'] = { - 'nameHR' : "W#gamma*", +groupPlot['VgS'] = { + 'nameHR' : "V#gamma*", 'isSignal' : 0, 'color' : 409, # kGreen - 9 - 'samples' : ['WgS'] + 'samples' : ['VgS'] } groupPlot['ZgS'] = { @@ -116,32 +95,16 @@ 'scale' : 1.0, } -plot['Zg'] = { - 'nameHR' : 'Zg', - 'color' : 859, # kAzure -1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['Wg'] = { - 'nameHR' : 'Wg', +plot['Vg'] = { + 'nameHR' : 'Vg', 'color' : 859, # kAzure -1 'isSignal' : 0, 'isData' : 0, 'scale' : 1.0 } -plot['ZgS'] = { - 'nameHR' : 'ZgS', - 'color' : 617, # kViolet + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['WgS'] = { - 'nameHR' : 'WgS', +plot['VgS'] = { + 'nameHR' : 'VgS', 'color' : 859, # kAzure -1 'isSignal' : 0, 'isData' : 0, @@ -306,13 +269,6 @@ 'scale' : 1.0 } -# plot['Fake'] = { -# 'color' : 921, # kGray + 1 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : 1.0 -# } - ######## # Data # ######## diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/DY_OS_CR/samples.py b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/DY_OS_CR/samples.py index f316aa11..5c83b72e 100644 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/DY_OS_CR/samples.py +++ b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/DY_OS_CR/samples.py @@ -154,49 +154,6 @@ def addSampleWeight(samples, sampleName, sampleNameType, weight): addSampleWeight(samples, 'VgS', 'ZGToLLG', '(Gen_ZGstar_mass > 0)') -# ######## Wg ######## -# files = nanoGetSampleFiles(mcDirectory, 'Wg_AMCNLOFXFX_01J') - -# samples['Wg'] = { -# 'name': files, -# 'weight': mcCommonWeightNoMatch + '*(Gen_ZGstar_mass <= 0)*ttHMVA_eff_flip_2l', -# 'FilesPerJob': 2, -# } - - -# ######## Zg ######## -# files = nanoGetSampleFiles(mcDirectory, 'ZGToLLG') - -# samples['Zg'] = { -# 'name': files, -# 'weight': mcCommonWeightNoMatch + '*(Gen_ZGstar_mass <= 0)*ttHMVA_eff_flip_2l', -# 'FilesPerJob': 2 -# } - - -# ######## WgS ######## -# files = nanoGetSampleFiles(mcDirectory, 'Wg_AMCNLOFXFX_01J') + \ -# nanoGetSampleFiles(mcDirectory, 'WZTo3LNu_mllmin0p1') - -# samples['WgS'] = { -# 'name': files, -# 'weight': mcCommonWeight + ' * (gstarLow * 0.94)*ttHMVA_eff_flip_2l', -# 'FilesPerJob': 2, -# } -# addSampleWeight(samples, 'WgS', 'Wg_AMCNLOFXFX_01J', '(Gen_ZGstar_mass > 0 && Gen_ZGstar_mass <= 0.1)') -# addSampleWeight(samples, 'WgS', 'WZTo3LNu_mllmin0p1', '(Gen_ZGstar_mass > 0.1)*(0.601644*58.59/4.666)') - - -# ######## ZgS ######## -# files = nanoGetSampleFiles(mcDirectory, 'ZGToLLG') - -# samples['ZgS'] = { -# 'name': files, -# 'weight': mcCommonWeight + '*(Gen_ZGstar_mass > 0)*ttHMVA_eff_flip_2l', -# 'FilesPerJob': 2, -# } - - ############ WZ ############ files = nanoGetSampleFiles(mcDirectory, 'WZTo3LNu_mllmin0p1') + \ nanoGetSampleFiles(mcDirectory, 'WZTo2Q2L_mllmin4p0') diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/DY_OS_CR/structure.py b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/DY_OS_CR/structure.py index 2ea8c5ef..37a9fb5d 100644 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/DY_OS_CR/structure.py +++ b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/DY_OS_CR/structure.py @@ -29,22 +29,12 @@ 'isData' : 0, } -structure['Wg'] = { +structure['Vg'] = { 'isSignal' : 0, 'isData' : 0, } -structure['Zg'] = { - 'isSignal' : 0, - 'isData' : 0, -} - -structure['WgS'] = { - 'isSignal' : 0, - 'isData' : 0, -} - -structure['ZgS'] = { +structure['VgS'] = { 'isSignal' : 0, 'isData' : 0, } From 8f25aee106ddeb58c689b254ebdb230a04faed3f Mon Sep 17 00:00:00 2001 From: ntrevisa Date: Thu, 28 Aug 2025 10:57:33 +0200 Subject: [PATCH 26/44] WHSS 2018 working using new fake rates --- .../UL/Full2018_v9/WHSS/configuration_2j_mm/structure.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_mm/structure.py b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_mm/structure.py index 369c59bb..63fbe05b 100644 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_mm/structure.py +++ b/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/configuration_2j_mm/structure.py @@ -2,7 +2,7 @@ # keys here must match keys in samples.py -signal_normalization = 10.0 +signal_normalization = 1.0 # BTag normalization factors # Cut = hww2l2v_13TeV_samesign_2j From 83b6b392935f0f4da116d310e8f012758ae65c7a Mon Sep 17 00:00:00 2001 From: ntrevisa Date: Thu, 28 Aug 2025 10:57:53 +0200 Subject: [PATCH 27/44] WH3l 2018 working using new fake rates --- .../UL/Full2018_v9/WH3l/configuration.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration.py b/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration.py index d6ad4335..0e69267d 100644 --- a/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration.py +++ b/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/configuration.py @@ -2,8 +2,12 @@ import sys,inspect -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/ +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2018_v9/WH3l/ configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file configurations_nuisance = os.path.dirname(configurations_nuisance) # WH3l configurations_nuisance = os.path.dirname(configurations_nuisance) # Full2018_v9 @@ -19,7 +23,9 @@ outputFile = "mkShapes__{}.root".format(tag) # Path to ouput folder -outputFolder = "../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +if site == 'kit': + outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" # Path to batch folder (used for condor submission) batchFolder = "condor" From f86fbf2cd9f34908c7976d34a123bd761465722e Mon Sep 17 00:00:00 2001 From: ntrevisa Date: Thu, 28 Aug 2025 11:03:00 +0200 Subject: [PATCH 28/44] removing unused fake CR configurations --- .../WHSS/configuration_1j_CR/README.md | 17 - .../WHSS/configuration_1j_CR/configuration.py | 99 --- .../WHSS/configuration_1j_CR/cuts.py | 66 -- .../WHSS/configuration_1j_CR/nuisances.py | 704 ------------------ .../WHSS/configuration_1j_CR/plot.py | 299 -------- .../WHSS/configuration_1j_CR/samples.py | 380 ---------- .../WHSS/configuration_1j_CR/structure.py | 171 ----- .../WHSS/configuration_1j_mm_CR/README.md | 17 - .../configuration_1j_mm_CR/configuration.py | 99 --- .../WHSS/configuration_1j_mm_CR/cuts.py | 37 - .../WHSS/configuration_1j_mm_CR/nuisances.py | 704 ------------------ .../WHSS/configuration_1j_mm_CR/plot.py | 356 --------- .../WHSS/configuration_1j_mm_CR/structure.py | 171 ----- .../WHSS/configuration_2j_CR/README.md | 17 - .../WHSS/configuration_2j_CR/configuration.py | 99 --- .../WHSS/configuration_2j_CR/cuts.py | 65 -- .../WHSS/configuration_2j_CR/nuisances.py | 704 ------------------ .../WHSS/configuration_2j_CR/plot.py | 299 -------- .../WHSS/configuration_2j_CR/samples.py | 380 ---------- .../WHSS/configuration_2j_CR/structure.py | 171 ----- .../WHSS/configuration_2j_mm_CR/README.md | 17 - .../configuration_2j_mm_CR/configuration.py | 99 --- .../WHSS/configuration_2j_mm_CR/cuts.py | 37 - .../WHSS/configuration_2j_mm_CR/nuisances.py | 704 ------------------ .../WHSS/configuration_2j_mm_CR/plot.py | 356 --------- .../WHSS/configuration_2j_mm_CR/structure.py | 171 ----- 26 files changed, 6239 deletions(-) delete mode 100644 WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_CR/README.md delete mode 100644 WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_CR/configuration.py delete mode 100644 WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_CR/cuts.py delete mode 100644 WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_CR/nuisances.py delete mode 100644 WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_CR/plot.py delete mode 100644 WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_CR/samples.py delete mode 100644 WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_CR/structure.py delete mode 100644 WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_mm_CR/README.md delete mode 100644 WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_mm_CR/configuration.py delete mode 100644 WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_mm_CR/cuts.py delete mode 100644 WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_mm_CR/nuisances.py delete mode 100644 WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_mm_CR/plot.py delete mode 100644 WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_mm_CR/structure.py delete mode 100644 WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_CR/README.md delete mode 100644 WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_CR/configuration.py delete mode 100644 WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_CR/cuts.py delete mode 100644 WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_CR/nuisances.py delete mode 100644 WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_CR/plot.py delete mode 100644 WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_CR/samples.py delete mode 100644 WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_CR/structure.py delete mode 100644 WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_mm_CR/README.md delete mode 100644 WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_mm_CR/configuration.py delete mode 100644 WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_mm_CR/cuts.py delete mode 100644 WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_mm_CR/nuisances.py delete mode 100644 WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_mm_CR/plot.py delete mode 100644 WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_mm_CR/structure.py diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_CR/README.md b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_CR/README.md deleted file mode 100644 index ba17b328..00000000 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_CR/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# Configuration for WHSS 1j signal region - -### Plot distributions - -Compile configuration and plot distributions: - - mkShapesRDF -c 1 - - mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png - -### Produce datacards - -Compile configuration and produce datacards: - - mkShapesRDF -c 1 - - mkDatacards --outputDirDatacard ../datacards_original_signal_scale --skipMissingNuisance \ No newline at end of file diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_CR/configuration.py b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_CR/configuration.py deleted file mode 100644 index 0968ed16..00000000 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_CR/configuration.py +++ /dev/null @@ -1,99 +0,0 @@ -# Configuration file for charge asymmetry WHSS analysis using the UL 2017 dataset - -import sys,inspect - -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_CR - -configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file -configurations_nuisance = os.path.dirname(configurations_nuisance) # configuration_1j_CR -configurations_nuisance = os.path.dirname(configurations_nuisance) # WHSS -configurations_nuisance = os.path.dirname(configurations_nuisance) # Full2017_v9 -configurations_nuisance = os.path.dirname(configurations_nuisance) # UL - -# Tag used to identify the configuration folder version -tag = 'WHSS_2017_v9_chargeAsymmetry_Mu82_EleUL90' - -# File to use as runner script, default uses mkShapesRDF.shapeAnalysis.runner, otherwise specify path to script -runnerFile = "default" - -# Output file name -outputFile = "plots_WHSS_2017_v9_chargeAsymmetry_Mu82_EleUL90_DYflip_data.root" # "mkShapes__{}.root".format(tag) - -# Path to ouput folder -outputFolder = "../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" - -# Path to batch folder (used for condor submission) -batchFolder = "condor" - -# Path to configuration folder (will contain all the compiled configuration files) -configsFolder = "configs" - -# Luminosity to normalize to (in 1/fb) -# https://github.com/latinos/LatinoAnalysis/blob/UL_production/NanoGardener/python/data/TrigMaker_cfg.py#L868 (874) -# 59.832475339 -lumi = 59.83 - -# File with dict of aliases to define -aliasesFile = "../aliases.py" - -# File with dict of variables -variablesFile = "../variables.py" - -# File with dict of cuts -cutsFile = "cuts.py" - -# File with dict of samples -samplesFile = "samples.py" - -# File with dict of samples for plotting -plotFile = 'plot.py' - -# File with dict of structure (used to define processes in combine) -structureFile = "structure.py" - -# Nuisances file for mkDatacards and for mkShape -nuisancesFile = "../nuisances.py" - -# Path to folder where to save plots -plotPath = '../plots_' + tag - -# This lines are executed right before the runner on the condor node -mountEOS = [] - -# List of imports to import when compiling the whole configuration folder, it should not contain imports used by configuration.py -imports = ["os", "glob", ("collections", "OrderedDict"), "ROOT"] - -# List of files to compile -filesToExec = [ - samplesFile, - aliasesFile, - variablesFile, - cutsFile, - plotFile, - nuisancesFile, - structureFile, -] - -# List of variables to keep in the compiled configuration folder -varsToKeep = [ - "batchVars", - "outputFolder", - "batchFolder", - "configsFolder", - "outputFile", - "runnerFile", - "tag", - "samples", - "aliases", - "variables", - ("cuts", {"cuts": "cuts", "preselections": "preselections"}), - ("plot", {"plot": "plot", "groupPlot": "groupPlot", "legend": "legend"}), - "nuisances", - "structure", - "lumi", -] - -# List of variables to keep in the batch submission script (script.py) -batchVars = varsToKeep[varsToKeep.index("samples") :] - -varsToKeep += ['plotPath'] diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_CR/cuts.py b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_CR/cuts.py deleted file mode 100644 index 9ff759bd..00000000 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_CR/cuts.py +++ /dev/null @@ -1,66 +0,0 @@ -cuts = {} - -# cuts -preselections = 'mll>12 \ - && Lepton_pt[0]>25 \ - && Lepton_pt[1]>10 \ - && (abs(Lepton_pdgId[1])==13 || Lepton_pt[1]>13) \ - && abs(Lepton_eta[0])<2.5 && abs(Lepton_eta[1])<2.5 \ - && bVeto \ - && PuppiMET_pt > 30 \ - && !hole_veto \ - ' - -# Splitting in sub-leading lepton pT -#################################### - -## SS CR 1jet - -# mu-e -cuts['hww2l2v_13TeV_WH_SS_em_1j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)<30 && mlljj20_whss > 50.', - 'categories' : { - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT >= 20 GeV) - 'SS_CR_plus_pt2ge20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2ge20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT < 20 GeV) - 'SS_CR_plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - } -} - -# e-e -cuts['hww2l2v_13TeV_WH_SS_ee_1j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*11) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)<30 && abs(mll-91.2)>15 && mlljj20_whss > 50.', - 'categories' : { - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT >= 20 GeV) - 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT < 20 GeV) - 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - } -} - - -## DY->ee CR - 2 same-sign electrons IN the Z peak. To check the charge-flip probability method to estimate DY in the signal region - -# DY CR 1jet -cuts['hww2l2v_13TeV_WH_SS_DYee_1j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*11) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)<30 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0 && abs(mll-91.2)<15 && mlljj20_whss > 50.', - 'categories' : { - # Sub-leading lepton pT >= 20 GeV - 'plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20', - 'minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20', - 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20', - } -} - -# mlljj20_whss: -# inv_mass of: (jet1, jet2, 2*closest_lep_to_jets) -# jets are considered with pT > 20 GeV - -# Definitions of WH3l variables: -# https://github.com/latinos/LatinoAnalysis/blob/76e7c4b93aa5f056c92440d4e8d24e7de749c8fe/NanoGardener/python/modules/l3KinProducer.py diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_CR/nuisances.py b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_CR/nuisances.py deleted file mode 100644 index c9f4b07c..00000000 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_CR/nuisances.py +++ /dev/null @@ -1,704 +0,0 @@ -import sys - -# Enable reading YR for Higgs XS and uncertainties -sys.path.append('../../../macros/') -import HiggsXSection -HiggsXS = HiggsXSection.HiggsXSection() - -nuisances = {} - -mcProduction = 'Summer20UL18_106x_nAODv9_Full2018v9' -dataReco = 'Run2018_UL2018_nAODv9_Full2018v9' -mcSteps = 'MCl1loose2018v9__MCCorr2018v9NoJERInHorn__l2tightOR2018v9' -fakeSteps = 'DATAl1loose2018v9__l2loose__fakeW' -dataSteps = 'DATAl1loose2018v9__l2loose__l2tightOR2018v9' - -treeBaseDir = '/eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano' -limitFiles = -1 - -mc = [skey for skey in samples if skey not in ('Fake', 'DATA','ChargeFlip')] - -redirector = "" - -useXROOTD = False - -def makeMCDirectory(var=''): - if var== '': - print(os.path.join(treeBaseDir, mcProduction, mcSteps)) - return os.path.join(treeBaseDir, mcProduction, mcSteps) - else: - print(os.path.join(treeBaseDir, mcProduction, mcSteps + '__' + var)) - return os.path.join(treeBaseDir, mcProduction, mcSteps + '__' + var) - -# def makeMCDirectory(var=''): -# _treeBaseDir = treeBaseDir + '' -# if useXROOTD: -# _treeBaseDir = redirector + treeBaseDir -# if var== '': -# return '/'.join([_treeBaseDir, mcProduction, mcSteps]) -# else: -# return '/'.join([_treeBaseDir, mcProduction, mcSteps + '__' + var]) - -mcDirectory = makeMCDirectory() -fakeDirectory = os.path.join(treeBaseDir, dataReco, fakeSteps) -dataDirectory = os.path.join(treeBaseDir, dataReco, dataSteps) - -################################ EXPERIMENTAL UNCERTAINTIES ################################# - -#### Luminosity - -# https://twiki.cern.ch/twiki/bin/view/CMS/LumiRecommendationsRun2#LumiComb -# Uncorrelated 2016 1.0 -# Uncorrelated 2017 2.0 -# Uncorrelated 2018 1.5 -# Correlated 2016, 2017, 2018 0.6, 0.9, 2.0 -# Correlated 2017, 2018 0.6, 0.2 - -nuisances['lumi_Uncorrelated'] = { - 'name' : 'lumi_13TeV_2018', - 'type' : 'lnN', - 'samples' : dict((skey, '1.015') for skey in mc if skey not in ['WZ']) -} - -nuisances['lumi_Correlated_Run2'] = { - 'name' : 'lumi_13TeV_correlated', - 'type' : 'lnN', - 'samples' : dict((skey, '1.020') for skey in mc if skey not in ['WZ']) -} - -nuisances['lumi_Correlated_2017_2018'] = { - 'name' : 'lumi_13TeV_1718', - 'type' : 'lnN', - 'samples' : dict((skey, '1.002') for skey in mc if skey not in ['WZ']) -} - - -#### FAKES -fake_syst_endcap = ['1.0*(abs(Lepton_eta[1])<=1.4) + 1.3*(abs(Lepton_eta[1])>1.4)', - '1.0*(abs(Lepton_eta[1])<=1.4) + 1.0/1.3*(abs(Lepton_eta[1])>1.4)'] - -fake_syst_barrel = [' 1.3*(abs(Lepton_eta[1])<=1.4) + 1.0*(abs(Lepton_eta[1])>1.4)', - '1.0/1.3*(abs(Lepton_eta[1])<=1.4) + 1.0*(abs(Lepton_eta[1])>1.4)'] - -nuisances['fake_syst_mm_barrel'] = { - 'name' : 'CMS_WH_hww_fake_syst_mm_barrel', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_mm' : fake_syst_barrel, - }, - 'cuts' : [cut for cut in cuts if ('_mm_' in cut)] -} -nuisances['fake_syst_mm_endcap'] = { - 'name' : 'CMS_WH_hww_fake_syst_mm_endcap', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_mm' : fake_syst_endcap, - }, - 'cuts' : [cut for cut in cuts if ('_mm_' in cut)] -} - -nuisances['fake_syst_em_barrel'] = { - 'name' : 'CMS_WH_hww_fake_syst_em_barrel', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_em' : fake_syst_barrel, - }, - 'cuts' : [cut for cut in cuts if ('_em_' in cut)] -} -nuisances['fake_syst_em_endcap'] = { - 'name' : 'CMS_WH_hww_fake_syst_em_endcap', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_em' : fake_syst_endcap, - }, - 'cuts' : [cut for cut in cuts if ('_em_' in cut)] -} - -nuisances['fake_syst_ee_barrel'] = { - 'name' : 'CMS_WH_hww_fake_syst_ee_barrel', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_ee' : fake_syst_barrel, - }, - 'cuts' : [cut for cut in cuts if ('_ee_' in cut)] -} -nuisances['fake_syst_ee_endcap'] = { - 'name' : 'CMS_WH_hww_fake_syst_ee_endcap', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_ee' : fake_syst_endcap, - }, - 'cuts' : [cut for cut in cuts if ('_ee_' in cut)] -} - -nuisances['fake_ele'] = { - 'name' : 'CMS_WH_hww_fake_e_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_ee' : ['fakeWEleUp', 'fakeWEleDown'], - 'Fake_em' : ['fakeWEleUp', 'fakeWEleDown'], - } -} -nuisances['fake_ele_stat'] = { - 'name' : 'CMS_WH_hww_fake_stat_e_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_ee' : ['fakeWStatEleUp', 'fakeWStatEleDown'], - 'Fake_em' : ['fakeWStatEleUp', 'fakeWStatEleDown'], - } -} -nuisances['fake_mu'] = { - 'name' : 'CMS_WH_hww_fake_m_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_mm' : ['fakeWMuUp', 'fakeWMuDown'], - 'Fake_em' : ['fakeWMuUp', 'fakeWMuDown'], - } -} -nuisances['fake_mu_stat'] = { - 'name' : 'CMS_WH_hww_fake_stat_m_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_mm' : ['fakeWStatMuUp', 'fakeWStatMuDown'], - 'Fake_em' : ['fakeWStatMuUp', 'fakeWStatMuDown'], - } -} - -###### B-tagger - -for shift in ['lf', 'hf', 'hfstats1', 'hfstats2', 'lfstats1', 'lfstats2', 'cferr1', 'cferr2']: - btag_syst = ['(btagSF%sup)/(btagSF)' % shift, '(btagSF%sdown)/(btagSF)' % shift] - - name = 'CMS_btag_%s' % shift - if 'stats' in shift: - name += '_2018' - - nuisances['btag_shape_%s' % shift] = { - 'name' : name, - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, btag_syst) for skey in mc), - } - -##### Trigger Scale Factors - -trig_syst = ['TriggerSFWeight_2l_u/TriggerSFWeight_2l', 'TriggerSFWeight_2l_d/TriggerSFWeight_2l'] - -nuisances['trigg'] = { - 'name' : 'CMS_eff_hwwtrigger_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, trig_syst) for skey in mc) -} - -##### Electron Efficiency and energy scale - -nuisances['eff_e'] = { - 'name' : 'CMS_eff_e_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['SFweightEleUp', 'SFweightEleDown']) for skey in mc) -} - -nuisances['eff_ttHMVA_e'] = { - 'name' : 'CMS_eff_ttHMVA_e_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['LepWPttHMVASFEleUp', 'LepWPttHMVASFEleDown']) for skey in mc) -} - -nuisances['electronpt'] = { - 'name' : 'CMS_scale_e_2018', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'ElepTup', - 'mapDown' : 'ElepTdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('ElepTup_suffix'), - 'folderDown' : makeMCDirectory('ElepTdo_suffix'), - 'AsLnN' : '0' -} - -##### Muon Efficiency and energy scale - -nuisances['eff_m'] = { - 'name' : 'CMS_eff_m_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['SFweightMuUp', 'SFweightMuDown']) for skey in mc) -} - -nuisances['eff_ttHMVA_m'] = { - 'name' : 'CMS_eff_ttHMVA_m_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['LepWPttHMVASFMuUp', 'LepWPttHMVASFMuDown']) for skey in mc) -} - -nuisances['muonpt'] = { - 'name' : 'CMS_scale_m_2018', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'MupTup', - 'mapDown' : 'MupTdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('MupTup_suffix'), - 'folderDown' : makeMCDirectory('MupTdo_suffix'), - 'AsLnN' : '0' -} - -##### Jet energy scale -jes_systs = ['JESAbsolute','JESAbsolute_2018','JESBBEC1','JESBBEC1_2018','JESEC2','JESEC2_2018','JESFlavorQCD','JESHF','JESHF_2018','JESRelativeBal','JESRelativeSample_2018'] - -for js in jes_systs: - - nuisances[js] = { - 'name' : 'CMS_scale_' + js.replace("JES","j_"), - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : js + 'up', - 'mapDown' : js + 'do', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('RDF__JESup_suffix'), - 'folderDown': makeMCDirectory('RDF__JESdo_suffix'), - 'reweight' : ['btagSF'+js.replace('JES','jes')+'up/btagSF','btagSF'+js.replace('JES','jes')+'down/btagSF'], - 'AsLnN' : '0' - } - -##### Jet energy resolution -nuisances['JER'] = { - 'name' : 'CMS_res_j_2018', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'JERup', - 'mapDown' : 'JERdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('JERup_suffix'), - 'folderDown': makeMCDirectory('JERdo_suffix'), - 'AsLnN' : '0' -} - -##### MET unclustered energy - -# metUp.PuppiMET_pt_METup -nuisances['met'] = { - 'name' : 'CMS_scale_met_2018', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'METup', - 'mapDown' : 'METdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('METup_suffix'), - 'folderDown': makeMCDirectory('METdo_suffix'), - 'AsLnN' : '0' -} - - -##### Pileup - -# puWeight_UL2018 -nuisances['PU'] = { - 'name' : 'CMS_pileup_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'DY' : ['0.998687*(puWeightUp/puWeight)', '1.001976*(puWeightDown/puWeight)'], - 'top' : ['1.002595*(puWeightUp/puWeight)', '0.997470*(puWeightDown/puWeight)'], - 'WW' : ['1.004449*(puWeightUp/puWeight)', '0.995660*(puWeightDown/puWeight)'], - 'WWewk' : ['1.002122*(puWeightUp/puWeight)', '0.998087*(puWeightDown/puWeight)'], - 'ggWW' : ['1.004870*(puWeightUp/puWeight)', '0.995315*(puWeightDown/puWeight)'], - # 'Vg' : ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'Wg' : ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'Zg' : ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'WgS' : ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'ZgS' : ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - 'WZ' : ['0.999330*(puWeightUp/puWeight)', '1.000992*(puWeightDown/puWeight)'], - 'ZZ' : ['0.999469*(puWeightUp/puWeight)', '1.000751*(puWeightDown/puWeight)'], - 'VVV' : ['1.003485*(puWeightUp/puWeight)', '0.997561*(puWeightDown/puWeight)'], - 'ggH_hww' : ['1.003677*(puWeightUp/puWeight)', '0.995996*(puWeightDown/puWeight)'], - 'qqH_hww' : ['1.003747*(puWeightUp/puWeight)', '0.995878*(puWeightDown/puWeight)'], - # 'ZH_hww' : ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'ggZH_hww': ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'WH_hww_plus': ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'WH_hww_minus': ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'ttH_hww' : ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'ggH_htt' : ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'qqH_htt' : ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'ZH_htt' : ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'WH_htt_plus' : ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'WH_htt_minus': ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - }, - 'AsLnN' : '0', -} - -### PU ID SF uncertainty - -# puid_syst = ['Jet_PUIDSF_loose_up/Jet_PUIDSF_loose', 'Jet_PUIDSF_loose_down/Jet_PUIDSF_loose'] -puid_syst = ['Jet_PUIDSF_up/Jet_PUIDSF', 'Jet_PUIDSF_down/Jet_PUIDSF'] - -nuisances['jetPUID'] = { - 'name' : 'CMS_eff_j_PUJET_id_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, puid_syst) for skey in mc) -} - -### PS and UE - -nuisances['PS_ISR'] = { - 'name' : 'PS_WH_hww_ISR', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['PSWeight[2]', 'PSWeight[0]']) for skey in mc), - 'AsLnN' : '0', -} - -nuisances['PS_FSR'] = { - 'name' : 'PS_WH_hww_FSR', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['PSWeight[3]', 'PSWeight[1]']) for skey in mc), - 'AsLnN' : '0', -} - -nuisances['UE_CP5'] = { - 'name' : 'CMS_WH_hww_UE', - 'skipCMS' : 1, - 'type' : 'lnN', - 'samples' : dict((skey, '1.015') for skey in mc), -} - -# Charge flip efficiency -nuisances['chargeFlipEff'] = { - 'name' : 'CMS_whss_chargeFlipEff_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['1-ttHMVA_eff_err_flip_2l', '1+ttHMVA_eff_err_flip_2l']) for skey in ['DY','ChargeFlip']), - 'cuts' : [cut for cut in cuts if ('_ee_' in cut or '_em_' in cut)] -} - -# Charge flip: uncertainty on opposite sign processes not affected by charge-flip -nuisances['chargeFlip_syst'] = { - 'name' : 'CMS_ChargeFlip_syst', - 'type' : 'lnN', - 'samples' : { - 'ChargeFlip' : '1.10', - } -} - - -# ####### Generic "cross section uncertainties" - -# apply_on = { -# 'top': [ -# 'isSingleTop * 1.0816 + isTTbar', -# 'isSingleTop * 0.9184 + isTTbar' -# ] -# } - -# nuisances['singleTopToTTbar'] = { -# 'name' : 'singleTopToTTbar', -# 'skipCMS' : 1, -# 'kind' : 'weight', -# 'type' : 'shape', -# 'samples' : apply_on -# } - -## Top pT reweighting uncertainty - -nuisances['TopPtRew'] = { - 'name' : 'CMS_top_pT_reweighting', # Theory uncertainty - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'top': ["1.", "1./Top_pTrw"] - }, - 'symmetrize' : True -} - -nuisances['WgStar'] = { - 'name' : 'CMS_hww_WgStarScale', - 'type' : 'lnN', - 'samples' : { - 'WgS' : '1.25' - } -} - -###### pdf uncertainties - -valuesggh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggH', '125.09','pdf','sm') -valuesggzh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggZH','125.09','pdf','sm') -valuesbbh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','bbH', '125.09','pdf','sm') - -nuisances['pdf_Higgs_gg'] = { - 'name' : 'pdf_Higgs_gg', - 'samples' : { - 'ggH_hww' : valuesggh, - 'ggH_htt' : valuesggh, - 'ggZH_hww' : valuesggzh, - 'bbH_hww' : valuesbbh, - }, - 'type' : 'lnN', -} - -# For ttH, we need to use 1./values -values = str(1./float(HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ttH','125.09','pdf','sm'))) - -nuisances['pdf_Higgs_ttH'] = { - 'name' : 'pdf_Higgs_ttH', - 'samples' : { - 'ttH_hww': values, - }, - 'type' : 'lnN', -} - -valuesqqh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','vbfH','125.09','pdf','sm') -valueswh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','WH', '125.09','pdf','sm') -valueszh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ZH', '125.09','pdf','sm') - -nuisances['pdf_Higgs_qqbar'] = { - 'name' : 'pdf_Higgs_qqbar', - 'type' : 'lnN', - 'samples': { - 'qqH_hww' : valuesqqh, - 'qqH_htt' : valuesqqh, - 'WH_hww_plus' : valueswh, - 'WH_hww_minus': valueswh, - 'WH_htt_plus' : valueswh, - 'WH_htt_minus': valueswh, - 'ZH_hww' : valueszh, - 'ZH_htt' : valueszh - }, -} - -nuisances['pdf_qqbar'] = { - 'name' : 'pdf_qqbar', - 'type' : 'lnN', - 'samples' : { - 'Wg' : '1.04', - 'Zg' : '1.04', - 'ZZ' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 - 'WZ' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 - 'WgS' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 - 'ZgS' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 - }, -} - -nuisances['pdf_gg'] = { - 'name': 'pdf_gg', - 'type': 'lnN', - 'samples': { - 'ggWW' : '1.05', - }, -} - -nuisances['pdf_Higgs_gg_ACCEPT'] = { - 'name' : 'pdf_WH_hww_Higgs_gg_ACCEPT', - 'samples' : { - 'ggH_hww' : '1.006', - 'ggH_htt' : '1.006', - 'ggZH_hww' : '1.006', - 'bbH_hww' : '1.006' - }, - 'type' : 'lnN', -} -nuisances['pdf_gg_ACCEPT'] = { - 'name' : 'pdf_WH_hww_gg_ACCEPT', - 'samples' : { - 'ggWW' : '1.006', - }, - 'type' : 'lnN', -} - -nuisances['pdf_Higgs_qqbar_ACCEPT'] = { - 'name' : 'pdf_WH_hww_Higgs_qqbar_ACCEPT', - 'type' : 'lnN', - 'samples' : { - 'qqH_hww' : '1.002', - 'qqH_htt' : '1.002', - 'WH_hww_plus' : '1.003', - 'WH_hww_minus': '1.003', - 'WH_htt_plus' : '1.003', - 'WH_htt_minus': '1.003', - 'ZH_hww' : '1.002', - 'ZH_htt' : '1.002', - }, -} - -nuisances['pdf_qqbar_ACCEPT'] = { - 'name' : 'pdf_WH_hww_qqbar_ACCEPT', - 'type' : 'lnN', - 'samples' : { - 'ZZ' : '1.001', - 'WZ' : '1.001', - }, -} - -##### Renormalization & factorization scales - -## Shape nuisance due to QCD scale variations for DY -## LHE scale variation weights (w_var / w_nominal) - -## This should work for samples with either 8 or 9 LHE scale weights (Length$(LHEScaleWeight) == 8 or 9) -variations = ['Alt(LHEScaleWeight,0,1)', 'Alt(LHEScaleWeight,1,1)', 'Alt(LHEScaleWeight,3,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-4,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-2,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-1,1)'] - -# nuisances['QCDscale_V'] = { -# 'name' : 'QCDscale_V', -# 'skipCMS' : 1, -# 'kind' : 'weight_envelope', -# 'type' : 'shape', -# 'samples' : { -# 'DY' : variations -# }, -# 'AsLnN' : '0' -# } - -nuisances['QCDscale_VV'] = { - 'name' : 'QCDscale_VV', - 'kind' : 'weight_envelope', - 'type' : 'shape', - 'samples' : { - 'WW' : variations, - 'Zg' : variations, - 'Wg' : variations, - 'ZZ' : variations, - 'WZ' : variations, - 'WgS' : variations, - 'ZgS' : variations - } -} - -nuisances['QCDscale_ggVV'] = { - 'name' : 'QCDscale_ggVV', - 'type' : 'lnN', - 'samples' : { - 'ggWW' : '1.15', - }, -} - -#### QCD scale uncertainties for Higgs signals other than ggH - -values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','vbfH','125.09','scale','sm') - -nuisances['QCDscale_qqH'] = { - 'name' : 'QCDscale_qqH', - 'samples' : { - 'qqH_hww' : values, - 'qqH_htt' : values, - }, - 'type' : 'lnN' -} - -valueswh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','WH','125.09','scale','sm') -valueszh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ZH','125.09','scale','sm') - -nuisances['QCDscale_VH'] = { - 'name' : 'QCDscale_VH', - 'samples' : { - 'WH_hww_plus' : valueswh, - 'WH_hww_minus' : valueswh, - 'WH_htt_plus' : valueswh, - 'WH_htt_minus' : valueswh, - 'ZH_hww' : valueszh, - 'ZH_htt' : valueszh, - }, - 'type' : 'lnN', -} - -values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggZH','125.09','scale','sm') - -nuisances['QCDscale_ggZH'] = { - 'name' : 'QCDscale_ggZH', - 'samples' : { - 'ggZH_hww' : values, - }, - 'type' : 'lnN', -} - -values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ttH','125.09','scale','sm') - -nuisances['QCDscale_ttH'] = { - 'name' : 'QCDscale_ttH', - 'samples' : { - 'ttH_hww' : values, - }, - 'type' : 'lnN', -} - -nuisances['QCDscale_WWewk'] = { - 'name' : 'QCDscale_WWewk', - 'samples' : { - 'WWewk' : '1.11', - }, - 'type' : 'lnN' -} - -nuisances['QCDscale_qqbar_ACCEPT'] = { - 'name' : 'QCDscale_qqbar_ACCEPT', - 'type' : 'lnN', - 'samples' : { - 'qqH_hww' : '1.003', - 'qqH_htt' : '1.003', - 'WH_hww_plus' : '1.010', - 'WH_hww_minus' : '1.010', - 'WH_htt_plus' : '1.010', - 'WH_htt_minus' : '1.010', - 'ZH_hww' : '1.015', - 'ZH_htt' : '1.015', - } -} - -# FIXME: these come from HIG-16-042, maybe should be recomputed? -nuisances['QCDscale_gg_ACCEPT'] = { - 'name' : 'QCDscale_gg_ACCEPT', - 'samples' : { - 'ggH_htt' : '1.012', - 'ggH_hww' : '1.012', - 'ggZH_hww' : '1.012', - 'ggWW' : '1.012', - }, - 'type' : 'lnN', -} - -# WZ normalization from control region - -nuisances['WZ2jnorm'] = { - 'name' : 'CMS_hww_WZ3l2jnorm', - 'samples' : { - 'WZ' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [cut for cut in cuts if '2j' in cut], -} - -nuisances['WZ1jnorm'] = { - 'name' : 'CMS_hww_WZ3l1jnorm', - 'samples' : { - 'WZ' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [cut for cut in cuts if '1j' in cut], -} - -## Use the following if you want to apply the automatic combine MC stat nuisances. -nuisances['stat'] = { - 'type' : 'auto', - 'maxPoiss' : '10', - 'includeSignal' : '0', - 'samples' : {} -} -# nuisance ['maxPoiss'] = Number of threshold events for Poisson modelling -# nuisance ['includeSignal'] = Include MC stat nuisances on signal processes (1=True, 0=False) - -for n in nuisances.values(): - n['skipCMS'] = 1 diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_CR/plot.py b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_CR/plot.py deleted file mode 100644 index 3da2dfa1..00000000 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_CR/plot.py +++ /dev/null @@ -1,299 +0,0 @@ -# plot configuration - -# Groups of samples to improve the plots. -# If not defined, normal plots is used -# - -# BTag normalization factors -# Cut = hww2l2v_13TeV_samesign_1j -scale_histo_ttH_hww = 0.403852438299/0.206065949512 # 1.95982130602 -scale_histo_WW = 20.7930003307/18.5931357677 # 1.11831595221 -scale_histo_DY = 38.1653356007/37.1564763287 # 1.02715164008 -scale_histo_WZ = 338.331846275/301.754102591 # 1.12121705511 -scale_histo_Wg = 313.554153169/280.951504356 # 1.11604368835 -scale_histo_Zg = 31.6778612999/26.9277000005 # 1.17640427141 -scale_histo_Vg = (313.554153169+31.6778612999)/(280.951504356+26.9277000005) -scale_histo_WgS = 159.019637682/133.120233942 # 1.19455647704 -scale_histo_ZgS = 13.8422447313/11.7705334283 # 1.17600827656 -scale_histo_VgS = (159.019637682+13.8422447313)/(133.120233942+11.7705334283) -scale_histo_ZH_htt = 0.52702471516/0.418377509104 # 1.25968701398 -scale_histo_WH_htt_plus = 3.51317983868/2.99417382907 # 1.17333863671 -scale_histo_ggZH_hww = 0.0487489906276/0.0416125294193 # 1.17149789517 -scale_histo_qqH_hww = 0.0551519111922/0.0493745882637 # 1.11701004771 -scale_histo_ZZ = 8.20543225456/7.02369155076 # 1.16825065498 -scale_histo_ggH_hww = 0.835377131709/0.704517384148 # 1.18574381627 -scale_histo_WH_htt_minus = 2.14421993024/1.78486436835 # 1.20133494077 -scale_histo_VVV = 10.9161024993/9.13050235687 # 1.19556428252 -scale_histo_WH_hww_plus = 10.0694789513/8.4373732424 # 1.19343765672 -scale_histo_ggH_htt = 0.245521798327/0.219229582295 # 1.11993005577 -scale_histo_ggWW = 1.29296483445/1.18493739596 # 1.09116721175 -scale_histo_top = 124.585001211/87.4139634172 # 1.42522997861 -scale_histo_WWewk = 0.142280711039/0.133346344487 # 1.06700121092 -scale_histo_ZH_hww = 1.42081496306/1.1573508904 # 1.2276440748 -scale_histo_WH_hww_minus = 5.96461104674/5.00138194371 # 1.19259259018 -scale_histo_qqH_htt = 0.011234128291/0.0123404588292 # 0.910349318975 - -groupPlot = {} - -groupPlot['Fake'] = { - 'nameHR' : 'Non-prompt', - 'isSignal' : 0, - 'color' : 921, # kGray + 1 - 'samples' : ['Fake_mm','Fake_em','Fake_ee'] -} - -groupPlot['ChargeFlip'] = { - 'nameHR' : "charge_flip", - 'isSignal' : 0, - 'color' : 418, # kGreen+2 - 'samples' : ['ChargeFlip'] -} - -groupPlot['VVV'] = { - 'nameHR' : 'VVV', - 'isSignal' : 0, - 'color' : 857, # kAzure -3 - 'samples' : ['VVV'] -} - -groupPlot['ZZ'] = { - 'nameHR' : "ZZ", - 'isSignal' : 0, - 'color' : 617, # kViolet + 1 - 'samples' : ['ZZ'] -} - -groupPlot['WZ'] = { - 'nameHR' : "WZ", - 'isSignal' : 0, - 'color' : 619, # kViolet + 1 - 'samples' : ['WZ'] -} - -groupPlot['Vg'] = { - 'nameHR' : "V#gamma", - 'isSignal' : 0, - 'color' : 810, # kOrange + 10 - 'samples' : ['Vg'] -} - -groupPlot['VgS'] = { - 'nameHR' : "V#gamma*", - 'isSignal' : 0, - 'color' : 412, # kGreen - 9 - 'samples' : ['VgS'] -} - -groupPlot['Higgs'] = { - 'nameHR' : 'Higgs', - 'isSignal' : 0, - 'color' : 632, # kRed - 'samples' : ['ggH_hww','qqH_hww','ZH_hww','ggZH_hww','ttH_hww','ggH_htt','qqH_htt','ZH_htt'] -} - -groupPlot['WH_minus'] = { - 'nameHR' : 'W^{-} H (x 10)', - 'isSignal' : 2, - 'color' : 600, # kBlue - 'samples' : ['WH_hww_minus','WH_htt_minus'] -} - -groupPlot['WH_plus'] = { - 'nameHR' : 'W^{+} H (x 10)', - 'isSignal' : 2, - 'color' : 632, # kRed - 'samples' : ['WH_hww_plus', 'WH_htt_plus'] -} - - -# keys here must match keys in samples.py - -plot = {} - -plot['ChargeFlip'] = { - 'color' : 418, # kGreen+2 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 0.5, -} - -plot['Vg'] = { - 'color' : 859, # kAzure -1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_Vg, -} - -plot['VgS'] = { - 'color' : 859, # kAzure -1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_VgS, -} - -plot['WZ'] = { - 'color' : 858, # kAzure -2 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_WZ * 1.138, # NLO -> NNLO k-factor! -} - -plot['ZZ'] = { - 'color' : 858, # kAzure -2 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ZZ, -} - -plot['VVV'] = { - 'color' : 857, # kAzure -3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_VVV, -} - -########### -# Signals # -########### - -# HWW - -plot['ggH_hww'] = { - 'color' : 632, # kRed - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggH_hww, -} - -plot['qqH_hww'] = { - 'color' : 632+1, # kRed+1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_qqH_hww, -} - -plot['ZH_hww'] = { - 'color' : 632+3, # kRed+3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ZH_hww, -} - -plot['ggZH_hww'] = { - 'color' : 632+4, # kRed+4 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggZH_hww, -} - -plot['WH_hww_plus'] = { - 'color' : 632+2, # kRed+2 - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_hww_plus, -} - -plot['WH_hww_minus'] = { - 'color' : 600, # kBlue - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_hww_minus, -} - -plot['ttH_hww'] = { - 'color' : 632+3, # kRed+3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ttH_hww, -} - - -# Htautau - -plot['ggH_htt'] = { - 'color' : 632, # kRed - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggH_htt, -} - -plot['qqH_htt'] = { - 'color' : 632+1, # kRed+1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_qqH_htt, -} - -plot['ZH_htt'] = { - 'color' : 632+3, # kRed+3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ZH_htt, -} - -plot['WH_htt_plus'] = { - 'color' : 632+2, # kRed+2 - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_htt_plus, -} - -plot['WH_htt_minus'] = { - 'color' : 632+2, # kRed+2 - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_htt_minus, -} - - -######## -# Fake # -######## - -plot['Fake_em'] = { - 'color' : 921, # kGray + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['Fake_ee'] = { - 'color' : 921, # kGray + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['Fake_mm'] = { - 'color' : 921, # kGray + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -# plot['Fake'] = { -# 'color' : 921, # kGray + 1 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : 1.0 -# } - -######## -# Data # -######## - -plot['DATA'] = { - 'nameHR' : 'Data', - 'color' : 1 , - 'isSignal' : 0, - 'isData' : 1, - 'isBlind' : 0, -} - - -# Define legend - -legend = {} - -legend['lumi'] = 'L = 59.8 fb^{-1}' -legend['sqrt'] = '#sqrt{s} = 13 TeV' diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_CR/samples.py b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_CR/samples.py deleted file mode 100644 index 3bcb652f..00000000 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_CR/samples.py +++ /dev/null @@ -1,380 +0,0 @@ -import os,glob - -################################################ -################# SKIMS ######################## -################################################ - -# MC: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Summer20UL17_106x_nAODv9_Full2017v9/MCl1loose2017v9__MCCorr2017v9NoJERInHorn__l2tightOR2017v9/ -# DATA: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Run2017_UL2017_nAODv9_Full2017v9/DATAl1loose2017v9__l2loose__l2tightOR2017v9/ -# FAKE: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Run2017_UL2017_nAODv9_Full2017v9/DATAl1loose2017v9__l2loose__fakeW/ - -mcProduction = 'Summer20UL17_106x_nAODv9_Full2017v9' -dataReco = 'Run2017_UL2017_nAODv9_Full2017v9' -mcSteps = 'MCl1loose2017v9__MCCorr2017v9NoJERInHorn__l2tightOR2017v9{var}' -fakeSteps = 'DATAl1loose2017v9__l2loose__fakeW' -dataSteps = 'DATAl1loose2017v9__l2loose__l2tightOR2017v9' - -############################################## -###### Tree base directory for the site ###### -############################################## - -treeBaseDir = '/eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano' -limitFiles = -1 - -def makeMCDirectory(var=''): - return os.path.join(treeBaseDir, mcProduction, mcSteps.format(var='')) - -mcDirectory = makeMCDirectory() -fakeDirectory = os.path.join(treeBaseDir, dataReco, fakeSteps) -dataDirectory = os.path.join(treeBaseDir, dataReco, dataSteps) - -samples = {} - -from mkShapesRDF.lib.search_files import SearchFiles -s = SearchFiles() - -useXROOTD = True -redirector = 'root://eoscms.cern.ch/' - -def nanoGetSampleFiles(path, name): - _files = s.searchFiles(path, name, redirector=redirector) - if limitFiles != -1 and len(_files) > limitFiles: - return [(name, _files[:limitFiles])] - else: - return [(name, _files)] - -def CombineBaseW(samples, proc, samplelist): - _filtFiles = list(filter(lambda k: k[0] in samplelist, samples[proc]['name'])) - _files = list(map(lambda k: k[1], _filtFiles)) - _l = list(map(lambda k: len(k), _files)) - leastFiles = _files[_l.index(min(_l))] - dfSmall = ROOT.RDataFrame('Runs', leastFiles) - s = dfSmall.Sum('genEventSumw').GetValue() - f = ROOT.TFile.Open(leastFiles[0]) - t = f.Get('Events') - t.GetEntry(1) - xs = t.baseW * s - - __files = [] - for f in _files: - __files += f - df = ROOT.RDataFrame('Runs', __files) - s = df.Sum('genEventSumw').GetValue() - newbaseW = str(xs / s) - weight = newbaseW + '/baseW' - - for iSample in samplelist: - addSampleWeight(samples, proc, iSample, weight) - -def addSampleWeight(samples, sampleName, sampleNameType, weight): - obj = list(filter(lambda k: k[0] == sampleNameType, samples[sampleName]['name']))[0] - samples[sampleName]['name'] = list(filter(lambda k: k[0] != sampleNameType, samples[sampleName]['name'])) - if len(obj) > 2: - samples[sampleName]['name'].append((obj[0], obj[1], obj[2] + '*(' + weight + ')')) - else: - samples[sampleName]['name'].append((obj[0], obj[1], '(' + weight + ')' )) - - -################################################ -############ DATA DECLARATION ################## -################################################ - -DataRun = [ - ['B','Run2017B-UL2017-v1'], - ['C','Run2017C-UL2017-v1'], - ['D','Run2017D-UL2017-v1'], - ['E','Run2017E-UL2017-v1'], - ['F','Run2017F-UL2017-v1'], -] - -DataSets = ['MuonEG','SingleMuon','SingleElectron','DoubleMuon', 'DoubleEG'] - -DataTrig = { - 'MuonEG' : ' Trigger_ElMu' , - 'SingleMuon' : '!Trigger_ElMu && Trigger_sngMu' , - 'SingleElectron' : '!Trigger_ElMu && !Trigger_sngMu && Trigger_sngEl', - 'DoubleMuon' : '!Trigger_ElMu && !Trigger_sngMu && !Trigger_sngEl && Trigger_dblMu', - 'DoubleEG' : '!Trigger_ElMu && !Trigger_sngMu && !Trigger_sngEl && !Trigger_dblMu && Trigger_dblEl' -} - -######################################### -############ MC COMMON ################## -######################################### - -# SFweight does not include btag weights -mcCommonWeightNoMatch = 'XSWeight*SFweight*METFilter_MC' -mcCommonWeight = 'XSWeight*SFweight*METFilter_MC*PromptGenLepMatch2l' - -########################################### -############# BACKGROUNDS ############### -########################################### - -# ###### DY ####### -# files = nanoGetSampleFiles(mcDirectory, 'DYJetsToLL_M-10to50_NLO') + \ -# nanoGetSampleFiles(mcDirectory, 'DYJetsToLL_M-50') - -# samples['DY'] = { -# 'name': files, -# 'weight': mcCommonWeight + '*(Lepton_pdgId[0]*Lepton_pdgId[1] == -11*13)*( !(Sum(PhotonGen_isPrompt==1 && PhotonGen_pt>15 && abs(PhotonGen_eta)<2.6) > 0))', -# 'FilesPerJob': 8, -# } - -# ##### Top ####### -# files = nanoGetSampleFiles(mcDirectory, 'TTTo2L2Nu') + \ -# nanoGetSampleFiles(mcDirectory, 'ST_s-channel') + \ -# nanoGetSampleFiles(mcDirectory, 'ST_t-channel_top') + \ -# nanoGetSampleFiles(mcDirectory, 'ST_t-channel_antitop') + \ -# nanoGetSampleFiles(mcDirectory, 'ST_tW_antitop') + \ -# nanoGetSampleFiles(mcDirectory, 'ST_tW_top') - -# samples['top'] = { -# 'name': files, -# 'weight': mcCommonWeight, # +'*ttHMVA_SF_flip_2l', -# 'FilesPerJob': 8, -# } -# addSampleWeight(samples,'top','TTTo2L2Nu','Top_pTrw') - -# ###### WW ######## -# samples['WW'] = { -# 'name': nanoGetSampleFiles(mcDirectory, 'WWTo2L2Nu'), -# 'weight': mcCommonWeight + '*nllW*ewknloW', -# 'FilesPerJob': 4 -# } - -# samples['WWewk'] = { -# 'name': nanoGetSampleFiles(mcDirectory, 'WpWmJJ_EWK_noTop'), -# 'weight': mcCommonWeight + '*(Sum(abs(GenPart_pdgId)==6 || GenPart_pdgId==25)==0)', # Filter tops and Higgs, -# 'FilesPerJob': 8 -# } - -# files = nanoGetSampleFiles(mcDirectory, 'GluGluToWWToENEN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToENMN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToENTN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToMNEN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToMNMN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToMNTN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToTNEN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToTNMN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToTNTN') - -# samples['ggWW'] = { -# 'name': files, -# 'weight': mcCommonWeight + '*1.53/1.4', -# 'FilesPerJob': 8 -# } - -# Charge-flip estimated from data, and covering DY, WW, and Top -samples['ChargeFlip'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'DYJetsToLL_M-50'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4 -} - -######## Vg ######## -files = nanoGetSampleFiles(mcDirectory, 'Wg_AMCNLOFXFX_01J') + \ - nanoGetSampleFiles(mcDirectory, 'ZGToLLG') - -samples['Vg'] = { - 'name': files, - 'weight': mcCommonWeightNoMatch + '*(Gen_ZGstar_mass <= 0)', - 'FilesPerJob': 4, -} - -######## VgS ######## -files = nanoGetSampleFiles(mcDirectory, 'Wg_AMCNLOFXFX_01J') + \ - nanoGetSampleFiles(mcDirectory, 'WZTo3LNu_mllmin0p1') + \ - nanoGetSampleFiles(mcDirectory, 'ZGToLLG') - -samples['VgS'] = { - 'name': files, - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} -addSampleWeight(samples, 'VgS', 'Wg_AMCNLOFXFX_01J', '((Gen_ZGstar_mass > 0 && Gen_ZGstar_mass <= 0.1))*(gstarLow * 0.94)') -addSampleWeight(samples, 'VgS', 'WZTo3LNu_mllmin0p1', '((Gen_ZGstar_mass > 0.1)*(0.601644*58.59/4.666))*(gstarLow * 0.94)') -addSampleWeight(samples, 'VgS', 'ZGToLLG', '(Gen_ZGstar_mass > 0)') - -############ WZ ############ -files = nanoGetSampleFiles(mcDirectory, 'WZTo3LNu_mllmin0p1') + \ - nanoGetSampleFiles(mcDirectory, 'WZTo2Q2L_mllmin4p0') - -samples['WZ'] = { - 'name': files, - 'weight': mcCommonWeight + ' * (gstarHigh)', - 'FilesPerJob': 4, -} -addSampleWeight(samples, 'WZ', 'WZTo3LNu_mllmin0p1', '(0.601644*58.59/4.666)') - - -############ ZZ ############ -files = nanoGetSampleFiles(mcDirectory, 'ZZTo2L2Nu') + \ - nanoGetSampleFiles(mcDirectory, 'ZZTo2Q2L_mllmin4p0') + \ - nanoGetSampleFiles(mcDirectory, 'ZZTo4L') - -samples['ZZ'] = { - 'name': files, - 'weight': mcCommonWeight, - 'FilesPerJob': 2, -} - - -########## VVV ######### -files = nanoGetSampleFiles(mcDirectory, 'ZZZ') + \ - nanoGetSampleFiles(mcDirectory, 'WZZ') + \ - nanoGetSampleFiles(mcDirectory, 'WWZ') + \ - nanoGetSampleFiles(mcDirectory, 'WWW') - -samples['VVV'] = { - 'name': files, - 'weight': mcCommonWeight, - 'FilesPerJob': 8, -} - -########################################### -############# SIGNALS ################## -########################################### - -signals = [] - -############ ggH H->WW ############ -samples['ggH_hww'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'GluGluHToWWTo2L2Nu_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} -signals.append('ggH_hww') - -############ VBF H->WW ############ -samples['qqH_hww'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'VBFHToWWTo2L2Nu_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 8, -} -signals.append('qqH_hww') - -############ ZH H->WW ############ -samples['ZH_hww'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'HZJ_HToWW_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 8, -} -signals.append('ZH_hww') - -samples['ggZH_hww'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'GluGluZH_HToWWTo2L2Nu_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 8, -} -signals.append('ggZH_hww') - -############ WH H->WW ############ -samples['WH_hww_plus'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'HWplusJ_HToWW_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} -signals.append('WH_hww_plus') - -samples['WH_hww_minus'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'HWminusJ_HToWW_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} - -signals.append('WH_hww_minus') - -############ ttH ############ -samples['ttH_hww'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'ttHToNonbb_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} -signals.append('ttH_hww') - -############ H->TauTau ############ -samples['ggH_htt'] = { - # 'name': nanoGetSampleFiles(mcDirectory, 'GluGluHToTauTau_M125_Powheg'), - 'name': nanoGetSampleFiles(mcDirectory, 'GluGluHToTauTau_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 20, -} -signals.append('ggH_htt') - -samples['qqH_htt'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'VBFHToTauTau_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 20, -} -signals.append('qqH_htt') - -samples['ZH_htt'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'ZHToTauTau_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 8, -} -signals.append('ZH_htt') - -############ WH H->TauTau ############ -samples['WH_htt_plus'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'WplusHToTauTau_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} -signals.append('WH_htt_plus') - -samples['WH_htt_minus'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'WminusHToTauTau_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} -signals.append('WH_htt_minus') - - -########################################### -################## FAKE ################### -########################################### - -samples['Fake'] = { - 'name': [], - 'weight': 'METFilter_DATA*fakeW', - 'weights': [], - 'isData': ['all'], - 'FilesPerJob': 50 -} - -for _, sd in DataRun: - for pd in DataSets: - tag_data = pd + '_' + sd - - files = nanoGetSampleFiles(fakeDirectory, tag_data) - - samples['Fake']['name'].extend(files) - addSampleWeight(samples, 'Fake', tag_data, DataTrig[pd]) - -samples['Fake']['subsamples'] = { - 'em': 'abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 11*13', - 'mm': 'abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 13*13', - 'ee': 'abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 11*11' -} - - -########################################### -################## DATA ################### -########################################### - -samples['DATA'] = { - 'name': [], - 'weight': 'LepWPCut*METFilter_DATA', - 'weights': [], - 'isData': ['all'], - 'FilesPerJob': 50 -} - -for _, sd in DataRun: - for pd in DataSets: - tag_data = pd + '_' + sd - - files = nanoGetSampleFiles(dataDirectory, tag_data) - - samples['DATA']['name'].extend(files) - addSampleWeight(samples, 'DATA', tag_data, DataTrig[pd]) diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_CR/structure.py b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_CR/structure.py deleted file mode 100644 index ac7c22d6..00000000 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_CR/structure.py +++ /dev/null @@ -1,171 +0,0 @@ -# structure configuration for datacard - -# keys here must match keys in samples.py - -signal_normalization = 10.0 - -# BTag normalization factors -# Cut = hww2l2v_13TeV_samesign_1j -scale_histo_ttH_hww = 0.403852438299/0.206065949512 # 1.95982130602 -scale_histo_WW = 20.7930003307/18.5931357677 # 1.11831595221 -scale_histo_DY = 38.1653356007/37.1564763287 # 1.02715164008 -scale_histo_WZ = 338.331846275/301.754102591 # 1.12121705511 -scale_histo_Wg = 313.554153169/280.951504356 # 1.11604368835 -scale_histo_Zg = 31.6778612999/26.9277000005 # 1.17640427141 -scale_histo_Vg = (313.554153169+31.6778612999)/(280.951504356+26.9277000005) -scale_histo_WgS = 159.019637682/133.120233942 # 1.19455647704 -scale_histo_ZgS = 13.8422447313/11.7705334283 # 1.17600827656 -scale_histo_VgS = (159.019637682+13.8422447313)/(133.120233942+11.7705334283) -scale_histo_ZH_htt = 0.52702471516/0.418377509104 # 1.25968701398 -scale_histo_WH_htt_plus = 3.51317983868/2.99417382907 # 1.17333863671 -scale_histo_ggZH_hww = 0.0487489906276/0.0416125294193 # 1.17149789517 -scale_histo_qqH_hww = 0.0551519111922/0.0493745882637 # 1.11701004771 -scale_histo_ZZ = 8.20543225456/7.02369155076 # 1.16825065498 -scale_histo_ggH_hww = 0.835377131709/0.704517384148 # 1.18574381627 -scale_histo_WH_htt_minus = 2.14421993024/1.78486436835 # 1.20133494077 -scale_histo_VVV = 10.9161024993/9.13050235687 # 1.19556428252 -scale_histo_WH_hww_plus = 10.0694789513/8.4373732424 # 1.19343765672 -scale_histo_ggH_htt = 0.245521798327/0.219229582295 # 1.11993005577 -scale_histo_ggWW = 1.29296483445/1.18493739596 # 1.09116721175 -scale_histo_top = 124.585001211/87.4139634172 # 1.42522997861 -scale_histo_WWewk = 0.142280711039/0.133346344487 # 1.06700121092 -scale_histo_ZH_hww = 1.42081496306/1.1573508904 # 1.2276440748 -scale_histo_WH_hww_minus = 5.96461104674/5.00138194371 # 1.19259259018 -scale_histo_qqH_htt = 0.011234128291/0.0123404588292 # 0.910349318975 - -structure = {} - -structure['Vg'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_Vg, -} - -structure['VgS'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_VgS, -} - -structure['WZ'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WZ * 1.138 # NLO -> NNLO k-factor -} - -structure['ZZ'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZZ, -} - -structure['VVV'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_VVV, -} - - -# Higgs -structure['ggH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ggH_hww, -} - -# structure['qqH_hww'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_qqH_hww, -# } - -structure['ZH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZH_hww, -} - -structure['ggZH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ggZH_hww, -} - -structure['WH_hww_plus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_hww_plus*signal_normalization, -} - -structure['WH_hww_minus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_hww_minus*signal_normalization, -} - -# structure['ttH_hww'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_ttH_hww, -# } - -structure['ggH_htt'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ggH_htt, -} - -structure['qqH_htt'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_qqH_htt, -} - -structure['ZH_htt'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZH_htt, -} - -structure['WH_htt_plus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_htt_plus*signal_normalization, -} - -structure['WH_htt_minus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_htt_minus*signal_normalization, -} - - -# Fakes -structure['Fake_ee'] = { - 'isSignal' : 0, - 'isData' : 0, -} - -structure['Fake_mm'] = { - 'isSignal' : 0, - 'isData' : 0, -} - -structure['Fake_em'] = { - 'isSignal' : 0, - 'isData' : 0, -} - - -# Data-driven charge flip estimation -structure['ChargeFlip'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : 0.5, -} - -# Data -structure['DATA'] = { - 'isSignal' : 0, - 'isData' : 1 -} diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_mm_CR/README.md b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_mm_CR/README.md deleted file mode 100644 index ba17b328..00000000 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_mm_CR/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# Configuration for WHSS 1j signal region - -### Plot distributions - -Compile configuration and plot distributions: - - mkShapesRDF -c 1 - - mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png - -### Produce datacards - -Compile configuration and produce datacards: - - mkShapesRDF -c 1 - - mkDatacards --outputDirDatacard ../datacards_original_signal_scale --skipMissingNuisance \ No newline at end of file diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_mm_CR/configuration.py b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_mm_CR/configuration.py deleted file mode 100644 index ee629e9f..00000000 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_mm_CR/configuration.py +++ /dev/null @@ -1,99 +0,0 @@ -# Configuration file for charge asymmetry WHSS analysis using the UL 2017 dataset - -import sys,inspect - -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_mm_CR - -configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file -configurations_nuisance = os.path.dirname(configurations_nuisance) # configuration_1j_mm_CR -configurations_nuisance = os.path.dirname(configurations_nuisance) # WHSS -configurations_nuisance = os.path.dirname(configurations_nuisance) # Full2017_v9 -configurations_nuisance = os.path.dirname(configurations_nuisance) # UL - -# Tag used to identify the configuration folder version -tag = 'WHSS_2017_v9_chargeAsymmetry_Mu82_EleUL90' - -# File to use as runner script, default uses mkShapesRDF.shapeAnalysis.runner, otherwise specify path to script -runnerFile = "default" - -# Output file name -outputFile = "plots_WHSS_2017_v9_chargeAsymmetry_Mu82_EleUL90_DYflip_data.root" # "mkShapes__{}.root".format(tag) - -# Path to ouput folder -outputFolder = "../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" - -# Path to batch folder (used for condor submission) -batchFolder = "condor" - -# Path to configuration folder (will contain all the compiled configuration files) -configsFolder = "configs" - -# Luminosity to normalize to (in 1/fb) -# https://github.com/latinos/LatinoAnalysis/blob/UL_production/NanoGardener/python/data/TrigMaker_cfg.py#L868 (874) -# 59.832475339 -lumi = 59.83 - -# File with dict of aliases to define -aliasesFile = "../aliases.py" - -# File with dict of variables -variablesFile = "../variables.py" - -# File with dict of cuts -cutsFile = "cuts.py" - -# File with dict of samples -samplesFile = "../samples.py" - -# File with dict of samples for plotting -plotFile = 'plot.py' - -# File with dict of structure (used to define processes in combine) -structureFile = "structure.py" - -# Nuisances file for mkDatacards and for mkShape -nuisancesFile = "../nuisances.py" - -# Path to folder where to save plots -plotPath = '../plots_' + tag - -# This lines are executed right before the runner on the condor node -mountEOS = [] - -# List of imports to import when compiling the whole configuration folder, it should not contain imports used by configuration.py -imports = ["os", "glob", ("collections", "OrderedDict"), "ROOT"] - -# List of files to compile -filesToExec = [ - samplesFile, - aliasesFile, - variablesFile, - cutsFile, - plotFile, - nuisancesFile, - structureFile, -] - -# List of variables to keep in the compiled configuration folder -varsToKeep = [ - "batchVars", - "outputFolder", - "batchFolder", - "configsFolder", - "outputFile", - "runnerFile", - "tag", - "samples", - "aliases", - "variables", - ("cuts", {"cuts": "cuts", "preselections": "preselections"}), - ("plot", {"plot": "plot", "groupPlot": "groupPlot", "legend": "legend"}), - "nuisances", - "structure", - "lumi", -] - -# List of variables to keep in the batch submission script (script.py) -batchVars = varsToKeep[varsToKeep.index("samples") :] - -varsToKeep += ['plotPath'] diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_mm_CR/cuts.py b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_mm_CR/cuts.py deleted file mode 100644 index 091bbdd5..00000000 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_mm_CR/cuts.py +++ /dev/null @@ -1,37 +0,0 @@ -cuts = {} - -# cuts -preselections = 'mll>12 \ - && Lepton_pt[0]>25 \ - && Lepton_pt[1]>10 \ - && (abs(Lepton_pdgId[1])==13 || Lepton_pt[1]>13) \ - && abs(Lepton_eta[0])<2.5 && abs(Lepton_eta[1])<2.5 \ - && bVeto \ - && PuppiMET_pt > 30 \ - && !hole_veto \ - ' - -# Splitting in sub-leading lepton pT -#################################### - -## SR 1jet - -# mu-mu -cuts['hww2l2v_13TeV_WH_SS_noZveto_mm_1j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 13*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)<30 && mlljj20_whss > 50.', - 'categories' : { - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT >= 20 GeV) - 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT < 20 GeV) - 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - } -} - -# mlljj20_whss: -# inv_mass of: (jet1, jet2, 2*closest_lep_to_jets) -# jets are considered with pT > 20 GeV - -# Definitions of WH3l variables: -# https://github.com/latinos/LatinoAnalysis/blob/76e7c4b93aa5f056c92440d4e8d24e7de749c8fe/NanoGardener/python/modules/l3KinProducer.py diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_mm_CR/nuisances.py b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_mm_CR/nuisances.py deleted file mode 100644 index c9f4b07c..00000000 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_mm_CR/nuisances.py +++ /dev/null @@ -1,704 +0,0 @@ -import sys - -# Enable reading YR for Higgs XS and uncertainties -sys.path.append('../../../macros/') -import HiggsXSection -HiggsXS = HiggsXSection.HiggsXSection() - -nuisances = {} - -mcProduction = 'Summer20UL18_106x_nAODv9_Full2018v9' -dataReco = 'Run2018_UL2018_nAODv9_Full2018v9' -mcSteps = 'MCl1loose2018v9__MCCorr2018v9NoJERInHorn__l2tightOR2018v9' -fakeSteps = 'DATAl1loose2018v9__l2loose__fakeW' -dataSteps = 'DATAl1loose2018v9__l2loose__l2tightOR2018v9' - -treeBaseDir = '/eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano' -limitFiles = -1 - -mc = [skey for skey in samples if skey not in ('Fake', 'DATA','ChargeFlip')] - -redirector = "" - -useXROOTD = False - -def makeMCDirectory(var=''): - if var== '': - print(os.path.join(treeBaseDir, mcProduction, mcSteps)) - return os.path.join(treeBaseDir, mcProduction, mcSteps) - else: - print(os.path.join(treeBaseDir, mcProduction, mcSteps + '__' + var)) - return os.path.join(treeBaseDir, mcProduction, mcSteps + '__' + var) - -# def makeMCDirectory(var=''): -# _treeBaseDir = treeBaseDir + '' -# if useXROOTD: -# _treeBaseDir = redirector + treeBaseDir -# if var== '': -# return '/'.join([_treeBaseDir, mcProduction, mcSteps]) -# else: -# return '/'.join([_treeBaseDir, mcProduction, mcSteps + '__' + var]) - -mcDirectory = makeMCDirectory() -fakeDirectory = os.path.join(treeBaseDir, dataReco, fakeSteps) -dataDirectory = os.path.join(treeBaseDir, dataReco, dataSteps) - -################################ EXPERIMENTAL UNCERTAINTIES ################################# - -#### Luminosity - -# https://twiki.cern.ch/twiki/bin/view/CMS/LumiRecommendationsRun2#LumiComb -# Uncorrelated 2016 1.0 -# Uncorrelated 2017 2.0 -# Uncorrelated 2018 1.5 -# Correlated 2016, 2017, 2018 0.6, 0.9, 2.0 -# Correlated 2017, 2018 0.6, 0.2 - -nuisances['lumi_Uncorrelated'] = { - 'name' : 'lumi_13TeV_2018', - 'type' : 'lnN', - 'samples' : dict((skey, '1.015') for skey in mc if skey not in ['WZ']) -} - -nuisances['lumi_Correlated_Run2'] = { - 'name' : 'lumi_13TeV_correlated', - 'type' : 'lnN', - 'samples' : dict((skey, '1.020') for skey in mc if skey not in ['WZ']) -} - -nuisances['lumi_Correlated_2017_2018'] = { - 'name' : 'lumi_13TeV_1718', - 'type' : 'lnN', - 'samples' : dict((skey, '1.002') for skey in mc if skey not in ['WZ']) -} - - -#### FAKES -fake_syst_endcap = ['1.0*(abs(Lepton_eta[1])<=1.4) + 1.3*(abs(Lepton_eta[1])>1.4)', - '1.0*(abs(Lepton_eta[1])<=1.4) + 1.0/1.3*(abs(Lepton_eta[1])>1.4)'] - -fake_syst_barrel = [' 1.3*(abs(Lepton_eta[1])<=1.4) + 1.0*(abs(Lepton_eta[1])>1.4)', - '1.0/1.3*(abs(Lepton_eta[1])<=1.4) + 1.0*(abs(Lepton_eta[1])>1.4)'] - -nuisances['fake_syst_mm_barrel'] = { - 'name' : 'CMS_WH_hww_fake_syst_mm_barrel', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_mm' : fake_syst_barrel, - }, - 'cuts' : [cut for cut in cuts if ('_mm_' in cut)] -} -nuisances['fake_syst_mm_endcap'] = { - 'name' : 'CMS_WH_hww_fake_syst_mm_endcap', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_mm' : fake_syst_endcap, - }, - 'cuts' : [cut for cut in cuts if ('_mm_' in cut)] -} - -nuisances['fake_syst_em_barrel'] = { - 'name' : 'CMS_WH_hww_fake_syst_em_barrel', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_em' : fake_syst_barrel, - }, - 'cuts' : [cut for cut in cuts if ('_em_' in cut)] -} -nuisances['fake_syst_em_endcap'] = { - 'name' : 'CMS_WH_hww_fake_syst_em_endcap', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_em' : fake_syst_endcap, - }, - 'cuts' : [cut for cut in cuts if ('_em_' in cut)] -} - -nuisances['fake_syst_ee_barrel'] = { - 'name' : 'CMS_WH_hww_fake_syst_ee_barrel', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_ee' : fake_syst_barrel, - }, - 'cuts' : [cut for cut in cuts if ('_ee_' in cut)] -} -nuisances['fake_syst_ee_endcap'] = { - 'name' : 'CMS_WH_hww_fake_syst_ee_endcap', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_ee' : fake_syst_endcap, - }, - 'cuts' : [cut for cut in cuts if ('_ee_' in cut)] -} - -nuisances['fake_ele'] = { - 'name' : 'CMS_WH_hww_fake_e_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_ee' : ['fakeWEleUp', 'fakeWEleDown'], - 'Fake_em' : ['fakeWEleUp', 'fakeWEleDown'], - } -} -nuisances['fake_ele_stat'] = { - 'name' : 'CMS_WH_hww_fake_stat_e_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_ee' : ['fakeWStatEleUp', 'fakeWStatEleDown'], - 'Fake_em' : ['fakeWStatEleUp', 'fakeWStatEleDown'], - } -} -nuisances['fake_mu'] = { - 'name' : 'CMS_WH_hww_fake_m_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_mm' : ['fakeWMuUp', 'fakeWMuDown'], - 'Fake_em' : ['fakeWMuUp', 'fakeWMuDown'], - } -} -nuisances['fake_mu_stat'] = { - 'name' : 'CMS_WH_hww_fake_stat_m_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_mm' : ['fakeWStatMuUp', 'fakeWStatMuDown'], - 'Fake_em' : ['fakeWStatMuUp', 'fakeWStatMuDown'], - } -} - -###### B-tagger - -for shift in ['lf', 'hf', 'hfstats1', 'hfstats2', 'lfstats1', 'lfstats2', 'cferr1', 'cferr2']: - btag_syst = ['(btagSF%sup)/(btagSF)' % shift, '(btagSF%sdown)/(btagSF)' % shift] - - name = 'CMS_btag_%s' % shift - if 'stats' in shift: - name += '_2018' - - nuisances['btag_shape_%s' % shift] = { - 'name' : name, - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, btag_syst) for skey in mc), - } - -##### Trigger Scale Factors - -trig_syst = ['TriggerSFWeight_2l_u/TriggerSFWeight_2l', 'TriggerSFWeight_2l_d/TriggerSFWeight_2l'] - -nuisances['trigg'] = { - 'name' : 'CMS_eff_hwwtrigger_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, trig_syst) for skey in mc) -} - -##### Electron Efficiency and energy scale - -nuisances['eff_e'] = { - 'name' : 'CMS_eff_e_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['SFweightEleUp', 'SFweightEleDown']) for skey in mc) -} - -nuisances['eff_ttHMVA_e'] = { - 'name' : 'CMS_eff_ttHMVA_e_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['LepWPttHMVASFEleUp', 'LepWPttHMVASFEleDown']) for skey in mc) -} - -nuisances['electronpt'] = { - 'name' : 'CMS_scale_e_2018', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'ElepTup', - 'mapDown' : 'ElepTdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('ElepTup_suffix'), - 'folderDown' : makeMCDirectory('ElepTdo_suffix'), - 'AsLnN' : '0' -} - -##### Muon Efficiency and energy scale - -nuisances['eff_m'] = { - 'name' : 'CMS_eff_m_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['SFweightMuUp', 'SFweightMuDown']) for skey in mc) -} - -nuisances['eff_ttHMVA_m'] = { - 'name' : 'CMS_eff_ttHMVA_m_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['LepWPttHMVASFMuUp', 'LepWPttHMVASFMuDown']) for skey in mc) -} - -nuisances['muonpt'] = { - 'name' : 'CMS_scale_m_2018', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'MupTup', - 'mapDown' : 'MupTdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('MupTup_suffix'), - 'folderDown' : makeMCDirectory('MupTdo_suffix'), - 'AsLnN' : '0' -} - -##### Jet energy scale -jes_systs = ['JESAbsolute','JESAbsolute_2018','JESBBEC1','JESBBEC1_2018','JESEC2','JESEC2_2018','JESFlavorQCD','JESHF','JESHF_2018','JESRelativeBal','JESRelativeSample_2018'] - -for js in jes_systs: - - nuisances[js] = { - 'name' : 'CMS_scale_' + js.replace("JES","j_"), - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : js + 'up', - 'mapDown' : js + 'do', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('RDF__JESup_suffix'), - 'folderDown': makeMCDirectory('RDF__JESdo_suffix'), - 'reweight' : ['btagSF'+js.replace('JES','jes')+'up/btagSF','btagSF'+js.replace('JES','jes')+'down/btagSF'], - 'AsLnN' : '0' - } - -##### Jet energy resolution -nuisances['JER'] = { - 'name' : 'CMS_res_j_2018', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'JERup', - 'mapDown' : 'JERdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('JERup_suffix'), - 'folderDown': makeMCDirectory('JERdo_suffix'), - 'AsLnN' : '0' -} - -##### MET unclustered energy - -# metUp.PuppiMET_pt_METup -nuisances['met'] = { - 'name' : 'CMS_scale_met_2018', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'METup', - 'mapDown' : 'METdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('METup_suffix'), - 'folderDown': makeMCDirectory('METdo_suffix'), - 'AsLnN' : '0' -} - - -##### Pileup - -# puWeight_UL2018 -nuisances['PU'] = { - 'name' : 'CMS_pileup_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'DY' : ['0.998687*(puWeightUp/puWeight)', '1.001976*(puWeightDown/puWeight)'], - 'top' : ['1.002595*(puWeightUp/puWeight)', '0.997470*(puWeightDown/puWeight)'], - 'WW' : ['1.004449*(puWeightUp/puWeight)', '0.995660*(puWeightDown/puWeight)'], - 'WWewk' : ['1.002122*(puWeightUp/puWeight)', '0.998087*(puWeightDown/puWeight)'], - 'ggWW' : ['1.004870*(puWeightUp/puWeight)', '0.995315*(puWeightDown/puWeight)'], - # 'Vg' : ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'Wg' : ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'Zg' : ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'WgS' : ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'ZgS' : ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - 'WZ' : ['0.999330*(puWeightUp/puWeight)', '1.000992*(puWeightDown/puWeight)'], - 'ZZ' : ['0.999469*(puWeightUp/puWeight)', '1.000751*(puWeightDown/puWeight)'], - 'VVV' : ['1.003485*(puWeightUp/puWeight)', '0.997561*(puWeightDown/puWeight)'], - 'ggH_hww' : ['1.003677*(puWeightUp/puWeight)', '0.995996*(puWeightDown/puWeight)'], - 'qqH_hww' : ['1.003747*(puWeightUp/puWeight)', '0.995878*(puWeightDown/puWeight)'], - # 'ZH_hww' : ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'ggZH_hww': ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'WH_hww_plus': ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'WH_hww_minus': ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'ttH_hww' : ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'ggH_htt' : ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'qqH_htt' : ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'ZH_htt' : ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'WH_htt_plus' : ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'WH_htt_minus': ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - }, - 'AsLnN' : '0', -} - -### PU ID SF uncertainty - -# puid_syst = ['Jet_PUIDSF_loose_up/Jet_PUIDSF_loose', 'Jet_PUIDSF_loose_down/Jet_PUIDSF_loose'] -puid_syst = ['Jet_PUIDSF_up/Jet_PUIDSF', 'Jet_PUIDSF_down/Jet_PUIDSF'] - -nuisances['jetPUID'] = { - 'name' : 'CMS_eff_j_PUJET_id_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, puid_syst) for skey in mc) -} - -### PS and UE - -nuisances['PS_ISR'] = { - 'name' : 'PS_WH_hww_ISR', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['PSWeight[2]', 'PSWeight[0]']) for skey in mc), - 'AsLnN' : '0', -} - -nuisances['PS_FSR'] = { - 'name' : 'PS_WH_hww_FSR', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['PSWeight[3]', 'PSWeight[1]']) for skey in mc), - 'AsLnN' : '0', -} - -nuisances['UE_CP5'] = { - 'name' : 'CMS_WH_hww_UE', - 'skipCMS' : 1, - 'type' : 'lnN', - 'samples' : dict((skey, '1.015') for skey in mc), -} - -# Charge flip efficiency -nuisances['chargeFlipEff'] = { - 'name' : 'CMS_whss_chargeFlipEff_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['1-ttHMVA_eff_err_flip_2l', '1+ttHMVA_eff_err_flip_2l']) for skey in ['DY','ChargeFlip']), - 'cuts' : [cut for cut in cuts if ('_ee_' in cut or '_em_' in cut)] -} - -# Charge flip: uncertainty on opposite sign processes not affected by charge-flip -nuisances['chargeFlip_syst'] = { - 'name' : 'CMS_ChargeFlip_syst', - 'type' : 'lnN', - 'samples' : { - 'ChargeFlip' : '1.10', - } -} - - -# ####### Generic "cross section uncertainties" - -# apply_on = { -# 'top': [ -# 'isSingleTop * 1.0816 + isTTbar', -# 'isSingleTop * 0.9184 + isTTbar' -# ] -# } - -# nuisances['singleTopToTTbar'] = { -# 'name' : 'singleTopToTTbar', -# 'skipCMS' : 1, -# 'kind' : 'weight', -# 'type' : 'shape', -# 'samples' : apply_on -# } - -## Top pT reweighting uncertainty - -nuisances['TopPtRew'] = { - 'name' : 'CMS_top_pT_reweighting', # Theory uncertainty - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'top': ["1.", "1./Top_pTrw"] - }, - 'symmetrize' : True -} - -nuisances['WgStar'] = { - 'name' : 'CMS_hww_WgStarScale', - 'type' : 'lnN', - 'samples' : { - 'WgS' : '1.25' - } -} - -###### pdf uncertainties - -valuesggh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggH', '125.09','pdf','sm') -valuesggzh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggZH','125.09','pdf','sm') -valuesbbh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','bbH', '125.09','pdf','sm') - -nuisances['pdf_Higgs_gg'] = { - 'name' : 'pdf_Higgs_gg', - 'samples' : { - 'ggH_hww' : valuesggh, - 'ggH_htt' : valuesggh, - 'ggZH_hww' : valuesggzh, - 'bbH_hww' : valuesbbh, - }, - 'type' : 'lnN', -} - -# For ttH, we need to use 1./values -values = str(1./float(HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ttH','125.09','pdf','sm'))) - -nuisances['pdf_Higgs_ttH'] = { - 'name' : 'pdf_Higgs_ttH', - 'samples' : { - 'ttH_hww': values, - }, - 'type' : 'lnN', -} - -valuesqqh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','vbfH','125.09','pdf','sm') -valueswh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','WH', '125.09','pdf','sm') -valueszh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ZH', '125.09','pdf','sm') - -nuisances['pdf_Higgs_qqbar'] = { - 'name' : 'pdf_Higgs_qqbar', - 'type' : 'lnN', - 'samples': { - 'qqH_hww' : valuesqqh, - 'qqH_htt' : valuesqqh, - 'WH_hww_plus' : valueswh, - 'WH_hww_minus': valueswh, - 'WH_htt_plus' : valueswh, - 'WH_htt_minus': valueswh, - 'ZH_hww' : valueszh, - 'ZH_htt' : valueszh - }, -} - -nuisances['pdf_qqbar'] = { - 'name' : 'pdf_qqbar', - 'type' : 'lnN', - 'samples' : { - 'Wg' : '1.04', - 'Zg' : '1.04', - 'ZZ' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 - 'WZ' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 - 'WgS' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 - 'ZgS' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 - }, -} - -nuisances['pdf_gg'] = { - 'name': 'pdf_gg', - 'type': 'lnN', - 'samples': { - 'ggWW' : '1.05', - }, -} - -nuisances['pdf_Higgs_gg_ACCEPT'] = { - 'name' : 'pdf_WH_hww_Higgs_gg_ACCEPT', - 'samples' : { - 'ggH_hww' : '1.006', - 'ggH_htt' : '1.006', - 'ggZH_hww' : '1.006', - 'bbH_hww' : '1.006' - }, - 'type' : 'lnN', -} -nuisances['pdf_gg_ACCEPT'] = { - 'name' : 'pdf_WH_hww_gg_ACCEPT', - 'samples' : { - 'ggWW' : '1.006', - }, - 'type' : 'lnN', -} - -nuisances['pdf_Higgs_qqbar_ACCEPT'] = { - 'name' : 'pdf_WH_hww_Higgs_qqbar_ACCEPT', - 'type' : 'lnN', - 'samples' : { - 'qqH_hww' : '1.002', - 'qqH_htt' : '1.002', - 'WH_hww_plus' : '1.003', - 'WH_hww_minus': '1.003', - 'WH_htt_plus' : '1.003', - 'WH_htt_minus': '1.003', - 'ZH_hww' : '1.002', - 'ZH_htt' : '1.002', - }, -} - -nuisances['pdf_qqbar_ACCEPT'] = { - 'name' : 'pdf_WH_hww_qqbar_ACCEPT', - 'type' : 'lnN', - 'samples' : { - 'ZZ' : '1.001', - 'WZ' : '1.001', - }, -} - -##### Renormalization & factorization scales - -## Shape nuisance due to QCD scale variations for DY -## LHE scale variation weights (w_var / w_nominal) - -## This should work for samples with either 8 or 9 LHE scale weights (Length$(LHEScaleWeight) == 8 or 9) -variations = ['Alt(LHEScaleWeight,0,1)', 'Alt(LHEScaleWeight,1,1)', 'Alt(LHEScaleWeight,3,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-4,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-2,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-1,1)'] - -# nuisances['QCDscale_V'] = { -# 'name' : 'QCDscale_V', -# 'skipCMS' : 1, -# 'kind' : 'weight_envelope', -# 'type' : 'shape', -# 'samples' : { -# 'DY' : variations -# }, -# 'AsLnN' : '0' -# } - -nuisances['QCDscale_VV'] = { - 'name' : 'QCDscale_VV', - 'kind' : 'weight_envelope', - 'type' : 'shape', - 'samples' : { - 'WW' : variations, - 'Zg' : variations, - 'Wg' : variations, - 'ZZ' : variations, - 'WZ' : variations, - 'WgS' : variations, - 'ZgS' : variations - } -} - -nuisances['QCDscale_ggVV'] = { - 'name' : 'QCDscale_ggVV', - 'type' : 'lnN', - 'samples' : { - 'ggWW' : '1.15', - }, -} - -#### QCD scale uncertainties for Higgs signals other than ggH - -values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','vbfH','125.09','scale','sm') - -nuisances['QCDscale_qqH'] = { - 'name' : 'QCDscale_qqH', - 'samples' : { - 'qqH_hww' : values, - 'qqH_htt' : values, - }, - 'type' : 'lnN' -} - -valueswh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','WH','125.09','scale','sm') -valueszh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ZH','125.09','scale','sm') - -nuisances['QCDscale_VH'] = { - 'name' : 'QCDscale_VH', - 'samples' : { - 'WH_hww_plus' : valueswh, - 'WH_hww_minus' : valueswh, - 'WH_htt_plus' : valueswh, - 'WH_htt_minus' : valueswh, - 'ZH_hww' : valueszh, - 'ZH_htt' : valueszh, - }, - 'type' : 'lnN', -} - -values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggZH','125.09','scale','sm') - -nuisances['QCDscale_ggZH'] = { - 'name' : 'QCDscale_ggZH', - 'samples' : { - 'ggZH_hww' : values, - }, - 'type' : 'lnN', -} - -values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ttH','125.09','scale','sm') - -nuisances['QCDscale_ttH'] = { - 'name' : 'QCDscale_ttH', - 'samples' : { - 'ttH_hww' : values, - }, - 'type' : 'lnN', -} - -nuisances['QCDscale_WWewk'] = { - 'name' : 'QCDscale_WWewk', - 'samples' : { - 'WWewk' : '1.11', - }, - 'type' : 'lnN' -} - -nuisances['QCDscale_qqbar_ACCEPT'] = { - 'name' : 'QCDscale_qqbar_ACCEPT', - 'type' : 'lnN', - 'samples' : { - 'qqH_hww' : '1.003', - 'qqH_htt' : '1.003', - 'WH_hww_plus' : '1.010', - 'WH_hww_minus' : '1.010', - 'WH_htt_plus' : '1.010', - 'WH_htt_minus' : '1.010', - 'ZH_hww' : '1.015', - 'ZH_htt' : '1.015', - } -} - -# FIXME: these come from HIG-16-042, maybe should be recomputed? -nuisances['QCDscale_gg_ACCEPT'] = { - 'name' : 'QCDscale_gg_ACCEPT', - 'samples' : { - 'ggH_htt' : '1.012', - 'ggH_hww' : '1.012', - 'ggZH_hww' : '1.012', - 'ggWW' : '1.012', - }, - 'type' : 'lnN', -} - -# WZ normalization from control region - -nuisances['WZ2jnorm'] = { - 'name' : 'CMS_hww_WZ3l2jnorm', - 'samples' : { - 'WZ' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [cut for cut in cuts if '2j' in cut], -} - -nuisances['WZ1jnorm'] = { - 'name' : 'CMS_hww_WZ3l1jnorm', - 'samples' : { - 'WZ' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [cut for cut in cuts if '1j' in cut], -} - -## Use the following if you want to apply the automatic combine MC stat nuisances. -nuisances['stat'] = { - 'type' : 'auto', - 'maxPoiss' : '10', - 'includeSignal' : '0', - 'samples' : {} -} -# nuisance ['maxPoiss'] = Number of threshold events for Poisson modelling -# nuisance ['includeSignal'] = Include MC stat nuisances on signal processes (1=True, 0=False) - -for n in nuisances.values(): - n['skipCMS'] = 1 diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_mm_CR/plot.py b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_mm_CR/plot.py deleted file mode 100644 index adddc7d9..00000000 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_mm_CR/plot.py +++ /dev/null @@ -1,356 +0,0 @@ -# plot configuration - -# Groups of samples to improve the plots. -# If not defined, normal plots is used -# - -# BTag normalization factors -# Cut = hww2l2v_13TeV_samesign_1j -scale_histo_ttH_hww = 0.403852438299/0.206065949512 # 1.95982130602 -scale_histo_WW = 20.7930003307/18.5931357677 # 1.11831595221 -scale_histo_DY = 38.1653356007/37.1564763287 # 1.02715164008 -scale_histo_WZ = 338.331846275/301.754102591 # 1.12121705511 -scale_histo_Wg = 313.554153169/280.951504356 # 1.11604368835 -scale_histo_Zg = 31.6778612999/26.9277000005 # 1.17640427141 -scale_histo_Vg = (313.554153169+31.6778612999)/(280.951504356+26.9277000005) -scale_histo_WgS = 159.019637682/133.120233942 # 1.19455647704 -scale_histo_ZgS = 13.8422447313/11.7705334283 # 1.17600827656 -scale_histo_VgS = (159.019637682+13.8422447313)/(133.120233942+11.7705334283) -scale_histo_ZH_htt = 0.52702471516/0.418377509104 # 1.25968701398 -scale_histo_WH_htt_plus = 3.51317983868/2.99417382907 # 1.17333863671 -scale_histo_ggZH_hww = 0.0487489906276/0.0416125294193 # 1.17149789517 -scale_histo_qqH_hww = 0.0551519111922/0.0493745882637 # 1.11701004771 -scale_histo_ZZ = 8.20543225456/7.02369155076 # 1.16825065498 -scale_histo_ggH_hww = 0.835377131709/0.704517384148 # 1.18574381627 -scale_histo_WH_htt_minus = 2.14421993024/1.78486436835 # 1.20133494077 -scale_histo_VVV = 10.9161024993/9.13050235687 # 1.19556428252 -scale_histo_WH_hww_plus = 10.0694789513/8.4373732424 # 1.19343765672 -scale_histo_ggH_htt = 0.245521798327/0.219229582295 # 1.11993005577 -scale_histo_ggWW = 1.29296483445/1.18493739596 # 1.09116721175 -scale_histo_top = 124.585001211/87.4139634172 # 1.42522997861 -scale_histo_WWewk = 0.142280711039/0.133346344487 # 1.06700121092 -scale_histo_ZH_hww = 1.42081496306/1.1573508904 # 1.2276440748 -scale_histo_WH_hww_minus = 5.96461104674/5.00138194371 # 1.19259259018 -scale_histo_qqH_htt = 0.011234128291/0.0123404588292 # 0.910349318975 - -groupPlot = {} - -groupPlot['top'] = { - 'nameHR' : 'tW+ and t#bar{t}', - 'isSignal' : 0, - 'color' : 400, # kYellow - 'samples' : ['top'] -} - -groupPlot['WW'] = { - 'nameHR' : 'WW', - 'isSignal' : 0, - 'color' : 851, # kAzure -9 - 'samples' : ['WW', 'ggWW', 'WWewk'] -} - -groupPlot['DY'] = { - 'nameHR' : "DY", - 'isSignal' : 0, - 'color' : 418, # kGreen+2 - 'samples' : ['DY'] -} - -groupPlot['Fake'] = { - 'nameHR' : 'Non-prompt', - 'isSignal' : 0, - 'color' : 921, # kGray + 1 - 'samples' : ['Fake_mm','Fake_em','Fake_ee'] -} - -# groupPlot['ChargeFlip'] = { -# 'nameHR' : "charge_flip", -# 'isSignal' : 0, -# 'color' : 418, # kGreen+2 -# 'samples' : ['ChargeFlip'] -# } - -groupPlot['VVV'] = { - 'nameHR' : 'VVV', - 'isSignal' : 0, - 'color' : 857, # kAzure -3 - 'samples' : ['VVV'] -} - -groupPlot['ZZ'] = { - 'nameHR' : "ZZ", - 'isSignal' : 0, - 'color' : 617, # kViolet + 1 - 'samples' : ['ZZ'] -} - -groupPlot['WZ'] = { - 'nameHR' : "WZ", - 'isSignal' : 0, - 'color' : 619, # kViolet + 1 - 'samples' : ['WZ'] -} - -groupPlot['Vg'] = { - 'nameHR' : "V#gamma", - 'isSignal' : 0, - 'color' : 810, # kOrange + 10 - 'samples' : ['Vg'] -} - -groupPlot['VgS'] = { - 'nameHR' : "V#gamma*", - 'isSignal' : 0, - 'color' : 412, # kGreen - 9 - 'samples' : ['VgS'] -} - -groupPlot['Higgs'] = { - 'nameHR' : 'Higgs', - 'isSignal' : 0, - 'color' : 632, # kRed - 'samples' : ['ggH_hww','qqH_hww','ZH_hww','ggZH_hww','ttH_hww','ggH_htt','qqH_htt','ZH_htt'] -} - -groupPlot['WH_minus'] = { - 'nameHR' : 'W^{-} H (x 10)', - 'isSignal' : 2, - 'color' : 600, # kBlue - 'samples' : ['WH_hww_minus','WH_htt_minus'] -} - -groupPlot['WH_plus'] = { - 'nameHR' : 'W^{+} H (x 10)', - 'isSignal' : 2, - 'color' : 632, # kRed - 'samples' : ['WH_hww_plus', 'WH_htt_plus'] -} - - -# keys here must match keys in samples.py - -plot = {} - -# plot['ChargeFlip'] = { -# 'color' : 418, # kGreen+2 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : 0.5, -# } - -plot['DY'] = { - 'color' : 418, # kGreen+2 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_DY, -} - -plot['top'] = { - 'nameHR' : 'tW and t#bar{t}', - 'color' : 400, # kYellow - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_top, -} - -plot['WW'] = { - 'color' : 851, # kAzure -9 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_WW, -} - -plot['WWewk'] = { - 'color' : 850, # kAzure -10 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_WWewk, -} - -plot['ggWW'] = { - 'color' : 850, # kAzure -10 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggWW, -} - -plot['Vg'] = { - 'color' : 859, # kAzure -1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_Vg, -} - -plot['VgS'] = { - 'color' : 859, # kAzure -1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_VgS, -} - -plot['WZ'] = { - 'color' : 858, # kAzure -2 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_WZ * 1.138, # NLO -> NNLO k-factor! -} - -plot['ZZ'] = { - 'color' : 858, # kAzure -2 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ZZ, -} - -plot['VVV'] = { - 'color' : 857, # kAzure -3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_VVV, -} - -########### -# Signals # -########### - -# HWW - -plot['ggH_hww'] = { - 'color' : 632, # kRed - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggH_hww, -} - -plot['qqH_hww'] = { - 'color' : 632+1, # kRed+1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_qqH_hww, -} - -plot['ZH_hww'] = { - 'color' : 632+3, # kRed+3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ZH_hww, -} - -plot['ggZH_hww'] = { - 'color' : 632+4, # kRed+4 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggZH_hww, -} - -plot['WH_hww_plus'] = { - 'color' : 632+2, # kRed+2 - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_hww_plus, -} - -plot['WH_hww_minus'] = { - 'color' : 600, # kBlue - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_hww_minus, -} - -plot['ttH_hww'] = { - 'color' : 632+3, # kRed+3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ttH_hww, -} - - -# Htautau - -plot['ggH_htt'] = { - 'color' : 632, # kRed - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggH_htt, -} - -plot['qqH_htt'] = { - 'color' : 632+1, # kRed+1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_qqH_htt, -} - -plot['ZH_htt'] = { - 'color' : 632+3, # kRed+3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ZH_htt, -} - -plot['WH_htt_plus'] = { - 'color' : 632+2, # kRed+2 - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_htt_plus, -} - -plot['WH_htt_minus'] = { - 'color' : 632+2, # kRed+2 - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_htt_minus, -} - - -######## -# Fake # -######## - -plot['Fake_em'] = { - 'color' : 921, # kGray + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['Fake_ee'] = { - 'color' : 921, # kGray + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['Fake_mm'] = { - 'color' : 921, # kGray + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -# plot['Fake'] = { -# 'color' : 921, # kGray + 1 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : 1.0 -# } - -######## -# Data # -######## - -plot['DATA'] = { - 'nameHR' : 'Data', - 'color' : 1 , - 'isSignal' : 0, - 'isData' : 1, - 'isBlind' : 0, -} - - -# Define legend - -legend = {} - -legend['lumi'] = 'L = 59.8 fb^{-1}' -legend['sqrt'] = '#sqrt{s} = 13 TeV' diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_mm_CR/structure.py b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_mm_CR/structure.py deleted file mode 100644 index 3d3734d2..00000000 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_mm_CR/structure.py +++ /dev/null @@ -1,171 +0,0 @@ -# structure configuration for datacard - -# keys here must match keys in samples.py - -structure = {} - -signal_normalization = 10.0 - -# BTag normalization factors -# Cut = hww2l2v_13TeV_samesign_1j -scale_histo_ttH_hww = 0.403852438299/0.206065949512 # 1.95982130602 -scale_histo_WW = 20.7930003307/18.5931357677 # 1.11831595221 -scale_histo_DY = 38.1653356007/37.1564763287 # 1.02715164008 -scale_histo_WZ = 338.331846275/301.754102591 # 1.12121705511 -scale_histo_Wg = 313.554153169/280.951504356 # 1.11604368835 -scale_histo_Zg = 31.6778612999/26.9277000005 # 1.17640427141 -scale_histo_Vg = (313.554153169+31.6778612999)/(280.951504356+26.9277000005) -scale_histo_WgS = 159.019637682/133.120233942 # 1.19455647704 -scale_histo_ZgS = 13.8422447313/11.7705334283 # 1.17600827656 -scale_histo_VgS = (159.019637682+13.8422447313)/(133.120233942+11.7705334283) -scale_histo_ZH_htt = 0.52702471516/0.418377509104 # 1.25968701398 -scale_histo_WH_htt_plus = 3.51317983868/2.99417382907 # 1.17333863671 -scale_histo_ggZH_hww = 0.0487489906276/0.0416125294193 # 1.17149789517 -scale_histo_qqH_hww = 0.0551519111922/0.0493745882637 # 1.11701004771 -scale_histo_ZZ = 8.20543225456/7.02369155076 # 1.16825065498 -scale_histo_ggH_hww = 0.835377131709/0.704517384148 # 1.18574381627 -scale_histo_WH_htt_minus = 2.14421993024/1.78486436835 # 1.20133494077 -scale_histo_VVV = 10.9161024993/9.13050235687 # 1.19556428252 -scale_histo_WH_hww_plus = 10.0694789513/8.4373732424 # 1.19343765672 -scale_histo_ggH_htt = 0.245521798327/0.219229582295 # 1.11993005577 -scale_histo_ggWW = 1.29296483445/1.18493739596 # 1.09116721175 -scale_histo_top = 124.585001211/87.4139634172 # 1.42522997861 -scale_histo_WWewk = 0.142280711039/0.133346344487 # 1.06700121092 -scale_histo_ZH_hww = 1.42081496306/1.1573508904 # 1.2276440748 -scale_histo_WH_hww_minus = 5.96461104674/5.00138194371 # 1.19259259018 -scale_histo_qqH_htt = 0.011234128291/0.0123404588292 # 0.910349318975 - -structure['Vg'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_Vg, -} - -structure['VgS'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_VgS, -} - -structure['WZ'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WZ * 1.138 # NLO -> NNLO k-factor -} - -structure['ZZ'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZZ, -} - -structure['VVV'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_VVV, -} - - -# Higgs -structure['ggH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ggH_hww, -} - -structure['qqH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_qqH_hww, -} - -structure['ZH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZH_hww, -} - -structure['ggZH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ggZH_hww, -} - -structure['WH_hww_plus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_hww_plus*signal_normalization, -} - -structure['WH_hww_minus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_hww_minus*signal_normalization, -} - -structure['ttH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ttH_hww, -} - -structure['ggH_htt'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ggH_htt, -} - -structure['qqH_htt'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_qqH_htt, -} - -structure['ZH_htt'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZH_htt, -} - -structure['WH_htt_plus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_htt_plus*signal_normalization, -} - -structure['WH_htt_minus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_htt_minus*signal_normalization, -} - - -# Fakes -structure['Fake_ee'] = { - 'isSignal' : 0, - 'isData' : 0, -} - -structure['Fake_mm'] = { - 'isSignal' : 0, - 'isData' : 0, -} - -structure['Fake_em'] = { - 'isSignal' : 0, - 'isData' : 0, -} - - -# # Data-driven charge flip estimation -# structure['ChargeFlip'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : 0.5, -# } - -# Data -structure['DATA'] = { - 'isSignal' : 0, - 'isData' : 1 -} diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_CR/README.md b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_CR/README.md deleted file mode 100644 index ba17b328..00000000 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_CR/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# Configuration for WHSS 1j signal region - -### Plot distributions - -Compile configuration and plot distributions: - - mkShapesRDF -c 1 - - mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png - -### Produce datacards - -Compile configuration and produce datacards: - - mkShapesRDF -c 1 - - mkDatacards --outputDirDatacard ../datacards_original_signal_scale --skipMissingNuisance \ No newline at end of file diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_CR/configuration.py b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_CR/configuration.py deleted file mode 100644 index af9a12c8..00000000 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_CR/configuration.py +++ /dev/null @@ -1,99 +0,0 @@ -# Configuration file for charge asymmetry WHSS analysis using the UL 2017 dataset - -import sys,inspect - -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_CR - -configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file -configurations_nuisance = os.path.dirname(configurations_nuisance) # configuration_2j_CR -configurations_nuisance = os.path.dirname(configurations_nuisance) # WHSS -configurations_nuisance = os.path.dirname(configurations_nuisance) # Full2017_v9 -configurations_nuisance = os.path.dirname(configurations_nuisance) # UL - -# Tag used to identify the configuration folder version -tag = 'WHSS_2017_v9_chargeAsymmetry_Mu82_EleUL90' - -# File to use as runner script, default uses mkShapesRDF.shapeAnalysis.runner, otherwise specify path to script -runnerFile = "default" - -# Output file name -outputFile = "plots_WHSS_2017_v9_chargeAsymmetry_Mu82_EleUL90_DYflip_data.root" # "mkShapes__{}.root".format(tag) - -# Path to ouput folder -outputFolder = "../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" - -# Path to batch folder (used for condor submission) -batchFolder = "condor" - -# Path to configuration folder (will contain all the compiled configuration files) -configsFolder = "configs" - -# Luminosity to normalize to (in 1/fb) -# https://github.com/latinos/LatinoAnalysis/blob/UL_production/NanoGardener/python/data/TrigMaker_cfg.py#L868 (874) -# 59.832475339 -lumi = 59.83 - -# File with dict of aliases to define -aliasesFile = "../aliases.py" - -# File with dict of variables -variablesFile = "../variables.py" - -# File with dict of cuts -cutsFile = "cuts.py" - -# File with dict of samples -samplesFile = "samples.py" - -# File with dict of samples for plotting -plotFile = 'plot.py' - -# File with dict of structure (used to define processes in combine) -structureFile = "structure.py" - -# Nuisances file for mkDatacards and for mkShape -nuisancesFile = "../nuisances.py" - -# Path to folder where to save plots -plotPath = '../plots_' + tag - -# This lines are executed right before the runner on the condor node -mountEOS = [] - -# List of imports to import when compiling the whole configuration folder, it should not contain imports used by configuration.py -imports = ["os", "glob", ("collections", "OrderedDict"), "ROOT"] - -# List of files to compile -filesToExec = [ - samplesFile, - aliasesFile, - variablesFile, - cutsFile, - plotFile, - nuisancesFile, - structureFile, -] - -# List of variables to keep in the compiled configuration folder -varsToKeep = [ - "batchVars", - "outputFolder", - "batchFolder", - "configsFolder", - "outputFile", - "runnerFile", - "tag", - "samples", - "aliases", - "variables", - ("cuts", {"cuts": "cuts", "preselections": "preselections"}), - ("plot", {"plot": "plot", "groupPlot": "groupPlot", "legend": "legend"}), - "nuisances", - "structure", - "lumi", -] - -# List of variables to keep in the batch submission script (script.py) -batchVars = varsToKeep[varsToKeep.index("samples") :] - -varsToKeep += ['plotPath'] diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_CR/cuts.py b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_CR/cuts.py deleted file mode 100644 index 7f25bb75..00000000 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_CR/cuts.py +++ /dev/null @@ -1,65 +0,0 @@ -cuts = {} - -# cuts -preselections = 'mll>12 \ - && Lepton_pt[0]>25 \ - && Lepton_pt[1]>10 \ - && (abs(Lepton_pdgId[1])==13 || Lepton_pt[1]>13) \ - && abs(Lepton_eta[0])<2.5 && abs(Lepton_eta[1])<2.5 \ - && bVeto \ - && PuppiMET_pt > 30 \ - && !hole_veto \ - ' - -# Splitting in sub-leading lepton pT -#################################### - -## SR 2jets - -# mu-e -cuts['hww2l2v_13TeV_WH_SS_em_2j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && mjj < 100 && mlljj20_whss > 50.', - 'categories' : { - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT >= 20 GeV) - 'SS_CR_plus_pt2ge20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2ge20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT < 20 GeV) - 'SS_CR_plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - } -} - -# e-e -cuts['hww2l2v_13TeV_WH_SS_ee_2j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*11) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && mjj < 100 && abs(mll-91.2)>15 && mlljj20_whss > 50.', - 'categories' : { - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT >= 20 GeV) - 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT < 20 GeV) - 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - } -} - -## DY->ee CR - 2 same-sign electrons IN the Z peak. To check the charge-flip probability method to estimate DY in the signal region - -# DY CR 2jets -cuts['hww2l2v_13TeV_WH_SS_DYee_2j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*11) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && mjj < 100 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0 && abs(mll-91.2)<15 && mlljj20_whss > 50.', - 'categories' : { - # Sub-leading lepton pT >= 20 GeV - 'plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20', - 'minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20', - 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20', - } -} - -# mlljj20_whss: -# inv_mass of: (jet1, jet2, 2*closest_lep_to_jets) -# jets are considered with pT > 20 GeV - -# Definitions of WH3l variables: -# https://github.com/latinos/LatinoAnalysis/blob/76e7c4b93aa5f056c92440d4e8d24e7de749c8fe/NanoGardener/python/modules/l3KinProducer.py diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_CR/nuisances.py b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_CR/nuisances.py deleted file mode 100644 index c9f4b07c..00000000 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_CR/nuisances.py +++ /dev/null @@ -1,704 +0,0 @@ -import sys - -# Enable reading YR for Higgs XS and uncertainties -sys.path.append('../../../macros/') -import HiggsXSection -HiggsXS = HiggsXSection.HiggsXSection() - -nuisances = {} - -mcProduction = 'Summer20UL18_106x_nAODv9_Full2018v9' -dataReco = 'Run2018_UL2018_nAODv9_Full2018v9' -mcSteps = 'MCl1loose2018v9__MCCorr2018v9NoJERInHorn__l2tightOR2018v9' -fakeSteps = 'DATAl1loose2018v9__l2loose__fakeW' -dataSteps = 'DATAl1loose2018v9__l2loose__l2tightOR2018v9' - -treeBaseDir = '/eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano' -limitFiles = -1 - -mc = [skey for skey in samples if skey not in ('Fake', 'DATA','ChargeFlip')] - -redirector = "" - -useXROOTD = False - -def makeMCDirectory(var=''): - if var== '': - print(os.path.join(treeBaseDir, mcProduction, mcSteps)) - return os.path.join(treeBaseDir, mcProduction, mcSteps) - else: - print(os.path.join(treeBaseDir, mcProduction, mcSteps + '__' + var)) - return os.path.join(treeBaseDir, mcProduction, mcSteps + '__' + var) - -# def makeMCDirectory(var=''): -# _treeBaseDir = treeBaseDir + '' -# if useXROOTD: -# _treeBaseDir = redirector + treeBaseDir -# if var== '': -# return '/'.join([_treeBaseDir, mcProduction, mcSteps]) -# else: -# return '/'.join([_treeBaseDir, mcProduction, mcSteps + '__' + var]) - -mcDirectory = makeMCDirectory() -fakeDirectory = os.path.join(treeBaseDir, dataReco, fakeSteps) -dataDirectory = os.path.join(treeBaseDir, dataReco, dataSteps) - -################################ EXPERIMENTAL UNCERTAINTIES ################################# - -#### Luminosity - -# https://twiki.cern.ch/twiki/bin/view/CMS/LumiRecommendationsRun2#LumiComb -# Uncorrelated 2016 1.0 -# Uncorrelated 2017 2.0 -# Uncorrelated 2018 1.5 -# Correlated 2016, 2017, 2018 0.6, 0.9, 2.0 -# Correlated 2017, 2018 0.6, 0.2 - -nuisances['lumi_Uncorrelated'] = { - 'name' : 'lumi_13TeV_2018', - 'type' : 'lnN', - 'samples' : dict((skey, '1.015') for skey in mc if skey not in ['WZ']) -} - -nuisances['lumi_Correlated_Run2'] = { - 'name' : 'lumi_13TeV_correlated', - 'type' : 'lnN', - 'samples' : dict((skey, '1.020') for skey in mc if skey not in ['WZ']) -} - -nuisances['lumi_Correlated_2017_2018'] = { - 'name' : 'lumi_13TeV_1718', - 'type' : 'lnN', - 'samples' : dict((skey, '1.002') for skey in mc if skey not in ['WZ']) -} - - -#### FAKES -fake_syst_endcap = ['1.0*(abs(Lepton_eta[1])<=1.4) + 1.3*(abs(Lepton_eta[1])>1.4)', - '1.0*(abs(Lepton_eta[1])<=1.4) + 1.0/1.3*(abs(Lepton_eta[1])>1.4)'] - -fake_syst_barrel = [' 1.3*(abs(Lepton_eta[1])<=1.4) + 1.0*(abs(Lepton_eta[1])>1.4)', - '1.0/1.3*(abs(Lepton_eta[1])<=1.4) + 1.0*(abs(Lepton_eta[1])>1.4)'] - -nuisances['fake_syst_mm_barrel'] = { - 'name' : 'CMS_WH_hww_fake_syst_mm_barrel', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_mm' : fake_syst_barrel, - }, - 'cuts' : [cut for cut in cuts if ('_mm_' in cut)] -} -nuisances['fake_syst_mm_endcap'] = { - 'name' : 'CMS_WH_hww_fake_syst_mm_endcap', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_mm' : fake_syst_endcap, - }, - 'cuts' : [cut for cut in cuts if ('_mm_' in cut)] -} - -nuisances['fake_syst_em_barrel'] = { - 'name' : 'CMS_WH_hww_fake_syst_em_barrel', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_em' : fake_syst_barrel, - }, - 'cuts' : [cut for cut in cuts if ('_em_' in cut)] -} -nuisances['fake_syst_em_endcap'] = { - 'name' : 'CMS_WH_hww_fake_syst_em_endcap', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_em' : fake_syst_endcap, - }, - 'cuts' : [cut for cut in cuts if ('_em_' in cut)] -} - -nuisances['fake_syst_ee_barrel'] = { - 'name' : 'CMS_WH_hww_fake_syst_ee_barrel', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_ee' : fake_syst_barrel, - }, - 'cuts' : [cut for cut in cuts if ('_ee_' in cut)] -} -nuisances['fake_syst_ee_endcap'] = { - 'name' : 'CMS_WH_hww_fake_syst_ee_endcap', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_ee' : fake_syst_endcap, - }, - 'cuts' : [cut for cut in cuts if ('_ee_' in cut)] -} - -nuisances['fake_ele'] = { - 'name' : 'CMS_WH_hww_fake_e_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_ee' : ['fakeWEleUp', 'fakeWEleDown'], - 'Fake_em' : ['fakeWEleUp', 'fakeWEleDown'], - } -} -nuisances['fake_ele_stat'] = { - 'name' : 'CMS_WH_hww_fake_stat_e_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_ee' : ['fakeWStatEleUp', 'fakeWStatEleDown'], - 'Fake_em' : ['fakeWStatEleUp', 'fakeWStatEleDown'], - } -} -nuisances['fake_mu'] = { - 'name' : 'CMS_WH_hww_fake_m_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_mm' : ['fakeWMuUp', 'fakeWMuDown'], - 'Fake_em' : ['fakeWMuUp', 'fakeWMuDown'], - } -} -nuisances['fake_mu_stat'] = { - 'name' : 'CMS_WH_hww_fake_stat_m_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_mm' : ['fakeWStatMuUp', 'fakeWStatMuDown'], - 'Fake_em' : ['fakeWStatMuUp', 'fakeWStatMuDown'], - } -} - -###### B-tagger - -for shift in ['lf', 'hf', 'hfstats1', 'hfstats2', 'lfstats1', 'lfstats2', 'cferr1', 'cferr2']: - btag_syst = ['(btagSF%sup)/(btagSF)' % shift, '(btagSF%sdown)/(btagSF)' % shift] - - name = 'CMS_btag_%s' % shift - if 'stats' in shift: - name += '_2018' - - nuisances['btag_shape_%s' % shift] = { - 'name' : name, - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, btag_syst) for skey in mc), - } - -##### Trigger Scale Factors - -trig_syst = ['TriggerSFWeight_2l_u/TriggerSFWeight_2l', 'TriggerSFWeight_2l_d/TriggerSFWeight_2l'] - -nuisances['trigg'] = { - 'name' : 'CMS_eff_hwwtrigger_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, trig_syst) for skey in mc) -} - -##### Electron Efficiency and energy scale - -nuisances['eff_e'] = { - 'name' : 'CMS_eff_e_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['SFweightEleUp', 'SFweightEleDown']) for skey in mc) -} - -nuisances['eff_ttHMVA_e'] = { - 'name' : 'CMS_eff_ttHMVA_e_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['LepWPttHMVASFEleUp', 'LepWPttHMVASFEleDown']) for skey in mc) -} - -nuisances['electronpt'] = { - 'name' : 'CMS_scale_e_2018', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'ElepTup', - 'mapDown' : 'ElepTdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('ElepTup_suffix'), - 'folderDown' : makeMCDirectory('ElepTdo_suffix'), - 'AsLnN' : '0' -} - -##### Muon Efficiency and energy scale - -nuisances['eff_m'] = { - 'name' : 'CMS_eff_m_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['SFweightMuUp', 'SFweightMuDown']) for skey in mc) -} - -nuisances['eff_ttHMVA_m'] = { - 'name' : 'CMS_eff_ttHMVA_m_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['LepWPttHMVASFMuUp', 'LepWPttHMVASFMuDown']) for skey in mc) -} - -nuisances['muonpt'] = { - 'name' : 'CMS_scale_m_2018', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'MupTup', - 'mapDown' : 'MupTdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('MupTup_suffix'), - 'folderDown' : makeMCDirectory('MupTdo_suffix'), - 'AsLnN' : '0' -} - -##### Jet energy scale -jes_systs = ['JESAbsolute','JESAbsolute_2018','JESBBEC1','JESBBEC1_2018','JESEC2','JESEC2_2018','JESFlavorQCD','JESHF','JESHF_2018','JESRelativeBal','JESRelativeSample_2018'] - -for js in jes_systs: - - nuisances[js] = { - 'name' : 'CMS_scale_' + js.replace("JES","j_"), - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : js + 'up', - 'mapDown' : js + 'do', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('RDF__JESup_suffix'), - 'folderDown': makeMCDirectory('RDF__JESdo_suffix'), - 'reweight' : ['btagSF'+js.replace('JES','jes')+'up/btagSF','btagSF'+js.replace('JES','jes')+'down/btagSF'], - 'AsLnN' : '0' - } - -##### Jet energy resolution -nuisances['JER'] = { - 'name' : 'CMS_res_j_2018', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'JERup', - 'mapDown' : 'JERdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('JERup_suffix'), - 'folderDown': makeMCDirectory('JERdo_suffix'), - 'AsLnN' : '0' -} - -##### MET unclustered energy - -# metUp.PuppiMET_pt_METup -nuisances['met'] = { - 'name' : 'CMS_scale_met_2018', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'METup', - 'mapDown' : 'METdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('METup_suffix'), - 'folderDown': makeMCDirectory('METdo_suffix'), - 'AsLnN' : '0' -} - - -##### Pileup - -# puWeight_UL2018 -nuisances['PU'] = { - 'name' : 'CMS_pileup_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'DY' : ['0.998687*(puWeightUp/puWeight)', '1.001976*(puWeightDown/puWeight)'], - 'top' : ['1.002595*(puWeightUp/puWeight)', '0.997470*(puWeightDown/puWeight)'], - 'WW' : ['1.004449*(puWeightUp/puWeight)', '0.995660*(puWeightDown/puWeight)'], - 'WWewk' : ['1.002122*(puWeightUp/puWeight)', '0.998087*(puWeightDown/puWeight)'], - 'ggWW' : ['1.004870*(puWeightUp/puWeight)', '0.995315*(puWeightDown/puWeight)'], - # 'Vg' : ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'Wg' : ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'Zg' : ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'WgS' : ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'ZgS' : ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - 'WZ' : ['0.999330*(puWeightUp/puWeight)', '1.000992*(puWeightDown/puWeight)'], - 'ZZ' : ['0.999469*(puWeightUp/puWeight)', '1.000751*(puWeightDown/puWeight)'], - 'VVV' : ['1.003485*(puWeightUp/puWeight)', '0.997561*(puWeightDown/puWeight)'], - 'ggH_hww' : ['1.003677*(puWeightUp/puWeight)', '0.995996*(puWeightDown/puWeight)'], - 'qqH_hww' : ['1.003747*(puWeightUp/puWeight)', '0.995878*(puWeightDown/puWeight)'], - # 'ZH_hww' : ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'ggZH_hww': ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'WH_hww_plus': ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'WH_hww_minus': ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'ttH_hww' : ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'ggH_htt' : ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'qqH_htt' : ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'ZH_htt' : ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'WH_htt_plus' : ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'WH_htt_minus': ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - }, - 'AsLnN' : '0', -} - -### PU ID SF uncertainty - -# puid_syst = ['Jet_PUIDSF_loose_up/Jet_PUIDSF_loose', 'Jet_PUIDSF_loose_down/Jet_PUIDSF_loose'] -puid_syst = ['Jet_PUIDSF_up/Jet_PUIDSF', 'Jet_PUIDSF_down/Jet_PUIDSF'] - -nuisances['jetPUID'] = { - 'name' : 'CMS_eff_j_PUJET_id_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, puid_syst) for skey in mc) -} - -### PS and UE - -nuisances['PS_ISR'] = { - 'name' : 'PS_WH_hww_ISR', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['PSWeight[2]', 'PSWeight[0]']) for skey in mc), - 'AsLnN' : '0', -} - -nuisances['PS_FSR'] = { - 'name' : 'PS_WH_hww_FSR', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['PSWeight[3]', 'PSWeight[1]']) for skey in mc), - 'AsLnN' : '0', -} - -nuisances['UE_CP5'] = { - 'name' : 'CMS_WH_hww_UE', - 'skipCMS' : 1, - 'type' : 'lnN', - 'samples' : dict((skey, '1.015') for skey in mc), -} - -# Charge flip efficiency -nuisances['chargeFlipEff'] = { - 'name' : 'CMS_whss_chargeFlipEff_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['1-ttHMVA_eff_err_flip_2l', '1+ttHMVA_eff_err_flip_2l']) for skey in ['DY','ChargeFlip']), - 'cuts' : [cut for cut in cuts if ('_ee_' in cut or '_em_' in cut)] -} - -# Charge flip: uncertainty on opposite sign processes not affected by charge-flip -nuisances['chargeFlip_syst'] = { - 'name' : 'CMS_ChargeFlip_syst', - 'type' : 'lnN', - 'samples' : { - 'ChargeFlip' : '1.10', - } -} - - -# ####### Generic "cross section uncertainties" - -# apply_on = { -# 'top': [ -# 'isSingleTop * 1.0816 + isTTbar', -# 'isSingleTop * 0.9184 + isTTbar' -# ] -# } - -# nuisances['singleTopToTTbar'] = { -# 'name' : 'singleTopToTTbar', -# 'skipCMS' : 1, -# 'kind' : 'weight', -# 'type' : 'shape', -# 'samples' : apply_on -# } - -## Top pT reweighting uncertainty - -nuisances['TopPtRew'] = { - 'name' : 'CMS_top_pT_reweighting', # Theory uncertainty - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'top': ["1.", "1./Top_pTrw"] - }, - 'symmetrize' : True -} - -nuisances['WgStar'] = { - 'name' : 'CMS_hww_WgStarScale', - 'type' : 'lnN', - 'samples' : { - 'WgS' : '1.25' - } -} - -###### pdf uncertainties - -valuesggh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggH', '125.09','pdf','sm') -valuesggzh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggZH','125.09','pdf','sm') -valuesbbh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','bbH', '125.09','pdf','sm') - -nuisances['pdf_Higgs_gg'] = { - 'name' : 'pdf_Higgs_gg', - 'samples' : { - 'ggH_hww' : valuesggh, - 'ggH_htt' : valuesggh, - 'ggZH_hww' : valuesggzh, - 'bbH_hww' : valuesbbh, - }, - 'type' : 'lnN', -} - -# For ttH, we need to use 1./values -values = str(1./float(HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ttH','125.09','pdf','sm'))) - -nuisances['pdf_Higgs_ttH'] = { - 'name' : 'pdf_Higgs_ttH', - 'samples' : { - 'ttH_hww': values, - }, - 'type' : 'lnN', -} - -valuesqqh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','vbfH','125.09','pdf','sm') -valueswh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','WH', '125.09','pdf','sm') -valueszh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ZH', '125.09','pdf','sm') - -nuisances['pdf_Higgs_qqbar'] = { - 'name' : 'pdf_Higgs_qqbar', - 'type' : 'lnN', - 'samples': { - 'qqH_hww' : valuesqqh, - 'qqH_htt' : valuesqqh, - 'WH_hww_plus' : valueswh, - 'WH_hww_minus': valueswh, - 'WH_htt_plus' : valueswh, - 'WH_htt_minus': valueswh, - 'ZH_hww' : valueszh, - 'ZH_htt' : valueszh - }, -} - -nuisances['pdf_qqbar'] = { - 'name' : 'pdf_qqbar', - 'type' : 'lnN', - 'samples' : { - 'Wg' : '1.04', - 'Zg' : '1.04', - 'ZZ' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 - 'WZ' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 - 'WgS' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 - 'ZgS' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 - }, -} - -nuisances['pdf_gg'] = { - 'name': 'pdf_gg', - 'type': 'lnN', - 'samples': { - 'ggWW' : '1.05', - }, -} - -nuisances['pdf_Higgs_gg_ACCEPT'] = { - 'name' : 'pdf_WH_hww_Higgs_gg_ACCEPT', - 'samples' : { - 'ggH_hww' : '1.006', - 'ggH_htt' : '1.006', - 'ggZH_hww' : '1.006', - 'bbH_hww' : '1.006' - }, - 'type' : 'lnN', -} -nuisances['pdf_gg_ACCEPT'] = { - 'name' : 'pdf_WH_hww_gg_ACCEPT', - 'samples' : { - 'ggWW' : '1.006', - }, - 'type' : 'lnN', -} - -nuisances['pdf_Higgs_qqbar_ACCEPT'] = { - 'name' : 'pdf_WH_hww_Higgs_qqbar_ACCEPT', - 'type' : 'lnN', - 'samples' : { - 'qqH_hww' : '1.002', - 'qqH_htt' : '1.002', - 'WH_hww_plus' : '1.003', - 'WH_hww_minus': '1.003', - 'WH_htt_plus' : '1.003', - 'WH_htt_minus': '1.003', - 'ZH_hww' : '1.002', - 'ZH_htt' : '1.002', - }, -} - -nuisances['pdf_qqbar_ACCEPT'] = { - 'name' : 'pdf_WH_hww_qqbar_ACCEPT', - 'type' : 'lnN', - 'samples' : { - 'ZZ' : '1.001', - 'WZ' : '1.001', - }, -} - -##### Renormalization & factorization scales - -## Shape nuisance due to QCD scale variations for DY -## LHE scale variation weights (w_var / w_nominal) - -## This should work for samples with either 8 or 9 LHE scale weights (Length$(LHEScaleWeight) == 8 or 9) -variations = ['Alt(LHEScaleWeight,0,1)', 'Alt(LHEScaleWeight,1,1)', 'Alt(LHEScaleWeight,3,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-4,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-2,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-1,1)'] - -# nuisances['QCDscale_V'] = { -# 'name' : 'QCDscale_V', -# 'skipCMS' : 1, -# 'kind' : 'weight_envelope', -# 'type' : 'shape', -# 'samples' : { -# 'DY' : variations -# }, -# 'AsLnN' : '0' -# } - -nuisances['QCDscale_VV'] = { - 'name' : 'QCDscale_VV', - 'kind' : 'weight_envelope', - 'type' : 'shape', - 'samples' : { - 'WW' : variations, - 'Zg' : variations, - 'Wg' : variations, - 'ZZ' : variations, - 'WZ' : variations, - 'WgS' : variations, - 'ZgS' : variations - } -} - -nuisances['QCDscale_ggVV'] = { - 'name' : 'QCDscale_ggVV', - 'type' : 'lnN', - 'samples' : { - 'ggWW' : '1.15', - }, -} - -#### QCD scale uncertainties for Higgs signals other than ggH - -values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','vbfH','125.09','scale','sm') - -nuisances['QCDscale_qqH'] = { - 'name' : 'QCDscale_qqH', - 'samples' : { - 'qqH_hww' : values, - 'qqH_htt' : values, - }, - 'type' : 'lnN' -} - -valueswh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','WH','125.09','scale','sm') -valueszh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ZH','125.09','scale','sm') - -nuisances['QCDscale_VH'] = { - 'name' : 'QCDscale_VH', - 'samples' : { - 'WH_hww_plus' : valueswh, - 'WH_hww_minus' : valueswh, - 'WH_htt_plus' : valueswh, - 'WH_htt_minus' : valueswh, - 'ZH_hww' : valueszh, - 'ZH_htt' : valueszh, - }, - 'type' : 'lnN', -} - -values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggZH','125.09','scale','sm') - -nuisances['QCDscale_ggZH'] = { - 'name' : 'QCDscale_ggZH', - 'samples' : { - 'ggZH_hww' : values, - }, - 'type' : 'lnN', -} - -values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ttH','125.09','scale','sm') - -nuisances['QCDscale_ttH'] = { - 'name' : 'QCDscale_ttH', - 'samples' : { - 'ttH_hww' : values, - }, - 'type' : 'lnN', -} - -nuisances['QCDscale_WWewk'] = { - 'name' : 'QCDscale_WWewk', - 'samples' : { - 'WWewk' : '1.11', - }, - 'type' : 'lnN' -} - -nuisances['QCDscale_qqbar_ACCEPT'] = { - 'name' : 'QCDscale_qqbar_ACCEPT', - 'type' : 'lnN', - 'samples' : { - 'qqH_hww' : '1.003', - 'qqH_htt' : '1.003', - 'WH_hww_plus' : '1.010', - 'WH_hww_minus' : '1.010', - 'WH_htt_plus' : '1.010', - 'WH_htt_minus' : '1.010', - 'ZH_hww' : '1.015', - 'ZH_htt' : '1.015', - } -} - -# FIXME: these come from HIG-16-042, maybe should be recomputed? -nuisances['QCDscale_gg_ACCEPT'] = { - 'name' : 'QCDscale_gg_ACCEPT', - 'samples' : { - 'ggH_htt' : '1.012', - 'ggH_hww' : '1.012', - 'ggZH_hww' : '1.012', - 'ggWW' : '1.012', - }, - 'type' : 'lnN', -} - -# WZ normalization from control region - -nuisances['WZ2jnorm'] = { - 'name' : 'CMS_hww_WZ3l2jnorm', - 'samples' : { - 'WZ' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [cut for cut in cuts if '2j' in cut], -} - -nuisances['WZ1jnorm'] = { - 'name' : 'CMS_hww_WZ3l1jnorm', - 'samples' : { - 'WZ' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [cut for cut in cuts if '1j' in cut], -} - -## Use the following if you want to apply the automatic combine MC stat nuisances. -nuisances['stat'] = { - 'type' : 'auto', - 'maxPoiss' : '10', - 'includeSignal' : '0', - 'samples' : {} -} -# nuisance ['maxPoiss'] = Number of threshold events for Poisson modelling -# nuisance ['includeSignal'] = Include MC stat nuisances on signal processes (1=True, 0=False) - -for n in nuisances.values(): - n['skipCMS'] = 1 diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_CR/plot.py b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_CR/plot.py deleted file mode 100644 index 5e914573..00000000 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_CR/plot.py +++ /dev/null @@ -1,299 +0,0 @@ -# plot configuration - -# Groups of samples to improve the plots. -# If not defined, normal plots is used -# - -# BTag normalization factors -# Cut = hww2l2v_13TeV_samesign_2j -scale_histo_ttH_hww = 1.71005342426/1.09314151072 # 1.5643477148 -scale_histo_WW = 2.25800060639/1.91041058041 # 1.18194519521 -scale_histo_DY = 7.90909155209/10.3492826587 # 0.764216401555 -scale_histo_WZ = 49.3067818241/43.0657206854 # 1.14491946354 -scale_histo_Wg = 41.0307152872/32.8185201828 # 1.25023051188 -scale_histo_Zg = 4.88184592384/4.15039184398 # 1.17623735477 -scale_histo_Vg = (41.0307152872+4.88184592384)/(32.8185201828+4.15039184398) -scale_histo_WgS = 19.5784400987/16.5378866827 # 1.18385380637 -scale_histo_ZgS = 2.74664238533/2.21545099158 # 1.23976670925 -scale_histo_VgS = (19.5784400987+2.74664238533)/(16.5378866827+2.21545099158) -scale_histo_ZH_htt = 0.116319166763/0.091351528461 # 1.27331385388 -scale_histo_WH_htt_plus = 0.4131832122/0.323965810005 # 1.27539141304 -scale_histo_ggZH_hww = 0.0104452201343/0.00850780582798 # 1.22772197033 -scale_histo_qqH_hww = 0.00875809211317/0.00618184320386 # 1.41674446025 -scale_histo_ZZ = 1.19318174322/0.95378270042 # 1.25099956488 -scale_histo_ggH_hww = 0.152649430692/0.135132712642 # 1.1296260373 -scale_histo_WH_htt_minus = 0.263520609345/0.21247941852 # 1.24021710517 -scale_histo_VVV = 3.62299846954/3.27783418705 # 1.10530254515 -scale_histo_WH_hww_plus = 1.99024457637/1.64510255389 # 1.20979970013 -scale_histo_ggH_htt = 0.0137239155152/1 # 0.0137239155152 -scale_histo_ggWW = 0.138240992431/0.130499421048 # 1.05932264926 -scale_histo_top = 61.5535890766/44.34883106 # 1.38794163466 -scale_histo_WWewk = 0.0247224163572/0.0239052406614 # 1.03418395604 -scale_histo_ZH_hww = 0.343842150558/0.26623480593 # 1.29149961951 -scale_histo_WH_hww_minus = 1.24042862398/1.03231388643 # 1.20160024997 -scale_histo_qqH_htt = 0.00478130781574/0.00431274438945 # 1.10864623172 - -groupPlot = {} - -groupPlot['Fake'] = { - 'nameHR' : 'Non-prompt', - 'isSignal' : 0, - 'color' : 921, # kGray + 1 - 'samples' : ['Fake_mm','Fake_em','Fake_ee'] -} - -groupPlot['ChargeFlip'] = { - 'nameHR' : "charge_flip", - 'isSignal' : 0, - 'color' : 418, # kGreen+2 - 'samples' : ['ChargeFlip'] -} - -groupPlot['VVV'] = { - 'nameHR' : 'VVV', - 'isSignal' : 0, - 'color' : 857, # kAzure -3 - 'samples' : ['VVV'] -} - -groupPlot['ZZ'] = { - 'nameHR' : "ZZ", - 'isSignal' : 0, - 'color' : 617, # kViolet + 1 - 'samples' : ['ZZ'] -} - -groupPlot['WZ'] = { - 'nameHR' : "WZ", - 'isSignal' : 0, - 'color' : 619, # kViolet + 1 - 'samples' : ['WZ'] -} - -groupPlot['Vg'] = { - 'nameHR' : "V#gamma", - 'isSignal' : 0, - 'color' : 810, # kOrange + 10 - 'samples' : ['Vg'] -} - -groupPlot['VgS'] = { - 'nameHR' : "V#gamma*", - 'isSignal' : 0, - 'color' : 412, # kGreen - 9 - 'samples' : ['VgS'] -} - -groupPlot['Higgs'] = { - 'nameHR' : 'Higgs', - 'isSignal' : 0, - 'color' : 632, # kRed - 'samples' : ['ggH_hww','qqH_hww','ZH_hww','ggZH_hww','ttH_hww','ggH_htt','qqH_htt','ZH_htt'] -} - -groupPlot['WH_minus'] = { - 'nameHR' : 'W^{-} H (x 10)', - 'isSignal' : 2, - 'color' : 600, # kBlue - 'samples' : ['WH_hww_minus','WH_htt_minus'] -} - -groupPlot['WH_plus'] = { - 'nameHR' : 'W^{+} H (x 10)', - 'isSignal' : 2, - 'color' : 632, # kRed - 'samples' : ['WH_hww_plus', 'WH_htt_plus'] -} - - -# keys here must match keys in samples.py - -plot = {} - -plot['ChargeFlip'] = { - 'color' : 418, # kGreen+2 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 0.5, -} - -plot['Vg'] = { - 'color' : 859, # kAzure -1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_Vg, -} - -plot['VgS'] = { - 'color' : 617, # kViolet + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_VgS, -} - -plot['WZ'] = { - 'color' : 858, # kAzure -2 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_WZ * 1.138, # NLO -> NNLO k-factor! -} - -plot['ZZ'] = { - 'color' : 858, # kAzure -2 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ZZ, -} - -plot['VVV'] = { - 'color' : 857, # kAzure -3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_VVV, -} - -########### -# Signals # -########### - -# HWW - -plot['ggH_hww'] = { - 'color' : 632, # kRed - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggH_hww, -} - -plot['qqH_hww'] = { - 'color' : 632+1, # kRed+1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_qqH_hww, -} - -plot['ZH_hww'] = { - 'color' : 632+3, # kRed+3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ZH_hww, -} - -plot['ggZH_hww'] = { - 'color' : 632+4, # kRed+4 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggZH_hww, -} - -plot['WH_hww_plus'] = { - 'color' : 632+2, # kRed+2 - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_hww_plus, -} - -plot['WH_hww_minus'] = { - 'color' : 600, # kBlue - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_hww_minus, -} - -plot['ttH_hww'] = { - 'color' : 632+3, # kRed+3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ttH_hww, -} - - -# Htautau - -plot['ggH_htt'] = { - 'color' : 632, # kRed - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggH_htt, -} - -plot['qqH_htt'] = { - 'color' : 632+1, # kRed+1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_qqH_htt, -} - -plot['ZH_htt'] = { - 'color' : 632+3, # kRed+3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ZH_htt, -} - -plot['WH_htt_plus'] = { - 'color' : 632+2, # kRed+2 - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_htt_plus, -} - -plot['WH_htt_minus'] = { - 'color' : 632+2, # kRed+2 - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_htt_minus, -} - - -######## -# Fake # -######## - -plot['Fake_em'] = { - 'color' : 921, # kGray + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['Fake_ee'] = { - 'color' : 921, # kGray + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['Fake_mm'] = { - 'color' : 921, # kGray + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -# plot['Fake'] = { -# 'color' : 921, # kGray + 1 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : 1.0 -# } - -######## -# Data # -######## - -plot['DATA'] = { - 'nameHR' : 'Data', - 'color' : 1 , - 'isSignal' : 0, - 'isData' : 1, - 'isBlind' : 0, -} - - -# Define legend - -legend = {} - -legend['lumi'] = 'L = 59.8 fb^{-1}' -legend['sqrt'] = '#sqrt{s} = 13 TeV' diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_CR/samples.py b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_CR/samples.py deleted file mode 100644 index 3bcb652f..00000000 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_CR/samples.py +++ /dev/null @@ -1,380 +0,0 @@ -import os,glob - -################################################ -################# SKIMS ######################## -################################################ - -# MC: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Summer20UL17_106x_nAODv9_Full2017v9/MCl1loose2017v9__MCCorr2017v9NoJERInHorn__l2tightOR2017v9/ -# DATA: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Run2017_UL2017_nAODv9_Full2017v9/DATAl1loose2017v9__l2loose__l2tightOR2017v9/ -# FAKE: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Run2017_UL2017_nAODv9_Full2017v9/DATAl1loose2017v9__l2loose__fakeW/ - -mcProduction = 'Summer20UL17_106x_nAODv9_Full2017v9' -dataReco = 'Run2017_UL2017_nAODv9_Full2017v9' -mcSteps = 'MCl1loose2017v9__MCCorr2017v9NoJERInHorn__l2tightOR2017v9{var}' -fakeSteps = 'DATAl1loose2017v9__l2loose__fakeW' -dataSteps = 'DATAl1loose2017v9__l2loose__l2tightOR2017v9' - -############################################## -###### Tree base directory for the site ###### -############################################## - -treeBaseDir = '/eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano' -limitFiles = -1 - -def makeMCDirectory(var=''): - return os.path.join(treeBaseDir, mcProduction, mcSteps.format(var='')) - -mcDirectory = makeMCDirectory() -fakeDirectory = os.path.join(treeBaseDir, dataReco, fakeSteps) -dataDirectory = os.path.join(treeBaseDir, dataReco, dataSteps) - -samples = {} - -from mkShapesRDF.lib.search_files import SearchFiles -s = SearchFiles() - -useXROOTD = True -redirector = 'root://eoscms.cern.ch/' - -def nanoGetSampleFiles(path, name): - _files = s.searchFiles(path, name, redirector=redirector) - if limitFiles != -1 and len(_files) > limitFiles: - return [(name, _files[:limitFiles])] - else: - return [(name, _files)] - -def CombineBaseW(samples, proc, samplelist): - _filtFiles = list(filter(lambda k: k[0] in samplelist, samples[proc]['name'])) - _files = list(map(lambda k: k[1], _filtFiles)) - _l = list(map(lambda k: len(k), _files)) - leastFiles = _files[_l.index(min(_l))] - dfSmall = ROOT.RDataFrame('Runs', leastFiles) - s = dfSmall.Sum('genEventSumw').GetValue() - f = ROOT.TFile.Open(leastFiles[0]) - t = f.Get('Events') - t.GetEntry(1) - xs = t.baseW * s - - __files = [] - for f in _files: - __files += f - df = ROOT.RDataFrame('Runs', __files) - s = df.Sum('genEventSumw').GetValue() - newbaseW = str(xs / s) - weight = newbaseW + '/baseW' - - for iSample in samplelist: - addSampleWeight(samples, proc, iSample, weight) - -def addSampleWeight(samples, sampleName, sampleNameType, weight): - obj = list(filter(lambda k: k[0] == sampleNameType, samples[sampleName]['name']))[0] - samples[sampleName]['name'] = list(filter(lambda k: k[0] != sampleNameType, samples[sampleName]['name'])) - if len(obj) > 2: - samples[sampleName]['name'].append((obj[0], obj[1], obj[2] + '*(' + weight + ')')) - else: - samples[sampleName]['name'].append((obj[0], obj[1], '(' + weight + ')' )) - - -################################################ -############ DATA DECLARATION ################## -################################################ - -DataRun = [ - ['B','Run2017B-UL2017-v1'], - ['C','Run2017C-UL2017-v1'], - ['D','Run2017D-UL2017-v1'], - ['E','Run2017E-UL2017-v1'], - ['F','Run2017F-UL2017-v1'], -] - -DataSets = ['MuonEG','SingleMuon','SingleElectron','DoubleMuon', 'DoubleEG'] - -DataTrig = { - 'MuonEG' : ' Trigger_ElMu' , - 'SingleMuon' : '!Trigger_ElMu && Trigger_sngMu' , - 'SingleElectron' : '!Trigger_ElMu && !Trigger_sngMu && Trigger_sngEl', - 'DoubleMuon' : '!Trigger_ElMu && !Trigger_sngMu && !Trigger_sngEl && Trigger_dblMu', - 'DoubleEG' : '!Trigger_ElMu && !Trigger_sngMu && !Trigger_sngEl && !Trigger_dblMu && Trigger_dblEl' -} - -######################################### -############ MC COMMON ################## -######################################### - -# SFweight does not include btag weights -mcCommonWeightNoMatch = 'XSWeight*SFweight*METFilter_MC' -mcCommonWeight = 'XSWeight*SFweight*METFilter_MC*PromptGenLepMatch2l' - -########################################### -############# BACKGROUNDS ############### -########################################### - -# ###### DY ####### -# files = nanoGetSampleFiles(mcDirectory, 'DYJetsToLL_M-10to50_NLO') + \ -# nanoGetSampleFiles(mcDirectory, 'DYJetsToLL_M-50') - -# samples['DY'] = { -# 'name': files, -# 'weight': mcCommonWeight + '*(Lepton_pdgId[0]*Lepton_pdgId[1] == -11*13)*( !(Sum(PhotonGen_isPrompt==1 && PhotonGen_pt>15 && abs(PhotonGen_eta)<2.6) > 0))', -# 'FilesPerJob': 8, -# } - -# ##### Top ####### -# files = nanoGetSampleFiles(mcDirectory, 'TTTo2L2Nu') + \ -# nanoGetSampleFiles(mcDirectory, 'ST_s-channel') + \ -# nanoGetSampleFiles(mcDirectory, 'ST_t-channel_top') + \ -# nanoGetSampleFiles(mcDirectory, 'ST_t-channel_antitop') + \ -# nanoGetSampleFiles(mcDirectory, 'ST_tW_antitop') + \ -# nanoGetSampleFiles(mcDirectory, 'ST_tW_top') - -# samples['top'] = { -# 'name': files, -# 'weight': mcCommonWeight, # +'*ttHMVA_SF_flip_2l', -# 'FilesPerJob': 8, -# } -# addSampleWeight(samples,'top','TTTo2L2Nu','Top_pTrw') - -# ###### WW ######## -# samples['WW'] = { -# 'name': nanoGetSampleFiles(mcDirectory, 'WWTo2L2Nu'), -# 'weight': mcCommonWeight + '*nllW*ewknloW', -# 'FilesPerJob': 4 -# } - -# samples['WWewk'] = { -# 'name': nanoGetSampleFiles(mcDirectory, 'WpWmJJ_EWK_noTop'), -# 'weight': mcCommonWeight + '*(Sum(abs(GenPart_pdgId)==6 || GenPart_pdgId==25)==0)', # Filter tops and Higgs, -# 'FilesPerJob': 8 -# } - -# files = nanoGetSampleFiles(mcDirectory, 'GluGluToWWToENEN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToENMN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToENTN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToMNEN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToMNMN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToMNTN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToTNEN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToTNMN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToTNTN') - -# samples['ggWW'] = { -# 'name': files, -# 'weight': mcCommonWeight + '*1.53/1.4', -# 'FilesPerJob': 8 -# } - -# Charge-flip estimated from data, and covering DY, WW, and Top -samples['ChargeFlip'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'DYJetsToLL_M-50'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4 -} - -######## Vg ######## -files = nanoGetSampleFiles(mcDirectory, 'Wg_AMCNLOFXFX_01J') + \ - nanoGetSampleFiles(mcDirectory, 'ZGToLLG') - -samples['Vg'] = { - 'name': files, - 'weight': mcCommonWeightNoMatch + '*(Gen_ZGstar_mass <= 0)', - 'FilesPerJob': 4, -} - -######## VgS ######## -files = nanoGetSampleFiles(mcDirectory, 'Wg_AMCNLOFXFX_01J') + \ - nanoGetSampleFiles(mcDirectory, 'WZTo3LNu_mllmin0p1') + \ - nanoGetSampleFiles(mcDirectory, 'ZGToLLG') - -samples['VgS'] = { - 'name': files, - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} -addSampleWeight(samples, 'VgS', 'Wg_AMCNLOFXFX_01J', '((Gen_ZGstar_mass > 0 && Gen_ZGstar_mass <= 0.1))*(gstarLow * 0.94)') -addSampleWeight(samples, 'VgS', 'WZTo3LNu_mllmin0p1', '((Gen_ZGstar_mass > 0.1)*(0.601644*58.59/4.666))*(gstarLow * 0.94)') -addSampleWeight(samples, 'VgS', 'ZGToLLG', '(Gen_ZGstar_mass > 0)') - -############ WZ ############ -files = nanoGetSampleFiles(mcDirectory, 'WZTo3LNu_mllmin0p1') + \ - nanoGetSampleFiles(mcDirectory, 'WZTo2Q2L_mllmin4p0') - -samples['WZ'] = { - 'name': files, - 'weight': mcCommonWeight + ' * (gstarHigh)', - 'FilesPerJob': 4, -} -addSampleWeight(samples, 'WZ', 'WZTo3LNu_mllmin0p1', '(0.601644*58.59/4.666)') - - -############ ZZ ############ -files = nanoGetSampleFiles(mcDirectory, 'ZZTo2L2Nu') + \ - nanoGetSampleFiles(mcDirectory, 'ZZTo2Q2L_mllmin4p0') + \ - nanoGetSampleFiles(mcDirectory, 'ZZTo4L') - -samples['ZZ'] = { - 'name': files, - 'weight': mcCommonWeight, - 'FilesPerJob': 2, -} - - -########## VVV ######### -files = nanoGetSampleFiles(mcDirectory, 'ZZZ') + \ - nanoGetSampleFiles(mcDirectory, 'WZZ') + \ - nanoGetSampleFiles(mcDirectory, 'WWZ') + \ - nanoGetSampleFiles(mcDirectory, 'WWW') - -samples['VVV'] = { - 'name': files, - 'weight': mcCommonWeight, - 'FilesPerJob': 8, -} - -########################################### -############# SIGNALS ################## -########################################### - -signals = [] - -############ ggH H->WW ############ -samples['ggH_hww'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'GluGluHToWWTo2L2Nu_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} -signals.append('ggH_hww') - -############ VBF H->WW ############ -samples['qqH_hww'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'VBFHToWWTo2L2Nu_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 8, -} -signals.append('qqH_hww') - -############ ZH H->WW ############ -samples['ZH_hww'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'HZJ_HToWW_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 8, -} -signals.append('ZH_hww') - -samples['ggZH_hww'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'GluGluZH_HToWWTo2L2Nu_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 8, -} -signals.append('ggZH_hww') - -############ WH H->WW ############ -samples['WH_hww_plus'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'HWplusJ_HToWW_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} -signals.append('WH_hww_plus') - -samples['WH_hww_minus'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'HWminusJ_HToWW_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} - -signals.append('WH_hww_minus') - -############ ttH ############ -samples['ttH_hww'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'ttHToNonbb_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} -signals.append('ttH_hww') - -############ H->TauTau ############ -samples['ggH_htt'] = { - # 'name': nanoGetSampleFiles(mcDirectory, 'GluGluHToTauTau_M125_Powheg'), - 'name': nanoGetSampleFiles(mcDirectory, 'GluGluHToTauTau_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 20, -} -signals.append('ggH_htt') - -samples['qqH_htt'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'VBFHToTauTau_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 20, -} -signals.append('qqH_htt') - -samples['ZH_htt'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'ZHToTauTau_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 8, -} -signals.append('ZH_htt') - -############ WH H->TauTau ############ -samples['WH_htt_plus'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'WplusHToTauTau_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} -signals.append('WH_htt_plus') - -samples['WH_htt_minus'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'WminusHToTauTau_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} -signals.append('WH_htt_minus') - - -########################################### -################## FAKE ################### -########################################### - -samples['Fake'] = { - 'name': [], - 'weight': 'METFilter_DATA*fakeW', - 'weights': [], - 'isData': ['all'], - 'FilesPerJob': 50 -} - -for _, sd in DataRun: - for pd in DataSets: - tag_data = pd + '_' + sd - - files = nanoGetSampleFiles(fakeDirectory, tag_data) - - samples['Fake']['name'].extend(files) - addSampleWeight(samples, 'Fake', tag_data, DataTrig[pd]) - -samples['Fake']['subsamples'] = { - 'em': 'abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 11*13', - 'mm': 'abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 13*13', - 'ee': 'abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 11*11' -} - - -########################################### -################## DATA ################### -########################################### - -samples['DATA'] = { - 'name': [], - 'weight': 'LepWPCut*METFilter_DATA', - 'weights': [], - 'isData': ['all'], - 'FilesPerJob': 50 -} - -for _, sd in DataRun: - for pd in DataSets: - tag_data = pd + '_' + sd - - files = nanoGetSampleFiles(dataDirectory, tag_data) - - samples['DATA']['name'].extend(files) - addSampleWeight(samples, 'DATA', tag_data, DataTrig[pd]) diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_CR/structure.py b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_CR/structure.py deleted file mode 100644 index 12e0f959..00000000 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_CR/structure.py +++ /dev/null @@ -1,171 +0,0 @@ -# structure configuration for datacard - -# keys here must match keys in samples.py - -signal_normalization = 10.0 - -# BTag normalization factors -# Cut = hww2l2v_13TeV_samesign_2j -scale_histo_ttH_hww = 1.71005342426/1.09314151072 # 1.5643477148 -scale_histo_WW = 2.25800060639/1.91041058041 # 1.18194519521 -scale_histo_DY = 7.90909155209/10.3492826587 # 0.764216401555 -scale_histo_WZ = 49.3067818241/43.0657206854 # 1.14491946354 -scale_histo_Wg = 41.0307152872/32.8185201828 # 1.25023051188 -scale_histo_Zg = 4.88184592384/4.15039184398 # 1.17623735477 -scale_histo_Vg = (41.0307152872+4.88184592384)/(32.8185201828+4.15039184398) -scale_histo_WgS = 19.5784400987/16.5378866827 # 1.18385380637 -scale_histo_ZgS = 2.74664238533/2.21545099158 # 1.23976670925 -scale_histo_VgS = (19.5784400987+2.74664238533)/(16.5378866827+2.21545099158) -scale_histo_ZH_htt = 0.116319166763/0.091351528461 # 1.27331385388 -scale_histo_WH_htt_plus = 0.4131832122/0.323965810005 # 1.27539141304 -scale_histo_ggZH_hww = 0.0104452201343/0.00850780582798 # 1.22772197033 -scale_histo_qqH_hww = 0.00875809211317/0.00618184320386 # 1.41674446025 -scale_histo_ZZ = 1.19318174322/0.95378270042 # 1.25099956488 -scale_histo_ggH_hww = 0.152649430692/0.135132712642 # 1.1296260373 -scale_histo_WH_htt_minus = 0.263520609345/0.21247941852 # 1.24021710517 -scale_histo_VVV = 3.62299846954/3.27783418705 # 1.10530254515 -scale_histo_WH_hww_plus = 1.99024457637/1.64510255389 # 1.20979970013 -scale_histo_ggH_htt = 0.0137239155152/1 # 0.0137239155152 -scale_histo_ggWW = 0.138240992431/0.130499421048 # 1.05932264926 -scale_histo_top = 61.5535890766/44.34883106 # 1.38794163466 -scale_histo_WWewk = 0.0247224163572/0.0239052406614 # 1.03418395604 -scale_histo_ZH_hww = 0.343842150558/0.26623480593 # 1.29149961951 -scale_histo_WH_hww_minus = 1.24042862398/1.03231388643 # 1.20160024997 -scale_histo_qqH_htt = 0.00478130781574/0.00431274438945 # 1.10864623172 - -structure = {} - -structure['Vg'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_Vg, -} - -# structure['VgS'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_VgS, -# } - -structure['WZ'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WZ * 1.138 # NLO -> NNLO k-factor -} - -structure['ZZ'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZZ, -} - -structure['VVV'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_VVV, -} - - -# Higgs -structure['ggH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ggH_hww, -} - -# structure['qqH_hww'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_qqH_hww, -# } - -# structure['ZH_hww'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_ZH_hww, -# } - -# structure['ggZH_hww'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_ggZH_hww, -# } - -structure['WH_hww_plus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_hww_plus*signal_normalization, -} - -structure['WH_hww_minus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_hww_minus*signal_normalization, -} - -structure['ttH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ttH_hww, -} - -structure['ggH_htt'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ggH_htt, -} - -structure['qqH_htt'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_qqH_htt, -} - -structure['ZH_htt'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZH_htt, -} - -structure['WH_htt_plus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_htt_plus*signal_normalization, -} - -structure['WH_htt_minus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_htt_minus*signal_normalization, -} - - -# Fakes -structure['Fake_ee'] = { - 'isSignal' : 0, - 'isData' : 0, -} - -structure['Fake_mm'] = { - 'isSignal' : 0, - 'isData' : 0, -} - -structure['Fake_em'] = { - 'isSignal' : 0, - 'isData' : 0, -} - - -# Data-driven charge flip estimation -structure['ChargeFlip'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : 0.5, -} - -# Data -structure['DATA'] = { - 'isSignal' : 0, - 'isData' : 1 -} diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_mm_CR/README.md b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_mm_CR/README.md deleted file mode 100644 index ba17b328..00000000 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_mm_CR/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# Configuration for WHSS 1j signal region - -### Plot distributions - -Compile configuration and plot distributions: - - mkShapesRDF -c 1 - - mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png - -### Produce datacards - -Compile configuration and produce datacards: - - mkShapesRDF -c 1 - - mkDatacards --outputDirDatacard ../datacards_original_signal_scale --skipMissingNuisance \ No newline at end of file diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_mm_CR/configuration.py b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_mm_CR/configuration.py deleted file mode 100644 index 6deaa2ff..00000000 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_mm_CR/configuration.py +++ /dev/null @@ -1,99 +0,0 @@ -# Configuration file for charge asymmetry WHSS analysis using the UL 2017 dataset - -import sys,inspect - -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_mm_CR - -configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file -configurations_nuisance = os.path.dirname(configurations_nuisance) # configuration_2j_mm_CR -configurations_nuisance = os.path.dirname(configurations_nuisance) # WHSS -configurations_nuisance = os.path.dirname(configurations_nuisance) # Full2017_v9 -configurations_nuisance = os.path.dirname(configurations_nuisance) # UL - -# Tag used to identify the configuration folder version -tag = 'WHSS_2017_v9_chargeAsymmetry_Mu82_EleUL90' - -# File to use as runner script, default uses mkShapesRDF.shapeAnalysis.runner, otherwise specify path to script -runnerFile = "default" - -# Output file name -outputFile = "plots_WHSS_2017_v9_chargeAsymmetry_Mu82_EleUL90_DYflip_data.root" # "mkShapes__{}.root".format(tag) - -# Path to ouput folder -outputFolder = "../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" - -# Path to batch folder (used for condor submission) -batchFolder = "condor" - -# Path to configuration folder (will contain all the compiled configuration files) -configsFolder = "configs" - -# Luminosity to normalize to (in 1/fb) -# https://github.com/latinos/LatinoAnalysis/blob/UL_production/NanoGardener/python/data/TrigMaker_cfg.py#L868 (874) -# 59.832475339 -lumi = 59.83 - -# File with dict of aliases to define -aliasesFile = "../aliases.py" - -# File with dict of variables -variablesFile = "../variables.py" - -# File with dict of cuts -cutsFile = "cuts.py" - -# File with dict of samples -samplesFile = "../samples.py" - -# File with dict of samples for plotting -plotFile = 'plot.py' - -# File with dict of structure (used to define processes in combine) -structureFile = "structure.py" - -# Nuisances file for mkDatacards and for mkShape -nuisancesFile = "../nuisances.py" - -# Path to folder where to save plots -plotPath = '../plots_' + tag - -# This lines are executed right before the runner on the condor node -mountEOS = [] - -# List of imports to import when compiling the whole configuration folder, it should not contain imports used by configuration.py -imports = ["os", "glob", ("collections", "OrderedDict"), "ROOT"] - -# List of files to compile -filesToExec = [ - samplesFile, - aliasesFile, - variablesFile, - cutsFile, - plotFile, - nuisancesFile, - structureFile, -] - -# List of variables to keep in the compiled configuration folder -varsToKeep = [ - "batchVars", - "outputFolder", - "batchFolder", - "configsFolder", - "outputFile", - "runnerFile", - "tag", - "samples", - "aliases", - "variables", - ("cuts", {"cuts": "cuts", "preselections": "preselections"}), - ("plot", {"plot": "plot", "groupPlot": "groupPlot", "legend": "legend"}), - "nuisances", - "structure", - "lumi", -] - -# List of variables to keep in the batch submission script (script.py) -batchVars = varsToKeep[varsToKeep.index("samples") :] - -varsToKeep += ['plotPath'] diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_mm_CR/cuts.py b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_mm_CR/cuts.py deleted file mode 100644 index de3426fd..00000000 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_mm_CR/cuts.py +++ /dev/null @@ -1,37 +0,0 @@ -cuts = {} - -# cuts -preselections = 'mll>12 \ - && Lepton_pt[0]>25 \ - && Lepton_pt[1]>10 \ - && (abs(Lepton_pdgId[1])==13 || Lepton_pt[1]>13) \ - && abs(Lepton_eta[0])<2.5 && abs(Lepton_eta[1])<2.5 \ - && bVeto \ - && PuppiMET_pt > 30 \ - && !hole_veto \ - ' - -# Splitting in sub-leading lepton pT -#################################### - -## SR 2jets - -# mu-mu -cuts['hww2l2v_13TeV_WH_SS_noZveto_mm_2j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 13*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && mjj < 100 && mlljj20_whss > 50.', - 'categories' : { - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT >= 20 GeV) - 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT < 20 GeV) - 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - } -} - -# mlljj20_whss: -# inv_mass of: (jet1, jet2, 2*closest_lep_to_jets) -# jets are considered with pT > 20 GeV - -# Definitions of WH3l variables: -# https://github.com/latinos/LatinoAnalysis/blob/76e7c4b93aa5f056c92440d4e8d24e7de749c8fe/NanoGardener/python/modules/l3KinProducer.py diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_mm_CR/nuisances.py b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_mm_CR/nuisances.py deleted file mode 100644 index c9f4b07c..00000000 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_mm_CR/nuisances.py +++ /dev/null @@ -1,704 +0,0 @@ -import sys - -# Enable reading YR for Higgs XS and uncertainties -sys.path.append('../../../macros/') -import HiggsXSection -HiggsXS = HiggsXSection.HiggsXSection() - -nuisances = {} - -mcProduction = 'Summer20UL18_106x_nAODv9_Full2018v9' -dataReco = 'Run2018_UL2018_nAODv9_Full2018v9' -mcSteps = 'MCl1loose2018v9__MCCorr2018v9NoJERInHorn__l2tightOR2018v9' -fakeSteps = 'DATAl1loose2018v9__l2loose__fakeW' -dataSteps = 'DATAl1loose2018v9__l2loose__l2tightOR2018v9' - -treeBaseDir = '/eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano' -limitFiles = -1 - -mc = [skey for skey in samples if skey not in ('Fake', 'DATA','ChargeFlip')] - -redirector = "" - -useXROOTD = False - -def makeMCDirectory(var=''): - if var== '': - print(os.path.join(treeBaseDir, mcProduction, mcSteps)) - return os.path.join(treeBaseDir, mcProduction, mcSteps) - else: - print(os.path.join(treeBaseDir, mcProduction, mcSteps + '__' + var)) - return os.path.join(treeBaseDir, mcProduction, mcSteps + '__' + var) - -# def makeMCDirectory(var=''): -# _treeBaseDir = treeBaseDir + '' -# if useXROOTD: -# _treeBaseDir = redirector + treeBaseDir -# if var== '': -# return '/'.join([_treeBaseDir, mcProduction, mcSteps]) -# else: -# return '/'.join([_treeBaseDir, mcProduction, mcSteps + '__' + var]) - -mcDirectory = makeMCDirectory() -fakeDirectory = os.path.join(treeBaseDir, dataReco, fakeSteps) -dataDirectory = os.path.join(treeBaseDir, dataReco, dataSteps) - -################################ EXPERIMENTAL UNCERTAINTIES ################################# - -#### Luminosity - -# https://twiki.cern.ch/twiki/bin/view/CMS/LumiRecommendationsRun2#LumiComb -# Uncorrelated 2016 1.0 -# Uncorrelated 2017 2.0 -# Uncorrelated 2018 1.5 -# Correlated 2016, 2017, 2018 0.6, 0.9, 2.0 -# Correlated 2017, 2018 0.6, 0.2 - -nuisances['lumi_Uncorrelated'] = { - 'name' : 'lumi_13TeV_2018', - 'type' : 'lnN', - 'samples' : dict((skey, '1.015') for skey in mc if skey not in ['WZ']) -} - -nuisances['lumi_Correlated_Run2'] = { - 'name' : 'lumi_13TeV_correlated', - 'type' : 'lnN', - 'samples' : dict((skey, '1.020') for skey in mc if skey not in ['WZ']) -} - -nuisances['lumi_Correlated_2017_2018'] = { - 'name' : 'lumi_13TeV_1718', - 'type' : 'lnN', - 'samples' : dict((skey, '1.002') for skey in mc if skey not in ['WZ']) -} - - -#### FAKES -fake_syst_endcap = ['1.0*(abs(Lepton_eta[1])<=1.4) + 1.3*(abs(Lepton_eta[1])>1.4)', - '1.0*(abs(Lepton_eta[1])<=1.4) + 1.0/1.3*(abs(Lepton_eta[1])>1.4)'] - -fake_syst_barrel = [' 1.3*(abs(Lepton_eta[1])<=1.4) + 1.0*(abs(Lepton_eta[1])>1.4)', - '1.0/1.3*(abs(Lepton_eta[1])<=1.4) + 1.0*(abs(Lepton_eta[1])>1.4)'] - -nuisances['fake_syst_mm_barrel'] = { - 'name' : 'CMS_WH_hww_fake_syst_mm_barrel', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_mm' : fake_syst_barrel, - }, - 'cuts' : [cut for cut in cuts if ('_mm_' in cut)] -} -nuisances['fake_syst_mm_endcap'] = { - 'name' : 'CMS_WH_hww_fake_syst_mm_endcap', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_mm' : fake_syst_endcap, - }, - 'cuts' : [cut for cut in cuts if ('_mm_' in cut)] -} - -nuisances['fake_syst_em_barrel'] = { - 'name' : 'CMS_WH_hww_fake_syst_em_barrel', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_em' : fake_syst_barrel, - }, - 'cuts' : [cut for cut in cuts if ('_em_' in cut)] -} -nuisances['fake_syst_em_endcap'] = { - 'name' : 'CMS_WH_hww_fake_syst_em_endcap', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_em' : fake_syst_endcap, - }, - 'cuts' : [cut for cut in cuts if ('_em_' in cut)] -} - -nuisances['fake_syst_ee_barrel'] = { - 'name' : 'CMS_WH_hww_fake_syst_ee_barrel', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_ee' : fake_syst_barrel, - }, - 'cuts' : [cut for cut in cuts if ('_ee_' in cut)] -} -nuisances['fake_syst_ee_endcap'] = { - 'name' : 'CMS_WH_hww_fake_syst_ee_endcap', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_ee' : fake_syst_endcap, - }, - 'cuts' : [cut for cut in cuts if ('_ee_' in cut)] -} - -nuisances['fake_ele'] = { - 'name' : 'CMS_WH_hww_fake_e_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_ee' : ['fakeWEleUp', 'fakeWEleDown'], - 'Fake_em' : ['fakeWEleUp', 'fakeWEleDown'], - } -} -nuisances['fake_ele_stat'] = { - 'name' : 'CMS_WH_hww_fake_stat_e_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_ee' : ['fakeWStatEleUp', 'fakeWStatEleDown'], - 'Fake_em' : ['fakeWStatEleUp', 'fakeWStatEleDown'], - } -} -nuisances['fake_mu'] = { - 'name' : 'CMS_WH_hww_fake_m_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_mm' : ['fakeWMuUp', 'fakeWMuDown'], - 'Fake_em' : ['fakeWMuUp', 'fakeWMuDown'], - } -} -nuisances['fake_mu_stat'] = { - 'name' : 'CMS_WH_hww_fake_stat_m_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_mm' : ['fakeWStatMuUp', 'fakeWStatMuDown'], - 'Fake_em' : ['fakeWStatMuUp', 'fakeWStatMuDown'], - } -} - -###### B-tagger - -for shift in ['lf', 'hf', 'hfstats1', 'hfstats2', 'lfstats1', 'lfstats2', 'cferr1', 'cferr2']: - btag_syst = ['(btagSF%sup)/(btagSF)' % shift, '(btagSF%sdown)/(btagSF)' % shift] - - name = 'CMS_btag_%s' % shift - if 'stats' in shift: - name += '_2018' - - nuisances['btag_shape_%s' % shift] = { - 'name' : name, - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, btag_syst) for skey in mc), - } - -##### Trigger Scale Factors - -trig_syst = ['TriggerSFWeight_2l_u/TriggerSFWeight_2l', 'TriggerSFWeight_2l_d/TriggerSFWeight_2l'] - -nuisances['trigg'] = { - 'name' : 'CMS_eff_hwwtrigger_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, trig_syst) for skey in mc) -} - -##### Electron Efficiency and energy scale - -nuisances['eff_e'] = { - 'name' : 'CMS_eff_e_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['SFweightEleUp', 'SFweightEleDown']) for skey in mc) -} - -nuisances['eff_ttHMVA_e'] = { - 'name' : 'CMS_eff_ttHMVA_e_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['LepWPttHMVASFEleUp', 'LepWPttHMVASFEleDown']) for skey in mc) -} - -nuisances['electronpt'] = { - 'name' : 'CMS_scale_e_2018', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'ElepTup', - 'mapDown' : 'ElepTdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('ElepTup_suffix'), - 'folderDown' : makeMCDirectory('ElepTdo_suffix'), - 'AsLnN' : '0' -} - -##### Muon Efficiency and energy scale - -nuisances['eff_m'] = { - 'name' : 'CMS_eff_m_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['SFweightMuUp', 'SFweightMuDown']) for skey in mc) -} - -nuisances['eff_ttHMVA_m'] = { - 'name' : 'CMS_eff_ttHMVA_m_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['LepWPttHMVASFMuUp', 'LepWPttHMVASFMuDown']) for skey in mc) -} - -nuisances['muonpt'] = { - 'name' : 'CMS_scale_m_2018', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'MupTup', - 'mapDown' : 'MupTdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('MupTup_suffix'), - 'folderDown' : makeMCDirectory('MupTdo_suffix'), - 'AsLnN' : '0' -} - -##### Jet energy scale -jes_systs = ['JESAbsolute','JESAbsolute_2018','JESBBEC1','JESBBEC1_2018','JESEC2','JESEC2_2018','JESFlavorQCD','JESHF','JESHF_2018','JESRelativeBal','JESRelativeSample_2018'] - -for js in jes_systs: - - nuisances[js] = { - 'name' : 'CMS_scale_' + js.replace("JES","j_"), - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : js + 'up', - 'mapDown' : js + 'do', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('RDF__JESup_suffix'), - 'folderDown': makeMCDirectory('RDF__JESdo_suffix'), - 'reweight' : ['btagSF'+js.replace('JES','jes')+'up/btagSF','btagSF'+js.replace('JES','jes')+'down/btagSF'], - 'AsLnN' : '0' - } - -##### Jet energy resolution -nuisances['JER'] = { - 'name' : 'CMS_res_j_2018', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'JERup', - 'mapDown' : 'JERdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('JERup_suffix'), - 'folderDown': makeMCDirectory('JERdo_suffix'), - 'AsLnN' : '0' -} - -##### MET unclustered energy - -# metUp.PuppiMET_pt_METup -nuisances['met'] = { - 'name' : 'CMS_scale_met_2018', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'METup', - 'mapDown' : 'METdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('METup_suffix'), - 'folderDown': makeMCDirectory('METdo_suffix'), - 'AsLnN' : '0' -} - - -##### Pileup - -# puWeight_UL2018 -nuisances['PU'] = { - 'name' : 'CMS_pileup_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'DY' : ['0.998687*(puWeightUp/puWeight)', '1.001976*(puWeightDown/puWeight)'], - 'top' : ['1.002595*(puWeightUp/puWeight)', '0.997470*(puWeightDown/puWeight)'], - 'WW' : ['1.004449*(puWeightUp/puWeight)', '0.995660*(puWeightDown/puWeight)'], - 'WWewk' : ['1.002122*(puWeightUp/puWeight)', '0.998087*(puWeightDown/puWeight)'], - 'ggWW' : ['1.004870*(puWeightUp/puWeight)', '0.995315*(puWeightDown/puWeight)'], - # 'Vg' : ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'Wg' : ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'Zg' : ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'WgS' : ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'ZgS' : ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - 'WZ' : ['0.999330*(puWeightUp/puWeight)', '1.000992*(puWeightDown/puWeight)'], - 'ZZ' : ['0.999469*(puWeightUp/puWeight)', '1.000751*(puWeightDown/puWeight)'], - 'VVV' : ['1.003485*(puWeightUp/puWeight)', '0.997561*(puWeightDown/puWeight)'], - 'ggH_hww' : ['1.003677*(puWeightUp/puWeight)', '0.995996*(puWeightDown/puWeight)'], - 'qqH_hww' : ['1.003747*(puWeightUp/puWeight)', '0.995878*(puWeightDown/puWeight)'], - # 'ZH_hww' : ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'ggZH_hww': ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'WH_hww_plus': ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'WH_hww_minus': ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'ttH_hww' : ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'ggH_htt' : ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'qqH_htt' : ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'ZH_htt' : ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'WH_htt_plus' : ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - # 'WH_htt_minus': ['1.023232*(puWeightUp/puWeight)', '0.981481*(puWeightDown/puWeight)'], - }, - 'AsLnN' : '0', -} - -### PU ID SF uncertainty - -# puid_syst = ['Jet_PUIDSF_loose_up/Jet_PUIDSF_loose', 'Jet_PUIDSF_loose_down/Jet_PUIDSF_loose'] -puid_syst = ['Jet_PUIDSF_up/Jet_PUIDSF', 'Jet_PUIDSF_down/Jet_PUIDSF'] - -nuisances['jetPUID'] = { - 'name' : 'CMS_eff_j_PUJET_id_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, puid_syst) for skey in mc) -} - -### PS and UE - -nuisances['PS_ISR'] = { - 'name' : 'PS_WH_hww_ISR', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['PSWeight[2]', 'PSWeight[0]']) for skey in mc), - 'AsLnN' : '0', -} - -nuisances['PS_FSR'] = { - 'name' : 'PS_WH_hww_FSR', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['PSWeight[3]', 'PSWeight[1]']) for skey in mc), - 'AsLnN' : '0', -} - -nuisances['UE_CP5'] = { - 'name' : 'CMS_WH_hww_UE', - 'skipCMS' : 1, - 'type' : 'lnN', - 'samples' : dict((skey, '1.015') for skey in mc), -} - -# Charge flip efficiency -nuisances['chargeFlipEff'] = { - 'name' : 'CMS_whss_chargeFlipEff_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['1-ttHMVA_eff_err_flip_2l', '1+ttHMVA_eff_err_flip_2l']) for skey in ['DY','ChargeFlip']), - 'cuts' : [cut for cut in cuts if ('_ee_' in cut or '_em_' in cut)] -} - -# Charge flip: uncertainty on opposite sign processes not affected by charge-flip -nuisances['chargeFlip_syst'] = { - 'name' : 'CMS_ChargeFlip_syst', - 'type' : 'lnN', - 'samples' : { - 'ChargeFlip' : '1.10', - } -} - - -# ####### Generic "cross section uncertainties" - -# apply_on = { -# 'top': [ -# 'isSingleTop * 1.0816 + isTTbar', -# 'isSingleTop * 0.9184 + isTTbar' -# ] -# } - -# nuisances['singleTopToTTbar'] = { -# 'name' : 'singleTopToTTbar', -# 'skipCMS' : 1, -# 'kind' : 'weight', -# 'type' : 'shape', -# 'samples' : apply_on -# } - -## Top pT reweighting uncertainty - -nuisances['TopPtRew'] = { - 'name' : 'CMS_top_pT_reweighting', # Theory uncertainty - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'top': ["1.", "1./Top_pTrw"] - }, - 'symmetrize' : True -} - -nuisances['WgStar'] = { - 'name' : 'CMS_hww_WgStarScale', - 'type' : 'lnN', - 'samples' : { - 'WgS' : '1.25' - } -} - -###### pdf uncertainties - -valuesggh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggH', '125.09','pdf','sm') -valuesggzh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggZH','125.09','pdf','sm') -valuesbbh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','bbH', '125.09','pdf','sm') - -nuisances['pdf_Higgs_gg'] = { - 'name' : 'pdf_Higgs_gg', - 'samples' : { - 'ggH_hww' : valuesggh, - 'ggH_htt' : valuesggh, - 'ggZH_hww' : valuesggzh, - 'bbH_hww' : valuesbbh, - }, - 'type' : 'lnN', -} - -# For ttH, we need to use 1./values -values = str(1./float(HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ttH','125.09','pdf','sm'))) - -nuisances['pdf_Higgs_ttH'] = { - 'name' : 'pdf_Higgs_ttH', - 'samples' : { - 'ttH_hww': values, - }, - 'type' : 'lnN', -} - -valuesqqh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','vbfH','125.09','pdf','sm') -valueswh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','WH', '125.09','pdf','sm') -valueszh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ZH', '125.09','pdf','sm') - -nuisances['pdf_Higgs_qqbar'] = { - 'name' : 'pdf_Higgs_qqbar', - 'type' : 'lnN', - 'samples': { - 'qqH_hww' : valuesqqh, - 'qqH_htt' : valuesqqh, - 'WH_hww_plus' : valueswh, - 'WH_hww_minus': valueswh, - 'WH_htt_plus' : valueswh, - 'WH_htt_minus': valueswh, - 'ZH_hww' : valueszh, - 'ZH_htt' : valueszh - }, -} - -nuisances['pdf_qqbar'] = { - 'name' : 'pdf_qqbar', - 'type' : 'lnN', - 'samples' : { - 'Wg' : '1.04', - 'Zg' : '1.04', - 'ZZ' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 - 'WZ' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 - 'WgS' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 - 'ZgS' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 - }, -} - -nuisances['pdf_gg'] = { - 'name': 'pdf_gg', - 'type': 'lnN', - 'samples': { - 'ggWW' : '1.05', - }, -} - -nuisances['pdf_Higgs_gg_ACCEPT'] = { - 'name' : 'pdf_WH_hww_Higgs_gg_ACCEPT', - 'samples' : { - 'ggH_hww' : '1.006', - 'ggH_htt' : '1.006', - 'ggZH_hww' : '1.006', - 'bbH_hww' : '1.006' - }, - 'type' : 'lnN', -} -nuisances['pdf_gg_ACCEPT'] = { - 'name' : 'pdf_WH_hww_gg_ACCEPT', - 'samples' : { - 'ggWW' : '1.006', - }, - 'type' : 'lnN', -} - -nuisances['pdf_Higgs_qqbar_ACCEPT'] = { - 'name' : 'pdf_WH_hww_Higgs_qqbar_ACCEPT', - 'type' : 'lnN', - 'samples' : { - 'qqH_hww' : '1.002', - 'qqH_htt' : '1.002', - 'WH_hww_plus' : '1.003', - 'WH_hww_minus': '1.003', - 'WH_htt_plus' : '1.003', - 'WH_htt_minus': '1.003', - 'ZH_hww' : '1.002', - 'ZH_htt' : '1.002', - }, -} - -nuisances['pdf_qqbar_ACCEPT'] = { - 'name' : 'pdf_WH_hww_qqbar_ACCEPT', - 'type' : 'lnN', - 'samples' : { - 'ZZ' : '1.001', - 'WZ' : '1.001', - }, -} - -##### Renormalization & factorization scales - -## Shape nuisance due to QCD scale variations for DY -## LHE scale variation weights (w_var / w_nominal) - -## This should work for samples with either 8 or 9 LHE scale weights (Length$(LHEScaleWeight) == 8 or 9) -variations = ['Alt(LHEScaleWeight,0,1)', 'Alt(LHEScaleWeight,1,1)', 'Alt(LHEScaleWeight,3,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-4,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-2,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-1,1)'] - -# nuisances['QCDscale_V'] = { -# 'name' : 'QCDscale_V', -# 'skipCMS' : 1, -# 'kind' : 'weight_envelope', -# 'type' : 'shape', -# 'samples' : { -# 'DY' : variations -# }, -# 'AsLnN' : '0' -# } - -nuisances['QCDscale_VV'] = { - 'name' : 'QCDscale_VV', - 'kind' : 'weight_envelope', - 'type' : 'shape', - 'samples' : { - 'WW' : variations, - 'Zg' : variations, - 'Wg' : variations, - 'ZZ' : variations, - 'WZ' : variations, - 'WgS' : variations, - 'ZgS' : variations - } -} - -nuisances['QCDscale_ggVV'] = { - 'name' : 'QCDscale_ggVV', - 'type' : 'lnN', - 'samples' : { - 'ggWW' : '1.15', - }, -} - -#### QCD scale uncertainties for Higgs signals other than ggH - -values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','vbfH','125.09','scale','sm') - -nuisances['QCDscale_qqH'] = { - 'name' : 'QCDscale_qqH', - 'samples' : { - 'qqH_hww' : values, - 'qqH_htt' : values, - }, - 'type' : 'lnN' -} - -valueswh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','WH','125.09','scale','sm') -valueszh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ZH','125.09','scale','sm') - -nuisances['QCDscale_VH'] = { - 'name' : 'QCDscale_VH', - 'samples' : { - 'WH_hww_plus' : valueswh, - 'WH_hww_minus' : valueswh, - 'WH_htt_plus' : valueswh, - 'WH_htt_minus' : valueswh, - 'ZH_hww' : valueszh, - 'ZH_htt' : valueszh, - }, - 'type' : 'lnN', -} - -values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggZH','125.09','scale','sm') - -nuisances['QCDscale_ggZH'] = { - 'name' : 'QCDscale_ggZH', - 'samples' : { - 'ggZH_hww' : values, - }, - 'type' : 'lnN', -} - -values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ttH','125.09','scale','sm') - -nuisances['QCDscale_ttH'] = { - 'name' : 'QCDscale_ttH', - 'samples' : { - 'ttH_hww' : values, - }, - 'type' : 'lnN', -} - -nuisances['QCDscale_WWewk'] = { - 'name' : 'QCDscale_WWewk', - 'samples' : { - 'WWewk' : '1.11', - }, - 'type' : 'lnN' -} - -nuisances['QCDscale_qqbar_ACCEPT'] = { - 'name' : 'QCDscale_qqbar_ACCEPT', - 'type' : 'lnN', - 'samples' : { - 'qqH_hww' : '1.003', - 'qqH_htt' : '1.003', - 'WH_hww_plus' : '1.010', - 'WH_hww_minus' : '1.010', - 'WH_htt_plus' : '1.010', - 'WH_htt_minus' : '1.010', - 'ZH_hww' : '1.015', - 'ZH_htt' : '1.015', - } -} - -# FIXME: these come from HIG-16-042, maybe should be recomputed? -nuisances['QCDscale_gg_ACCEPT'] = { - 'name' : 'QCDscale_gg_ACCEPT', - 'samples' : { - 'ggH_htt' : '1.012', - 'ggH_hww' : '1.012', - 'ggZH_hww' : '1.012', - 'ggWW' : '1.012', - }, - 'type' : 'lnN', -} - -# WZ normalization from control region - -nuisances['WZ2jnorm'] = { - 'name' : 'CMS_hww_WZ3l2jnorm', - 'samples' : { - 'WZ' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [cut for cut in cuts if '2j' in cut], -} - -nuisances['WZ1jnorm'] = { - 'name' : 'CMS_hww_WZ3l1jnorm', - 'samples' : { - 'WZ' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [cut for cut in cuts if '1j' in cut], -} - -## Use the following if you want to apply the automatic combine MC stat nuisances. -nuisances['stat'] = { - 'type' : 'auto', - 'maxPoiss' : '10', - 'includeSignal' : '0', - 'samples' : {} -} -# nuisance ['maxPoiss'] = Number of threshold events for Poisson modelling -# nuisance ['includeSignal'] = Include MC stat nuisances on signal processes (1=True, 0=False) - -for n in nuisances.values(): - n['skipCMS'] = 1 diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_mm_CR/plot.py b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_mm_CR/plot.py deleted file mode 100644 index 3c020db0..00000000 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_mm_CR/plot.py +++ /dev/null @@ -1,356 +0,0 @@ -# plot configuration - -# Groups of samples to improve the plots. -# If not defined, normal plots is used -# - -# BTag normalization factors -# Cut = hww2l2v_13TeV_samesign_2j -scale_histo_ttH_hww = 1.71005342426/1.09314151072 # 1.5643477148 -scale_histo_WW = 2.25800060639/1.91041058041 # 1.18194519521 -scale_histo_DY = 7.90909155209/10.3492826587 # 0.764216401555 -scale_histo_WZ = 49.3067818241/43.0657206854 # 1.14491946354 -scale_histo_Wg = 41.0307152872/32.8185201828 # 1.25023051188 -scale_histo_Zg = 4.88184592384/4.15039184398 # 1.17623735477 -scale_histo_Vg = (41.0307152872+4.88184592384)/(32.8185201828+4.15039184398) -scale_histo_WgS = 19.5784400987/16.5378866827 # 1.18385380637 -scale_histo_ZgS = 2.74664238533/2.21545099158 # 1.23976670925 -scale_histo_VgS = (19.5784400987+2.74664238533)/(16.5378866827+2.21545099158) -scale_histo_ZH_htt = 0.116319166763/0.091351528461 # 1.27331385388 -scale_histo_WH_htt_plus = 0.4131832122/0.323965810005 # 1.27539141304 -scale_histo_ggZH_hww = 0.0104452201343/0.00850780582798 # 1.22772197033 -scale_histo_qqH_hww = 0.00875809211317/0.00618184320386 # 1.41674446025 -scale_histo_ZZ = 1.19318174322/0.95378270042 # 1.25099956488 -scale_histo_ggH_hww = 0.152649430692/0.135132712642 # 1.1296260373 -scale_histo_WH_htt_minus = 0.263520609345/0.21247941852 # 1.24021710517 -scale_histo_VVV = 3.62299846954/3.27783418705 # 1.10530254515 -scale_histo_WH_hww_plus = 1.99024457637/1.64510255389 # 1.20979970013 -scale_histo_ggH_htt = 0.0137239155152/1 # 0.0137239155152 -scale_histo_ggWW = 0.138240992431/0.130499421048 # 1.05932264926 -scale_histo_top = 61.5535890766/44.34883106 # 1.38794163466 -scale_histo_WWewk = 0.0247224163572/0.0239052406614 # 1.03418395604 -scale_histo_ZH_hww = 0.343842150558/0.26623480593 # 1.29149961951 -scale_histo_WH_hww_minus = 1.24042862398/1.03231388643 # 1.20160024997 -scale_histo_qqH_htt = 0.00478130781574/0.00431274438945 # 1.10864623172 - -groupPlot = {} - -groupPlot['top'] = { - 'nameHR' : 'tW+ and t#bar{t}', - 'isSignal' : 0, - 'color' : 400, # kYellow - 'samples' : ['top'] -} - -groupPlot['WW'] = { - 'nameHR' : 'WW', - 'isSignal' : 0, - 'color' : 851, # kAzure -9 - 'samples' : ['WW', 'ggWW', 'WWewk'] -} - -groupPlot['DY'] = { - 'nameHR' : "DY", - 'isSignal' : 0, - 'color' : 418, # kGreen+2 - 'samples' : ['DY'] -} - -groupPlot['Fake'] = { - 'nameHR' : 'Non-prompt', - 'isSignal' : 0, - 'color' : 921, # kGray + 1 - 'samples' : ['Fake_mm','Fake_em','Fake_ee'] -} - -# groupPlot['ChargeFlip'] = { -# 'nameHR' : "charge_flip", -# 'isSignal' : 0, -# 'color' : 418, # kGreen+2 -# 'samples' : ['ChargeFlip'] -# } - -groupPlot['VVV'] = { - 'nameHR' : 'VVV', - 'isSignal' : 0, - 'color' : 857, # kAzure -3 - 'samples' : ['VVV'] -} - -groupPlot['ZZ'] = { - 'nameHR' : "ZZ", - 'isSignal' : 0, - 'color' : 617, # kViolet + 1 - 'samples' : ['ZZ'] -} - -groupPlot['WZ'] = { - 'nameHR' : "WZ", - 'isSignal' : 0, - 'color' : 619, # kViolet + 1 - 'samples' : ['WZ'] -} - -groupPlot['Vg'] = { - 'nameHR' : "V#gamma", - 'isSignal' : 0, - 'color' : 810, # kOrange + 10 - 'samples' : ['Vg'] -} - -groupPlot['VgS'] = { - 'nameHR' : "V#gamma*", - 'isSignal' : 0, - 'color' : 412, # kGreen - 9 - 'samples' : ['VgS'] -} - -groupPlot['Higgs'] = { - 'nameHR' : 'Higgs', - 'isSignal' : 0, - 'color' : 632, # kRed - 'samples' : ['ggH_hww','qqH_hww','ZH_hww','ggZH_hww','ttH_hww','ggH_htt','qqH_htt','ZH_htt'] -} - -groupPlot['WH_minus'] = { - 'nameHR' : 'W^{-} H (x 10)', - 'isSignal' : 2, - 'color' : 600, # kBlue - 'samples' : ['WH_hww_minus','WH_htt_minus'] -} - -groupPlot['WH_plus'] = { - 'nameHR' : 'W^{+} H (x 10)', - 'isSignal' : 2, - 'color' : 632, # kRed - 'samples' : ['WH_hww_plus', 'WH_htt_plus'] -} - - -# keys here must match keys in samples.py - -plot = {} - -# plot['ChargeFlip'] = { -# 'color' : 418, # kGreen+2 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : 0.5, -# } - -plot['DY'] = { - 'color' : 418, # kGreen+2 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_DY, -} - -plot['top'] = { - 'nameHR' : 'tW and t#bar{t}', - 'color' : 400, # kYellow - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_top, -} - -plot['WW'] = { - 'color' : 851, # kAzure -9 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_WW, -} - -plot['WWewk'] = { - 'color' : 850, # kAzure -10 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_WWewk, -} - -plot['ggWW'] = { - 'color' : 850, # kAzure -10 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggWW, -} - -plot['Vg'] = { - 'color' : 859, # kAzure -1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_Vg, -} - -plot['VgS'] = { - 'color' : 617, # kViolet + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_VgS, -} - -plot['WZ'] = { - 'color' : 858, # kAzure -2 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_WZ * 1.138, # NLO -> NNLO k-factor! -} - -plot['ZZ'] = { - 'color' : 858, # kAzure -2 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ZZ, -} - -plot['VVV'] = { - 'color' : 857, # kAzure -3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_VVV, -} - -########### -# Signals # -########### - -# HWW - -plot['ggH_hww'] = { - 'color' : 632, # kRed - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggH_hww, -} - -plot['qqH_hww'] = { - 'color' : 632+1, # kRed+1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_qqH_hww, -} - -plot['ZH_hww'] = { - 'color' : 632+3, # kRed+3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ZH_hww, -} - -plot['ggZH_hww'] = { - 'color' : 632+4, # kRed+4 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggZH_hww, -} - -plot['WH_hww_plus'] = { - 'color' : 632+2, # kRed+2 - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_hww_plus, -} - -plot['WH_hww_minus'] = { - 'color' : 600, # kBlue - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_hww_minus, -} - -plot['ttH_hww'] = { - 'color' : 632+3, # kRed+3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ttH_hww, -} - - -# Htautau - -plot['ggH_htt'] = { - 'color' : 632, # kRed - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggH_htt, -} - -plot['qqH_htt'] = { - 'color' : 632+1, # kRed+1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_qqH_htt, -} - -plot['ZH_htt'] = { - 'color' : 632+3, # kRed+3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ZH_htt, -} - -plot['WH_htt_plus'] = { - 'color' : 632+2, # kRed+2 - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_htt_plus, -} - -plot['WH_htt_minus'] = { - 'color' : 632+2, # kRed+2 - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_htt_minus, -} - - -######## -# Fake # -######## - -plot['Fake_em'] = { - 'color' : 921, # kGray + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['Fake_ee'] = { - 'color' : 921, # kGray + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['Fake_mm'] = { - 'color' : 921, # kGray + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -# plot['Fake'] = { -# 'color' : 921, # kGray + 1 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : 1.0 -# } - -######## -# Data # -######## - -plot['DATA'] = { - 'nameHR' : 'Data', - 'color' : 1 , - 'isSignal' : 0, - 'isData' : 1, - 'isBlind' : 0, -} - - -# Define legend - -legend = {} - -legend['lumi'] = 'L = 59.8 fb^{-1}' -legend['sqrt'] = '#sqrt{s} = 13 TeV' diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_mm_CR/structure.py b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_mm_CR/structure.py deleted file mode 100644 index 4114af12..00000000 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_mm_CR/structure.py +++ /dev/null @@ -1,171 +0,0 @@ -# structure configuration for datacard - -# keys here must match keys in samples.py - -signal_normalization = 10.0 - -# BTag normalization factors -# Cut = hww2l2v_13TeV_samesign_2j -scale_histo_ttH_hww = 1.71005342426/1.09314151072 # 1.5643477148 -scale_histo_WW = 2.25800060639/1.91041058041 # 1.18194519521 -scale_histo_DY = 7.90909155209/10.3492826587 # 0.764216401555 -scale_histo_WZ = 49.3067818241/43.0657206854 # 1.14491946354 -scale_histo_Wg = 41.0307152872/32.8185201828 # 1.25023051188 -scale_histo_Zg = 4.88184592384/4.15039184398 # 1.17623735477 -scale_histo_Vg = (41.0307152872+4.88184592384)/(32.8185201828+4.15039184398) -scale_histo_WgS = 19.5784400987/16.5378866827 # 1.18385380637 -scale_histo_ZgS = 2.74664238533/2.21545099158 # 1.23976670925 -scale_histo_VgS = (19.5784400987+2.74664238533)/(16.5378866827+2.21545099158) -scale_histo_ZH_htt = 0.116319166763/0.091351528461 # 1.27331385388 -scale_histo_WH_htt_plus = 0.4131832122/0.323965810005 # 1.27539141304 -scale_histo_ggZH_hww = 0.0104452201343/0.00850780582798 # 1.22772197033 -scale_histo_qqH_hww = 0.00875809211317/0.00618184320386 # 1.41674446025 -scale_histo_ZZ = 1.19318174322/0.95378270042 # 1.25099956488 -scale_histo_ggH_hww = 0.152649430692/0.135132712642 # 1.1296260373 -scale_histo_WH_htt_minus = 0.263520609345/0.21247941852 # 1.24021710517 -scale_histo_VVV = 3.62299846954/3.27783418705 # 1.10530254515 -scale_histo_WH_hww_plus = 1.99024457637/1.64510255389 # 1.20979970013 -scale_histo_ggH_htt = 0.0137239155152/1 # 0.0137239155152 -scale_histo_ggWW = 0.138240992431/0.130499421048 # 1.05932264926 -scale_histo_top = 61.5535890766/44.34883106 # 1.38794163466 -scale_histo_WWewk = 0.0247224163572/0.0239052406614 # 1.03418395604 -scale_histo_ZH_hww = 0.343842150558/0.26623480593 # 1.29149961951 -scale_histo_WH_hww_minus = 1.24042862398/1.03231388643 # 1.20160024997 -scale_histo_qqH_htt = 0.00478130781574/0.00431274438945 # 1.10864623172 - -structure = {} - -structure['Vg'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_Vg, -} - -structure['VgS'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_VgS, -} - -structure['WZ'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WZ * 1.138 # NLO -> NNLO k-factor -} - -structure['ZZ'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZZ, -} - -structure['VVV'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_VVV, -} - - -# Higgs -structure['ggH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ggH_hww, -} - -structure['qqH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_qqH_hww, -} - -structure['ZH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZH_hww, -} - -# structure['ggZH_hww'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_ggZH_hww, -# } - -structure['WH_hww_plus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_hww_plus*signal_normalization, -} - -structure['WH_hww_minus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_hww_minus*signal_normalization, -} - -structure['ttH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ttH_hww, -} - -structure['ggH_htt'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ggH_htt, -} - -structure['qqH_htt'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_qqH_htt, -} - -structure['ZH_htt'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZH_htt, -} - -structure['WH_htt_plus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_htt_plus*signal_normalization, -} - -structure['WH_htt_minus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_htt_minus*signal_normalization, -} - - -# Fakes -structure['Fake_ee'] = { - 'isSignal' : 0, - 'isData' : 0, -} - -structure['Fake_mm'] = { - 'isSignal' : 0, - 'isData' : 0, -} - -structure['Fake_em'] = { - 'isSignal' : 0, - 'isData' : 0, -} - - -# # Data-driven charge flip estimation -# structure['ChargeFlip'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : 0.5, -# } - -# Data -structure['DATA'] = { - 'isSignal' : 0, - 'isData' : 1 -} From e69d59c97aad47f653c3a1b62478607deb20b651 Mon Sep 17 00:00:00 2001 From: ntrevisa Date: Thu, 28 Aug 2025 11:06:13 +0200 Subject: [PATCH 29/44] WHSS 2017 working using new fake rates --- .../UL/Full2017_v9/WHSS/aliases.py | 96 ++++++++++--------- .../UL/Full2017_v9/WHSS/configuration.py | 10 +- .../WHSS/configuration_1j/configuration.py | 18 ++-- .../Full2017_v9/WHSS/configuration_1j/cuts.py | 12 +-- .../WHSS/configuration_1j/structure.py | 2 +- .../WHSS/configuration_1j_mm/configuration.py | 18 ++-- .../WHSS/configuration_1j_mm/cuts.py | 6 +- .../WHSS/configuration_1j_mm/structure.py | 2 +- .../WHSS/configuration_2j/configuration.py | 18 ++-- .../Full2017_v9/WHSS/configuration_2j/cuts.py | 12 +-- .../WHSS/configuration_2j/structure.py | 2 +- .../WHSS/configuration_2j_mm/configuration.py | 18 ++-- .../WHSS/configuration_2j_mm/cuts.py | 6 +- .../WHSS/configuration_2j_mm/structure.py | 2 +- .../UL/Full2017_v9/WHSS/cuts.py | 92 ++++++------------ .../UL/Full2017_v9/WHSS/do_datacards.sh | 20 ---- .../UL/Full2017_v9/WHSS/nuisances.py | 23 ++++- .../UL/Full2017_v9/WHSS/plot.py | 66 +++---------- .../UL/Full2017_v9/WHSS/structure.py | 14 +-- 19 files changed, 189 insertions(+), 248 deletions(-) diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/aliases.py b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/aliases.py index 4e27fafc..75de05cd 100644 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/aliases.py +++ b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/aliases.py @@ -3,7 +3,6 @@ import inspect # /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2017_v9/WHSS - configurations = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file configurations = os.path.dirname(configurations) # WHSS configurations = os.path.dirname(configurations) # Full2017_v9 @@ -35,110 +34,117 @@ # ttHMVA SFs and uncertainties aliases['LepWPttHMVASF'] = { - 'linesToAdd' : ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH = ttHMVASF(\"2017\", 2, \"all\", \"nominal\");')"], 'expr' : 'ttH(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc } aliases['LepWPttHMVASFEleUp'] = { - 'linesToAdd' : ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_EleUp = ttHMVASF(\"2017\", 2, \"all\", \"eleUp\");')"], 'expr' : 'ttH_EleUp(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc } aliases['LepWPttHMVASFEleDown'] = { - 'linesToAdd' : ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_EleDown = ttHMVASF(\"2017\", 2, \"all\", \"eleDown\");')"], 'expr' : 'ttH_EleDown(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc } aliases['LepWPttHMVASFMuUp'] = { - 'linesToAdd' : ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_MuUp = ttHMVASF(\"2017\", 2, \"all\", \"muUp\");')"], 'expr' : 'ttH_MuUp(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc } aliases['LepWPttHMVASFMuDown'] = { - 'linesToAdd' : ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_MuDown = ttHMVASF(\"2017\", 2, \"all\", \"muDown\");')"], 'expr' : 'ttH_MuDown(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc } +# Conept +aliases['Lepton_conept'] = { + 'expr': 'LeptonConePt(Lepton_pt, Lepton_pdgId, Lepton_electronIdx, Lepton_muonIdx, Electron_jetRelIso, Muon_jetRelIso)', + 'linesToAdd': [f'#include "{configurations}/macros/LeptonConePt_class.cc"'], + 'samples': mc + ['Fake', 'DATA', 'DATA_unprescaled'] +} + # Fake leptons transfer factor aliases['fakeW'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"nominal\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"nominal\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'] } # And variations - already divided by central values in formulas ! aliases['fakeWEleUp'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleUp = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"EleUp\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader_EleUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples' : ['Fake'] + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleUp = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"EleUp\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_EleUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] } aliases['fakeWEleDown'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleDown = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"EleDown\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader_EleDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples' : ['Fake'] + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleDown = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"EleDown\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_EleDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] } aliases['fakeWMuUp'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuUp = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"MuUp\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader_MuUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples' : ['Fake'] + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuUp = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"MuUp\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_MuUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] } aliases['fakeWMuDown'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuDown = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"MuDown\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader_MuDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples' : ['Fake'] + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuDown = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"MuDown\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_MuDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] } aliases['fakeWStatEleUp'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleUp = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"StatEleUp\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader_StatEleUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples' : ['Fake'] + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleUp = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"StatEleUp\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_StatEleUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] } aliases['fakeWStatEleDown'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleDown = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"StatEleDown\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader_StatEleDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples' : ['Fake'] + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleDown = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"StatEleDown\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_StatEleDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] } aliases['fakeWStatMuUp'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuUp = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"StatMuUp\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader_StatMuUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples' : ['Fake'] + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuUp = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"StatMuUp\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_StatMuUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] } aliases['fakeWStatMuDown'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuDown = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"StatMuDown\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader_StatMuDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples' : ['Fake'] + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuDown = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"StatMuDown\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_StatMuDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] } # Charge-flip efficiencies and uncertainties aliases['ttHMVA_SF_flip_2l'] = { - 'linesToAdd' : ['#include "%s/macros/flipper_eff_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/flipper_eff_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('flipper_eff flipper = flipper_eff(\"UL_2017\", 2, \"Total_SF\", \"false\");')"], 'expr' : 'flipper(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : ['DY','ChargeFlip'], } aliases['ttHMVA_eff_err_flip_2l'] = { - 'linesToAdd' : ['#include "%s/macros/flipper_eff_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/flipper_eff_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('flipper_eff flipper_unc = flipper_eff(\"UL_2017\", 2, \"Total_SF\", \"false\");')"], 'expr' : 'flipper_unc(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : ['DY','ChargeFlip'], @@ -326,8 +332,8 @@ # Evaluate BDT discriminant aliases['BDT_WHSS_TopSemileptonic_v9'] = { - 'linesToAdd' : ['#include "%s/macros/BDT_WHSS_TopSemileptonic_v9_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('BDT_WHSS_TopSemileptonic_v9 BDT_WHSS = BDT_WHSS_TopSemileptonic_v9(\"BDTG_6\",\"{0}/data/BDT/2017/WHSS/weights/TMVAClassification_BDTG_6.weights.xml\");')".format(configurations)], + 'linesToAdd' : [f'#include "{configurations}/macros/BDT_WHSS_TopSemileptonic_v9_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('BDT_WHSS_TopSemileptonic_v9 BDT_WHSS = BDT_WHSS_TopSemileptonic_v9(\"BDTG_6\",\"{configurations}/data/BDT/2017/WHSS/weights/TMVAClassification_BDTG_6.weights.xml\");')"], 'expr' : 'BDT_WHSS(mll,mjj,mtw1,mtw2,ptll,mlljj20_whss,PuppiMET_pt,dphill,dphijj,dphillmet,dphilmet2,dphijet1met,CleanJet_pt,Jet_btagDeepB,CleanJet_jetIdx)', 'samples' : mc + ['DATA','Fake'], } diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration.py b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration.py index 0372c66f..48c51519 100644 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration.py +++ b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration.py @@ -2,8 +2,12 @@ import sys,inspect -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/ +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/ configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file configurations_nuisance = os.path.dirname(configurations_nuisance) # WHSS configurations_nuisance = os.path.dirname(configurations_nuisance) # Full2017_v9 @@ -19,7 +23,9 @@ outputFile = "mkShapes__{}.root".format(tag) # Path to ouput folder -outputFolder = "../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +if site == 'kit': + outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" # Path to batch folder (used for condor submission) batchFolder = "condor" diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j/configuration.py b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j/configuration.py index 4eea2193..caf45984 100644 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j/configuration.py +++ b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j/configuration.py @@ -2,8 +2,12 @@ import sys,inspect -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/ +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/ configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file configurations_nuisance = os.path.dirname(configurations_nuisance) # configuration_1j configurations_nuisance = os.path.dirname(configurations_nuisance) # WHSS @@ -20,7 +24,9 @@ outputFile = "plots_WHSS_2017_v9_chargeAsymmetry_Mu82_EleUL90_DYflip_data.root" # "mkShapes__{}.root".format(tag) # Path to ouput folder -outputFolder = "../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +if site == 'kit': + outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" # Path to batch folder (used for condor submission) batchFolder = "condor" @@ -28,10 +34,10 @@ # Path to configuration folder (will contain all the compiled configuration files) configsFolder = "configs" -# Luminosity to normalize to (in 1/fb) -# https://github.com/latinos/LatinoAnalysis/blob/UL_production/NanoGardener/python/data/TrigMaker_cfg.py#L868 (874) -# 59.832475339 -lumi = 59.83 +# luminosity to normalize to (in 1/fb) +# https://github.com/latinos/LatinoAnalysis/blob/UL_production/NanoGardener/python/data/TrigMaker_cfg.py#L514 (519, 589, 660, 729, 798) +# 4.803371586 + 9.574029838 + 4.247792714 + 9.314581016 + 13.53990537 = 41.479680524 +lumi = 41.48 # File with dict of aliases to define aliasesFile = "../aliases.py" diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j/cuts.py b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j/cuts.py index 7b309dfe..626f7ef3 100644 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j/cuts.py +++ b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j/cuts.py @@ -23,9 +23,9 @@ # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', 'minus_pt2ge20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - 'minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # 'minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', } } @@ -36,9 +36,9 @@ # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', 'minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', } } diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j/structure.py b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j/structure.py index 99b1f920..f43cd00b 100644 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j/structure.py +++ b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j/structure.py @@ -2,7 +2,7 @@ # keys here must match keys in samples.py -signal_normalization = 10.0 +signal_normalization = 1.0 # BTag normalization factors # Cut = hww2l2v_13TeV_samesign_1j diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_mm/configuration.py b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_mm/configuration.py index ef9395d4..e412819e 100644 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_mm/configuration.py +++ b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_mm/configuration.py @@ -2,8 +2,12 @@ import sys,inspect -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_mm +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_mm configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file configurations_nuisance = os.path.dirname(configurations_nuisance) # configuration_1j_mm configurations_nuisance = os.path.dirname(configurations_nuisance) # WHSS @@ -20,7 +24,9 @@ outputFile = "plots_WHSS_2017_v9_chargeAsymmetry_Mu82_EleUL90_DYflip_data.root" # "mkShapes__{}.root".format(tag) # Path to ouput folder -outputFolder = "../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +if site == 'kit': + outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" # Path to batch folder (used for condor submission) batchFolder = "condor" @@ -28,10 +34,10 @@ # Path to configuration folder (will contain all the compiled configuration files) configsFolder = "configs" -# Luminosity to normalize to (in 1/fb) -# https://github.com/latinos/LatinoAnalysis/blob/UL_production/NanoGardener/python/data/TrigMaker_cfg.py#L868 (874) -# 59.832475339 -lumi = 59.83 +# luminosity to normalize to (in 1/fb) +# https://github.com/latinos/LatinoAnalysis/blob/UL_production/NanoGardener/python/data/TrigMaker_cfg.py#L514 (519, 589, 660, 729, 798) +# 4.803371586 + 9.574029838 + 4.247792714 + 9.314581016 + 13.53990537 = 41.479680524 +lumi = 41.48 # File with dict of aliases to define aliasesFile = "../aliases.py" diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_mm/cuts.py b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_mm/cuts.py index ff47c1bc..63f4fa98 100644 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_mm/cuts.py +++ b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_mm/cuts.py @@ -23,9 +23,9 @@ # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', 'minus_pt2ge20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - 'minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # 'minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', } } diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_mm/structure.py b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_mm/structure.py index 3d3734d2..17d8e074 100644 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_mm/structure.py +++ b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_1j_mm/structure.py @@ -4,7 +4,7 @@ structure = {} -signal_normalization = 10.0 +signal_normalization = 1.0 # BTag normalization factors # Cut = hww2l2v_13TeV_samesign_1j diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j/configuration.py b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j/configuration.py index 743ae711..560e8250 100644 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j/configuration.py +++ b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j/configuration.py @@ -2,8 +2,12 @@ import sys,inspect -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file configurations_nuisance = os.path.dirname(configurations_nuisance) # configuration_2j configurations_nuisance = os.path.dirname(configurations_nuisance) # WHSS @@ -20,7 +24,9 @@ outputFile = "plots_WHSS_2017_v9_chargeAsymmetry_Mu82_EleUL90_DYflip_data.root" # "mkShapes__{}.root".format(tag) # Path to ouput folder -outputFolder = "../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +if site == 'kit': + outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" # Path to batch folder (used for condor submission) batchFolder = "condor" @@ -28,10 +34,10 @@ # Path to configuration folder (will contain all the compiled configuration files) configsFolder = "configs" -# Luminosity to normalize to (in 1/fb) -# https://github.com/latinos/LatinoAnalysis/blob/UL_production/NanoGardener/python/data/TrigMaker_cfg.py#L868 (874) -# 59.832475339 -lumi = 59.83 +# luminosity to normalize to (in 1/fb) +# https://github.com/latinos/LatinoAnalysis/blob/UL_production/NanoGardener/python/data/TrigMaker_cfg.py#L514 (519, 589, 660, 729, 798) +# 4.803371586 + 9.574029838 + 4.247792714 + 9.314581016 + 13.53990537 = 41.479680524 +lumi = 41.48 # File with dict of aliases to define aliasesFile = "../aliases.py" diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j/cuts.py b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j/cuts.py index c286ef97..fe084d7a 100644 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j/cuts.py +++ b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j/cuts.py @@ -23,9 +23,9 @@ # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', 'minus_pt2ge20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - 'minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # 'minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', } } @@ -36,9 +36,9 @@ # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', 'minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', } } diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j/structure.py b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j/structure.py index d93bf840..82a9248b 100644 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j/structure.py +++ b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j/structure.py @@ -2,7 +2,7 @@ # keys here must match keys in samples.py -signal_normalization = 10.0 +signal_normalization = 1.0 # BTag normalization factors # Cut = hww2l2v_13TeV_samesign_2j diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_mm/configuration.py b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_mm/configuration.py index f89a53ca..ecac7417 100644 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_mm/configuration.py +++ b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_mm/configuration.py @@ -2,8 +2,12 @@ import sys,inspect -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_mm +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_mm configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file configurations_nuisance = os.path.dirname(configurations_nuisance) # configuration_2j_mm configurations_nuisance = os.path.dirname(configurations_nuisance) # WHSS @@ -20,7 +24,9 @@ outputFile = "plots_WHSS_2017_v9_chargeAsymmetry_Mu82_EleUL90_DYflip_data.root" # "mkShapes__{}.root".format(tag) # Path to ouput folder -outputFolder = "../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +if site == 'kit': + outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" # Path to batch folder (used for condor submission) batchFolder = "condor" @@ -28,10 +34,10 @@ # Path to configuration folder (will contain all the compiled configuration files) configsFolder = "configs" -# Luminosity to normalize to (in 1/fb) -# https://github.com/latinos/LatinoAnalysis/blob/UL_production/NanoGardener/python/data/TrigMaker_cfg.py#L868 (874) -# 59.832475339 -lumi = 59.83 +# luminosity to normalize to (in 1/fb) +# https://github.com/latinos/LatinoAnalysis/blob/UL_production/NanoGardener/python/data/TrigMaker_cfg.py#L514 (519, 589, 660, 729, 798) +# 4.803371586 + 9.574029838 + 4.247792714 + 9.314581016 + 13.53990537 = 41.479680524 +lumi = 41.48 # File with dict of aliases to define aliasesFile = "../aliases.py" diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_mm/cuts.py b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_mm/cuts.py index 8f7555b1..6b6e1e4d 100644 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_mm/cuts.py +++ b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_mm/cuts.py @@ -23,9 +23,9 @@ # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', 'minus_pt2ge20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - 'minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # 'minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', } } diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_mm/structure.py b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_mm/structure.py index 97df3a32..a49abb6e 100644 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_mm/structure.py +++ b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/configuration_2j_mm/structure.py @@ -2,7 +2,7 @@ # keys here must match keys in samples.py -signal_normalization = 10.0 +signal_normalization = 1.0 # BTag normalization factors # Cut = hww2l2v_13TeV_samesign_2j diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/cuts.py b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/cuts.py index 71dd4c26..aca60265 100644 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/cuts.py +++ b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/cuts.py @@ -17,58 +17,40 @@ # mu-mu cuts['hww2l2v_13TeV_WH_SS_noZveto_mm_2j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 13*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && mjj < 100 && mlljj20_whss > 50.', + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 13*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && mjj < 400 && mlljj20_whss > 50.', 'categories' : { # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', 'minus_pt2ge20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - 'minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT >= 20 GeV) - 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT < 20 GeV) - 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # 'minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', } } # mu-e cuts['hww2l2v_13TeV_WH_SS_em_2j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && mjj < 100 && mlljj20_whss > 50.', + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && mjj < 400 && mlljj20_whss > 50.', 'categories' : { # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', 'minus_pt2ge20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - 'minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT >= 20 GeV) - 'SS_CR_plus_pt2ge20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2ge20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT < 20 GeV) - 'SS_CR_plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # 'minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', } } # e-e cuts['hww2l2v_13TeV_WH_SS_ee_2j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*11) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && mjj < 100 && abs(mll-91.2)>15 && mlljj20_whss > 50.', + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*11) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && mjj < 400 && abs(mll-91.2)>15 && mlljj20_whss > 50.', 'categories' : { # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', 'minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT >= 20 GeV) - 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT < 20 GeV) - 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', } } @@ -82,15 +64,9 @@ # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', 'minus_pt2ge20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - 'minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT >= 20 GeV) - 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT < 20 GeV) - 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # 'minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', } } @@ -101,15 +77,9 @@ # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', 'minus_pt2ge20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - 'minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT >= 20 GeV) - 'SS_CR_plus_pt2ge20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2ge20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT < 20 GeV) - 'SS_CR_plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # 'minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', } } @@ -120,15 +90,9 @@ # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', 'minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT >= 20 GeV) - 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT < 20 GeV) - 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', } } @@ -145,14 +109,14 @@ # DY CR 2jets cuts['hww2l2v_13TeV_WH_SS_DYee_2j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*11) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && mjj < 100 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0 && abs(mll-91.2)<15 && mlljj20_whss > 50.', + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*11) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && mjj < 400 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0 && abs(mll-91.2)<15 && mlljj20_whss > 50.', 'categories' : { # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20', 'minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20', - 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20', + # 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20', } } @@ -163,9 +127,9 @@ # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20', 'minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20', - 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20', + # 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20', } } diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/do_datacards.sh b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/do_datacards.sh index 9b334dff..b3b6c2f3 100644 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/do_datacards.sh +++ b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/do_datacards.sh @@ -5,37 +5,17 @@ mkShapesRDF -c 1 mkDatacards --outputDirDatacard ../datacards_original_signal_scale --skipMissingNuisance cd - -cd configuration_1j_CR -mkShapesRDF -c 1 -mkDatacards --outputDirDatacard ../datacards_original_signal_scale --skipMissingNuisance -cd - - cd configuration_1j_mm mkShapesRDF -c 1 mkDatacards --outputDirDatacard ../datacards_original_signal_scale --skipMissingNuisance cd - -cd configuration_1j_mm_CR -mkShapesRDF -c 1 -mkDatacards --outputDirDatacard ../datacards_original_signal_scale --skipMissingNuisance -cd - - cd configuration_2j mkShapesRDF -c 1 mkDatacards --outputDirDatacard ../datacards_original_signal_scale --skipMissingNuisance cd - -cd configuration_2j_CR -mkShapesRDF -c 1 -mkDatacards --outputDirDatacard ../datacards_original_signal_scale --skipMissingNuisance -cd - - cd configuration_2j_mm mkShapesRDF -c 1 mkDatacards --outputDirDatacard ../datacards_original_signal_scale --skipMissingNuisance cd - - -cd configuration_2j_mm_CR -mkShapesRDF -c 1 -mkDatacards --outputDirDatacard ../datacards_original_signal_scale --skipMissingNuisance -cd - diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/nuisances.py b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/nuisances.py index e5848ab3..e977a2af 100644 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/nuisances.py +++ b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/nuisances.py @@ -65,11 +65,13 @@ def makeMCDirectory(var=''): #### FAKES -fake_syst_endcap = ['1.0*(abs(Lepton_eta[1])<=1.4) + 1.3*(abs(Lepton_eta[1])>1.4)', - '1.0*(abs(Lepton_eta[1])<=1.4) + 1.0/1.3*(abs(Lepton_eta[1])>1.4)'] -fake_syst_barrel = [' 1.3*(abs(Lepton_eta[1])<=1.4) + 1.0*(abs(Lepton_eta[1])>1.4)', - '1.0/1.3*(abs(Lepton_eta[1])<=1.4) + 1.0*(abs(Lepton_eta[1])>1.4)'] +# Systematic uncertainty split into barrel and endcap, and per final state: 10% per bin +fake_syst_endcap = ['1.0*(abs(Lepton_eta[1])<=1.479) + 1.1*(abs(Lepton_eta[1])>1.479)', + '1.0*(abs(Lepton_eta[1])<=1.479) + 1.0/1.1*(abs(Lepton_eta[1])>1.479)'] + +fake_syst_barrel = [' 1.1*(abs(Lepton_eta[1])<=1.479) + 1.0*(abs(Lepton_eta[1])>1.479)', + '1.0/1.1*(abs(Lepton_eta[1])<=1.479) + 1.0*(abs(Lepton_eta[1])>1.479)'] nuisances['fake_syst_mm_barrel'] = { 'name' : 'CMS_WH_hww_fake_syst_mm_barrel', @@ -128,6 +130,19 @@ def makeMCDirectory(var=''): 'cuts' : [cut for cut in cuts if ('_ee_' in cut)] } +# Overall 30% normalization +nuisances['fake_syst'] = { + 'name' : 'CMS_WH_hww_fake_syst_2017', + 'kind' : 'weight', + 'type' : 'lnN', + 'samples' : { + 'Fake_mm' : '1.3', + 'Fake_em' : '1.3', + 'Fake_ee' : '1.3', + }, +} + +# Statistical and systematic uncertainty on the fake rates nuisances['fake_ele'] = { 'name' : 'CMS_WH_hww_fake_e_2017', 'kind' : 'weight', diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/plot.py b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/plot.py index ccdeda4b..72e8f7e0 100644 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/plot.py +++ b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/plot.py @@ -54,46 +54,18 @@ 'samples' : ['WZ'] } -# groupPlot['Vg'] = { -# 'nameHR' : "V#gamma", -# 'isSignal' : 0, -# 'color' : 810, # kOrange + 10 -# 'samples' : ['Wg','Zg'] -# } - -groupPlot['Zg'] = { - 'nameHR' : "Z#gamma", +groupPlot['Vg'] = { + 'nameHR' : "V#gamma", 'isSignal' : 0, 'color' : 810, # kOrange + 10 - 'samples' : ['Zg'] -} - -groupPlot['Wg'] = { - 'nameHR' : "W#gamma", - 'isSignal' : 0, - 'color' : 859, - 'samples' : ['Wg'] -} - -# groupPlot['VgS'] = { -# 'nameHR' : "V#gamma*", -# 'isSignal' : 0, -# 'color' : 412, # kGreen - 9 -# 'samples' : ['ZgS','WgS'] -# } - -groupPlot['WgS'] = { - 'nameHR' : "W#gamma*", - 'isSignal' : 0, - 'color' : 409, # kGreen - 9 - 'samples' : ['WgS'] + 'samples' : ['Vg'] } -groupPlot['ZgS'] = { - 'nameHR' : "Z#gamma*", +groupPlot['VgS'] = { + 'nameHR' : "V#gamma*", 'isSignal' : 0, - 'color' : 617, - 'samples' : ['ZgS'] + 'color' : 412, # kGreen - 9 + 'samples' : ['VgS'] } groupPlot['Higgs'] = { @@ -162,32 +134,16 @@ 'scale' : 1.0 } -plot['Zg'] = { - 'nameHR' : 'Zg', +plot['Vg'] = { + 'nameHR' : 'Vg', 'color' : 859, # kAzure -1 'isSignal' : 0, 'isData' : 0, 'scale' : 1.0 } -plot['Wg'] = { - 'nameHR' : 'Wg', - 'color' : 859, # kAzure -1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['ZgS'] = { - 'nameHR' : 'ZgS', - 'color' : 617, # kViolet + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['WgS'] = { - 'nameHR' : 'WgS', +plot['VgS'] = { + 'nameHR' : 'VgS', 'color' : 859, # kAzure -1 'isSignal' : 0, 'isData' : 0, diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/structure.py b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/structure.py index 2ea8c5ef..37a9fb5d 100644 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/structure.py +++ b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/structure.py @@ -29,22 +29,12 @@ 'isData' : 0, } -structure['Wg'] = { +structure['Vg'] = { 'isSignal' : 0, 'isData' : 0, } -structure['Zg'] = { - 'isSignal' : 0, - 'isData' : 0, -} - -structure['WgS'] = { - 'isSignal' : 0, - 'isData' : 0, -} - -structure['ZgS'] = { +structure['VgS'] = { 'isSignal' : 0, 'isData' : 0, } From 4588a1b4b0c85cb833ec6e842c8dcd12713de1e8 Mon Sep 17 00:00:00 2001 From: ntrevisa Date: Thu, 28 Aug 2025 11:06:43 +0200 Subject: [PATCH 30/44] WHSS 2017 working using new fake rates --- .../UL/Full2017_v9/WHSS/DY_OS_CR/aliases.py | 91 ++++++++++--------- .../WHSS/DY_OS_CR/configuration.py | 14 ++- .../UL/Full2017_v9/WHSS/DY_OS_CR/cuts.py | 32 +++---- .../UL/Full2017_v9/WHSS/DY_OS_CR/nuisances.py | 23 ++++- .../UL/Full2017_v9/WHSS/DY_OS_CR/plot.py | 66 +++----------- .../UL/Full2017_v9/WHSS/DY_OS_CR/structure.py | 14 +-- .../UL/Full2017_v9/WHSS/do_plots.sh | 20 ---- 7 files changed, 110 insertions(+), 150 deletions(-) diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/DY_OS_CR/aliases.py b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/DY_OS_CR/aliases.py index 6b72d9ba..eeaab7ec 100644 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/DY_OS_CR/aliases.py +++ b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/DY_OS_CR/aliases.py @@ -35,110 +35,117 @@ # ttHMVA SFs and uncertainties aliases['LepWPttHMVASF'] = { - 'linesToAdd' : ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH = ttHMVASF(\"2017\", 2, \"all\", \"nominal\");')"], 'expr' : 'ttH(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc, } aliases['LepWPttHMVASFEleUp'] = { - 'linesToAdd' : ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_EleUp = ttHMVASF(\"2017\", 2, \"all\", \"eleUp\");')"], 'expr' : 'ttH_EleUp(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc, } aliases['LepWPttHMVASFEleDown'] = { - 'linesToAdd' : ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_EleDown = ttHMVASF(\"2017\", 2, \"all\", \"eleDown\");')"], 'expr' : 'ttH_EleDown(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc, } aliases['LepWPttHMVASFMuUp'] = { - 'linesToAdd' : ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_MuUp = ttHMVASF(\"2017\", 2, \"all\", \"muUp\");')"], 'expr' : 'ttH_MuUp(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc, } aliases['LepWPttHMVASFMuDown'] = { - 'linesToAdd' : ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_MuDown = ttHMVASF(\"2017\", 2, \"all\", \"muDown\");')"], 'expr' : 'ttH_MuDown(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc, } +# Conept +aliases['Lepton_conept'] = { + 'expr': 'LeptonConePt(Lepton_pt, Lepton_pdgId, Lepton_electronIdx, Lepton_muonIdx, Electron_jetRelIso, Muon_jetRelIso)', + 'linesToAdd': [f'#include "{configurations}/macros/LeptonConePt_class.cc"'], + 'samples': mc + ['Fake', 'DATA', 'DATA_unprescaled'] +} + # Fake leptons transfer factor aliases['fakeW'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"nominal\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"nominal\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'], } # And variations - already divided by central values in formulas ! aliases['fakeWEleUp'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleUp = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"EleUp\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader_EleUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples' : ['Fake'], + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleUp = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"EleUp\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_EleUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'], } aliases['fakeWEleDown'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleDown = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"EleDown\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader_EleDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples' : ['Fake'], + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleDown = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"EleDown\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_EleDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'], } aliases['fakeWMuUp'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuUp = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"MuUp\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader_MuUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples' : ['Fake'], + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuUp = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"MuUp\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_MuUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'], } aliases['fakeWMuDown'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuDown = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"MuDown\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader_MuDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples' : ['Fake'], + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuDown = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"MuDown\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_MuDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'], } aliases['fakeWStatEleUp'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleUp = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"StatEleUp\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader_StatEleUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples' : ['Fake'], + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleUp = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"StatEleUp\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_StatEleUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'], } aliases['fakeWStatEleDown'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleDown = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"StatEleDown\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader_StatEleDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples' : ['Fake'], + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleDown = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"StatEleDown\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_StatEleDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'], } aliases['fakeWStatMuUp'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuUp = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"StatMuUp\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader_StatMuUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples' : ['Fake'], + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuUp = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"StatMuUp\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_StatMuUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'], } aliases['fakeWStatMuDown'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuDown = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"StatMuDown\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader_StatMuDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples' : ['Fake'], + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuDown = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"StatMuDown\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_StatMuDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'], } # Charge-flip efficiencies and uncertainties aliases['ttHMVA_eff_flip_2l'] = { - 'linesToAdd' : ['#include "%s/macros/flipper_eff_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/flipper_eff_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('flipper_eff flipper = flipper_eff(\"UL_2017\", 2, \"Total_SF\", \"false\");')"], 'expr' : 'flipper(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc + ['DATA','Fake'], } aliases['ttHMVA_eff_err_flip_2l'] = { - 'linesToAdd' : ['#include "%s/macros/flipper_eff_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/flipper_eff_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('flipper_eff flipper_unc = flipper_eff(\"UL_2017\", 2, \"Total_SF\", \"false\");')"], 'expr' : 'flipper_unc(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc + ['DATA','Fake'], diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/DY_OS_CR/configuration.py b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/DY_OS_CR/configuration.py index 0da5abd8..d3eeb011 100644 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/DY_OS_CR/configuration.py +++ b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/DY_OS_CR/configuration.py @@ -1,5 +1,12 @@ # Configuration file for charge asymmetry WHSS analysis using the UL 2017 dataset +import sys,inspect + +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' + # Tag used to identify the configuration folder version tag = 'WHSS_OSCR_2017_v9_chargeAsymmetry_Mu82_EleUL90' @@ -9,8 +16,13 @@ # Output file name outputFile = "mkShapes__{}.root".format(tag) +# Output file name +outputFile = "mkShapes__{}.root".format(tag) + # Path to ouput folder -outputFolder = "../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +if site == 'kit': + outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" # Path to batch folder (used for condor submission) batchFolder = "condor" diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/DY_OS_CR/cuts.py b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/DY_OS_CR/cuts.py index 9447c4e9..9213d0b9 100644 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/DY_OS_CR/cuts.py +++ b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/DY_OS_CR/cuts.py @@ -16,16 +16,16 @@ # 2 Jets cuts['hww2l2v_13TeV_WH_OS_ee_2j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == -11*11) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && mjj < 100 && mlljj20_whss > 50.', + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == -11*11) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && mjj < 400 && mlljj20_whss > 50.', 'categories' : { # Sub-leading lepton pT >= 20 GeV 'pt2ge20' : 'abs(mll-91.2)>15 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # OUT Z-peak 'SS_CR_pt2ge20' : 'abs(mll-91.2)>15 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', # OUT Z-peak SS CR --> inverting detall cut 'DYeeCR_pt2ge20' : 'abs(mll-91.2)<=15 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # IN Z-peak - # Sub-leading lepton pT < 20 GeV - 'pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # OUT Z-peak - 'SS_CR_pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', # OUT Z-peak SS CR --> inverting detall cut - 'DYeeCR_pt2lt20' : 'abs(mll-91.2)<=15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # IN Z-peak + # # Sub-leading lepton pT < 20 GeV + # 'pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # OUT Z-peak + # 'SS_CR_pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', # OUT Z-peak SS CR --> inverting detall cut + # 'DYeeCR_pt2lt20' : 'abs(mll-91.2)<=15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # IN Z-peak } } @@ -37,10 +37,10 @@ 'pt2ge20' : 'abs(mll-91.2)>15 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # OUT Z-peak 'SS_CR_pt2ge20' : 'abs(mll-91.2)>15 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', # OUT Z-peak SS CR --> inverting detall cut 'DYeeCR_pt2ge20' : 'abs(mll-91.2)<=15 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # IN Z-peak - # Sub-leading lepton pT < 20 GeV - 'pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # OUT Z-peak - 'SS_CR_pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', # OUT Z-peak SS CR --> inverting detall cut - 'DYeeCR_pt2lt20' : 'abs(mll-91.2)<=15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # IN Z-peak + # # Sub-leading lepton pT < 20 GeV + # 'pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # OUT Z-peak + # 'SS_CR_pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', # OUT Z-peak SS CR --> inverting detall cut + # 'DYeeCR_pt2lt20' : 'abs(mll-91.2)<=15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # IN Z-peak } } @@ -48,14 +48,14 @@ # 2 Jets cuts['hww2l2v_13TeV_WH_OS_em_2j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == -11*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && mjj < 100 && mlljj20_whss > 50.', + 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == -11*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && mjj < 400 && mlljj20_whss > 50.', 'categories' : { # Sub-leading lepton pT >= 20 GeV 'pt2ge20' : 'abs(mll-91.2)>15 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # OUT Z-peak 'SS_CR_pt2ge20' : 'abs(mll-91.2)>15 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', # OUT Z-peak SS CR --> inverting detall cut - # Sub-leading lepton pT < 20 GeV - 'pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # OUT Z-peak - 'SS_CR_pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', # OUT Z-peak SS CR --> inverting detall cut + # # Sub-leading lepton pT < 20 GeV + # 'pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # OUT Z-peak + # 'SS_CR_pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', # OUT Z-peak SS CR --> inverting detall cut } } @@ -66,9 +66,9 @@ # Sub-leading lepton pT >= 20 GeV 'pt2ge20' : 'abs(mll-91.2)>15 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # OUT Z-peak 'SS_CR_pt2ge20' : 'abs(mll-91.2)>15 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', # OUT Z-peak SS CR --> inverting detall cut - # Sub-leading lepton pT < 20 GeV - 'pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # OUT Z-peak - 'SS_CR_pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', # OUT Z-peak SS CR --> inverting detall cut + # # Sub-leading lepton pT < 20 GeV + # 'pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # OUT Z-peak + # 'SS_CR_pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', # OUT Z-peak SS CR --> inverting detall cut } } diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/DY_OS_CR/nuisances.py b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/DY_OS_CR/nuisances.py index 55de9622..52c6f5c9 100644 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/DY_OS_CR/nuisances.py +++ b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/DY_OS_CR/nuisances.py @@ -65,11 +65,13 @@ def makeMCDirectory(var=''): #### FAKES -fake_syst_endcap = ['1.0*(abs(Lepton_eta[1])<=1.4) + 1.3*(abs(Lepton_eta[1])>1.4)', - '1.0*(abs(Lepton_eta[1])<=1.4) + 1.0/1.3*(abs(Lepton_eta[1])>1.4)'] -fake_syst_barrel = [' 1.3*(abs(Lepton_eta[1])<=1.4) + 1.0*(abs(Lepton_eta[1])>1.4)', - '1.0/1.3*(abs(Lepton_eta[1])<=1.4) + 1.0*(abs(Lepton_eta[1])>1.4)'] +# Systematic uncertainty split into barrel and endcap, and per final state: 10% per bin +fake_syst_endcap = ['1.0*(abs(Lepton_eta[1])<=1.479) + 1.1*(abs(Lepton_eta[1])>1.479)', + '1.0*(abs(Lepton_eta[1])<=1.479) + 1.0/1.1*(abs(Lepton_eta[1])>1.479)'] + +fake_syst_barrel = [' 1.1*(abs(Lepton_eta[1])<=1.479) + 1.0*(abs(Lepton_eta[1])>1.479)', + '1.0/1.1*(abs(Lepton_eta[1])<=1.479) + 1.0*(abs(Lepton_eta[1])>1.479)'] nuisances['fake_syst_mm_barrel'] = { 'name' : 'CMS_WH_hww_fake_syst_mm_barrel', @@ -128,6 +130,19 @@ def makeMCDirectory(var=''): 'cuts' : [cut for cut in cuts if ('_ee_' in cut)] } +# Overall 30% normalization +nuisances['fake_syst'] = { + 'name' : 'CMS_WH_hww_fake_syst_2017', + 'kind' : 'weight', + 'type' : 'lnN', + 'samples' : { + 'Fake_mm' : 1.3, + 'Fake_em' : 1.3, + 'Fake_ee' : 1.3, + }, +} + +# Statistical and systematic uncertainty on the fake rates nuisances['fake_ele'] = { 'name' : 'CMS_WH_hww_fake_e_2017', 'kind' : 'weight', diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/DY_OS_CR/plot.py b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/DY_OS_CR/plot.py index 340c915a..2e3ae6b3 100644 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/DY_OS_CR/plot.py +++ b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/DY_OS_CR/plot.py @@ -40,46 +40,18 @@ 'samples' : ['WZ'] } -# groupPlot['Vg'] = { -# 'nameHR' : "V#gamma", -# 'isSignal' : 0, -# 'color' : 810, # kOrange + 10 -# 'samples' : ['Wg','Zg'] -# } - -groupPlot['Zg'] = { - 'nameHR' : "Z#gamma", +groupPlot['Vg'] = { + 'nameHR' : "V#gamma", 'isSignal' : 0, 'color' : 810, # kOrange + 10 - 'samples' : ['Zg'] -} - -groupPlot['Wg'] = { - 'nameHR' : "W#gamma", - 'isSignal' : 0, - 'color' : 859, - 'samples' : ['Wg'] -} - -# groupPlot['VgS'] = { -# 'nameHR' : "V#gamma*", -# 'isSignal' : 0, -# 'color' : 412, # kGreen - 9 -# 'samples' : ['ZgS','WgS'] -# } - -groupPlot['WgS'] = { - 'nameHR' : "W#gamma*", - 'isSignal' : 0, - 'color' : 409, # kGreen - 9 - 'samples' : ['WgS'] + 'samples' : ['Vg'] } -groupPlot['ZgS'] = { - 'nameHR' : "Z#gamma*", +groupPlot['VgS'] = { + 'nameHR' : "V#gamma*", 'isSignal' : 0, - 'color' : 617, - 'samples' : ['ZgS'] + 'color' : 412, # kGreen - 9 + 'samples' : ['VgS'] } groupPlot['Higgs'] = { @@ -116,38 +88,22 @@ 'scale' : 1.0, } -plot['Zg'] = { - 'nameHR' : 'Zg', +plot['Vg'] = { + 'nameHR' : 'Vg', 'color' : 859, # kAzure -1 'isSignal' : 0, 'isData' : 0, 'scale' : 1.0 } -plot['Wg'] = { - 'nameHR' : 'Wg', - 'color' : 859, # kAzure -1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['ZgS'] = { - 'nameHR' : 'ZgS', +plot['VgS'] = { + 'nameHR' : 'VgS', 'color' : 617, # kViolet + 1 'isSignal' : 0, 'isData' : 0, 'scale' : 1.0 } -plot['WgS'] = { - 'nameHR' : 'WgS', - 'color' : 859, # kAzure -1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - plot['WZ'] = { 'nameHR' : 'WZ', 'color' : 858, # kAzure -2 diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/DY_OS_CR/structure.py b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/DY_OS_CR/structure.py index 2ea8c5ef..37a9fb5d 100644 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/DY_OS_CR/structure.py +++ b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/DY_OS_CR/structure.py @@ -29,22 +29,12 @@ 'isData' : 0, } -structure['Wg'] = { +structure['Vg'] = { 'isSignal' : 0, 'isData' : 0, } -structure['Zg'] = { - 'isSignal' : 0, - 'isData' : 0, -} - -structure['WgS'] = { - 'isSignal' : 0, - 'isData' : 0, -} - -structure['ZgS'] = { +structure['VgS'] = { 'isSignal' : 0, 'isData' : 0, } diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/do_plots.sh b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/do_plots.sh index aed966cb..7e73e124 100644 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/do_plots.sh +++ b/WH_chargeAsymmetry/UL/Full2017_v9/WHSS/do_plots.sh @@ -17,41 +17,21 @@ mkShapesRDF -c 1 mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png cd - -cd configuration_1j_CR -mkShapesRDF -c 1 -mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png -cd - - cd configuration_1j_mm mkShapesRDF -c 1 mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png cd - -cd configuration_1j_mm_CR -mkShapesRDF -c 1 -mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png -cd - - cd configuration_2j mkShapesRDF -c 1 mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png cd - -cd configuration_2j_CR -mkShapesRDF -c 1 -mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png -cd - - cd configuration_2j_mm mkShapesRDF -c 1 mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png cd - -cd configuration_2j_mm_CR -mkShapesRDF -c 1 -mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png -cd - - cp ~/index.php plots_WHSS_2017_v9_chargeAsymmetry_Mu82_EleUL90/ if [ "$DATE" != "" ]; then From 62dd2230541acfb65fe4fe226a78b7be674c8cf1 Mon Sep 17 00:00:00 2001 From: ntrevisa Date: Thu, 28 Aug 2025 11:10:16 +0200 Subject: [PATCH 31/44] WH3l 2017 working using new fake rates --- .../UL/Full2017_v9/WH3l/aliases.py | 99 ++++++++++--------- .../UL/Full2017_v9/WH3l/configuration.py | 10 +- .../WH3l/configuration_OSSF/configuration.py | 10 +- .../WH3l/configuration_OSSF/cuts.py | 3 +- .../WH3l/configuration_OSSF/structure.py | 39 +++----- .../WH3l/configuration_SSSF/structure.py | 44 ++++----- .../WH3l/configuration_WZ0j/plot.py | 24 ++--- .../WH3l/configuration_WZ0j/structure.py | 50 ++++------ .../WH3l/configuration_WZ1j/structure.py | 28 ++---- .../WH3l/configuration_WZ2j/structure.py | 28 ++---- .../UL/Full2017_v9/WH3l/cuts.py | 2 +- .../UL/Full2017_v9/WH3l/nuisances.py | 21 +++- .../UL/Full2017_v9/WH3l/plot.py | 42 ++------ .../UL/Full2017_v9/WH3l/structure.py | 14 +-- 14 files changed, 178 insertions(+), 236 deletions(-) diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/aliases.py b/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/aliases.py index 536d2104..7895adcb 100644 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/aliases.py +++ b/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/aliases.py @@ -35,98 +35,105 @@ # ttHMVA SFs and uncertainties aliases['LepWPttHMVASF'] = { - 'linesToAdd' : ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH = ttHMVASF(\"2017\", 3, \"all\", \"nominal\");')"], 'expr' : 'ttH(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc } aliases['LepWPttHMVASFEleUp'] = { - 'linesToAdd' : ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_EleUp = ttHMVASF(\"2017\", 3, \"all\", \"eleUp\");')"], 'expr' : 'ttH_EleUp(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc } aliases['LepWPttHMVASFEleDown'] = { - 'linesToAdd' : ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_EleDown = ttHMVASF(\"2017\", 3, \"all\", \"eleDown\");')"], 'expr' : 'ttH_EleDown(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc } aliases['LepWPttHMVASFMuUp'] = { - 'linesToAdd' : ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_MuUp = ttHMVASF(\"2017\", 3, \"all\", \"muUp\");')"], 'expr' : 'ttH_MuUp(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc } aliases['LepWPttHMVASFMuDown'] = { - 'linesToAdd' : ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_MuDown = ttHMVASF(\"2017\", 3, \"all\", \"muDown\");')"], 'expr' : 'ttH_MuDown(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc } +# Conept +aliases['Lepton_conept'] = { + 'expr': 'LeptonConePt(Lepton_pt, Lepton_pdgId, Lepton_electronIdx, Lepton_muonIdx, Electron_jetRelIso, Muon_jetRelIso)', + 'linesToAdd': [f'#include "{configurations}/macros/LeptonConePt_class.cc"'], + 'samples': mc + ['Fake', 'DATA', 'DATA_unprescaled'] +} + # Fake leptons transfer factor aliases['fakeW'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"nominal\", 3, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr': 'fr_reader(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"nominal\", 3, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'] } # And variations - already divided by central values in formulas ! aliases['fakeWEleUp'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleUp = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"EleUp\", 3, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr': 'fr_reader_EleUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples' : ['Fake'] + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleUp = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"EleUp\", 3, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_EleUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] } aliases['fakeWEleDown'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleDown = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"EleDown\", 3, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr': 'fr_reader_EleDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples' : ['Fake'] + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleDown = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"EleDown\", 3, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_EleDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] } aliases['fakeWMuUp'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuUp = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"MuUp\", 3, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr': 'fr_reader_MuUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples' : ['Fake'] + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuUp = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"MuUp\", 3, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_MuUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] } aliases['fakeWMuDown'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuDown = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"MuDown\", 3, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr': 'fr_reader_MuDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples' : ['Fake'] + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuDown = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"MuDown\", 3, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_MuDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] } aliases['fakeWStatEleUp'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleUp = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"StatEleUp\", 3, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr': 'fr_reader_StatEleUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples' : ['Fake'] + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleUp = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"StatEleUp\", 3, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_StatEleUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] } aliases['fakeWStatEleDown'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleDown = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"StatEleDown\", 3, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr': 'fr_reader_StatEleDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples' : ['Fake'] + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleDown = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"StatEleDown\", 3, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_StatEleDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] } aliases['fakeWStatMuUp'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuUp = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"StatMuUp\", 3, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr': 'fr_reader_StatMuUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples' : ['Fake'] + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuUp = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"StatMuUp\", 3, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_StatMuUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] } aliases['fakeWStatMuDown'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuDown = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"StatMuDown\", 3, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr': 'fr_reader_StatMuDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', - 'samples' : ['Fake'] + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuDown = fake_rate_reader(\"2017\", \"90\", \"82\", 0.90, 0.82, \"StatMuDown\", 3, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_StatMuDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'samples' : ['Fake'] } # No jet with pt > 30 GeV @@ -308,22 +315,22 @@ # Evaluate BDT discriminants aliases['BDT_WH3l_OSSF_new_v9'] = { - 'linesToAdd' : ['#include "%s/macros/BDT_WH3l_OSSF_v9_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('BDT_WH3l_OSSF_v9 BDT_WH3l_OSSF = BDT_WH3l_OSSF_v9(\"BDTG4C3\",\"{0}/data/BDT/2017/WH3l/OSSF/weights/TMVAClassification_BDTG4C3.weights.xml\");')".format(configurations)], + 'linesToAdd' : [f'#include "{configurations}/macros/BDT_WH3l_OSSF_v9_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('BDT_WH3l_OSSF_v9 BDT_WH3l_OSSF = BDT_WH3l_OSSF_v9(\"BDTG4C3\",\"{configurations}/data/BDT/2017/WH3l/OSSF/weights/TMVAClassification_BDTG4C3.weights.xml\");')"], 'expr' : 'BDT_WH3l_OSSF(WH3l_dphilllmet,WH3l_mOSll,WH3l_ptOSll,WH3l_drOSll,WH3l_ZVeto,WH3l_mtlmet,WH3l_dphilmet,WH3l_ptWWW,PuppiMET_pt,Lepton_pt)', 'samples' : mc + ['DATA','Fake'], } aliases['BDT_WH3l_SSSF_new_v9'] = { - 'linesToAdd' : ['#include "%s/macros/BDT_WH3l_SSSF_v9_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('BDT_WH3l_SSSF_v9 BDT_WH3l_SSSF = BDT_WH3l_SSSF_v9(\"BDTG4C3\",\"{0}/data/BDT/2017/WH3l/SSSF/weights/TMVAClassification_BDTG4SK01_05shrinkage.weights.xml\");')".format(configurations)], + 'linesToAdd' : [f'#include "{configurations}/macros/BDT_WH3l_SSSF_v9_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('BDT_WH3l_SSSF_v9 BDT_WH3l_SSSF = BDT_WH3l_SSSF_v9(\"BDTG4C3\",\"{configurations}/data/BDT/2017/WH3l/SSSF/weights/TMVAClassification_BDTG4SK01_05shrinkage.weights.xml\");')"], 'expr' : 'BDT_WH3l_SSSF(WH3l_dphilllmet,WH3l_mOSll,WH3l_ptOSll,WH3l_drOSll,WH3l_dphilmet,WH3l_ptWWW,PuppiMET_pt,Lepton_pt)', 'samples' : mc + ['DATA','Fake'], } aliases['BDT_WHSS_TopSemileptonic_v9'] = { - 'linesToAdd' : ['#include "%s/macros/BDT_WHSS_TopSemileptonic_v9_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('BDT_WHSS_TopSemileptonic_v9 BDT_WHSS = BDT_WHSS_TopSemileptonic_v9(\"BDTG_6\",\"{0}/data/BDT/2017/WHSS/weights/TMVAClassification_BDTG_6.weights.xml\");')".format(configurations)], + 'linesToAdd' : [f'#include "{configurations}/macros/BDT_WHSS_TopSemileptonic_v9_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('BDT_WHSS_TopSemileptonic_v9 BDT_WHSS = BDT_WHSS_TopSemileptonic_v9(\"BDTG_6\",\"{configurations}/data/BDT/2017/WHSS/weights/TMVAClassification_BDTG_6.weights.xml\");')"], 'expr' : 'BDT_WHSS(mll,mjj,mtw1,mtw2,ptll,mlljj20_whss,PuppiMET_pt,dphill,dphijj,dphillmet,dphilmet2,dphijet1met,CleanJet_pt,Jet_btagDeepB,CleanJet_jetIdx)', 'samples' : mc + ['DATA','Fake'], } diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/configuration.py b/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/configuration.py index 379445dc..0ef49fdc 100644 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/configuration.py +++ b/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/configuration.py @@ -2,8 +2,12 @@ import sys,inspect -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/ +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/ configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file configurations_nuisance = os.path.dirname(configurations_nuisance) # WH3l configurations_nuisance = os.path.dirname(configurations_nuisance) # Full2017_v9 @@ -19,7 +23,9 @@ outputFile = "mkShapes__{}.root".format(tag) # Path to ouput folder -outputFolder = "../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +if site == 'kit': + outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" # Path to batch folder (used for condor submission) batchFolder = "condor" diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/configuration_OSSF/configuration.py b/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/configuration_OSSF/configuration.py index 976aad31..4269c0cd 100644 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/configuration_OSSF/configuration.py +++ b/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/configuration_OSSF/configuration.py @@ -2,8 +2,12 @@ import sys,inspect -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/configuration_OSSF/ +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/configuration_OSSF/ configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file configurations_nuisance = os.path.dirname(configurations_nuisance) # configuration_OSSF configurations_nuisance = os.path.dirname(configurations_nuisance) # WH3l @@ -20,7 +24,9 @@ outputFile = "mkShapes__{}.root".format(tag) # Path to ouput folder -outputFolder = "../../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +if site == 'kit': + outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" # Path to batch folder (used for condor submission) batchFolder = "condor" diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/configuration_OSSF/cuts.py b/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/configuration_OSSF/cuts.py index 52374958..cd00ebcc 100644 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/configuration_OSSF/cuts.py +++ b/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/configuration_OSSF/cuts.py @@ -15,8 +15,7 @@ && (WH3l_mOSll[2] < 0 || WH3l_mOSll[2] > 12) \ && abs(WH3l_chlll) == 1 \ && bVeto \ - && !hole_veto \ - ' +' ## Signal region diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/configuration_OSSF/structure.py b/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/configuration_OSSF/structure.py index 68c2db35..38e9f26d 100644 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/configuration_OSSF/structure.py +++ b/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/configuration_OSSF/structure.py @@ -1,9 +1,8 @@ # structure configuration for datacard # keys here must match keys in samples.py -# -signal_normalization = 10.0 +signal_normalization = 1.0 # BTag normalization factors # Cut = wh3l_13TeV_ossf @@ -12,7 +11,11 @@ scale_histo_DY = 179.263293476/182.616477666 # 0.981638107181 scale_histo_WZ = 177.531779735/177.316651343 # 1.00121324416 scale_histo_Wg = 0.0/1 # 0.0 +scale_histo_Zg = 67.6616649555/66.946744614 # 1.01067894108 +scale_histo_Vg = 67.6616649555/66.946744614 scale_histo_WgS = 0.238406390483/0.247818661214 # 0.962019523932 +scale_histo_ZgS = 60.2724296872/59.287474624 # 1.01661320657 +scale_histo_VgS = (60.2724296872+0.238406390483)/(59.287474624+0.247818661214) scale_histo_ZH_htt = 0.207269098216/0.203737574985 # 1.01733368639 scale_histo_WH_hww_minus = 3.07035011258/3.06124357073 # 1.00297478513 scale_histo_ggZH_hww = 0.0540930301923/0.0542408589104 # 0.997274587441 @@ -25,20 +28,18 @@ scale_histo_ggH_htt = 0.0/1 # 0.0 scale_histo_qqH_htt = 0.0/1 # 0.0 scale_histo_ggWW = 0.335398595549/0.332412900789 # 1.00898188594 -scale_histo_ZgS = 60.2724296872/59.287474624 # 1.01661320657 scale_histo_top = 240.300684952/228.263381351 # 1.05273427358 scale_histo_WWewk = 0.0219532312348/0.0222954459818 # 0.984650912693 scale_histo_ZH_hww = 0.613957763721/0.612756085013 # 1.00196110449 -scale_histo_Zg = 67.6616649555/66.946744614 # 1.01067894108 scale_histo_WH_htt_plus = 1.07982687038/1.07653780999 # 1.00305522051 structure = {} -structure['top'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_top, -} +# structure['top'] = { +# 'isSignal' : 0, +# 'isData' : 0, +# 'scaleSampleForDatacard' : scale_histo_top, +# } structure['WW'] = { 'isSignal' : 0, @@ -46,28 +47,16 @@ 'scaleSampleForDatacard' : scale_histo_WW, } -structure['Wg'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_Wg, -} - -structure['Zg'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_Zg, -} - -structure['WgS'] = { +structure['Vg'] = { 'isSignal' : 0, 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WgS, + 'scaleSampleForDatacard' : scale_histo_Vg, } -structure['ZgS'] = { +structure['VgS'] = { 'isSignal' : 0, 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZgS, + 'scaleSampleForDatacard' : scale_histo_VgS, } structure['ZZ'] = { diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/configuration_SSSF/structure.py b/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/configuration_SSSF/structure.py index 318f1486..d8c11f3e 100644 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/configuration_SSSF/structure.py +++ b/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/configuration_SSSF/structure.py @@ -2,7 +2,7 @@ # keys here must match keys in samples.py -signal_normalization = 10.0 +signal_normalization = 1.0 # BTag normalization factors # Cut = wh3l_13TeV_sssf @@ -11,7 +11,11 @@ scale_histo_DY = 32.4936441324/31.117306538 # 1.04423061465 scale_histo_WZ = 14.691432066/14.6083730833 # 1.00568571067 scale_histo_Wg = 0.203306455636/0.203306455636 # 1.0 +scale_histo_Zg = 1.89794365098/1.90519634746 # 0.996193202614 +scale_histo_Vg = (1.89794365098+0.203306455636)/(1.90519634746+0.203306455636) scale_histo_WgS = 0.240531019447/0.26082099081 # 0.922207291294 +scale_histo_ZgS = 0.619408951876/0.616856883311 # 1.0041372134 +scale_histo_VgS = (0.619408951876+0.240531019447)/(0.616856883311+0.26082099081) scale_histo_ZH_htt = 0.117572975614/0.114819393016 # 1.02398185992 scale_histo_WH_hww_minus = 1.78755550767/1.78120096803 # 1.00356755905 scale_histo_ggZH_hww = 0.0234568247489/0.0240133039509 # 0.97682621254 @@ -24,20 +28,18 @@ scale_histo_ggH_htt = 0.0625138606953/0.0641459369924 # 0.974556825053 scale_histo_qqH_htt = 0.00481175156565/0.00481175156565 # 1.0 scale_histo_ggWW = 0.199935071843/0.19848729429 # 1.00729405657 -scale_histo_ZgS = 0.619408951876/0.616856883311 # 1.0041372134 scale_histo_top = 182.680385279/172.346678592 # 1.05995883861 scale_histo_WWewk = 0.0168717826444/0.0173046875522 # 0.974983373348 scale_histo_ZH_hww = 0.296096092846/0.295069661724 # 1.00347860609 -scale_histo_Zg = 1.89794365098/1.90519634746 # 0.996193202614 scale_histo_WH_htt_plus = 0.919274127525/0.916043657131 # 1.00352654633 structure = {} -structure['top'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_top, -} +# structure['top'] = { +# 'isSignal' : 0, +# 'isData' : 0, +# 'scaleSampleForDatacard' : scale_histo_top, +# } structure['WW'] = { 'isSignal' : 0, @@ -45,29 +47,17 @@ 'scaleSampleForDatacard' : scale_histo_WW, } -structure['Wg'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_Wg, -} - -structure['Zg'] = { +structure['Vg'] = { 'isSignal' : 0, 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_Zg, + 'scaleSampleForDatacard' : scale_histo_Vg, } -structure['WgS'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WgS, -} - -structure['ZgS'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZgS, -} +# structure['VgS'] = { +# 'isSignal' : 0, +# 'isData' : 0, +# 'scaleSampleForDatacard' : scale_histo_VgS, +# } structure['ZZ'] = { 'isSignal' : 0, diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/configuration_WZ0j/plot.py b/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/configuration_WZ0j/plot.py index dfc63c90..aa61081f 100644 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/configuration_WZ0j/plot.py +++ b/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/configuration_WZ0j/plot.py @@ -41,12 +41,12 @@ 'samples' : ['top'] } -groupPlot['Fake'] = { - 'nameHR' : 'Non-prompt', - 'isSignal' : 0, - 'color' : 921, # kGray + 1 - 'samples' : ['Fake'] -} +# groupPlot['Fake'] = { +# 'nameHR' : 'Non-prompt', +# 'isSignal' : 0, +# 'color' : 921, # kGray + 1 +# 'samples' : ['Fake'] +# } groupPlot['WW'] = { 'nameHR' : 'WW', @@ -263,12 +263,12 @@ # Fake # ######## -plot['Fake'] = { - 'color' : 921, # kGray + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} +# plot['Fake'] = { +# 'color' : 921, # kGray + 1 +# 'isSignal' : 0, +# 'isData' : 0, +# 'scale' : 1.0 +# } ######## diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/configuration_WZ0j/structure.py b/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/configuration_WZ0j/structure.py index 63c67e05..8f1857f2 100644 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/configuration_WZ0j/structure.py +++ b/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/configuration_WZ0j/structure.py @@ -2,17 +2,21 @@ # keys here must match keys in samples.py -signal_normalization = 10.0 +signal_normalization = 1.0 # BTag normalization factors # Cut = wh3l_13TeV_wz_CR_0j -scale_histo_ttH_hww = 0.0600514388024/0.0557181657263 # 1.07777128015 -scale_histo_WW = 0.97562681523/0.996830323807 # 0.97872906946 -scale_histo_DY = 711.435735309/715.111215738 # 0.994860267398 -scale_histo_WZ = 1556.55933721/1554.57978184 # 1.00127337007 -scale_histo_Wg = 0.0/1 # 0.0 -scale_histo_WgS = 1.06562071754/1.04184261722 # 1.0228231212 -scale_histo_ZH_htt = 2.7110692999/2.7019385121 # 1.003379347 +scale_histo_ttH_hww = 0.0600514388024/0.0557181657263 # 1.07777128015 +scale_histo_WW = 0.97562681523/0.996830323807 # 0.97872906946 +scale_histo_DY = 711.435735309/715.111215738 # 0.994860267398 +scale_histo_WZ = 1556.55933721/1554.57978184 # 1.00127337007 +scale_histo_Wg = 0.0/1 # 0.0 +scale_histo_Zg = 26.2884437686/26.153795853 # 1.00514831256 +scale_histo_Vg = 26.2884437686/26.153795853 +scale_histo_WgS = 1.06562071754/1.04184261722 # 1.0228231212 +scale_histo_ZgS = 19.366256454/19.0663702478 # 1.01572854205 +scale_histo_VgS = (19.366256454+1.06562071754)/(19.0663702478+1.04184261722) +scale_histo_ZH_htt = 2.7110692999/2.7019385121 # 1.003379347 scale_histo_WH_hww_minus = 0.640533519325/0.637266941276 # 1.00512591794 scale_histo_ggZH_hww = 0.3997111456/0.402788768724 # 0.992359213156 scale_histo_qqH_hww = 0.00176102931298/0.00182305213908 # 0.965978578029 @@ -24,11 +28,9 @@ scale_histo_ggH_htt = 0.000105894615393/0.000105894615393 # 1.0 scale_histo_qqH_htt = 0.0/1 # 0.0 scale_histo_ggWW = 0.120607876449/0.118508228293 # 1.01771731959 -scale_histo_ZgS = 19.366256454/19.0663702478 # 1.01572854205 scale_histo_top = 128.289756342/123.755416369 # 1.03663952744 scale_histo_WWewk = 0.00876213859711/0.0090490051931 # 0.968298548861 scale_histo_ZH_hww = 6.00887802682/6.01445939408 # 0.999072008489 -scale_histo_Zg = 26.2884437686/26.153795853 # 1.00514831256 scale_histo_WH_htt_plus = 0.398605092444/0.396353094968 # 1.00568179612 structure = {} @@ -45,28 +47,16 @@ 'scaleSampleForDatacard' : scale_histo_WW, } -structure['Wg'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_Wg, -} - -structure['Zg'] = { +structure['Vg'] = { 'isSignal' : 0, 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_Zg, + 'scaleSampleForDatacard' : scale_histo_Vg, } -structure['WgS'] = { +structure['VgS'] = { 'isSignal' : 0, 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WgS, -} - -structure['ZgS'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZgS, + 'scaleSampleForDatacard' : scale_histo_VgS, } structure['ZZ'] = { @@ -159,10 +149,10 @@ 'scaleSampleForDatacard' : scale_histo_WH_htt_plus*signal_normalization, } -structure['Fake'] = { - 'isSignal' : 0, - 'isData' : 0 -} +# structure['Fake'] = { +# 'isSignal' : 0, +# 'isData' : 0 +# } # Data diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/configuration_WZ1j/structure.py b/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/configuration_WZ1j/structure.py index a8a3db8a..c39642c4 100644 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/configuration_WZ1j/structure.py +++ b/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/configuration_WZ1j/structure.py @@ -2,7 +2,7 @@ # keys here must match keys in samples.py -signal_normalization = 10.0 +signal_normalization = 1.0 # BTag normalization factors # Cut = wh3l_13TeV_wz_CR_1j @@ -11,7 +11,11 @@ scale_histo_DY = 27.3544775078/23.5067325226 # 1.16368693444 scale_histo_WZ = 722.070081358/716.566611969 # 1.00768033187 scale_histo_Wg = 0.0/1 # 0.0 +scale_histo_Zg = 58.2570110455/56.2180396662 # 1.03626898752 +scale_histo_Vg = 58.2570110455/56.2180396662 scale_histo_WgS = 0.710087842293/0.711699783483 # 0.997735082646 +scale_histo_ZgS = 33.8991848421/33.7916805742 # 1.0031813827 +scale_histo_VgS = (33.8991848421+0.710087842293)/(33.7916805742+0.711699783483) scale_histo_ZH_htt = 1.37625922962/1.35915496252 # 1.01258448637 scale_histo_WH_hww_minus = 0.791654241601/0.790021361161 # 1.00206688138 scale_histo_ggZH_hww = 0.218323940327/0.215454720114 # 1.01331704505 @@ -24,11 +28,9 @@ scale_histo_ggH_htt = 0.0/1 # 0.0 scale_histo_qqH_htt = 0.00379935083794/0.00403252685479 # 0.942176202354 scale_histo_ggWW = 0.0168164351893/0.0170486129502 # 0.986381428121 -scale_histo_ZgS = 33.8991848421/33.7916805742 # 1.0031813827 scale_histo_top = 4.6780838878/3.14856433695 # 1.48578316565 scale_histo_WWewk = 0.00556482676262/0.00546926964109 # 1.01747164206 scale_histo_ZH_hww = 3.32473121988/3.2753136817 # 1.01508787951 -scale_histo_Zg = 58.2570110455/56.2180396662 # 1.03626898752 scale_histo_WH_htt_plus = 0.448634894474/0.44505006683 # 1.00805488621 structure = {} @@ -45,28 +47,16 @@ 'scaleSampleForDatacard' : scale_histo_WW, } -structure['Wg'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_Wg, -} - -structure['Zg'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_Zg, -} - -structure['WgS'] = { +structure['Vg'] = { 'isSignal' : 0, 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WgS, + 'scaleSampleForDatacard' : scale_histo_Vg, } -structure['ZgS'] = { +structure['VgS'] = { 'isSignal' : 0, 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZgS, + 'scaleSampleForDatacard' : scale_histo_VgS, } structure['ZZ'] = { diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/configuration_WZ2j/structure.py b/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/configuration_WZ2j/structure.py index d994d6c0..db7edd77 100644 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/configuration_WZ2j/structure.py +++ b/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/configuration_WZ2j/structure.py @@ -2,7 +2,7 @@ # keys here must match keys in samples.py -signal_normalization = 10.0 +signal_normalization = 1.0 # BTag normalization factors # Cut = wh3l_13TeV_wz_CR_2j @@ -11,7 +11,11 @@ scale_histo_DY = 13.3088286027/9.66502517957 # 1.37700920127 scale_histo_WZ = 432.961027073/433.767005889 # 0.998141908434 scale_histo_Wg = 0.0/1 # 0.0 +scale_histo_Zg = 25.7784323683/24.7714004914 # 1.04065300536 +scale_histo_Vg = 25.7784323683/24.7714004914 scale_histo_WgS = 0.387967854394/0.369932457368 # 1.04875321607 +scale_histo_ZgS = 16.557917519/16.2451103889 # 1.0192554635 +scale_histo_VgS = (16.557917519+0.387967854394)/(16.2451103889+0.369932457368) scale_histo_ZH_htt = 0.887281851424/0.853180221539 # 1.03997001926 scale_histo_WH_hww_minus = 0.431204675098/0.428028818477 # 1.00741972616 scale_histo_ggZH_hww = 0.254099523334/0.254090580933 # 1.00003519375 @@ -24,11 +28,9 @@ scale_histo_ggH_htt = 0.0/1 # 0.0 scale_histo_qqH_htt = 0.0/1 # 0.0 scale_histo_ggWW = 0.0137853464588/0.0143145790963 # 0.963028417811 -scale_histo_ZgS = 16.557917519/16.2451103889 # 1.0192554635 scale_histo_top = 8.50420615999/6.00007052393 # 1.4173510338 scale_histo_WWewk = 0.0240398559048/0.0228602613111 # 1.05160022353 scale_histo_ZH_hww = 2.60982880369/2.55684671423 # 1.02072165264 -scale_histo_Zg = 25.7784323683/24.7714004914 # 1.04065300536 scale_histo_WH_htt_plus = 0.237149327659/0.237869828818 # 0.996971027545 structure = {} @@ -45,28 +47,16 @@ 'scaleSampleForDatacard' : scale_histo_WW, } -structure['Wg'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_Wg, -} - -structure['Zg'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_Zg, -} - -structure['WgS'] = { +structure['Vg'] = { 'isSignal' : 0, 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WgS, + 'scaleSampleForDatacard' : scale_histo_Vg, } -structure['ZgS'] = { +structure['VgS'] = { 'isSignal' : 0, 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZgS, + 'scaleSampleForDatacard' : scale_histo_VgS, } structure['ZZ'] = { diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/cuts.py b/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/cuts.py index 287a2419..b57ba5bb 100644 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/cuts.py +++ b/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/cuts.py @@ -15,7 +15,7 @@ && (WH3l_mOSll[2] < 0 || WH3l_mOSll[2] > 12) \ && abs(WH3l_chlll) == 1 \ && bVeto \ - ' +' ## Signal region diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/nuisances.py b/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/nuisances.py index 6cf7eb27..9b7e3a3f 100644 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/nuisances.py +++ b/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/nuisances.py @@ -65,11 +65,13 @@ def makeMCDirectory(var=''): #### FAKES -fake_syst_endcap = ['1.0*(abs(Lepton_eta[1])<=1.4) + 1.3*(abs(Lepton_eta[1])>1.4)', - '1.0*(abs(Lepton_eta[1])<=1.4) + 1.0/1.3*(abs(Lepton_eta[1])>1.4)'] -fake_syst_barrel = [' 1.3*(abs(Lepton_eta[1])<=1.4) + 1.0*(abs(Lepton_eta[1])>1.4)', - '1.0/1.3*(abs(Lepton_eta[1])<=1.4) + 1.0*(abs(Lepton_eta[1])>1.4)'] +# Systematic uncertainty splitted into barrel and endcap, and per final state: 10% per bin +fake_syst_endcap = ['1.0*(abs(Lepton_eta[1])<=1.479) + 1.3*(abs(Lepton_eta[1])>1.479)', + '1.0*(abs(Lepton_eta[1])<=1.479) + 1.0/1.3*(abs(Lepton_eta[1])>1.479)'] + +fake_syst_barrel = [' 1.3*(abs(Lepton_eta[1])<=1.479) + 1.0*(abs(Lepton_eta[1])>1.479)', + '1.0/1.3*(abs(Lepton_eta[1])<=1.479) + 1.0*(abs(Lepton_eta[1])>1.479)'] nuisances['fake_syst_barrel'] = { 'name' : 'CMS_WH_hww_fake_syst_barrel', @@ -88,6 +90,17 @@ def makeMCDirectory(var=''): }, } +# Overall 30% normalization +nuisances['fake_syst'] = { + 'name' : 'CMS_WH_hww_fake_syst_2017', + 'kind' : 'weight', + 'type' : 'lnN', + 'samples' : { + 'Fake' : '1.3', + }, +} + +# Statistical and systematic uncertainty on the fake rates nuisances['fake_ele'] = { 'name' : 'CMS_WH_hww_fake_e_2017', 'kind' : 'weight', diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/plot.py b/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/plot.py index f0bb20e2..441c66a7 100644 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/plot.py +++ b/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/plot.py @@ -33,32 +33,18 @@ 'samples' : ['VVV'] } -groupPlot['Zg'] = { - 'nameHR' : "Z#gamma", +groupPlot['Vg'] = { + 'nameHR' : "V#gamma", 'isSignal' : 0, 'color' : 810, # kOrange + 10 - 'samples' : ['Zg'] + 'samples' : ['Vg'] } -groupPlot['ZgS'] = { - 'nameHR' : "Z#gamma*", - 'isSignal' : 0, - 'color' : 617, - 'samples' : ['ZgS'] -} - -groupPlot['Wg'] = { - 'nameHR' : "W#gamma", - 'isSignal' : 0, - 'color' : 859, - 'samples' : ['Wg'] -} - -groupPlot['WgS'] = { +groupPlot['VgS'] = { 'nameHR' : "W#gamma*", 'isSignal' : 0, 'color' : 409, # kGreen - 9 - 'samples' : ['WgS'] + 'samples' : ['VgS'] } groupPlot['ZZ'] = { @@ -116,28 +102,14 @@ 'scale' : 1.0 } -plot['Wg'] = { - 'color' : 859, # kAzure -1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['Zg'] = { - 'color' : 859, # kAzure -1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['WgS'] = { +plot['Vg'] = { 'color' : 859, # kAzure -1 'isSignal' : 0, 'isData' : 0, 'scale' : 1.0 } -plot['ZgS'] = { +plot['VgS'] = { 'color' : 617, # kViolet + 1 'isSignal' : 0, 'isData' : 0, diff --git a/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/structure.py b/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/structure.py index 9a4ce9fd..6e7afcc8 100644 --- a/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/structure.py +++ b/WH_chargeAsymmetry/UL/Full2017_v9/WH3l/structure.py @@ -14,22 +14,12 @@ 'isData' : 0 } -structure['Wg'] = { +structure['Vg'] = { 'isSignal' : 0, 'isData' : 0 } -structure['Zg'] = { - 'isSignal' : 0, - 'isData' : 0 -} - -structure['WgS'] = { - 'isSignal' : 0, - 'isData' : 0 -} - -structure['ZgS'] = { +structure['VgS'] = { 'isSignal' : 0, 'isData' : 0 } From 4e0744f729f5360ee645c0c6ef103a33977ce5fc Mon Sep 17 00:00:00 2001 From: ntrevisa Date: Thu, 28 Aug 2025 11:10:59 +0200 Subject: [PATCH 32/44] fake rates reader macro adapted to new format --- .../UL/macros/fake_rate_reader_class.cc | 74 ++++++++++++++----- 1 file changed, 56 insertions(+), 18 deletions(-) diff --git a/WH_chargeAsymmetry/UL/macros/fake_rate_reader_class.cc b/WH_chargeAsymmetry/UL/macros/fake_rate_reader_class.cc index 352c0a0f..96e98eeb 100644 --- a/WH_chargeAsymmetry/UL/macros/fake_rate_reader_class.cc +++ b/WH_chargeAsymmetry/UL/macros/fake_rate_reader_class.cc @@ -72,9 +72,13 @@ class fake_rate_reader{ TH2F* fake_rate_muon_25_; TH2F* fake_rate_muon_30_; TH2F* fake_rate_muon_35_; + TH2F* fake_rate_muon_40_; TH2F* fake_rate_muon_45_; + TH2F* fake_rate_ele_20_; TH2F* fake_rate_ele_25_; + TH2F* fake_rate_ele_30_; TH2F* fake_rate_ele_35_; + TH2F* fake_rate_ele_40_; TH2F* fake_rate_ele_45_; TH2F* prompt_rate_muon_; TH2F* prompt_rate_ele_; @@ -118,7 +122,8 @@ class fake_rate_reader{ float fakeWeight_2l1j = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], - fake_rate_ele_35_, fake_rate_muon_25_, "Nominal"); + fake_rate_ele_30_, fake_rate_muon_30_, "Nominal"); + // fake_rate_ele_35_, fake_rate_muon_25_, "Nominal"); float fakeWeight_2l2j = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], @@ -143,7 +148,8 @@ class fake_rate_reader{ float fakeWeight_2l1jElUp = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], - fake_rate_ele_45_, fake_rate_muon_25_, "Nominal"); + fake_rate_ele_40_, fake_rate_muon_30_, "Nominal"); + // fake_rate_ele_45_, fake_rate_muon_25_, "Nominal"); float fakeWeight_2l2jElUp = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], @@ -173,7 +179,8 @@ class fake_rate_reader{ float fakeWeight_2l1jElDown = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], - fake_rate_ele_25_, fake_rate_muon_25_, "Nominal"); + fake_rate_ele_20_, fake_rate_muon_30_, "Nominal"); + // fake_rate_ele_25_, fake_rate_muon_25_, "Nominal"); float fakeWeight_2l2jElDown = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], @@ -203,7 +210,8 @@ class fake_rate_reader{ float fakeWeight_2l1jMuUp = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], - fake_rate_ele_35_, fake_rate_muon_35_, "Nominal"); + fake_rate_ele_30_, fake_rate_muon_40_, "Nominal"); + // fake_rate_ele_35_, fake_rate_muon_35_, "Nominal"); float fakeWeight_2l2jMuUp = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], @@ -233,7 +241,8 @@ class fake_rate_reader{ float fakeWeight_2l1jMuDown = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], - fake_rate_ele_35_, fake_rate_muon_15_, "Nominal"); + fake_rate_ele_30_, fake_rate_muon_20_, "Nominal"); + // fake_rate_ele_35_, fake_rate_muon_15_, "Nominal"); float fakeWeight_2l2jMuDown = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], @@ -263,7 +272,8 @@ class fake_rate_reader{ float fakeWeight_2l1jstatElUp = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], - fake_rate_ele_35_, fake_rate_muon_25_, "ElUp"); + fake_rate_ele_30_, fake_rate_muon_30_, "ElUp"); + // fake_rate_ele_35_, fake_rate_muon_25_, "ElUp"); float fakeWeight_2l2jstatElUp = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], @@ -294,7 +304,8 @@ class fake_rate_reader{ float fakeWeight_2l1jstatElDown = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], - fake_rate_ele_35_, fake_rate_muon_25_, "ElDown"); + fake_rate_ele_30_, fake_rate_muon_30_, "ElDown"); + // fake_rate_ele_35_, fake_rate_muon_25_, "ElDown"); float fakeWeight_2l2jstatElDown = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], @@ -324,7 +335,8 @@ class fake_rate_reader{ float fakeWeight_2l1jstatMuUp = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], - fake_rate_ele_35_, fake_rate_muon_25_, "MuUp"); + fake_rate_ele_30_, fake_rate_muon_30_, "MuUp"); + // fake_rate_ele_35_, fake_rate_muon_25_, "MuUp"); float fakeWeight_2l2jstatMuUp = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], @@ -355,7 +367,8 @@ class fake_rate_reader{ float fakeWeight_2l1jstatMuDown = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], - fake_rate_ele_35_, fake_rate_muon_25_, "MuDown"); + fake_rate_ele_30_, fake_rate_muon_30_, "MuDown"); + // fake_rate_ele_35_, fake_rate_muon_25_, "MuDown"); float fakeWeight_2l2jstatMuDown = GetFR_2l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], @@ -386,7 +399,8 @@ class fake_rate_reader{ float fakeWeight_3l = GetFR_3l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], Lepton_pt[2], Lepton_eta[2], Lepton_pdgId[2], isTight_[2], - fake_rate_ele_35_, fake_rate_muon_25_, "Nominal"); + fake_rate_ele_30_, fake_rate_muon_30_, "Nominal"); + // fake_rate_ele_35_, fake_rate_muon_25_, "Nominal"); // fake_rate_ele_35_, fake_rate_muon_35_, "Nominal"); if (kind_ == "nominal") return fakeWeight_3l; @@ -396,7 +410,8 @@ class fake_rate_reader{ float fakeWeight_3lElUp = GetFR_3l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], Lepton_pt[2], Lepton_eta[2], Lepton_pdgId[2], isTight_[2], - fake_rate_ele_45_, fake_rate_muon_25_, "Nominal"); + fake_rate_ele_40_, fake_rate_muon_30_, "Nominal"); + // fake_rate_ele_45_, fake_rate_muon_25_, "Nominal"); // fake_rate_ele_45_, fake_rate_muon_35_, "Nominal"); float fakeWeightEleUp = fakeWeight_3lElUp / fakeWeight_3l; @@ -409,7 +424,8 @@ class fake_rate_reader{ float fakeWeight_3lElDown = GetFR_3l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], Lepton_pt[2], Lepton_eta[2], Lepton_pdgId[2], isTight_[2], - fake_rate_ele_25_, fake_rate_muon_25_, "Nominal"); + fake_rate_ele_20_, fake_rate_muon_30_, "Nominal"); + // fake_rate_ele_25_, fake_rate_muon_25_, "Nominal"); // fake_rate_ele_25_, fake_rate_muon_35_, "Nominal"); float fakeWeightEleDown = fakeWeight_3lElDown / fakeWeight_3l; @@ -422,7 +438,8 @@ class fake_rate_reader{ float fakeWeight_3lMuUp = GetFR_3l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], Lepton_pt[2], Lepton_eta[2], Lepton_pdgId[2], isTight_[2], - fake_rate_ele_35_, fake_rate_muon_35_, "Nominal"); + fake_rate_ele_30_, fake_rate_muon_40_, "Nominal"); + // fake_rate_ele_35_, fake_rate_muon_35_, "Nominal"); // fake_rate_ele_35_, fake_rate_muon_45_, "Nominal"); @@ -436,7 +453,8 @@ class fake_rate_reader{ float fakeWeight_3lMuDown = GetFR_3l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], Lepton_pt[2], Lepton_eta[2], Lepton_pdgId[2], isTight_[2], - fake_rate_ele_35_, fake_rate_muon_15_, "Nominal"); + fake_rate_ele_30_, fake_rate_muon_20_, "Nominal"); + // fake_rate_ele_35_, fake_rate_muon_15_, "Nominal"); // fake_rate_ele_35_, fake_rate_muon_25_, "Nominal"); float fakeWeightMuDown = fakeWeight_3lMuDown / fakeWeight_3l; @@ -449,7 +467,8 @@ class fake_rate_reader{ float fakeWeight_3lstatEleUp = GetFR_3l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], Lepton_pt[2], Lepton_eta[2], Lepton_pdgId[2], isTight_[2], - fake_rate_ele_35_, fake_rate_muon_25_, "ElUp"); + fake_rate_ele_30_, fake_rate_muon_20_, "ElUp"); + // fake_rate_ele_35_, fake_rate_muon_25_, "ElUp"); // fake_rate_ele_35_, fake_rate_muon_35_, "ElUp"); float fakeWeightstatEleUp = fakeWeight_3lstatEleUp / fakeWeight_3l; @@ -462,7 +481,8 @@ class fake_rate_reader{ float fakeWeight_3lstatEleDown = GetFR_3l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], Lepton_pt[2], Lepton_eta[2], Lepton_pdgId[2], isTight_[2], - fake_rate_ele_35_, fake_rate_muon_25_, "ElDown"); + fake_rate_ele_30_, fake_rate_muon_30_, "ElDown"); + // fake_rate_ele_35_, fake_rate_muon_25_, "ElDown"); // fake_rate_ele_35_, fake_rate_muon_35_, "ElDown"); float fakeWeightstatEleDown = fakeWeight_3lstatEleDown / fakeWeight_3l; @@ -475,7 +495,8 @@ class fake_rate_reader{ float fakeWeight_3lstatMuUp = GetFR_3l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], Lepton_pt[2], Lepton_eta[2], Lepton_pdgId[2], isTight_[2], - fake_rate_ele_35_, fake_rate_muon_25_, "MuUp"); + fake_rate_ele_30_, fake_rate_muon_30_, "MuUp"); + // fake_rate_ele_35_, fake_rate_muon_25_, "MuUp"); // fake_rate_ele_35_, fake_rate_muon_35_, "MuUp"); float fakeWeightstatMuUp = fakeWeight_3lstatMuUp / fakeWeight_3l; @@ -488,7 +509,8 @@ class fake_rate_reader{ float fakeWeight_3lstatMuDown = GetFR_3l(Lepton_pt[0], Lepton_eta[0], Lepton_pdgId[0], isTight_[0], Lepton_pt[1], Lepton_eta[1], Lepton_pdgId[1], isTight_[1], Lepton_pt[2], Lepton_eta[2], Lepton_pdgId[2], isTight_[2], - fake_rate_ele_35_, fake_rate_muon_25_, "MuDown"); + fake_rate_ele_30_, fake_rate_muon_30_, "MuDown"); + // fake_rate_ele_35_, fake_rate_muon_25_, "MuDown"); // fake_rate_ele_35_, fake_rate_muon_35_, "MuDown"); float fakeWeightstatMuDown = fakeWeight_3lstatMuDown / fakeWeight_3l; @@ -551,6 +573,7 @@ fake_rate_reader::fake_rate_reader( TString year , TString ele_WP, TString muon_ TString fake_muon_file_name_25 = mkShapesRDF_base + "/data/fakerate/" + year + "/cut_Tight_HWWW_tthmva_" + muon_WP + "/MuonFR_jet25.root"; TString fake_muon_file_name_30 = mkShapesRDF_base + "/data/fakerate/" + year + "/cut_Tight_HWWW_tthmva_" + muon_WP + "/MuonFR_jet30.root"; TString fake_muon_file_name_35 = mkShapesRDF_base + "/data/fakerate/" + year + "/cut_Tight_HWWW_tthmva_" + muon_WP + "/MuonFR_jet35.root"; + TString fake_muon_file_name_40 = mkShapesRDF_base + "/data/fakerate/" + year + "/cut_Tight_HWWW_tthmva_" + muon_WP + "/MuonFR_jet40.root"; TString fake_muon_file_name_45 = mkShapesRDF_base + "/data/fakerate/" + year + "/cut_Tight_HWWW_tthmva_" + muon_WP + "/MuonFR_jet45.root"; if (year_ == "2016_HIPM" || year_ == "2016_noHIPM"){ @@ -563,8 +586,11 @@ fake_rate_reader::fake_rate_reader( TString year , TString ele_WP, TString muon_ fake_muon_file_name_45 = mkShapesRDF_base + "/data/fakerate/" + year + "/cut_Tight80x_tthmva_" + muon_WP + "/MuonFR_jet45.root"; } + TString fake_ele_file_name_20 = mkShapesRDF_base + "/data/fakerate/" + year + "/mvaFall17V2Iso_WP90" + ele_tight_suffix + "_tthmva_UL_" + ele_WP + "/EleFR_jet20.root"; TString fake_ele_file_name_25 = mkShapesRDF_base + "/data/fakerate/" + year + "/mvaFall17V2Iso_WP90" + ele_tight_suffix + "_tthmva_UL_" + ele_WP + "/EleFR_jet25.root"; + TString fake_ele_file_name_30 = mkShapesRDF_base + "/data/fakerate/" + year + "/mvaFall17V2Iso_WP90" + ele_tight_suffix + "_tthmva_UL_" + ele_WP + "/EleFR_jet30.root"; TString fake_ele_file_name_35 = mkShapesRDF_base + "/data/fakerate/" + year + "/mvaFall17V2Iso_WP90" + ele_tight_suffix + "_tthmva_UL_" + ele_WP + "/EleFR_jet35.root"; + TString fake_ele_file_name_40 = mkShapesRDF_base + "/data/fakerate/" + year + "/mvaFall17V2Iso_WP90" + ele_tight_suffix + "_tthmva_UL_" + ele_WP + "/EleFR_jet40.root"; TString fake_ele_file_name_45 = mkShapesRDF_base + "/data/fakerate/" + year + "/mvaFall17V2Iso_WP90" + ele_tight_suffix + "_tthmva_UL_" + ele_WP + "/EleFR_jet45.root"; // Prompt rate input files @@ -593,6 +619,9 @@ fake_rate_reader::fake_rate_reader( TString year , TString ele_WP, TString muon_ TFile* f_muon_35 = new TFile(fake_muon_file_name_35); fake_rate_muon_35_ = (TH2F*) f_muon_35 -> Get("FR_pT_eta_EWKcorr"); + TFile* f_muon_40 = new TFile(fake_muon_file_name_40); + fake_rate_muon_40_ = (TH2F*) f_muon_40 -> Get("FR_pT_eta_EWKcorr"); + TFile* f_muon_45 = new TFile(fake_muon_file_name_45); fake_rate_muon_45_ = (TH2F*) f_muon_45 -> Get("FR_pT_eta_EWKcorr"); @@ -600,12 +629,21 @@ fake_rate_reader::fake_rate_reader( TString year , TString ele_WP, TString muon_ prompt_rate_muon_ = (TH2F*) f_muon_PR -> Get("h_Muon_signal_pt_eta_bin"); // Electrons + TFile* f_ele_20 = new TFile(fake_ele_file_name_20); + fake_rate_ele_20_ = (TH2F*) f_ele_20 -> Get("FR_pT_eta_EWKcorr"); + TFile* f_ele_25 = new TFile(fake_ele_file_name_25); fake_rate_ele_25_ = (TH2F*) f_ele_25 -> Get("FR_pT_eta_EWKcorr"); + TFile* f_ele_30 = new TFile(fake_ele_file_name_30); + fake_rate_ele_30_ = (TH2F*) f_ele_30 -> Get("FR_pT_eta_EWKcorr"); + TFile* f_ele_35 = new TFile(fake_ele_file_name_35); fake_rate_ele_35_ = (TH2F*) f_ele_35 -> Get("FR_pT_eta_EWKcorr"); + TFile* f_ele_40 = new TFile(fake_ele_file_name_40); + fake_rate_ele_40_ = (TH2F*) f_ele_40 -> Get("FR_pT_eta_EWKcorr"); + TFile* f_ele_45 = new TFile(fake_ele_file_name_45); fake_rate_ele_45_ = (TH2F*) f_ele_45 -> Get("FR_pT_eta_EWKcorr"); From f314898bf9952bb7e72fa67500654da24a89da43 Mon Sep 17 00:00:00 2001 From: ntrevisa Date: Thu, 28 Aug 2025 11:21:57 +0200 Subject: [PATCH 33/44] removing unused fake CR configurations --- .../WHSS/configuration_1j_CR/README.md | 17 - .../WHSS/configuration_1j_CR/configuration.py | 99 --- .../WHSS/configuration_1j_CR/cuts.py | 66 -- .../WHSS/configuration_1j_CR/nuisances.py | 654 ------------------ .../WHSS/configuration_1j_CR/plot.py | 356 ---------- .../WHSS/configuration_1j_CR/samples.py | 391 ----------- .../WHSS/configuration_1j_CR/structure.py | 203 ------ .../WHSS/configuration_1j_mm_CR/README.md | 17 - .../configuration_1j_mm_CR/configuration.py | 99 --- .../WHSS/configuration_1j_mm_CR/cuts.py | 37 - .../WHSS/configuration_1j_mm_CR/nuisances.py | 654 ------------------ .../WHSS/configuration_1j_mm_CR/plot.py | 356 ---------- .../WHSS/configuration_1j_mm_CR/structure.py | 203 ------ .../WHSS/configuration_2j_CR/README.md | 17 - .../WHSS/configuration_2j_CR/configuration.py | 99 --- .../WHSS/configuration_2j_CR/cuts.py | 65 -- .../WHSS/configuration_2j_CR/nuisances.py | 654 ------------------ .../WHSS/configuration_2j_CR/plot.py | 355 ---------- .../WHSS/configuration_2j_CR/samples.py | 384 ---------- .../WHSS/configuration_2j_CR/structure.py | 202 ------ .../WHSS/configuration_2j_mm_CR/README.md | 17 - .../configuration_2j_mm_CR/configuration.py | 99 --- .../WHSS/configuration_2j_mm_CR/cuts.py | 37 - .../WHSS/configuration_2j_mm_CR/nuisances.py | 654 ------------------ .../WHSS/configuration_2j_mm_CR/plot.py | 355 ---------- .../WHSS/configuration_2j_mm_CR/structure.py | 202 ------ 26 files changed, 6292 deletions(-) delete mode 100644 WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_CR/README.md delete mode 100644 WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_CR/configuration.py delete mode 100644 WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_CR/cuts.py delete mode 100644 WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_CR/nuisances.py delete mode 100644 WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_CR/plot.py delete mode 100644 WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_CR/samples.py delete mode 100644 WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_CR/structure.py delete mode 100644 WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_mm_CR/README.md delete mode 100644 WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_mm_CR/configuration.py delete mode 100644 WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_mm_CR/cuts.py delete mode 100644 WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_mm_CR/nuisances.py delete mode 100644 WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_mm_CR/plot.py delete mode 100644 WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_mm_CR/structure.py delete mode 100644 WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_CR/README.md delete mode 100644 WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_CR/configuration.py delete mode 100644 WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_CR/cuts.py delete mode 100644 WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_CR/nuisances.py delete mode 100644 WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_CR/plot.py delete mode 100644 WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_CR/samples.py delete mode 100644 WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_CR/structure.py delete mode 100644 WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_mm_CR/README.md delete mode 100644 WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_mm_CR/configuration.py delete mode 100644 WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_mm_CR/cuts.py delete mode 100644 WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_mm_CR/nuisances.py delete mode 100644 WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_mm_CR/plot.py delete mode 100644 WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_mm_CR/structure.py diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_CR/README.md b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_CR/README.md deleted file mode 100644 index ba17b328..00000000 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_CR/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# Configuration for WHSS 1j signal region - -### Plot distributions - -Compile configuration and plot distributions: - - mkShapesRDF -c 1 - - mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png - -### Produce datacards - -Compile configuration and produce datacards: - - mkShapesRDF -c 1 - - mkDatacards --outputDirDatacard ../datacards_original_signal_scale --skipMissingNuisance \ No newline at end of file diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_CR/configuration.py b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_CR/configuration.py deleted file mode 100644 index 79ddeafb..00000000 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_CR/configuration.py +++ /dev/null @@ -1,99 +0,0 @@ -# Configuration file for charge asymmetry WHSS analysis using the UL 2016noHIPM dataset - -import sys,inspect - -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_CR - -configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file -configurations_nuisance = os.path.dirname(configurations_nuisance) # configuration_1j_CR -configurations_nuisance = os.path.dirname(configurations_nuisance) # WHSS -configurations_nuisance = os.path.dirname(configurations_nuisance) # 2016noHIPM_v9 -configurations_nuisance = os.path.dirname(configurations_nuisance) # UL - -# Tag used to identify the configuration folder version -tag = 'WHSS_2016noHIPM_v9_chargeAsymmetry_Mu82_EleUL90' - -# File to use as runner script, default uses mkShapesRDF.shapeAnalysis.runner, otherwise specify path to script -runnerFile = "default" - -# Output file name -outputFile = "plots_WHSS_2016noHIPM_v9_chargeAsymmetry_Mu82_EleUL90_DYflip_data.root" # "mkShapes__{}.root".format(tag) - -# Path to ouput folder -outputFolder = "../../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" - -# Path to batch folder (used for condor submission) -batchFolder = "condor" - -# Path to configuration folder (will contain all the compiled configuration files) -configsFolder = "configs" - -# luminosity to normalize to (in 1/fb) -# https://github.com/latinos/LatinoAnalysis/blob/UL_production/NanoGardener/python/data/TrigMaker_cfg.py#L239 (#311 #377 #445) -# 0.418771191 + 7.653261227 + 7.866107374 + 0.8740119304 = 16.8121517224 -lumi = 16.81 - -# File with dict of aliases to define -aliasesFile = "../aliases.py" - -# File with dict of variables -variablesFile = "../variables.py" - -# File with dict of cuts -cutsFile = "cuts.py" - -# File with dict of samples -samplesFile = "../samples.py" - -# File with dict of samples for plotting -plotFile = 'plot.py' - -# File with dict of structure (used to define processes in combine) -structureFile = "structure.py" - -# Nuisances file for mkDatacards and for mkShape -nuisancesFile = "../nuisances.py" - -# Path to folder where to save plots -plotPath = '../plots_' + tag - -# This lines are executed right before the runner on the condor node -mountEOS = [] - -# List of imports to import when compiling the whole configuration folder, it should not contain imports used by configuration.py -imports = ["os", "glob", ("collections", "OrderedDict"), "ROOT"] - -# List of files to compile -filesToExec = [ - samplesFile, - aliasesFile, - variablesFile, - cutsFile, - plotFile, - nuisancesFile, - structureFile, -] - -# List of variables to keep in the compiled configuration folder -varsToKeep = [ - "batchVars", - "outputFolder", - "batchFolder", - "configsFolder", - "outputFile", - "runnerFile", - "tag", - "samples", - "aliases", - "variables", - ("cuts", {"cuts": "cuts", "preselections": "preselections"}), - ("plot", {"plot": "plot", "groupPlot": "groupPlot", "legend": "legend"}), - "nuisances", - "structure", - "lumi", -] - -# List of variables to keep in the batch submission script (script.py) -batchVars = varsToKeep[varsToKeep.index("samples") :] - -varsToKeep += ['plotPath'] diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_CR/cuts.py b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_CR/cuts.py deleted file mode 100644 index 9ff759bd..00000000 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_CR/cuts.py +++ /dev/null @@ -1,66 +0,0 @@ -cuts = {} - -# cuts -preselections = 'mll>12 \ - && Lepton_pt[0]>25 \ - && Lepton_pt[1]>10 \ - && (abs(Lepton_pdgId[1])==13 || Lepton_pt[1]>13) \ - && abs(Lepton_eta[0])<2.5 && abs(Lepton_eta[1])<2.5 \ - && bVeto \ - && PuppiMET_pt > 30 \ - && !hole_veto \ - ' - -# Splitting in sub-leading lepton pT -#################################### - -## SS CR 1jet - -# mu-e -cuts['hww2l2v_13TeV_WH_SS_em_1j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)<30 && mlljj20_whss > 50.', - 'categories' : { - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT >= 20 GeV) - 'SS_CR_plus_pt2ge20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2ge20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT < 20 GeV) - 'SS_CR_plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - } -} - -# e-e -cuts['hww2l2v_13TeV_WH_SS_ee_1j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*11) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)<30 && abs(mll-91.2)>15 && mlljj20_whss > 50.', - 'categories' : { - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT >= 20 GeV) - 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT < 20 GeV) - 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - } -} - - -## DY->ee CR - 2 same-sign electrons IN the Z peak. To check the charge-flip probability method to estimate DY in the signal region - -# DY CR 1jet -cuts['hww2l2v_13TeV_WH_SS_DYee_1j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*11) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)<30 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0 && abs(mll-91.2)<15 && mlljj20_whss > 50.', - 'categories' : { - # Sub-leading lepton pT >= 20 GeV - 'plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20', - 'minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20', - 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20', - } -} - -# mlljj20_whss: -# inv_mass of: (jet1, jet2, 2*closest_lep_to_jets) -# jets are considered with pT > 20 GeV - -# Definitions of WH3l variables: -# https://github.com/latinos/LatinoAnalysis/blob/76e7c4b93aa5f056c92440d4e8d24e7de749c8fe/NanoGardener/python/modules/l3KinProducer.py diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_CR/nuisances.py b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_CR/nuisances.py deleted file mode 100644 index f0a2cb34..00000000 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_CR/nuisances.py +++ /dev/null @@ -1,654 +0,0 @@ -import sys - -# Enable reading YR for Higgs XS and uncertainties -sys.path.append('../../../macros/') -import HiggsXSection -HiggsXS = HiggsXSection.HiggsXSection() - -nuisances = {} - -mcProduction = 'Summer20UL16_106x_nAODv9_noHIPM_Full2016v9' -dataReco = 'Run2016_UL2016_nAODv9_noHIPM_Full2016v9' -mcSteps = 'MCl1loose2016v9__MCCorr2016v9NoJERInHorn__l2tightOR2016v9' -fakeSteps = 'DATAl1loose2016v9__l2loose__fakeW' -dataSteps = 'DATAl1loose2016v9__l2loose__l2tightOR2016v9' - -treeBaseDir = '/eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano' -limitFiles = -1 - -mc = [skey for skey in samples if skey not in ('Fake', 'DATA')] - -redirector = "" - -useXROOTD = False - -def makeMCDirectory(var=''): - if var== '': - print(os.path.join(treeBaseDir, mcProduction, mcSteps)) - return os.path.join(treeBaseDir, mcProduction, mcSteps) - else: - print(os.path.join(treeBaseDir, mcProduction, mcSteps + '__' + var)) - return os.path.join(treeBaseDir, mcProduction, mcSteps + '__' + var) - -mcDirectory = makeMCDirectory() -fakeDirectory = os.path.join(treeBaseDir, dataReco, fakeSteps) -dataDirectory = os.path.join(treeBaseDir, dataReco, dataSteps) - -################################ EXPERIMENTAL UNCERTAINTIES ################################# - -#### Luminosity - -# https://twiki.cern.ch/twiki/bin/view/CMS/LumiRecommendationsRun2#LumiComb -# Uncorrelated 2016 1.0 -# Uncorrelated 2017 2.0 -# Uncorrelated 2018 1.5 -# Correlated 2016, 2017, 2018 0.6, 0.9, 2.0 -# Correlated 2017, 2018 0.6, 0.2 - -nuisances['lumi_Uncorrelated'] = { - 'name' : 'lumi_13TeV_2016', - 'type' : 'lnN', - 'samples' : dict((skey, '1.010') for skey in mc if skey not in ['WZ']) -} - -nuisances['lumi_Correlated_Run2'] = { - 'name' : 'lumi_13TeV_correlated', - 'type' : 'lnN', - 'samples' : dict((skey, '1.006') for skey in mc if skey not in ['WZ']) -} - - -#### FAKES -fake_syst_endcap = ['1.0*(abs(Lepton_eta[1])<=1.4) + 1.3*(abs(Lepton_eta[1])>1.4)', - '1.0*(abs(Lepton_eta[1])<=1.4) + 1.0/1.3*(abs(Lepton_eta[1])>1.4)'] - -fake_syst_barrel = [' 1.3*(abs(Lepton_eta[1])<=1.4) + 1.0*(abs(Lepton_eta[1])>1.4)', - '1.0/1.3*(abs(Lepton_eta[1])<=1.4) + 1.0*(abs(Lepton_eta[1])>1.4)'] - -nuisances['fake_syst_mm_barrel'] = { - 'name' : 'CMS_WH_hww_fake_syst_mm_barrel', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_mm' : fake_syst_barrel, - }, - 'cuts' : [cut for cut in cuts if ('_mm_' in cut)] -} -nuisances['fake_syst_mm_endcap'] = { - 'name' : 'CMS_WH_hww_fake_syst_mm_endcap', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_mm' : fake_syst_endcap, - }, - 'cuts' : [cut for cut in cuts if ('_mm_' in cut)] -} - -nuisances['fake_syst_em_barrel'] = { - 'name' : 'CMS_WH_hww_fake_syst_em_barrel', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_em' : fake_syst_barrel, - }, - 'cuts' : [cut for cut in cuts if ('_em_' in cut)] -} -nuisances['fake_syst_em_endcap'] = { - 'name' : 'CMS_WH_hww_fake_syst_em_endcap', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_em' : fake_syst_endcap, - }, - 'cuts' : [cut for cut in cuts if ('_em_' in cut)] -} - -nuisances['fake_syst_ee_barrel'] = { - 'name' : 'CMS_WH_hww_fake_syst_ee_barrel', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_ee' : fake_syst_barrel, - }, - 'cuts' : [cut for cut in cuts if ('_ee_' in cut)] -} -nuisances['fake_syst_ee_endcap'] = { - 'name' : 'CMS_WH_hww_fake_syst_ee_endcap', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_ee' : fake_syst_endcap, - }, - 'cuts' : [cut for cut in cuts if ('_ee_' in cut)] -} - -nuisances['fake_ele'] = { - 'name' : 'CMS_WH_hww_fake_e_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_ee' : ['fakeWEleUp', 'fakeWEleDown'], - 'Fake_em' : ['fakeWEleUp', 'fakeWEleDown'], - } -} -nuisances['fake_ele_stat'] = { - 'name' : 'CMS_WH_hww_fake_stat_e_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_ee' : ['fakeWStatEleUp', 'fakeWStatEleDown'], - 'Fake_em' : ['fakeWStatEleUp', 'fakeWStatEleDown'], - } -} -nuisances['fake_mu'] = { - 'name' : 'CMS_WH_hww_fake_m_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_mm' : ['fakeWMuUp', 'fakeWMuDown'], - 'Fake_em' : ['fakeWMuUp', 'fakeWMuDown'], - } -} -nuisances['fake_mu_stat'] = { - 'name' : 'CMS_WH_hww_fake_stat_m_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_mm' : ['fakeWStatMuUp', 'fakeWStatMuDown'], - 'Fake_em' : ['fakeWStatMuUp', 'fakeWStatMuDown'], - } -} - -###### B-tagger - -for shift in ['lf', 'hf', 'hfstats1', 'hfstats2', 'lfstats1', 'lfstats2', 'cferr1', 'cferr2']: - btag_syst = ['(btagSF%sup)/(btagSF)' % shift, '(btagSF%sdown)/(btagSF)' % shift] - - name = 'CMS_btag_%s' % shift - if 'stats' in shift: - name += '_2016' - - nuisances['btag_shape_%s' % shift] = { - 'name' : name, - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, btag_syst) for skey in mc), - } - -##### Trigger Scale Factors - -trig_syst = ['TriggerSFWeight_2l_u/TriggerSFWeight_2l', 'TriggerSFWeight_2l_d/TriggerSFWeight_2l'] - -nuisances['trigg'] = { - 'name' : 'CMS_eff_hwwtrigger_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, trig_syst) for skey in mc) -} - -##### Electron Efficiency and energy scale - -nuisances['eff_e'] = { - 'name' : 'CMS_eff_e_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['SFweightEleUp', 'SFweightEleDown']) for skey in mc) -} - -nuisances['eff_ttHMVA_e'] = { - 'name' : 'CMS_eff_ttHMVA_e_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['LepWPttHMVASFEleUp', 'LepWPttHMVASFEleDown']) for skey in mc) -} - -nuisances['electronpt'] = { - 'name' : 'CMS_scale_e_2016', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'ElepTup', - 'mapDown' : 'ElepTdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('ElepTup_suffix'), - 'folderDown' : makeMCDirectory('ElepTdo_suffix'), - 'AsLnN' : '0' -} - -##### Muon Efficiency and energy scale - -nuisances['eff_m'] = { - 'name' : 'CMS_eff_m_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['SFweightMuUp', 'SFweightMuDown']) for skey in mc) -} - -nuisances['eff_ttHMVA_m'] = { - 'name' : 'CMS_eff_ttHMVA_m_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['LepWPttHMVASFMuUp', 'LepWPttHMVASFMuDown']) for skey in mc) -} - -nuisances['muonpt'] = { - 'name' : 'CMS_scale_m_2016', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'MupTup', - 'mapDown' : 'MupTdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('MupTup_suffix'), - 'folderDown' : makeMCDirectory('MupTdo_suffix'), - 'AsLnN' : '0' -} - -##### Jet energy scale -jes_systs = ['JESAbsolute','JESAbsolute_2016','JESBBEC1','JESBBEC1_2016','JESEC2','JESEC2_2016','JESFlavorQCD','JESHF','JESHF_2016','JESRelativeBal','JESRelativeSample_2016'] - -for js in jes_systs: - - nuisances[js] = { - 'name' : 'CMS_scale_' + js.replace("JES","j_"), - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : js + 'up', - 'mapDown' : js + 'do', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('RDF__JESup_suffix'), - 'folderDown': makeMCDirectory('RDF__JESdo_suffix'), - 'reweight' : ['btagSF'+js.replace('JES','jes')+'up/btagSF','btagSF'+js.replace('JES','jes')+'down/btagSF'], - 'AsLnN' : '0' - } - -##### Jet energy resolution -nuisances['JER'] = { - 'name' : 'CMS_res_j_2016', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'JERup', - 'mapDown' : 'JERdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('JERup_suffix'), - 'folderDown': makeMCDirectory('JERdo_suffix'), - 'AsLnN' : '0' -} - -##### MET unclustered energy - -# metUp.PuppiMET_pt_METup -nuisances['met'] = { - 'name' : 'CMS_scale_met_2016', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'METup', - 'mapDown' : 'METdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('METup_suffix'), - 'folderDown': makeMCDirectory('METdo_suffix'), - 'AsLnN' : '0' -} - - -##### Pileup - -# puWeight_UL2016 -nuisances['PU'] = { - 'name' : 'CMS_pileup_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'DY' : ['1.000489*(puWeightUp/puWeight)', '0.998828*(puWeightDown/puWeight)'], - 'WW' : ['1.007152*(puWeightUp/puWeight)', '0.993194*(puWeightDown/puWeight)'], - 'ggWW' : ['1.006460*(puWeightUp/puWeight)', '0.993661*(puWeightDown/puWeight)'], - 'Vg' : ['1.004694*(puWeightUp/puWeight)', '0.998294*(puWeightDown/puWeight)'], - 'WZ' : ['1.003158*(puWeightUp/puWeight)', '0.997747*(puWeightDown/puWeight)'], - 'ZZ' : ['1.000801*(puWeightUp/puWeight)', '0.999199*(puWeightDown/puWeight)'], - 'VVV' : ['0.996144*(puWeightUp/puWeight)', '1.005616*(puWeightDown/puWeight)'], - 'top' : ['1.004374*(puWeightUp/puWeight)', '0.995684*(puWeightDown/puWeight)'], - 'Higgs' : ['1.006460*(puWeightUp/puWeight)', '0.993559*(puWeightDown/puWeight)'], - }, - 'AsLnN' : '0', -} - -### PU ID SF uncertainty - -puid_syst = ['Jet_PUIDSF_up/Jet_PUIDSF', 'Jet_PUIDSF_down/Jet_PUIDSF'] - -nuisances['jetPUID'] = { - 'name' : 'CMS_eff_j_PUJET_id_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, puid_syst) for skey in mc) -} - -### PS and UE - -nuisances['PS_ISR'] = { - 'name' : 'PS_WH_hww_ISR', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['PSWeight[2]', 'PSWeight[0]']) for skey in mc), - 'AsLnN' : '0', -} - -nuisances['PS_FSR'] = { - 'name' : 'PS_WH_hww_FSR', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['PSWeight[3]', 'PSWeight[1]']) for skey in mc), - 'AsLnN' : '0', -} - -nuisances['UE_CP5'] = { - 'name' : 'CMS_WH_hww_UE', - 'skipCMS' : 1, - 'type' : 'lnN', - 'samples' : dict((skey, '1.015') for skey in mc), -} - -# Charge flip efficiency -nuisances['chargeFlipEff'] = { - 'name' : 'CMS_whss_chargeFlipEff_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['1-ttHMVA_eff_err_flip_2l', '1+ttHMVA_eff_err_flip_2l']) for skey in ['DY','ChargeFlip']), - 'cuts' : [cut for cut in cuts if ('_ee_' in cut or '_em_' in cut)] -} - -# Charge flip: uncertainty on opposite sign processes not affected by charge-flip -nuisances['chargeFlip_syst'] = { - 'name' : 'CMS_ChargeFlip_syst', - 'type' : 'lnN', - 'samples' : { - 'ChargeFlip' : '1.10', - } -} - -# Top pT reweighting uncertainty - -nuisances['TopPtRew'] = { - 'name' : 'CMS_top_pT_reweighting', # Theory uncertainty - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'top': ["1.", "1./Top_pTrw"] - }, - 'symmetrize' : True -} - -nuisances['WgStar'] = { - 'name' : 'CMS_hww_WgStarScale', - 'type' : 'lnN', - 'samples' : { - 'WgS' : '1.25' - } -} - -###### pdf uncertainties - -valuesggh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggH', '125.09','pdf','sm') -valuesggzh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggZH','125.09','pdf','sm') -valuesbbh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','bbH', '125.09','pdf','sm') - -nuisances['pdf_Higgs_gg'] = { - 'name' : 'pdf_Higgs_gg', - 'samples' : { - 'ggH_hww' : valuesggh, - 'ggH_htt' : valuesggh, - 'ggZH_hww' : valuesggzh, - 'bbH_hww' : valuesbbh, - }, - 'type' : 'lnN', -} - -# For ttH, we need to use 1./values -values = str(1./float(HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ttH','125.09','pdf','sm'))) - -nuisances['pdf_Higgs_ttH'] = { - 'name' : 'pdf_Higgs_ttH', - 'samples' : { - 'ttH_hww': values, - }, - 'type' : 'lnN', -} - -valuesqqh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','vbfH','125.09','pdf','sm') -valueswh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','WH', '125.09','pdf','sm') -valueszh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ZH', '125.09','pdf','sm') - -nuisances['pdf_Higgs_qqbar'] = { - 'name' : 'pdf_Higgs_qqbar', - 'type' : 'lnN', - 'samples': { - 'qqH_hww' : valuesqqh, - 'qqH_htt' : valuesqqh, - 'WH_hww_plus' : valueswh, - 'WH_hww_minus': valueswh, - 'WH_htt_plus' : valueswh, - 'WH_htt_minus': valueswh, - 'ZH_hww' : valueszh, - 'ZH_htt' : valueszh - }, -} - -nuisances['pdf_qqbar'] = { - 'name' : 'pdf_qqbar', - 'type' : 'lnN', - 'samples' : { - 'Wg' : '1.04', - 'Zg' : '1.04', - 'ZZ' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 - 'WZ' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 - 'WgS' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 - 'ZgS' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 - }, -} - -nuisances['pdf_gg'] = { - 'name': 'pdf_gg', - 'type': 'lnN', - 'samples': { - 'ggWW' : '1.05', - }, -} - -nuisances['pdf_Higgs_gg_ACCEPT'] = { - 'name' : 'pdf_WH_hww_Higgs_gg_ACCEPT', - 'samples' : { - 'ggH_hww' : '1.006', - 'ggH_htt' : '1.006', - 'ggZH_hww' : '1.006', - 'bbH_hww' : '1.006' - }, - 'type' : 'lnN', -} -nuisances['pdf_gg_ACCEPT'] = { - 'name' : 'pdf_WH_hww_gg_ACCEPT', - 'samples' : { - 'ggWW' : '1.006', - }, - 'type' : 'lnN', -} - -nuisances['pdf_Higgs_qqbar_ACCEPT'] = { - 'name' : 'pdf_WH_hww_Higgs_qqbar_ACCEPT', - 'type' : 'lnN', - 'samples' : { - 'qqH_hww' : '1.002', - 'qqH_htt' : '1.002', - 'WH_hww_plus' : '1.003', - 'WH_hww_minus': '1.003', - 'WH_htt_plus' : '1.003', - 'WH_htt_minus': '1.003', - 'ZH_hww' : '1.002', - 'ZH_htt' : '1.002', - }, -} - -nuisances['pdf_qqbar_ACCEPT'] = { - 'name' : 'pdf_WH_hww_qqbar_ACCEPT', - 'type' : 'lnN', - 'samples' : { - 'ZZ' : '1.001', - 'WZ' : '1.001', - }, -} - -##### Renormalization & factorization scales - -## Shape nuisance due to QCD scale variations for DY -## LHE scale variation weights (w_var / w_nominal) - -## This should work for samples with either 8 or 9 LHE scale weights (Length$(LHEScaleWeight) == 8 or 9) -variations = ['Alt(LHEScaleWeight,0,1)', 'Alt(LHEScaleWeight,1,1)', 'Alt(LHEScaleWeight,3,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-4,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-2,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-1,1)'] - -# nuisances['QCDscale_V'] = { -# 'name' : 'QCDscale_V', -# 'skipCMS' : 1, -# 'kind' : 'weight_envelope', -# 'type' : 'shape', -# 'samples' : { -# 'DY' : variations -# }, -# 'AsLnN' : '0' -# } - -nuisances['QCDscale_VV'] = { - 'name' : 'QCDscale_VV', - 'kind' : 'weight_envelope', - 'type' : 'shape', - 'samples' : { - 'WW' : variations, - 'Zg' : variations, - 'Wg' : variations, - 'ZZ' : variations, - 'WZ' : variations, - 'WgS' : variations, - 'ZgS' : variations - } -} - -nuisances['QCDscale_ggVV'] = { - 'name' : 'QCDscale_ggVV', - 'type' : 'lnN', - 'samples' : { - 'ggWW' : '1.15', - }, -} - -#### QCD scale uncertainties for Higgs signals other than ggH - -values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','vbfH','125.09','scale','sm') - -nuisances['QCDscale_qqH'] = { - 'name' : 'QCDscale_qqH', - 'samples' : { - 'qqH_hww' : values, - 'qqH_htt' : values, - }, - 'type' : 'lnN' -} - -valueswh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','WH','125.09','scale','sm') -valueszh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ZH','125.09','scale','sm') - -nuisances['QCDscale_VH'] = { - 'name' : 'QCDscale_VH', - 'samples' : { - 'WH_hww_plus' : valueswh, - 'WH_hww_minus' : valueswh, - 'WH_htt_plus' : valueswh, - 'WH_htt_minus' : valueswh, - 'ZH_hww' : valueszh, - 'ZH_htt' : valueszh, - }, - 'type' : 'lnN', -} - -values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggZH','125.09','scale','sm') - -nuisances['QCDscale_ggZH'] = { - 'name' : 'QCDscale_ggZH', - 'samples' : { - 'ggZH_hww' : values, - }, - 'type' : 'lnN', -} - -values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ttH','125.09','scale','sm') - -nuisances['QCDscale_ttH'] = { - 'name' : 'QCDscale_ttH', - 'samples' : { - 'ttH_hww' : values, - }, - 'type' : 'lnN', -} - -nuisances['QCDscale_WWewk'] = { - 'name' : 'QCDscale_WWewk', - 'samples' : { - 'WWewk' : '1.11', - }, - 'type' : 'lnN' -} - -nuisances['QCDscale_qqbar_ACCEPT'] = { - 'name' : 'QCDscale_qqbar_ACCEPT', - 'type' : 'lnN', - 'samples' : { - 'qqH_hww' : '1.003', - 'qqH_htt' : '1.003', - 'WH_hww_plus' : '1.010', - 'WH_hww_minus' : '1.010', - 'WH_htt_plus' : '1.010', - 'WH_htt_minus' : '1.010', - 'ZH_hww' : '1.015', - 'ZH_htt' : '1.015', - } -} - -# FIXME: these come from HIG-16-042, maybe should be recomputed? -nuisances['QCDscale_gg_ACCEPT'] = { - 'name' : 'QCDscale_gg_ACCEPT', - 'samples' : { - 'ggH_htt' : '1.012', - 'ggH_hww' : '1.012', - 'ggZH_hww' : '1.012', - 'ggWW' : '1.012', - }, - 'type' : 'lnN', -} - -# WZ normalization from control region - -nuisances['WZ2jnorm'] = { - 'name' : 'CMS_hww_WZ3l2jnorm', - 'samples' : { - 'WZ' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [cut for cut in cuts if '2j' in cut], -} - -nuisances['WZ1jnorm'] = { - 'name' : 'CMS_hww_WZ3l1jnorm', - 'samples' : { - 'WZ' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [cut for cut in cuts if '1j' in cut], -} - -# Use the following if you want to apply the automatic combine MC stat nuisances. -nuisances['stat'] = { - 'type' : 'auto', - 'maxPoiss' : '10', - 'includeSignal' : '0', - 'samples' : {} -} -# nuisance ['maxPoiss'] = Number of threshold events for Poisson modelling -# nuisance ['includeSignal'] = Include MC stat nuisances on signal processes (1=True, 0=False) - -for n in nuisances.values(): - n['skipCMS'] = 1 diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_CR/plot.py b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_CR/plot.py deleted file mode 100644 index 3740c6b6..00000000 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_CR/plot.py +++ /dev/null @@ -1,356 +0,0 @@ -# plot configuration - -# Groups of samples to improve the plots. -# If not defined, normal plots is used - -# BTag normalization factors -# Cut = hww2l2v_13TeV_samesign_1j -scale_histo_ttH_hww = 0.160537372171/0.105836109911 # 1.51684876084 -scale_histo_WW = 13.1478410113/12.9925824875 # 1.01194978165 -scale_histo_DY = 23.1120856722/21.6856215092 # 1.06577926127 -scale_histo_WZ = 115.896303073/117.772801287 # 0.984066794763 -scale_histo_Wg = 123.865202644/120.851067654 # 1.02494090494 -scale_histo_Zg = 16.0942073492/16.2827654077 # 0.988419776752 -scale_histo_Vg = (123.865202644+16.0942073492)/(120.851067654+16.2827654077) -scale_histo_ZgS = 5.54053867478/5.26867838135 # 1.0515993336 -scale_histo_WgS = 51.4646013319/49.3716146509 # 1.04239251027 -scale_histo_VgS = (51.4646013319+5.54053867478)/(49.3716146509+5.26867838135) -scale_histo_ZH_htt = 0.206772897183/0.21476539759 # 0.962784971428 -scale_histo_ggZH_hww = 0.115696593519/0.110430456832 # 1.04768735761 -scale_histo_qqH_hww = 0.0418143373177/0.0406604978316 # 1.02837740676 -scale_histo_ZZ = 3.6062138988/3.62806772315 # 0.993976456334 -scale_histo_ggH_hww = 0.516740512838/0.500764939631 # 1.03190233969 -scale_histo_WH_htt_minus = 0.760284077219/0.790188965083 # 0.962154764005 -scale_histo_VVV = 4.0070473387/4.12788750782 # 0.970725905469 -scale_histo_WH_hww_plus = 3.12916804508/3.03427517747 # 1.03127365254 -scale_histo_ggH_htt = 0.0547492764387/0.058092494244 # 0.942450090175 -scale_histo_ggH_htt = 0.0547492764387/0.058092494244 # 0.942450090175 -scale_histo_qqH_htt = 0.0261558449402/0.0265182022699 # 0.986335524331 -scale_histo_ggWW = 0.864962033063/0.851737593944 # 1.01552642412 -scale_histo_top = 76.8733454708/59.7989943761 # 1.28552906738 -scale_histo_WWewk = 0.0937543443187/0.0920893788864 # 1.01807988557 -scale_histo_ZH_hww = 0.468019653719/0.456889363186 # 1.02436101916 -scale_histo_WH_hww_minus = 1.84971389157/1.80063731754 # 1.02725511326 -scale_histo_WH_htt_plus = 1.25210961736/1.291978315 # 0.969141356961 - -groupPlot = {} - -# groupPlot['top'] = { -# 'nameHR' : 'tW+ and t#bar{t}', -# 'isSignal' : 0, -# 'color' : 400, # kYellow -# 'samples' : ['top'] -# } - -# groupPlot['WW'] = { -# 'nameHR' : 'WW', -# 'isSignal' : 0, -# 'color' : 851, # kAzure -9 -# 'samples' : ['WW', 'ggWW', 'WWewk'] -# } - -# groupPlot['DY'] = { -# 'nameHR' : "DY", -# 'isSignal' : 0, -# 'color' : 418, # kGreen+2 -# 'samples' : ['DY'] -# } - -groupPlot['Fake'] = { - 'nameHR' : 'Non-prompt', - 'isSignal' : 0, - 'color' : 921, # kGray + 1 - 'samples' : ['Fake_mm','Fake_em','Fake_ee'] -} - -groupPlot['ChargeFlip'] = { - 'nameHR' : "charge_flip", - 'isSignal' : 0, - 'color' : 418, # kGreen+2 - 'samples' : ['ChargeFlip'] -} - -groupPlot['VVV'] = { - 'nameHR' : 'VVV', - 'isSignal' : 0, - 'color' : 857, # kAzure -3 - 'samples' : ['VVV'] -} - -groupPlot['ZZ'] = { - 'nameHR' : "ZZ", - 'isSignal' : 0, - 'color' : 617, # kViolet + 1 - 'samples' : ['ZZ'] -} - -groupPlot['WZ'] = { - 'nameHR' : "WZ", - 'isSignal' : 0, - 'color' : 619, # kViolet + 1 - 'samples' : ['WZ'] -} - -groupPlot['Vg'] = { - 'nameHR' : "V#gamma", - 'isSignal' : 0, - 'color' : 810, # kOrange + 10 - 'samples' : ['Vg'] -} - -groupPlot['VgS'] = { - 'nameHR' : "V#gamma*", - 'isSignal' : 0, - 'color' : 412, # kGreen - 9 - 'samples' : ['VgS'] -} - -groupPlot['Higgs'] = { - 'nameHR' : 'Higgs', - 'isSignal' : 0, - 'color' : 632, # kRed - 'samples' : ['ggH_hww','qqH_hww','ZH_hww','ggZH_hww','ttH_hww','ggH_htt','qqH_htt','ZH_htt'] -} - -groupPlot['WH_minus'] = { - 'nameHR' : 'W^{-} H (x 10)', - 'isSignal' : 2, - 'color' : 600, # kBlue - 'samples' : ['WH_hww_minus','WH_htt_minus'] -} - -groupPlot['WH_plus'] = { - 'nameHR' : 'W^{+} H (x 10)', - 'isSignal' : 2, - 'color' : 632, # kRed - 'samples' : ['WH_hww_plus', 'WH_htt_plus'] -} - - -# keys here must match keys in samples.py - -plot = {} - -plot['ChargeFlip'] = { - 'color' : 418, # kGreen+2 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 0.5, -} - -# plot['DY'] = { -# 'color' : 418, # kGreen+2 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : scale_histo_DY, -# } - -# plot['top'] = { -# 'nameHR' : 'tW and t#bar{t}', -# 'color' : 400, # kYellow -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : scale_histo_top, -# } - -# plot['WW'] = { -# 'color' : 851, # kAzure -9 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : scale_histo_WW, -# } - -# plot['WWewk'] = { -# 'color' : 850, # kAzure -10 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : scale_histo_WWewk, -# } - -# plot['ggWW'] = { -# 'color' : 850, # kAzure -10 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : scale_histo_ggWW, -# } - -plot['Vg'] = { - 'color' : 859, # kAzure -1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_Vg, -} - -plot['VgS'] = { - 'color' : 617, # kViolet + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_VgS, -} - -plot['WZ'] = { - 'color' : 858, # kAzure -2 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_WZ * 1.138, # NLO -> NNLO k-factor! -} - -plot['ZZ'] = { - 'color' : 858, # kAzure -2 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ZZ, -} - -plot['VVV'] = { - 'color' : 857, # kAzure -3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_VVV, -} - -########### -# Signals # -########### - -# HWW - -plot['ggH_hww'] = { - 'color' : 632, # kRed - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggH_hww, -} - -plot['qqH_hww'] = { - 'color' : 632+1, # kRed+1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_qqH_hww, -} - -plot['ZH_hww'] = { - 'color' : 632+3, # kRed+3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ZH_hww, -} - -plot['ggZH_hww'] = { - 'color' : 632+4, # kRed+4 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggZH_hww, -} - -plot['WH_hww_plus'] = { - 'color' : 632+2, # kRed+2 - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_hww_plus, -} - -plot['WH_hww_minus'] = { - 'color' : 600, # kBlue - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_hww_minus, -} - -plot['ttH_hww'] = { - 'color' : 632+3, # kRed+3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ttH_hww, -} - - -# Htautau - -plot['ggH_htt'] = { - 'color' : 632, # kRed - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggH_htt, -} - -plot['qqH_htt'] = { - 'color' : 632+1, # kRed+1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_qqH_htt, -} - -plot['ZH_htt'] = { - 'color' : 632+3, # kRed+3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ZH_htt, -} - -plot['WH_htt_plus'] = { - 'color' : 632+2, # kRed+2 - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_htt_plus, -} - -plot['WH_htt_minus'] = { - 'color' : 632+2, # kRed+2 - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_htt_minus, -} - - -######## -# Fake # -######## - -plot['Fake_em'] = { - 'color' : 921, # kGray + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['Fake_ee'] = { - 'color' : 921, # kGray + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['Fake_mm'] = { - 'color' : 921, # kGray + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -# plot['Fake'] = { -# 'color' : 921, # kGray + 1 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : 1.0 -# } - -######## -# Data # -######## - -plot['DATA'] = { - 'nameHR' : 'Data', - 'color' : 1 , - 'isSignal' : 0, - 'isData' : 1, - 'isBlind' : 0, -} - - -# Define legend - -legend = {} - -legend['lumi'] = 'L = 16.8 fb^{-1}' -legend['sqrt'] = '#sqrt{s} = 13 TeV' diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_CR/samples.py b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_CR/samples.py deleted file mode 100644 index 5f8a5891..00000000 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_CR/samples.py +++ /dev/null @@ -1,391 +0,0 @@ -import os,glob - -################################################ -################# SKIMS ######################## -################################################ - -# MC: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Summer20UL16_106x_nAODv9_noHIPM_Full2016v9/MCl1loose2016v9__MCCorr2016v9NoJERInHorn__l2tightOR2016v9/ -# DATA: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Run2016_UL2016_nAODv9_noHIPM_Full2016v9/DATAl1loose2016v9__l2loose__l2tightOR2016v9/ -# FAKE: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Run2016_UL2016_nAODv9_noHIPM_Full2016v9/DATAl1loose2016v9__l2loose__fakeW/ - -mcProduction = 'Summer20UL16_106x_nAODv9_noHIPM_Full2016v9' -dataReco = 'Run2016_UL2016_nAODv9_noHIPM_Full2016v9' -mcSteps = 'MCl1loose2016v9__MCCorr2016v9NoJERInHorn__l2tightOR2016v9{var}' -fakeSteps = 'DATAl1loose2016v9__l2loose__fakeW' -dataSteps = 'DATAl1loose2016v9__l2loose__l2tightOR2016v9' - -############################################## -###### Tree base directory for the site ###### -############################################## - -treeBaseDir = '/eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano' -limitFiles = -1 - -def makeMCDirectory(var=''): - return os.path.join(treeBaseDir, mcProduction, mcSteps.format(var='')) - -mcDirectory = makeMCDirectory() -fakeDirectory = os.path.join(treeBaseDir, dataReco, fakeSteps) -dataDirectory = os.path.join(treeBaseDir, dataReco, dataSteps) - -samples = {} - -from mkShapesRDF.lib.search_files import SearchFiles -s = SearchFiles() - -useXROOTD = True -redirector = 'root://eoscms.cern.ch/' - -def nanoGetSampleFiles(path, name): - _files = s.searchFiles(path, name, redirector=redirector) - if limitFiles != -1 and len(_files) > limitFiles: - return [(name, _files[:limitFiles])] - else: - return [(name, _files)] - -def CombineBaseW(samples, proc, samplelist): - _filtFiles = list(filter(lambda k: k[0] in samplelist, samples[proc]['name'])) - _files = list(map(lambda k: k[1], _filtFiles)) - _l = list(map(lambda k: len(k), _files)) - leastFiles = _files[_l.index(min(_l))] - dfSmall = ROOT.RDataFrame('Runs', leastFiles) - s = dfSmall.Sum('genEventSumw').GetValue() - f = ROOT.TFile.Open(leastFiles[0]) - t = f.Get('Events') - t.GetEntry(1) - xs = t.baseW * s - - __files = [] - for f in _files: - __files += f - df = ROOT.RDataFrame('Runs', __files) - s = df.Sum('genEventSumw').GetValue() - newbaseW = str(xs / s) - weight = newbaseW + '/baseW' - - for iSample in samplelist: - addSampleWeight(samples, proc, iSample, weight) - -def addSampleWeight(samples, sampleName, sampleNameType, weight): - obj = list(filter(lambda k: k[0] == sampleNameType, samples[sampleName]['name']))[0] - samples[sampleName]['name'] = list(filter(lambda k: k[0] != sampleNameType, samples[sampleName]['name'])) - if len(obj) > 2: - samples[sampleName]['name'].append((obj[0], obj[1], obj[2] + '*(' + weight + ')')) - else: - samples[sampleName]['name'].append((obj[0], obj[1], '(' + weight + ')' )) - - -################################################ -############ DATA DECLARATION ################## -################################################ - -DataRun = [ - ['F','Run2016F-UL2016-v1'], - ['G','Run2016G_UL2016-v1'], - ['H','Run2016H_UL2016-v1'], -] - -DataSets = ['MuonEG','SingleMuon','SingleElectron','DoubleMuon', 'DoubleEG'] - -DataTrig = { - 'MuonEG' : ' Trigger_ElMu' , - 'SingleMuon' : '!Trigger_ElMu && Trigger_sngMu' , - 'SingleElectron' : '!Trigger_ElMu && !Trigger_sngMu && Trigger_sngEl', - 'DoubleMuon' : '!Trigger_ElMu && !Trigger_sngMu && !Trigger_sngEl && Trigger_dblMu', - 'DoubleEG' : '!Trigger_ElMu && !Trigger_sngMu && !Trigger_sngEl && !Trigger_dblMu && Trigger_dblEl' -} - -######################################### -############ MC COMMON ################## -######################################### - -# SFweight does not include btag weights -mcCommonWeightNoMatch = 'XSWeight*SFweight*METFilter_MC' -mcCommonWeight = 'XSWeight*SFweight*METFilter_MC*PromptGenLepMatch2l' - -########################################### -############# BACKGROUNDS ############### -########################################### - -# ###### DY ####### -# files = nanoGetSampleFiles(mcDirectory, 'DYJetsToLL_M-10to50_NLO') + \ -# nanoGetSampleFiles(mcDirectory, 'DYJetsToLL_M-50') - -# samples['DY'] = { -# 'name': files, -# 'weight': mcCommonWeight + '*(Lepton_pdgId[0]*Lepton_pdgId[1] == -11*13)*( !(Sum(PhotonGen_isPrompt==1 && PhotonGen_pt>15 && abs(PhotonGen_eta)<2.6) > 0))', -# 'FilesPerJob': 8, -# } - -# ##### Top ####### -# files = nanoGetSampleFiles(mcDirectory, 'TTTo2L2Nu') + \ -# nanoGetSampleFiles(mcDirectory, 'ST_s-channel') + \ -# nanoGetSampleFiles(mcDirectory, 'ST_t-channel_top') + \ -# nanoGetSampleFiles(mcDirectory, 'ST_t-channel_antitop') + \ -# nanoGetSampleFiles(mcDirectory, 'ST_tW_antitop') + \ -# nanoGetSampleFiles(mcDirectory, 'ST_tW_top') - -# samples['top'] = { -# 'name': files, -# 'weight': mcCommonWeight, # +'*ttHMVA_SF_flip_2l', -# 'FilesPerJob': 8, -# } -# addSampleWeight(samples,'top','TTTo2L2Nu','Top_pTrw') - -# ###### WW ######## -# samples['WW'] = { -# 'name': nanoGetSampleFiles(mcDirectory, 'WWTo2L2Nu'), -# 'weight': mcCommonWeight + '*nllW*ewknloW', -# 'FilesPerJob': 4 -# } - -# samples['WWewk'] = { -# 'name': nanoGetSampleFiles(mcDirectory, 'WpWmJJ_EWK_noTop'), -# 'weight': mcCommonWeight + '*(Sum(abs(GenPart_pdgId)==6 || GenPart_pdgId==25)==0)', # Filter tops and Higgs, -# 'FilesPerJob': 8 -# } - -# files = nanoGetSampleFiles(mcDirectory, 'GluGluToWWToENEN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToENMN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToENTN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToMNEN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToMNMN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToMNTN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToTNEN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToTNMN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToTNTN') - -# samples['ggWW'] = { -# 'name': files, -# 'weight': mcCommonWeight + '*1.53/1.4', -# 'FilesPerJob': 8 -# } - -# Charge-flip estimated from data, and covering DY, WW, and Top -samples['ChargeFlip'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'DYJetsToLL_M-50'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4 -} - -######## Vg ######## -files = nanoGetSampleFiles(mcDirectory, 'Wg_AMCNLOFXFX_01J') + \ - nanoGetSampleFiles(mcDirectory, 'ZGToLLG') - -samples['Vg'] = { - 'name': files, - 'weight': mcCommonWeightNoMatch + '*(Gen_ZGstar_mass <= 0)', - 'FilesPerJob': 4, -} - -######## VgS ######## -files = nanoGetSampleFiles(mcDirectory, 'Wg_AMCNLOFXFX_01J') + \ - nanoGetSampleFiles(mcDirectory, 'WZTo3LNu_mllmin0p1') + \ - nanoGetSampleFiles(mcDirectory, 'ZGToLLG') - -samples['VgS'] = { - 'name': files, - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} -addSampleWeight(samples, 'VgS', 'Wg_AMCNLOFXFX_01J', '((Gen_ZGstar_mass > 0 && Gen_ZGstar_mass <= 0.1))*(gstarLow*0.94)') -addSampleWeight(samples, 'VgS', 'WZTo3LNu_mllmin0p1', '((Gen_ZGstar_mass > 0.1)*(0.601644*58.59/4.666))*(gstarLow*0.94)') -addSampleWeight(samples, 'VgS', 'ZGToLLG', '(Gen_ZGstar_mass > 0)') - -############ WZ ############ -files = nanoGetSampleFiles(mcDirectory, 'WZTo3LNu_mllmin0p1') + \ - nanoGetSampleFiles(mcDirectory, 'WZTo2Q2L_mllmin4p0') - -samples['WZ'] = { - 'name': files, - 'weight': mcCommonWeight + ' * (gstarHigh)', - 'FilesPerJob': 4, -} -addSampleWeight(samples, 'WZ', 'WZTo3LNu_mllmin0p1', '(0.601644*58.59/4.666)') - - -############ ZZ ############ -files = nanoGetSampleFiles(mcDirectory, 'ZZTo2L2Nu') + \ - nanoGetSampleFiles(mcDirectory, 'ZZTo2Q2L_mllmin4p0') + \ - nanoGetSampleFiles(mcDirectory, 'ZZTo4L') - -samples['ZZ'] = { - 'name': files, - 'weight': mcCommonWeight, - 'FilesPerJob': 2, -} - - -########## VVV ######### -files = nanoGetSampleFiles(mcDirectory, 'ZZZ') + \ - nanoGetSampleFiles(mcDirectory, 'WZZ') + \ - nanoGetSampleFiles(mcDirectory, 'WWZ') + \ - nanoGetSampleFiles(mcDirectory, 'WWW') - -samples['VVV'] = { - 'name': files, - 'weight': mcCommonWeight, - 'FilesPerJob': 8, -} - -########################################### -############# SIGNALS ################## -########################################### - -signals = [] - -############ ggH H->WW ############ -samples['ggH_hww'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'GluGluHToWWTo2L2Nu_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} -signals.append('ggH_hww') - -############ VBF H->WW ############ -samples['qqH_hww'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'VBFHToWWTo2L2Nu_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 8, -} -signals.append('qqH_hww') - -############ ZH H->WW ############ -samples['ZH_hww'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'HZJ_HToWW_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 8, -} -signals.append('ZH_hww') - -samples['ggZH_hww'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'ggZH_HToWW_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 8, -} -signals.append('ggZH_hww') - -############ WH H->WW ############ -samples['WH_hww_plus'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'HWplusJ_HToWW_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} -signals.append('WH_hww_plus') - -samples['WH_hww_minus'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'HWminusJ_HToWW_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} - -signals.append('WH_hww_minus') - -############ ttH ############ -samples['ttH_hww'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'ttHToNonbb_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} -signals.append('ttH_hww') - -############ H->TauTau ############ -samples['ggH_htt'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'GluGluHToTauTau_M125_Powheg'), - 'weight': mcCommonWeight, - 'FilesPerJob': 20, -} -signals.append('ggH_htt') - -samples['qqH_htt'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'VBFHToTauTau_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 20, -} -signals.append('qqH_htt') - -samples['ZH_htt'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'ZHToTauTau_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 8, -} -signals.append('ZH_htt') - -############ WH H->TauTau ############ -samples['WH_htt_plus'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'WplusHToTauTau_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} -signals.append('WH_htt_plus') - -samples['WH_htt_minus'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'WminusHToTauTau_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} -signals.append('WH_htt_minus') - - -########################################### -################## FAKE ################### -########################################### - -samples['Fake'] = { - 'name': [], - 'weight': 'METFilter_DATA*fakeW', - 'weights': [], - 'isData': ['all'], - 'FilesPerJob': 50 -} - -for _, sd in DataRun: - for pd in DataSets: - tag_data = pd + '_' + sd - - if 'DoubleMuon' in pd and 'Run2016G' in sd: - print("sd = {}".format(sd)) - print("pd = {}".format(pd)) - print("Old tag = {}".format(tag_data)) - tag_data = tag_data.replace('v1','v2') - print("New tag = {}".format(tag_data)) - - files = nanoGetSampleFiles(fakeDirectory, tag_data) - - samples['Fake']['name'].extend(files) - addSampleWeight(samples, 'Fake', tag_data, DataTrig[pd]) - -samples['Fake']['subsamples'] = { - 'em': 'abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 11*13', - 'mm': 'abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 13*13', - 'ee': 'abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 11*11' -} - - -########################################### -################## DATA ################### -########################################### - -samples['DATA'] = { - 'name' : [], - 'weight' : 'LepWPCut*METFilter_DATA', - 'weights' : [], - 'isData' : ['all'], - 'FilesPerJob' : 50 -} - -for _, sd in DataRun: - for pd in DataSets: - tag_data = pd + '_' + sd - - if 'DoubleMuon' in pd and 'Run2016G' in sd: - print("sd = {}".format(sd)) - print("pd = {}".format(pd)) - print("Old tag = {}".format(tag_data)) - tag_data = tag_data.replace('v1','v2') - print("New tag = {}".format(tag_data)) - - files = nanoGetSampleFiles(dataDirectory, tag_data) - - samples['DATA']['name'].extend(files) - addSampleWeight(samples, 'DATA', tag_data, DataTrig[pd]) diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_CR/structure.py b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_CR/structure.py deleted file mode 100644 index b38b3c00..00000000 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_CR/structure.py +++ /dev/null @@ -1,203 +0,0 @@ -# structure configuration for datacard - -# keys here must match keys in samples.py - -signal_normalization = 10.0 - -# BTag normalization factors -# Cut = hww2l2v_13TeV_samesign_1j -scale_histo_ttH_hww = 0.160537372171/0.105836109911 # 1.51684876084 -scale_histo_WW = 13.1478410113/12.9925824875 # 1.01194978165 -scale_histo_DY = 23.1120856722/21.6856215092 # 1.06577926127 -scale_histo_WZ = 115.896303073/117.772801287 # 0.984066794763 -scale_histo_Wg = 123.865202644/120.851067654 # 1.02494090494 -scale_histo_Zg = 16.0942073492/16.2827654077 # 0.988419776752 -scale_histo_Vg = (123.865202644+16.0942073492)/(120.851067654+16.2827654077) -scale_histo_ZgS = 5.54053867478/5.26867838135 # 1.0515993336 -scale_histo_WgS = 51.4646013319/49.3716146509 # 1.04239251027 -scale_histo_VgS = (51.4646013319+5.54053867478)/(49.3716146509+5.26867838135) -scale_histo_ZH_htt = 0.206772897183/0.21476539759 # 0.962784971428 -scale_histo_ggZH_hww = 0.115696593519/0.110430456832 # 1.04768735761 -scale_histo_qqH_hww = 0.0418143373177/0.0406604978316 # 1.02837740676 -scale_histo_ZZ = 3.6062138988/3.62806772315 # 0.993976456334 -scale_histo_ggH_hww = 0.516740512838/0.500764939631 # 1.03190233969 -scale_histo_WH_htt_minus = 0.760284077219/0.790188965083 # 0.962154764005 -scale_histo_VVV = 4.0070473387/4.12788750782 # 0.970725905469 -scale_histo_WH_hww_plus = 3.12916804508/3.03427517747 # 1.03127365254 -scale_histo_ggH_htt = 0.0547492764387/0.058092494244 # 0.942450090175 -scale_histo_ggH_htt = 0.0547492764387/0.058092494244 # 0.942450090175 -scale_histo_qqH_htt = 0.0261558449402/0.0265182022699 # 0.986335524331 -scale_histo_ggWW = 0.864962033063/0.851737593944 # 1.01552642412 -scale_histo_top = 76.8733454708/59.7989943761 # 1.28552906738 -scale_histo_WWewk = 0.0937543443187/0.0920893788864 # 1.01807988557 -scale_histo_ZH_hww = 0.468019653719/0.456889363186 # 1.02436101916 -scale_histo_WH_hww_minus = 1.84971389157/1.80063731754 # 1.02725511326 -scale_histo_WH_htt_plus = 1.25210961736/1.291978315 # 0.969141356961 - -structure = {} - -# structure['DY'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_DY, -# } - -# structure['top'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_top, -# } - -# structure['WW'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_WW, -# } - -# structure['WWewk'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_WWewk, -# } - -# structure['ggWW'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_ggWW, -# } - - -structure['Vg'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_Vg, -} - -structure['Vg'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_VgS, -} - -structure['WZ'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WZ * 1.138 # NLO -> NNLO k-factor -} - -structure['ZZ'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZZ, -} - -structure['VVV'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_VVV, -} - - -# Higgs -structure['ggH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ggH_hww, -} - -structure['qqH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_qqH_hww, -} - -structure['ZH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZH_hww, -} - -# structure['ggZH_hww'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_ggZH_hww, -# } - -structure['WH_hww_plus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_hww_plus*signal_normalization, -} - -structure['WH_hww_minus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_hww_minus*signal_normalization, -} - -structure['ttH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ttH_hww, -} - -structure['ggH_htt'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ggH_htt, -} - -structure['qqH_htt'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_qqH_htt, -} - -structure['ZH_htt'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZH_htt, -} - -structure['WH_htt_plus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_htt_plus*signal_normalization, -} - -structure['WH_htt_minus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_htt_minus*signal_normalization, -} - - -# Fakes -structure['Fake_ee'] = { - 'isSignal' : 0, - 'isData' : 0, -} - -structure['Fake_mm'] = { - 'isSignal' : 0, - 'isData' : 0, -} - -structure['Fake_em'] = { - 'isSignal' : 0, - 'isData' : 0, -} - - -# Data-driven charge flip estimation -structure['ChargeFlip'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : 0.5, -} - -# Data -structure['DATA'] = { - 'isSignal' : 0, - 'isData' : 1 -} diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_mm_CR/README.md b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_mm_CR/README.md deleted file mode 100644 index ba17b328..00000000 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_mm_CR/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# Configuration for WHSS 1j signal region - -### Plot distributions - -Compile configuration and plot distributions: - - mkShapesRDF -c 1 - - mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png - -### Produce datacards - -Compile configuration and produce datacards: - - mkShapesRDF -c 1 - - mkDatacards --outputDirDatacard ../datacards_original_signal_scale --skipMissingNuisance \ No newline at end of file diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_mm_CR/configuration.py b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_mm_CR/configuration.py deleted file mode 100644 index 9139dec5..00000000 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_mm_CR/configuration.py +++ /dev/null @@ -1,99 +0,0 @@ -# Configuration file for charge asymmetry WHSS analysis using the UL 2016noHIPM dataset - -import sys,inspect - -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_mm_CR - -configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file -configurations_nuisance = os.path.dirname(configurations_nuisance) # configuration_1j_mm_CR -configurations_nuisance = os.path.dirname(configurations_nuisance) # WHSS -configurations_nuisance = os.path.dirname(configurations_nuisance) # 2016noHIPM_v9 -configurations_nuisance = os.path.dirname(configurations_nuisance) # UL - -# Tag used to identify the configuration folder version -tag = 'WHSS_2016noHIPM_v9_chargeAsymmetry_Mu82_EleUL90' - -# File to use as runner script, default uses mkShapesRDF.shapeAnalysis.runner, otherwise specify path to script -runnerFile = "default" - -# Output file name -outputFile = "plots_WHSS_2016noHIPM_v9_chargeAsymmetry_Mu82_EleUL90_DYflip_data.root" # "mkShapes__{}.root".format(tag) - -# Path to ouput folder -outputFolder = "../../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" - -# Path to batch folder (used for condor submission) -batchFolder = "condor" - -# Path to configuration folder (will contain all the compiled configuration files) -configsFolder = "configs" - -# luminosity to normalize to (in 1/fb) -# https://github.com/latinos/LatinoAnalysis/blob/UL_production/NanoGardener/python/data/TrigMaker_cfg.py#L239 (#311 #377 #445) -# 0.418771191 + 7.653261227 + 7.866107374 + 0.8740119304 = 16.8121517224 -lumi = 16.81 - -# File with dict of aliases to define -aliasesFile = "../aliases.py" - -# File with dict of variables -variablesFile = "../variables.py" - -# File with dict of cuts -cutsFile = "cuts.py" - -# File with dict of samples -samplesFile = "../samples.py" - -# File with dict of samples for plotting -plotFile = 'plot.py' - -# File with dict of structure (used to define processes in combine) -structureFile = "structure.py" - -# Nuisances file for mkDatacards and for mkShape -nuisancesFile = "../nuisances.py" - -# Path to folder where to save plots -plotPath = '../plots_' + tag - -# This lines are executed right before the runner on the condor node -mountEOS = [] - -# List of imports to import when compiling the whole configuration folder, it should not contain imports used by configuration.py -imports = ["os", "glob", ("collections", "OrderedDict"), "ROOT"] - -# List of files to compile -filesToExec = [ - samplesFile, - aliasesFile, - variablesFile, - cutsFile, - plotFile, - nuisancesFile, - structureFile, -] - -# List of variables to keep in the compiled configuration folder -varsToKeep = [ - "batchVars", - "outputFolder", - "batchFolder", - "configsFolder", - "outputFile", - "runnerFile", - "tag", - "samples", - "aliases", - "variables", - ("cuts", {"cuts": "cuts", "preselections": "preselections"}), - ("plot", {"plot": "plot", "groupPlot": "groupPlot", "legend": "legend"}), - "nuisances", - "structure", - "lumi", -] - -# List of variables to keep in the batch submission script (script.py) -batchVars = varsToKeep[varsToKeep.index("samples") :] - -varsToKeep += ['plotPath'] diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_mm_CR/cuts.py b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_mm_CR/cuts.py deleted file mode 100644 index 091bbdd5..00000000 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_mm_CR/cuts.py +++ /dev/null @@ -1,37 +0,0 @@ -cuts = {} - -# cuts -preselections = 'mll>12 \ - && Lepton_pt[0]>25 \ - && Lepton_pt[1]>10 \ - && (abs(Lepton_pdgId[1])==13 || Lepton_pt[1]>13) \ - && abs(Lepton_eta[0])<2.5 && abs(Lepton_eta[1])<2.5 \ - && bVeto \ - && PuppiMET_pt > 30 \ - && !hole_veto \ - ' - -# Splitting in sub-leading lepton pT -#################################### - -## SR 1jet - -# mu-mu -cuts['hww2l2v_13TeV_WH_SS_noZveto_mm_1j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 13*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)<30 && mlljj20_whss > 50.', - 'categories' : { - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT >= 20 GeV) - 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT < 20 GeV) - 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - } -} - -# mlljj20_whss: -# inv_mass of: (jet1, jet2, 2*closest_lep_to_jets) -# jets are considered with pT > 20 GeV - -# Definitions of WH3l variables: -# https://github.com/latinos/LatinoAnalysis/blob/76e7c4b93aa5f056c92440d4e8d24e7de749c8fe/NanoGardener/python/modules/l3KinProducer.py diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_mm_CR/nuisances.py b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_mm_CR/nuisances.py deleted file mode 100644 index f0a2cb34..00000000 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_mm_CR/nuisances.py +++ /dev/null @@ -1,654 +0,0 @@ -import sys - -# Enable reading YR for Higgs XS and uncertainties -sys.path.append('../../../macros/') -import HiggsXSection -HiggsXS = HiggsXSection.HiggsXSection() - -nuisances = {} - -mcProduction = 'Summer20UL16_106x_nAODv9_noHIPM_Full2016v9' -dataReco = 'Run2016_UL2016_nAODv9_noHIPM_Full2016v9' -mcSteps = 'MCl1loose2016v9__MCCorr2016v9NoJERInHorn__l2tightOR2016v9' -fakeSteps = 'DATAl1loose2016v9__l2loose__fakeW' -dataSteps = 'DATAl1loose2016v9__l2loose__l2tightOR2016v9' - -treeBaseDir = '/eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano' -limitFiles = -1 - -mc = [skey for skey in samples if skey not in ('Fake', 'DATA')] - -redirector = "" - -useXROOTD = False - -def makeMCDirectory(var=''): - if var== '': - print(os.path.join(treeBaseDir, mcProduction, mcSteps)) - return os.path.join(treeBaseDir, mcProduction, mcSteps) - else: - print(os.path.join(treeBaseDir, mcProduction, mcSteps + '__' + var)) - return os.path.join(treeBaseDir, mcProduction, mcSteps + '__' + var) - -mcDirectory = makeMCDirectory() -fakeDirectory = os.path.join(treeBaseDir, dataReco, fakeSteps) -dataDirectory = os.path.join(treeBaseDir, dataReco, dataSteps) - -################################ EXPERIMENTAL UNCERTAINTIES ################################# - -#### Luminosity - -# https://twiki.cern.ch/twiki/bin/view/CMS/LumiRecommendationsRun2#LumiComb -# Uncorrelated 2016 1.0 -# Uncorrelated 2017 2.0 -# Uncorrelated 2018 1.5 -# Correlated 2016, 2017, 2018 0.6, 0.9, 2.0 -# Correlated 2017, 2018 0.6, 0.2 - -nuisances['lumi_Uncorrelated'] = { - 'name' : 'lumi_13TeV_2016', - 'type' : 'lnN', - 'samples' : dict((skey, '1.010') for skey in mc if skey not in ['WZ']) -} - -nuisances['lumi_Correlated_Run2'] = { - 'name' : 'lumi_13TeV_correlated', - 'type' : 'lnN', - 'samples' : dict((skey, '1.006') for skey in mc if skey not in ['WZ']) -} - - -#### FAKES -fake_syst_endcap = ['1.0*(abs(Lepton_eta[1])<=1.4) + 1.3*(abs(Lepton_eta[1])>1.4)', - '1.0*(abs(Lepton_eta[1])<=1.4) + 1.0/1.3*(abs(Lepton_eta[1])>1.4)'] - -fake_syst_barrel = [' 1.3*(abs(Lepton_eta[1])<=1.4) + 1.0*(abs(Lepton_eta[1])>1.4)', - '1.0/1.3*(abs(Lepton_eta[1])<=1.4) + 1.0*(abs(Lepton_eta[1])>1.4)'] - -nuisances['fake_syst_mm_barrel'] = { - 'name' : 'CMS_WH_hww_fake_syst_mm_barrel', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_mm' : fake_syst_barrel, - }, - 'cuts' : [cut for cut in cuts if ('_mm_' in cut)] -} -nuisances['fake_syst_mm_endcap'] = { - 'name' : 'CMS_WH_hww_fake_syst_mm_endcap', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_mm' : fake_syst_endcap, - }, - 'cuts' : [cut for cut in cuts if ('_mm_' in cut)] -} - -nuisances['fake_syst_em_barrel'] = { - 'name' : 'CMS_WH_hww_fake_syst_em_barrel', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_em' : fake_syst_barrel, - }, - 'cuts' : [cut for cut in cuts if ('_em_' in cut)] -} -nuisances['fake_syst_em_endcap'] = { - 'name' : 'CMS_WH_hww_fake_syst_em_endcap', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_em' : fake_syst_endcap, - }, - 'cuts' : [cut for cut in cuts if ('_em_' in cut)] -} - -nuisances['fake_syst_ee_barrel'] = { - 'name' : 'CMS_WH_hww_fake_syst_ee_barrel', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_ee' : fake_syst_barrel, - }, - 'cuts' : [cut for cut in cuts if ('_ee_' in cut)] -} -nuisances['fake_syst_ee_endcap'] = { - 'name' : 'CMS_WH_hww_fake_syst_ee_endcap', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_ee' : fake_syst_endcap, - }, - 'cuts' : [cut for cut in cuts if ('_ee_' in cut)] -} - -nuisances['fake_ele'] = { - 'name' : 'CMS_WH_hww_fake_e_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_ee' : ['fakeWEleUp', 'fakeWEleDown'], - 'Fake_em' : ['fakeWEleUp', 'fakeWEleDown'], - } -} -nuisances['fake_ele_stat'] = { - 'name' : 'CMS_WH_hww_fake_stat_e_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_ee' : ['fakeWStatEleUp', 'fakeWStatEleDown'], - 'Fake_em' : ['fakeWStatEleUp', 'fakeWStatEleDown'], - } -} -nuisances['fake_mu'] = { - 'name' : 'CMS_WH_hww_fake_m_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_mm' : ['fakeWMuUp', 'fakeWMuDown'], - 'Fake_em' : ['fakeWMuUp', 'fakeWMuDown'], - } -} -nuisances['fake_mu_stat'] = { - 'name' : 'CMS_WH_hww_fake_stat_m_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_mm' : ['fakeWStatMuUp', 'fakeWStatMuDown'], - 'Fake_em' : ['fakeWStatMuUp', 'fakeWStatMuDown'], - } -} - -###### B-tagger - -for shift in ['lf', 'hf', 'hfstats1', 'hfstats2', 'lfstats1', 'lfstats2', 'cferr1', 'cferr2']: - btag_syst = ['(btagSF%sup)/(btagSF)' % shift, '(btagSF%sdown)/(btagSF)' % shift] - - name = 'CMS_btag_%s' % shift - if 'stats' in shift: - name += '_2016' - - nuisances['btag_shape_%s' % shift] = { - 'name' : name, - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, btag_syst) for skey in mc), - } - -##### Trigger Scale Factors - -trig_syst = ['TriggerSFWeight_2l_u/TriggerSFWeight_2l', 'TriggerSFWeight_2l_d/TriggerSFWeight_2l'] - -nuisances['trigg'] = { - 'name' : 'CMS_eff_hwwtrigger_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, trig_syst) for skey in mc) -} - -##### Electron Efficiency and energy scale - -nuisances['eff_e'] = { - 'name' : 'CMS_eff_e_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['SFweightEleUp', 'SFweightEleDown']) for skey in mc) -} - -nuisances['eff_ttHMVA_e'] = { - 'name' : 'CMS_eff_ttHMVA_e_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['LepWPttHMVASFEleUp', 'LepWPttHMVASFEleDown']) for skey in mc) -} - -nuisances['electronpt'] = { - 'name' : 'CMS_scale_e_2016', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'ElepTup', - 'mapDown' : 'ElepTdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('ElepTup_suffix'), - 'folderDown' : makeMCDirectory('ElepTdo_suffix'), - 'AsLnN' : '0' -} - -##### Muon Efficiency and energy scale - -nuisances['eff_m'] = { - 'name' : 'CMS_eff_m_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['SFweightMuUp', 'SFweightMuDown']) for skey in mc) -} - -nuisances['eff_ttHMVA_m'] = { - 'name' : 'CMS_eff_ttHMVA_m_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['LepWPttHMVASFMuUp', 'LepWPttHMVASFMuDown']) for skey in mc) -} - -nuisances['muonpt'] = { - 'name' : 'CMS_scale_m_2016', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'MupTup', - 'mapDown' : 'MupTdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('MupTup_suffix'), - 'folderDown' : makeMCDirectory('MupTdo_suffix'), - 'AsLnN' : '0' -} - -##### Jet energy scale -jes_systs = ['JESAbsolute','JESAbsolute_2016','JESBBEC1','JESBBEC1_2016','JESEC2','JESEC2_2016','JESFlavorQCD','JESHF','JESHF_2016','JESRelativeBal','JESRelativeSample_2016'] - -for js in jes_systs: - - nuisances[js] = { - 'name' : 'CMS_scale_' + js.replace("JES","j_"), - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : js + 'up', - 'mapDown' : js + 'do', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('RDF__JESup_suffix'), - 'folderDown': makeMCDirectory('RDF__JESdo_suffix'), - 'reweight' : ['btagSF'+js.replace('JES','jes')+'up/btagSF','btagSF'+js.replace('JES','jes')+'down/btagSF'], - 'AsLnN' : '0' - } - -##### Jet energy resolution -nuisances['JER'] = { - 'name' : 'CMS_res_j_2016', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'JERup', - 'mapDown' : 'JERdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('JERup_suffix'), - 'folderDown': makeMCDirectory('JERdo_suffix'), - 'AsLnN' : '0' -} - -##### MET unclustered energy - -# metUp.PuppiMET_pt_METup -nuisances['met'] = { - 'name' : 'CMS_scale_met_2016', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'METup', - 'mapDown' : 'METdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('METup_suffix'), - 'folderDown': makeMCDirectory('METdo_suffix'), - 'AsLnN' : '0' -} - - -##### Pileup - -# puWeight_UL2016 -nuisances['PU'] = { - 'name' : 'CMS_pileup_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'DY' : ['1.000489*(puWeightUp/puWeight)', '0.998828*(puWeightDown/puWeight)'], - 'WW' : ['1.007152*(puWeightUp/puWeight)', '0.993194*(puWeightDown/puWeight)'], - 'ggWW' : ['1.006460*(puWeightUp/puWeight)', '0.993661*(puWeightDown/puWeight)'], - 'Vg' : ['1.004694*(puWeightUp/puWeight)', '0.998294*(puWeightDown/puWeight)'], - 'WZ' : ['1.003158*(puWeightUp/puWeight)', '0.997747*(puWeightDown/puWeight)'], - 'ZZ' : ['1.000801*(puWeightUp/puWeight)', '0.999199*(puWeightDown/puWeight)'], - 'VVV' : ['0.996144*(puWeightUp/puWeight)', '1.005616*(puWeightDown/puWeight)'], - 'top' : ['1.004374*(puWeightUp/puWeight)', '0.995684*(puWeightDown/puWeight)'], - 'Higgs' : ['1.006460*(puWeightUp/puWeight)', '0.993559*(puWeightDown/puWeight)'], - }, - 'AsLnN' : '0', -} - -### PU ID SF uncertainty - -puid_syst = ['Jet_PUIDSF_up/Jet_PUIDSF', 'Jet_PUIDSF_down/Jet_PUIDSF'] - -nuisances['jetPUID'] = { - 'name' : 'CMS_eff_j_PUJET_id_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, puid_syst) for skey in mc) -} - -### PS and UE - -nuisances['PS_ISR'] = { - 'name' : 'PS_WH_hww_ISR', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['PSWeight[2]', 'PSWeight[0]']) for skey in mc), - 'AsLnN' : '0', -} - -nuisances['PS_FSR'] = { - 'name' : 'PS_WH_hww_FSR', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['PSWeight[3]', 'PSWeight[1]']) for skey in mc), - 'AsLnN' : '0', -} - -nuisances['UE_CP5'] = { - 'name' : 'CMS_WH_hww_UE', - 'skipCMS' : 1, - 'type' : 'lnN', - 'samples' : dict((skey, '1.015') for skey in mc), -} - -# Charge flip efficiency -nuisances['chargeFlipEff'] = { - 'name' : 'CMS_whss_chargeFlipEff_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['1-ttHMVA_eff_err_flip_2l', '1+ttHMVA_eff_err_flip_2l']) for skey in ['DY','ChargeFlip']), - 'cuts' : [cut for cut in cuts if ('_ee_' in cut or '_em_' in cut)] -} - -# Charge flip: uncertainty on opposite sign processes not affected by charge-flip -nuisances['chargeFlip_syst'] = { - 'name' : 'CMS_ChargeFlip_syst', - 'type' : 'lnN', - 'samples' : { - 'ChargeFlip' : '1.10', - } -} - -# Top pT reweighting uncertainty - -nuisances['TopPtRew'] = { - 'name' : 'CMS_top_pT_reweighting', # Theory uncertainty - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'top': ["1.", "1./Top_pTrw"] - }, - 'symmetrize' : True -} - -nuisances['WgStar'] = { - 'name' : 'CMS_hww_WgStarScale', - 'type' : 'lnN', - 'samples' : { - 'WgS' : '1.25' - } -} - -###### pdf uncertainties - -valuesggh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggH', '125.09','pdf','sm') -valuesggzh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggZH','125.09','pdf','sm') -valuesbbh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','bbH', '125.09','pdf','sm') - -nuisances['pdf_Higgs_gg'] = { - 'name' : 'pdf_Higgs_gg', - 'samples' : { - 'ggH_hww' : valuesggh, - 'ggH_htt' : valuesggh, - 'ggZH_hww' : valuesggzh, - 'bbH_hww' : valuesbbh, - }, - 'type' : 'lnN', -} - -# For ttH, we need to use 1./values -values = str(1./float(HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ttH','125.09','pdf','sm'))) - -nuisances['pdf_Higgs_ttH'] = { - 'name' : 'pdf_Higgs_ttH', - 'samples' : { - 'ttH_hww': values, - }, - 'type' : 'lnN', -} - -valuesqqh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','vbfH','125.09','pdf','sm') -valueswh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','WH', '125.09','pdf','sm') -valueszh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ZH', '125.09','pdf','sm') - -nuisances['pdf_Higgs_qqbar'] = { - 'name' : 'pdf_Higgs_qqbar', - 'type' : 'lnN', - 'samples': { - 'qqH_hww' : valuesqqh, - 'qqH_htt' : valuesqqh, - 'WH_hww_plus' : valueswh, - 'WH_hww_minus': valueswh, - 'WH_htt_plus' : valueswh, - 'WH_htt_minus': valueswh, - 'ZH_hww' : valueszh, - 'ZH_htt' : valueszh - }, -} - -nuisances['pdf_qqbar'] = { - 'name' : 'pdf_qqbar', - 'type' : 'lnN', - 'samples' : { - 'Wg' : '1.04', - 'Zg' : '1.04', - 'ZZ' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 - 'WZ' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 - 'WgS' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 - 'ZgS' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 - }, -} - -nuisances['pdf_gg'] = { - 'name': 'pdf_gg', - 'type': 'lnN', - 'samples': { - 'ggWW' : '1.05', - }, -} - -nuisances['pdf_Higgs_gg_ACCEPT'] = { - 'name' : 'pdf_WH_hww_Higgs_gg_ACCEPT', - 'samples' : { - 'ggH_hww' : '1.006', - 'ggH_htt' : '1.006', - 'ggZH_hww' : '1.006', - 'bbH_hww' : '1.006' - }, - 'type' : 'lnN', -} -nuisances['pdf_gg_ACCEPT'] = { - 'name' : 'pdf_WH_hww_gg_ACCEPT', - 'samples' : { - 'ggWW' : '1.006', - }, - 'type' : 'lnN', -} - -nuisances['pdf_Higgs_qqbar_ACCEPT'] = { - 'name' : 'pdf_WH_hww_Higgs_qqbar_ACCEPT', - 'type' : 'lnN', - 'samples' : { - 'qqH_hww' : '1.002', - 'qqH_htt' : '1.002', - 'WH_hww_plus' : '1.003', - 'WH_hww_minus': '1.003', - 'WH_htt_plus' : '1.003', - 'WH_htt_minus': '1.003', - 'ZH_hww' : '1.002', - 'ZH_htt' : '1.002', - }, -} - -nuisances['pdf_qqbar_ACCEPT'] = { - 'name' : 'pdf_WH_hww_qqbar_ACCEPT', - 'type' : 'lnN', - 'samples' : { - 'ZZ' : '1.001', - 'WZ' : '1.001', - }, -} - -##### Renormalization & factorization scales - -## Shape nuisance due to QCD scale variations for DY -## LHE scale variation weights (w_var / w_nominal) - -## This should work for samples with either 8 or 9 LHE scale weights (Length$(LHEScaleWeight) == 8 or 9) -variations = ['Alt(LHEScaleWeight,0,1)', 'Alt(LHEScaleWeight,1,1)', 'Alt(LHEScaleWeight,3,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-4,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-2,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-1,1)'] - -# nuisances['QCDscale_V'] = { -# 'name' : 'QCDscale_V', -# 'skipCMS' : 1, -# 'kind' : 'weight_envelope', -# 'type' : 'shape', -# 'samples' : { -# 'DY' : variations -# }, -# 'AsLnN' : '0' -# } - -nuisances['QCDscale_VV'] = { - 'name' : 'QCDscale_VV', - 'kind' : 'weight_envelope', - 'type' : 'shape', - 'samples' : { - 'WW' : variations, - 'Zg' : variations, - 'Wg' : variations, - 'ZZ' : variations, - 'WZ' : variations, - 'WgS' : variations, - 'ZgS' : variations - } -} - -nuisances['QCDscale_ggVV'] = { - 'name' : 'QCDscale_ggVV', - 'type' : 'lnN', - 'samples' : { - 'ggWW' : '1.15', - }, -} - -#### QCD scale uncertainties for Higgs signals other than ggH - -values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','vbfH','125.09','scale','sm') - -nuisances['QCDscale_qqH'] = { - 'name' : 'QCDscale_qqH', - 'samples' : { - 'qqH_hww' : values, - 'qqH_htt' : values, - }, - 'type' : 'lnN' -} - -valueswh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','WH','125.09','scale','sm') -valueszh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ZH','125.09','scale','sm') - -nuisances['QCDscale_VH'] = { - 'name' : 'QCDscale_VH', - 'samples' : { - 'WH_hww_plus' : valueswh, - 'WH_hww_minus' : valueswh, - 'WH_htt_plus' : valueswh, - 'WH_htt_minus' : valueswh, - 'ZH_hww' : valueszh, - 'ZH_htt' : valueszh, - }, - 'type' : 'lnN', -} - -values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggZH','125.09','scale','sm') - -nuisances['QCDscale_ggZH'] = { - 'name' : 'QCDscale_ggZH', - 'samples' : { - 'ggZH_hww' : values, - }, - 'type' : 'lnN', -} - -values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ttH','125.09','scale','sm') - -nuisances['QCDscale_ttH'] = { - 'name' : 'QCDscale_ttH', - 'samples' : { - 'ttH_hww' : values, - }, - 'type' : 'lnN', -} - -nuisances['QCDscale_WWewk'] = { - 'name' : 'QCDscale_WWewk', - 'samples' : { - 'WWewk' : '1.11', - }, - 'type' : 'lnN' -} - -nuisances['QCDscale_qqbar_ACCEPT'] = { - 'name' : 'QCDscale_qqbar_ACCEPT', - 'type' : 'lnN', - 'samples' : { - 'qqH_hww' : '1.003', - 'qqH_htt' : '1.003', - 'WH_hww_plus' : '1.010', - 'WH_hww_minus' : '1.010', - 'WH_htt_plus' : '1.010', - 'WH_htt_minus' : '1.010', - 'ZH_hww' : '1.015', - 'ZH_htt' : '1.015', - } -} - -# FIXME: these come from HIG-16-042, maybe should be recomputed? -nuisances['QCDscale_gg_ACCEPT'] = { - 'name' : 'QCDscale_gg_ACCEPT', - 'samples' : { - 'ggH_htt' : '1.012', - 'ggH_hww' : '1.012', - 'ggZH_hww' : '1.012', - 'ggWW' : '1.012', - }, - 'type' : 'lnN', -} - -# WZ normalization from control region - -nuisances['WZ2jnorm'] = { - 'name' : 'CMS_hww_WZ3l2jnorm', - 'samples' : { - 'WZ' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [cut for cut in cuts if '2j' in cut], -} - -nuisances['WZ1jnorm'] = { - 'name' : 'CMS_hww_WZ3l1jnorm', - 'samples' : { - 'WZ' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [cut for cut in cuts if '1j' in cut], -} - -# Use the following if you want to apply the automatic combine MC stat nuisances. -nuisances['stat'] = { - 'type' : 'auto', - 'maxPoiss' : '10', - 'includeSignal' : '0', - 'samples' : {} -} -# nuisance ['maxPoiss'] = Number of threshold events for Poisson modelling -# nuisance ['includeSignal'] = Include MC stat nuisances on signal processes (1=True, 0=False) - -for n in nuisances.values(): - n['skipCMS'] = 1 diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_mm_CR/plot.py b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_mm_CR/plot.py deleted file mode 100644 index 592af1fd..00000000 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_mm_CR/plot.py +++ /dev/null @@ -1,356 +0,0 @@ -# plot configuration - -# Groups of samples to improve the plots. -# If not defined, normal plots is used - -# BTag normalization factors -# Cut = hww2l2v_13TeV_samesign_1j -scale_histo_ttH_hww = 0.160537372171/0.105836109911 # 1.51684876084 -scale_histo_WW = 13.1478410113/12.9925824875 # 1.01194978165 -scale_histo_DY = 23.1120856722/21.6856215092 # 1.06577926127 -scale_histo_WZ = 115.896303073/117.772801287 # 0.984066794763 -scale_histo_Wg = 123.865202644/120.851067654 # 1.02494090494 -scale_histo_Zg = 16.0942073492/16.2827654077 # 0.988419776752 -scale_histo_Vg = (123.865202644+16.0942073492)/(120.851067654+16.2827654077) -scale_histo_ZgS = 5.54053867478/5.26867838135 # 1.0515993336 -scale_histo_WgS = 51.4646013319/49.3716146509 # 1.04239251027 -scale_histo_VgS = (51.4646013319+5.54053867478)/(49.3716146509+5.26867838135) -scale_histo_ZH_htt = 0.206772897183/0.21476539759 # 0.962784971428 -scale_histo_ggZH_hww = 0.115696593519/0.110430456832 # 1.04768735761 -scale_histo_qqH_hww = 0.0418143373177/0.0406604978316 # 1.02837740676 -scale_histo_ZZ = 3.6062138988/3.62806772315 # 0.993976456334 -scale_histo_ggH_hww = 0.516740512838/0.500764939631 # 1.03190233969 -scale_histo_WH_htt_minus = 0.760284077219/0.790188965083 # 0.962154764005 -scale_histo_VVV = 4.0070473387/4.12788750782 # 0.970725905469 -scale_histo_WH_hww_plus = 3.12916804508/3.03427517747 # 1.03127365254 -scale_histo_ggH_htt = 0.0547492764387/0.058092494244 # 0.942450090175 -scale_histo_ggH_htt = 0.0547492764387/0.058092494244 # 0.942450090175 -scale_histo_qqH_htt = 0.0261558449402/0.0265182022699 # 0.986335524331 -scale_histo_ggWW = 0.864962033063/0.851737593944 # 1.01552642412 -scale_histo_top = 76.8733454708/59.7989943761 # 1.28552906738 -scale_histo_WWewk = 0.0937543443187/0.0920893788864 # 1.01807988557 -scale_histo_ZH_hww = 0.468019653719/0.456889363186 # 1.02436101916 -scale_histo_WH_hww_minus = 1.84971389157/1.80063731754 # 1.02725511326 -scale_histo_WH_htt_plus = 1.25210961736/1.291978315 # 0.969141356961 - -groupPlot = {} - -groupPlot['top'] = { - 'nameHR' : 'tW+ and t#bar{t}', - 'isSignal' : 0, - 'color' : 400, # kYellow - 'samples' : ['top'] -} - -groupPlot['WW'] = { - 'nameHR' : 'WW', - 'isSignal' : 0, - 'color' : 851, # kAzure -9 - 'samples' : ['WW', 'ggWW', 'WWewk'] -} - -groupPlot['DY'] = { - 'nameHR' : "DY", - 'isSignal' : 0, - 'color' : 418, # kGreen+2 - 'samples' : ['DY'] -} - -groupPlot['Fake'] = { - 'nameHR' : 'Non-prompt', - 'isSignal' : 0, - 'color' : 921, # kGray + 1 - 'samples' : ['Fake_mm','Fake_em','Fake_ee'] -} - -# groupPlot['ChargeFlip'] = { -# 'nameHR' : "charge_flip", -# 'isSignal' : 0, -# 'color' : 418, # kGreen+2 -# 'samples' : ['ChargeFlip'] -# } - -groupPlot['VVV'] = { - 'nameHR' : 'VVV', - 'isSignal' : 0, - 'color' : 857, # kAzure -3 - 'samples' : ['VVV'] -} - -groupPlot['ZZ'] = { - 'nameHR' : "ZZ", - 'isSignal' : 0, - 'color' : 617, # kViolet + 1 - 'samples' : ['ZZ'] -} - -groupPlot['WZ'] = { - 'nameHR' : "WZ", - 'isSignal' : 0, - 'color' : 619, # kViolet + 1 - 'samples' : ['WZ'] -} - -groupPlot['Vg'] = { - 'nameHR' : "V#gamma", - 'isSignal' : 0, - 'color' : 810, # kOrange + 10 - 'samples' : ['Vg'] -} - -groupPlot['VgS'] = { - 'nameHR' : "V#gamma*", - 'isSignal' : 0, - 'color' : 412, # kGreen - 9 - 'samples' : ['VgS'] -} - -groupPlot['Higgs'] = { - 'nameHR' : 'Higgs', - 'isSignal' : 0, - 'color' : 632, # kRed - 'samples' : ['ggH_hww','qqH_hww','ZH_hww','ggZH_hww','ttH_hww','ggH_htt','qqH_htt','ZH_htt'] -} - -groupPlot['WH_minus'] = { - 'nameHR' : 'W^{-} H (x 10)', - 'isSignal' : 2, - 'color' : 600, # kBlue - 'samples' : ['WH_hww_minus','WH_htt_minus'] -} - -groupPlot['WH_plus'] = { - 'nameHR' : 'W^{+} H (x 10)', - 'isSignal' : 2, - 'color' : 632, # kRed - 'samples' : ['WH_hww_plus', 'WH_htt_plus'] -} - - -# keys here must match keys in samples.py - -plot = {} - -# plot['ChargeFlip'] = { -# 'color' : 418, # kGreen+2 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : 0.5, -# } - -plot['DY'] = { - 'color' : 418, # kGreen+2 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_DY, -} - -plot['top'] = { - 'nameHR' : 'tW and t#bar{t}', - 'color' : 400, # kYellow - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_top, -} - -plot['WW'] = { - 'color' : 851, # kAzure -9 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_WW, -} - -plot['WWewk'] = { - 'color' : 850, # kAzure -10 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_WWewk, -} - -plot['ggWW'] = { - 'color' : 850, # kAzure -10 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggWW, -} - -plot['Vg'] = { - 'color' : 859, # kAzure -1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_Vg, -} - -plot['VgS'] = { - 'color' : 617, # kViolet + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_VgS, -} - -plot['WZ'] = { - 'color' : 858, # kAzure -2 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_WZ * 1.138, # NLO -> NNLO k-factor! -} - -plot['ZZ'] = { - 'color' : 858, # kAzure -2 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ZZ, -} - -plot['VVV'] = { - 'color' : 857, # kAzure -3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_VVV, -} - -########### -# Signals # -########### - -# HWW - -plot['ggH_hww'] = { - 'color' : 632, # kRed - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggH_hww, -} - -plot['qqH_hww'] = { - 'color' : 632+1, # kRed+1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_qqH_hww, -} - -plot['ZH_hww'] = { - 'color' : 632+3, # kRed+3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ZH_hww, -} - -plot['ggZH_hww'] = { - 'color' : 632+4, # kRed+4 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggZH_hww, -} - -plot['WH_hww_plus'] = { - 'color' : 632+2, # kRed+2 - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_hww_plus, -} - -plot['WH_hww_minus'] = { - 'color' : 600, # kBlue - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_hww_minus, -} - -plot['ttH_hww'] = { - 'color' : 632+3, # kRed+3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ttH_hww, -} - - -# Htautau - -plot['ggH_htt'] = { - 'color' : 632, # kRed - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggH_htt, -} - -plot['qqH_htt'] = { - 'color' : 632+1, # kRed+1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_qqH_htt, -} - -plot['ZH_htt'] = { - 'color' : 632+3, # kRed+3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ZH_htt, -} - -plot['WH_htt_plus'] = { - 'color' : 632+2, # kRed+2 - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_htt_plus, -} - -plot['WH_htt_minus'] = { - 'color' : 632+2, # kRed+2 - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_htt_minus, -} - - -######## -# Fake # -######## - -plot['Fake_em'] = { - 'color' : 921, # kGray + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['Fake_ee'] = { - 'color' : 921, # kGray + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['Fake_mm'] = { - 'color' : 921, # kGray + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -# plot['Fake'] = { -# 'color' : 921, # kGray + 1 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : 1.0 -# } - -######## -# Data # -######## - -plot['DATA'] = { - 'nameHR' : 'Data', - 'color' : 1 , - 'isSignal' : 0, - 'isData' : 1, - 'isBlind' : 0, -} - - -# Define legend - -legend = {} - -legend['lumi'] = 'L = 16.8 fb^{-1}' -legend['sqrt'] = '#sqrt{s} = 13 TeV' diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_mm_CR/structure.py b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_mm_CR/structure.py deleted file mode 100644 index c4404b36..00000000 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_mm_CR/structure.py +++ /dev/null @@ -1,203 +0,0 @@ -# structure configuration for datacard - -# keys here must match keys in samples.py - -signal_normalization = 10.0 - -# BTag normalization factors -# Cut = hww2l2v_13TeV_samesign_1j -scale_histo_ttH_hww = 0.160537372171/0.105836109911 # 1.51684876084 -scale_histo_WW = 13.1478410113/12.9925824875 # 1.01194978165 -scale_histo_DY = 23.1120856722/21.6856215092 # 1.06577926127 -scale_histo_WZ = 115.896303073/117.772801287 # 0.984066794763 -scale_histo_Wg = 123.865202644/120.851067654 # 1.02494090494 -scale_histo_Zg = 16.0942073492/16.2827654077 # 0.988419776752 -scale_histo_Vg = (123.865202644+16.0942073492)/(120.851067654+16.2827654077) -scale_histo_ZgS = 5.54053867478/5.26867838135 # 1.0515993336 -scale_histo_WgS = 51.4646013319/49.3716146509 # 1.04239251027 -scale_histo_VgS = (51.4646013319+5.54053867478)/(49.3716146509+5.26867838135) -scale_histo_ZH_htt = 0.206772897183/0.21476539759 # 0.962784971428 -scale_histo_ggZH_hww = 0.115696593519/0.110430456832 # 1.04768735761 -scale_histo_qqH_hww = 0.0418143373177/0.0406604978316 # 1.02837740676 -scale_histo_ZZ = 3.6062138988/3.62806772315 # 0.993976456334 -scale_histo_ggH_hww = 0.516740512838/0.500764939631 # 1.03190233969 -scale_histo_WH_htt_minus = 0.760284077219/0.790188965083 # 0.962154764005 -scale_histo_VVV = 4.0070473387/4.12788750782 # 0.970725905469 -scale_histo_WH_hww_plus = 3.12916804508/3.03427517747 # 1.03127365254 -scale_histo_ggH_htt = 0.0547492764387/0.058092494244 # 0.942450090175 -scale_histo_ggH_htt = 0.0547492764387/0.058092494244 # 0.942450090175 -scale_histo_qqH_htt = 0.0261558449402/0.0265182022699 # 0.986335524331 -scale_histo_ggWW = 0.864962033063/0.851737593944 # 1.01552642412 -scale_histo_top = 76.8733454708/59.7989943761 # 1.28552906738 -scale_histo_WWewk = 0.0937543443187/0.0920893788864 # 1.01807988557 -scale_histo_ZH_hww = 0.468019653719/0.456889363186 # 1.02436101916 -scale_histo_WH_hww_minus = 1.84971389157/1.80063731754 # 1.02725511326 -scale_histo_WH_htt_plus = 1.25210961736/1.291978315 # 0.969141356961 - -structure = {} - -# structure['DY'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_DY, -# } - -# structure['top'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_top, -# } - -# structure['WW'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_WW, -# } - -# structure['WWewk'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_WWewk, -# } - -# structure['ggWW'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_ggWW, -# } - - -structure['Vg'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_Vg, -} - -structure['VgS'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_VgS, -} - -structure['WZ'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WZ * 1.138 # NLO -> NNLO k-factor -} - -structure['ZZ'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZZ, -} - -structure['VVV'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_VVV, -} - - -# Higgs -structure['ggH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ggH_hww, -} - -structure['qqH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_qqH_hww, -} - -structure['ZH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZH_hww, -} - -structure['ggZH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ggZH_hww, -} - -structure['WH_hww_plus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_hww_plus*signal_normalization, -} - -structure['WH_hww_minus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_hww_minus*signal_normalization, -} - -structure['ttH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ttH_hww, -} - -structure['ggH_htt'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ggH_htt, -} - -structure['qqH_htt'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_qqH_htt, -} - -structure['ZH_htt'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZH_htt, -} - -structure['WH_htt_plus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_htt_plus*signal_normalization, -} - -structure['WH_htt_minus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_htt_minus*signal_normalization, -} - - -# Fakes -structure['Fake_ee'] = { - 'isSignal' : 0, - 'isData' : 0, -} - -structure['Fake_mm'] = { - 'isSignal' : 0, - 'isData' : 0, -} - -structure['Fake_em'] = { - 'isSignal' : 0, - 'isData' : 0, -} - - -# Data-driven charge flip estimation -structure['ChargeFlip'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : 0.5, -} - -# Data -structure['DATA'] = { - 'isSignal' : 0, - 'isData' : 1 -} diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_CR/README.md b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_CR/README.md deleted file mode 100644 index ba17b328..00000000 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_CR/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# Configuration for WHSS 1j signal region - -### Plot distributions - -Compile configuration and plot distributions: - - mkShapesRDF -c 1 - - mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png - -### Produce datacards - -Compile configuration and produce datacards: - - mkShapesRDF -c 1 - - mkDatacards --outputDirDatacard ../datacards_original_signal_scale --skipMissingNuisance \ No newline at end of file diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_CR/configuration.py b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_CR/configuration.py deleted file mode 100644 index d72839ef..00000000 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_CR/configuration.py +++ /dev/null @@ -1,99 +0,0 @@ -# Configuration file for charge asymmetry WHSS analysis using the UL 2016noHIPM dataset - -import sys,inspect - -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_CR - -configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file -configurations_nuisance = os.path.dirname(configurations_nuisance) # configuration_2j_CR -configurations_nuisance = os.path.dirname(configurations_nuisance) # WHSS -configurations_nuisance = os.path.dirname(configurations_nuisance) # 2016noHIPM_v9 -configurations_nuisance = os.path.dirname(configurations_nuisance) # UL - -# Tag used to identify the configuration folder version -tag = 'WHSS_2016noHIPM_v9_chargeAsymmetry_Mu82_EleUL90' - -# File to use as runner script, default uses mkShapesRDF.shapeAnalysis.runner, otherwise specify path to script -runnerFile = "default" - -# Output file name -outputFile = "plots_WHSS_2016noHIPM_v9_chargeAsymmetry_Mu82_EleUL90_DYflip_data.root" # "mkShapes__{}.root".format(tag) - -# Path to ouput folder -outputFolder = "../../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" - -# Path to batch folder (used for condor submission) -batchFolder = "condor" - -# Path to configuration folder (will contain all the compiled configuration files) -configsFolder = "configs" - -# luminosity to normalize to (in 1/fb) -# https://github.com/latinos/LatinoAnalysis/blob/UL_production/NanoGardener/python/data/TrigMaker_cfg.py#L239 (#311 #377 #445) -# 0.418771191 + 7.653261227 + 7.866107374 + 0.8740119304 = 16.8121517224 -lumi = 16.81 - -# File with dict of aliases to define -aliasesFile = "../aliases.py" - -# File with dict of variables -variablesFile = "../variables.py" - -# File with dict of cuts -cutsFile = "cuts.py" - -# File with dict of samples -samplesFile = "../samples.py" - -# File with dict of samples for plotting -plotFile = 'plot.py' - -# File with dict of structure (used to define processes in combine) -structureFile = "structure.py" - -# Nuisances file for mkDatacards and for mkShape -nuisancesFile = "../nuisances.py" - -# Path to folder where to save plots -plotPath = '../plots_' + tag - -# This lines are executed right before the runner on the condor node -mountEOS = [] - -# List of imports to import when compiling the whole configuration folder, it should not contain imports used by configuration.py -imports = ["os", "glob", ("collections", "OrderedDict"), "ROOT"] - -# List of files to compile -filesToExec = [ - samplesFile, - aliasesFile, - variablesFile, - cutsFile, - plotFile, - nuisancesFile, - structureFile, -] - -# List of variables to keep in the compiled configuration folder -varsToKeep = [ - "batchVars", - "outputFolder", - "batchFolder", - "configsFolder", - "outputFile", - "runnerFile", - "tag", - "samples", - "aliases", - "variables", - ("cuts", {"cuts": "cuts", "preselections": "preselections"}), - ("plot", {"plot": "plot", "groupPlot": "groupPlot", "legend": "legend"}), - "nuisances", - "structure", - "lumi", -] - -# List of variables to keep in the batch submission script (script.py) -batchVars = varsToKeep[varsToKeep.index("samples") :] - -varsToKeep += ['plotPath'] diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_CR/cuts.py b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_CR/cuts.py deleted file mode 100644 index 7f25bb75..00000000 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_CR/cuts.py +++ /dev/null @@ -1,65 +0,0 @@ -cuts = {} - -# cuts -preselections = 'mll>12 \ - && Lepton_pt[0]>25 \ - && Lepton_pt[1]>10 \ - && (abs(Lepton_pdgId[1])==13 || Lepton_pt[1]>13) \ - && abs(Lepton_eta[0])<2.5 && abs(Lepton_eta[1])<2.5 \ - && bVeto \ - && PuppiMET_pt > 30 \ - && !hole_veto \ - ' - -# Splitting in sub-leading lepton pT -#################################### - -## SR 2jets - -# mu-e -cuts['hww2l2v_13TeV_WH_SS_em_2j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && mjj < 100 && mlljj20_whss > 50.', - 'categories' : { - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT >= 20 GeV) - 'SS_CR_plus_pt2ge20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2ge20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT < 20 GeV) - 'SS_CR_plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - } -} - -# e-e -cuts['hww2l2v_13TeV_WH_SS_ee_2j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*11) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && mjj < 100 && abs(mll-91.2)>15 && mlljj20_whss > 50.', - 'categories' : { - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT >= 20 GeV) - 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT < 20 GeV) - 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - } -} - -## DY->ee CR - 2 same-sign electrons IN the Z peak. To check the charge-flip probability method to estimate DY in the signal region - -# DY CR 2jets -cuts['hww2l2v_13TeV_WH_SS_DYee_2j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*11) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && mjj < 100 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0 && abs(mll-91.2)<15 && mlljj20_whss > 50.', - 'categories' : { - # Sub-leading lepton pT >= 20 GeV - 'plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20', - 'minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20', - 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20', - } -} - -# mlljj20_whss: -# inv_mass of: (jet1, jet2, 2*closest_lep_to_jets) -# jets are considered with pT > 20 GeV - -# Definitions of WH3l variables: -# https://github.com/latinos/LatinoAnalysis/blob/76e7c4b93aa5f056c92440d4e8d24e7de749c8fe/NanoGardener/python/modules/l3KinProducer.py diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_CR/nuisances.py b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_CR/nuisances.py deleted file mode 100644 index f0a2cb34..00000000 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_CR/nuisances.py +++ /dev/null @@ -1,654 +0,0 @@ -import sys - -# Enable reading YR for Higgs XS and uncertainties -sys.path.append('../../../macros/') -import HiggsXSection -HiggsXS = HiggsXSection.HiggsXSection() - -nuisances = {} - -mcProduction = 'Summer20UL16_106x_nAODv9_noHIPM_Full2016v9' -dataReco = 'Run2016_UL2016_nAODv9_noHIPM_Full2016v9' -mcSteps = 'MCl1loose2016v9__MCCorr2016v9NoJERInHorn__l2tightOR2016v9' -fakeSteps = 'DATAl1loose2016v9__l2loose__fakeW' -dataSteps = 'DATAl1loose2016v9__l2loose__l2tightOR2016v9' - -treeBaseDir = '/eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano' -limitFiles = -1 - -mc = [skey for skey in samples if skey not in ('Fake', 'DATA')] - -redirector = "" - -useXROOTD = False - -def makeMCDirectory(var=''): - if var== '': - print(os.path.join(treeBaseDir, mcProduction, mcSteps)) - return os.path.join(treeBaseDir, mcProduction, mcSteps) - else: - print(os.path.join(treeBaseDir, mcProduction, mcSteps + '__' + var)) - return os.path.join(treeBaseDir, mcProduction, mcSteps + '__' + var) - -mcDirectory = makeMCDirectory() -fakeDirectory = os.path.join(treeBaseDir, dataReco, fakeSteps) -dataDirectory = os.path.join(treeBaseDir, dataReco, dataSteps) - -################################ EXPERIMENTAL UNCERTAINTIES ################################# - -#### Luminosity - -# https://twiki.cern.ch/twiki/bin/view/CMS/LumiRecommendationsRun2#LumiComb -# Uncorrelated 2016 1.0 -# Uncorrelated 2017 2.0 -# Uncorrelated 2018 1.5 -# Correlated 2016, 2017, 2018 0.6, 0.9, 2.0 -# Correlated 2017, 2018 0.6, 0.2 - -nuisances['lumi_Uncorrelated'] = { - 'name' : 'lumi_13TeV_2016', - 'type' : 'lnN', - 'samples' : dict((skey, '1.010') for skey in mc if skey not in ['WZ']) -} - -nuisances['lumi_Correlated_Run2'] = { - 'name' : 'lumi_13TeV_correlated', - 'type' : 'lnN', - 'samples' : dict((skey, '1.006') for skey in mc if skey not in ['WZ']) -} - - -#### FAKES -fake_syst_endcap = ['1.0*(abs(Lepton_eta[1])<=1.4) + 1.3*(abs(Lepton_eta[1])>1.4)', - '1.0*(abs(Lepton_eta[1])<=1.4) + 1.0/1.3*(abs(Lepton_eta[1])>1.4)'] - -fake_syst_barrel = [' 1.3*(abs(Lepton_eta[1])<=1.4) + 1.0*(abs(Lepton_eta[1])>1.4)', - '1.0/1.3*(abs(Lepton_eta[1])<=1.4) + 1.0*(abs(Lepton_eta[1])>1.4)'] - -nuisances['fake_syst_mm_barrel'] = { - 'name' : 'CMS_WH_hww_fake_syst_mm_barrel', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_mm' : fake_syst_barrel, - }, - 'cuts' : [cut for cut in cuts if ('_mm_' in cut)] -} -nuisances['fake_syst_mm_endcap'] = { - 'name' : 'CMS_WH_hww_fake_syst_mm_endcap', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_mm' : fake_syst_endcap, - }, - 'cuts' : [cut for cut in cuts if ('_mm_' in cut)] -} - -nuisances['fake_syst_em_barrel'] = { - 'name' : 'CMS_WH_hww_fake_syst_em_barrel', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_em' : fake_syst_barrel, - }, - 'cuts' : [cut for cut in cuts if ('_em_' in cut)] -} -nuisances['fake_syst_em_endcap'] = { - 'name' : 'CMS_WH_hww_fake_syst_em_endcap', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_em' : fake_syst_endcap, - }, - 'cuts' : [cut for cut in cuts if ('_em_' in cut)] -} - -nuisances['fake_syst_ee_barrel'] = { - 'name' : 'CMS_WH_hww_fake_syst_ee_barrel', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_ee' : fake_syst_barrel, - }, - 'cuts' : [cut for cut in cuts if ('_ee_' in cut)] -} -nuisances['fake_syst_ee_endcap'] = { - 'name' : 'CMS_WH_hww_fake_syst_ee_endcap', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_ee' : fake_syst_endcap, - }, - 'cuts' : [cut for cut in cuts if ('_ee_' in cut)] -} - -nuisances['fake_ele'] = { - 'name' : 'CMS_WH_hww_fake_e_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_ee' : ['fakeWEleUp', 'fakeWEleDown'], - 'Fake_em' : ['fakeWEleUp', 'fakeWEleDown'], - } -} -nuisances['fake_ele_stat'] = { - 'name' : 'CMS_WH_hww_fake_stat_e_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_ee' : ['fakeWStatEleUp', 'fakeWStatEleDown'], - 'Fake_em' : ['fakeWStatEleUp', 'fakeWStatEleDown'], - } -} -nuisances['fake_mu'] = { - 'name' : 'CMS_WH_hww_fake_m_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_mm' : ['fakeWMuUp', 'fakeWMuDown'], - 'Fake_em' : ['fakeWMuUp', 'fakeWMuDown'], - } -} -nuisances['fake_mu_stat'] = { - 'name' : 'CMS_WH_hww_fake_stat_m_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_mm' : ['fakeWStatMuUp', 'fakeWStatMuDown'], - 'Fake_em' : ['fakeWStatMuUp', 'fakeWStatMuDown'], - } -} - -###### B-tagger - -for shift in ['lf', 'hf', 'hfstats1', 'hfstats2', 'lfstats1', 'lfstats2', 'cferr1', 'cferr2']: - btag_syst = ['(btagSF%sup)/(btagSF)' % shift, '(btagSF%sdown)/(btagSF)' % shift] - - name = 'CMS_btag_%s' % shift - if 'stats' in shift: - name += '_2016' - - nuisances['btag_shape_%s' % shift] = { - 'name' : name, - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, btag_syst) for skey in mc), - } - -##### Trigger Scale Factors - -trig_syst = ['TriggerSFWeight_2l_u/TriggerSFWeight_2l', 'TriggerSFWeight_2l_d/TriggerSFWeight_2l'] - -nuisances['trigg'] = { - 'name' : 'CMS_eff_hwwtrigger_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, trig_syst) for skey in mc) -} - -##### Electron Efficiency and energy scale - -nuisances['eff_e'] = { - 'name' : 'CMS_eff_e_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['SFweightEleUp', 'SFweightEleDown']) for skey in mc) -} - -nuisances['eff_ttHMVA_e'] = { - 'name' : 'CMS_eff_ttHMVA_e_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['LepWPttHMVASFEleUp', 'LepWPttHMVASFEleDown']) for skey in mc) -} - -nuisances['electronpt'] = { - 'name' : 'CMS_scale_e_2016', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'ElepTup', - 'mapDown' : 'ElepTdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('ElepTup_suffix'), - 'folderDown' : makeMCDirectory('ElepTdo_suffix'), - 'AsLnN' : '0' -} - -##### Muon Efficiency and energy scale - -nuisances['eff_m'] = { - 'name' : 'CMS_eff_m_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['SFweightMuUp', 'SFweightMuDown']) for skey in mc) -} - -nuisances['eff_ttHMVA_m'] = { - 'name' : 'CMS_eff_ttHMVA_m_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['LepWPttHMVASFMuUp', 'LepWPttHMVASFMuDown']) for skey in mc) -} - -nuisances['muonpt'] = { - 'name' : 'CMS_scale_m_2016', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'MupTup', - 'mapDown' : 'MupTdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('MupTup_suffix'), - 'folderDown' : makeMCDirectory('MupTdo_suffix'), - 'AsLnN' : '0' -} - -##### Jet energy scale -jes_systs = ['JESAbsolute','JESAbsolute_2016','JESBBEC1','JESBBEC1_2016','JESEC2','JESEC2_2016','JESFlavorQCD','JESHF','JESHF_2016','JESRelativeBal','JESRelativeSample_2016'] - -for js in jes_systs: - - nuisances[js] = { - 'name' : 'CMS_scale_' + js.replace("JES","j_"), - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : js + 'up', - 'mapDown' : js + 'do', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('RDF__JESup_suffix'), - 'folderDown': makeMCDirectory('RDF__JESdo_suffix'), - 'reweight' : ['btagSF'+js.replace('JES','jes')+'up/btagSF','btagSF'+js.replace('JES','jes')+'down/btagSF'], - 'AsLnN' : '0' - } - -##### Jet energy resolution -nuisances['JER'] = { - 'name' : 'CMS_res_j_2016', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'JERup', - 'mapDown' : 'JERdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('JERup_suffix'), - 'folderDown': makeMCDirectory('JERdo_suffix'), - 'AsLnN' : '0' -} - -##### MET unclustered energy - -# metUp.PuppiMET_pt_METup -nuisances['met'] = { - 'name' : 'CMS_scale_met_2016', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'METup', - 'mapDown' : 'METdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('METup_suffix'), - 'folderDown': makeMCDirectory('METdo_suffix'), - 'AsLnN' : '0' -} - - -##### Pileup - -# puWeight_UL2016 -nuisances['PU'] = { - 'name' : 'CMS_pileup_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'DY' : ['1.000489*(puWeightUp/puWeight)', '0.998828*(puWeightDown/puWeight)'], - 'WW' : ['1.007152*(puWeightUp/puWeight)', '0.993194*(puWeightDown/puWeight)'], - 'ggWW' : ['1.006460*(puWeightUp/puWeight)', '0.993661*(puWeightDown/puWeight)'], - 'Vg' : ['1.004694*(puWeightUp/puWeight)', '0.998294*(puWeightDown/puWeight)'], - 'WZ' : ['1.003158*(puWeightUp/puWeight)', '0.997747*(puWeightDown/puWeight)'], - 'ZZ' : ['1.000801*(puWeightUp/puWeight)', '0.999199*(puWeightDown/puWeight)'], - 'VVV' : ['0.996144*(puWeightUp/puWeight)', '1.005616*(puWeightDown/puWeight)'], - 'top' : ['1.004374*(puWeightUp/puWeight)', '0.995684*(puWeightDown/puWeight)'], - 'Higgs' : ['1.006460*(puWeightUp/puWeight)', '0.993559*(puWeightDown/puWeight)'], - }, - 'AsLnN' : '0', -} - -### PU ID SF uncertainty - -puid_syst = ['Jet_PUIDSF_up/Jet_PUIDSF', 'Jet_PUIDSF_down/Jet_PUIDSF'] - -nuisances['jetPUID'] = { - 'name' : 'CMS_eff_j_PUJET_id_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, puid_syst) for skey in mc) -} - -### PS and UE - -nuisances['PS_ISR'] = { - 'name' : 'PS_WH_hww_ISR', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['PSWeight[2]', 'PSWeight[0]']) for skey in mc), - 'AsLnN' : '0', -} - -nuisances['PS_FSR'] = { - 'name' : 'PS_WH_hww_FSR', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['PSWeight[3]', 'PSWeight[1]']) for skey in mc), - 'AsLnN' : '0', -} - -nuisances['UE_CP5'] = { - 'name' : 'CMS_WH_hww_UE', - 'skipCMS' : 1, - 'type' : 'lnN', - 'samples' : dict((skey, '1.015') for skey in mc), -} - -# Charge flip efficiency -nuisances['chargeFlipEff'] = { - 'name' : 'CMS_whss_chargeFlipEff_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['1-ttHMVA_eff_err_flip_2l', '1+ttHMVA_eff_err_flip_2l']) for skey in ['DY','ChargeFlip']), - 'cuts' : [cut for cut in cuts if ('_ee_' in cut or '_em_' in cut)] -} - -# Charge flip: uncertainty on opposite sign processes not affected by charge-flip -nuisances['chargeFlip_syst'] = { - 'name' : 'CMS_ChargeFlip_syst', - 'type' : 'lnN', - 'samples' : { - 'ChargeFlip' : '1.10', - } -} - -# Top pT reweighting uncertainty - -nuisances['TopPtRew'] = { - 'name' : 'CMS_top_pT_reweighting', # Theory uncertainty - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'top': ["1.", "1./Top_pTrw"] - }, - 'symmetrize' : True -} - -nuisances['WgStar'] = { - 'name' : 'CMS_hww_WgStarScale', - 'type' : 'lnN', - 'samples' : { - 'WgS' : '1.25' - } -} - -###### pdf uncertainties - -valuesggh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggH', '125.09','pdf','sm') -valuesggzh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggZH','125.09','pdf','sm') -valuesbbh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','bbH', '125.09','pdf','sm') - -nuisances['pdf_Higgs_gg'] = { - 'name' : 'pdf_Higgs_gg', - 'samples' : { - 'ggH_hww' : valuesggh, - 'ggH_htt' : valuesggh, - 'ggZH_hww' : valuesggzh, - 'bbH_hww' : valuesbbh, - }, - 'type' : 'lnN', -} - -# For ttH, we need to use 1./values -values = str(1./float(HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ttH','125.09','pdf','sm'))) - -nuisances['pdf_Higgs_ttH'] = { - 'name' : 'pdf_Higgs_ttH', - 'samples' : { - 'ttH_hww': values, - }, - 'type' : 'lnN', -} - -valuesqqh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','vbfH','125.09','pdf','sm') -valueswh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','WH', '125.09','pdf','sm') -valueszh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ZH', '125.09','pdf','sm') - -nuisances['pdf_Higgs_qqbar'] = { - 'name' : 'pdf_Higgs_qqbar', - 'type' : 'lnN', - 'samples': { - 'qqH_hww' : valuesqqh, - 'qqH_htt' : valuesqqh, - 'WH_hww_plus' : valueswh, - 'WH_hww_minus': valueswh, - 'WH_htt_plus' : valueswh, - 'WH_htt_minus': valueswh, - 'ZH_hww' : valueszh, - 'ZH_htt' : valueszh - }, -} - -nuisances['pdf_qqbar'] = { - 'name' : 'pdf_qqbar', - 'type' : 'lnN', - 'samples' : { - 'Wg' : '1.04', - 'Zg' : '1.04', - 'ZZ' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 - 'WZ' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 - 'WgS' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 - 'ZgS' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 - }, -} - -nuisances['pdf_gg'] = { - 'name': 'pdf_gg', - 'type': 'lnN', - 'samples': { - 'ggWW' : '1.05', - }, -} - -nuisances['pdf_Higgs_gg_ACCEPT'] = { - 'name' : 'pdf_WH_hww_Higgs_gg_ACCEPT', - 'samples' : { - 'ggH_hww' : '1.006', - 'ggH_htt' : '1.006', - 'ggZH_hww' : '1.006', - 'bbH_hww' : '1.006' - }, - 'type' : 'lnN', -} -nuisances['pdf_gg_ACCEPT'] = { - 'name' : 'pdf_WH_hww_gg_ACCEPT', - 'samples' : { - 'ggWW' : '1.006', - }, - 'type' : 'lnN', -} - -nuisances['pdf_Higgs_qqbar_ACCEPT'] = { - 'name' : 'pdf_WH_hww_Higgs_qqbar_ACCEPT', - 'type' : 'lnN', - 'samples' : { - 'qqH_hww' : '1.002', - 'qqH_htt' : '1.002', - 'WH_hww_plus' : '1.003', - 'WH_hww_minus': '1.003', - 'WH_htt_plus' : '1.003', - 'WH_htt_minus': '1.003', - 'ZH_hww' : '1.002', - 'ZH_htt' : '1.002', - }, -} - -nuisances['pdf_qqbar_ACCEPT'] = { - 'name' : 'pdf_WH_hww_qqbar_ACCEPT', - 'type' : 'lnN', - 'samples' : { - 'ZZ' : '1.001', - 'WZ' : '1.001', - }, -} - -##### Renormalization & factorization scales - -## Shape nuisance due to QCD scale variations for DY -## LHE scale variation weights (w_var / w_nominal) - -## This should work for samples with either 8 or 9 LHE scale weights (Length$(LHEScaleWeight) == 8 or 9) -variations = ['Alt(LHEScaleWeight,0,1)', 'Alt(LHEScaleWeight,1,1)', 'Alt(LHEScaleWeight,3,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-4,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-2,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-1,1)'] - -# nuisances['QCDscale_V'] = { -# 'name' : 'QCDscale_V', -# 'skipCMS' : 1, -# 'kind' : 'weight_envelope', -# 'type' : 'shape', -# 'samples' : { -# 'DY' : variations -# }, -# 'AsLnN' : '0' -# } - -nuisances['QCDscale_VV'] = { - 'name' : 'QCDscale_VV', - 'kind' : 'weight_envelope', - 'type' : 'shape', - 'samples' : { - 'WW' : variations, - 'Zg' : variations, - 'Wg' : variations, - 'ZZ' : variations, - 'WZ' : variations, - 'WgS' : variations, - 'ZgS' : variations - } -} - -nuisances['QCDscale_ggVV'] = { - 'name' : 'QCDscale_ggVV', - 'type' : 'lnN', - 'samples' : { - 'ggWW' : '1.15', - }, -} - -#### QCD scale uncertainties for Higgs signals other than ggH - -values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','vbfH','125.09','scale','sm') - -nuisances['QCDscale_qqH'] = { - 'name' : 'QCDscale_qqH', - 'samples' : { - 'qqH_hww' : values, - 'qqH_htt' : values, - }, - 'type' : 'lnN' -} - -valueswh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','WH','125.09','scale','sm') -valueszh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ZH','125.09','scale','sm') - -nuisances['QCDscale_VH'] = { - 'name' : 'QCDscale_VH', - 'samples' : { - 'WH_hww_plus' : valueswh, - 'WH_hww_minus' : valueswh, - 'WH_htt_plus' : valueswh, - 'WH_htt_minus' : valueswh, - 'ZH_hww' : valueszh, - 'ZH_htt' : valueszh, - }, - 'type' : 'lnN', -} - -values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggZH','125.09','scale','sm') - -nuisances['QCDscale_ggZH'] = { - 'name' : 'QCDscale_ggZH', - 'samples' : { - 'ggZH_hww' : values, - }, - 'type' : 'lnN', -} - -values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ttH','125.09','scale','sm') - -nuisances['QCDscale_ttH'] = { - 'name' : 'QCDscale_ttH', - 'samples' : { - 'ttH_hww' : values, - }, - 'type' : 'lnN', -} - -nuisances['QCDscale_WWewk'] = { - 'name' : 'QCDscale_WWewk', - 'samples' : { - 'WWewk' : '1.11', - }, - 'type' : 'lnN' -} - -nuisances['QCDscale_qqbar_ACCEPT'] = { - 'name' : 'QCDscale_qqbar_ACCEPT', - 'type' : 'lnN', - 'samples' : { - 'qqH_hww' : '1.003', - 'qqH_htt' : '1.003', - 'WH_hww_plus' : '1.010', - 'WH_hww_minus' : '1.010', - 'WH_htt_plus' : '1.010', - 'WH_htt_minus' : '1.010', - 'ZH_hww' : '1.015', - 'ZH_htt' : '1.015', - } -} - -# FIXME: these come from HIG-16-042, maybe should be recomputed? -nuisances['QCDscale_gg_ACCEPT'] = { - 'name' : 'QCDscale_gg_ACCEPT', - 'samples' : { - 'ggH_htt' : '1.012', - 'ggH_hww' : '1.012', - 'ggZH_hww' : '1.012', - 'ggWW' : '1.012', - }, - 'type' : 'lnN', -} - -# WZ normalization from control region - -nuisances['WZ2jnorm'] = { - 'name' : 'CMS_hww_WZ3l2jnorm', - 'samples' : { - 'WZ' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [cut for cut in cuts if '2j' in cut], -} - -nuisances['WZ1jnorm'] = { - 'name' : 'CMS_hww_WZ3l1jnorm', - 'samples' : { - 'WZ' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [cut for cut in cuts if '1j' in cut], -} - -# Use the following if you want to apply the automatic combine MC stat nuisances. -nuisances['stat'] = { - 'type' : 'auto', - 'maxPoiss' : '10', - 'includeSignal' : '0', - 'samples' : {} -} -# nuisance ['maxPoiss'] = Number of threshold events for Poisson modelling -# nuisance ['includeSignal'] = Include MC stat nuisances on signal processes (1=True, 0=False) - -for n in nuisances.values(): - n['skipCMS'] = 1 diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_CR/plot.py b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_CR/plot.py deleted file mode 100644 index 42b05c23..00000000 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_CR/plot.py +++ /dev/null @@ -1,355 +0,0 @@ -# plot configuration - -# Groups of samples to improve the plots. -# If not defined, normal plots is used - -# BTag normalization factors -# Cut = hww2l2v_13TeV_samesign_2j -scale_histo_ttH_hww = 0.617010001941/0.446976799456 # 1.38040722179 -scale_histo_WW = 1.18766327892/1.11941960177 # 1.06096344663 -scale_histo_DY = 2.73201114062/0.608771954656 # 4.48774146004 -scale_histo_WZ = 14.3395874219/14.5601910428 # 0.984848851212 -scale_histo_Wg = 14.1373403782/13.3726960287 # 1.05717952071 -scale_histo_Zg = 1.52588834242/1.44067413887 # 1.05914883959 -scale_histo_Vg = (14.1373403782+1.52588834242)/(13.3726960287+1.44067413887) -scale_histo_WgS = 5.08787522305/4.79282588245 # 1.06156062161 -scale_histo_ZgS = 1.15543489932/0.954033381473 # 1.21110531535 -scale_histo_VgS = (5.08787522305+1.15543489932)/(4.79282588245+0.954033381473) -scale_histo_ZH_htt = 0.0461453275357/0.0465742645873 # 0.990790256048 -scale_histo_ggZH_hww = 0.0297800727078/0.0349759598491 # 0.851444044317 -scale_histo_qqH_hww = 0.0075359367047/0.0066903584339 # 1.12638758882 -scale_histo_ZZ = 0.495265502014/0.498023693388 # 0.994461726599 -scale_histo_ggH_hww = 0.0441757111415/0.0460026087971 # 0.960287085811 -scale_histo_WH_htt_minus = 0.0941584918584/0.0962440831445 # 0.978330186979 -scale_histo_VVV = 1.01443537458/1.06235296784 # 0.9548948469 -scale_histo_WH_hww_plus = 0.649373521985/0.644823292629 # 1.0070565524 -scale_histo_ggH_htt = 0.0/1 # 0.0 -scale_histo_qqH_htt = 0.0/1 # 0.0 -scale_histo_ggWW = 0.072279298858/0.069415504322 # 1.04125583418 -scale_histo_top = 34.3826934095/25.3486171412 # 1.35639325877 -scale_histo_WWewk = 0.00912821559271/0.00909789799107 # 1.00333237432 -scale_histo_ZH_hww = 0.100156164997/0.0990130825874 # 1.01154476136 -scale_histo_WH_hww_minus = 0.371555178345/0.369464620919 # 1.00565834266 -scale_histo_WH_htt_plus = 0.1320381988/0.133786809382 # 0.986929873051 - -groupPlot = {} - -# groupPlot['top'] = { -# 'nameHR' : 'tW+ and t#bar{t}', -# 'isSignal' : 0, -# 'color' : 400, # kYellow -# 'samples' : ['top'] -# } - -# groupPlot['WW'] = { -# 'nameHR' : 'WW', -# 'isSignal' : 0, -# 'color' : 851, # kAzure -9 -# 'samples' : ['WW', 'ggWW', 'WWewk'] -# } - -# groupPlot['DY'] = { -# 'nameHR' : "DY", -# 'isSignal' : 0, -# 'color' : 418, # kGreen+2 -# 'samples' : ['DY'] -# } - -groupPlot['Fake'] = { - 'nameHR' : 'Non-prompt', - 'isSignal' : 0, - 'color' : 921, # kGray + 1 - 'samples' : ['Fake_mm','Fake_em','Fake_ee'] -} - -groupPlot['ChargeFlip'] = { - 'nameHR' : "charge_flip", - 'isSignal' : 0, - 'color' : 418, # kGreen+2 - 'samples' : ['ChargeFlip'] -} - -groupPlot['VVV'] = { - 'nameHR' : 'VVV', - 'isSignal' : 0, - 'color' : 857, # kAzure -3 - 'samples' : ['VVV'] -} - -groupPlot['ZZ'] = { - 'nameHR' : "ZZ", - 'isSignal' : 0, - 'color' : 617, # kViolet + 1 - 'samples' : ['ZZ'] -} - -groupPlot['WZ'] = { - 'nameHR' : "WZ", - 'isSignal' : 0, - 'color' : 619, # kViolet + 1 - 'samples' : ['WZ'] -} - -groupPlot['Vg'] = { - 'nameHR' : "V#gamma", - 'isSignal' : 0, - 'color' : 810, # kOrange + 10 - 'samples' : ['Vg'] -} - -groupPlot['VgS'] = { - 'nameHR' : "V#gamma*", - 'isSignal' : 0, - 'color' : 412, # kGreen - 9 - 'samples' : ['VgS'] -} - -groupPlot['Higgs'] = { - 'nameHR' : 'Higgs', - 'isSignal' : 0, - 'color' : 632, # kRed - 'samples' : ['ggH_hww','qqH_hww','ZH_hww','ggZH_hww','ttH_hww','ggH_htt','qqH_htt','ZH_htt'] -} - -groupPlot['WH_minus'] = { - 'nameHR' : 'W^{-} H (x 10)', - 'isSignal' : 2, - 'color' : 600, # kBlue - 'samples' : ['WH_hww_minus','WH_htt_minus'] -} - -groupPlot['WH_plus'] = { - 'nameHR' : 'W^{+} H (x 10)', - 'isSignal' : 2, - 'color' : 632, # kRed - 'samples' : ['WH_hww_plus', 'WH_htt_plus'] -} - - -# keys here must match keys in samples.py - -plot = {} - -plot['ChargeFlip'] = { - 'color' : 418, # kGreen+2 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 0.5, -} - -# plot['DY'] = { -# 'color' : 418, # kGreen+2 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : scale_histo_DY, -# } - -# plot['top'] = { -# 'nameHR' : 'tW and t#bar{t}', -# 'color' : 400, # kYellow -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : scale_histo_top, -# } - -# plot['WW'] = { -# 'color' : 851, # kAzure -9 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : scale_histo_WW, -# } - -# plot['WWewk'] = { -# 'color' : 850, # kAzure -10 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : scale_histo_WWewk, -# } - -# plot['ggWW'] = { -# 'color' : 850, # kAzure -10 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : scale_histo_ggWW, -# } - -plot['Vg'] = { - 'color' : 859, # kAzure -1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_Vg, -} - -plot['VgS'] = { - 'color' : 617, # kViolet + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_VgS, -} - -plot['WZ'] = { - 'color' : 858, # kAzure -2 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_WZ * 1.138, # NLO -> NNLO k-factor! -} - -plot['ZZ'] = { - 'color' : 858, # kAzure -2 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ZZ, -} - -plot['VVV'] = { - 'color' : 857, # kAzure -3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_VVV, -} - -########### -# Signals # -########### - -# HWW - -plot['ggH_hww'] = { - 'color' : 632, # kRed - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggH_hww, -} - -plot['qqH_hww'] = { - 'color' : 632+1, # kRed+1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_qqH_hww, -} - -plot['ZH_hww'] = { - 'color' : 632+3, # kRed+3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ZH_hww, -} - -plot['ggZH_hww'] = { - 'color' : 632+4, # kRed+4 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggZH_hww, -} - -plot['WH_hww_plus'] = { - 'color' : 632+2, # kRed+2 - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_hww_plus, -} - -plot['WH_hww_minus'] = { - 'color' : 600, # kBlue - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_hww_minus, -} - -plot['ttH_hww'] = { - 'color' : 632+3, # kRed+3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ttH_hww, -} - - -# Htautau - -plot['ggH_htt'] = { - 'color' : 632, # kRed - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggH_htt, -} - -plot['qqH_htt'] = { - 'color' : 632+1, # kRed+1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_qqH_htt, -} - -plot['ZH_htt'] = { - 'color' : 632+3, # kRed+3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ZH_htt, -} - -plot['WH_htt_plus'] = { - 'color' : 632+2, # kRed+2 - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_htt_plus, -} - -plot['WH_htt_minus'] = { - 'color' : 632+2, # kRed+2 - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_htt_minus, -} - - -######## -# Fake # -######## - -plot['Fake_em'] = { - 'color' : 921, # kGray + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['Fake_ee'] = { - 'color' : 921, # kGray + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['Fake_mm'] = { - 'color' : 921, # kGray + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -# plot['Fake'] = { -# 'color' : 921, # kGray + 1 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : 1.0 -# } - -######## -# Data # -######## - -plot['DATA'] = { - 'nameHR' : 'Data', - 'color' : 1 , - 'isSignal' : 0, - 'isData' : 1, - 'isBlind' : 0, -} - - -# Define legend - -legend = {} - -legend['lumi'] = 'L = 16.8 fb^{-1}' -legend['sqrt'] = '#sqrt{s} = 13 TeV' diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_CR/samples.py b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_CR/samples.py deleted file mode 100644 index 8fb54109..00000000 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_CR/samples.py +++ /dev/null @@ -1,384 +0,0 @@ -import os,glob - -################################################ -################# SKIMS ######################## -################################################ - -# MC: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Summer20UL16_106x_nAODv9_noHIPM_Full2016v9/MCl1loose2016v9__MCCorr2016v9NoJERInHorn__l2tightOR2016v9/ -# DATA: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Run2016_UL2016_nAODv9_noHIPM_Full2016v9/DATAl1loose2016v9__l2loose__l2tightOR2016v9/ -# FAKE: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Run2016_UL2016_nAODv9_noHIPM_Full2016v9/DATAl1loose2016v9__l2loose__fakeW/ - -mcProduction = 'Summer20UL16_106x_nAODv9_noHIPM_Full2016v9' -dataReco = 'Run2016_UL2016_nAODv9_noHIPM_Full2016v9' -mcSteps = 'MCl1loose2016v9__MCCorr2016v9NoJERInHorn__l2tightOR2016v9{var}' -fakeSteps = 'DATAl1loose2016v9__l2loose__fakeW' -dataSteps = 'DATAl1loose2016v9__l2loose__l2tightOR2016v9' - -############################################## -###### Tree base directory for the site ###### -############################################## - -treeBaseDir = '/eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano' -limitFiles = -1 - -def makeMCDirectory(var=''): - return os.path.join(treeBaseDir, mcProduction, mcSteps.format(var='')) - -mcDirectory = makeMCDirectory() -fakeDirectory = os.path.join(treeBaseDir, dataReco, fakeSteps) -dataDirectory = os.path.join(treeBaseDir, dataReco, dataSteps) - -samples = {} - -from mkShapesRDF.lib.search_files import SearchFiles -s = SearchFiles() - -useXROOTD = True -redirector = 'root://eoscms.cern.ch/' - -def nanoGetSampleFiles(path, name): - _files = s.searchFiles(path, name, redirector=redirector) - if limitFiles != -1 and len(_files) > limitFiles: - return [(name, _files[:limitFiles])] - else: - return [(name, _files)] - -def CombineBaseW(samples, proc, samplelist): - _filtFiles = list(filter(lambda k: k[0] in samplelist, samples[proc]['name'])) - _files = list(map(lambda k: k[1], _filtFiles)) - _l = list(map(lambda k: len(k), _files)) - leastFiles = _files[_l.index(min(_l))] - dfSmall = ROOT.RDataFrame('Runs', leastFiles) - s = dfSmall.Sum('genEventSumw').GetValue() - f = ROOT.TFile.Open(leastFiles[0]) - t = f.Get('Events') - t.GetEntry(1) - xs = t.baseW * s - - __files = [] - for f in _files: - __files += f - df = ROOT.RDataFrame('Runs', __files) - s = df.Sum('genEventSumw').GetValue() - newbaseW = str(xs / s) - weight = newbaseW + '/baseW' - - for iSample in samplelist: - addSampleWeight(samples, proc, iSample, weight) - -def addSampleWeight(samples, sampleName, sampleNameType, weight): - obj = list(filter(lambda k: k[0] == sampleNameType, samples[sampleName]['name']))[0] - samples[sampleName]['name'] = list(filter(lambda k: k[0] != sampleNameType, samples[sampleName]['name'])) - if len(obj) > 2: - samples[sampleName]['name'].append((obj[0], obj[1], obj[2] + '*(' + weight + ')')) - else: - samples[sampleName]['name'].append((obj[0], obj[1], '(' + weight + ')' )) - - -################################################ -############ DATA DECLARATION ################## -################################################ - -DataRun = [ - ['F','Run2016F-UL2016-v1'], - ['G','Run2016G_UL2016-v1'], - ['H','Run2016H_UL2016-v1'], -] - -DataSets = ['MuonEG','SingleMuon','SingleElectron','DoubleMuon', 'DoubleEG'] - -DataTrig = { - 'MuonEG' : ' Trigger_ElMu' , - 'SingleMuon' : '!Trigger_ElMu && Trigger_sngMu' , - 'SingleElectron' : '!Trigger_ElMu && !Trigger_sngMu && Trigger_sngEl', - 'DoubleMuon' : '!Trigger_ElMu && !Trigger_sngMu && !Trigger_sngEl && Trigger_dblMu', - 'DoubleEG' : '!Trigger_ElMu && !Trigger_sngMu && !Trigger_sngEl && !Trigger_dblMu && Trigger_dblEl' -} - -######################################### -############ MC COMMON ################## -######################################### - -# SFweight does not include btag weights -mcCommonWeightNoMatch = 'XSWeight*SFweight*METFilter_MC' -mcCommonWeight = 'XSWeight*SFweight*METFilter_MC*PromptGenLepMatch2l' - -########################################### -############# BACKGROUNDS ############### -########################################### - -###### DY ####### -files = nanoGetSampleFiles(mcDirectory, 'DYJetsToLL_M-10to50_NLO') + \ - nanoGetSampleFiles(mcDirectory, 'DYJetsToLL_M-50') - -samples['DY'] = { - 'name': files, - 'weight': mcCommonWeight + '*(Lepton_pdgId[0]*Lepton_pdgId[1] == -11*13)*( !(Sum(PhotonGen_isPrompt==1 && PhotonGen_pt>15 && abs(PhotonGen_eta)<2.6) > 0))', - 'FilesPerJob': 8, -} - -##### Top ####### -files = nanoGetSampleFiles(mcDirectory, 'TTTo2L2Nu') + \ - nanoGetSampleFiles(mcDirectory, 'ST_s-channel') + \ - nanoGetSampleFiles(mcDirectory, 'ST_t-channel_top') + \ - nanoGetSampleFiles(mcDirectory, 'ST_t-channel_antitop') + \ - nanoGetSampleFiles(mcDirectory, 'ST_tW_antitop') + \ - nanoGetSampleFiles(mcDirectory, 'ST_tW_top') - -samples['top'] = { - 'name': files, - 'weight': mcCommonWeight, # +'*ttHMVA_SF_flip_2l', - 'FilesPerJob': 8, -} -addSampleWeight(samples,'top','TTTo2L2Nu','Top_pTrw') - -###### WW ######## -samples['WW'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'WWTo2L2Nu'), - 'weight': mcCommonWeight + '*nllW*ewknloW', - 'FilesPerJob': 4 -} - -samples['WWewk'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'WpWmJJ_EWK_noTop'), - 'weight': mcCommonWeight + '*(Sum(abs(GenPart_pdgId)==6 || GenPart_pdgId==25)==0)', # Filter tops and Higgs, - 'FilesPerJob': 8 -} - -files = nanoGetSampleFiles(mcDirectory, 'GluGluToWWToENEN') + \ - nanoGetSampleFiles(mcDirectory, 'GluGluToWWToENMN') + \ - nanoGetSampleFiles(mcDirectory, 'GluGluToWWToENTN') + \ - nanoGetSampleFiles(mcDirectory, 'GluGluToWWToMNEN') + \ - nanoGetSampleFiles(mcDirectory, 'GluGluToWWToMNMN') + \ - nanoGetSampleFiles(mcDirectory, 'GluGluToWWToMNTN') + \ - nanoGetSampleFiles(mcDirectory, 'GluGluToWWToTNEN') + \ - nanoGetSampleFiles(mcDirectory, 'GluGluToWWToTNMN') + \ - nanoGetSampleFiles(mcDirectory, 'GluGluToWWToTNTN') - -samples['ggWW'] = { - 'name': files, - 'weight': mcCommonWeight + '*1.53/1.4', - 'FilesPerJob': 8 -} - -######## Vg ######## -files = nanoGetSampleFiles(mcDirectory, 'Wg_AMCNLOFXFX_01J') + \ - nanoGetSampleFiles(mcDirectory, 'ZGToLLG') - -samples['Vg'] = { - 'name': files, - 'weight': mcCommonWeightNoMatch + '*(Gen_ZGstar_mass <= 0)', - 'FilesPerJob': 4, -} - -######## VgS ######## -files = nanoGetSampleFiles(mcDirectory, 'Wg_AMCNLOFXFX_01J') + \ - nanoGetSampleFiles(mcDirectory, 'WZTo3LNu_mllmin0p1') + \ - nanoGetSampleFiles(mcDirectory, 'ZGToLLG') - -samples['VgS'] = { - 'name': files, - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} -addSampleWeight(samples, 'VgS', 'Wg_AMCNLOFXFX_01J', '((Gen_ZGstar_mass > 0 && Gen_ZGstar_mass <= 0.1))*(gstarLow*0.94)') -addSampleWeight(samples, 'VgS', 'WZTo3LNu_mllmin0p1', '((Gen_ZGstar_mass > 0.1)*(0.601644*58.59/4.666))*(gstarLow*0.94)') -addSampleWeight(samples, 'VgS', 'ZGToLLG', '(Gen_ZGstar_mass > 0)') - -############ WZ ############ -files = nanoGetSampleFiles(mcDirectory, 'WZTo3LNu_mllmin0p1') + \ - nanoGetSampleFiles(mcDirectory, 'WZTo2Q2L_mllmin4p0') - -samples['WZ'] = { - 'name': files, - 'weight': mcCommonWeight + ' * (gstarHigh)', - 'FilesPerJob': 4, -} -addSampleWeight(samples, 'WZ', 'WZTo3LNu_mllmin0p1', '(0.601644*58.59/4.666)') - - -############ ZZ ############ -files = nanoGetSampleFiles(mcDirectory, 'ZZTo2L2Nu') + \ - nanoGetSampleFiles(mcDirectory, 'ZZTo2Q2L_mllmin4p0') + \ - nanoGetSampleFiles(mcDirectory, 'ZZTo4L') - -samples['ZZ'] = { - 'name': files, - 'weight': mcCommonWeight, - 'FilesPerJob': 2, -} - - -########## VVV ######### -files = nanoGetSampleFiles(mcDirectory, 'ZZZ') + \ - nanoGetSampleFiles(mcDirectory, 'WZZ') + \ - nanoGetSampleFiles(mcDirectory, 'WWZ') + \ - nanoGetSampleFiles(mcDirectory, 'WWW') - -samples['VVV'] = { - 'name': files, - 'weight': mcCommonWeight, - 'FilesPerJob': 8, -} - -########################################### -############# SIGNALS ################## -########################################### - -signals = [] - -############ ggH H->WW ############ -samples['ggH_hww'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'GluGluHToWWTo2L2Nu_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} -signals.append('ggH_hww') - -############ VBF H->WW ############ -samples['qqH_hww'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'VBFHToWWTo2L2Nu_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 8, -} -signals.append('qqH_hww') - -############ ZH H->WW ############ -samples['ZH_hww'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'HZJ_HToWW_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 8, -} -signals.append('ZH_hww') - -samples['ggZH_hww'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'ggZH_HToWW_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 8, -} -signals.append('ggZH_hww') - -############ WH H->WW ############ -samples['WH_hww_plus'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'HWplusJ_HToWW_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} -signals.append('WH_hww_plus') - -samples['WH_hww_minus'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'HWminusJ_HToWW_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} - -signals.append('WH_hww_minus') - -############ ttH ############ -samples['ttH_hww'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'ttHToNonbb_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} -signals.append('ttH_hww') - -############ H->TauTau ############ -samples['ggH_htt'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'GluGluHToTauTau_M125_Powheg'), - 'weight': mcCommonWeight, - 'FilesPerJob': 20, -} -signals.append('ggH_htt') - -samples['qqH_htt'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'VBFHToTauTau_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 20, -} -signals.append('qqH_htt') - -samples['ZH_htt'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'ZHToTauTau_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 8, -} -signals.append('ZH_htt') - -############ WH H->TauTau ############ -samples['WH_htt_plus'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'WplusHToTauTau_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} -signals.append('WH_htt_plus') - -samples['WH_htt_minus'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'WminusHToTauTau_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} -signals.append('WH_htt_minus') - - -########################################### -################## FAKE ################### -########################################### - -samples['Fake'] = { - 'name': [], - 'weight': 'METFilter_DATA*fakeW', - 'weights': [], - 'isData': ['all'], - 'FilesPerJob': 50 -} - -for _, sd in DataRun: - for pd in DataSets: - tag_data = pd + '_' + sd - - if 'DoubleMuon' in pd and 'Run2016G' in sd: - print("sd = {}".format(sd)) - print("pd = {}".format(pd)) - print("Old tag = {}".format(tag_data)) - tag_data = tag_data.replace('v1','v2') - print("New tag = {}".format(tag_data)) - - files = nanoGetSampleFiles(fakeDirectory, tag_data) - - samples['Fake']['name'].extend(files) - addSampleWeight(samples, 'Fake', tag_data, DataTrig[pd]) - -samples['Fake']['subsamples'] = { - 'em': 'abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 11*13', - 'mm': 'abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 13*13', - 'ee': 'abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 11*11' -} - - -########################################### -################## DATA ################### -########################################### - -samples['DATA'] = { - 'name' : [], - 'weight' : 'LepWPCut*METFilter_DATA', - 'weights' : [], - 'isData' : ['all'], - 'FilesPerJob' : 50 -} - -for _, sd in DataRun: - for pd in DataSets: - tag_data = pd + '_' + sd - - if 'DoubleMuon' in pd and 'Run2016G' in sd: - print("sd = {}".format(sd)) - print("pd = {}".format(pd)) - print("Old tag = {}".format(tag_data)) - tag_data = tag_data.replace('v1','v2') - print("New tag = {}".format(tag_data)) - - files = nanoGetSampleFiles(dataDirectory, tag_data) - - samples['DATA']['name'].extend(files) - addSampleWeight(samples, 'DATA', tag_data, DataTrig[pd]) diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_CR/structure.py b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_CR/structure.py deleted file mode 100644 index 5bfab0d2..00000000 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_CR/structure.py +++ /dev/null @@ -1,202 +0,0 @@ -# structure configuration for datacard - -# keys here must match keys in samples.py - -signal_normalization = 10.0 - -# BTag normalization factors -# Cut = hww2l2v_13TeV_samesign_2j -scale_histo_ttH_hww = 0.617010001941/0.446976799456 # 1.38040722179 -scale_histo_WW = 1.18766327892/1.11941960177 # 1.06096344663 -scale_histo_DY = 2.73201114062/0.608771954656 # 4.48774146004 -scale_histo_WZ = 14.3395874219/14.5601910428 # 0.984848851212 -scale_histo_Wg = 14.1373403782/13.3726960287 # 1.05717952071 -scale_histo_Zg = 1.52588834242/1.44067413887 # 1.05914883959 -scale_histo_Vg = (14.1373403782+1.52588834242)/(13.3726960287+1.44067413887) -scale_histo_WgS = 5.08787522305/4.79282588245 # 1.06156062161 -scale_histo_ZgS = 1.15543489932/0.954033381473 # 1.21110531535 -scale_histo_VgS = (5.08787522305+1.15543489932)/(4.79282588245+0.954033381473) -scale_histo_ZH_htt = 0.0461453275357/0.0465742645873 # 0.990790256048 -scale_histo_ggZH_hww = 0.0297800727078/0.0349759598491 # 0.851444044317 -scale_histo_qqH_hww = 0.0075359367047/0.0066903584339 # 1.12638758882 -scale_histo_ZZ = 0.495265502014/0.498023693388 # 0.994461726599 -scale_histo_ggH_hww = 0.0441757111415/0.0460026087971 # 0.960287085811 -scale_histo_WH_htt_minus = 0.0941584918584/0.0962440831445 # 0.978330186979 -scale_histo_VVV = 1.01443537458/1.06235296784 # 0.9548948469 -scale_histo_WH_hww_plus = 0.649373521985/0.644823292629 # 1.0070565524 -scale_histo_ggH_htt = 0.0/1 # 0.0 -scale_histo_qqH_htt = 0.0/1 # 0.0 -scale_histo_ggWW = 0.072279298858/0.069415504322 # 1.04125583418 -scale_histo_top = 34.3826934095/25.3486171412 # 1.35639325877 -scale_histo_WWewk = 0.00912821559271/0.00909789799107 # 1.00333237432 -scale_histo_ZH_hww = 0.100156164997/0.0990130825874 # 1.01154476136 -scale_histo_WH_hww_minus = 0.371555178345/0.369464620919 # 1.00565834266 -scale_histo_WH_htt_plus = 0.1320381988/0.133786809382 # 0.986929873051 - -structure = {} - -# structure['DY'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_DY, -# } - -# structure['top'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_top, -# } - -# structure['WW'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_WW, -# } - -# structure['WWewk'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_WWewk, -# } - -# structure['ggWW'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_ggWW, -# } - - -structure['Vg'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_Vg, -} - -# structure['VgS'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_VgS, -# } - -structure['WZ'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WZ * 1.138 # NLO -> NNLO k-factor -} - -structure['ZZ'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZZ, -} - -structure['VVV'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_VVV, -} - - -# Higgs -structure['ggH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ggH_hww, -} - -structure['qqH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_qqH_hww, -} - -structure['ZH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZH_hww, -} - -structure['ggZH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ggZH_hww, -} - -structure['WH_hww_plus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_hww_plus*signal_normalization, -} - -structure['WH_hww_minus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_hww_minus*signal_normalization, -} - -structure['ttH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ttH_hww, -} - -structure['ggH_htt'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ggH_htt, -} - -structure['qqH_htt'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_qqH_htt, -} - -structure['ZH_htt'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZH_htt, -} - -structure['WH_htt_plus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_htt_plus*signal_normalization, -} - -structure['WH_htt_minus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_htt_minus*signal_normalization, -} - - -# Fakes -structure['Fake_ee'] = { - 'isSignal' : 0, - 'isData' : 0, -} - -structure['Fake_mm'] = { - 'isSignal' : 0, - 'isData' : 0, -} - -structure['Fake_em'] = { - 'isSignal' : 0, - 'isData' : 0, -} - - -# Data-driven charge flip estimation -structure['ChargeFlip'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : 0.5, -} - -# Data -structure['DATA'] = { - 'isSignal' : 0, - 'isData' : 1 -} diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_mm_CR/README.md b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_mm_CR/README.md deleted file mode 100644 index ba17b328..00000000 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_mm_CR/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# Configuration for WHSS 1j signal region - -### Plot distributions - -Compile configuration and plot distributions: - - mkShapesRDF -c 1 - - mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png - -### Produce datacards - -Compile configuration and produce datacards: - - mkShapesRDF -c 1 - - mkDatacards --outputDirDatacard ../datacards_original_signal_scale --skipMissingNuisance \ No newline at end of file diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_mm_CR/configuration.py b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_mm_CR/configuration.py deleted file mode 100644 index 9b68cd2a..00000000 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_mm_CR/configuration.py +++ /dev/null @@ -1,99 +0,0 @@ -# Configuration file for charge asymmetry WHSS analysis using the UL 2016noHIPM dataset - -import sys,inspect - -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_mm_CR - -configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file -configurations_nuisance = os.path.dirname(configurations_nuisance) # configuration_2j_mm_CR -configurations_nuisance = os.path.dirname(configurations_nuisance) # WHSS -configurations_nuisance = os.path.dirname(configurations_nuisance) # 2016noHIPM_v9 -configurations_nuisance = os.path.dirname(configurations_nuisance) # UL - -# Tag used to identify the configuration folder version -tag = 'WHSS_2016noHIPM_v9_chargeAsymmetry_Mu82_EleUL90' - -# File to use as runner script, default uses mkShapesRDF.shapeAnalysis.runner, otherwise specify path to script -runnerFile = "default" - -# Output file name -outputFile = "plots_WHSS_2016noHIPM_v9_chargeAsymmetry_Mu82_EleUL90_DYflip_data.root" # "mkShapes__{}.root".format(tag) - -# Path to ouput folder -outputFolder = "../../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" - -# Path to batch folder (used for condor submission) -batchFolder = "condor" - -# Path to configuration folder (will contain all the compiled configuration files) -configsFolder = "configs" - -# luminosity to normalize to (in 1/fb) -# https://github.com/latinos/LatinoAnalysis/blob/UL_production/NanoGardener/python/data/TrigMaker_cfg.py#L239 (#311 #377 #445) -# 0.418771191 + 7.653261227 + 7.866107374 + 0.8740119304 = 16.8121517224 -lumi = 16.81 - -# File with dict of aliases to define -aliasesFile = "../aliases.py" - -# File with dict of variables -variablesFile = "../variables.py" - -# File with dict of cuts -cutsFile = "cuts.py" - -# File with dict of samples -samplesFile = "../samples.py" - -# File with dict of samples for plotting -plotFile = 'plot.py' - -# File with dict of structure (used to define processes in combine) -structureFile = "structure.py" - -# Nuisances file for mkDatacards and for mkShape -nuisancesFile = "../nuisances.py" - -# Path to folder where to save plots -plotPath = '../plots_' + tag - -# This lines are executed right before the runner on the condor node -mountEOS = [] - -# List of imports to import when compiling the whole configuration folder, it should not contain imports used by configuration.py -imports = ["os", "glob", ("collections", "OrderedDict"), "ROOT"] - -# List of files to compile -filesToExec = [ - samplesFile, - aliasesFile, - variablesFile, - cutsFile, - plotFile, - nuisancesFile, - structureFile, -] - -# List of variables to keep in the compiled configuration folder -varsToKeep = [ - "batchVars", - "outputFolder", - "batchFolder", - "configsFolder", - "outputFile", - "runnerFile", - "tag", - "samples", - "aliases", - "variables", - ("cuts", {"cuts": "cuts", "preselections": "preselections"}), - ("plot", {"plot": "plot", "groupPlot": "groupPlot", "legend": "legend"}), - "nuisances", - "structure", - "lumi", -] - -# List of variables to keep in the batch submission script (script.py) -batchVars = varsToKeep[varsToKeep.index("samples") :] - -varsToKeep += ['plotPath'] diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_mm_CR/cuts.py b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_mm_CR/cuts.py deleted file mode 100644 index de3426fd..00000000 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_mm_CR/cuts.py +++ /dev/null @@ -1,37 +0,0 @@ -cuts = {} - -# cuts -preselections = 'mll>12 \ - && Lepton_pt[0]>25 \ - && Lepton_pt[1]>10 \ - && (abs(Lepton_pdgId[1])==13 || Lepton_pt[1]>13) \ - && abs(Lepton_eta[0])<2.5 && abs(Lepton_eta[1])<2.5 \ - && bVeto \ - && PuppiMET_pt > 30 \ - && !hole_veto \ - ' - -# Splitting in sub-leading lepton pT -#################################### - -## SR 2jets - -# mu-mu -cuts['hww2l2v_13TeV_WH_SS_noZveto_mm_2j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 13*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && mjj < 100 && mlljj20_whss > 50.', - 'categories' : { - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT >= 20 GeV) - 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT < 20 GeV) - 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - } -} - -# mlljj20_whss: -# inv_mass of: (jet1, jet2, 2*closest_lep_to_jets) -# jets are considered with pT > 20 GeV - -# Definitions of WH3l variables: -# https://github.com/latinos/LatinoAnalysis/blob/76e7c4b93aa5f056c92440d4e8d24e7de749c8fe/NanoGardener/python/modules/l3KinProducer.py diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_mm_CR/nuisances.py b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_mm_CR/nuisances.py deleted file mode 100644 index f0a2cb34..00000000 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_mm_CR/nuisances.py +++ /dev/null @@ -1,654 +0,0 @@ -import sys - -# Enable reading YR for Higgs XS and uncertainties -sys.path.append('../../../macros/') -import HiggsXSection -HiggsXS = HiggsXSection.HiggsXSection() - -nuisances = {} - -mcProduction = 'Summer20UL16_106x_nAODv9_noHIPM_Full2016v9' -dataReco = 'Run2016_UL2016_nAODv9_noHIPM_Full2016v9' -mcSteps = 'MCl1loose2016v9__MCCorr2016v9NoJERInHorn__l2tightOR2016v9' -fakeSteps = 'DATAl1loose2016v9__l2loose__fakeW' -dataSteps = 'DATAl1loose2016v9__l2loose__l2tightOR2016v9' - -treeBaseDir = '/eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano' -limitFiles = -1 - -mc = [skey for skey in samples if skey not in ('Fake', 'DATA')] - -redirector = "" - -useXROOTD = False - -def makeMCDirectory(var=''): - if var== '': - print(os.path.join(treeBaseDir, mcProduction, mcSteps)) - return os.path.join(treeBaseDir, mcProduction, mcSteps) - else: - print(os.path.join(treeBaseDir, mcProduction, mcSteps + '__' + var)) - return os.path.join(treeBaseDir, mcProduction, mcSteps + '__' + var) - -mcDirectory = makeMCDirectory() -fakeDirectory = os.path.join(treeBaseDir, dataReco, fakeSteps) -dataDirectory = os.path.join(treeBaseDir, dataReco, dataSteps) - -################################ EXPERIMENTAL UNCERTAINTIES ################################# - -#### Luminosity - -# https://twiki.cern.ch/twiki/bin/view/CMS/LumiRecommendationsRun2#LumiComb -# Uncorrelated 2016 1.0 -# Uncorrelated 2017 2.0 -# Uncorrelated 2018 1.5 -# Correlated 2016, 2017, 2018 0.6, 0.9, 2.0 -# Correlated 2017, 2018 0.6, 0.2 - -nuisances['lumi_Uncorrelated'] = { - 'name' : 'lumi_13TeV_2016', - 'type' : 'lnN', - 'samples' : dict((skey, '1.010') for skey in mc if skey not in ['WZ']) -} - -nuisances['lumi_Correlated_Run2'] = { - 'name' : 'lumi_13TeV_correlated', - 'type' : 'lnN', - 'samples' : dict((skey, '1.006') for skey in mc if skey not in ['WZ']) -} - - -#### FAKES -fake_syst_endcap = ['1.0*(abs(Lepton_eta[1])<=1.4) + 1.3*(abs(Lepton_eta[1])>1.4)', - '1.0*(abs(Lepton_eta[1])<=1.4) + 1.0/1.3*(abs(Lepton_eta[1])>1.4)'] - -fake_syst_barrel = [' 1.3*(abs(Lepton_eta[1])<=1.4) + 1.0*(abs(Lepton_eta[1])>1.4)', - '1.0/1.3*(abs(Lepton_eta[1])<=1.4) + 1.0*(abs(Lepton_eta[1])>1.4)'] - -nuisances['fake_syst_mm_barrel'] = { - 'name' : 'CMS_WH_hww_fake_syst_mm_barrel', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_mm' : fake_syst_barrel, - }, - 'cuts' : [cut for cut in cuts if ('_mm_' in cut)] -} -nuisances['fake_syst_mm_endcap'] = { - 'name' : 'CMS_WH_hww_fake_syst_mm_endcap', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_mm' : fake_syst_endcap, - }, - 'cuts' : [cut for cut in cuts if ('_mm_' in cut)] -} - -nuisances['fake_syst_em_barrel'] = { - 'name' : 'CMS_WH_hww_fake_syst_em_barrel', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_em' : fake_syst_barrel, - }, - 'cuts' : [cut for cut in cuts if ('_em_' in cut)] -} -nuisances['fake_syst_em_endcap'] = { - 'name' : 'CMS_WH_hww_fake_syst_em_endcap', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_em' : fake_syst_endcap, - }, - 'cuts' : [cut for cut in cuts if ('_em_' in cut)] -} - -nuisances['fake_syst_ee_barrel'] = { - 'name' : 'CMS_WH_hww_fake_syst_ee_barrel', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_ee' : fake_syst_barrel, - }, - 'cuts' : [cut for cut in cuts if ('_ee_' in cut)] -} -nuisances['fake_syst_ee_endcap'] = { - 'name' : 'CMS_WH_hww_fake_syst_ee_endcap', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_ee' : fake_syst_endcap, - }, - 'cuts' : [cut for cut in cuts if ('_ee_' in cut)] -} - -nuisances['fake_ele'] = { - 'name' : 'CMS_WH_hww_fake_e_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_ee' : ['fakeWEleUp', 'fakeWEleDown'], - 'Fake_em' : ['fakeWEleUp', 'fakeWEleDown'], - } -} -nuisances['fake_ele_stat'] = { - 'name' : 'CMS_WH_hww_fake_stat_e_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_ee' : ['fakeWStatEleUp', 'fakeWStatEleDown'], - 'Fake_em' : ['fakeWStatEleUp', 'fakeWStatEleDown'], - } -} -nuisances['fake_mu'] = { - 'name' : 'CMS_WH_hww_fake_m_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_mm' : ['fakeWMuUp', 'fakeWMuDown'], - 'Fake_em' : ['fakeWMuUp', 'fakeWMuDown'], - } -} -nuisances['fake_mu_stat'] = { - 'name' : 'CMS_WH_hww_fake_stat_m_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_mm' : ['fakeWStatMuUp', 'fakeWStatMuDown'], - 'Fake_em' : ['fakeWStatMuUp', 'fakeWStatMuDown'], - } -} - -###### B-tagger - -for shift in ['lf', 'hf', 'hfstats1', 'hfstats2', 'lfstats1', 'lfstats2', 'cferr1', 'cferr2']: - btag_syst = ['(btagSF%sup)/(btagSF)' % shift, '(btagSF%sdown)/(btagSF)' % shift] - - name = 'CMS_btag_%s' % shift - if 'stats' in shift: - name += '_2016' - - nuisances['btag_shape_%s' % shift] = { - 'name' : name, - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, btag_syst) for skey in mc), - } - -##### Trigger Scale Factors - -trig_syst = ['TriggerSFWeight_2l_u/TriggerSFWeight_2l', 'TriggerSFWeight_2l_d/TriggerSFWeight_2l'] - -nuisances['trigg'] = { - 'name' : 'CMS_eff_hwwtrigger_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, trig_syst) for skey in mc) -} - -##### Electron Efficiency and energy scale - -nuisances['eff_e'] = { - 'name' : 'CMS_eff_e_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['SFweightEleUp', 'SFweightEleDown']) for skey in mc) -} - -nuisances['eff_ttHMVA_e'] = { - 'name' : 'CMS_eff_ttHMVA_e_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['LepWPttHMVASFEleUp', 'LepWPttHMVASFEleDown']) for skey in mc) -} - -nuisances['electronpt'] = { - 'name' : 'CMS_scale_e_2016', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'ElepTup', - 'mapDown' : 'ElepTdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('ElepTup_suffix'), - 'folderDown' : makeMCDirectory('ElepTdo_suffix'), - 'AsLnN' : '0' -} - -##### Muon Efficiency and energy scale - -nuisances['eff_m'] = { - 'name' : 'CMS_eff_m_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['SFweightMuUp', 'SFweightMuDown']) for skey in mc) -} - -nuisances['eff_ttHMVA_m'] = { - 'name' : 'CMS_eff_ttHMVA_m_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['LepWPttHMVASFMuUp', 'LepWPttHMVASFMuDown']) for skey in mc) -} - -nuisances['muonpt'] = { - 'name' : 'CMS_scale_m_2016', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'MupTup', - 'mapDown' : 'MupTdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('MupTup_suffix'), - 'folderDown' : makeMCDirectory('MupTdo_suffix'), - 'AsLnN' : '0' -} - -##### Jet energy scale -jes_systs = ['JESAbsolute','JESAbsolute_2016','JESBBEC1','JESBBEC1_2016','JESEC2','JESEC2_2016','JESFlavorQCD','JESHF','JESHF_2016','JESRelativeBal','JESRelativeSample_2016'] - -for js in jes_systs: - - nuisances[js] = { - 'name' : 'CMS_scale_' + js.replace("JES","j_"), - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : js + 'up', - 'mapDown' : js + 'do', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('RDF__JESup_suffix'), - 'folderDown': makeMCDirectory('RDF__JESdo_suffix'), - 'reweight' : ['btagSF'+js.replace('JES','jes')+'up/btagSF','btagSF'+js.replace('JES','jes')+'down/btagSF'], - 'AsLnN' : '0' - } - -##### Jet energy resolution -nuisances['JER'] = { - 'name' : 'CMS_res_j_2016', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'JERup', - 'mapDown' : 'JERdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('JERup_suffix'), - 'folderDown': makeMCDirectory('JERdo_suffix'), - 'AsLnN' : '0' -} - -##### MET unclustered energy - -# metUp.PuppiMET_pt_METup -nuisances['met'] = { - 'name' : 'CMS_scale_met_2016', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'METup', - 'mapDown' : 'METdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('METup_suffix'), - 'folderDown': makeMCDirectory('METdo_suffix'), - 'AsLnN' : '0' -} - - -##### Pileup - -# puWeight_UL2016 -nuisances['PU'] = { - 'name' : 'CMS_pileup_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'DY' : ['1.000489*(puWeightUp/puWeight)', '0.998828*(puWeightDown/puWeight)'], - 'WW' : ['1.007152*(puWeightUp/puWeight)', '0.993194*(puWeightDown/puWeight)'], - 'ggWW' : ['1.006460*(puWeightUp/puWeight)', '0.993661*(puWeightDown/puWeight)'], - 'Vg' : ['1.004694*(puWeightUp/puWeight)', '0.998294*(puWeightDown/puWeight)'], - 'WZ' : ['1.003158*(puWeightUp/puWeight)', '0.997747*(puWeightDown/puWeight)'], - 'ZZ' : ['1.000801*(puWeightUp/puWeight)', '0.999199*(puWeightDown/puWeight)'], - 'VVV' : ['0.996144*(puWeightUp/puWeight)', '1.005616*(puWeightDown/puWeight)'], - 'top' : ['1.004374*(puWeightUp/puWeight)', '0.995684*(puWeightDown/puWeight)'], - 'Higgs' : ['1.006460*(puWeightUp/puWeight)', '0.993559*(puWeightDown/puWeight)'], - }, - 'AsLnN' : '0', -} - -### PU ID SF uncertainty - -puid_syst = ['Jet_PUIDSF_up/Jet_PUIDSF', 'Jet_PUIDSF_down/Jet_PUIDSF'] - -nuisances['jetPUID'] = { - 'name' : 'CMS_eff_j_PUJET_id_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, puid_syst) for skey in mc) -} - -### PS and UE - -nuisances['PS_ISR'] = { - 'name' : 'PS_WH_hww_ISR', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['PSWeight[2]', 'PSWeight[0]']) for skey in mc), - 'AsLnN' : '0', -} - -nuisances['PS_FSR'] = { - 'name' : 'PS_WH_hww_FSR', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['PSWeight[3]', 'PSWeight[1]']) for skey in mc), - 'AsLnN' : '0', -} - -nuisances['UE_CP5'] = { - 'name' : 'CMS_WH_hww_UE', - 'skipCMS' : 1, - 'type' : 'lnN', - 'samples' : dict((skey, '1.015') for skey in mc), -} - -# Charge flip efficiency -nuisances['chargeFlipEff'] = { - 'name' : 'CMS_whss_chargeFlipEff_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['1-ttHMVA_eff_err_flip_2l', '1+ttHMVA_eff_err_flip_2l']) for skey in ['DY','ChargeFlip']), - 'cuts' : [cut for cut in cuts if ('_ee_' in cut or '_em_' in cut)] -} - -# Charge flip: uncertainty on opposite sign processes not affected by charge-flip -nuisances['chargeFlip_syst'] = { - 'name' : 'CMS_ChargeFlip_syst', - 'type' : 'lnN', - 'samples' : { - 'ChargeFlip' : '1.10', - } -} - -# Top pT reweighting uncertainty - -nuisances['TopPtRew'] = { - 'name' : 'CMS_top_pT_reweighting', # Theory uncertainty - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'top': ["1.", "1./Top_pTrw"] - }, - 'symmetrize' : True -} - -nuisances['WgStar'] = { - 'name' : 'CMS_hww_WgStarScale', - 'type' : 'lnN', - 'samples' : { - 'WgS' : '1.25' - } -} - -###### pdf uncertainties - -valuesggh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggH', '125.09','pdf','sm') -valuesggzh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggZH','125.09','pdf','sm') -valuesbbh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','bbH', '125.09','pdf','sm') - -nuisances['pdf_Higgs_gg'] = { - 'name' : 'pdf_Higgs_gg', - 'samples' : { - 'ggH_hww' : valuesggh, - 'ggH_htt' : valuesggh, - 'ggZH_hww' : valuesggzh, - 'bbH_hww' : valuesbbh, - }, - 'type' : 'lnN', -} - -# For ttH, we need to use 1./values -values = str(1./float(HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ttH','125.09','pdf','sm'))) - -nuisances['pdf_Higgs_ttH'] = { - 'name' : 'pdf_Higgs_ttH', - 'samples' : { - 'ttH_hww': values, - }, - 'type' : 'lnN', -} - -valuesqqh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','vbfH','125.09','pdf','sm') -valueswh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','WH', '125.09','pdf','sm') -valueszh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ZH', '125.09','pdf','sm') - -nuisances['pdf_Higgs_qqbar'] = { - 'name' : 'pdf_Higgs_qqbar', - 'type' : 'lnN', - 'samples': { - 'qqH_hww' : valuesqqh, - 'qqH_htt' : valuesqqh, - 'WH_hww_plus' : valueswh, - 'WH_hww_minus': valueswh, - 'WH_htt_plus' : valueswh, - 'WH_htt_minus': valueswh, - 'ZH_hww' : valueszh, - 'ZH_htt' : valueszh - }, -} - -nuisances['pdf_qqbar'] = { - 'name' : 'pdf_qqbar', - 'type' : 'lnN', - 'samples' : { - 'Wg' : '1.04', - 'Zg' : '1.04', - 'ZZ' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 - 'WZ' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 - 'WgS' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 - 'ZgS' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 - }, -} - -nuisances['pdf_gg'] = { - 'name': 'pdf_gg', - 'type': 'lnN', - 'samples': { - 'ggWW' : '1.05', - }, -} - -nuisances['pdf_Higgs_gg_ACCEPT'] = { - 'name' : 'pdf_WH_hww_Higgs_gg_ACCEPT', - 'samples' : { - 'ggH_hww' : '1.006', - 'ggH_htt' : '1.006', - 'ggZH_hww' : '1.006', - 'bbH_hww' : '1.006' - }, - 'type' : 'lnN', -} -nuisances['pdf_gg_ACCEPT'] = { - 'name' : 'pdf_WH_hww_gg_ACCEPT', - 'samples' : { - 'ggWW' : '1.006', - }, - 'type' : 'lnN', -} - -nuisances['pdf_Higgs_qqbar_ACCEPT'] = { - 'name' : 'pdf_WH_hww_Higgs_qqbar_ACCEPT', - 'type' : 'lnN', - 'samples' : { - 'qqH_hww' : '1.002', - 'qqH_htt' : '1.002', - 'WH_hww_plus' : '1.003', - 'WH_hww_minus': '1.003', - 'WH_htt_plus' : '1.003', - 'WH_htt_minus': '1.003', - 'ZH_hww' : '1.002', - 'ZH_htt' : '1.002', - }, -} - -nuisances['pdf_qqbar_ACCEPT'] = { - 'name' : 'pdf_WH_hww_qqbar_ACCEPT', - 'type' : 'lnN', - 'samples' : { - 'ZZ' : '1.001', - 'WZ' : '1.001', - }, -} - -##### Renormalization & factorization scales - -## Shape nuisance due to QCD scale variations for DY -## LHE scale variation weights (w_var / w_nominal) - -## This should work for samples with either 8 or 9 LHE scale weights (Length$(LHEScaleWeight) == 8 or 9) -variations = ['Alt(LHEScaleWeight,0,1)', 'Alt(LHEScaleWeight,1,1)', 'Alt(LHEScaleWeight,3,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-4,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-2,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-1,1)'] - -# nuisances['QCDscale_V'] = { -# 'name' : 'QCDscale_V', -# 'skipCMS' : 1, -# 'kind' : 'weight_envelope', -# 'type' : 'shape', -# 'samples' : { -# 'DY' : variations -# }, -# 'AsLnN' : '0' -# } - -nuisances['QCDscale_VV'] = { - 'name' : 'QCDscale_VV', - 'kind' : 'weight_envelope', - 'type' : 'shape', - 'samples' : { - 'WW' : variations, - 'Zg' : variations, - 'Wg' : variations, - 'ZZ' : variations, - 'WZ' : variations, - 'WgS' : variations, - 'ZgS' : variations - } -} - -nuisances['QCDscale_ggVV'] = { - 'name' : 'QCDscale_ggVV', - 'type' : 'lnN', - 'samples' : { - 'ggWW' : '1.15', - }, -} - -#### QCD scale uncertainties for Higgs signals other than ggH - -values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','vbfH','125.09','scale','sm') - -nuisances['QCDscale_qqH'] = { - 'name' : 'QCDscale_qqH', - 'samples' : { - 'qqH_hww' : values, - 'qqH_htt' : values, - }, - 'type' : 'lnN' -} - -valueswh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','WH','125.09','scale','sm') -valueszh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ZH','125.09','scale','sm') - -nuisances['QCDscale_VH'] = { - 'name' : 'QCDscale_VH', - 'samples' : { - 'WH_hww_plus' : valueswh, - 'WH_hww_minus' : valueswh, - 'WH_htt_plus' : valueswh, - 'WH_htt_minus' : valueswh, - 'ZH_hww' : valueszh, - 'ZH_htt' : valueszh, - }, - 'type' : 'lnN', -} - -values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggZH','125.09','scale','sm') - -nuisances['QCDscale_ggZH'] = { - 'name' : 'QCDscale_ggZH', - 'samples' : { - 'ggZH_hww' : values, - }, - 'type' : 'lnN', -} - -values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ttH','125.09','scale','sm') - -nuisances['QCDscale_ttH'] = { - 'name' : 'QCDscale_ttH', - 'samples' : { - 'ttH_hww' : values, - }, - 'type' : 'lnN', -} - -nuisances['QCDscale_WWewk'] = { - 'name' : 'QCDscale_WWewk', - 'samples' : { - 'WWewk' : '1.11', - }, - 'type' : 'lnN' -} - -nuisances['QCDscale_qqbar_ACCEPT'] = { - 'name' : 'QCDscale_qqbar_ACCEPT', - 'type' : 'lnN', - 'samples' : { - 'qqH_hww' : '1.003', - 'qqH_htt' : '1.003', - 'WH_hww_plus' : '1.010', - 'WH_hww_minus' : '1.010', - 'WH_htt_plus' : '1.010', - 'WH_htt_minus' : '1.010', - 'ZH_hww' : '1.015', - 'ZH_htt' : '1.015', - } -} - -# FIXME: these come from HIG-16-042, maybe should be recomputed? -nuisances['QCDscale_gg_ACCEPT'] = { - 'name' : 'QCDscale_gg_ACCEPT', - 'samples' : { - 'ggH_htt' : '1.012', - 'ggH_hww' : '1.012', - 'ggZH_hww' : '1.012', - 'ggWW' : '1.012', - }, - 'type' : 'lnN', -} - -# WZ normalization from control region - -nuisances['WZ2jnorm'] = { - 'name' : 'CMS_hww_WZ3l2jnorm', - 'samples' : { - 'WZ' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [cut for cut in cuts if '2j' in cut], -} - -nuisances['WZ1jnorm'] = { - 'name' : 'CMS_hww_WZ3l1jnorm', - 'samples' : { - 'WZ' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [cut for cut in cuts if '1j' in cut], -} - -# Use the following if you want to apply the automatic combine MC stat nuisances. -nuisances['stat'] = { - 'type' : 'auto', - 'maxPoiss' : '10', - 'includeSignal' : '0', - 'samples' : {} -} -# nuisance ['maxPoiss'] = Number of threshold events for Poisson modelling -# nuisance ['includeSignal'] = Include MC stat nuisances on signal processes (1=True, 0=False) - -for n in nuisances.values(): - n['skipCMS'] = 1 diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_mm_CR/plot.py b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_mm_CR/plot.py deleted file mode 100644 index 683d6306..00000000 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_mm_CR/plot.py +++ /dev/null @@ -1,355 +0,0 @@ -# plot configuration - -# Groups of samples to improve the plots. -# If not defined, normal plots is used - -# BTag normalization factors -# Cut = hww2l2v_13TeV_samesign_2j -scale_histo_ttH_hww = 0.617010001941/0.446976799456 # 1.38040722179 -scale_histo_WW = 1.18766327892/1.11941960177 # 1.06096344663 -scale_histo_DY = 2.73201114062/0.608771954656 # 4.48774146004 -scale_histo_WZ = 14.3395874219/14.5601910428 # 0.984848851212 -scale_histo_Wg = 14.1373403782/13.3726960287 # 1.05717952071 -scale_histo_Zg = 1.52588834242/1.44067413887 # 1.05914883959 -scale_histo_Vg = (14.1373403782+1.52588834242)/(13.3726960287+1.44067413887) -scale_histo_WgS = 5.08787522305/4.79282588245 # 1.06156062161 -scale_histo_ZgS = 1.15543489932/0.954033381473 # 1.21110531535 -scale_histo_VgS = (5.08787522305+1.15543489932)/(4.79282588245+0.954033381473) -scale_histo_ZH_htt = 0.0461453275357/0.0465742645873 # 0.990790256048 -scale_histo_ggZH_hww = 0.0297800727078/0.0349759598491 # 0.851444044317 -scale_histo_qqH_hww = 0.0075359367047/0.0066903584339 # 1.12638758882 -scale_histo_ZZ = 0.495265502014/0.498023693388 # 0.994461726599 -scale_histo_ggH_hww = 0.0441757111415/0.0460026087971 # 0.960287085811 -scale_histo_WH_htt_minus = 0.0941584918584/0.0962440831445 # 0.978330186979 -scale_histo_VVV = 1.01443537458/1.06235296784 # 0.9548948469 -scale_histo_WH_hww_plus = 0.649373521985/0.644823292629 # 1.0070565524 -scale_histo_ggH_htt = 0.0/1 # 0.0 -scale_histo_qqH_htt = 0.0/1 # 0.0 -scale_histo_ggWW = 0.072279298858/0.069415504322 # 1.04125583418 -scale_histo_top = 34.3826934095/25.3486171412 # 1.35639325877 -scale_histo_WWewk = 0.00912821559271/0.00909789799107 # 1.00333237432 -scale_histo_ZH_hww = 0.100156164997/0.0990130825874 # 1.01154476136 -scale_histo_WH_hww_minus = 0.371555178345/0.369464620919 # 1.00565834266 -scale_histo_WH_htt_plus = 0.1320381988/0.133786809382 # 0.986929873051 - -groupPlot = {} - -groupPlot['top'] = { - 'nameHR' : 'tW+ and t#bar{t}', - 'isSignal' : 0, - 'color' : 400, # kYellow - 'samples' : ['top'] -} - -groupPlot['WW'] = { - 'nameHR' : 'WW', - 'isSignal' : 0, - 'color' : 851, # kAzure -9 - 'samples' : ['WW', 'ggWW', 'WWewk'] -} - -groupPlot['DY'] = { - 'nameHR' : "DY", - 'isSignal' : 0, - 'color' : 418, # kGreen+2 - 'samples' : ['DY'] -} - -groupPlot['Fake'] = { - 'nameHR' : 'Non-prompt', - 'isSignal' : 0, - 'color' : 921, # kGray + 1 - 'samples' : ['Fake_mm','Fake_em','Fake_ee'] -} - -# groupPlot['ChargeFlip'] = { -# 'nameHR' : "charge_flip", -# 'isSignal' : 0, -# 'color' : 418, # kGreen+2 -# 'samples' : ['ChargeFlip'] -# } - -groupPlot['VVV'] = { - 'nameHR' : 'VVV', - 'isSignal' : 0, - 'color' : 857, # kAzure -3 - 'samples' : ['VVV'] -} - -groupPlot['ZZ'] = { - 'nameHR' : "ZZ", - 'isSignal' : 0, - 'color' : 617, # kViolet + 1 - 'samples' : ['ZZ'] -} - -groupPlot['WZ'] = { - 'nameHR' : "WZ", - 'isSignal' : 0, - 'color' : 619, # kViolet + 1 - 'samples' : ['WZ'] -} - -groupPlot['Vg'] = { - 'nameHR' : "V#gamma", - 'isSignal' : 0, - 'color' : 810, # kOrange + 10 - 'samples' : ['Vg'] -} - -groupPlot['VgS'] = { - 'nameHR' : "V#gamma*", - 'isSignal' : 0, - 'color' : 412, # kGreen - 9 - 'samples' : ['VgS'] -} - -groupPlot['Higgs'] = { - 'nameHR' : 'Higgs', - 'isSignal' : 0, - 'color' : 632, # kRed - 'samples' : ['ggH_hww','qqH_hww','ZH_hww','ggZH_hww','ttH_hww','ggH_htt','qqH_htt','ZH_htt'] -} - -groupPlot['WH_minus'] = { - 'nameHR' : 'W^{-} H (x 10)', - 'isSignal' : 2, - 'color' : 600, # kBlue - 'samples' : ['WH_hww_minus','WH_htt_minus'] -} - -groupPlot['WH_plus'] = { - 'nameHR' : 'W^{+} H (x 10)', - 'isSignal' : 2, - 'color' : 632, # kRed - 'samples' : ['WH_hww_plus', 'WH_htt_plus'] -} - - -# keys here must match keys in samples.py - -plot = {} - -# plot['ChargeFlip'] = { -# 'color' : 418, # kGreen+2 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : 0.5, -# } - -plot['DY'] = { - 'color' : 418, # kGreen+2 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_DY, -} - -plot['top'] = { - 'nameHR' : 'tW and t#bar{t}', - 'color' : 400, # kYellow - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_top, -} - -plot['WW'] = { - 'color' : 851, # kAzure -9 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_WW, -} - -plot['WWewk'] = { - 'color' : 850, # kAzure -10 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_WWewk, -} - -plot['ggWW'] = { - 'color' : 850, # kAzure -10 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggWW, -} - -plot['Vg'] = { - 'color' : 859, # kAzure -1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_Vg, -} - -plot['VgS'] = { - 'color' : 617, # kViolet + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_VgS, -} - -plot['WZ'] = { - 'color' : 858, # kAzure -2 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_WZ * 1.138, # NLO -> NNLO k-factor! -} - -plot['ZZ'] = { - 'color' : 858, # kAzure -2 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ZZ, -} - -plot['VVV'] = { - 'color' : 857, # kAzure -3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_VVV, -} - -########### -# Signals # -########### - -# HWW - -plot['ggH_hww'] = { - 'color' : 632, # kRed - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggH_hww, -} - -plot['qqH_hww'] = { - 'color' : 632+1, # kRed+1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_qqH_hww, -} - -plot['ZH_hww'] = { - 'color' : 632+3, # kRed+3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ZH_hww, -} - -plot['ggZH_hww'] = { - 'color' : 632+4, # kRed+4 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggZH_hww, -} - -plot['WH_hww_plus'] = { - 'color' : 632+2, # kRed+2 - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_hww_plus, -} - -plot['WH_hww_minus'] = { - 'color' : 600, # kBlue - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_hww_minus, -} - -plot['ttH_hww'] = { - 'color' : 632+3, # kRed+3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ttH_hww, -} - - -# Htautau - -plot['ggH_htt'] = { - 'color' : 632, # kRed - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggH_htt, -} - -plot['qqH_htt'] = { - 'color' : 632+1, # kRed+1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_qqH_htt, -} - -plot['ZH_htt'] = { - 'color' : 632+3, # kRed+3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ZH_htt, -} - -plot['WH_htt_plus'] = { - 'color' : 632+2, # kRed+2 - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_htt_plus, -} - -plot['WH_htt_minus'] = { - 'color' : 632+2, # kRed+2 - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_htt_minus, -} - - -######## -# Fake # -######## - -plot['Fake_em'] = { - 'color' : 921, # kGray + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['Fake_ee'] = { - 'color' : 921, # kGray + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['Fake_mm'] = { - 'color' : 921, # kGray + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -# plot['Fake'] = { -# 'color' : 921, # kGray + 1 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : 1.0 -# } - -######## -# Data # -######## - -plot['DATA'] = { - 'nameHR' : 'Data', - 'color' : 1 , - 'isSignal' : 0, - 'isData' : 1, - 'isBlind' : 0, -} - - -# Define legend - -legend = {} - -legend['lumi'] = 'L = 16.8 fb^{-1}' -legend['sqrt'] = '#sqrt{s} = 13 TeV' diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_mm_CR/structure.py b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_mm_CR/structure.py deleted file mode 100644 index 56b62645..00000000 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_mm_CR/structure.py +++ /dev/null @@ -1,202 +0,0 @@ -# structure configuration for datacard - -# keys here must match keys in samples.py - -signal_normalization = 10.0 - -# BTag normalization factors -# Cut = hww2l2v_13TeV_samesign_2j -scale_histo_ttH_hww = 0.617010001941/0.446976799456 # 1.38040722179 -scale_histo_WW = 1.18766327892/1.11941960177 # 1.06096344663 -scale_histo_DY = 2.73201114062/0.608771954656 # 4.48774146004 -scale_histo_WZ = 14.3395874219/14.5601910428 # 0.984848851212 -scale_histo_Wg = 14.1373403782/13.3726960287 # 1.05717952071 -scale_histo_Zg = 1.52588834242/1.44067413887 # 1.05914883959 -scale_histo_Vg = (14.1373403782+1.52588834242)/(13.3726960287+1.44067413887) -scale_histo_WgS = 5.08787522305/4.79282588245 # 1.06156062161 -scale_histo_ZgS = 1.15543489932/0.954033381473 # 1.21110531535 -scale_histo_VgS = (5.08787522305+1.15543489932)/(4.79282588245+0.954033381473) -scale_histo_ZH_htt = 0.0461453275357/0.0465742645873 # 0.990790256048 -scale_histo_ggZH_hww = 0.0297800727078/0.0349759598491 # 0.851444044317 -scale_histo_qqH_hww = 0.0075359367047/0.0066903584339 # 1.12638758882 -scale_histo_ZZ = 0.495265502014/0.498023693388 # 0.994461726599 -scale_histo_ggH_hww = 0.0441757111415/0.0460026087971 # 0.960287085811 -scale_histo_WH_htt_minus = 0.0941584918584/0.0962440831445 # 0.978330186979 -scale_histo_VVV = 1.01443537458/1.06235296784 # 0.9548948469 -scale_histo_WH_hww_plus = 0.649373521985/0.644823292629 # 1.0070565524 -scale_histo_ggH_htt = 0.0/1 # 0.0 -scale_histo_qqH_htt = 0.0/1 # 0.0 -scale_histo_ggWW = 0.072279298858/0.069415504322 # 1.04125583418 -scale_histo_top = 34.3826934095/25.3486171412 # 1.35639325877 -scale_histo_WWewk = 0.00912821559271/0.00909789799107 # 1.00333237432 -scale_histo_ZH_hww = 0.100156164997/0.0990130825874 # 1.01154476136 -scale_histo_WH_hww_minus = 0.371555178345/0.369464620919 # 1.00565834266 -scale_histo_WH_htt_plus = 0.1320381988/0.133786809382 # 0.986929873051 - -structure = {} - -# structure['DY'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_DY, -# } - -# structure['top'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_top, -# } - -# structure['WW'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_WW, -# } - -# structure['WWewk'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_WWewk, -# } - -# structure['ggWW'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_ggWW, -# } - - -structure['Vg'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_Vg, -} - -structure['VgS'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_VgS, -} - -structure['WZ'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WZ * 1.138 # NLO -> NNLO k-factor -} - -structure['ZZ'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZZ, -} - -structure['VVV'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_VVV, -} - - -# Higgs -structure['ggH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ggH_hww, -} - -structure['qqH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_qqH_hww, -} - -structure['ZH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZH_hww, -} - -structure['ggZH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ggZH_hww, -} - -structure['WH_hww_plus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_hww_plus*signal_normalization, -} - -structure['WH_hww_minus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_hww_minus*signal_normalization, -} - -structure['ttH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ttH_hww, -} - -structure['ggH_htt'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ggH_htt, -} - -structure['qqH_htt'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_qqH_htt, -} - -structure['ZH_htt'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZH_htt, -} - -structure['WH_htt_plus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_htt_plus*signal_normalization, -} - -structure['WH_htt_minus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_htt_minus*signal_normalization, -} - - -# Fakes -structure['Fake_ee'] = { - 'isSignal' : 0, - 'isData' : 0, -} - -structure['Fake_mm'] = { - 'isSignal' : 0, - 'isData' : 0, -} - -structure['Fake_em'] = { - 'isSignal' : 0, - 'isData' : 0, -} - - -# Data-driven charge flip estimation -structure['ChargeFlip'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : 0.5, -} - -# Data -structure['DATA'] = { - 'isSignal' : 0, - 'isData' : 1 -} From 2609a40e206317ec348d506f8758adea3d709b8d Mon Sep 17 00:00:00 2001 From: ntrevisa Date: Thu, 28 Aug 2025 18:17:19 +0200 Subject: [PATCH 34/44] WH3l 2016noHIPM using new fake rates --- .../UL/2016noHIPM_v9/WHSS/DY_OS_CR/aliases.py | 84 +++++---- .../WHSS/DY_OS_CR/configuration.py | 9 +- .../UL/2016noHIPM_v9/WHSS/DY_OS_CR/cuts.py | 28 +-- .../UL/2016noHIPM_v9/WHSS/DY_OS_CR/plot.py | 64 +------ .../UL/2016noHIPM_v9/WHSS/DY_OS_CR/samples.py | 9 + .../2016noHIPM_v9/WHSS/DY_OS_CR/structure.py | 14 +- .../UL/2016noHIPM_v9/WHSS/aliases.py | 79 ++++---- .../UL/2016noHIPM_v9/WHSS/configuration.py | 10 +- .../WHSS/configuration_1j/configuration.py | 10 +- .../WHSS/configuration_1j/cuts.py | 12 +- .../WHSS/configuration_1j_mm/configuration.py | 10 +- .../WHSS/configuration_1j_mm/cuts.py | 6 +- .../WHSS/configuration_2j/configuration.py | 10 +- .../WHSS/configuration_2j/cuts.py | 12 +- .../WHSS/configuration_2j_mm/configuration.py | 10 +- .../WHSS/configuration_2j_mm/cuts.py | 6 +- .../UL/2016noHIPM_v9/WHSS/cuts.py | 84 +++------ .../UL/2016noHIPM_v9/WHSS/do_datacards.sh | 20 -- .../UL/2016noHIPM_v9/WHSS/do_plots.sh | 20 -- .../UL/2016noHIPM_v9/WHSS/nuisances.py | 176 ++---------------- .../UL/2016noHIPM_v9/WHSS/plot.py | 64 +------ .../UL/2016noHIPM_v9/WHSS/samples.py | 9 + .../UL/2016noHIPM_v9/WHSS/structure.py | 14 +- 23 files changed, 253 insertions(+), 507 deletions(-) diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/DY_OS_CR/aliases.py b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/DY_OS_CR/aliases.py index 78b8843b..4d4435e2 100644 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/DY_OS_CR/aliases.py +++ b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/DY_OS_CR/aliases.py @@ -3,7 +3,6 @@ import inspect # /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/DY_OS_CR - configurations = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file configurations = os.path.dirname(configurations) # DY_OS_CR configurations = os.path.dirname(configurations) # WHSS @@ -35,112 +34,119 @@ # ttHMVA SFs and uncertainties aliases['LepWPttHMVASF'] = { - 'linesToAdd' : ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH = ttHMVASF(\"2016noHIPM\", 2, \"all\", \"nominal\");')"], 'expr' : 'ttH(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc, } aliases['LepWPttHMVASFEleUp'] = { - 'linesToAdd' : ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_EleUp = ttHMVASF(\"2016noHIPM\", 2, \"all\", \"eleUp\");')"], 'expr' : 'ttH_EleUp(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc, } aliases['LepWPttHMVASFEleDown'] = { - 'linesToAdd' : ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_EleDown = ttHMVASF(\"2016noHIPM\", 2, \"all\", \"eleDown\");')"], 'expr' : 'ttH_EleDown(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc, } aliases['LepWPttHMVASFMuUp'] = { - 'linesToAdd' : ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_MuUp = ttHMVASF(\"2016noHIPM\", 2, \"all\", \"muUp\");')"], 'expr' : 'ttH_MuUp(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc, } aliases['LepWPttHMVASFMuDown'] = { - 'linesToAdd' : ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_MuDown = ttHMVASF(\"2016noHIPM\", 2, \"all\", \"muDown\");')"], 'expr' : 'ttH_MuDown(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc, } +# Conept +aliases['Lepton_conept'] = { + 'expr': 'LeptonConePt(Lepton_pt, Lepton_pdgId, Lepton_electronIdx, Lepton_muonIdx, Electron_jetRelIso, Muon_jetRelIso)', + 'linesToAdd': [f'#include "{configurations}/macros/LeptonConePt_class.cc"'], + 'samples': mc + ['Fake', 'DATA', 'DATA_unprescaled'] +} + # Fake leptons transfer factor aliases['fakeW'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"nominal\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"nominal\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'], } # And variations - already divided by central values in formulas ! aliases['fakeWEleUp'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleUp = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"EleUp\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader_EleUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleUp = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"EleUp\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_EleUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'], } aliases['fakeWEleDown'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleDown = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"EleDown\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader_EleDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleDown = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"EleDown\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_EleDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'], } aliases['fakeWMuUp'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuUp = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"MuUp\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader_MuUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuUp = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"MuUp\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_MuUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'], } aliases['fakeWMuDown'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuDown = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"MuDown\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader_MuDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuDown = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"MuDown\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_MuDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'], } aliases['fakeWStatEleUp'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleUp = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"StatEleUp\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader_StatEleUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleUp = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"StatEleUp\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_StatEleUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'], } aliases['fakeWStatEleDown'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleDown = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"StatEleDown\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader_StatEleDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleDown = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"StatEleDown\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_StatEleDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'], } aliases['fakeWStatMuUp'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuUp = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"StatMuUp\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader_StatMuUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuUp = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"StatMuUp\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_StatMuUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'], } aliases['fakeWStatMuDown'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuDown = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"StatMuDown\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader_StatMuDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuDown = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"StatMuDown\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_StatMuDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'], } # Charge-flip efficiencies and uncertainties aliases['ttHMVA_eff_flip_2l'] = { - 'linesToAdd' : ['#include "%s/macros/flipper_eff_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/flipper_eff_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('flipper_eff flipper = flipper_eff(\"UL_2016noHIPM\", 2, \"Total_SF\", \"false\");')"], - 'expr' : 'flipper(Lepton_pt, Lepton_eta, Lepton_pdgId)', + 'expr' : 'flipper(Lepton_conept, Lepton_eta, Lepton_pdgId)', 'samples' : mc + ['DATA','Fake'], } aliases['ttHMVA_eff_err_flip_2l'] = { - 'linesToAdd' : ['#include "%s/macros/flipper_eff_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/flipper_eff_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('flipper_eff flipper_unc = flipper_eff(\"UL_2016noHIPM\", 2, \"Total_SF\", \"false\");')"], - 'expr' : 'flipper_unc(Lepton_pt, Lepton_eta, Lepton_pdgId)', + 'expr' : 'flipper_unc(Lepton_conept, Lepton_eta, Lepton_pdgId)', 'samples' : mc + ['DATA','Fake'], } @@ -326,8 +332,8 @@ # Evaluate BDT discriminant aliases['BDT_WHSS_TopSemileptonic_v9'] = { - 'linesToAdd' : ['#include "%s/macros/BDT_WHSS_TopSemileptonic_v9_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('BDT_WHSS_TopSemileptonic_v9 BDT_WHSS = BDT_WHSS_TopSemileptonic_v9(\"BDTG_6\",\"{0}/data/BDT/2016noHIPM/WHSS/weights/TMVAClassification_BDTG_6.weights.xml\");')".format(configurations)], + 'linesToAdd' : [f'#include "{configurations}/macros/BDT_WHSS_TopSemileptonic_v9_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('BDT_WHSS_TopSemileptonic_v9 BDT_WHSS = BDT_WHSS_TopSemileptonic_v9(\"BDTG_6\",\"{configurations}/data/BDT/2016noHIPM/WHSS/weights/TMVAClassification_BDTG_6.weights.xml\");')"], 'expr' : 'BDT_WHSS(mll,mjj,mtw1,mtw2,ptll,mlljj20_whss,PuppiMET_pt,dphill,dphijj,dphillmet,dphilmet2,dphijet1met,CleanJet_pt,Jet_btagDeepB,CleanJet_jetIdx)', 'samples' : mc + ['DATA','Fake'], } diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/DY_OS_CR/configuration.py b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/DY_OS_CR/configuration.py index 5bc283dd..735d061f 100644 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/DY_OS_CR/configuration.py +++ b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/DY_OS_CR/configuration.py @@ -1,5 +1,10 @@ # Configuration file for charge asymmetry WHSS analysis using the UL 2016noHIPM dataset +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' + # Tag used to identify the configuration folder version tag = 'WHSS_OSCR_2016noHIPM_v9_chargeAsymmetry_Mu82_EleUL90' @@ -10,7 +15,9 @@ outputFile = "mkShapes__{}.root".format(tag) # Path to ouput folder -outputFolder = "../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +if site == 'kit': + outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" # Path to batch folder (used for condor submission) batchFolder = "condor" diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/DY_OS_CR/cuts.py b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/DY_OS_CR/cuts.py index a713fece..34e691da 100644 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/DY_OS_CR/cuts.py +++ b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/DY_OS_CR/cuts.py @@ -21,10 +21,10 @@ 'pt2ge20' : 'abs(mll-91.2)>15 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # OUT Z-peak 'SS_CR_pt2ge20' : 'abs(mll-91.2)>15 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', # OUT Z-peak SS CR --> inverting detall cut 'DYeeCR_pt2ge20' : 'abs(mll-91.2)<=15 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # IN Z-peak - # Sub-leading lepton pT < 20 GeV - 'pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # OUT Z-peak - 'SS_CR_pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', # OUT Z-peak SS CR --> inverting detall cut - 'DYeeCR_pt2lt20' : 'abs(mll-91.2)<=15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # IN Z-peak + # # Sub-leading lepton pT < 20 GeV + # 'pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # OUT Z-peak + # 'SS_CR_pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', # OUT Z-peak SS CR --> inverting detall cut + # 'DYeeCR_pt2lt20' : 'abs(mll-91.2)<=15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # IN Z-peak } } @@ -36,10 +36,10 @@ 'pt2ge20' : 'abs(mll-91.2)>15 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # OUT Z-peak 'SS_CR_pt2ge20' : 'abs(mll-91.2)>15 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', # OUT Z-peak SS CR --> inverting detall cut 'DYeeCR_pt2ge20' : 'abs(mll-91.2)<=15 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # IN Z-peak - # Sub-leading lepton pT < 20 GeV - 'pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # OUT Z-peak - 'SS_CR_pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', # OUT Z-peak SS CR --> inverting detall cut - 'DYeeCR_pt2lt20' : 'abs(mll-91.2)<=15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # IN Z-peak + # # Sub-leading lepton pT < 20 GeV + # 'pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # OUT Z-peak + # 'SS_CR_pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', # OUT Z-peak SS CR --> inverting detall cut + # 'DYeeCR_pt2lt20' : 'abs(mll-91.2)<=15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # IN Z-peak } } @@ -52,9 +52,9 @@ # Sub-leading lepton pT >= 20 GeV 'pt2ge20' : 'abs(mll-91.2)>15 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # OUT Z-peak 'SS_CR_pt2ge20' : 'abs(mll-91.2)>15 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', # OUT Z-peak SS CR --> inverting detall cut - # Sub-leading lepton pT < 20 GeV - 'pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # OUT Z-peak - 'SS_CR_pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', # OUT Z-peak SS CR --> inverting detall cut + # # Sub-leading lepton pT < 20 GeV + # 'pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # OUT Z-peak + # 'SS_CR_pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', # OUT Z-peak SS CR --> inverting detall cut } } @@ -65,9 +65,9 @@ # Sub-leading lepton pT >= 20 GeV 'pt2ge20' : 'abs(mll-91.2)>15 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # OUT Z-peak 'SS_CR_pt2ge20' : 'abs(mll-91.2)>15 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', # OUT Z-peak SS CR --> inverting detall cut - # Sub-leading lepton pT < 20 GeV - 'pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # OUT Z-peak - 'SS_CR_pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', # OUT Z-peak SS CR --> inverting detall cut + # # Sub-leading lepton pT < 20 GeV + # 'pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # OUT Z-peak + # 'SS_CR_pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', # OUT Z-peak SS CR --> inverting detall cut } } diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/DY_OS_CR/plot.py b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/DY_OS_CR/plot.py index ca33fce6..19b5ac48 100644 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/DY_OS_CR/plot.py +++ b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/DY_OS_CR/plot.py @@ -40,46 +40,18 @@ 'samples' : ['WZ'] } -# groupPlot['Vg'] = { -# 'nameHR' : "V#gamma", -# 'isSignal' : 0, -# 'color' : 810, # kOrange + 10 -# 'samples' : ['Wg','Zg'] -# } - -groupPlot['Zg'] = { - 'nameHR' : "Z#gamma", +groupPlot['Vg'] = { + 'nameHR' : "V#gamma", 'isSignal' : 0, 'color' : 810, # kOrange + 10 - 'samples' : ['Zg'] -} - -groupPlot['Wg'] = { - 'nameHR' : "W#gamma", - 'isSignal' : 0, - 'color' : 859, - 'samples' : ['Wg'] -} - -# groupPlot['VgS'] = { -# 'nameHR' : "V#gamma*", -# 'isSignal' : 0, -# 'color' : 412, # kGreen - 9 -# 'samples' : ['ZgS','WgS'] -# } - -groupPlot['WgS'] = { - 'nameHR' : "W#gamma*", - 'isSignal' : 0, - 'color' : 409, # kGreen - 9 - 'samples' : ['WgS'] + 'samples' : ['Vg'] } -groupPlot['ZgS'] = { - 'nameHR' : "Z#gamma*", +groupPlot['VgS'] = { + 'nameHR' : "V#gamma*", 'isSignal' : 0, 'color' : 617, - 'samples' : ['ZgS'] + 'samples' : ['VgS'] } groupPlot['Higgs'] = { @@ -116,32 +88,16 @@ 'scale' : 1.0, } -plot['Zg'] = { - 'nameHR' : 'Zg', +plot['Vg'] = { + 'nameHR' : 'Vg', 'color' : 859, # kAzure -1 'isSignal' : 0, 'isData' : 0, 'scale' : 1.0 } -plot['Wg'] = { - 'nameHR' : 'Wg', - 'color' : 859, # kAzure -1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['ZgS'] = { - 'nameHR' : 'ZgS', - 'color' : 617, # kViolet + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['WgS'] = { - 'nameHR' : 'WgS', +plot['VgS'] = { + 'nameHR' : 'VgS', 'color' : 859, # kAzure -1 'isSignal' : 0, 'isData' : 0, diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/DY_OS_CR/samples.py b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/DY_OS_CR/samples.py index 66aaac6e..780559ac 100644 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/DY_OS_CR/samples.py +++ b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/DY_OS_CR/samples.py @@ -18,7 +18,14 @@ ###### Tree base directory for the site ###### ############################################## +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' + treeBaseDir = '/eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano' +if site == 'kit': + treeBaseDir = '/ceph/ntrevisa/HWWNano' limitFiles = -1 def makeMCDirectory(var=''): @@ -35,6 +42,8 @@ def makeMCDirectory(var=''): useXROOTD = True redirector = 'root://eoscms.cern.ch/' +if site == 'kit': + redirector = '' def nanoGetSampleFiles(path, name): _files = s.searchFiles(path, name, redirector=redirector) diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/DY_OS_CR/structure.py b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/DY_OS_CR/structure.py index 2ea8c5ef..37a9fb5d 100644 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/DY_OS_CR/structure.py +++ b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/DY_OS_CR/structure.py @@ -29,22 +29,12 @@ 'isData' : 0, } -structure['Wg'] = { +structure['Vg'] = { 'isSignal' : 0, 'isData' : 0, } -structure['Zg'] = { - 'isSignal' : 0, - 'isData' : 0, -} - -structure['WgS'] = { - 'isSignal' : 0, - 'isData' : 0, -} - -structure['ZgS'] = { +structure['VgS'] = { 'isSignal' : 0, 'isData' : 0, } diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/aliases.py b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/aliases.py index f31f0a2e..c4aee5c0 100644 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/aliases.py +++ b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/aliases.py @@ -35,110 +35,117 @@ # ttHMVA SFs and uncertainties aliases['LepWPttHMVASF'] = { - 'linesToAdd' : ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH = ttHMVASF(\"2016noHIPM\", 2, \"all\", \"nominal\");')"], 'expr' : 'ttH(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc, } aliases['LepWPttHMVASFEleUp'] = { - 'linesToAdd' : ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_EleUp = ttHMVASF(\"2016noHIPM\", 2, \"all\", \"eleUp\");')"], 'expr' : 'ttH_EleUp(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc, } aliases['LepWPttHMVASFEleDown'] = { - 'linesToAdd' : ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_EleDown = ttHMVASF(\"2016noHIPM\", 2, \"all\", \"eleDown\");')"], 'expr' : 'ttH_EleDown(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc, } aliases['LepWPttHMVASFMuUp'] = { - 'linesToAdd' : ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_MuUp = ttHMVASF(\"2016noHIPM\", 2, \"all\", \"muUp\");')"], 'expr' : 'ttH_MuUp(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc, } aliases['LepWPttHMVASFMuDown'] = { - 'linesToAdd' : ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_MuDown = ttHMVASF(\"2016noHIPM\", 2, \"all\", \"muDown\");')"], 'expr' : 'ttH_MuDown(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc, } +# Conept +aliases['Lepton_conept'] = { + 'expr': 'LeptonConePt(Lepton_pt, Lepton_pdgId, Lepton_electronIdx, Lepton_muonIdx, Electron_jetRelIso, Muon_jetRelIso)', + 'linesToAdd': [f'#include "{configurations}/macros/LeptonConePt_class.cc"'], + 'samples': mc + ['Fake', 'DATA', 'DATA_unprescaled'] +} + # Fake leptons transfer factor aliases['fakeW'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"nominal\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"nominal\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'], } # And variations - already divided by central values in formulas ! aliases['fakeWEleUp'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleUp = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"EleUp\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader_EleUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleUp = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"EleUp\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_EleUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'], } aliases['fakeWEleDown'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleDown = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"EleDown\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader_EleDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleDown = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"EleDown\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_EleDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'], } aliases['fakeWMuUp'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuUp = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"MuUp\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader_MuUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuUp = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"MuUp\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_MuUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'], } aliases['fakeWMuDown'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuDown = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"MuDown\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader_MuDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuDown = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"MuDown\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_MuDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'], } aliases['fakeWStatEleUp'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleUp = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"StatEleUp\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader_StatEleUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleUp = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"StatEleUp\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_StatEleUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'], } aliases['fakeWStatEleDown'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleDown = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"StatEleDown\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader_StatEleDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleDown = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"StatEleDown\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_StatEleDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'], } aliases['fakeWStatMuUp'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuUp = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"StatMuUp\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader_StatMuUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuUp = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"StatMuUp\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_StatMuUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'], } aliases['fakeWStatMuDown'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuDown = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"StatMuDown\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader_StatMuDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuDown = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"StatMuDown\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_StatMuDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'], } # Charge-flip efficiencies and uncertainties aliases['ttHMVA_eff_flip_2l'] = { - 'linesToAdd' : ['#include "%s/macros/flipper_eff_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/flipper_eff_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('flipper_eff flipper = flipper_eff(\"UL_2016noHIPM\", 2, \"Total_SF\", \"false\");')"], 'expr' : 'flipper(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : ['DY','ChargeFlip'], } aliases['ttHMVA_eff_err_flip_2l'] = { - 'linesToAdd' : ['#include "%s/macros/flipper_eff_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/flipper_eff_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('flipper_eff flipper_unc = flipper_eff(\"UL_2016noHIPM\", 2, \"Total_SF\", \"false\");')"], 'expr' : 'flipper_unc(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : ['DY','ChargeFlip'], @@ -326,8 +333,8 @@ # Evaluate BDT discriminant aliases['BDT_WHSS_TopSemileptonic_v9'] = { - 'linesToAdd' : ['#include "%s/macros/BDT_WHSS_TopSemileptonic_v9_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('BDT_WHSS_TopSemileptonic_v9 BDT_WHSS = BDT_WHSS_TopSemileptonic_v9(\"BDTG_6\",\"{0}/data/BDT/2016noHIPM/WHSS/weights/TMVAClassification_BDTG_6.weights.xml\");')".format(configurations)], + 'linesToAdd' : [f'#include "{configurations}/macros/BDT_WHSS_TopSemileptonic_v9_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('BDT_WHSS_TopSemileptonic_v9 BDT_WHSS = BDT_WHSS_TopSemileptonic_v9(\"BDTG_6\",\"{configurations}/data/BDT/2016noHIPM/WHSS/weights/TMVAClassification_BDTG_6.weights.xml\");')"], 'expr' : 'BDT_WHSS(mll,mjj,mtw1,mtw2,ptll,mlljj20_whss,PuppiMET_pt,dphill,dphijj,dphillmet,dphilmet2,dphijet1met,CleanJet_pt,Jet_btagDeepB,CleanJet_jetIdx)', 'samples' : mc + ['DATA','Fake'], } diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration.py b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration.py index 230705d6..e6b0bcdd 100644 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration.py +++ b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration.py @@ -2,8 +2,12 @@ import sys,inspect -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/ +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/ configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file configurations_nuisance = os.path.dirname(configurations_nuisance) # WHSS configurations_nuisance = os.path.dirname(configurations_nuisance) # 2016noHIPM_v9 @@ -19,7 +23,9 @@ outputFile = "mkShapes__{}.root".format(tag) # Path to ouput folder -outputFolder = "../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +if site == 'kit': + outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" # Path to batch folder (used for condor submission) batchFolder = "condor" diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j/configuration.py b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j/configuration.py index 96b817b0..f1cf9016 100644 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j/configuration.py +++ b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j/configuration.py @@ -2,8 +2,12 @@ import sys,inspect -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file configurations_nuisance = os.path.dirname(configurations_nuisance) # configuration_1j configurations_nuisance = os.path.dirname(configurations_nuisance) # WHSS @@ -20,7 +24,9 @@ outputFile = "plots_WHSS_2016noHIPM_v9_chargeAsymmetry_Mu82_EleUL90_DYflip_data.root" # "mkShapes__{}.root".format(tag) # Path to ouput folder -outputFolder = "../../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +if site == 'kit': + outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" # Path to batch folder (used for condor submission) batchFolder = "condor" diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j/cuts.py b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j/cuts.py index 7b309dfe..626f7ef3 100644 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j/cuts.py +++ b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j/cuts.py @@ -23,9 +23,9 @@ # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', 'minus_pt2ge20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - 'minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # 'minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', } } @@ -36,9 +36,9 @@ # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', 'minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', } } diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_mm/configuration.py b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_mm/configuration.py index 196b32b2..4fa09bad 100644 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_mm/configuration.py +++ b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_mm/configuration.py @@ -2,8 +2,12 @@ import sys,inspect -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_mm +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_mm configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file configurations_nuisance = os.path.dirname(configurations_nuisance) # configuration_1j_mm configurations_nuisance = os.path.dirname(configurations_nuisance) # WHSS @@ -20,7 +24,9 @@ outputFile = "plots_WHSS_2016noHIPM_v9_chargeAsymmetry_Mu82_EleUL90_DYflip_data.root" # "mkShapes__{}.root".format(tag) # Path to ouput folder -outputFolder = "../../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +if site == 'kit': + outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" # Path to batch folder (used for condor submission) batchFolder = "condor" diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_mm/cuts.py b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_mm/cuts.py index ff47c1bc..63f4fa98 100644 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_mm/cuts.py +++ b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_1j_mm/cuts.py @@ -23,9 +23,9 @@ # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', 'minus_pt2ge20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - 'minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # 'minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', } } diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j/configuration.py b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j/configuration.py index a79253ed..728b1b85 100644 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j/configuration.py +++ b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j/configuration.py @@ -2,8 +2,12 @@ import sys,inspect -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file configurations_nuisance = os.path.dirname(configurations_nuisance) # configuration_2j configurations_nuisance = os.path.dirname(configurations_nuisance) # WHSS @@ -20,7 +24,9 @@ outputFile = "plots_WHSS_2016noHIPM_v9_chargeAsymmetry_Mu82_EleUL90_DYflip_data.root" # "mkShapes__{}.root".format(tag) # Path to ouput folder -outputFolder = "../../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +if site == 'kit': + outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" # Path to batch folder (used for condor submission) batchFolder = "condor" diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j/cuts.py b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j/cuts.py index c286ef97..fe084d7a 100644 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j/cuts.py +++ b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j/cuts.py @@ -23,9 +23,9 @@ # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', 'minus_pt2ge20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - 'minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # 'minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', } } @@ -36,9 +36,9 @@ # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', 'minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', } } diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_mm/configuration.py b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_mm/configuration.py index 049f8a9c..6e9af06d 100644 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_mm/configuration.py +++ b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_mm/configuration.py @@ -2,8 +2,12 @@ import sys,inspect -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_mm +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_mm configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file configurations_nuisance = os.path.dirname(configurations_nuisance) # configuration_2j_mm configurations_nuisance = os.path.dirname(configurations_nuisance) # WHSS @@ -20,7 +24,9 @@ outputFile = "plots_WHSS_2016noHIPM_v9_chargeAsymmetry_Mu82_EleUL90_DYflip_data.root" # "mkShapes__{}.root".format(tag) # Path to ouput folder -outputFolder = "../../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +if site == 'kit': + outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" # Path to batch folder (used for condor submission) batchFolder = "condor" diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_mm/cuts.py b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_mm/cuts.py index 8f7555b1..6b6e1e4d 100644 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_mm/cuts.py +++ b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/configuration_2j_mm/cuts.py @@ -23,9 +23,9 @@ # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', 'minus_pt2ge20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - 'minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # 'minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', } } diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/cuts.py b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/cuts.py index 615073de..1e17f060 100644 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/cuts.py +++ b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/cuts.py @@ -22,15 +22,9 @@ # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', 'minus_pt2ge20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - 'minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT >= 20 GeV) - 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT < 20 GeV) - 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # 'minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', } } @@ -41,15 +35,9 @@ # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', 'minus_pt2ge20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - 'minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT >= 20 GeV) - 'SS_CR_plus_pt2ge20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2ge20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT < 20 GeV) - 'SS_CR_plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # 'minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', } } @@ -60,15 +48,9 @@ # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', 'minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT >= 20 GeV) - 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT < 20 GeV) - 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', } } @@ -82,15 +64,9 @@ # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', 'minus_pt2ge20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - 'minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT >= 20 GeV) - 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT < 20 GeV) - 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # 'minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', } } @@ -101,15 +77,9 @@ # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', 'minus_pt2ge20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - 'minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT >= 20 GeV) - 'SS_CR_plus_pt2ge20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2ge20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT < 20 GeV) - 'SS_CR_plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # 'minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', } } @@ -120,15 +90,9 @@ # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', 'minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT >= 20 GeV) - 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT < 20 GeV) - 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', } } @@ -150,9 +114,9 @@ # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20', 'minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20', - 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20', + # 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20', } } @@ -163,9 +127,9 @@ # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20', 'minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20', - 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20', + # 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20', } } diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/do_datacards.sh b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/do_datacards.sh index 9b334dff..b3b6c2f3 100644 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/do_datacards.sh +++ b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/do_datacards.sh @@ -5,37 +5,17 @@ mkShapesRDF -c 1 mkDatacards --outputDirDatacard ../datacards_original_signal_scale --skipMissingNuisance cd - -cd configuration_1j_CR -mkShapesRDF -c 1 -mkDatacards --outputDirDatacard ../datacards_original_signal_scale --skipMissingNuisance -cd - - cd configuration_1j_mm mkShapesRDF -c 1 mkDatacards --outputDirDatacard ../datacards_original_signal_scale --skipMissingNuisance cd - -cd configuration_1j_mm_CR -mkShapesRDF -c 1 -mkDatacards --outputDirDatacard ../datacards_original_signal_scale --skipMissingNuisance -cd - - cd configuration_2j mkShapesRDF -c 1 mkDatacards --outputDirDatacard ../datacards_original_signal_scale --skipMissingNuisance cd - -cd configuration_2j_CR -mkShapesRDF -c 1 -mkDatacards --outputDirDatacard ../datacards_original_signal_scale --skipMissingNuisance -cd - - cd configuration_2j_mm mkShapesRDF -c 1 mkDatacards --outputDirDatacard ../datacards_original_signal_scale --skipMissingNuisance cd - - -cd configuration_2j_mm_CR -mkShapesRDF -c 1 -mkDatacards --outputDirDatacard ../datacards_original_signal_scale --skipMissingNuisance -cd - diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/do_plots.sh b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/do_plots.sh index 6408a145..bfbcd42d 100644 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/do_plots.sh +++ b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/do_plots.sh @@ -17,41 +17,21 @@ mkShapesRDF -c 1 mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png cd - -cd configuration_1j_CR -mkShapesRDF -c 1 -mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png -cd - - cd configuration_1j_mm mkShapesRDF -c 1 mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png cd - -cd configuration_1j_mm_CR -mkShapesRDF -c 1 -mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png -cd - - cd configuration_2j mkShapesRDF -c 1 mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png cd - -cd configuration_2j_CR -mkShapesRDF -c 1 -mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png -cd - - cd configuration_2j_mm mkShapesRDF -c 1 mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png cd - -cd configuration_2j_mm_CR -mkShapesRDF -c 1 -mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png -cd - - cp ~/index.php plots_WHSS_2016noHIPM_v9_chargeAsymmetry_Mu82_EleUL90/ if [ "$DATE" != "" ]; then diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/nuisances.py b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/nuisances.py index e2dc8b23..c1015375 100644 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/nuisances.py +++ b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/nuisances.py @@ -59,11 +59,13 @@ def makeMCDirectory(var=''): #### FAKES -fake_syst_endcap = ['1.0*(abs(Lepton_eta[1])<=1.4) + 1.3*(abs(Lepton_eta[1])>1.4)', - '1.0*(abs(Lepton_eta[1])<=1.4) + 1.0/1.3*(abs(Lepton_eta[1])>1.4)'] -fake_syst_barrel = [' 1.3*(abs(Lepton_eta[1])<=1.4) + 1.0*(abs(Lepton_eta[1])>1.4)', - '1.0/1.3*(abs(Lepton_eta[1])<=1.4) + 1.0*(abs(Lepton_eta[1])>1.4)'] +# Systematic uncertainty split into barrel and endcap, and per final state: 10% per bin +fake_syst_endcap = ['1.0*(abs(Lepton_eta[1])<=1.4) + 1.1*(abs(Lepton_eta[1])>1.4)', + '1.0*(abs(Lepton_eta[1])<=1.4) + 1.0/1.1*(abs(Lepton_eta[1])>1.4)'] + +fake_syst_barrel = [' 1.1*(abs(Lepton_eta[1])<=1.4) + 1.0*(abs(Lepton_eta[1])>1.4)', + '1.0/1.1*(abs(Lepton_eta[1])<=1.4) + 1.0*(abs(Lepton_eta[1])>1.4)'] nuisances['fake_syst_mm_barrel'] = { 'name' : 'CMS_WH_hww_fake_syst_mm_barrel', @@ -122,6 +124,19 @@ def makeMCDirectory(var=''): 'cuts' : [cut for cut in cuts if ('_ee_' in cut)] } +# Overall 30% normalization +nuisances['fake_syst'] = { + 'name' : 'CMS_WH_hww_fake_syst_2016', + 'kind' : 'weight', + 'type' : 'lnN', + 'samples' : { + 'Fake_mm' : '1.3', + 'Fake_em' : '1.3', + 'Fake_ee' : '1.3', + }, +} + +# Statistical and systematic uncertainty on the fake rates nuisances['fake_ele'] = { 'name' : 'CMS_WH_hww_fake_e_2016', 'kind' : 'weight', @@ -622,7 +637,6 @@ def makeMCDirectory(var=''): } # WZ normalization from control region - nuisances['WZ2jnorm'] = { 'name' : 'CMS_hww_WZ3l2jnorm', 'samples' : { @@ -641,158 +655,6 @@ def makeMCDirectory(var=''): 'cuts' : [cut for cut in cuts if '1j' in cut], } -# Nonprompt leptons normalization from control region - split per charge -nuisances['Nonpromptee2jnorm_plus'] = { - 'name' : 'CMS_hww_Nonpromptee2jnorm_plus', - 'samples' : { - 'Fake_ee' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [ - 'hww2l2v_13TeV_WH_SS_ee_2j_plus_pt2ge20', - 'hww2l2v_13TeV_WH_SS_ee_2j_plus_pt2lt20', - 'hww2l2v_13TeV_WH_SS_ee_2j_SS_CR_plus_pt2ge20', - ], -} -nuisances['Nonpromptee2jnorm_minus'] = { - 'name' : 'CMS_hww_Nonpromptee2jnorm_minus', - 'samples' : { - 'Fake_ee' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [ - 'hww2l2v_13TeV_WH_SS_ee_2j_minus_pt2ge20', - 'hww2l2v_13TeV_WH_SS_ee_2j_minus_pt2lt20', - 'hww2l2v_13TeV_WH_SS_ee_2j_SS_CR_minus_pt2ge20', - ], -} - -nuisances['Nonpromptee1jnorm_plus'] = { - 'name' : 'CMS_hww_Nonpromptee1jnorm_plus', - 'samples' : { - 'Fake_ee' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [ - 'hww2l2v_13TeV_WH_SS_ee_1j_plus_pt2ge20', - 'hww2l2v_13TeV_WH_SS_ee_1j_plus_pt2lt20', - 'hww2l2v_13TeV_WH_SS_ee_1j_SS_CR_plus_pt2ge20', - ], -} -nuisances['Nonpromptee1jnorm_minus'] = { - 'name' : 'CMS_hww_Nonpromptee1jnorm_minus', - 'samples' : { - 'Fake_ee' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [ - 'hww2l2v_13TeV_WH_SS_ee_1j_minus_pt2ge20', - 'hww2l2v_13TeV_WH_SS_ee_1j_minus_pt2lt20', - 'hww2l2v_13TeV_WH_SS_ee_1j_SS_CR_minus_pt2ge20', - ], -} - - -nuisances['Nonpromptem2jnorm_plus'] = { - 'name' : 'CMS_hww_Nonpromptem2jnorm_plus', - 'samples' : { - 'Fake_em' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [ - 'hww2l2v_13TeV_WH_SS_em_2j_plus_pt2ge20', - 'hww2l2v_13TeV_WH_SS_em_2j_plus_pt2lt20', - 'hww2l2v_13TeV_WH_SS_em_2j_SS_CR_plus_pt2ge20', - ], -} -nuisances['Nonpromptem2jnorm_minus'] = { - 'name' : 'CMS_hww_Nonpromptem2jnorm_minus', - 'samples' : { - 'Fake_em' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [ - 'hww2l2v_13TeV_WH_SS_em_2j_minus_pt2ge20', - 'hww2l2v_13TeV_WH_SS_em_2j_minus_pt2lt20', - 'hww2l2v_13TeV_WH_SS_em_2j_SS_CR_minus_pt2ge20', - ], -} - -nuisances['Nonpromptem1jnorm_plus'] = { - 'name' : 'CMS_hww_Nonpromptem1jnorm_plus', - 'samples' : { - 'Fake_em' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [ - 'hww2l2v_13TeV_WH_SS_em_1j_plus_pt2ge20', - 'hww2l2v_13TeV_WH_SS_em_1j_plus_pt2lt20', - 'hww2l2v_13TeV_WH_SS_em_1j_SS_CR_plus_pt2ge20', - ], -} -nuisances['Nonpromptem1jnorm_minus'] = { - 'name' : 'CMS_hww_Nonpromptem1jnorm_minus', - 'samples' : { - 'Fake_em' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [ - 'hww2l2v_13TeV_WH_SS_em_1j_norm_pt2ge20', - 'hww2l2v_13TeV_WH_SS_em_1j_norm_pt2lt20', - 'hww2l2v_13TeV_WH_SS_em_1j_SS_CR_norm_pt2ge20', - ], -} - -nuisances['Nonpromptmm2jnorm_plus'] = { - 'name' : 'CMS_hww_Nonpromptmm2jnorm_plus', - 'samples' : { - 'Fake_mm' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [ - 'hww2l2v_13TeV_WH_SS_noZveto_mm_2j_plus_pt2ge20', - 'hww2l2v_13TeV_WH_SS_noZveto_mm_2j_plus_pt2lt20', - 'hww2l2v_13TeV_WH_SS_noZveto_mm_2j_SS_CR_plus_pt2ge20', - ], -} -nuisances['Nonpromptmm2jnorm_minus'] = { - 'name' : 'CMS_hww_Nonpromptmm2jnorm_minus', - 'samples' : { - 'Fake_mm' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [ - 'hww2l2v_13TeV_WH_SS_noZveto_mm_2j_minus_pt2ge20', - 'hww2l2v_13TeV_WH_SS_noZveto_mm_2j_minus_pt2lt20', - 'hww2l2v_13TeV_WH_SS_noZveto_mm_2j_SS_CR_minus_pt2ge20', - ], -} - -nuisances['Nonpromptmm1jnorm_plus'] = { - 'name' : 'CMS_hww_Nonpromptmm1jnorm_plus', - 'samples' : { - 'Fake_mm' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [ - 'hww2l2v_13TeV_WH_SS_noZveto_mm_1j_plus_pt2ge20', - 'hww2l2v_13TeV_WH_SS_noZveto_mm_1j_plus_pt2lt20', - 'hww2l2v_13TeV_WH_SS_noZveto_mm_1j_SS_CR_plus_pt2ge20', - ], -} -nuisances['Nonpromptmm1jnorm_minus'] = { - 'name' : 'CMS_hww_Nonpromptmm1jnorm_minus', - 'samples' : { - 'Fake_mm' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [ - 'hww2l2v_13TeV_WH_SS_noZveto_mm_1j_minus_pt2ge20', - 'hww2l2v_13TeV_WH_SS_noZveto_mm_1j_minus_pt2lt20', - 'hww2l2v_13TeV_WH_SS_noZveto_mm_1j_SS_CR_minus_pt2ge20', - ], -} - # Use the following if you want to apply the automatic combine MC stat nuisances. nuisances['stat'] = { 'type' : 'auto', diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/plot.py b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/plot.py index bb2439c7..65f608c7 100644 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/plot.py +++ b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/plot.py @@ -54,46 +54,18 @@ 'samples' : ['WZ'] } -# groupPlot['Vg'] = { -# 'nameHR' : "V#gamma", -# 'isSignal' : 0, -# 'color' : 810, # kOrange + 10 -# 'samples' : ['Wg','Zg'] -# } - -groupPlot['Zg'] = { - 'nameHR' : "Z#gamma", +groupPlot['Vg'] = { + 'nameHR' : "V#gamma", 'isSignal' : 0, 'color' : 810, # kOrange + 10 - 'samples' : ['Zg'] -} - -groupPlot['Wg'] = { - 'nameHR' : "W#gamma", - 'isSignal' : 0, - 'color' : 859, - 'samples' : ['Wg'] -} - -# groupPlot['VgS'] = { -# 'nameHR' : "V#gamma*", -# 'isSignal' : 0, -# 'color' : 412, # kGreen - 9 -# 'samples' : ['ZgS','WgS'] -# } - -groupPlot['WgS'] = { - 'nameHR' : "W#gamma*", - 'isSignal' : 0, - 'color' : 409, # kGreen - 9 - 'samples' : ['WgS'] + 'samples' : ['Vg'] } -groupPlot['ZgS'] = { - 'nameHR' : "Z#gamma*", +groupPlot['VgS'] = { + 'nameHR' : "V#gamma*", 'isSignal' : 0, 'color' : 617, - 'samples' : ['ZgS'] + 'samples' : ['VgS'] } groupPlot['Higgs'] = { @@ -162,32 +134,16 @@ 'scale' : 1.0 } -plot['Zg'] = { - 'nameHR' : 'Zg', +plot['Vg'] = { + 'nameHR' : 'Vg', 'color' : 859, # kAzure -1 'isSignal' : 0, 'isData' : 0, 'scale' : 1.0 } -plot['Wg'] = { - 'nameHR' : 'Wg', - 'color' : 859, # kAzure -1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['ZgS'] = { - 'nameHR' : 'ZgS', - 'color' : 617, # kViolet + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['WgS'] = { - 'nameHR' : 'WgS', +plot['VgS'] = { + 'nameHR' : 'VgS', 'color' : 859, # kAzure -1 'isSignal' : 0, 'isData' : 0, diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/samples.py b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/samples.py index 8fb54109..37bd928b 100644 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/samples.py +++ b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/samples.py @@ -18,7 +18,14 @@ ###### Tree base directory for the site ###### ############################################## +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' + treeBaseDir = '/eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano' +if site == 'kit': + treeBaseDir = '/ceph/ntrevisa/HWWNano' limitFiles = -1 def makeMCDirectory(var=''): @@ -35,6 +42,8 @@ def makeMCDirectory(var=''): useXROOTD = True redirector = 'root://eoscms.cern.ch/' +if site == 'kit': + redirector = '' def nanoGetSampleFiles(path, name): _files = s.searchFiles(path, name, redirector=redirector) diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/structure.py b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/structure.py index 2ea8c5ef..37a9fb5d 100644 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/structure.py +++ b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WHSS/structure.py @@ -29,22 +29,12 @@ 'isData' : 0, } -structure['Wg'] = { +structure['Vg'] = { 'isSignal' : 0, 'isData' : 0, } -structure['Zg'] = { - 'isSignal' : 0, - 'isData' : 0, -} - -structure['WgS'] = { - 'isSignal' : 0, - 'isData' : 0, -} - -structure['ZgS'] = { +structure['VgS'] = { 'isSignal' : 0, 'isData' : 0, } From aafba451ceae942d71822bf420e1a3cac7fcd3fc Mon Sep 17 00:00:00 2001 From: ntrevisa Date: Thu, 28 Aug 2025 18:18:02 +0200 Subject: [PATCH 35/44] WH3l 2016noHIPM using new fake rates --- .../UL/2016noHIPM_v9/WH3l/aliases.py | 64 ++++++++++--------- .../UL/2016noHIPM_v9/WH3l/configuration.py | 10 ++- .../UL/2016noHIPM_v9/WH3l/nuisances.py | 22 +++++-- .../UL/2016noHIPM_v9/WH3l/plot.py | 44 +++---------- .../UL/2016noHIPM_v9/WH3l/structure.py | 14 +--- 5 files changed, 71 insertions(+), 83 deletions(-) diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WH3l/aliases.py b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WH3l/aliases.py index 9059679b..0cb68207 100644 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WH3l/aliases.py +++ b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WH3l/aliases.py @@ -3,7 +3,6 @@ import inspect # /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/2016noHIPM_v9/WH3l - configurations = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file configurations = os.path.dirname(configurations) # WH3l configurations = os.path.dirname(configurations) # 2016noHIPM_v9 @@ -35,42 +34,49 @@ # ttHMVA SFs and uncertainties aliases['LepWPttHMVASF'] = { - 'linesToAdd' : ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH = ttHMVASF(\"2016noHIPM\", 3, \"all\", \"nominal\");')"], 'expr' : 'ttH(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc } aliases['LepWPttHMVASFEleUp'] = { - 'linesToAdd' : ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_EleUp = ttHMVASF(\"2016noHIPM\", 3, \"all\", \"eleUp\");')"], 'expr' : 'ttH_EleUp(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc } aliases['LepWPttHMVASFEleDown'] = { - 'linesToAdd' : ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_EleDown = ttHMVASF(\"2016noHIPM\", 3, \"all\", \"eleDown\");')"], 'expr' : 'ttH_EleDown(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc } aliases['LepWPttHMVASFMuUp'] = { - 'linesToAdd' : ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_MuUp = ttHMVASF(\"2016noHIPM\", 3, \"all\", \"muUp\");')"], 'expr' : 'ttH_MuUp(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc } aliases['LepWPttHMVASFMuDown'] = { - 'linesToAdd' : ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_MuDown = ttHMVASF(\"2016noHIPM\", 3, \"all\", \"muDown\");')"], 'expr' : 'ttH_MuDown(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc } +# Conept +aliases['Lepton_conept'] = { + 'expr': 'LeptonConePt(Lepton_pt, Lepton_pdgId, Lepton_electronIdx, Lepton_muonIdx, Electron_jetRelIso, Muon_jetRelIso)', + 'linesToAdd': [f'#include "{configurations}/macros/LeptonConePt_class.cc"'], + 'samples': mc + ['Fake', 'DATA', 'DATA_unprescaled'] +} + # Fake leptons transfer factor aliases['fakeW'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"nominal\", 3, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], 'expr': 'fr_reader(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'] @@ -78,53 +84,53 @@ # And variations - already divided by central values in formulas ! aliases['fakeWEleUp'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleUp = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"EleUp\", 3, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleUp = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"EleUp\", 3, \"std\", \"{configurations}\");')"], 'expr': 'fr_reader_EleUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'] } aliases['fakeWEleDown'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleDown = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"EleDown\", 3, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleDown = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"EleDown\", 3, \"std\", \"{configurations}\");')"], 'expr': 'fr_reader_EleDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'] } aliases['fakeWMuUp'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuUp = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"MuUp\", 3, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuUp = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"MuUp\", 3, \"std\", \"{configurations}\");')"], 'expr': 'fr_reader_MuUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'] } aliases['fakeWMuDown'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuDown = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"MuDown\", 3, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuDown = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"MuDown\", 3, \"std\", \"{configurations}\");')"], 'expr': 'fr_reader_MuDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'] } aliases['fakeWStatEleUp'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleUp = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"StatEleUp\", 3, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleUp = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"StatEleUp\", 3, \"std\", \"{configurations}\");')"], 'expr': 'fr_reader_StatEleUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'] } aliases['fakeWStatEleDown'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleDown = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"StatEleDown\", 3, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleDown = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"StatEleDown\", 3, \"std\", \"{configurations}\");')"], 'expr': 'fr_reader_StatEleDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'] } aliases['fakeWStatMuUp'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuUp = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"StatMuUp\", 3, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuUp = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"StatMuUp\", 3, \"std\", \"{configurations}\");')"], 'expr': 'fr_reader_StatMuUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'] } aliases['fakeWStatMuDown'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuDown = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"StatMuDown\", 3, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuDown = fake_rate_reader(\"2016_noHIPM\", \"90\", \"82\", 0.90, 0.82, \"StatMuDown\", 3, \"std\", \"{configurations}\");')"], 'expr': 'fr_reader_StatMuDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'] } @@ -308,22 +314,22 @@ # Evaluate BDT discriminants aliases['BDT_WH3l_OSSF_new_v9'] = { - 'linesToAdd' : ['#include "%s/macros/BDT_WH3l_OSSF_v9_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('BDT_WH3l_OSSF_v9 BDT_WH3l_OSSF = BDT_WH3l_OSSF_v9(\"BDTG4C3\",\"{0}/data/BDT/2016noHIPM/WH3l/OSSF/weights/TMVAClassification_BDTG4C3.weights.xml\");')".format(configurations)], + 'linesToAdd' : [f'#include "{configurations}/macros/BDT_WH3l_OSSF_v9_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('BDT_WH3l_OSSF_v9 BDT_WH3l_OSSF = BDT_WH3l_OSSF_v9(\"BDTG4C3\",\"{configurations}/data/BDT/2016noHIPM/WH3l/OSSF/weights/TMVAClassification_BDTG4C3.weights.xml\");')"], 'expr' : 'BDT_WH3l_OSSF(WH3l_dphilllmet,WH3l_mOSll,WH3l_ptOSll,WH3l_drOSll,WH3l_ZVeto,WH3l_mtlmet,WH3l_dphilmet,WH3l_ptWWW,PuppiMET_pt,Lepton_pt)', 'samples' : mc + ['DATA','Fake'], } aliases['BDT_WH3l_SSSF_new_v9'] = { - 'linesToAdd' : ['#include "%s/macros/BDT_WH3l_SSSF_v9_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('BDT_WH3l_SSSF_v9 BDT_WH3l_SSSF = BDT_WH3l_SSSF_v9(\"BDTG4C3\",\"{0}/data/BDT/2016noHIPM/WH3l/SSSF/weights/TMVAClassification_BDTG4SK01_05shrinkage.weights.xml\");')".format(configurations)], + 'linesToAdd' : [f'#include "{configurations}/macros/BDT_WH3l_SSSF_v9_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('BDT_WH3l_SSSF_v9 BDT_WH3l_SSSF = BDT_WH3l_SSSF_v9(\"BDTG4C3\",\"{configurations}/data/BDT/2016noHIPM/WH3l/SSSF/weights/TMVAClassification_BDTG4SK01_05shrinkage.weights.xml\");')"], 'expr' : 'BDT_WH3l_SSSF(WH3l_dphilllmet,WH3l_mOSll,WH3l_ptOSll,WH3l_drOSll,WH3l_dphilmet,WH3l_ptWWW,PuppiMET_pt,Lepton_pt)', 'samples' : mc + ['DATA','Fake'], } aliases['BDT_WHSS_TopSemileptonic_v9'] = { - 'linesToAdd' : ['#include "%s/macros/BDT_WHSS_TopSemileptonic_v9_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('BDT_WHSS_TopSemileptonic_v9 BDT_WHSS = BDT_WHSS_TopSemileptonic_v9(\"BDTG_6\",\"{0}/data/BDT/2016noHIPM/WHSS/weights/TMVAClassification_BDTG_6.weights.xml\");')".format(configurations)], + 'linesToAdd' : [f'#include "{configurations}/macros/BDT_WHSS_TopSemileptonic_v9_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('BDT_WHSS_TopSemileptonic_v9 BDT_WHSS = BDT_WHSS_TopSemileptonic_v9(\"BDTG_6\",\"{configurations}/data/BDT/2016noHIPM/WHSS/weights/TMVAClassification_BDTG_6.weights.xml\");')"], 'expr' : 'BDT_WHSS(mll,mjj,mtw1,mtw2,ptll,mlljj20_whss,PuppiMET_pt,dphill,dphijj,dphillmet,dphilmet2,dphijet1met,CleanJet_pt,Jet_btagDeepB,CleanJet_jetIdx)', 'samples' : mc + ['DATA','Fake'], } diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WH3l/configuration.py b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WH3l/configuration.py index ad8856f3..3664b776 100644 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WH3l/configuration.py +++ b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WH3l/configuration.py @@ -2,8 +2,12 @@ import sys,inspect -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/2016noHIPM_v9/WH3l/ +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/2016noHIPM_v9/WH3l/ configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file configurations_nuisance = os.path.dirname(configurations_nuisance) # WH3l configurations_nuisance = os.path.dirname(configurations_nuisance) # 2016noHIPM_v9 @@ -19,7 +23,9 @@ outputFile = "mkShapes__{}.root".format(tag) # Path to ouput folder -outputFolder = "../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +if site == 'kit': + outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" # Path to batch folder (used for condor submission) batchFolder = "condor" diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WH3l/nuisances.py b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WH3l/nuisances.py index 76296b81..e6534b91 100644 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WH3l/nuisances.py +++ b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WH3l/nuisances.py @@ -59,11 +59,13 @@ def makeMCDirectory(var=''): #### FAKES -fake_syst_endcap = ['1.0*(abs(Lepton_eta[1])<=1.4) + 1.3*(abs(Lepton_eta[1])>1.4)', - '1.0*(abs(Lepton_eta[1])<=1.4) + 1.0/1.3*(abs(Lepton_eta[1])>1.4)'] -fake_syst_barrel = [' 1.3*(abs(Lepton_eta[1])<=1.4) + 1.0*(abs(Lepton_eta[1])>1.4)', - '1.0/1.3*(abs(Lepton_eta[1])<=1.4) + 1.0*(abs(Lepton_eta[1])>1.4)'] +# Systematic uncertainty split into barrel and endcap, and per final state: 10% per bin +fake_syst_endcap = ['1.0*(abs(Lepton_eta[1])<=1.4) + 1.1*(abs(Lepton_eta[1])>1.4)', + '1.0*(abs(Lepton_eta[1])<=1.4) + 1.0/1.1*(abs(Lepton_eta[1])>1.4)'] + +fake_syst_barrel = [' 1.1*(abs(Lepton_eta[1])<=1.4) + 1.0*(abs(Lepton_eta[1])>1.4)', + '1.0/1.1*(abs(Lepton_eta[1])<=1.4) + 1.0*(abs(Lepton_eta[1])>1.4)'] nuisances['fake_syst_barrel'] = { 'name' : 'CMS_WH_hww_fake_syst_barrel', @@ -82,6 +84,17 @@ def makeMCDirectory(var=''): }, } +# Overall 30% normalization +nuisances['fake_syst'] = { + 'name' : 'CMS_WH_hww_fake_syst_2018', + 'kind' : 'weight', + 'type' : 'lnN', + 'samples' : { + 'Fake' : '1.3', + }, +} + +# Statistical and systematic uncertainty on the fake rates nuisances['fake_ele'] = { 'name' : 'CMS_WH_hww_fake_e_2016', 'kind' : 'weight', @@ -98,6 +111,7 @@ def makeMCDirectory(var=''): 'Fake' : ['fakeWStatEleUp', 'fakeWStatEleDown'] } } + nuisances['fake_mu'] = { 'name' : 'CMS_WH_hww_fake_m_2016', 'kind' : 'weight', diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WH3l/plot.py b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WH3l/plot.py index d703af24..f747921f 100644 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WH3l/plot.py +++ b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WH3l/plot.py @@ -33,32 +33,18 @@ 'samples' : ['VVV'] } -groupPlot['Zg'] = { - 'nameHR' : "Z#gamma", +groupPlot['Vg'] = { + 'nameHR' : "V#gamma", 'isSignal' : 0, 'color' : 810, # kOrange + 10 - 'samples' : ['Zg'] + 'samples' : ['Vg'] } -groupPlot['ZgS'] = { - 'nameHR' : "Z#gamma*", - 'isSignal' : 0, - 'color' : 617, - 'samples' : ['ZgS'] -} - -groupPlot['Wg'] = { - 'nameHR' : "W#gamma", - 'isSignal' : 0, - 'color' : 859, - 'samples' : ['Wg'] -} - -groupPlot['WgS'] = { - 'nameHR' : "W#gamma*", +groupPlot['VgS'] = { + 'nameHR' : "V#gamma*", 'isSignal' : 0, 'color' : 409, # kGreen - 9 - 'samples' : ['WgS'] + 'samples' : ['VgS'] } groupPlot['ZZ'] = { @@ -116,28 +102,14 @@ 'scale' : 1.0 } -plot['Wg'] = { - 'color' : 859, # kAzure -1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['Zg'] = { - 'color' : 859, # kAzure -1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['WgS'] = { +plot['Vg'] = { 'color' : 859, # kAzure -1 'isSignal' : 0, 'isData' : 0, 'scale' : 1.0 } -plot['ZgS'] = { +plot['VgS'] = { 'color' : 617, # kViolet + 1 'isSignal' : 0, 'isData' : 0, diff --git a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WH3l/structure.py b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WH3l/structure.py index 9a4ce9fd..6e7afcc8 100644 --- a/WH_chargeAsymmetry/UL/2016noHIPM_v9/WH3l/structure.py +++ b/WH_chargeAsymmetry/UL/2016noHIPM_v9/WH3l/structure.py @@ -14,22 +14,12 @@ 'isData' : 0 } -structure['Wg'] = { +structure['Vg'] = { 'isSignal' : 0, 'isData' : 0 } -structure['Zg'] = { - 'isSignal' : 0, - 'isData' : 0 -} - -structure['WgS'] = { - 'isSignal' : 0, - 'isData' : 0 -} - -structure['ZgS'] = { +structure['VgS'] = { 'isSignal' : 0, 'isData' : 0 } From 4aeae7bfe3613c94a666c1ad423847dd4a741052 Mon Sep 17 00:00:00 2001 From: ntrevisa Date: Fri, 29 Aug 2025 09:31:36 +0200 Subject: [PATCH 36/44] removing unused fake CR configs --- .../WHSS/configuration_1j_CR/README.md | 17 - .../WHSS/configuration_1j_CR/configuration.py | 99 --- .../WHSS/configuration_1j_CR/cuts.py | 66 -- .../WHSS/configuration_1j_CR/nuisances.py | 654 ------------------ .../WHSS/configuration_1j_CR/plot.py | 356 ---------- .../WHSS/configuration_1j_CR/samples.py | 394 ----------- .../WHSS/configuration_1j_CR/structure.py | 178 ----- .../WHSS/configuration_1j_mm_CR/README.md | 17 - .../configuration_1j_mm_CR/configuration.py | 99 --- .../WHSS/configuration_1j_mm_CR/cuts.py | 37 - .../WHSS/configuration_1j_mm_CR/nuisances.py | 654 ------------------ .../WHSS/configuration_1j_mm_CR/plot.py | 356 ---------- .../WHSS/configuration_1j_mm_CR/structure.py | 203 ------ .../WHSS/configuration_2j_CR/README.md | 17 - .../WHSS/configuration_2j_CR/configuration.py | 99 --- .../WHSS/configuration_2j_CR/cuts.py | 65 -- .../WHSS/configuration_2j_CR/nuisances.py | 654 ------------------ .../WHSS/configuration_2j_CR/plot.py | 356 ---------- .../WHSS/configuration_2j_CR/samples.py | 394 ----------- .../WHSS/configuration_2j_CR/structure.py | 202 ------ .../WHSS/configuration_2j_mm_CR/README.md | 17 - .../configuration_2j_mm_CR/configuration.py | 99 --- .../WHSS/configuration_2j_mm_CR/cuts.py | 37 - .../WHSS/configuration_2j_mm_CR/nuisances.py | 654 ------------------ .../WHSS/configuration_2j_mm_CR/plot.py | 356 ---------- .../WHSS/configuration_2j_mm_CR/structure.py | 203 ------ 26 files changed, 6283 deletions(-) delete mode 100644 WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_CR/README.md delete mode 100644 WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_CR/configuration.py delete mode 100644 WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_CR/cuts.py delete mode 100644 WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_CR/nuisances.py delete mode 100644 WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_CR/plot.py delete mode 100644 WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_CR/samples.py delete mode 100644 WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_CR/structure.py delete mode 100644 WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_mm_CR/README.md delete mode 100644 WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_mm_CR/configuration.py delete mode 100644 WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_mm_CR/cuts.py delete mode 100644 WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_mm_CR/nuisances.py delete mode 100644 WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_mm_CR/plot.py delete mode 100644 WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_mm_CR/structure.py delete mode 100644 WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_CR/README.md delete mode 100644 WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_CR/configuration.py delete mode 100644 WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_CR/cuts.py delete mode 100644 WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_CR/nuisances.py delete mode 100644 WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_CR/plot.py delete mode 100644 WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_CR/samples.py delete mode 100644 WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_CR/structure.py delete mode 100644 WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_mm_CR/README.md delete mode 100644 WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_mm_CR/configuration.py delete mode 100644 WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_mm_CR/cuts.py delete mode 100644 WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_mm_CR/nuisances.py delete mode 100644 WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_mm_CR/plot.py delete mode 100644 WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_mm_CR/structure.py diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_CR/README.md b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_CR/README.md deleted file mode 100644 index ba17b328..00000000 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_CR/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# Configuration for WHSS 1j signal region - -### Plot distributions - -Compile configuration and plot distributions: - - mkShapesRDF -c 1 - - mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png - -### Produce datacards - -Compile configuration and produce datacards: - - mkShapesRDF -c 1 - - mkDatacards --outputDirDatacard ../datacards_original_signal_scale --skipMissingNuisance \ No newline at end of file diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_CR/configuration.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_CR/configuration.py deleted file mode 100644 index b04a44f0..00000000 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_CR/configuration.py +++ /dev/null @@ -1,99 +0,0 @@ -# Configuration file for charge asymmetry WHSS analysis using the UL 2016HIPM dataset - -import sys,inspect - -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_CR - -configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file -configurations_nuisance = os.path.dirname(configurations_nuisance) # configuration_1j_CR -configurations_nuisance = os.path.dirname(configurations_nuisance) # WHSS -configurations_nuisance = os.path.dirname(configurations_nuisance) # 2016HIPM_v9 -configurations_nuisance = os.path.dirname(configurations_nuisance) # UL - -# Tag used to identify the configuration folder version -tag = 'WHSS_2016HIPM_v9_chargeAsymmetry_Mu82_EleUL90' - -# File to use as runner script, default uses mkShapesRDF.shapeAnalysis.runner, otherwise specify path to script -runnerFile = "default" - -# Output file name -outputFile = "plots_WHSS_2016HIPM_v9_chargeAsymmetry_Mu82_EleUL90_DYflip_data.root" # "mkShapes__{}.root".format(tag) - -# Path to ouput folder -outputFolder = "../../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" - -# Path to batch folder (used for condor submission) -batchFolder = "condor" - -# Path to configuration folder (will contain all the compiled configuration files) -configsFolder = "configs" - -# luminosity to normalize to (in 1/fb) -# https://github.com/latinos/LatinoAnalysis/blob/UL_production/NanoGardener/python/data/TrigMaker_cfg.py#L27 (#95 #165) -# 16.802739097 + 1.063261220 + 1.655228036 = 19.521228353 -lumi = 19.52 - -# File with dict of aliases to define -aliasesFile = "../aliases.py" - -# File with dict of variables -variablesFile = "../variables.py" - -# File with dict of cuts -cutsFile = "cuts.py" - -# File with dict of samples -samplesFile = "samples.py" - -# File with dict of samples for plotting -plotFile = 'plot.py' - -# File with dict of structure (used to define processes in combine) -structureFile = "structure.py" - -# Nuisances file for mkDatacards and for mkShape -nuisancesFile = "../nuisances.py" - -# Path to folder where to save plots -plotPath = '../plots_' + tag - -# This lines are executed right before the runner on the condor node -mountEOS = [] - -# List of imports to import when compiling the whole configuration folder, it should not contain imports used by configuration.py -imports = ["os", "glob", ("collections", "OrderedDict"), "ROOT"] - -# List of files to compile -filesToExec = [ - samplesFile, - aliasesFile, - variablesFile, - cutsFile, - plotFile, - nuisancesFile, - structureFile, -] - -# List of variables to keep in the compiled configuration folder -varsToKeep = [ - "batchVars", - "outputFolder", - "batchFolder", - "configsFolder", - "outputFile", - "runnerFile", - "tag", - "samples", - "aliases", - "variables", - ("cuts", {"cuts": "cuts", "preselections": "preselections"}), - ("plot", {"plot": "plot", "groupPlot": "groupPlot", "legend": "legend"}), - "nuisances", - "structure", - "lumi", -] - -# List of variables to keep in the batch submission script (script.py) -batchVars = varsToKeep[varsToKeep.index("samples") :] - -varsToKeep += ['plotPath'] diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_CR/cuts.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_CR/cuts.py deleted file mode 100644 index 9ff759bd..00000000 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_CR/cuts.py +++ /dev/null @@ -1,66 +0,0 @@ -cuts = {} - -# cuts -preselections = 'mll>12 \ - && Lepton_pt[0]>25 \ - && Lepton_pt[1]>10 \ - && (abs(Lepton_pdgId[1])==13 || Lepton_pt[1]>13) \ - && abs(Lepton_eta[0])<2.5 && abs(Lepton_eta[1])<2.5 \ - && bVeto \ - && PuppiMET_pt > 30 \ - && !hole_veto \ - ' - -# Splitting in sub-leading lepton pT -#################################### - -## SS CR 1jet - -# mu-e -cuts['hww2l2v_13TeV_WH_SS_em_1j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)<30 && mlljj20_whss > 50.', - 'categories' : { - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT >= 20 GeV) - 'SS_CR_plus_pt2ge20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2ge20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT < 20 GeV) - 'SS_CR_plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - } -} - -# e-e -cuts['hww2l2v_13TeV_WH_SS_ee_1j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*11) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)<30 && abs(mll-91.2)>15 && mlljj20_whss > 50.', - 'categories' : { - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT >= 20 GeV) - 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT < 20 GeV) - 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - } -} - - -## DY->ee CR - 2 same-sign electrons IN the Z peak. To check the charge-flip probability method to estimate DY in the signal region - -# DY CR 1jet -cuts['hww2l2v_13TeV_WH_SS_DYee_1j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*11) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)<30 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0 && abs(mll-91.2)<15 && mlljj20_whss > 50.', - 'categories' : { - # Sub-leading lepton pT >= 20 GeV - 'plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20', - 'minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20', - 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20', - } -} - -# mlljj20_whss: -# inv_mass of: (jet1, jet2, 2*closest_lep_to_jets) -# jets are considered with pT > 20 GeV - -# Definitions of WH3l variables: -# https://github.com/latinos/LatinoAnalysis/blob/76e7c4b93aa5f056c92440d4e8d24e7de749c8fe/NanoGardener/python/modules/l3KinProducer.py diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_CR/nuisances.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_CR/nuisances.py deleted file mode 100644 index b4d4fb14..00000000 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_CR/nuisances.py +++ /dev/null @@ -1,654 +0,0 @@ -import sys - -# Enable reading YR for Higgs XS and uncertainties -sys.path.append('../../../macros/') -import HiggsXSection -HiggsXS = HiggsXSection.HiggsXSection() - -nuisances = {} - -mcProduction = 'Summer20UL16_106x_nAODv9_HIPM_Full2016v9' -dataReco = 'Run2016_UL2016_nAODv9_HIPM_Full2016v9' -mcSteps = 'MCl1loose2016v9__MCCorr2016v9NoJERInHorn__l2tightOR2016v9' -fakeSteps = 'DATAl1loose2016v9__l2loose__fakeW' -dataSteps = 'DATAl1loose2016v9__l2loose__l2tightOR2016v9' - -treeBaseDir = '/eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano' -limitFiles = -1 - -mc = [skey for skey in samples if skey not in ('Fake', 'DATA','ChargeFlip')] - -redirector = "" - -useXROOTD = False - -def makeMCDirectory(var=''): - if var== '': - print(os.path.join(treeBaseDir, mcProduction, mcSteps)) - return os.path.join(treeBaseDir, mcProduction, mcSteps) - else: - print(os.path.join(treeBaseDir, mcProduction, mcSteps + '__' + var)) - return os.path.join(treeBaseDir, mcProduction, mcSteps + '__' + var) - -mcDirectory = makeMCDirectory() -fakeDirectory = os.path.join(treeBaseDir, dataReco, fakeSteps) -dataDirectory = os.path.join(treeBaseDir, dataReco, dataSteps) - -################################ EXPERIMENTAL UNCERTAINTIES ################################# - -#### Luminosity - -# https://twiki.cern.ch/twiki/bin/view/CMS/LumiRecommendationsRun2#LumiComb -# Uncorrelated 2016 1.0 -# Uncorrelated 2017 2.0 -# Uncorrelated 2018 1.5 -# Correlated 2016, 2017, 2018 0.6, 0.9, 2.0 -# Correlated 2017, 2018 0.6, 0.2 - -nuisances['lumi_Uncorrelated'] = { - 'name' : 'lumi_13TeV_2016', - 'type' : 'lnN', - 'samples' : dict((skey, '1.010') for skey in mc if skey not in ['WZ']) -} - -nuisances['lumi_Correlated_Run2'] = { - 'name' : 'lumi_13TeV_correlated', - 'type' : 'lnN', - 'samples' : dict((skey, '1.006') for skey in mc if skey not in ['WZ']) -} - - -#### FAKES -fake_syst_endcap = ['1.0*(abs(Lepton_eta[1])<=1.4) + 1.3*(abs(Lepton_eta[1])>1.4)', - '1.0*(abs(Lepton_eta[1])<=1.4) + 1.0/1.3*(abs(Lepton_eta[1])>1.4)'] - -fake_syst_barrel = [' 1.3*(abs(Lepton_eta[1])<=1.4) + 1.0*(abs(Lepton_eta[1])>1.4)', - '1.0/1.3*(abs(Lepton_eta[1])<=1.4) + 1.0*(abs(Lepton_eta[1])>1.4)'] - -nuisances['fake_syst_mm_barrel'] = { - 'name' : 'CMS_WH_hww_fake_syst_mm_barrel', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_mm' : fake_syst_barrel, - }, - 'cuts' : [cut for cut in cuts if ('_mm_' in cut)] -} -nuisances['fake_syst_mm_endcap'] = { - 'name' : 'CMS_WH_hww_fake_syst_mm_endcap', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_mm' : fake_syst_endcap, - }, - 'cuts' : [cut for cut in cuts if ('_mm_' in cut)] -} - -nuisances['fake_syst_em_barrel'] = { - 'name' : 'CMS_WH_hww_fake_syst_em_barrel', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_em' : fake_syst_barrel, - }, - 'cuts' : [cut for cut in cuts if ('_em_' in cut)] -} -nuisances['fake_syst_em_endcap'] = { - 'name' : 'CMS_WH_hww_fake_syst_em_endcap', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_em' : fake_syst_endcap, - }, - 'cuts' : [cut for cut in cuts if ('_em_' in cut)] -} - -nuisances['fake_syst_ee_barrel'] = { - 'name' : 'CMS_WH_hww_fake_syst_ee_barrel', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_ee' : fake_syst_barrel, - }, - 'cuts' : [cut for cut in cuts if ('_ee_' in cut)] -} -nuisances['fake_syst_ee_endcap'] = { - 'name' : 'CMS_WH_hww_fake_syst_ee_endcap', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_ee' : fake_syst_endcap, - }, - 'cuts' : [cut for cut in cuts if ('_ee_' in cut)] -} - -nuisances['fake_ele'] = { - 'name' : 'CMS_WH_hww_fake_e_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_ee' : ['fakeWEleUp', 'fakeWEleDown'], - 'Fake_em' : ['fakeWEleUp', 'fakeWEleDown'], - } -} -nuisances['fake_ele_stat'] = { - 'name' : 'CMS_WH_hww_fake_stat_e_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_ee' : ['fakeWStatEleUp', 'fakeWStatEleDown'], - 'Fake_em' : ['fakeWStatEleUp', 'fakeWStatEleDown'], - } -} -nuisances['fake_mu'] = { - 'name' : 'CMS_WH_hww_fake_m_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_mm' : ['fakeWMuUp', 'fakeWMuDown'], - 'Fake_em' : ['fakeWMuUp', 'fakeWMuDown'], - } -} -nuisances['fake_mu_stat'] = { - 'name' : 'CMS_WH_hww_fake_stat_m_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_mm' : ['fakeWStatMuUp', 'fakeWStatMuDown'], - 'Fake_em' : ['fakeWStatMuUp', 'fakeWStatMuDown'], - } -} - -###### B-tagger - -for shift in ['lf', 'hf', 'hfstats1', 'hfstats2', 'lfstats1', 'lfstats2', 'cferr1', 'cferr2']: - btag_syst = ['(btagSF%sup)/(btagSF)' % shift, '(btagSF%sdown)/(btagSF)' % shift] - - name = 'CMS_btag_%s' % shift - if 'stats' in shift: - name += '_2016' - - nuisances['btag_shape_%s' % shift] = { - 'name' : name, - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, btag_syst) for skey in mc), - } - -##### Trigger Scale Factors - -trig_syst = ['TriggerSFWeight_2l_u/TriggerSFWeight_2l', 'TriggerSFWeight_2l_d/TriggerSFWeight_2l'] - -nuisances['trigg'] = { - 'name' : 'CMS_eff_hwwtrigger_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, trig_syst) for skey in mc) -} - -##### Electron Efficiency and energy scale - -nuisances['eff_e'] = { - 'name' : 'CMS_eff_e_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['SFweightEleUp', 'SFweightEleDown']) for skey in mc) -} - -nuisances['eff_ttHMVA_e'] = { - 'name' : 'CMS_eff_ttHMVA_e_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['LepWPttHMVASFEleUp', 'LepWPttHMVASFEleDown']) for skey in mc) -} - -nuisances['electronpt'] = { - 'name' : 'CMS_scale_e_2016', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'ElepTup', - 'mapDown' : 'ElepTdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('ElepTup_suffix'), - 'folderDown' : makeMCDirectory('ElepTdo_suffix'), - 'AsLnN' : '0' -} - -##### Muon Efficiency and energy scale - -nuisances['eff_m'] = { - 'name' : 'CMS_eff_m_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['SFweightMuUp', 'SFweightMuDown']) for skey in mc) -} - -nuisances['eff_ttHMVA_m'] = { - 'name' : 'CMS_eff_ttHMVA_m_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['LepWPttHMVASFMuUp', 'LepWPttHMVASFMuDown']) for skey in mc) -} - -nuisances['muonpt'] = { - 'name' : 'CMS_scale_m_2016', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'MupTup', - 'mapDown' : 'MupTdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('MupTup_suffix'), - 'folderDown' : makeMCDirectory('MupTdo_suffix'), - 'AsLnN' : '0' -} - -##### Jet energy scale -jes_systs = ['JESAbsolute','JESAbsolute_2016','JESBBEC1','JESBBEC1_2016','JESEC2','JESEC2_2016','JESFlavorQCD','JESHF','JESHF_2016','JESRelativeBal','JESRelativeSample_2016'] - -for js in jes_systs: - - nuisances[js] = { - 'name' : 'CMS_scale_' + js.replace("JES","j_"), - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : js + 'up', - 'mapDown' : js + 'do', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('RDF__JESup_suffix'), - 'folderDown': makeMCDirectory('RDF__JESdo_suffix'), - 'reweight' : ['btagSF'+js.replace('JES','jes')+'up/btagSF','btagSF'+js.replace('JES','jes')+'down/btagSF'], - 'AsLnN' : '0' - } - -##### Jet energy resolution -nuisances['JER'] = { - 'name' : 'CMS_res_j_2016', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'JERup', - 'mapDown' : 'JERdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('JERup_suffix'), - 'folderDown': makeMCDirectory('JERdo_suffix'), - 'AsLnN' : '0' -} - -##### MET unclustered energy - -# metUp.PuppiMET_pt_METup -nuisances['met'] = { - 'name' : 'CMS_scale_met_2016', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'METup', - 'mapDown' : 'METdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('METup_suffix'), - 'folderDown': makeMCDirectory('METdo_suffix'), - 'AsLnN' : '0' -} - - -##### Pileup - -# puWeight_UL2016 -nuisances['PU'] = { - 'name' : 'CMS_pileup_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'DY' : ['1.008421*(puWeightUp/puWeight)', '0.992494*(puWeightDown/puWeight)'], - 'WW' : ['1.010428*(puWeightUp/puWeight)', '0.990400*(puWeightDown/puWeight)'], - 'ggWW' : ['1.012367*(puWeightUp/puWeight)', '0.988402*(puWeightDown/puWeight)'], - 'Vg' : ['0.995630*(puWeightUp/puWeight)', '1.007076*(puWeightDown/puWeight)'], - 'WZ' : ['1.002037*(puWeightUp/puWeight)', '0.997721*(puWeightDown/puWeight)'], - 'ZZ' : ['1.006574*(puWeightUp/puWeight)', '0.993175*(puWeightDown/puWeight)'], - 'VVV' : ['1.012827*(puWeightUp/puWeight)', '0.989623*(puWeightDown/puWeight)'], - 'top' : ['1.009336*(puWeightUp/puWeight)', '0.991324*(puWeightDown/puWeight)'], - 'Higgs' : ['1.011609*(puWeightUp/puWeight)', '0.989039*(puWeightDown/puWeight)'], - }, - 'AsLnN' : '0', -} - -### PU ID SF uncertainty - -puid_syst = ['Jet_PUIDSF_up/Jet_PUIDSF', 'Jet_PUIDSF_down/Jet_PUIDSF'] - -nuisances['jetPUID'] = { - 'name' : 'CMS_eff_j_PUJET_id_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, puid_syst) for skey in mc) -} - -### PS and UE - -nuisances['PS_ISR'] = { - 'name' : 'PS_WH_hww_ISR', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['PSWeight[2]', 'PSWeight[0]']) for skey in mc), - 'AsLnN' : '0', -} - -nuisances['PS_FSR'] = { - 'name' : 'PS_WH_hww_FSR', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['PSWeight[3]', 'PSWeight[1]']) for skey in mc), - 'AsLnN' : '0', -} - -nuisances['UE_CP5'] = { - 'name' : 'CMS_WH_hww_UE', - 'skipCMS' : 1, - 'type' : 'lnN', - 'samples' : dict((skey, '1.015') for skey in mc), -} - -# Charge flip efficiency -nuisances['chargeFlipEff'] = { - 'name' : 'CMS_whss_chargeFlipEff_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['1-ttHMVA_eff_err_flip_2l', '1+ttHMVA_eff_err_flip_2l']) for skey in ['DY','ChargeFlip']), - 'cuts' : [cut for cut in cuts if ('_ee_' in cut or '_em_' in cut)] -} - -# Charge flip: uncertainty on opposite sign processes not affected by charge-flip -nuisances['chargeFlip_syst'] = { - 'name' : 'CMS_ChargeFlip_syst', - 'type' : 'lnN', - 'samples' : { - 'ChargeFlip' : '1.10', - } -} - -# Top pT reweighting uncertainty - -nuisances['TopPtRew'] = { - 'name' : 'CMS_top_pT_reweighting', # Theory uncertainty - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'top': ["1.", "1./Top_pTrw"] - }, - 'symmetrize' : True -} - -nuisances['WgStar'] = { - 'name' : 'CMS_hww_WgStarScale', - 'type' : 'lnN', - 'samples' : { - 'WgS' : '1.25' - } -} - -###### pdf uncertainties - -valuesggh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggH', '125.09','pdf','sm') -valuesggzh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggZH','125.09','pdf','sm') -valuesbbh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','bbH', '125.09','pdf','sm') - -nuisances['pdf_Higgs_gg'] = { - 'name' : 'pdf_Higgs_gg', - 'samples' : { - 'ggH_hww' : valuesggh, - 'ggH_htt' : valuesggh, - 'ggZH_hww' : valuesggzh, - 'bbH_hww' : valuesbbh, - }, - 'type' : 'lnN', -} - -# For ttH, we need to use 1./values -values = str(1./float(HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ttH','125.09','pdf','sm'))) - -nuisances['pdf_Higgs_ttH'] = { - 'name' : 'pdf_Higgs_ttH', - 'samples' : { - 'ttH_hww': values, - }, - 'type' : 'lnN', -} - -valuesqqh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','vbfH','125.09','pdf','sm') -valueswh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','WH', '125.09','pdf','sm') -valueszh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ZH', '125.09','pdf','sm') - -nuisances['pdf_Higgs_qqbar'] = { - 'name' : 'pdf_Higgs_qqbar', - 'type' : 'lnN', - 'samples': { - 'qqH_hww' : valuesqqh, - 'qqH_htt' : valuesqqh, - 'WH_hww_plus' : valueswh, - 'WH_hww_minus': valueswh, - 'WH_htt_plus' : valueswh, - 'WH_htt_minus': valueswh, - 'ZH_hww' : valueszh, - 'ZH_htt' : valueszh - }, -} - -nuisances['pdf_qqbar'] = { - 'name' : 'pdf_qqbar', - 'type' : 'lnN', - 'samples' : { - 'Wg' : '1.04', - 'Zg' : '1.04', - 'ZZ' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 - 'WZ' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 - 'WgS' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 - 'ZgS' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 - }, -} - -nuisances['pdf_gg'] = { - 'name': 'pdf_gg', - 'type': 'lnN', - 'samples': { - 'ggWW' : '1.05', - }, -} - -nuisances['pdf_Higgs_gg_ACCEPT'] = { - 'name' : 'pdf_WH_hww_Higgs_gg_ACCEPT', - 'samples' : { - 'ggH_hww' : '1.006', - 'ggH_htt' : '1.006', - 'ggZH_hww' : '1.006', - 'bbH_hww' : '1.006' - }, - 'type' : 'lnN', -} -nuisances['pdf_gg_ACCEPT'] = { - 'name' : 'pdf_WH_hww_gg_ACCEPT', - 'samples' : { - 'ggWW' : '1.006', - }, - 'type' : 'lnN', -} - -nuisances['pdf_Higgs_qqbar_ACCEPT'] = { - 'name' : 'pdf_WH_hww_Higgs_qqbar_ACCEPT', - 'type' : 'lnN', - 'samples' : { - 'qqH_hww' : '1.002', - 'qqH_htt' : '1.002', - 'WH_hww_plus' : '1.003', - 'WH_hww_minus': '1.003', - 'WH_htt_plus' : '1.003', - 'WH_htt_minus': '1.003', - 'ZH_hww' : '1.002', - 'ZH_htt' : '1.002', - }, -} - -nuisances['pdf_qqbar_ACCEPT'] = { - 'name' : 'pdf_WH_hww_qqbar_ACCEPT', - 'type' : 'lnN', - 'samples' : { - 'ZZ' : '1.001', - 'WZ' : '1.001', - }, -} - -##### Renormalization & factorization scales - -## Shape nuisance due to QCD scale variations for DY -## LHE scale variation weights (w_var / w_nominal) - -## This should work for samples with either 8 or 9 LHE scale weights (Length$(LHEScaleWeight) == 8 or 9) -variations = ['Alt(LHEScaleWeight,0,1)', 'Alt(LHEScaleWeight,1,1)', 'Alt(LHEScaleWeight,3,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-4,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-2,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-1,1)'] - -# nuisances['QCDscale_V'] = { -# 'name' : 'QCDscale_V', -# 'skipCMS' : 1, -# 'kind' : 'weight_envelope', -# 'type' : 'shape', -# 'samples' : { -# 'DY' : variations -# }, -# 'AsLnN' : '0' -# } - -nuisances['QCDscale_VV'] = { - 'name' : 'QCDscale_VV', - 'kind' : 'weight_envelope', - 'type' : 'shape', - 'samples' : { - 'WW' : variations, - 'Zg' : variations, - 'Wg' : variations, - 'ZZ' : variations, - 'WZ' : variations, - 'WgS' : variations, - 'ZgS' : variations - } -} - -nuisances['QCDscale_ggVV'] = { - 'name' : 'QCDscale_ggVV', - 'type' : 'lnN', - 'samples' : { - 'ggWW' : '1.15', - }, -} - -#### QCD scale uncertainties for Higgs signals other than ggH - -values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','vbfH','125.09','scale','sm') - -nuisances['QCDscale_qqH'] = { - 'name' : 'QCDscale_qqH', - 'samples' : { - 'qqH_hww' : values, - 'qqH_htt' : values, - }, - 'type' : 'lnN' -} - -valueswh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','WH','125.09','scale','sm') -valueszh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ZH','125.09','scale','sm') - -nuisances['QCDscale_VH'] = { - 'name' : 'QCDscale_VH', - 'samples' : { - 'WH_hww_plus' : valueswh, - 'WH_hww_minus' : valueswh, - 'WH_htt_plus' : valueswh, - 'WH_htt_minus' : valueswh, - 'ZH_hww' : valueszh, - 'ZH_htt' : valueszh, - }, - 'type' : 'lnN', -} - -values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggZH','125.09','scale','sm') - -nuisances['QCDscale_ggZH'] = { - 'name' : 'QCDscale_ggZH', - 'samples' : { - 'ggZH_hww' : values, - }, - 'type' : 'lnN', -} - -values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ttH','125.09','scale','sm') - -nuisances['QCDscale_ttH'] = { - 'name' : 'QCDscale_ttH', - 'samples' : { - 'ttH_hww' : values, - }, - 'type' : 'lnN', -} - -nuisances['QCDscale_WWewk'] = { - 'name' : 'QCDscale_WWewk', - 'samples' : { - 'WWewk' : '1.11', - }, - 'type' : 'lnN' -} - -nuisances['QCDscale_qqbar_ACCEPT'] = { - 'name' : 'QCDscale_qqbar_ACCEPT', - 'type' : 'lnN', - 'samples' : { - 'qqH_hww' : '1.003', - 'qqH_htt' : '1.003', - 'WH_hww_plus' : '1.010', - 'WH_hww_minus' : '1.010', - 'WH_htt_plus' : '1.010', - 'WH_htt_minus' : '1.010', - 'ZH_hww' : '1.015', - 'ZH_htt' : '1.015', - } -} - -# FIXME: these come from HIG-16-042, maybe should be recomputed? -nuisances['QCDscale_gg_ACCEPT'] = { - 'name' : 'QCDscale_gg_ACCEPT', - 'samples' : { - 'ggH_htt' : '1.012', - 'ggH_hww' : '1.012', - 'ggZH_hww' : '1.012', - 'ggWW' : '1.012', - }, - 'type' : 'lnN', -} - -# WZ normalization from control region - -nuisances['WZ2jnorm'] = { - 'name' : 'CMS_hww_WZ3l2jnorm', - 'samples' : { - 'WZ' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [cut for cut in cuts if '2j' in cut], -} - -nuisances['WZ1jnorm'] = { - 'name' : 'CMS_hww_WZ3l1jnorm', - 'samples' : { - 'WZ' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [cut for cut in cuts if '1j' in cut], -} - -# Use the following if you want to apply the automatic combine MC stat nuisances. -nuisances['stat'] = { - 'type' : 'auto', - 'maxPoiss' : '10', - 'includeSignal' : '0', - 'samples' : {} -} -# nuisance ['maxPoiss'] = Number of threshold events for Poisson modelling -# nuisance ['includeSignal'] = Include MC stat nuisances on signal processes (1=True, 0=False) - -for n in nuisances.values(): - n['skipCMS'] = 1 diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_CR/plot.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_CR/plot.py deleted file mode 100644 index fd6d438e..00000000 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_CR/plot.py +++ /dev/null @@ -1,356 +0,0 @@ -# plot configuration - -# Groups of samples to improve the plots. -# If not defined, normal plots is used - -# BTag normalization factors -# Cut = hww2l2v_13TeV_samesign_1j -scale_histo_ttH_hww = 0.180276825892/0.112076406383 # 1.60851718672 -scale_histo_WW = 17.3368525364/17.0463611631 # 1.01704125417 -scale_histo_DY = 44.6641027279/49.5473999849 # 0.901441906972 -scale_histo_WZ = 135.267286694/126.276144721 # 1.07120222108 -scale_histo_Wg = 156.275315526/155.431783489 # 1.00542702412 -scale_histo_Zg = 20.6166113057/19.4013313972 # 1.06263899542 -scale_histo_Vg = (156.275315526+20.6166113057)/(155.431783489+19.4013313972) -scale_histo_WgS = 65.9150772791/63.6120002002 # 1.0362050725 -scale_histo_ZgS = 7.64935533742/7.44793554501 # 1.02704370778 -scale_histo_VgS = (65.9150772791+7.64935533742)/(63.6120002002+7.44793554501) -scale_histo_ZH_htt = 0.224625941246/0.19374122565 # 1.15941220301 -scale_histo_WH_htt_plus = 1.41360321279/1.31045936383 # 1.0787081628 -scale_histo_ggZH_hww = 0.119893497698/0.114894546858 # 1.04350903482 -scale_histo_qqH_hww = 0.0652589391265/0.0634855506858 # 1.02793373329 -scale_histo_ZZ = 3.62010890634/3.26054685233 # 1.11027661012 -scale_histo_ggH_hww = 0.894624256178/0.85372059232 # 1.04791223759 -scale_histo_WH_htt_minus = 0.907955295271/0.848840692488 # 1.06964157504 -scale_histo_VVV = 4.65032694939/4.52020086114 # 1.0287876783 -scale_histo_WH_hww_plus = 3.56933756638/3.42337605238 # 1.04263671644 -scale_histo_ggH_htt = 0.0533884742322/0.0490732410875 # 1.08793454537 -scale_histo_ggH_htt = 0.0533884742322/0.0490732410875 # 1.08793454537 -scale_histo_ggWW = 1.02379148736/1.00096980162 # 1.02279957468 -scale_histo_top = 108.055607163/81.5017466136 # 1.32580725755 -scale_histo_WWewk = 0.137471641848/0.135830927369 # 1.01207909355 -scale_histo_ZH_hww = 0.578285123642/0.536470527952 # 1.0779438823 -scale_histo_WH_hww_minus = 2.32124386049/2.22327156849 # 1.04406672284 -scale_histo_qqH_htt = 0.00350350762844/0.00350350762844 # 1.0 - -groupPlot = {} - -# groupPlot['top'] = { -# 'nameHR' : 'tW+ and t#bar{t}', -# 'isSignal' : 0, -# 'color' : 400, # kYellow -# 'samples' : ['top'] -# } - -# groupPlot['WW'] = { -# 'nameHR' : 'WW', -# 'isSignal' : 0, -# 'color' : 851, # kAzure -9 -# 'samples' : ['WW', 'ggWW', 'WWewk'] -# } - -# groupPlot['DY'] = { -# 'nameHR' : "DY", -# 'isSignal' : 0, -# 'color' : 418, # kGreen+2 -# 'samples' : ['DY'] -# } - -groupPlot['Fake'] = { - 'nameHR' : 'Non-prompt', - 'isSignal' : 0, - 'color' : 921, # kGray + 1 - 'samples' : ['Fake_mm','Fake_em','Fake_ee'] -} - -groupPlot['ChargeFlip'] = { - 'nameHR' : "charge_flip", - 'isSignal' : 0, - 'color' : 418, # kGreen+2 - 'samples' : ['ChargeFlip'] -} - -groupPlot['VVV'] = { - 'nameHR' : 'VVV', - 'isSignal' : 0, - 'color' : 857, # kAzure -3 - 'samples' : ['VVV'] -} - -groupPlot['ZZ'] = { - 'nameHR' : "ZZ", - 'isSignal' : 0, - 'color' : 617, # kViolet + 1 - 'samples' : ['ZZ'] -} - -groupPlot['WZ'] = { - 'nameHR' : "WZ", - 'isSignal' : 0, - 'color' : 619, # kViolet + 1 - 'samples' : ['WZ'] -} - -groupPlot['Vg'] = { - 'nameHR' : "V#gamma", - 'isSignal' : 0, - 'color' : 810, # kOrange + 10 - 'samples' : ['Vg'] -} - -groupPlot['VgS'] = { - 'nameHR' : "V#gamma*", - 'isSignal' : 0, - 'color' : 412, # kGreen - 9 - 'samples' : ['VgS'] -} - -groupPlot['Higgs'] = { - 'nameHR' : 'Higgs', - 'isSignal' : 0, - 'color' : 632, # kRed - 'samples' : ['ggH_hww','qqH_hww','ZH_hww','ggZH_hww','ttH_hww','ggH_htt','qqH_htt','ZH_htt'] -} - -groupPlot['WH_minus'] = { - 'nameHR' : 'W^{-} H (x 10)', - 'isSignal' : 2, - 'color' : 600, # kBlue - 'samples' : ['WH_hww_minus','WH_htt_minus'] -} - -groupPlot['WH_plus'] = { - 'nameHR' : 'W^{+} H (x 10)', - 'isSignal' : 2, - 'color' : 632, # kRed - 'samples' : ['WH_hww_plus', 'WH_htt_plus'] -} - - -# keys here must match keys in samples.py - -plot = {} - -plot['ChargeFlip'] = { - 'color' : 418, # kGreen+2 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 0.5, -} - -# plot['DY'] = { -# 'color' : 418, # kGreen+2 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : scale_histo_DY, -# } - -# plot['top'] = { -# 'nameHR' : 'tW and t#bar{t}', -# 'color' : 400, # kYellow -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : scale_histo_top, -# } - -# plot['WW'] = { -# 'color' : 851, # kAzure -9 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : scale_histo_WW, -# } - -# plot['WWewk'] = { -# 'color' : 850, # kAzure -10 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : scale_histo_WWewk, -# } - -# plot['ggWW'] = { -# 'color' : 850, # kAzure -10 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : scale_histo_ggWW, -# } - -plot['Vg'] = { - 'color' : 859, # kAzure -1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_Vg, -} - -plot['VgS'] = { - 'color' : 617, # kViolet + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_VgS, -} - -plot['WZ'] = { - 'color' : 858, # kAzure -2 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_WZ * 1.138, # NLO -> NNLO k-factor! -} - -plot['ZZ'] = { - 'color' : 858, # kAzure -2 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ZZ, -} - -plot['VVV'] = { - 'color' : 857, # kAzure -3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_VVV, -} - -########### -# Signals # -########### - -# HWW - -plot['ggH_hww'] = { - 'color' : 632, # kRed - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggH_hww, -} - -plot['qqH_hww'] = { - 'color' : 632+1, # kRed+1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_qqH_hww, -} - -plot['ZH_hww'] = { - 'color' : 632+3, # kRed+3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ZH_hww, -} - -plot['ggZH_hww'] = { - 'color' : 632+4, # kRed+4 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggZH_hww, -} - -plot['WH_hww_plus'] = { - 'color' : 632+2, # kRed+2 - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_hww_plus, -} - -plot['WH_hww_minus'] = { - 'color' : 600, # kBlue - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_hww_minus, -} - -plot['ttH_hww'] = { - 'color' : 632+3, # kRed+3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ttH_hww, -} - - -# Htautau - -plot['ggH_htt'] = { - 'color' : 632, # kRed - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggH_htt, -} - -plot['qqH_htt'] = { - 'color' : 632+1, # kRed+1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_qqH_htt, -} - -plot['ZH_htt'] = { - 'color' : 632+3, # kRed+3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ZH_htt, -} - -plot['WH_htt_plus'] = { - 'color' : 632+2, # kRed+2 - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_htt_plus, -} - -plot['WH_htt_minus'] = { - 'color' : 632+2, # kRed+2 - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_htt_minus, -} - - -######## -# Fake # -######## - -plot['Fake_em'] = { - 'color' : 921, # kGray + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['Fake_ee'] = { - 'color' : 921, # kGray + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['Fake_mm'] = { - 'color' : 921, # kGray + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -# plot['Fake'] = { -# 'color' : 921, # kGray + 1 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : 1.0 -# } - -######## -# Data # -######## - -plot['DATA'] = { - 'nameHR' : 'Data', - 'color' : 1 , - 'isSignal' : 0, - 'isData' : 1, - 'isBlind' : 0, -} - - -# Define legend - -legend = {} - -legend['lumi'] = 'L = 19.5 fb^{-1}' -legend['sqrt'] = '#sqrt{s} = 13 TeV' diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_CR/samples.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_CR/samples.py deleted file mode 100644 index be682e93..00000000 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_CR/samples.py +++ /dev/null @@ -1,394 +0,0 @@ -import os,glob - -################################################ -################# SKIMS ######################## -################################################ - -# MC: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Summer20UL16_106x_nAODv9_HIPM_Full2016v9/MCl1loose2016v9__MCCorr2016v9NoJERInHorn__l2tightOR2016v9/ -# DATA: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Run2016_UL2016_nAODv9_HIPM_Full2016v9/DATAl1loose2016v9__l2loose__l2tightOR2016v9/ -# FAKE: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Run2016_UL2016_nAODv9_HIPM_Full2016v9/DATAl1loose2016v9__l2loose__fakeW/ - -mcProduction = 'Summer20UL16_106x_nAODv9_HIPM_Full2016v9' -dataReco = 'Run2016_UL2016_nAODv9_HIPM_Full2016v9' -mcSteps = 'MCl1loose2016v9__MCCorr2016v9NoJERInHorn__l2tightOR2016v9{var}' -fakeSteps = 'DATAl1loose2016v9__l2loose__fakeW' -dataSteps = 'DATAl1loose2016v9__l2loose__l2tightOR2016v9' - -############################################## -###### Tree base directory for the site ###### -############################################## - -treeBaseDir = '/eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano' -limitFiles = -1 - -def makeMCDirectory(var=''): - return os.path.join(treeBaseDir, mcProduction, mcSteps.format(var='')) - -mcDirectory = makeMCDirectory() -fakeDirectory = os.path.join(treeBaseDir, dataReco, fakeSteps) -dataDirectory = os.path.join(treeBaseDir, dataReco, dataSteps) - -samples = {} - -from mkShapesRDF.lib.search_files import SearchFiles -s = SearchFiles() - -useXROOTD = True -redirector = 'root://eoscms.cern.ch/' - -def nanoGetSampleFiles(path, name): - _files = s.searchFiles(path, name, redirector=redirector) - if limitFiles != -1 and len(_files) > limitFiles: - return [(name, _files[:limitFiles])] - else: - return [(name, _files)] - -def CombineBaseW(samples, proc, samplelist): - _filtFiles = list(filter(lambda k: k[0] in samplelist, samples[proc]['name'])) - _files = list(map(lambda k: k[1], _filtFiles)) - _l = list(map(lambda k: len(k), _files)) - leastFiles = _files[_l.index(min(_l))] - dfSmall = ROOT.RDataFrame('Runs', leastFiles) - s = dfSmall.Sum('genEventSumw').GetValue() - f = ROOT.TFile.Open(leastFiles[0]) - t = f.Get('Events') - t.GetEntry(1) - xs = t.baseW * s - - __files = [] - for f in _files: - __files += f - df = ROOT.RDataFrame('Runs', __files) - s = df.Sum('genEventSumw').GetValue() - newbaseW = str(xs / s) - weight = newbaseW + '/baseW' - - for iSample in samplelist: - addSampleWeight(samples, proc, iSample, weight) - -def addSampleWeight(samples, sampleName, sampleNameType, weight): - obj = list(filter(lambda k: k[0] == sampleNameType, samples[sampleName]['name']))[0] - samples[sampleName]['name'] = list(filter(lambda k: k[0] != sampleNameType, samples[sampleName]['name'])) - if len(obj) > 2: - samples[sampleName]['name'].append((obj[0], obj[1], obj[2] + '*(' + weight + ')')) - else: - samples[sampleName]['name'].append((obj[0], obj[1], '(' + weight + ')' )) - - -################################################ -############ DATA DECLARATION ################## -################################################ - -DataRun = [ - ['B','Run2016B-ver1_HIPM_UL2016-v2'], - ['B','Run2016B-ver2_HIPM_UL2016-v2'], - ['C','Run2016C-HIPM_UL2016-v2'], - ['D','Run2016D-HIPM_UL2016-v2'], - ['E','Run2016E-HIPM_UL2016-v2'], - ['F','Run2016F-HIPM_UL2016-v2'], -] - -DataSets = ['MuonEG','SingleMuon','SingleElectron','DoubleMuon', 'DoubleEG'] - -DataTrig = { - 'MuonEG' : ' Trigger_ElMu' , - 'SingleMuon' : '!Trigger_ElMu && Trigger_sngMu' , - 'SingleElectron' : '!Trigger_ElMu && !Trigger_sngMu && Trigger_sngEl', - 'DoubleMuon' : '!Trigger_ElMu && !Trigger_sngMu && !Trigger_sngEl && Trigger_dblMu', - 'DoubleEG' : '!Trigger_ElMu && !Trigger_sngMu && !Trigger_sngEl && !Trigger_dblMu && Trigger_dblEl' -} - -######################################### -############ MC COMMON ################## -######################################### - -# SFweight does not include btag weights -mcCommonWeightNoMatch = 'XSWeight*SFweight*METFilter_MC' -mcCommonWeight = 'XSWeight*SFweight*METFilter_MC*PromptGenLepMatch2l' - -########################################### -############# BACKGROUNDS ############### -########################################### - -# ###### DY ####### -# files = nanoGetSampleFiles(mcDirectory, 'DYJetsToLL_M-10to50_NLO') + \ -# nanoGetSampleFiles(mcDirectory, 'DYJetsToLL_M-50') - -# samples['DY'] = { -# 'name': files, -# 'weight': mcCommonWeight + '*(Lepton_pdgId[0]*Lepton_pdgId[1] == -11*13)*( !(Sum(PhotonGen_isPrompt==1 && PhotonGen_pt>15 && abs(PhotonGen_eta)<2.6) > 0))', -# 'FilesPerJob': 8, -# } - -# ##### Top ####### -# files = nanoGetSampleFiles(mcDirectory, 'TTTo2L2Nu') + \ -# nanoGetSampleFiles(mcDirectory, 'ST_s-channel') + \ -# nanoGetSampleFiles(mcDirectory, 'ST_t-channel_top') + \ -# nanoGetSampleFiles(mcDirectory, 'ST_t-channel_antitop') + \ -# nanoGetSampleFiles(mcDirectory, 'ST_tW_antitop') + \ -# nanoGetSampleFiles(mcDirectory, 'ST_tW_top') - -# samples['top'] = { -# 'name': files, -# 'weight': mcCommonWeight, # +'*ttHMVA_SF_flip_2l', -# 'FilesPerJob': 8, -# } -# addSampleWeight(samples,'top','TTTo2L2Nu','Top_pTrw') - -# ###### WW ######## -# samples['WW'] = { -# 'name': nanoGetSampleFiles(mcDirectory, 'WWTo2L2Nu'), -# 'weight': mcCommonWeight + '*nllW*ewknloW', -# 'FilesPerJob': 4 -# } - -# samples['WWewk'] = { -# 'name': nanoGetSampleFiles(mcDirectory, 'WpWmJJ_EWK_noTop'), -# 'weight': mcCommonWeight + '*(Sum(abs(GenPart_pdgId)==6 || GenPart_pdgId==25)==0)', # Filter tops and Higgs, -# 'FilesPerJob': 8 -# } - -# files = nanoGetSampleFiles(mcDirectory, 'GluGluToWWToENEN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToENMN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToENTN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToMNEN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToMNMN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToMNTN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToTNEN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToTNMN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToTNTN') - -# samples['ggWW'] = { -# 'name': files, -# 'weight': mcCommonWeight + '*1.53/1.4', -# 'FilesPerJob': 8 -# } - -# Charge-flip estimated from data, and covering DY, WW, and Top -samples['ChargeFlip'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'DYJetsToLL_M-50'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4 -} - -######## Vg ######## -files = nanoGetSampleFiles(mcDirectory, 'Wg_AMCNLOFXFX_01J') + \ - nanoGetSampleFiles(mcDirectory, 'ZGToLLG') - -samples['Vg'] = { - 'name': files, - 'weight': mcCommonWeightNoMatch + '*(Gen_ZGstar_mass <= 0)', - 'FilesPerJob': 4, -} - -######## VgS ######## -files = nanoGetSampleFiles(mcDirectory, 'Wg_AMCNLOFXFX_01J') + \ - nanoGetSampleFiles(mcDirectory, 'WZTo3LNu_mllmin0p1') + \ - nanoGetSampleFiles(mcDirectory, 'ZGToLLG') - -samples['VgS'] = { - 'name': files, - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} -addSampleWeight(samples, 'VgS', 'Wg_AMCNLOFXFX_01J', '((Gen_ZGstar_mass > 0 && Gen_ZGstar_mass <= 0.1))*(gstarLow*0.94)') -addSampleWeight(samples, 'VgS', 'WZTo3LNu_mllmin0p1', '((Gen_ZGstar_mass > 0.1)*(0.601644*58.59/4.666))*(gstarLow*0.94)') -addSampleWeight(samples, 'VgS', 'ZGToLLG', '(Gen_ZGstar_mass > 0)') - -############ WZ ############ -files = nanoGetSampleFiles(mcDirectory, 'WZTo3LNu_mllmin0p1') + \ - nanoGetSampleFiles(mcDirectory, 'WZTo2Q2L_mllmin4p0') - -samples['WZ'] = { - 'name': files, - 'weight': mcCommonWeight + ' * (gstarHigh)', - 'FilesPerJob': 4, -} -addSampleWeight(samples, 'WZ', 'WZTo3LNu_mllmin0p1', '(0.601644*58.59/4.666)') - - -############ ZZ ############ -files = nanoGetSampleFiles(mcDirectory, 'ZZTo2L2Nu') + \ - nanoGetSampleFiles(mcDirectory, 'ZZTo2Q2L_mllmin4p0') + \ - nanoGetSampleFiles(mcDirectory, 'ZZTo4L') - -samples['ZZ'] = { - 'name': files, - 'weight': mcCommonWeight, - 'FilesPerJob': 2, -} - - -########## VVV ######### -files = nanoGetSampleFiles(mcDirectory, 'ZZZ') + \ - nanoGetSampleFiles(mcDirectory, 'WZZ') + \ - nanoGetSampleFiles(mcDirectory, 'WWZ') + \ - nanoGetSampleFiles(mcDirectory, 'WWW') - -samples['VVV'] = { - 'name': files, - 'weight': mcCommonWeight, - 'FilesPerJob': 8, -} - -########################################### -############# SIGNALS ################## -########################################### - -signals = [] - -############ ggH H->WW ############ -samples['ggH_hww'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'GluGluHToWWTo2L2Nu_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} -signals.append('ggH_hww') - -############ VBF H->WW ############ -samples['qqH_hww'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'VBFHToWWTo2L2Nu_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 8, -} -signals.append('qqH_hww') - -############ ZH H->WW ############ -samples['ZH_hww'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'HZJ_HToWW_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 8, -} -signals.append('ZH_hww') - -samples['ggZH_hww'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'ggZH_HToWW_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 8, -} -signals.append('ggZH_hww') - -############ WH H->WW ############ -samples['WH_hww_plus'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'HWplusJ_HToWW_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} -signals.append('WH_hww_plus') - -samples['WH_hww_minus'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'HWminusJ_HToWW_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} - -signals.append('WH_hww_minus') - -############ ttH ############ -samples['ttH_hww'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'ttHToNonbb_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} -signals.append('ttH_hww') - -############ H->TauTau ############ -samples['ggH_htt'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'GluGluHToTauTau_M125_Powheg'), - 'weight': mcCommonWeight, - 'FilesPerJob': 20, -} -signals.append('ggH_htt') - -samples['qqH_htt'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'VBFHToTauTau_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 20, -} -signals.append('qqH_htt') - -samples['ZH_htt'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'ZHToTauTau_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 8, -} -signals.append('ZH_htt') - -############ WH H->TauTau ############ -samples['WH_htt_plus'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'WplusHToTauTau_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} -signals.append('WH_htt_plus') - -samples['WH_htt_minus'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'WminusHToTauTau_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} -signals.append('WH_htt_minus') - - -########################################### -################## FAKE ################### -########################################### - -samples['Fake'] = { - 'name': [], - 'weight': 'METFilter_DATA*fakeW', - 'weights': [], - 'isData': ['all'], - 'FilesPerJob': 50 -} - -for _, sd in DataRun: - for pd in DataSets: - tag_data = pd + '_' + sd - - if 'DoubleEG' in pd and 'Run2016B-ver2' in sd: # Run2016B-ver2_HIPM_UL2016-v2 - print("sd = {}".format(sd)) - print("pd = {}".format(pd)) - print("Old tag = {}".format(tag_data)) - tag_data = tag_data.replace('v2','v3') - print("New tag = {}".format(tag_data)) - - files = nanoGetSampleFiles(fakeDirectory, tag_data) - - samples['Fake']['name'].extend(files) - addSampleWeight(samples, 'Fake', tag_data, DataTrig[pd]) - -samples['Fake']['subsamples'] = { - 'em': 'abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 11*13', - 'mm': 'abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 13*13', - 'ee': 'abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 11*11' -} - - -########################################### -################## DATA ################### -########################################### - -samples['DATA'] = { - 'name' : [], - 'weight' : 'LepWPCut*METFilter_DATA', - 'weights' : [], - 'isData' : ['all'], - 'FilesPerJob' : 50 -} - -for _, sd in DataRun: - for pd in DataSets: - tag_data = pd + '_' + sd - - if 'DoubleEG' in pd and 'Run2016B-ver2' in sd: # Run2016B-ver2_HIPM_UL2016-v2 - print("sd = {}".format(sd)) - print("pd = {}".format(pd)) - print("Old tag = {}".format(tag_data)) - tag_data = tag_data.replace('v2','v3') - print("New tag = {}".format(tag_data)) - - files = nanoGetSampleFiles(dataDirectory, tag_data) - - samples['DATA']['name'].extend(files) - addSampleWeight(samples, 'DATA', tag_data, DataTrig[pd]) diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_CR/structure.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_CR/structure.py deleted file mode 100644 index 0ade007f..00000000 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_CR/structure.py +++ /dev/null @@ -1,178 +0,0 @@ -# structure configuration for datacard - -# keys here must match keys in samples.py - -structure = {} - -signal_normalization = 10.0 - -# BTag normalization factors -# Cut = hww2l2v_13TeV_samesign_1j -scale_histo_ttH_hww = 0.180276825892/0.112076406383 # 1.60851718672 -scale_histo_WW = 17.3368525364/17.0463611631 # 1.01704125417 -scale_histo_DY = 44.6641027279/49.5473999849 # 0.901441906972 -scale_histo_WZ = 135.267286694/126.276144721 # 1.07120222108 -scale_histo_Wg = 156.275315526/155.431783489 # 1.00542702412 -scale_histo_Zg = 20.6166113057/19.4013313972 # 1.06263899542 -scale_histo_Vg = (156.275315526+20.6166113057)/(155.431783489+19.4013313972) -scale_histo_WgS = 65.9150772791/63.6120002002 # 1.0362050725 -scale_histo_ZgS = 7.64935533742/7.44793554501 # 1.02704370778 -scale_histo_VgS = (65.9150772791+7.64935533742)/(63.6120002002+7.44793554501) -scale_histo_ZH_htt = 0.224625941246/0.19374122565 # 1.15941220301 -scale_histo_WH_htt_plus = 1.41360321279/1.31045936383 # 1.0787081628 -scale_histo_ggZH_hww = 0.119893497698/0.114894546858 # 1.04350903482 -scale_histo_qqH_hww = 0.0652589391265/0.0634855506858 # 1.02793373329 -scale_histo_ZZ = 3.62010890634/3.26054685233 # 1.11027661012 -scale_histo_ggH_hww = 0.894624256178/0.85372059232 # 1.04791223759 -scale_histo_WH_htt_minus = 0.907955295271/0.848840692488 # 1.06964157504 -scale_histo_VVV = 4.65032694939/4.52020086114 # 1.0287876783 -scale_histo_WH_hww_plus = 3.56933756638/3.42337605238 # 1.04263671644 -scale_histo_ggH_htt = 0.0533884742322/0.0490732410875 # 1.08793454537 -scale_histo_ggH_htt = 0.0533884742322/0.0490732410875 # 1.08793454537 -scale_histo_ggWW = 1.02379148736/1.00096980162 # 1.02279957468 -scale_histo_top = 108.055607163/81.5017466136 # 1.32580725755 -scale_histo_WWewk = 0.137471641848/0.135830927369 # 1.01207909355 -scale_histo_ZH_hww = 0.578285123642/0.536470527952 # 1.0779438823 -scale_histo_WH_hww_minus = 2.32124386049/2.22327156849 # 1.04406672284 -scale_histo_qqH_htt = 0.00350350762844/0.00350350762844 # 1.0 - -structure['Vg'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_Vg, -} - -structure['VgS'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_VgS, -} - -structure['ZgS'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZgS, -} - -structure['WZ'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WZ * 1.138 # NLO -> NNLO k-factor -} - -structure['ZZ'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZZ, -} - -structure['VVV'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_VVV, -} - - -# Higgs -structure['ggH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ggH_hww, -} - -structure['qqH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_qqH_hww, -} - -# structure['ZH_hww'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_ZH_hww, -# } - -structure['ggZH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ggZH_hww, -} - -structure['WH_hww_plus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_hww_plus*signal_normalization, -} - -structure['WH_hww_minus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_hww_minus*signal_normalization, -} - -structure['ttH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ttH_hww, -} - -structure['ggH_htt'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ggH_htt, -} - -structure['qqH_htt'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_qqH_htt, -} - -structure['ZH_htt'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZH_htt, -} - -structure['WH_htt_plus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_htt_plus*signal_normalization, -} - -structure['WH_htt_minus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_htt_minus*signal_normalization, -} - - -# Fakes -structure['Fake_ee'] = { - 'isSignal' : 0, - 'isData' : 0, -} - -structure['Fake_mm'] = { - 'isSignal' : 0, - 'isData' : 0, -} - -structure['Fake_em'] = { - 'isSignal' : 0, - 'isData' : 0, -} - - -# Data-driven charge flip estimation -structure['ChargeFlip'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : 0.5, -} - -# Data -structure['DATA'] = { - 'isSignal' : 0, - 'isData' : 1 -} diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_mm_CR/README.md b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_mm_CR/README.md deleted file mode 100644 index ba17b328..00000000 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_mm_CR/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# Configuration for WHSS 1j signal region - -### Plot distributions - -Compile configuration and plot distributions: - - mkShapesRDF -c 1 - - mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png - -### Produce datacards - -Compile configuration and produce datacards: - - mkShapesRDF -c 1 - - mkDatacards --outputDirDatacard ../datacards_original_signal_scale --skipMissingNuisance \ No newline at end of file diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_mm_CR/configuration.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_mm_CR/configuration.py deleted file mode 100644 index 93f1bd9f..00000000 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_mm_CR/configuration.py +++ /dev/null @@ -1,99 +0,0 @@ -# Configuration file for charge asymmetry WHSS analysis using the UL 2016HIPM dataset - -import sys,inspect - -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_mm_CR - -configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file -configurations_nuisance = os.path.dirname(configurations_nuisance) # configuration_1j_mm_CR -configurations_nuisance = os.path.dirname(configurations_nuisance) # WHSS -configurations_nuisance = os.path.dirname(configurations_nuisance) # 2016HIPM_v9 -configurations_nuisance = os.path.dirname(configurations_nuisance) # UL - -# Tag used to identify the configuration folder version -tag = 'WHSS_2016HIPM_v9_chargeAsymmetry_Mu82_EleUL90' - -# File to use as runner script, default uses mkShapesRDF.shapeAnalysis.runner, otherwise specify path to script -runnerFile = "default" - -# Output file name -outputFile = "plots_WHSS_2016HIPM_v9_chargeAsymmetry_Mu82_EleUL90_DYflip_data.root" # "mkShapes__{}.root".format(tag) - -# Path to ouput folder -outputFolder = "../../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" - -# Path to batch folder (used for condor submission) -batchFolder = "condor" - -# Path to configuration folder (will contain all the compiled configuration files) -configsFolder = "configs" - -# luminosity to normalize to (in 1/fb) -# https://github.com/latinos/LatinoAnalysis/blob/UL_production/NanoGardener/python/data/TrigMaker_cfg.py#L27 (#95 #165) -# 16.802739097 + 1.063261220 + 1.655228036 = 19.521228353 -lumi = 19.52 - -# File with dict of aliases to define -aliasesFile = "../aliases.py" - -# File with dict of variables -variablesFile = "../variables.py" - -# File with dict of cuts -cutsFile = "cuts.py" - -# File with dict of samples -samplesFile = "../samples.py" - -# File with dict of samples for plotting -plotFile = 'plot.py' - -# File with dict of structure (used to define processes in combine) -structureFile = "structure.py" - -# Nuisances file for mkDatacards and for mkShape -nuisancesFile = "../nuisances.py" - -# Path to folder where to save plots -plotPath = '../plots_' + tag - -# This lines are executed right before the runner on the condor node -mountEOS = [] - -# List of imports to import when compiling the whole configuration folder, it should not contain imports used by configuration.py -imports = ["os", "glob", ("collections", "OrderedDict"), "ROOT"] - -# List of files to compile -filesToExec = [ - samplesFile, - aliasesFile, - variablesFile, - cutsFile, - plotFile, - nuisancesFile, - structureFile, -] - -# List of variables to keep in the compiled configuration folder -varsToKeep = [ - "batchVars", - "outputFolder", - "batchFolder", - "configsFolder", - "outputFile", - "runnerFile", - "tag", - "samples", - "aliases", - "variables", - ("cuts", {"cuts": "cuts", "preselections": "preselections"}), - ("plot", {"plot": "plot", "groupPlot": "groupPlot", "legend": "legend"}), - "nuisances", - "structure", - "lumi", -] - -# List of variables to keep in the batch submission script (script.py) -batchVars = varsToKeep[varsToKeep.index("samples") :] - -varsToKeep += ['plotPath'] diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_mm_CR/cuts.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_mm_CR/cuts.py deleted file mode 100644 index 091bbdd5..00000000 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_mm_CR/cuts.py +++ /dev/null @@ -1,37 +0,0 @@ -cuts = {} - -# cuts -preselections = 'mll>12 \ - && Lepton_pt[0]>25 \ - && Lepton_pt[1]>10 \ - && (abs(Lepton_pdgId[1])==13 || Lepton_pt[1]>13) \ - && abs(Lepton_eta[0])<2.5 && abs(Lepton_eta[1])<2.5 \ - && bVeto \ - && PuppiMET_pt > 30 \ - && !hole_veto \ - ' - -# Splitting in sub-leading lepton pT -#################################### - -## SR 1jet - -# mu-mu -cuts['hww2l2v_13TeV_WH_SS_noZveto_mm_1j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 13*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)<30 && mlljj20_whss > 50.', - 'categories' : { - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT >= 20 GeV) - 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT < 20 GeV) - 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - } -} - -# mlljj20_whss: -# inv_mass of: (jet1, jet2, 2*closest_lep_to_jets) -# jets are considered with pT > 20 GeV - -# Definitions of WH3l variables: -# https://github.com/latinos/LatinoAnalysis/blob/76e7c4b93aa5f056c92440d4e8d24e7de749c8fe/NanoGardener/python/modules/l3KinProducer.py diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_mm_CR/nuisances.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_mm_CR/nuisances.py deleted file mode 100644 index b4d4fb14..00000000 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_mm_CR/nuisances.py +++ /dev/null @@ -1,654 +0,0 @@ -import sys - -# Enable reading YR for Higgs XS and uncertainties -sys.path.append('../../../macros/') -import HiggsXSection -HiggsXS = HiggsXSection.HiggsXSection() - -nuisances = {} - -mcProduction = 'Summer20UL16_106x_nAODv9_HIPM_Full2016v9' -dataReco = 'Run2016_UL2016_nAODv9_HIPM_Full2016v9' -mcSteps = 'MCl1loose2016v9__MCCorr2016v9NoJERInHorn__l2tightOR2016v9' -fakeSteps = 'DATAl1loose2016v9__l2loose__fakeW' -dataSteps = 'DATAl1loose2016v9__l2loose__l2tightOR2016v9' - -treeBaseDir = '/eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano' -limitFiles = -1 - -mc = [skey for skey in samples if skey not in ('Fake', 'DATA','ChargeFlip')] - -redirector = "" - -useXROOTD = False - -def makeMCDirectory(var=''): - if var== '': - print(os.path.join(treeBaseDir, mcProduction, mcSteps)) - return os.path.join(treeBaseDir, mcProduction, mcSteps) - else: - print(os.path.join(treeBaseDir, mcProduction, mcSteps + '__' + var)) - return os.path.join(treeBaseDir, mcProduction, mcSteps + '__' + var) - -mcDirectory = makeMCDirectory() -fakeDirectory = os.path.join(treeBaseDir, dataReco, fakeSteps) -dataDirectory = os.path.join(treeBaseDir, dataReco, dataSteps) - -################################ EXPERIMENTAL UNCERTAINTIES ################################# - -#### Luminosity - -# https://twiki.cern.ch/twiki/bin/view/CMS/LumiRecommendationsRun2#LumiComb -# Uncorrelated 2016 1.0 -# Uncorrelated 2017 2.0 -# Uncorrelated 2018 1.5 -# Correlated 2016, 2017, 2018 0.6, 0.9, 2.0 -# Correlated 2017, 2018 0.6, 0.2 - -nuisances['lumi_Uncorrelated'] = { - 'name' : 'lumi_13TeV_2016', - 'type' : 'lnN', - 'samples' : dict((skey, '1.010') for skey in mc if skey not in ['WZ']) -} - -nuisances['lumi_Correlated_Run2'] = { - 'name' : 'lumi_13TeV_correlated', - 'type' : 'lnN', - 'samples' : dict((skey, '1.006') for skey in mc if skey not in ['WZ']) -} - - -#### FAKES -fake_syst_endcap = ['1.0*(abs(Lepton_eta[1])<=1.4) + 1.3*(abs(Lepton_eta[1])>1.4)', - '1.0*(abs(Lepton_eta[1])<=1.4) + 1.0/1.3*(abs(Lepton_eta[1])>1.4)'] - -fake_syst_barrel = [' 1.3*(abs(Lepton_eta[1])<=1.4) + 1.0*(abs(Lepton_eta[1])>1.4)', - '1.0/1.3*(abs(Lepton_eta[1])<=1.4) + 1.0*(abs(Lepton_eta[1])>1.4)'] - -nuisances['fake_syst_mm_barrel'] = { - 'name' : 'CMS_WH_hww_fake_syst_mm_barrel', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_mm' : fake_syst_barrel, - }, - 'cuts' : [cut for cut in cuts if ('_mm_' in cut)] -} -nuisances['fake_syst_mm_endcap'] = { - 'name' : 'CMS_WH_hww_fake_syst_mm_endcap', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_mm' : fake_syst_endcap, - }, - 'cuts' : [cut for cut in cuts if ('_mm_' in cut)] -} - -nuisances['fake_syst_em_barrel'] = { - 'name' : 'CMS_WH_hww_fake_syst_em_barrel', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_em' : fake_syst_barrel, - }, - 'cuts' : [cut for cut in cuts if ('_em_' in cut)] -} -nuisances['fake_syst_em_endcap'] = { - 'name' : 'CMS_WH_hww_fake_syst_em_endcap', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_em' : fake_syst_endcap, - }, - 'cuts' : [cut for cut in cuts if ('_em_' in cut)] -} - -nuisances['fake_syst_ee_barrel'] = { - 'name' : 'CMS_WH_hww_fake_syst_ee_barrel', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_ee' : fake_syst_barrel, - }, - 'cuts' : [cut for cut in cuts if ('_ee_' in cut)] -} -nuisances['fake_syst_ee_endcap'] = { - 'name' : 'CMS_WH_hww_fake_syst_ee_endcap', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_ee' : fake_syst_endcap, - }, - 'cuts' : [cut for cut in cuts if ('_ee_' in cut)] -} - -nuisances['fake_ele'] = { - 'name' : 'CMS_WH_hww_fake_e_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_ee' : ['fakeWEleUp', 'fakeWEleDown'], - 'Fake_em' : ['fakeWEleUp', 'fakeWEleDown'], - } -} -nuisances['fake_ele_stat'] = { - 'name' : 'CMS_WH_hww_fake_stat_e_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_ee' : ['fakeWStatEleUp', 'fakeWStatEleDown'], - 'Fake_em' : ['fakeWStatEleUp', 'fakeWStatEleDown'], - } -} -nuisances['fake_mu'] = { - 'name' : 'CMS_WH_hww_fake_m_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_mm' : ['fakeWMuUp', 'fakeWMuDown'], - 'Fake_em' : ['fakeWMuUp', 'fakeWMuDown'], - } -} -nuisances['fake_mu_stat'] = { - 'name' : 'CMS_WH_hww_fake_stat_m_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_mm' : ['fakeWStatMuUp', 'fakeWStatMuDown'], - 'Fake_em' : ['fakeWStatMuUp', 'fakeWStatMuDown'], - } -} - -###### B-tagger - -for shift in ['lf', 'hf', 'hfstats1', 'hfstats2', 'lfstats1', 'lfstats2', 'cferr1', 'cferr2']: - btag_syst = ['(btagSF%sup)/(btagSF)' % shift, '(btagSF%sdown)/(btagSF)' % shift] - - name = 'CMS_btag_%s' % shift - if 'stats' in shift: - name += '_2016' - - nuisances['btag_shape_%s' % shift] = { - 'name' : name, - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, btag_syst) for skey in mc), - } - -##### Trigger Scale Factors - -trig_syst = ['TriggerSFWeight_2l_u/TriggerSFWeight_2l', 'TriggerSFWeight_2l_d/TriggerSFWeight_2l'] - -nuisances['trigg'] = { - 'name' : 'CMS_eff_hwwtrigger_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, trig_syst) for skey in mc) -} - -##### Electron Efficiency and energy scale - -nuisances['eff_e'] = { - 'name' : 'CMS_eff_e_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['SFweightEleUp', 'SFweightEleDown']) for skey in mc) -} - -nuisances['eff_ttHMVA_e'] = { - 'name' : 'CMS_eff_ttHMVA_e_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['LepWPttHMVASFEleUp', 'LepWPttHMVASFEleDown']) for skey in mc) -} - -nuisances['electronpt'] = { - 'name' : 'CMS_scale_e_2016', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'ElepTup', - 'mapDown' : 'ElepTdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('ElepTup_suffix'), - 'folderDown' : makeMCDirectory('ElepTdo_suffix'), - 'AsLnN' : '0' -} - -##### Muon Efficiency and energy scale - -nuisances['eff_m'] = { - 'name' : 'CMS_eff_m_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['SFweightMuUp', 'SFweightMuDown']) for skey in mc) -} - -nuisances['eff_ttHMVA_m'] = { - 'name' : 'CMS_eff_ttHMVA_m_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['LepWPttHMVASFMuUp', 'LepWPttHMVASFMuDown']) for skey in mc) -} - -nuisances['muonpt'] = { - 'name' : 'CMS_scale_m_2016', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'MupTup', - 'mapDown' : 'MupTdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('MupTup_suffix'), - 'folderDown' : makeMCDirectory('MupTdo_suffix'), - 'AsLnN' : '0' -} - -##### Jet energy scale -jes_systs = ['JESAbsolute','JESAbsolute_2016','JESBBEC1','JESBBEC1_2016','JESEC2','JESEC2_2016','JESFlavorQCD','JESHF','JESHF_2016','JESRelativeBal','JESRelativeSample_2016'] - -for js in jes_systs: - - nuisances[js] = { - 'name' : 'CMS_scale_' + js.replace("JES","j_"), - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : js + 'up', - 'mapDown' : js + 'do', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('RDF__JESup_suffix'), - 'folderDown': makeMCDirectory('RDF__JESdo_suffix'), - 'reweight' : ['btagSF'+js.replace('JES','jes')+'up/btagSF','btagSF'+js.replace('JES','jes')+'down/btagSF'], - 'AsLnN' : '0' - } - -##### Jet energy resolution -nuisances['JER'] = { - 'name' : 'CMS_res_j_2016', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'JERup', - 'mapDown' : 'JERdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('JERup_suffix'), - 'folderDown': makeMCDirectory('JERdo_suffix'), - 'AsLnN' : '0' -} - -##### MET unclustered energy - -# metUp.PuppiMET_pt_METup -nuisances['met'] = { - 'name' : 'CMS_scale_met_2016', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'METup', - 'mapDown' : 'METdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('METup_suffix'), - 'folderDown': makeMCDirectory('METdo_suffix'), - 'AsLnN' : '0' -} - - -##### Pileup - -# puWeight_UL2016 -nuisances['PU'] = { - 'name' : 'CMS_pileup_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'DY' : ['1.008421*(puWeightUp/puWeight)', '0.992494*(puWeightDown/puWeight)'], - 'WW' : ['1.010428*(puWeightUp/puWeight)', '0.990400*(puWeightDown/puWeight)'], - 'ggWW' : ['1.012367*(puWeightUp/puWeight)', '0.988402*(puWeightDown/puWeight)'], - 'Vg' : ['0.995630*(puWeightUp/puWeight)', '1.007076*(puWeightDown/puWeight)'], - 'WZ' : ['1.002037*(puWeightUp/puWeight)', '0.997721*(puWeightDown/puWeight)'], - 'ZZ' : ['1.006574*(puWeightUp/puWeight)', '0.993175*(puWeightDown/puWeight)'], - 'VVV' : ['1.012827*(puWeightUp/puWeight)', '0.989623*(puWeightDown/puWeight)'], - 'top' : ['1.009336*(puWeightUp/puWeight)', '0.991324*(puWeightDown/puWeight)'], - 'Higgs' : ['1.011609*(puWeightUp/puWeight)', '0.989039*(puWeightDown/puWeight)'], - }, - 'AsLnN' : '0', -} - -### PU ID SF uncertainty - -puid_syst = ['Jet_PUIDSF_up/Jet_PUIDSF', 'Jet_PUIDSF_down/Jet_PUIDSF'] - -nuisances['jetPUID'] = { - 'name' : 'CMS_eff_j_PUJET_id_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, puid_syst) for skey in mc) -} - -### PS and UE - -nuisances['PS_ISR'] = { - 'name' : 'PS_WH_hww_ISR', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['PSWeight[2]', 'PSWeight[0]']) for skey in mc), - 'AsLnN' : '0', -} - -nuisances['PS_FSR'] = { - 'name' : 'PS_WH_hww_FSR', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['PSWeight[3]', 'PSWeight[1]']) for skey in mc), - 'AsLnN' : '0', -} - -nuisances['UE_CP5'] = { - 'name' : 'CMS_WH_hww_UE', - 'skipCMS' : 1, - 'type' : 'lnN', - 'samples' : dict((skey, '1.015') for skey in mc), -} - -# Charge flip efficiency -nuisances['chargeFlipEff'] = { - 'name' : 'CMS_whss_chargeFlipEff_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['1-ttHMVA_eff_err_flip_2l', '1+ttHMVA_eff_err_flip_2l']) for skey in ['DY','ChargeFlip']), - 'cuts' : [cut for cut in cuts if ('_ee_' in cut or '_em_' in cut)] -} - -# Charge flip: uncertainty on opposite sign processes not affected by charge-flip -nuisances['chargeFlip_syst'] = { - 'name' : 'CMS_ChargeFlip_syst', - 'type' : 'lnN', - 'samples' : { - 'ChargeFlip' : '1.10', - } -} - -# Top pT reweighting uncertainty - -nuisances['TopPtRew'] = { - 'name' : 'CMS_top_pT_reweighting', # Theory uncertainty - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'top': ["1.", "1./Top_pTrw"] - }, - 'symmetrize' : True -} - -nuisances['WgStar'] = { - 'name' : 'CMS_hww_WgStarScale', - 'type' : 'lnN', - 'samples' : { - 'WgS' : '1.25' - } -} - -###### pdf uncertainties - -valuesggh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggH', '125.09','pdf','sm') -valuesggzh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggZH','125.09','pdf','sm') -valuesbbh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','bbH', '125.09','pdf','sm') - -nuisances['pdf_Higgs_gg'] = { - 'name' : 'pdf_Higgs_gg', - 'samples' : { - 'ggH_hww' : valuesggh, - 'ggH_htt' : valuesggh, - 'ggZH_hww' : valuesggzh, - 'bbH_hww' : valuesbbh, - }, - 'type' : 'lnN', -} - -# For ttH, we need to use 1./values -values = str(1./float(HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ttH','125.09','pdf','sm'))) - -nuisances['pdf_Higgs_ttH'] = { - 'name' : 'pdf_Higgs_ttH', - 'samples' : { - 'ttH_hww': values, - }, - 'type' : 'lnN', -} - -valuesqqh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','vbfH','125.09','pdf','sm') -valueswh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','WH', '125.09','pdf','sm') -valueszh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ZH', '125.09','pdf','sm') - -nuisances['pdf_Higgs_qqbar'] = { - 'name' : 'pdf_Higgs_qqbar', - 'type' : 'lnN', - 'samples': { - 'qqH_hww' : valuesqqh, - 'qqH_htt' : valuesqqh, - 'WH_hww_plus' : valueswh, - 'WH_hww_minus': valueswh, - 'WH_htt_plus' : valueswh, - 'WH_htt_minus': valueswh, - 'ZH_hww' : valueszh, - 'ZH_htt' : valueszh - }, -} - -nuisances['pdf_qqbar'] = { - 'name' : 'pdf_qqbar', - 'type' : 'lnN', - 'samples' : { - 'Wg' : '1.04', - 'Zg' : '1.04', - 'ZZ' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 - 'WZ' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 - 'WgS' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 - 'ZgS' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 - }, -} - -nuisances['pdf_gg'] = { - 'name': 'pdf_gg', - 'type': 'lnN', - 'samples': { - 'ggWW' : '1.05', - }, -} - -nuisances['pdf_Higgs_gg_ACCEPT'] = { - 'name' : 'pdf_WH_hww_Higgs_gg_ACCEPT', - 'samples' : { - 'ggH_hww' : '1.006', - 'ggH_htt' : '1.006', - 'ggZH_hww' : '1.006', - 'bbH_hww' : '1.006' - }, - 'type' : 'lnN', -} -nuisances['pdf_gg_ACCEPT'] = { - 'name' : 'pdf_WH_hww_gg_ACCEPT', - 'samples' : { - 'ggWW' : '1.006', - }, - 'type' : 'lnN', -} - -nuisances['pdf_Higgs_qqbar_ACCEPT'] = { - 'name' : 'pdf_WH_hww_Higgs_qqbar_ACCEPT', - 'type' : 'lnN', - 'samples' : { - 'qqH_hww' : '1.002', - 'qqH_htt' : '1.002', - 'WH_hww_plus' : '1.003', - 'WH_hww_minus': '1.003', - 'WH_htt_plus' : '1.003', - 'WH_htt_minus': '1.003', - 'ZH_hww' : '1.002', - 'ZH_htt' : '1.002', - }, -} - -nuisances['pdf_qqbar_ACCEPT'] = { - 'name' : 'pdf_WH_hww_qqbar_ACCEPT', - 'type' : 'lnN', - 'samples' : { - 'ZZ' : '1.001', - 'WZ' : '1.001', - }, -} - -##### Renormalization & factorization scales - -## Shape nuisance due to QCD scale variations for DY -## LHE scale variation weights (w_var / w_nominal) - -## This should work for samples with either 8 or 9 LHE scale weights (Length$(LHEScaleWeight) == 8 or 9) -variations = ['Alt(LHEScaleWeight,0,1)', 'Alt(LHEScaleWeight,1,1)', 'Alt(LHEScaleWeight,3,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-4,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-2,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-1,1)'] - -# nuisances['QCDscale_V'] = { -# 'name' : 'QCDscale_V', -# 'skipCMS' : 1, -# 'kind' : 'weight_envelope', -# 'type' : 'shape', -# 'samples' : { -# 'DY' : variations -# }, -# 'AsLnN' : '0' -# } - -nuisances['QCDscale_VV'] = { - 'name' : 'QCDscale_VV', - 'kind' : 'weight_envelope', - 'type' : 'shape', - 'samples' : { - 'WW' : variations, - 'Zg' : variations, - 'Wg' : variations, - 'ZZ' : variations, - 'WZ' : variations, - 'WgS' : variations, - 'ZgS' : variations - } -} - -nuisances['QCDscale_ggVV'] = { - 'name' : 'QCDscale_ggVV', - 'type' : 'lnN', - 'samples' : { - 'ggWW' : '1.15', - }, -} - -#### QCD scale uncertainties for Higgs signals other than ggH - -values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','vbfH','125.09','scale','sm') - -nuisances['QCDscale_qqH'] = { - 'name' : 'QCDscale_qqH', - 'samples' : { - 'qqH_hww' : values, - 'qqH_htt' : values, - }, - 'type' : 'lnN' -} - -valueswh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','WH','125.09','scale','sm') -valueszh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ZH','125.09','scale','sm') - -nuisances['QCDscale_VH'] = { - 'name' : 'QCDscale_VH', - 'samples' : { - 'WH_hww_plus' : valueswh, - 'WH_hww_minus' : valueswh, - 'WH_htt_plus' : valueswh, - 'WH_htt_minus' : valueswh, - 'ZH_hww' : valueszh, - 'ZH_htt' : valueszh, - }, - 'type' : 'lnN', -} - -values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggZH','125.09','scale','sm') - -nuisances['QCDscale_ggZH'] = { - 'name' : 'QCDscale_ggZH', - 'samples' : { - 'ggZH_hww' : values, - }, - 'type' : 'lnN', -} - -values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ttH','125.09','scale','sm') - -nuisances['QCDscale_ttH'] = { - 'name' : 'QCDscale_ttH', - 'samples' : { - 'ttH_hww' : values, - }, - 'type' : 'lnN', -} - -nuisances['QCDscale_WWewk'] = { - 'name' : 'QCDscale_WWewk', - 'samples' : { - 'WWewk' : '1.11', - }, - 'type' : 'lnN' -} - -nuisances['QCDscale_qqbar_ACCEPT'] = { - 'name' : 'QCDscale_qqbar_ACCEPT', - 'type' : 'lnN', - 'samples' : { - 'qqH_hww' : '1.003', - 'qqH_htt' : '1.003', - 'WH_hww_plus' : '1.010', - 'WH_hww_minus' : '1.010', - 'WH_htt_plus' : '1.010', - 'WH_htt_minus' : '1.010', - 'ZH_hww' : '1.015', - 'ZH_htt' : '1.015', - } -} - -# FIXME: these come from HIG-16-042, maybe should be recomputed? -nuisances['QCDscale_gg_ACCEPT'] = { - 'name' : 'QCDscale_gg_ACCEPT', - 'samples' : { - 'ggH_htt' : '1.012', - 'ggH_hww' : '1.012', - 'ggZH_hww' : '1.012', - 'ggWW' : '1.012', - }, - 'type' : 'lnN', -} - -# WZ normalization from control region - -nuisances['WZ2jnorm'] = { - 'name' : 'CMS_hww_WZ3l2jnorm', - 'samples' : { - 'WZ' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [cut for cut in cuts if '2j' in cut], -} - -nuisances['WZ1jnorm'] = { - 'name' : 'CMS_hww_WZ3l1jnorm', - 'samples' : { - 'WZ' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [cut for cut in cuts if '1j' in cut], -} - -# Use the following if you want to apply the automatic combine MC stat nuisances. -nuisances['stat'] = { - 'type' : 'auto', - 'maxPoiss' : '10', - 'includeSignal' : '0', - 'samples' : {} -} -# nuisance ['maxPoiss'] = Number of threshold events for Poisson modelling -# nuisance ['includeSignal'] = Include MC stat nuisances on signal processes (1=True, 0=False) - -for n in nuisances.values(): - n['skipCMS'] = 1 diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_mm_CR/plot.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_mm_CR/plot.py deleted file mode 100644 index 035a1e67..00000000 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_mm_CR/plot.py +++ /dev/null @@ -1,356 +0,0 @@ -# plot configuration - -# Groups of samples to improve the plots. -# If not defined, normal plots is used - -# BTag normalization factors -# Cut = hww2l2v_13TeV_samesign_1j -scale_histo_ttH_hww = 0.180276825892/0.112076406383 # 1.60851718672 -scale_histo_WW = 17.3368525364/17.0463611631 # 1.01704125417 -scale_histo_DY = 44.6641027279/49.5473999849 # 0.901441906972 -scale_histo_WZ = 135.267286694/126.276144721 # 1.07120222108 -scale_histo_Wg = 156.275315526/155.431783489 # 1.00542702412 -scale_histo_Vg = (156.275315526+20.6166113057)/(155.431783489+19.4013313972) -scale_histo_Zg = 20.6166113057/19.4013313972 # 1.06263899542 -scale_histo_WgS = 65.9150772791/63.6120002002 # 1.0362050725 -scale_histo_ZgS = 7.64935533742/7.44793554501 # 1.02704370778 -scale_histo_VgS = (65.9150772791+7.64935533742)/(63.6120002002+7.44793554501) -scale_histo_ZH_htt = 0.224625941246/0.19374122565 # 1.15941220301 -scale_histo_WH_htt_plus = 1.41360321279/1.31045936383 # 1.0787081628 -scale_histo_ggZH_hww = 0.119893497698/0.114894546858 # 1.04350903482 -scale_histo_qqH_hww = 0.0652589391265/0.0634855506858 # 1.02793373329 -scale_histo_ZZ = 3.62010890634/3.26054685233 # 1.11027661012 -scale_histo_ggH_hww = 0.894624256178/0.85372059232 # 1.04791223759 -scale_histo_WH_htt_minus = 0.907955295271/0.848840692488 # 1.06964157504 -scale_histo_VVV = 4.65032694939/4.52020086114 # 1.0287876783 -scale_histo_WH_hww_plus = 3.56933756638/3.42337605238 # 1.04263671644 -scale_histo_ggH_htt = 0.0533884742322/0.0490732410875 # 1.08793454537 -scale_histo_ggH_htt = 0.0533884742322/0.0490732410875 # 1.08793454537 -scale_histo_ggWW = 1.02379148736/1.00096980162 # 1.02279957468 -scale_histo_top = 108.055607163/81.5017466136 # 1.32580725755 -scale_histo_WWewk = 0.137471641848/0.135830927369 # 1.01207909355 -scale_histo_ZH_hww = 0.578285123642/0.536470527952 # 1.0779438823 -scale_histo_WH_hww_minus = 2.32124386049/2.22327156849 # 1.04406672284 -scale_histo_qqH_htt = 0.00350350762844/0.00350350762844 # 1.0 - -groupPlot = {} - -# groupPlot['top'] = { -# 'nameHR' : 'tW+ and t#bar{t}', -# 'isSignal' : 0, -# 'color' : 400, # kYellow -# 'samples' : ['top'] -# } - -# groupPlot['WW'] = { -# 'nameHR' : 'WW', -# 'isSignal' : 0, -# 'color' : 851, # kAzure -9 -# 'samples' : ['WW', 'ggWW', 'WWewk'] -# } - -# groupPlot['DY'] = { -# 'nameHR' : "DY", -# 'isSignal' : 0, -# 'color' : 418, # kGreen+2 -# 'samples' : ['DY'] -# } - -groupPlot['Fake'] = { - 'nameHR' : 'Non-prompt', - 'isSignal' : 0, - 'color' : 921, # kGray + 1 - 'samples' : ['Fake_mm','Fake_em','Fake_ee'] -} - -# groupPlot['ChargeFlip'] = { -# 'nameHR' : "charge_flip", -# 'isSignal' : 0, -# 'color' : 418, # kGreen+2 -# 'samples' : ['ChargeFlip'] -# } - -groupPlot['VVV'] = { - 'nameHR' : 'VVV', - 'isSignal' : 0, - 'color' : 857, # kAzure -3 - 'samples' : ['VVV'] -} - -groupPlot['ZZ'] = { - 'nameHR' : "ZZ", - 'isSignal' : 0, - 'color' : 617, # kViolet + 1 - 'samples' : ['ZZ'] -} - -groupPlot['WZ'] = { - 'nameHR' : "WZ", - 'isSignal' : 0, - 'color' : 619, # kViolet + 1 - 'samples' : ['WZ'] -} - -groupPlot['Vg'] = { - 'nameHR' : "V#gamma", - 'isSignal' : 0, - 'color' : 810, # kOrange + 10 - 'samples' : ['Vg'] -} - -groupPlot['VgS'] = { - 'nameHR' : "V#gamma*", - 'isSignal' : 0, - 'color' : 412, # kGreen - 9 - 'samples' : ['VgS'] -} - -groupPlot['Higgs'] = { - 'nameHR' : 'Higgs', - 'isSignal' : 0, - 'color' : 632, # kRed - 'samples' : ['ggH_hww','qqH_hww','ZH_hww','ggZH_hww','ttH_hww','ggH_htt','qqH_htt','ZH_htt'] -} - -groupPlot['WH_minus'] = { - 'nameHR' : 'W^{-} H (x 10)', - 'isSignal' : 2, - 'color' : 600, # kBlue - 'samples' : ['WH_hww_minus','WH_htt_minus'] -} - -groupPlot['WH_plus'] = { - 'nameHR' : 'W^{+} H (x 10)', - 'isSignal' : 2, - 'color' : 632, # kRed - 'samples' : ['WH_hww_plus', 'WH_htt_plus'] -} - - -# keys here must match keys in samples.py - -plot = {} - -# plot['ChargeFlip'] = { -# 'color' : 418, # kGreen+2 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : 0.5, -# } - -# plot['DY'] = { -# 'color' : 418, # kGreen+2 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : scale_histo_DY, -# } - -# plot['top'] = { -# 'nameHR' : 'tW and t#bar{t}', -# 'color' : 400, # kYellow -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : scale_histo_top, -# } - -# plot['WW'] = { -# 'color' : 851, # kAzure -9 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : scale_histo_WW, -# } - -# plot['WWewk'] = { -# 'color' : 850, # kAzure -10 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : scale_histo_WWewk, -# } - -# plot['ggWW'] = { -# 'color' : 850, # kAzure -10 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : scale_histo_ggWW, -# } - -plot['Vg'] = { - 'color' : 859, # kAzure -1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_Vg, -} - -plot['VgS'] = { - 'color' : 859, # kAzure -1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_VgS, -} - -plot['WZ'] = { - 'color' : 858, # kAzure -2 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_WZ * 1.138, # NLO -> NNLO k-factor! -} - -plot['ZZ'] = { - 'color' : 858, # kAzure -2 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ZZ, -} - -plot['VVV'] = { - 'color' : 857, # kAzure -3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_VVV, -} - -########### -# Signals # -########### - -# HWW - -plot['ggH_hww'] = { - 'color' : 632, # kRed - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggH_hww, -} - -plot['qqH_hww'] = { - 'color' : 632+1, # kRed+1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_qqH_hww, -} - -plot['ZH_hww'] = { - 'color' : 632+3, # kRed+3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ZH_hww, -} - -plot['ggZH_hww'] = { - 'color' : 632+4, # kRed+4 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggZH_hww, -} - -plot['WH_hww_plus'] = { - 'color' : 632+2, # kRed+2 - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_hww_plus, -} - -plot['WH_hww_minus'] = { - 'color' : 600, # kBlue - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_hww_minus, -} - -plot['ttH_hww'] = { - 'color' : 632+3, # kRed+3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ttH_hww, -} - - -# Htautau - -plot['ggH_htt'] = { - 'color' : 632, # kRed - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggH_htt, -} - -plot['qqH_htt'] = { - 'color' : 632+1, # kRed+1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_qqH_htt, -} - -plot['ZH_htt'] = { - 'color' : 632+3, # kRed+3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ZH_htt, -} - -plot['WH_htt_plus'] = { - 'color' : 632+2, # kRed+2 - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_htt_plus, -} - -plot['WH_htt_minus'] = { - 'color' : 632+2, # kRed+2 - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_htt_minus, -} - - -######## -# Fake # -######## - -plot['Fake_em'] = { - 'color' : 921, # kGray + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['Fake_ee'] = { - 'color' : 921, # kGray + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['Fake_mm'] = { - 'color' : 921, # kGray + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -# plot['Fake'] = { -# 'color' : 921, # kGray + 1 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : 1.0 -# } - -######## -# Data # -######## - -plot['DATA'] = { - 'nameHR' : 'Data', - 'color' : 1 , - 'isSignal' : 0, - 'isData' : 1, - 'isBlind' : 0, -} - - -# Define legend - -legend = {} - -legend['lumi'] = 'L = 19.5 fb^{-1}' -legend['sqrt'] = '#sqrt{s} = 13 TeV' diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_mm_CR/structure.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_mm_CR/structure.py deleted file mode 100644 index e33fcbbb..00000000 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_mm_CR/structure.py +++ /dev/null @@ -1,203 +0,0 @@ -# structure configuration for datacard - -# keys here must match keys in samples.py - -structure = {} - -signal_normalization = 10.0 - -# BTag normalization factors -# Cut = hww2l2v_13TeV_samesign_1j -scale_histo_ttH_hww = 0.180276825892/0.112076406383 # 1.60851718672 -scale_histo_WW = 17.3368525364/17.0463611631 # 1.01704125417 -scale_histo_DY = 44.6641027279/49.5473999849 # 0.901441906972 -scale_histo_WZ = 135.267286694/126.276144721 # 1.07120222108 -scale_histo_Wg = 156.275315526/155.431783489 # 1.00542702412 -scale_histo_Zg = 20.6166113057/19.4013313972 # 1.06263899542 -scale_histo_Vg = (156.275315526+20.6166113057)/(155.431783489+19.4013313972) -scale_histo_WgS = 65.9150772791/63.6120002002 # 1.0362050725 -scale_histo_ZgS = 7.64935533742/7.44793554501 # 1.02704370778 -scale_histo_VgS = (65.9150772791+7.64935533742)/(63.6120002002+7.44793554501) -scale_histo_ZH_htt = 0.224625941246/0.19374122565 # 1.15941220301 -scale_histo_WH_htt_plus = 1.41360321279/1.31045936383 # 1.0787081628 -scale_histo_ggZH_hww = 0.119893497698/0.114894546858 # 1.04350903482 -scale_histo_qqH_hww = 0.0652589391265/0.0634855506858 # 1.02793373329 -scale_histo_ZZ = 3.62010890634/3.26054685233 # 1.11027661012 -scale_histo_ggH_hww = 0.894624256178/0.85372059232 # 1.04791223759 -scale_histo_WH_htt_minus = 0.907955295271/0.848840692488 # 1.06964157504 -scale_histo_VVV = 4.65032694939/4.52020086114 # 1.0287876783 -scale_histo_WH_hww_plus = 3.56933756638/3.42337605238 # 1.04263671644 -scale_histo_ggH_htt = 0.0533884742322/0.0490732410875 # 1.08793454537 -scale_histo_ggH_htt = 0.0533884742322/0.0490732410875 # 1.08793454537 -scale_histo_ggWW = 1.02379148736/1.00096980162 # 1.02279957468 -scale_histo_top = 108.055607163/81.5017466136 # 1.32580725755 -scale_histo_WWewk = 0.137471641848/0.135830927369 # 1.01207909355 -scale_histo_ZH_hww = 0.578285123642/0.536470527952 # 1.0779438823 -scale_histo_WH_hww_minus = 2.32124386049/2.22327156849 # 1.04406672284 -scale_histo_qqH_htt = 0.00350350762844/0.00350350762844 # 1.0 - -# structure['DY'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_DY, -# } - -# structure['top'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_top, -# } - -# structure['WW'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_WW, -# } - -# structure['WWewk'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_WWewk, -# } - -# structure['ggWW'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_ggWW, -# } - - -# structure['Vg'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_Vg, -# } - -structure['VgS'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_VgS, -} - -structure['WZ'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WZ * 1.138 # NLO -> NNLO k-factor -} - -structure['ZZ'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZZ, -} - -structure['VVV'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_VVV, -} - - -# Higgs -structure['ggH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ggH_hww, -} - -structure['qqH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_qqH_hww, -} - -structure['ZH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZH_hww, -} - -structure['ggZH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ggZH_hww, -} - -structure['WH_hww_plus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_hww_plus*signal_normalization, -} - -structure['WH_hww_minus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_hww_minus*signal_normalization, -} - -structure['ttH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ttH_hww, -} - -structure['ggH_htt'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ggH_htt, -} - -structure['qqH_htt'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_qqH_htt, -} - -structure['ZH_htt'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZH_htt, -} - -structure['WH_htt_plus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_htt_plus*signal_normalization, -} - -structure['WH_htt_minus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_htt_minus*signal_normalization, -} - - -# Fakes -structure['Fake_ee'] = { - 'isSignal' : 0, - 'isData' : 0, -} - -structure['Fake_mm'] = { - 'isSignal' : 0, - 'isData' : 0, -} - -structure['Fake_em'] = { - 'isSignal' : 0, - 'isData' : 0, -} - - -# # Data-driven charge flip estimation -# structure['ChargeFlip'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : 0.5, -# } - -# Data -structure['DATA'] = { - 'isSignal' : 0, - 'isData' : 1 -} diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_CR/README.md b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_CR/README.md deleted file mode 100644 index ba17b328..00000000 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_CR/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# Configuration for WHSS 1j signal region - -### Plot distributions - -Compile configuration and plot distributions: - - mkShapesRDF -c 1 - - mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png - -### Produce datacards - -Compile configuration and produce datacards: - - mkShapesRDF -c 1 - - mkDatacards --outputDirDatacard ../datacards_original_signal_scale --skipMissingNuisance \ No newline at end of file diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_CR/configuration.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_CR/configuration.py deleted file mode 100644 index bd3887a6..00000000 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_CR/configuration.py +++ /dev/null @@ -1,99 +0,0 @@ -# Configuration file for charge asymmetry WHSS analysis using the UL 2016HIPM dataset - -import sys,inspect - -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_CR - -configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file -configurations_nuisance = os.path.dirname(configurations_nuisance) # configuration_2j_CR -configurations_nuisance = os.path.dirname(configurations_nuisance) # WHSS -configurations_nuisance = os.path.dirname(configurations_nuisance) # 2016HIPM_v9 -configurations_nuisance = os.path.dirname(configurations_nuisance) # UL - -# Tag used to identify the configuration folder version -tag = 'WHSS_2016HIPM_v9_chargeAsymmetry_Mu82_EleUL90' - -# File to use as runner script, default uses mkShapesRDF.shapeAnalysis.runner, otherwise specify path to script -runnerFile = "default" - -# Output file name -outputFile = "plots_WHSS_2016HIPM_v9_chargeAsymmetry_Mu82_EleUL90_DYflip_data.root" # "mkShapes__{}.root".format(tag) - -# Path to ouput folder -outputFolder = "../../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" - -# Path to batch folder (used for condor submission) -batchFolder = "condor" - -# Path to configuration folder (will contain all the compiled configuration files) -configsFolder = "configs" - -# luminosity to normalize to (in 1/fb) -# https://github.com/latinos/LatinoAnalysis/blob/UL_production/NanoGardener/python/data/TrigMaker_cfg.py#L27 (#95 #165) -# 16.802739097 + 1.063261220 + 1.655228036 = 19.521228353 -lumi = 19.52 - -# File with dict of aliases to define -aliasesFile = "../aliases.py" - -# File with dict of variables -variablesFile = "../variables.py" - -# File with dict of cuts -cutsFile = "cuts.py" - -# File with dict of samples -samplesFile = "samples.py" - -# File with dict of samples for plotting -plotFile = 'plot.py' - -# File with dict of structure (used to define processes in combine) -structureFile = "structure.py" - -# Nuisances file for mkDatacards and for mkShape -nuisancesFile = "../nuisances.py" - -# Path to folder where to save plots -plotPath = '../plots_' + tag - -# This lines are executed right before the runner on the condor node -mountEOS = [] - -# List of imports to import when compiling the whole configuration folder, it should not contain imports used by configuration.py -imports = ["os", "glob", ("collections", "OrderedDict"), "ROOT"] - -# List of files to compile -filesToExec = [ - samplesFile, - aliasesFile, - variablesFile, - cutsFile, - plotFile, - nuisancesFile, - structureFile, -] - -# List of variables to keep in the compiled configuration folder -varsToKeep = [ - "batchVars", - "outputFolder", - "batchFolder", - "configsFolder", - "outputFile", - "runnerFile", - "tag", - "samples", - "aliases", - "variables", - ("cuts", {"cuts": "cuts", "preselections": "preselections"}), - ("plot", {"plot": "plot", "groupPlot": "groupPlot", "legend": "legend"}), - "nuisances", - "structure", - "lumi", -] - -# List of variables to keep in the batch submission script (script.py) -batchVars = varsToKeep[varsToKeep.index("samples") :] - -varsToKeep += ['plotPath'] diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_CR/cuts.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_CR/cuts.py deleted file mode 100644 index 7f25bb75..00000000 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_CR/cuts.py +++ /dev/null @@ -1,65 +0,0 @@ -cuts = {} - -# cuts -preselections = 'mll>12 \ - && Lepton_pt[0]>25 \ - && Lepton_pt[1]>10 \ - && (abs(Lepton_pdgId[1])==13 || Lepton_pt[1]>13) \ - && abs(Lepton_eta[0])<2.5 && abs(Lepton_eta[1])<2.5 \ - && bVeto \ - && PuppiMET_pt > 30 \ - && !hole_veto \ - ' - -# Splitting in sub-leading lepton pT -#################################### - -## SR 2jets - -# mu-e -cuts['hww2l2v_13TeV_WH_SS_em_2j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && mjj < 100 && mlljj20_whss > 50.', - 'categories' : { - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT >= 20 GeV) - 'SS_CR_plus_pt2ge20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2ge20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT < 20 GeV) - 'SS_CR_plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - } -} - -# e-e -cuts['hww2l2v_13TeV_WH_SS_ee_2j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*11) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && mjj < 100 && abs(mll-91.2)>15 && mlljj20_whss > 50.', - 'categories' : { - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT >= 20 GeV) - 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT < 20 GeV) - 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - } -} - -## DY->ee CR - 2 same-sign electrons IN the Z peak. To check the charge-flip probability method to estimate DY in the signal region - -# DY CR 2jets -cuts['hww2l2v_13TeV_WH_SS_DYee_2j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 11*11) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && mjj < 100 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0 && abs(mll-91.2)<15 && mlljj20_whss > 50.', - 'categories' : { - # Sub-leading lepton pT >= 20 GeV - 'plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20', - 'minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20', - 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20', - } -} - -# mlljj20_whss: -# inv_mass of: (jet1, jet2, 2*closest_lep_to_jets) -# jets are considered with pT > 20 GeV - -# Definitions of WH3l variables: -# https://github.com/latinos/LatinoAnalysis/blob/76e7c4b93aa5f056c92440d4e8d24e7de749c8fe/NanoGardener/python/modules/l3KinProducer.py diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_CR/nuisances.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_CR/nuisances.py deleted file mode 100644 index b4d4fb14..00000000 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_CR/nuisances.py +++ /dev/null @@ -1,654 +0,0 @@ -import sys - -# Enable reading YR for Higgs XS and uncertainties -sys.path.append('../../../macros/') -import HiggsXSection -HiggsXS = HiggsXSection.HiggsXSection() - -nuisances = {} - -mcProduction = 'Summer20UL16_106x_nAODv9_HIPM_Full2016v9' -dataReco = 'Run2016_UL2016_nAODv9_HIPM_Full2016v9' -mcSteps = 'MCl1loose2016v9__MCCorr2016v9NoJERInHorn__l2tightOR2016v9' -fakeSteps = 'DATAl1loose2016v9__l2loose__fakeW' -dataSteps = 'DATAl1loose2016v9__l2loose__l2tightOR2016v9' - -treeBaseDir = '/eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano' -limitFiles = -1 - -mc = [skey for skey in samples if skey not in ('Fake', 'DATA','ChargeFlip')] - -redirector = "" - -useXROOTD = False - -def makeMCDirectory(var=''): - if var== '': - print(os.path.join(treeBaseDir, mcProduction, mcSteps)) - return os.path.join(treeBaseDir, mcProduction, mcSteps) - else: - print(os.path.join(treeBaseDir, mcProduction, mcSteps + '__' + var)) - return os.path.join(treeBaseDir, mcProduction, mcSteps + '__' + var) - -mcDirectory = makeMCDirectory() -fakeDirectory = os.path.join(treeBaseDir, dataReco, fakeSteps) -dataDirectory = os.path.join(treeBaseDir, dataReco, dataSteps) - -################################ EXPERIMENTAL UNCERTAINTIES ################################# - -#### Luminosity - -# https://twiki.cern.ch/twiki/bin/view/CMS/LumiRecommendationsRun2#LumiComb -# Uncorrelated 2016 1.0 -# Uncorrelated 2017 2.0 -# Uncorrelated 2018 1.5 -# Correlated 2016, 2017, 2018 0.6, 0.9, 2.0 -# Correlated 2017, 2018 0.6, 0.2 - -nuisances['lumi_Uncorrelated'] = { - 'name' : 'lumi_13TeV_2016', - 'type' : 'lnN', - 'samples' : dict((skey, '1.010') for skey in mc if skey not in ['WZ']) -} - -nuisances['lumi_Correlated_Run2'] = { - 'name' : 'lumi_13TeV_correlated', - 'type' : 'lnN', - 'samples' : dict((skey, '1.006') for skey in mc if skey not in ['WZ']) -} - - -#### FAKES -fake_syst_endcap = ['1.0*(abs(Lepton_eta[1])<=1.4) + 1.3*(abs(Lepton_eta[1])>1.4)', - '1.0*(abs(Lepton_eta[1])<=1.4) + 1.0/1.3*(abs(Lepton_eta[1])>1.4)'] - -fake_syst_barrel = [' 1.3*(abs(Lepton_eta[1])<=1.4) + 1.0*(abs(Lepton_eta[1])>1.4)', - '1.0/1.3*(abs(Lepton_eta[1])<=1.4) + 1.0*(abs(Lepton_eta[1])>1.4)'] - -nuisances['fake_syst_mm_barrel'] = { - 'name' : 'CMS_WH_hww_fake_syst_mm_barrel', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_mm' : fake_syst_barrel, - }, - 'cuts' : [cut for cut in cuts if ('_mm_' in cut)] -} -nuisances['fake_syst_mm_endcap'] = { - 'name' : 'CMS_WH_hww_fake_syst_mm_endcap', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_mm' : fake_syst_endcap, - }, - 'cuts' : [cut for cut in cuts if ('_mm_' in cut)] -} - -nuisances['fake_syst_em_barrel'] = { - 'name' : 'CMS_WH_hww_fake_syst_em_barrel', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_em' : fake_syst_barrel, - }, - 'cuts' : [cut for cut in cuts if ('_em_' in cut)] -} -nuisances['fake_syst_em_endcap'] = { - 'name' : 'CMS_WH_hww_fake_syst_em_endcap', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_em' : fake_syst_endcap, - }, - 'cuts' : [cut for cut in cuts if ('_em_' in cut)] -} - -nuisances['fake_syst_ee_barrel'] = { - 'name' : 'CMS_WH_hww_fake_syst_ee_barrel', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_ee' : fake_syst_barrel, - }, - 'cuts' : [cut for cut in cuts if ('_ee_' in cut)] -} -nuisances['fake_syst_ee_endcap'] = { - 'name' : 'CMS_WH_hww_fake_syst_ee_endcap', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_ee' : fake_syst_endcap, - }, - 'cuts' : [cut for cut in cuts if ('_ee_' in cut)] -} - -nuisances['fake_ele'] = { - 'name' : 'CMS_WH_hww_fake_e_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_ee' : ['fakeWEleUp', 'fakeWEleDown'], - 'Fake_em' : ['fakeWEleUp', 'fakeWEleDown'], - } -} -nuisances['fake_ele_stat'] = { - 'name' : 'CMS_WH_hww_fake_stat_e_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_ee' : ['fakeWStatEleUp', 'fakeWStatEleDown'], - 'Fake_em' : ['fakeWStatEleUp', 'fakeWStatEleDown'], - } -} -nuisances['fake_mu'] = { - 'name' : 'CMS_WH_hww_fake_m_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_mm' : ['fakeWMuUp', 'fakeWMuDown'], - 'Fake_em' : ['fakeWMuUp', 'fakeWMuDown'], - } -} -nuisances['fake_mu_stat'] = { - 'name' : 'CMS_WH_hww_fake_stat_m_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_mm' : ['fakeWStatMuUp', 'fakeWStatMuDown'], - 'Fake_em' : ['fakeWStatMuUp', 'fakeWStatMuDown'], - } -} - -###### B-tagger - -for shift in ['lf', 'hf', 'hfstats1', 'hfstats2', 'lfstats1', 'lfstats2', 'cferr1', 'cferr2']: - btag_syst = ['(btagSF%sup)/(btagSF)' % shift, '(btagSF%sdown)/(btagSF)' % shift] - - name = 'CMS_btag_%s' % shift - if 'stats' in shift: - name += '_2016' - - nuisances['btag_shape_%s' % shift] = { - 'name' : name, - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, btag_syst) for skey in mc), - } - -##### Trigger Scale Factors - -trig_syst = ['TriggerSFWeight_2l_u/TriggerSFWeight_2l', 'TriggerSFWeight_2l_d/TriggerSFWeight_2l'] - -nuisances['trigg'] = { - 'name' : 'CMS_eff_hwwtrigger_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, trig_syst) for skey in mc) -} - -##### Electron Efficiency and energy scale - -nuisances['eff_e'] = { - 'name' : 'CMS_eff_e_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['SFweightEleUp', 'SFweightEleDown']) for skey in mc) -} - -nuisances['eff_ttHMVA_e'] = { - 'name' : 'CMS_eff_ttHMVA_e_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['LepWPttHMVASFEleUp', 'LepWPttHMVASFEleDown']) for skey in mc) -} - -nuisances['electronpt'] = { - 'name' : 'CMS_scale_e_2016', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'ElepTup', - 'mapDown' : 'ElepTdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('ElepTup_suffix'), - 'folderDown' : makeMCDirectory('ElepTdo_suffix'), - 'AsLnN' : '0' -} - -##### Muon Efficiency and energy scale - -nuisances['eff_m'] = { - 'name' : 'CMS_eff_m_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['SFweightMuUp', 'SFweightMuDown']) for skey in mc) -} - -nuisances['eff_ttHMVA_m'] = { - 'name' : 'CMS_eff_ttHMVA_m_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['LepWPttHMVASFMuUp', 'LepWPttHMVASFMuDown']) for skey in mc) -} - -nuisances['muonpt'] = { - 'name' : 'CMS_scale_m_2016', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'MupTup', - 'mapDown' : 'MupTdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('MupTup_suffix'), - 'folderDown' : makeMCDirectory('MupTdo_suffix'), - 'AsLnN' : '0' -} - -##### Jet energy scale -jes_systs = ['JESAbsolute','JESAbsolute_2016','JESBBEC1','JESBBEC1_2016','JESEC2','JESEC2_2016','JESFlavorQCD','JESHF','JESHF_2016','JESRelativeBal','JESRelativeSample_2016'] - -for js in jes_systs: - - nuisances[js] = { - 'name' : 'CMS_scale_' + js.replace("JES","j_"), - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : js + 'up', - 'mapDown' : js + 'do', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('RDF__JESup_suffix'), - 'folderDown': makeMCDirectory('RDF__JESdo_suffix'), - 'reweight' : ['btagSF'+js.replace('JES','jes')+'up/btagSF','btagSF'+js.replace('JES','jes')+'down/btagSF'], - 'AsLnN' : '0' - } - -##### Jet energy resolution -nuisances['JER'] = { - 'name' : 'CMS_res_j_2016', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'JERup', - 'mapDown' : 'JERdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('JERup_suffix'), - 'folderDown': makeMCDirectory('JERdo_suffix'), - 'AsLnN' : '0' -} - -##### MET unclustered energy - -# metUp.PuppiMET_pt_METup -nuisances['met'] = { - 'name' : 'CMS_scale_met_2016', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'METup', - 'mapDown' : 'METdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('METup_suffix'), - 'folderDown': makeMCDirectory('METdo_suffix'), - 'AsLnN' : '0' -} - - -##### Pileup - -# puWeight_UL2016 -nuisances['PU'] = { - 'name' : 'CMS_pileup_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'DY' : ['1.008421*(puWeightUp/puWeight)', '0.992494*(puWeightDown/puWeight)'], - 'WW' : ['1.010428*(puWeightUp/puWeight)', '0.990400*(puWeightDown/puWeight)'], - 'ggWW' : ['1.012367*(puWeightUp/puWeight)', '0.988402*(puWeightDown/puWeight)'], - 'Vg' : ['0.995630*(puWeightUp/puWeight)', '1.007076*(puWeightDown/puWeight)'], - 'WZ' : ['1.002037*(puWeightUp/puWeight)', '0.997721*(puWeightDown/puWeight)'], - 'ZZ' : ['1.006574*(puWeightUp/puWeight)', '0.993175*(puWeightDown/puWeight)'], - 'VVV' : ['1.012827*(puWeightUp/puWeight)', '0.989623*(puWeightDown/puWeight)'], - 'top' : ['1.009336*(puWeightUp/puWeight)', '0.991324*(puWeightDown/puWeight)'], - 'Higgs' : ['1.011609*(puWeightUp/puWeight)', '0.989039*(puWeightDown/puWeight)'], - }, - 'AsLnN' : '0', -} - -### PU ID SF uncertainty - -puid_syst = ['Jet_PUIDSF_up/Jet_PUIDSF', 'Jet_PUIDSF_down/Jet_PUIDSF'] - -nuisances['jetPUID'] = { - 'name' : 'CMS_eff_j_PUJET_id_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, puid_syst) for skey in mc) -} - -### PS and UE - -nuisances['PS_ISR'] = { - 'name' : 'PS_WH_hww_ISR', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['PSWeight[2]', 'PSWeight[0]']) for skey in mc), - 'AsLnN' : '0', -} - -nuisances['PS_FSR'] = { - 'name' : 'PS_WH_hww_FSR', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['PSWeight[3]', 'PSWeight[1]']) for skey in mc), - 'AsLnN' : '0', -} - -nuisances['UE_CP5'] = { - 'name' : 'CMS_WH_hww_UE', - 'skipCMS' : 1, - 'type' : 'lnN', - 'samples' : dict((skey, '1.015') for skey in mc), -} - -# Charge flip efficiency -nuisances['chargeFlipEff'] = { - 'name' : 'CMS_whss_chargeFlipEff_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['1-ttHMVA_eff_err_flip_2l', '1+ttHMVA_eff_err_flip_2l']) for skey in ['DY','ChargeFlip']), - 'cuts' : [cut for cut in cuts if ('_ee_' in cut or '_em_' in cut)] -} - -# Charge flip: uncertainty on opposite sign processes not affected by charge-flip -nuisances['chargeFlip_syst'] = { - 'name' : 'CMS_ChargeFlip_syst', - 'type' : 'lnN', - 'samples' : { - 'ChargeFlip' : '1.10', - } -} - -# Top pT reweighting uncertainty - -nuisances['TopPtRew'] = { - 'name' : 'CMS_top_pT_reweighting', # Theory uncertainty - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'top': ["1.", "1./Top_pTrw"] - }, - 'symmetrize' : True -} - -nuisances['WgStar'] = { - 'name' : 'CMS_hww_WgStarScale', - 'type' : 'lnN', - 'samples' : { - 'WgS' : '1.25' - } -} - -###### pdf uncertainties - -valuesggh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggH', '125.09','pdf','sm') -valuesggzh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggZH','125.09','pdf','sm') -valuesbbh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','bbH', '125.09','pdf','sm') - -nuisances['pdf_Higgs_gg'] = { - 'name' : 'pdf_Higgs_gg', - 'samples' : { - 'ggH_hww' : valuesggh, - 'ggH_htt' : valuesggh, - 'ggZH_hww' : valuesggzh, - 'bbH_hww' : valuesbbh, - }, - 'type' : 'lnN', -} - -# For ttH, we need to use 1./values -values = str(1./float(HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ttH','125.09','pdf','sm'))) - -nuisances['pdf_Higgs_ttH'] = { - 'name' : 'pdf_Higgs_ttH', - 'samples' : { - 'ttH_hww': values, - }, - 'type' : 'lnN', -} - -valuesqqh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','vbfH','125.09','pdf','sm') -valueswh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','WH', '125.09','pdf','sm') -valueszh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ZH', '125.09','pdf','sm') - -nuisances['pdf_Higgs_qqbar'] = { - 'name' : 'pdf_Higgs_qqbar', - 'type' : 'lnN', - 'samples': { - 'qqH_hww' : valuesqqh, - 'qqH_htt' : valuesqqh, - 'WH_hww_plus' : valueswh, - 'WH_hww_minus': valueswh, - 'WH_htt_plus' : valueswh, - 'WH_htt_minus': valueswh, - 'ZH_hww' : valueszh, - 'ZH_htt' : valueszh - }, -} - -nuisances['pdf_qqbar'] = { - 'name' : 'pdf_qqbar', - 'type' : 'lnN', - 'samples' : { - 'Wg' : '1.04', - 'Zg' : '1.04', - 'ZZ' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 - 'WZ' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 - 'WgS' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 - 'ZgS' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 - }, -} - -nuisances['pdf_gg'] = { - 'name': 'pdf_gg', - 'type': 'lnN', - 'samples': { - 'ggWW' : '1.05', - }, -} - -nuisances['pdf_Higgs_gg_ACCEPT'] = { - 'name' : 'pdf_WH_hww_Higgs_gg_ACCEPT', - 'samples' : { - 'ggH_hww' : '1.006', - 'ggH_htt' : '1.006', - 'ggZH_hww' : '1.006', - 'bbH_hww' : '1.006' - }, - 'type' : 'lnN', -} -nuisances['pdf_gg_ACCEPT'] = { - 'name' : 'pdf_WH_hww_gg_ACCEPT', - 'samples' : { - 'ggWW' : '1.006', - }, - 'type' : 'lnN', -} - -nuisances['pdf_Higgs_qqbar_ACCEPT'] = { - 'name' : 'pdf_WH_hww_Higgs_qqbar_ACCEPT', - 'type' : 'lnN', - 'samples' : { - 'qqH_hww' : '1.002', - 'qqH_htt' : '1.002', - 'WH_hww_plus' : '1.003', - 'WH_hww_minus': '1.003', - 'WH_htt_plus' : '1.003', - 'WH_htt_minus': '1.003', - 'ZH_hww' : '1.002', - 'ZH_htt' : '1.002', - }, -} - -nuisances['pdf_qqbar_ACCEPT'] = { - 'name' : 'pdf_WH_hww_qqbar_ACCEPT', - 'type' : 'lnN', - 'samples' : { - 'ZZ' : '1.001', - 'WZ' : '1.001', - }, -} - -##### Renormalization & factorization scales - -## Shape nuisance due to QCD scale variations for DY -## LHE scale variation weights (w_var / w_nominal) - -## This should work for samples with either 8 or 9 LHE scale weights (Length$(LHEScaleWeight) == 8 or 9) -variations = ['Alt(LHEScaleWeight,0,1)', 'Alt(LHEScaleWeight,1,1)', 'Alt(LHEScaleWeight,3,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-4,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-2,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-1,1)'] - -# nuisances['QCDscale_V'] = { -# 'name' : 'QCDscale_V', -# 'skipCMS' : 1, -# 'kind' : 'weight_envelope', -# 'type' : 'shape', -# 'samples' : { -# 'DY' : variations -# }, -# 'AsLnN' : '0' -# } - -nuisances['QCDscale_VV'] = { - 'name' : 'QCDscale_VV', - 'kind' : 'weight_envelope', - 'type' : 'shape', - 'samples' : { - 'WW' : variations, - 'Zg' : variations, - 'Wg' : variations, - 'ZZ' : variations, - 'WZ' : variations, - 'WgS' : variations, - 'ZgS' : variations - } -} - -nuisances['QCDscale_ggVV'] = { - 'name' : 'QCDscale_ggVV', - 'type' : 'lnN', - 'samples' : { - 'ggWW' : '1.15', - }, -} - -#### QCD scale uncertainties for Higgs signals other than ggH - -values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','vbfH','125.09','scale','sm') - -nuisances['QCDscale_qqH'] = { - 'name' : 'QCDscale_qqH', - 'samples' : { - 'qqH_hww' : values, - 'qqH_htt' : values, - }, - 'type' : 'lnN' -} - -valueswh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','WH','125.09','scale','sm') -valueszh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ZH','125.09','scale','sm') - -nuisances['QCDscale_VH'] = { - 'name' : 'QCDscale_VH', - 'samples' : { - 'WH_hww_plus' : valueswh, - 'WH_hww_minus' : valueswh, - 'WH_htt_plus' : valueswh, - 'WH_htt_minus' : valueswh, - 'ZH_hww' : valueszh, - 'ZH_htt' : valueszh, - }, - 'type' : 'lnN', -} - -values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggZH','125.09','scale','sm') - -nuisances['QCDscale_ggZH'] = { - 'name' : 'QCDscale_ggZH', - 'samples' : { - 'ggZH_hww' : values, - }, - 'type' : 'lnN', -} - -values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ttH','125.09','scale','sm') - -nuisances['QCDscale_ttH'] = { - 'name' : 'QCDscale_ttH', - 'samples' : { - 'ttH_hww' : values, - }, - 'type' : 'lnN', -} - -nuisances['QCDscale_WWewk'] = { - 'name' : 'QCDscale_WWewk', - 'samples' : { - 'WWewk' : '1.11', - }, - 'type' : 'lnN' -} - -nuisances['QCDscale_qqbar_ACCEPT'] = { - 'name' : 'QCDscale_qqbar_ACCEPT', - 'type' : 'lnN', - 'samples' : { - 'qqH_hww' : '1.003', - 'qqH_htt' : '1.003', - 'WH_hww_plus' : '1.010', - 'WH_hww_minus' : '1.010', - 'WH_htt_plus' : '1.010', - 'WH_htt_minus' : '1.010', - 'ZH_hww' : '1.015', - 'ZH_htt' : '1.015', - } -} - -# FIXME: these come from HIG-16-042, maybe should be recomputed? -nuisances['QCDscale_gg_ACCEPT'] = { - 'name' : 'QCDscale_gg_ACCEPT', - 'samples' : { - 'ggH_htt' : '1.012', - 'ggH_hww' : '1.012', - 'ggZH_hww' : '1.012', - 'ggWW' : '1.012', - }, - 'type' : 'lnN', -} - -# WZ normalization from control region - -nuisances['WZ2jnorm'] = { - 'name' : 'CMS_hww_WZ3l2jnorm', - 'samples' : { - 'WZ' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [cut for cut in cuts if '2j' in cut], -} - -nuisances['WZ1jnorm'] = { - 'name' : 'CMS_hww_WZ3l1jnorm', - 'samples' : { - 'WZ' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [cut for cut in cuts if '1j' in cut], -} - -# Use the following if you want to apply the automatic combine MC stat nuisances. -nuisances['stat'] = { - 'type' : 'auto', - 'maxPoiss' : '10', - 'includeSignal' : '0', - 'samples' : {} -} -# nuisance ['maxPoiss'] = Number of threshold events for Poisson modelling -# nuisance ['includeSignal'] = Include MC stat nuisances on signal processes (1=True, 0=False) - -for n in nuisances.values(): - n['skipCMS'] = 1 diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_CR/plot.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_CR/plot.py deleted file mode 100644 index fc596a5f..00000000 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_CR/plot.py +++ /dev/null @@ -1,356 +0,0 @@ -# plot configuration - -# Groups of samples to improve the plots. -# If not defined, normal plots is used - -# BTag normalization factors -# Cut = hww2l2v_13TeV_samesign_2j -scale_histo_ttH_hww = 0.616976697535/0.378860542609 # 1.62850608112 -scale_histo_WW = 1.72511153091/1.84461814416 # 0.935213359126 -scale_histo_DY = 3.53636672699/4.7664292056 # 0.741932078386 -scale_histo_WZ = 16.0432100435/14.3489102017 # 1.11807864277 -scale_histo_Wg = 15.8878830005/14.5649053729 # 1.09083324565 -scale_histo_Zg = 0.878090355125/0.845736028771 # 1.03825582127 -scale_histo_Vg = (15.8878830005+0.878090355125)/(14.5649053729+0.845736028771) -scale_histo_WgS = 7.97423388174/7.86396725233 # 1.01402175592 -scale_histo_ZgS = 0.951074186953/0.953410829908 # 0.99754917515 -scale_histo_VgS = (7.97423388174+0.951074186953)/(7.86396725233+0.953410829908) -scale_histo_ZH_htt = 0.0517626146839/0.0418699835469 # 1.23627024181 -scale_histo_WH_htt_plus = 0.155233292681/0.13501959996 # 1.14970932166 -scale_histo_ggZH_hww = 0.0260047673541/0.0191405906096 # 1.35861885793 -scale_histo_qqH_hww = 0.0123473458074/0.0113367284673 # 1.0891454129 -scale_histo_ZZ = 0.482985873193/0.406317249935 # 1.18869152927 -scale_histo_ggH_hww = 0.073170975305/0.0724227670066 # 1.01033112002 -scale_histo_WH_htt_minus = 0.100533657238/0.0933534088816 # 1.07691468842 -scale_histo_VVV = 1.38782292345/1.35367244737 # 1.02522802038 -scale_histo_WH_hww_plus = 0.726340493052/0.707547382663 # 1.02656092136 -scale_histo_ggH_htt = 0.0/1 # 0.0 -scale_histo_ggH_htt = 0.0/1 # 0.0 -scale_histo_ggWW = 0.089605006043/0.0911263518739 # 0.983305094524 -scale_histo_top = 44.5715804726/32.0725083751 # 1.38971295763 -scale_histo_WWewk = 0.0277638808994/0.0232032545063 # 1.19655115156 -scale_histo_ZH_hww = 0.128885867784/0.115278399228 # 1.11804005476 -scale_histo_WH_hww_minus = 0.445075508444/0.421163499332 # 1.05677607188 -scale_histo_qqH_htt = 0.00359856778426/0.00462458335033 # 0.778138809846 - -groupPlot = {} - -# groupPlot['top'] = { -# 'nameHR' : 'tW+ and t#bar{t}', -# 'isSignal' : 0, -# 'color' : 400, # kYellow -# 'samples' : ['top'] -# } - -# groupPlot['WW'] = { -# 'nameHR' : 'WW', -# 'isSignal' : 0, -# 'color' : 851, # kAzure -9 -# 'samples' : ['WW', 'ggWW', 'WWewk'] -# } - -# groupPlot['DY'] = { -# 'nameHR' : "DY", -# 'isSignal' : 0, -# 'color' : 418, # kGreen+2 -# 'samples' : ['DY'] -# } - -groupPlot['Fake'] = { - 'nameHR' : 'Non-prompt', - 'isSignal' : 0, - 'color' : 921, # kGray + 1 - 'samples' : ['Fake_mm','Fake_em','Fake_ee'] -} - -groupPlot['ChargeFlip'] = { - 'nameHR' : "charge_flip", - 'isSignal' : 0, - 'color' : 418, # kGreen+2 - 'samples' : ['ChargeFlip'] -} - -groupPlot['VVV'] = { - 'nameHR' : 'VVV', - 'isSignal' : 0, - 'color' : 857, # kAzure -3 - 'samples' : ['VVV'] -} - -groupPlot['ZZ'] = { - 'nameHR' : "ZZ", - 'isSignal' : 0, - 'color' : 617, # kViolet + 1 - 'samples' : ['ZZ'] -} - -groupPlot['WZ'] = { - 'nameHR' : "WZ", - 'isSignal' : 0, - 'color' : 619, # kViolet + 1 - 'samples' : ['WZ'] -} - -groupPlot['Vg'] = { - 'nameHR' : "V#gamma", - 'isSignal' : 0, - 'color' : 810, # kOrange + 10 - 'samples' : ['Vg'] -} - -groupPlot['VgS'] = { - 'nameHR' : "V#gamma*", - 'isSignal' : 0, - 'color' : 412, # kGreen - 9 - 'samples' : ['VgS'] -} - -groupPlot['Higgs'] = { - 'nameHR' : 'Higgs', - 'isSignal' : 0, - 'color' : 632, # kRed - 'samples' : ['ggH_hww','qqH_hww','ZH_hww','ggZH_hww','ttH_hww','ggH_htt','qqH_htt','ZH_htt'] -} - -groupPlot['WH_minus'] = { - 'nameHR' : 'W^{-} H (x 10)', - 'isSignal' : 2, - 'color' : 600, # kBlue - 'samples' : ['WH_hww_minus','WH_htt_minus'] -} - -groupPlot['WH_plus'] = { - 'nameHR' : 'W^{+} H (x 10)', - 'isSignal' : 2, - 'color' : 632, # kRed - 'samples' : ['WH_hww_plus', 'WH_htt_plus'] -} - - -# keys here must match keys in samples.py - -plot = {} - -plot['ChargeFlip'] = { - 'color' : 418, # kGreen+2 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 0.5, -} - -# plot['DY'] = { -# 'color' : 418, # kGreen+2 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : scale_histo_DY, -# } - -# plot['top'] = { -# 'nameHR' : 'tW and t#bar{t}', -# 'color' : 400, # kYellow -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : scale_histo_top, -# } - -# plot['WW'] = { -# 'color' : 851, # kAzure -9 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : scale_histo_WW, -# } - -# plot['WWewk'] = { -# 'color' : 850, # kAzure -10 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : scale_histo_WWewk, -# } - -# plot['ggWW'] = { -# 'color' : 850, # kAzure -10 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : scale_histo_ggWW, -# } - -plot['Vg'] = { - 'color' : 859, # kAzure -1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_Vg, -} - -plot['VgS'] = { - 'color' : 617, # kViolet + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_VgS, -} - -plot['WZ'] = { - 'color' : 858, # kAzure -2 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_WZ * 1.138, # NLO -> NNLO k-factor! -} - -plot['ZZ'] = { - 'color' : 858, # kAzure -2 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ZZ, -} - -plot['VVV'] = { - 'color' : 857, # kAzure -3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_VVV, -} - -########### -# Signals # -########### - -# HWW - -plot['ggH_hww'] = { - 'color' : 632, # kRed - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggH_hww, -} - -plot['qqH_hww'] = { - 'color' : 632+1, # kRed+1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_qqH_hww, -} - -plot['ZH_hww'] = { - 'color' : 632+3, # kRed+3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ZH_hww, -} - -plot['ggZH_hww'] = { - 'color' : 632+4, # kRed+4 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggZH_hww, -} - -plot['WH_hww_plus'] = { - 'color' : 632+2, # kRed+2 - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_hww_plus, -} - -plot['WH_hww_minus'] = { - 'color' : 600, # kBlue - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_hww_minus, -} - -plot['ttH_hww'] = { - 'color' : 632+3, # kRed+3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ttH_hww, -} - - -# Htautau - -plot['ggH_htt'] = { - 'color' : 632, # kRed - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggH_htt, -} - -plot['qqH_htt'] = { - 'color' : 632+1, # kRed+1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_qqH_htt, -} - -plot['ZH_htt'] = { - 'color' : 632+3, # kRed+3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ZH_htt, -} - -plot['WH_htt_plus'] = { - 'color' : 632+2, # kRed+2 - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_htt_plus, -} - -plot['WH_htt_minus'] = { - 'color' : 632+2, # kRed+2 - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_htt_minus, -} - - -######## -# Fake # -######## - -plot['Fake_em'] = { - 'color' : 921, # kGray + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['Fake_ee'] = { - 'color' : 921, # kGray + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['Fake_mm'] = { - 'color' : 921, # kGray + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -# plot['Fake'] = { -# 'color' : 921, # kGray + 1 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : 1.0 -# } - -######## -# Data # -######## - -plot['DATA'] = { - 'nameHR' : 'Data', - 'color' : 1 , - 'isSignal' : 0, - 'isData' : 1, - 'isBlind' : 0, -} - - -# Define legend - -legend = {} - -legend['lumi'] = 'L = 19.5 fb^{-1}' -legend['sqrt'] = '#sqrt{s} = 13 TeV' diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_CR/samples.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_CR/samples.py deleted file mode 100644 index be682e93..00000000 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_CR/samples.py +++ /dev/null @@ -1,394 +0,0 @@ -import os,glob - -################################################ -################# SKIMS ######################## -################################################ - -# MC: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Summer20UL16_106x_nAODv9_HIPM_Full2016v9/MCl1loose2016v9__MCCorr2016v9NoJERInHorn__l2tightOR2016v9/ -# DATA: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Run2016_UL2016_nAODv9_HIPM_Full2016v9/DATAl1loose2016v9__l2loose__l2tightOR2016v9/ -# FAKE: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Run2016_UL2016_nAODv9_HIPM_Full2016v9/DATAl1loose2016v9__l2loose__fakeW/ - -mcProduction = 'Summer20UL16_106x_nAODv9_HIPM_Full2016v9' -dataReco = 'Run2016_UL2016_nAODv9_HIPM_Full2016v9' -mcSteps = 'MCl1loose2016v9__MCCorr2016v9NoJERInHorn__l2tightOR2016v9{var}' -fakeSteps = 'DATAl1loose2016v9__l2loose__fakeW' -dataSteps = 'DATAl1loose2016v9__l2loose__l2tightOR2016v9' - -############################################## -###### Tree base directory for the site ###### -############################################## - -treeBaseDir = '/eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano' -limitFiles = -1 - -def makeMCDirectory(var=''): - return os.path.join(treeBaseDir, mcProduction, mcSteps.format(var='')) - -mcDirectory = makeMCDirectory() -fakeDirectory = os.path.join(treeBaseDir, dataReco, fakeSteps) -dataDirectory = os.path.join(treeBaseDir, dataReco, dataSteps) - -samples = {} - -from mkShapesRDF.lib.search_files import SearchFiles -s = SearchFiles() - -useXROOTD = True -redirector = 'root://eoscms.cern.ch/' - -def nanoGetSampleFiles(path, name): - _files = s.searchFiles(path, name, redirector=redirector) - if limitFiles != -1 and len(_files) > limitFiles: - return [(name, _files[:limitFiles])] - else: - return [(name, _files)] - -def CombineBaseW(samples, proc, samplelist): - _filtFiles = list(filter(lambda k: k[0] in samplelist, samples[proc]['name'])) - _files = list(map(lambda k: k[1], _filtFiles)) - _l = list(map(lambda k: len(k), _files)) - leastFiles = _files[_l.index(min(_l))] - dfSmall = ROOT.RDataFrame('Runs', leastFiles) - s = dfSmall.Sum('genEventSumw').GetValue() - f = ROOT.TFile.Open(leastFiles[0]) - t = f.Get('Events') - t.GetEntry(1) - xs = t.baseW * s - - __files = [] - for f in _files: - __files += f - df = ROOT.RDataFrame('Runs', __files) - s = df.Sum('genEventSumw').GetValue() - newbaseW = str(xs / s) - weight = newbaseW + '/baseW' - - for iSample in samplelist: - addSampleWeight(samples, proc, iSample, weight) - -def addSampleWeight(samples, sampleName, sampleNameType, weight): - obj = list(filter(lambda k: k[0] == sampleNameType, samples[sampleName]['name']))[0] - samples[sampleName]['name'] = list(filter(lambda k: k[0] != sampleNameType, samples[sampleName]['name'])) - if len(obj) > 2: - samples[sampleName]['name'].append((obj[0], obj[1], obj[2] + '*(' + weight + ')')) - else: - samples[sampleName]['name'].append((obj[0], obj[1], '(' + weight + ')' )) - - -################################################ -############ DATA DECLARATION ################## -################################################ - -DataRun = [ - ['B','Run2016B-ver1_HIPM_UL2016-v2'], - ['B','Run2016B-ver2_HIPM_UL2016-v2'], - ['C','Run2016C-HIPM_UL2016-v2'], - ['D','Run2016D-HIPM_UL2016-v2'], - ['E','Run2016E-HIPM_UL2016-v2'], - ['F','Run2016F-HIPM_UL2016-v2'], -] - -DataSets = ['MuonEG','SingleMuon','SingleElectron','DoubleMuon', 'DoubleEG'] - -DataTrig = { - 'MuonEG' : ' Trigger_ElMu' , - 'SingleMuon' : '!Trigger_ElMu && Trigger_sngMu' , - 'SingleElectron' : '!Trigger_ElMu && !Trigger_sngMu && Trigger_sngEl', - 'DoubleMuon' : '!Trigger_ElMu && !Trigger_sngMu && !Trigger_sngEl && Trigger_dblMu', - 'DoubleEG' : '!Trigger_ElMu && !Trigger_sngMu && !Trigger_sngEl && !Trigger_dblMu && Trigger_dblEl' -} - -######################################### -############ MC COMMON ################## -######################################### - -# SFweight does not include btag weights -mcCommonWeightNoMatch = 'XSWeight*SFweight*METFilter_MC' -mcCommonWeight = 'XSWeight*SFweight*METFilter_MC*PromptGenLepMatch2l' - -########################################### -############# BACKGROUNDS ############### -########################################### - -# ###### DY ####### -# files = nanoGetSampleFiles(mcDirectory, 'DYJetsToLL_M-10to50_NLO') + \ -# nanoGetSampleFiles(mcDirectory, 'DYJetsToLL_M-50') - -# samples['DY'] = { -# 'name': files, -# 'weight': mcCommonWeight + '*(Lepton_pdgId[0]*Lepton_pdgId[1] == -11*13)*( !(Sum(PhotonGen_isPrompt==1 && PhotonGen_pt>15 && abs(PhotonGen_eta)<2.6) > 0))', -# 'FilesPerJob': 8, -# } - -# ##### Top ####### -# files = nanoGetSampleFiles(mcDirectory, 'TTTo2L2Nu') + \ -# nanoGetSampleFiles(mcDirectory, 'ST_s-channel') + \ -# nanoGetSampleFiles(mcDirectory, 'ST_t-channel_top') + \ -# nanoGetSampleFiles(mcDirectory, 'ST_t-channel_antitop') + \ -# nanoGetSampleFiles(mcDirectory, 'ST_tW_antitop') + \ -# nanoGetSampleFiles(mcDirectory, 'ST_tW_top') - -# samples['top'] = { -# 'name': files, -# 'weight': mcCommonWeight, # +'*ttHMVA_SF_flip_2l', -# 'FilesPerJob': 8, -# } -# addSampleWeight(samples,'top','TTTo2L2Nu','Top_pTrw') - -# ###### WW ######## -# samples['WW'] = { -# 'name': nanoGetSampleFiles(mcDirectory, 'WWTo2L2Nu'), -# 'weight': mcCommonWeight + '*nllW*ewknloW', -# 'FilesPerJob': 4 -# } - -# samples['WWewk'] = { -# 'name': nanoGetSampleFiles(mcDirectory, 'WpWmJJ_EWK_noTop'), -# 'weight': mcCommonWeight + '*(Sum(abs(GenPart_pdgId)==6 || GenPart_pdgId==25)==0)', # Filter tops and Higgs, -# 'FilesPerJob': 8 -# } - -# files = nanoGetSampleFiles(mcDirectory, 'GluGluToWWToENEN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToENMN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToENTN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToMNEN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToMNMN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToMNTN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToTNEN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToTNMN') + \ -# nanoGetSampleFiles(mcDirectory, 'GluGluToWWToTNTN') - -# samples['ggWW'] = { -# 'name': files, -# 'weight': mcCommonWeight + '*1.53/1.4', -# 'FilesPerJob': 8 -# } - -# Charge-flip estimated from data, and covering DY, WW, and Top -samples['ChargeFlip'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'DYJetsToLL_M-50'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4 -} - -######## Vg ######## -files = nanoGetSampleFiles(mcDirectory, 'Wg_AMCNLOFXFX_01J') + \ - nanoGetSampleFiles(mcDirectory, 'ZGToLLG') - -samples['Vg'] = { - 'name': files, - 'weight': mcCommonWeightNoMatch + '*(Gen_ZGstar_mass <= 0)', - 'FilesPerJob': 4, -} - -######## VgS ######## -files = nanoGetSampleFiles(mcDirectory, 'Wg_AMCNLOFXFX_01J') + \ - nanoGetSampleFiles(mcDirectory, 'WZTo3LNu_mllmin0p1') + \ - nanoGetSampleFiles(mcDirectory, 'ZGToLLG') - -samples['VgS'] = { - 'name': files, - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} -addSampleWeight(samples, 'VgS', 'Wg_AMCNLOFXFX_01J', '((Gen_ZGstar_mass > 0 && Gen_ZGstar_mass <= 0.1))*(gstarLow*0.94)') -addSampleWeight(samples, 'VgS', 'WZTo3LNu_mllmin0p1', '((Gen_ZGstar_mass > 0.1)*(0.601644*58.59/4.666))*(gstarLow*0.94)') -addSampleWeight(samples, 'VgS', 'ZGToLLG', '(Gen_ZGstar_mass > 0)') - -############ WZ ############ -files = nanoGetSampleFiles(mcDirectory, 'WZTo3LNu_mllmin0p1') + \ - nanoGetSampleFiles(mcDirectory, 'WZTo2Q2L_mllmin4p0') - -samples['WZ'] = { - 'name': files, - 'weight': mcCommonWeight + ' * (gstarHigh)', - 'FilesPerJob': 4, -} -addSampleWeight(samples, 'WZ', 'WZTo3LNu_mllmin0p1', '(0.601644*58.59/4.666)') - - -############ ZZ ############ -files = nanoGetSampleFiles(mcDirectory, 'ZZTo2L2Nu') + \ - nanoGetSampleFiles(mcDirectory, 'ZZTo2Q2L_mllmin4p0') + \ - nanoGetSampleFiles(mcDirectory, 'ZZTo4L') - -samples['ZZ'] = { - 'name': files, - 'weight': mcCommonWeight, - 'FilesPerJob': 2, -} - - -########## VVV ######### -files = nanoGetSampleFiles(mcDirectory, 'ZZZ') + \ - nanoGetSampleFiles(mcDirectory, 'WZZ') + \ - nanoGetSampleFiles(mcDirectory, 'WWZ') + \ - nanoGetSampleFiles(mcDirectory, 'WWW') - -samples['VVV'] = { - 'name': files, - 'weight': mcCommonWeight, - 'FilesPerJob': 8, -} - -########################################### -############# SIGNALS ################## -########################################### - -signals = [] - -############ ggH H->WW ############ -samples['ggH_hww'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'GluGluHToWWTo2L2Nu_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} -signals.append('ggH_hww') - -############ VBF H->WW ############ -samples['qqH_hww'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'VBFHToWWTo2L2Nu_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 8, -} -signals.append('qqH_hww') - -############ ZH H->WW ############ -samples['ZH_hww'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'HZJ_HToWW_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 8, -} -signals.append('ZH_hww') - -samples['ggZH_hww'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'ggZH_HToWW_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 8, -} -signals.append('ggZH_hww') - -############ WH H->WW ############ -samples['WH_hww_plus'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'HWplusJ_HToWW_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} -signals.append('WH_hww_plus') - -samples['WH_hww_minus'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'HWminusJ_HToWW_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} - -signals.append('WH_hww_minus') - -############ ttH ############ -samples['ttH_hww'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'ttHToNonbb_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} -signals.append('ttH_hww') - -############ H->TauTau ############ -samples['ggH_htt'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'GluGluHToTauTau_M125_Powheg'), - 'weight': mcCommonWeight, - 'FilesPerJob': 20, -} -signals.append('ggH_htt') - -samples['qqH_htt'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'VBFHToTauTau_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 20, -} -signals.append('qqH_htt') - -samples['ZH_htt'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'ZHToTauTau_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 8, -} -signals.append('ZH_htt') - -############ WH H->TauTau ############ -samples['WH_htt_plus'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'WplusHToTauTau_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} -signals.append('WH_htt_plus') - -samples['WH_htt_minus'] = { - 'name': nanoGetSampleFiles(mcDirectory, 'WminusHToTauTau_M125'), - 'weight': mcCommonWeight, - 'FilesPerJob': 4, -} -signals.append('WH_htt_minus') - - -########################################### -################## FAKE ################### -########################################### - -samples['Fake'] = { - 'name': [], - 'weight': 'METFilter_DATA*fakeW', - 'weights': [], - 'isData': ['all'], - 'FilesPerJob': 50 -} - -for _, sd in DataRun: - for pd in DataSets: - tag_data = pd + '_' + sd - - if 'DoubleEG' in pd and 'Run2016B-ver2' in sd: # Run2016B-ver2_HIPM_UL2016-v2 - print("sd = {}".format(sd)) - print("pd = {}".format(pd)) - print("Old tag = {}".format(tag_data)) - tag_data = tag_data.replace('v2','v3') - print("New tag = {}".format(tag_data)) - - files = nanoGetSampleFiles(fakeDirectory, tag_data) - - samples['Fake']['name'].extend(files) - addSampleWeight(samples, 'Fake', tag_data, DataTrig[pd]) - -samples['Fake']['subsamples'] = { - 'em': 'abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 11*13', - 'mm': 'abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 13*13', - 'ee': 'abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 11*11' -} - - -########################################### -################## DATA ################### -########################################### - -samples['DATA'] = { - 'name' : [], - 'weight' : 'LepWPCut*METFilter_DATA', - 'weights' : [], - 'isData' : ['all'], - 'FilesPerJob' : 50 -} - -for _, sd in DataRun: - for pd in DataSets: - tag_data = pd + '_' + sd - - if 'DoubleEG' in pd and 'Run2016B-ver2' in sd: # Run2016B-ver2_HIPM_UL2016-v2 - print("sd = {}".format(sd)) - print("pd = {}".format(pd)) - print("Old tag = {}".format(tag_data)) - tag_data = tag_data.replace('v2','v3') - print("New tag = {}".format(tag_data)) - - files = nanoGetSampleFiles(dataDirectory, tag_data) - - samples['DATA']['name'].extend(files) - addSampleWeight(samples, 'DATA', tag_data, DataTrig[pd]) diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_CR/structure.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_CR/structure.py deleted file mode 100644 index a13d6fe0..00000000 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_CR/structure.py +++ /dev/null @@ -1,202 +0,0 @@ -# structure configuration for datacard - -# keys here must match keys in samples.py - -signal_normalization = 10.0 - -# BTag normalization factors -# Cut = hww2l2v_13TeV_samesign_2j -scale_histo_ttH_hww = 0.616976697535/0.378860542609 # 1.62850608112 -scale_histo_WW = 1.72511153091/1.84461814416 # 0.935213359126 -scale_histo_DY = 3.53636672699/4.7664292056 # 0.741932078386 -scale_histo_WZ = 16.0432100435/14.3489102017 # 1.11807864277 -scale_histo_Wg = 15.8878830005/14.5649053729 # 1.09083324565 -scale_histo_Zg = 0.878090355125/0.845736028771 # 1.03825582127 -scale_histo_Vg = (15.8878830005+0.878090355125)/(14.5649053729+0.845736028771) -scale_histo_WgS = 7.97423388174/7.86396725233 # 1.01402175592 -scale_histo_ZgS = 0.951074186953/0.953410829908 # 0.99754917515 -scale_histo_VgS = (7.97423388174+0.951074186953)/(7.86396725233+0.953410829908) -scale_histo_ZH_htt = 0.0517626146839/0.0418699835469 # 1.23627024181 -scale_histo_WH_htt_plus = 0.155233292681/0.13501959996 # 1.14970932166 -scale_histo_ggZH_hww = 0.0260047673541/0.0191405906096 # 1.35861885793 -scale_histo_qqH_hww = 0.0123473458074/0.0113367284673 # 1.0891454129 -scale_histo_ZZ = 0.482985873193/0.406317249935 # 1.18869152927 -scale_histo_ggH_hww = 0.073170975305/0.0724227670066 # 1.01033112002 -scale_histo_WH_htt_minus = 0.100533657238/0.0933534088816 # 1.07691468842 -scale_histo_VVV = 1.38782292345/1.35367244737 # 1.02522802038 -scale_histo_WH_hww_plus = 0.726340493052/0.707547382663 # 1.02656092136 -scale_histo_ggH_htt = 0.0/1 # 0.0 -scale_histo_ggH_htt = 0.0/1 # 0.0 -scale_histo_ggWW = 0.089605006043/0.0911263518739 # 0.983305094524 -scale_histo_top = 44.5715804726/32.0725083751 # 1.38971295763 -scale_histo_WWewk = 0.0277638808994/0.0232032545063 # 1.19655115156 -scale_histo_ZH_hww = 0.128885867784/0.115278399228 # 1.11804005476 -scale_histo_WH_hww_minus = 0.445075508444/0.421163499332 # 1.05677607188 -scale_histo_qqH_htt = 0.00359856778426/0.00462458335033 # 0.778138809846 - -structure = {} - -# structure['DY'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_DY, -# } - -# structure['top'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_top, -# } - -# structure['WW'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_WW, -# } - -# structure['WWewk'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_WWewk, -# } - -# structure['ggWW'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_ggWW, -# } - -# structure['Vg'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_Vg, -# } - -# structure['VgS'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_VgS, -# } - -structure['WZ'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WZ * 1.138 # NLO -> NNLO k-factor -} - -structure['ZZ'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZZ, -} - -structure['VVV'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_VVV, -} - - -# Higgs -structure['ggH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ggH_hww, -} - -structure['qqH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_qqH_hww, -} - -# structure['ZH_hww'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_ZH_hww, -# } - -structure['ggZH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ggZH_hww, -} - -structure['WH_hww_plus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_hww_plus*signal_normalization, -} - -structure['WH_hww_minus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_hww_minus*signal_normalization, -} - -structure['ttH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ttH_hww, -} - -structure['ggH_htt'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ggH_htt, -} - -structure['qqH_htt'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_qqH_htt, -} - -structure['ZH_htt'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZH_htt, -} - -structure['WH_htt_plus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_htt_plus*signal_normalization, -} - -structure['WH_htt_minus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_htt_minus*signal_normalization, -} - - -# Fakes -structure['Fake_ee'] = { - 'isSignal' : 0, - 'isData' : 0, -} - -structure['Fake_mm'] = { - 'isSignal' : 0, - 'isData' : 0, -} - -structure['Fake_em'] = { - 'isSignal' : 0, - 'isData' : 0, -} - - -# Data-driven charge flip estimation -structure['ChargeFlip'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : 0.5, -} - -# Data -structure['DATA'] = { - 'isSignal' : 0, - 'isData' : 1 -} diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_mm_CR/README.md b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_mm_CR/README.md deleted file mode 100644 index ba17b328..00000000 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_mm_CR/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# Configuration for WHSS 1j signal region - -### Plot distributions - -Compile configuration and plot distributions: - - mkShapesRDF -c 1 - - mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png - -### Produce datacards - -Compile configuration and produce datacards: - - mkShapesRDF -c 1 - - mkDatacards --outputDirDatacard ../datacards_original_signal_scale --skipMissingNuisance \ No newline at end of file diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_mm_CR/configuration.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_mm_CR/configuration.py deleted file mode 100644 index 49d34c74..00000000 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_mm_CR/configuration.py +++ /dev/null @@ -1,99 +0,0 @@ -# Configuration file for charge asymmetry WHSS analysis using the UL 2016HIPM dataset - -import sys,inspect - -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_mm_CR - -configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file -configurations_nuisance = os.path.dirname(configurations_nuisance) # configuration_2j_mm_CR -configurations_nuisance = os.path.dirname(configurations_nuisance) # WHSS -configurations_nuisance = os.path.dirname(configurations_nuisance) # 2016HIPM_v9 -configurations_nuisance = os.path.dirname(configurations_nuisance) # UL - -# Tag used to identify the configuration folder version -tag = 'WHSS_2016HIPM_v9_chargeAsymmetry_Mu82_EleUL90' - -# File to use as runner script, default uses mkShapesRDF.shapeAnalysis.runner, otherwise specify path to script -runnerFile = "default" - -# Output file name -outputFile = "plots_WHSS_2016HIPM_v9_chargeAsymmetry_Mu82_EleUL90_DYflip_data.root" # "mkShapes__{}.root".format(tag) - -# Path to ouput folder -outputFolder = "../../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" - -# Path to batch folder (used for condor submission) -batchFolder = "condor" - -# Path to configuration folder (will contain all the compiled configuration files) -configsFolder = "configs" - -# luminosity to normalize to (in 1/fb) -# https://github.com/latinos/LatinoAnalysis/blob/UL_production/NanoGardener/python/data/TrigMaker_cfg.py#L27 (#95 #165) -# 16.802739097 + 1.063261220 + 1.655228036 = 19.521228353 -lumi = 19.52 - -# File with dict of aliases to define -aliasesFile = "../aliases.py" - -# File with dict of variables -variablesFile = "../variables.py" - -# File with dict of cuts -cutsFile = "cuts.py" - -# File with dict of samples -samplesFile = "../samples.py" - -# File with dict of samples for plotting -plotFile = 'plot.py' - -# File with dict of structure (used to define processes in combine) -structureFile = "structure.py" - -# Nuisances file for mkDatacards and for mkShape -nuisancesFile = "../nuisances.py" - -# Path to folder where to save plots -plotPath = '../plots_' + tag - -# This lines are executed right before the runner on the condor node -mountEOS = [] - -# List of imports to import when compiling the whole configuration folder, it should not contain imports used by configuration.py -imports = ["os", "glob", ("collections", "OrderedDict"), "ROOT"] - -# List of files to compile -filesToExec = [ - samplesFile, - aliasesFile, - variablesFile, - cutsFile, - plotFile, - nuisancesFile, - structureFile, -] - -# List of variables to keep in the compiled configuration folder -varsToKeep = [ - "batchVars", - "outputFolder", - "batchFolder", - "configsFolder", - "outputFile", - "runnerFile", - "tag", - "samples", - "aliases", - "variables", - ("cuts", {"cuts": "cuts", "preselections": "preselections"}), - ("plot", {"plot": "plot", "groupPlot": "groupPlot", "legend": "legend"}), - "nuisances", - "structure", - "lumi", -] - -# List of variables to keep in the batch submission script (script.py) -batchVars = varsToKeep[varsToKeep.index("samples") :] - -varsToKeep += ['plotPath'] diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_mm_CR/cuts.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_mm_CR/cuts.py deleted file mode 100644 index de3426fd..00000000 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_mm_CR/cuts.py +++ /dev/null @@ -1,37 +0,0 @@ -cuts = {} - -# cuts -preselections = 'mll>12 \ - && Lepton_pt[0]>25 \ - && Lepton_pt[1]>10 \ - && (abs(Lepton_pdgId[1])==13 || Lepton_pt[1]>13) \ - && abs(Lepton_eta[0])<2.5 && abs(Lepton_eta[1])<2.5 \ - && bVeto \ - && PuppiMET_pt > 30 \ - && !hole_veto \ - ' - -# Splitting in sub-leading lepton pT -#################################### - -## SR 2jets - -# mu-mu -cuts['hww2l2v_13TeV_WH_SS_noZveto_mm_2j'] = { - 'expr' : '(Lepton_pdgId[0]*Lepton_pdgId[1] == 13*13) && nLepton==2 && Alt(CleanJet_pt,0,0)>30 && Alt(CleanJet_pt,1,0)>30 && mjj < 100 && mlljj20_whss > 50.', - 'categories' : { - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT >= 20 GeV) - 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT < 20 GeV) - 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - } -} - -# mlljj20_whss: -# inv_mass of: (jet1, jet2, 2*closest_lep_to_jets) -# jets are considered with pT > 20 GeV - -# Definitions of WH3l variables: -# https://github.com/latinos/LatinoAnalysis/blob/76e7c4b93aa5f056c92440d4e8d24e7de749c8fe/NanoGardener/python/modules/l3KinProducer.py diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_mm_CR/nuisances.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_mm_CR/nuisances.py deleted file mode 100644 index b4d4fb14..00000000 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_mm_CR/nuisances.py +++ /dev/null @@ -1,654 +0,0 @@ -import sys - -# Enable reading YR for Higgs XS and uncertainties -sys.path.append('../../../macros/') -import HiggsXSection -HiggsXS = HiggsXSection.HiggsXSection() - -nuisances = {} - -mcProduction = 'Summer20UL16_106x_nAODv9_HIPM_Full2016v9' -dataReco = 'Run2016_UL2016_nAODv9_HIPM_Full2016v9' -mcSteps = 'MCl1loose2016v9__MCCorr2016v9NoJERInHorn__l2tightOR2016v9' -fakeSteps = 'DATAl1loose2016v9__l2loose__fakeW' -dataSteps = 'DATAl1loose2016v9__l2loose__l2tightOR2016v9' - -treeBaseDir = '/eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano' -limitFiles = -1 - -mc = [skey for skey in samples if skey not in ('Fake', 'DATA','ChargeFlip')] - -redirector = "" - -useXROOTD = False - -def makeMCDirectory(var=''): - if var== '': - print(os.path.join(treeBaseDir, mcProduction, mcSteps)) - return os.path.join(treeBaseDir, mcProduction, mcSteps) - else: - print(os.path.join(treeBaseDir, mcProduction, mcSteps + '__' + var)) - return os.path.join(treeBaseDir, mcProduction, mcSteps + '__' + var) - -mcDirectory = makeMCDirectory() -fakeDirectory = os.path.join(treeBaseDir, dataReco, fakeSteps) -dataDirectory = os.path.join(treeBaseDir, dataReco, dataSteps) - -################################ EXPERIMENTAL UNCERTAINTIES ################################# - -#### Luminosity - -# https://twiki.cern.ch/twiki/bin/view/CMS/LumiRecommendationsRun2#LumiComb -# Uncorrelated 2016 1.0 -# Uncorrelated 2017 2.0 -# Uncorrelated 2018 1.5 -# Correlated 2016, 2017, 2018 0.6, 0.9, 2.0 -# Correlated 2017, 2018 0.6, 0.2 - -nuisances['lumi_Uncorrelated'] = { - 'name' : 'lumi_13TeV_2016', - 'type' : 'lnN', - 'samples' : dict((skey, '1.010') for skey in mc if skey not in ['WZ']) -} - -nuisances['lumi_Correlated_Run2'] = { - 'name' : 'lumi_13TeV_correlated', - 'type' : 'lnN', - 'samples' : dict((skey, '1.006') for skey in mc if skey not in ['WZ']) -} - - -#### FAKES -fake_syst_endcap = ['1.0*(abs(Lepton_eta[1])<=1.4) + 1.3*(abs(Lepton_eta[1])>1.4)', - '1.0*(abs(Lepton_eta[1])<=1.4) + 1.0/1.3*(abs(Lepton_eta[1])>1.4)'] - -fake_syst_barrel = [' 1.3*(abs(Lepton_eta[1])<=1.4) + 1.0*(abs(Lepton_eta[1])>1.4)', - '1.0/1.3*(abs(Lepton_eta[1])<=1.4) + 1.0*(abs(Lepton_eta[1])>1.4)'] - -nuisances['fake_syst_mm_barrel'] = { - 'name' : 'CMS_WH_hww_fake_syst_mm_barrel', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_mm' : fake_syst_barrel, - }, - 'cuts' : [cut for cut in cuts if ('_mm_' in cut)] -} -nuisances['fake_syst_mm_endcap'] = { - 'name' : 'CMS_WH_hww_fake_syst_mm_endcap', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_mm' : fake_syst_endcap, - }, - 'cuts' : [cut for cut in cuts if ('_mm_' in cut)] -} - -nuisances['fake_syst_em_barrel'] = { - 'name' : 'CMS_WH_hww_fake_syst_em_barrel', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_em' : fake_syst_barrel, - }, - 'cuts' : [cut for cut in cuts if ('_em_' in cut)] -} -nuisances['fake_syst_em_endcap'] = { - 'name' : 'CMS_WH_hww_fake_syst_em_endcap', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_em' : fake_syst_endcap, - }, - 'cuts' : [cut for cut in cuts if ('_em_' in cut)] -} - -nuisances['fake_syst_ee_barrel'] = { - 'name' : 'CMS_WH_hww_fake_syst_ee_barrel', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_ee' : fake_syst_barrel, - }, - 'cuts' : [cut for cut in cuts if ('_ee_' in cut)] -} -nuisances['fake_syst_ee_endcap'] = { - 'name' : 'CMS_WH_hww_fake_syst_ee_endcap', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_ee' : fake_syst_endcap, - }, - 'cuts' : [cut for cut in cuts if ('_ee_' in cut)] -} - -nuisances['fake_ele'] = { - 'name' : 'CMS_WH_hww_fake_e_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_ee' : ['fakeWEleUp', 'fakeWEleDown'], - 'Fake_em' : ['fakeWEleUp', 'fakeWEleDown'], - } -} -nuisances['fake_ele_stat'] = { - 'name' : 'CMS_WH_hww_fake_stat_e_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_ee' : ['fakeWStatEleUp', 'fakeWStatEleDown'], - 'Fake_em' : ['fakeWStatEleUp', 'fakeWStatEleDown'], - } -} -nuisances['fake_mu'] = { - 'name' : 'CMS_WH_hww_fake_m_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_mm' : ['fakeWMuUp', 'fakeWMuDown'], - 'Fake_em' : ['fakeWMuUp', 'fakeWMuDown'], - } -} -nuisances['fake_mu_stat'] = { - 'name' : 'CMS_WH_hww_fake_stat_m_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'Fake_mm' : ['fakeWStatMuUp', 'fakeWStatMuDown'], - 'Fake_em' : ['fakeWStatMuUp', 'fakeWStatMuDown'], - } -} - -###### B-tagger - -for shift in ['lf', 'hf', 'hfstats1', 'hfstats2', 'lfstats1', 'lfstats2', 'cferr1', 'cferr2']: - btag_syst = ['(btagSF%sup)/(btagSF)' % shift, '(btagSF%sdown)/(btagSF)' % shift] - - name = 'CMS_btag_%s' % shift - if 'stats' in shift: - name += '_2016' - - nuisances['btag_shape_%s' % shift] = { - 'name' : name, - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, btag_syst) for skey in mc), - } - -##### Trigger Scale Factors - -trig_syst = ['TriggerSFWeight_2l_u/TriggerSFWeight_2l', 'TriggerSFWeight_2l_d/TriggerSFWeight_2l'] - -nuisances['trigg'] = { - 'name' : 'CMS_eff_hwwtrigger_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, trig_syst) for skey in mc) -} - -##### Electron Efficiency and energy scale - -nuisances['eff_e'] = { - 'name' : 'CMS_eff_e_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['SFweightEleUp', 'SFweightEleDown']) for skey in mc) -} - -nuisances['eff_ttHMVA_e'] = { - 'name' : 'CMS_eff_ttHMVA_e_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['LepWPttHMVASFEleUp', 'LepWPttHMVASFEleDown']) for skey in mc) -} - -nuisances['electronpt'] = { - 'name' : 'CMS_scale_e_2016', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'ElepTup', - 'mapDown' : 'ElepTdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('ElepTup_suffix'), - 'folderDown' : makeMCDirectory('ElepTdo_suffix'), - 'AsLnN' : '0' -} - -##### Muon Efficiency and energy scale - -nuisances['eff_m'] = { - 'name' : 'CMS_eff_m_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['SFweightMuUp', 'SFweightMuDown']) for skey in mc) -} - -nuisances['eff_ttHMVA_m'] = { - 'name' : 'CMS_eff_ttHMVA_m_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['LepWPttHMVASFMuUp', 'LepWPttHMVASFMuDown']) for skey in mc) -} - -nuisances['muonpt'] = { - 'name' : 'CMS_scale_m_2016', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'MupTup', - 'mapDown' : 'MupTdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('MupTup_suffix'), - 'folderDown' : makeMCDirectory('MupTdo_suffix'), - 'AsLnN' : '0' -} - -##### Jet energy scale -jes_systs = ['JESAbsolute','JESAbsolute_2016','JESBBEC1','JESBBEC1_2016','JESEC2','JESEC2_2016','JESFlavorQCD','JESHF','JESHF_2016','JESRelativeBal','JESRelativeSample_2016'] - -for js in jes_systs: - - nuisances[js] = { - 'name' : 'CMS_scale_' + js.replace("JES","j_"), - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : js + 'up', - 'mapDown' : js + 'do', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('RDF__JESup_suffix'), - 'folderDown': makeMCDirectory('RDF__JESdo_suffix'), - 'reweight' : ['btagSF'+js.replace('JES','jes')+'up/btagSF','btagSF'+js.replace('JES','jes')+'down/btagSF'], - 'AsLnN' : '0' - } - -##### Jet energy resolution -nuisances['JER'] = { - 'name' : 'CMS_res_j_2016', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'JERup', - 'mapDown' : 'JERdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('JERup_suffix'), - 'folderDown': makeMCDirectory('JERdo_suffix'), - 'AsLnN' : '0' -} - -##### MET unclustered energy - -# metUp.PuppiMET_pt_METup -nuisances['met'] = { - 'name' : 'CMS_scale_met_2016', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'METup', - 'mapDown' : 'METdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('METup_suffix'), - 'folderDown': makeMCDirectory('METdo_suffix'), - 'AsLnN' : '0' -} - - -##### Pileup - -# puWeight_UL2016 -nuisances['PU'] = { - 'name' : 'CMS_pileup_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'DY' : ['1.008421*(puWeightUp/puWeight)', '0.992494*(puWeightDown/puWeight)'], - 'WW' : ['1.010428*(puWeightUp/puWeight)', '0.990400*(puWeightDown/puWeight)'], - 'ggWW' : ['1.012367*(puWeightUp/puWeight)', '0.988402*(puWeightDown/puWeight)'], - 'Vg' : ['0.995630*(puWeightUp/puWeight)', '1.007076*(puWeightDown/puWeight)'], - 'WZ' : ['1.002037*(puWeightUp/puWeight)', '0.997721*(puWeightDown/puWeight)'], - 'ZZ' : ['1.006574*(puWeightUp/puWeight)', '0.993175*(puWeightDown/puWeight)'], - 'VVV' : ['1.012827*(puWeightUp/puWeight)', '0.989623*(puWeightDown/puWeight)'], - 'top' : ['1.009336*(puWeightUp/puWeight)', '0.991324*(puWeightDown/puWeight)'], - 'Higgs' : ['1.011609*(puWeightUp/puWeight)', '0.989039*(puWeightDown/puWeight)'], - }, - 'AsLnN' : '0', -} - -### PU ID SF uncertainty - -puid_syst = ['Jet_PUIDSF_up/Jet_PUIDSF', 'Jet_PUIDSF_down/Jet_PUIDSF'] - -nuisances['jetPUID'] = { - 'name' : 'CMS_eff_j_PUJET_id_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, puid_syst) for skey in mc) -} - -### PS and UE - -nuisances['PS_ISR'] = { - 'name' : 'PS_WH_hww_ISR', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['PSWeight[2]', 'PSWeight[0]']) for skey in mc), - 'AsLnN' : '0', -} - -nuisances['PS_FSR'] = { - 'name' : 'PS_WH_hww_FSR', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['PSWeight[3]', 'PSWeight[1]']) for skey in mc), - 'AsLnN' : '0', -} - -nuisances['UE_CP5'] = { - 'name' : 'CMS_WH_hww_UE', - 'skipCMS' : 1, - 'type' : 'lnN', - 'samples' : dict((skey, '1.015') for skey in mc), -} - -# Charge flip efficiency -nuisances['chargeFlipEff'] = { - 'name' : 'CMS_whss_chargeFlipEff_2016', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['1-ttHMVA_eff_err_flip_2l', '1+ttHMVA_eff_err_flip_2l']) for skey in ['DY','ChargeFlip']), - 'cuts' : [cut for cut in cuts if ('_ee_' in cut or '_em_' in cut)] -} - -# Charge flip: uncertainty on opposite sign processes not affected by charge-flip -nuisances['chargeFlip_syst'] = { - 'name' : 'CMS_ChargeFlip_syst', - 'type' : 'lnN', - 'samples' : { - 'ChargeFlip' : '1.10', - } -} - -# Top pT reweighting uncertainty - -nuisances['TopPtRew'] = { - 'name' : 'CMS_top_pT_reweighting', # Theory uncertainty - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'top': ["1.", "1./Top_pTrw"] - }, - 'symmetrize' : True -} - -nuisances['WgStar'] = { - 'name' : 'CMS_hww_WgStarScale', - 'type' : 'lnN', - 'samples' : { - 'WgS' : '1.25' - } -} - -###### pdf uncertainties - -valuesggh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggH', '125.09','pdf','sm') -valuesggzh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggZH','125.09','pdf','sm') -valuesbbh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','bbH', '125.09','pdf','sm') - -nuisances['pdf_Higgs_gg'] = { - 'name' : 'pdf_Higgs_gg', - 'samples' : { - 'ggH_hww' : valuesggh, - 'ggH_htt' : valuesggh, - 'ggZH_hww' : valuesggzh, - 'bbH_hww' : valuesbbh, - }, - 'type' : 'lnN', -} - -# For ttH, we need to use 1./values -values = str(1./float(HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ttH','125.09','pdf','sm'))) - -nuisances['pdf_Higgs_ttH'] = { - 'name' : 'pdf_Higgs_ttH', - 'samples' : { - 'ttH_hww': values, - }, - 'type' : 'lnN', -} - -valuesqqh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','vbfH','125.09','pdf','sm') -valueswh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','WH', '125.09','pdf','sm') -valueszh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ZH', '125.09','pdf','sm') - -nuisances['pdf_Higgs_qqbar'] = { - 'name' : 'pdf_Higgs_qqbar', - 'type' : 'lnN', - 'samples': { - 'qqH_hww' : valuesqqh, - 'qqH_htt' : valuesqqh, - 'WH_hww_plus' : valueswh, - 'WH_hww_minus': valueswh, - 'WH_htt_plus' : valueswh, - 'WH_htt_minus': valueswh, - 'ZH_hww' : valueszh, - 'ZH_htt' : valueszh - }, -} - -nuisances['pdf_qqbar'] = { - 'name' : 'pdf_qqbar', - 'type' : 'lnN', - 'samples' : { - 'Wg' : '1.04', - 'Zg' : '1.04', - 'ZZ' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 - 'WZ' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 - 'WgS' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 - 'ZgS' : '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 - }, -} - -nuisances['pdf_gg'] = { - 'name': 'pdf_gg', - 'type': 'lnN', - 'samples': { - 'ggWW' : '1.05', - }, -} - -nuisances['pdf_Higgs_gg_ACCEPT'] = { - 'name' : 'pdf_WH_hww_Higgs_gg_ACCEPT', - 'samples' : { - 'ggH_hww' : '1.006', - 'ggH_htt' : '1.006', - 'ggZH_hww' : '1.006', - 'bbH_hww' : '1.006' - }, - 'type' : 'lnN', -} -nuisances['pdf_gg_ACCEPT'] = { - 'name' : 'pdf_WH_hww_gg_ACCEPT', - 'samples' : { - 'ggWW' : '1.006', - }, - 'type' : 'lnN', -} - -nuisances['pdf_Higgs_qqbar_ACCEPT'] = { - 'name' : 'pdf_WH_hww_Higgs_qqbar_ACCEPT', - 'type' : 'lnN', - 'samples' : { - 'qqH_hww' : '1.002', - 'qqH_htt' : '1.002', - 'WH_hww_plus' : '1.003', - 'WH_hww_minus': '1.003', - 'WH_htt_plus' : '1.003', - 'WH_htt_minus': '1.003', - 'ZH_hww' : '1.002', - 'ZH_htt' : '1.002', - }, -} - -nuisances['pdf_qqbar_ACCEPT'] = { - 'name' : 'pdf_WH_hww_qqbar_ACCEPT', - 'type' : 'lnN', - 'samples' : { - 'ZZ' : '1.001', - 'WZ' : '1.001', - }, -} - -##### Renormalization & factorization scales - -## Shape nuisance due to QCD scale variations for DY -## LHE scale variation weights (w_var / w_nominal) - -## This should work for samples with either 8 or 9 LHE scale weights (Length$(LHEScaleWeight) == 8 or 9) -variations = ['Alt(LHEScaleWeight,0,1)', 'Alt(LHEScaleWeight,1,1)', 'Alt(LHEScaleWeight,3,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-4,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-2,1)', 'Alt(LHEScaleWeight,nLHEScaleWeight-1,1)'] - -# nuisances['QCDscale_V'] = { -# 'name' : 'QCDscale_V', -# 'skipCMS' : 1, -# 'kind' : 'weight_envelope', -# 'type' : 'shape', -# 'samples' : { -# 'DY' : variations -# }, -# 'AsLnN' : '0' -# } - -nuisances['QCDscale_VV'] = { - 'name' : 'QCDscale_VV', - 'kind' : 'weight_envelope', - 'type' : 'shape', - 'samples' : { - 'WW' : variations, - 'Zg' : variations, - 'Wg' : variations, - 'ZZ' : variations, - 'WZ' : variations, - 'WgS' : variations, - 'ZgS' : variations - } -} - -nuisances['QCDscale_ggVV'] = { - 'name' : 'QCDscale_ggVV', - 'type' : 'lnN', - 'samples' : { - 'ggWW' : '1.15', - }, -} - -#### QCD scale uncertainties for Higgs signals other than ggH - -values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','vbfH','125.09','scale','sm') - -nuisances['QCDscale_qqH'] = { - 'name' : 'QCDscale_qqH', - 'samples' : { - 'qqH_hww' : values, - 'qqH_htt' : values, - }, - 'type' : 'lnN' -} - -valueswh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','WH','125.09','scale','sm') -valueszh = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ZH','125.09','scale','sm') - -nuisances['QCDscale_VH'] = { - 'name' : 'QCDscale_VH', - 'samples' : { - 'WH_hww_plus' : valueswh, - 'WH_hww_minus' : valueswh, - 'WH_htt_plus' : valueswh, - 'WH_htt_minus' : valueswh, - 'ZH_hww' : valueszh, - 'ZH_htt' : valueszh, - }, - 'type' : 'lnN', -} - -values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ggZH','125.09','scale','sm') - -nuisances['QCDscale_ggZH'] = { - 'name' : 'QCDscale_ggZH', - 'samples' : { - 'ggZH_hww' : values, - }, - 'type' : 'lnN', -} - -values = HiggsXS.GetHiggsProdXSNP('YR4','13TeV','ttH','125.09','scale','sm') - -nuisances['QCDscale_ttH'] = { - 'name' : 'QCDscale_ttH', - 'samples' : { - 'ttH_hww' : values, - }, - 'type' : 'lnN', -} - -nuisances['QCDscale_WWewk'] = { - 'name' : 'QCDscale_WWewk', - 'samples' : { - 'WWewk' : '1.11', - }, - 'type' : 'lnN' -} - -nuisances['QCDscale_qqbar_ACCEPT'] = { - 'name' : 'QCDscale_qqbar_ACCEPT', - 'type' : 'lnN', - 'samples' : { - 'qqH_hww' : '1.003', - 'qqH_htt' : '1.003', - 'WH_hww_plus' : '1.010', - 'WH_hww_minus' : '1.010', - 'WH_htt_plus' : '1.010', - 'WH_htt_minus' : '1.010', - 'ZH_hww' : '1.015', - 'ZH_htt' : '1.015', - } -} - -# FIXME: these come from HIG-16-042, maybe should be recomputed? -nuisances['QCDscale_gg_ACCEPT'] = { - 'name' : 'QCDscale_gg_ACCEPT', - 'samples' : { - 'ggH_htt' : '1.012', - 'ggH_hww' : '1.012', - 'ggZH_hww' : '1.012', - 'ggWW' : '1.012', - }, - 'type' : 'lnN', -} - -# WZ normalization from control region - -nuisances['WZ2jnorm'] = { - 'name' : 'CMS_hww_WZ3l2jnorm', - 'samples' : { - 'WZ' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [cut for cut in cuts if '2j' in cut], -} - -nuisances['WZ1jnorm'] = { - 'name' : 'CMS_hww_WZ3l1jnorm', - 'samples' : { - 'WZ' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [cut for cut in cuts if '1j' in cut], -} - -# Use the following if you want to apply the automatic combine MC stat nuisances. -nuisances['stat'] = { - 'type' : 'auto', - 'maxPoiss' : '10', - 'includeSignal' : '0', - 'samples' : {} -} -# nuisance ['maxPoiss'] = Number of threshold events for Poisson modelling -# nuisance ['includeSignal'] = Include MC stat nuisances on signal processes (1=True, 0=False) - -for n in nuisances.values(): - n['skipCMS'] = 1 diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_mm_CR/plot.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_mm_CR/plot.py deleted file mode 100644 index 55e7671b..00000000 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_mm_CR/plot.py +++ /dev/null @@ -1,356 +0,0 @@ -# plot configuration - -# Groups of samples to improve the plots. -# If not defined, normal plots is used - -# BTag normalization factors -# Cut = hww2l2v_13TeV_samesign_2j -scale_histo_ttH_hww = 0.616976697535/0.378860542609 # 1.62850608112 -scale_histo_WW = 1.72511153091/1.84461814416 # 0.935213359126 -scale_histo_DY = 3.53636672699/4.7664292056 # 0.741932078386 -scale_histo_WZ = 16.0432100435/14.3489102017 # 1.11807864277 -scale_histo_Wg = 15.8878830005/14.5649053729 # 1.09083324565 -scale_histo_Zg = 0.878090355125/0.845736028771 # 1.03825582127 -scale_histo_Vg = (15.8878830005+0.878090355125)/(14.5649053729+0.845736028771) -scale_histo_WgS = 7.97423388174/7.86396725233 # 1.01402175592 -scale_histo_ZgS = 0.951074186953/0.953410829908 # 0.99754917515 -scale_histo_VgS = (7.97423388174+0.951074186953)/(7.86396725233+0.953410829908) -scale_histo_ZH_htt = 0.0517626146839/0.0418699835469 # 1.23627024181 -scale_histo_WH_htt_plus = 0.155233292681/0.13501959996 # 1.14970932166 -scale_histo_ggZH_hww = 0.0260047673541/0.0191405906096 # 1.35861885793 -scale_histo_qqH_hww = 0.0123473458074/0.0113367284673 # 1.0891454129 -scale_histo_ZZ = 0.482985873193/0.406317249935 # 1.18869152927 -scale_histo_ggH_hww = 0.073170975305/0.0724227670066 # 1.01033112002 -scale_histo_WH_htt_minus = 0.100533657238/0.0933534088816 # 1.07691468842 -scale_histo_VVV = 1.38782292345/1.35367244737 # 1.02522802038 -scale_histo_WH_hww_plus = 0.726340493052/0.707547382663 # 1.02656092136 -scale_histo_ggH_htt = 0.0/1 # 0.0 -scale_histo_ggH_htt = 0.0/1 # 0.0 -scale_histo_ggWW = 0.089605006043/0.0911263518739 # 0.983305094524 -scale_histo_top = 44.5715804726/32.0725083751 # 1.38971295763 -scale_histo_WWewk = 0.0277638808994/0.0232032545063 # 1.19655115156 -scale_histo_ZH_hww = 0.128885867784/0.115278399228 # 1.11804005476 -scale_histo_WH_hww_minus = 0.445075508444/0.421163499332 # 1.05677607188 -scale_histo_qqH_htt = 0.00359856778426/0.00462458335033 # 0.778138809846 - -groupPlot = {} - -# groupPlot['top'] = { -# 'nameHR' : 'tW+ and t#bar{t}', -# 'isSignal' : 0, -# 'color' : 400, # kYellow -# 'samples' : ['top'] -# } - -# groupPlot['WW'] = { -# 'nameHR' : 'WW', -# 'isSignal' : 0, -# 'color' : 851, # kAzure -9 -# 'samples' : ['WW', 'ggWW', 'WWewk'] -# } - -# groupPlot['DY'] = { -# 'nameHR' : "DY", -# 'isSignal' : 0, -# 'color' : 418, # kGreen+2 -# 'samples' : ['DY'] -# } - -groupPlot['Fake'] = { - 'nameHR' : 'Non-prompt', - 'isSignal' : 0, - 'color' : 921, # kGray + 1 - 'samples' : ['Fake_mm','Fake_em','Fake_ee'] -} - -# groupPlot['ChargeFlip'] = { -# 'nameHR' : "charge_flip", -# 'isSignal' : 0, -# 'color' : 418, # kGreen+2 -# 'samples' : ['ChargeFlip'] -# } - -groupPlot['VVV'] = { - 'nameHR' : 'VVV', - 'isSignal' : 0, - 'color' : 857, # kAzure -3 - 'samples' : ['VVV'] -} - -groupPlot['ZZ'] = { - 'nameHR' : "ZZ", - 'isSignal' : 0, - 'color' : 617, # kViolet + 1 - 'samples' : ['ZZ'] -} - -groupPlot['WZ'] = { - 'nameHR' : "WZ", - 'isSignal' : 0, - 'color' : 619, # kViolet + 1 - 'samples' : ['WZ'] -} - -groupPlot['Vg'] = { - 'nameHR' : "V#gamma", - 'isSignal' : 0, - 'color' : 810, # kOrange + 10 - 'samples' : ['Vg'] -} - -groupPlot['VgS'] = { - 'nameHR' : "V#gamma*", - 'isSignal' : 0, - 'color' : 412, # kGreen - 9 - 'samples' : ['VgS'] -} - -groupPlot['Higgs'] = { - 'nameHR' : 'Higgs', - 'isSignal' : 0, - 'color' : 632, # kRed - 'samples' : ['ggH_hww','qqH_hww','ZH_hww','ggZH_hww','ttH_hww','ggH_htt','qqH_htt','ZH_htt'] -} - -groupPlot['WH_minus'] = { - 'nameHR' : 'W^{-} H (x 10)', - 'isSignal' : 2, - 'color' : 600, # kBlue - 'samples' : ['WH_hww_minus','WH_htt_minus'] -} - -groupPlot['WH_plus'] = { - 'nameHR' : 'W^{+} H (x 10)', - 'isSignal' : 2, - 'color' : 632, # kRed - 'samples' : ['WH_hww_plus', 'WH_htt_plus'] -} - - -# keys here must match keys in samples.py - -plot = {} - -# plot['ChargeFlip'] = { -# 'color' : 418, # kGreen+2 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : 0.5, -# } - -# plot['DY'] = { -# 'color' : 418, # kGreen+2 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : scale_histo_DY, -# } - -# plot['top'] = { -# 'nameHR' : 'tW and t#bar{t}', -# 'color' : 400, # kYellow -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : scale_histo_top, -# } - -# plot['WW'] = { -# 'color' : 851, # kAzure -9 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : scale_histo_WW, -# } - -# plot['WWewk'] = { -# 'color' : 850, # kAzure -10 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : scale_histo_WWewk, -# } - -# plot['ggWW'] = { -# 'color' : 850, # kAzure -10 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : scale_histo_ggWW, -# } - -plot['Vg'] = { - 'color' : 859, # kAzure -1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_Vg, -} - -plot['VgS'] = { - 'color' : 617, # kViolet + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_VgS, -} - -plot['WZ'] = { - 'color' : 858, # kAzure -2 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_WZ * 1.138, # NLO -> NNLO k-factor! -} - -plot['ZZ'] = { - 'color' : 858, # kAzure -2 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ZZ, -} - -plot['VVV'] = { - 'color' : 857, # kAzure -3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_VVV, -} - -########### -# Signals # -########### - -# HWW - -plot['ggH_hww'] = { - 'color' : 632, # kRed - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggH_hww, -} - -plot['qqH_hww'] = { - 'color' : 632+1, # kRed+1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_qqH_hww, -} - -plot['ZH_hww'] = { - 'color' : 632+3, # kRed+3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ZH_hww, -} - -plot['ggZH_hww'] = { - 'color' : 632+4, # kRed+4 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggZH_hww, -} - -plot['WH_hww_plus'] = { - 'color' : 632+2, # kRed+2 - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_hww_plus, -} - -plot['WH_hww_minus'] = { - 'color' : 600, # kBlue - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_hww_minus, -} - -plot['ttH_hww'] = { - 'color' : 632+3, # kRed+3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ttH_hww, -} - - -# Htautau - -plot['ggH_htt'] = { - 'color' : 632, # kRed - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ggH_htt, -} - -plot['qqH_htt'] = { - 'color' : 632+1, # kRed+1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_qqH_htt, -} - -plot['ZH_htt'] = { - 'color' : 632+3, # kRed+3 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : scale_histo_ZH_htt, -} - -plot['WH_htt_plus'] = { - 'color' : 632+2, # kRed+2 - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_htt_plus, -} - -plot['WH_htt_minus'] = { - 'color' : 632+2, # kRed+2 - 'isSignal' : 2, - 'isData' : 0, - 'scale' : 10.0 * scale_histo_WH_htt_minus, -} - - -######## -# Fake # -######## - -plot['Fake_em'] = { - 'color' : 921, # kGray + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['Fake_ee'] = { - 'color' : 921, # kGray + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['Fake_mm'] = { - 'color' : 921, # kGray + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -# plot['Fake'] = { -# 'color' : 921, # kGray + 1 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : 1.0 -# } - -######## -# Data # -######## - -plot['DATA'] = { - 'nameHR' : 'Data', - 'color' : 1 , - 'isSignal' : 0, - 'isData' : 1, - 'isBlind' : 0, -} - - -# Define legend - -legend = {} - -legend['lumi'] = 'L = 19.5 fb^{-1}' -legend['sqrt'] = '#sqrt{s} = 13 TeV' diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_mm_CR/structure.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_mm_CR/structure.py deleted file mode 100644 index aed856a5..00000000 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_mm_CR/structure.py +++ /dev/null @@ -1,203 +0,0 @@ -# structure configuration for datacard - -# keys here must match keys in samples.py - -structure = {} - -signal_normalization = 10.0 - -# BTag normalization factors -# Cut = hww2l2v_13TeV_samesign_2j -scale_histo_ttH_hww = 0.616976697535/0.378860542609 # 1.62850608112 -scale_histo_WW = 1.72511153091/1.84461814416 # 0.935213359126 -scale_histo_DY = 3.53636672699/4.7664292056 # 0.741932078386 -scale_histo_WZ = 16.0432100435/14.3489102017 # 1.11807864277 -scale_histo_Wg = 15.8878830005/14.5649053729 # 1.09083324565 -scale_histo_Zg = 0.878090355125/0.845736028771 # 1.03825582127 -scale_histo_Vg = (15.8878830005+0.878090355125)/(14.5649053729+0.845736028771) -scale_histo_WgS = 7.97423388174/7.86396725233 # 1.01402175592 -scale_histo_ZgS = 0.951074186953/0.953410829908 # 0.99754917515 -scale_histo_VgS = (7.97423388174+0.951074186953)/(7.86396725233+0.953410829908) -scale_histo_ZH_htt = 0.0517626146839/0.0418699835469 # 1.23627024181 -scale_histo_WH_htt_plus = 0.155233292681/0.13501959996 # 1.14970932166 -scale_histo_ggZH_hww = 0.0260047673541/0.0191405906096 # 1.35861885793 -scale_histo_qqH_hww = 0.0123473458074/0.0113367284673 # 1.0891454129 -scale_histo_ZZ = 0.482985873193/0.406317249935 # 1.18869152927 -scale_histo_ggH_hww = 0.073170975305/0.0724227670066 # 1.01033112002 -scale_histo_WH_htt_minus = 0.100533657238/0.0933534088816 # 1.07691468842 -scale_histo_VVV = 1.38782292345/1.35367244737 # 1.02522802038 -scale_histo_WH_hww_plus = 0.726340493052/0.707547382663 # 1.02656092136 -scale_histo_ggH_htt = 0.0/1 # 0.0 -scale_histo_ggH_htt = 0.0/1 # 0.0 -scale_histo_ggWW = 0.089605006043/0.0911263518739 # 0.983305094524 -scale_histo_top = 44.5715804726/32.0725083751 # 1.38971295763 -scale_histo_WWewk = 0.0277638808994/0.0232032545063 # 1.19655115156 -scale_histo_ZH_hww = 0.128885867784/0.115278399228 # 1.11804005476 -scale_histo_WH_hww_minus = 0.445075508444/0.421163499332 # 1.05677607188 -scale_histo_qqH_htt = 0.00359856778426/0.00462458335033 # 0.778138809846 - -# structure['DY'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_DY, -# } - -# structure['top'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_top, -# } - -# structure['WW'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_WW, -# } - -# structure['WWewk'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_WWewk, -# } - -# structure['ggWW'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : scale_histo_ggWW, -# } - - -structure['Vg'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_Vg, -} - -structure['VgS'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_VgS, -} - -structure['WZ'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WZ * 1.138 # NLO -> NNLO k-factor -} - -structure['ZZ'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZZ, -} - -structure['VVV'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_VVV, -} - - -# Higgs -structure['ggH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ggH_hww, -} - -structure['qqH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_qqH_hww, -} - -structure['ZH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZH_hww, -} - -structure['ggZH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ggZH_hww, -} - -structure['WH_hww_plus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_hww_plus*signal_normalization, -} - -structure['WH_hww_minus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_hww_minus*signal_normalization, -} - -structure['ttH_hww'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ttH_hww, -} - -structure['ggH_htt'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ggH_htt, -} - -structure['qqH_htt'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_qqH_htt, -} - -structure['ZH_htt'] = { - 'isSignal' : 0, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_ZH_htt, -} - -structure['WH_htt_plus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_htt_plus*signal_normalization, -} - -structure['WH_htt_minus'] = { - 'isSignal' : 1, - 'isData' : 0, - 'scaleSampleForDatacard' : scale_histo_WH_htt_minus*signal_normalization, -} - - -# Fakes -structure['Fake_ee'] = { - 'isSignal' : 0, - 'isData' : 0, -} - -structure['Fake_mm'] = { - 'isSignal' : 0, - 'isData' : 0, -} - -structure['Fake_em'] = { - 'isSignal' : 0, - 'isData' : 0, -} - - -# # Data-driven charge flip estimation -# structure['ChargeFlip'] = { -# 'isSignal' : 0, -# 'isData' : 0, -# 'scaleSampleForDatacard' : 0.5, -# } - -# Data -structure['DATA'] = { - 'isSignal' : 0, - 'isData' : 1 -} From 410592d68acb8762357fb97e6649222c5ca55981 Mon Sep 17 00:00:00 2001 From: ntrevisa Date: Fri, 29 Aug 2025 09:50:18 +0200 Subject: [PATCH 37/44] 2016HIPM WHSS working with new fake rates --- .../UL/2016HIPM_v9/WHSS/DY_OS_CR/aliases.py | 80 ++++---- .../WHSS/DY_OS_CR/configuration.py | 11 +- .../UL/2016HIPM_v9/WHSS/DY_OS_CR/cuts.py | 28 +-- .../UL/2016HIPM_v9/WHSS/DY_OS_CR/plot.py | 64 +----- .../UL/2016HIPM_v9/WHSS/DY_OS_CR/structure.py | 14 +- .../UL/2016HIPM_v9/WHSS/aliases.py | 77 +++---- .../UL/2016HIPM_v9/WHSS/configuration.py | 10 +- .../WHSS/configuration_1j/configuration.py | 10 +- .../2016HIPM_v9/WHSS/configuration_1j/cuts.py | 12 +- .../WHSS/configuration_1j_mm/configuration.py | 10 +- .../WHSS/configuration_1j_mm/cuts.py | 6 +- .../WHSS/configuration_2j/configuration.py | 10 +- .../2016HIPM_v9/WHSS/configuration_2j/cuts.py | 12 +- .../WHSS/configuration_2j_mm/configuration.py | 10 +- .../WHSS/configuration_2j_mm/cuts.py | 6 +- .../UL/2016HIPM_v9/WHSS/cuts.py | 84 +++----- .../UL/2016HIPM_v9/WHSS/do_datacards.sh | 20 -- .../UL/2016HIPM_v9/WHSS/do_plots.sh | 20 -- .../UL/2016HIPM_v9/WHSS/nuisances.py | 194 +++--------------- .../UL/2016HIPM_v9/WHSS/plot.py | 64 +----- .../UL/2016HIPM_v9/WHSS/samples.py | 9 + .../UL/2016HIPM_v9/WHSS/structure.py | 14 +- 22 files changed, 253 insertions(+), 512 deletions(-) diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/DY_OS_CR/aliases.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/DY_OS_CR/aliases.py index 85e79ca4..7d07bd5f 100644 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/DY_OS_CR/aliases.py +++ b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/DY_OS_CR/aliases.py @@ -3,7 +3,6 @@ import inspect # /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/DY_OS_CR - configurations = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file configurations = os.path.dirname(configurations) # DY_OS_CR configurations = os.path.dirname(configurations) # WHSS @@ -35,110 +34,117 @@ # ttHMVA SFs and uncertainties aliases['LepWPttHMVASF'] = { - 'linesToAdd' : ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH = ttHMVASF(\"2016HIPM\", 2, \"all\", \"nominal\");')"], 'expr' : 'ttH(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc, } aliases['LepWPttHMVASFEleUp'] = { - 'linesToAdd' : ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_EleUp = ttHMVASF(\"2016HIPM\", 2, \"all\", \"eleUp\");')"], 'expr' : 'ttH_EleUp(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc, } aliases['LepWPttHMVASFEleDown'] = { - 'linesToAdd' : ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_EleDown = ttHMVASF(\"2016HIPM\", 2, \"all\", \"eleDown\");')"], 'expr' : 'ttH_EleDown(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc, } aliases['LepWPttHMVASFMuUp'] = { - 'linesToAdd' : ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_MuUp = ttHMVASF(\"2016HIPM\", 2, \"all\", \"muUp\");')"], 'expr' : 'ttH_MuUp(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc, } aliases['LepWPttHMVASFMuDown'] = { - 'linesToAdd' : ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_MuDown = ttHMVASF(\"2016HIPM\", 2, \"all\", \"muDown\");')"], 'expr' : 'ttH_MuDown(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc, } +# Conept +aliases['Lepton_conept'] = { + 'expr': 'LeptonConePt(Lepton_pt, Lepton_pdgId, Lepton_electronIdx, Lepton_muonIdx, Electron_jetRelIso, Muon_jetRelIso)', + 'linesToAdd': [f'#include "{configurations}/macros/LeptonConePt_class.cc"'], + 'samples': mc + ['Fake', 'DATA', 'DATA_unprescaled'] +} + # Fake leptons transfer factor aliases['fakeW'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"nominal\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"nominal\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'], } # And variations - already divided by central values in formulas ! aliases['fakeWEleUp'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleUp = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"EleUp\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader_EleUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleUp = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"EleUp\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_EleUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'], } aliases['fakeWEleDown'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleDown = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"EleDown\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader_EleDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleDown = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"EleDown\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_EleDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'], } aliases['fakeWMuUp'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuUp = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"MuUp\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader_MuUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuUp = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"MuUp\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_MuUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'], } aliases['fakeWMuDown'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuDown = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"MuDown\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader_MuDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuDown = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"MuDown\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_MuDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'], } aliases['fakeWStatEleUp'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleUp = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"StatEleUp\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader_StatEleUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleUp = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"StatEleUp\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_StatEleUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'], } aliases['fakeWStatEleDown'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleDown = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"StatEleDown\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader_StatEleDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleDown = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"StatEleDown\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_StatEleDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'], } aliases['fakeWStatMuUp'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuUp = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"StatMuUp\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader_StatMuUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuUp = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"StatMuUp\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_StatMuUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'], } aliases['fakeWStatMuDown'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuDown = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"StatMuDown\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader_StatMuDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuDown = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"StatMuDown\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_StatMuDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'], } # Charge-flip efficiencies and uncertainties aliases['ttHMVA_eff_flip_2l'] = { - 'linesToAdd' : ['#include "%s/macros/flipper_eff_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/flipper_eff_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('flipper_eff flipper = flipper_eff(\"UL_2016HIPM\", 2, \"Total_SF\", \"false\");')"], 'expr' : 'flipper(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc + ['DATA','Fake'], } aliases['ttHMVA_eff_err_flip_2l'] = { - 'linesToAdd' : ['#include "%s/macros/flipper_eff_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/flipper_eff_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('flipper_eff flipper_unc = flipper_eff(\"UL_2016HIPM\", 2, \"Total_SF\", \"false\");')"], 'expr' : 'flipper_unc(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc + ['DATA','Fake'], @@ -326,8 +332,8 @@ # Evaluate BDT discriminant aliases['BDT_WHSS_TopSemileptonic_v9'] = { - 'linesToAdd' : ['#include "%s/macros/BDT_WHSS_TopSemileptonic_v9_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('BDT_WHSS_TopSemileptonic_v9 BDT_WHSS = BDT_WHSS_TopSemileptonic_v9(\"BDTG_6\",\"{0}/data/BDT/2016HIPM/WHSS/weights/TMVAClassification_BDTG_6.weights.xml\");')".format(configurations)], + 'linesToAdd' : [f'#include "{configurations}/macros/BDT_WHSS_TopSemileptonic_v9_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('BDT_WHSS_TopSemileptonic_v9 BDT_WHSS = BDT_WHSS_TopSemileptonic_v9(\"BDTG_6\",\"{configurations}/data/BDT/2016HIPM/WHSS/weights/TMVAClassification_BDTG_6.weights.xml\");')"], 'expr' : 'BDT_WHSS(mll,mjj,mtw1,mtw2,ptll,mlljj20_whss,PuppiMET_pt,dphill,dphijj,dphillmet,dphilmet2,dphijet1met,CleanJet_pt,Jet_btagDeepB,CleanJet_jetIdx)', 'samples' : mc + ['DATA','Fake'], } diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/DY_OS_CR/configuration.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/DY_OS_CR/configuration.py index 58030a1c..8122d567 100644 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/DY_OS_CR/configuration.py +++ b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/DY_OS_CR/configuration.py @@ -1,5 +1,12 @@ # Configuration file for charge asymmetry WHSS analysis using the UL 2016HIPM dataset +import sys,inspect + +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' + # Tag used to identify the configuration folder version tag = 'WHSS_OSCR_2016HIPM_v9_chargeAsymmetry_Mu82_EleUL90' @@ -10,7 +17,9 @@ outputFile = "mkShapes__{}.root".format(tag) # Path to ouput folder -outputFolder = "../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +if site == 'kit': + outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" # Path to batch folder (used for condor submission) batchFolder = "condor" diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/DY_OS_CR/cuts.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/DY_OS_CR/cuts.py index a713fece..34e691da 100644 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/DY_OS_CR/cuts.py +++ b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/DY_OS_CR/cuts.py @@ -21,10 +21,10 @@ 'pt2ge20' : 'abs(mll-91.2)>15 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # OUT Z-peak 'SS_CR_pt2ge20' : 'abs(mll-91.2)>15 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', # OUT Z-peak SS CR --> inverting detall cut 'DYeeCR_pt2ge20' : 'abs(mll-91.2)<=15 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # IN Z-peak - # Sub-leading lepton pT < 20 GeV - 'pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # OUT Z-peak - 'SS_CR_pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', # OUT Z-peak SS CR --> inverting detall cut - 'DYeeCR_pt2lt20' : 'abs(mll-91.2)<=15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # IN Z-peak + # # Sub-leading lepton pT < 20 GeV + # 'pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # OUT Z-peak + # 'SS_CR_pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', # OUT Z-peak SS CR --> inverting detall cut + # 'DYeeCR_pt2lt20' : 'abs(mll-91.2)<=15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # IN Z-peak } } @@ -36,10 +36,10 @@ 'pt2ge20' : 'abs(mll-91.2)>15 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # OUT Z-peak 'SS_CR_pt2ge20' : 'abs(mll-91.2)>15 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', # OUT Z-peak SS CR --> inverting detall cut 'DYeeCR_pt2ge20' : 'abs(mll-91.2)<=15 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # IN Z-peak - # Sub-leading lepton pT < 20 GeV - 'pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # OUT Z-peak - 'SS_CR_pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', # OUT Z-peak SS CR --> inverting detall cut - 'DYeeCR_pt2lt20' : 'abs(mll-91.2)<=15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # IN Z-peak + # # Sub-leading lepton pT < 20 GeV + # 'pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # OUT Z-peak + # 'SS_CR_pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', # OUT Z-peak SS CR --> inverting detall cut + # 'DYeeCR_pt2lt20' : 'abs(mll-91.2)<=15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # IN Z-peak } } @@ -52,9 +52,9 @@ # Sub-leading lepton pT >= 20 GeV 'pt2ge20' : 'abs(mll-91.2)>15 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # OUT Z-peak 'SS_CR_pt2ge20' : 'abs(mll-91.2)>15 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', # OUT Z-peak SS CR --> inverting detall cut - # Sub-leading lepton pT < 20 GeV - 'pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # OUT Z-peak - 'SS_CR_pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', # OUT Z-peak SS CR --> inverting detall cut + # # Sub-leading lepton pT < 20 GeV + # 'pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # OUT Z-peak + # 'SS_CR_pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', # OUT Z-peak SS CR --> inverting detall cut } } @@ -65,9 +65,9 @@ # Sub-leading lepton pT >= 20 GeV 'pt2ge20' : 'abs(mll-91.2)>15 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # OUT Z-peak 'SS_CR_pt2ge20' : 'abs(mll-91.2)>15 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', # OUT Z-peak SS CR --> inverting detall cut - # Sub-leading lepton pT < 20 GeV - 'pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # OUT Z-peak - 'SS_CR_pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', # OUT Z-peak SS CR --> inverting detall cut + # # Sub-leading lepton pT < 20 GeV + # 'pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', # OUT Z-peak + # 'SS_CR_pt2lt20' : 'abs(mll-91.2)>15 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', # OUT Z-peak SS CR --> inverting detall cut } } diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/DY_OS_CR/plot.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/DY_OS_CR/plot.py index 7256872b..f8b0853f 100644 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/DY_OS_CR/plot.py +++ b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/DY_OS_CR/plot.py @@ -40,46 +40,18 @@ 'samples' : ['WZ'] } -# groupPlot['Vg'] = { -# 'nameHR' : "V#gamma", -# 'isSignal' : 0, -# 'color' : 810, # kOrange + 10 -# 'samples' : ['Wg','Zg'] -# } - -groupPlot['Zg'] = { - 'nameHR' : "Z#gamma", +groupPlot['Vg'] = { + 'nameHR' : "V#gamma", 'isSignal' : 0, 'color' : 810, # kOrange + 10 - 'samples' : ['Zg'] -} - -groupPlot['Wg'] = { - 'nameHR' : "W#gamma", - 'isSignal' : 0, - 'color' : 859, - 'samples' : ['Wg'] -} - -# groupPlot['VgS'] = { -# 'nameHR' : "V#gamma*", -# 'isSignal' : 0, -# 'color' : 412, # kGreen - 9 -# 'samples' : ['ZgS','WgS'] -# } - -groupPlot['WgS'] = { - 'nameHR' : "W#gamma*", - 'isSignal' : 0, - 'color' : 409, # kGreen - 9 - 'samples' : ['WgS'] + 'samples' : ['Vg'] } -groupPlot['ZgS'] = { - 'nameHR' : "Z#gamma*", +groupPlot['VgS'] = { + 'nameHR' : "V#gamma*", 'isSignal' : 0, 'color' : 617, - 'samples' : ['ZgS'] + 'samples' : ['VgS'] } groupPlot['Higgs'] = { @@ -116,32 +88,16 @@ 'scale' : 1.0, } -plot['Zg'] = { - 'nameHR' : 'Zg', +plot['Vg'] = { + 'nameHR' : 'Vg', 'color' : 859, # kAzure -1 'isSignal' : 0, 'isData' : 0, 'scale' : 1.0 } -plot['Wg'] = { - 'nameHR' : 'Wg', - 'color' : 859, # kAzure -1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['ZgS'] = { - 'nameHR' : 'ZgS', - 'color' : 617, # kViolet + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['WgS'] = { - 'nameHR' : 'WgS', +plot['VgS'] = { + 'nameHR' : 'VgS', 'color' : 859, # kAzure -1 'isSignal' : 0, 'isData' : 0, diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/DY_OS_CR/structure.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/DY_OS_CR/structure.py index 2ea8c5ef..37a9fb5d 100644 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/DY_OS_CR/structure.py +++ b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/DY_OS_CR/structure.py @@ -29,22 +29,12 @@ 'isData' : 0, } -structure['Wg'] = { +structure['Vg'] = { 'isSignal' : 0, 'isData' : 0, } -structure['Zg'] = { - 'isSignal' : 0, - 'isData' : 0, -} - -structure['WgS'] = { - 'isSignal' : 0, - 'isData' : 0, -} - -structure['ZgS'] = { +structure['VgS'] = { 'isSignal' : 0, 'isData' : 0, } diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/aliases.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/aliases.py index b987154e..e68efcb7 100644 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/aliases.py +++ b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/aliases.py @@ -35,110 +35,117 @@ # ttHMVA SFs and uncertainties aliases['LepWPttHMVASF'] = { - 'linesToAdd' : ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH = ttHMVASF(\"2016HIPM\", 2, \"all\", \"nominal\");')"], 'expr' : 'ttH(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc, } aliases['LepWPttHMVASFEleUp'] = { - 'linesToAdd' : ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_EleUp = ttHMVASF(\"2016HIPM\", 2, \"all\", \"eleUp\");')"], 'expr' : 'ttH_EleUp(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc, } aliases['LepWPttHMVASFEleDown'] = { - 'linesToAdd' : ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_EleDown = ttHMVASF(\"2016HIPM\", 2, \"all\", \"eleDown\");')"], 'expr' : 'ttH_EleDown(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc, } aliases['LepWPttHMVASFMuUp'] = { - 'linesToAdd' : ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_MuUp = ttHMVASF(\"2016HIPM\", 2, \"all\", \"muUp\");')"], 'expr' : 'ttH_MuUp(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc, } aliases['LepWPttHMVASFMuDown'] = { - 'linesToAdd' : ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_MuDown = ttHMVASF(\"2016HIPM\", 2, \"all\", \"muDown\");')"], 'expr' : 'ttH_MuDown(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc, } +# Conept +aliases['Lepton_conept'] = { + 'expr' : 'LeptonConePt(Lepton_pt, Lepton_pdgId, Lepton_electronIdx, Lepton_muonIdx, Electron_jetRelIso, Muon_jetRelIso)', + 'linesToAdd' : [f'#include "{configurations}/macros/LeptonConePt_class.cc"'], + 'samples' : mc + ['Fake', 'DATA', 'DATA_unprescaled'] +} + # Fake leptons transfer factor aliases['fakeW'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"nominal\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"nominal\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], 'expr' : 'fr_reader(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'], } # And variations - already divided by central values in formulas ! aliases['fakeWEleUp'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleUp = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"EleUp\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader_EleUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleUp = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"EleUp\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_EleUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'], } aliases['fakeWEleDown'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleDown = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"EleDown\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader_EleDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleDown = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"EleDown\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_EleDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'], } aliases['fakeWMuUp'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuUp = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"MuUp\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader_MuUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuUp = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"MuUp\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_MuUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'], } aliases['fakeWMuDown'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuDown = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"MuDown\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader_MuDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuDown = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"MuDown\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_MuDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'], } aliases['fakeWStatEleUp'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleUp = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"StatEleUp\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader_StatEleUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleUp = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"StatEleUp\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_StatEleUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'], } aliases['fakeWStatEleDown'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleDown = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"StatEleDown\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader_StatEleDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleDown = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"StatEleDown\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_StatEleDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'], } aliases['fakeWStatMuUp'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuUp = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"StatMuUp\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader_StatMuUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuUp = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"StatMuUp\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_StatMuUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'], } aliases['fakeWStatMuDown'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuDown = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"StatMuDown\", 2, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr' : 'fr_reader_StatMuDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuDown = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"StatMuDown\", 2, \"std\", \"{configurations}\");')"], + 'expr' : 'fr_reader_StatMuDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'], } # Charge-flip efficiencies and uncertainties aliases['ttHMVA_eff_flip_2l'] = { - 'linesToAdd' : ['#include "%s/macros/flipper_eff_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/flipper_eff_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('flipper_eff flipper = flipper_eff(\"UL_2016HIPM\", 2, \"Total_SF\", \"false\");')"], 'expr' : 'flipper(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : ['DY','ChargeFlip'], } aliases['ttHMVA_eff_err_flip_2l'] = { - 'linesToAdd' : ['#include "%s/macros/flipper_eff_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/flipper_eff_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('flipper_eff flipper_unc = flipper_eff(\"UL_2016HIPM\", 2, \"Total_SF\", \"false\");')"], 'expr' : 'flipper_unc(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : ['DY','ChargeFlip'], @@ -326,8 +333,8 @@ # Evaluate BDT discriminant aliases['BDT_WHSS_TopSemileptonic_v9'] = { - 'linesToAdd' : ['#include "%s/macros/BDT_WHSS_TopSemileptonic_v9_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('BDT_WHSS_TopSemileptonic_v9 BDT_WHSS = BDT_WHSS_TopSemileptonic_v9(\"BDTG_6\",\"{0}/data/BDT/2016HIPM/WHSS/weights/TMVAClassification_BDTG_6.weights.xml\");')".format(configurations)], + 'linesToAdd' : [f'#include "{configurations}/macros/BDT_WHSS_TopSemileptonic_v9_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('BDT_WHSS_TopSemileptonic_v9 BDT_WHSS = BDT_WHSS_TopSemileptonic_v9(\"BDTG_6\",\"{configurations}/data/BDT/2016HIPM/WHSS/weights/TMVAClassification_BDTG_6.weights.xml\");')"], 'expr' : 'BDT_WHSS(mll,mjj,mtw1,mtw2,ptll,mlljj20_whss,PuppiMET_pt,dphill,dphijj,dphillmet,dphilmet2,dphijet1met,CleanJet_pt,Jet_btagDeepB,CleanJet_jetIdx)', 'samples' : mc + ['DATA','Fake'], } diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration.py index 26a571b5..580fc25d 100644 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration.py +++ b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration.py @@ -2,8 +2,12 @@ import sys,inspect -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/ +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/ configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file configurations_nuisance = os.path.dirname(configurations_nuisance) # WHSS configurations_nuisance = os.path.dirname(configurations_nuisance) # 2016HIPM_v9 @@ -19,7 +23,9 @@ outputFile = "mkShapes__{}.root".format(tag) # Path to ouput folder -outputFolder = "../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +if site == 'kit': + outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" # Path to batch folder (used for condor submission) batchFolder = "condor" diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j/configuration.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j/configuration.py index 4ae4d551..18b9488c 100644 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j/configuration.py +++ b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j/configuration.py @@ -2,8 +2,12 @@ import sys,inspect -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file configurations_nuisance = os.path.dirname(configurations_nuisance) # configuration_1j configurations_nuisance = os.path.dirname(configurations_nuisance) # WHSS @@ -20,7 +24,9 @@ outputFile = "plots_WHSS_2016HIPM_v9_chargeAsymmetry_Mu82_EleUL90_DYflip_data.root" # "mkShapes__{}.root".format(tag) # Path to ouput folder -outputFolder = "../../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +if site == 'kit': + outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" # Path to batch folder (used for condor submission) batchFolder = "condor" diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j/cuts.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j/cuts.py index 7b309dfe..626f7ef3 100644 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j/cuts.py +++ b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j/cuts.py @@ -23,9 +23,9 @@ # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', 'minus_pt2ge20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - 'minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # 'minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', } } @@ -36,9 +36,9 @@ # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', 'minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', } } diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_mm/configuration.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_mm/configuration.py index 321acbe3..204ecb44 100644 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_mm/configuration.py +++ b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_mm/configuration.py @@ -2,8 +2,12 @@ import sys,inspect -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_mm +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_mm configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file configurations_nuisance = os.path.dirname(configurations_nuisance) # configuration_1j_mm configurations_nuisance = os.path.dirname(configurations_nuisance) # WHSS @@ -20,7 +24,9 @@ outputFile = "plots_WHSS_2016HIPM_v9_chargeAsymmetry_Mu82_EleUL90_DYflip_data.root" # "mkShapes__{}.root".format(tag) # Path to ouput folder -outputFolder = "../../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +if site == 'kit': + outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" # Path to batch folder (used for condor submission) batchFolder = "condor" diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_mm/cuts.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_mm/cuts.py index ff47c1bc..63f4fa98 100644 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_mm/cuts.py +++ b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_1j_mm/cuts.py @@ -23,9 +23,9 @@ # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', 'minus_pt2ge20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - 'minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # 'minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', } } diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j/configuration.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j/configuration.py index 47f6351f..486b4806 100644 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j/configuration.py +++ b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j/configuration.py @@ -2,8 +2,12 @@ import sys,inspect -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file configurations_nuisance = os.path.dirname(configurations_nuisance) # configuration_2j configurations_nuisance = os.path.dirname(configurations_nuisance) # WHSS @@ -20,7 +24,9 @@ outputFile = "plots_WHSS_2016HIPM_v9_chargeAsymmetry_Mu82_EleUL90_DYflip_data.root" # "mkShapes__{}.root".format(tag) # Path to ouput folder -outputFolder = "../../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +if site == 'kit': + outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" # Path to batch folder (used for condor submission) batchFolder = "condor" diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j/cuts.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j/cuts.py index c286ef97..fe084d7a 100644 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j/cuts.py +++ b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j/cuts.py @@ -23,9 +23,9 @@ # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', 'minus_pt2ge20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - 'minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # 'minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', } } @@ -36,9 +36,9 @@ # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', 'minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', } } diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_mm/configuration.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_mm/configuration.py index c0ac611d..b41e7a2e 100644 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_mm/configuration.py +++ b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_mm/configuration.py @@ -2,8 +2,12 @@ import sys,inspect -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_mm +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_mm configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file configurations_nuisance = os.path.dirname(configurations_nuisance) # configuration_1j configurations_nuisance = os.path.dirname(configurations_nuisance) # WHSS @@ -20,7 +24,9 @@ outputFile = "plots_WHSS_2016HIPM_v9_chargeAsymmetry_Mu82_EleUL90_DYflip_data.root" # "mkShapes__{}.root".format(tag) # Path to ouput folder -outputFolder = "../../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +if site == 'kit': + outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" # Path to batch folder (used for condor submission) batchFolder = "condor" diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_mm/cuts.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_mm/cuts.py index 8f7555b1..6b6e1e4d 100644 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_mm/cuts.py +++ b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/configuration_2j_mm/cuts.py @@ -23,9 +23,9 @@ # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', 'minus_pt2ge20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - 'minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # 'minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', } } diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/cuts.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/cuts.py index 615073de..1e17f060 100644 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/cuts.py +++ b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/cuts.py @@ -22,15 +22,9 @@ # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', 'minus_pt2ge20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - 'minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT >= 20 GeV) - 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT < 20 GeV) - 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # 'minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', } } @@ -41,15 +35,9 @@ # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', 'minus_pt2ge20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - 'minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT >= 20 GeV) - 'SS_CR_plus_pt2ge20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2ge20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT < 20 GeV) - 'SS_CR_plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # 'minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', } } @@ -60,15 +48,9 @@ # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', 'minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT >= 20 GeV) - 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT < 20 GeV) - 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', } } @@ -82,15 +64,9 @@ # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', 'minus_pt2ge20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - 'minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT >= 20 GeV) - 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT < 20 GeV) - 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : 'Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # 'minus_pt2lt20' : 'Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +13 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', } } @@ -101,15 +77,9 @@ # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', 'minus_pt2ge20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - 'minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT >= 20 GeV) - 'SS_CR_plus_pt2ge20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2ge20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT < 20 GeV) - 'SS_CR_plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : '((Lepton_pdgId[0] == -13 && Lepton_pdgId[1] == -11) || (Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # 'minus_pt2lt20' : '((Lepton_pdgId[0] == +13 && Lepton_pdgId[1] == +11) || (Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +13)) && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', } } @@ -120,15 +90,9 @@ # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', 'minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT >= 20 GeV) - 'SS_CR_plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - # Same-sign CR for fakes: delta-eta(ll) >= 2.0 (Sub-leading lepton pT < 20 GeV) - 'SS_CR_plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', - 'SS_CR_minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])>=2.0', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', + # 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20 && abs(Lepton_eta[0] - Lepton_eta[1])<2.0', } } @@ -150,9 +114,9 @@ # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20', 'minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20', - 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20', + # 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20', } } @@ -163,9 +127,9 @@ # Sub-leading lepton pT >= 20 GeV 'plus_pt2ge20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]>=20', 'minus_pt2ge20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]>=20', - # Sub-leading lepton pT < 20 GeV - 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20', - 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20', + # # Sub-leading lepton pT < 20 GeV + # 'plus_pt2lt20' : 'Lepton_pdgId[0] == -11 && Lepton_pdgId[1] == -11 && Lepton_pt[1]<20', + # 'minus_pt2lt20' : 'Lepton_pdgId[0] == +11 && Lepton_pdgId[1] == +11 && Lepton_pt[1]<20', } } diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/do_datacards.sh b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/do_datacards.sh index 9b334dff..b3b6c2f3 100644 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/do_datacards.sh +++ b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/do_datacards.sh @@ -5,37 +5,17 @@ mkShapesRDF -c 1 mkDatacards --outputDirDatacard ../datacards_original_signal_scale --skipMissingNuisance cd - -cd configuration_1j_CR -mkShapesRDF -c 1 -mkDatacards --outputDirDatacard ../datacards_original_signal_scale --skipMissingNuisance -cd - - cd configuration_1j_mm mkShapesRDF -c 1 mkDatacards --outputDirDatacard ../datacards_original_signal_scale --skipMissingNuisance cd - -cd configuration_1j_mm_CR -mkShapesRDF -c 1 -mkDatacards --outputDirDatacard ../datacards_original_signal_scale --skipMissingNuisance -cd - - cd configuration_2j mkShapesRDF -c 1 mkDatacards --outputDirDatacard ../datacards_original_signal_scale --skipMissingNuisance cd - -cd configuration_2j_CR -mkShapesRDF -c 1 -mkDatacards --outputDirDatacard ../datacards_original_signal_scale --skipMissingNuisance -cd - - cd configuration_2j_mm mkShapesRDF -c 1 mkDatacards --outputDirDatacard ../datacards_original_signal_scale --skipMissingNuisance cd - - -cd configuration_2j_mm_CR -mkShapesRDF -c 1 -mkDatacards --outputDirDatacard ../datacards_original_signal_scale --skipMissingNuisance -cd - diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/do_plots.sh b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/do_plots.sh index 8963cd5c..6211a2d0 100644 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/do_plots.sh +++ b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/do_plots.sh @@ -17,41 +17,21 @@ mkShapesRDF -c 1 mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png cd - -cd configuration_1j_CR -mkShapesRDF -c 1 -mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png -cd - - cd configuration_1j_mm mkShapesRDF -c 1 mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png cd - -cd configuration_1j_mm_CR -mkShapesRDF -c 1 -mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png -cd - - cd configuration_2j mkShapesRDF -c 1 mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png cd - -cd configuration_2j_CR -mkShapesRDF -c 1 -mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png -cd - - cd configuration_2j_mm mkShapesRDF -c 1 mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png cd - -cd configuration_2j_mm_CR -mkShapesRDF -c 1 -mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png -cd - - cp ~/index.php plots_WHSS_2016HIPM_v9_chargeAsymmetry_Mu82_EleUL90/ if [ "$DATE" != "" ]; then diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/nuisances.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/nuisances.py index 348feaea..2052007c 100644 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/nuisances.py +++ b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/nuisances.py @@ -59,11 +59,13 @@ def makeMCDirectory(var=''): #### FAKES -fake_syst_endcap = ['1.0*(abs(Lepton_eta[1])<=1.4) + 1.3*(abs(Lepton_eta[1])>1.4)', - '1.0*(abs(Lepton_eta[1])<=1.4) + 1.0/1.3*(abs(Lepton_eta[1])>1.4)'] -fake_syst_barrel = [' 1.3*(abs(Lepton_eta[1])<=1.4) + 1.0*(abs(Lepton_eta[1])>1.4)', - '1.0/1.3*(abs(Lepton_eta[1])<=1.4) + 1.0*(abs(Lepton_eta[1])>1.4)'] +# Systematic uncertainty split into barrel and endcap, and per final state: 10% per bin +fake_syst_endcap = ['1.0*(abs(Lepton_eta[1])<=1.479) + 1.1*(abs(Lepton_eta[1])>1.479)', + '1.0*(abs(Lepton_eta[1])<=1.479) + 1.0/1.1*(abs(Lepton_eta[1])>1.479)'] + +fake_syst_barrel = [' 1.1*(abs(Lepton_eta[1])<=1.479) + 1.0*(abs(Lepton_eta[1])>1.479)', + '1.0/1.1*(abs(Lepton_eta[1])<=1.479) + 1.0*(abs(Lepton_eta[1])>1.479)'] nuisances['fake_syst_mm_barrel'] = { 'name' : 'CMS_WH_hww_fake_syst_mm_barrel', @@ -122,6 +124,19 @@ def makeMCDirectory(var=''): 'cuts' : [cut for cut in cuts if ('_ee' in cut)] } +# Overall 30% normalization +nuisances['fake_syst'] = { + 'name' : 'CMS_WH_hww_fake_syst_2016', + 'kind' : 'weight', + 'type' : 'lnN', + 'samples' : { + 'Fake_mm' : '1.3', + 'Fake_em' : '1.3', + 'Fake_ee' : '1.3', + }, +} + +# Statistical and systematic uncertainty on the fake rates nuisances['fake_ele'] = { 'name' : 'CMS_WH_hww_fake_e_2016', 'kind' : 'weight', @@ -131,15 +146,16 @@ def makeMCDirectory(var=''): 'Fake_em' : ['fakeWEleUp', 'fakeWEleDown'], } } -# nuisances['fake_ele_stat'] = { -# 'name' : 'CMS_WH_hww_fake_stat_e_2016', -# 'kind' : 'weight', -# 'type' : 'shape', -# 'samples' : { -# 'Fake_ee' : ['fakeWStatEleUp', 'fakeWStatEleDown'], -# 'Fake_em' : ['fakeWStatEleUp', 'fakeWStatEleDown'], -# } -# } +nuisances['fake_ele_stat'] = { + 'name' : 'CMS_WH_hww_fake_stat_e_2016', + 'kind' : 'weight', + 'type' : 'shape', + 'samples' : { + 'Fake_ee' : ['fakeWStatEleUp', 'fakeWStatEleDown'], + 'Fake_em' : ['fakeWStatEleUp', 'fakeWStatEleDown'], + } +} + nuisances['fake_mu'] = { 'name' : 'CMS_WH_hww_fake_m_2016', 'kind' : 'weight', @@ -640,158 +656,6 @@ def makeMCDirectory(var=''): 'cuts' : [cut for cut in cuts if '1j' in cut], } -# Nonprompt leptons normalization from control region - split per charge -nuisances['Nonpromptee2jnorm_plus'] = { - 'name' : 'CMS_hww_Nonpromptee2jnorm_plus', - 'samples' : { - 'Fake_ee' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [ - 'hww2l2v_13TeV_WH_SS_ee_2j_plus_pt2ge20', - 'hww2l2v_13TeV_WH_SS_ee_2j_plus_pt2lt20', - 'hww2l2v_13TeV_WH_SS_ee_2j_SS_CR_plus_pt2ge20', - ], -} -nuisances['Nonpromptee2jnorm_minus'] = { - 'name' : 'CMS_hww_Nonpromptee2jnorm_minus', - 'samples' : { - 'Fake_ee' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [ - 'hww2l2v_13TeV_WH_SS_ee_2j_minus_pt2ge20', - 'hww2l2v_13TeV_WH_SS_ee_2j_minus_pt2lt20', - 'hww2l2v_13TeV_WH_SS_ee_2j_SS_CR_minus_pt2ge20', - ], -} - -nuisances['Nonpromptee1jnorm_plus'] = { - 'name' : 'CMS_hww_Nonpromptee1jnorm_plus', - 'samples' : { - 'Fake_ee' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [ - 'hww2l2v_13TeV_WH_SS_ee_1j_plus_pt2ge20', - 'hww2l2v_13TeV_WH_SS_ee_1j_plus_pt2lt20', - 'hww2l2v_13TeV_WH_SS_ee_1j_SS_CR_plus_pt2ge20', - ], -} -nuisances['Nonpromptee1jnorm_minus'] = { - 'name' : 'CMS_hww_Nonpromptee1jnorm_minus', - 'samples' : { - 'Fake_ee' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [ - 'hww2l2v_13TeV_WH_SS_ee_1j_minus_pt2ge20', - 'hww2l2v_13TeV_WH_SS_ee_1j_minus_pt2lt20', - 'hww2l2v_13TeV_WH_SS_ee_1j_SS_CR_minus_pt2ge20', - ], -} - - -nuisances['Nonpromptem2jnorm_plus'] = { - 'name' : 'CMS_hww_Nonpromptem2jnorm_plus', - 'samples' : { - 'Fake_em' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [ - 'hww2l2v_13TeV_WH_SS_em_2j_plus_pt2ge20', - 'hww2l2v_13TeV_WH_SS_em_2j_plus_pt2lt20', - 'hww2l2v_13TeV_WH_SS_em_2j_SS_CR_plus_pt2ge20', - ], -} -nuisances['Nonpromptem2jnorm_minus'] = { - 'name' : 'CMS_hww_Nonpromptem2jnorm_minus', - 'samples' : { - 'Fake_em' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [ - 'hww2l2v_13TeV_WH_SS_em_2j_minus_pt2ge20', - 'hww2l2v_13TeV_WH_SS_em_2j_minus_pt2lt20', - 'hww2l2v_13TeV_WH_SS_em_2j_SS_CR_minus_pt2ge20', - ], -} - -nuisances['Nonpromptem1jnorm_plus'] = { - 'name' : 'CMS_hww_Nonpromptem1jnorm_plus', - 'samples' : { - 'Fake_em' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [ - 'hww2l2v_13TeV_WH_SS_em_1j_plus_pt2ge20', - 'hww2l2v_13TeV_WH_SS_em_1j_plus_pt2lt20', - 'hww2l2v_13TeV_WH_SS_em_1j_SS_CR_plus_pt2ge20', - ], -} -nuisances['Nonpromptem1jnorm_minus'] = { - 'name' : 'CMS_hww_Nonpromptem1jnorm_minus', - 'samples' : { - 'Fake_em' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [ - 'hww2l2v_13TeV_WH_SS_em_1j_minus_pt2ge20', - 'hww2l2v_13TeV_WH_SS_em_1j_minus_pt2lt20', - 'hww2l2v_13TeV_WH_SS_em_1j_SS_CR_minus_pt2ge20', - ], -} - -nuisances['Nonpromptmm2jnorm_plus'] = { - 'name' : 'CMS_hww_Nonpromptmm2jnorm_plus', - 'samples' : { - 'Fake_mm' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [ - 'hww2l2v_13TeV_WH_SS_noZveto_mm_2j_plus_pt2ge20', - 'hww2l2v_13TeV_WH_SS_noZveto_mm_2j_plus_pt2lt20', - 'hww2l2v_13TeV_WH_SS_noZveto_mm_2j_SS_CR_plus_pt2ge20', - ], -} -nuisances['Nonpromptmm2jnorm_minus'] = { - 'name' : 'CMS_hww_Nonpromptmm2jnorm_minus', - 'samples' : { - 'Fake_mm' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [ - 'hww2l2v_13TeV_WH_SS_noZveto_mm_2j_minus_pt2ge20', - 'hww2l2v_13TeV_WH_SS_noZveto_mm_2j_minus_pt2lt20', - 'hww2l2v_13TeV_WH_SS_noZveto_mm_2j_SS_CR_minus_pt2ge20', - ], -} - -nuisances['Nonpromptmm1jnorm_plus'] = { - 'name' : 'CMS_hww_Nonpromptmm1jnorm_plus', - 'samples' : { - 'Fake_mm' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [ - 'hww2l2v_13TeV_WH_SS_noZveto_mm_1j_plus_pt2ge20', - 'hww2l2v_13TeV_WH_SS_noZveto_mm_1j_plus_pt2lt20', - 'hww2l2v_13TeV_WH_SS_noZveto_mm_1j_SS_CR_plus_pt2ge20', - ], -} -nuisances['Nonpromptmm1jnorm_minus'] = { - 'name' : 'CMS_hww_Nonpromptmm1jnorm_minus', - 'samples' : { - 'Fake_mm' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [ - 'hww2l2v_13TeV_WH_SS_noZveto_mm_1j_minus_pt2ge20', - 'hww2l2v_13TeV_WH_SS_noZveto_mm_1j_minus_pt2lt20', - 'hww2l2v_13TeV_WH_SS_noZveto_mm_1j_SS_CR_minus_pt2ge20', - ], -} - # Use the following if you want to apply the automatic combine MC stat nuisances. nuisances['stat'] = { 'type' : 'auto', diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/plot.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/plot.py index 4efa4dc2..49dad3dd 100644 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/plot.py +++ b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/plot.py @@ -54,46 +54,18 @@ 'samples' : ['WZ'] } -# groupPlot['Vg'] = { -# 'nameHR' : "V#gamma", -# 'isSignal' : 0, -# 'color' : 810, # kOrange + 10 -# 'samples' : ['Wg','Zg'] -# } - -groupPlot['Zg'] = { - 'nameHR' : "Z#gamma", +groupPlot['Vg'] = { + 'nameHR' : "V#gamma", 'isSignal' : 0, 'color' : 810, # kOrange + 10 - 'samples' : ['Zg'] -} - -groupPlot['Wg'] = { - 'nameHR' : "W#gamma", - 'isSignal' : 0, - 'color' : 859, - 'samples' : ['Wg'] -} - -# groupPlot['VgS'] = { -# 'nameHR' : "V#gamma*", -# 'isSignal' : 0, -# 'color' : 412, # kGreen - 9 -# 'samples' : ['ZgS','WgS'] -# } - -groupPlot['WgS'] = { - 'nameHR' : "W#gamma*", - 'isSignal' : 0, - 'color' : 409, # kGreen - 9 - 'samples' : ['WgS'] + 'samples' : ['Vg'] } -groupPlot['ZgS'] = { - 'nameHR' : "Z#gamma*", +groupPlot['VgS'] = { + 'nameHR' : "V#gamma*", 'isSignal' : 0, 'color' : 617, - 'samples' : ['ZgS'] + 'samples' : ['VgS'] } groupPlot['Higgs'] = { @@ -162,32 +134,16 @@ 'scale' : 1.0 } -plot['Zg'] = { - 'nameHR' : 'Zg', +plot['Vg'] = { + 'nameHR' : 'Vg', 'color' : 859, # kAzure -1 'isSignal' : 0, 'isData' : 0, 'scale' : 1.0 } -plot['Wg'] = { - 'nameHR' : 'Wg', - 'color' : 859, # kAzure -1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['ZgS'] = { - 'nameHR' : 'ZgS', - 'color' : 617, # kViolet + 1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['WgS'] = { - 'nameHR' : 'WgS', +plot['VgS'] = { + 'nameHR' : 'VgS', 'color' : 859, # kAzure -1 'isSignal' : 0, 'isData' : 0, diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/samples.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/samples.py index ce17c258..be2834fa 100644 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/samples.py +++ b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/samples.py @@ -18,7 +18,14 @@ ###### Tree base directory for the site ###### ############################################## +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' + treeBaseDir = '/eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano' +if site == 'kit': + treeBaseDir = '/ceph/ntrevisa/HWWNano' limitFiles = -1 def makeMCDirectory(var=''): @@ -35,6 +42,8 @@ def makeMCDirectory(var=''): useXROOTD = True redirector = 'root://eoscms.cern.ch/' +if site == 'kit': + redirector = '' def nanoGetSampleFiles(path, name): _files = s.searchFiles(path, name, redirector=redirector) diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/structure.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/structure.py index 85e8da8f..3ba72a09 100644 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/structure.py +++ b/WH_chargeAsymmetry/UL/2016HIPM_v9/WHSS/structure.py @@ -29,22 +29,12 @@ 'isData' : 0, } -structure['Wg'] = { +structure['Vg'] = { 'isSignal' : 0, 'isData' : 0, } -structure['Zg'] = { - 'isSignal' : 0, - 'isData' : 0, -} - -structure['WgS'] = { - 'isSignal' : 0, - 'isData' : 0, -} - -structure['ZgS'] = { +structure['VgS'] = { 'isSignal' : 0, 'isData' : 0, } From d7b2eeb26bf118fc5ca75c9bd6182a75a72594b2 Mon Sep 17 00:00:00 2001 From: ntrevisa Date: Fri, 29 Aug 2025 12:49:57 +0200 Subject: [PATCH 38/44] 2016HIPM WH3l working with new fake rates --- .../UL/2016HIPM_v9/WH3l/aliases.py | 84 ++++++++++--------- .../UL/2016HIPM_v9/WH3l/configuration.py | 10 ++- .../WH3l/configuration_OSSF/configuration.py | 10 ++- .../WH3l/configuration_OSSF/plot.py | 28 ------- .../WH3l/configuration_SSSF/configuration.py | 10 ++- .../WH3l/configuration_SSSF/plot.py | 28 ------- .../WH3l/configuration_WZ0j/configuration.py | 10 ++- .../WH3l/configuration_WZ0j/plot.py | 28 ------- .../WH3l/configuration_WZ1j/configuration.py | 10 ++- .../WH3l/configuration_WZ1j/plot.py | 28 ------- .../WH3l/configuration_WZ2j/configuration.py | 10 ++- .../WH3l/configuration_WZ2j/plot.py | 28 ------- .../UL/2016HIPM_v9/WH3l/nuisances.py | 45 ++++------ .../UL/2016HIPM_v9/WH3l/plot.py | 44 ++-------- .../UL/2016HIPM_v9/WH3l/structure.py | 14 +--- 15 files changed, 119 insertions(+), 268 deletions(-) diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/aliases.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/aliases.py index 0c059c37..44482d2b 100644 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/aliases.py +++ b/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/aliases.py @@ -3,7 +3,6 @@ import inspect # /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l - configurations = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file configurations = os.path.dirname(configurations) # WH3l configurations = os.path.dirname(configurations) # 2016HIPM_v9 @@ -34,97 +33,104 @@ # ttHMVA SFs and uncertainties aliases['LepWPttHMVASF'] = { - 'linesToAdd' : ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH = ttHMVASF(\"2016HIPM\", 3, \"all\", \"nominal\");')"], 'expr' : 'ttH(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc } aliases['LepWPttHMVASFEleUp'] = { - 'linesToAdd' : ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_EleUp = ttHMVASF(\"2016HIPM\", 3, \"all\", \"eleUp\");')"], 'expr' : 'ttH_EleUp(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc } aliases['LepWPttHMVASFEleDown'] = { - 'linesToAdd' : ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_EleDown = ttHMVASF(\"2016HIPM\", 3, \"all\", \"eleDown\");')"], 'expr' : 'ttH_EleDown(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc } aliases['LepWPttHMVASFMuUp'] = { - 'linesToAdd' : ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_MuUp = ttHMVASF(\"2016HIPM\", 3, \"all\", \"muUp\");')"], 'expr' : 'ttH_MuUp(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc } aliases['LepWPttHMVASFMuDown'] = { - 'linesToAdd' : ['#include "%s/macros/ttHMVASF_class.cc"' % configurations], + 'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], 'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_MuDown = ttHMVASF(\"2016HIPM\", 3, \"all\", \"muDown\");')"], 'expr' : 'ttH_MuDown(Lepton_pt, Lepton_eta, Lepton_pdgId)', 'samples' : mc } +# Conept +aliases['Lepton_conept'] = { + 'expr' : 'LeptonConePt(Lepton_pt, Lepton_pdgId, Lepton_electronIdx, Lepton_muonIdx, Electron_jetRelIso, Muon_jetRelIso)', + 'linesToAdd' : [f'#include "{configurations}/macros/LeptonConePt_class.cc"'], + 'samples' : mc + ['Fake', 'DATA', 'DATA_unprescaled'] +} + # Fake leptons transfer factor aliases['fakeW'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"nominal\", 3, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr': 'fr_reader(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"nominal\", 3, \"std\", \"{configurations}\");')"], + 'expr': 'fr_reader(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'] } # And variations - already divided by central values in formulas ! aliases['fakeWEleUp'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleUp = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"EleUp\", 3, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr': 'fr_reader_EleUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleUp = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"EleUp\", 3, \"std\", \"{configurations}\");')"], + 'expr': 'fr_reader_EleUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'] } aliases['fakeWEleDown'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleDown = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"EleDown\", 3, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr': 'fr_reader_EleDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleDown = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"EleDown\", 3, \"std\", \"{configurations}\");')"], + 'expr': 'fr_reader_EleDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'] } aliases['fakeWMuUp'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuUp = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"MuUp\", 3, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr': 'fr_reader_MuUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuUp = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"MuUp\", 3, \"std\", \"{configurations}\");')"], + 'expr': 'fr_reader_MuUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'] } aliases['fakeWMuDown'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuDown = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"MuDown\", 3, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr': 'fr_reader_MuDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuDown = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"MuDown\", 3, \"std\", \"{configurations}\");')"], + 'expr': 'fr_reader_MuDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'] } aliases['fakeWStatEleUp'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleUp = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"StatEleUp\", 3, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr': 'fr_reader_StatEleUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleUp = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"StatEleUp\", 3, \"std\", \"{configurations}\");')"], + 'expr': 'fr_reader_StatEleUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'] } aliases['fakeWStatEleDown'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleDown = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"StatEleDown\", 3, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr': 'fr_reader_StatEleDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleDown = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"StatEleDown\", 3, \"std\", \"{configurations}\");')"], + 'expr': 'fr_reader_StatEleDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'] } aliases['fakeWStatMuUp'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuUp = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"StatMuUp\", 3, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr': 'fr_reader_StatMuUp(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuUp = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"StatMuUp\", 3, \"std\", \"{configurations}\");')"], + 'expr': 'fr_reader_StatMuUp(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'] } aliases['fakeWStatMuDown'] = { - 'linesToAdd' : ['#include "%s/macros/fake_rate_reader_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuDown = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"StatMuDown\", 3, \"std\", \"/afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/\");')"], - 'expr': 'fr_reader_StatMuDown(Lepton_pdgId, Lepton_pt, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + 'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuDown = fake_rate_reader(\"2016_HIPM\", \"90\", \"82\", 0.90, 0.82, \"StatMuDown\", 3, \"std\", \"{configurations}\");')"], + 'expr': 'fr_reader_StatMuDown(Lepton_pdgId, Lepton_conept, Lepton_eta, Lepton_isTightMuon_cut_Tight80x, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', 'samples' : ['Fake'] } @@ -307,22 +313,22 @@ # Evaluate BDT discriminants aliases['BDT_WH3l_OSSF_new_v9'] = { - 'linesToAdd' : ['#include "%s/macros/BDT_WH3l_OSSF_v9_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('BDT_WH3l_OSSF_v9 BDT_WH3l_OSSF = BDT_WH3l_OSSF_v9(\"BDTG4C3\",\"{0}/data/BDT/2016HIPM/WH3l/OSSF/weights/TMVAClassification_BDTG4C3.weights.xml\");')".format(configurations)], + 'linesToAdd' : [f'#include "{configurations}/macros/BDT_WH3l_OSSF_v9_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('BDT_WH3l_OSSF_v9 BDT_WH3l_OSSF = BDT_WH3l_OSSF_v9(\"BDTG4C3\",\"{configurations}/data/BDT/2016HIPM/WH3l/OSSF/weights/TMVAClassification_BDTG4C3.weights.xml\");')"], 'expr' : 'BDT_WH3l_OSSF(WH3l_dphilllmet,WH3l_mOSll,WH3l_ptOSll,WH3l_drOSll,WH3l_ZVeto,WH3l_mtlmet,WH3l_dphilmet,WH3l_ptWWW,PuppiMET_pt,Lepton_pt)', 'samples' : mc + ['DATA','Fake'], } aliases['BDT_WH3l_SSSF_new_v9'] = { - 'linesToAdd' : ['#include "%s/macros/BDT_WH3l_SSSF_v9_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('BDT_WH3l_SSSF_v9 BDT_WH3l_SSSF = BDT_WH3l_SSSF_v9(\"BDTG4C3\",\"{0}/data/BDT/2016HIPM/WH3l/SSSF/weights/TMVAClassification_BDTG4SK01_05shrinkage.weights.xml\");')".format(configurations)], + 'linesToAdd' : [f'#include "{configurations}/macros/BDT_WH3l_SSSF_v9_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('BDT_WH3l_SSSF_v9 BDT_WH3l_SSSF = BDT_WH3l_SSSF_v9(\"BDTG4C3\",\"{configurations}/data/BDT/2016HIPM/WH3l/SSSF/weights/TMVAClassification_BDTG4SK01_05shrinkage.weights.xml\");')"], 'expr' : 'BDT_WH3l_SSSF(WH3l_dphilllmet,WH3l_mOSll,WH3l_ptOSll,WH3l_drOSll,WH3l_dphilmet,WH3l_ptWWW,PuppiMET_pt,Lepton_pt)', 'samples' : mc + ['DATA','Fake'], } aliases['BDT_WHSS_TopSemileptonic_v9'] = { - 'linesToAdd' : ['#include "%s/macros/BDT_WHSS_TopSemileptonic_v9_class.cc"' % configurations], - 'linesToProcess' : ["ROOT.gInterpreter.Declare('BDT_WHSS_TopSemileptonic_v9 BDT_WHSS = BDT_WHSS_TopSemileptonic_v9(\"BDTG_6\",\"{0}/data/BDT/2016HIPM/WHSS/weights/TMVAClassification_BDTG_6.weights.xml\");')".format(configurations)], + 'linesToAdd' : [f'#include "{configurations}/macros/BDT_WHSS_TopSemileptonic_v9_class.cc"'], + 'linesToProcess' : [f"ROOT.gInterpreter.Declare('BDT_WHSS_TopSemileptonic_v9 BDT_WHSS = BDT_WHSS_TopSemileptonic_v9(\"BDTG_6\",\"{configurations}/data/BDT/2016HIPM/WHSS/weights/TMVAClassification_BDTG_6.weights.xml\");')"], 'expr' : 'BDT_WHSS(mll,mjj,mtw1,mtw2,ptll,mlljj20_whss,PuppiMET_pt,dphill,dphijj,dphillmet,dphilmet2,dphijet1met,CleanJet_pt,Jet_btagDeepB,CleanJet_jetIdx)', 'samples' : mc + ['DATA','Fake'], } diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration.py index 2c8520fd..7f650b93 100644 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration.py +++ b/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration.py @@ -2,8 +2,12 @@ import sys,inspect -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/ +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/ configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file configurations_nuisance = os.path.dirname(configurations_nuisance) # WH3l configurations_nuisance = os.path.dirname(configurations_nuisance) # 2016HIPM_v9 @@ -19,7 +23,9 @@ outputFile = "mkShapes__{}.root".format(tag) # Path to ouput folder -outputFolder = "../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +if site == 'kit': + outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" # Path to batch folder (used for condor submission) batchFolder = "condor" diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration_OSSF/configuration.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration_OSSF/configuration.py index dbb51d60..8d3561f2 100644 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration_OSSF/configuration.py +++ b/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration_OSSF/configuration.py @@ -2,8 +2,12 @@ import sys,inspect -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration_OSSF +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration_OSSF configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file configurations_nuisance = os.path.dirname(configurations_nuisance) # configuration_OSSF configurations_nuisance = os.path.dirname(configurations_nuisance) # WH3l @@ -20,7 +24,9 @@ outputFile = "mkShapes__{}.root".format(tag) # Path to ouput folder -outputFolder = "../../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +if site == 'kit': + outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" # Path to batch folder (used for condor submission) batchFolder = "condor" diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration_OSSF/plot.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration_OSSF/plot.py index 2c377931..4e4a3442 100644 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration_OSSF/plot.py +++ b/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration_OSSF/plot.py @@ -62,20 +62,6 @@ 'samples' : ['VVV'] } -# groupPlot['Zg'] = { -# 'nameHR' : "Z#gamma", -# 'isSignal' : 0, -# 'color' : 810, # kOrange + 10 -# 'samples' : ['Zg'] -# } - -# groupPlot['ZgS'] = { -# 'nameHR' : "Z#gamma*", -# 'isSignal' : 0, -# 'color' : 617, -# 'samples' : ['ZgS'] -# } - groupPlot['Vg'] = { 'nameHR' : "W#gamma", 'isSignal' : 0, @@ -152,13 +138,6 @@ 'scale' : scale_histo_Vg, } -# plot['Zg'] = { -# 'color' : 859, # kAzure -1 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : scale_histo_Zg, -# } - plot['VgS'] = { 'color' : 859, # kAzure -1 'isSignal' : 0, @@ -166,13 +145,6 @@ 'scale' : scale_histo_VgS, } -# plot['ZgS'] = { -# 'color' : 617, # kViolet + 1 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : scale_histo_ZgS, -# } - plot['ZZ'] = { 'color' : 858, # kAzure -2 'isSignal' : 0, diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration_SSSF/configuration.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration_SSSF/configuration.py index 66bb4cd0..7a13c88f 100644 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration_SSSF/configuration.py +++ b/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration_SSSF/configuration.py @@ -2,8 +2,12 @@ import sys,inspect -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration_SSSF +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration_SSSF configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file configurations_nuisance = os.path.dirname(configurations_nuisance) # configuration_SSSF configurations_nuisance = os.path.dirname(configurations_nuisance) # WH3l @@ -20,7 +24,9 @@ outputFile = "mkShapes__{}.root".format(tag) # Path to ouput folder -outputFolder = "../../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +if site == 'kit': + outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" # Path to batch folder (used for condor submission) batchFolder = "condor" diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration_SSSF/plot.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration_SSSF/plot.py index b6c2aaed..38d3864e 100644 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration_SSSF/plot.py +++ b/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration_SSSF/plot.py @@ -62,20 +62,6 @@ 'samples' : ['VVV'] } -# groupPlot['Zg'] = { -# 'nameHR' : "Z#gamma", -# 'isSignal' : 0, -# 'color' : 810, # kOrange + 10 -# 'samples' : ['Zg'] -# } - -# groupPlot['ZgS'] = { -# 'nameHR' : "Z#gamma*", -# 'isSignal' : 0, -# 'color' : 617, -# 'samples' : ['ZgS'] -# } - groupPlot['Vg'] = { 'nameHR' : "V#gamma", 'isSignal' : 0, @@ -152,13 +138,6 @@ 'scale' : scale_histo_Vg, } -# plot['Zg'] = { -# 'color' : 859, # kAzure -1 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : scale_histo_Zg, -# } - plot['VgS'] = { 'color' : 859, # kAzure -1 'isSignal' : 0, @@ -166,13 +145,6 @@ 'scale' : scale_histo_VgS, } -# plot['ZgS'] = { -# 'color' : 617, # kViolet + 1 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : scale_histo_ZgS, -# } - plot['ZZ'] = { 'color' : 858, # kAzure -2 'isSignal' : 0, diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration_WZ0j/configuration.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration_WZ0j/configuration.py index 8efaaffe..e6fe018e 100644 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration_WZ0j/configuration.py +++ b/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration_WZ0j/configuration.py @@ -2,8 +2,12 @@ import sys,inspect -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration_WZ0j +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration_WZ0j configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file configurations_nuisance = os.path.dirname(configurations_nuisance) # configuration_WZ0j configurations_nuisance = os.path.dirname(configurations_nuisance) # WH3l @@ -20,7 +24,9 @@ outputFile = "mkShapes__{}.root".format(tag) # Path to ouput folder -outputFolder = "../../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +if site == 'kit': + outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" # Path to batch folder (used for condor submission) batchFolder = "condor" diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration_WZ0j/plot.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration_WZ0j/plot.py index b970fb4a..4e352c7c 100644 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration_WZ0j/plot.py +++ b/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration_WZ0j/plot.py @@ -76,20 +76,6 @@ 'samples' : ['VgS'] } -# groupPlot['Wg'] = { -# 'nameHR' : "W#gamma", -# 'isSignal' : 0, -# 'color' : 859, -# 'samples' : ['Wg'] -# } - -# groupPlot['WgS'] = { -# 'nameHR' : "W#gamma*", -# 'isSignal' : 0, -# 'color' : 409, # kGreen - 9 -# 'samples' : ['WgS'] -# } - groupPlot['ZZ'] = { 'nameHR' : "ZZ", 'isSignal' : 0, @@ -152,13 +138,6 @@ 'scale' : scale_histo_Vg, } -# plot['Zg'] = { -# 'color' : 859, # kAzure -1 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : scale_histo_Zg, -# } - plot['VgS'] = { 'color' : 859, # kAzure -1 'isSignal' : 0, @@ -166,13 +145,6 @@ 'scale' : scale_histo_VgS, } -# plot['ZgS'] = { -# 'color' : 617, # kViolet + 1 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : scale_histo_ZgS, -# } - plot['ZZ'] = { 'color' : 858, # kAzure -2 'isSignal' : 0, diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration_WZ1j/configuration.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration_WZ1j/configuration.py index b74bd3ed..4f72e07c 100644 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration_WZ1j/configuration.py +++ b/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration_WZ1j/configuration.py @@ -2,8 +2,12 @@ import sys,inspect -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration_OSSF +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration_WZ1j configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file configurations_nuisance = os.path.dirname(configurations_nuisance) # configuration_WZ1j configurations_nuisance = os.path.dirname(configurations_nuisance) # WH3l @@ -20,7 +24,9 @@ outputFile = "mkShapes__{}.root".format(tag) # Path to ouput folder -outputFolder = "../../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +if site == 'kit': + outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" # Path to batch folder (used for condor submission) batchFolder = "condor" diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration_WZ1j/plot.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration_WZ1j/plot.py index b6c1f6cc..480e8312 100644 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration_WZ1j/plot.py +++ b/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration_WZ1j/plot.py @@ -62,20 +62,6 @@ 'samples' : ['VVV'] } -# groupPlot['Zg'] = { -# 'nameHR' : "Z#gamma", -# 'isSignal' : 0, -# 'color' : 810, # kOrange + 10 -# 'samples' : ['Zg'] -# } - -# groupPlot['ZgS'] = { -# 'nameHR' : "Z#gamma*", -# 'isSignal' : 0, -# 'color' : 617, -# 'samples' : ['ZgS'] -# } - groupPlot['Vg'] = { 'nameHR' : "V#gamma", 'isSignal' : 0, @@ -152,13 +138,6 @@ 'scale' : scale_histo_Vg, } -# plot['Zg'] = { -# 'color' : 859, # kAzure -1 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : scale_histo_Zg, -# } - plot['VgS'] = { 'color' : 859, # kAzure -1 'isSignal' : 0, @@ -166,13 +145,6 @@ 'scale' : scale_histo_VgS, } -# plot['ZgS'] = { -# 'color' : 617, # kViolet + 1 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : scale_histo_ZgS, -# } - plot['ZZ'] = { 'color' : 858, # kAzure -2 'isSignal' : 0, diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration_WZ2j/configuration.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration_WZ2j/configuration.py index 90ad04dc..6a004f92 100644 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration_WZ2j/configuration.py +++ b/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration_WZ2j/configuration.py @@ -2,8 +2,12 @@ import sys,inspect -# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration_WZ2j +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration_WZ2j configurations_nuisance = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file configurations_nuisance = os.path.dirname(configurations_nuisance) # configuration_WZ2j configurations_nuisance = os.path.dirname(configurations_nuisance) # WH3l @@ -20,7 +24,9 @@ outputFile = "mkShapes__{}.root".format(tag) # Path to ouput folder -outputFolder = "../../../../../../../../../../../../../../eos/user/n/ntrevisa/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +if site == 'kit': + outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" # Path to batch folder (used for condor submission) batchFolder = "condor" diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration_WZ2j/plot.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration_WZ2j/plot.py index 076e6ed9..887c828a 100644 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration_WZ2j/plot.py +++ b/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/configuration_WZ2j/plot.py @@ -76,20 +76,6 @@ 'samples' : ['VgS'] } -# groupPlot['Wg'] = { -# 'nameHR' : "W#gamma", -# 'isSignal' : 0, -# 'color' : 859, -# 'samples' : ['Wg'] -# } - -# groupPlot['WgS'] = { -# 'nameHR' : "W#gamma*", -# 'isSignal' : 0, -# 'color' : 409, # kGreen - 9 -# 'samples' : ['WgS'] -# } - groupPlot['ZZ'] = { 'nameHR' : "ZZ", 'isSignal' : 0, @@ -152,13 +138,6 @@ 'scale' : scale_histo_Vg, } -# plot['Zg'] = { -# 'color' : 859, # kAzure -1 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : scale_histo_Zg, -# } - plot['VgS'] = { 'color' : 859, # kAzure -1 'isSignal' : 0, @@ -166,13 +145,6 @@ 'scale' : scale_histo_VgS, } -# plot['ZgS'] = { -# 'color' : 617, # kViolet + 1 -# 'isSignal' : 0, -# 'isData' : 0, -# 'scale' : scale_histo_ZgS, -# } - plot['ZZ'] = { 'color' : 858, # kAzure -2 'isSignal' : 0, diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/nuisances.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/nuisances.py index d17cc31f..77335d57 100644 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/nuisances.py +++ b/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/nuisances.py @@ -59,11 +59,11 @@ def makeMCDirectory(var=''): #### FAKES -fake_syst_endcap = ['1.0*(abs(Lepton_eta[1])<=1.4) + 1.3*(abs(Lepton_eta[1])>1.4)', - '1.0*(abs(Lepton_eta[1])<=1.4) + 1.0/1.3*(abs(Lepton_eta[1])>1.4)'] +fake_syst_endcap = ['1.0*(abs(Lepton_eta[1])<=1.479) + 1.1*(abs(Lepton_eta[1])>1.479)', + '1.0*(abs(Lepton_eta[1])<=1.479) + 1.0/1.1*(abs(Lepton_eta[1])>1.479)'] -fake_syst_barrel = [' 1.3*(abs(Lepton_eta[1])<=1.4) + 1.0*(abs(Lepton_eta[1])>1.4)', - '1.0/1.3*(abs(Lepton_eta[1])<=1.4) + 1.0*(abs(Lepton_eta[1])>1.4)'] +fake_syst_barrel = [' 1.1*(abs(Lepton_eta[1])<=1.479) + 1.0*(abs(Lepton_eta[1])>1.479)', + '1.0/1.1*(abs(Lepton_eta[1])<=1.479) + 1.0*(abs(Lepton_eta[1])>1.479)'] nuisances['fake_syst_barrel'] = { 'name' : 'CMS_WH_hww_fake_syst_barrel', @@ -82,6 +82,17 @@ def makeMCDirectory(var=''): }, } +# Overall 30% normalization +nuisances['fake_syst'] = { + 'name' : 'CMS_WH_hww_fake_syst_2018', + 'kind' : 'weight', + 'type' : 'lnN', + 'samples' : { + 'Fake' : '1.3', + }, +} + +# Statistical and systematic uncertainty on the fake rates nuisances['fake_ele'] = { 'name' : 'CMS_WH_hww_fake_e_2016', 'kind' : 'weight', @@ -98,6 +109,7 @@ def makeMCDirectory(var=''): 'Fake' : ['fakeWStatEleUp', 'fakeWStatEleDown'] } } + nuisances['fake_mu'] = { 'name' : 'CMS_WH_hww_fake_m_2016', 'kind' : 'weight', @@ -552,31 +564,6 @@ def makeMCDirectory(var=''): ] } -# Fakes normalization from control region -nuisances['Nonprompt2lnorm_plus'] = { - 'name' : 'CMS_hww_Nonprompt2lnorm_plus', - 'samples' : { - 'Fake' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [ - 'wh3l_13TeV_ossf_plus', - 'wh3l_13TeV_sssf_plus', - ] -} - -nuisances['Nonprompt2lnorm_minus'] = { - 'name' : 'CMS_hww_Nonprompt2lnorm_minus', - 'samples' : { - 'Fake' : '1.00', - }, - 'type' : 'rateParam', - 'cuts' : [ - 'wh3l_13TeV_ossf_minus', - 'wh3l_13TeV_sssf_minus', - ] -} - # Use the following if you want to apply the automatic combine MC stat nuisances. nuisances['stat'] = { 'type' : 'auto', diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/plot.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/plot.py index fdd72028..83fc4ecc 100644 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/plot.py +++ b/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/plot.py @@ -33,32 +33,18 @@ 'samples' : ['VVV'] } -groupPlot['Zg'] = { - 'nameHR' : "Z#gamma", +groupPlot['Vg'] = { + 'nameHR' : "V#gamma", 'isSignal' : 0, 'color' : 810, # kOrange + 10 - 'samples' : ['Zg'] + 'samples' : ['Vg'] } -groupPlot['ZgS'] = { - 'nameHR' : "Z#gamma*", - 'isSignal' : 0, - 'color' : 617, - 'samples' : ['ZgS'] -} - -groupPlot['Wg'] = { - 'nameHR' : "W#gamma", - 'isSignal' : 0, - 'color' : 859, - 'samples' : ['Wg'] -} - -groupPlot['WgS'] = { - 'nameHR' : "W#gamma*", +groupPlot['VgS'] = { + 'nameHR' : "V#gamma*", 'isSignal' : 0, 'color' : 409, # kGreen - 9 - 'samples' : ['WgS'] + 'samples' : ['VgS'] } groupPlot['ZZ'] = { @@ -116,28 +102,14 @@ 'scale' : 1.0 } -plot['Wg'] = { - 'color' : 859, # kAzure -1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['Zg'] = { - 'color' : 859, # kAzure -1 - 'isSignal' : 0, - 'isData' : 0, - 'scale' : 1.0 -} - -plot['WgS'] = { +plot['Vg'] = { 'color' : 859, # kAzure -1 'isSignal' : 0, 'isData' : 0, 'scale' : 1.0 } -plot['ZgS'] = { +plot['VgS'] = { 'color' : 617, # kViolet + 1 'isSignal' : 0, 'isData' : 0, diff --git a/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/structure.py b/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/structure.py index 9a4ce9fd..6e7afcc8 100644 --- a/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/structure.py +++ b/WH_chargeAsymmetry/UL/2016HIPM_v9/WH3l/structure.py @@ -14,22 +14,12 @@ 'isData' : 0 } -structure['Wg'] = { +structure['Vg'] = { 'isSignal' : 0, 'isData' : 0 } -structure['Zg'] = { - 'isSignal' : 0, - 'isData' : 0 -} - -structure['WgS'] = { - 'isSignal' : 0, - 'isData' : 0 -} - -structure['ZgS'] = { +structure['VgS'] = { 'isSignal' : 0, 'isData' : 0 } From 7cf44d3560d456bb68ee7c33022d22add9259fac Mon Sep 17 00:00:00 2001 From: amassiro Date: Wed, 10 Sep 2025 14:34:55 +0200 Subject: [PATCH 39/44] new Hgg analysis --- Hgg/README.md | 58 +++++ Hgg/aliases.py | 228 +++++++++++++++++ Hgg/configuration.py | 100 ++++++++ Hgg/cuts.py | 44 ++++ Hgg/ngenjet.cc | 121 +++++++++ Hgg/nuisances.py | 578 +++++++++++++++++++++++++++++++++++++++++++ Hgg/plot.py | 224 +++++++++++++++++ Hgg/samples.py | 278 +++++++++++++++++++++ Hgg/structure.py | 126 ++++++++++ Hgg/variables.py | 125 ++++++++++ 10 files changed, 1882 insertions(+) create mode 100644 Hgg/README.md create mode 100644 Hgg/aliases.py create mode 100644 Hgg/configuration.py create mode 100644 Hgg/cuts.py create mode 100644 Hgg/ngenjet.cc create mode 100644 Hgg/nuisances.py create mode 100644 Hgg/plot.py create mode 100644 Hgg/samples.py create mode 100644 Hgg/structure.py create mode 100644 Hgg/variables.py diff --git a/Hgg/README.md b/Hgg/README.md new file mode 100644 index 00000000..eacfbb09 --- /dev/null +++ b/Hgg/README.md @@ -0,0 +1,58 @@ +# H > gluon gluon + +ZH production of H>gg + +### Load the mkShapesRDF environment + +Here, we assume `PlotsConfigurationsRun3` was installed in the same directory as `mkShapesRDF`. E.g., let's assume we have a `Run3` directory where we installed both `mkShapesRDF` and `PlotsConfigurationsRun3`. + +Then, we can source the `mkShapesRDF` environment using these commands: + + + cd ../../mkShapesRDF/ + source start.sh + cd - + + +### Compile the configuration folder + + mkShapesRDF -c 1 + +### Run the analysis + +Produce histograms using batch: + + mkShapesRDF -o 0 -f . -b 1 + +Check jobs status: + + mkShapesRDF -o 1 -f . + +Resubmit failed jobs: + + mkShapesRDF -o 1 -f . -r 1 + +Options meanings: +- -o: operationMode: + - 0 run analysis + - 1 check batch output and errs + - 2 merge root files +- -f: folder: it represents the path to the analysis folder +- -b: batch mode: + - 0 (default) runs on local + - 1 runs with condor +- -r: resubmit jobs: + -1 resubmit finished jobs with errors + - 2 resubmit running jobs + +### Merge rootfiles + +Once all the jobs have finished, you can merge them: + + mkShapesRDF -o 2 -f . + +### Plot distributions + + mkPlot + + diff --git a/Hgg/aliases.py b/Hgg/aliases.py new file mode 100644 index 00000000..6d791ab2 --- /dev/null +++ b/Hgg/aliases.py @@ -0,0 +1,228 @@ +import os +import copy +import inspect + +configurations = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file +#configurations = os.path.dirname(configurations) # Full2016 +#configurations = os.path.dirname(configurations) # VBF_Zjj +#configurations = os.path.dirname(configurations) # Configurations + + + +mc = [skey for skey in samples if skey not in ('Fake', 'DATA', 'Dyemb')] +mc_emb = [skey for skey in samples if skey not in ('Fake', 'DATA')] + +eleWP = 'mva_90p_Iso2016' +muWP = 'cut_Tight80x_tthmva_80' + +aliases = OrderedDict() +aliases['LepWPCut'] = { + 'expr': 'LepCut2l__ele_'+eleWP+'__mu_'+muWP, + 'samples': mc_emb + ['DATA'] + } + +# Fake leptons transfer factor +aliases['fakeW'] = { + 'expr': 'fakeW2l_ele_'+eleWP+'_mu_'+muWP, + 'samples': ['Fake'] +} +# And variations - already divided by central values in formulas ! +aliases['fakeWEleUp'] = { + 'expr': 'fakeW2l_ele_'+eleWP+'_mu_'+muWP+'_EleUp', + 'samples': ['Fake'] +} +aliases['fakeWEleDown'] = { + 'expr': 'fakeW2l_ele_'+eleWP+'_mu_'+muWP+'_EleDown', + 'samples': ['Fake'] +} +aliases['fakeWMuUp'] = { + 'expr': 'fakeW2l_ele_'+eleWP+'_mu_'+muWP+'_MuUp', + 'samples': ['Fake'] +} +aliases['fakeWMuDown'] = { + 'expr': 'fakeW2l_ele_'+eleWP+'_mu_'+muWP+'_MuDown', + 'samples': ['Fake'] +} +aliases['fakeWStatEleUp'] = { + 'expr': 'fakeW2l_ele_'+eleWP+'_mu_'+muWP+'_statEleUp', + 'samples': ['Fake'] +} +aliases['fakeWStatEleDown'] = { + 'expr': 'fakeW2l_ele_'+eleWP+'_mu_'+muWP+'_statEleDown', + 'samples': ['Fake'] +} +aliases['fakeWStatMuUp'] = { + 'expr': 'fakeW2l_ele_'+eleWP+'_mu_'+muWP+'_statMuUp', + 'samples': ['Fake'] +} +aliases['fakeWStatMuDown'] = { + 'expr': 'fakeW2l_ele_'+eleWP+'_mu_'+muWP+'_statMuDown', + 'samples': ['Fake'] +} + + +aliases['Jet_PUIDSF'] = { + 'expr' : 'TMath::Exp(Sum((Jet_jetId>=2)*LogVec(Jet_PUIDSF_loose)))', + 'samples': mc + } +aliases['Jet_PUIDSF_up'] = { + 'expr' : 'TMath::Exp(Sum((Jet_jetId>=2)*LogVec(Jet_PUIDSF_loose_up)))', + 'samples': mc +} +aliases['Jet_PUIDSF_down'] = { + 'expr' : 'TMath::Exp(Sum((Jet_jetId>=2)*LogVec(Jet_PUIDSF_loose_down)))', + 'samples': mc +} + +aliases['gstarLow'] = { + 'expr': 'Gen_ZGstar_mass >0 && Gen_ZGstar_mass < 4', + 'samples': ['VgS'] +} + +aliases['gstarHigh'] = { + 'expr': 'Gen_ZGstar_mass <0 || Gen_ZGstar_mass > 4', + 'samples': ['VgS'] +} + +aliases['PromptGenLepMatch2l'] = { + 'expr': 'Alt(Lepton_promptgenmatched, 0, 0) * Alt(Lepton_promptgenmatched, 1, 0)', + 'samples': mc + } + +aliases['zeroJet'] = { + 'expr': 'Alt(CleanJet_pt, 0, 0) < 30.' +} + +aliases['oneJet'] = { + 'expr': 'Alt(CleanJet_pt, 0, 0) > 30.' +} + +aliases['multiJet'] = { + 'expr': 'Alt(CleanJet_pt, 1, 0) > 30.' +} + +aliases['bVeto'] = { + 'expr': 'Sum(CleanJet_pt > 20. && abs(CleanJet_eta) < 2.5 && Take(Jet_btagDeepB, CleanJet_jetIdx) > 0.2217) == 0' +} +aliases['bReq'] = { + 'expr': 'Sum(CleanJet_pt > 30. && abs(CleanJet_eta) < 2.5 && Take(Jet_btagDeepB, CleanJet_jetIdx) > 0.2217) >= 1' +} + +aliases['topcr'] = { + #'expr' : 'abs(mll-91)>15 && bReq && (detajj >= 3)' + 'expr' : 'abs(mll-91)>15 && bReq' +} + +aliases['bVetoSF'] = { + 'expr': 'TMath::Exp(Sum(LogVec((CleanJet_pt>20 && abs(CleanJet_eta)<2.5)*Take(Jet_btagSF_deepcsv_shape, CleanJet_jetIdx)+1*(CleanJet_pt<20 || abs(CleanJet_eta)>2.5))))', + 'samples': mc +} + +aliases['bReqSF'] = { + 'expr': 'TMath::Exp(Sum(LogVec((CleanJet_pt>30 && abs(CleanJet_eta)<2.5)*Take(Jet_btagSF_deepcsv_shape, CleanJet_jetIdx)+1*(CleanJet_pt<30 || abs(CleanJet_eta)>2.5))))', + #'expr': 'TMath::Exp(Sum(TMath::Log((CleanJet_pt>30 && abs(CleanJet_eta)<2.5)*Jet_btagSF_deepcsv_shape[CleanJet_jetIdx]+1*(CleanJet_pt<30 || abs(CleanJet_eta)>2.5))))', + 'samples': mc +} + +aliases['btagSF'] = { + #'expr': '(bVeto || (topcr && zeroJet))*bVetoSF + (topcr && !zeroJet)*bReqSF', + 'expr': 'bVeto*bVetoSF + topcr*bReqSF', + 'samples': mc +} + +for shift in ['jes','lf','hf','lfstats1','lfstats2','hfstats1','hfstats2','cferr1','cferr2']: + + for targ in ['bVeto', 'bReq']: + alias = aliases['%sSF%sup' % (targ, shift)] = copy.deepcopy(aliases['%sSF' % targ]) + alias['expr'] = alias['expr'].replace('btagSF_deepcsv_shape', 'btagSF_deepcsv_shape_up_%s' % shift) + + alias = aliases['%sSF%sdown' % (targ, shift)] = copy.deepcopy(aliases['%sSF' % targ]) + alias['expr'] = alias['expr'].replace('btagSF_deepcsv_shape', 'btagSF_deepcsv_shape_down_%s' % shift) + + aliases['btagSF%sup' % shift] = { + 'expr': aliases['btagSF']['expr'].replace('SF', 'SF' + shift + 'up'), + 'samples': mc + } + + aliases['btagSF%sdown' % shift] = { + 'expr': aliases['btagSF']['expr'].replace('SF', 'SF' + shift + 'down'), + 'samples': mc + } + +aliases['Top_pTrw'] = { + 'expr': '(topGenPt * antitopGenPt > 0.) * (TMath::Sqrt((0.103*TMath::Exp(-0.0118*topGenPt) - 0.000134*topGenPt + 0.973) * (0.103*TMath::Exp(-0.0118*antitopGenPt) - 0.000134*antitopGenPt + 0.973))) * (TMath::Sqrt(TMath::Exp(1.61468e-03 + 3.46659e-06*topGenPt - 8.90557e-08*topGenPt*topGenPt) * TMath::Exp(1.61468e-03 + 3.46659e-06*antitopGenPt - 8.90557e-08*antitopGenPt*antitopGenPt))) + (topGenPt * antitopGenPt <= 0.)', # Same Reweighting as other years, but with additional fix for tune CUET -> CP5 + 'samples': ['top'] +} + +""" +print('\n\n\n') +print('Configs:\n\n\n') +configurations = os.path.abspath('.') + '/' +print(configurations) +print('\n\n\n') + +aliases['nCleanGenJet'] = { + 'linesToAdd': ['.L %s/ngenjet.cc+' % configurations], + 'class': 'CountGenJet', + 'args': 'nLeptonGen, LeptonGen_isPrompt,\ + LeptonGen_pdgId, LeptonGen_pt, LeptonGen_eta, LeptonGen_phi, \ + LeptonGen_mass, nPhotonGen, PhotonGen_pt, PhotonGen_eta,PhotonGen_phi, \ + PhotonGen_mass, nGenJet, GenJet_pt, GenJet_eta, GenJet_phi', + 'samples': mc +} +""" + +aliases['SFweight'] = { + 'expr': ' * '.join(['SFweight2l','LepWPCut', 'LepSF2l__ele_' + eleWP + '__mu_' + muWP, 'btagSF', 'PrefireWeight', 'Jet_PUIDSF']), + #'expr': ' * '.join(['SFweight2l','LepWPCut', 'LepSF2l__ele_' + eleWP + '__mu_' + muWP, 'PrefireWeight', 'Jet_PUIDSF']), + 'samples': mc + } + +_PUJetsThres = 10 +aliases['hardJets'] = { + 'expr': f'Jet_genJetIdx[CleanJet_jetIdx[0]] >= 0 && Jet_genJetIdx[CleanJet_jetIdx[1]] >= 0 && GenJet_pt[Jet_genJetIdx[CleanJet_jetIdx[0]]] > {_PUJetsThres} && GenJet_pt[Jet_genJetIdx[CleanJet_jetIdx[1]]] > {_PUJetsThres}', + 'samples': ['DY'] +} + +aliases['PUJets'] = { + 'expr': f'!(Jet_genJetIdx[CleanJet_jetIdx[0]] >= 0 && Jet_genJetIdx[CleanJet_jetIdx[1]] >= 0 && GenJet_pt[Jet_genJetIdx[CleanJet_jetIdx[0]]] > {_PUJetsThres} && GenJet_pt[Jet_genJetIdx[CleanJet_jetIdx[1]]] > {_PUJetsThres})', + 'samples': ['DY'] +} + +aliases['ZeppenfeldDilepton'] = { + 'expr' : '0.5*(Alt(Lepton_eta,0,-100) + Alt(Lepton_eta, 1, -100) - (Alt(CleanJet_eta, 0, -100) + Alt(CleanJet_eta, 1, -100)))/abs(Alt(CleanJet_eta, 0, -100) -Alt(CleanJet_eta, 1, -100) )' +} +aliases['ZeppenfeldLeadingLepton'] = { + 'expr' : '(Alt(Lepton_eta,0,-100) - 0.5*(Alt(CleanJet_eta, 0, -100) + Alt(CleanJet_eta, 1, -100)))/abs(Alt(CleanJet_eta, 0, -100) -Alt(CleanJet_eta, 1, -100) )' + #'expr' : '(Lepton_eta[0] - 0.5*(CleanJet_eta[0] + CleanJet_eta[1]))/abs(CleanJet_eta[0] - CleanJet_eta[1])' +} + + +# Muon ttHMVA SF needed for tau embedded samples +aliases['Muon_ttHMVA_SF'] = { + 'expr': '( (abs(Lepton_pdgId[0]) == 13)*(Lepton_tightMuon_cut_Tight80x_tthmva_80_IdIsoSF[0]/Lepton_tightMuon_cut_Tight80x_IdIsoSF[0])+(abs(Lepton_pdgId[0]) == 11) )*( (abs(Lepton_pdgId[1]) == 13)*(Lepton_tightMuon_cut_Tight80x_tthmva_80_IdIsoSF[1]/Lepton_tightMuon_cut_Tight80x_IdIsoSF[1])+ (abs(Lepton_pdgId[1]) == 11) )', + 'samples' : ['Dyemb'] +} + +# variations +aliases['SFweightEleUp'] = { + 'expr': 'LepSF2l__ele_'+eleWP+'__Up', + 'samples': mc_emb +} +aliases['SFweightEleDown'] = { + 'expr': 'LepSF2l__ele_'+eleWP+'__Do', + 'samples': mc_emb +} + +aliases['SFweightMuUp'] = { + 'expr': 'LepSF2l__mu_'+muWP+'__Up', + 'samples': mc_emb +} +aliases['SFweightMuDown'] = { + 'expr': 'LepSF2l__mu_'+muWP+'__Do', + 'samples': mc_emb +} + +aliases['newDetajj'] = { + 'expr': 'abs(Alt(CleanJet_eta, 0, -1000) - Alt(CleanJet_eta, 1, 1000))', +} diff --git a/Hgg/configuration.py b/Hgg/configuration.py new file mode 100644 index 00000000..d9be0bc5 --- /dev/null +++ b/Hgg/configuration.py @@ -0,0 +1,100 @@ +""" +Configuration file for mkShapesRDF script. + +It's the only necessary python configuration file, all the other files are imported and defined by this one. + +""" + +#: tag used to identify the configuration folder version +tag = "new_vbf_16" + +#: file to use as runner script, default uses mkShapesRDF.shapeAnalysis.runner, otherwise specify path to script +runnerFile = "default" + +#: output file name +outputFile = "mkShapes__{}.root".format(tag) + +#: path to ouput folder +outputFolder = "rootFiles" +#: path to batch folder (used for condor submission) +batchFolder = "condor" + +#: path to configuration folder (will contain all the compiled configuration files) +configsFolder = "configs" + +#: luminosity to normalize to (in 1/fb) +lumi = 36.33 + + +#: file with dict of aliases to define +aliasesFile = "aliases.py" + +#: file with dict of variables +variablesFile = "variables.py" + +#: file with dict of cuts +cutsFile = "cuts.py" + +#: file with dict of samples +samplesFile = "samples.py" + +#: file with dict of samples +plotFile = "plot.py" + +#: file with dict of structure (used to define combine processes) +structureFile = "structure.py" + +# nuisances file for mkDatacards and for mkShape +nuisancesFile = "nuisances.py" + +# minRatio = 0.5 +# maxRatio = 1.5 +# plotPath = "/eos/user/g/gpizzati/www/rdf/2016/" + +#: path to folder where to save plots +plotPath = "plots" + +#: this lines are executed right before the runner on the condor node +mountEOS = [ + # "export KRB5CCNAME=/home/gpizzati/krb5\n", +] + +#: list of imports to import when compiling the whole configuration folder, it should not contain imports used by configuration.py +imports = ["os", "glob", ("collections", "OrderedDict"), "ROOT"] + +#: list of files to compile +filesToExec = [ + samplesFile, + aliasesFile, + variablesFile, + cutsFile, + plotFile, + nuisancesFile, + structureFile, +] + +#: list of variables to keep in the compiled configuration folder +varsToKeep = [ + "batchVars", + "outputFolder", + "batchFolder", + "configsFolder", + "outputFile", + "runnerFile", + "tag", + "samples", + "aliases", + "variables", + ("cuts", {"cuts": "cuts", "preselections": "preselections"}), + ("plot", {"plot": "plot", "groupPlot": "groupPlot", "legend": "legend"}), + "nuisances", + "structure", + "lumi", + "mountEOS", +] + +#: list of variables to keep in the batch submission script (script.py) +batchVars = varsToKeep[varsToKeep.index("samples") :] + + +varsToKeep += ['plotPath'] diff --git a/Hgg/cuts.py b/Hgg/cuts.py new file mode 100644 index 00000000..33684acf --- /dev/null +++ b/Hgg/cuts.py @@ -0,0 +1,44 @@ +cuts = {} + +preselections = ' Lepton_pt[0]>25 \ + && Lepton_pt[1]>13 \ + && Alt(Lepton_pt, 2, 0) < 10 \ + && abs(Lepton_eta[0])<2.5 && abs(Lepton_eta[1])<2.5 \ + && ((Lepton_pdgId[0]*Lepton_pdgId[1] == -11*11) || (Lepton_pdgId[0]*Lepton_pdgId[1] == -13*13)) \ + && Alt(CleanJet_pt, 1, 0)>30 \ + && abs(CleanJet_eta[0])<4.7 && abs(CleanJet_eta[1])<4.7 \ + && mll > 50 \ + ' + +cuts['topcr'] = { + 'expr': 'abs(mll-91)>15 && bReq', + 'categories':{ + 'ee': '(Lepton_pdgId[0]*Lepton_pdgId[1] == -11*11)', + 'mm': '(Lepton_pdgId[0]*Lepton_pdgId[1] == -13*13)', + } +} + +cuts['vvcr'] = { + 'expr': 'abs(mll-91)>15 && bVeto', + 'categories':{ + 'ee': '(Lepton_pdgId[0]*Lepton_pdgId[1] == -11*11)', + 'mm': '(Lepton_pdgId[0]*Lepton_pdgId[1] == -13*13)', + } +} + + +cuts['dycr'] = { + 'expr': 'abs(mll-91)<15 && bVeto && detajj < 3', + 'categories':{ + 'ee': '(Lepton_pdgId[0]*Lepton_pdgId[1] == -11*11)', + 'mm': '(Lepton_pdgId[0]*Lepton_pdgId[1] == -13*13)', + } +} + +cuts['sr'] = { + 'expr': 'abs(mll-91)<15 && bVeto && detajj >= 3', + 'categories':{ + 'ee': '(Lepton_pdgId[0]*Lepton_pdgId[1] == -11*11)', + 'mm': '(Lepton_pdgId[0]*Lepton_pdgId[1] == -13*13)', + } +} diff --git a/Hgg/ngenjet.cc b/Hgg/ngenjet.cc new file mode 100644 index 00000000..99893569 --- /dev/null +++ b/Hgg/ngenjet.cc @@ -0,0 +1,121 @@ + +#ifndef ngenjet +#define ngenjet + +#include + +#include "TVector2.h" +#include "Math/Vector4Dfwd.h" +#include "Math/GenVector/LorentzVector.h" +#include "Math/GenVector/PtEtaPhiM4D.h" + +#include +#include "ROOT/RVec.hxx" + +using namespace ROOT; +using namespace ROOT::VecOps; +double CountGenJet( + int nLeptonGen, + RVecB LeptonGen_isPrompt, + RVecI LeptonGen_pdgId, + RVecF LeptonGen_pt, + RVecF LeptonGen_eta, + RVecF LeptonGen_phi, + RVecF LeptonGen_mass, + int nPhotonGen, + RVecF PhotonGen_pt, + RVecF PhotonGen_eta, + RVecF PhotonGen_phi, + RVecF PhotonGen_mass, + int nGenJet, + RVecF GenJet_pt, + RVecF GenJet_eta, + RVecF GenJet_phi + ){ + unsigned nJ = nGenJet; + + unsigned nL = nLeptonGen; + + std::vector iPromptL{}; + iPromptL.reserve(nL); + + for (unsigned iL{0}; iL != nL; ++iL) { + if (!LeptonGen_isPrompt[iL]) + continue; + + unsigned absId{static_cast(std::abs(LeptonGen_pdgId[iL]))}; + if (absId != 11 && absId != 13) + continue; + + iPromptL.push_back(iL); + } + + if (iPromptL.size() == 0) { + unsigned n{0}; + for (unsigned iJ{0}; iJ != nJ; ++iJ) { + if (GenJet_pt[iJ] > 30.) + ++n; + } + return n; + } + + std::vector dressedLeptons{}; + for (unsigned iL : iPromptL) { + dressedLeptons.push_back( + ROOT::Math::PtEtaPhiMVector( + LeptonGen_pt[iL], + LeptonGen_eta[iL], + LeptonGen_phi[iL], + LeptonGen_mass[iL] + ) + ); + } + + unsigned nP = nPhotonGen; + + for (unsigned iP{0}; iP != nP; ++iP) { + double minDR2{1000.}; + int iDMin{-1}; + for (unsigned iD{0}; iD != iPromptL.size(); ++iD) { + unsigned iL{iPromptL[iD]}; + double dEta{LeptonGen_eta[iL] - PhotonGen_eta[iP]}; + double dPhi{TVector2::Phi_mpi_pi(LeptonGen_phi[iL] - PhotonGen_phi[iP])}; + double dR2{dEta * dEta + dPhi * dPhi}; + if (dR2 < minDR2) { + minDR2 = dR2; + iDMin = iD; + } + } + + if (minDR2 < 0.09) + dressedLeptons[iDMin] += ROOT::Math::PtEtaPhiMVector( + PhotonGen_pt[iP], + PhotonGen_eta[iP], + PhotonGen_phi[iP], + PhotonGen_mass[iP]); + } + + unsigned n{0}; + for (unsigned iJ{0}; iJ != nJ; ++iJ) { + if (GenJet_pt[iJ] < 30.) + continue; + + bool overlap{false}; + for (auto& p4 : dressedLeptons) { + if (p4.pt() < 10.) + continue; + + double dEta{p4.eta() - GenJet_eta[iJ]}; + double dPhi{TVector2::Phi_mpi_pi(p4.phi() - GenJet_phi[iJ])}; + if (dEta * dEta + dPhi * dPhi < 0.016) { + overlap = true; + break; + } + } + if (!overlap) + ++n; + } + return n; +} + +#endif \ No newline at end of file diff --git a/Hgg/nuisances.py b/Hgg/nuisances.py new file mode 100644 index 00000000..71edff86 --- /dev/null +++ b/Hgg/nuisances.py @@ -0,0 +1,578 @@ +# merge cuts +_mergedCuts = [] +for cut in list(cuts.keys()): + __cutExpr = "" + if type(cuts[cut]) == dict: + __cutExpr = cuts[cut]["expr"] + for cat in list(cuts[cut]["categories"].keys()): + _mergedCuts.append(cut + "_" + cat) + elif type(cuts[cut]) == str: + _mergedCuts.append(cut) + +cuts2j = _mergedCuts +cuts2j_ee = list(filter(lambda k: k.endswith("ee"), cuts2j)) +cuts2j_mm = list(filter(lambda k: k.endswith("mm"), cuts2j)) + +nuisances = {} + +nuisances["lumi_Uncorrelated"] = { + "name": "lumi_13TeV_2016", + "type": "lnN", + "samples": dict((skey, "1.01") for skey in mc if skey not in ["WW", "top", "DY"]), +} + +nuisances["lumi_correlated"] = { + "name": "lumi_13TeV_correlated", + "type": "lnN", + "samples": dict((skey, "1.006") for skey in mc if skey not in ["WW", "top", "DY"]), +} + +""" +nuisances['fake_syst_e'] = { + 'name': 'CMS_fake_syst_e', + 'type': 'lnN', + 'samples': { + 'Fake_e': '1.3' + }, +} + +nuisances['fake_syst_m'] = { + 'name': 'CMS_fake_syst_m', + 'type': 'lnN', + 'samples': { + 'Fake_m': '1.3' + }, +} + + +nuisances['fake_ele'] = { + 'name': 'CMS_fake_e_2016', + 'kind': 'weight', + 'type': 'shape', + 'samples': { + 'Fake': ['fakeWEleUp', 'fakeWEleDown'], + } +} + +nuisances['fake_ele_stat'] = { + 'name': 'CMS_fake_stat_e_2016', + 'kind': 'weight', + 'type': 'shape', + 'samples': { + 'Fake': ['fakeWStatEleUp', 'fakeWStatEleDown'] + } +} + +nuisances['fake_mu'] = { + 'name': 'CMS_fake_m_2016', + 'kind': 'weight', + 'type': 'shape', + 'samples': { + 'Fake': ['fakeWMuUp', 'fakeWMuDown'], + } +} + +nuisances['fake_mu_stat'] = { + 'name': 'CMS_fake_stat_m_2016', + 'kind': 'weight', + 'type': 'shape', + 'samples': { + 'Fake': ['fakeWStatMuUp', 'fakeWStatMuDown'], + } +} + +###### B-tagger +# +#for shift in ['jes', 'lf', 'hfstats1', 'hfstats2', 'lfstats1', 'lfstats2', 'cferr1', 'cferr2']: +# btag_syst = ['(btagSF%sup)/(btagSF)' % shift, '(btagSF%sdown)/(btagSF)' % shift] +# +# name = 'CMS_btag_%s' % shift +# if 'stats' in shift: +# name += '_2016' +# +# nuisances['btag_shape_%s' % shift] = { +# 'name': name, +# 'kind': 'weight', +# 'type': 'shape', +# 'samples': dict((skey, btag_syst) for skey in mc), +# } + +##### Trigger Efficiency + +trig_syst = ['((TriggerEffWeight_2l_u)/(TriggerEffWeight_2l))*(TriggerEffWeight_2l>0.02) + (TriggerEffWeight_2l<=0.02)', '(TriggerEffWeight_2l_d)/(TriggerEffWeight_2l)'] + +nuisances['trigg'] = { + 'name': 'CMS_eff_hwwtrigger_2016', + 'kind': 'weight', + 'type': 'shape', + 'samples': dict((skey, trig_syst) for skey in mc_emb) +} + +prefire_syst = ['PrefireWeight_Up/PrefireWeight', 'PrefireWeight_Down/PrefireWeight'] + +nuisances['prefire'] = { + 'name': 'CMS_eff_prefiring_2016', + 'kind': 'weight', + 'type': 'shape', + 'samples': dict((skey, prefire_syst) for skey in mc) +} + +##### Electron Efficiency and energy scale + +nuisances['eff_e'] = { + 'name': 'CMS_eff_e_2016', + 'kind': 'weight', + 'type': 'shape', + 'samples': dict((skey, ['SFweightEleUp', 'SFweightEleDown']) for skey in mc_emb) +} + +""" +nuisances["electronpt"] = { + "name": "CMS_scale_e_2016", + "kind": "suffix", + "type": "shape", + "mapUp": "ElepTup", + "mapDown": "ElepTdo", + "samples": dict((skey, ["1", "1"]) for skey in mc), + "folderUp": makeMCDirectory("ElepTup_suffix"), + "folderDown": makeMCDirectory("ElepTdo_suffix"), + "AsLnN": "1", +} + +""" +##### Muon Efficiency and energy scale + +nuisances['eff_m'] = { + 'name': 'CMS_eff_m_2016', + 'kind': 'weight', + 'type': 'shape', + 'samples': dict((skey, ['SFweightMuUp', 'SFweightMuDown']) for skey in mc_emb), +} + +nuisances['muonpt'] = { + 'name': 'CMS_scale_m_2016', + 'kind': 'suffix', + 'type': 'shape', + 'mapUp': 'MupTup', + 'mapDown': 'MupTdo', + 'samples': dict((skey, ['1', '1']) for skey in mc), + 'folderUp': makeMCDirectory('MupTup_suffix'), + 'folderDown': makeMCDirectory('MupTdo_suffix'), + 'AsLnN': '1' +} + + +##### Jet energy scale + +jes_systs = ['JESAbsolute','JESAbsolute_2016','JESBBEC1','JESBBEC1_2016','JESEC2','JESEC2_2016','JESFlavorQCD','JESHF','JESHF_2016','JESRelativeBal','JESRelativeSample_2016'] +folderup = "" +folderdo = "" + +for js in jes_systs: + if 'Absolute' in js: + folderup = makeMCDirectory('JESAbsoluteup_suffix') + folderdo = makeMCDirectory('JESAbsolutedo_suffix') + elif 'BBEC1' in js: + folderup = makeMCDirectory('JESBBEC1up_suffix') + folderdo = makeMCDirectory('JESBBEC1do_suffix') + elif 'EC2' in js: + folderup = makeMCDirectory('JESEC2up_suffix') + folderdo = makeMCDirectory('JESEC2do_suffix') + elif 'HF' in js: + folderup = makeMCDirectory('JESHFup_suffix') + folderdo = makeMCDirectory('JESHFdo_suffix') + elif 'Relative' in js: + folderup = makeMCDirectory('JESRelativeup_suffix') + folderdo = makeMCDirectory('JESRelativedo_suffix') + elif 'FlavorQCD' in js: + folderup = makeMCDirectory('JESFlavorQCDup_suffix') + folderdo = makeMCDirectory('JESFlavorQCDdo_suffix') + + nuisances[js] = { + 'name': 'CMS_scale_'+js, + 'kind': 'suffix', + 'type': 'shape', + 'mapUp': js+'up', + 'mapDown': js+'do', + 'samples': dict((skey, ['1', '1']) for skey in mc), + 'folderUp': folderup, + 'folderDown': folderdo, + 'AsLnN': '1' + } + +##### MET energy scale + +nuisances['met'] = { + 'name': 'CMS_scale_met_2016', + 'kind': 'suffix', + 'type': 'shape', + 'mapUp': 'METup', + 'mapDown': 'METdo', + 'samples': dict((skey, ['1', '1']) for skey in mc), + 'folderUp': makeMCDirectory('METup_suffix'), + 'folderDown': makeMCDirectory('METdo_suffix'), + 'AsLnN': '1' +} + +### PU ID SF uncertainty +puid_syst = ['Jet_PUIDSF_up/Jet_PUIDSF', 'Jet_PUIDSF_down/Jet_PUIDSF'] + +nuisances['jetPUID'] = { + 'name': 'CMS_PUID_2016', + 'kind': 'weight', + 'type': 'shape', + 'samples': dict((skey, puid_syst) for skey in mc) +} + + +##### Pileup + +nuisances['PU'] = { + 'name': 'CMS_PU_2016', + 'kind': 'weight', + 'type': 'shape', + 'samples': { + 'DY': ['0.993259983266*(puWeightUp/puWeight)', '0.997656381501*(puWeightDown/puWeight)'], + 'top': ['1.00331969187*(puWeightUp/puWeight)', '0.999199609528*(puWeightDown/puWeight)'], + 'WW': ['1.0033022059*(puWeightUp/puWeight)', '0.997085330608*(puWeightDown/puWeight)'], + 'ggH_hww': ['1.0036768006*(puWeightUp/puWeight)', '0.995996570285*(puWeightDown/puWeight)'], + 'qqH_hww': ['1.00374694528*(puWeightUp/puWeight)', '0.995878596852*(puWeightDown/puWeight)'], + }, + 'AsLnN': '1', +} + +##### PS +nuisances['PS_ISR'] = { + 'name': 'PS_ISR', + 'kind': 'weight', + 'type': 'shape', + 'samples': { + 'Vg' : ['1.00227428567253*(nCleanGenJet==0) + 1.00572014989997*(nCleanGenJet==1) + 0.970824885256465*(nCleanGenJet==2) + 0.927346068071086*(nCleanGenJet>=3)', '0.996488506572636*(nCleanGenJet==0) + 0.993582795375765*(nCleanGenJet==1) + 1.03643678934568*(nCleanGenJet==2) + 1.09735277266955*(nCleanGenJet>=3)'], + 'VgS' : ['1.0000536116408023*(nCleanGenJet==0) + 1.0100100693580492*(nCleanGenJet==1) + 0.959068359375*(nCleanGenJet==2) + 0.9117049260469496*(nCleanGenJet>=3)', '0.9999367833485968*(nCleanGenJet==0) + 0.9873682892005163*(nCleanGenJet==1) + 1.0492717737268518*(nCleanGenJet==2) + 1.1176958835210322*(nCleanGenJet>=3)'], + 'ggWW' : ['1.040233912070831*(nCleanGenJet==0) + 0.9611236379290876*(nCleanGenJet==1) + 0.9014289294088699*(nCleanGenJet==2) + 0.864310738090035*(nCleanGenJet>=3)', '0.9510305474211223*(nCleanGenJet==0) + 1.0433432942960381*(nCleanGenJet==1) + 1.1271383507266095*(nCleanGenJet==2) + 1.1885756983901514*(nCleanGenJet>=3)'], + 'WW' : ['1.0005237869294796*(nCleanGenJet==0) + 1.0157425373134328*(nCleanGenJet==1) + 0.9644598124510606*(nCleanGenJet==2) + 0.9271488926223369*(nCleanGenJet>=3)', '0.9993553300024391*(nCleanGenJet==0) + 0.9806102300995024*(nCleanGenJet==1) + 1.042603303739856*(nCleanGenJet==2) + 1.0950369125887705*(nCleanGenJet>=3)'], + 'top' : ['1.0020618369910668*(nCleanGenJet==0) + 1.0063081530771556*(nCleanGenJet==1) + 1.0094298425968304*(nCleanGenJet==2) + 0.9854207999040726*(nCleanGenJet>=3)', '0.9974340279269026*(nCleanGenJet==0) + 0.9920634820709106*(nCleanGenJet==1) + 0.988226385054923*(nCleanGenJet==2) + 1.017968568319235*(nCleanGenJet>=3)'], + 'DY' : ['0.9998177685645392*(nCleanGenJet==0) + 1.0080838149428026*(nCleanGenJet==1) + 1.0057948912950987*(nCleanGenJet==2) + 0.9721358221196619*(nCleanGenJet>=3)', '1.0003244155266309*(nCleanGenJet==0) + 0.9897992135367016*(nCleanGenJet==1) + 0.9928782069009531*(nCleanGenJet==2) + 1.0348902921423981*(nCleanGenJet>=3)'], + 'VVV' : ['1.0270826786253018*(nCleanGenJet==0) + 1.0198703447307862*(nCleanGenJet==1) + 1.0109191915514344*(nCleanGenJet==2) + 0.9838184220287978*(nCleanGenJet>=3)', '0.9661665482954546*(nCleanGenJet==0) + 0.9751744967838527*(nCleanGenJet==1) + 0.9859624782745712*(nCleanGenJet==2) + 1.0202995039288625*(nCleanGenJet>=3)'], + 'ggH_hww': ['1.0007510488273352*(nCleanGenJet==0) + 1.0152476349471342*(nCleanGenJet==1) + 0.9645590929269297*(nCleanGenJet==2) + 0.9189171704206691*(nCleanGenJet>=3)', '0.9989909143752528*(nCleanGenJet==0) + 0.9814978813068076*(nCleanGenJet==1) + 1.0416554335980368*(nCleanGenJet==2) + 1.1060543963750413*(nCleanGenJet>=3)'], + 'qqH_hww': ['1.0008858084852863*(nCleanGenJet==0) + 1.001293920824975*(nCleanGenJet==1) + 1.0013304143711548*(nCleanGenJet==2) + 0.9875473532521144*(nCleanGenJet>=3)', '0.9987483211480337*(nCleanGenJet==0) + 0.9982952329209852*(nCleanGenJet==1) + 0.9983076740658964*(nCleanGenJet==2) + 1.016023412328836*(nCleanGenJet>=3)'], + 'WH_hww' : ['1.0006979353025824*(nCleanGenJet==0) + 1.0014529360558138*(nCleanGenJet==1) + 1.0007920644457673*(nCleanGenJet==2) + 0.996814275350521*(nCleanGenJet>=3)', '0.9990367459746422*(nCleanGenJet==0) + 0.9980712824836634*(nCleanGenJet==1) + 0.9989875513096169*(nCleanGenJet==2) + 1.0039628146069568*(nCleanGenJet>=3)'], + 'ZH_hww' : ['1.0008198940532742*(nCleanGenJet==0) + 1.001574300159756*(nCleanGenJet==1) + 1.0014892423703352*(nCleanGenJet==2) + 0.9982835923429388*(nCleanGenJet>=3)', '0.9991322211949244*(nCleanGenJet==0) + 0.9979828392772856*(nCleanGenJet==1) + 0.9980190791034156*(nCleanGenJet==2) + 1.0021025907582017*(nCleanGenJet>=3)'], + 'WWewk' : ['1./1.00259*(nCleanGenJet==0) + 1./1.0179*(nCleanGenJet==1) + 1./1.01821*(nCleanGenJet==2) + 1./0.965982*(nCleanGenJet>=3)', '1./0.998322*(nCleanGenJet==0) + 1./0.979654*(nCleanGenJet==1) + 1./0.978425*(nCleanGenJet==2) + 1./1.04488*(nCleanGenJet>=3)'], + }, +} + +nuisances['PS_FSR'] = { + 'name': 'PS_FSR', + 'kind': 'weight', + 'type': 'shape', + 'samples': { + 'Vg' : ['0.999935529935028*(nCleanGenJet==0) + 0.997948255568351*(nCleanGenJet==1) + 1.00561645493085*(nCleanGenJet==2) + 1.0212896960035*(nCleanGenJet>=3)', '1.00757702771109*(nCleanGenJet==0) + 1.00256681166083*(nCleanGenJet==1) + 0.93676371569867*(nCleanGenJet==2) + 0.956448336052435*(nCleanGenJet>=3)'], + 'VgS' : ['0.9976593177227735*(nCleanGenJet==0) + 1.0016125187585532*(nCleanGenJet==1) + 1.0049344618055556*(nCleanGenJet==2) + 1.0195631514301164*(nCleanGenJet>=3)', '1.0026951855766457*(nCleanGenJet==0) + 1.0008132148661049*(nCleanGenJet==1) + 1.003949291087963*(nCleanGenJet==2) + 0.9708160910230832*(nCleanGenJet>=3)'], + 'ggWW' : ['0.9910563426395067*(nCleanGenJet==0) + 1.0069894351287263*(nCleanGenJet==1) + 1.016616376034912*(nCleanGenJet==2) + 1.015902717074592*(nCleanGenJet>=3)', '1.0147395976461193*(nCleanGenJet==0) + 0.9860219489006646*(nCleanGenJet==1) + 0.9694680606617647*(nCleanGenJet==2) + 0.9489845115821678*(nCleanGenJet>=3)'], + 'WW' : ['0.995462478372054*(nCleanGenJet==0) + 1.0052129975124378*(nCleanGenJet==1) + 1.008836750560578*(nCleanGenJet==2) + 0.9984120564941189*(nCleanGenJet>=3)', '1.008927720738437*(nCleanGenJet==0) + 0.995163868159204*(nCleanGenJet==1) + 0.9911024228315418*(nCleanGenJet==2) + 0.9763787172658678*(nCleanGenJet>=3)'], + 'top' : ['0.9910899786333963*(nCleanGenJet==0) + 0.9990635702054794*(nCleanGenJet==1) + 1.002141744200183*(nCleanGenJet==2) + 1.0129742776372779*(nCleanGenJet>=3)', '1.0068843378231833*(nCleanGenJet==0) + 0.998988498438759*(nCleanGenJet==1) + 0.9952696584115224*(nCleanGenJet==2) + 0.9790955840673237*(nCleanGenJet>=3)'], + 'DY' : ['0.9958763409773141*(nCleanGenJet==0) + 1.0041335498093422*(nCleanGenJet==1) + 1.0163363150953029*(nCleanGenJet==2) + 1.0296733670670226*(nCleanGenJet>=3)', '1.0066775262249232*(nCleanGenJet==0) + 0.9945601465681602*(nCleanGenJet==1) + 0.9662459619335311*(nCleanGenJet==2) + 0.9479423453563661*(nCleanGenJet>=3)'], + 'VVV' : ['0.9809047855490748*(nCleanGenJet==0) + 0.9823641498350338*(nCleanGenJet==1) + 0.9976414629808243*(nCleanGenJet==2) + 1.0077953569413387*(nCleanGenJet>=3)', '1.035388723727876*(nCleanGenJet==0) + 1.0347339790465233*(nCleanGenJet==1) + 1.0017058788771533*(nCleanGenJet==2) + 0.9829344116371653*(nCleanGenJet>=3)'], + 'ggH_hww': ['0.9936588910230489*(nCleanGenJet==0) + 1.0087564198432573*(nCleanGenJet==1) + 1.014636529653396*(nCleanGenJet==2) + 1.00399261707105*(nCleanGenJet>=3)','1.0125063182369591*(nCleanGenJet==0) + 0.9846168672324244*(nCleanGenJet==1) + 0.9778204449152542*(nCleanGenJet==2) + 1.0014057292097962*(nCleanGenJet>=3)'], + 'qqH_hww': ['0.9902864012471768*(nCleanGenJet==0) + 0.9950165165635796*(nCleanGenJet==1) + 1.0024778632714528*(nCleanGenJet==2) + 1.0132965690130387*(nCleanGenJet>=3)', '1.0171041801597582*(nCleanGenJet==0) + 1.0088822239287307*(nCleanGenJet==1) + 0.9946938338710369*(nCleanGenJet==2) + 0.9782409053438381*(nCleanGenJet>=3)'], + 'WH_hww' : ['0.9864466858859676*(nCleanGenJet==0) + 0.9911412676207558*(nCleanGenJet==1) + 1.0047988929561447*(nCleanGenJet==2) + 1.0135375714689319*(nCleanGenJet>=3)', '1.022768308571873*(nCleanGenJet==0) + 1.0147067259919833*(nCleanGenJet==1) + 0.9932121652658327*(nCleanGenJet==2) + 0.9807301742549035*(nCleanGenJet>=3)'], + 'ZH_hww' : ['0.98702584755388*(nCleanGenJet==0) + 0.9881328970299905*(nCleanGenJet==1) + 1.0046199525397077*(nCleanGenJet==2) + 1.0091561054313662*(nCleanGenJet>=3)', '1.0236225630459734*(nCleanGenJet==0) + 1.0213677207764504*(nCleanGenJet==1) + 0.9933149152918336*(nCleanGenJet==2) + 0.978832627595614*(nCleanGenJet>=3)'], + 'WWewk' : ['1./0.991982*(nCleanGenJet==0) + 1./0.995154*(nCleanGenJet==1) + 1./1.00456*(nCleanGenJet==2) + 1./1.00597*(nCleanGenJet>=3)', '1./1.01669*(nCleanGenJet==0) + 1./1.01253*(nCleanGenJet==1) + 1./0.997909*(nCleanGenJet==2) + 1./0.991305*(nCleanGenJet>=3)'], + }, +} + + +## An overall 1.5% UE uncertainty will cover all the UEup/UEdo variations +## And we don't observe any dependency of UE variations on njet +#nuisances['UE'] = { +# 'name' : 'UE_CUET', +# 'skipCMS' : 1, +# 'type': 'lnN', +# 'samples': dict((skey, '1.015') for skey in mc if not skey in ['WW','top']), +#} + +###### Generic "cross section uncertainties" + +apply_on = { + 'top': [ + '(topGenPt * antitopGenPt <= 0.) * 1.0816 + (topGenPt * antitopGenPt > 0.)', + '(topGenPt * antitopGenPt <= 0.) * 0.9184 + (topGenPt * antitopGenPt > 0.)' + ] +} + +nuisances['singleTopToTTbar'] = { + 'name': 'singleTopToTTbar', + 'skipCMS': 1, + 'kind': 'weight', + 'type': 'shape', + 'samples': apply_on +} + +## Top pT reweighting uncertainty + +nuisances['TopPtRew'] = { + 'name': 'CMS_topPtRew', # Theory uncertainty + 'kind': 'weight', + 'type': 'shape', + 'samples': {'top': ["Top_pTrw*Top_pTrw", "1."]}, + 'symmetrize': True +} + +nuisances['VgStar'] = { + 'name': 'CMS_hww_VgStarScale', + 'type': 'lnN', + 'samples': { + 'VgS_L': '1.25' + } +} + +nuisances['VZ'] = { + 'name': 'CMS_hww_VZScale', + 'type': 'lnN', + 'samples': { + 'VgS_H': '1.16' + } +} + +###### pdf uncertainties + +nuisances['pdf_qqbar'] = { + 'name': 'pdf_qqbar', + 'type': 'lnN', + 'samples': { + 'Vg': '1.04', + 'VZ': '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 + 'VgS': '1.04', # PDF: 0.0064 / 0.1427 = 0.0448493 + }, +} + +nuisances['pdf_gg_ACCEPT'] = { + 'name': 'pdf_gg_ACCEPT', + 'samples': { + 'ggWW': '1.006', + }, + 'type': 'lnN', +} + +nuisances['pdf_qqbar_ACCEPT'] = { + 'name': 'pdf_qqbar_ACCEPT', + 'type': 'lnN', + 'samples': { + 'VZ': '1.001', + }, +} + +##### Renormalization & factorization scales + +## Shape nuisance due to QCD scale variations for top +## LHE scale variation weights (w_var / w_nominal) +## Different approach in this case because LHEScaleWeight is missing in single top samples +topvariations = ['Alt$(LHEScaleWeight[0],1)', 'Alt$(LHEScaleWeight[1],1)', 'Alt$(LHEScaleWeight[3],1)', 'Alt$(LHEScaleWeight[5],1)','Alt$(LHEScaleWeight[7],1)','Alt$(LHEScaleWeight[8],1)'] +## top variation with no envelope applied: [0] and [8] element are considered the Up and Down variation respectively +#topvariations = ['Alt$(LHEScaleWeight[0],1)', 'Alt$(LHEScaleWeight[8],1)'] + +topvars2j = [] +WWvars2j = [] + +## Factors computed to renormalize the top scale variations such that the integral is not changed in each RECO jet bin (we have rateParams for that) +topScaleNormFactors0j = {'Alt$(LHEScaleWeight[3],1)': 1.0127481603212656, 'Alt$(LHEScaleWeight[0],1)': 1.0781331279433415, 'Alt$(LHEScaleWeight[1],1)': 1.0690928216708382, 'Alt$(LHEScaleWeight[7],1)': 0.9345571161077737, 'Alt$(LHEScaleWeight[8],1)': 0.9227838225449528, 'Alt$(LHEScaleWeight[5],1)': 0.9907270914731349} +topScaleNormFactors1j = {'Alt$(LHEScaleWeight[3],1)': 1.0153655578503986, 'Alt$(LHEScaleWeight[0],1)': 1.0907798004584341, 'Alt$(LHEScaleWeight[1],1)': 1.0798026063785011, 'Alt$(LHEScaleWeight[7],1)': 0.92428116499208, 'Alt$(LHEScaleWeight[8],1)': 0.9101690580310614, 'Alt$(LHEScaleWeight[5],1)': 0.9888177133975222} +topScaleNormFactors2j = {'Alt$(LHEScaleWeight[3],1)': 1.0239541358390016, 'Alt$(LHEScaleWeight[0],1)': 1.125869020564376, 'Alt$(LHEScaleWeight[1],1)': 1.105896547188302, 'Alt$(LHEScaleWeight[7],1)': 0.9037581174447249, 'Alt$(LHEScaleWeight[8],1)': 0.8828417179568193, 'Alt$(LHEScaleWeight[5],1)': 0.981806136304384} + +### WWJ Powheg ### +WWScaleNormFactors2j = { + 'Alt$(LHEScaleWeight[0],1)': 1.04499, + 'Alt$(LHEScaleWeight[1],1)': 1.06296, + 'Alt$(LHEScaleWeight[3],1)': 0.943058, + 'Alt$(LHEScaleWeight[5],1)': 1.01909, + 'Alt$(LHEScaleWeight[7],1)': 0.94859, + 'Alt$(LHEScaleWeight[8],1)': 0.98728 +} + +for var in topvariations: + topvars2j.append(var+'/'+str(topScaleNormFactors2j[var])) + WWvars2j.append(var+'/'+str(WWScaleNormFactors2j[var])) + +## envelope uncertainty + +nuisances['QCDscale_top_2j'] = { + 'name' : 'QCDscale_top_2j', + 'skipCMS' : 1, + 'kind' : 'weight_envelope', + 'type' : 'shape', + #cutspost' : lambda self, cuts: [cut for cut in cuts if '2j' in cut], + 'samples' : { + 'top' : topvars2j, + } +} + +nuisances['QCDscale_WW_2j'] = { + 'name' : 'QCDscale_WW_2j', + 'skipCMS' : 1, + 'kind' : 'weight_envelope', + 'type' : 'shape', + #'cutspost' : lambda self, cuts: [cut for cut in cuts if '2j' in cut], + 'samples' : { + 'WW' : WWvars2j, + } +} + +## Shape nuisance due to QCD scale variations for DY +## LHE scale variation weights (w_var / w_nominal) + +## This should work for samples with either 8 or 9 LHE scale weights (Length$(LHEScaleWeight) == 8 or 9) +variations = ['LHEScaleWeight[0]', 'LHEScaleWeight[1]', 'LHEScaleWeight[3]', 'LHEScaleWeight[Length$(LHEScaleWeight)-4]', 'LHEScaleWeight[Length$(LHEScaleWeight)-2]', 'LHEScaleWeight[Length$(LHEScaleWeight)-1]'] +VBSvariations = ['LHEScaleWeight[0]/LHEScaleWeight[1]/1.0597', 'LHEScaleWeight[2]/LHEScaleWeight[1]/0.9946'] + +nuisances['QCDscale_WWewk'] = { + 'name': 'QCDscale_WWewk', + 'kind': 'weight_envelope', + 'type': 'shape', + 'samples': { + 'WWewk': VBSvariations + }, + 'AsLnN': '1' # FIXME +} + +nuisances['QCDscale_V'] = { + 'name': 'QCDscale_V', + 'skipCMS': 1, + 'kind': 'weight_envelope', + 'type': 'shape', + 'samples': {'DY': variations}, + 'AsLnN': '1' +} + + +nuisances['QCDscale_VV'] = { + 'name': 'QCDscale_VV', + 'kind': 'weight_envelope', + 'type': 'shape', + 'samples': { + 'Vg': variations, + 'VZ': variations, + 'VgS': variations + } +} + +# ggww and interference +nuisances['QCDscale_ggVV'] = { + 'name': 'QCDscale_ggVV', + 'type': 'lnN', + 'samples': { + 'ggWW': '1.15', + }, +} + +# Uncertainty on SR/CR ratio +nuisances['CRSR_accept_DY'] = { + 'name': 'CMS_hww_CRSR_accept_DY', + 'type': 'lnN', + 'samples': {'DY': '1.02'}, + 'cuts': [cut for cut in cuts if 'DY' in cut], + 'cutspost': (lambda self, cuts: [cut for cut in cuts if 'DY' in cut]), +} + +# Uncertainty on SR/CR ratio +nuisances['CRSR_accept_top'] = { + 'name': 'CMS_hww_CRSR_accept_top', + 'type': 'lnN', + 'samples': {'top': '1.01'}, + 'cuts': [cut for cut in cuts if 'top' in cut], + 'cutspost': (lambda self, cuts: [cut for cut in cuts if 'top' in cut]), +} + +nuisances['QCDscale_qqbar_ACCEPT'] = { + 'name': 'QCDscale_qqbar_ACCEPT', + 'type': 'lnN', + 'samples': { + 'qqH_hww': '1.003', + 'qqH_htt': '1.003', + 'WH_hww': '1.010', + 'WH_htt': '1.010', + 'ZH_hww': '1.015', + 'ZH_htt': '1.015', + #'VZ': '1.004', # this shouldn't be here because we have full shape-based uncertainty for VZ + } +} + +nuisances['QCDscale_gg_ACCEPT'] = { + 'name': 'QCDscale_gg_ACCEPT', + 'samples': { + #'ggH_hww': '1.012', # shouldn't be here + 'ggH_htt': '1.012', + 'ggZH_hww': '1.012', + 'ggWW': '1.012', + }, + 'type': 'lnN', +} + +## Use the following if you want to apply the automatic combine MC stat nuisances. +nuisances['stat'] = { + 'type': 'auto', + 'maxPoiss': '10', + 'includeSignal': '0', + # nuisance ['maxPoiss'] = Number of threshold events for Poisson modelling + # nuisance ['includeSignal'] = Include MC stat nuisances on signal processes (1=True, 0=False) + 'samples': {} +} + +""" + +autoStats = False +if autoStats: + # Use the following if you want to apply the automatic combine MC stat nuisances. + nuisances["stat"] = { + "type": "auto", + "maxPoiss": "10", + "includeSignal": "0", + # nuisance ['maxPoiss'] = Number of threshold events for Poisson modelling + # nuisance ['includeSignal'] = Include MC stat nuisances on signal processes (1=True, 0=False) + "samples": {}, + } + +for dy in dys.keys(): + nuisances[f"DYnorm2j_ee_{dy}"] = { + "name": f"CMS_hww_DYnorm2j_ee_{dy}", + "samples": { + f"DY_{dy}": "1.00", + }, + "type": "rateParam", + "cuts": cuts2j_ee, + } + nuisances[f"DYnorm2j_mm_{dy}"] = { + "name": f"CMS_hww_DYnorm2j_mm_{dy}", + "samples": { + f"DY_{dy}": "1.00", + }, + "type": "rateParam", + "cuts": cuts2j_mm, + } + + +nuisances["VVnorm2j"] = { + "name": "CMS_hww_VVnorm2j", + "samples": { + "WW": "1.00", + "ggWW": "1.00", + "Vg": "1.00", + "VgS_L": "1.00", + "VgS_H": "1.00", + "VZ": "1.00", + "VVV": "1.00", + "WWewk": "1.00", + }, + "type": "rateParam", + "cuts": cuts2j, +} + + +nuisances["Topnorm2j"] = { + "name": "CMS_hww_Topnorm2j", + "samples": { + "top": "1.00", + }, + "type": "rateParam", + "cuts": cuts2j, +} diff --git a/Hgg/plot.py b/Hgg/plot.py new file mode 100644 index 00000000..4cd15aff --- /dev/null +++ b/Hgg/plot.py @@ -0,0 +1,224 @@ +groupPlot = {} + +groupPlot['Fake'] = { + 'nameHR' : 'nonprompt', + 'isSignal' : 0, + 'color': 921, # kGray + 1 + 'samples' : ['Fake_m', 'Fake_e'] +} + +groupPlot['top'] = { + 'nameHR' : 'tW and t#bar{t}', + 'isSignal' : 0, + #'color': 400, # kYellow + 'color': ROOT.kYellow, # kYellow + 'samples' : ['top'] +} + + +# # _i = 0 +# # for dy in dys.keys(): +# # groupPlot[dy] = { +# # 'nameHR': dy, +# # 'isSignal': 0, +# # 'color': ROOT.kGreen - 7 + _i, +# # 'samples': ['DY_' + dy] +# # } +# # _i +=1 + +# groupPlot['DY_hardJets'] = { +# 'nameHR' : 'DY_hardJets', +# 'isSignal' : 0, +# 'color' : ROOT.kGreen-7, +# 'samples' : ['DY_hardJets'] +# } + +# groupPlot['DY_PUJets'] = { +# 'nameHR' : 'DY_PUJets', +# 'isSignal' : 0, +# 'color' : ROOT.kGreen-6, +# 'samples' : ['DY_PUJets'] +# } + +groupPlot['DY'] = { + 'nameHR' : 'DY', + 'isSignal' : 0, + 'color' : ROOT.kGreen-7, + 'samples' : ['DY'] +} + + + +groupPlot['Multiboson'] = { + 'nameHR' : 'Multiboson', + 'isSignal' : 0, + 'color': 617, # kViolet + 1 + #'samples' : ['WWewk','WW', 'ggWW', 'VVV', 'VZ', 'WZ', 'ZZ', 'Vg', 'Wg', 'VgS_H', 'VgS_L'] + 'samples' : ['WWewk','WW', 'ggWW', 'Vg', 'VgS_H', 'VgS_L', 'VZ', 'VVV'] + #'VVV', 'VZ', 'WZ', 'ZZ', 'Vg', 'Wg', 'VgS_H', 'VgS_L'] +} + +groupPlot['Zjj'] = { + 'nameHR': 'Zjj', + 'isSignal' : 1, + 'color': 600, # kBlue + 'samples' : ['Zjj'] +} + +# groupPlot['DATA'] = { +# 'nameHR' : 'Data', +# 'color' : 1 , +# 'isSignal' : 0, +# 'isData' : 1 , +# 'isBlind' : { +# 'sr_ee': 'full', +# 'sr_mm': 'full', +# }, +# 'samples' : ['DATA'] +# } + +plot = {} + +plot['Zjj'] = { + 'color': 400, # kYellow + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0, +} + +plot['top'] = { + 'color': 400, # kYellow + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0, +} + +# plot['DY_hardJets'] = { +# 'color': 400, # kYellow +# 'isSignal' : 0, +# 'isData' : 0, +# 'scale' : 1.0, +# } + +# plot['DY_PUJets'] = { +# 'color': 400, # kYellow +# 'isSignal' : 0, +# 'isData' : 0, +# 'scale' : 1.0, +# } + +plot['DY'] = { + 'color': 400, # kYellow + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0, +} + +plot['WW'] = { + 'color': 400, # kYellow + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0, +} + +plot['ggWW'] = { + 'color': 400, # kYellow + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0, +} + +plot['Vg'] = { + 'color': 400, # kYellow + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0, +} + +plot['VgS_H'] = { + 'color': 400, # kYellow + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0, +} + +plot['VgS_L'] = { + 'color': 400, # kYellow + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0, +} + +plot['VZ'] = { + 'color': 400, # kYellow + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0, +} + +plot['VVV'] = { + 'color': 400, # kYellow + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0, +} + +plot['WWewk'] = { + 'color': 400, # kYellow + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0, +} + +plot['Fake_e'] = { + 'color': 400, # kYellow + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0, +} + +plot['Fake_m'] = { + 'color': 400, # kYellow + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0, +} + +# plot['DATA'] = { +# 'color': 400, # kYellow +# 'isSignal' : 0, +# 'isData' : 0, +# 'scale' : 1.0, +# } + + +# merge cuts +_mergedCuts = [] +for cut in list(cuts.keys()): + __cutExpr = '' + if type(cuts[cut]) == dict: + __cutExpr = cuts[cut]['expr'] + for cat in list(cuts[cut]['categories'].keys()): + _mergedCuts.append(cut + '_' + cat) + elif type(cuts[cut]) == str: + _mergedCuts.append(cut) + +cuts2j = _mergedCuts +cuts2j_ee = list(filter(lambda k: k.endswith('ee'), cuts2j)) +cuts2j_mm = list(filter(lambda k: k.endswith('mm'), cuts2j)) +cuts2j_sr = list(filter(lambda k: k.startswith('sr'), cuts2j)) +cuts2j_cr = list(set(cuts2j).difference(set(cuts2j_sr))) +# +plot['DATA'] = { + 'nameHR' : 'Data', + 'color' : 1 , + 'isSignal' : 0, + 'isData' : 1 , + 'isBlind' : 0, + 'blind' : dict([(cut, 'full') for cut in cuts2j_sr]) +} + +legend = {} +legend['lumi'] = 'L = 59.83 fb^{-1}' + +legend['sqrt'] = '#sqrt{s} = 13 TeV' diff --git a/Hgg/samples.py b/Hgg/samples.py new file mode 100644 index 00000000..bba0aa46 --- /dev/null +++ b/Hgg/samples.py @@ -0,0 +1,278 @@ +from mkShapesRDF.lib.search_files import SearchFiles + +searchFiles = SearchFiles() +# redirector = "root://eoscms.cern.ch/" +redirector = "" + + +mcProduction = "Summer16_102X_nAODv7_Full2016v7" +dataReco = "Run2016_102X_nAODv7_Full2016v7" +mcSteps = "MCl1loose2016v7__MCCorr2016v7__l2loose__l2tightOR2016v7" +fakeSteps = "DATAl1loose2016v7__l2loose__fakeW" +dataSteps = "DATAl1loose2016v7__l2loose__l2tightOR2016v7" + +############################################## +###### Tree base directory for the site ###### +############################################## +treeBaseDir = "/eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano" +limitFiles = -1 + + +def makeMCDirectory(var=""): + _treeBaseDir = treeBaseDir + "" + if redirector != "": + _treeBaseDir = redirector + treeBaseDir + if var == "": + return "/".join([_treeBaseDir, mcProduction, mcSteps]) + else: + return "/".join([_treeBaseDir, mcProduction, mcSteps + "__" + var]) + + +mcDirectory = makeMCDirectory() +fakeDirectory = os.path.join(treeBaseDir, dataReco, fakeSteps) +dataDirectory = os.path.join(treeBaseDir, dataReco, dataSteps) + +samples = {} + + +def nanoGetSampleFiles(path, name): + _files = searchFiles.searchFiles(path, name, redirector=redirector) + if limitFiles != -1 and len(_files) > limitFiles: + return [(name, _files[:limitFiles])] + else: + return [(name, _files)] + + +def CombineBaseW(samples, proc, samplelist): + _filtFiles = list(filter(lambda k: k[0] in samplelist, samples[proc]["name"])) + _files = list(map(lambda k: k[1], _filtFiles)) + _l = list(map(lambda k: len(k), _files)) + leastFiles = _files[_l.index(min(_l))] + dfSmall = ROOT.RDataFrame("Runs", leastFiles) + s = dfSmall.Sum("genEventSumw").GetValue() + f = ROOT.TFile(leastFiles[0]) + t = f.Get("Events") + t.GetEntry(1) + xs = t.baseW * s + + __files = [] + for f in _files: + __files += f + df = ROOT.RDataFrame("Runs", __files) + s = df.Sum("genEventSumw").GetValue() + newbaseW = str(xs / s) + weight = newbaseW + "/baseW" + + for iSample in samplelist: + addSampleWeight(samples, proc, iSample, weight) + + +def addSampleWeight(samples, sampleName, sampleNameType, weight): + obj = list(filter(lambda k: k[0] == sampleNameType, samples[sampleName]["name"]))[0] + samples[sampleName]["name"] = list( + filter(lambda k: k[0] != sampleNameType, samples[sampleName]["name"]) + ) + if len(obj) > 2: + samples[sampleName]["name"].append( + (obj[0], obj[1], obj[2] + "*(" + weight + ")") + ) + else: + samples[sampleName]["name"].append((obj[0], obj[1], "(" + weight + ")")) + + +DataRun = [ + ["B", "Run2016B-02Apr2020_ver2-v1"], + ["C", "Run2016C-02Apr2020-v1"], + ["D", "Run2016D-02Apr2020-v1"], + ["E", "Run2016E-02Apr2020-v1"], + ["F", "Run2016F-02Apr2020-v1"], + ["G", "Run2016G-02Apr2020-v1"], + ["H", "Run2016H-02Apr2020-v1"], +] + +DataSets = ["MuonEG", "SingleMuon", "SingleElectron", "DoubleMuon", "DoubleEG"] + +DataTrig = { + "MuonEG": " Trigger_ElMu", + "SingleMuon": "!Trigger_ElMu && Trigger_sngMu", + "SingleElectron": "!Trigger_ElMu && !Trigger_sngMu && Trigger_sngEl", + "DoubleMuon": "!Trigger_ElMu && !Trigger_sngMu && !Trigger_sngEl && Trigger_dblMu", + "DoubleEG": "!Trigger_ElMu && !Trigger_sngMu && !Trigger_sngEl && !Trigger_dblMu && Trigger_dblEl", +} + + +mcCommonWeightNoMatch = "XSWeight*SFweight*METFilter_MC" +mcCommonWeight = "XSWeight*SFweight*PromptGenLepMatch2l*METFilter_MC" + + +###### Zjj EWK ####### + +files = nanoGetSampleFiles(mcDirectory, "EWK_LLJJ_MLL-50_MJJ-120") + +samples["Zjj"] = { + "name": files, + "weight": mcCommonWeight, + "FilesPerJob": 1, +} + + +###### DY MC ###### +dys = { + "DY_hardJets": "hardJets", + "DY_PUJets" : "PUJets", +} + + +files = nanoGetSampleFiles(mcDirectory, "DYJetsToLL_M-50_ext2") + +samples["DY"] = { + "name": files, + "weight": mcCommonWeight + + "*( !(Sum(PhotonGen_isPrompt==1 && PhotonGen_pt>15 && abs(PhotonGen_eta)<2.6) > 0)) * ewknloW", + "FilesPerJob": 5, + # "subsamples": dys, +} + +###### Top MC ###### + +files = ( + nanoGetSampleFiles(mcDirectory, "TTTo2L2Nu") + + nanoGetSampleFiles(mcDirectory, "ST_s-channel") + + nanoGetSampleFiles(mcDirectory, "ST_t-channel_antitop") + + nanoGetSampleFiles(mcDirectory, "ST_t-channel_top") + + nanoGetSampleFiles(mcDirectory, "ST_tW_antitop") + + nanoGetSampleFiles(mcDirectory, "ST_tW_top") +) + +samples["top"] = { + "name": files, + "weight": mcCommonWeight, + "FilesPerJob": 15, +} + +addSampleWeight(samples, "top", "TTTo2L2Nu", "Top_pTrw") + +###### WW ######## + +samples["WW"] = { + "name": nanoGetSampleFiles(mcDirectory, "WWJTo2L2Nu_NNLOPS"), + "weight": mcCommonWeight + "*9", + "FilesPerJob": 10, +} + +samples["ggWW"] = { + "name": nanoGetSampleFiles(mcDirectory, "GluGluWWTo2L2Nu_MCFM"), + "weight": mcCommonWeight + "*1.53/1.4", # updating k-factor + "FilesPerJob": 10, +} + +######## Vg ######## + +files = nanoGetSampleFiles(mcDirectory, "Wg_MADGRAPHMLM") + nanoGetSampleFiles( + mcDirectory, "Zg" +) + +samples["Vg"] = { + "name": files, + "weight": mcCommonWeightNoMatch + "*(!(Gen_ZGstar_mass > 0))", + "FilesPerJob": 30, +} + +######## VgS ######## + +files = ( + nanoGetSampleFiles(mcDirectory, "Wg_MADGRAPHMLM") + + nanoGetSampleFiles(mcDirectory, "Zg") + + nanoGetSampleFiles(mcDirectory, "WZTo3LNu_mllmin01") +) + +samples["VgS"] = { + "name": files, + "weight": mcCommonWeight + " * (gstarLow * 0.94 + gstarHigh * 1.14)", + "FilesPerJob": 40, + "subsamples": {"L": "gstarLow", "H": "gstarHigh"}, +} +addSampleWeight( + samples, "VgS", "Wg_MADGRAPHMLM", "(Gen_ZGstar_mass > 0 && Gen_ZGstar_mass < 0.1)" +) +addSampleWeight(samples, "VgS", "Zg", "(Gen_ZGstar_mass > 0)") +addSampleWeight(samples, "VgS", "WZTo3LNu_mllmin01", "(Gen_ZGstar_mass > 0.1)") + +############ VZ ############ + +files = ( + nanoGetSampleFiles(mcDirectory, "ZZTo2L2Nu") + + nanoGetSampleFiles(mcDirectory, "ZZTo2L2Q") + + nanoGetSampleFiles(mcDirectory, "ZZTo4L") + + nanoGetSampleFiles(mcDirectory, "WZTo2L2Q") +) + +samples["VZ"] = {"name": files, "weight": mcCommonWeight + "*1.11", "FilesPerJob": 8} + +########## VVV ######### + +files = ( + nanoGetSampleFiles(mcDirectory, "ZZZ") + + nanoGetSampleFiles(mcDirectory, "WZZ") + + nanoGetSampleFiles(mcDirectory, "WWZ") + + nanoGetSampleFiles(mcDirectory, "WWW") +) + +samples["VVV"] = {"name": files, "weight": mcCommonWeight, "FilesPerJob": 40} + +########## VBS ewk ######### + +samples["WWewk"] = { + "name": nanoGetSampleFiles(mcDirectory, "WpWmJJ_EWK_noTop_dipoleRecoil_private"), + "weight": mcCommonWeight + + "*(Sum(abs(GenPart_pdgId)==6 || GenPart_pdgId==25)==0)", # filter tops and Higgs, limit w mass + "FilesPerJob": 40, +} + +########################################### +################## FAKE ################### +########################################### + +samples["Fake"] = { + "name": [], + "weight": "METFilter_DATA*fakeW", + "weights": [], + "isData": ["all"], + "FilesPerJob": 50, +} + +for _, sd in DataRun: + for pd in DataSets: + files = nanoGetSampleFiles(fakeDirectory, pd + "_" + sd) + + samples["Fake"]["name"].extend(files) + addSampleWeight(samples, "Fake", pd + "_" + sd, DataTrig[pd]) + # samples['Fake']['weights'].extend([DataTrig[pd]] * len(files)) + +samples["Fake"]["subsamples"] = { + "e": "abs(Lepton_pdgId[1]) == 11", + "m": "abs(Lepton_pdgId[1]) == 13", +} + + +########################################### +################## DATA ################### +########################################### + +samples["DATA"] = { + "name": [], + "weight": "METFilter_DATA*LepWPCut", + "weights": [], + "isData": ["all"], + "FilesPerJob": 50, +} + +for _, sd in DataRun: + for pd in DataSets: + files = nanoGetSampleFiles(dataDirectory, pd + "_" + sd) + + samples["DATA"]["name"].extend(files) + addSampleWeight(samples, "DATA", pd + "_" + sd, DataTrig[pd]) + # samples['DATA']['weights'].extend([DataTrig[pd]] * len(files)) +# print(samples['DATA']['name']) +# diff --git a/Hgg/structure.py b/Hgg/structure.py new file mode 100644 index 00000000..2782d1b8 --- /dev/null +++ b/Hgg/structure.py @@ -0,0 +1,126 @@ +# structure configuration for datacard + +structure = {} + +# keys here must match keys in samples.py +# + +structure['Zjj'] = { + 'isSignal' : 1, + 'isData' : 0 + } + + + +for dy in dys.keys(): + structure[f'DY_{dy}'] = { + 'isSignal' : 0, + 'isData' : 0 + } + + + +structure['Fake_e'] = { + 'isSignal' : 0, + 'isData' : 0, +# 'removeFromCuts' : [ k for k in cuts if 'me' in k], + } + +structure['Fake_m'] = { + 'isSignal' : 0, + 'isData' : 0, +# 'removeFromCuts' : [ k for k in cuts if 'em' in k], + } + +structure['top'] = { + 'isSignal' : 0, + 'isData' : 0 + } + + +structure['WW'] = { + 'isSignal' : 0, + 'isData' : 0, + } + +structure['WWewk'] = { + 'isSignal' : 0, + 'isData' : 0 + } + +structure['ggWW'] = { + 'isSignal' : 0, + 'isData' : 0 + } + +structure['Wg'] = { + 'isSignal' : 0, + 'isData' : 0 + } + +structure['Vg'] = { + 'isSignal' : 0, + 'isData' : 0 + } + +structure['VgS'] = { + 'isSignal' : 0, + 'isData' : 0 + } + +structure['VgS_L'] = { + 'isSignal' : 0, + 'isData' : 0 + } + +structure['VgS_H'] = { + 'isSignal' : 0, + 'isData' : 0 + } + +structure['Zg'] = { + 'isSignal' : 0, + 'isData' : 0 + } + +structure['VZ'] = { + 'isSignal' : 0, + 'isData' : 0 + } + +structure['WZ'] = { + 'isSignal' : 0, + 'isData' : 0 + } + + +structure['VVV'] = { + 'isSignal' : 0, + 'isData' : 0 + } + +structure['ZZ'] = { + 'isSignal' : 0, + 'isData' : 0 + } + + +# data + + +structure['DATA'] = { + 'isSignal' : 0, + 'isData' : 1 + } + + +''' +print "INSTRUCTURE" +print cuts +#print nuisances['WWresum0j'] +print "OK" +for nuis in nuisances.itervalues(): + if 'cutspost' in nuis: + nuis['cuts'] = nuis['cutspost'](nuis, cuts) + print nuis +''' diff --git a/Hgg/variables.py b/Hgg/variables.py new file mode 100644 index 00000000..1de7a23a --- /dev/null +++ b/Hgg/variables.py @@ -0,0 +1,125 @@ +variables = {} + +# variables['ttree_variable'] = { +# 'tree': {'LeptonPt1': 'Lepton_pt[0]'}, +# 'cuts': ['sr'] +# } + +variables['ptj1'] = { + 'name': 'CleanJet_pt[0]', + 'range': (100, 30, 500), + 'xaxis': 'p_{T} 1st jet', + 'fold' :3 +} + +variables['ptj2'] = { + 'name': 'CleanJet_pt[1]', + 'range': (100, 30, 500), + 'xaxis': 'p_{T} 2nd jet', + 'fold' :3 +} + +variables['mjj'] = { 'name': 'mjj', # variable name + 'range' : (20, 200, 3000), # variable range + 'xaxis' : 'm_{jj} [GeV]', # x axis name + 'fold' :3 + } + +variables['mjjbins'] = { 'name': 'mjj', # variable name + 'range' : (5, 500, 4000), # variable range + 'xaxis' : 'm_{jj} [GeV]', # x axis name + 'fold' :3 + } + +variables['ptll'] = { 'name': 'ptll', + 'range' : (70, 30, 600), + 'xaxis' : 'p_{T}^{ll} [GeV]', + 'fold' : 3 + } + + +variables['ptll_few'] = { 'name': 'ptll', + #'range': ([ 30., 63, 134, 284, 450, 600. ],), + #'range': ([ 30., 63, 134, 284, 600. ],), + 'range': ([ 30., 63, 134, 600. ],), + 'xaxis' : 'p_{T}^{ll} [GeV]', + 'fold' : 3, + #'setLogx': 1 + } + +variables['ptll_few_l'] = { 'name': 'ptll', + #'range': ([ 30., 63, 134, 284, 450, 600. ],), + #'range': ([ 30., 63, 134, 284, 600. ],), + 'range': ([ 30., 40, 63, 98, 134, 367, 600. ],), + 'xaxis' : 'p_{T}^{ll} [GeV]', + 'fold' : 3, + #'setLogx': 1 + } + +variables['ptll_few_c'] = { 'name': 'ptll', + #'range': ([ 30., 63, 134, 284, 450, 600. ],), + #'range': ([ 30., 63, 134, 284, 600. ],), + 'range': ([ 63, 134, 600. ],), + 'xaxis' : 'p_{T}^{ll} [GeV]', + 'fold' : 3, + #'setLogx': 1 + } + + + + + + +variables['mll'] = { 'name': 'mll', + 'range' : (100, 66,107), + 'xaxis' : 'm_{ll} [GeV]', + 'fold' : 3 + } + + + + +variables['ptl1'] = { 'name': 'Lepton_pt[0]', + 'range' : (60,30,300), + 'xaxis' : 'p_{T} 1st lep', + 'fold' : 3 + } + +variables['ptl2'] = { 'name': 'Lepton_pt[1]', + 'range' : (60,20,300), + 'xaxis' : 'p_{T} 2nd lep', + 'fold' : 3 + } + + +variables['puppimet'] = { + 'name': 'PuppiMET_pt', + 'range' : (20,0,200), + 'xaxis' : 'puppimet [GeV]', + 'fold' : 3 + } + +variables['detajj'] = { 'name': 'newDetajj', + 'range' : (50, 0.0, 9.0), + 'xaxis' : '#Delta#eta_{jj}', + 'fold' : 3 + } + +variables['detajj_low'] = { 'name': 'newDetajj', + 'range' : (20, 0.0, 3.0), + 'xaxis' : '#Delta#eta_{jj}', + 'fold' : 3 + } + +variables['detajj_high'] = { 'name': 'newDetajj', + 'range' : (15, 3.0, 9.0), + 'xaxis' : '#Delta#eta_{jj}', + 'fold' : 3 + } + +variables['dphijj'] = { 'name': 'dphijj', + 'range' : (20, 0, 3.15), + 'xaxis' : '#Delta#phi_{jj}', + 'fold' : 3 + } + From 1e5df34788ae492b91eb5a40b3e27a5619477766 Mon Sep 17 00:00:00 2001 From: amassiro Date: Thu, 16 Oct 2025 14:37:52 +0200 Subject: [PATCH 40/44] 2018 version --- Hgg/2018UL/README.md | 78 +++++++ Hgg/2018UL/aliases.py | 419 +++++++++++++++++++++++++++++++++++ Hgg/2018UL/configuration.py | 101 +++++++++ Hgg/2018UL/cuts.py | 55 +++++ Hgg/2018UL/nuisances.py | 387 ++++++++++++++++++++++++++++++++ Hgg/2018UL/plot.py | 332 ++++++++++++++++++++++++++++ Hgg/2018UL/samples.py | 429 ++++++++++++++++++++++++++++++++++++ Hgg/2018UL/structure.py | 146 ++++++++++++ Hgg/2018UL/variables.py | 180 +++++++++++++++ 9 files changed, 2127 insertions(+) create mode 100644 Hgg/2018UL/README.md create mode 100644 Hgg/2018UL/aliases.py create mode 100644 Hgg/2018UL/configuration.py create mode 100644 Hgg/2018UL/cuts.py create mode 100644 Hgg/2018UL/nuisances.py create mode 100644 Hgg/2018UL/plot.py create mode 100644 Hgg/2018UL/samples.py create mode 100644 Hgg/2018UL/structure.py create mode 100644 Hgg/2018UL/variables.py diff --git a/Hgg/2018UL/README.md b/Hgg/2018UL/README.md new file mode 100644 index 00000000..0710b3bd --- /dev/null +++ b/Hgg/2018UL/README.md @@ -0,0 +1,78 @@ +# H > gluon gluon + +ZH production of H>gg + +### Load the mkShapesRDF environment + +Here, we assume `PlotsConfigurationsRun3` was installed in the same directory as `mkShapesRDF`. E.g., let's assume we have a `Run3` directory where we installed both `mkShapesRDF` and `PlotsConfigurationsRun3`. + +Then, we can source the `mkShapesRDF` environment using these commands: + + cd /afs/cern.ch/user/a/amassiro/work/Latinos/Framework/Hgg/Analysis/PlotsConfigurationsRun3/Hgg/2018UL + + cd ../../../mkShapesRDF/ + source start.sh + cd - + + +### Compile the configuration folder + + mkShapesRDF -c 1 + +### Run the analysis + +Produce histograms using batch: + + mkShapesRDF -o 0 -f . -b 1 + + mkShapesRDF -c 1 -o 0 -f . -b 1 + + +Check jobs status: + + mkShapesRDF -o 1 -f . + +Resubmit failed jobs: + + mkShapesRDF -o 1 -f . -r 1 + +Options meanings: +- -o: operationMode: + - 0 run analysis + - 1 check batch output and errs + - 2 merge root files +- -f: folder: it represents the path to the analysis folder +- -b: batch mode: + - 0 (default) runs on local + - 1 runs with condor +- -r: resubmit jobs: + -1 resubmit finished jobs with errors + - 2 resubmit running jobs + +### Merge rootfiles + +Once all the jobs have finished, you can merge them: + + mkShapesRDF -o 2 -f . + +### Plot distributions + + mkPlot + mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png + mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png --plotNormalizedDistributions + + +### to check kerberos + + klist + + +### make datacards + + mkDatacards --outputDirDatacard datacards + + + + + + diff --git a/Hgg/2018UL/aliases.py b/Hgg/2018UL/aliases.py new file mode 100644 index 00000000..d54d9516 --- /dev/null +++ b/Hgg/2018UL/aliases.py @@ -0,0 +1,419 @@ +import os +import copy +import inspect + +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/DY_OS_CR +#/afs/cern.ch/user/a/amassiro/work/Latinos/Framework/Hgg/Analysis/PlotsConfigurationsRun3/Hgg/2018UL +configurations = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file +configurations = os.path.dirname(configurations) # 2018UL +configurations = os.path.dirname(configurations) # Hgg +#configurations = os.path.dirname(configurations) # PlotsConfigurationsRun3 + +aliases = {} +aliases = OrderedDict() + +mc = [skey for skey in samples if skey not in ('Fake', 'DATA')] + +# +# AM: for the time being exclude the signal from the list of nuisances ... missing adequate post-processing +# +mc_special = [skey for skey in samples if skey not in ('Fake', 'DATA', 'Hgluglu')] + + +# LepCut2l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW +eleWP = 'mvaFall17V2Iso_WP90' +muWP = 'cut_Tight_HWWW' + +aliases['LepWPCut'] = { + 'expr' : 'LepCut2l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW*\ + ( ((abs(Lepton_pdgId[0])==13 && Muon_mvaTTH[Lepton_muonIdx[0]]>0.82) || (abs(Lepton_pdgId[0])==11 && Lepton_mvaTTH_UL[0]>0.90)) \ + && ((abs(Lepton_pdgId[1])==13 && Muon_mvaTTH[Lepton_muonIdx[1]]>0.82) || (abs(Lepton_pdgId[1])==11 && Lepton_mvaTTH_UL[1]>0.90)) )', + #'samples': mc + ['DATA'] + 'samples': mc_special + ['DATA'] +} + +# Lepton SF (not considering the ttHMVA discriminant) +aliases['LepWPSF'] = { + 'expr' : 'LepSF2l__ele_'+eleWP+'__mu_'+muWP, + #'samples' : mc + 'samples' : mc_special +} + +# ttHMVA SFs and uncertainties +#aliases['LepWPttHMVASF'] = { + #'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], + #'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH = ttHMVASF(\"2018\", 2, \"all\", \"nominal\");')"], + #'expr' : 'ttH(Lepton_pt, Lepton_eta, Lepton_pdgId)', + #'samples' : mc, +#} + +#aliases['LepWPttHMVASFEleUp'] = { + #'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], + #'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_EleUp = ttHMVASF(\"2018\", 2, \"all\", \"eleUp\");')"], + #'expr' : 'ttH_EleUp(Lepton_pt, Lepton_eta, Lepton_pdgId)', + #'samples' : mc, +#} +#aliases['LepWPttHMVASFEleDown'] = { + #'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], + #'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_EleDown = ttHMVASF(\"2018\", 2, \"all\", \"eleDown\");')"], + #'expr' : 'ttH_EleDown(Lepton_pt, Lepton_eta, Lepton_pdgId)', + #'samples' : mc, +#} + +#aliases['LepWPttHMVASFMuUp'] = { + #'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], + #'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_MuUp = ttHMVASF(\"2018\", 2, \"all\", \"muUp\");')"], + #'expr' : 'ttH_MuUp(Lepton_pt, Lepton_eta, Lepton_pdgId)', + #'samples' : mc, +#} +#aliases['LepWPttHMVASFMuDown'] = { + #'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], + #'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_MuDown = ttHMVASF(\"2018\", 2, \"all\", \"muDown\");')"], + #'expr' : 'ttH_MuDown(Lepton_pt, Lepton_eta, Lepton_pdgId)', + #'samples' : mc, +#} + + +# Conept +#aliases['Lepton_conept'] = { + #'expr': 'LeptonConePt(Lepton_pt, Lepton_pdgId, Lepton_electronIdx, Lepton_muonIdx, Electron_jetRelIso, Muon_jetRelIso)', + #'linesToAdd': [f'#include "{configurations}/macros/LeptonConePt_class.cc"'], + #'samples': mc + ['Fake', 'DATA', 'DATA_unprescaled'] +#} + +# Fake leptons transfer factor +#aliases['fakeW'] = { + #'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + #'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"nominal\", 2, \"std\", \"{configurations}\");')"], + #'expr' : 'fr_reader(Lepton_pdgId, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + #'samples' : ['Fake'] +#} + +## And variations - already divided by central values in formulas ! +#aliases['fakeWEleUp'] = { + #'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + #'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleUp = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"EleUp\", 2, \"std\", \"{configurations}\");')"], + #'expr' : 'fr_reader_EleUp(Lepton_pdgId, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + #'samples' : ['Fake'] +#} +#aliases['fakeWEleDown'] = { + #'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + #'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleDown = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"EleDown\", 2, \"std\", \"{configurations}\");')"], + #'expr' : 'fr_reader_EleDown(Lepton_pdgId, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + #'samples' : ['Fake'] +#} + +#aliases['fakeWMuUp'] = { + #'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + #'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuUp = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"MuUp\", 2, \"std\", \"{configurations}\");')"], + #'expr' : 'fr_reader_MuUp(Lepton_pdgId, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + #'samples' : ['Fake'] +#} +#aliases['fakeWMuDown'] = { + #'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + #'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuDown = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"MuDown\", 2, \"std\", \"{configurations}\");')"], + #'expr' : 'fr_reader_MuDown(Lepton_pdgId, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + #'samples' : ['Fake'] +#} + +#aliases['fakeWStatEleUp'] = { + #'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + #'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleUp = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"StatEleUp\", 2, \"std\", \"{configurations}\");')"], + #'expr': 'fr_reader_StatEleUp(Lepton_pdgId, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + #'samples': ['Fake'] +#} +#aliases['fakeWStatEleDown'] = { + #'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + #'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleDown = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"StatEleDown\", 2, \"std\", \"{configurations}\");')"], + #'expr' : 'fr_reader_StatEleDown(Lepton_pdgId, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + #'samples' : ['Fake'] +#} + +#aliases['fakeWStatMuUp'] = { + #'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + #'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuUp = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"StatMuUp\", 2, \"std\", \"{configurations}\");')"], + #'expr': 'fr_reader_StatMuUp(Lepton_pdgId, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + #'samples' : ['Fake'] +#} +#aliases['fakeWStatMuDown'] = { + #'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + #'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuDown = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"StatMuDown\", 2, \"std\", \"{configurations}\");')"], + #'expr' : 'fr_reader_StatMuDown(Lepton_pdgId, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + #'samples' : ['Fake'] +#} + + + +# Fake leptons transfer factor +aliases['fakeW'] = { + 'expr': 'fakeW2l_ele_'+eleWP+'_mu_'+muWP, + 'samples': ['Fake'] +} +# And variations - already divided by central values in formulas ! +aliases['fakeWEleUp'] = { + 'expr': 'fakeW2l_ele_'+eleWP+'_mu_'+muWP+'_EleUp', + 'samples': ['Fake'] +} +aliases['fakeWEleDown'] = { + 'expr': 'fakeW2l_ele_'+eleWP+'_mu_'+muWP+'_EleDown', + 'samples': ['Fake'] +} +aliases['fakeWMuUp'] = { + 'expr': 'fakeW2l_ele_'+eleWP+'_mu_'+muWP+'_MuUp', + 'samples': ['Fake'] +} +aliases['fakeWMuDown'] = { + 'expr': 'fakeW2l_ele_'+eleWP+'_mu_'+muWP+'_MuDown', + 'samples': ['Fake'] +} +aliases['fakeWStatEleUp'] = { + 'expr': 'fakeW2l_ele_'+eleWP+'_mu_'+muWP+'_statEleUp', + 'samples': ['Fake'] +} +aliases['fakeWStatEleDown'] = { + 'expr': 'fakeW2l_ele_'+eleWP+'_mu_'+muWP+'_statEleDown', + 'samples': ['Fake'] +} +aliases['fakeWStatMuUp'] = { + 'expr': 'fakeW2l_ele_'+eleWP+'_mu_'+muWP+'_statMuUp', + 'samples': ['Fake'] +} +aliases['fakeWStatMuDown'] = { + 'expr': 'fakeW2l_ele_'+eleWP+'_mu_'+muWP+'_statMuDown', + 'samples': ['Fake'] +} + + + + +# Charge-flip efficiencies and uncertainties +#aliases['ttHMVA_eff_flip_2l'] = { + #'linesToAdd' : [f'#include "{configurations}/macros/flipper_eff_class.cc"'], + #'linesToProcess' : ["ROOT.gInterpreter.Declare('flipper_eff flipper = flipper_eff(\"UL_2018\", 2, \"Total_SF\", \"false\");')"], + #'expr' : 'flipper(Lepton_pt, Lepton_eta, Lepton_pdgId)', + #'samples' : mc + ['DATA','Fake'], +#} + +#aliases['ttHMVA_eff_err_flip_2l'] = { + #'linesToAdd' : [f'#include "{configurations}/macros/flipper_eff_class.cc"'], + #'linesToProcess' : ["ROOT.gInterpreter.Declare('flipper_eff flipper_unc = flipper_eff(\"UL_2018\", 2, \"Total_SF\", \"false\");')"], + #'expr' : 'flipper_unc(Lepton_pt, Lepton_eta, Lepton_pdgId)', + #'samples' : mc + ['DATA','Fake'], +#} + + +# No jet with pt > 30 GeV +aliases['zeroJet'] = { + 'expr': 'Alt(CleanJet_pt, 0, 0) < 30.' +} + +aliases['oneJet'] = { + 'expr': 'Alt(CleanJet_pt, 0, 0) > 30. && Alt(CleanJet_pt, 1, 0) < 30.' +} + +aliases['multiJet'] = { + 'expr': 'Alt(CleanJet_pt, 1, 0) > 30.' +} + +#################################################################################### +# b tagging WPs: https://twiki.cern.ch/twiki/bin/view/CMS/BtagRecommendation106XUL18 +#################################################################################### + +# DeepB = DeepCSV +bWP_loose_deepB = '0.1208' +bWP_medium_deepB = '0.4168' +bWP_tight_deepB = '0.7665' + +# DeepFlavB = DeepJet +bWP_loose_deepFlavB = '0.0490' +bWP_medium_deepFlavB = '0.2783' +bWP_tight_deepFlavB = '0.7100' + +# Actual algo and WP definition. BE CONSISTENT!! +bAlgo = 'DeepB' # ['DeepB', 'DeepFlavB' ] +bWP = bWP_medium_deepB # [bWP_loose_deepB, bWP_loose_deepFlavB] +bSF = 'deepcsv' # ['deepcsv', 'deepjet' ] + +# b veto +aliases['bVeto'] = { + 'expr': 'Sum(CleanJet_pt > 20. && abs(CleanJet_eta) < 2.5 && Take(Jet_btag{}, CleanJet_jetIdx) > {}) == 0'.format(bAlgo, bWP) +} + +aliases['bVetoSF'] = { + 'expr': 'TMath::Exp(Sum(LogVec((CleanJet_pt>20 && abs(CleanJet_eta)<2.5)*Take(Jet_btagSF_{}_shape, CleanJet_jetIdx)+1*(CleanJet_pt<20 || abs(CleanJet_eta)>2.5))))'.format(bSF), + #'samples': mc + 'samples' : mc_special +} + +# At least one b-tagged jet +aliases['bReq'] = { + 'expr': 'Sum(CleanJet_pt > 30. && abs(CleanJet_eta) < 2.5 && Take(Jet_btag{}, CleanJet_jetIdx) > {}) >= 1'.format(bAlgo, bWP) +} + +aliases['bReqSF'] = { + 'expr': 'TMath::Exp(Sum(LogVec((CleanJet_pt>30 && abs(CleanJet_eta)<2.5)*Take(Jet_btagSF_{}_shape, CleanJet_jetIdx)+1*(CleanJet_pt<30 || abs(CleanJet_eta)>2.5))))'.format(bSF), + #'samples': mc + 'samples' : mc_special +} + +# Top control region +aliases['topcr'] = { + 'expr': 'mtw2>30 && mll>50 && ((zeroJet && !bVeto) || bReq)' +} + +# WW control region +aliases['wwcr'] = { + 'expr': 'mth>60 && mtw2>30 && mll>100 && bVeto' +} + +# Overall b tag SF +aliases['btagSF'] = { + 'expr': '(bVeto || (topcr && zeroJet))*bVetoSF + (topcr && !zeroJet)*bReqSF', + #'samples': mc + 'samples' : mc_special +} + +for shift in ['jesAbsolute', 'jesAbsolute_2018', 'jesBBEC1', 'jesBBEC1_2018', 'jesEC2', + 'jesEC2_2018', 'jesFlavorQCD', 'jesHF', 'jesHF_2018', 'jesRelativeBal', + 'jesRelativeSample_2018']: + for var in ['up','down']: + aliases[f'Jet_btagSF_{bSF}_shape_{shift.replace("jes","JES")}{var[:2]}'] = { + 'expr' : f'Jet_btagSF_{bSF}_shape_{var}_{shift}', + #'samples' : mc + 'samples' : mc_special + } + +for shift in ['jesAbsolute', 'jesAbsolute_2018', 'jesBBEC1', 'jesBBEC1_2018', 'jesEC2', + 'jesEC2_2018', 'jesFlavorQCD', 'jesHF', 'jesHF_2018', 'jesRelativeBal', + 'jesRelativeSample_2018', 'lf', 'hf', 'lfstats1', 'lfstats2', + 'hfstats1', 'hfstats2', 'cferr1', 'cferr2']: + + for targ in ['bVeto', 'bReq']: + alias = aliases['%sSF%sup' % (targ, shift)] = copy.deepcopy(aliases['%sSF' % targ]) + alias['expr'] = alias['expr'].replace('btagSF_{}_shape'.format(bSF), 'btagSF_{}_shape_up_{}'.format(bSF, shift)) + + alias = aliases['%sSF%sdown' % (targ, shift)] = copy.deepcopy(aliases['%sSF' % targ]) + alias['expr'] = alias['expr'].replace('btagSF_{}_shape'.format(bSF), 'btagSF_{}_shape_down_{}'.format(bSF, shift)) + + aliases['btagSF%sup' % shift] = { + 'expr': aliases['btagSF']['expr'].replace('SF', 'SF' + shift + 'up'), + #'samples': mc + 'samples' : mc_special + } + + aliases['btagSF%sdown' % shift] = { + 'expr': aliases['btagSF']['expr'].replace('SF', 'SF' + shift + 'down'), + #'samples': mc + 'samples' : mc_special + } + +#################################################################################### +# End of b tagging pippone +#################################################################################### + +# Need to redefine PUID scale factors, so that they are double and not vectors +aliases['Jet_PUIDSF'] = { + 'expr' : 'TMath::Exp(Sum((Jet_jetId>=2)*LogVec(Jet_PUIDSF_loose)))', + #'samples': mc + 'samples' : mc_special +} + +aliases['Jet_PUIDSF_up'] = { + 'expr' : 'TMath::Exp(Sum((Jet_jetId>=2)*LogVec(Jet_PUIDSF_loose_up)))', + #'samples': mc + 'samples' : mc_special +} + +aliases['Jet_PUIDSF_down'] = { + 'expr' : 'TMath::Exp(Sum((Jet_jetId>=2)*LogVec(Jet_PUIDSF_loose_down)))', + #'samples': mc + 'samples' : mc_special +} + + +aliases['gstarLow'] = { + 'expr': 'Gen_ZGstar_mass > 0 && Gen_ZGstar_mass < 4', + 'samples': 'VgS' +} + +aliases['gstarHigh'] = { + 'expr': 'Gen_ZGstar_mass < 0 || Gen_ZGstar_mass > 4', + 'samples': 'WZ' +} + +# gen-matching to prompt only (GenLepMatch2l matches to *any* gen lepton) +aliases['PromptGenLepMatch2l'] = { + 'expr': 'Alt(Lepton_promptgenmatched, 0, 0) * Alt(Lepton_promptgenmatched, 1, 0)', + #'samples': mc + 'samples' : mc_special +} + +# # PostProcessing did not create (anti)topGenPt for ST samples with _ext1 +# lastcopy = (1 << 13) + +aliases['Top_pTrw'] = { + 'expr': '(topGenPt * antitopGenPt > 0.) * (TMath::Sqrt(TMath::Exp(0.0615 - 0.0005 * topGenPt) * TMath::Exp(0.0615 - 0.0005 * antitopGenPt))) + (topGenPt * antitopGenPt <= 0.)', + 'samples': ['top'] +} + +# data/MC scale factors +aliases['SFweight'] = { + #'expr': ' * '.join(['SFweight2l', 'LepWPCut', 'LepWPSF','Jet_PUIDSF', 'btagSF', 'LepWPttHMVASF']), + 'expr': ' * '.join(['SFweight2l', 'LepWPCut', 'LepWPSF','Jet_PUIDSF', 'btagSF']), + #'samples': mc + 'samples' : mc_special +} + +# variations +aliases['SFweightEleUp'] = { + 'expr': 'LepSF2l__ele_'+eleWP+'__Up', + #'samples': mc + 'samples' : mc_special +} +aliases['SFweightEleDown'] = { + 'expr': 'LepSF2l__ele_'+eleWP+'__Do', + #'samples': mc + 'samples' : mc_special +} + +aliases['SFweightMuUp'] = { + 'expr': 'LepSF2l__mu_'+muWP+'__Up', + #'samples': mc + 'samples' : mc_special +} +aliases['SFweightMuDown'] = { + 'expr': 'LepSF2l__mu_'+muWP+'__Do', + #'samples': mc + 'samples' : mc_special +} + +# TriggerSFWeight_2l:TriggerSFWeight_2l_u:TriggerSFWeight_2l_d +aliases['SFtriggUp'] = { + 'expr': 'TriggerSFWeight_2l_u/TriggerSFWeight_2l', + #'samples': mc + 'samples' : mc_special +} +aliases['SFtriggDown'] = { + 'expr': 'TriggerSFWeight_2l_d/TriggerSFWeight_2l', + #'samples': mc + 'samples' : mc_special +} + +# Veto events in the problematic region: +# electrons or jets in: +# (-1.57 < phi < -0.87) , (-2.5 < eta < -1.3) +aliases['hole_veto'] = { + 'expr': '( ( (Lepton_eta[0] < -1.3 && Lepton_eta[0] > -2.5 ) && (Lepton_phi[0] > -1.57 && Lepton_phi[0] < -0.87) && (abs(Lepton_pdgId[0])==11) ) \ + || ( (Lepton_eta[1] < -1.3 && Lepton_eta[1] > -2.5 ) && (Lepton_phi[1] > -1.57 && Lepton_phi[1] < -0.87) && (abs(Lepton_pdgId[1])==11) ) \ + || ( (Alt(CleanJet_eta, 0, 99) < -1.3 && (Alt(CleanJet_eta, 0, -99) > -2.5)) && (Alt(CleanJet_phi, 0, -99) > -1.57 && Alt(CleanJet_phi, 0, 99) < -0.87) ) \ + || ( (Alt(CleanJet_eta, 1, 99) < -1.3 && (Alt(CleanJet_eta, 1, -99) > -2.5)) && (Alt(CleanJet_phi, 1, -99) > -1.57 && Alt(CleanJet_phi, 1, 99) < -0.87) ) \ + ) ', +} + +# Evaluate BDT discriminant +#aliases['BDT_WHSS_TopSemileptonic_v9'] = { + #'linesToAdd' : ['#include "%s/macros/BDT_WHSS_TopSemileptonic_v9_class.cc"' % configurations], + #'linesToProcess' : ["ROOT.gInterpreter.Declare('BDT_WHSS_TopSemileptonic_v9 BDT_WHSS = BDT_WHSS_TopSemileptonic_v9(\"BDTG_6\",\"{0}/data/BDT/2018/WHSS/weights/TMVAClassification_BDTG_6.weights.xml\");')".format(configurations)], + #'expr' : 'BDT_WHSS(mll,mjj,mtw1,mtw2,ptll,mlljj20_whss,PuppiMET_pt,dphill,dphijj,dphillmet,dphilmet2,dphijet1met,CleanJet_pt,Jet_btagDeepB,CleanJet_jetIdx)', + #'samples' : mc + ['DATA','Fake'], +#} diff --git a/Hgg/2018UL/configuration.py b/Hgg/2018UL/configuration.py new file mode 100644 index 00000000..63a94e9e --- /dev/null +++ b/Hgg/2018UL/configuration.py @@ -0,0 +1,101 @@ +# Configuration file for charge asymmetry WHSS analysis using the UL 2018 dataset + +import sys,inspect + +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' + +# Tag used to identify the configuration folder version +tag = 'WHSS_OSCR_2018_v9_chargeAsymmetry_Mu82_EleUL90' + +# File to use as runner script, default uses mkShapesRDF.shapeAnalysis.runner, otherwise specify path to script +runnerFile = "default" + +# Output file name +outputFile = "mkShapes__{}.root".format(tag) + + +# Path to ouput folder +outputFolder = "rootFiles" +# Path to ouput folder +#outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +#if site == 'kit': + #outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" + +# Path to batch folder (used for condor submission) +batchFolder = "condor" + +# Path to configuration folder (will contain all the compiled configuration files) +configsFolder = "configs" + +# Luminosity to normalize to (in 1/fb) +# https://github.com/latinos/LatinoAnalysis/blob/UL_production/NanoGardener/python/data/TrigMaker_cfg.py#L868 (874) +# 59.832475339 +lumi = 59.83 + +# File with dict of aliases to define +aliasesFile = "aliases.py" + +# File with dict of variables +variablesFile = "variables.py" + +# File with dict of cuts +cutsFile = "cuts.py" + +# File with dict of samples +samplesFile = "samples.py" + +# File with dict of samples for plotting +plotFile = 'plot.py' + +# File with dict of structure (used to define processes in combine) +structureFile = "structure.py" + +# Nuisances file for mkDatacards and for mkShape +nuisancesFile = "nuisances.py" + +# Path to folder where to save plots +plotPath = 'plots_' + tag + +# This lines are executed right before the runner on the condor node +mountEOS = [] + +# List of imports to import when compiling the whole configuration folder, it should not contain imports used by configuration.py +imports = ["os", "glob", ("collections", "OrderedDict"), "ROOT"] + +# List of files to compile +filesToExec = [ + samplesFile, + aliasesFile, + variablesFile, + cutsFile, + plotFile, + nuisancesFile, + structureFile, +] + +# List of variables to keep in the compiled configuration folder +varsToKeep = [ + "batchVars", + "outputFolder", + "batchFolder", + "configsFolder", + "outputFile", + "runnerFile", + "tag", + "samples", + "aliases", + "variables", + ("cuts", {"cuts": "cuts", "preselections": "preselections"}), + ("plot", {"plot": "plot", "groupPlot": "groupPlot", "legend": "legend"}), + "nuisances", + "structure", + "lumi", +] + +# List of variables to keep in the batch submission script (script.py) +batchVars = varsToKeep[varsToKeep.index("samples") :] + +varsToKeep += ['plotPath'] diff --git a/Hgg/2018UL/cuts.py b/Hgg/2018UL/cuts.py new file mode 100644 index 00000000..899dc629 --- /dev/null +++ b/Hgg/2018UL/cuts.py @@ -0,0 +1,55 @@ +# cuts + +cuts = {} + +preselections = 'mll>12 \ + && Lepton_pt[0]>25 \ + && Lepton_pt[1]>10 \ + && (abs(Lepton_pdgId[1])==13 || Lepton_pt[1]>13) \ + && abs(Lepton_eta[0])<2.5 && abs(Lepton_eta[1])<2.5 \ + && bVeto \ + ' + + #&& bVeto \ + #&& PuppiMET_pt > 30 \ + #&& !hole_veto \ + + +## Same-sign control region in the 0 jet bin: used in the WH3l category. Considering different flavor to avoid DY +#cuts['wh3l_13TeV_OS_CR'] = { + #'expr' : 'Alt(Lepton_pt,2,0) < 15 && abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 11*13 && Alt(CleanJet_pt,0,0) < 30', + #'categories' : { + #'pt2ge20' : 'Lepton_pdgId[0]*Lepton_pdgId[1]<0', + #} +#} + + + +cuts['DY'] = { + 'expr' : 'Alt(Lepton_pt,2,0) < 15 && (abs(Lepton_pdgId[0])==abs(Lepton_pdgId[1]))', + 'categories' : { + '0j' : 'Alt(CleanJet_pt,0,0) < 30', + '1j' : 'Alt(CleanJet_pt,1,0) < 30 && Alt(CleanJet_pt,0,0) > 30', + '2j' : 'Alt(CleanJet_pt,2,0) < 30 && Alt(CleanJet_pt,1,0) > 30', + } +} + + + +cuts['Sig'] = { + 'expr' : 'Alt(Lepton_pt,2,0) < 15 && (abs(Lepton_pdgId[0])==abs(Lepton_pdgId[1])) && Alt(CleanJet_pt,2,0) < 30 && Alt(CleanJet_pt,1,0) > 30', + 'categories' : { + 'mllZ' : 'mll>60 && mll< 120', + 'mllZpt1' : 'mll>80 && mll< 100 && Lepton_pt[0]>40', + 'mllZpt1qgl' : 'mll>80 && mll< 100 && Lepton_pt[0]>40 && Alt(Jet_qgl,CleanJet_jetIdx[0],2)<0.5 && Alt(Jet_qgl,CleanJet_jetIdx[1],2)<0.5', + 'mllZpt1qglmet' : 'mll>80 && mll< 100 && Lepton_pt[0]>40 && Alt(Jet_qgl,CleanJet_jetIdx[0],2)<0.5 && Alt(Jet_qgl,CleanJet_jetIdx[1],2)<0.5 && PuppiMET_pt<60', + 'mllZpt1qglmetbVeto' : 'mll>80 && mll< 100 && Lepton_pt[0]>40 && Alt(Jet_qgl,CleanJet_jetIdx[0],2)<0.5 && Alt(Jet_qgl,CleanJet_jetIdx[1],2)<0.5 && PuppiMET_pt<60 && bVeto', + 'opt1' : 'mll>80 && mll< 100 && Lepton_pt[0]>40 && Alt(Jet_qgl,CleanJet_jetIdx[0],2)<0.5 && Alt(Jet_qgl,CleanJet_jetIdx[1],2)<0.5 && PuppiMET_pt<60 && bVeto && detajj<3', + 'opt2' : 'mll>80 && mll< 100 && Lepton_pt[0]>40 && Alt(Jet_qgl,CleanJet_jetIdx[0],2)<0.5 && Alt(Jet_qgl,CleanJet_jetIdx[1],2)<0.5 && PuppiMET_pt<60 && bVeto && detajj<3 && mjj<160 && mjj>60 && dphilljetjet>1', + 'opt3' : 'mll>80 && mll< 100 && Lepton_pt[0]>40 && Alt(Jet_qgl,CleanJet_jetIdx[0],2)<0.5 && Alt(Jet_qgl,CleanJet_jetIdx[1],2)<0.5 && PuppiMET_pt<60 && bVeto && detajj<3 && mjj<160 && mjj>60 && dphilljetjet>1 && Alt(Jet_btagDeepB,CleanJet_jetIdx[0],2)<0.2 && Alt(Jet_btagDeepB,CleanJet_jetIdx[1],2) < 0.2 && Alt(Jet_btagCSVV2,CleanJet_jetIdx[0],2)<0.7 && Alt(Jet_btagCSVV2,CleanJet_jetIdx[1],2)<0.7', + 'opt4' : 'mll>80 && mll< 100 && Lepton_pt[0]>40 && Alt(Jet_qgl,CleanJet_jetIdx[0],2)<0.5 && Alt(Jet_qgl,CleanJet_jetIdx[1],2)<0.5 && PuppiMET_pt<60 && bVeto && detajj<2 && mjj<150 && mjj>60 && dphilljetjet>1 && Alt(Jet_btagDeepB,CleanJet_jetIdx[0],2)<0.2 && Alt(Jet_btagDeepB,CleanJet_jetIdx[1],2) < 0.2 && Alt(Jet_btagCSVV2,CleanJet_jetIdx[0],2)<0.7 && Alt(Jet_btagCSVV2,CleanJet_jetIdx[1],2)<0.7 && ptll>20 && Alt(CleanJet_pt,0,0) > 50', + + + } +} + diff --git a/Hgg/2018UL/nuisances.py b/Hgg/2018UL/nuisances.py new file mode 100644 index 00000000..cf268c5b --- /dev/null +++ b/Hgg/2018UL/nuisances.py @@ -0,0 +1,387 @@ +import sys + +# Enable reading YR for Higgs XS and uncertainties +sys.path.append('../macros/') +#import HiggsXSection +#HiggsXS = HiggsXSection.HiggsXSection() + +nuisances = {} + +mcProduction = 'Summer20UL18_106x_nAODv9_Full2018v9' +dataReco = 'Run2018_UL2018_nAODv9_Full2018v9' +mcSteps = 'MCl1loose2018v9__MCCorr2018v9NoJERInHorn__l2tightOR2018v9' +fakeSteps = 'DATAl1loose2018v9__l2loose__fakeW' +dataSteps = 'DATAl1loose2018v9__l2loose__l2tightOR2018v9' + +treeBaseDir = '/eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano' +limitFiles = -1 + +# +# AM: for the time being exclude the signal from the list of nuisances ... missing adequate post-processing +# +mc = [skey for skey in samples if skey not in ('Fake', 'DATA', 'Hgluglu')] + +redirector = "" + +useXROOTD = False + +def makeMCDirectory(var=''): + if var== '': + print(os.path.join(treeBaseDir, mcProduction, mcSteps)) + return os.path.join(treeBaseDir, mcProduction, mcSteps) + else: + print(os.path.join(treeBaseDir, mcProduction, mcSteps + '__' + var)) + return os.path.join(treeBaseDir, mcProduction, mcSteps + '__' + var) + +mcDirectory = makeMCDirectory() +fakeDirectory = os.path.join(treeBaseDir, dataReco, fakeSteps) +dataDirectory = os.path.join(treeBaseDir, dataReco, dataSteps) + +################################ EXPERIMENTAL UNCERTAINTIES ################################# + +#### Luminosity + +# https://twiki.cern.ch/twiki/bin/view/CMS/LumiRecommendationsRun2#LumiComb +# Uncorrelated 2016 1.0 +# Uncorrelated 2017 2.0 +# Uncorrelated 2018 1.5 +# Correlated 2016, 2017, 2018 0.6, 0.9, 2.0 +# Correlated 2017, 2018 0.6, 0.2 + +nuisances['lumi_Uncorrelated'] = { + 'name' : 'lumi_13TeV_2018', + 'type' : 'lnN', + 'samples' : dict((skey, '1.015') for skey in mc if skey not in ['WZ']) +} + +nuisances['lumi_Correlated_Run2'] = { + 'name' : 'lumi_13TeV_correlated', + 'type' : 'lnN', + 'samples' : dict((skey, '1.020') for skey in mc if skey not in ['WZ']) +} + +nuisances['lumi_Correlated_2017_2018'] = { + 'name' : 'lumi_13TeV_1718', + 'type' : 'lnN', + 'samples' : dict((skey, '1.002') for skey in mc if skey not in ['WZ']) +} + + +#### FAKES +#fake_syst_endcap = ['1.0*(abs(Lepton_eta[1])<=1.4) + 1.3*(abs(Lepton_eta[1])>1.4)', + #'1.0*(abs(Lepton_eta[1])<=1.4) + 1.0/1.3*(abs(Lepton_eta[1])>1.4)'] + +#fake_syst_barrel = [' 1.3*(abs(Lepton_eta[1])<=1.4) + 1.0*(abs(Lepton_eta[1])>1.4)', + #'1.0/1.3*(abs(Lepton_eta[1])<=1.4) + 1.0*(abs(Lepton_eta[1])>1.4)'] + +#nuisances['fake_syst_mm_barrel'] = { + #'name' : 'CMS_WH_hww_fake_syst_mm_barrel', + #'kind' : 'weight', + #'type' : 'shape', + #'samples' : { + #'Fake_mm' : fake_syst_barrel, + #}, + #'cuts' : [cut for cut in cuts if ('_mm_' in cut)] +#} +#nuisances['fake_syst_mm_endcap'] = { + #'name' : 'CMS_WH_hww_fake_syst_mm_endcap', + #'kind' : 'weight', + #'type' : 'shape', + #'samples' : { + #'Fake_mm' : fake_syst_endcap, + #}, + #'cuts' : [cut for cut in cuts if ('_mm_' in cut)] +#} + +#nuisances['fake_syst_em_barrel'] = { + #'name' : 'CMS_WH_hww_fake_syst_em_barrel', + #'kind' : 'weight', + #'type' : 'shape', + #'samples' : { + #'Fake_em' : fake_syst_barrel, + #}, + #'cuts' : [cut for cut in cuts if ('_em_' in cut)] +#} +#nuisances['fake_syst_em_endcap'] = { + #'name' : 'CMS_WH_hww_fake_syst_em_endcap', + #'kind' : 'weight', + #'type' : 'shape', + #'samples' : { + #'Fake_em' : fake_syst_endcap, + #}, + #'cuts' : [cut for cut in cuts if ('_em_' in cut)] +#} + +#nuisances['fake_syst_ee_barrel'] = { + #'name' : 'CMS_WH_hww_fake_syst_ee_barrel', + #'kind' : 'weight', + #'type' : 'shape', + #'samples' : { + #'Fake_ee' : fake_syst_barrel, + #}, + #'cuts' : [cut for cut in cuts if ('_ee_' in cut)] +#} +#nuisances['fake_syst_ee_endcap'] = { + #'name' : 'CMS_WH_hww_fake_syst_ee_endcap', + #'kind' : 'weight', + #'type' : 'shape', + #'samples' : { + #'Fake_ee' : fake_syst_endcap, + #}, + #'cuts' : [cut for cut in cuts if ('_ee_' in cut)] +#} + +#nuisances['fake_ele'] = { + #'name' : 'CMS_WH_hww_fake_e_2018', + #'kind' : 'weight', + #'type' : 'shape', + #'samples' : { + #'Fake_ee' : ['fakeWEleUp', 'fakeWEleDown'], + #'Fake_em' : ['fakeWEleUp', 'fakeWEleDown'], + #} +#} +#nuisances['fake_ele_stat'] = { + #'name' : 'CMS_WH_hww_fake_stat_e_2018', + #'kind' : 'weight', + #'type' : 'shape', + #'samples' : { + #'Fake_ee' : ['fakeWStatEleUp', 'fakeWStatEleDown'], + #'Fake_em' : ['fakeWStatEleUp', 'fakeWStatEleDown'], + #} +#} +#nuisances['fake_mu'] = { + #'name' : 'CMS_WH_hww_fake_m_2018', + #'kind' : 'weight', + #'type' : 'shape', + #'samples' : { + #'Fake_mm' : ['fakeWMuUp', 'fakeWMuDown'], + #'Fake_em' : ['fakeWMuUp', 'fakeWMuDown'], + #} +#} +#nuisances['fake_mu_stat'] = { + #'name' : 'CMS_WH_hww_fake_stat_m_2018', + #'kind' : 'weight', + #'type' : 'shape', + #'samples' : { + #'Fake_mm' : ['fakeWStatMuUp', 'fakeWStatMuDown'], + #'Fake_em' : ['fakeWStatMuUp', 'fakeWStatMuDown'], + #} +#} + +###### B-tagger + +for shift in ['lf', 'hf', 'hfstats1', 'hfstats2', 'lfstats1', 'lfstats2', 'cferr1', 'cferr2']: + btag_syst = ['(btagSF%sup)/(btagSF)' % shift, '(btagSF%sdown)/(btagSF)' % shift] + + name = 'CMS_btag_%s' % shift + if 'stats' in shift: + name += '_2018' + + nuisances['btag_shape_%s' % shift] = { + 'name' : name, + 'kind' : 'weight', + 'type' : 'shape', + 'samples' : dict((skey, btag_syst) for skey in mc), + } + +##### Trigger Scale Factors + +trig_syst = ['TriggerSFWeight_2l_u/TriggerSFWeight_2l', 'TriggerSFWeight_2l_d/TriggerSFWeight_2l'] + +nuisances['trigg'] = { + 'name' : 'CMS_eff_hwwtrigger_2018', + 'kind' : 'weight', + 'type' : 'shape', + 'samples' : dict((skey, trig_syst) for skey in mc) +} + +##### Electron Efficiency and energy scale + +nuisances['eff_e'] = { + 'name' : 'CMS_eff_e_2018', + 'kind' : 'weight', + 'type' : 'shape', + 'samples' : dict((skey, ['SFweightEleUp', 'SFweightEleDown']) for skey in mc) +} + +#nuisances['eff_ttHMVA_e'] = { + #'name' : 'CMS_eff_ttHMVA_e_2018', + #'kind' : 'weight', + #'type' : 'shape', + #'samples' : dict((skey, ['LepWPttHMVASFEleUp', 'LepWPttHMVASFEleDown']) for skey in mc) +#} + +nuisances['electronpt'] = { + 'name' : 'CMS_scale_e_2018', + 'kind' : 'suffix', + 'type' : 'shape', + 'mapUp' : 'ElepTup', + 'mapDown' : 'ElepTdo', + 'samples' : dict((skey, ['1', '1']) for skey in mc), + 'folderUp' : makeMCDirectory('ElepTup_suffix'), + 'folderDown' : makeMCDirectory('ElepTdo_suffix'), + 'AsLnN' : '0' +} + +##### Muon Efficiency and energy scale + +nuisances['eff_m'] = { + 'name' : 'CMS_eff_m_2018', + 'kind' : 'weight', + 'type' : 'shape', + 'samples' : dict((skey, ['SFweightMuUp', 'SFweightMuDown']) for skey in mc) +} + +#nuisances['eff_ttHMVA_m'] = { + #'name' : 'CMS_eff_ttHMVA_m_2018', + #'kind' : 'weight', + #'type' : 'shape', + #'samples' : dict((skey, ['LepWPttHMVASFMuUp', 'LepWPttHMVASFMuDown']) for skey in mc) +#} + +nuisances['muonpt'] = { + 'name' : 'CMS_scale_m_2018', + 'kind' : 'suffix', + 'type' : 'shape', + 'mapUp' : 'MupTup', + 'mapDown' : 'MupTdo', + 'samples' : dict((skey, ['1', '1']) for skey in mc), + 'folderUp' : makeMCDirectory('MupTup_suffix'), + 'folderDown' : makeMCDirectory('MupTdo_suffix'), + 'AsLnN' : '0' +} + +##### Jet energy scale +jes_systs = ['JESAbsolute','JESAbsolute_2018','JESBBEC1','JESBBEC1_2018','JESEC2','JESEC2_2018','JESFlavorQCD','JESHF','JESHF_2018','JESRelativeBal','JESRelativeSample_2018'] + +for js in jes_systs: + + nuisances[js] = { + 'name' : 'CMS_scale_' + js.replace("JES","j_"), + 'kind' : 'suffix', + 'type' : 'shape', + 'mapUp' : js + 'up', + 'mapDown' : js + 'do', + 'samples' : dict((skey, ['1', '1']) for skey in mc), + 'folderUp' : makeMCDirectory('RDF__JESup_suffix'), + 'folderDown': makeMCDirectory('RDF__JESdo_suffix'), + 'reweight' : ['btagSF'+js.replace('JES','jes')+'up/btagSF','btagSF'+js.replace('JES','jes')+'down/btagSF'], + 'AsLnN' : '0' + } + +##### Jet energy resolution +nuisances['JER'] = { + 'name' : 'CMS_res_j_2018', + 'kind' : 'suffix', + 'type' : 'shape', + 'mapUp' : 'JERup', + 'mapDown' : 'JERdo', + 'samples' : dict((skey, ['1', '1']) for skey in mc), + 'folderUp' : makeMCDirectory('JERup_suffix'), + 'folderDown': makeMCDirectory('JERdo_suffix'), + 'AsLnN' : '0' +} + +##### MET unclustered energy + +#nuisances['met'] = { + #'name' : 'CMS_scale_met_2018', + #'kind' : 'suffix', + #'type' : 'shape', + #'mapUp' : 'METup', + #'mapDown' : 'METdo', + #'samples' : dict((skey, ['1', '1']) for skey in mc), + #'folderUp' : makeMCDirectory('METup_suffix'), + #'folderDown': makeMCDirectory('METdo_suffix'), + #'AsLnN' : '0' +#} + + +##### Pileup + +# puWeight_UL2018 +nuisances['PU'] = { + 'name' : 'CMS_pileup_2018', + 'kind' : 'weight', + 'type' : 'shape', + 'samples' : { + 'DY' : ['0.998687*(puWeightUp/puWeight)', '1.001976*(puWeightDown/puWeight)'], + 'top' : ['1.002595*(puWeightUp/puWeight)', '0.997470*(puWeightDown/puWeight)'], + 'WW' : ['1.004449*(puWeightUp/puWeight)', '0.995660*(puWeightDown/puWeight)'], + 'WWewk' : ['1.002122*(puWeightUp/puWeight)', '0.998087*(puWeightDown/puWeight)'], + 'ggWW' : ['1.004870*(puWeightUp/puWeight)', '0.995315*(puWeightDown/puWeight)'], + 'WZ' : ['0.999330*(puWeightUp/puWeight)', '1.000992*(puWeightDown/puWeight)'], + 'ZZ' : ['0.999469*(puWeightUp/puWeight)', '1.000751*(puWeightDown/puWeight)'], + 'VVV' : ['1.003485*(puWeightUp/puWeight)', '0.997561*(puWeightDown/puWeight)'], + 'ggH_hww' : ['1.003677*(puWeightUp/puWeight)', '0.995996*(puWeightDown/puWeight)'], + 'qqH_hww' : ['1.003747*(puWeightUp/puWeight)', '0.995878*(puWeightDown/puWeight)'], + }, + 'AsLnN' : '0', +} + +### PU ID SF uncertainty + +puid_syst = ['Jet_PUIDSF_up/Jet_PUIDSF', 'Jet_PUIDSF_down/Jet_PUIDSF'] + +nuisances['jetPUID'] = { + 'name' : 'CMS_eff_j_PUJET_id_2018', + 'kind' : 'weight', + 'type' : 'shape', + 'samples' : dict((skey, puid_syst) for skey in mc) +} + +### PS and UE + +nuisances['PS_ISR'] = { + 'name' : 'PS_WH_hww_ISR', + 'kind' : 'weight', + 'type' : 'shape', + 'samples' : dict((skey, ['PSWeight[2]', 'PSWeight[0]']) for skey in mc), + 'AsLnN' : '0', +} + +nuisances['PS_FSR'] = { + 'name' : 'PS_WH_hww_FSR', + 'kind' : 'weight', + 'type' : 'shape', + 'samples' : dict((skey, ['PSWeight[3]', 'PSWeight[1]']) for skey in mc), + 'AsLnN' : '0', +} + +nuisances['UE_CP5'] = { + 'name' : 'CMS_WH_hww_UE', + 'skipCMS' : 1, + 'type' : 'lnN', + 'samples' : dict((skey, '1.015') for skey in mc), +} + +# Charge flip efficiency +#nuisances['chargeFlipEff'] = { + #'name' : 'CMS_whss_chargeFlipEff_2018', + #'kind' : 'weight', + #'type' : 'shape', + #'samples' : dict((skey, ['1-ttHMVA_eff_err_flip_2l', '1+ttHMVA_eff_err_flip_2l']) for skey in ['DY','DATA']), + #'cuts' : [cut for cut in cuts if ('_ee_' in cut or '_em_' in cut)] +#} + +# Generic "cross section uncertainties" +nuisances['WgStar'] = { + 'name' : 'CMS_hww_WgStarScale', + 'type' : 'lnN', + 'samples' : { + 'WgS' : '1.25' + } +} + +## Use the following if you want to apply the automatic combine MC stat nuisances. +nuisances['stat'] = { + 'type' : 'auto', + 'maxPoiss' : '10', + 'includeSignal' : '0', + 'samples' : {} +} +# nuisance ['maxPoiss'] = Number of threshold events for Poisson modelling +# nuisance ['includeSignal'] = Include MC stat nuisances on signal processes (1=True, 0=False) + +for n in nuisances.values(): + n['skipCMS'] = 1 diff --git a/Hgg/2018UL/plot.py b/Hgg/2018UL/plot.py new file mode 100644 index 00000000..0c48f687 --- /dev/null +++ b/Hgg/2018UL/plot.py @@ -0,0 +1,332 @@ +# plot configuration + +# Groups of samples to improve the plots. +# If not defined, normal plots is used + +groupPlot = {} + +groupPlot['top'] = { + 'nameHR' : 'tW+ and t#bar{t}', + 'isSignal' : 0, + 'color' : 400, # kYellow + 'samples' : ['top'] +} + +#groupPlot['Fake'] = { + #'nameHR' : 'Non-prompt', + #'isSignal' : 0, + #'color' : 921, # kGray + 1 + #'samples' : ['Fake_mm','Fake_em','Fake_ee'] +#} + +groupPlot['DY'] = { + 'nameHR' : "DY", + 'isSignal' : 0, + 'color' : 418, # kGreen+2 + 'samples' : ['DY'] +} + +groupPlot['VVV'] = { + 'nameHR' : 'VVV', + 'isSignal' : 0, + 'color' : 857, # kAzure -3 + 'samples' : ['VVV'] +} + +groupPlot['ZZ'] = { + 'nameHR' : "ZZ", + 'isSignal' : 0, + 'color' : 617, # kViolet + 1 + 'samples' : ['ZZ'] +} + +groupPlot['WZ'] = { + 'nameHR' : "WZ", + 'isSignal' : 0, + 'color' : 619, # kViolet + 1 + 'samples' : ['WZ'] +} + +groupPlot['Vg'] = { + 'nameHR' : "V#gamma", + 'isSignal' : 0, + #'color' : 810, # kOrange + 10 + 'color' : 408, # kGreen - 10 + 'samples' : ['Vg'] +} + +groupPlot['VgS'] = { + 'nameHR' : "V#gamma*", + 'isSignal' : 0, + 'color' : 409, # kGreen - 9 + 'samples' : ['VgS'] +} + +#groupPlot['ZgS'] = { + #'nameHR' : "Z#gamma*", + #'isSignal' : 0, + #'color' : 617, + #'samples' : ['ZgS'] +#} + +groupPlot['Higgs'] = { + 'nameHR' : 'H>WW/#tau#tau', + 'isSignal' : 0, + 'color' : 634, # kRed+2 + 'samples' : ['ggH_hww','qqH_hww','ZH_hww','ggZH_hww','ttH_hww','ggH_htt','qqH_htt','ZH_htt'] +} + +#groupPlot['WH_minus'] = { + #'nameHR' : 'W^{-} H (x 10)', + #'isSignal' : 0, + #'color' : 600, # kBlue + #'samples' : ['WH_hww_minus','WH_htt_minus'] +#} + +#groupPlot['WH_plus'] = { + #'nameHR' : 'W^{+} H (x 10)', + #'isSignal' : 0, + #'color' : 632, # kRed + #'samples' : ['WH_hww_plus', 'WH_htt_plus'] +#} + +groupPlot['Hgluglu'] = { + 'nameHR' : 'H>gluglu', + 'isSignal' : 1, + 'color' : 632, # kRed + 'samples' : ['Hgluglu'] +} + + + + + + +# keys here must match keys in samples.py + +plot = {} + + +plot['top'] = { + 'nameHR' : 'tW and t#bar{t}', + 'color' : 400, # kYellow + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0, +} + +plot['DY'] = { + 'nameHR' : 'DY', + 'color' : 418, # kGreen+2 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0, +} + +plot['Vg'] = { + 'nameHR' : 'Vg', + 'color' : 859, # kAzure -1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['VgS'] = { + 'nameHR' : 'VgS', + 'color' : 859, # kAzure -1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['WZ'] = { + 'nameHR' : 'WZ', + 'color' : 858, # kAzure -2 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.138 # NLO -> NNLO k-factor! +} + +plot['ZZ'] = { + 'nameHR' : 'ZZ', + 'color' : 858, # kAzure -2 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['VVV'] = { + 'nameHR' : 'VVV', + 'color' : 857, # kAzure -3 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +########### +# Signals # +########### + +plot['Hgluglu'] = { + 'nameHR' : 'Hgluglu', + 'color' : 632, # kRed + 'isSignal' : 2, + 'isData' : 0, + 'scale' : 1 + #'scale' : 0.000033658 # I missed the BR Z>ll and a *1000 too much +} + + +##################### +# Other backgrounds # +##################### + +# HWW + +plot['ggH_hww'] = { + 'nameHR' : 'ggH_hww', + 'color' : 632, # kRed + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['qqH_hww'] = { + 'nameHR' : 'qqH_hww', + 'color' : 632+1, # kRed+1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['ZH_hww'] = { + 'nameHR' : 'ZH_hww', + 'color' : 632+3, # kRed+3 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['ggZH_hww'] = { + 'nameHR' : 'ggZH_hww', + 'color' : 632+4, # kRed+4 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['WH_hww_plus'] = { + 'nameHR' : 'WH_hww_plus', + 'color' : 632+2, # kRed+2 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 10 +} + +plot['WH_hww_minus'] = { + 'nameHR' : 'WH_hww_minus', + 'color' : 600, # kBlue + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 10 +} + +plot['ttH_hww'] = { + 'nameHR' : 'ttH_hww', + 'color' : 632+3, # kRed+3 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + + +# Htautau + +plot['ggH_htt'] = { + 'nameHR' : 'ggH_htt', + 'color' : 632, # kRed + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['qqH_htt'] = { + 'nameHR' : 'qqH_htt', + 'color' : 632+1, # kRed+1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['ZH_htt'] = { + 'nameHR' : 'ZH_htt', + 'color' : 632+3, # kRed+3 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['WH_htt_plus'] = { + 'nameHR' : 'WH_htt_plus', + 'color' : 632+2, # kRed+2 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 10 +} + +plot['WH_htt_minus'] = { + 'nameHR' : 'WH_htt_minus', + 'color' : 632+2, # kRed+2 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 10 +} + + +######## +# Fake # +######## + +plot['Fake_em'] = { + 'nameHR' : 'Fake_em', + 'color' : 921, # kGray + 1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['Fake_ee'] = { + 'nameHR' : 'Fake_ee', + 'color' : 921, # kGray + 1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['Fake_mm'] = { + 'nameHR' : 'Fake_mm', + 'color' : 921, # kGray + 1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +######## +# Data # +######## + +plot['DATA'] = { + 'nameHR' : 'Data', + 'color' : 1 , + 'isSignal' : 0, + 'isData' : 1, + 'isBlind' : 0 +} + + +# Define legend + +legend = {} + +legend['lumi'] = 'L = 59.8 fb^{-1}' +legend['sqrt'] = '#sqrt{s} = 13 TeV' diff --git a/Hgg/2018UL/samples.py b/Hgg/2018UL/samples.py new file mode 100644 index 00000000..a17b4a3a --- /dev/null +++ b/Hgg/2018UL/samples.py @@ -0,0 +1,429 @@ +import os,glob + +################################################ +################# SKIMS ######################## +################################################ + +# MC: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Summer20UL18_106x_nAODv9_Full2018v9/MCl1loose2018v9__MCCorr2018v9NoJERInHorn__l2tightOR2018v9/ +# DATA: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Run2018_UL2018_nAODv9_Full2018v9/DATAl1loose2018v9__l2loose__l2tightOR2018v9/ +# FAKE: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Run2018_UL2018_nAODv9_Full2018v9/DATAl1loose2018v9__l2loose__fakeW/ + +mcProduction = 'Summer20UL18_106x_nAODv9_Full2018v9' +dataReco = 'Run2018_UL2018_nAODv9_Full2018v9' +mcSteps = 'MCl1loose2018v9__MCCorr2018v9NoJERInHorn__l2tightOR2018v9{var}' +fakeSteps = 'DATAl1loose2018v9__l2loose__fakeW' +dataSteps = 'DATAl1loose2018v9__l2loose__l2tightOR2018v9' + +############################################## +###### Tree base directory for the site ###### +############################################## + +treeBaseDir = '/eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano' +limitFiles = -1 # why on earth would you want to limit the number of files? Debug reason?? + + +def makeMCDirectory(var=''): + return os.path.join(treeBaseDir, mcProduction, mcSteps.format(var='')) + +mcDirectory = makeMCDirectory() +fakeDirectory = os.path.join(treeBaseDir, dataReco, fakeSteps) +dataDirectory = os.path.join(treeBaseDir, dataReco, dataSteps) + +print (" mcDirectory = " , mcDirectory) + + +samples = {} + +from mkShapesRDF.lib.search_files import SearchFiles +s = SearchFiles() + +useXROOTD = True +redirector = 'root://eoscms.cern.ch/' + +def nanoGetSampleFiles(path, name): + _files = s.searchFiles(path, name, redirector=redirector) + if limitFiles != -1 and len(_files) > limitFiles: + return [(name, _files[:limitFiles])] + else: + return [(name, _files)] + +def nanoGetLocalSampleFiles(path, name): + print ("nanoGetLocalSampleFiles!") + _files = s.searchFiles(path, name, redirector='') + if limitFiles != -1 and len(_files) > limitFiles: + return [(name, _files[:limitFiles])] + else: + return [(name, _files)] + + +def CombineBaseW(samples, proc, samplelist): + _filtFiles = list(filter(lambda k: k[0] in samplelist, samples[proc]['name'])) + _files = list(map(lambda k: k[1], _filtFiles)) + _l = list(map(lambda k: len(k), _files)) + leastFiles = _files[_l.index(min(_l))] + dfSmall = ROOT.RDataFrame('Runs', leastFiles) + s = dfSmall.Sum('genEventSumw').GetValue() + f = ROOT.TFile.Open(leastFiles[0]) + t = f.Get('Events') + t.GetEntry(1) + xs = t.baseW * s + + __files = [] + for f in _files: + __files += f + df = ROOT.RDataFrame('Runs', __files) + s = df.Sum('genEventSumw').GetValue() + newbaseW = str(xs / s) + weight = newbaseW + '/baseW' + + for iSample in samplelist: + addSampleWeight(samples, proc, iSample, weight) + +def addSampleWeight(samples, sampleName, sampleNameType, weight): + obj = list(filter(lambda k: k[0] == sampleNameType, samples[sampleName]['name']))[0] + samples[sampleName]['name'] = list(filter(lambda k: k[0] != sampleNameType, samples[sampleName]['name'])) + if len(obj) > 2: + samples[sampleName]['name'].append((obj[0], obj[1], obj[2] + '*(' + weight + ')')) + else: + samples[sampleName]['name'].append((obj[0], obj[1], '(' + weight + ')' )) + + +################################################ +############ DATA DECLARATION ################## +################################################ + +DataRun = [ + ['A','Run2018A-UL2018-v1'], + ['B','Run2018B-UL2018-v1'], + ['C','Run2018C-UL2018-v1'], + ['D','Run2018D-UL2018-v1'], +] + +DataSets = ['MuonEG','SingleMuon','EGamma','DoubleMuon'] + +DataTrig = { + 'MuonEG' : 'Trigger_ElMu' , + 'DoubleMuon' : '!Trigger_ElMu && Trigger_dblMu' , + 'SingleMuon' : '!Trigger_ElMu && !Trigger_dblMu && Trigger_sngMu' , + 'EGamma' : '!Trigger_ElMu && !Trigger_dblMu && !Trigger_sngMu && (Trigger_sngEl || Trigger_dblEl)' , +} + +######################################### +############ MC COMMON ################## +######################################### + +# SFweight does not include btag weights +mcCommonWeightNoMatch = 'XSWeight*SFweight*METFilter_MC' +mcCommonWeight = 'XSWeight*SFweight*METFilter_MC*PromptGenLepMatch2l' +#mcCommonWeightMatched = 'XSWeight*SFweight*PromptGenLepMatch3l*METFilter_MC' + + + + +###### H>gluglu ####### + +# the string "ZHgg" here is very important, since the root files that will be selected must have the format "nanoLatino_ZHgg__part*.root" +#files = nanoGetSampleFiles("/eos/user/a/amassiro/HIG/", "ZHgg") +files = nanoGetLocalSampleFiles("/eos/user/a/amassiro/HIG/ZHggPostProc/Summer20UL18_106x_nAODv9_Full2018v9/MCFull2018v9/", "ZHgg") +print (" list of files Hgg = ", files) + +samples["Hgluglu"] = { + "name": files, + #"weight": mcCommonWeight, --> missing post processing + #"weight": 1, + "weight": "baseW*genWeight*0.8839*0.08187*0.033658", + "FilesPerJob": 1, +} + +# +# during post-processing, baseW, xsec = 1 +# +# xs_db["ZHgg"] = ["xsec=1.000", "kfact=1.000", "ref=X"] +# Units in pb +# From https://twiki.cern.ch/twiki/pub/LHCPhysics/HiggsXSBR/Higgs_XSBR_YR4_update.xlsx +# 8.839E-01 pb +# and the branching ratio: +# https://twiki.cern.ch/twiki/bin/view/LHCPhysics/CERNYellowReportPageBR +# 8.187E-02 +# BR Z>ll: 3.3658% +# From https://pdg.lbl.gov/2018/listings/rpp2018-list-z-boson.pdf +# +# ZH_HToGluGlu_ZToLL_13TeV_powheg_pythia8 +# +# 59000×0.8839×0.08187×0.033658 +# + +########################################### +############# BACKGROUNDS ############### +########################################### + +############ DY ############ + +files = nanoGetSampleFiles(mcDirectory, 'DYJetsToLL_M-10to50_NLO') + \ + nanoGetSampleFiles(mcDirectory, 'DYJetsToLL_M-50') + +#print (" list of files DY = ", files) + +samples['DY'] = { + 'name': files, + 'weight': mcCommonWeight + '*1', + #'weight': mcCommonWeight + '*(Lepton_pdgId[0]*Lepton_pdgId[1] == -11*13)*( !(Sum(PhotonGen_isPrompt==1 && PhotonGen_pt>15 && abs(PhotonGen_eta)<2.6) > 0))', + 'FilesPerJob': 4, +} + + +##### Top ####### + +files = nanoGetSampleFiles(mcDirectory, 'TTTo2L2Nu') + \ + nanoGetSampleFiles(mcDirectory, 'ST_s-channel') + \ + nanoGetSampleFiles(mcDirectory, 'ST_t-channel_top') + \ + nanoGetSampleFiles(mcDirectory, 'ST_t-channel_antitop') + \ + nanoGetSampleFiles(mcDirectory, 'ST_tW_antitop') + \ + nanoGetSampleFiles(mcDirectory, 'ST_tW_top') + +samples['top'] = { + 'name': files, + 'weight': mcCommonWeight, + 'FilesPerJob': 8, +} +addSampleWeight(samples,'top','TTTo2L2Nu','Top_pTrw') + + + +############ Non-charge-flip backgrounds ############ +# In case we want to estimate the charge-flip +# backgrounds in the signal region, we can use +# data. But we have to subtract all the processes +# not affected by charge-flip: +# all but DY, WW, and top + +######## Vg ######## +files = nanoGetSampleFiles(mcDirectory, 'Wg_AMCNLOFXFX_01J') + \ + nanoGetSampleFiles(mcDirectory, 'ZGToLLG') + +samples['Vg'] = { + 'name': files, + 'weight': mcCommonWeightNoMatch + '*(Gen_ZGstar_mass <= 0)*1', + 'FilesPerJob': 4, +} + +######## VgS ######## +files = nanoGetSampleFiles(mcDirectory, 'Wg_AMCNLOFXFX_01J') + \ + nanoGetSampleFiles(mcDirectory, 'WZTo3LNu_mllmin0p1') + \ + nanoGetSampleFiles(mcDirectory, 'ZGToLLG') + +samples['VgS'] = { + 'name': files, + 'weight': mcCommonWeight + '*1', + 'FilesPerJob': 4, +} +addSampleWeight(samples, 'VgS', 'Wg_AMCNLOFXFX_01J', '((Gen_ZGstar_mass > 0 && Gen_ZGstar_mass <= 0.1))*(gstarLow*0.94)') +addSampleWeight(samples, 'VgS', 'WZTo3LNu_mllmin0p1', '((Gen_ZGstar_mass > 0.1)*(0.601644*58.59/4.666))*(gstarLow*0.94)') +addSampleWeight(samples, 'VgS', 'ZGToLLG', '(Gen_ZGstar_mass > 0)') + + +############ WZ ############ +files = nanoGetSampleFiles(mcDirectory, 'WZTo3LNu_mllmin0p1') + \ + nanoGetSampleFiles(mcDirectory, 'WZTo2Q2L_mllmin4p0') + +samples['WZ'] = { + 'name': files, + 'weight': mcCommonWeight + ' * (gstarHigh)*1', + 'FilesPerJob': 4 +} +addSampleWeight(samples, 'WZ', 'WZTo3LNu_mllmin0p1', '(0.601644*58.59/4.666)') + + +############ ZZ ############ +files = nanoGetSampleFiles(mcDirectory, 'ZZTo2L2Nu') + \ + nanoGetSampleFiles(mcDirectory, 'ZZTo2Q2L_mllmin4p0') + \ + nanoGetSampleFiles(mcDirectory, 'ZZTo4L') + +samples['ZZ'] = { + 'name': files, + 'weight': mcCommonWeight + '*1', + 'FilesPerJob': 4 +} + + +########## VVV ######### +files = nanoGetSampleFiles(mcDirectory, 'ZZZ') + \ + nanoGetSampleFiles(mcDirectory, 'WZZ') + \ + nanoGetSampleFiles(mcDirectory, 'WWZ') + \ + nanoGetSampleFiles(mcDirectory, 'WWW') + +samples['VVV'] = { + 'name': files, + 'weight': mcCommonWeight + '*1', + 'FilesPerJob': 4 +} + +########################################### +############# SIGNALS ################## +########################################### + +signals = [] + +############ ggH H->WW ############ +samples['ggH_hww'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'GluGluHToWWTo2L2Nu_M125'), + 'weight': mcCommonWeight + '*1', + 'FilesPerJob': 2 +} +signals.append('ggH_hww') + +############ VBF H->WW ############ +samples['qqH_hww'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'VBFHToWWTo2L2Nu_M125'), + 'weight': mcCommonWeight + '*1', + 'FilesPerJob': 4 +} +signals.append('qqH_hww') + +############ ZH H->WW ############ +samples['ZH_hww'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'HZJ_HToWW_M125'), + 'weight': mcCommonWeight + '*1', + 'FilesPerJob': 4 +} +signals.append('ZH_hww') + +samples['ggZH_hww'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'GluGluZH_HToWWTo2L2Nu_M125'), + 'weight': mcCommonWeight + '*1', + 'FilesPerJob': 4 +} +signals.append('ggZH_hww') + +############ WH H->WW ############ +samples['WH_hww_plus'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'HWplusJ_HToWW_M125'), + 'weight': mcCommonWeight + '*1', + 'FilesPerJob': 4 +} +signals.append('WH_hww_plus') + +samples['WH_hww_minus'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'HWminusJ_HToWW_M125'), + 'weight': mcCommonWeight + '*1', + 'FilesPerJob': 4 +} + +signals.append('WH_hww_minus') + +############ ttH ############ +samples['ttH_hww'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'ttHToNonbb_M125'), + 'weight': mcCommonWeight + '*1', + 'FilesPerJob': 2 +} +signals.append('ttH_hww') + +############ H->TauTau ############ +samples['ggH_htt'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'GluGluHToTauTau_M125_Powheg'), + 'weight': mcCommonWeight + '*1', + 'FilesPerJob': 20 +} +signals.append('ggH_htt') + +samples['qqH_htt'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'VBFHToTauTau_M125'), + 'weight': mcCommonWeight + '*1', + 'FilesPerJob': 10 +} +signals.append('qqH_htt') + +samples['ZH_htt'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'ZHToTauTau_M125'), + 'weight': mcCommonWeight + '*1', + 'FilesPerJob': 4 +} +signals.append('ZH_htt') + +############ WH H->TauTau ############ +samples['WH_htt_plus'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'WplusHToTauTau_M125'), + 'weight': mcCommonWeight + '*1', + 'FilesPerJob': 4 +} +signals.append('WH_htt_plus') + +samples['WH_htt_minus'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'WminusHToTauTau_M125'), + 'weight': mcCommonWeight + '*1', + 'FilesPerJob': 4 +} +signals.append('WH_htt_minus') + + +########################################### +################## FAKE ################### +########################################### + +#samples['Fake'] = { + #'name': [], + #'weight': 'METFilter_DATA*fakeW*1', + #'weights': [], + #'isData': ['all'], + #'FilesPerJob': 50 +#} + +#for _, sd in DataRun: + #for pd in DataSets: + #tag_data = pd + '_' + sd + + #if ( ('DoubleMuon' in pd and 'Run2018B' in sd) + #or ('DoubleMuon' in pd and 'Run2018D' in sd) + #or ('SingleMuon' in pd and 'Run2018A' in sd) + #or ('SingleMuon' in pd and 'Run2018B' in sd) + #or ('SingleMuon' in pd and 'Run2018C' in sd)): + #print("sd = {}".format(sd)) + #print("pd = {}".format(pd)) + #print("Old tag = {}".format(tag_data)) + #tag_data = tag_data.replace('v1','v2') + #print("New tag = {}".format(tag_data)) + + #files = nanoGetSampleFiles(fakeDirectory, tag_data) + + #samples['Fake']['name'].extend(files) + #addSampleWeight(samples, 'Fake', tag_data, DataTrig[pd]) + +#samples['Fake']['subsamples'] = { + #'em': 'abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 11*13', + #'mm': 'abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 13*13', + #'ee': 'abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 11*11' +#} + + +########################################### +################## DATA ################### +########################################### + +samples['DATA'] = { + 'name': [], + 'weight': 'LepWPCut*METFilter_DATA*1', + 'weights': [], + 'isData': ['all'], + 'FilesPerJob': 50 +} + +for _, sd in DataRun: + for pd in DataSets: + tag_data = pd + '_' + sd + + if ( ('DoubleMuon' in pd and 'Run2018B' in sd) + or ('DoubleMuon' in pd and 'Run2018D' in sd) + or ('SingleMuon' in pd and 'Run2018A' in sd) + or ('SingleMuon' in pd and 'Run2018B' in sd) + or ('SingleMuon' in pd and 'Run2018C' in sd)): + print("sd = {}".format(sd)) + print("pd = {}".format(pd)) + print("Old tag = {}".format(tag_data)) + tag_data = tag_data.replace('v1','v2') + print("New tag = {}".format(tag_data)) + + files = nanoGetSampleFiles(dataDirectory, tag_data) + + samples['DATA']['name'].extend(files) + addSampleWeight(samples, 'DATA', tag_data, DataTrig[pd]) diff --git a/Hgg/2018UL/structure.py b/Hgg/2018UL/structure.py new file mode 100644 index 00000000..37a9fb5d --- /dev/null +++ b/Hgg/2018UL/structure.py @@ -0,0 +1,146 @@ +# structure configuration for datacard + +# keys here must match keys in samples.py + +structure = {} + +structure['DY'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['top'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['WW'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['WWewk'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['ggWW'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['Vg'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['VgS'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['WZ'] = { + 'isSignal' : 0, + 'isData' : 0, + 'scaleSampleForDatacard' : 1.138 # NLO -> NNLO k-factor +} + +structure['ZZ'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['VVV'] = { + 'isSignal' : 0, + 'isData' : 0, +} + + +# Higgs +structure['ggH_hww'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['qqH_hww'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['ZH_hww'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['ggZH_hww'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['WH_hww_plus'] = { + 'isSignal' : 1, + 'isData' : 0, + 'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity +} + +structure['WH_hww_minus'] = { + 'isSignal' : 1, + 'isData' : 0, + 'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity +} + +structure['ttH_hww'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['ggH_htt'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['qqH_htt'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['ZH_htt'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['WH_htt_plus'] = { + 'isSignal' : 1, + 'isData' : 0, + 'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity +} + +structure['WH_htt_minus'] = { + 'isSignal' : 1, + 'isData' : 0, + 'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity +} + + +# Fakes +structure['Fake_ee'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['Fake_mm'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['Fake_em'] = { + 'isSignal' : 0, + 'isData' : 0, +} + + +# Data +structure['DATA'] = { + 'isSignal' : 0, + 'isData' : 1 +} diff --git a/Hgg/2018UL/variables.py b/Hgg/2018UL/variables.py new file mode 100644 index 00000000..1634636c --- /dev/null +++ b/Hgg/2018UL/variables.py @@ -0,0 +1,180 @@ +# variables + +# 0 = not fold (default), 1 = fold underflowbin, 2 = fold overflow bin, 3 = fold underflow and overflow + +variables = {} + +# variables['ttree_variable'] = { +# 'tree': {'LeptonPt1': 'Lepton_pt[0]'}, +# 'cuts': ['sr'] +# } + +variables['ptj1'] = { + 'name': 'Alt(CleanJet_pt,0,0)', + 'range': (100, 30, 500), + 'xaxis': 'p_{T} 1st jet', + 'fold' :3 +} + +variables['ptj2'] = { + 'name': 'Alt(CleanJet_pt,1,0)', + 'range': (100, 30, 500), + 'xaxis': 'p_{T} 2nd jet', + 'fold' :3 +} + +variables['qglj1'] = { + 'name': 'Alt(Jet_qgl,CleanJet_jetIdx[0],2)', + 'range': (100, -1, 1), + 'xaxis': 'QGL 1st jet', + 'fold' :3 +} + +variables['qglj2'] = { + 'name': 'Alt(Jet_qgl,CleanJet_jetIdx[1],2)', + 'range': (100, -1, 1), + 'xaxis': 'QGL 2nd jet', + 'fold' :3 +} + + +variables['etaj1'] = { + 'name': 'Alt(CleanJet_eta,0,0)', + 'range': (100, -5, 5), + 'xaxis': '#eta 1st jet', + 'fold' :3 +} + +variables['etaj2'] = { + 'name': 'Alt(CleanJet_eta,1,0)', + 'range': (100, -5, 5), + 'xaxis': '#eta 2nd jet', + 'fold' :3 +} + + + +variables['btagDeepBj1'] = { + 'name': 'Alt(Jet_btagDeepB,CleanJet_jetIdx[0],2)', + 'range': (100, -1, 1), + 'xaxis': 'btagDeepB 1st jet', + 'fold' :3 +} + +variables['btagDeepBj2'] = { + 'name': 'Alt(Jet_btagDeepB,CleanJet_jetIdx[1],2)', + 'range': (100, -1, 1), + 'xaxis': 'btagDeepB 2nd jet', + 'fold' :3 +} + + +variables['btagCSVV2j1'] = { + 'name': 'Alt(Jet_btagCSVV2,CleanJet_jetIdx[0],2)', + 'range': (100, -1, 1), + 'xaxis': 'btagCSVV2 1st jet', + 'fold' :3 +} + +variables['btagCSVV2j2'] = { + 'name': 'Alt(Jet_btagCSVV2,CleanJet_jetIdx[1],2)', + 'range': (100, -1, 1), + 'xaxis': 'btagCSVV2 2nd jet', + 'fold' :3 +} + + + +#Take(Jet_btagDeepFlavB, CleanJet_jetIdx), 0) +#Jet_btagDeepFlavB[CleanJet_jetIdx[0]] +#Alt(Take(Jet_btagDeepFlavB, CleanJet_jetIdx), 1, -99) -999.99*(CleanJet_pt[1]<20) +# +#Take(Jet_btagDeepFlavB, CleanJet_jetIdx)[0] +#Jet_btagDeepFlavB[CleanJet_jetIdx[0]] +# + +variables['mjj'] = { 'name': 'mjj', # variable name + 'range' : (20, 0, 200), # variable range + 'xaxis' : 'm_{jj} [GeV]', # x axis name + 'fold' :3 + } + +variables['mjjbins'] = { 'name': 'mjj', # variable name + 'range' : (100, 0, 200), # variable range + 'xaxis' : 'm_{jj} [GeV]', # x axis name + 'fold' :3 + } + +variables['ptll'] = { 'name': 'ptll', + 'range' : (100, 0, 600), + 'xaxis' : 'p_{T}^{ll} [GeV]', + 'fold' : 3 + } + +variables['mll'] = { 'name': 'mll', + 'range' : (100, 0,200), + 'xaxis' : 'm_{ll} [GeV]', + 'fold' : 3 + } + + +variables['ptl1'] = { 'name': 'Lepton_pt[0]', + 'range' : (60,0,300), + 'xaxis' : 'p_{T} 1st lep', + 'fold' : 3 + } + +variables['ptl2'] = { 'name': 'Lepton_pt[1]', + 'range' : (60,0,300), + 'xaxis' : 'p_{T} 2nd lep', + 'fold' : 3 + } + + +variables['puppimet'] = { + 'name': 'PuppiMET_pt', + 'range' : (100,0,200), + 'xaxis' : 'puppimet [GeV]', + 'fold' : 3 + } + +variables['detajj'] = { 'name': 'detajj', + 'range' : (100, 0.0, 9.0), + 'xaxis' : '#Delta#eta_{jj}', + 'fold' : 3 + } + +variables['dphijj'] = { 'name': 'dphijj', + 'range' : (100, -3.15, 3.15), + 'xaxis' : '#Delta#phi_{jj}', + 'fold' : 3 + } + + +#variables['drjj'] = { 'name': 'drjj', + #'range' : (100, 0.0, 9.0), + #'xaxis' : '#DeltaR_{jj}', + #'fold' : 3 + #} + +# +# ll jetjet +# + +variables['dphilljet'] = { 'name': 'dphilljet', + 'range' : (100, -3.15, 3.15), + 'xaxis' : '#Delta#phi_{ll,j}', + 'fold' : 3 + } + +variables['dphilljetjet'] = { 'name': 'dphilljetjet', + 'range' : (100, -3.15, 3.15), + 'xaxis' : '#Delta#phi_{ll,jj}', + 'fold' : 3 + } + + + + + + From 35a5041329838af57e02bb8853a6f3385ed952a1 Mon Sep 17 00:00:00 2001 From: amassiro Date: Mon, 20 Oct 2025 12:11:45 +0200 Subject: [PATCH 41/44] up --- Hgg/2018UL/README.md | 146 +++++++++++++++++ Hgg/2018UL/cuts.py | 3 +- Hgg/2018UL/nuisances.py | 345 +++++++++++++++++++++------------------- Hgg/2018UL/plot.py | 4 +- Hgg/2018UL/samples.py | 6 +- Hgg/2018UL/structure.py | 27 +++- Hgg/2018UL/variables.py | 15 ++ Hgg/README.md | 9 ++ Hgg/cuts.py | 23 +-- Hgg/plot.py | 5 +- Hgg/samples.py | 17 ++ Hgg/variables.py | 51 +----- index.php | 113 +++++++++++++ 13 files changed, 523 insertions(+), 241 deletions(-) create mode 100644 index.php diff --git a/Hgg/2018UL/README.md b/Hgg/2018UL/README.md index 0710b3bd..36806da9 100644 --- a/Hgg/2018UL/README.md +++ b/Hgg/2018UL/README.md @@ -15,6 +15,14 @@ Then, we can source the `mkShapesRDF` environment using these commands: cd - +(development folder) + + cd /afs/cern.ch/user/a/amassiro/work/Latinos/Framework/Hgg/Analysis/PlotsConfigurationsRun3/Hgg/2018UL + cd /afs/cern.ch/user/a/amassiro/work/Latinos/Framework/mkShapesRDF/ + source start.sh + cd - + + ### Compile the configuration folder mkShapesRDF -c 1 @@ -27,15 +35,23 @@ Produce histograms using batch: mkShapesRDF -c 1 -o 0 -f . -b 1 + mkShapesRDF --submit Check jobs status: mkShapesRDF -o 1 -f . + + + mkShapesRDF --check + Resubmit failed jobs: mkShapesRDF -o 1 -f . -r 1 + mkShapesRDF --resubmit 1 + + Options meanings: - -o: operationMode: - 0 run analysis @@ -55,6 +71,8 @@ Once all the jobs have finished, you can merge them: mkShapesRDF -o 2 -f . + mkShapesRDF --histoadd + ### Plot distributions mkPlot @@ -71,8 +89,136 @@ Once all the jobs have finished, you can merge them: mkDatacards --outputDirDatacard datacards + mkDatacards --outputDirDatacard datacards --onlyVariables mjjbins,mjj --onlyCuts Sig_opt4 + mkDatacards --outputDirDatacard datacards --onlyVariables mjjbins,mjj --onlyCuts Sig_opt5future + mkDatacards --outputDirDatacard datacards --onlyVariables mjjbins,mjj --onlyCuts Sig_opt6future + + + +### likelihood scan + + cd /afs/cern.ch/user/a/amassiro/work/Latinos/Framework/Hgg/Analysis/PlotsConfigurationsRun3/Hgg/2018UL + cd /afs/cern.ch/user/a/amassiro/work/Combine/CMSSW_14_1_0_pre4/src/ + cmsenv + cd - + + + combine -M FitDiagnostics --rMin -300 --rMax 302 datacards/Sig_opt4/mjj/datacard.txt -t -1 > result.mcasimov.rfit.txt + combine -M Significance datacards/Sig_opt4/mjj/datacard.txt -t -1 > result.mcasimov.Significance.txt + + + https://twiki.cern.ch/twiki/bin/view/CMS/HWWCombineTools + https://twiki.cern.ch/twiki/bin/viewauth/CMS/HiggsWG/SWGuideHiggsProjections + + lumiscale rateParam * * 1 + nuisance edit freeze lumiscale + + lumi 2018 = 59.83 + lumi run 2 ~ 140 = lumi(2018) *2.5 + lumi run 1+2+3 ~ 500 = lumi(2018) * 8.5 + + + + combine -M Significance datacards/Sig_opt4/mjj/datacard.txt -t -1 --setParameters lumiscale=1 --expectSignal=1 > result.mcasimov.Significance.2018.txt + combine -M Significance datacards/Sig_opt4/mjj/datacard.txt -t -1 --setParameters lumiscale=2.5 --expectSignal=1 > result.mcasimov.Significance.run2.txt + combine -M Significance datacards/Sig_opt4/mjj/datacard.txt -t -1 --setParameters lumiscale=8.5 --expectSignal=1 > result.mcasimov.Significance.run123.txt + + + combine -M Significance datacards/Sig_opt4/mjjbins/datacard.txt -t -1 --setParameters lumiscale=1 --expectSignal=1 > result.mcasimov.Significance.2018.txt + combine -M Significance datacards/Sig_opt4/mjjbins/datacard.txt -t -1 --setParameters lumiscale=2.5 --expectSignal=1 > result.mcasimov.Significance.run2.txt + combine -M Significance datacards/Sig_opt4/mjjbins/datacard.txt -t -1 --setParameters lumiscale=8.5 --expectSignal=1 > result.mcasimov.Significance.run123.txt + combine -M Significance datacards/Sig_opt4/mjjbins/datacard.txt -t -1 --setParameters lumiscale=1000 --expectSignal=1 > result.mcasimov.Significance.ahah.txt + + + cat result.mcasimov.Significance.2018.txt result.mcasimov.Significance.run2.txt result.mcasimov.Significance.run123.txt | grep "Significance:" + cat result.mcasimov.Significance.2018.txt result.mcasimov.Significance.run2.txt result.mcasimov.Significance.run123.txt result.mcasimov.Significance.ahah.txt | grep "Significance:" + + + combine -M Significance datacards/Sig_opt5future/mjj/datacard.txt -t -1 --setParameters lumiscale=1 --expectSignal=1 > result.mcasimov.Significance.2018.txt + combine -M Significance datacards/Sig_opt5future/mjj/datacard.txt -t -1 --setParameters lumiscale=2.5 --expectSignal=1 > result.mcasimov.Significance.run2.txt + combine -M Significance datacards/Sig_opt5future/mjj/datacard.txt -t -1 --setParameters lumiscale=8.5 --expectSignal=1 > result.mcasimov.Significance.run123.txt + + combine -M Significance datacards/Sig_opt5future/mjjbins/datacard.txt -t -1 --setParameters lumiscale=1 --expectSignal=1 > result.mcasimov.Significance.2018.txt + combine -M Significance datacards/Sig_opt5future/mjjbins/datacard.txt -t -1 --setParameters lumiscale=2.5 --expectSignal=1 > result.mcasimov.Significance.run2.txt + combine -M Significance datacards/Sig_opt5future/mjjbins/datacard.txt -t -1 --setParameters lumiscale=8.5 --expectSignal=1 > result.mcasimov.Significance.run123.txt + + + cat result.mcasimov.Significance.2018.txt result.mcasimov.Significance.run2.txt result.mcasimov.Significance.run123.txt | grep "Significance:" + + + combine -M Significance datacards/Sig_opt5future/mjjbins/datacard.txt -t -1 --setParameters lumiscale=1 --expectSignal=1 > result.mcasimov.Significance.1.txt + combine -M Significance datacards/Sig_opt5future/mjjbins/datacard.txt -t -1 --setParameters lumiscale=2 --expectSignal=1 > result.mcasimov.Significance.2.txt + combine -M Significance datacards/Sig_opt5future/mjjbins/datacard.txt -t -1 --setParameters lumiscale=4 --expectSignal=1 > result.mcasimov.Significance.4.txt + combine -M Significance datacards/Sig_opt5future/mjjbins/datacard.txt -t -1 --setParameters lumiscale=8 --expectSignal=1 > result.mcasimov.Significance.8.txt + combine -M Significance datacards/Sig_opt5future/mjjbins/datacard.txt -t -1 --setParameters lumiscale=20 --expectSignal=1 > result.mcasimov.Significance.20.txt + combine -M Significance datacards/Sig_opt5future/mjjbins/datacard.txt -t -1 --setParameters lumiscale=40 --expectSignal=1 > result.mcasimov.Significance.40.txt + + + cat result.mcasimov.Significance.1.txt result.mcasimov.Significance.2.txt result.mcasimov.Significance.4.txt result.mcasimov.Significance.8.txt result.mcasimov.Significance.20.txt result.mcasimov.Significance.40.txt | grep "Significance:" + + + + + + combine -M FitDiagnostics datacards/Sig_opt5future/mjjbins/datacard.txt --rMin -300 --rMax 13002 -t -1 --setParameters lumiscale=1 --expectSignal=10000 > result.mcasimov.FitDiagnostics.1.txt + combine -M FitDiagnostics datacards/Sig_opt5future/mjjbins/datacard.txt --rMin -300 --rMax 13002 -t -1 --setParameters lumiscale=2 --expectSignal=10000 > result.mcasimov.FitDiagnostics.2.txt + combine -M FitDiagnostics datacards/Sig_opt5future/mjjbins/datacard.txt --rMin -300 --rMax 13002 -t -1 --setParameters lumiscale=4 --expectSignal=10000 > result.mcasimov.FitDiagnostics.4.txt + combine -M FitDiagnostics datacards/Sig_opt5future/mjjbins/datacard.txt --rMin -300 --rMax 13002 -t -1 --setParameters lumiscale=8 --expectSignal=10000 > result.mcasimov.FitDiagnostics.8.txt + combine -M FitDiagnostics datacards/Sig_opt5future/mjjbins/datacard.txt --rMin -300 --rMax 13002 -t -1 --setParameters lumiscale=20 --expectSignal=10000 > result.mcasimov.FitDiagnostics.20.txt + combine -M FitDiagnostics datacards/Sig_opt5future/mjjbins/datacard.txt --rMin -300 --rMax 13002 -t -1 --setParameters lumiscale=40 --expectSignal=10000 > result.mcasimov.FitDiagnostics.40.txt + combine -M FitDiagnostics datacards/Sig_opt5future/mjjbins/datacard.txt --rMin -300 --rMax 13002 -t -1 --setParameters lumiscale=100 --expectSignal=10000 > result.mcasimov.FitDiagnostics.100.txt + combine -M FitDiagnostics datacards/Sig_opt5future/mjjbins/datacard.txt --rMin -300 --rMax 13002 -t -1 --setParameters lumiscale=200 --expectSignal=10000 > result.mcasimov.FitDiagnostics.200.txt + + + cat result.mcasimov.FitDiagnostics.1.txt result.mcasimov.FitDiagnostics.2.txt result.mcasimov.FitDiagnostics.4.txt result.mcasimov.FitDiagnostics.8.txt result.mcasimov.FitDiagnostics.20.txt result.mcasimov.FitDiagnostics.40.txt result.mcasimov.FitDiagnostics.100.txt result.mcasimov.FitDiagnostics.200.txt | grep "Best fit r:" + + + + + combine -M FitDiagnostics datacards/Sig_opt6future/mjj/datacard.txt --rMin -300 --rMax 302 -t -1 --setParameters lumiscale=1 --expectSignal=100 > result.mcasimov.FitDiagnostics.1.txt + combine -M FitDiagnostics datacards/Sig_opt6future/mjj/datacard.txt --rMin -300 --rMax 302 -t -1 --setParameters lumiscale=2 --expectSignal=100 > result.mcasimov.FitDiagnostics.2.txt + combine -M FitDiagnostics datacards/Sig_opt6future/mjj/datacard.txt --rMin -300 --rMax 302 -t -1 --setParameters lumiscale=4 --expectSignal=100 > result.mcasimov.FitDiagnostics.4.txt + combine -M FitDiagnostics datacards/Sig_opt6future/mjj/datacard.txt --rMin -300 --rMax 302 -t -1 --setParameters lumiscale=8 --expectSignal=100 > result.mcasimov.FitDiagnostics.8.txt + combine -M FitDiagnostics datacards/Sig_opt6future/mjj/datacard.txt --rMin -300 --rMax 302 -t -1 --setParameters lumiscale=20 --expectSignal=100 > result.mcasimov.FitDiagnostics.20.txt + combine -M FitDiagnostics datacards/Sig_opt6future/mjj/datacard.txt --rMin -300 --rMax 302 -t -1 --setParameters lumiscale=40 --expectSignal=100 > result.mcasimov.FitDiagnostics.40.txt + combine -M FitDiagnostics datacards/Sig_opt6future/mjj/datacard.txt --rMin -300 --rMax 302 -t -1 --setParameters lumiscale=100 --expectSignal=100 > result.mcasimov.FitDiagnostics.100.txt + combine -M FitDiagnostics datacards/Sig_opt6future/mjj/datacard.txt --rMin -300 --rMax 302 -t -1 --setParameters lumiscale=200 --expectSignal=100 > result.mcasimov.FitDiagnostics.200.txt + + + cat result.mcasimov.FitDiagnostics.1.txt result.mcasimov.FitDiagnostics.2.txt result.mcasimov.FitDiagnostics.4.txt result.mcasimov.FitDiagnostics.8.txt result.mcasimov.FitDiagnostics.20.txt result.mcasimov.FitDiagnostics.40.txt result.mcasimov.FitDiagnostics.100.txt result.mcasimov.FitDiagnostics.200.txt | grep "Best fit r:" + + + + combine -M Significance datacards/Sig_opt6future/mjj/datacard.txt -t -1 --setParameters lumiscale=1 --expectSignal=100 > result.mcasimov.Significance.1.txt + combine -M Significance datacards/Sig_opt6future/mjj/datacard.txt -t -1 --setParameters lumiscale=2 --expectSignal=100 > result.mcasimov.Significance.2.txt + combine -M Significance datacards/Sig_opt6future/mjj/datacard.txt -t -1 --setParameters lumiscale=4 --expectSignal=100 > result.mcasimov.Significance.4.txt + combine -M Significance datacards/Sig_opt6future/mjj/datacard.txt -t -1 --setParameters lumiscale=8 --expectSignal=100 > result.mcasimov.Significance.8.txt + combine -M Significance datacards/Sig_opt6future/mjj/datacard.txt -t -1 --setParameters lumiscale=20 --expectSignal=100 > result.mcasimov.Significance.20.txt + combine -M Significance datacards/Sig_opt6future/mjj/datacard.txt -t -1 --setParameters lumiscale=40 --expectSignal=100 > result.mcasimov.Significance.40.txt + combine -M Significance datacards/Sig_opt6future/mjj/datacard.txt -t -1 --setParameters lumiscale=100 --expectSignal=100 > result.mcasimov.Significance.100.txt + combine -M Significance datacards/Sig_opt6future/mjj/datacard.txt -t -1 --setParameters lumiscale=200 --expectSignal=100 > result.mcasimov.Significance.200.txt + + + cat result.mcasimov.Significance.1.txt result.mcasimov.Significance.2.txt result.mcasimov.Significance.4.txt result.mcasimov.Significance.8.txt result.mcasimov.Significance.20.txt result.mcasimov.Significance.40.txt result.mcasimov.Significance.100.txt result.mcasimov.Significance.200.txt | grep "Significance:" + + + + combine -M Significance datacards/Sig_opt6future/mjj/datacard.txt -t -1 --setParameters lumiscale=1 --expectSignal=1 > result.mcasimov.Significance.1.txt + combine -M Significance datacards/Sig_opt6future/mjj/datacard.txt -t -1 --setParameters lumiscale=2 --expectSignal=1 > result.mcasimov.Significance.2.txt + combine -M Significance datacards/Sig_opt6future/mjj/datacard.txt -t -1 --setParameters lumiscale=4 --expectSignal=1 > result.mcasimov.Significance.4.txt + combine -M Significance datacards/Sig_opt6future/mjj/datacard.txt -t -1 --setParameters lumiscale=8 --expectSignal=1 > result.mcasimov.Significance.8.txt + combine -M Significance datacards/Sig_opt6future/mjj/datacard.txt -t -1 --setParameters lumiscale=20 --expectSignal=1 > result.mcasimov.Significance.20.txt + combine -M Significance datacards/Sig_opt6future/mjj/datacard.txt -t -1 --setParameters lumiscale=40 --expectSignal=1 > result.mcasimov.Significance.40.txt + combine -M Significance datacards/Sig_opt6future/mjj/datacard.txt -t -1 --setParameters lumiscale=100 --expectSignal=1 > result.mcasimov.Significance.100.txt + combine -M Significance datacards/Sig_opt6future/mjj/datacard.txt -t -1 --setParameters lumiscale=200 --expectSignal=1 > result.mcasimov.Significance.200.txt + + + cat result.mcasimov.Significance.1.txt result.mcasimov.Significance.2.txt result.mcasimov.Significance.4.txt result.mcasimov.Significance.8.txt result.mcasimov.Significance.20.txt result.mcasimov.Significance.40.txt result.mcasimov.Significance.100.txt result.mcasimov.Significance.200.txt | grep "Significance:" + + + \ No newline at end of file diff --git a/Hgg/2018UL/cuts.py b/Hgg/2018UL/cuts.py index 899dc629..f8499816 100644 --- a/Hgg/2018UL/cuts.py +++ b/Hgg/2018UL/cuts.py @@ -48,7 +48,8 @@ 'opt2' : 'mll>80 && mll< 100 && Lepton_pt[0]>40 && Alt(Jet_qgl,CleanJet_jetIdx[0],2)<0.5 && Alt(Jet_qgl,CleanJet_jetIdx[1],2)<0.5 && PuppiMET_pt<60 && bVeto && detajj<3 && mjj<160 && mjj>60 && dphilljetjet>1', 'opt3' : 'mll>80 && mll< 100 && Lepton_pt[0]>40 && Alt(Jet_qgl,CleanJet_jetIdx[0],2)<0.5 && Alt(Jet_qgl,CleanJet_jetIdx[1],2)<0.5 && PuppiMET_pt<60 && bVeto && detajj<3 && mjj<160 && mjj>60 && dphilljetjet>1 && Alt(Jet_btagDeepB,CleanJet_jetIdx[0],2)<0.2 && Alt(Jet_btagDeepB,CleanJet_jetIdx[1],2) < 0.2 && Alt(Jet_btagCSVV2,CleanJet_jetIdx[0],2)<0.7 && Alt(Jet_btagCSVV2,CleanJet_jetIdx[1],2)<0.7', 'opt4' : 'mll>80 && mll< 100 && Lepton_pt[0]>40 && Alt(Jet_qgl,CleanJet_jetIdx[0],2)<0.5 && Alt(Jet_qgl,CleanJet_jetIdx[1],2)<0.5 && PuppiMET_pt<60 && bVeto && detajj<2 && mjj<150 && mjj>60 && dphilljetjet>1 && Alt(Jet_btagDeepB,CleanJet_jetIdx[0],2)<0.2 && Alt(Jet_btagDeepB,CleanJet_jetIdx[1],2) < 0.2 && Alt(Jet_btagCSVV2,CleanJet_jetIdx[0],2)<0.7 && Alt(Jet_btagCSVV2,CleanJet_jetIdx[1],2)<0.7 && ptll>20 && Alt(CleanJet_pt,0,0) > 50', - + 'opt5future' : 'mll>85 && mll< 95 && Lepton_pt[0]>40 && Alt(Jet_qgl,CleanJet_jetIdx[0],2)<0.1 && Alt(Jet_qgl,CleanJet_jetIdx[1],2)<0.1 && PuppiMET_pt<60 && bVeto && detajj<2 && mjj<150 && mjj>60 && dphilljetjet>1 && Alt(Jet_btagDeepB,CleanJet_jetIdx[0],2)<0.2 && Alt(Jet_btagDeepB,CleanJet_jetIdx[1],2) < 0.2 && Alt(Jet_btagCSVV2,CleanJet_jetIdx[0],2)<0.7 && Alt(Jet_btagCSVV2,CleanJet_jetIdx[1],2)<0.7 && ptll>20 && Alt(CleanJet_pt,0,0) > 50 && Alt(CleanJet_eta,1,0) < 2.5 && Alt(CleanJet_eta,1,0) > -2.5 && Alt(CleanJet_eta,0,0) < 2.5 && Alt(CleanJet_eta,0,0) > -2.5 && Alt(Lepton_pt,0,0)>50', + 'opt6future' : 'mll>85 && mll< 95 && Lepton_pt[0]>40 && Alt(Jet_qgl,CleanJet_jetIdx[0],2)<0.04 && Alt(Jet_qgl,CleanJet_jetIdx[1],2)<0.04 && PuppiMET_pt<60 && bVeto && detajj<2 && mjj<150 && mjj>60 && dphilljetjet>1 && Alt(Jet_btagDeepB,CleanJet_jetIdx[0],2)<0.2 && Alt(Jet_btagDeepB,CleanJet_jetIdx[1],2) < 0.2 && Alt(Jet_btagCSVV2,CleanJet_jetIdx[0],2)<0.7 && Alt(Jet_btagCSVV2,CleanJet_jetIdx[1],2)<0.7 && ptll>20 && Alt(CleanJet_pt,0,0) > 75 && Alt(CleanJet_eta,1,0) < 2.0 && Alt(CleanJet_eta,1,0) > -2.0 && Alt(CleanJet_eta,0,0) < 2.0 && Alt(CleanJet_eta,0,0) > -2.0 && Alt(Lepton_pt,0,0)>50 && ptll>100 && Lepton_pt[1]>20', } } diff --git a/Hgg/2018UL/nuisances.py b/Hgg/2018UL/nuisances.py index cf268c5b..63475552 100644 --- a/Hgg/2018UL/nuisances.py +++ b/Hgg/2018UL/nuisances.py @@ -20,6 +20,7 @@ # AM: for the time being exclude the signal from the list of nuisances ... missing adequate post-processing # mc = [skey for skey in samples if skey not in ('Fake', 'DATA', 'Hgluglu')] +mcln = [skey for skey in samples if skey not in ('Fake', 'DATA')] redirector = "" @@ -51,19 +52,19 @@ def makeMCDirectory(var=''): nuisances['lumi_Uncorrelated'] = { 'name' : 'lumi_13TeV_2018', 'type' : 'lnN', - 'samples' : dict((skey, '1.015') for skey in mc if skey not in ['WZ']) + 'samples' : dict((skey, '1.015') for skey in mcln if skey not in ['blabla']) } nuisances['lumi_Correlated_Run2'] = { 'name' : 'lumi_13TeV_correlated', 'type' : 'lnN', - 'samples' : dict((skey, '1.020') for skey in mc if skey not in ['WZ']) + 'samples' : dict((skey, '1.020') for skey in mcln if skey not in ['blabla']) } nuisances['lumi_Correlated_2017_2018'] = { 'name' : 'lumi_13TeV_1718', 'type' : 'lnN', - 'samples' : dict((skey, '1.002') for skey in mc if skey not in ['WZ']) + 'samples' : dict((skey, '1.002') for skey in mcln if skey not in ['blabla']) } @@ -168,210 +169,220 @@ def makeMCDirectory(var=''): #} #} -###### B-tagger -for shift in ['lf', 'hf', 'hfstats1', 'hfstats2', 'lfstats1', 'lfstats2', 'cferr1', 'cferr2']: - btag_syst = ['(btagSF%sup)/(btagSF)' % shift, '(btagSF%sdown)/(btagSF)' % shift] - name = 'CMS_btag_%s' % shift - if 'stats' in shift: - name += '_2018' +######################################################################## +### AM: from here commented ... just to speed up - nuisances['btag_shape_%s' % shift] = { - 'name' : name, - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, btag_syst) for skey in mc), - } +###### B-tagger -##### Trigger Scale Factors +#for shift in ['lf', 'hf', 'hfstats1', 'hfstats2', 'lfstats1', 'lfstats2', 'cferr1', 'cferr2']: + #btag_syst = ['(btagSF%sup)/(btagSF)' % shift, '(btagSF%sdown)/(btagSF)' % shift] -trig_syst = ['TriggerSFWeight_2l_u/TriggerSFWeight_2l', 'TriggerSFWeight_2l_d/TriggerSFWeight_2l'] + #name = 'CMS_btag_%s' % shift + #if 'stats' in shift: + #name += '_2018' -nuisances['trigg'] = { - 'name' : 'CMS_eff_hwwtrigger_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, trig_syst) for skey in mc) -} + #nuisances['btag_shape_%s' % shift] = { + #'name' : name, + #'kind' : 'weight', + #'type' : 'shape', + #'samples' : dict((skey, btag_syst) for skey in mc), + #} -##### Electron Efficiency and energy scale +###### Trigger Scale Factors -nuisances['eff_e'] = { - 'name' : 'CMS_eff_e_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['SFweightEleUp', 'SFweightEleDown']) for skey in mc) -} +#trig_syst = ['TriggerSFWeight_2l_u/TriggerSFWeight_2l', 'TriggerSFWeight_2l_d/TriggerSFWeight_2l'] -#nuisances['eff_ttHMVA_e'] = { - #'name' : 'CMS_eff_ttHMVA_e_2018', +#nuisances['trigg'] = { + #'name' : 'CMS_eff_hwwtrigger_2018', #'kind' : 'weight', #'type' : 'shape', - #'samples' : dict((skey, ['LepWPttHMVASFEleUp', 'LepWPttHMVASFEleDown']) for skey in mc) + #'samples' : dict((skey, trig_syst) for skey in mc) #} -nuisances['electronpt'] = { - 'name' : 'CMS_scale_e_2018', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'ElepTup', - 'mapDown' : 'ElepTdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('ElepTup_suffix'), - 'folderDown' : makeMCDirectory('ElepTdo_suffix'), - 'AsLnN' : '0' -} - -##### Muon Efficiency and energy scale - -nuisances['eff_m'] = { - 'name' : 'CMS_eff_m_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['SFweightMuUp', 'SFweightMuDown']) for skey in mc) -} +###### Electron Efficiency and energy scale -#nuisances['eff_ttHMVA_m'] = { - #'name' : 'CMS_eff_ttHMVA_m_2018', +#nuisances['eff_e'] = { + #'name' : 'CMS_eff_e_2018', #'kind' : 'weight', #'type' : 'shape', - #'samples' : dict((skey, ['LepWPttHMVASFMuUp', 'LepWPttHMVASFMuDown']) for skey in mc) + #'samples' : dict((skey, ['SFweightEleUp', 'SFweightEleDown']) for skey in mc) #} -nuisances['muonpt'] = { - 'name' : 'CMS_scale_m_2018', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'MupTup', - 'mapDown' : 'MupTdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('MupTup_suffix'), - 'folderDown' : makeMCDirectory('MupTdo_suffix'), - 'AsLnN' : '0' -} +##nuisances['eff_ttHMVA_e'] = { + ##'name' : 'CMS_eff_ttHMVA_e_2018', + ##'kind' : 'weight', + ##'type' : 'shape', + ##'samples' : dict((skey, ['LepWPttHMVASFEleUp', 'LepWPttHMVASFEleDown']) for skey in mc) +##} + +#nuisances['electronpt'] = { + #'name' : 'CMS_scale_e_2018', + #'kind' : 'suffix', + #'type' : 'shape', + #'mapUp' : 'ElepTup', + #'mapDown' : 'ElepTdo', + #'samples' : dict((skey, ['1', '1']) for skey in mc), + #'folderUp' : makeMCDirectory('ElepTup_suffix'), + #'folderDown' : makeMCDirectory('ElepTdo_suffix'), + #'AsLnN' : '0' +#} -##### Jet energy scale -jes_systs = ['JESAbsolute','JESAbsolute_2018','JESBBEC1','JESBBEC1_2018','JESEC2','JESEC2_2018','JESFlavorQCD','JESHF','JESHF_2018','JESRelativeBal','JESRelativeSample_2018'] - -for js in jes_systs: - - nuisances[js] = { - 'name' : 'CMS_scale_' + js.replace("JES","j_"), - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : js + 'up', - 'mapDown' : js + 'do', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('RDF__JESup_suffix'), - 'folderDown': makeMCDirectory('RDF__JESdo_suffix'), - 'reweight' : ['btagSF'+js.replace('JES','jes')+'up/btagSF','btagSF'+js.replace('JES','jes')+'down/btagSF'], - 'AsLnN' : '0' - } - -##### Jet energy resolution -nuisances['JER'] = { - 'name' : 'CMS_res_j_2018', - 'kind' : 'suffix', - 'type' : 'shape', - 'mapUp' : 'JERup', - 'mapDown' : 'JERdo', - 'samples' : dict((skey, ['1', '1']) for skey in mc), - 'folderUp' : makeMCDirectory('JERup_suffix'), - 'folderDown': makeMCDirectory('JERdo_suffix'), - 'AsLnN' : '0' -} +###### Muon Efficiency and energy scale -##### MET unclustered energy +#nuisances['eff_m'] = { + #'name' : 'CMS_eff_m_2018', + #'kind' : 'weight', + #'type' : 'shape', + #'samples' : dict((skey, ['SFweightMuUp', 'SFweightMuDown']) for skey in mc) +#} -#nuisances['met'] = { - #'name' : 'CMS_scale_met_2018', +##nuisances['eff_ttHMVA_m'] = { + ##'name' : 'CMS_eff_ttHMVA_m_2018', + ##'kind' : 'weight', + ##'type' : 'shape', + ##'samples' : dict((skey, ['LepWPttHMVASFMuUp', 'LepWPttHMVASFMuDown']) for skey in mc) +##} + +#nuisances['muonpt'] = { + #'name' : 'CMS_scale_m_2018', + #'kind' : 'suffix', + #'type' : 'shape', + #'mapUp' : 'MupTup', + #'mapDown' : 'MupTdo', + #'samples' : dict((skey, ['1', '1']) for skey in mc), + #'folderUp' : makeMCDirectory('MupTup_suffix'), + #'folderDown' : makeMCDirectory('MupTdo_suffix'), + #'AsLnN' : '0' +#} + +###### Jet energy scale +#jes_systs = ['JESAbsolute','JESAbsolute_2018','JESBBEC1','JESBBEC1_2018','JESEC2','JESEC2_2018','JESFlavorQCD','JESHF','JESHF_2018','JESRelativeBal','JESRelativeSample_2018'] + +#for js in jes_systs: + + #nuisances[js] = { + #'name' : 'CMS_scale_' + js.replace("JES","j_"), + #'kind' : 'suffix', + #'type' : 'shape', + #'mapUp' : js + 'up', + #'mapDown' : js + 'do', + #'samples' : dict((skey, ['1', '1']) for skey in mc), + #'folderUp' : makeMCDirectory('RDF__JESup_suffix'), + #'folderDown': makeMCDirectory('RDF__JESdo_suffix'), + #'reweight' : ['btagSF'+js.replace('JES','jes')+'up/btagSF','btagSF'+js.replace('JES','jes')+'down/btagSF'], + #'AsLnN' : '0' + #} + +###### Jet energy resolution +#nuisances['JER'] = { + #'name' : 'CMS_res_j_2018', #'kind' : 'suffix', #'type' : 'shape', - #'mapUp' : 'METup', - #'mapDown' : 'METdo', + #'mapUp' : 'JERup', + #'mapDown' : 'JERdo', #'samples' : dict((skey, ['1', '1']) for skey in mc), - #'folderUp' : makeMCDirectory('METup_suffix'), - #'folderDown': makeMCDirectory('METdo_suffix'), + #'folderUp' : makeMCDirectory('JERup_suffix'), + #'folderDown': makeMCDirectory('JERdo_suffix'), #'AsLnN' : '0' #} +###### MET unclustered energy -##### Pileup - -# puWeight_UL2018 -nuisances['PU'] = { - 'name' : 'CMS_pileup_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : { - 'DY' : ['0.998687*(puWeightUp/puWeight)', '1.001976*(puWeightDown/puWeight)'], - 'top' : ['1.002595*(puWeightUp/puWeight)', '0.997470*(puWeightDown/puWeight)'], - 'WW' : ['1.004449*(puWeightUp/puWeight)', '0.995660*(puWeightDown/puWeight)'], - 'WWewk' : ['1.002122*(puWeightUp/puWeight)', '0.998087*(puWeightDown/puWeight)'], - 'ggWW' : ['1.004870*(puWeightUp/puWeight)', '0.995315*(puWeightDown/puWeight)'], - 'WZ' : ['0.999330*(puWeightUp/puWeight)', '1.000992*(puWeightDown/puWeight)'], - 'ZZ' : ['0.999469*(puWeightUp/puWeight)', '1.000751*(puWeightDown/puWeight)'], - 'VVV' : ['1.003485*(puWeightUp/puWeight)', '0.997561*(puWeightDown/puWeight)'], - 'ggH_hww' : ['1.003677*(puWeightUp/puWeight)', '0.995996*(puWeightDown/puWeight)'], - 'qqH_hww' : ['1.003747*(puWeightUp/puWeight)', '0.995878*(puWeightDown/puWeight)'], - }, - 'AsLnN' : '0', -} +##nuisances['met'] = { + ##'name' : 'CMS_scale_met_2018', + ##'kind' : 'suffix', + ##'type' : 'shape', + ##'mapUp' : 'METup', + ##'mapDown' : 'METdo', + ##'samples' : dict((skey, ['1', '1']) for skey in mc), + ##'folderUp' : makeMCDirectory('METup_suffix'), + ##'folderDown': makeMCDirectory('METdo_suffix'), + ##'AsLnN' : '0' +##} -### PU ID SF uncertainty -puid_syst = ['Jet_PUIDSF_up/Jet_PUIDSF', 'Jet_PUIDSF_down/Jet_PUIDSF'] +###### Pileup -nuisances['jetPUID'] = { - 'name' : 'CMS_eff_j_PUJET_id_2018', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, puid_syst) for skey in mc) -} +## puWeight_UL2018 +#nuisances['PU'] = { + #'name' : 'CMS_pileup_2018', + #'kind' : 'weight', + #'type' : 'shape', + #'samples' : { + #'DY' : ['0.998687*(puWeightUp/puWeight)', '1.001976*(puWeightDown/puWeight)'], + #'top' : ['1.002595*(puWeightUp/puWeight)', '0.997470*(puWeightDown/puWeight)'], + #'WW' : ['1.004449*(puWeightUp/puWeight)', '0.995660*(puWeightDown/puWeight)'], + #'WWewk' : ['1.002122*(puWeightUp/puWeight)', '0.998087*(puWeightDown/puWeight)'], + #'ggWW' : ['1.004870*(puWeightUp/puWeight)', '0.995315*(puWeightDown/puWeight)'], + #'WZ' : ['0.999330*(puWeightUp/puWeight)', '1.000992*(puWeightDown/puWeight)'], + #'ZZ' : ['0.999469*(puWeightUp/puWeight)', '1.000751*(puWeightDown/puWeight)'], + #'VVV' : ['1.003485*(puWeightUp/puWeight)', '0.997561*(puWeightDown/puWeight)'], + #'ggH_hww' : ['1.003677*(puWeightUp/puWeight)', '0.995996*(puWeightDown/puWeight)'], + #'qqH_hww' : ['1.003747*(puWeightUp/puWeight)', '0.995878*(puWeightDown/puWeight)'], + #}, + #'AsLnN' : '0', +#} -### PS and UE +#### PU ID SF uncertainty -nuisances['PS_ISR'] = { - 'name' : 'PS_WH_hww_ISR', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['PSWeight[2]', 'PSWeight[0]']) for skey in mc), - 'AsLnN' : '0', -} +#puid_syst = ['Jet_PUIDSF_up/Jet_PUIDSF', 'Jet_PUIDSF_down/Jet_PUIDSF'] -nuisances['PS_FSR'] = { - 'name' : 'PS_WH_hww_FSR', - 'kind' : 'weight', - 'type' : 'shape', - 'samples' : dict((skey, ['PSWeight[3]', 'PSWeight[1]']) for skey in mc), - 'AsLnN' : '0', -} +#nuisances['jetPUID'] = { + #'name' : 'CMS_eff_j_PUJET_id_2018', + #'kind' : 'weight', + #'type' : 'shape', + #'samples' : dict((skey, puid_syst) for skey in mc) +#} -nuisances['UE_CP5'] = { - 'name' : 'CMS_WH_hww_UE', - 'skipCMS' : 1, - 'type' : 'lnN', - 'samples' : dict((skey, '1.015') for skey in mc), -} +#### PS and UE -# Charge flip efficiency -#nuisances['chargeFlipEff'] = { - #'name' : 'CMS_whss_chargeFlipEff_2018', +#nuisances['PS_ISR'] = { + #'name' : 'PS_WH_hww_ISR', #'kind' : 'weight', #'type' : 'shape', - #'samples' : dict((skey, ['1-ttHMVA_eff_err_flip_2l', '1+ttHMVA_eff_err_flip_2l']) for skey in ['DY','DATA']), - #'cuts' : [cut for cut in cuts if ('_ee_' in cut or '_em_' in cut)] + #'samples' : dict((skey, ['PSWeight[2]', 'PSWeight[0]']) for skey in mc), + #'AsLnN' : '0', #} -# Generic "cross section uncertainties" -nuisances['WgStar'] = { - 'name' : 'CMS_hww_WgStarScale', - 'type' : 'lnN', - 'samples' : { - 'WgS' : '1.25' - } -} +#nuisances['PS_FSR'] = { + #'name' : 'PS_WH_hww_FSR', + #'kind' : 'weight', + #'type' : 'shape', + #'samples' : dict((skey, ['PSWeight[3]', 'PSWeight[1]']) for skey in mc), + #'AsLnN' : '0', +#} + +#nuisances['UE_CP5'] = { + #'name' : 'CMS_WH_hww_UE', + #'skipCMS' : 1, + #'type' : 'lnN', + #'samples' : dict((skey, '1.015') for skey in mc), +#} + +## Charge flip efficiency +##nuisances['chargeFlipEff'] = { + ##'name' : 'CMS_whss_chargeFlipEff_2018', + ##'kind' : 'weight', + ##'type' : 'shape', + ##'samples' : dict((skey, ['1-ttHMVA_eff_err_flip_2l', '1+ttHMVA_eff_err_flip_2l']) for skey in ['DY','DATA']), + ##'cuts' : [cut for cut in cuts if ('_ee_' in cut or '_em_' in cut)] +##} + +## Generic "cross section uncertainties" +#nuisances['WgStar'] = { + #'name' : 'CMS_hww_WgStarScale', + #'type' : 'lnN', + #'samples' : { + #'WgS' : '1.25' + #} +#} + + +### AM: so far commented ... +######################################################################## + ## Use the following if you want to apply the automatic combine MC stat nuisances. nuisances['stat'] = { diff --git a/Hgg/2018UL/plot.py b/Hgg/2018UL/plot.py index 0c48f687..2e236206 100644 --- a/Hgg/2018UL/plot.py +++ b/Hgg/2018UL/plot.py @@ -91,7 +91,7 @@ #} groupPlot['Hgluglu'] = { - 'nameHR' : 'H>gluglu', + 'nameHR' : 'H>gluglu x 100', 'isSignal' : 1, 'color' : 632, # kRed 'samples' : ['Hgluglu'] @@ -172,7 +172,7 @@ 'color' : 632, # kRed 'isSignal' : 2, 'isData' : 0, - 'scale' : 1 + 'scale' : 100 #'scale' : 0.000033658 # I missed the BR Z>ll and a *1000 too much } diff --git a/Hgg/2018UL/samples.py b/Hgg/2018UL/samples.py index a17b4a3a..51cc488b 100644 --- a/Hgg/2018UL/samples.py +++ b/Hgg/2018UL/samples.py @@ -131,7 +131,7 @@ def addSampleWeight(samples, sampleName, sampleNameType, weight): "name": files, #"weight": mcCommonWeight, --> missing post processing #"weight": 1, - "weight": "baseW*genWeight*0.8839*0.08187*0.033658", + "weight": "baseW*genWeight*0.8839*0.08187*0.033658*3", "FilesPerJob": 1, } @@ -145,12 +145,12 @@ def addSampleWeight(samples, sampleName, sampleNameType, weight): # and the branching ratio: # https://twiki.cern.ch/twiki/bin/view/LHCPhysics/CERNYellowReportPageBR # 8.187E-02 -# BR Z>ll: 3.3658% +# BR Z>ll: 3.3658% x 3 # From https://pdg.lbl.gov/2018/listings/rpp2018-list-z-boson.pdf # # ZH_HToGluGlu_ZToLL_13TeV_powheg_pythia8 # -# 59000×0.8839×0.08187×0.033658 +# 59000×0.8839×0.08187×0.033658×3 # ########################################### diff --git a/Hgg/2018UL/structure.py b/Hgg/2018UL/structure.py index 37a9fb5d..9d287f03 100644 --- a/Hgg/2018UL/structure.py +++ b/Hgg/2018UL/structure.py @@ -1,4 +1,6 @@ +# # structure configuration for datacard +# # keys here must match keys in samples.py @@ -57,6 +59,15 @@ # Higgs + +structure['Hgluglu'] = { + 'isSignal' : 1, + 'isData' : 0, + #'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity +} + + + structure['ggH_hww'] = { 'isSignal' : 0, 'isData' : 0, @@ -78,15 +89,15 @@ } structure['WH_hww_plus'] = { - 'isSignal' : 1, + 'isSignal' : 0, 'isData' : 0, - 'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity + #'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity } structure['WH_hww_minus'] = { - 'isSignal' : 1, + 'isSignal' : 0, 'isData' : 0, - 'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity + #'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity } structure['ttH_hww'] = { @@ -110,15 +121,15 @@ } structure['WH_htt_plus'] = { - 'isSignal' : 1, + 'isSignal' : 0, 'isData' : 0, - 'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity + #'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity } structure['WH_htt_minus'] = { - 'isSignal' : 1, + 'isSignal' : 0, 'isData' : 0, - 'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity + #'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity } diff --git a/Hgg/2018UL/variables.py b/Hgg/2018UL/variables.py index 1634636c..a36c2e97 100644 --- a/Hgg/2018UL/variables.py +++ b/Hgg/2018UL/variables.py @@ -30,6 +30,14 @@ 'fold' :3 } + +variables['qglj1morebins'] = { + 'name': 'Alt(Jet_qgl,CleanJet_jetIdx[0],2)', + 'range': (20, -0.01, 0.3), + 'xaxis': 'QGL 1st jet', + 'fold' :3 +} + variables['qglj2'] = { 'name': 'Alt(Jet_qgl,CleanJet_jetIdx[1],2)', 'range': (100, -1, 1), @@ -124,6 +132,13 @@ 'fold' : 3 } + +variables['ptl1lessbins'] = { 'name': 'Lepton_pt[0]', + 'range' : (20,0,300), + 'xaxis' : 'p_{T} 1st lep', + 'fold' : 3 + } + variables['ptl2'] = { 'name': 'Lepton_pt[1]', 'range' : (60,0,300), 'xaxis' : 'p_{T} 2nd lep', diff --git a/Hgg/README.md b/Hgg/README.md index eacfbb09..deb528c9 100644 --- a/Hgg/README.md +++ b/Hgg/README.md @@ -56,3 +56,12 @@ Once all the jobs have finished, you can merge them: mkPlot +### to check kerberos + + klist + + +### make datacards + + mkDatacards --outputDirDatacard datacards + diff --git a/Hgg/cuts.py b/Hgg/cuts.py index 33684acf..20f8db4d 100644 --- a/Hgg/cuts.py +++ b/Hgg/cuts.py @@ -1,5 +1,10 @@ cuts = {} +# +# 2 leptons: pt> 25 GeV and 13 GeV +# 2 jets with pT>30 GeV +# + preselections = ' Lepton_pt[0]>25 \ && Lepton_pt[1]>13 \ && Alt(Lepton_pt, 2, 0) < 10 \ @@ -18,17 +23,17 @@ } } -cuts['vvcr'] = { - 'expr': 'abs(mll-91)>15 && bVeto', - 'categories':{ - 'ee': '(Lepton_pdgId[0]*Lepton_pdgId[1] == -11*11)', - 'mm': '(Lepton_pdgId[0]*Lepton_pdgId[1] == -13*13)', - } -} +# cuts['vvcr'] = { +# 'expr': 'abs(mll-91)>15 && bVeto', +# 'categories':{ +# 'ee': '(Lepton_pdgId[0]*Lepton_pdgId[1] == -11*11)', +# 'mm': '(Lepton_pdgId[0]*Lepton_pdgId[1] == -13*13)', +# } +# } cuts['dycr'] = { - 'expr': 'abs(mll-91)<15 && bVeto && detajj < 3', + 'expr': 'abs(mll-91)<15 && bVeto', 'categories':{ 'ee': '(Lepton_pdgId[0]*Lepton_pdgId[1] == -11*11)', 'mm': '(Lepton_pdgId[0]*Lepton_pdgId[1] == -13*13)', @@ -36,7 +41,7 @@ } cuts['sr'] = { - 'expr': 'abs(mll-91)<15 && bVeto && detajj >= 3', + 'expr': 'abs(mll-91)<15 && bVeto && Jet_qgl[0]<0.5 && Jet_qgl[1]<0.5', 'categories':{ 'ee': '(Lepton_pdgId[0]*Lepton_pdgId[1] == -11*11)', 'mm': '(Lepton_pdgId[0]*Lepton_pdgId[1] == -13*13)', diff --git a/Hgg/plot.py b/Hgg/plot.py index 4cd15aff..8250a432 100644 --- a/Hgg/plot.py +++ b/Hgg/plot.py @@ -43,7 +43,8 @@ groupPlot['DY'] = { 'nameHR' : 'DY', 'isSignal' : 0, - 'color' : ROOT.kGreen-7, + #'color' : ROOT.kGreen-7, + 'color' : ROOT.kGreen+2, 'samples' : ['DY'] } @@ -60,7 +61,7 @@ groupPlot['Zjj'] = { 'nameHR': 'Zjj', - 'isSignal' : 1, + 'isSignal' : 0, 'color': 600, # kBlue 'samples' : ['Zjj'] } diff --git a/Hgg/samples.py b/Hgg/samples.py index bba0aa46..18b98859 100644 --- a/Hgg/samples.py +++ b/Hgg/samples.py @@ -105,6 +105,23 @@ def addSampleWeight(samples, sampleName, sampleNameType, weight): mcCommonWeight = "XSWeight*SFweight*PromptGenLepMatch2l*METFilter_MC" + + +###### H>gluglu ####### + +#files = nanoGetSampleFiles("/eos/user/a/amassiro/HIG/", "ZHgg") +#files = nanoGetSampleFiles("/eos/user/a/amassiro/HIG/ZHggPostProc/Summer20UL18_106x_nAODv9_Full2018v9/MCFull2018v9/", "") + +#samples["Hgluglu"] = { + #"name": files, + #"weight": mcCommonWeight, + #"FilesPerJob": 1, +#} + + + + + ###### Zjj EWK ####### files = nanoGetSampleFiles(mcDirectory, "EWK_LLJJ_MLL-50_MJJ-120") diff --git a/Hgg/variables.py b/Hgg/variables.py index 1de7a23a..a6d8dd79 100644 --- a/Hgg/variables.py +++ b/Hgg/variables.py @@ -20,13 +20,13 @@ } variables['mjj'] = { 'name': 'mjj', # variable name - 'range' : (20, 200, 3000), # variable range + 'range' : (20, 0, 200), # variable range 'xaxis' : 'm_{jj} [GeV]', # x axis name 'fold' :3 } variables['mjjbins'] = { 'name': 'mjj', # variable name - 'range' : (5, 500, 4000), # variable range + 'range' : (100, 0, 200), # variable range 'xaxis' : 'm_{jj} [GeV]', # x axis name 'fold' :3 } @@ -37,39 +37,6 @@ 'fold' : 3 } - -variables['ptll_few'] = { 'name': 'ptll', - #'range': ([ 30., 63, 134, 284, 450, 600. ],), - #'range': ([ 30., 63, 134, 284, 600. ],), - 'range': ([ 30., 63, 134, 600. ],), - 'xaxis' : 'p_{T}^{ll} [GeV]', - 'fold' : 3, - #'setLogx': 1 - } - -variables['ptll_few_l'] = { 'name': 'ptll', - #'range': ([ 30., 63, 134, 284, 450, 600. ],), - #'range': ([ 30., 63, 134, 284, 600. ],), - 'range': ([ 30., 40, 63, 98, 134, 367, 600. ],), - 'xaxis' : 'p_{T}^{ll} [GeV]', - 'fold' : 3, - #'setLogx': 1 - } - -variables['ptll_few_c'] = { 'name': 'ptll', - #'range': ([ 30., 63, 134, 284, 450, 600. ],), - #'range': ([ 30., 63, 134, 284, 600. ],), - 'range': ([ 63, 134, 600. ],), - 'xaxis' : 'p_{T}^{ll} [GeV]', - 'fold' : 3, - #'setLogx': 1 - } - - - - - - variables['mll'] = { 'name': 'mll', 'range' : (100, 66,107), 'xaxis' : 'm_{ll} [GeV]', @@ -77,8 +44,6 @@ } - - variables['ptl1'] = { 'name': 'Lepton_pt[0]', 'range' : (60,30,300), 'xaxis' : 'p_{T} 1st lep', @@ -105,18 +70,6 @@ 'fold' : 3 } -variables['detajj_low'] = { 'name': 'newDetajj', - 'range' : (20, 0.0, 3.0), - 'xaxis' : '#Delta#eta_{jj}', - 'fold' : 3 - } - -variables['detajj_high'] = { 'name': 'newDetajj', - 'range' : (15, 3.0, 9.0), - 'xaxis' : '#Delta#eta_{jj}', - 'fold' : 3 - } - variables['dphijj'] = { 'name': 'dphijj', 'range' : (20, 0, 3.15), 'xaxis' : '#Delta#phi_{jj}', diff --git a/index.php b/index.php new file mode 100644 index 00000000..d95a0e33 --- /dev/null +++ b/index.php @@ -0,0 +1,113 @@ + + +<?php echo getcwd(); ?> + + + +

+

+"; +print "
  • Subdirs
  • "; +if (file_exists("../index.php")) { + print "
  • [..]
  • "; +} +$subdirs = glob('*', GLOB_ONLYDIR); +if (count($subdirs) != 0 ) { + foreach($subdirs as $dir) { + print "
  • [".$dir."]
  • "; + } +} +print ""; +?> +

    +

    Plots

    +

    Filter:

    + +
    +\n"; + print "

    $filename

    "; + print ""; + $others = array(); + foreach ($other_exts as $ex) { + $other_filename = str_replace('.png', $ex, $filename); + if (file_exists($other_filename)) { + array_push($others, "[" . $ex . "]"); + if ($ex != '.txt') array_push($displayed, $other_filename); + } + } + if ($others) print "

    Also as ".implode(', ',$others)."

    "; + print "
    "; + } +} +?> + +
    +

    Other files

    + +
    + + From c3c67f29f97b6b3a036e2c74cb0a71fbd5e88f1c Mon Sep 17 00:00:00 2001 From: Andrea Massironi Date: Thu, 6 Nov 2025 11:24:23 +0100 Subject: [PATCH 42/44] limit --- Hgg/2018UL/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Hgg/2018UL/README.md b/Hgg/2018UL/README.md index 36806da9..a40219a0 100644 --- a/Hgg/2018UL/README.md +++ b/Hgg/2018UL/README.md @@ -219,6 +219,6 @@ Once all the jobs have finished, you can merge them: + combine -M AsymptoticLimits datacards/Sig_opt6future/mjj/datacard.txt -t -1 --setParameters lumiscale=1 --expectSignal=1 - \ No newline at end of file From 4fc9c93bacdbee08b07bc98994d56e2593cf5749 Mon Sep 17 00:00:00 2001 From: Andrea Massironi Date: Tue, 3 Mar 2026 11:44:54 +0100 Subject: [PATCH 43/44] run 2 full --- Hgg/2018UL/aliases.py | 2 +- Hgg/2018UL/nuisances.py | 3 +- Hgg/2018UL/plot.py | 31 +++ Hgg/2018UL/samples.py | 30 +++ Hgg/2018UL/structure.py | 18 ++ Hgg/Run2/README.md | 60 ++++++ Hgg/Run2/configuration.py | 87 ++++++++ Hgg/Run2/cuts.py | 18 ++ Hgg/Run2/merge_configuration.py | 44 ++++ Hgg/Run2/nuisances.py | 91 ++++++++ Hgg/Run2/plot.py | 363 ++++++++++++++++++++++++++++++++ Hgg/Run2/samples.py | 66 ++++++ Hgg/Run2/structure.py | 177 ++++++++++++++++ Hgg/Run2/variables.py | 26 +++ 14 files changed, 1014 insertions(+), 2 deletions(-) create mode 100644 Hgg/Run2/README.md create mode 100644 Hgg/Run2/configuration.py create mode 100644 Hgg/Run2/cuts.py create mode 100644 Hgg/Run2/merge_configuration.py create mode 100644 Hgg/Run2/nuisances.py create mode 100644 Hgg/Run2/plot.py create mode 100644 Hgg/Run2/samples.py create mode 100644 Hgg/Run2/structure.py create mode 100644 Hgg/Run2/variables.py diff --git a/Hgg/2018UL/aliases.py b/Hgg/2018UL/aliases.py index d54d9516..2f6aeec6 100644 --- a/Hgg/2018UL/aliases.py +++ b/Hgg/2018UL/aliases.py @@ -17,7 +17,7 @@ # # AM: for the time being exclude the signal from the list of nuisances ... missing adequate post-processing # -mc_special = [skey for skey in samples if skey not in ('Fake', 'DATA', 'Hgluglu')] +mc_special = [skey for skey in samples if skey not in ('Fake', 'DATA', 'Hgluglu', 'qqZHgluglu', 'ggZHgluglu')] # LepCut2l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW diff --git a/Hgg/2018UL/nuisances.py b/Hgg/2018UL/nuisances.py index 63475552..c32bfefc 100644 --- a/Hgg/2018UL/nuisances.py +++ b/Hgg/2018UL/nuisances.py @@ -1,5 +1,6 @@ import sys - +import os + # Enable reading YR for Higgs XS and uncertainties sys.path.append('../macros/') #import HiggsXSection diff --git a/Hgg/2018UL/plot.py b/Hgg/2018UL/plot.py index 2e236206..5b67702b 100644 --- a/Hgg/2018UL/plot.py +++ b/Hgg/2018UL/plot.py @@ -98,6 +98,13 @@ } +groupPlot['HglugluAlt'] = { + 'nameHR' : 'H>gluglu (split) x 100', + 'isSignal' : 3, + # 'color' : 633, # kRed+1 + 'color' : 857, # kAzure -3 + 'samples' : ['ggZHgluglu', 'qqZHgluglu'] +} @@ -177,6 +184,30 @@ } +plot['ggZHgluglu'] = { + 'nameHR' : 'ggZHgluglu', + 'color' : 857, # kAzure -3 + # 'color' : 634, # kRed+2 + 'isSignal' : 3, + 'isData' : 0, + 'scale' : 100 + #'scale' : 0.000033658 # I missed the BR Z>ll and a *1000 too much +} + + +plot['qqZHgluglu'] = { + 'nameHR' : 'qqZHgluglu', + 'color' : 856, # kAzure -4 + # 'color' : 633, # kRed+1 + 'isSignal' : 3, + 'isData' : 0, + 'scale' : 100 + #'scale' : 0.000033658 # I missed the BR Z>ll and a *1000 too much +} + + + + ##################### # Other backgrounds # ##################### diff --git a/Hgg/2018UL/samples.py b/Hgg/2018UL/samples.py index 51cc488b..c9d20143 100644 --- a/Hgg/2018UL/samples.py +++ b/Hgg/2018UL/samples.py @@ -153,6 +153,36 @@ def addSampleWeight(samples, sampleName, sampleNameType, weight): # 59000×0.8839×0.08187×0.033658×3 # + + +files = nanoGetLocalSampleFiles("/eos/user/a/amassiro/HIG/ZHggPostProc/Summer20UL18_106x_nAODv9_Full2018v9/MCFull2018v9/", "ZHllHgg") + +samples["qqZHgluglu"] = { + "name": files, + #"weight": mcCommonWeight, --> missing post processing + #"weight": 1, + "weight": "baseW*genWeight*0.7612*0.08187*0.033658*3", + "FilesPerJob": 200, +} + + +# +# ggZH: 1.227E-01 pb +# + +files = nanoGetLocalSampleFiles("/eos/user/a/amassiro/HIG/ZHggPostProc/Summer20UL18_106x_nAODv9_Full2018v9/MCFull2018v9/", "ggZHllHgg") + +samples["ggZHgluglu"] = { + "name": files, + #"weight": mcCommonWeight, --> missing post processing + #"weight": 1, + "weight": "baseW*genWeight*0.1227*0.08187*0.033658*3", + "FilesPerJob": 200, +} + + + + ########################################### ############# BACKGROUNDS ############### ########################################### diff --git a/Hgg/2018UL/structure.py b/Hgg/2018UL/structure.py index 9d287f03..dbfafc03 100644 --- a/Hgg/2018UL/structure.py +++ b/Hgg/2018UL/structure.py @@ -66,6 +66,24 @@ #'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity } +structure['qqZHgluglu'] = { + 'isSignal' : 1, + 'isData' : 0, + #'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity +} + +structure['ggZHgluglu'] = { + 'isSignal' : 1, + 'isData' : 0, + #'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity +} + +structure['WHgluglu'] = { + 'isSignal' : 1, + 'isData' : 0, + #'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity +} + structure['ggH_hww'] = { diff --git a/Hgg/Run2/README.md b/Hgg/Run2/README.md new file mode 100644 index 00000000..4cc02e7d --- /dev/null +++ b/Hgg/Run2/README.md @@ -0,0 +1,60 @@ +# H > gluon gluon, Full Run 2 + +ZH production of H>gg + + +Assume all histograms for different years are already produced. + + + +### Merge the root files into one unique set + +This will create a new root file with the hadd of the proper files, and the variations. + +If the "up" ("down") variation is present in more than one year, then the different up/down histograms are added. + +If a shape variation (a nuisance) is present only in one year, then the nominal for the years for which is missing will be used and hadd. + +if a lnN is the same in all years, then it's used only once. It should be written explicitly in nuisances.py. Nothing to be done by mkMergeYears. + +If a lnN is present only in one year, then the nuisance has to be transformed into a shape: the nominal sample for the specific year is copied, then it's scaled up/down according to the value in lnN, and lastly it's hadd to the nominal sample of the other years for which the nuisance is missing. + + + mkMergeYears + +### Run + + +(development folder) + + cd /afs/cern.ch/user/a/amassiro/work/Latinos/Framework/Hgg/Analysis/PlotsConfigurationsRun3/Hgg/Run2/ + cd /afs/cern.ch/user/a/amassiro/work/Latinos/Framework/mkShapesRDF/ + source start.sh + cd - + +### Merge + + mkMergeYears + + + + +### Plot distributions + + mkPlot + mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png + mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png --plotNormalizedDistributions + + +### to check kerberos + + klist + + +### make datacards + + mkDatacards --outputDirDatacard datacards + + + + diff --git a/Hgg/Run2/configuration.py b/Hgg/Run2/configuration.py new file mode 100644 index 00000000..e804bddb --- /dev/null +++ b/Hgg/Run2/configuration.py @@ -0,0 +1,87 @@ +import sys,inspect + +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' + +# Tag used to identify the configuration folder version +tag = 'Hgg_FullRun2' + +# File to use as runner script, default uses mkShapesRDF.shapeAnalysis.runner, otherwise specify path to script +runnerFile = "default" + +# Output file name +outputFile = "mkShapes__{}.root".format(tag) + + +# Path to ouput folder +outputFolder = "rootFiles" + +# Path to batch folder (used for condor submission) +batchFolder = "condor" + +# Path to configuration folder (will contain all the compiled configuration files) +configsFolder = "configs" + +# File with dict of variables +variablesFile = "variables.py" + +# File with dict of cuts +cutsFile = "cuts.py" + +# File with dict of samples +samplesFile = "samples.py" + +# File with dict of samples for plotting +plotFile = 'plot.py' + +# File with dict of structure (used to define processes in combine) +structureFile = "structure.py" + +# Nuisances file for mkDatacards and for mkShape +nuisancesFile = "nuisances.py" + +# Path to folder where to save plots +plotPath = 'plots_' + tag + +# This lines are executed right before the runner on the condor node +mountEOS = [] + +# List of imports to import when compiling the whole configuration folder, it should not contain imports used by configuration.py +imports = ["os", "glob", ("collections", "OrderedDict"), "ROOT"] + +# List of files to compile +filesToExec = [ + samplesFile, + variablesFile, + cutsFile, + plotFile, + nuisancesFile, + structureFile, +] + +# List of variables to keep in the compiled configuration folder +varsToKeep = [ + "batchVars", + "outputFolder", + "batchFolder", + "configsFolder", + "outputFile", + "runnerFile", + "tag", + "samples", + "variables", + ("cuts", {"cuts": "cuts", "preselections": "preselections"}), + ("plot", {"plot": "plot", "groupPlot": "groupPlot", "legend": "legend"}), + "nuisances", + "structure", + "lumi", +] + +# List of variables to keep in the batch submission script (script.py) +batchVars = varsToKeep[varsToKeep.index("samples") :] + +varsToKeep += ['plotPath'] + + diff --git a/Hgg/Run2/cuts.py b/Hgg/Run2/cuts.py new file mode 100644 index 00000000..3b74e884 --- /dev/null +++ b/Hgg/Run2/cuts.py @@ -0,0 +1,18 @@ + + + +# cuts['Sig_mllZ'] = { + # } + + +cuts['Sig'] = { + 'expr' : 'Alt(Lepton_pt,2,0) < 15 && (abs(Lepton_pdgId[0])==abs(Lepton_pdgId[1])) && Alt(CleanJet_pt,2,0) < 30 && Alt(CleanJet_pt,1,0) > 30', + 'categories' : { + 'mllZ' : 'mll>60 && mll< 120', + # 'two' : 'mll>60 && mll< 120', + } + } + + + +# cuts['single'] = 'mll>60 && mll< 120' diff --git a/Hgg/Run2/merge_configuration.py b/Hgg/Run2/merge_configuration.py new file mode 100644 index 00000000..c7957b34 --- /dev/null +++ b/Hgg/Run2/merge_configuration.py @@ -0,0 +1,44 @@ + +# tag: used to define root file name and more +tag = 'ggHgg_full_Run2' + +# File with dict of variables +variablesFile = "variables.py" + +# File with dict of cuts +cutsFile = "cuts.py" + +# file with list of samples +samplesFile = "samples.py" + +# file with dict of samples for plotting +# plotFile = 'plot.py' + +# structure file for datacard +structureFile = "structure.py" + +# nuisances file for mkDatacards and for mkShape +nuisancesFile = "nuisances.py" + + + + +# Folders to merge +foldersToMerge = { + + "2017UL" : { + "folder" : "../2017UL", + "tag" : "Hgg2l_2017", + }, + + "2018UL" : { + "folder" : "../2018UL", + "tag" : "WHSS_OSCR_2018_v9_chargeAsymmetry_Mu82_EleUL90", + } + + } + + + + + diff --git a/Hgg/Run2/nuisances.py b/Hgg/Run2/nuisances.py new file mode 100644 index 00000000..3353e8e7 --- /dev/null +++ b/Hgg/Run2/nuisances.py @@ -0,0 +1,91 @@ +import sys + +# Enable reading YR for Higgs XS and uncertainties +sys.path.append('../macros/') +#import HiggsXSection +#HiggsXS = HiggsXSection.HiggsXSection() + +# nuisances = {} + +limitFiles = -1 + +# +# AM: for the time being exclude the signal from the list of nuisances ... missing adequate post-processing +# +mc = [skey for skey in samples if skey not in ('Fake', 'DATA', 'Hgluglu')] +mcln = [skey for skey in samples if skey not in ('Fake', 'DATA')] + +################################ EXPERIMENTAL UNCERTAINTIES ################################# + +#### Luminosity + +# https://twiki.cern.ch/twiki/bin/view/CMS/LumiRecommendationsRun2#LumiComb +# Uncorrelated 2016 1.0 +# Uncorrelated 2017 2.0 +# Uncorrelated 2018 1.5 +# Correlated 2016, 2017, 2018 0.6, 0.9, 2.0 +# Correlated 2017, 2018 0.6, 0.2 + +nuisances['lumi_Uncorrelated_2017'] = { + 'name' : 'lumi_13TeV_2017', + 'type' : 'shape', + 'samples' : dict((skey, '1.020') for skey in mc if skey not in ['WZ']), + 'perYearType' : 'lnN' +} + +nuisances['lumi_Uncorrelated_2018'] = { + 'name' : 'lumi_13TeV_2018', + 'type' : 'shape', + 'samples' : dict((skey, '1.015') for skey in mcln if skey not in ['blabla']), + 'perYearType' : 'lnN' +} + +nuisances['lumi_Correlated_2017_2018'] = { + 'name' : 'lumi_13TeV_1718', + 'type' : 'shape', + 'samples' : dict((skey, '1.002') for skey in mcln if skey not in ['blabla']), + 'perYearType' : 'lnN' +} + +nuisances['lumi_Correlated_Run2'] = { + 'name' : 'lumi_13TeV_correlated', + 'type' : 'shape', + 'samples' : dict((skey, '1.020') for skey in mcln if skey not in ['blabla']), + 'perYearType' : 'lnN' +} + + + + +nuisances['test_lnn'] = { + 'name' : 'mynuisance', + 'type' : 'lnN', + 'samples' : dict((skey, '1.006') for skey in mc if skey not in ['WZ']), + 'perYearType' : 'lnN' +} + + + +# +# AM: if different for the different years then to be tranformed into a shape uncertainty +# + + + + + + + + +## Use the following if you want to apply the automatic combine MC stat nuisances. +nuisances['stat'] = { + 'type' : 'auto', + 'maxPoiss' : '10', + 'includeSignal' : '0', + 'samples' : {} +} +# nuisance ['maxPoiss'] = Number of threshold events for Poisson modelling +# nuisance ['includeSignal'] = Include MC stat nuisances on signal processes (1=True, 0=False) + +for n in nuisances.values(): + n['skipCMS'] = 1 diff --git a/Hgg/Run2/plot.py b/Hgg/Run2/plot.py new file mode 100644 index 00000000..08b1e221 --- /dev/null +++ b/Hgg/Run2/plot.py @@ -0,0 +1,363 @@ +# plot configuration + +# Groups of samples to improve the plots. +# If not defined, normal plots is used + +groupPlot = {} + +groupPlot['top'] = { + 'nameHR' : 'tW+ and t#bar{t}', + 'isSignal' : 0, + 'color' : 400, # kYellow + 'samples' : ['top'] +} + +#groupPlot['Fake'] = { + #'nameHR' : 'Non-prompt', + #'isSignal' : 0, + #'color' : 921, # kGray + 1 + #'samples' : ['Fake_mm','Fake_em','Fake_ee'] +#} + +groupPlot['DY'] = { + 'nameHR' : "DY", + 'isSignal' : 0, + 'color' : 418, # kGreen+2 + 'samples' : ['DY'] +} + +groupPlot['VVV'] = { + 'nameHR' : 'VVV', + 'isSignal' : 0, + 'color' : 857, # kAzure -3 + 'samples' : ['VVV'] +} + +groupPlot['ZZ'] = { + 'nameHR' : "ZZ", + 'isSignal' : 0, + 'color' : 617, # kViolet + 1 + 'samples' : ['ZZ'] +} + +groupPlot['WZ'] = { + 'nameHR' : "WZ", + 'isSignal' : 0, + 'color' : 619, # kViolet + 1 + 'samples' : ['WZ'] +} + +groupPlot['Vg'] = { + 'nameHR' : "V#gamma", + 'isSignal' : 0, + #'color' : 810, # kOrange + 10 + 'color' : 408, # kGreen - 10 + 'samples' : ['Vg'] +} + +groupPlot['VgS'] = { + 'nameHR' : "V#gamma*", + 'isSignal' : 0, + 'color' : 409, # kGreen - 9 + 'samples' : ['VgS'] +} + +#groupPlot['ZgS'] = { + #'nameHR' : "Z#gamma*", + #'isSignal' : 0, + #'color' : 617, + #'samples' : ['ZgS'] +#} + +groupPlot['Higgs'] = { + 'nameHR' : 'H>WW/#tau#tau', + 'isSignal' : 0, + 'color' : 634, # kRed+2 + 'samples' : ['ggH_hww','qqH_hww','ZH_hww','ggZH_hww','ttH_hww','ggH_htt','qqH_htt','ZH_htt'] +} + +#groupPlot['WH_minus'] = { + #'nameHR' : 'W^{-} H (x 10)', + #'isSignal' : 0, + #'color' : 600, # kBlue + #'samples' : ['WH_hww_minus','WH_htt_minus'] +#} + +#groupPlot['WH_plus'] = { + #'nameHR' : 'W^{+} H (x 10)', + #'isSignal' : 0, + #'color' : 632, # kRed + #'samples' : ['WH_hww_plus', 'WH_htt_plus'] +#} + +groupPlot['Hgluglu'] = { + 'nameHR' : 'H>gluglu x 100', + 'isSignal' : 1, + 'color' : 632, # kRed + 'samples' : ['Hgluglu'] +} + + +# groupPlot['HglugluAlt'] = { +# 'nameHR' : 'H>gluglu (split) x 100', +# 'isSignal' : 3, +# # 'color' : 633, # kRed+1 +# 'color' : 857, # kAzure -3 +# 'samples' : ['ggZHgluglu', 'qqZHgluglu'] +# } + + + + +# keys here must match keys in samples.py + +plot = {} + + +plot['top'] = { + 'nameHR' : 'tW and t#bar{t}', + 'color' : 400, # kYellow + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0, +} + +plot['DY'] = { + 'nameHR' : 'DY', + 'color' : 418, # kGreen+2 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0, +} + +plot['Vg'] = { + 'nameHR' : 'Vg', + 'color' : 859, # kAzure -1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['VgS'] = { + 'nameHR' : 'VgS', + 'color' : 859, # kAzure -1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['WZ'] = { + 'nameHR' : 'WZ', + 'color' : 858, # kAzure -2 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.138 # NLO -> NNLO k-factor! +} + +plot['ZZ'] = { + 'nameHR' : 'ZZ', + 'color' : 858, # kAzure -2 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['VVV'] = { + 'nameHR' : 'VVV', + 'color' : 857, # kAzure -3 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +########### +# Signals # +########### + +plot['Hgluglu'] = { + 'nameHR' : 'Hgluglu', + 'color' : 632, # kRed + 'isSignal' : 2, + 'isData' : 0, + 'scale' : 100 + #'scale' : 0.000033658 # I missed the BR Z>ll and a *1000 too much +} + + +plot['ggZHgluglu'] = { + 'nameHR' : 'ggZHgluglu', + 'color' : 857, # kAzure -3 + # 'color' : 634, # kRed+2 + 'isSignal' : 3, + 'isData' : 0, + 'scale' : 100 + #'scale' : 0.000033658 # I missed the BR Z>ll and a *1000 too much +} + + +plot['qqZHgluglu'] = { + 'nameHR' : 'qqZHgluglu', + 'color' : 856, # kAzure -4 + # 'color' : 633, # kRed+1 + 'isSignal' : 3, + 'isData' : 0, + 'scale' : 100 + #'scale' : 0.000033658 # I missed the BR Z>ll and a *1000 too much +} + + + + +##################### +# Other backgrounds # +##################### + +# HWW + +plot['ggH_hww'] = { + 'nameHR' : 'ggH_hww', + 'color' : 632, # kRed + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['qqH_hww'] = { + 'nameHR' : 'qqH_hww', + 'color' : 632+1, # kRed+1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['ZH_hww'] = { + 'nameHR' : 'ZH_hww', + 'color' : 632+3, # kRed+3 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['ggZH_hww'] = { + 'nameHR' : 'ggZH_hww', + 'color' : 632+4, # kRed+4 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['WH_hww_plus'] = { + 'nameHR' : 'WH_hww_plus', + 'color' : 632+2, # kRed+2 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 10 +} + +plot['WH_hww_minus'] = { + 'nameHR' : 'WH_hww_minus', + 'color' : 600, # kBlue + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 10 +} + +plot['ttH_hww'] = { + 'nameHR' : 'ttH_hww', + 'color' : 632+3, # kRed+3 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + + +# Htautau + +plot['ggH_htt'] = { + 'nameHR' : 'ggH_htt', + 'color' : 632, # kRed + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['qqH_htt'] = { + 'nameHR' : 'qqH_htt', + 'color' : 632+1, # kRed+1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['ZH_htt'] = { + 'nameHR' : 'ZH_htt', + 'color' : 632+3, # kRed+3 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['WH_htt_plus'] = { + 'nameHR' : 'WH_htt_plus', + 'color' : 632+2, # kRed+2 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 10 +} + +plot['WH_htt_minus'] = { + 'nameHR' : 'WH_htt_minus', + 'color' : 632+2, # kRed+2 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 10 +} + + +######## +# Fake # +######## + +plot['Fake_em'] = { + 'nameHR' : 'Fake_em', + 'color' : 921, # kGray + 1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['Fake_ee'] = { + 'nameHR' : 'Fake_ee', + 'color' : 921, # kGray + 1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['Fake_mm'] = { + 'nameHR' : 'Fake_mm', + 'color' : 921, # kGray + 1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +######## +# Data # +######## + +plot['DATA'] = { + 'nameHR' : 'Data', + 'color' : 1 , + 'isSignal' : 0, + 'isData' : 1, + 'isBlind' : 0 +} + + +# Define legend + +legend = {} + +legend['lumi'] = 'L = 59.8 + 41.5 fb^{-1}' +legend['sqrt'] = '#sqrt{s} = 13 TeV' diff --git a/Hgg/Run2/samples.py b/Hgg/Run2/samples.py new file mode 100644 index 00000000..5f384fdf --- /dev/null +++ b/Hgg/Run2/samples.py @@ -0,0 +1,66 @@ +import os,glob + +# +# +# list of samples +# - maybe additional information might be added in the dictionary +# + +# samples = {} + +try: + len(samples) +except NameError: + # import collections + # samples = collections.OrderedDict() + samples = {} + + +samples["Hgluglu"] = { +} + +samples['DY'] = { +} + +samples['top'] = { +} + +samples['Vg'] = { +} + +samples['VgS'] = { +} + +samples['WZ'] = { +} + +samples['ZZ'] = { +} + +samples['VVV'] = { +} + +samples['ggH_hww'] = { +} + +samples['qqH_hww'] = { +} + +samples['ZH_hww'] = { +} + +samples['ggZH_hww'] = { +} + +samples['WH_hww_plus'] = { +} + +samples['WH_hww_minus'] = { +} + +samples['ttH_hww'] = { +} + +samples['DATA'] = { +} + diff --git a/Hgg/Run2/structure.py b/Hgg/Run2/structure.py new file mode 100644 index 00000000..b3b42ba3 --- /dev/null +++ b/Hgg/Run2/structure.py @@ -0,0 +1,177 @@ +# +# structure configuration for datacard +# + +# keys here must match keys in samples.py + +structure = {} + +structure['DY'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['top'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['WW'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['WWewk'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['ggWW'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['Vg'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['VgS'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['WZ'] = { + 'isSignal' : 0, + 'isData' : 0, + 'scaleSampleForDatacard' : 1.138 # NLO -> NNLO k-factor +} + +structure['ZZ'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['VVV'] = { + 'isSignal' : 0, + 'isData' : 0, +} + + +# Higgs + +structure['Hgluglu'] = { + 'isSignal' : 1, + 'isData' : 0, + #'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity +} + +# structure['qqZHgluglu'] = { +# 'isSignal' : 1, +# 'isData' : 0, +# #'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity +# } +# +# structure['ggZHgluglu'] = { +# 'isSignal' : 1, +# 'isData' : 0, +# #'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity +# } +# +# structure['WHgluglu'] = { +# 'isSignal' : 1, +# 'isData' : 0, +# #'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity +# } +# + + +structure['ggH_hww'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['qqH_hww'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['ZH_hww'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['ggZH_hww'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['WH_hww_plus'] = { + 'isSignal' : 0, + 'isData' : 0, + #'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity +} + +structure['WH_hww_minus'] = { + 'isSignal' : 0, + 'isData' : 0, + #'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity +} + +structure['ttH_hww'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +# structure['ggH_htt'] = { +# 'isSignal' : 0, +# 'isData' : 0, +# } +# +# structure['qqH_htt'] = { +# 'isSignal' : 0, +# 'isData' : 0, +# } +# +# structure['ZH_htt'] = { +# 'isSignal' : 0, +# 'isData' : 0, +# } +# +# structure['WH_htt_plus'] = { +# 'isSignal' : 0, +# 'isData' : 0, +# #'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity +# } +# +# structure['WH_htt_minus'] = { +# 'isSignal' : 0, +# 'isData' : 0, +# #'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity +# } + + +# Fakes +structure['Fake_ee'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['Fake_mm'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['Fake_em'] = { + 'isSignal' : 0, + 'isData' : 0, +} + + +# Data +structure['DATA'] = { + 'isSignal' : 0, + 'isData' : 1 +} + + diff --git a/Hgg/Run2/variables.py b/Hgg/Run2/variables.py new file mode 100644 index 00000000..08e2094f --- /dev/null +++ b/Hgg/Run2/variables.py @@ -0,0 +1,26 @@ +# variables + +# 0 = not fold (default), 1 = fold underflowbin, 2 = fold overflow bin, 3 = fold underflow and overflow + +# variables = {} + +# variables['ttree_variable'] = { +# 'tree': {'LeptonPt1': 'Lepton_pt[0]'}, +# 'cuts': ['sr'] +# } + +variables['ptj1'] = { + 'name': 'Alt(CleanJet_pt,0,0)', + 'range': (100, 30, 500), + 'xaxis': 'p_{T} 1st jet', + 'fold' :3 +} + +variables['ptj2'] = { + 'name': 'Alt(CleanJet_pt,1,0)', + 'range': (100, 30, 500), + 'xaxis': 'p_{T} 2nd jet', + 'fold' :3 +} + + From 0adcf88c3931305972412f15c4bc5ede76c1f620 Mon Sep 17 00:00:00 2001 From: Andrea Massironi Date: Tue, 28 Apr 2026 15:58:44 +0200 Subject: [PATCH 44/44] add 2017 and 1-lepton --- Hgg/2017UL/README.md | 97 + Hgg/2017UL/aliases.py | 318 ++ Hgg/2017UL/configuration.py | 101 + Hgg/2017UL/cuts.py | 56 + Hgg/2017UL/nuisances.py | 87 + Hgg/2017UL/plot.py | 363 ++ Hgg/2017UL/samples.py | 468 +++ Hgg/2017UL/structure.py | 175 + Hgg/2017UL/variables.py | 195 ++ Hgg/2018UL1l/README.md | 224 ++ Hgg/2018UL1l/aliases.py | 438 +++ Hgg/2018UL1l/configuration.py | 101 + Hgg/2018UL1l/cuts.py | 33 + Hgg/2018UL1l/nuisances.py | 398 +++ Hgg/2018UL1l/plot.py | 402 +++ Hgg/2018UL1l/postproc.C | 43 + Hgg/2018UL1l/postproc.h | 5883 +++++++++++++++++++++++++++++++++ Hgg/2018UL1l/postprocData.C | 43 + Hgg/2018UL1l/postprocData.h | 5412 ++++++++++++++++++++++++++++++ Hgg/2018UL1l/repeat.sh | 27 + Hgg/2018UL1l/samples.py | 561 ++++ Hgg/2018UL1l/structure.py | 188 ++ Hgg/2018UL1l/variables.py | 175 + Hgg/Run2/nuisances.py | 8 + 24 files changed, 15796 insertions(+) create mode 100644 Hgg/2017UL/README.md create mode 100644 Hgg/2017UL/aliases.py create mode 100644 Hgg/2017UL/configuration.py create mode 100644 Hgg/2017UL/cuts.py create mode 100644 Hgg/2017UL/nuisances.py create mode 100644 Hgg/2017UL/plot.py create mode 100644 Hgg/2017UL/samples.py create mode 100644 Hgg/2017UL/structure.py create mode 100644 Hgg/2017UL/variables.py create mode 100644 Hgg/2018UL1l/README.md create mode 100644 Hgg/2018UL1l/aliases.py create mode 100644 Hgg/2018UL1l/configuration.py create mode 100644 Hgg/2018UL1l/cuts.py create mode 100644 Hgg/2018UL1l/nuisances.py create mode 100644 Hgg/2018UL1l/plot.py create mode 100644 Hgg/2018UL1l/postproc.C create mode 100644 Hgg/2018UL1l/postproc.h create mode 100644 Hgg/2018UL1l/postprocData.C create mode 100644 Hgg/2018UL1l/postprocData.h create mode 100644 Hgg/2018UL1l/repeat.sh create mode 100644 Hgg/2018UL1l/samples.py create mode 100644 Hgg/2018UL1l/structure.py create mode 100644 Hgg/2018UL1l/variables.py diff --git a/Hgg/2017UL/README.md b/Hgg/2017UL/README.md new file mode 100644 index 00000000..73170eb5 --- /dev/null +++ b/Hgg/2017UL/README.md @@ -0,0 +1,97 @@ +# H > gluon gluon + +ZH production of H>gg, 2017 + + +### Load the mkShapesRDF environment + +Here, we assume `PlotsConfigurationsRun3` was installed in the same directory as `mkShapesRDF`. E.g., let's assume we have a `Run3` directory where we installed both `mkShapesRDF` and `PlotsConfigurationsRun3`. + +Then, we can source the `mkShapesRDF` environment using these commands: + + cd /afs/cern.ch/user/a/amassiro/work/Latinos/Framework/Hgg/Analysis/PlotsConfigurationsRun3/Hgg/2017UL + + cd ../../../mkShapesRDF/ + source start.sh + cd - + + +(development folder) + + cd /afs/cern.ch/user/a/amassiro/work/Latinos/Framework/Hgg/Analysis/PlotsConfigurationsRun3/Hgg/2017UL + cd /afs/cern.ch/user/a/amassiro/work/Latinos/Framework/mkShapesRDF/ + source start.sh + cd - + + +### Compile the configuration folder + + mkShapesRDF -c 1 + +### Run the analysis + +Produce histograms using batch: + + mkShapesRDF -o 0 -f . -b 1 + + mkShapesRDF -c 1 -o 0 -f . -b 1 + + mkShapesRDF --submit + +Check jobs status: + + mkShapesRDF -o 1 -f . + + + mkShapesRDF --check + + +Resubmit failed jobs: + + mkShapesRDF -o 1 -f . -r 1 + + mkShapesRDF --resubmit 1 + + +Options meanings: +- -o: operationMode: + - 0 run analysis + - 1 check batch output and errs + - 2 merge root files +- -f: folder: it represents the path to the analysis folder +- -b: batch mode: + - 0 (default) runs on local + - 1 runs with condor +- -r: resubmit jobs: + -1 resubmit finished jobs with errors + - 2 resubmit running jobs + +### Merge rootfiles + +Once all the jobs have finished, you can merge them: + + mkShapesRDF -o 2 -f . + + mkShapesRDF --histoadd + +### Plot distributions + + mkPlot + mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png + mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png --plotNormalizedDistributions + + +### to check kerberos + + klist + + +### make datacards + + mkDatacards --outputDirDatacard datacards + + mkDatacards --outputDirDatacard datacards --onlyVariables mjjbins,mjj --onlyCuts Sig_opt4 + mkDatacards --outputDirDatacard datacards --onlyVariables mjjbins,mjj --onlyCuts Sig_opt5future + mkDatacards --outputDirDatacard datacards --onlyVariables mjjbins,mjj --onlyCuts Sig_opt6future + + diff --git a/Hgg/2017UL/aliases.py b/Hgg/2017UL/aliases.py new file mode 100644 index 00000000..70d91487 --- /dev/null +++ b/Hgg/2017UL/aliases.py @@ -0,0 +1,318 @@ +import os +import copy +import inspect + +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/DY_OS_CR +#/afs/cern.ch/user/a/amassiro/work/Latinos/Framework/Hgg/Analysis/PlotsConfigurationsRun3/Hgg/2018UL +configurations = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file +configurations = os.path.dirname(configurations) # 2018UL +configurations = os.path.dirname(configurations) # Hgg +#configurations = os.path.dirname(configurations) # PlotsConfigurationsRun3 + +aliases = {} +aliases = OrderedDict() + +mc = [skey for skey in samples if skey not in ('Fake', 'DATA')] + +# +# AM: for the time being exclude the signal from the list of nuisances ... missing adequate post-processing +# +mc_special = [skey for skey in samples if skey not in ('Fake', 'DATA', 'Hgluglu', 'qqZHgluglu', 'ggZHgluglu')] + + +# LepCut2l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW +eleWP = 'mvaFall17V2Iso_WP90' +muWP = 'cut_Tight_HWWW' + +aliases['LepWPCut'] = { + 'expr' : 'LepCut2l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW*\ + ( ((abs(Lepton_pdgId[0])==13 && Muon_mvaTTH[Lepton_muonIdx[0]]>0.82) || (abs(Lepton_pdgId[0])==11 && Lepton_mvaTTH_UL[0]>0.90)) \ + && ((abs(Lepton_pdgId[1])==13 && Muon_mvaTTH[Lepton_muonIdx[1]]>0.82) || (abs(Lepton_pdgId[1])==11 && Lepton_mvaTTH_UL[1]>0.90)) )', + #'samples': mc + ['DATA'] + 'samples': mc_special + ['DATA'] +} + +# Lepton SF (not considering the ttHMVA discriminant) +aliases['LepWPSF'] = { + 'expr' : 'LepSF2l__ele_'+eleWP+'__mu_'+muWP, + #'samples' : mc + 'samples' : mc_special +} + + + + +# Fake leptons transfer factor +aliases['fakeW'] = { + 'expr': 'fakeW2l_ele_'+eleWP+'_mu_'+muWP, + 'samples': ['Fake'] +} +# And variations - already divided by central values in formulas ! +aliases['fakeWEleUp'] = { + 'expr': 'fakeW2l_ele_'+eleWP+'_mu_'+muWP+'_EleUp', + 'samples': ['Fake'] +} +aliases['fakeWEleDown'] = { + 'expr': 'fakeW2l_ele_'+eleWP+'_mu_'+muWP+'_EleDown', + 'samples': ['Fake'] +} +aliases['fakeWMuUp'] = { + 'expr': 'fakeW2l_ele_'+eleWP+'_mu_'+muWP+'_MuUp', + 'samples': ['Fake'] +} +aliases['fakeWMuDown'] = { + 'expr': 'fakeW2l_ele_'+eleWP+'_mu_'+muWP+'_MuDown', + 'samples': ['Fake'] +} +aliases['fakeWStatEleUp'] = { + 'expr': 'fakeW2l_ele_'+eleWP+'_mu_'+muWP+'_statEleUp', + 'samples': ['Fake'] +} +aliases['fakeWStatEleDown'] = { + 'expr': 'fakeW2l_ele_'+eleWP+'_mu_'+muWP+'_statEleDown', + 'samples': ['Fake'] +} +aliases['fakeWStatMuUp'] = { + 'expr': 'fakeW2l_ele_'+eleWP+'_mu_'+muWP+'_statMuUp', + 'samples': ['Fake'] +} +aliases['fakeWStatMuDown'] = { + 'expr': 'fakeW2l_ele_'+eleWP+'_mu_'+muWP+'_statMuDown', + 'samples': ['Fake'] +} + + + + +# Charge-flip efficiencies and uncertainties +#aliases['ttHMVA_eff_flip_2l'] = { + #'linesToAdd' : [f'#include "{configurations}/macros/flipper_eff_class.cc"'], + #'linesToProcess' : ["ROOT.gInterpreter.Declare('flipper_eff flipper = flipper_eff(\"UL_2018\", 2, \"Total_SF\", \"false\");')"], + #'expr' : 'flipper(Lepton_pt, Lepton_eta, Lepton_pdgId)', + #'samples' : mc + ['DATA','Fake'], +#} + +#aliases['ttHMVA_eff_err_flip_2l'] = { + #'linesToAdd' : [f'#include "{configurations}/macros/flipper_eff_class.cc"'], + #'linesToProcess' : ["ROOT.gInterpreter.Declare('flipper_eff flipper_unc = flipper_eff(\"UL_2018\", 2, \"Total_SF\", \"false\");')"], + #'expr' : 'flipper_unc(Lepton_pt, Lepton_eta, Lepton_pdgId)', + #'samples' : mc + ['DATA','Fake'], +#} + + +# No jet with pt > 30 GeV +aliases['zeroJet'] = { + 'expr': 'Alt(CleanJet_pt, 0, 0) < 30.' +} + +aliases['oneJet'] = { + 'expr': 'Alt(CleanJet_pt, 0, 0) > 30. && Alt(CleanJet_pt, 1, 0) < 30.' +} + +aliases['multiJet'] = { + 'expr': 'Alt(CleanJet_pt, 1, 0) > 30.' +} + +#################################################################################### +# b tagging WPs: https://twiki.cern.ch/twiki/bin/view/CMS/BtagRecommendation106XUL17 +#################################################################################### + +# DeepB = DeepCSV +bWP_loose_deepB = '0.1355' +bWP_medium_deepB = '0.4506' +bWP_tight_deepB = '0.7738' + +# DeepFlavB = DeepJet +bWP_loose_deepFlavB = '0.0532' +bWP_medium_deepFlavB = '0.3040' +bWP_tight_deepFlavB = '0.7476' + + +# Actual algo and WP definition. BE CONSISTENT!! +bAlgo = 'DeepB' # ['DeepB', 'DeepFlavB' ] +bWP = bWP_medium_deepB # [bWP_loose_deepB, bWP_loose_deepFlavB] +bSF = 'deepcsv' # ['deepcsv', 'deepjet' ] + +# b veto +aliases['bVeto'] = { + 'expr': 'Sum(CleanJet_pt > 20. && abs(CleanJet_eta) < 2.5 && Take(Jet_btag{}, CleanJet_jetIdx) > {}) == 0'.format(bAlgo, bWP) +} + +aliases['bVetoSF'] = { + 'expr': 'TMath::Exp(Sum(LogVec((CleanJet_pt>20 && abs(CleanJet_eta)<2.5)*Take(Jet_btagSF_{}_shape, CleanJet_jetIdx)+1*(CleanJet_pt<20 || abs(CleanJet_eta)>2.5))))'.format(bSF), + #'samples': mc + 'samples' : mc_special +} + +# At least one b-tagged jet +aliases['bReq'] = { + 'expr': 'Sum(CleanJet_pt > 30. && abs(CleanJet_eta) < 2.5 && Take(Jet_btag{}, CleanJet_jetIdx) > {}) >= 1'.format(bAlgo, bWP) +} + +aliases['bReqSF'] = { + 'expr': 'TMath::Exp(Sum(LogVec((CleanJet_pt>30 && abs(CleanJet_eta)<2.5)*Take(Jet_btagSF_{}_shape, CleanJet_jetIdx)+1*(CleanJet_pt<30 || abs(CleanJet_eta)>2.5))))'.format(bSF), + #'samples': mc + 'samples' : mc_special +} + +# Top control region +aliases['topcr'] = { + 'expr': 'mtw2>30 && mll>50 && ((zeroJet && !bVeto) || bReq)' +} + +# WW control region +aliases['wwcr'] = { + 'expr': 'mth>60 && mtw2>30 && mll>100 && bVeto' +} + +# Overall b tag SF +aliases['btagSF'] = { + 'expr': '(bVeto || (topcr && zeroJet))*bVetoSF + (topcr && !zeroJet)*bReqSF', + #'samples': mc + 'samples' : mc_special +} +# +# for shift in ['jesAbsolute', 'jesAbsolute_2017', 'jesBBEC1', 'jesBBEC1_2017', 'jesEC2', +# 'jesEC2_2017', 'jesFlavorQCD', 'jesHF', 'jesHF_2017', 'jesRelativeBal', +# 'jesRelativeSample_2017']: +# for var in ['up','down']: +# aliases[f'Jet_btagSF_{bSF}_shape_{shift.replace("jes","JES")}{var[:2]}'] = { +# 'expr' : f'Jet_btagSF_{bSF}_shape_{var}_{shift}', +# 'samples' : mc +# } +# +# for shift in ['jesAbsolute', 'jesAbsolute_2017', 'jesBBEC1', 'jesBBEC1_2017', 'jesEC2', +# 'jesEC2_2017', 'jesFlavorQCD', 'jesHF', 'jesHF_2017', 'jesRelativeBal', +# 'jesRelativeSample_2017', 'lf', 'hf', 'lfstats1', 'lfstats2', +# 'hfstats1', 'hfstats2', 'cferr1', 'cferr2']: +# +# for targ in ['bVeto', 'bReq']: +# alias = aliases['%sSF%sup' % (targ, shift)] = copy.deepcopy(aliases['%sSF' % targ]) +# alias['expr'] = alias['expr'].replace('btagSF_{}_shape'.format(bSF), 'btagSF_{}_shape_up_{}'.format(bSF, shift)) +# +# alias = aliases['%sSF%sdown' % (targ, shift)] = copy.deepcopy(aliases['%sSF' % targ]) +# alias['expr'] = alias['expr'].replace('btagSF_{}_shape'.format(bSF), 'btagSF_{}_shape_down_{}'.format(bSF, shift)) +# +# aliases['btagSF%sup' % shift] = { +# 'expr': aliases['btagSF']['expr'].replace('SF', 'SF' + shift + 'up'), +# #'samples': mc +# 'samples' : mc_special +# } +# +# aliases['btagSF%sdown' % shift] = { +# 'expr': aliases['btagSF']['expr'].replace('SF', 'SF' + shift + 'down'), +# #'samples': mc +# 'samples' : mc_special +# } +# + +#################################################################################### +# End of b tagging pippone +#################################################################################### + +# Need to redefine PUID scale factors, so that they are double and not vectors +aliases['Jet_PUIDSF'] = { + 'expr' : 'TMath::Exp(Sum((Jet_jetId>=2)*LogVec(Jet_PUIDSF_loose)))', + #'samples': mc + 'samples' : mc_special +} + +aliases['Jet_PUIDSF_up'] = { + 'expr' : 'TMath::Exp(Sum((Jet_jetId>=2)*LogVec(Jet_PUIDSF_loose_up)))', + #'samples': mc + 'samples' : mc_special +} + +aliases['Jet_PUIDSF_down'] = { + 'expr' : 'TMath::Exp(Sum((Jet_jetId>=2)*LogVec(Jet_PUIDSF_loose_down)))', + #'samples': mc + 'samples' : mc_special +} + + +aliases['gstarLow'] = { + 'expr': 'Gen_ZGstar_mass > 0 && Gen_ZGstar_mass < 4', + 'samples': 'VgS' +} + +aliases['gstarHigh'] = { + 'expr': 'Gen_ZGstar_mass < 0 || Gen_ZGstar_mass > 4', + 'samples': 'WZ' +} + +# gen-matching to prompt only (GenLepMatch2l matches to *any* gen lepton) +aliases['PromptGenLepMatch2l'] = { + 'expr': 'Alt(Lepton_promptgenmatched, 0, 0) * Alt(Lepton_promptgenmatched, 1, 0)', + #'samples': mc + 'samples' : mc_special +} + +# # PostProcessing did not create (anti)topGenPt for ST samples with _ext1 +# lastcopy = (1 << 13) + +aliases['Top_pTrw'] = { + 'expr': '(topGenPt * antitopGenPt > 0.) * (TMath::Sqrt(TMath::Exp(0.0615 - 0.0005 * topGenPt) * TMath::Exp(0.0615 - 0.0005 * antitopGenPt))) + (topGenPt * antitopGenPt <= 0.)', + 'samples': ['top'] +} + +# data/MC scale factors +aliases['SFweight'] = { + #'expr': ' * '.join(['SFweight2l', 'LepWPCut', 'LepWPSF','Jet_PUIDSF', 'btagSF', 'LepWPttHMVASF']), + 'expr': ' * '.join(['SFweight2l', 'LepWPCut', 'LepWPSF','Jet_PUIDSF', 'btagSF']), + #'samples': mc + 'samples' : mc_special +} + +# variations +aliases['SFweightEleUp'] = { + 'expr': 'LepSF2l__ele_'+eleWP+'__Up', + #'samples': mc + 'samples' : mc_special +} +aliases['SFweightEleDown'] = { + 'expr': 'LepSF2l__ele_'+eleWP+'__Do', + #'samples': mc + 'samples' : mc_special +} + +aliases['SFweightMuUp'] = { + 'expr': 'LepSF2l__mu_'+muWP+'__Up', + #'samples': mc + 'samples' : mc_special +} +aliases['SFweightMuDown'] = { + 'expr': 'LepSF2l__mu_'+muWP+'__Do', + #'samples': mc + 'samples' : mc_special +} + +# TriggerSFWeight_2l:TriggerSFWeight_2l_u:TriggerSFWeight_2l_d +aliases['SFtriggUp'] = { + 'expr': 'TriggerSFWeight_2l_u/TriggerSFWeight_2l', + #'samples': mc + 'samples' : mc_special +} +aliases['SFtriggDown'] = { + 'expr': 'TriggerSFWeight_2l_d/TriggerSFWeight_2l', + #'samples': mc + 'samples' : mc_special +} + +# Veto events in the problematic region: +# electrons or jets in: +# (-1.57 < phi < -0.87) , (-2.5 < eta < -1.3) +aliases['hole_veto'] = { + 'expr': '( ( (Lepton_eta[0] < -1.3 && Lepton_eta[0] > -2.5 ) && (Lepton_phi[0] > -1.57 && Lepton_phi[0] < -0.87) && (abs(Lepton_pdgId[0])==11) ) \ + || ( (Lepton_eta[1] < -1.3 && Lepton_eta[1] > -2.5 ) && (Lepton_phi[1] > -1.57 && Lepton_phi[1] < -0.87) && (abs(Lepton_pdgId[1])==11) ) \ + || ( (Alt(CleanJet_eta, 0, 99) < -1.3 && (Alt(CleanJet_eta, 0, -99) > -2.5)) && (Alt(CleanJet_phi, 0, -99) > -1.57 && Alt(CleanJet_phi, 0, 99) < -0.87) ) \ + || ( (Alt(CleanJet_eta, 1, 99) < -1.3 && (Alt(CleanJet_eta, 1, -99) > -2.5)) && (Alt(CleanJet_phi, 1, -99) > -1.57 && Alt(CleanJet_phi, 1, 99) < -0.87) ) \ + ) ', +} + +# Evaluate BDT discriminant +#aliases['BDT_WHSS_TopSemileptonic_v9'] = { + #'linesToAdd' : ['#include "%s/macros/BDT_WHSS_TopSemileptonic_v9_class.cc"' % configurations], + #'linesToProcess' : ["ROOT.gInterpreter.Declare('BDT_WHSS_TopSemileptonic_v9 BDT_WHSS = BDT_WHSS_TopSemileptonic_v9(\"BDTG_6\",\"{0}/data/BDT/2018/WHSS/weights/TMVAClassification_BDTG_6.weights.xml\");')".format(configurations)], + #'expr' : 'BDT_WHSS(mll,mjj,mtw1,mtw2,ptll,mlljj20_whss,PuppiMET_pt,dphill,dphijj,dphillmet,dphilmet2,dphijet1met,CleanJet_pt,Jet_btagDeepB,CleanJet_jetIdx)', + #'samples' : mc + ['DATA','Fake'], +#} diff --git a/Hgg/2017UL/configuration.py b/Hgg/2017UL/configuration.py new file mode 100644 index 00000000..3c80fdc2 --- /dev/null +++ b/Hgg/2017UL/configuration.py @@ -0,0 +1,101 @@ +# Configuration file for charge asymmetry WHSS analysis using the UL 2018 dataset + +import sys,inspect + +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' + +# Tag used to identify the configuration folder version +tag = 'Hgg2l_2017' + +# File to use as runner script, default uses mkShapesRDF.shapeAnalysis.runner, otherwise specify path to script +runnerFile = "default" + +# Output file name +outputFile = "mkShapes__{}.root".format(tag) + + +# Path to ouput folder +outputFolder = "rootFiles" +# Path to ouput folder +#outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +#if site == 'kit': + #outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" + +# Path to batch folder (used for condor submission) +batchFolder = "condor" + +# Path to configuration folder (will contain all the compiled configuration files) +configsFolder = "configs" + +# Luminosity to normalize to (in 1/fb) +# https://github.com/latinos/LatinoAnalysis/blob/UL_production/NanoGardener/python/data/TrigMaker_cfg.py#L868 (874) +# +lumi = 41.48 + +# File with dict of aliases to define +aliasesFile = "aliases.py" + +# File with dict of variables +variablesFile = "variables.py" + +# File with dict of cuts +cutsFile = "cuts.py" + +# File with dict of samples +samplesFile = "samples.py" + +# File with dict of samples for plotting +plotFile = 'plot.py' + +# File with dict of structure (used to define processes in combine) +structureFile = "structure.py" + +# Nuisances file for mkDatacards and for mkShape +nuisancesFile = "nuisances.py" + +# Path to folder where to save plots +plotPath = 'plots_' + tag + +# This lines are executed right before the runner on the condor node +mountEOS = [] + +# List of imports to import when compiling the whole configuration folder, it should not contain imports used by configuration.py +imports = ["os", "glob", ("collections", "OrderedDict"), "ROOT"] + +# List of files to compile +filesToExec = [ + samplesFile, + aliasesFile, + variablesFile, + cutsFile, + plotFile, + nuisancesFile, + structureFile, +] + +# List of variables to keep in the compiled configuration folder +varsToKeep = [ + "batchVars", + "outputFolder", + "batchFolder", + "configsFolder", + "outputFile", + "runnerFile", + "tag", + "samples", + "aliases", + "variables", + ("cuts", {"cuts": "cuts", "preselections": "preselections"}), + ("plot", {"plot": "plot", "groupPlot": "groupPlot", "legend": "legend"}), + "nuisances", + "structure", + "lumi", +] + +# List of variables to keep in the batch submission script (script.py) +batchVars = varsToKeep[varsToKeep.index("samples") :] + +varsToKeep += ['plotPath'] diff --git a/Hgg/2017UL/cuts.py b/Hgg/2017UL/cuts.py new file mode 100644 index 00000000..f8499816 --- /dev/null +++ b/Hgg/2017UL/cuts.py @@ -0,0 +1,56 @@ +# cuts + +cuts = {} + +preselections = 'mll>12 \ + && Lepton_pt[0]>25 \ + && Lepton_pt[1]>10 \ + && (abs(Lepton_pdgId[1])==13 || Lepton_pt[1]>13) \ + && abs(Lepton_eta[0])<2.5 && abs(Lepton_eta[1])<2.5 \ + && bVeto \ + ' + + #&& bVeto \ + #&& PuppiMET_pt > 30 \ + #&& !hole_veto \ + + +## Same-sign control region in the 0 jet bin: used in the WH3l category. Considering different flavor to avoid DY +#cuts['wh3l_13TeV_OS_CR'] = { + #'expr' : 'Alt(Lepton_pt,2,0) < 15 && abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 11*13 && Alt(CleanJet_pt,0,0) < 30', + #'categories' : { + #'pt2ge20' : 'Lepton_pdgId[0]*Lepton_pdgId[1]<0', + #} +#} + + + +cuts['DY'] = { + 'expr' : 'Alt(Lepton_pt,2,0) < 15 && (abs(Lepton_pdgId[0])==abs(Lepton_pdgId[1]))', + 'categories' : { + '0j' : 'Alt(CleanJet_pt,0,0) < 30', + '1j' : 'Alt(CleanJet_pt,1,0) < 30 && Alt(CleanJet_pt,0,0) > 30', + '2j' : 'Alt(CleanJet_pt,2,0) < 30 && Alt(CleanJet_pt,1,0) > 30', + } +} + + + +cuts['Sig'] = { + 'expr' : 'Alt(Lepton_pt,2,0) < 15 && (abs(Lepton_pdgId[0])==abs(Lepton_pdgId[1])) && Alt(CleanJet_pt,2,0) < 30 && Alt(CleanJet_pt,1,0) > 30', + 'categories' : { + 'mllZ' : 'mll>60 && mll< 120', + 'mllZpt1' : 'mll>80 && mll< 100 && Lepton_pt[0]>40', + 'mllZpt1qgl' : 'mll>80 && mll< 100 && Lepton_pt[0]>40 && Alt(Jet_qgl,CleanJet_jetIdx[0],2)<0.5 && Alt(Jet_qgl,CleanJet_jetIdx[1],2)<0.5', + 'mllZpt1qglmet' : 'mll>80 && mll< 100 && Lepton_pt[0]>40 && Alt(Jet_qgl,CleanJet_jetIdx[0],2)<0.5 && Alt(Jet_qgl,CleanJet_jetIdx[1],2)<0.5 && PuppiMET_pt<60', + 'mllZpt1qglmetbVeto' : 'mll>80 && mll< 100 && Lepton_pt[0]>40 && Alt(Jet_qgl,CleanJet_jetIdx[0],2)<0.5 && Alt(Jet_qgl,CleanJet_jetIdx[1],2)<0.5 && PuppiMET_pt<60 && bVeto', + 'opt1' : 'mll>80 && mll< 100 && Lepton_pt[0]>40 && Alt(Jet_qgl,CleanJet_jetIdx[0],2)<0.5 && Alt(Jet_qgl,CleanJet_jetIdx[1],2)<0.5 && PuppiMET_pt<60 && bVeto && detajj<3', + 'opt2' : 'mll>80 && mll< 100 && Lepton_pt[0]>40 && Alt(Jet_qgl,CleanJet_jetIdx[0],2)<0.5 && Alt(Jet_qgl,CleanJet_jetIdx[1],2)<0.5 && PuppiMET_pt<60 && bVeto && detajj<3 && mjj<160 && mjj>60 && dphilljetjet>1', + 'opt3' : 'mll>80 && mll< 100 && Lepton_pt[0]>40 && Alt(Jet_qgl,CleanJet_jetIdx[0],2)<0.5 && Alt(Jet_qgl,CleanJet_jetIdx[1],2)<0.5 && PuppiMET_pt<60 && bVeto && detajj<3 && mjj<160 && mjj>60 && dphilljetjet>1 && Alt(Jet_btagDeepB,CleanJet_jetIdx[0],2)<0.2 && Alt(Jet_btagDeepB,CleanJet_jetIdx[1],2) < 0.2 && Alt(Jet_btagCSVV2,CleanJet_jetIdx[0],2)<0.7 && Alt(Jet_btagCSVV2,CleanJet_jetIdx[1],2)<0.7', + 'opt4' : 'mll>80 && mll< 100 && Lepton_pt[0]>40 && Alt(Jet_qgl,CleanJet_jetIdx[0],2)<0.5 && Alt(Jet_qgl,CleanJet_jetIdx[1],2)<0.5 && PuppiMET_pt<60 && bVeto && detajj<2 && mjj<150 && mjj>60 && dphilljetjet>1 && Alt(Jet_btagDeepB,CleanJet_jetIdx[0],2)<0.2 && Alt(Jet_btagDeepB,CleanJet_jetIdx[1],2) < 0.2 && Alt(Jet_btagCSVV2,CleanJet_jetIdx[0],2)<0.7 && Alt(Jet_btagCSVV2,CleanJet_jetIdx[1],2)<0.7 && ptll>20 && Alt(CleanJet_pt,0,0) > 50', + 'opt5future' : 'mll>85 && mll< 95 && Lepton_pt[0]>40 && Alt(Jet_qgl,CleanJet_jetIdx[0],2)<0.1 && Alt(Jet_qgl,CleanJet_jetIdx[1],2)<0.1 && PuppiMET_pt<60 && bVeto && detajj<2 && mjj<150 && mjj>60 && dphilljetjet>1 && Alt(Jet_btagDeepB,CleanJet_jetIdx[0],2)<0.2 && Alt(Jet_btagDeepB,CleanJet_jetIdx[1],2) < 0.2 && Alt(Jet_btagCSVV2,CleanJet_jetIdx[0],2)<0.7 && Alt(Jet_btagCSVV2,CleanJet_jetIdx[1],2)<0.7 && ptll>20 && Alt(CleanJet_pt,0,0) > 50 && Alt(CleanJet_eta,1,0) < 2.5 && Alt(CleanJet_eta,1,0) > -2.5 && Alt(CleanJet_eta,0,0) < 2.5 && Alt(CleanJet_eta,0,0) > -2.5 && Alt(Lepton_pt,0,0)>50', + 'opt6future' : 'mll>85 && mll< 95 && Lepton_pt[0]>40 && Alt(Jet_qgl,CleanJet_jetIdx[0],2)<0.04 && Alt(Jet_qgl,CleanJet_jetIdx[1],2)<0.04 && PuppiMET_pt<60 && bVeto && detajj<2 && mjj<150 && mjj>60 && dphilljetjet>1 && Alt(Jet_btagDeepB,CleanJet_jetIdx[0],2)<0.2 && Alt(Jet_btagDeepB,CleanJet_jetIdx[1],2) < 0.2 && Alt(Jet_btagCSVV2,CleanJet_jetIdx[0],2)<0.7 && Alt(Jet_btagCSVV2,CleanJet_jetIdx[1],2)<0.7 && ptll>20 && Alt(CleanJet_pt,0,0) > 75 && Alt(CleanJet_eta,1,0) < 2.0 && Alt(CleanJet_eta,1,0) > -2.0 && Alt(CleanJet_eta,0,0) < 2.0 && Alt(CleanJet_eta,0,0) > -2.0 && Alt(Lepton_pt,0,0)>50 && ptll>100 && Lepton_pt[1]>20', + + } +} + diff --git a/Hgg/2017UL/nuisances.py b/Hgg/2017UL/nuisances.py new file mode 100644 index 00000000..e380283b --- /dev/null +++ b/Hgg/2017UL/nuisances.py @@ -0,0 +1,87 @@ +import sys +import os + +# Enable reading YR for Higgs XS and uncertainties +sys.path.append('../macros/') +#import HiggsXSection +#HiggsXS = HiggsXSection.HiggsXSection() + +nuisances = {} + +mcProduction = 'Summer20UL17_106x_nAODv9_Full2017v9' +dataReco = 'Run2017_UL2017_nAODv9_Full2017v9' +mcSteps = 'MCl1loose2017v9__MCCorr2017v9NoJERInHorn__l2tightOR2017v9' +fakeSteps = 'DATAl1loose2017v9__l2loose__fakeW' +dataSteps = 'DATAl1loose2017v9__l2loose__l2tightOR2017v9' + +treeBaseDir = '/eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano' +limitFiles = -1 + +# +# AM: for the time being exclude the signal from the list of nuisances ... missing adequate post-processing +# +mc = [skey for skey in samples if skey not in ('Fake', 'DATA', 'Hgluglu')] +mcln = [skey for skey in samples if skey not in ('Fake', 'DATA')] + +redirector = "" + +useXROOTD = False + +def makeMCDirectory(var=''): + if var== '': + print(os.path.join(treeBaseDir, mcProduction, mcSteps)) + return os.path.join(treeBaseDir, mcProduction, mcSteps) + else: + print(os.path.join(treeBaseDir, mcProduction, mcSteps + '__' + var)) + return os.path.join(treeBaseDir, mcProduction, mcSteps + '__' + var) + +mcDirectory = makeMCDirectory() +fakeDirectory = os.path.join(treeBaseDir, dataReco, fakeSteps) +dataDirectory = os.path.join(treeBaseDir, dataReco, dataSteps) + +################################ EXPERIMENTAL UNCERTAINTIES ################################# + +#### Luminosity + +# https://twiki.cern.ch/twiki/bin/view/CMS/LumiRecommendationsRun2#LumiComb +# Uncorrelated 2016 1.0 +# Uncorrelated 2017 2.0 +# Uncorrelated 2018 1.5 +# Correlated 2016, 2017, 2018 0.6, 0.9, 2.0 +# Correlated 2017, 2018 0.6, 0.2 + +nuisances['lumi_Uncorrelated'] = { + 'name' : 'lumi_13TeV_2017', + 'type' : 'lnN', + 'samples' : dict((skey, '1.020') for skey in mc if skey not in ['WZ']) +} + +nuisances['lumi_Correlated_Run2'] = { + 'name' : 'lumi_13TeV_correlated', + 'type' : 'lnN', + 'samples' : dict((skey, '1.009') for skey in mc if skey not in ['WZ']) +} + +nuisances['lumi_Correlated_2017_2018'] = { + 'name' : 'lumi_13TeV_1718', + 'type' : 'lnN', + 'samples' : dict((skey, '1.006') for skey in mc if skey not in ['WZ']) +} + + + +######################################################################## + + +## Use the following if you want to apply the automatic combine MC stat nuisances. +nuisances['stat'] = { + 'type' : 'auto', + 'maxPoiss' : '10', + 'includeSignal' : '0', + 'samples' : {} +} +# nuisance ['maxPoiss'] = Number of threshold events for Poisson modelling +# nuisance ['includeSignal'] = Include MC stat nuisances on signal processes (1=True, 0=False) + +for n in nuisances.values(): + n['skipCMS'] = 1 diff --git a/Hgg/2017UL/plot.py b/Hgg/2017UL/plot.py new file mode 100644 index 00000000..3bc3a6f6 --- /dev/null +++ b/Hgg/2017UL/plot.py @@ -0,0 +1,363 @@ +# plot configuration + +# Groups of samples to improve the plots. +# If not defined, normal plots is used + +groupPlot = {} + +groupPlot['top'] = { + 'nameHR' : 'tW+ and t#bar{t}', + 'isSignal' : 0, + 'color' : 400, # kYellow + 'samples' : ['top'] +} + +#groupPlot['Fake'] = { + #'nameHR' : 'Non-prompt', + #'isSignal' : 0, + #'color' : 921, # kGray + 1 + #'samples' : ['Fake_mm','Fake_em','Fake_ee'] +#} + +groupPlot['DY'] = { + 'nameHR' : "DY", + 'isSignal' : 0, + 'color' : 418, # kGreen+2 + 'samples' : ['DY'] +} + +groupPlot['VVV'] = { + 'nameHR' : 'VVV', + 'isSignal' : 0, + 'color' : 857, # kAzure -3 + 'samples' : ['VVV'] +} + +groupPlot['ZZ'] = { + 'nameHR' : "ZZ", + 'isSignal' : 0, + 'color' : 617, # kViolet + 1 + 'samples' : ['ZZ'] +} + +groupPlot['WZ'] = { + 'nameHR' : "WZ", + 'isSignal' : 0, + 'color' : 619, # kViolet + 1 + 'samples' : ['WZ'] +} + +groupPlot['Vg'] = { + 'nameHR' : "V#gamma", + 'isSignal' : 0, + #'color' : 810, # kOrange + 10 + 'color' : 408, # kGreen - 10 + 'samples' : ['Vg'] +} + +groupPlot['VgS'] = { + 'nameHR' : "V#gamma*", + 'isSignal' : 0, + 'color' : 409, # kGreen - 9 + 'samples' : ['VgS'] +} + +#groupPlot['ZgS'] = { + #'nameHR' : "Z#gamma*", + #'isSignal' : 0, + #'color' : 617, + #'samples' : ['ZgS'] +#} + +groupPlot['Higgs'] = { + 'nameHR' : 'H>WW/#tau#tau', + 'isSignal' : 0, + 'color' : 634, # kRed+2 + 'samples' : ['ggH_hww','qqH_hww','ZH_hww','ggZH_hww','ttH_hww','ggH_htt','qqH_htt','ZH_htt'] +} + +#groupPlot['WH_minus'] = { + #'nameHR' : 'W^{-} H (x 10)', + #'isSignal' : 0, + #'color' : 600, # kBlue + #'samples' : ['WH_hww_minus','WH_htt_minus'] +#} + +#groupPlot['WH_plus'] = { + #'nameHR' : 'W^{+} H (x 10)', + #'isSignal' : 0, + #'color' : 632, # kRed + #'samples' : ['WH_hww_plus', 'WH_htt_plus'] +#} + +groupPlot['Hgluglu'] = { + 'nameHR' : 'H>gluglu x 100', + 'isSignal' : 1, + 'color' : 632, # kRed + 'samples' : ['Hgluglu'] +} + + +# groupPlot['HglugluAlt'] = { +# 'nameHR' : 'H>gluglu (split) x 100', +# 'isSignal' : 3, +# # 'color' : 633, # kRed+1 +# 'color' : 857, # kAzure -3 +# 'samples' : ['ggZHgluglu', 'qqZHgluglu'] +# } + + + + +# keys here must match keys in samples.py + +plot = {} + + +plot['top'] = { + 'nameHR' : 'tW and t#bar{t}', + 'color' : 400, # kYellow + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0, +} + +plot['DY'] = { + 'nameHR' : 'DY', + 'color' : 418, # kGreen+2 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0, +} + +plot['Vg'] = { + 'nameHR' : 'Vg', + 'color' : 859, # kAzure -1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['VgS'] = { + 'nameHR' : 'VgS', + 'color' : 859, # kAzure -1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['WZ'] = { + 'nameHR' : 'WZ', + 'color' : 858, # kAzure -2 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.138 # NLO -> NNLO k-factor! +} + +plot['ZZ'] = { + 'nameHR' : 'ZZ', + 'color' : 858, # kAzure -2 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['VVV'] = { + 'nameHR' : 'VVV', + 'color' : 857, # kAzure -3 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +########### +# Signals # +########### + +plot['Hgluglu'] = { + 'nameHR' : 'Hgluglu', + 'color' : 632, # kRed + 'isSignal' : 2, + 'isData' : 0, + 'scale' : 100 + #'scale' : 0.000033658 # I missed the BR Z>ll and a *1000 too much +} + + +plot['ggZHgluglu'] = { + 'nameHR' : 'ggZHgluglu', + 'color' : 857, # kAzure -3 + # 'color' : 634, # kRed+2 + 'isSignal' : 3, + 'isData' : 0, + 'scale' : 100 + #'scale' : 0.000033658 # I missed the BR Z>ll and a *1000 too much +} + + +plot['qqZHgluglu'] = { + 'nameHR' : 'qqZHgluglu', + 'color' : 856, # kAzure -4 + # 'color' : 633, # kRed+1 + 'isSignal' : 3, + 'isData' : 0, + 'scale' : 100 + #'scale' : 0.000033658 # I missed the BR Z>ll and a *1000 too much +} + + + + +##################### +# Other backgrounds # +##################### + +# HWW + +plot['ggH_hww'] = { + 'nameHR' : 'ggH_hww', + 'color' : 632, # kRed + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['qqH_hww'] = { + 'nameHR' : 'qqH_hww', + 'color' : 632+1, # kRed+1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['ZH_hww'] = { + 'nameHR' : 'ZH_hww', + 'color' : 632+3, # kRed+3 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['ggZH_hww'] = { + 'nameHR' : 'ggZH_hww', + 'color' : 632+4, # kRed+4 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['WH_hww_plus'] = { + 'nameHR' : 'WH_hww_plus', + 'color' : 632+2, # kRed+2 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 10 +} + +plot['WH_hww_minus'] = { + 'nameHR' : 'WH_hww_minus', + 'color' : 600, # kBlue + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 10 +} + +plot['ttH_hww'] = { + 'nameHR' : 'ttH_hww', + 'color' : 632+3, # kRed+3 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + + +# Htautau + +plot['ggH_htt'] = { + 'nameHR' : 'ggH_htt', + 'color' : 632, # kRed + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['qqH_htt'] = { + 'nameHR' : 'qqH_htt', + 'color' : 632+1, # kRed+1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['ZH_htt'] = { + 'nameHR' : 'ZH_htt', + 'color' : 632+3, # kRed+3 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['WH_htt_plus'] = { + 'nameHR' : 'WH_htt_plus', + 'color' : 632+2, # kRed+2 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 10 +} + +plot['WH_htt_minus'] = { + 'nameHR' : 'WH_htt_minus', + 'color' : 632+2, # kRed+2 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 10 +} + + +######## +# Fake # +######## + +plot['Fake_em'] = { + 'nameHR' : 'Fake_em', + 'color' : 921, # kGray + 1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['Fake_ee'] = { + 'nameHR' : 'Fake_ee', + 'color' : 921, # kGray + 1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['Fake_mm'] = { + 'nameHR' : 'Fake_mm', + 'color' : 921, # kGray + 1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +######## +# Data # +######## + +plot['DATA'] = { + 'nameHR' : 'Data', + 'color' : 1 , + 'isSignal' : 0, + 'isData' : 1, + 'isBlind' : 0 +} + + +# Define legend + +legend = {} + +legend['lumi'] = 'L = 41.5 fb^{-1}' +legend['sqrt'] = '#sqrt{s} = 13 TeV' diff --git a/Hgg/2017UL/samples.py b/Hgg/2017UL/samples.py new file mode 100644 index 00000000..51e918ae --- /dev/null +++ b/Hgg/2017UL/samples.py @@ -0,0 +1,468 @@ +import os,glob + +################################################ +################# SKIMS ######################## +################################################ + + +# MC: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Summer20UL17_106x_nAODv9_Full2017v9/MCl1loose2017v9__MCCorr2017v9NoJERInHorn__l2tightOR2017v9/ +# DATA: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Run2017_UL2017_nAODv9_Full2017v9/DATAl1loose2017v9__l2loose__l2tightOR2017v9/ +# FAKE: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Run2017_UL2017_nAODv9_Full2017v9/DATAl1loose2017v9__l2loose__fakeW/ + +mcProduction = 'Summer20UL17_106x_nAODv9_Full2017v9' +dataReco = 'Run2017_UL2017_nAODv9_Full2017v9' +mcSteps = 'MCl1loose2017v9__MCCorr2017v9NoJERInHorn__l2tightOR2017v9{var}' +fakeSteps = 'DATAl1loose2017v9__l2loose__fakeW' +dataSteps = 'DATAl1loose2017v9__l2loose__l2tightOR2017v9' + + + +############################################## +###### Tree base directory for the site ###### +############################################## + +treeBaseDir = '/eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano' +limitFiles = -1 # why on earth would you want to limit the number of files? Debug reason?? + + +def makeMCDirectory(var=''): + return os.path.join(treeBaseDir, mcProduction, mcSteps.format(var='')) + +mcDirectory = makeMCDirectory() +fakeDirectory = os.path.join(treeBaseDir, dataReco, fakeSteps) +dataDirectory = os.path.join(treeBaseDir, dataReco, dataSteps) + +print (" mcDirectory = " , mcDirectory) + + +samples = {} + +from mkShapesRDF.lib.search_files import SearchFiles +s = SearchFiles() + +useXROOTD = True +redirector = 'root://eoscms.cern.ch/' + +def nanoGetSampleFiles(path, name): + _files = s.searchFiles(path, name, redirector=redirector) + if limitFiles != -1 and len(_files) > limitFiles: + return [(name, _files[:limitFiles])] + else: + return [(name, _files)] + +def nanoGetLocalSampleFiles(path, name): + print ("nanoGetLocalSampleFiles!") + _files = s.searchFiles(path, name, redirector='') + if limitFiles != -1 and len(_files) > limitFiles: + return [(name, _files[:limitFiles])] + else: + return [(name, _files)] + + +def CombineBaseW(samples, proc, samplelist): + _filtFiles = list(filter(lambda k: k[0] in samplelist, samples[proc]['name'])) + _files = list(map(lambda k: k[1], _filtFiles)) + _l = list(map(lambda k: len(k), _files)) + leastFiles = _files[_l.index(min(_l))] + dfSmall = ROOT.RDataFrame('Runs', leastFiles) + s = dfSmall.Sum('genEventSumw').GetValue() + f = ROOT.TFile.Open(leastFiles[0]) + t = f.Get('Events') + t.GetEntry(1) + xs = t.baseW * s + + __files = [] + for f in _files: + __files += f + df = ROOT.RDataFrame('Runs', __files) + s = df.Sum('genEventSumw').GetValue() + newbaseW = str(xs / s) + weight = newbaseW + '/baseW' + + for iSample in samplelist: + addSampleWeight(samples, proc, iSample, weight) + +def addSampleWeight(samples, sampleName, sampleNameType, weight): + obj = list(filter(lambda k: k[0] == sampleNameType, samples[sampleName]['name']))[0] + samples[sampleName]['name'] = list(filter(lambda k: k[0] != sampleNameType, samples[sampleName]['name'])) + if len(obj) > 2: + samples[sampleName]['name'].append((obj[0], obj[1], obj[2] + '*(' + weight + ')')) + else: + samples[sampleName]['name'].append((obj[0], obj[1], '(' + weight + ')' )) + + +################################################ +############ DATA DECLARATION ################## +################################################ + +DataRun = [ + ['B','Run2017B-UL2017-v1'], + ['C','Run2017C-UL2017-v1'], + ['D','Run2017D-UL2017-v1'], + ['E','Run2017E-UL2017-v1'], + ['F','Run2017F-UL2017-v1'], +] + +DataSets = ['MuonEG','SingleMuon','SingleElectron','DoubleMuon', 'DoubleEG'] + +DataTrig = { + 'MuonEG' : ' Trigger_ElMu' , + 'SingleMuon' : '!Trigger_ElMu && Trigger_sngMu' , + 'SingleElectron' : '!Trigger_ElMu && !Trigger_sngMu && Trigger_sngEl', + 'DoubleMuon' : '!Trigger_ElMu && !Trigger_sngMu && !Trigger_sngEl && Trigger_dblMu', + 'DoubleEG' : '!Trigger_ElMu && !Trigger_sngMu && !Trigger_sngEl && !Trigger_dblMu && Trigger_dblEl' +} + + +######################################### +############ MC COMMON ################## +######################################### + +# SFweight does not include btag weights +mcCommonWeightNoMatch = 'XSWeight*SFweight*METFilter_MC' +mcCommonWeight = 'XSWeight*SFweight*METFilter_MC*PromptGenLepMatch2l' +#mcCommonWeightMatched = 'XSWeight*SFweight*PromptGenLepMatch3l*METFilter_MC' + + + + +###### H>gluglu ####### + +# the string "ZHgg" here is very important, since the root files that will be selected must have the format "nanoLatino_ZHgg__part*.root" +#files = nanoGetSampleFiles("/eos/user/a/amassiro/HIG/", "ZHgg") +# /eos/user/a/amassiro/HIG/ZHggPostProc/Summer20UL17_106x_nAODv9_Full2017v9/MCFull2017v9/ +files = nanoGetLocalSampleFiles("/eos/user/a/amassiro/HIG/ZHggPostProc/Summer20UL17_106x_nAODv9_Full2017v9/MCFull2017v9/", "ZHgg") +# print (" list of files Hgg = ", files) +# +samples["Hgluglu"] = { + "name": files, + #"weight": mcCommonWeight, --> missing post processing + #"weight": 1, + "weight": "baseW*genWeight*0.8839*0.08187*0.033658*3", + "FilesPerJob": 1, +} + +# +# # +# # during post-processing, baseW, xsec = 1 +# # +# # xs_db["ZHgg"] = ["xsec=1.000", "kfact=1.000", "ref=X"] +# # Units in pb +# # From https://twiki.cern.ch/twiki/pub/LHCPhysics/HiggsXSBR/Higgs_XSBR_YR4_update.xlsx +# # 8.839E-01 pb +# # and the branching ratio: +# # https://twiki.cern.ch/twiki/bin/view/LHCPhysics/CERNYellowReportPageBR +# # 8.187E-02 +# # BR Z>ll: 3.3658% x 3 +# # From https://pdg.lbl.gov/2018/listings/rpp2018-list-z-boson.pdf +# # +# # ZH_HToGluGlu_ZToLL_13TeV_powheg_pythia8 +# # +# # 59000×0.8839×0.08187×0.033658×3 +# # +# +# +# +# files = nanoGetLocalSampleFiles("/eos/user/a/amassiro/HIG/ZHggPostProc/Summer20UL18_106x_nAODv9_Full2018v9/MCFull2018v9/", "ZHllHgg") +# +# samples["qqZHgluglu"] = { +# "name": files, +# #"weight": mcCommonWeight, --> missing post processing +# #"weight": 1, +# "weight": "baseW*genWeight*0.7612*0.08187*0.033658*3", +# "FilesPerJob": 200, +# } +# +# +# # +# # ggZH: 1.227E-01 pb +# # +# +# files = nanoGetLocalSampleFiles("/eos/user/a/amassiro/HIG/ZHggPostProc/Summer20UL18_106x_nAODv9_Full2018v9/MCFull2018v9/", "ggZHllHgg") +# +# samples["ggZHgluglu"] = { +# "name": files, +# #"weight": mcCommonWeight, --> missing post processing +# #"weight": 1, +# "weight": "baseW*genWeight*0.1227*0.08187*0.033658*3", +# "FilesPerJob": 200, +# } +# +# + + +########################################### +############# BACKGROUNDS ############### +########################################### + +############ DY ############ + +files = nanoGetSampleFiles(mcDirectory, 'DYJetsToLL_M-10to50_NLO') + \ + nanoGetSampleFiles(mcDirectory, 'DYJetsToLL_M-50') + +#print (" list of files DY = ", files) + +samples['DY'] = { + 'name': files, + 'weight': mcCommonWeight + '*1', + #'weight': mcCommonWeight + '*(Lepton_pdgId[0]*Lepton_pdgId[1] == -11*13)*( !(Sum(PhotonGen_isPrompt==1 && PhotonGen_pt>15 && abs(PhotonGen_eta)<2.6) > 0))', + 'FilesPerJob': 4, +} + + +##### Top ####### + +files = nanoGetSampleFiles(mcDirectory, 'TTTo2L2Nu') + \ + nanoGetSampleFiles(mcDirectory, 'ST_s-channel') + \ + nanoGetSampleFiles(mcDirectory, 'ST_t-channel_top') + \ + nanoGetSampleFiles(mcDirectory, 'ST_t-channel_antitop') + \ + nanoGetSampleFiles(mcDirectory, 'ST_tW_antitop') + \ + nanoGetSampleFiles(mcDirectory, 'ST_tW_top') + +samples['top'] = { + 'name': files, + 'weight': mcCommonWeight, + 'FilesPerJob': 8, +} +addSampleWeight(samples,'top','TTTo2L2Nu','Top_pTrw') + + + +############ Non-charge-flip backgrounds ############ +# In case we want to estimate the charge-flip +# backgrounds in the signal region, we can use +# data. But we have to subtract all the processes +# not affected by charge-flip: +# all but DY, WW, and top + +######## Vg ######## +files = nanoGetSampleFiles(mcDirectory, 'Wg_AMCNLOFXFX_01J') + \ + nanoGetSampleFiles(mcDirectory, 'ZGToLLG') + +samples['Vg'] = { + 'name': files, + 'weight': mcCommonWeightNoMatch + '*(Gen_ZGstar_mass <= 0)*1', + 'FilesPerJob': 4, +} + +######## VgS ######## +files = nanoGetSampleFiles(mcDirectory, 'Wg_AMCNLOFXFX_01J') + \ + nanoGetSampleFiles(mcDirectory, 'WZTo3LNu_mllmin0p1') + \ + nanoGetSampleFiles(mcDirectory, 'ZGToLLG') + +samples['VgS'] = { + 'name': files, + 'weight': mcCommonWeight + '*1', + 'FilesPerJob': 4, +} +addSampleWeight(samples, 'VgS', 'Wg_AMCNLOFXFX_01J', '((Gen_ZGstar_mass > 0 && Gen_ZGstar_mass <= 0.1))*(gstarLow*0.94)') +addSampleWeight(samples, 'VgS', 'WZTo3LNu_mllmin0p1', '((Gen_ZGstar_mass > 0.1)*(0.601644*58.59/4.666))*(gstarLow*0.94)') +addSampleWeight(samples, 'VgS', 'ZGToLLG', '(Gen_ZGstar_mass > 0)') + + +############ WZ ############ +files = nanoGetSampleFiles(mcDirectory, 'WZTo3LNu_mllmin0p1') + \ + nanoGetSampleFiles(mcDirectory, 'WZTo2Q2L_mllmin4p0') + +samples['WZ'] = { + 'name': files, + 'weight': mcCommonWeight + ' * (gstarHigh)*1', + 'FilesPerJob': 4 +} +addSampleWeight(samples, 'WZ', 'WZTo3LNu_mllmin0p1', '(0.601644*58.59/4.666)') + + +############ ZZ ############ +files = nanoGetSampleFiles(mcDirectory, 'ZZTo2L2Nu') + \ + nanoGetSampleFiles(mcDirectory, 'ZZTo2Q2L_mllmin4p0') + \ + nanoGetSampleFiles(mcDirectory, 'ZZTo4L') + +samples['ZZ'] = { + 'name': files, + 'weight': mcCommonWeight + '*1', + 'FilesPerJob': 4 +} + + +########## VVV ######### +files = nanoGetSampleFiles(mcDirectory, 'ZZZ') + \ + nanoGetSampleFiles(mcDirectory, 'WZZ') + \ + nanoGetSampleFiles(mcDirectory, 'WWZ') + \ + nanoGetSampleFiles(mcDirectory, 'WWW') + +samples['VVV'] = { + 'name': files, + 'weight': mcCommonWeight + '*1', + 'FilesPerJob': 4 +} + +########################################### +############# SIGNALS ################## +########################################### + +signals = [] + +############ ggH H->WW ############ +samples['ggH_hww'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'GluGluHToWWTo2L2Nu_M125'), + 'weight': mcCommonWeight + '*1', + 'FilesPerJob': 2 +} +signals.append('ggH_hww') + +############ VBF H->WW ############ +samples['qqH_hww'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'VBFHToWWTo2L2Nu_M125'), + 'weight': mcCommonWeight + '*1', + 'FilesPerJob': 4 +} +signals.append('qqH_hww') + +############ ZH H->WW ############ +samples['ZH_hww'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'HZJ_HToWW_M125'), + 'weight': mcCommonWeight + '*1', + 'FilesPerJob': 4 +} +signals.append('ZH_hww') + +samples['ggZH_hww'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'GluGluZH_HToWWTo2L2Nu_M125'), + 'weight': mcCommonWeight + '*1', + 'FilesPerJob': 4 +} +signals.append('ggZH_hww') + +############ WH H->WW ############ +samples['WH_hww_plus'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'HWplusJ_HToWW_M125'), + 'weight': mcCommonWeight + '*1', + 'FilesPerJob': 4 +} +signals.append('WH_hww_plus') + +samples['WH_hww_minus'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'HWminusJ_HToWW_M125'), + 'weight': mcCommonWeight + '*1', + 'FilesPerJob': 4 +} + +signals.append('WH_hww_minus') + +############ ttH ############ +samples['ttH_hww'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'ttHToNonbb_M125'), + 'weight': mcCommonWeight + '*1', + 'FilesPerJob': 2 +} +signals.append('ttH_hww') + +# ############ H->TauTau ############ +# samples['ggH_htt'] = { +# 'name': nanoGetSampleFiles(mcDirectory, 'GluGluHToTauTau_M125_Powheg'), +# 'weight': mcCommonWeight + '*1', +# 'FilesPerJob': 20 +# } +# signals.append('ggH_htt') +# +# samples['qqH_htt'] = { +# 'name': nanoGetSampleFiles(mcDirectory, 'VBFHToTauTau_M125'), +# 'weight': mcCommonWeight + '*1', +# 'FilesPerJob': 10 +# } +# signals.append('qqH_htt') +# +# samples['ZH_htt'] = { +# 'name': nanoGetSampleFiles(mcDirectory, 'ZHToTauTau_M125'), +# 'weight': mcCommonWeight + '*1', +# 'FilesPerJob': 4 +# } +# signals.append('ZH_htt') +# +# ############ WH H->TauTau ############ +# samples['WH_htt_plus'] = { +# 'name': nanoGetSampleFiles(mcDirectory, 'WplusHToTauTau_M125'), +# 'weight': mcCommonWeight + '*1', +# 'FilesPerJob': 4 +# } +# signals.append('WH_htt_plus') +# +# samples['WH_htt_minus'] = { +# 'name': nanoGetSampleFiles(mcDirectory, 'WminusHToTauTau_M125'), +# 'weight': mcCommonWeight + '*1', +# 'FilesPerJob': 4 +# } +# signals.append('WH_htt_minus') + + +########################################### +################## FAKE ################### +########################################### + +#samples['Fake'] = { + #'name': [], + #'weight': 'METFilter_DATA*fakeW*1', + #'weights': [], + #'isData': ['all'], + #'FilesPerJob': 50 +#} + +#for _, sd in DataRun: + #for pd in DataSets: + #tag_data = pd + '_' + sd + + #if ( ('DoubleMuon' in pd and 'Run2018B' in sd) + #or ('DoubleMuon' in pd and 'Run2018D' in sd) + #or ('SingleMuon' in pd and 'Run2018A' in sd) + #or ('SingleMuon' in pd and 'Run2018B' in sd) + #or ('SingleMuon' in pd and 'Run2018C' in sd)): + #print("sd = {}".format(sd)) + #print("pd = {}".format(pd)) + #print("Old tag = {}".format(tag_data)) + #tag_data = tag_data.replace('v1','v2') + #print("New tag = {}".format(tag_data)) + + #files = nanoGetSampleFiles(fakeDirectory, tag_data) + + #samples['Fake']['name'].extend(files) + #addSampleWeight(samples, 'Fake', tag_data, DataTrig[pd]) + +#samples['Fake']['subsamples'] = { + #'em': 'abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 11*13', + #'mm': 'abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 13*13', + #'ee': 'abs(Lepton_pdgId[0]*Lepton_pdgId[1]) == 11*11' +#} + + +########################################### +################## DATA ################### +########################################### + +samples['DATA'] = { + 'name': [], + 'weight': 'LepWPCut*METFilter_DATA*1', + 'weights': [], + 'isData': ['all'], + 'FilesPerJob': 50 +} + + +for _, sd in DataRun: + for pd in DataSets: + tag_data = pd + '_' + sd + + files = nanoGetSampleFiles(dataDirectory, tag_data) + + samples['DATA']['name'].extend(files) + addSampleWeight(samples, 'DATA', tag_data, DataTrig[pd]) + + +# +# +# run only on Hgluglu +# +# +# samples = {'Hgluglu': samples['Hgluglu']} + + + diff --git a/Hgg/2017UL/structure.py b/Hgg/2017UL/structure.py new file mode 100644 index 00000000..576ba225 --- /dev/null +++ b/Hgg/2017UL/structure.py @@ -0,0 +1,175 @@ +# +# structure configuration for datacard +# + +# keys here must match keys in samples.py + +structure = {} + +structure['DY'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['top'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['WW'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['WWewk'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['ggWW'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['Vg'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['VgS'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['WZ'] = { + 'isSignal' : 0, + 'isData' : 0, + 'scaleSampleForDatacard' : 1.138 # NLO -> NNLO k-factor +} + +structure['ZZ'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['VVV'] = { + 'isSignal' : 0, + 'isData' : 0, +} + + +# Higgs + +structure['Hgluglu'] = { + 'isSignal' : 1, + 'isData' : 0, + #'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity +} + +# structure['qqZHgluglu'] = { +# 'isSignal' : 1, +# 'isData' : 0, +# #'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity +# } +# +# structure['ggZHgluglu'] = { +# 'isSignal' : 1, +# 'isData' : 0, +# #'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity +# } +# +# structure['WHgluglu'] = { +# 'isSignal' : 1, +# 'isData' : 0, +# #'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity +# } + + + +structure['ggH_hww'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['qqH_hww'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['ZH_hww'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['ggZH_hww'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['WH_hww_plus'] = { + 'isSignal' : 0, + 'isData' : 0, + #'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity +} + +structure['WH_hww_minus'] = { + 'isSignal' : 0, + 'isData' : 0, + #'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity +} + +structure['ttH_hww'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['ggH_htt'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['qqH_htt'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['ZH_htt'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['WH_htt_plus'] = { + 'isSignal' : 0, + 'isData' : 0, + #'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity +} + +structure['WH_htt_minus'] = { + 'isSignal' : 0, + 'isData' : 0, + #'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity +} + + +# Fakes +structure['Fake_ee'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['Fake_mm'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['Fake_em'] = { + 'isSignal' : 0, + 'isData' : 0, +} + + +# Data +structure['DATA'] = { + 'isSignal' : 0, + 'isData' : 1 +} diff --git a/Hgg/2017UL/variables.py b/Hgg/2017UL/variables.py new file mode 100644 index 00000000..a36c2e97 --- /dev/null +++ b/Hgg/2017UL/variables.py @@ -0,0 +1,195 @@ +# variables + +# 0 = not fold (default), 1 = fold underflowbin, 2 = fold overflow bin, 3 = fold underflow and overflow + +variables = {} + +# variables['ttree_variable'] = { +# 'tree': {'LeptonPt1': 'Lepton_pt[0]'}, +# 'cuts': ['sr'] +# } + +variables['ptj1'] = { + 'name': 'Alt(CleanJet_pt,0,0)', + 'range': (100, 30, 500), + 'xaxis': 'p_{T} 1st jet', + 'fold' :3 +} + +variables['ptj2'] = { + 'name': 'Alt(CleanJet_pt,1,0)', + 'range': (100, 30, 500), + 'xaxis': 'p_{T} 2nd jet', + 'fold' :3 +} + +variables['qglj1'] = { + 'name': 'Alt(Jet_qgl,CleanJet_jetIdx[0],2)', + 'range': (100, -1, 1), + 'xaxis': 'QGL 1st jet', + 'fold' :3 +} + + +variables['qglj1morebins'] = { + 'name': 'Alt(Jet_qgl,CleanJet_jetIdx[0],2)', + 'range': (20, -0.01, 0.3), + 'xaxis': 'QGL 1st jet', + 'fold' :3 +} + +variables['qglj2'] = { + 'name': 'Alt(Jet_qgl,CleanJet_jetIdx[1],2)', + 'range': (100, -1, 1), + 'xaxis': 'QGL 2nd jet', + 'fold' :3 +} + + +variables['etaj1'] = { + 'name': 'Alt(CleanJet_eta,0,0)', + 'range': (100, -5, 5), + 'xaxis': '#eta 1st jet', + 'fold' :3 +} + +variables['etaj2'] = { + 'name': 'Alt(CleanJet_eta,1,0)', + 'range': (100, -5, 5), + 'xaxis': '#eta 2nd jet', + 'fold' :3 +} + + + +variables['btagDeepBj1'] = { + 'name': 'Alt(Jet_btagDeepB,CleanJet_jetIdx[0],2)', + 'range': (100, -1, 1), + 'xaxis': 'btagDeepB 1st jet', + 'fold' :3 +} + +variables['btagDeepBj2'] = { + 'name': 'Alt(Jet_btagDeepB,CleanJet_jetIdx[1],2)', + 'range': (100, -1, 1), + 'xaxis': 'btagDeepB 2nd jet', + 'fold' :3 +} + + +variables['btagCSVV2j1'] = { + 'name': 'Alt(Jet_btagCSVV2,CleanJet_jetIdx[0],2)', + 'range': (100, -1, 1), + 'xaxis': 'btagCSVV2 1st jet', + 'fold' :3 +} + +variables['btagCSVV2j2'] = { + 'name': 'Alt(Jet_btagCSVV2,CleanJet_jetIdx[1],2)', + 'range': (100, -1, 1), + 'xaxis': 'btagCSVV2 2nd jet', + 'fold' :3 +} + + + +#Take(Jet_btagDeepFlavB, CleanJet_jetIdx), 0) +#Jet_btagDeepFlavB[CleanJet_jetIdx[0]] +#Alt(Take(Jet_btagDeepFlavB, CleanJet_jetIdx), 1, -99) -999.99*(CleanJet_pt[1]<20) +# +#Take(Jet_btagDeepFlavB, CleanJet_jetIdx)[0] +#Jet_btagDeepFlavB[CleanJet_jetIdx[0]] +# + +variables['mjj'] = { 'name': 'mjj', # variable name + 'range' : (20, 0, 200), # variable range + 'xaxis' : 'm_{jj} [GeV]', # x axis name + 'fold' :3 + } + +variables['mjjbins'] = { 'name': 'mjj', # variable name + 'range' : (100, 0, 200), # variable range + 'xaxis' : 'm_{jj} [GeV]', # x axis name + 'fold' :3 + } + +variables['ptll'] = { 'name': 'ptll', + 'range' : (100, 0, 600), + 'xaxis' : 'p_{T}^{ll} [GeV]', + 'fold' : 3 + } + +variables['mll'] = { 'name': 'mll', + 'range' : (100, 0,200), + 'xaxis' : 'm_{ll} [GeV]', + 'fold' : 3 + } + + +variables['ptl1'] = { 'name': 'Lepton_pt[0]', + 'range' : (60,0,300), + 'xaxis' : 'p_{T} 1st lep', + 'fold' : 3 + } + + +variables['ptl1lessbins'] = { 'name': 'Lepton_pt[0]', + 'range' : (20,0,300), + 'xaxis' : 'p_{T} 1st lep', + 'fold' : 3 + } + +variables['ptl2'] = { 'name': 'Lepton_pt[1]', + 'range' : (60,0,300), + 'xaxis' : 'p_{T} 2nd lep', + 'fold' : 3 + } + + +variables['puppimet'] = { + 'name': 'PuppiMET_pt', + 'range' : (100,0,200), + 'xaxis' : 'puppimet [GeV]', + 'fold' : 3 + } + +variables['detajj'] = { 'name': 'detajj', + 'range' : (100, 0.0, 9.0), + 'xaxis' : '#Delta#eta_{jj}', + 'fold' : 3 + } + +variables['dphijj'] = { 'name': 'dphijj', + 'range' : (100, -3.15, 3.15), + 'xaxis' : '#Delta#phi_{jj}', + 'fold' : 3 + } + + +#variables['drjj'] = { 'name': 'drjj', + #'range' : (100, 0.0, 9.0), + #'xaxis' : '#DeltaR_{jj}', + #'fold' : 3 + #} + +# +# ll jetjet +# + +variables['dphilljet'] = { 'name': 'dphilljet', + 'range' : (100, -3.15, 3.15), + 'xaxis' : '#Delta#phi_{ll,j}', + 'fold' : 3 + } + +variables['dphilljetjet'] = { 'name': 'dphilljetjet', + 'range' : (100, -3.15, 3.15), + 'xaxis' : '#Delta#phi_{ll,jj}', + 'fold' : 3 + } + + + + + + diff --git a/Hgg/2018UL1l/README.md b/Hgg/2018UL1l/README.md new file mode 100644 index 00000000..dd19088b --- /dev/null +++ b/Hgg/2018UL1l/README.md @@ -0,0 +1,224 @@ +# H > gluon gluon + +ZH production of H>gg + +### Load the mkShapesRDF environment + +Here, we assume `PlotsConfigurationsRun3` was installed in the same directory as `mkShapesRDF`. E.g., let's assume we have a `Run3` directory where we installed both `mkShapesRDF` and `PlotsConfigurationsRun3`. + +Then, we can source the `mkShapesRDF` environment using these commands: + + cd /afs/cern.ch/user/a/amassiro/work/Latinos/Framework/Hgg/Analysis/PlotsConfigurationsRun3/Hgg/2018UL1l + + cd ../../../mkShapesRDF/ + source start.sh + cd - + + +(development folder) + + cd /afs/cern.ch/user/a/amassiro/work/Latinos/Framework/Hgg/Analysis/PlotsConfigurationsRun3/Hgg/2018UL1l + cd /afs/cern.ch/user/a/amassiro/work/Latinos/Framework/mkShapesRDF/ + source start.sh + cd - + + +### Compile the configuration folder + + mkShapesRDF -c 1 + +### Run the analysis + +Produce histograms using batch: + + mkShapesRDF -o 0 -f . -b 1 + + mkShapesRDF -c 1 -o 0 -f . -b 1 + + mkShapesRDF --submit + +Check jobs status: + + mkShapesRDF -o 1 -f . + + + mkShapesRDF --check + + +Resubmit failed jobs: + + mkShapesRDF -o 1 -f . -r 1 + + mkShapesRDF --resubmit 1 + + +Options meanings: +- -o: operationMode: + - 0 run analysis + - 1 check batch output and errs + - 2 merge root files +- -f: folder: it represents the path to the analysis folder +- -b: batch mode: + - 0 (default) runs on local + - 1 runs with condor +- -r: resubmit jobs: + -1 resubmit finished jobs with errors + - 2 resubmit running jobs + +### Merge rootfiles + +Once all the jobs have finished, you can merge them: + + mkShapesRDF -o 2 -f . + + mkShapesRDF --histoadd + +### Plot distributions + + mkPlot + mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png + mkPlot --onlyPlot cratio --showIntegralLegend 1 --fileFormats png --plotNormalizedDistributions + + +### to check kerberos + + klist + + +### make datacards + + mkDatacards --outputDirDatacard datacards + + mkDatacards --outputDirDatacard datacards --onlyVariables mjjbins,mjj --onlyCuts Sig_opt4 + mkDatacards --outputDirDatacard datacards --onlyVariables mjjbins,mjj --onlyCuts Sig_opt5future + mkDatacards --outputDirDatacard datacards --onlyVariables mjjbins,mjj --onlyCuts Sig_opt6future + + + +### likelihood scan + + cd /afs/cern.ch/user/a/amassiro/work/Latinos/Framework/Hgg/Analysis/PlotsConfigurationsRun3/Hgg/2018UL + cd /afs/cern.ch/user/a/amassiro/work/Combine/CMSSW_14_1_0_pre4/src/ + cmsenv + cd - + + + combine -M FitDiagnostics --rMin -300 --rMax 302 datacards/Sig_opt4/mjj/datacard.txt -t -1 > result.mcasimov.rfit.txt + combine -M Significance datacards/Sig_opt4/mjj/datacard.txt -t -1 > result.mcasimov.Significance.txt + + + https://twiki.cern.ch/twiki/bin/view/CMS/HWWCombineTools + https://twiki.cern.ch/twiki/bin/viewauth/CMS/HiggsWG/SWGuideHiggsProjections + + lumiscale rateParam * * 1 + nuisance edit freeze lumiscale + + lumi 2018 = 59.83 + lumi run 2 ~ 140 = lumi(2018) *2.5 + lumi run 1+2+3 ~ 500 = lumi(2018) * 8.5 + + + + combine -M Significance datacards/Sig_opt4/mjj/datacard.txt -t -1 --setParameters lumiscale=1 --expectSignal=1 > result.mcasimov.Significance.2018.txt + combine -M Significance datacards/Sig_opt4/mjj/datacard.txt -t -1 --setParameters lumiscale=2.5 --expectSignal=1 > result.mcasimov.Significance.run2.txt + combine -M Significance datacards/Sig_opt4/mjj/datacard.txt -t -1 --setParameters lumiscale=8.5 --expectSignal=1 > result.mcasimov.Significance.run123.txt + + + combine -M Significance datacards/Sig_opt4/mjjbins/datacard.txt -t -1 --setParameters lumiscale=1 --expectSignal=1 > result.mcasimov.Significance.2018.txt + combine -M Significance datacards/Sig_opt4/mjjbins/datacard.txt -t -1 --setParameters lumiscale=2.5 --expectSignal=1 > result.mcasimov.Significance.run2.txt + combine -M Significance datacards/Sig_opt4/mjjbins/datacard.txt -t -1 --setParameters lumiscale=8.5 --expectSignal=1 > result.mcasimov.Significance.run123.txt + combine -M Significance datacards/Sig_opt4/mjjbins/datacard.txt -t -1 --setParameters lumiscale=1000 --expectSignal=1 > result.mcasimov.Significance.ahah.txt + + + cat result.mcasimov.Significance.2018.txt result.mcasimov.Significance.run2.txt result.mcasimov.Significance.run123.txt | grep "Significance:" + cat result.mcasimov.Significance.2018.txt result.mcasimov.Significance.run2.txt result.mcasimov.Significance.run123.txt result.mcasimov.Significance.ahah.txt | grep "Significance:" + + + combine -M Significance datacards/Sig_opt5future/mjj/datacard.txt -t -1 --setParameters lumiscale=1 --expectSignal=1 > result.mcasimov.Significance.2018.txt + combine -M Significance datacards/Sig_opt5future/mjj/datacard.txt -t -1 --setParameters lumiscale=2.5 --expectSignal=1 > result.mcasimov.Significance.run2.txt + combine -M Significance datacards/Sig_opt5future/mjj/datacard.txt -t -1 --setParameters lumiscale=8.5 --expectSignal=1 > result.mcasimov.Significance.run123.txt + + + combine -M Significance datacards/Sig_opt5future/mjjbins/datacard.txt -t -1 --setParameters lumiscale=1 --expectSignal=1 > result.mcasimov.Significance.2018.txt + combine -M Significance datacards/Sig_opt5future/mjjbins/datacard.txt -t -1 --setParameters lumiscale=2.5 --expectSignal=1 > result.mcasimov.Significance.run2.txt + combine -M Significance datacards/Sig_opt5future/mjjbins/datacard.txt -t -1 --setParameters lumiscale=8.5 --expectSignal=1 > result.mcasimov.Significance.run123.txt + + + cat result.mcasimov.Significance.2018.txt result.mcasimov.Significance.run2.txt result.mcasimov.Significance.run123.txt | grep "Significance:" + + + combine -M Significance datacards/Sig_opt5future/mjjbins/datacard.txt -t -1 --setParameters lumiscale=1 --expectSignal=1 > result.mcasimov.Significance.1.txt + combine -M Significance datacards/Sig_opt5future/mjjbins/datacard.txt -t -1 --setParameters lumiscale=2 --expectSignal=1 > result.mcasimov.Significance.2.txt + combine -M Significance datacards/Sig_opt5future/mjjbins/datacard.txt -t -1 --setParameters lumiscale=4 --expectSignal=1 > result.mcasimov.Significance.4.txt + combine -M Significance datacards/Sig_opt5future/mjjbins/datacard.txt -t -1 --setParameters lumiscale=8 --expectSignal=1 > result.mcasimov.Significance.8.txt + combine -M Significance datacards/Sig_opt5future/mjjbins/datacard.txt -t -1 --setParameters lumiscale=20 --expectSignal=1 > result.mcasimov.Significance.20.txt + combine -M Significance datacards/Sig_opt5future/mjjbins/datacard.txt -t -1 --setParameters lumiscale=40 --expectSignal=1 > result.mcasimov.Significance.40.txt + + + cat result.mcasimov.Significance.1.txt result.mcasimov.Significance.2.txt result.mcasimov.Significance.4.txt result.mcasimov.Significance.8.txt result.mcasimov.Significance.20.txt result.mcasimov.Significance.40.txt | grep "Significance:" + + + + + + combine -M FitDiagnostics datacards/Sig_opt5future/mjjbins/datacard.txt --rMin -300 --rMax 13002 -t -1 --setParameters lumiscale=1 --expectSignal=10000 > result.mcasimov.FitDiagnostics.1.txt + combine -M FitDiagnostics datacards/Sig_opt5future/mjjbins/datacard.txt --rMin -300 --rMax 13002 -t -1 --setParameters lumiscale=2 --expectSignal=10000 > result.mcasimov.FitDiagnostics.2.txt + combine -M FitDiagnostics datacards/Sig_opt5future/mjjbins/datacard.txt --rMin -300 --rMax 13002 -t -1 --setParameters lumiscale=4 --expectSignal=10000 > result.mcasimov.FitDiagnostics.4.txt + combine -M FitDiagnostics datacards/Sig_opt5future/mjjbins/datacard.txt --rMin -300 --rMax 13002 -t -1 --setParameters lumiscale=8 --expectSignal=10000 > result.mcasimov.FitDiagnostics.8.txt + combine -M FitDiagnostics datacards/Sig_opt5future/mjjbins/datacard.txt --rMin -300 --rMax 13002 -t -1 --setParameters lumiscale=20 --expectSignal=10000 > result.mcasimov.FitDiagnostics.20.txt + combine -M FitDiagnostics datacards/Sig_opt5future/mjjbins/datacard.txt --rMin -300 --rMax 13002 -t -1 --setParameters lumiscale=40 --expectSignal=10000 > result.mcasimov.FitDiagnostics.40.txt + combine -M FitDiagnostics datacards/Sig_opt5future/mjjbins/datacard.txt --rMin -300 --rMax 13002 -t -1 --setParameters lumiscale=100 --expectSignal=10000 > result.mcasimov.FitDiagnostics.100.txt + combine -M FitDiagnostics datacards/Sig_opt5future/mjjbins/datacard.txt --rMin -300 --rMax 13002 -t -1 --setParameters lumiscale=200 --expectSignal=10000 > result.mcasimov.FitDiagnostics.200.txt + + + cat result.mcasimov.FitDiagnostics.1.txt result.mcasimov.FitDiagnostics.2.txt result.mcasimov.FitDiagnostics.4.txt result.mcasimov.FitDiagnostics.8.txt result.mcasimov.FitDiagnostics.20.txt result.mcasimov.FitDiagnostics.40.txt result.mcasimov.FitDiagnostics.100.txt result.mcasimov.FitDiagnostics.200.txt | grep "Best fit r:" + + + + + combine -M FitDiagnostics datacards/Sig_opt6future/mjj/datacard.txt --rMin -300 --rMax 302 -t -1 --setParameters lumiscale=1 --expectSignal=100 > result.mcasimov.FitDiagnostics.1.txt + combine -M FitDiagnostics datacards/Sig_opt6future/mjj/datacard.txt --rMin -300 --rMax 302 -t -1 --setParameters lumiscale=2 --expectSignal=100 > result.mcasimov.FitDiagnostics.2.txt + combine -M FitDiagnostics datacards/Sig_opt6future/mjj/datacard.txt --rMin -300 --rMax 302 -t -1 --setParameters lumiscale=4 --expectSignal=100 > result.mcasimov.FitDiagnostics.4.txt + combine -M FitDiagnostics datacards/Sig_opt6future/mjj/datacard.txt --rMin -300 --rMax 302 -t -1 --setParameters lumiscale=8 --expectSignal=100 > result.mcasimov.FitDiagnostics.8.txt + combine -M FitDiagnostics datacards/Sig_opt6future/mjj/datacard.txt --rMin -300 --rMax 302 -t -1 --setParameters lumiscale=20 --expectSignal=100 > result.mcasimov.FitDiagnostics.20.txt + combine -M FitDiagnostics datacards/Sig_opt6future/mjj/datacard.txt --rMin -300 --rMax 302 -t -1 --setParameters lumiscale=40 --expectSignal=100 > result.mcasimov.FitDiagnostics.40.txt + combine -M FitDiagnostics datacards/Sig_opt6future/mjj/datacard.txt --rMin -300 --rMax 302 -t -1 --setParameters lumiscale=100 --expectSignal=100 > result.mcasimov.FitDiagnostics.100.txt + combine -M FitDiagnostics datacards/Sig_opt6future/mjj/datacard.txt --rMin -300 --rMax 302 -t -1 --setParameters lumiscale=200 --expectSignal=100 > result.mcasimov.FitDiagnostics.200.txt + + + cat result.mcasimov.FitDiagnostics.1.txt result.mcasimov.FitDiagnostics.2.txt result.mcasimov.FitDiagnostics.4.txt result.mcasimov.FitDiagnostics.8.txt result.mcasimov.FitDiagnostics.20.txt result.mcasimov.FitDiagnostics.40.txt result.mcasimov.FitDiagnostics.100.txt result.mcasimov.FitDiagnostics.200.txt | grep "Best fit r:" + + + + combine -M Significance datacards/Sig_opt6future/mjj/datacard.txt -t -1 --setParameters lumiscale=1 --expectSignal=100 > result.mcasimov.Significance.1.txt + combine -M Significance datacards/Sig_opt6future/mjj/datacard.txt -t -1 --setParameters lumiscale=2 --expectSignal=100 > result.mcasimov.Significance.2.txt + combine -M Significance datacards/Sig_opt6future/mjj/datacard.txt -t -1 --setParameters lumiscale=4 --expectSignal=100 > result.mcasimov.Significance.4.txt + combine -M Significance datacards/Sig_opt6future/mjj/datacard.txt -t -1 --setParameters lumiscale=8 --expectSignal=100 > result.mcasimov.Significance.8.txt + combine -M Significance datacards/Sig_opt6future/mjj/datacard.txt -t -1 --setParameters lumiscale=20 --expectSignal=100 > result.mcasimov.Significance.20.txt + combine -M Significance datacards/Sig_opt6future/mjj/datacard.txt -t -1 --setParameters lumiscale=40 --expectSignal=100 > result.mcasimov.Significance.40.txt + combine -M Significance datacards/Sig_opt6future/mjj/datacard.txt -t -1 --setParameters lumiscale=100 --expectSignal=100 > result.mcasimov.Significance.100.txt + combine -M Significance datacards/Sig_opt6future/mjj/datacard.txt -t -1 --setParameters lumiscale=200 --expectSignal=100 > result.mcasimov.Significance.200.txt + + + cat result.mcasimov.Significance.1.txt result.mcasimov.Significance.2.txt result.mcasimov.Significance.4.txt result.mcasimov.Significance.8.txt result.mcasimov.Significance.20.txt result.mcasimov.Significance.40.txt result.mcasimov.Significance.100.txt result.mcasimov.Significance.200.txt | grep "Significance:" + + + + combine -M Significance datacards/Sig_opt6future/mjj/datacard.txt -t -1 --setParameters lumiscale=1 --expectSignal=1 > result.mcasimov.Significance.1.txt + combine -M Significance datacards/Sig_opt6future/mjj/datacard.txt -t -1 --setParameters lumiscale=2 --expectSignal=1 > result.mcasimov.Significance.2.txt + combine -M Significance datacards/Sig_opt6future/mjj/datacard.txt -t -1 --setParameters lumiscale=4 --expectSignal=1 > result.mcasimov.Significance.4.txt + combine -M Significance datacards/Sig_opt6future/mjj/datacard.txt -t -1 --setParameters lumiscale=8 --expectSignal=1 > result.mcasimov.Significance.8.txt + combine -M Significance datacards/Sig_opt6future/mjj/datacard.txt -t -1 --setParameters lumiscale=20 --expectSignal=1 > result.mcasimov.Significance.20.txt + combine -M Significance datacards/Sig_opt6future/mjj/datacard.txt -t -1 --setParameters lumiscale=40 --expectSignal=1 > result.mcasimov.Significance.40.txt + combine -M Significance datacards/Sig_opt6future/mjj/datacard.txt -t -1 --setParameters lumiscale=100 --expectSignal=1 > result.mcasimov.Significance.100.txt + combine -M Significance datacards/Sig_opt6future/mjj/datacard.txt -t -1 --setParameters lumiscale=200 --expectSignal=1 > result.mcasimov.Significance.200.txt + + + cat result.mcasimov.Significance.1.txt result.mcasimov.Significance.2.txt result.mcasimov.Significance.4.txt result.mcasimov.Significance.8.txt result.mcasimov.Significance.20.txt result.mcasimov.Significance.40.txt result.mcasimov.Significance.100.txt result.mcasimov.Significance.200.txt | grep "Significance:" + + + + + combine -M AsymptoticLimits datacards/Sig_opt6future/mjj/datacard.txt -t -1 --setParameters lumiscale=1 --expectSignal=1 + + diff --git a/Hgg/2018UL1l/aliases.py b/Hgg/2018UL1l/aliases.py new file mode 100644 index 00000000..d116ee47 --- /dev/null +++ b/Hgg/2018UL1l/aliases.py @@ -0,0 +1,438 @@ +import os +import copy +import inspect + +# /afs/cern.ch/user/n/ntrevisa/work/latinos/Run3/PlotsConfigurationsRun3/WH_chargeAsymmetry/UL/Full2018_v9/WHSS/DY_OS_CR +#/afs/cern.ch/user/a/amassiro/work/Latinos/Framework/Hgg/Analysis/PlotsConfigurationsRun3/Hgg/2018UL +configurations = os.path.realpath(inspect.getfile(inspect.currentframe())) # this file +configurations = os.path.dirname(configurations) # 2018UL +configurations = os.path.dirname(configurations) # Hgg +#configurations = os.path.dirname(configurations) # PlotsConfigurationsRun3 + +aliases = {} +aliases = OrderedDict() + +mc = [skey for skey in samples if skey not in ('Fake', 'DATA')] + +# +# AM: for the time being exclude the signal from the list of nuisances ... missing adequate post-processing +# +mc_special = [skey for skey in samples if skey not in ('Fake', 'DATA', 'Hgluglu', 'qqZHgluglu', 'ggZHgluglu', 'WHgluglu')] + + +# LepCut2l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW +eleWP = 'mvaFall17V2Iso_WP90' +muWP = 'cut_Tight_HWWW' + +# aliases['LepWPCut'] = { +# 'expr' : 'LepCut2l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW*\ +# ( ((abs(Lepton_pdgId[0])==13 && Muon_mvaTTH[Lepton_muonIdx[0]]>0.82) || (abs(Lepton_pdgId[0])==11 && Lepton_mvaTTH_UL[0]>0.90)) \ +# && ((abs(Lepton_pdgId[1])==13 && Muon_mvaTTH[Lepton_muonIdx[1]]>0.82) || (abs(Lepton_pdgId[1])==11 && Lepton_mvaTTH_UL[1]>0.90)) )', +# #'samples': mc + ['DATA'] +# 'samples': mc_special + ['DATA'] +# } + +# Lepton SF (not considering the ttHMVA discriminant) +# aliases['LepWPSF'] = { +# 'expr' : 'LepSF2l__ele_'+eleWP+'__mu_'+muWP, +# #'samples' : mc +# 'samples' : mc_special +# } + +# lepton id cut +aliases['LepWPCut_1l'] = { + 'expr' : '(Lepton_isTightElectron_'+eleWP+'[0]>0.5 || Lepton_isTightMuon_'+muWP+'[0]>0.5)', + #'samples': mc + ['DATA'] + 'samples': mc_special + ['DATA'] +} + +# Lepton id SF +aliases['LepWPWeight_1l'] = { + 'expr' : 'Lepton_tightElectron_'+eleWP+'_IdIsoSF'+'[0]* Lepton_tightMuon_'+muWP+'_IdIsoSF[0]', + #'samples' : mc + 'samples' : mc_special +} + + + + + +# ttHMVA SFs and uncertainties +#aliases['LepWPttHMVASF'] = { + #'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], + #'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH = ttHMVASF(\"2018\", 2, \"all\", \"nominal\");')"], + #'expr' : 'ttH(Lepton_pt, Lepton_eta, Lepton_pdgId)', + #'samples' : mc, +#} + +#aliases['LepWPttHMVASFEleUp'] = { + #'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], + #'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_EleUp = ttHMVASF(\"2018\", 2, \"all\", \"eleUp\");')"], + #'expr' : 'ttH_EleUp(Lepton_pt, Lepton_eta, Lepton_pdgId)', + #'samples' : mc, +#} +#aliases['LepWPttHMVASFEleDown'] = { + #'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], + #'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_EleDown = ttHMVASF(\"2018\", 2, \"all\", \"eleDown\");')"], + #'expr' : 'ttH_EleDown(Lepton_pt, Lepton_eta, Lepton_pdgId)', + #'samples' : mc, +#} + +#aliases['LepWPttHMVASFMuUp'] = { + #'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], + #'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_MuUp = ttHMVASF(\"2018\", 2, \"all\", \"muUp\");')"], + #'expr' : 'ttH_MuUp(Lepton_pt, Lepton_eta, Lepton_pdgId)', + #'samples' : mc, +#} +#aliases['LepWPttHMVASFMuDown'] = { + #'linesToAdd' : [f'#include "{configurations}/macros/ttHMVASF_class.cc"'], + #'linesToProcess' : ["ROOT.gInterpreter.Declare('ttHMVASF ttH_MuDown = ttHMVASF(\"2018\", 2, \"all\", \"muDown\");')"], + #'expr' : 'ttH_MuDown(Lepton_pt, Lepton_eta, Lepton_pdgId)', + #'samples' : mc, +#} + + +# Conept +#aliases['Lepton_conept'] = { + #'expr': 'LeptonConePt(Lepton_pt, Lepton_pdgId, Lepton_electronIdx, Lepton_muonIdx, Electron_jetRelIso, Muon_jetRelIso)', + #'linesToAdd': [f'#include "{configurations}/macros/LeptonConePt_class.cc"'], + #'samples': mc + ['Fake', 'DATA', 'DATA_unprescaled'] +#} + +# Fake leptons transfer factor +#aliases['fakeW'] = { + #'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + #'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"nominal\", 2, \"std\", \"{configurations}\");')"], + #'expr' : 'fr_reader(Lepton_pdgId, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + #'samples' : ['Fake'] +#} + +## And variations - already divided by central values in formulas ! +#aliases['fakeWEleUp'] = { + #'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + #'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleUp = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"EleUp\", 2, \"std\", \"{configurations}\");')"], + #'expr' : 'fr_reader_EleUp(Lepton_pdgId, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + #'samples' : ['Fake'] +#} +#aliases['fakeWEleDown'] = { + #'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + #'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_EleDown = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"EleDown\", 2, \"std\", \"{configurations}\");')"], + #'expr' : 'fr_reader_EleDown(Lepton_pdgId, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + #'samples' : ['Fake'] +#} + +#aliases['fakeWMuUp'] = { + #'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + #'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuUp = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"MuUp\", 2, \"std\", \"{configurations}\");')"], + #'expr' : 'fr_reader_MuUp(Lepton_pdgId, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + #'samples' : ['Fake'] +#} +#aliases['fakeWMuDown'] = { + #'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + #'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_MuDown = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"MuDown\", 2, \"std\", \"{configurations}\");')"], + #'expr' : 'fr_reader_MuDown(Lepton_pdgId, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + #'samples' : ['Fake'] +#} + +#aliases['fakeWStatEleUp'] = { + #'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + #'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleUp = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"StatEleUp\", 2, \"std\", \"{configurations}\");')"], + #'expr': 'fr_reader_StatEleUp(Lepton_pdgId, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + #'samples': ['Fake'] +#} +#aliases['fakeWStatEleDown'] = { + #'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + #'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatEleDown = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"StatEleDown\", 2, \"std\", \"{configurations}\");')"], + #'expr' : 'fr_reader_StatEleDown(Lepton_pdgId, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + #'samples' : ['Fake'] +#} + +#aliases['fakeWStatMuUp'] = { + #'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + #'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuUp = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"StatMuUp\", 2, \"std\", \"{configurations}\");')"], + #'expr': 'fr_reader_StatMuUp(Lepton_pdgId, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + #'samples' : ['Fake'] +#} +#aliases['fakeWStatMuDown'] = { + #'linesToAdd' : [f'#include "{configurations}/macros/fake_rate_reader_class.cc"'], + #'linesToProcess' : [f"ROOT.gInterpreter.Declare('fake_rate_reader fr_reader_StatMuDown = fake_rate_reader(\"2018\", \"90\", \"82\", 0.90, 0.82, \"StatMuDown\", 2, \"std\", \"{configurations}\");')"], + #'expr' : 'fr_reader_StatMuDown(Lepton_pdgId, Lepton_eta, Lepton_isTightMuon_cut_Tight_HWWW, Lepton_isTightElectron_mvaFall17V2Iso_WP90, Lepton_mvaTTH_UL, Muon_mvaTTH, Lepton_muonIdx, CleanJet_pt, nCleanJet)', + #'samples' : ['Fake'] +#} + + + +# Fake leptons transfer factor +# aliases['fakeW'] = { +# 'expr': 'fakeW2l_ele_'+eleWP+'_mu_'+muWP, +# 'samples': ['Fake'] +# } +# # And variations - already divided by central values in formulas ! +# aliases['fakeWEleUp'] = { +# 'expr': 'fakeW2l_ele_'+eleWP+'_mu_'+muWP+'_EleUp', +# 'samples': ['Fake'] +# } +# aliases['fakeWEleDown'] = { +# 'expr': 'fakeW2l_ele_'+eleWP+'_mu_'+muWP+'_EleDown', +# 'samples': ['Fake'] +# } +# aliases['fakeWMuUp'] = { +# 'expr': 'fakeW2l_ele_'+eleWP+'_mu_'+muWP+'_MuUp', +# 'samples': ['Fake'] +# } +# aliases['fakeWMuDown'] = { +# 'expr': 'fakeW2l_ele_'+eleWP+'_mu_'+muWP+'_MuDown', +# 'samples': ['Fake'] +# } +# aliases['fakeWStatEleUp'] = { +# 'expr': 'fakeW2l_ele_'+eleWP+'_mu_'+muWP+'_statEleUp', +# 'samples': ['Fake'] +# } +# aliases['fakeWStatEleDown'] = { +# 'expr': 'fakeW2l_ele_'+eleWP+'_mu_'+muWP+'_statEleDown', +# 'samples': ['Fake'] +# } +# aliases['fakeWStatMuUp'] = { +# 'expr': 'fakeW2l_ele_'+eleWP+'_mu_'+muWP+'_statMuUp', +# 'samples': ['Fake'] +# } +# aliases['fakeWStatMuDown'] = { +# 'expr': 'fakeW2l_ele_'+eleWP+'_mu_'+muWP+'_statMuDown', +# 'samples': ['Fake'] +# } + + + + +# Charge-flip efficiencies and uncertainties +#aliases['ttHMVA_eff_flip_2l'] = { + #'linesToAdd' : [f'#include "{configurations}/macros/flipper_eff_class.cc"'], + #'linesToProcess' : ["ROOT.gInterpreter.Declare('flipper_eff flipper = flipper_eff(\"UL_2018\", 2, \"Total_SF\", \"false\");')"], + #'expr' : 'flipper(Lepton_pt, Lepton_eta, Lepton_pdgId)', + #'samples' : mc + ['DATA','Fake'], +#} + +#aliases['ttHMVA_eff_err_flip_2l'] = { + #'linesToAdd' : [f'#include "{configurations}/macros/flipper_eff_class.cc"'], + #'linesToProcess' : ["ROOT.gInterpreter.Declare('flipper_eff flipper_unc = flipper_eff(\"UL_2018\", 2, \"Total_SF\", \"false\");')"], + #'expr' : 'flipper_unc(Lepton_pt, Lepton_eta, Lepton_pdgId)', + #'samples' : mc + ['DATA','Fake'], +#} + + +# No jet with pt > 30 GeV +aliases['zeroJet'] = { + 'expr': 'Alt(CleanJet_pt, 0, 0) < 30.' +} + +aliases['oneJet'] = { + 'expr': 'Alt(CleanJet_pt, 0, 0) > 30. && Alt(CleanJet_pt, 1, 0) < 30.' +} + +aliases['multiJet'] = { + 'expr': 'Alt(CleanJet_pt, 1, 0) > 30.' +} + +#################################################################################### +# b tagging WPs: https://twiki.cern.ch/twiki/bin/view/CMS/BtagRecommendation106XUL18 +#################################################################################### + +# DeepB = DeepCSV +bWP_loose_deepB = '0.1208' +bWP_medium_deepB = '0.4168' +bWP_tight_deepB = '0.7665' + +# DeepFlavB = DeepJet +bWP_loose_deepFlavB = '0.0490' +bWP_medium_deepFlavB = '0.2783' +bWP_tight_deepFlavB = '0.7100' + +# Actual algo and WP definition. BE CONSISTENT!! +bAlgo = 'DeepB' # ['DeepB', 'DeepFlavB' ] +bWP = bWP_medium_deepB # [bWP_loose_deepB, bWP_loose_deepFlavB] +bSF = 'deepcsv' # ['deepcsv', 'deepjet' ] + +# b veto +aliases['bVeto'] = { + 'expr': 'Sum(CleanJet_pt > 20. && abs(CleanJet_eta) < 2.5 && Take(Jet_btag{}, CleanJet_jetIdx) > {}) == 0'.format(bAlgo, bWP) +} + +aliases['bVetoSF'] = { + 'expr': 'TMath::Exp(Sum(LogVec((CleanJet_pt>20 && abs(CleanJet_eta)<2.5)*Take(Jet_btagSF_{}_shape, CleanJet_jetIdx)+1*(CleanJet_pt<20 || abs(CleanJet_eta)>2.5))))'.format(bSF), + #'samples': mc + 'samples' : mc_special +} + +# At least one b-tagged jet +aliases['bReq'] = { + 'expr': 'Sum(CleanJet_pt > 30. && abs(CleanJet_eta) < 2.5 && Take(Jet_btag{}, CleanJet_jetIdx) > {}) >= 1'.format(bAlgo, bWP) +} + +aliases['bReqSF'] = { + 'expr': 'TMath::Exp(Sum(LogVec((CleanJet_pt>30 && abs(CleanJet_eta)<2.5)*Take(Jet_btagSF_{}_shape, CleanJet_jetIdx)+1*(CleanJet_pt<30 || abs(CleanJet_eta)>2.5))))'.format(bSF), + #'samples': mc + 'samples' : mc_special +} + +# Top control region +aliases['topcr'] = { + 'expr': 'mtw2>30 && mll>50 && ((zeroJet && !bVeto) || bReq)' +} + +# WW control region +aliases['wwcr'] = { + 'expr': 'mth>60 && mtw2>30 && mll>100 && bVeto' +} + +# Overall b tag SF +aliases['btagSF'] = { + # 'expr': '(bVeto || (topcr && zeroJet))*bVetoSF + (topcr && !zeroJet)*bReqSF', + 'expr': '(bVeto)*bVetoSF + (!bVeto)*bReqSF', + #'samples': mc + 'samples' : mc_special +} + +for shift in ['jesAbsolute', 'jesAbsolute_2018', 'jesBBEC1', 'jesBBEC1_2018', 'jesEC2', + 'jesEC2_2018', 'jesFlavorQCD', 'jesHF', 'jesHF_2018', 'jesRelativeBal', + 'jesRelativeSample_2018']: + for var in ['up','down']: + aliases[f'Jet_btagSF_{bSF}_shape_{shift.replace("jes","JES")}{var[:2]}'] = { + 'expr' : f'Jet_btagSF_{bSF}_shape_{var}_{shift}', + #'samples' : mc + 'samples' : mc_special + } + +for shift in ['jesAbsolute', 'jesAbsolute_2018', 'jesBBEC1', 'jesBBEC1_2018', 'jesEC2', + 'jesEC2_2018', 'jesFlavorQCD', 'jesHF', 'jesHF_2018', 'jesRelativeBal', + 'jesRelativeSample_2018', 'lf', 'hf', 'lfstats1', 'lfstats2', + 'hfstats1', 'hfstats2', 'cferr1', 'cferr2']: + + for targ in ['bVeto', 'bReq']: + alias = aliases['%sSF%sup' % (targ, shift)] = copy.deepcopy(aliases['%sSF' % targ]) + alias['expr'] = alias['expr'].replace('btagSF_{}_shape'.format(bSF), 'btagSF_{}_shape_up_{}'.format(bSF, shift)) + + alias = aliases['%sSF%sdown' % (targ, shift)] = copy.deepcopy(aliases['%sSF' % targ]) + alias['expr'] = alias['expr'].replace('btagSF_{}_shape'.format(bSF), 'btagSF_{}_shape_down_{}'.format(bSF, shift)) + + aliases['btagSF%sup' % shift] = { + 'expr': aliases['btagSF']['expr'].replace('SF', 'SF' + shift + 'up'), + #'samples': mc + 'samples' : mc_special + } + + aliases['btagSF%sdown' % shift] = { + 'expr': aliases['btagSF']['expr'].replace('SF', 'SF' + shift + 'down'), + #'samples': mc + 'samples' : mc_special + } + +#################################################################################### +# End of b tagging pippone +#################################################################################### + +# Need to redefine PUID scale factors, so that they are double and not vectors +aliases['Jet_PUIDSF'] = { + 'expr' : 'TMath::Exp(Sum((Jet_jetId>=2)*LogVec(Jet_PUIDSF_loose)))', + #'samples': mc + 'samples' : mc_special +} + +aliases['Jet_PUIDSF_up'] = { + 'expr' : 'TMath::Exp(Sum((Jet_jetId>=2)*LogVec(Jet_PUIDSF_loose_up)))', + #'samples': mc + 'samples' : mc_special +} + +aliases['Jet_PUIDSF_down'] = { + 'expr' : 'TMath::Exp(Sum((Jet_jetId>=2)*LogVec(Jet_PUIDSF_loose_down)))', + #'samples': mc + 'samples' : mc_special +} + + +aliases['gstarLow'] = { + 'expr': 'Gen_ZGstar_mass > 0 && Gen_ZGstar_mass < 4', + 'samples': 'VgS' +} + +aliases['gstarHigh'] = { + 'expr': 'Gen_ZGstar_mass < 0 || Gen_ZGstar_mass > 4', + 'samples': 'WZ' +} + +# # gen-matching to prompt only (GenLepMatch2l matches to *any* gen lepton) +# aliases['PromptGenLepMatch2l'] = { +# 'expr': 'Alt(Lepton_promptgenmatched, 0, 0) * Alt(Lepton_promptgenmatched, 1, 0)', +# #'samples': mc +# 'samples' : mc_special +# } + +# # PostProcessing did not create (anti)topGenPt for ST samples with _ext1 +# lastcopy = (1 << 13) + +aliases['Top_pTrw'] = { + 'expr': '(topGenPt * antitopGenPt > 0.) * (TMath::Sqrt(TMath::Exp(0.0615 - 0.0005 * topGenPt) * TMath::Exp(0.0615 - 0.0005 * antitopGenPt))) + (topGenPt * antitopGenPt <= 0.)', + 'samples': ['top'] +} + +# data/MC scale factors +# aliases['SFweight'] = { + # #'expr': ' * '.join(['SFweight2l', 'LepWPCut', 'LepWPSF','Jet_PUIDSF', 'btagSF', 'LepWPttHMVASF']), + # 'expr': ' * '.join(['SFweight1l', 'LepWPCut', 'LepWPSF','Jet_PUIDSF', 'btagSF']), + # #'samples': mc + # 'samples' : mc_special +# } + +# variations +# aliases['SFweightEleUp'] = { +# 'expr': 'LepSF2l__ele_'+eleWP+'__Up', +# #'samples': mc +# 'samples' : mc_special +# } +# aliases['SFweightEleDown'] = { +# 'expr': 'LepSF2l__ele_'+eleWP+'__Do', +# #'samples': mc +# 'samples' : mc_special +# } +# +# aliases['SFweightMuUp'] = { +# 'expr': 'LepSF2l__mu_'+muWP+'__Up', +# #'samples': mc +# 'samples' : mc_special +# } +# aliases['SFweightMuDown'] = { +# 'expr': 'LepSF2l__mu_'+muWP+'__Do', +# #'samples': mc +# 'samples' : mc_special +# } +# +# # TriggerSFWeight_2l:TriggerSFWeight_2l_u:TriggerSFWeight_2l_d +# aliases['SFtriggUp'] = { +# 'expr': 'TriggerSFWeight_2l_u/TriggerSFWeight_2l', +# #'samples': mc +# 'samples' : mc_special +# } +# aliases['SFtriggDown'] = { +# 'expr': 'TriggerSFWeight_2l_d/TriggerSFWeight_2l', +# #'samples': mc +# 'samples' : mc_special +# } + +# Veto events in the problematic region: +# electrons or jets in: +# (-1.57 < phi < -0.87) , (-2.5 < eta < -1.3) +aliases['hole_veto'] = { + 'expr': '( ( (Lepton_eta[0] < -1.3 && Lepton_eta[0] > -2.5 ) && (Lepton_phi[0] > -1.57 && Lepton_phi[0] < -0.87) && (abs(Lepton_pdgId[0])==11) ) \ + || ( (Lepton_eta[1] < -1.3 && Lepton_eta[1] > -2.5 ) && (Lepton_phi[1] > -1.57 && Lepton_phi[1] < -0.87) && (abs(Lepton_pdgId[1])==11) ) \ + || ( (Alt(CleanJet_eta, 0, 99) < -1.3 && (Alt(CleanJet_eta, 0, -99) > -2.5)) && (Alt(CleanJet_phi, 0, -99) > -1.57 && Alt(CleanJet_phi, 0, 99) < -0.87) ) \ + || ( (Alt(CleanJet_eta, 1, 99) < -1.3 && (Alt(CleanJet_eta, 1, -99) > -2.5)) && (Alt(CleanJet_phi, 1, -99) > -1.57 && Alt(CleanJet_phi, 1, 99) < -0.87) ) \ + ) ', +} + +# Evaluate BDT discriminant +#aliases['BDT_WHSS_TopSemileptonic_v9'] = { + #'linesToAdd' : ['#include "%s/macros/BDT_WHSS_TopSemileptonic_v9_class.cc"' % configurations], + #'linesToProcess' : ["ROOT.gInterpreter.Declare('BDT_WHSS_TopSemileptonic_v9 BDT_WHSS = BDT_WHSS_TopSemileptonic_v9(\"BDTG_6\",\"{0}/data/BDT/2018/WHSS/weights/TMVAClassification_BDTG_6.weights.xml\");')".format(configurations)], + #'expr' : 'BDT_WHSS(mll,mjj,mtw1,mtw2,ptll,mlljj20_whss,PuppiMET_pt,dphill,dphijj,dphillmet,dphilmet2,dphijet1met,CleanJet_pt,Jet_btagDeepB,CleanJet_jetIdx)', + #'samples' : mc + ['DATA','Fake'], +#} diff --git a/Hgg/2018UL1l/configuration.py b/Hgg/2018UL1l/configuration.py new file mode 100644 index 00000000..a10506c3 --- /dev/null +++ b/Hgg/2018UL1l/configuration.py @@ -0,0 +1,101 @@ +# Configuration file for charge asymmetry WHSS analysis using the UL 2018 dataset + +import sys,inspect + +# Site definition +site = 'cern' +if any(machine in os.uname()[1] for machine in ['portal','bms']): + site = 'kit' + +# Tag used to identify the configuration folder version +tag = 'WHgg_2018' + +# File to use as runner script, default uses mkShapesRDF.shapeAnalysis.runner, otherwise specify path to script +runnerFile = "default" + +# Output file name +outputFile = "mkShapes__{}.root".format(tag) + + +# Path to ouput folder +outputFolder = "rootFiles" +# Path to ouput folder +#outputFolder = "/eos/user/" + os.getlogin()[0] + "/" + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" +#if site == 'kit': + #outputFolder = '/ceph/' + os.getlogin() + "/mkShapesRDF_rootfiles/" + tag + "/rootFile/" + +# Path to batch folder (used for condor submission) +batchFolder = "condor" + +# Path to configuration folder (will contain all the compiled configuration files) +configsFolder = "configs" + +# Luminosity to normalize to (in 1/fb) +# https://github.com/latinos/LatinoAnalysis/blob/UL_production/NanoGardener/python/data/TrigMaker_cfg.py#L868 (874) +# 59.832475339 +lumi = 59.83 + +# File with dict of aliases to define +aliasesFile = "aliases.py" + +# File with dict of variables +variablesFile = "variables.py" + +# File with dict of cuts +cutsFile = "cuts.py" + +# File with dict of samples +samplesFile = "samples.py" + +# File with dict of samples for plotting +plotFile = 'plot.py' + +# File with dict of structure (used to define processes in combine) +structureFile = "structure.py" + +# Nuisances file for mkDatacards and for mkShape +nuisancesFile = "nuisances.py" + +# Path to folder where to save plots +plotPath = 'plots_' + tag + +# This lines are executed right before the runner on the condor node +mountEOS = [] + +# List of imports to import when compiling the whole configuration folder, it should not contain imports used by configuration.py +imports = ["os", "glob", ("collections", "OrderedDict"), "ROOT"] + +# List of files to compile +filesToExec = [ + samplesFile, + aliasesFile, + variablesFile, + cutsFile, + plotFile, + nuisancesFile, + structureFile, +] + +# List of variables to keep in the compiled configuration folder +varsToKeep = [ + "batchVars", + "outputFolder", + "batchFolder", + "configsFolder", + "outputFile", + "runnerFile", + "tag", + "samples", + "aliases", + "variables", + ("cuts", {"cuts": "cuts", "preselections": "preselections"}), + ("plot", {"plot": "plot", "groupPlot": "groupPlot", "legend": "legend"}), + "nuisances", + "structure", + "lumi", +] + +# List of variables to keep in the batch submission script (script.py) +batchVars = varsToKeep[varsToKeep.index("samples") :] + +varsToKeep += ['plotPath'] diff --git a/Hgg/2018UL1l/cuts.py b/Hgg/2018UL1l/cuts.py new file mode 100644 index 00000000..d17382bf --- /dev/null +++ b/Hgg/2018UL1l/cuts.py @@ -0,0 +1,33 @@ +# cuts + +cuts = {} + +preselections = 'Lepton_pt[0]>25 \ + && Alt(Lepton_pt,1,0)<10 \ + && abs(Lepton_eta[0])<2.5 \ + && bVeto \ + ' + + +cuts['WjetsCR'] = { + 'expr' : '1', + 'categories' : { + '0j' : 'Alt(CleanJet_pt,0,0) < 30', + '1j' : 'Alt(CleanJet_pt,1,0) < 30 && Alt(CleanJet_pt,0,0) > 30', + '2j' : 'Alt(CleanJet_pt,2,0) < 30 && Alt(CleanJet_pt,1,0) > 30', + } +} + + +cuts['Sig1l'] = { + 'expr' : ' Alt(Lepton_pt,1,0)<10 \ + && Alt(CleanJet_pt,2,0) < 30 && Alt(CleanJet_pt,1,0) > 30', + 'categories' : { + 'inclusive' : '1', + 'opt1' : 'PuppiMET_pt>20 && detajj<3 && Alt(Jet_qgl,CleanJet_jetIdx[0],2)<0.5 && Alt(Jet_qgl,CleanJet_jetIdx[1],2)<0.5 && abs(Lepton_eta[0])<1.5', + 'opt2' : 'PuppiMET_pt>20 && detajj<3 && Alt(Jet_qgl,CleanJet_jetIdx[0],2)<0.5 && Alt(Jet_qgl,CleanJet_jetIdx[1],2)<0.5 && abs(Lepton_eta[0])<1.5 && Alt(Jet_btagCSVV2,CleanJet_jetIdx[0],2)<0.5 && Alt(Jet_btagCSVV2,CleanJet_jetIdx[1],2) < 0.5 && Alt(Jet_btagDeepB,CleanJet_jetIdx[0],2)<0.2 && Alt(Jet_btagDeepB,CleanJet_jetIdx[1],2)<0.2', + 'opt3' : 'PuppiMET_pt>20 && detajj<2 && Alt(Jet_qgl,CleanJet_jetIdx[0],2)<0.5 && Alt(Jet_qgl,CleanJet_jetIdx[1],2)<0.5 && abs(Lepton_eta[0])<1.5 && Alt(Jet_btagCSVV2,CleanJet_jetIdx[0],2)<0.5 && Alt(Jet_btagCSVV2,CleanJet_jetIdx[1],2) < 0.5 && Alt(Jet_btagDeepB,CleanJet_jetIdx[0],2)<0.2 && Alt(Jet_btagDeepB,CleanJet_jetIdx[1],2)<0.2 && mjj<180 && Alt(CleanJet_pt,0,0) > 50 && abs(Alt(CleanJet_eta,0,0))<2.0 && abs(Alt(CleanJet_eta,1,0))<2.0', + + } +} + diff --git a/Hgg/2018UL1l/nuisances.py b/Hgg/2018UL1l/nuisances.py new file mode 100644 index 00000000..63475552 --- /dev/null +++ b/Hgg/2018UL1l/nuisances.py @@ -0,0 +1,398 @@ +import sys + +# Enable reading YR for Higgs XS and uncertainties +sys.path.append('../macros/') +#import HiggsXSection +#HiggsXS = HiggsXSection.HiggsXSection() + +nuisances = {} + +mcProduction = 'Summer20UL18_106x_nAODv9_Full2018v9' +dataReco = 'Run2018_UL2018_nAODv9_Full2018v9' +mcSteps = 'MCl1loose2018v9__MCCorr2018v9NoJERInHorn__l2tightOR2018v9' +fakeSteps = 'DATAl1loose2018v9__l2loose__fakeW' +dataSteps = 'DATAl1loose2018v9__l2loose__l2tightOR2018v9' + +treeBaseDir = '/eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano' +limitFiles = -1 + +# +# AM: for the time being exclude the signal from the list of nuisances ... missing adequate post-processing +# +mc = [skey for skey in samples if skey not in ('Fake', 'DATA', 'Hgluglu')] +mcln = [skey for skey in samples if skey not in ('Fake', 'DATA')] + +redirector = "" + +useXROOTD = False + +def makeMCDirectory(var=''): + if var== '': + print(os.path.join(treeBaseDir, mcProduction, mcSteps)) + return os.path.join(treeBaseDir, mcProduction, mcSteps) + else: + print(os.path.join(treeBaseDir, mcProduction, mcSteps + '__' + var)) + return os.path.join(treeBaseDir, mcProduction, mcSteps + '__' + var) + +mcDirectory = makeMCDirectory() +fakeDirectory = os.path.join(treeBaseDir, dataReco, fakeSteps) +dataDirectory = os.path.join(treeBaseDir, dataReco, dataSteps) + +################################ EXPERIMENTAL UNCERTAINTIES ################################# + +#### Luminosity + +# https://twiki.cern.ch/twiki/bin/view/CMS/LumiRecommendationsRun2#LumiComb +# Uncorrelated 2016 1.0 +# Uncorrelated 2017 2.0 +# Uncorrelated 2018 1.5 +# Correlated 2016, 2017, 2018 0.6, 0.9, 2.0 +# Correlated 2017, 2018 0.6, 0.2 + +nuisances['lumi_Uncorrelated'] = { + 'name' : 'lumi_13TeV_2018', + 'type' : 'lnN', + 'samples' : dict((skey, '1.015') for skey in mcln if skey not in ['blabla']) +} + +nuisances['lumi_Correlated_Run2'] = { + 'name' : 'lumi_13TeV_correlated', + 'type' : 'lnN', + 'samples' : dict((skey, '1.020') for skey in mcln if skey not in ['blabla']) +} + +nuisances['lumi_Correlated_2017_2018'] = { + 'name' : 'lumi_13TeV_1718', + 'type' : 'lnN', + 'samples' : dict((skey, '1.002') for skey in mcln if skey not in ['blabla']) +} + + +#### FAKES +#fake_syst_endcap = ['1.0*(abs(Lepton_eta[1])<=1.4) + 1.3*(abs(Lepton_eta[1])>1.4)', + #'1.0*(abs(Lepton_eta[1])<=1.4) + 1.0/1.3*(abs(Lepton_eta[1])>1.4)'] + +#fake_syst_barrel = [' 1.3*(abs(Lepton_eta[1])<=1.4) + 1.0*(abs(Lepton_eta[1])>1.4)', + #'1.0/1.3*(abs(Lepton_eta[1])<=1.4) + 1.0*(abs(Lepton_eta[1])>1.4)'] + +#nuisances['fake_syst_mm_barrel'] = { + #'name' : 'CMS_WH_hww_fake_syst_mm_barrel', + #'kind' : 'weight', + #'type' : 'shape', + #'samples' : { + #'Fake_mm' : fake_syst_barrel, + #}, + #'cuts' : [cut for cut in cuts if ('_mm_' in cut)] +#} +#nuisances['fake_syst_mm_endcap'] = { + #'name' : 'CMS_WH_hww_fake_syst_mm_endcap', + #'kind' : 'weight', + #'type' : 'shape', + #'samples' : { + #'Fake_mm' : fake_syst_endcap, + #}, + #'cuts' : [cut for cut in cuts if ('_mm_' in cut)] +#} + +#nuisances['fake_syst_em_barrel'] = { + #'name' : 'CMS_WH_hww_fake_syst_em_barrel', + #'kind' : 'weight', + #'type' : 'shape', + #'samples' : { + #'Fake_em' : fake_syst_barrel, + #}, + #'cuts' : [cut for cut in cuts if ('_em_' in cut)] +#} +#nuisances['fake_syst_em_endcap'] = { + #'name' : 'CMS_WH_hww_fake_syst_em_endcap', + #'kind' : 'weight', + #'type' : 'shape', + #'samples' : { + #'Fake_em' : fake_syst_endcap, + #}, + #'cuts' : [cut for cut in cuts if ('_em_' in cut)] +#} + +#nuisances['fake_syst_ee_barrel'] = { + #'name' : 'CMS_WH_hww_fake_syst_ee_barrel', + #'kind' : 'weight', + #'type' : 'shape', + #'samples' : { + #'Fake_ee' : fake_syst_barrel, + #}, + #'cuts' : [cut for cut in cuts if ('_ee_' in cut)] +#} +#nuisances['fake_syst_ee_endcap'] = { + #'name' : 'CMS_WH_hww_fake_syst_ee_endcap', + #'kind' : 'weight', + #'type' : 'shape', + #'samples' : { + #'Fake_ee' : fake_syst_endcap, + #}, + #'cuts' : [cut for cut in cuts if ('_ee_' in cut)] +#} + +#nuisances['fake_ele'] = { + #'name' : 'CMS_WH_hww_fake_e_2018', + #'kind' : 'weight', + #'type' : 'shape', + #'samples' : { + #'Fake_ee' : ['fakeWEleUp', 'fakeWEleDown'], + #'Fake_em' : ['fakeWEleUp', 'fakeWEleDown'], + #} +#} +#nuisances['fake_ele_stat'] = { + #'name' : 'CMS_WH_hww_fake_stat_e_2018', + #'kind' : 'weight', + #'type' : 'shape', + #'samples' : { + #'Fake_ee' : ['fakeWStatEleUp', 'fakeWStatEleDown'], + #'Fake_em' : ['fakeWStatEleUp', 'fakeWStatEleDown'], + #} +#} +#nuisances['fake_mu'] = { + #'name' : 'CMS_WH_hww_fake_m_2018', + #'kind' : 'weight', + #'type' : 'shape', + #'samples' : { + #'Fake_mm' : ['fakeWMuUp', 'fakeWMuDown'], + #'Fake_em' : ['fakeWMuUp', 'fakeWMuDown'], + #} +#} +#nuisances['fake_mu_stat'] = { + #'name' : 'CMS_WH_hww_fake_stat_m_2018', + #'kind' : 'weight', + #'type' : 'shape', + #'samples' : { + #'Fake_mm' : ['fakeWStatMuUp', 'fakeWStatMuDown'], + #'Fake_em' : ['fakeWStatMuUp', 'fakeWStatMuDown'], + #} +#} + + + +######################################################################## +### AM: from here commented ... just to speed up + +###### B-tagger + +#for shift in ['lf', 'hf', 'hfstats1', 'hfstats2', 'lfstats1', 'lfstats2', 'cferr1', 'cferr2']: + #btag_syst = ['(btagSF%sup)/(btagSF)' % shift, '(btagSF%sdown)/(btagSF)' % shift] + + #name = 'CMS_btag_%s' % shift + #if 'stats' in shift: + #name += '_2018' + + #nuisances['btag_shape_%s' % shift] = { + #'name' : name, + #'kind' : 'weight', + #'type' : 'shape', + #'samples' : dict((skey, btag_syst) for skey in mc), + #} + +###### Trigger Scale Factors + +#trig_syst = ['TriggerSFWeight_2l_u/TriggerSFWeight_2l', 'TriggerSFWeight_2l_d/TriggerSFWeight_2l'] + +#nuisances['trigg'] = { + #'name' : 'CMS_eff_hwwtrigger_2018', + #'kind' : 'weight', + #'type' : 'shape', + #'samples' : dict((skey, trig_syst) for skey in mc) +#} + +###### Electron Efficiency and energy scale + +#nuisances['eff_e'] = { + #'name' : 'CMS_eff_e_2018', + #'kind' : 'weight', + #'type' : 'shape', + #'samples' : dict((skey, ['SFweightEleUp', 'SFweightEleDown']) for skey in mc) +#} + +##nuisances['eff_ttHMVA_e'] = { + ##'name' : 'CMS_eff_ttHMVA_e_2018', + ##'kind' : 'weight', + ##'type' : 'shape', + ##'samples' : dict((skey, ['LepWPttHMVASFEleUp', 'LepWPttHMVASFEleDown']) for skey in mc) +##} + +#nuisances['electronpt'] = { + #'name' : 'CMS_scale_e_2018', + #'kind' : 'suffix', + #'type' : 'shape', + #'mapUp' : 'ElepTup', + #'mapDown' : 'ElepTdo', + #'samples' : dict((skey, ['1', '1']) for skey in mc), + #'folderUp' : makeMCDirectory('ElepTup_suffix'), + #'folderDown' : makeMCDirectory('ElepTdo_suffix'), + #'AsLnN' : '0' +#} + +###### Muon Efficiency and energy scale + +#nuisances['eff_m'] = { + #'name' : 'CMS_eff_m_2018', + #'kind' : 'weight', + #'type' : 'shape', + #'samples' : dict((skey, ['SFweightMuUp', 'SFweightMuDown']) for skey in mc) +#} + +##nuisances['eff_ttHMVA_m'] = { + ##'name' : 'CMS_eff_ttHMVA_m_2018', + ##'kind' : 'weight', + ##'type' : 'shape', + ##'samples' : dict((skey, ['LepWPttHMVASFMuUp', 'LepWPttHMVASFMuDown']) for skey in mc) +##} + +#nuisances['muonpt'] = { + #'name' : 'CMS_scale_m_2018', + #'kind' : 'suffix', + #'type' : 'shape', + #'mapUp' : 'MupTup', + #'mapDown' : 'MupTdo', + #'samples' : dict((skey, ['1', '1']) for skey in mc), + #'folderUp' : makeMCDirectory('MupTup_suffix'), + #'folderDown' : makeMCDirectory('MupTdo_suffix'), + #'AsLnN' : '0' +#} + +###### Jet energy scale +#jes_systs = ['JESAbsolute','JESAbsolute_2018','JESBBEC1','JESBBEC1_2018','JESEC2','JESEC2_2018','JESFlavorQCD','JESHF','JESHF_2018','JESRelativeBal','JESRelativeSample_2018'] + +#for js in jes_systs: + + #nuisances[js] = { + #'name' : 'CMS_scale_' + js.replace("JES","j_"), + #'kind' : 'suffix', + #'type' : 'shape', + #'mapUp' : js + 'up', + #'mapDown' : js + 'do', + #'samples' : dict((skey, ['1', '1']) for skey in mc), + #'folderUp' : makeMCDirectory('RDF__JESup_suffix'), + #'folderDown': makeMCDirectory('RDF__JESdo_suffix'), + #'reweight' : ['btagSF'+js.replace('JES','jes')+'up/btagSF','btagSF'+js.replace('JES','jes')+'down/btagSF'], + #'AsLnN' : '0' + #} + +###### Jet energy resolution +#nuisances['JER'] = { + #'name' : 'CMS_res_j_2018', + #'kind' : 'suffix', + #'type' : 'shape', + #'mapUp' : 'JERup', + #'mapDown' : 'JERdo', + #'samples' : dict((skey, ['1', '1']) for skey in mc), + #'folderUp' : makeMCDirectory('JERup_suffix'), + #'folderDown': makeMCDirectory('JERdo_suffix'), + #'AsLnN' : '0' +#} + +###### MET unclustered energy + +##nuisances['met'] = { + ##'name' : 'CMS_scale_met_2018', + ##'kind' : 'suffix', + ##'type' : 'shape', + ##'mapUp' : 'METup', + ##'mapDown' : 'METdo', + ##'samples' : dict((skey, ['1', '1']) for skey in mc), + ##'folderUp' : makeMCDirectory('METup_suffix'), + ##'folderDown': makeMCDirectory('METdo_suffix'), + ##'AsLnN' : '0' +##} + + +###### Pileup + +## puWeight_UL2018 +#nuisances['PU'] = { + #'name' : 'CMS_pileup_2018', + #'kind' : 'weight', + #'type' : 'shape', + #'samples' : { + #'DY' : ['0.998687*(puWeightUp/puWeight)', '1.001976*(puWeightDown/puWeight)'], + #'top' : ['1.002595*(puWeightUp/puWeight)', '0.997470*(puWeightDown/puWeight)'], + #'WW' : ['1.004449*(puWeightUp/puWeight)', '0.995660*(puWeightDown/puWeight)'], + #'WWewk' : ['1.002122*(puWeightUp/puWeight)', '0.998087*(puWeightDown/puWeight)'], + #'ggWW' : ['1.004870*(puWeightUp/puWeight)', '0.995315*(puWeightDown/puWeight)'], + #'WZ' : ['0.999330*(puWeightUp/puWeight)', '1.000992*(puWeightDown/puWeight)'], + #'ZZ' : ['0.999469*(puWeightUp/puWeight)', '1.000751*(puWeightDown/puWeight)'], + #'VVV' : ['1.003485*(puWeightUp/puWeight)', '0.997561*(puWeightDown/puWeight)'], + #'ggH_hww' : ['1.003677*(puWeightUp/puWeight)', '0.995996*(puWeightDown/puWeight)'], + #'qqH_hww' : ['1.003747*(puWeightUp/puWeight)', '0.995878*(puWeightDown/puWeight)'], + #}, + #'AsLnN' : '0', +#} + +#### PU ID SF uncertainty + +#puid_syst = ['Jet_PUIDSF_up/Jet_PUIDSF', 'Jet_PUIDSF_down/Jet_PUIDSF'] + +#nuisances['jetPUID'] = { + #'name' : 'CMS_eff_j_PUJET_id_2018', + #'kind' : 'weight', + #'type' : 'shape', + #'samples' : dict((skey, puid_syst) for skey in mc) +#} + +#### PS and UE + +#nuisances['PS_ISR'] = { + #'name' : 'PS_WH_hww_ISR', + #'kind' : 'weight', + #'type' : 'shape', + #'samples' : dict((skey, ['PSWeight[2]', 'PSWeight[0]']) for skey in mc), + #'AsLnN' : '0', +#} + +#nuisances['PS_FSR'] = { + #'name' : 'PS_WH_hww_FSR', + #'kind' : 'weight', + #'type' : 'shape', + #'samples' : dict((skey, ['PSWeight[3]', 'PSWeight[1]']) for skey in mc), + #'AsLnN' : '0', +#} + +#nuisances['UE_CP5'] = { + #'name' : 'CMS_WH_hww_UE', + #'skipCMS' : 1, + #'type' : 'lnN', + #'samples' : dict((skey, '1.015') for skey in mc), +#} + +## Charge flip efficiency +##nuisances['chargeFlipEff'] = { + ##'name' : 'CMS_whss_chargeFlipEff_2018', + ##'kind' : 'weight', + ##'type' : 'shape', + ##'samples' : dict((skey, ['1-ttHMVA_eff_err_flip_2l', '1+ttHMVA_eff_err_flip_2l']) for skey in ['DY','DATA']), + ##'cuts' : [cut for cut in cuts if ('_ee_' in cut or '_em_' in cut)] +##} + +## Generic "cross section uncertainties" +#nuisances['WgStar'] = { + #'name' : 'CMS_hww_WgStarScale', + #'type' : 'lnN', + #'samples' : { + #'WgS' : '1.25' + #} +#} + + +### AM: so far commented ... +######################################################################## + + +## Use the following if you want to apply the automatic combine MC stat nuisances. +nuisances['stat'] = { + 'type' : 'auto', + 'maxPoiss' : '10', + 'includeSignal' : '0', + 'samples' : {} +} +# nuisance ['maxPoiss'] = Number of threshold events for Poisson modelling +# nuisance ['includeSignal'] = Include MC stat nuisances on signal processes (1=True, 0=False) + +for n in nuisances.values(): + n['skipCMS'] = 1 diff --git a/Hgg/2018UL1l/plot.py b/Hgg/2018UL1l/plot.py new file mode 100644 index 00000000..2d78b685 --- /dev/null +++ b/Hgg/2018UL1l/plot.py @@ -0,0 +1,402 @@ +# plot configuration + +# Groups of samples to improve the plots. +# If not defined, normal plots is used + +groupPlot = {} + + +groupPlot['Higgs'] = { + 'nameHR' : 'H>WW/#tau#tau', + 'isSignal' : 0, + 'color' : 634, # kRed+2 + 'samples' : ['ggH_hww','qqH_hww','ZH_hww','ggZH_hww','ttH_hww','ggH_htt','qqH_htt','ZH_htt'] +} + +#groupPlot['Fake'] = { + #'nameHR' : 'Non-prompt', + #'isSignal' : 0, + #'color' : 921, # kGray + 1 + #'samples' : ['Fake_mm','Fake_em','Fake_ee'] +#} + + +groupPlot['VVV'] = { + 'nameHR' : 'VVV', + 'isSignal' : 0, + 'color' : 857, # kAzure -3 + 'samples' : ['VVV'] +} + +groupPlot['VV'] = { + 'nameHR' : "VV", + 'isSignal' : 0, + 'color' : 617, # kViolet + 1 + 'samples' : ['VV'] +} + + +# groupPlot['ZZ'] = { +# 'nameHR' : "ZZ", +# 'isSignal' : 0, +# 'color' : 617, # kViolet + 1 +# 'samples' : ['ZZ'] +# } +# +# groupPlot['WZ'] = { +# 'nameHR' : "WZ", +# 'isSignal' : 0, +# 'color' : 619, # kViolet + 1 +# 'samples' : ['WZ'] +# } + +groupPlot['Vg'] = { + 'nameHR' : "V#gamma", + 'isSignal' : 0, + #'color' : 810, # kOrange + 10 + 'color' : 408, # kGreen - 10 + 'samples' : ['Vg'] +} + +groupPlot['VgS'] = { + 'nameHR' : "V#gamma*", + 'isSignal' : 0, + 'color' : 409, # kGreen - 9 + 'samples' : ['VgS'] +} + +#groupPlot['ZgS'] = { + #'nameHR' : "Z#gamma*", + #'isSignal' : 0, + #'color' : 617, + #'samples' : ['ZgS'] +#} + + +groupPlot['DY'] = { + 'nameHR' : "DY", + 'isSignal' : 0, + 'color' : 418, # kGreen+2 + 'samples' : ['DY'] +} + +groupPlot['top'] = { + 'nameHR' : 'tW+ and t#bar{t}', + 'isSignal' : 0, + 'color' : 400, # kYellow + 'samples' : ['top'] +} + + +groupPlot['W'] = { + 'nameHR' : "W", + 'isSignal' : 0, + 'color' : 840, # kTeal + 'samples' : ['Wjets'] +} + +#groupPlot['WH_minus'] = { + #'nameHR' : 'W^{-} H (x 10)', + #'isSignal' : 0, + #'color' : 600, # kBlue + #'samples' : ['WH_hww_minus','WH_htt_minus'] +#} + +#groupPlot['WH_plus'] = { + #'nameHR' : 'W^{+} H (x 10)', + #'isSignal' : 0, + #'color' : 632, # kRed + #'samples' : ['WH_hww_plus', 'WH_htt_plus'] +#} + +groupPlot['Hgluglu'] = { + 'nameHR' : 'H>gluglu x 100', + 'isSignal' : 1, + # 'color' : 857, # kAzure -3 + 'color' : 632, # kRed + 'samples' : ['qqZHgluglu', 'ggZHgluglu', 'WHgluglu'] +} + + + + + + +# keys here must match keys in samples.py + +plot = {} + + +plot['top'] = { + 'nameHR' : 'tW and t#bar{t}', + 'color' : 400, # kYellow + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0, +} + +plot['DY'] = { + 'nameHR' : 'DY', + 'color' : 418, # kGreen+2 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0, +} + + +plot['Wjets'] = { + 'nameHR' : 'Wjets', + 'color' : 840, # kTeal + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0, +} + + +plot['Vg'] = { + 'nameHR' : 'Vg', + 'color' : 859, # kAzure -1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['VgS'] = { + 'nameHR' : 'VgS', + 'color' : 859, # kAzure -1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['WZ'] = { + 'nameHR' : 'WZ', + 'color' : 858, # kAzure -2 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.138 # NLO -> NNLO k-factor! +} + +plot['ZZ'] = { + 'nameHR' : 'ZZ', + 'color' : 858, # kAzure -2 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['VVV'] = { + 'nameHR' : 'VVV', + 'color' : 857, # kAzure -3 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['VV'] = { + 'nameHR' : 'VV', + 'color' : 858, # kAzure -2 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +########### +# Signals # +########### + +plot['Hgluglu'] = { + 'nameHR' : 'Hgluglu', + 'color' : 632, # kRed + 'isSignal' : 2, + 'isData' : 0, + 'scale' : 100 + #'scale' : 0.000033658 # I missed the BR Z>ll and a *1000 too much +} + + +plot['qqZHgluglu'] = { + 'nameHR' : 'qqZHgluglu', + 'color' : 633, # kRed+1 + 'isSignal' : 2, + 'isData' : 0, + 'scale' : 100 + #'scale' : 0.000033658 # I missed the BR Z>ll and a *1000 too much +} + + +plot['ggZHgluglu'] = { + 'nameHR' : 'ggZHgluglu', + 'color' : 634, # kRed+2 + 'isSignal' : 2, + 'isData' : 0, + 'scale' : 100 + #'scale' : 0.000033658 # I missed the BR Z>ll and a *1000 too much +} + + +plot['WHgluglu'] = { + 'nameHR' : 'WHgluglu', + 'color' : 632, # kRed + 'isSignal' : 2, + 'isData' : 0, + 'scale' : 100 + #'scale' : 0.000033658 # I missed the BR Z>ll and a *1000 too much +} + + + + +##################### +# Other backgrounds # +##################### + +# HWW + +plot['ggH_hww'] = { + 'nameHR' : 'ggH_hww', + 'color' : 632, # kRed + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['qqH_hww'] = { + 'nameHR' : 'qqH_hww', + 'color' : 632+1, # kRed+1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['ZH_hww'] = { + 'nameHR' : 'ZH_hww', + 'color' : 632+3, # kRed+3 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['ggZH_hww'] = { + 'nameHR' : 'ggZH_hww', + 'color' : 632+4, # kRed+4 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['WH_hww_plus'] = { + 'nameHR' : 'WH_hww_plus', + 'color' : 632+2, # kRed+2 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 10 +} + +plot['WH_hww_minus'] = { + 'nameHR' : 'WH_hww_minus', + 'color' : 600, # kBlue + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 10 +} + +plot['ttH_hww'] = { + 'nameHR' : 'ttH_hww', + 'color' : 632+3, # kRed+3 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + + +# Htautau + +plot['ggH_htt'] = { + 'nameHR' : 'ggH_htt', + 'color' : 632, # kRed + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['qqH_htt'] = { + 'nameHR' : 'qqH_htt', + 'color' : 632+1, # kRed+1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['ZH_htt'] = { + 'nameHR' : 'ZH_htt', + 'color' : 632+3, # kRed+3 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1 +} + +plot['WH_htt_plus'] = { + 'nameHR' : 'WH_htt_plus', + 'color' : 632+2, # kRed+2 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 10 +} + +plot['WH_htt_minus'] = { + 'nameHR' : 'WH_htt_minus', + 'color' : 632+2, # kRed+2 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 10 +} + + +######## +# Fake # +######## + +plot['Fake_em'] = { + 'nameHR' : 'Fake_em', + 'color' : 921, # kGray + 1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['Fake_ee'] = { + 'nameHR' : 'Fake_ee', + 'color' : 921, # kGray + 1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +plot['Fake_mm'] = { + 'nameHR' : 'Fake_mm', + 'color' : 921, # kGray + 1 + 'isSignal' : 0, + 'isData' : 0, + 'scale' : 1.0 +} + +######## +# Data # +######## + +plot['DATA'] = { + 'nameHR' : 'Data', + 'color' : 1 , + 'isSignal' : 0, + 'isData' : 1, + 'isBlind' : 0 +} + + +# Define legend + +legend = {} + +legend['lumi'] = 'L = 59.8 fb^{-1}' +legend['sqrt'] = '#sqrt{s} = 13 TeV' diff --git a/Hgg/2018UL1l/postproc.C b/Hgg/2018UL1l/postproc.C new file mode 100644 index 00000000..0a079341 --- /dev/null +++ b/Hgg/2018UL1l/postproc.C @@ -0,0 +1,43 @@ +#define postproc_cxx +#include "postproc.h" +#include +#include +#include + +void postproc::Loop() +{ +// In a ROOT session, you can do: +// root> .L postproc.C +// root> postproc t +// root> t.GetEntry(12); // Fill t data members with entry number 12 +// root> t.Show(); // Show values of entry 12 +// root> t.Show(16); // Read and show values of entry 16 +// root> t.Loop(); // Loop on all entries +// + +// This is the loop skeleton where: +// jentry is the global entry number in the chain +// ientry is the entry number in the current Tree +// Note that the argument to GetEntry must be: +// jentry for TChain::GetEntry +// ientry for TTree::GetEntry and TBranch::GetEntry +// +// To read only selected branches, Insert statements like: +// METHOD1: +// fChain->SetBranchStatus("*",0); // disable all branches +// fChain->SetBranchStatus("branchname",1); // activate branchname +// METHOD2: replace line +// fChain->GetEntry(jentry); //read all branches +//by b_branchname->GetEntry(ientry); //read only this branch + if (fChain == 0) return; + + Long64_t nentries = fChain->GetEntriesFast(); + + Long64_t nbytes = 0, nb = 0; + for (Long64_t jentry=0; jentryGetEntry(jentry); nbytes += nb; + // if (Cut(ientry) < 0) continue; + } +} diff --git a/Hgg/2018UL1l/postproc.h b/Hgg/2018UL1l/postproc.h new file mode 100644 index 00000000..ea6a3b01 --- /dev/null +++ b/Hgg/2018UL1l/postproc.h @@ -0,0 +1,5883 @@ +////////////////////////////////////////////////////////// +// This class has been automatically generated on +// Mon Oct 13 10:24:25 2025 by ROOT version 6.30/02 +// from TTree Events/ +// found on file: root://eoshome-a.cern.ch//eos/user/a/amassiro/HIG/ZHggPostProc/Summer20UL18_106x_nAODv9_Full2018v9/MCFull2018v9/nanoLatino_ZHgg__part0.root +////////////////////////////////////////////////////////// + +#ifndef postproc_h +#define postproc_h + +#include +#include +#include + +// Header file for the classes stored in the TTree if any. + +class postproc { +public : + TTree *fChain; //!pointer to the analyzed TTree or TChain + Int_t fCurrent; //!current Tree number in a TChain + +// Fixed size dimensions of array or collections stored in the TTree if any. + + // Declaration of leaf types + Int_t nCleanJet; + Float_t CleanJet_eta[16]; //[nCleanJet] + ULong64_t CleanJet_jetIdx[16]; //[nCleanJet] + Float_t CleanJet_mass[16]; //[nCleanJet] + Float_t CleanJet_phi[16]; //[nCleanJet] + Float_t CleanJet_pt[16]; //[nCleanJet] + Float_t MET_MetUnclustEnUpDeltaY; + Float_t MET_pt; + Float_t MET_MetUnclustEnUpDeltaX; + Float_t MET_phi; + Float_t MET_covXY; + Float_t MET_sumEt; + Float_t MET_covYY; + Float_t MET_sumPtUnclustered; + Float_t MET_fiducialGenPt; + Float_t MET_significance; + Float_t MET_covXX; + Float_t MET_fiducialGenPhi; + Int_t nJet; + Float_t Jet_btagSF_deepjet_shape_down_jesEC2[17]; //[nJet] + Float_t Jet_btagSF_deepjet_shape_down_lf[17]; //[nJet] + Float_t Jet_btagSF_deepjet_shape_down_jesBBEC1_2018[17]; //[nJet] + Float_t Jet_hfsigmaEtaEta[17]; //[nJet] + Float_t Jet_btagSF_deepjet_shape_down_hf[17]; //[nJet] + Float_t Jet_btagSF_deepjet_shape_up_hfstats2[17]; //[nJet] + Float_t Jet_phi[17]; //[nJet] + Int_t Jet_partonFlavour[17]; //[nJet] + Float_t Jet_btagSF_deepjet_shape_up_hf[17]; //[nJet] + Int_t Jet_electronIdx1[17]; //[nJet] + UChar_t Jet_nConstituents[17]; //[nJet] + Float_t Jet_btagDeepB[17]; //[nJet] + Float_t Jet_btagDeepFlavCvL[17]; //[nJet] + Float_t Jet_btagSF_deepjet_shape_up_jesRelativeSample_2018[17]; //[nJet] + Float_t Jet_btagSF_deepjet_shape_up_jesEC2[17]; //[nJet] + Float_t Jet_btagSF_deepjet_shape_down_cferr2[17]; //[nJet] + Int_t Jet_nMuons[17]; //[nJet] + Float_t Jet_btagSF_deepjet_shape_up_jesBBEC1_2018[17]; //[nJet] + Float_t Jet_btagSF_deepjet_shape_down_jesAbsolute_2018[17]; //[nJet] + Float_t Jet_btagSF_deepjet_shape_up_lfstats1[17]; //[nJet] + Float_t Jet_bRegRes[17]; //[nJet] + Float_t Jet_bRegCorr[17]; //[nJet] + Float_t Jet_btagSF_deepjet_shape_down_hfstats2[17]; //[nJet] + Int_t Jet_muonIdx1[17]; //[nJet] + Int_t Jet_nElectrons[17]; //[nJet] + Float_t Jet_btagSF_deepjet_shape_down_jesFlavorQCD[17]; //[nJet] + Float_t Jet_btagSF_deepjet_shape_up_jesHF_2018[17]; //[nJet] + Float_t Jet_cRegRes[17]; //[nJet] + Int_t Jet_hfcentralEtaStripSize[17]; //[nJet] + Float_t Jet_chFPV0EF[17]; //[nJet] + Float_t Jet_btagSF_deepjet_shape_up_jes[17]; //[nJet] + Float_t Jet_area[17]; //[nJet] + Int_t Jet_muonIdx2[17]; //[nJet] + Int_t Jet_electronIdx2[17]; //[nJet] + Float_t Jet_btagSF_deepjet_shape[17]; //[nJet] + Float_t Jet_neEmEF[17]; //[nJet] + Float_t Jet_btagDeepFlavCvB[17]; //[nJet] + Float_t Jet_eta[17]; //[nJet] + Float_t Jet_btagDeepCvB[17]; //[nJet] + Float_t Jet_btagDeepFlavQG[17]; //[nJet] + Float_t Jet_neHEF[17]; //[nJet] + Float_t Jet_btagSF_deepjet_shape_up_lfstats2[17]; //[nJet] + Float_t Jet_btagSF_deepjet_shape_down_jesHF_2018[17]; //[nJet] + Float_t Jet_btagDeepCvL[17]; //[nJet] + Float_t Jet_btagSF_deepjet_shape_up_hfstats1[17]; //[nJet] + Float_t Jet_puIdDisc[17]; //[nJet] + Float_t Jet_btagSF_deepjet_shape_up_jesRelativeBal[17]; //[nJet] + Float_t Jet_btagSF_deepjet_shape_down_hfstats1[17]; //[nJet] + Int_t Jet_puId[17]; //[nJet] + Float_t Jet_btagSF_deepjet_shape_up_jesFlavorQCD[17]; //[nJet] + Float_t Jet_btagSF_deepjet_shape_up_jesBBEC1[17]; //[nJet] + Float_t Jet_btagSF_deepjet_shape_up_jesAbsolute_2018[17]; //[nJet] + Float_t Jet_cRegCorr[17]; //[nJet] + Float_t Jet_btagSF_deepjet_shape_down_jes[17]; //[nJet] + Int_t Jet_genJetIdx[17]; //[nJet] + Float_t Jet_btagSF_deepjet_shape_down_jesHF[17]; //[nJet] + Float_t Jet_btagSF_deepjet_shape_down_lfstats2[17]; //[nJet] + Float_t Jet_qgl[17]; //[nJet] + UChar_t Jet_cleanmask[17]; //[nJet] + Float_t Jet_chEmEF[17]; //[nJet] + Float_t Jet_btagDeepFlavB[17]; //[nJet] + Float_t Jet_btagSF_deepjet_shape_up_jesEC2_2018[17]; //[nJet] + Int_t Jet_hfadjacentEtaStripsSize[17]; //[nJet] + Float_t Jet_rawFactor[17]; //[nJet] + Int_t Jet_hadronFlavour[17]; //[nJet] + Float_t Jet_btagSF_deepjet_shape_up_lf[17]; //[nJet] + Float_t Jet_btagSF_deepjet_shape_down_jesRelativeSample_2018[17]; //[nJet] + Float_t Jet_btagSF_deepjet_shape_up_cferr2[17]; //[nJet] + Float_t Jet_btagSF_deepjet_shape_down_jesAbsolute[17]; //[nJet] + Float_t Jet_chHEF[17]; //[nJet] + Float_t Jet_pt[17]; //[nJet] + Float_t Jet_btagSF_deepjet_shape_down_jesRelativeBal[17]; //[nJet] + Float_t Jet_muEF[17]; //[nJet] + Float_t Jet_btagSF_deepjet_shape_up_jesAbsolute[17]; //[nJet] + Float_t Jet_btagSF_deepjet_shape_down_jesEC2_2018[17]; //[nJet] + Float_t Jet_btagSF_deepjet_shape_down_cferr1[17]; //[nJet] + Float_t Jet_btagSF_deepjet_shape_down_jesBBEC1[17]; //[nJet] + Float_t Jet_btagCSVV2[17]; //[nJet] + Float_t Jet_btagSF_deepjet_shape_up_cferr1[17]; //[nJet] + Float_t Jet_mass[17]; //[nJet] + Float_t Jet_btagSF_deepjet_shape_down_lfstats1[17]; //[nJet] + Float_t Jet_btagSF_deepjet_shape_up_jesHF[17]; //[nJet] + Int_t Jet_jetId[17]; //[nJet] + Float_t Jet_hfsigmaPhiPhi[17]; //[nJet] + Float_t PuppiMET_sumEt; + Float_t PuppiMET_phiJERDown; + Float_t PuppiMET_ptJESDown; + Float_t PuppiMET_phiJESUp; + Float_t PuppiMET_ptJESUp; + Float_t PuppiMET_ptUnclusteredDown; + Float_t PuppiMET_pt; + Float_t PuppiMET_ptJERDown; + Float_t PuppiMET_phiUnclusteredUp; + Float_t PuppiMET_phiUnclusteredDown; + Float_t PuppiMET_ptJERUp; + Float_t PuppiMET_phiJERUp; + Float_t PuppiMET_phiJESDown; + Float_t PuppiMET_ptUnclusteredUp; + Float_t PuppiMET_phi; + Int_t nLepton_isTightElectron; + Bool_t Lepton_isTightElectron_mvaFall17V2Iso_WP90[7]; //[nLepton_isTightElectron] + Int_t nLepton_isTightMuon; + Bool_t Lepton_isTightMuon_cut_Tight_HWWW[7]; //[nLepton_isTightMuon] + Int_t nLepton; + Bool_t Lepton_promptgenmatched[2]; //[nLepton] + Bool_t Lepton_genmatched[2]; //[nLepton] + Int_t Lepton_muonIdx[2]; //[nLepton] + Float_t Lepton_phi[2]; //[nLepton] + Float_t Lepton_eta[2]; //[nLepton] + Int_t Lepton_electronIdx[2]; //[nLepton] + Float_t Lepton_pt[2]; //[nLepton] + Int_t Lepton_pdgId[2]; //[nLepton] + Int_t nMuon; + UChar_t Muon_multiIsoId[7]; //[nMuon] + Int_t Muon_nStations[7]; //[nMuon] + Int_t Muon_fsrPhotonIdx[7]; //[nMuon] + Int_t Muon_tightCharge[7]; //[nMuon] + Float_t Muon_pfRelIso03_chg[7]; //[nMuon] + Float_t Muon_jetRelIso[7]; //[nMuon] + Float_t Muon_dzErr[7]; //[nMuon] + Bool_t Muon_mediumPromptId[7]; //[nMuon] + Bool_t Muon_tightId[7]; //[nMuon] + UChar_t Muon_mvaId[7]; //[nMuon] + UChar_t Muon_puppiIsoId[7]; //[nMuon] + Float_t Muon_miniPFRelIso_all[7]; //[nMuon] + Float_t Muon_mass[7]; //[nMuon] + Float_t Muon_pfRelIso04_all[7]; //[nMuon] + Float_t Muon_mvaTTH[7]; //[nMuon] + Float_t Muon_ip3d[7]; //[nMuon] + Float_t Muon_sip3d[7]; //[nMuon] + UChar_t Muon_jetNDauCharged[7]; //[nMuon] + Float_t Muon_ptErr[7]; //[nMuon] + UChar_t Muon_cleanmask[7]; //[nMuon] + Float_t Muon_dxybs[7]; //[nMuon] + Bool_t Muon_isStandalone[7]; //[nMuon] + Bool_t Muon_softId[7]; //[nMuon] + Bool_t Muon_inTimeMuon[7]; //[nMuon] + Bool_t Muon_softMvaId[7]; //[nMuon] + Float_t Muon_dxyErr[7]; //[nMuon] + UChar_t Muon_miniIsoId[7]; //[nMuon] + UChar_t Muon_tkIsoId[7]; //[nMuon] + Bool_t Muon_isPFcand[7]; //[nMuon] + Float_t Muon_mvaLowPt[7]; //[nMuon] + Int_t Muon_genPartIdx[7]; //[nMuon] + Float_t Muon_tunepRelPt[7]; //[nMuon] + Float_t Muon_dxy[7]; //[nMuon] + Bool_t Muon_isTracker[7]; //[nMuon] + Bool_t Muon_mediumId[7]; //[nMuon] + Int_t Muon_jetIdx[7]; //[nMuon] + UChar_t Muon_highPtId[7]; //[nMuon] + Int_t Muon_pdgId[7]; //[nMuon] + UChar_t Muon_genPartFlav[7]; //[nMuon] + Float_t Muon_pt[7]; //[nMuon] + Bool_t Muon_highPurity[7]; //[nMuon] + Bool_t Muon_isGlobal[7]; //[nMuon] + Float_t Muon_pfRelIso03_all[7]; //[nMuon] + Float_t Muon_jetPtRelv2[7]; //[nMuon] + Float_t Muon_softMva[7]; //[nMuon] + Float_t Muon_eta[7]; //[nMuon] + Bool_t Muon_triggerIdLoose[7]; //[nMuon] + Float_t Muon_segmentComp[7]; //[nMuon] + Float_t Muon_miniPFRelIso_chg[7]; //[nMuon] + UChar_t Muon_mvaLowPtId[7]; //[nMuon] + Int_t Muon_charge[7]; //[nMuon] + Bool_t Muon_looseId[7]; //[nMuon] + Float_t Muon_tkRelIso[7]; //[nMuon] + Float_t Muon_dz[7]; //[nMuon] + Int_t Muon_nTrackerLayers[7]; //[nMuon] + UChar_t Muon_pfIsoId[7]; //[nMuon] + Float_t Muon_phi[7]; //[nMuon] + Int_t nElectron; + Float_t Electron_sip3d[5]; //[nElectron] + Float_t Electron_mvaFall17V2noIso[5]; //[nElectron] + Float_t Electron_dr03TkSumPt[5]; //[nElectron] + Float_t Electron_mass[5]; //[nElectron] + Bool_t Electron_convVeto[5]; //[nElectron] + Int_t Electron_tightCharge[5]; //[nElectron] + Float_t Electron_dzErr[5]; //[nElectron] + Float_t Electron_mvaFall17V2Iso[5]; //[nElectron] + Float_t Electron_dr03HcalDepth1TowerSumEt[5]; //[nElectron] + Float_t Electron_dEscaleDown[5]; //[nElectron] + Float_t Electron_mvaTTH[5]; //[nElectron] + Int_t Electron_photonIdx[5]; //[nElectron] + Float_t Electron_eCorr[5]; //[nElectron] + Float_t Electron_jetPtRelv2[5]; //[nElectron] + Int_t Electron_genPartIdx[5]; //[nElectron] + Float_t Electron_scEtOverPt[5]; //[nElectron] + UChar_t Electron_seedGain[5]; //[nElectron] + Float_t Electron_sieie[5]; //[nElectron] + Bool_t Electron_mvaFall17V2noIso_WP90[5]; //[nElectron] + Float_t Electron_phi[5]; //[nElectron] + Float_t Electron_jetRelIso[5]; //[nElectron] + Int_t Electron_charge[5]; //[nElectron] + Int_t Electron_pdgId[5]; //[nElectron] + Int_t Electron_vidNestedWPBitmap[5]; //[nElectron] + Float_t Electron_dEsigmaUp[5]; //[nElectron] + Int_t Electron_jetIdx[5]; //[nElectron] + Bool_t Electron_mvaFall17V2noIso_WP80[5]; //[nElectron] + Float_t Electron_dz[5]; //[nElectron] + Float_t Electron_pt[5]; //[nElectron] + Float_t Electron_pfRelIso03_chg[5]; //[nElectron] + Bool_t Electron_mvaFall17V2Iso_WP80[5]; //[nElectron] + Float_t Electron_miniPFRelIso_chg[5]; //[nElectron] + Bool_t Electron_isPFcand[5]; //[nElectron] + UChar_t Electron_jetNDauCharged[5]; //[nElectron] + Float_t Electron_dxyErr[5]; //[nElectron] + Bool_t Electron_mvaFall17V2Iso_WPL[5]; //[nElectron] + Float_t Electron_eta[5]; //[nElectron] + Float_t Electron_hoe[5]; //[nElectron] + UChar_t Electron_cleanmask[5]; //[nElectron] + Float_t Electron_dr03TkSumPtHEEP[5]; //[nElectron] + Float_t Electron_eInvMinusPInv[5]; //[nElectron] + Int_t Electron_cutBased[5]; //[nElectron] + Float_t Electron_dxy[5]; //[nElectron] + UChar_t Electron_genPartFlav[5]; //[nElectron] + Float_t Electron_dr03EcalRecHitSumEt[5]; //[nElectron] + Bool_t Electron_cutBased_HEEP[5]; //[nElectron] + Float_t Electron_miniPFRelIso_all[5]; //[nElectron] + Float_t Electron_pfRelIso03_all[5]; //[nElectron] + Int_t Electron_vidNestedWPBitmapHEEP[5]; //[nElectron] + Float_t Electron_ip3d[5]; //[nElectron] + Float_t Electron_r9[5]; //[nElectron] + Float_t Electron_dEscaleUp[5]; //[nElectron] + Bool_t Electron_mvaFall17V2noIso_WPL[5]; //[nElectron] + Float_t Electron_deltaEtaSC[5]; //[nElectron] + Float_t Electron_energyErr[5]; //[nElectron] + Bool_t Electron_mvaFall17V2Iso_WP90[5]; //[nElectron] + UChar_t Electron_lostHits[5]; //[nElectron] + Float_t Electron_dEsigmaDown[5]; //[nElectron] + Int_t nPhoton; + Bool_t Photon_isScEtaEE[5]; //[nPhoton] + Bool_t Photon_mvaID_WP80[5]; //[nPhoton] + Float_t Photon_eCorr[5]; //[nPhoton] + Float_t Photon_dEsigmaUp[5]; //[nPhoton] + Float_t Photon_phi[5]; //[nPhoton] + Int_t Photon_genPartIdx[5]; //[nPhoton] + Float_t Photon_dEsigmaDown[5]; //[nPhoton] + Int_t Photon_cutBased_Fall17V1Bitmap[5]; //[nPhoton] + Bool_t Photon_electronVeto[5]; //[nPhoton] + Float_t Photon_hoe[5]; //[nPhoton] + Bool_t Photon_isScEtaEB[5]; //[nPhoton] + Float_t Photon_mvaID[5]; //[nPhoton] + Int_t Photon_vidNestedWPBitmap[5]; //[nPhoton] + Float_t Photon_sieie[5]; //[nPhoton] + Float_t Photon_r9[5]; //[nPhoton] + Float_t Photon_mass[5]; //[nPhoton] + Float_t Photon_pt[5]; //[nPhoton] + UChar_t Photon_cleanmask[5]; //[nPhoton] + Float_t Photon_dEscaleDown[5]; //[nPhoton] + UChar_t Photon_genPartFlav[5]; //[nPhoton] + Bool_t Photon_pixelSeed[5]; //[nPhoton] + Bool_t Photon_mvaID_WP90[5]; //[nPhoton] + Float_t Photon_dEscaleUp[5]; //[nPhoton] + Int_t Photon_charge[5]; //[nPhoton] + Int_t Photon_pdgId[5]; //[nPhoton] + Int_t Photon_cutBased[5]; //[nPhoton] + Float_t Photon_pfRelIso03_chg[5]; //[nPhoton] + Float_t Photon_mvaID_Fall17V1p1[5]; //[nPhoton] + UChar_t Photon_seedGain[5]; //[nPhoton] + Int_t Photon_electronIdx[5]; //[nPhoton] + Int_t Photon_jetIdx[5]; //[nPhoton] + Float_t Photon_eta[5]; //[nPhoton] + Float_t Photon_pfRelIso03_all[5]; //[nPhoton] + Float_t Photon_energyErr[5]; //[nPhoton] + Float_t Gen_ZGstar_ele2_phi; + Float_t Gen_ZGstar_mass; + Float_t Gen_ZGstar_MomId; + Float_t Gen_ZGstar_MomStatus; + Float_t Gen_ZGstar_ele1_pt; + Float_t Gen_ZGstar_ele1_phi; + Float_t Gen_ZGstar_deltaR; + Float_t Gen_ZGstar_mu2_pt; + Float_t Gen_ZGstar_mu2_phi; + Float_t Gen_ZGstar_ele2_pt; + Float_t Gen_ZGstar_mu1_pt; + Float_t Gen_ZGstar_ele1_eta; + Float_t Gen_ZGstar_mu2_eta; + Float_t Gen_ZGstar_mu1_phi; + Float_t Gen_ZGstar_ele2_eta; + Float_t Gen_ZGstar_mu1_eta; + UChar_t LHE_Nuds; + Float_t LHE_HT; + UChar_t LHE_Nglu; + UChar_t LHE_NpLO; + UChar_t LHE_Njets; + Float_t LHE_HTIncoming; + UChar_t LHE_NpNLO; + Float_t LHE_Vpt; + Float_t LHE_AlphaS; + UChar_t LHE_Nc; + UChar_t LHE_Nb; + Bool_t HLT_Ele250_CaloIdVT_GsfTrkIdT; + Bool_t HLT_Mu3er1p5_PFJet100er2p5_PFMETNoMu100_PFMHTNoMu100_IDTight; + Bool_t HLT_L2Mu23NoVtx_2Cha_CosmicSeed; + Bool_t HLT_AK8PFJet330_TrimMass30_PFAK8BTagDeepCSV_p17; + Bool_t HLT_Ele16_Ele12_Ele8_CaloIdL_TrackIdL; + Bool_t HLT_DoubleL2Mu25NoVtx_2Cha_CosmicSeed_Eta2p4; + Bool_t HLT_DoubleMu3_DZ_PFMET70_PFMHT70; + Bool_t HLT_Ele27_WPTight_Gsf; + Bool_t HLT_Mu20_Mu10_SameSign; + Bool_t HLT_Photon150; + Bool_t HLT_Mu3er1p5_PFJet100er2p5_PFMET80_PFMHT80_IDTight; + Bool_t HLT_AK8PFHT800_TrimMass50; + Bool_t HLT_Photon35_TwoProngs35; + Bool_t HLT_Ele15_IsoVVVL_PFHT450_PFMET50; + Bool_t HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET120; + Bool_t HLT_Photon165_R9Id90_HE10_IsoM; + Bool_t HLT_DiPFJetAve100_HFJEC; + Bool_t HLT_Mu15_IsoVVVL_PFHT450; + Bool_t HLT_DoubleEle8_CaloIdM_TrackIdM_Mass8_DZ_PFHT350; + Bool_t HLT_Ele300_CaloIdVT_GsfTrkIdT; + Bool_t HLT_Dimuon0_LowMass_L1_0er1p5R; + Bool_t HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET140; + Bool_t HLT_PFMET200_NotCleaned; + Bool_t HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET90; + Bool_t HLT_Mu8_IP3_part3; + Bool_t HLT_VBF_DoubleMediumChargedIsoPFTauHPS20_Trk1_eta2p1; + Bool_t HLT_Ele27_Ele37_CaloIdL_MW; + Bool_t HLT_Dimuon0_Upsilon_NoVertexing; + Bool_t HLT_Ele24_eta2p1_WPTight_Gsf_LooseChargedIsoPFTauHPS30_eta2p1_TightID_CrossL1; + Bool_t HLT_Mu12_DoublePFJets350_CaloBTagDeepCSV_p71; + Bool_t HLT_DoubleMu48NoFiltersNoVtx; + Bool_t HLT_Photon120EB_TightID_TightIso; + Bool_t HLT_Dimuon14_Phi_Barrel_Seagulls; + Bool_t HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET130; + Bool_t HLT_PFJetFwd320; + Bool_t HLT_AK4PFJet50; + Bool_t HLT_UncorrectedJetE30_NoBPTX3BX; + Bool_t HLT_Photon60_R9Id90_CaloIdL_IsoL_DisplacedIdL_PFHT350MinPFJet15; + Bool_t HLT_IsoMu27_TightChargedIsoPFTauHPS20_Trk1_eta2p1_SingleL1; + Bool_t HLT_Dimuon0_Jpsi; + Bool_t HLT_CaloMET100_NotCleaned; + Bool_t HLT_PFMETNoMu120_PFMHTNoMu120_IDTight_PFHT60; + Bool_t HLT_AK8PFJetFwd260; + Bool_t HLT_CaloMET110_NotCleaned; + Bool_t HLT_Mu43NoFiltersNoVtx_Photon43_CaloIdL; + Bool_t HLT_CaloMHT90; + Bool_t HLT_UncorrectedJetE60_NoBPTX3BX; + Bool_t HLT_TripleMu_10_5_5_DZ; + Bool_t HLT_AK8PFJet15; + Bool_t HLT_Mu19; + Bool_t HLT_Mu8_TrkIsoVVL; + Bool_t HLT_QuadPFJet98_83_71_15_PFBTagDeepCSV_1p3_VBF2; + Bool_t HLT_DiMu9_Ele9_CaloIdL_TrackIdL; + Bool_t HLT_MonoCentralPFJet80_PFMETNoMu110_PFMHTNoMu110_IDTight; + Bool_t HLT_AK8PFJet25; + Bool_t HLT_AK8PFJet330_TrimMass30_PFAK8BoostedDoubleB_np4; + Bool_t HLT_DoubleL2Mu25NoVtx_2Cha; + Bool_t HLT_Ele15_IsoVVVL_PFHT600; + Bool_t HLT_Ele50_IsoVVVL_PFHT450; + Bool_t HLT_Mu9_IP4_part2; + Bool_t HLT_Mu7p5_Track7_Jpsi; + Bool_t HLT_Mu17_Photon30_IsoCaloId; + Bool_t HLT_Mu43NoFiltersNoVtxDisplaced_Photon43_CaloIdL; + Bool_t HLT_Mu23_Mu12; + Bool_t HLT_L2Mu10; + Bool_t HLT_Mu12_IP6_part0; + Bool_t HLT_MediumChargedIsoPFTau200HighPtRelaxedIso_Trk50_eta2p1; + Bool_t HLT_PFMETTypeOne140_PFMHT140_IDTight; + Bool_t HLT_Mu7_IP4_part2; + Bool_t HLT_DoublePFJets200_CaloBTagDeepCSV_p71; + Bool_t HLT_AK8PFJetFwd60; + Bool_t HLT_Mu3er1p5_PFJet100er2p5_PFMETNoMu70_PFMHTNoMu70_IDTight; + Bool_t HLT_Photon90_R9Id90_HE10_IsoM; + Bool_t HLT_PFMET200_HBHECleaned; + Bool_t HLT_DoubleL2Mu30NoVtx_2Cha_CosmicSeed_Eta2p4; + Bool_t HLT_BTagMu_AK8Jet170_DoubleMu5_noalgo; + Bool_t HLT_Mu8_IP6_part3; + Bool_t HLT_DoubleL2Mu25NoVtx_2Cha_CosmicSeed; + Bool_t HLT_AK8PFJet400; + Bool_t HLT_Mu23_Mu12_SameSign; + Bool_t HLT_DoubleMu3_Trk_Tau3mu; + Bool_t HLT_Mu27; + Bool_t HLT_AK8PFJetFwd500; + Bool_t HLT_AK4CaloJet30; + Bool_t HLT_Photon90; + Bool_t HLT_Dimuon18_PsiPrime_noCorrL1; + Bool_t HLT_Dimuon10_PsiPrime_Barrel_Seagulls; + Bool_t HLT_BTagMu_AK4DiJet70_Mu5; + Bool_t HLT_PFHT330PT30_QuadPFJet_75_60_45_40; + Bool_t HLT_PFJetFwd25; + Bool_t HLT_Ele38_WPTight_Gsf; + Bool_t HLT_Tau3Mu_Mu7_Mu1_TkMu1_IsoTau15; + Bool_t HLT_Mu7_IP4_part3; + Bool_t HLT_UncorrectedJetE30_NoBPTX; + Bool_t HLT_Ele23_CaloIdM_TrackIdM_PFJet30; + Bool_t HLT_HT425; + Bool_t HLT_DoubleMu20_7_Mass0to30_Photon23; + Bool_t HLT_TrkMu17_DoubleTrkMu8NoFiltersNoVtx; + Bool_t HLT_Mu8_DiEle12_CaloIdL_TrackIdL_DZ; + Bool_t HLT_Photon175; + Bool_t HLT_Ele20_WPLoose_Gsf; + Bool_t HLT_DoubleTightChargedIsoPFTauHPS35_Trk1_TightID_eta2p1_Reg; + Bool_t HLT_AK8PFJet260; + Bool_t HLT_Diphoton30_22_R9Id_OR_IsoCaloId_AND_HE_R9Id_Mass90; + Bool_t HLT_DoubleL2Mu25NoVtx_2Cha_CosmicSeed_NoL2Matched; + Bool_t HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_Mass3p8; + Bool_t HLT_Ele24_eta2p1_WPTight_Gsf_TightChargedIsoPFTauHPS30_eta2p1_TightID_CrossL1; + Bool_t HLT_Ele8_CaloIdM_TrackIdM_PFJet30; + Bool_t HLT_PFMETNoMu110_PFMHTNoMu110_IDTight; + Bool_t HLT_Photon110EB_TightID_TightIso; + Bool_t HLT_Mu7p5_Track2_Jpsi; + Bool_t HLT_PFMET120_PFMHT120_IDTight_PFHT60; + Bool_t HLT_Mu9_IP6_part2; + Bool_t HLT_CDC_L2cosmic_5p5_er1p0; + Bool_t HLT_DoubleMu33NoFiltersNoVtxDisplaced; + Bool_t HLT_HT430_DisplacedDijet40_DisplacedTrack; + Bool_t HLT_ZeroBias_FirstBXAfterTrain; + Bool_t HLT_AK8PFJetFwd320; + Bool_t HLT_CaloMET250_NotCleaned; + Bool_t HLT_Mu27_Ele37_CaloIdL_MW; + Bool_t HLT_Dimuon0_LowMass_L1_4R; + Bool_t HLT_RsqMR300_Rsq0p09_MR200; + Bool_t HLT_PFMETTypeOne100_PFMHT100_IDTight_PFHT60; + Bool_t HLT_AK4CaloJet120; + Bool_t HLT_AK8PFJet360_TrimMass30; + Bool_t HLT_Mu8_IP3_part1; + Bool_t HLT_Dimuon0_Jpsi3p5_Muon2; + Bool_t HLT_Ele145_CaloIdVT_GsfTrkIdT; + Bool_t HLT_Ele50_CaloIdVT_GsfTrkIdT_PFJet165; + Bool_t HLT_Dimuon25_Jpsi_noCorrL1; + Bool_t HLT_IsoMu24_eta2p1; + Bool_t HLT_Dimuon0_Jpsi_L1_4R_0er1p5R; + Bool_t HLT_Mu7_IP4_part1; + Bool_t HLT_HT300_Beamspot; + Bool_t HLT_DiJet110_35_Mjj650_PFMET120; + Bool_t HLT_DoubleL2Mu25NoVtx_2Cha_NoL2Matched; + Bool_t HLT_Mu3_PFJet40; + Bool_t HLT_Mu20_Mu10; + Bool_t HLT_AK8PFJet380_TrimMass30; + Bool_t HLT_DiJet110_35_Mjj650_PFMET110; + Bool_t HLT_Mu15_IsoVVVL_PFHT450_PFMET50; + Bool_t HLT_Mu9_IP5_part4; + Bool_t HLT_IsoMu20_eta2p1_MediumChargedIsoPFTauHPS27_eta2p1_TightID_CrossL1; + Bool_t HLT_IsoMu27_MediumChargedIsoPFTauHPS20_Trk1_eta2p1_SingleL1; + Bool_t HLT_BTagMu_AK4DiJet40_Mu5_noalgo; + Bool_t HLT_DoublePhoton70; + Bool_t HLT_Photon100EEHE10; + Bool_t HLT_PFJetFwd15; + Bool_t HLT_DoubleMu4_3_Bs; + Bool_t HLT_Mu9_IP5_part3; + Bool_t HLT_HcalNZS; + Bool_t HLT_Mu7p5_L2Mu2_Jpsi; + Bool_t HLT_Dimuon0_Upsilon_L1_4p5; + Bool_t HLT_AK8PFHT850_TrimMass50; + Bool_t HLT_DoubleMu4_Jpsi_NoVertexing; + Bool_t HLT_Mu3er1p5_PFJet100er2p5_PFMET100_PFMHT100_IDTight; + Bool_t HLT_DoubleEle8_CaloIdM_TrackIdM_Mass8_PFHT350; + Bool_t HLT_Ele15_IsoVVVL_PFHT450; + Bool_t HLT_Mu7p5_Track3p5_Jpsi; + Bool_t HLT_DiMu9_Ele9_CaloIdL_TrackIdL_DZ; + Bool_t HLT_QuadPFJet111_90_80_15_PFBTagDeepCSV_1p3_VBF2; + Bool_t HLT_PFJet200; + Bool_t HLT_AK8PFJetFwd450; + Bool_t HLT_Ele23_Ele12_CaloIdL_TrackIdL_IsoVL; + Bool_t HLT_Mu17_TrkIsoVVL; + Bool_t HLT_Rsq0p40; + Bool_t HLT_Physics_part3; + Bool_t HLT_DoublePhoton85; + Bool_t HLT_Dimuon12_Upsilon_y1p4; + Bool_t HLT_Ele20_eta2p1_WPLoose_Gsf; + Bool_t HLT_Mu8_IP6_part2; + Bool_t HLT_Mu12_DoublePFJets200_CaloBTagDeepCSV_p71; + Bool_t HLT_PFHT800_PFMET75_PFMHT75_IDTight; + Bool_t HLT_PFJetFwd260; + Bool_t HLT_PFHT800_PFMET85_PFMHT85_IDTight; + Bool_t HLT_DoubleMu4_3_Jpsi; + Bool_t HLT_AK8PFHT750_TrimMass50; + Bool_t HLT_ZeroBias_Beamspot; + Bool_t HLT_AK8PFJet450; + Bool_t HLT_HT430_DisplacedDijet60_DisplacedTrack; + Bool_t HLT_PFHT500_PFMET110_PFMHT110_IDTight; + Bool_t HLT_Dimuon24_Phi_noCorrL1; + Bool_t HLT_PFHT430; + Bool_t HLT_OldMu100; + Bool_t HLT_DoubleMu3_DoubleEle7p5_CaloIdL_TrackIdL_Upsilon; + Bool_t HLT_PFJet400; + Bool_t HLT_Mu12_IP6_part3; + Bool_t HLT_AK4CaloJet80; + Bool_t HLT_DiPFJetAve200; + Bool_t HLT_QuadPFJet103_88_75_15; + Bool_t HLT_VBF_DoubleLooseChargedIsoPFTauHPS20_Trk1_eta2p1; + Bool_t HLT_PFMET140_PFMHT140_IDTight_CaloBTagDeepCSV_3p1; + Bool_t HLT_IsoMu20_eta2p1_MediumChargedIsoPFTauHPS27_eta2p1_CrossL1; + Bool_t HLT_Mu7_IP4_part0; + Bool_t HLT_AK8PFJet420_TrimMass30; + Bool_t HLT_Mu8_Ele8_CaloIdM_TrackIdM_Mass8_PFHT350; + Bool_t HLT_TripleMu_5_3_3_Mass3p8_DCA; + Bool_t HLT_MediumChargedIsoPFTau180HighPtRelaxedIso_Trk50_eta2p1; + Bool_t HLT_PFJetFwd500; + Bool_t HLT_Ele15_IsoVVVL_PFHT450_CaloBTagDeepCSV_4p5; + Bool_t HLT_Physics; + Bool_t HLT_PFJet260; + Bool_t HLT_Tau3Mu_Mu7_Mu1_TkMu1_Tau15; + Bool_t HLT_TriplePhoton_20_20_20_CaloIdLV2_R9IdVL; + Bool_t HLT_AK8PFJet550; + Bool_t HLT_DoubleMediumChargedIsoPFTauHPS35_Trk1_TightID_eta2p1_Reg; + Bool_t HLT_DoubleMu40NoFiltersNoVtxDisplaced; + Bool_t HLT_Mu3_L1SingleMu5orSingleMu7; + Bool_t HLT_Mu23_TrkIsoVVL_Ele12_CaloIdL_TrackIdL_IsoVL_DZ; + Bool_t HLT_Dimuon0_Upsilon_Muon_NoL1Mass; + Bool_t HLT_ZeroBias_part5; + Bool_t HLT_IsoMu27; + Bool_t HLT_DoubleEle25_CaloIdL_MW; + Bool_t HLT_TkMu100; + Bool_t HLT_PFJet15; + Bool_t HLT_DoubleMu4_Mass3p8_DZ_PFHT350; + Bool_t HLT_IsoMu20_eta2p1_TightChargedIsoPFTauHPS27_eta2p1_TightID_CrossL1; + Bool_t HLT_Mu8_IP5_part1; + Bool_t HLT_Ele32_WPTight_Gsf; + Bool_t HLT_HT500_DisplacedDijet40_DisplacedTrack; + Bool_t HLT_Photon20; + Bool_t HLT_Mu3er1p5_PFJet100er2p5_PFMETNoMu90_PFMHTNoMu90_IDTight; + Bool_t HLT_Mu9_IP4_part3; + Bool_t HLT_AK4PFJet80; + Bool_t HLT_DoubleMu3_TkMu_DsTau3Mu; + Bool_t HLT_IsoMu24_eta2p1_MediumChargedIsoPFTauHPS35_Trk1_TightID_eta2p1_Reg_CrossL1; + Bool_t HLT_DoubleTightChargedIsoPFTauHPS35_Trk1_eta2p1_Reg; + Bool_t HLT_DiPFJetAve40; + Bool_t HLT_PFMET250_HBHECleaned; + Bool_t HLT_UncorrectedJetE70_NoBPTX3BX; + Bool_t HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_Mass8; + Bool_t HLT_PFHT350; + Bool_t HLT_PFMETNoMu100_PFMHTNoMu100_IDTight_PFHT60; + Bool_t HLT_Photon50_R9Id90_HE10_IsoM_EBOnly_PFJetsMJJ300DEta3_PFMET50; + Bool_t HLT_DiSC30_18_EIso_AND_HE_Mass70; + Bool_t HLT_Dimuon0_Upsilon_L1_4p5NoOS; + Bool_t HLT_DoubleMu2_Jpsi_DoubleTrk1_Phi1p05; + Bool_t HLT_Mu12; + Bool_t HLT_BTagMu_AK4DiJet40_Mu5; + Bool_t HLT_Mu38NoFiltersNoVtxDisplaced_Photon38_CaloIdL; + Bool_t HLT_TripleJet110_35_35_Mjj650_PFMET110; + Bool_t HLT_MET120_IsoTrk50; + Bool_t HLT_BTagMu_AK8Jet170_DoubleMu5; + Bool_t HLT_CaloMET300_HBHECleaned; + Bool_t HLT_Photon60_R9Id90_CaloIdL_IsoL_DisplacedIdL; + Bool_t HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ; + Bool_t HLT_Mu9_IP6_part0; + Bool_t HLT_PFJetFwd450; + Bool_t HLT_Ele8_CaloIdL_TrackIdL_IsoVL_PFJet30; + Bool_t HLT_Mu55; + Bool_t HLT_QuadPFJet105_88_76_15_DoublePFBTagDeepCSV_1p3_7p7_VBF1; + Bool_t HLT_PFMETTypeOne130_PFMHT130_IDTight; + Bool_t HLT_Diphoton30_18_R9IdL_AND_HE_AND_IsoCaloId_NoPixelVeto_Mass55; + Bool_t HLT_PFMETTypeOne200_HBHE_BeamHaloCleaned; + Bool_t HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET110; + Bool_t HLT_L1SingleMu25; + Bool_t HLT_BTagMu_AK4Jet300_Mu5; + Bool_t HLT_DoubleMu3_DZ_PFMET50_PFMHT60; + Bool_t HLT_L1ETMHadSeeds; + Bool_t HLT_Ele12_CaloIdL_TrackIdL_IsoVL_PFJet30; + Bool_t HLT_DiPFJetAve140; + Bool_t HLT_ZeroBias_part3; + Bool_t HLT_AK8PFJet330_TrimMass30_PFAK8BoostedDoubleB_p02; + Bool_t HLT_Mu8_DiEle12_CaloIdL_TrackIdL; + Bool_t HLT_DiEle27_WPTightCaloOnly_L1DoubleEG; + Bool_t HLT_AK8PFJetFwd40; + Bool_t HLT_CaloJet500_NoJetID; + Bool_t HLT_MonoCentralPFJet80_PFMETNoMu130_PFMHTNoMu130_IDTight; + Bool_t HLT_Photon33; + Bool_t HLT_VBF_DoubleTightChargedIsoPFTauHPS20_Trk1_eta2p1; + Bool_t HLT_Ele23_CaloIdL_TrackIdL_IsoVL_PFJet30; + Bool_t HLT_BTagMu_AK4DiJet20_Mu5_noalgo; + Bool_t HLT_DoubleL2Mu23NoVtx_2Cha_CosmicSeed; + Bool_t HLT_Dimuon0_Upsilon_L1_4p5er2p0M; + Bool_t HLT_Ele30_eta2p1_WPTight_Gsf_CentralPFJet35_EleCleaned; + Bool_t HLT_AK8PFJetFwd400; + Bool_t HLT_PFJet450; + Bool_t HLT_Ele24_eta2p1_WPTight_Gsf_TightChargedIsoPFTauHPS30_eta2p1_CrossL1; + Bool_t HLT_Physics_part5; + Bool_t HLT_ZeroBias; + Bool_t HLT_ZeroBias_part1; + Bool_t HLT_Mu25_TkMu0_Onia; + Bool_t HLT_Ele35_WPTight_Gsf_L1EGMT; + Bool_t HLT_CaloMET100_HBHECleaned; + Bool_t HLT_AK4PFJet120; + Bool_t HLT_DiPFJetAve60_HFJEC; + Bool_t HLT_Photon75; + Bool_t HLT_Tau3Mu_Mu7_Mu1_TkMu1_Tau15_Charge1; + Bool_t HLT_Mu19_TrkIsoVVL; + Bool_t HLT_Mu20_TkMu0_Phi; + Bool_t HLT_HT450_Beamspot; + Bool_t HLT_Mu7p5_Track2_Upsilon; + Bool_t HLT_IsoMu27_LooseChargedIsoPFTauHPS20_Trk1_eta2p1_SingleL1; + Bool_t HLT_PFMETNoMu140_PFMHTNoMu140_IDTight; + Bool_t HLT_DoubleEle24_eta2p1_WPTight_Gsf; + Bool_t HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ; + Bool_t HLT_Ele20_WPTight_Gsf; + Bool_t HLT_AK8PFJetFwd15; + Bool_t HLT_Mu15_IsoVVVL_PFHT450_CaloBTagDeepCSV_4p5; + Bool_t HLT_Mu3er1p5_PFJet100er2p5_PFMETNoMu80_PFMHTNoMu80_IDTight; + Bool_t HLT_DoubleMu3_DCA_PFMET50_PFMHT60; + Bool_t HLT_Mu20_Mu10_DZ; + Bool_t HLT_Photon300_NoHE; + Bool_t HLT_DiPFJetAve300_HFJEC; + Bool_t HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL; + Bool_t HLT_DoubleIsoMu20_eta2p1; + Bool_t HLT_HT400_DisplacedDijet40_DisplacedTrack; + Bool_t HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr; + Bool_t HLT_Dimuon0_Jpsi_NoVertexing_L1_4R_0er1p5R; + Bool_t HLT_PFJet25; + Bool_t HLT_Photon100EE_TightID_TightIso; + Bool_t HLT_DoubleEle33_CaloIdL_MW; + Bool_t HLT_Ele32_WPTight_Gsf_L1DoubleEG; + Bool_t HLT_DoubleL2Mu50; + Bool_t HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass3p8; + Bool_t HLT_DoubleMu3_DZ_PFMET90_PFMHT90; + Bool_t HLT_Mu7p5_L2Mu2_Upsilon; + Bool_t HLT_ZeroBias_FirstCollisionAfterAbortGap; + Bool_t HLT_PFJet80; + Bool_t HLT_Mu23_Mu12_SameSign_DZ; + Bool_t HLT_Mu12_DoublePFJets40_CaloBTagDeepCSV_p71; + Bool_t HLT_Dimuon18_PsiPrime; + Bool_t HLT_Physics_part7; + Bool_t HLT_IsoMu27_MET90; + Bool_t HLT_AK8PFJetFwd80; + Bool_t HLT_IsoTrackHE; + Bool_t HLT_DoubleMu4_Jpsi_Displaced; + Bool_t HLT_Mu10_TrkIsoVVL_DiPFJet40_DEta3p5_MJJ750_HTT350_PFMETNoMu60; + Bool_t HLT_DoublePFJets128MaxDeta1p6_DoubleCaloBTagDeepCSV_p71; + Bool_t HLT_DoubleTightChargedIsoPFTauHPS40_Trk1_TightID_eta2p1_Reg; + Bool_t HLT_Mu3er1p5_PFJet100er2p5_PFMET70_PFMHT70_IDTight; + Bool_t HLT_PFJet500; + Bool_t HLT_AK8PFJet140; + Bool_t HLT_PFMET100_PFMHT100_IDTight_CaloBTagDeepCSV_3p1; + Bool_t HLT_Ele28_HighEta_SC20_Mass55; + Bool_t HLT_L1NotBptxOR; + Bool_t HLT_Mu20_Mu10_SameSign_DZ; + Bool_t HLT_Dimuon0_Jpsi_L1_NoOS; + Bool_t HLT_CaloMET250_HBHECleaned; + Bool_t HLT_Physics_part4; + Bool_t HLT_CaloMET70_HBHECleaned; + Bool_t HLT_AK4PFJet30; + Bool_t HLT_BTagMu_AK4DiJet110_Mu5_noalgo; + Bool_t HLT_DoubleMediumChargedIsoPFTauHPS35_Trk1_eta2p1_Reg; + Bool_t HLT_L1UnpairedBunchBptxPlus; + Bool_t HLT_TripleJet110_35_35_Mjj650_PFMET130; + Bool_t HLT_Photon60_R9Id90_CaloIdL_IsoL; + Bool_t HLT_Mu9_IP6_part3; + Bool_t HLT_AK8PFHT900_TrimMass50; + Bool_t HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL; + Bool_t HLT_Mu12_DoublePFJets100_CaloBTagDeepCSV_p71; + Bool_t HLT_Dimuon25_Jpsi; + Bool_t HLT_Mu15_IsoVVVL_PFHT600; + Bool_t HLT_Rsq0p35; + Bool_t HLT_Diphoton30_22_R9Id_OR_IsoCaloId_AND_HE_R9Id_Mass95; + Bool_t HLT_RsqMR320_Rsq0p09_MR200_4jet; + Bool_t HLT_BTagMu_AK8DiJet170_Mu5; + Bool_t HLT_PFHT590; + Bool_t HLT_PFJet40; + Bool_t HLT_Mu9_IP6_part1; + Bool_t HLT_Ele24_eta2p1_WPTight_Gsf_MediumChargedIsoPFTauHPS30_eta2p1_TightID_CrossL1; + Bool_t HLT_DoubleTrkMu_16_6_NoFiltersNoVtx; + Bool_t HLT_DoubleMu43NoFiltersNoVtx; + Bool_t HLT_Ele24_eta2p1_WPTight_Gsf_LooseChargedIsoPFTauHPS30_eta2p1_CrossL1; + Bool_t HLT_BTagMu_AK4DiJet70_Mu5_noalgo; + Bool_t HLT_Mu8_IP5_part2; + Bool_t HLT_IsoMu20; + Bool_t HLT_BTagMu_AK4DiJet110_Mu5; + Bool_t HLT_BTagMu_AK8Jet300_Mu5_noalgo; + Bool_t HLT_ZeroBias_part6; + Bool_t HLT_L1SingleMu18; + Bool_t HLT_Mu18_Mu9; + Bool_t HLT_SinglePhoton10_Eta3p1ForPPRef; + Bool_t HLT_TrkMu6NoFiltersNoVtx; + Bool_t HLT_Mu20; + Bool_t HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ; + Bool_t HLT_DiPFJetAve220_HFJEC; + Bool_t HLT_Diphoton30PV_18PV_R9Id_AND_IsoCaloId_AND_HE_R9Id_PixelVeto_Mass55; + Bool_t HLT_Mu8_IP5_part4; + Bool_t HLT_PFMET100_PFMHT100_IDTight_PFHT60; + Bool_t HLT_Photon50; + Bool_t HLT_DiPFJetAve60; + Bool_t HLT_Trimuon5_3p5_2_Upsilon_Muon; + Bool_t HLT_Mu12_IP6_part1; + Bool_t HLT_QuadPFJet111_90_80_15; + Bool_t HLT_Ele135_CaloIdVT_GsfTrkIdT; + Bool_t HLT_PFMETTypeOne110_PFMHT110_IDTight; + Bool_t HLT_AK4PFJet100; + Bool_t HLT_ZeroBias_LastCollisionInTrain; + Bool_t HLT_PFMET110_PFMHT110_IDTight_CaloBTagDeepCSV_3p1; + Bool_t HLT_PFHT700_PFMET95_PFMHT95_IDTight; + Bool_t HLT_Mu23_Mu12_DZ; + Bool_t HLT_IsoMu20_eta2p1_LooseChargedIsoPFTauHPS27_eta2p1_CrossL1; + Bool_t HLT_Diphoton30_18_R9IdL_AND_HE_AND_IsoCaloId_NoPixelVeto; + Bool_t HLT_Ele28_eta2p1_WPTight_Gsf_HT150; + Bool_t HLT_PFMET130_PFMHT130_IDTight_CaloBTagDeepCSV_3p1; + Bool_t HLT_DiPFJetAve160_HFJEC; + Bool_t HLT_PFMET200_HBHE_BeamHaloCleaned; + Bool_t HLT_PFJetFwd140; + Bool_t HLT_DiPFJetAve260; + Bool_t HLT_Ele35_WPTight_Gsf; + Bool_t HLT_MonoCentralPFJet80_PFMETNoMu120_PFMHTNoMu120_IDTight; + Bool_t HLT_BTagMu_AK4DiJet20_Mu5; + Bool_t HLT_MET105_IsoTrk50; + Bool_t HLT_Ele200_CaloIdVT_GsfTrkIdT; + Bool_t HLT_SinglePhoton20_Eta3p1ForPPRef; + Bool_t HLT_PFHT330PT30_QuadPFJet_75_60_45_40_TriplePFBTagDeepCSV_4p5; + Bool_t HLT_Dimuon0_LowMass_L1_0er1p5; + Bool_t HLT_DoubleMu4_LowMassNonResonantTrk_Displaced; + Bool_t HLT_Ele115_CaloIdVT_GsfTrkIdT; + Bool_t HLT_SingleJet30_Mu12_SinglePFJet40; + Bool_t HLT_ZeroBias_part7; + Bool_t HLT_TripleMu_5_3_3_Mass3p8_DZ; + Bool_t HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET100; + Bool_t HLT_BTagMu_AK4DiJet170_Mu5; + Bool_t HLT_CaloJet550_NoJetID; + Bool_t HLT_PFMET110_PFMHT110_IDTight; + Bool_t HLT_Photon200; + Bool_t HLT_PFHT370; + Bool_t HLT_Photon50_R9Id90_HE10_IsoM; + Bool_t HLT_IsoMu24_eta2p1_MediumChargedIsoPFTauHPS35_Trk1_eta2p1_Reg_CrossL1; + Bool_t HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL; + Bool_t HLT_QuadPFJet105_88_76_15; + Bool_t HLT_HcalCalibration; + Bool_t HLT_MediumChargedIsoPFTau180HighPtRelaxedIso_Trk50_eta2p1_1pr; + Bool_t HLT_Physics_part6; + Bool_t HLT_CaloMET80_NotCleaned; + Bool_t HLT_AK8PFJet60; + Bool_t HLT_AK8PFJet40; + Bool_t HLT_Mu9_IP5_part1; + Bool_t HLT_QuadPFJet105_88_76_15_PFBTagDeepCSV_1p3_VBF2; + Bool_t HLT_PFJetFwd400; + Bool_t HLT_PFMET130_PFMHT130_IDTight; + Bool_t HLT_Ele15_WPLoose_Gsf; + Bool_t HLT_DoubleMu4_JpsiTrkTrk_Displaced; + Bool_t HLT_AK8PFJetFwd200; + Bool_t HLT_Dimuon0_Upsilon_L1_5M; + Bool_t HLT_TripleMu_12_10_5; + Bool_t HLT_Physics_part1; + Bool_t HLT_Mu18_Mu9_SameSign; + Bool_t HLT_DoubleL2Mu30NoVtx_2Cha_Eta2p4; + Bool_t HLT_L2Mu10_NoVertex_NoBPTX; + Bool_t HLT_PFHT890; + Bool_t HLT_TrkMu16_DoubleTrkMu6NoFiltersNoVtx; + Bool_t HLT_PFJet320; + Bool_t HLT_TrkMu16NoFiltersNoVtx; + Bool_t HLT_AK8PFJetFwd140; + Bool_t HLT_PFHT1050; + Bool_t HLT_Mu8_IP5_part3; + Bool_t HLT_Mu48NoFiltersNoVtx_Photon48_CaloIdL; + Bool_t HLT_Mu9_IP4_part4; + Bool_t HLT_PFJetFwd60; + Bool_t HLT_DoubleMediumChargedIsoPFTauHPS40_Trk1_eta2p1_Reg; + Bool_t HLT_Mu9_IP5_part0; + Bool_t HLT_PFJetFwd80; + Bool_t HLT_Photon90_CaloIdL_PFHT700; + Bool_t HLT_L2Mu23NoVtx_2Cha; + Bool_t HLT_DoubleMu4_PsiPrimeTrk_Displaced; + Bool_t HLT_Dimuon0_LowMass_L1_4; + Bool_t HLT_BTagMu_AK4Jet300_Mu5_noalgo; + Bool_t HLT_DoubleMu3_Trk_Tau3mu_NoL1Mass; + Bool_t HLT_Photon100EBHE10; + Bool_t HLT_L2Mu50; + Bool_t HLT_ZeroBias_Alignment; + Bool_t HLT_Mu50_IsoVVVL_PFHT450; + Bool_t HLT_DoubleL2Mu23NoVtx_2Cha_CosmicSeed_NoL2Matched; + Bool_t HLT_PFHT180; + Bool_t HLT_CaloMET80_HBHECleaned; + Bool_t HLT_Mu8_IP5_part0; + Bool_t HLT_Ele17_CaloIdM_TrackIdM_PFJet30; + Bool_t HLT_Mu9_IP6_part4; + Bool_t HLT_PFJet60; + Bool_t HLT_IsoMu24_eta2p1_TightChargedIsoPFTauHPS35_Trk1_eta2p1_Reg_CrossL1; + Bool_t HLT_Mu23_TrkIsoVVL_Ele12_CaloIdL_TrackIdL_IsoVL; + Bool_t HLT_Mu8_IP3_part4; + Bool_t HLT_Dimuon0_Upsilon_Muon_L1_TM0; + Bool_t HLT_Mu8_IP3_part0; + Bool_t HLT_DiPFJetAve320; + Bool_t HLT_Ele28_WPTight_Gsf; + Bool_t HLT_Photon20_HoverELoose; + Bool_t HLT_DiPFJetAve80; + Bool_t HLT_Mu8; + Bool_t HLT_Mu17; + Bool_t HLT_PFMET120_PFMHT120_IDTight_CaloBTagDeepCSV_3p1; + Bool_t HLT_DoublePFJets116MaxDeta1p6_DoubleCaloBTagDeepCSV_p71; + Bool_t HLT_PFHT400_SixPFJet32_DoublePFBTagDeepCSV_2p94; + Bool_t HLT_Photon75_R9Id90_HE10_IsoM_EBOnly_PFJetsMJJ600DEta3; + Bool_t HLT_DoubleMu20_7_Mass0to30_L1_DM4EG; + Bool_t HLT_Mu12_DoublePhoton20; + Bool_t HLT_IsoMu24_eta2p1_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr; + Bool_t HLT_Ele24_eta2p1_WPTight_Gsf_MediumChargedIsoPFTauHPS30_eta2p1_CrossL1; + Bool_t HLT_PFHT510; + Bool_t HLT_Mu9_IP4_part1; + Bool_t HLT_Diphoton30PV_18PV_R9Id_AND_IsoCaloId_AND_HE_R9Id_NoPixelVeto_Mass55; + Bool_t HLT_PFJetFwd40; + Bool_t HLT_Photon120; + Bool_t HLT_AK8PFJet200; + Bool_t HLT_Dimuon0_Upsilon_L1_4p5er2p0; + Bool_t HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30; + Bool_t HLT_Photon100EB_TightID_TightIso; + Bool_t HLT_DiPFJetAve500; + Bool_t HLT_SinglePhoton30_Eta3p1ForPPRef; + Bool_t HLT_IsoMu24; + Bool_t HLT_PFMETTypeOne120_PFMHT120_IDTight; + Bool_t HLT_Mu18_Mu9_SameSign_DZ; + Bool_t HLT_PFMET140_PFMHT140_IDTight; + Bool_t HLT_Mu25_TkMu0_Phi; + Bool_t HLT_AK4CaloJet100; + Bool_t HLT_Mu15; + Bool_t HLT_Mu9_IP4_part0; + Bool_t HLT_Mu12_DoublePFJets62MaxDeta1p6_DoubleCaloBTagDeepCSV_p71; + Bool_t HLT_DiJet110_35_Mjj650_PFMET130; + Bool_t HLT_PFJet550; + Bool_t HLT_DiPFJetAve400; + Bool_t HLT_TrimuonOpen_5_3p5_2_Upsilon_Muon; + Bool_t HLT_PFHT450_SixPFJet36; + Bool_t HLT_QuadPFJet103_88_75_15_DoublePFBTagDeepCSV_1p3_7p7_VBF1; + Bool_t HLT_L1UnpairedBunchBptxMinus; + Bool_t HLT_CaloMET90_HBHECleaned; + Bool_t HLT_TriplePhoton_30_30_10_CaloIdLV2; + Bool_t HLT_AK8PFJet320; + Bool_t HLT_ZeroBias_part0; + Bool_t HLT_Mu12_DoublePFJets40MaxDeta1p6_DoubleCaloBTagDeepCSV_p71; + Bool_t HLT_Mu37_TkMu27; + Bool_t HLT_IsoMu24_TwoProngs35; + Bool_t HLT_Mu12_IP6_part4; + Bool_t HLT_DoubleL2Mu23NoVtx_2Cha_NoL2Matched; + Bool_t HLT_AK8PFJet330_TrimMass30_PFAK8BoostedDoubleB_np2; + Bool_t HLT_PFHT780; + Bool_t HLT_Dimuon0_LowMass; + Bool_t HLT_Mu7p5_Track7_Upsilon; + Bool_t HLT_IsoMu30; + Bool_t HLT_DoubleEle27_CaloIdL_MW; + Bool_t HLT_Mu4_TrkIsoVVL_DiPFJet90_40_DEta3p5_MJJ750_HTT300_PFMETNoMu60; + Bool_t HLT_CaloMET90_NotCleaned; + Bool_t HLT_TriplePhoton_35_35_5_CaloIdLV2_R9IdVL; + Bool_t HLT_Photon75_R9Id90_HE10_IsoM; + Bool_t HLT_L2Mu45_NoVertex_3Sta_NoBPTX3BX; + Bool_t HLT_DoublePFJets40_CaloBTagDeepCSV_p71; + Bool_t HLT_PFHT450_SixPFJet36_PFBTagDeepCSV_1p59; + Bool_t HLT_Mu50; + Bool_t HLT_Dimuon0_Jpsi_NoVertexing_NoOS; + Bool_t HLT_Photon30_HoverELoose; + Bool_t HLT_Mu7_IP4_part4; + Bool_t HLT_IsoTrackHB; + Bool_t HLT_AK4CaloJet40; + Bool_t HLT_AK8PFJet400_TrimMass30; + Bool_t HLT_HcalPhiSym; + Bool_t HLT_AK8PFJet80; + Bool_t HLT_DoubleL2Mu25NoVtx_2Cha_Eta2p4; + Bool_t HLT_Dimuon0_Jpsi_NoVertexing; + Bool_t HLT_TripleJet110_35_35_Mjj650_PFMET120; + Bool_t HLT_DoubleMediumChargedIsoPFTauHPS40_Trk1_TightID_eta2p1_Reg; + Bool_t HLT_PFMETNoMu120_PFMHTNoMu120_IDTight; + Bool_t HLT_Photon75_R9Id90_HE10_IsoM_EBOnly_CaloMJJ300_PFJetsMJJ400DEta3; + Bool_t HLT_Mu30_TkMu0_Upsilon; + Bool_t HLT_Dimuon24_Upsilon_noCorrL1; + Bool_t HLT_MonoCentralPFJet80_PFMETNoMu140_PFMHTNoMu140_IDTight; + Bool_t HLT_QuadPFJet98_83_71_15; + Bool_t HLT_PFMET300_HBHECleaned; + Bool_t HLT_Mu30_TkMu0_Psi; + Bool_t HLT_DoubleMu4_JpsiTrk_Displaced; + Bool_t HLT_Photon75_R9Id90_HE10_IsoM_EBOnly_CaloMJJ400_PFJetsMJJ600DEta3; + Bool_t HLT_ZeroBias_part4; + Bool_t HLT_Ele40_WPTight_Gsf; + Bool_t HLT_DoubleTightChargedIsoPFTauHPS40_Trk1_eta2p1_Reg; + Bool_t HLT_Photon120_R9Id90_HE10_IsoM; + Bool_t HLT_TriplePhoton_30_30_10_CaloIdLV2_R9IdVL; + Bool_t HLT_Ele30_WPTight_Gsf; + Bool_t HLT_PFHT400_SixPFJet32; + Bool_t HLT_HT550_DisplacedDijet60_Inclusive; + Bool_t HLT_DoublePFJets100_CaloBTagDeepCSV_p71; + Bool_t HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_CaloDiJet30_CaloBtagDeepCSV_1p5; + Bool_t HLT_RsqMR320_Rsq0p09_MR200; + Bool_t HLT_Tau3Mu_Mu7_Mu1_TkMu1_IsoTau15_Charge1; + Bool_t HLT_DiMu4_Ele9_CaloIdL_TrackIdL_DZ_Mass3p8; + Bool_t HLT_Dimuon20_Jpsi_Barrel_Seagulls; + Bool_t HLT_DoubleMu2_Jpsi_DoubleTkMu0_Phi; + Bool_t HLT_AK8PFJet330_TrimMass30_PFAK8BTagDeepCSV_p1; + Bool_t HLT_ECALHT800; + Bool_t HLT_ZeroBias_part2; + Bool_t HLT_Dimuon0_LowMass_L1_TM530; + Bool_t HLT_Mu3er1p5_PFJet100er2p5_PFMET90_PFMHT90_IDTight; + Bool_t HLT_L2Mu10_NoVertex_NoBPTX3BX; + Bool_t HLT_Mu12_DoublePFJets54MaxDeta1p6_DoubleCaloBTagDeepCSV_p71; + Bool_t HLT_CaloMET350_HBHECleaned; + Bool_t HLT_Mu7p5_Track3p5_Upsilon; + Bool_t HLT_L1_CDC_SingleMu_3_er1p2_TOP120_DPHI2p618_3p142; + Bool_t HLT_Mu8_TrkIsoVVL_DiPFJet40_DEta3p5_MJJ750_HTT300_PFMETNoMu60; + Bool_t HLT_BTagMu_AK8DiJet170_Mu5_noalgo; + Bool_t HLT_L2Mu40_NoVertex_3Sta_NoBPTX3BX; + Bool_t HLT_IsoMu20_eta2p1_TightChargedIsoPFTauHPS27_eta2p1_CrossL1; + Bool_t HLT_HcalIsolatedbunch; + Bool_t HLT_AK8PFJet500; + Bool_t HLT_Random; + Bool_t HLT_DoubleL2Mu23NoVtx_2Cha; + Bool_t HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_CaloDiJet30; + Bool_t HLT_PFHT350MinPFJet15; + Bool_t HLT_QuadPFJet98_83_71_15_DoublePFBTagDeepCSV_1p3_7p7_VBF1; + Bool_t HLT_PFHT680; + Bool_t HLT_Mu37_Ele27_CaloIdL_MW; + Bool_t HLT_Mu12_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ; + Bool_t HLT_DiPFJetAve80_HFJEC; + Bool_t HLT_Ele15_CaloIdL_TrackIdL_IsoVL_PFJet30; + Bool_t HLT_ZeroBias_FirstCollisionInTrain; + Bool_t HLT_Mu9_IP5_part2; + Bool_t HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30_PFBtagDeepCSV_1p5; + Bool_t HLT_PFJetFwd200; + Bool_t HLT_Physics_part2; + Bool_t HLT_DoubleMu20_7_Mass0to30_L1_DM4; + Bool_t HLT_MediumChargedIsoPFTau220HighPtRelaxedIso_Trk50_eta2p1; + Bool_t HLT_BTagMu_AK4DiJet170_Mu5_noalgo; + Bool_t HLT_DoublePhoton33_CaloIdL; + Bool_t HLT_Mu12_IP6_part2; + Bool_t HLT_Mu8_Ele8_CaloIdM_TrackIdM_Mass8_PFHT350_DZ; + Bool_t HLT_PFJet140; + Bool_t HLT_PFHT250; + Bool_t HLT_PFMETNoMu130_PFMHTNoMu130_IDTight; + Bool_t HLT_IsoMu24_eta2p1_TightChargedIsoPFTauHPS35_Trk1_TightID_eta2p1_Reg_CrossL1; + Bool_t HLT_Mu8_IP6_part0; + Bool_t HLT_CDC_L2cosmic_5_er1p0; + Bool_t HLT_AK8PFJetFwd25; + Bool_t HLT_DoubleMu5_Upsilon_DoubleEle3_CaloIdL_TrackIdL; + Bool_t HLT_Ele15_Ele8_CaloIdL_TrackIdL_IsoVL; + Bool_t HLT_Ele23_Ele12_CaloIdL_TrackIdL_IsoVL_DZ; + Bool_t HLT_IsoMu20_eta2p1_LooseChargedIsoPFTauHPS27_eta2p1_TightID_CrossL1; + Bool_t HLT_EcalCalibration; + Bool_t HLT_HT650_DisplacedDijet60_Inclusive; + Bool_t HLT_QuadPFJet103_88_75_15_PFBTagDeepCSV_1p3_VBF2; + Bool_t HLT_AK4CaloJet50; + Bool_t HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8; + Bool_t HLT_PFMET120_PFMHT120_IDTight; + Bool_t HLT_TriplePhoton_20_20_20_CaloIdLV2; + Bool_t HLT_ZeroBias_IsolatedBunches; + Bool_t HLT_PFHT700_PFMET85_PFMHT85_IDTight; + Bool_t HLT_Physics_part0; + Bool_t HLT_Mu8_IP6_part4; + Bool_t HLT_BTagMu_AK8Jet300_Mu5; + Bool_t HLT_PFHT500_PFMET100_PFMHT100_IDTight; + Bool_t HLT_DoublePFJets350_CaloBTagDeepCSV_p71; + Bool_t HLT_PFMETTypeOne120_PFMHT120_IDTight_PFHT60; + Bool_t HLT_RsqMR300_Rsq0p09_MR200_4jet; + Bool_t HLT_Mu18_Mu9_DZ; + Bool_t HLT_Mu8_IP3_part2; + Bool_t HLT_Mu8_IP6_part1; + Bool_t HLT_QuadPFJet111_90_80_15_DoublePFBTagDeepCSV_1p3_7p7_VBF1; + Bool_t HLT_Dimuon0_Upsilon_L1_5; + Bool_t HLT_TrkMu12_DoubleTrkMu5NoFiltersNoVtx; + Bool_t HLT_Mu12_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL; + Bool_t HLT_Ele17_WPLoose_Gsf; + Bool_t HLT_Photon75_R9Id90_HE10_IsoM_EBOnly_PFJetsMJJ300DEta3; + Bool_t L1_DoubleMu0er2p0_SQ_dR_Max1p4; + Bool_t L1_SingleJet60; + Bool_t L1_ETMHF120_NotSecondBunchInTrain; + Bool_t L1_IsoEG32er2p5_Mt48; + Bool_t L1_SingleEG40er2p5; + Bool_t L1_DoubleIsoTau32er2p1; + Bool_t L1_DoubleMu4p5_SQ_OS_dR_Max1p2; + Bool_t L1_SingleEG10er2p5; + Bool_t L1_SingleJet140er2p5_ETMHF80; + Bool_t L1_DoubleEG_22_10_er2p5; + Bool_t L1_BPTX_NotOR_VME; + Bool_t L1_DoubleEG8er2p5_HTT260er; + Bool_t L1_BPTX_OR_Ref4_VME; + Bool_t L1_SingleMu22_OMTF; + Bool_t L1_DoubleJet112er2p3_dEta_Max1p6; + Bool_t L1_ETMHF110; + Bool_t L1_QuadJet_95_75_65_20_DoubleJet_75_65_er2p5_Jet20_FWD3p0; + Bool_t L1_BPTX_BeamGas_Ref2_VME; + Bool_t L1_DoubleMu0er1p5_SQ_OS_dR_Max1p4; + Bool_t L1_SingleMu18; + Bool_t L1_SingleMu20; + Bool_t L1_BptxXOR; + Bool_t L1_HTT200er; + Bool_t L1_SingleMu22_EMTF; + Bool_t L1_SecondBunchInTrain; + Bool_t L1_SingleMu18er1p5; + Bool_t L1_TripleMu3; + Bool_t L1_TripleMu_5SQ_3SQ_0OQ; + Bool_t L1_LastCollisionInTrain; + Bool_t L1_DoubleJet_100_30_DoubleJet30_Mass_Min620; + Bool_t L1_FirstBunchInTrain; + Bool_t L1_DoubleLooseIsoEG24er2p1; + Bool_t L1_Mu3_Jet120er2p5_dR_Max0p8; + Bool_t L1_DoubleEG_25_14_er2p5; + Bool_t L1_DoubleMu4_SQ_OS; + Bool_t L1_ZeroBias_copy; + Bool_t L1_HTT280er_QuadJet_70_55_40_35_er2p4; + Bool_t L1_LooseIsoEG28er2p1_HTT100er; + Bool_t L1_QuadMu0_OQ; + Bool_t L1_DoubleMu0er1p5_SQ_OS; + Bool_t L1_BPTX_BeamGas_B2_VME; + Bool_t L1_SingleJet120er2p5; + Bool_t L1_DoubleLooseIsoEG22er2p1; + Bool_t L1_SingleJet8erHE; + Bool_t L1_CDC_SingleMu_3_er1p2_TOP120_DPHI2p618_3p142; + Bool_t L1_BPTX_AND_Ref4_VME; + Bool_t L1_DoubleEG8er2p5_HTT280er; + Bool_t L1_FirstBunchAfterTrain; + Bool_t L1_SingleIsoEG28er1p5; + Bool_t L1_HTT320er_QuadJet_70_55_40_40_er2p4; + Bool_t L1_HTT320er_QuadJet_80_60_er2p1_45_40_er2p3; + Bool_t L1_SingleJet90er2p5; + Bool_t L1_DoubleMu5_SQ_EG9er2p5; + Bool_t L1_DoubleEG8er2p5_HTT320er; + Bool_t L1_TripleMu_5SQ_3SQ_0_DoubleMu_5_3_SQ_OS_Mass_Max9; + Bool_t L1_DoubleMu0er1p5_SQ; + Bool_t L1_QuadJet36er2p5_IsoTau52er2p1; + Bool_t L1_TripleEG_16_15_8_er2p5; + Bool_t L1_DoubleIsoTau36er2p1; + Bool_t L1_DoubleJet30er2p5_Mass_Min150_dEta_Max1p5; + Bool_t L1_Mu22er2p1_IsoTau32er2p1; + Bool_t L1_SingleMuCosmics_BMTF; + Bool_t L1_DoubleEG8er2p5_HTT300er; + Bool_t L1_SingleJet90_FWD3p0; + Bool_t L1_SingleEG36er2p5; + Bool_t L1_DoubleMu3_SQ_ETMHF50_HTT60er; + Bool_t L1_Mu3_Jet60er2p5_dR_Max0p4; + Bool_t L1_ETMHF120; + Bool_t L1_BptxOR; + Bool_t L1_DoubleMu0er1p4_SQ_OS_dR_Max1p4; + Bool_t L1_IsoEG32er2p5_Mt44; + Bool_t L1_SingleIsoEG24er2p1; + Bool_t L1_Mu10er2p3_Jet32er2p3_dR_Max0p4_DoubleJet32er2p3_dEta_Max1p6; + Bool_t L1_Mu3er1p5_Jet100er2p5_ETMHF50; + Bool_t L1_SingleJet90; + Bool_t L1_SingleJet35er2p5; + Bool_t L1_Mu12er2p3_Jet40er2p3_dR_Max0p4_DoubleJet40er2p3_dEta_Max1p6; + Bool_t L1_SingleJet140er2p5_ETMHF90; + Bool_t L1_SingleMuOpen_er1p4_NotBptxOR_3BX; + Bool_t L1_DoubleMu4p5er2p0_SQ_OS; + Bool_t L1_SingleMu12_DQ_EMTF; + Bool_t L1_HTT360er; + Bool_t L1_DoubleJet150er2p5; + Bool_t L1_Mu7_LooseIsoEG20er2p5; + Bool_t L1_QuadJet60er2p5; + Bool_t L1_SingleIsoEG34er2p5; + Bool_t L1_TripleMu_5_4_2p5_DoubleMu_5_2p5_OS_Mass_5to17; + Bool_t L1_DoubleEG_LooseIso25_12_er2p5; + Bool_t L1_FirstCollisionInTrain; + Bool_t L1_HTT320er; + Bool_t L1_Mu18er2p1_Tau24er2p1; + Bool_t L1_Mu22er2p1_IsoTau40er2p1; + Bool_t L1_SingleMu7_DQ; + Bool_t L1_ETMHF140; + Bool_t L1_ETMHF110_HTT60er; + Bool_t L1_SingleIsoEG28er2p5; + Bool_t L1_ETMHF120_HTT60er; + Bool_t L1_DoubleEG_LooseIso20_10_er2p5; + Bool_t L1_ETMHF100_HTT60er; + Bool_t L1_DoubleJet_110_35_DoubleJet35_Mass_Min620; + Bool_t L1_ETT1600; + Bool_t L1_DoubleMu0; + Bool_t L1_TripleJet_105_85_75_DoubleJet_85_75_er2p5; + Bool_t L1_SingleMuCosmics_OMTF; + Bool_t L1_SingleMu7; + Bool_t L1_HTT280er; + Bool_t L1_SingleMu16er1p5; + Bool_t L1_DoubleMu3_SQ_HTT220er; + Bool_t L1_Mu5_EG23er2p5; + Bool_t L1_DoubleMu18er2p1; + Bool_t L1_DoubleMu3_SQ_HTT260er; + Bool_t L1_DoubleJet30er2p5_Mass_Min250_dEta_Max1p5; + Bool_t L1_LastBunchInTrain; + Bool_t L1_DoubleEG_LooseIso22_12_er2p5; + Bool_t L1_SingleIsoEG28er2p1; + Bool_t L1_DoubleJet40er2p5; + Bool_t L1_DoubleMu_15_7_SQ; + Bool_t L1_SingleMu0_EMTF; + Bool_t L1_TOTEM_2; + Bool_t L1_TripleMu0_SQ; + Bool_t L1_BptxMinus; + Bool_t L1_SingleJet43er2p5_NotBptxOR_3BX; + Bool_t L1_DoubleJet_80_30_Mass_Min420_Mu8; + Bool_t L1_TOTEM_3; + Bool_t L1_LooseIsoEG24er2p1_IsoTau27er2p1_dR_Min0p3; + Bool_t L1_DoubleEG8er2p5_HTT340er; + Bool_t L1_SingleMu10er1p5; + Bool_t L1_SingleEG38er2p5; + Bool_t L1_HTT255er; + Bool_t L1_HTT160er; + Bool_t L1_SingleMuOpen; + Bool_t L1_LooseIsoEG26er2p1_HTT100er; + Bool_t L1_Mu6_DoubleEG15er2p5; + Bool_t L1_DoubleMu10_SQ; + Bool_t L1_LooseIsoEG30er2p1_HTT100er; + Bool_t L1_SingleMuOpen_er1p1_NotBptxOR_3BX; + Bool_t L1_DoubleEG_25_12_er2p5; + Bool_t L1_TripleEG_16_12_8_er2p5; + Bool_t L1_SingleJet120; + Bool_t L1_TripleMu0_OQ; + Bool_t L1_BPTX_AND_Ref1_VME; + Bool_t L1_DoubleJet_90_30_DoubleJet30_Mass_Min620; + Bool_t L1_HCAL_LaserMon_Trig; + Bool_t L1_BPTX_BeamGas_Ref1_VME; + Bool_t L1_Mu22er2p1_Tau70er2p1; + Bool_t L1_HTT320er_QuadJet_80_60_er2p1_50_45_er2p3; + Bool_t L1_SingleMu0_BMTF; + Bool_t L1_BPTX_RefAND_VME; + Bool_t L1_DoubleMu0_SQ_OS; + Bool_t L1_ETMHF110_HTT60er_NotSecondBunchInTrain; + Bool_t L1_UnprefireableEvent; + Bool_t L1_LooseIsoEG22er2p1_IsoTau26er2p1_dR_Min0p3; + Bool_t L1_ETMHF100; + Bool_t L1_SingleIsoEG26er2p1; + Bool_t L1_ETMHF130; + Bool_t L1_DoubleEG_15_10_er2p5; + Bool_t L1_DoubleMu_12_5; + Bool_t L1_TripleMu_5_3_3_SQ; + Bool_t L1_DoubleMu3_SQ_ETMHF50_Jet60er2p5; + Bool_t L1_HCAL_LaserMon_Veto; + Bool_t L1_DoubleJet_120_45_DoubleJet45_Mass_Min620_Jet60TT28; + Bool_t L1_SingleMu0_OMTF; + Bool_t L1_DoubleMu3_dR_Max1p6_Jet90er2p5_dR_Max0p8; + Bool_t L1_ETT2000; + Bool_t L1_DoubleJet_115_40_DoubleJet40_Mass_Min620; + Bool_t L1_SingleJet140er2p5; + Bool_t L1_HTT120er; + Bool_t L1_MinimumBiasHF0_AND_BptxAND; + Bool_t L1_SingleEG34er2p5; + Bool_t L1_AlwaysTrue; + Bool_t L1_SingleTau120er2p1; + Bool_t L1_DoubleEG_20_10_er2p5; + Bool_t L1_DoubleJet_115_40_DoubleJet40_Mass_Min620_Jet60TT28; + Bool_t L1_ETM150; + Bool_t L1_TripleEG16er2p5; + Bool_t L1_Mu22er2p1_IsoTau34er2p1; + Bool_t L1_DoubleMu_15_5_SQ; + Bool_t L1_SingleIsoEG30er2p5; + Bool_t L1_SingleJet120_FWD3p0; + Bool_t L1_DoubleMu_15_7; + Bool_t L1_UnpairedBunchBptxMinus; + Bool_t L1_SingleLooseIsoEG28er1p5; + Bool_t L1_HTT450er; + Bool_t L1_SingleMuCosmics; + Bool_t L1_SingleEG50; + Bool_t L1_FirstCollisionInOrbit; + Bool_t L1_FirstBunchBeforeTrain; + Bool_t L1_SingleMu7er1p5; + Bool_t L1_TripleMu_5_5_3; + Bool_t L1_TripleJet_100_80_70_DoubleJet_80_70_er2p5; + Bool_t L1_HTT400er; + Bool_t L1_DoubleJet35_Mass_Min450_IsoTau45_RmOvlp; + Bool_t L1_IsoTau40er2p1_ETMHF90; + Bool_t L1_Mu3_Jet30er2p5; + Bool_t L1_SingleJet160er2p5; + Bool_t L1_DoubleJet100er2p3_dEta_Max1p6; + Bool_t L1_SingleMu22_BMTF; + Bool_t L1_IsoEG32er2p5_Mt40; + Bool_t L1_DoubleTau70er2p1; + Bool_t L1_DoubleMu4p5er2p0_SQ_OS_Mass7to18; + Bool_t L1_Mu3_Jet35er2p5_dR_Max0p4; + Bool_t L1_Mu7_EG23er2p5; + Bool_t L1_DoubleEG_LooseIso22_10_er2p5; + Bool_t L1_ETMHF90_HTT60er; + Bool_t L1_Mu5_LooseIsoEG20er2p5; + Bool_t L1_SingleMu8er1p5; + Bool_t L1_Mu6_DoubleEG17er2p5; + Bool_t L1_DoubleMu3_SQ_HTT240er; + Bool_t L1_DoubleMu3_SQ_ETMHF50_Jet60er2p5_OR_DoubleJet40er2p5; + Bool_t L1_SingleEG60; + Bool_t L1_LooseIsoEG22er2p1_Tau70er2p1_dR_Min0p3; + Bool_t L1_SingleIsoEG30er2p1; + Bool_t L1_Mu3_Jet16er2p5_dR_Max0p4; + Bool_t L1_SingleMu6er1p5; + Bool_t L1_LooseIsoEG24er2p1_HTT100er; + Bool_t L1_TOTEM_4; + Bool_t L1_QuadMu0; + Bool_t L1_DoubleJet30er2p5_Mass_Min300_dEta_Max1p5; + Bool_t L1_SingleMu14er1p5; + Bool_t L1_Mu18er2p1_Tau26er2p1; + Bool_t L1_SingleTau130er2p1; + Bool_t L1_BptxPlus; + Bool_t L1_TripleEG_18_18_12_er2p5; + Bool_t L1_TripleMu0; + Bool_t L1_DoubleIsoTau34er2p1; + Bool_t L1_TripleEG_18_17_8_er2p5; + Bool_t L1_SingleIsoEG32er2p5; + Bool_t L1_SingleJet60er2p5; + Bool_t L1_DoubleMu4_SQ_EG9er2p5; + Bool_t L1_IsoTau40er2p1_ETMHF120; + Bool_t L1_SingleIsoEG24er1p5; + Bool_t L1_IsolatedBunch; + Bool_t L1_DoubleJet30er2p5_Mass_Min330_dEta_Max1p5; + Bool_t L1_BPTX_OR_Ref3_VME; + Bool_t L1_TripleMu3_SQ; + Bool_t L1_Mu3_Jet120er2p5_dR_Max0p4; + Bool_t L1_SingleEG26er2p5; + Bool_t L1_Mu22er2p1_IsoTau36er2p1; + Bool_t L1_SingleJet20er2p5_NotBptxOR_3BX; + Bool_t L1_SingleMu12er1p5; + Bool_t L1_Mu12er2p3_Jet40er2p1_dR_Max0p4_DoubleJet40er2p1_dEta_Max1p6; + Bool_t L1_SingleMu9er1p5; + Bool_t L1_DoubleJet30er2p5_Mass_Min360_dEta_Max1p5; + Bool_t L1_DoubleJet_80_30_Mass_Min420_IsoTau40_RmOvlp; + Bool_t L1_DoubleMu9_SQ; + Bool_t L1_SingleIsoEG32er2p1; + Bool_t L1_SingleJet12erHE; + Bool_t L1_SingleLooseIsoEG30er1p5; + Bool_t L1_SingleJet200; + Bool_t L1_BPTX_AND_Ref3_VME; + Bool_t L1_DoubleEG_27_14_er2p5; + Bool_t L1_DoubleJet_80_30_Mass_Min420_DoubleMu0_SQ; + Bool_t L1_SingleJet10erHE; + Bool_t L1_SingleMuCosmics_EMTF; + Bool_t L1_SingleEG15er2p5; + Bool_t L1_SingleIsoEG26er2p5; + Bool_t L1_DoubleMu0er2p0_SQ_OS_dR_Max1p4; + Bool_t L1_SingleJet46er2p5_NotBptxOR_3BX; + Bool_t L1_IsoTau40er2p1_ETMHF100; + Bool_t L1_SingleEG45er2p5; + Bool_t L1_SingleMu5; + Bool_t L1_Mu3er1p5_Jet100er2p5_ETMHF40; + Bool_t L1_Mu6_HTT250er; + Bool_t L1_TOTEM_1; + Bool_t L1_TripleMu_5_3_3; + Bool_t L1_TripleMu_5_3p5_2p5_OQ_DoubleMu_5_2p5_OQ_OS_Mass_5to17; + Bool_t L1_TripleMu_5_3p5_2p5; + Bool_t L1_Mu6_HTT240er; + Bool_t L1_LooseIsoEG26er2p1_Jet34er2p5_dR_Min0p3; + Bool_t L1_LooseIsoEG30er2p1_Jet34er2p5_dR_Min0p3; + Bool_t L1_SingleJet35_FWD3p0; + Bool_t L1_SingleJet20er2p5_NotBptxOR; + Bool_t L1_DoubleMu0_Mass_Min1; + Bool_t L1_ZeroBias; + Bool_t L1_SingleMu12_DQ_BMTF; + Bool_t L1_DoubleJet_120_45_DoubleJet45_Mass_Min620; + Bool_t L1_TripleJet_95_75_65_DoubleJet_75_65_er2p5; + Bool_t L1_Mu6_DoubleEG10er2p5; + Bool_t L1_LooseIsoEG28er2p1_Jet34er2p5_dR_Min0p3; + Bool_t L1_SingleMu12_DQ_OMTF; + Bool_t L1_SingleEG42er2p5; + Bool_t L1_SingleMu22; + Bool_t L1_SingleMu15_DQ; + Bool_t L1_TripleMu_5SQ_3SQ_0OQ_DoubleMu_5_3_SQ_OS_Mass_Max9; + Bool_t L1_DoubleJet30er2p5_Mass_Min200_dEta_Max1p5; + Bool_t L1_ETMHF130_HTT60er; + Bool_t L1_QuadMu0_SQ; + Bool_t L1_SingleEG8er2p5; + Bool_t L1_SingleMuOpen_NotBptxOR; + Bool_t L1_DoubleMu3_OS_DoubleEG7p5Upsilon; + Bool_t L1_SingleJet60_FWD3p0; + Bool_t L1_ETMHF150; + Bool_t L1_DoubleMu_15_7_Mass_Min1; + Bool_t L1_DoubleMu4_SQ_OS_dR_Max1p2; + Bool_t L1_BPTX_BeamGas_B1_VME; + Bool_t L1_SingleJet35; + Bool_t L1_TripleMu_5_3p5_2p5_DoubleMu_5_2p5_OS_Mass_5to17; + Bool_t L1_Mu7_LooseIsoEG23er2p5; + Bool_t L1_Mu6_DoubleEG12er2p5; + Bool_t L1_DoubleJet100er2p5; + Bool_t L1_IsoTau40er2p1_ETMHF110; + Bool_t L1_DoubleMu3_SQ_ETMHF60_Jet60er2p5; + Bool_t L1_Mu3_Jet80er2p5_dR_Max0p4; + Bool_t L1_DoubleMu0_dR_Max1p6_Jet90er2p5_dR_Max0p8; + Bool_t L1_SingleJet180; + Bool_t L1_SingleMu25; + Bool_t L1_SingleJet180er2p5; + Bool_t L1_DoubleMu0_OQ; + Bool_t L1_DoubleMu4p5_SQ_OS; + Bool_t L1_SingleMu3; + Bool_t L1_ETT1200; + Bool_t L1_Mu20_EG10er2p5; + Bool_t L1_SingleMu0_DQ; + Bool_t L1_DoubleMu0_SQ; + Bool_t L1_SecondLastBunchInTrain; + Bool_t L1_ETM120; + Bool_t L1_DoubleJet120er2p5; + Bool_t L1_DoubleMu0er1p5_SQ_dR_Max1p4; + Bool_t L1_UnpairedBunchBptxPlus; + Bool_t L1_DoubleMu5Upsilon_OS_DoubleEG3; + Bool_t L1_NotBptxOR; + Bool_t L1_SingleIsoEG26er1p5; + Int_t nTau; + Int_t Tau_charge[4]; //[nTau] + Float_t Tau_rawIsodR03[4]; //[nTau] + Float_t Tau_leadTkDeltaPhi[4]; //[nTau] + Float_t Tau_leadTkPtOverTauPt[4]; //[nTau] + Float_t Tau_phi[4]; //[nTau] + UChar_t Tau_idDeepTau2017v2p1VSe[4]; //[nTau] + UChar_t Tau_idDeepTau2017v2p1VSjet[4]; //[nTau] + Float_t Tau_eta[4]; //[nTau] + Float_t Tau_dxy[4]; //[nTau] + Float_t Tau_photonsOutsideSignalCone[4]; //[nTau] + UChar_t Tau_genPartFlav[4]; //[nTau] + Int_t Tau_genPartIdx[4]; //[nTau] + Float_t Tau_dz[4]; //[nTau] + Float_t Tau_rawDeepTau2017v2p1VSjet[4]; //[nTau] + Float_t Tau_mass[4]; //[nTau] + Bool_t Tau_idAntiEleDeadECal[4]; //[nTau] + Float_t Tau_rawDeepTau2017v2p1VSmu[4]; //[nTau] + UChar_t Tau_cleanmask[4]; //[nTau] + Float_t Tau_pt[4]; //[nTau] + Float_t Tau_neutralIso[4]; //[nTau] + Int_t Tau_jetIdx[4]; //[nTau] + Bool_t Tau_idDecayModeOldDMs[4]; //[nTau] + Float_t Tau_chargedIso[4]; //[nTau] + UChar_t Tau_idDeepTau2017v2p1VSmu[4]; //[nTau] + Int_t Tau_decayMode[4]; //[nTau] + Float_t Tau_puCorr[4]; //[nTau] + Float_t Tau_leadTkDeltaEta[4]; //[nTau] + Float_t Tau_rawIso[4]; //[nTau] + UChar_t Tau_idAntiMu[4]; //[nTau] + Float_t Tau_rawDeepTau2017v2p1VSe[4]; //[nTau] + Int_t nIsoTrack; + Int_t IsoTrack_pdgId[5]; //[nIsoTrack] + Float_t IsoTrack_eta[5]; //[nIsoTrack] + Float_t IsoTrack_pfRelIso03_all[5]; //[nIsoTrack] + Int_t IsoTrack_charge[5]; //[nIsoTrack] + Bool_t IsoTrack_isFromLostTrack[5]; //[nIsoTrack] + Int_t IsoTrack_fromPV[5]; //[nIsoTrack] + Bool_t IsoTrack_isHighPurityTrack[5]; //[nIsoTrack] + Float_t IsoTrack_pt[5]; //[nIsoTrack] + Float_t IsoTrack_phi[5]; //[nIsoTrack] + Float_t IsoTrack_pfRelIso03_chg[5]; //[nIsoTrack] + Bool_t IsoTrack_isPFcand[5]; //[nIsoTrack] + Float_t IsoTrack_dz[5]; //[nIsoTrack] + Float_t IsoTrack_miniPFRelIso_chg[5]; //[nIsoTrack] + Float_t IsoTrack_miniPFRelIso_all[5]; //[nIsoTrack] + Float_t IsoTrack_dxy[5]; //[nIsoTrack] + Int_t nGenPart; + Int_t GenPart_MotherStatus[101]; //[nGenPart] + Float_t GenPart_phi[101]; //[nGenPart] + Int_t GenPart_pdgId[101]; //[nGenPart] + Float_t GenPart_pt[101]; //[nGenPart] + Bool_t GenPart_isTauDecayProduct[101]; //[nGenPart] + Int_t GenPart_MotherPID[101]; //[nGenPart] + Bool_t GenPart_isDirectPromptTauDecayProduct[101]; //[nGenPart] + Int_t GenPart_genPartIdxMother[101]; //[nGenPart] + Float_t GenPart_mass[101]; //[nGenPart] + Bool_t GenPart_fromHardProcess[101]; //[nGenPart] + Bool_t GenPart_isPrompt[101]; //[nGenPart] + Int_t GenPart_status[101]; //[nGenPart] + Bool_t GenPart_isDirectHadronDecayProduct[101]; //[nGenPart] + Float_t GenPart_eta[101]; //[nGenPart] + Int_t GenPart_statusFlags[101]; //[nGenPart] + Int_t nLHEPart; + Float_t LHEPart_incomingpz[7]; //[nLHEPart] + Float_t LHEPart_pt[7]; //[nLHEPart] + Float_t LHEPart_phi[7]; //[nLHEPart] + Float_t LHEPart_mass[7]; //[nLHEPart] + Int_t LHEPart_status[7]; //[nLHEPart] + Int_t LHEPart_spin[7]; //[nLHEPart] + Int_t LHEPart_pdgId[7]; //[nLHEPart] + Float_t LHEPart_eta[7]; //[nLHEPart] + Int_t nTrigObj; + Int_t TrigObj_l1iso[29]; //[nTrigObj] + Float_t TrigObj_l1pt[29]; //[nTrigObj] + Float_t TrigObj_l1pt_2[29]; //[nTrigObj] + Float_t TrigObj_phi[29]; //[nTrigObj] + Int_t TrigObj_l1charge[29]; //[nTrigObj] + Float_t TrigObj_eta[29]; //[nTrigObj] + Int_t TrigObj_id[29]; //[nTrigObj] + Float_t TrigObj_l2pt[29]; //[nTrigObj] + Int_t TrigObj_filterBits[29]; //[nTrigObj] + Float_t TrigObj_pt[29]; //[nTrigObj] + Int_t nNeutrinoGen; + Int_t NeutrinoGen_status[6]; //[nNeutrinoGen] + Int_t NeutrinoGen_MotherStatus[6]; //[nNeutrinoGen] + Float_t NeutrinoGen_phi[6]; //[nNeutrinoGen] + Float_t NeutrinoGen_eta[6]; //[nNeutrinoGen] + Bool_t NeutrinoGen_isTauDecayProduct[6]; //[nNeutrinoGen] + Bool_t NeutrinoGen_fromHardProcess[6]; //[nNeutrinoGen] + Bool_t NeutrinoGen_isDirectHadronDecayProduct[6]; //[nNeutrinoGen] + Bool_t NeutrinoGen_isPrompt[6]; //[nNeutrinoGen] + Float_t NeutrinoGen_mass[6]; //[nNeutrinoGen] + Bool_t NeutrinoGen_isDirectPromptTauDecayProduct[6]; //[nNeutrinoGen] + Int_t NeutrinoGen_pdgId[6]; //[nNeutrinoGen] + Int_t NeutrinoGen_MotherPID[6]; //[nNeutrinoGen] + Float_t NeutrinoGen_pt[6]; //[nNeutrinoGen] + Int_t nSubJet; + Float_t SubJet_btagCSVV2[6]; //[nSubJet] + Float_t SubJet_mass[6]; //[nSubJet] + UChar_t SubJet_nCHadrons[6]; //[nSubJet] + Float_t SubJet_tau1[6]; //[nSubJet] + Int_t SubJet_hadronFlavour[6]; //[nSubJet] + Float_t SubJet_n2b1[6]; //[nSubJet] + Float_t SubJet_phi[6]; //[nSubJet] + Float_t SubJet_tau4[6]; //[nSubJet] + Float_t SubJet_pt[6]; //[nSubJet] + Float_t SubJet_tau2[6]; //[nSubJet] + Float_t SubJet_btagDeepB[6]; //[nSubJet] + UChar_t SubJet_nBHadrons[6]; //[nSubJet] + Float_t SubJet_tau3[6]; //[nSubJet] + Float_t SubJet_eta[6]; //[nSubJet] + Float_t SubJet_n3b1[6]; //[nSubJet] + Float_t SubJet_rawFactor[6]; //[nSubJet] + Float_t ChsMET_pt; + Float_t ChsMET_phi; + Float_t ChsMET_sumEt; + Int_t nLeptonGen; + Int_t LeptonGen_status[16]; //[nLeptonGen] + Float_t LeptonGen_pt[16]; //[nLeptonGen] + Bool_t LeptonGen_isDirectPromptTauDecayProduct[16]; //[nLeptonGen] + Bool_t LeptonGen_fromHardProcess[16]; //[nLeptonGen] + Float_t LeptonGen_phi[16]; //[nLeptonGen] + Int_t LeptonGen_MotherStatus[16]; //[nLeptonGen] + Bool_t LeptonGen_isTauDecayProduct[16]; //[nLeptonGen] + Float_t LeptonGen_eta[16]; //[nLeptonGen] + Bool_t LeptonGen_isPrompt[16]; //[nLeptonGen] + Int_t LeptonGen_pdgId[16]; //[nLeptonGen] + Bool_t LeptonGen_isDirectHadronDecayProduct[16]; //[nLeptonGen] + Float_t LeptonGen_mass[16]; //[nLeptonGen] + Int_t LeptonGen_MotherPID[16]; //[nLeptonGen] + Int_t nFatJet; + Int_t FatJet_hadronFlavour[3]; //[nFatJet] + Float_t FatJet_deepTagMD_HbbvsQCD[3]; //[nFatJet] + Float_t FatJet_deepTagMD_ZHccvsQCD[3]; //[nFatJet] + Float_t FatJet_tau3[3]; //[nFatJet] + Int_t FatJet_subJetIdx1[3]; //[nFatJet] + Float_t FatJet_deepTagMD_ZvsQCD[3]; //[nFatJet] + Float_t FatJet_btagCSVV2[3]; //[nFatJet] + Float_t FatJet_btagHbb[3]; //[nFatJet] + Float_t FatJet_deepTag_QCD[3]; //[nFatJet] + Float_t FatJet_tau4[3]; //[nFatJet] + Float_t FatJet_msoftdrop[3]; //[nFatJet] + Float_t FatJet_particleNet_mass[3]; //[nFatJet] + Int_t FatJet_subJetIdx2[3]; //[nFatJet] + Int_t FatJet_genJetAK8Idx[3]; //[nFatJet] + Float_t FatJet_particleNetMD_Xbb[3]; //[nFatJet] + Float_t FatJet_btagDDCvLV2[3]; //[nFatJet] + Float_t FatJet_deepTagMD_WvsQCD[3]; //[nFatJet] + Float_t FatJet_pt[3]; //[nFatJet] + Float_t FatJet_n2b1[3]; //[nFatJet] + Float_t FatJet_deepTagMD_bbvsLight[3]; //[nFatJet] + Float_t FatJet_deepTagMD_TvsQCD[3]; //[nFatJet] + Float_t FatJet_particleNet_QCD[3]; //[nFatJet] + Float_t FatJet_particleNet_HccvsQCD[3]; //[nFatJet] + Float_t FatJet_btagDDCvBV2[3]; //[nFatJet] + Float_t FatJet_area[3]; //[nFatJet] + Float_t FatJet_btagDDBvLV2[3]; //[nFatJet] + Float_t FatJet_eta[3]; //[nFatJet] + Float_t FatJet_particleNet_ZvsQCD[3]; //[nFatJet] + Float_t FatJet_particleNetMD_QCD[3]; //[nFatJet] + UChar_t FatJet_nCHadrons[3]; //[nFatJet] + Float_t FatJet_deepTag_WvsQCD[3]; //[nFatJet] + Float_t FatJet_deepTag_ZvsQCD[3]; //[nFatJet] + Float_t FatJet_deepTagMD_H4qvsQCD[3]; //[nFatJet] + Float_t FatJet_particleNet_TvsQCD[3]; //[nFatJet] + Float_t FatJet_deepTag_TvsQCD[3]; //[nFatJet] + Float_t FatJet_particleNet_HbbvsQCD[3]; //[nFatJet] + Float_t FatJet_lsf3[3]; //[nFatJet] + Float_t FatJet_tau1[3]; //[nFatJet] + Float_t FatJet_deepTagMD_ZHbbvsQCD[3]; //[nFatJet] + Float_t FatJet_particleNet_H4qvsQCD[3]; //[nFatJet] + Float_t FatJet_particleNet_WvsQCD[3]; //[nFatJet] + Float_t FatJet_deepTagMD_ZbbvsQCD[3]; //[nFatJet] + Float_t FatJet_deepTag_QCDothers[3]; //[nFatJet] + Float_t FatJet_deepTagMD_ccvsLight[3]; //[nFatJet] + Float_t FatJet_phi[3]; //[nFatJet] + Int_t FatJet_muonIdx3SJ[3]; //[nFatJet] + Int_t FatJet_jetId[3]; //[nFatJet] + UChar_t FatJet_nBHadrons[3]; //[nFatJet] + Float_t FatJet_particleNetMD_Xcc[3]; //[nFatJet] + Float_t FatJet_deepTag_H[3]; //[nFatJet] + Float_t FatJet_rawFactor[3]; //[nFatJet] + Float_t FatJet_btagDeepB[3]; //[nFatJet] + Int_t FatJet_electronIdx3SJ[3]; //[nFatJet] + Float_t FatJet_mass[3]; //[nFatJet] + UChar_t FatJet_nConstituents[3]; //[nFatJet] + Float_t FatJet_particleNetMD_Xqq[3]; //[nFatJet] + Float_t FatJet_n3b1[3]; //[nFatJet] + Float_t FatJet_tau2[3]; //[nFatJet] + Int_t nPhotonGen; + Bool_t PhotonGen_fromHardProcess[9]; //[nPhotonGen] + Bool_t PhotonGen_isTauDecayProduct[9]; //[nPhotonGen] + Int_t PhotonGen_MotherStatus[9]; //[nPhotonGen] + Float_t PhotonGen_eta[9]; //[nPhotonGen] + Float_t PhotonGen_phi[9]; //[nPhotonGen] + Bool_t PhotonGen_isDirectHadronDecayProduct[9]; //[nPhotonGen] + Bool_t PhotonGen_isDirectPromptTauDecayProduct[9]; //[nPhotonGen] + Float_t PhotonGen_pt[9]; //[nPhotonGen] + Int_t PhotonGen_pdgId[9]; //[nPhotonGen] + Bool_t PhotonGen_isPrompt[9]; //[nPhotonGen] + Float_t PhotonGen_mass[9]; //[nPhotonGen] + Int_t PhotonGen_MotherPID[9]; //[nPhotonGen] + Int_t PhotonGen_status[9]; //[nPhotonGen] + Int_t nDressedLepton; + Float_t DressedLepton_phi[16]; //[nDressedLepton] + Float_t DressedLepton_eta[16]; //[nDressedLepton] + Float_t DressedLepton_pt[16]; //[nDressedLepton] + Float_t DressedLepton_mass[16]; //[nDressedLepton] + Int_t DressedLepton_pdgId[16]; //[nDressedLepton] + Int_t nGenDressedLepton; + Float_t GenDressedLepton_phi[2]; //[nGenDressedLepton] + Bool_t GenDressedLepton_hasTauAnc[2]; //[nGenDressedLepton] + Float_t GenDressedLepton_mass[2]; //[nGenDressedLepton] + Float_t GenDressedLepton_eta[2]; //[nGenDressedLepton] + Int_t GenDressedLepton_pdgId[2]; //[nGenDressedLepton] + Float_t GenDressedLepton_pt[2]; //[nGenDressedLepton] + Int_t nSubGenJetAK8; + Float_t SubGenJetAK8_mass[8]; //[nSubGenJetAK8] + Float_t SubGenJetAK8_pt[8]; //[nSubGenJetAK8] + Float_t SubGenJetAK8_eta[8]; //[nSubGenJetAK8] + Float_t SubGenJetAK8_phi[8]; //[nSubGenJetAK8] + Int_t nLowPtElectron; + Int_t LowPtElectron_convWP[5]; //[nLowPtElectron] + Float_t LowPtElectron_dxy[5]; //[nLowPtElectron] + Float_t LowPtElectron_phi[5]; //[nLowPtElectron] + Float_t LowPtElectron_ID[5]; //[nLowPtElectron] + Float_t LowPtElectron_miniPFRelIso_chg[5]; //[nLowPtElectron] + Bool_t LowPtElectron_convVeto[5]; //[nLowPtElectron] + Float_t LowPtElectron_eInvMinusPInv[5]; //[nLowPtElectron] + Float_t LowPtElectron_miniPFRelIso_all[5]; //[nLowPtElectron] + Float_t LowPtElectron_dxyErr[5]; //[nLowPtElectron] + Float_t LowPtElectron_hoe[5]; //[nLowPtElectron] + Float_t LowPtElectron_scEtOverPt[5]; //[nLowPtElectron] + Float_t LowPtElectron_pt[5]; //[nLowPtElectron] + Float_t LowPtElectron_r9[5]; //[nLowPtElectron] + UChar_t LowPtElectron_genPartFlav[5]; //[nLowPtElectron] + Int_t LowPtElectron_genPartIdx[5]; //[nLowPtElectron] + Int_t LowPtElectron_charge[5]; //[nLowPtElectron] + Float_t LowPtElectron_convVtxRadius[5]; //[nLowPtElectron] + Float_t LowPtElectron_energyErr[5]; //[nLowPtElectron] + Int_t LowPtElectron_pdgId[5]; //[nLowPtElectron] + Float_t LowPtElectron_mass[5]; //[nLowPtElectron] + UChar_t LowPtElectron_lostHits[5]; //[nLowPtElectron] + Float_t LowPtElectron_sieie[5]; //[nLowPtElectron] + Float_t LowPtElectron_ptbiased[5]; //[nLowPtElectron] + Float_t LowPtElectron_dz[5]; //[nLowPtElectron] + Float_t LowPtElectron_dzErr[5]; //[nLowPtElectron] + Float_t LowPtElectron_unbiased[5]; //[nLowPtElectron] + Float_t LowPtElectron_eta[5]; //[nLowPtElectron] + Float_t LowPtElectron_deltaEtaSC[5]; //[nLowPtElectron] + Float_t LowPtElectron_embeddedID[5]; //[nLowPtElectron] + Int_t nVetoLepton; + Float_t VetoLepton_pt[7]; //[nVetoLepton] + Float_t VetoLepton_eta[7]; //[nVetoLepton] + Int_t VetoLepton_pdgId[7]; //[nVetoLepton] + Int_t VetoLepton_muonIdx[7]; //[nVetoLepton] + Float_t VetoLepton_phi[7]; //[nVetoLepton] + Int_t VetoLepton_electronIdx[7]; //[nVetoLepton] + Float_t LHEWeight_originalXWGTUP; + Int_t nGenIsolatedPhoton; + Float_t GenIsolatedPhoton_mass[1]; //[nGenIsolatedPhoton] + Float_t GenIsolatedPhoton_eta[1]; //[nGenIsolatedPhoton] + Float_t GenIsolatedPhoton_pt[1]; //[nGenIsolatedPhoton] + Float_t GenIsolatedPhoton_phi[1]; //[nGenIsolatedPhoton] + Float_t RawMET_pt; + Float_t RawMET_phi; + Float_t RawMET_sumEt; + Float_t TkMET_pt; + Float_t TkMET_sumEt; + Float_t TkMET_phi; + Int_t nboostedTau; + Float_t boostedTau_rawIso[3]; //[nboostedTau] + Float_t boostedTau_leadTkDeltaPhi[3]; //[nboostedTau] + Int_t boostedTau_decayMode[3]; //[nboostedTau] + Float_t boostedTau_rawAntiEle2018[3]; //[nboostedTau] + Float_t boostedTau_photonsOutsideSignalCone[3]; //[nboostedTau] + Float_t boostedTau_pt[3]; //[nboostedTau] + Float_t boostedTau_leadTkDeltaEta[3]; //[nboostedTau] + UChar_t boostedTau_genPartFlav[3]; //[nboostedTau] + Float_t boostedTau_rawMVAoldDM2017v2[3]; //[nboostedTau] + Int_t boostedTau_jetIdx[3]; //[nboostedTau] + Float_t boostedTau_rawMVAoldDMdR032017v2[3]; //[nboostedTau] + Float_t boostedTau_rawMVAnewDM2017v2[3]; //[nboostedTau] + Float_t boostedTau_neutralIso[3]; //[nboostedTau] + Float_t boostedTau_puCorr[3]; //[nboostedTau] + UChar_t boostedTau_idMVAoldDM2017v2[3]; //[nboostedTau] + Float_t boostedTau_leadTkPtOverTauPt[3]; //[nboostedTau] + Float_t boostedTau_chargedIso[3]; //[nboostedTau] + Float_t boostedTau_rawIsodR03[3]; //[nboostedTau] + Float_t boostedTau_eta[3]; //[nboostedTau] + UChar_t boostedTau_idMVAnewDM2017v2[3]; //[nboostedTau] + Int_t boostedTau_rawAntiEleCat2018[3]; //[nboostedTau] + UChar_t boostedTau_idAntiEle2018[3]; //[nboostedTau] + UChar_t boostedTau_idAntiMu[3]; //[nboostedTau] + Int_t boostedTau_charge[3]; //[nboostedTau] + UChar_t boostedTau_idMVAoldDMdR032017v2[3]; //[nboostedTau] + Float_t boostedTau_mass[3]; //[nboostedTau] + Float_t boostedTau_phi[3]; //[nboostedTau] + Int_t boostedTau_genPartIdx[3]; //[nboostedTau] + Int_t nGenJet; + UChar_t GenJet_hadronFlavour[14]; //[nGenJet] + Float_t GenJet_mass[14]; //[nGenJet] + Int_t GenJet_partonFlavour[14]; //[nGenJet] + Float_t GenJet_eta[14]; //[nGenJet] + Float_t GenJet_pt[14]; //[nGenJet] + Float_t GenJet_phi[14]; //[nGenJet] + Float_t TriggerEffWeight_2l_u; + Float_t TriggerEffWeight_sngMu; + Float_t TriggerEffWeight_dblEl; + Float_t TriggerEffWeight_4l; + Float_t TriggerEffWeight_3l; + Float_t TriggerEffWeight_dblMu; + Float_t TriggerEffWeight_3l_u; + Float_t TriggerEffWeight_1l_d; + Float_t TriggerEffWeight_sngEl; + Float_t TriggerEffWeight_2l_d; + Float_t TriggerEffWeight_4l_d; + Float_t TriggerEffWeight_3l_d; + Float_t TriggerEffWeight_ElMu; + Float_t TriggerEffWeight_1l_u; + Float_t TriggerEffWeight_4l_u; + Float_t TriggerEffWeight_1l; + Float_t TriggerEffWeight_2l; + Float_t TriggerSFWeight_ElMu; + Float_t TriggerSFWeight_dblEl_d; + Float_t TriggerSFWeight_3l; + Float_t TriggerSFWeight_sngMu_u; + Float_t TriggerSFWeight_dblMu; + Float_t TriggerSFWeight_2l_u; + Float_t TriggerSFWeight_ElMu_u; + Float_t TriggerSFWeight_dblEl_u; + Float_t TriggerSFWeight_sngMu_d; + Float_t TriggerSFWeight_dblMu_u; + Float_t TriggerSFWeight_sngEl_u; + Float_t TriggerSFWeight_4l_u; + Float_t TriggerSFWeight_ElMu_d; + Float_t TriggerSFWeight_sngMu; + Float_t TriggerSFWeight_1l_d; + Float_t TriggerSFWeight_1l; + Float_t TriggerSFWeight_2l; + Float_t TriggerSFWeight_1l_u; + Float_t TriggerSFWeight_sngEl; + Float_t TriggerSFWeight_dblMu_d; + Float_t TriggerSFWeight_sngEl_d; + Float_t TriggerSFWeight_4l_d; + Float_t TriggerSFWeight_dblEl; + Float_t TriggerSFWeight_3l_u; + Float_t TriggerSFWeight_4l; + Float_t TriggerSFWeight_3l_d; + Float_t TriggerSFWeight_2l_d; + Int_t nGenJetAK8; + Float_t GenJetAK8_phi[4]; //[nGenJetAK8] + Float_t GenJetAK8_eta[4]; //[nGenJetAK8] + Float_t GenJetAK8_mass[4]; //[nGenJetAK8] + Float_t GenJetAK8_pt[4]; //[nGenJetAK8] + UChar_t GenJetAK8_hadronFlavour[4]; //[nGenJetAK8] + Int_t GenJetAK8_partonFlavour[4]; //[nGenJetAK8] + Bool_t Flag_trkPOG_toomanystripclus53X; + Bool_t Flag_CSCTightHaloTrkMuUnvetoFilter; + Bool_t Flag_HBHENoiseFilter; + Bool_t Flag_EcalDeadCellBoundaryEnergyFilter; + Bool_t Flag_HBHENoiseIsoFilter; + Bool_t Flag_globalTightHalo2016Filter; + Bool_t Flag_trkPOG_logErrorTooManyClusters; + Bool_t Flag_BadPFMuonDzFilter; + Bool_t Flag_EcalDeadCellTriggerPrimitiveFilter; + Bool_t Flag_trkPOG_manystripclus53X; + Bool_t Flag_BadChargedCandidateFilter; + Bool_t Flag_hcalLaserEventFilter; + Bool_t Flag_hfNoisyHitsFilter; + Bool_t Flag_BadChargedCandidateSummer16Filter; + Bool_t Flag_chargedHadronTrackResolutionFilter; + Bool_t Flag_trkPOGFilters; + Bool_t Flag_muonBadTrackFilter; + Bool_t Flag_HcalStripHaloFilter; + Bool_t Flag_CSCTightHaloFilter; + Bool_t Flag_BadPFMuonFilter; + Bool_t Flag_eeBadScFilter; + Bool_t Flag_globalSuperTightHalo2016Filter; + Bool_t Flag_METFilters; + Bool_t Flag_ecalBadCalibFilter; + Bool_t Flag_BadPFMuonSummer16Filter; + Bool_t Flag_ecalLaserCorrFilter; + Bool_t Flag_goodVertices; + Bool_t Flag_CSCTightHalo2015Filter; + Int_t Pileup_sumLOOT; + Int_t Pileup_nPU; + Float_t Pileup_nTrueInt; + Float_t Pileup_pudensity; + Float_t Pileup_gpudensity; + Int_t Pileup_sumEOOT; + Int_t HTXS_stage_1_pTjet25; + Int_t HTXS_stage1_1_cat_pTjet30GeV; + Int_t HTXS_stage1_2_cat_pTjet25GeV; + Float_t HTXS_Higgs_y; + Int_t HTXS_stage1_1_fine_cat_pTjet25GeV; + Int_t HTXS_stage1_2_cat_pTjet30GeV; + UChar_t HTXS_njets30; + Int_t HTXS_stage1_2_fine_cat_pTjet30GeV; + Int_t HTXS_stage_1_pTjet30; + Int_t HTXS_stage_0; + Int_t HTXS_stage1_1_cat_pTjet25GeV; + Float_t HTXS_Higgs_pt; + Int_t HTXS_stage1_1_fine_cat_pTjet30GeV; + Int_t HTXS_stage1_2_fine_cat_pTjet25GeV; + UChar_t HTXS_njets25; + Float_t GenVtx_z; + Float_t GenVtx_x; + Float_t GenVtx_y; + Float_t GenVtx_t0; + Float_t Generator_scalePDF; + Int_t Generator_id1; + Float_t Generator_x1; + Float_t Generator_binvar; + Float_t Generator_xpdf1; + Int_t Generator_id2; + Float_t Generator_weight; + Float_t Generator_x2; + Float_t Generator_xpdf2; + Bool_t Trigger_sngMu; + Bool_t Trigger_dblMu; + Bool_t Trigger_sngEl; + Bool_t Trigger_dblEl; + Bool_t Trigger_ElMu; + Int_t nGenVisTau; + Int_t GenVisTau_genPartIdxMother[1]; //[nGenVisTau] + Float_t GenVisTau_mass[1]; //[nGenVisTau] + Int_t GenVisTau_status[1]; //[nGenVisTau] + Int_t GenVisTau_charge[1]; //[nGenVisTau] + Float_t GenVisTau_eta[1]; //[nGenVisTau] + Float_t GenVisTau_phi[1]; //[nGenVisTau] + Float_t GenVisTau_pt[1]; //[nGenVisTau] + Float_t RawPuppiMET_sumEt; + Float_t RawPuppiMET_pt; + Float_t RawPuppiMET_phi; + Int_t nSoftActivityJet; + Float_t SoftActivityJet_pt[6]; //[nSoftActivityJet] + Float_t SoftActivityJet_phi[6]; //[nSoftActivityJet] + Float_t SoftActivityJet_eta[6]; //[nSoftActivityJet] + Float_t CaloMET_phi; + Float_t CaloMET_sumEt; + Float_t CaloMET_pt; + Int_t nFsrPhoton; + Float_t FsrPhoton_relIso03[2]; //[nFsrPhoton] + Float_t FsrPhoton_phi[2]; //[nFsrPhoton] + Float_t FsrPhoton_eta[2]; //[nFsrPhoton] + Int_t FsrPhoton_muonIdx[2]; //[nFsrPhoton] + Float_t FsrPhoton_dROverEt2[2]; //[nFsrPhoton] + Float_t FsrPhoton_pt[2]; //[nFsrPhoton] + Float_t PV_x; + Float_t PV_y; + Float_t PV_score; + Float_t PV_chi2; + Int_t PV_npvs; + Float_t PV_z; + Float_t PV_ndof; + Int_t PV_npvsGood; + Int_t nSV; + Float_t SV_chi2[7]; //[nSV] + Float_t SV_ndof[7]; //[nSV] + Int_t SV_charge[7]; //[nSV] + Float_t SV_eta[7]; //[nSV] + Float_t SV_phi[7]; //[nSV] + Float_t SV_x[7]; //[nSV] + Float_t SV_mass[7]; //[nSV] + Float_t SV_dxy[7]; //[nSV] + Float_t SV_pt[7]; //[nSV] + Float_t SV_z[7]; //[nSV] + Float_t SV_dxySig[7]; //[nSV] + Float_t SV_dlen[7]; //[nSV] + Float_t SV_pAngle[7]; //[nSV] + UChar_t SV_ntracks[7]; //[nSV] + Float_t SV_y[7]; //[nSV] + Float_t SV_dlenSig[7]; //[nSV] + Float_t GenMET_pt; + Float_t GenMET_phi; + Float_t gen_mll; + Int_t gen_llchannel; + Float_t gen_ptllmet; + Float_t gen_mlvlv; + Float_t gen_ptll; + Int_t nOtherPV; + Float_t OtherPV_z[3]; //[nOtherPV] + Long64_t topGenPt; + Double_t mTOT_cut; + Double_t dphilep1jj; + Double_t btagWeight_DeepCSVB; + Double_t WlepMt_whss; + Double_t channel; + Double_t detaj2l1; + Double_t baseW; + Double_t PSWeight[4]; + Double_t pTWW; + Double_t genWeight; + Double_t jetpt2_cut; + Double_t dphijet1met; + Double_t dphilep1jet2; + Bool_t L1Reco_step; + Double_t dphijjmet_cut; + Long64_t SoftActivityJetNjets2; + Double_t LHEScaleWeight[9]; + Double_t dphilljet; + Long64_t nLHEReweightingWeight; + Long64_t higgsGenEta; + Double_t mtw2; + Double_t SoftActivityJetHT5; + Double_t detaj1l1; + Double_t mtw1; + Double_t PfMetDivSumMet; + Double_t mlljj20_whss_no_jet2; + Double_t dphilep2jet1; + Double_t fixedGridRhoFastjetAll; + Double_t dphijet1met_cut; + Double_t LHEPdfWeight[103]; + Double_t SoftActivityJetHT10; + Long64_t run; + Double_t dphilmet; + Double_t Ceta_cut; + Long64_t SoftActivityJetNjets10; + Double_t phi2; + Bool_t L1simulation_step; + Double_t mcollWW; + Long64_t nLHEPdfWeight; + Double_t run_period; + Double_t mll; + Bool_t TriggerEmulator[6]; + Double_t WlepPt_whss; + Double_t mjj; + Long64_t antitopGenEta; + Double_t dphilljetjet_cut; + Double_t dphilmet2; + Long64_t genVPt; + Double_t projpfmet; + Double_t mllTwoThree; + Bool_t HLTriggerFirstPath; + Long64_t njet; + Double_t fixedGridRhoFastjetCentralChargedPileUp; + Long64_t event; + Double_t L1PreFiringWeight_Muon_StatUp; + Bool_t HLTriggerFinalPath; + Long64_t higgsGenMass; + Double_t dphilljet_cut; + Long64_t higgsGenPhi; + Double_t eta2; + Double_t dphijj; + Double_t L1PreFiringWeight_Dn; + Double_t projtkmet; + Double_t WlepPt_whss_no_jet2; + Long64_t SoftActivityJetNjets5; + Double_t ptjj; + Double_t L1PreFiringWeight_Muon_Nom; + Double_t dphill; + Double_t dphilep1jet1; + Long64_t nPSWeight; + Double_t fixedGridRhoFastjetCentralNeutral; + Double_t SoftActivityJetHT2; + Double_t mllWgSt; + Double_t yll; + Double_t fixedGridRhoFastjetCentral; + Double_t L1PreFiringWeight_Nom; + Double_t L1PreFiringWeight_Muon_SystUp; + Long64_t topGenMass; + Double_t WlepPt_whss_jet2; + Double_t mlljj20_whss_jet2; + Double_t mTi; + Double_t mllOneThree; + Double_t mlljj20_whss; + Double_t pt2; + Double_t dphillmet; + Double_t drll; + Double_t phi1; + Double_t dphijet2met_cut; + Double_t eta1; + Double_t mllThird; + Long64_t luminosityBlock; + Double_t L1PreFiringWeight_Muon_SystDn; + Double_t choiMass; + Double_t drjj; + Double_t fixedGridRhoFastjetCentralCalo; + Long64_t antitopGenPhi; + Long64_t genTtbarId; + Double_t mR; + Double_t m2ljj20; + Double_t jetpt1_cut; + Double_t dphil1tkmet; + Double_t L1PreFiringWeight_ECAL_Nom; + Double_t dphilep2jet2; + Double_t ht; + Double_t dphilep2jj; + Double_t recoil; + Double_t mth; + Long64_t topGenPhi; + Double_t dphijjmet; + Double_t detaj2l2; + Long64_t nLHEScaleWeight; + Double_t ptll; + Double_t OLV2_cut; + Double_t dphilljetjet; + Double_t dphiltkmet; + Double_t drllOneThree; + Double_t maxdphilepjj; + Double_t L1PreFiringWeight_Muon_StatDn; + Double_t drllWgSt; + Int_t nisLoose; + Long64_t isLoose[7]; //[nisLoose] + Double_t btagWeight_CSVV2; + Bool_t CUT; + Double_t pt1; + Double_t detall; + Long64_t antitopGenMass; + Double_t vht_pt; + Double_t pTHjj; + Double_t L1PreFiringWeight_Up; + Double_t LHEReweightingWeight; + Double_t m2ljj30; + Double_t L1PreFiringWeight_ECAL_Up; + Long64_t higgsGenPt; + Double_t ptTOT_cut; + Double_t upara; + Double_t dphilmet1; + Double_t mlljj30_whss; + Long64_t antitopGenPt; + Double_t detaj1l2; + Double_t dphil2tkmet; + Double_t SoftActivityJetHT; + Double_t OLV1_cut; + Double_t drllTwoThree; + Double_t mcoll; + Long64_t topGenEta; + Double_t uperp; + Double_t L1PreFiringWeight_ECAL_Dn; + Double_t mTe; + Double_t dphijet2met; + Double_t detajj; + Double_t mindetajl; + + // List of branches + TBranch *b_nCleanJet; //! + TBranch *b_CleanJet_eta; //! + TBranch *b_CleanJet_jetIdx; //! + TBranch *b_CleanJet_mass; //! + TBranch *b_CleanJet_phi; //! + TBranch *b_CleanJet_pt; //! + TBranch *b_MET_MetUnclustEnUpDeltaY; //! + TBranch *b_MET_pt; //! + TBranch *b_MET_MetUnclustEnUpDeltaX; //! + TBranch *b_MET_phi; //! + TBranch *b_MET_covXY; //! + TBranch *b_MET_sumEt; //! + TBranch *b_MET_covYY; //! + TBranch *b_MET_sumPtUnclustered; //! + TBranch *b_MET_fiducialGenPt; //! + TBranch *b_MET_significance; //! + TBranch *b_MET_covXX; //! + TBranch *b_MET_fiducialGenPhi; //! + TBranch *b_nJet; //! + TBranch *b_Jet_btagSF_deepjet_shape_down_jesEC2; //! + TBranch *b_Jet_btagSF_deepjet_shape_down_lf; //! + TBranch *b_Jet_btagSF_deepjet_shape_down_jesBBEC1_2018; //! + TBranch *b_Jet_hfsigmaEtaEta; //! + TBranch *b_Jet_btagSF_deepjet_shape_down_hf; //! + TBranch *b_Jet_btagSF_deepjet_shape_up_hfstats2; //! + TBranch *b_Jet_phi; //! + TBranch *b_Jet_partonFlavour; //! + TBranch *b_Jet_btagSF_deepjet_shape_up_hf; //! + TBranch *b_Jet_electronIdx1; //! + TBranch *b_Jet_nConstituents; //! + TBranch *b_Jet_btagDeepB; //! + TBranch *b_Jet_btagDeepFlavCvL; //! + TBranch *b_Jet_btagSF_deepjet_shape_up_jesRelativeSample_2018; //! + TBranch *b_Jet_btagSF_deepjet_shape_up_jesEC2; //! + TBranch *b_Jet_btagSF_deepjet_shape_down_cferr2; //! + TBranch *b_Jet_nMuons; //! + TBranch *b_Jet_btagSF_deepjet_shape_up_jesBBEC1_2018; //! + TBranch *b_Jet_btagSF_deepjet_shape_down_jesAbsolute_2018; //! + TBranch *b_Jet_btagSF_deepjet_shape_up_lfstats1; //! + TBranch *b_Jet_bRegRes; //! + TBranch *b_Jet_bRegCorr; //! + TBranch *b_Jet_btagSF_deepjet_shape_down_hfstats2; //! + TBranch *b_Jet_muonIdx1; //! + TBranch *b_Jet_nElectrons; //! + TBranch *b_Jet_btagSF_deepjet_shape_down_jesFlavorQCD; //! + TBranch *b_Jet_btagSF_deepjet_shape_up_jesHF_2018; //! + TBranch *b_Jet_cRegRes; //! + TBranch *b_Jet_hfcentralEtaStripSize; //! + TBranch *b_Jet_chFPV0EF; //! + TBranch *b_Jet_btagSF_deepjet_shape_up_jes; //! + TBranch *b_Jet_area; //! + TBranch *b_Jet_muonIdx2; //! + TBranch *b_Jet_electronIdx2; //! + TBranch *b_Jet_btagSF_deepjet_shape; //! + TBranch *b_Jet_neEmEF; //! + TBranch *b_Jet_btagDeepFlavCvB; //! + TBranch *b_Jet_eta; //! + TBranch *b_Jet_btagDeepCvB; //! + TBranch *b_Jet_btagDeepFlavQG; //! + TBranch *b_Jet_neHEF; //! + TBranch *b_Jet_btagSF_deepjet_shape_up_lfstats2; //! + TBranch *b_Jet_btagSF_deepjet_shape_down_jesHF_2018; //! + TBranch *b_Jet_btagDeepCvL; //! + TBranch *b_Jet_btagSF_deepjet_shape_up_hfstats1; //! + TBranch *b_Jet_puIdDisc; //! + TBranch *b_Jet_btagSF_deepjet_shape_up_jesRelativeBal; //! + TBranch *b_Jet_btagSF_deepjet_shape_down_hfstats1; //! + TBranch *b_Jet_puId; //! + TBranch *b_Jet_btagSF_deepjet_shape_up_jesFlavorQCD; //! + TBranch *b_Jet_btagSF_deepjet_shape_up_jesBBEC1; //! + TBranch *b_Jet_btagSF_deepjet_shape_up_jesAbsolute_2018; //! + TBranch *b_Jet_cRegCorr; //! + TBranch *b_Jet_btagSF_deepjet_shape_down_jes; //! + TBranch *b_Jet_genJetIdx; //! + TBranch *b_Jet_btagSF_deepjet_shape_down_jesHF; //! + TBranch *b_Jet_btagSF_deepjet_shape_down_lfstats2; //! + TBranch *b_Jet_qgl; //! + TBranch *b_Jet_cleanmask; //! + TBranch *b_Jet_chEmEF; //! + TBranch *b_Jet_btagDeepFlavB; //! + TBranch *b_Jet_btagSF_deepjet_shape_up_jesEC2_2018; //! + TBranch *b_Jet_hfadjacentEtaStripsSize; //! + TBranch *b_Jet_rawFactor; //! + TBranch *b_Jet_hadronFlavour; //! + TBranch *b_Jet_btagSF_deepjet_shape_up_lf; //! + TBranch *b_Jet_btagSF_deepjet_shape_down_jesRelativeSample_2018; //! + TBranch *b_Jet_btagSF_deepjet_shape_up_cferr2; //! + TBranch *b_Jet_btagSF_deepjet_shape_down_jesAbsolute; //! + TBranch *b_Jet_chHEF; //! + TBranch *b_Jet_pt; //! + TBranch *b_Jet_btagSF_deepjet_shape_down_jesRelativeBal; //! + TBranch *b_Jet_muEF; //! + TBranch *b_Jet_btagSF_deepjet_shape_up_jesAbsolute; //! + TBranch *b_Jet_btagSF_deepjet_shape_down_jesEC2_2018; //! + TBranch *b_Jet_btagSF_deepjet_shape_down_cferr1; //! + TBranch *b_Jet_btagSF_deepjet_shape_down_jesBBEC1; //! + TBranch *b_Jet_btagCSVV2; //! + TBranch *b_Jet_btagSF_deepjet_shape_up_cferr1; //! + TBranch *b_Jet_mass; //! + TBranch *b_Jet_btagSF_deepjet_shape_down_lfstats1; //! + TBranch *b_Jet_btagSF_deepjet_shape_up_jesHF; //! + TBranch *b_Jet_jetId; //! + TBranch *b_Jet_hfsigmaPhiPhi; //! + TBranch *b_PuppiMET_sumEt; //! + TBranch *b_PuppiMET_phiJERDown; //! + TBranch *b_PuppiMET_ptJESDown; //! + TBranch *b_PuppiMET_phiJESUp; //! + TBranch *b_PuppiMET_ptJESUp; //! + TBranch *b_PuppiMET_ptUnclusteredDown; //! + TBranch *b_PuppiMET_pt; //! + TBranch *b_PuppiMET_ptJERDown; //! + TBranch *b_PuppiMET_phiUnclusteredUp; //! + TBranch *b_PuppiMET_phiUnclusteredDown; //! + TBranch *b_PuppiMET_ptJERUp; //! + TBranch *b_PuppiMET_phiJERUp; //! + TBranch *b_PuppiMET_phiJESDown; //! + TBranch *b_PuppiMET_ptUnclusteredUp; //! + TBranch *b_PuppiMET_phi; //! + TBranch *b_nLepton_isTightElectron; //! + TBranch *b_Lepton_isTightElectron_mvaFall17V2Iso_WP90; //! + TBranch *b_nLepton_isTightMuon; //! + TBranch *b_Lepton_isTightMuon_cut_Tight_HWWW; //! + TBranch *b_nLepton; //! + TBranch *b_Lepton_promptgenmatched; //! + TBranch *b_Lepton_genmatched; //! + TBranch *b_Lepton_muonIdx; //! + TBranch *b_Lepton_phi; //! + TBranch *b_Lepton_eta; //! + TBranch *b_Lepton_electronIdx; //! + TBranch *b_Lepton_pt; //! + TBranch *b_Lepton_pdgId; //! + TBranch *b_nMuon; //! + TBranch *b_Muon_multiIsoId; //! + TBranch *b_Muon_nStations; //! + TBranch *b_Muon_fsrPhotonIdx; //! + TBranch *b_Muon_tightCharge; //! + TBranch *b_Muon_pfRelIso03_chg; //! + TBranch *b_Muon_jetRelIso; //! + TBranch *b_Muon_dzErr; //! + TBranch *b_Muon_mediumPromptId; //! + TBranch *b_Muon_tightId; //! + TBranch *b_Muon_mvaId; //! + TBranch *b_Muon_puppiIsoId; //! + TBranch *b_Muon_miniPFRelIso_all; //! + TBranch *b_Muon_mass; //! + TBranch *b_Muon_pfRelIso04_all; //! + TBranch *b_Muon_mvaTTH; //! + TBranch *b_Muon_ip3d; //! + TBranch *b_Muon_sip3d; //! + TBranch *b_Muon_jetNDauCharged; //! + TBranch *b_Muon_ptErr; //! + TBranch *b_Muon_cleanmask; //! + TBranch *b_Muon_dxybs; //! + TBranch *b_Muon_isStandalone; //! + TBranch *b_Muon_softId; //! + TBranch *b_Muon_inTimeMuon; //! + TBranch *b_Muon_softMvaId; //! + TBranch *b_Muon_dxyErr; //! + TBranch *b_Muon_miniIsoId; //! + TBranch *b_Muon_tkIsoId; //! + TBranch *b_Muon_isPFcand; //! + TBranch *b_Muon_mvaLowPt; //! + TBranch *b_Muon_genPartIdx; //! + TBranch *b_Muon_tunepRelPt; //! + TBranch *b_Muon_dxy; //! + TBranch *b_Muon_isTracker; //! + TBranch *b_Muon_mediumId; //! + TBranch *b_Muon_jetIdx; //! + TBranch *b_Muon_highPtId; //! + TBranch *b_Muon_pdgId; //! + TBranch *b_Muon_genPartFlav; //! + TBranch *b_Muon_pt; //! + TBranch *b_Muon_highPurity; //! + TBranch *b_Muon_isGlobal; //! + TBranch *b_Muon_pfRelIso03_all; //! + TBranch *b_Muon_jetPtRelv2; //! + TBranch *b_Muon_softMva; //! + TBranch *b_Muon_eta; //! + TBranch *b_Muon_triggerIdLoose; //! + TBranch *b_Muon_segmentComp; //! + TBranch *b_Muon_miniPFRelIso_chg; //! + TBranch *b_Muon_mvaLowPtId; //! + TBranch *b_Muon_charge; //! + TBranch *b_Muon_looseId; //! + TBranch *b_Muon_tkRelIso; //! + TBranch *b_Muon_dz; //! + TBranch *b_Muon_nTrackerLayers; //! + TBranch *b_Muon_pfIsoId; //! + TBranch *b_Muon_phi; //! + TBranch *b_nElectron; //! + TBranch *b_Electron_sip3d; //! + TBranch *b_Electron_mvaFall17V2noIso; //! + TBranch *b_Electron_dr03TkSumPt; //! + TBranch *b_Electron_mass; //! + TBranch *b_Electron_convVeto; //! + TBranch *b_Electron_tightCharge; //! + TBranch *b_Electron_dzErr; //! + TBranch *b_Electron_mvaFall17V2Iso; //! + TBranch *b_Electron_dr03HcalDepth1TowerSumEt; //! + TBranch *b_Electron_dEscaleDown; //! + TBranch *b_Electron_mvaTTH; //! + TBranch *b_Electron_photonIdx; //! + TBranch *b_Electron_eCorr; //! + TBranch *b_Electron_jetPtRelv2; //! + TBranch *b_Electron_genPartIdx; //! + TBranch *b_Electron_scEtOverPt; //! + TBranch *b_Electron_seedGain; //! + TBranch *b_Electron_sieie; //! + TBranch *b_Electron_mvaFall17V2noIso_WP90; //! + TBranch *b_Electron_phi; //! + TBranch *b_Electron_jetRelIso; //! + TBranch *b_Electron_charge; //! + TBranch *b_Electron_pdgId; //! + TBranch *b_Electron_vidNestedWPBitmap; //! + TBranch *b_Electron_dEsigmaUp; //! + TBranch *b_Electron_jetIdx; //! + TBranch *b_Electron_mvaFall17V2noIso_WP80; //! + TBranch *b_Electron_dz; //! + TBranch *b_Electron_pt; //! + TBranch *b_Electron_pfRelIso03_chg; //! + TBranch *b_Electron_mvaFall17V2Iso_WP80; //! + TBranch *b_Electron_miniPFRelIso_chg; //! + TBranch *b_Electron_isPFcand; //! + TBranch *b_Electron_jetNDauCharged; //! + TBranch *b_Electron_dxyErr; //! + TBranch *b_Electron_mvaFall17V2Iso_WPL; //! + TBranch *b_Electron_eta; //! + TBranch *b_Electron_hoe; //! + TBranch *b_Electron_cleanmask; //! + TBranch *b_Electron_dr03TkSumPtHEEP; //! + TBranch *b_Electron_eInvMinusPInv; //! + TBranch *b_Electron_cutBased; //! + TBranch *b_Electron_dxy; //! + TBranch *b_Electron_genPartFlav; //! + TBranch *b_Electron_dr03EcalRecHitSumEt; //! + TBranch *b_Electron_cutBased_HEEP; //! + TBranch *b_Electron_miniPFRelIso_all; //! + TBranch *b_Electron_pfRelIso03_all; //! + TBranch *b_Electron_vidNestedWPBitmapHEEP; //! + TBranch *b_Electron_ip3d; //! + TBranch *b_Electron_r9; //! + TBranch *b_Electron_dEscaleUp; //! + TBranch *b_Electron_mvaFall17V2noIso_WPL; //! + TBranch *b_Electron_deltaEtaSC; //! + TBranch *b_Electron_energyErr; //! + TBranch *b_Electron_mvaFall17V2Iso_WP90; //! + TBranch *b_Electron_lostHits; //! + TBranch *b_Electron_dEsigmaDown; //! + TBranch *b_nPhoton; //! + TBranch *b_Photon_isScEtaEE; //! + TBranch *b_Photon_mvaID_WP80; //! + TBranch *b_Photon_eCorr; //! + TBranch *b_Photon_dEsigmaUp; //! + TBranch *b_Photon_phi; //! + TBranch *b_Photon_genPartIdx; //! + TBranch *b_Photon_dEsigmaDown; //! + TBranch *b_Photon_cutBased_Fall17V1Bitmap; //! + TBranch *b_Photon_electronVeto; //! + TBranch *b_Photon_hoe; //! + TBranch *b_Photon_isScEtaEB; //! + TBranch *b_Photon_mvaID; //! + TBranch *b_Photon_vidNestedWPBitmap; //! + TBranch *b_Photon_sieie; //! + TBranch *b_Photon_r9; //! + TBranch *b_Photon_mass; //! + TBranch *b_Photon_pt; //! + TBranch *b_Photon_cleanmask; //! + TBranch *b_Photon_dEscaleDown; //! + TBranch *b_Photon_genPartFlav; //! + TBranch *b_Photon_pixelSeed; //! + TBranch *b_Photon_mvaID_WP90; //! + TBranch *b_Photon_dEscaleUp; //! + TBranch *b_Photon_charge; //! + TBranch *b_Photon_pdgId; //! + TBranch *b_Photon_cutBased; //! + TBranch *b_Photon_pfRelIso03_chg; //! + TBranch *b_Photon_mvaID_Fall17V1p1; //! + TBranch *b_Photon_seedGain; //! + TBranch *b_Photon_electronIdx; //! + TBranch *b_Photon_jetIdx; //! + TBranch *b_Photon_eta; //! + TBranch *b_Photon_pfRelIso03_all; //! + TBranch *b_Photon_energyErr; //! + TBranch *b_Gen_ZGstar_ele2_phi; //! + TBranch *b_Gen_ZGstar_mass; //! + TBranch *b_Gen_ZGstar_MomId; //! + TBranch *b_Gen_ZGstar_MomStatus; //! + TBranch *b_Gen_ZGstar_ele1_pt; //! + TBranch *b_Gen_ZGstar_ele1_phi; //! + TBranch *b_Gen_ZGstar_deltaR; //! + TBranch *b_Gen_ZGstar_mu2_pt; //! + TBranch *b_Gen_ZGstar_mu2_phi; //! + TBranch *b_Gen_ZGstar_ele2_pt; //! + TBranch *b_Gen_ZGstar_mu1_pt; //! + TBranch *b_Gen_ZGstar_ele1_eta; //! + TBranch *b_Gen_ZGstar_mu2_eta; //! + TBranch *b_Gen_ZGstar_mu1_phi; //! + TBranch *b_Gen_ZGstar_ele2_eta; //! + TBranch *b_Gen_ZGstar_mu1_eta; //! + TBranch *b_LHE_Nuds; //! + TBranch *b_LHE_HT; //! + TBranch *b_LHE_Nglu; //! + TBranch *b_LHE_NpLO; //! + TBranch *b_LHE_Njets; //! + TBranch *b_LHE_HTIncoming; //! + TBranch *b_LHE_NpNLO; //! + TBranch *b_LHE_Vpt; //! + TBranch *b_LHE_AlphaS; //! + TBranch *b_LHE_Nc; //! + TBranch *b_LHE_Nb; //! + TBranch *b_HLT_Ele250_CaloIdVT_GsfTrkIdT; //! + TBranch *b_HLT_Mu3er1p5_PFJet100er2p5_PFMETNoMu100_PFMHTNoMu100_IDTight; //! + TBranch *b_HLT_L2Mu23NoVtx_2Cha_CosmicSeed; //! + TBranch *b_HLT_AK8PFJet330_TrimMass30_PFAK8BTagDeepCSV_p17; //! + TBranch *b_HLT_Ele16_Ele12_Ele8_CaloIdL_TrackIdL; //! + TBranch *b_HLT_DoubleL2Mu25NoVtx_2Cha_CosmicSeed_Eta2p4; //! + TBranch *b_HLT_DoubleMu3_DZ_PFMET70_PFMHT70; //! + TBranch *b_HLT_Ele27_WPTight_Gsf; //! + TBranch *b_HLT_Mu20_Mu10_SameSign; //! + TBranch *b_HLT_Photon150; //! + TBranch *b_HLT_Mu3er1p5_PFJet100er2p5_PFMET80_PFMHT80_IDTight; //! + TBranch *b_HLT_AK8PFHT800_TrimMass50; //! + TBranch *b_HLT_Photon35_TwoProngs35; //! + TBranch *b_HLT_Ele15_IsoVVVL_PFHT450_PFMET50; //! + TBranch *b_HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET120; //! + TBranch *b_HLT_Photon165_R9Id90_HE10_IsoM; //! + TBranch *b_HLT_DiPFJetAve100_HFJEC; //! + TBranch *b_HLT_Mu15_IsoVVVL_PFHT450; //! + TBranch *b_HLT_DoubleEle8_CaloIdM_TrackIdM_Mass8_DZ_PFHT350; //! + TBranch *b_HLT_Ele300_CaloIdVT_GsfTrkIdT; //! + TBranch *b_HLT_Dimuon0_LowMass_L1_0er1p5R; //! + TBranch *b_HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET140; //! + TBranch *b_HLT_PFMET200_NotCleaned; //! + TBranch *b_HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET90; //! + TBranch *b_HLT_Mu8_IP3_part3; //! + TBranch *b_HLT_VBF_DoubleMediumChargedIsoPFTauHPS20_Trk1_eta2p1; //! + TBranch *b_HLT_Ele27_Ele37_CaloIdL_MW; //! + TBranch *b_HLT_Dimuon0_Upsilon_NoVertexing; //! + TBranch *b_HLT_Ele24_eta2p1_WPTight_Gsf_LooseChargedIsoPFTauHPS30_eta2p1_TightID_CrossL1; //! + TBranch *b_HLT_Mu12_DoublePFJets350_CaloBTagDeepCSV_p71; //! + TBranch *b_HLT_DoubleMu48NoFiltersNoVtx; //! + TBranch *b_HLT_Photon120EB_TightID_TightIso; //! + TBranch *b_HLT_Dimuon14_Phi_Barrel_Seagulls; //! + TBranch *b_HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET130; //! + TBranch *b_HLT_PFJetFwd320; //! + TBranch *b_HLT_AK4PFJet50; //! + TBranch *b_HLT_UncorrectedJetE30_NoBPTX3BX; //! + TBranch *b_HLT_Photon60_R9Id90_CaloIdL_IsoL_DisplacedIdL_PFHT350MinPFJet15; //! + TBranch *b_HLT_IsoMu27_TightChargedIsoPFTauHPS20_Trk1_eta2p1_SingleL1; //! + TBranch *b_HLT_Dimuon0_Jpsi; //! + TBranch *b_HLT_CaloMET100_NotCleaned; //! + TBranch *b_HLT_PFMETNoMu120_PFMHTNoMu120_IDTight_PFHT60; //! + TBranch *b_HLT_AK8PFJetFwd260; //! + TBranch *b_HLT_CaloMET110_NotCleaned; //! + TBranch *b_HLT_Mu43NoFiltersNoVtx_Photon43_CaloIdL; //! + TBranch *b_HLT_CaloMHT90; //! + TBranch *b_HLT_UncorrectedJetE60_NoBPTX3BX; //! + TBranch *b_HLT_TripleMu_10_5_5_DZ; //! + TBranch *b_HLT_AK8PFJet15; //! + TBranch *b_HLT_Mu19; //! + TBranch *b_HLT_Mu8_TrkIsoVVL; //! + TBranch *b_HLT_QuadPFJet98_83_71_15_PFBTagDeepCSV_1p3_VBF2; //! + TBranch *b_HLT_DiMu9_Ele9_CaloIdL_TrackIdL; //! + TBranch *b_HLT_MonoCentralPFJet80_PFMETNoMu110_PFMHTNoMu110_IDTight; //! + TBranch *b_HLT_AK8PFJet25; //! + TBranch *b_HLT_AK8PFJet330_TrimMass30_PFAK8BoostedDoubleB_np4; //! + TBranch *b_HLT_DoubleL2Mu25NoVtx_2Cha; //! + TBranch *b_HLT_Ele15_IsoVVVL_PFHT600; //! + TBranch *b_HLT_Ele50_IsoVVVL_PFHT450; //! + TBranch *b_HLT_Mu9_IP4_part2; //! + TBranch *b_HLT_Mu7p5_Track7_Jpsi; //! + TBranch *b_HLT_Mu17_Photon30_IsoCaloId; //! + TBranch *b_HLT_Mu43NoFiltersNoVtxDisplaced_Photon43_CaloIdL; //! + TBranch *b_HLT_Mu23_Mu12; //! + TBranch *b_HLT_L2Mu10; //! + TBranch *b_HLT_Mu12_IP6_part0; //! + TBranch *b_HLT_MediumChargedIsoPFTau200HighPtRelaxedIso_Trk50_eta2p1; //! + TBranch *b_HLT_PFMETTypeOne140_PFMHT140_IDTight; //! + TBranch *b_HLT_Mu7_IP4_part2; //! + TBranch *b_HLT_DoublePFJets200_CaloBTagDeepCSV_p71; //! + TBranch *b_HLT_AK8PFJetFwd60; //! + TBranch *b_HLT_Mu3er1p5_PFJet100er2p5_PFMETNoMu70_PFMHTNoMu70_IDTight; //! + TBranch *b_HLT_Photon90_R9Id90_HE10_IsoM; //! + TBranch *b_HLT_PFMET200_HBHECleaned; //! + TBranch *b_HLT_DoubleL2Mu30NoVtx_2Cha_CosmicSeed_Eta2p4; //! + TBranch *b_HLT_BTagMu_AK8Jet170_DoubleMu5_noalgo; //! + TBranch *b_HLT_Mu8_IP6_part3; //! + TBranch *b_HLT_DoubleL2Mu25NoVtx_2Cha_CosmicSeed; //! + TBranch *b_HLT_AK8PFJet400; //! + TBranch *b_HLT_Mu23_Mu12_SameSign; //! + TBranch *b_HLT_DoubleMu3_Trk_Tau3mu; //! + TBranch *b_HLT_Mu27; //! + TBranch *b_HLT_AK8PFJetFwd500; //! + TBranch *b_HLT_AK4CaloJet30; //! + TBranch *b_HLT_Photon90; //! + TBranch *b_HLT_Dimuon18_PsiPrime_noCorrL1; //! + TBranch *b_HLT_Dimuon10_PsiPrime_Barrel_Seagulls; //! + TBranch *b_HLT_BTagMu_AK4DiJet70_Mu5; //! + TBranch *b_HLT_PFHT330PT30_QuadPFJet_75_60_45_40; //! + TBranch *b_HLT_PFJetFwd25; //! + TBranch *b_HLT_Ele38_WPTight_Gsf; //! + TBranch *b_HLT_Tau3Mu_Mu7_Mu1_TkMu1_IsoTau15; //! + TBranch *b_HLT_Mu7_IP4_part3; //! + TBranch *b_HLT_UncorrectedJetE30_NoBPTX; //! + TBranch *b_HLT_Ele23_CaloIdM_TrackIdM_PFJet30; //! + TBranch *b_HLT_HT425; //! + TBranch *b_HLT_DoubleMu20_7_Mass0to30_Photon23; //! + TBranch *b_HLT_TrkMu17_DoubleTrkMu8NoFiltersNoVtx; //! + TBranch *b_HLT_Mu8_DiEle12_CaloIdL_TrackIdL_DZ; //! + TBranch *b_HLT_Photon175; //! + TBranch *b_HLT_Ele20_WPLoose_Gsf; //! + TBranch *b_HLT_DoubleTightChargedIsoPFTauHPS35_Trk1_TightID_eta2p1_Reg; //! + TBranch *b_HLT_AK8PFJet260; //! + TBranch *b_HLT_Diphoton30_22_R9Id_OR_IsoCaloId_AND_HE_R9Id_Mass90; //! + TBranch *b_HLT_DoubleL2Mu25NoVtx_2Cha_CosmicSeed_NoL2Matched; //! + TBranch *b_HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_Mass3p8; //! + TBranch *b_HLT_Ele24_eta2p1_WPTight_Gsf_TightChargedIsoPFTauHPS30_eta2p1_TightID_CrossL1; //! + TBranch *b_HLT_Ele8_CaloIdM_TrackIdM_PFJet30; //! + TBranch *b_HLT_PFMETNoMu110_PFMHTNoMu110_IDTight; //! + TBranch *b_HLT_Photon110EB_TightID_TightIso; //! + TBranch *b_HLT_Mu7p5_Track2_Jpsi; //! + TBranch *b_HLT_PFMET120_PFMHT120_IDTight_PFHT60; //! + TBranch *b_HLT_Mu9_IP6_part2; //! + TBranch *b_HLT_CDC_L2cosmic_5p5_er1p0; //! + TBranch *b_HLT_DoubleMu33NoFiltersNoVtxDisplaced; //! + TBranch *b_HLT_HT430_DisplacedDijet40_DisplacedTrack; //! + TBranch *b_HLT_ZeroBias_FirstBXAfterTrain; //! + TBranch *b_HLT_AK8PFJetFwd320; //! + TBranch *b_HLT_CaloMET250_NotCleaned; //! + TBranch *b_HLT_Mu27_Ele37_CaloIdL_MW; //! + TBranch *b_HLT_Dimuon0_LowMass_L1_4R; //! + TBranch *b_HLT_RsqMR300_Rsq0p09_MR200; //! + TBranch *b_HLT_PFMETTypeOne100_PFMHT100_IDTight_PFHT60; //! + TBranch *b_HLT_AK4CaloJet120; //! + TBranch *b_HLT_AK8PFJet360_TrimMass30; //! + TBranch *b_HLT_Mu8_IP3_part1; //! + TBranch *b_HLT_Dimuon0_Jpsi3p5_Muon2; //! + TBranch *b_HLT_Ele145_CaloIdVT_GsfTrkIdT; //! + TBranch *b_HLT_Ele50_CaloIdVT_GsfTrkIdT_PFJet165; //! + TBranch *b_HLT_Dimuon25_Jpsi_noCorrL1; //! + TBranch *b_HLT_IsoMu24_eta2p1; //! + TBranch *b_HLT_Dimuon0_Jpsi_L1_4R_0er1p5R; //! + TBranch *b_HLT_Mu7_IP4_part1; //! + TBranch *b_HLT_HT300_Beamspot; //! + TBranch *b_HLT_DiJet110_35_Mjj650_PFMET120; //! + TBranch *b_HLT_DoubleL2Mu25NoVtx_2Cha_NoL2Matched; //! + TBranch *b_HLT_Mu3_PFJet40; //! + TBranch *b_HLT_Mu20_Mu10; //! + TBranch *b_HLT_AK8PFJet380_TrimMass30; //! + TBranch *b_HLT_DiJet110_35_Mjj650_PFMET110; //! + TBranch *b_HLT_Mu15_IsoVVVL_PFHT450_PFMET50; //! + TBranch *b_HLT_Mu9_IP5_part4; //! + TBranch *b_HLT_IsoMu20_eta2p1_MediumChargedIsoPFTauHPS27_eta2p1_TightID_CrossL1; //! + TBranch *b_HLT_IsoMu27_MediumChargedIsoPFTauHPS20_Trk1_eta2p1_SingleL1; //! + TBranch *b_HLT_BTagMu_AK4DiJet40_Mu5_noalgo; //! + TBranch *b_HLT_DoublePhoton70; //! + TBranch *b_HLT_Photon100EEHE10; //! + TBranch *b_HLT_PFJetFwd15; //! + TBranch *b_HLT_DoubleMu4_3_Bs; //! + TBranch *b_HLT_Mu9_IP5_part3; //! + TBranch *b_HLT_HcalNZS; //! + TBranch *b_HLT_Mu7p5_L2Mu2_Jpsi; //! + TBranch *b_HLT_Dimuon0_Upsilon_L1_4p5; //! + TBranch *b_HLT_AK8PFHT850_TrimMass50; //! + TBranch *b_HLT_DoubleMu4_Jpsi_NoVertexing; //! + TBranch *b_HLT_Mu3er1p5_PFJet100er2p5_PFMET100_PFMHT100_IDTight; //! + TBranch *b_HLT_DoubleEle8_CaloIdM_TrackIdM_Mass8_PFHT350; //! + TBranch *b_HLT_Ele15_IsoVVVL_PFHT450; //! + TBranch *b_HLT_Mu7p5_Track3p5_Jpsi; //! + TBranch *b_HLT_DiMu9_Ele9_CaloIdL_TrackIdL_DZ; //! + TBranch *b_HLT_QuadPFJet111_90_80_15_PFBTagDeepCSV_1p3_VBF2; //! + TBranch *b_HLT_PFJet200; //! + TBranch *b_HLT_AK8PFJetFwd450; //! + TBranch *b_HLT_Ele23_Ele12_CaloIdL_TrackIdL_IsoVL; //! + TBranch *b_HLT_Mu17_TrkIsoVVL; //! + TBranch *b_HLT_Rsq0p40; //! + TBranch *b_HLT_Physics_part3; //! + TBranch *b_HLT_DoublePhoton85; //! + TBranch *b_HLT_Dimuon12_Upsilon_y1p4; //! + TBranch *b_HLT_Ele20_eta2p1_WPLoose_Gsf; //! + TBranch *b_HLT_Mu8_IP6_part2; //! + TBranch *b_HLT_Mu12_DoublePFJets200_CaloBTagDeepCSV_p71; //! + TBranch *b_HLT_PFHT800_PFMET75_PFMHT75_IDTight; //! + TBranch *b_HLT_PFJetFwd260; //! + TBranch *b_HLT_PFHT800_PFMET85_PFMHT85_IDTight; //! + TBranch *b_HLT_DoubleMu4_3_Jpsi; //! + TBranch *b_HLT_AK8PFHT750_TrimMass50; //! + TBranch *b_HLT_ZeroBias_Beamspot; //! + TBranch *b_HLT_AK8PFJet450; //! + TBranch *b_HLT_HT430_DisplacedDijet60_DisplacedTrack; //! + TBranch *b_HLT_PFHT500_PFMET110_PFMHT110_IDTight; //! + TBranch *b_HLT_Dimuon24_Phi_noCorrL1; //! + TBranch *b_HLT_PFHT430; //! + TBranch *b_HLT_OldMu100; //! + TBranch *b_HLT_DoubleMu3_DoubleEle7p5_CaloIdL_TrackIdL_Upsilon; //! + TBranch *b_HLT_PFJet400; //! + TBranch *b_HLT_Mu12_IP6_part3; //! + TBranch *b_HLT_AK4CaloJet80; //! + TBranch *b_HLT_DiPFJetAve200; //! + TBranch *b_HLT_QuadPFJet103_88_75_15; //! + TBranch *b_HLT_VBF_DoubleLooseChargedIsoPFTauHPS20_Trk1_eta2p1; //! + TBranch *b_HLT_PFMET140_PFMHT140_IDTight_CaloBTagDeepCSV_3p1; //! + TBranch *b_HLT_IsoMu20_eta2p1_MediumChargedIsoPFTauHPS27_eta2p1_CrossL1; //! + TBranch *b_HLT_Mu7_IP4_part0; //! + TBranch *b_HLT_AK8PFJet420_TrimMass30; //! + TBranch *b_HLT_Mu8_Ele8_CaloIdM_TrackIdM_Mass8_PFHT350; //! + TBranch *b_HLT_TripleMu_5_3_3_Mass3p8_DCA; //! + TBranch *b_HLT_MediumChargedIsoPFTau180HighPtRelaxedIso_Trk50_eta2p1; //! + TBranch *b_HLT_PFJetFwd500; //! + TBranch *b_HLT_Ele15_IsoVVVL_PFHT450_CaloBTagDeepCSV_4p5; //! + TBranch *b_HLT_Physics; //! + TBranch *b_HLT_PFJet260; //! + TBranch *b_HLT_Tau3Mu_Mu7_Mu1_TkMu1_Tau15; //! + TBranch *b_HLT_TriplePhoton_20_20_20_CaloIdLV2_R9IdVL; //! + TBranch *b_HLT_AK8PFJet550; //! + TBranch *b_HLT_DoubleMediumChargedIsoPFTauHPS35_Trk1_TightID_eta2p1_Reg; //! + TBranch *b_HLT_DoubleMu40NoFiltersNoVtxDisplaced; //! + TBranch *b_HLT_Mu3_L1SingleMu5orSingleMu7; //! + TBranch *b_HLT_Mu23_TrkIsoVVL_Ele12_CaloIdL_TrackIdL_IsoVL_DZ; //! + TBranch *b_HLT_Dimuon0_Upsilon_Muon_NoL1Mass; //! + TBranch *b_HLT_ZeroBias_part5; //! + TBranch *b_HLT_IsoMu27; //! + TBranch *b_HLT_DoubleEle25_CaloIdL_MW; //! + TBranch *b_HLT_TkMu100; //! + TBranch *b_HLT_PFJet15; //! + TBranch *b_HLT_DoubleMu4_Mass3p8_DZ_PFHT350; //! + TBranch *b_HLT_IsoMu20_eta2p1_TightChargedIsoPFTauHPS27_eta2p1_TightID_CrossL1; //! + TBranch *b_HLT_Mu8_IP5_part1; //! + TBranch *b_HLT_Ele32_WPTight_Gsf; //! + TBranch *b_HLT_HT500_DisplacedDijet40_DisplacedTrack; //! + TBranch *b_HLT_Photon20; //! + TBranch *b_HLT_Mu3er1p5_PFJet100er2p5_PFMETNoMu90_PFMHTNoMu90_IDTight; //! + TBranch *b_HLT_Mu9_IP4_part3; //! + TBranch *b_HLT_AK4PFJet80; //! + TBranch *b_HLT_DoubleMu3_TkMu_DsTau3Mu; //! + TBranch *b_HLT_IsoMu24_eta2p1_MediumChargedIsoPFTauHPS35_Trk1_TightID_eta2p1_Reg_CrossL1; //! + TBranch *b_HLT_DoubleTightChargedIsoPFTauHPS35_Trk1_eta2p1_Reg; //! + TBranch *b_HLT_DiPFJetAve40; //! + TBranch *b_HLT_PFMET250_HBHECleaned; //! + TBranch *b_HLT_UncorrectedJetE70_NoBPTX3BX; //! + TBranch *b_HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_Mass8; //! + TBranch *b_HLT_PFHT350; //! + TBranch *b_HLT_PFMETNoMu100_PFMHTNoMu100_IDTight_PFHT60; //! + TBranch *b_HLT_Photon50_R9Id90_HE10_IsoM_EBOnly_PFJetsMJJ300DEta3_PFMET50; //! + TBranch *b_HLT_DiSC30_18_EIso_AND_HE_Mass70; //! + TBranch *b_HLT_Dimuon0_Upsilon_L1_4p5NoOS; //! + TBranch *b_HLT_DoubleMu2_Jpsi_DoubleTrk1_Phi1p05; //! + TBranch *b_HLT_Mu12; //! + TBranch *b_HLT_BTagMu_AK4DiJet40_Mu5; //! + TBranch *b_HLT_Mu38NoFiltersNoVtxDisplaced_Photon38_CaloIdL; //! + TBranch *b_HLT_TripleJet110_35_35_Mjj650_PFMET110; //! + TBranch *b_HLT_MET120_IsoTrk50; //! + TBranch *b_HLT_BTagMu_AK8Jet170_DoubleMu5; //! + TBranch *b_HLT_CaloMET300_HBHECleaned; //! + TBranch *b_HLT_Photon60_R9Id90_CaloIdL_IsoL_DisplacedIdL; //! + TBranch *b_HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ; //! + TBranch *b_HLT_Mu9_IP6_part0; //! + TBranch *b_HLT_PFJetFwd450; //! + TBranch *b_HLT_Ele8_CaloIdL_TrackIdL_IsoVL_PFJet30; //! + TBranch *b_HLT_Mu55; //! + TBranch *b_HLT_QuadPFJet105_88_76_15_DoublePFBTagDeepCSV_1p3_7p7_VBF1; //! + TBranch *b_HLT_PFMETTypeOne130_PFMHT130_IDTight; //! + TBranch *b_HLT_Diphoton30_18_R9IdL_AND_HE_AND_IsoCaloId_NoPixelVeto_Mass55; //! + TBranch *b_HLT_PFMETTypeOne200_HBHE_BeamHaloCleaned; //! + TBranch *b_HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET110; //! + TBranch *b_HLT_L1SingleMu25; //! + TBranch *b_HLT_BTagMu_AK4Jet300_Mu5; //! + TBranch *b_HLT_DoubleMu3_DZ_PFMET50_PFMHT60; //! + TBranch *b_HLT_L1ETMHadSeeds; //! + TBranch *b_HLT_Ele12_CaloIdL_TrackIdL_IsoVL_PFJet30; //! + TBranch *b_HLT_DiPFJetAve140; //! + TBranch *b_HLT_ZeroBias_part3; //! + TBranch *b_HLT_AK8PFJet330_TrimMass30_PFAK8BoostedDoubleB_p02; //! + TBranch *b_HLT_Mu8_DiEle12_CaloIdL_TrackIdL; //! + TBranch *b_HLT_DiEle27_WPTightCaloOnly_L1DoubleEG; //! + TBranch *b_HLT_AK8PFJetFwd40; //! + TBranch *b_HLT_CaloJet500_NoJetID; //! + TBranch *b_HLT_MonoCentralPFJet80_PFMETNoMu130_PFMHTNoMu130_IDTight; //! + TBranch *b_HLT_Photon33; //! + TBranch *b_HLT_VBF_DoubleTightChargedIsoPFTauHPS20_Trk1_eta2p1; //! + TBranch *b_HLT_Ele23_CaloIdL_TrackIdL_IsoVL_PFJet30; //! + TBranch *b_HLT_BTagMu_AK4DiJet20_Mu5_noalgo; //! + TBranch *b_HLT_DoubleL2Mu23NoVtx_2Cha_CosmicSeed; //! + TBranch *b_HLT_Dimuon0_Upsilon_L1_4p5er2p0M; //! + TBranch *b_HLT_Ele30_eta2p1_WPTight_Gsf_CentralPFJet35_EleCleaned; //! + TBranch *b_HLT_AK8PFJetFwd400; //! + TBranch *b_HLT_PFJet450; //! + TBranch *b_HLT_Ele24_eta2p1_WPTight_Gsf_TightChargedIsoPFTauHPS30_eta2p1_CrossL1; //! + TBranch *b_HLT_Physics_part5; //! + TBranch *b_HLT_ZeroBias; //! + TBranch *b_HLT_ZeroBias_part1; //! + TBranch *b_HLT_Mu25_TkMu0_Onia; //! + TBranch *b_HLT_Ele35_WPTight_Gsf_L1EGMT; //! + TBranch *b_HLT_CaloMET100_HBHECleaned; //! + TBranch *b_HLT_AK4PFJet120; //! + TBranch *b_HLT_DiPFJetAve60_HFJEC; //! + TBranch *b_HLT_Photon75; //! + TBranch *b_HLT_Tau3Mu_Mu7_Mu1_TkMu1_Tau15_Charge1; //! + TBranch *b_HLT_Mu19_TrkIsoVVL; //! + TBranch *b_HLT_Mu20_TkMu0_Phi; //! + TBranch *b_HLT_HT450_Beamspot; //! + TBranch *b_HLT_Mu7p5_Track2_Upsilon; //! + TBranch *b_HLT_IsoMu27_LooseChargedIsoPFTauHPS20_Trk1_eta2p1_SingleL1; //! + TBranch *b_HLT_PFMETNoMu140_PFMHTNoMu140_IDTight; //! + TBranch *b_HLT_DoubleEle24_eta2p1_WPTight_Gsf; //! + TBranch *b_HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ; //! + TBranch *b_HLT_Ele20_WPTight_Gsf; //! + TBranch *b_HLT_AK8PFJetFwd15; //! + TBranch *b_HLT_Mu15_IsoVVVL_PFHT450_CaloBTagDeepCSV_4p5; //! + TBranch *b_HLT_Mu3er1p5_PFJet100er2p5_PFMETNoMu80_PFMHTNoMu80_IDTight; //! + TBranch *b_HLT_DoubleMu3_DCA_PFMET50_PFMHT60; //! + TBranch *b_HLT_Mu20_Mu10_DZ; //! + TBranch *b_HLT_Photon300_NoHE; //! + TBranch *b_HLT_DiPFJetAve300_HFJEC; //! + TBranch *b_HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL; //! + TBranch *b_HLT_DoubleIsoMu20_eta2p1; //! + TBranch *b_HLT_HT400_DisplacedDijet40_DisplacedTrack; //! + TBranch *b_HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr; //! + TBranch *b_HLT_Dimuon0_Jpsi_NoVertexing_L1_4R_0er1p5R; //! + TBranch *b_HLT_PFJet25; //! + TBranch *b_HLT_Photon100EE_TightID_TightIso; //! + TBranch *b_HLT_DoubleEle33_CaloIdL_MW; //! + TBranch *b_HLT_Ele32_WPTight_Gsf_L1DoubleEG; //! + TBranch *b_HLT_DoubleL2Mu50; //! + TBranch *b_HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass3p8; //! + TBranch *b_HLT_DoubleMu3_DZ_PFMET90_PFMHT90; //! + TBranch *b_HLT_Mu7p5_L2Mu2_Upsilon; //! + TBranch *b_HLT_ZeroBias_FirstCollisionAfterAbortGap; //! + TBranch *b_HLT_PFJet80; //! + TBranch *b_HLT_Mu23_Mu12_SameSign_DZ; //! + TBranch *b_HLT_Mu12_DoublePFJets40_CaloBTagDeepCSV_p71; //! + TBranch *b_HLT_Dimuon18_PsiPrime; //! + TBranch *b_HLT_Physics_part7; //! + TBranch *b_HLT_IsoMu27_MET90; //! + TBranch *b_HLT_AK8PFJetFwd80; //! + TBranch *b_HLT_IsoTrackHE; //! + TBranch *b_HLT_DoubleMu4_Jpsi_Displaced; //! + TBranch *b_HLT_Mu10_TrkIsoVVL_DiPFJet40_DEta3p5_MJJ750_HTT350_PFMETNoMu60; //! + TBranch *b_HLT_DoublePFJets128MaxDeta1p6_DoubleCaloBTagDeepCSV_p71; //! + TBranch *b_HLT_DoubleTightChargedIsoPFTauHPS40_Trk1_TightID_eta2p1_Reg; //! + TBranch *b_HLT_Mu3er1p5_PFJet100er2p5_PFMET70_PFMHT70_IDTight; //! + TBranch *b_HLT_PFJet500; //! + TBranch *b_HLT_AK8PFJet140; //! + TBranch *b_HLT_PFMET100_PFMHT100_IDTight_CaloBTagDeepCSV_3p1; //! + TBranch *b_HLT_Ele28_HighEta_SC20_Mass55; //! + TBranch *b_HLT_L1NotBptxOR; //! + TBranch *b_HLT_Mu20_Mu10_SameSign_DZ; //! + TBranch *b_HLT_Dimuon0_Jpsi_L1_NoOS; //! + TBranch *b_HLT_CaloMET250_HBHECleaned; //! + TBranch *b_HLT_Physics_part4; //! + TBranch *b_HLT_CaloMET70_HBHECleaned; //! + TBranch *b_HLT_AK4PFJet30; //! + TBranch *b_HLT_BTagMu_AK4DiJet110_Mu5_noalgo; //! + TBranch *b_HLT_DoubleMediumChargedIsoPFTauHPS35_Trk1_eta2p1_Reg; //! + TBranch *b_HLT_L1UnpairedBunchBptxPlus; //! + TBranch *b_HLT_TripleJet110_35_35_Mjj650_PFMET130; //! + TBranch *b_HLT_Photon60_R9Id90_CaloIdL_IsoL; //! + TBranch *b_HLT_Mu9_IP6_part3; //! + TBranch *b_HLT_AK8PFHT900_TrimMass50; //! + TBranch *b_HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL; //! + TBranch *b_HLT_Mu12_DoublePFJets100_CaloBTagDeepCSV_p71; //! + TBranch *b_HLT_Dimuon25_Jpsi; //! + TBranch *b_HLT_Mu15_IsoVVVL_PFHT600; //! + TBranch *b_HLT_Rsq0p35; //! + TBranch *b_HLT_Diphoton30_22_R9Id_OR_IsoCaloId_AND_HE_R9Id_Mass95; //! + TBranch *b_HLT_RsqMR320_Rsq0p09_MR200_4jet; //! + TBranch *b_HLT_BTagMu_AK8DiJet170_Mu5; //! + TBranch *b_HLT_PFHT590; //! + TBranch *b_HLT_PFJet40; //! + TBranch *b_HLT_Mu9_IP6_part1; //! + TBranch *b_HLT_Ele24_eta2p1_WPTight_Gsf_MediumChargedIsoPFTauHPS30_eta2p1_TightID_CrossL1; //! + TBranch *b_HLT_DoubleTrkMu_16_6_NoFiltersNoVtx; //! + TBranch *b_HLT_DoubleMu43NoFiltersNoVtx; //! + TBranch *b_HLT_Ele24_eta2p1_WPTight_Gsf_LooseChargedIsoPFTauHPS30_eta2p1_CrossL1; //! + TBranch *b_HLT_BTagMu_AK4DiJet70_Mu5_noalgo; //! + TBranch *b_HLT_Mu8_IP5_part2; //! + TBranch *b_HLT_IsoMu20; //! + TBranch *b_HLT_BTagMu_AK4DiJet110_Mu5; //! + TBranch *b_HLT_BTagMu_AK8Jet300_Mu5_noalgo; //! + TBranch *b_HLT_ZeroBias_part6; //! + TBranch *b_HLT_L1SingleMu18; //! + TBranch *b_HLT_Mu18_Mu9; //! + TBranch *b_HLT_SinglePhoton10_Eta3p1ForPPRef; //! + TBranch *b_HLT_TrkMu6NoFiltersNoVtx; //! + TBranch *b_HLT_Mu20; //! + TBranch *b_HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ; //! + TBranch *b_HLT_DiPFJetAve220_HFJEC; //! + TBranch *b_HLT_Diphoton30PV_18PV_R9Id_AND_IsoCaloId_AND_HE_R9Id_PixelVeto_Mass55; //! + TBranch *b_HLT_Mu8_IP5_part4; //! + TBranch *b_HLT_PFMET100_PFMHT100_IDTight_PFHT60; //! + TBranch *b_HLT_Photon50; //! + TBranch *b_HLT_DiPFJetAve60; //! + TBranch *b_HLT_Trimuon5_3p5_2_Upsilon_Muon; //! + TBranch *b_HLT_Mu12_IP6_part1; //! + TBranch *b_HLT_QuadPFJet111_90_80_15; //! + TBranch *b_HLT_Ele135_CaloIdVT_GsfTrkIdT; //! + TBranch *b_HLT_PFMETTypeOne110_PFMHT110_IDTight; //! + TBranch *b_HLT_AK4PFJet100; //! + TBranch *b_HLT_ZeroBias_LastCollisionInTrain; //! + TBranch *b_HLT_PFMET110_PFMHT110_IDTight_CaloBTagDeepCSV_3p1; //! + TBranch *b_HLT_PFHT700_PFMET95_PFMHT95_IDTight; //! + TBranch *b_HLT_Mu23_Mu12_DZ; //! + TBranch *b_HLT_IsoMu20_eta2p1_LooseChargedIsoPFTauHPS27_eta2p1_CrossL1; //! + TBranch *b_HLT_Diphoton30_18_R9IdL_AND_HE_AND_IsoCaloId_NoPixelVeto; //! + TBranch *b_HLT_Ele28_eta2p1_WPTight_Gsf_HT150; //! + TBranch *b_HLT_PFMET130_PFMHT130_IDTight_CaloBTagDeepCSV_3p1; //! + TBranch *b_HLT_DiPFJetAve160_HFJEC; //! + TBranch *b_HLT_PFMET200_HBHE_BeamHaloCleaned; //! + TBranch *b_HLT_PFJetFwd140; //! + TBranch *b_HLT_DiPFJetAve260; //! + TBranch *b_HLT_Ele35_WPTight_Gsf; //! + TBranch *b_HLT_MonoCentralPFJet80_PFMETNoMu120_PFMHTNoMu120_IDTight; //! + TBranch *b_HLT_BTagMu_AK4DiJet20_Mu5; //! + TBranch *b_HLT_MET105_IsoTrk50; //! + TBranch *b_HLT_Ele200_CaloIdVT_GsfTrkIdT; //! + TBranch *b_HLT_SinglePhoton20_Eta3p1ForPPRef; //! + TBranch *b_HLT_PFHT330PT30_QuadPFJet_75_60_45_40_TriplePFBTagDeepCSV_4p5; //! + TBranch *b_HLT_Dimuon0_LowMass_L1_0er1p5; //! + TBranch *b_HLT_DoubleMu4_LowMassNonResonantTrk_Displaced; //! + TBranch *b_HLT_Ele115_CaloIdVT_GsfTrkIdT; //! + TBranch *b_HLT_SingleJet30_Mu12_SinglePFJet40; //! + TBranch *b_HLT_ZeroBias_part7; //! + TBranch *b_HLT_TripleMu_5_3_3_Mass3p8_DZ; //! + TBranch *b_HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET100; //! + TBranch *b_HLT_BTagMu_AK4DiJet170_Mu5; //! + TBranch *b_HLT_CaloJet550_NoJetID; //! + TBranch *b_HLT_PFMET110_PFMHT110_IDTight; //! + TBranch *b_HLT_Photon200; //! + TBranch *b_HLT_PFHT370; //! + TBranch *b_HLT_Photon50_R9Id90_HE10_IsoM; //! + TBranch *b_HLT_IsoMu24_eta2p1_MediumChargedIsoPFTauHPS35_Trk1_eta2p1_Reg_CrossL1; //! + TBranch *b_HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL; //! + TBranch *b_HLT_QuadPFJet105_88_76_15; //! + TBranch *b_HLT_HcalCalibration; //! + TBranch *b_HLT_MediumChargedIsoPFTau180HighPtRelaxedIso_Trk50_eta2p1_1pr; //! + TBranch *b_HLT_Physics_part6; //! + TBranch *b_HLT_CaloMET80_NotCleaned; //! + TBranch *b_HLT_AK8PFJet60; //! + TBranch *b_HLT_AK8PFJet40; //! + TBranch *b_HLT_Mu9_IP5_part1; //! + TBranch *b_HLT_QuadPFJet105_88_76_15_PFBTagDeepCSV_1p3_VBF2; //! + TBranch *b_HLT_PFJetFwd400; //! + TBranch *b_HLT_PFMET130_PFMHT130_IDTight; //! + TBranch *b_HLT_Ele15_WPLoose_Gsf; //! + TBranch *b_HLT_DoubleMu4_JpsiTrkTrk_Displaced; //! + TBranch *b_HLT_AK8PFJetFwd200; //! + TBranch *b_HLT_Dimuon0_Upsilon_L1_5M; //! + TBranch *b_HLT_TripleMu_12_10_5; //! + TBranch *b_HLT_Physics_part1; //! + TBranch *b_HLT_Mu18_Mu9_SameSign; //! + TBranch *b_HLT_DoubleL2Mu30NoVtx_2Cha_Eta2p4; //! + TBranch *b_HLT_L2Mu10_NoVertex_NoBPTX; //! + TBranch *b_HLT_PFHT890; //! + TBranch *b_HLT_TrkMu16_DoubleTrkMu6NoFiltersNoVtx; //! + TBranch *b_HLT_PFJet320; //! + TBranch *b_HLT_TrkMu16NoFiltersNoVtx; //! + TBranch *b_HLT_AK8PFJetFwd140; //! + TBranch *b_HLT_PFHT1050; //! + TBranch *b_HLT_Mu8_IP5_part3; //! + TBranch *b_HLT_Mu48NoFiltersNoVtx_Photon48_CaloIdL; //! + TBranch *b_HLT_Mu9_IP4_part4; //! + TBranch *b_HLT_PFJetFwd60; //! + TBranch *b_HLT_DoubleMediumChargedIsoPFTauHPS40_Trk1_eta2p1_Reg; //! + TBranch *b_HLT_Mu9_IP5_part0; //! + TBranch *b_HLT_PFJetFwd80; //! + TBranch *b_HLT_Photon90_CaloIdL_PFHT700; //! + TBranch *b_HLT_L2Mu23NoVtx_2Cha; //! + TBranch *b_HLT_DoubleMu4_PsiPrimeTrk_Displaced; //! + TBranch *b_HLT_Dimuon0_LowMass_L1_4; //! + TBranch *b_HLT_BTagMu_AK4Jet300_Mu5_noalgo; //! + TBranch *b_HLT_DoubleMu3_Trk_Tau3mu_NoL1Mass; //! + TBranch *b_HLT_Photon100EBHE10; //! + TBranch *b_HLT_L2Mu50; //! + TBranch *b_HLT_ZeroBias_Alignment; //! + TBranch *b_HLT_Mu50_IsoVVVL_PFHT450; //! + TBranch *b_HLT_DoubleL2Mu23NoVtx_2Cha_CosmicSeed_NoL2Matched; //! + TBranch *b_HLT_PFHT180; //! + TBranch *b_HLT_CaloMET80_HBHECleaned; //! + TBranch *b_HLT_Mu8_IP5_part0; //! + TBranch *b_HLT_Ele17_CaloIdM_TrackIdM_PFJet30; //! + TBranch *b_HLT_Mu9_IP6_part4; //! + TBranch *b_HLT_PFJet60; //! + TBranch *b_HLT_IsoMu24_eta2p1_TightChargedIsoPFTauHPS35_Trk1_eta2p1_Reg_CrossL1; //! + TBranch *b_HLT_Mu23_TrkIsoVVL_Ele12_CaloIdL_TrackIdL_IsoVL; //! + TBranch *b_HLT_Mu8_IP3_part4; //! + TBranch *b_HLT_Dimuon0_Upsilon_Muon_L1_TM0; //! + TBranch *b_HLT_Mu8_IP3_part0; //! + TBranch *b_HLT_DiPFJetAve320; //! + TBranch *b_HLT_Ele28_WPTight_Gsf; //! + TBranch *b_HLT_Photon20_HoverELoose; //! + TBranch *b_HLT_DiPFJetAve80; //! + TBranch *b_HLT_Mu8; //! + TBranch *b_HLT_Mu17; //! + TBranch *b_HLT_PFMET120_PFMHT120_IDTight_CaloBTagDeepCSV_3p1; //! + TBranch *b_HLT_DoublePFJets116MaxDeta1p6_DoubleCaloBTagDeepCSV_p71; //! + TBranch *b_HLT_PFHT400_SixPFJet32_DoublePFBTagDeepCSV_2p94; //! + TBranch *b_HLT_Photon75_R9Id90_HE10_IsoM_EBOnly_PFJetsMJJ600DEta3; //! + TBranch *b_HLT_DoubleMu20_7_Mass0to30_L1_DM4EG; //! + TBranch *b_HLT_Mu12_DoublePhoton20; //! + TBranch *b_HLT_IsoMu24_eta2p1_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr; //! + TBranch *b_HLT_Ele24_eta2p1_WPTight_Gsf_MediumChargedIsoPFTauHPS30_eta2p1_CrossL1; //! + TBranch *b_HLT_PFHT510; //! + TBranch *b_HLT_Mu9_IP4_part1; //! + TBranch *b_HLT_Diphoton30PV_18PV_R9Id_AND_IsoCaloId_AND_HE_R9Id_NoPixelVeto_Mass55; //! + TBranch *b_HLT_PFJetFwd40; //! + TBranch *b_HLT_Photon120; //! + TBranch *b_HLT_AK8PFJet200; //! + TBranch *b_HLT_Dimuon0_Upsilon_L1_4p5er2p0; //! + TBranch *b_HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30; //! + TBranch *b_HLT_Photon100EB_TightID_TightIso; //! + TBranch *b_HLT_DiPFJetAve500; //! + TBranch *b_HLT_SinglePhoton30_Eta3p1ForPPRef; //! + TBranch *b_HLT_IsoMu24; //! + TBranch *b_HLT_PFMETTypeOne120_PFMHT120_IDTight; //! + TBranch *b_HLT_Mu18_Mu9_SameSign_DZ; //! + TBranch *b_HLT_PFMET140_PFMHT140_IDTight; //! + TBranch *b_HLT_Mu25_TkMu0_Phi; //! + TBranch *b_HLT_AK4CaloJet100; //! + TBranch *b_HLT_Mu15; //! + TBranch *b_HLT_Mu9_IP4_part0; //! + TBranch *b_HLT_Mu12_DoublePFJets62MaxDeta1p6_DoubleCaloBTagDeepCSV_p71; //! + TBranch *b_HLT_DiJet110_35_Mjj650_PFMET130; //! + TBranch *b_HLT_PFJet550; //! + TBranch *b_HLT_DiPFJetAve400; //! + TBranch *b_HLT_TrimuonOpen_5_3p5_2_Upsilon_Muon; //! + TBranch *b_HLT_PFHT450_SixPFJet36; //! + TBranch *b_HLT_QuadPFJet103_88_75_15_DoublePFBTagDeepCSV_1p3_7p7_VBF1; //! + TBranch *b_HLT_L1UnpairedBunchBptxMinus; //! + TBranch *b_HLT_CaloMET90_HBHECleaned; //! + TBranch *b_HLT_TriplePhoton_30_30_10_CaloIdLV2; //! + TBranch *b_HLT_AK8PFJet320; //! + TBranch *b_HLT_ZeroBias_part0; //! + TBranch *b_HLT_Mu12_DoublePFJets40MaxDeta1p6_DoubleCaloBTagDeepCSV_p71; //! + TBranch *b_HLT_Mu37_TkMu27; //! + TBranch *b_HLT_IsoMu24_TwoProngs35; //! + TBranch *b_HLT_Mu12_IP6_part4; //! + TBranch *b_HLT_DoubleL2Mu23NoVtx_2Cha_NoL2Matched; //! + TBranch *b_HLT_AK8PFJet330_TrimMass30_PFAK8BoostedDoubleB_np2; //! + TBranch *b_HLT_PFHT780; //! + TBranch *b_HLT_Dimuon0_LowMass; //! + TBranch *b_HLT_Mu7p5_Track7_Upsilon; //! + TBranch *b_HLT_IsoMu30; //! + TBranch *b_HLT_DoubleEle27_CaloIdL_MW; //! + TBranch *b_HLT_Mu4_TrkIsoVVL_DiPFJet90_40_DEta3p5_MJJ750_HTT300_PFMETNoMu60; //! + TBranch *b_HLT_CaloMET90_NotCleaned; //! + TBranch *b_HLT_TriplePhoton_35_35_5_CaloIdLV2_R9IdVL; //! + TBranch *b_HLT_Photon75_R9Id90_HE10_IsoM; //! + TBranch *b_HLT_L2Mu45_NoVertex_3Sta_NoBPTX3BX; //! + TBranch *b_HLT_DoublePFJets40_CaloBTagDeepCSV_p71; //! + TBranch *b_HLT_PFHT450_SixPFJet36_PFBTagDeepCSV_1p59; //! + TBranch *b_HLT_Mu50; //! + TBranch *b_HLT_Dimuon0_Jpsi_NoVertexing_NoOS; //! + TBranch *b_HLT_Photon30_HoverELoose; //! + TBranch *b_HLT_Mu7_IP4_part4; //! + TBranch *b_HLT_IsoTrackHB; //! + TBranch *b_HLT_AK4CaloJet40; //! + TBranch *b_HLT_AK8PFJet400_TrimMass30; //! + TBranch *b_HLT_HcalPhiSym; //! + TBranch *b_HLT_AK8PFJet80; //! + TBranch *b_HLT_DoubleL2Mu25NoVtx_2Cha_Eta2p4; //! + TBranch *b_HLT_Dimuon0_Jpsi_NoVertexing; //! + TBranch *b_HLT_TripleJet110_35_35_Mjj650_PFMET120; //! + TBranch *b_HLT_DoubleMediumChargedIsoPFTauHPS40_Trk1_TightID_eta2p1_Reg; //! + TBranch *b_HLT_PFMETNoMu120_PFMHTNoMu120_IDTight; //! + TBranch *b_HLT_Photon75_R9Id90_HE10_IsoM_EBOnly_CaloMJJ300_PFJetsMJJ400DEta3; //! + TBranch *b_HLT_Mu30_TkMu0_Upsilon; //! + TBranch *b_HLT_Dimuon24_Upsilon_noCorrL1; //! + TBranch *b_HLT_MonoCentralPFJet80_PFMETNoMu140_PFMHTNoMu140_IDTight; //! + TBranch *b_HLT_QuadPFJet98_83_71_15; //! + TBranch *b_HLT_PFMET300_HBHECleaned; //! + TBranch *b_HLT_Mu30_TkMu0_Psi; //! + TBranch *b_HLT_DoubleMu4_JpsiTrk_Displaced; //! + TBranch *b_HLT_Photon75_R9Id90_HE10_IsoM_EBOnly_CaloMJJ400_PFJetsMJJ600DEta3; //! + TBranch *b_HLT_ZeroBias_part4; //! + TBranch *b_HLT_Ele40_WPTight_Gsf; //! + TBranch *b_HLT_DoubleTightChargedIsoPFTauHPS40_Trk1_eta2p1_Reg; //! + TBranch *b_HLT_Photon120_R9Id90_HE10_IsoM; //! + TBranch *b_HLT_TriplePhoton_30_30_10_CaloIdLV2_R9IdVL; //! + TBranch *b_HLT_Ele30_WPTight_Gsf; //! + TBranch *b_HLT_PFHT400_SixPFJet32; //! + TBranch *b_HLT_HT550_DisplacedDijet60_Inclusive; //! + TBranch *b_HLT_DoublePFJets100_CaloBTagDeepCSV_p71; //! + TBranch *b_HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_CaloDiJet30_CaloBtagDeepCSV_1p5; //! + TBranch *b_HLT_RsqMR320_Rsq0p09_MR200; //! + TBranch *b_HLT_Tau3Mu_Mu7_Mu1_TkMu1_IsoTau15_Charge1; //! + TBranch *b_HLT_DiMu4_Ele9_CaloIdL_TrackIdL_DZ_Mass3p8; //! + TBranch *b_HLT_Dimuon20_Jpsi_Barrel_Seagulls; //! + TBranch *b_HLT_DoubleMu2_Jpsi_DoubleTkMu0_Phi; //! + TBranch *b_HLT_AK8PFJet330_TrimMass30_PFAK8BTagDeepCSV_p1; //! + TBranch *b_HLT_ECALHT800; //! + TBranch *b_HLT_ZeroBias_part2; //! + TBranch *b_HLT_Dimuon0_LowMass_L1_TM530; //! + TBranch *b_HLT_Mu3er1p5_PFJet100er2p5_PFMET90_PFMHT90_IDTight; //! + TBranch *b_HLT_L2Mu10_NoVertex_NoBPTX3BX; //! + TBranch *b_HLT_Mu12_DoublePFJets54MaxDeta1p6_DoubleCaloBTagDeepCSV_p71; //! + TBranch *b_HLT_CaloMET350_HBHECleaned; //! + TBranch *b_HLT_Mu7p5_Track3p5_Upsilon; //! + TBranch *b_HLT_L1_CDC_SingleMu_3_er1p2_TOP120_DPHI2p618_3p142; //! + TBranch *b_HLT_Mu8_TrkIsoVVL_DiPFJet40_DEta3p5_MJJ750_HTT300_PFMETNoMu60; //! + TBranch *b_HLT_BTagMu_AK8DiJet170_Mu5_noalgo; //! + TBranch *b_HLT_L2Mu40_NoVertex_3Sta_NoBPTX3BX; //! + TBranch *b_HLT_IsoMu20_eta2p1_TightChargedIsoPFTauHPS27_eta2p1_CrossL1; //! + TBranch *b_HLT_HcalIsolatedbunch; //! + TBranch *b_HLT_AK8PFJet500; //! + TBranch *b_HLT_Random; //! + TBranch *b_HLT_DoubleL2Mu23NoVtx_2Cha; //! + TBranch *b_HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_CaloDiJet30; //! + TBranch *b_HLT_PFHT350MinPFJet15; //! + TBranch *b_HLT_QuadPFJet98_83_71_15_DoublePFBTagDeepCSV_1p3_7p7_VBF1; //! + TBranch *b_HLT_PFHT680; //! + TBranch *b_HLT_Mu37_Ele27_CaloIdL_MW; //! + TBranch *b_HLT_Mu12_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ; //! + TBranch *b_HLT_DiPFJetAve80_HFJEC; //! + TBranch *b_HLT_Ele15_CaloIdL_TrackIdL_IsoVL_PFJet30; //! + TBranch *b_HLT_ZeroBias_FirstCollisionInTrain; //! + TBranch *b_HLT_Mu9_IP5_part2; //! + TBranch *b_HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30_PFBtagDeepCSV_1p5; //! + TBranch *b_HLT_PFJetFwd200; //! + TBranch *b_HLT_Physics_part2; //! + TBranch *b_HLT_DoubleMu20_7_Mass0to30_L1_DM4; //! + TBranch *b_HLT_MediumChargedIsoPFTau220HighPtRelaxedIso_Trk50_eta2p1; //! + TBranch *b_HLT_BTagMu_AK4DiJet170_Mu5_noalgo; //! + TBranch *b_HLT_DoublePhoton33_CaloIdL; //! + TBranch *b_HLT_Mu12_IP6_part2; //! + TBranch *b_HLT_Mu8_Ele8_CaloIdM_TrackIdM_Mass8_PFHT350_DZ; //! + TBranch *b_HLT_PFJet140; //! + TBranch *b_HLT_PFHT250; //! + TBranch *b_HLT_PFMETNoMu130_PFMHTNoMu130_IDTight; //! + TBranch *b_HLT_IsoMu24_eta2p1_TightChargedIsoPFTauHPS35_Trk1_TightID_eta2p1_Reg_CrossL1; //! + TBranch *b_HLT_Mu8_IP6_part0; //! + TBranch *b_HLT_CDC_L2cosmic_5_er1p0; //! + TBranch *b_HLT_AK8PFJetFwd25; //! + TBranch *b_HLT_DoubleMu5_Upsilon_DoubleEle3_CaloIdL_TrackIdL; //! + TBranch *b_HLT_Ele15_Ele8_CaloIdL_TrackIdL_IsoVL; //! + TBranch *b_HLT_Ele23_Ele12_CaloIdL_TrackIdL_IsoVL_DZ; //! + TBranch *b_HLT_IsoMu20_eta2p1_LooseChargedIsoPFTauHPS27_eta2p1_TightID_CrossL1; //! + TBranch *b_HLT_EcalCalibration; //! + TBranch *b_HLT_HT650_DisplacedDijet60_Inclusive; //! + TBranch *b_HLT_QuadPFJet103_88_75_15_PFBTagDeepCSV_1p3_VBF2; //! + TBranch *b_HLT_AK4CaloJet50; //! + TBranch *b_HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8; //! + TBranch *b_HLT_PFMET120_PFMHT120_IDTight; //! + TBranch *b_HLT_TriplePhoton_20_20_20_CaloIdLV2; //! + TBranch *b_HLT_ZeroBias_IsolatedBunches; //! + TBranch *b_HLT_PFHT700_PFMET85_PFMHT85_IDTight; //! + TBranch *b_HLT_Physics_part0; //! + TBranch *b_HLT_Mu8_IP6_part4; //! + TBranch *b_HLT_BTagMu_AK8Jet300_Mu5; //! + TBranch *b_HLT_PFHT500_PFMET100_PFMHT100_IDTight; //! + TBranch *b_HLT_DoublePFJets350_CaloBTagDeepCSV_p71; //! + TBranch *b_HLT_PFMETTypeOne120_PFMHT120_IDTight_PFHT60; //! + TBranch *b_HLT_RsqMR300_Rsq0p09_MR200_4jet; //! + TBranch *b_HLT_Mu18_Mu9_DZ; //! + TBranch *b_HLT_Mu8_IP3_part2; //! + TBranch *b_HLT_Mu8_IP6_part1; //! + TBranch *b_HLT_QuadPFJet111_90_80_15_DoublePFBTagDeepCSV_1p3_7p7_VBF1; //! + TBranch *b_HLT_Dimuon0_Upsilon_L1_5; //! + TBranch *b_HLT_TrkMu12_DoubleTrkMu5NoFiltersNoVtx; //! + TBranch *b_HLT_Mu12_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL; //! + TBranch *b_HLT_Ele17_WPLoose_Gsf; //! + TBranch *b_HLT_Photon75_R9Id90_HE10_IsoM_EBOnly_PFJetsMJJ300DEta3; //! + TBranch *b_L1_DoubleMu0er2p0_SQ_dR_Max1p4; //! + TBranch *b_L1_SingleJet60; //! + TBranch *b_L1_ETMHF120_NotSecondBunchInTrain; //! + TBranch *b_L1_IsoEG32er2p5_Mt48; //! + TBranch *b_L1_SingleEG40er2p5; //! + TBranch *b_L1_DoubleIsoTau32er2p1; //! + TBranch *b_L1_DoubleMu4p5_SQ_OS_dR_Max1p2; //! + TBranch *b_L1_SingleEG10er2p5; //! + TBranch *b_L1_SingleJet140er2p5_ETMHF80; //! + TBranch *b_L1_DoubleEG_22_10_er2p5; //! + TBranch *b_L1_BPTX_NotOR_VME; //! + TBranch *b_L1_DoubleEG8er2p5_HTT260er; //! + TBranch *b_L1_BPTX_OR_Ref4_VME; //! + TBranch *b_L1_SingleMu22_OMTF; //! + TBranch *b_L1_DoubleJet112er2p3_dEta_Max1p6; //! + TBranch *b_L1_ETMHF110; //! + TBranch *b_L1_QuadJet_95_75_65_20_DoubleJet_75_65_er2p5_Jet20_FWD3p0; //! + TBranch *b_L1_BPTX_BeamGas_Ref2_VME; //! + TBranch *b_L1_DoubleMu0er1p5_SQ_OS_dR_Max1p4; //! + TBranch *b_L1_SingleMu18; //! + TBranch *b_L1_SingleMu20; //! + TBranch *b_L1_BptxXOR; //! + TBranch *b_L1_HTT200er; //! + TBranch *b_L1_SingleMu22_EMTF; //! + TBranch *b_L1_SecondBunchInTrain; //! + TBranch *b_L1_SingleMu18er1p5; //! + TBranch *b_L1_TripleMu3; //! + TBranch *b_L1_TripleMu_5SQ_3SQ_0OQ; //! + TBranch *b_L1_LastCollisionInTrain; //! + TBranch *b_L1_DoubleJet_100_30_DoubleJet30_Mass_Min620; //! + TBranch *b_L1_FirstBunchInTrain; //! + TBranch *b_L1_DoubleLooseIsoEG24er2p1; //! + TBranch *b_L1_Mu3_Jet120er2p5_dR_Max0p8; //! + TBranch *b_L1_DoubleEG_25_14_er2p5; //! + TBranch *b_L1_DoubleMu4_SQ_OS; //! + TBranch *b_L1_ZeroBias_copy; //! + TBranch *b_L1_HTT280er_QuadJet_70_55_40_35_er2p4; //! + TBranch *b_L1_LooseIsoEG28er2p1_HTT100er; //! + TBranch *b_L1_QuadMu0_OQ; //! + TBranch *b_L1_DoubleMu0er1p5_SQ_OS; //! + TBranch *b_L1_BPTX_BeamGas_B2_VME; //! + TBranch *b_L1_SingleJet120er2p5; //! + TBranch *b_L1_DoubleLooseIsoEG22er2p1; //! + TBranch *b_L1_SingleJet8erHE; //! + TBranch *b_L1_CDC_SingleMu_3_er1p2_TOP120_DPHI2p618_3p142; //! + TBranch *b_L1_BPTX_AND_Ref4_VME; //! + TBranch *b_L1_DoubleEG8er2p5_HTT280er; //! + TBranch *b_L1_FirstBunchAfterTrain; //! + TBranch *b_L1_SingleIsoEG28er1p5; //! + TBranch *b_L1_HTT320er_QuadJet_70_55_40_40_er2p4; //! + TBranch *b_L1_HTT320er_QuadJet_80_60_er2p1_45_40_er2p3; //! + TBranch *b_L1_SingleJet90er2p5; //! + TBranch *b_L1_DoubleMu5_SQ_EG9er2p5; //! + TBranch *b_L1_DoubleEG8er2p5_HTT320er; //! + TBranch *b_L1_TripleMu_5SQ_3SQ_0_DoubleMu_5_3_SQ_OS_Mass_Max9; //! + TBranch *b_L1_DoubleMu0er1p5_SQ; //! + TBranch *b_L1_QuadJet36er2p5_IsoTau52er2p1; //! + TBranch *b_L1_TripleEG_16_15_8_er2p5; //! + TBranch *b_L1_DoubleIsoTau36er2p1; //! + TBranch *b_L1_DoubleJet30er2p5_Mass_Min150_dEta_Max1p5; //! + TBranch *b_L1_Mu22er2p1_IsoTau32er2p1; //! + TBranch *b_L1_SingleMuCosmics_BMTF; //! + TBranch *b_L1_DoubleEG8er2p5_HTT300er; //! + TBranch *b_L1_SingleJet90_FWD3p0; //! + TBranch *b_L1_SingleEG36er2p5; //! + TBranch *b_L1_DoubleMu3_SQ_ETMHF50_HTT60er; //! + TBranch *b_L1_Mu3_Jet60er2p5_dR_Max0p4; //! + TBranch *b_L1_ETMHF120; //! + TBranch *b_L1_BptxOR; //! + TBranch *b_L1_DoubleMu0er1p4_SQ_OS_dR_Max1p4; //! + TBranch *b_L1_IsoEG32er2p5_Mt44; //! + TBranch *b_L1_SingleIsoEG24er2p1; //! + TBranch *b_L1_Mu10er2p3_Jet32er2p3_dR_Max0p4_DoubleJet32er2p3_dEta_Max1p6; //! + TBranch *b_L1_Mu3er1p5_Jet100er2p5_ETMHF50; //! + TBranch *b_L1_SingleJet90; //! + TBranch *b_L1_SingleJet35er2p5; //! + TBranch *b_L1_Mu12er2p3_Jet40er2p3_dR_Max0p4_DoubleJet40er2p3_dEta_Max1p6; //! + TBranch *b_L1_SingleJet140er2p5_ETMHF90; //! + TBranch *b_L1_SingleMuOpen_er1p4_NotBptxOR_3BX; //! + TBranch *b_L1_DoubleMu4p5er2p0_SQ_OS; //! + TBranch *b_L1_SingleMu12_DQ_EMTF; //! + TBranch *b_L1_HTT360er; //! + TBranch *b_L1_DoubleJet150er2p5; //! + TBranch *b_L1_Mu7_LooseIsoEG20er2p5; //! + TBranch *b_L1_QuadJet60er2p5; //! + TBranch *b_L1_SingleIsoEG34er2p5; //! + TBranch *b_L1_TripleMu_5_4_2p5_DoubleMu_5_2p5_OS_Mass_5to17; //! + TBranch *b_L1_DoubleEG_LooseIso25_12_er2p5; //! + TBranch *b_L1_FirstCollisionInTrain; //! + TBranch *b_L1_HTT320er; //! + TBranch *b_L1_Mu18er2p1_Tau24er2p1; //! + TBranch *b_L1_Mu22er2p1_IsoTau40er2p1; //! + TBranch *b_L1_SingleMu7_DQ; //! + TBranch *b_L1_ETMHF140; //! + TBranch *b_L1_ETMHF110_HTT60er; //! + TBranch *b_L1_SingleIsoEG28er2p5; //! + TBranch *b_L1_ETMHF120_HTT60er; //! + TBranch *b_L1_DoubleEG_LooseIso20_10_er2p5; //! + TBranch *b_L1_ETMHF100_HTT60er; //! + TBranch *b_L1_DoubleJet_110_35_DoubleJet35_Mass_Min620; //! + TBranch *b_L1_ETT1600; //! + TBranch *b_L1_DoubleMu0; //! + TBranch *b_L1_TripleJet_105_85_75_DoubleJet_85_75_er2p5; //! + TBranch *b_L1_SingleMuCosmics_OMTF; //! + TBranch *b_L1_SingleMu7; //! + TBranch *b_L1_HTT280er; //! + TBranch *b_L1_SingleMu16er1p5; //! + TBranch *b_L1_DoubleMu3_SQ_HTT220er; //! + TBranch *b_L1_Mu5_EG23er2p5; //! + TBranch *b_L1_DoubleMu18er2p1; //! + TBranch *b_L1_DoubleMu3_SQ_HTT260er; //! + TBranch *b_L1_DoubleJet30er2p5_Mass_Min250_dEta_Max1p5; //! + TBranch *b_L1_LastBunchInTrain; //! + TBranch *b_L1_DoubleEG_LooseIso22_12_er2p5; //! + TBranch *b_L1_SingleIsoEG28er2p1; //! + TBranch *b_L1_DoubleJet40er2p5; //! + TBranch *b_L1_DoubleMu_15_7_SQ; //! + TBranch *b_L1_SingleMu0_EMTF; //! + TBranch *b_L1_TOTEM_2; //! + TBranch *b_L1_TripleMu0_SQ; //! + TBranch *b_L1_BptxMinus; //! + TBranch *b_L1_SingleJet43er2p5_NotBptxOR_3BX; //! + TBranch *b_L1_DoubleJet_80_30_Mass_Min420_Mu8; //! + TBranch *b_L1_TOTEM_3; //! + TBranch *b_L1_LooseIsoEG24er2p1_IsoTau27er2p1_dR_Min0p3; //! + TBranch *b_L1_DoubleEG8er2p5_HTT340er; //! + TBranch *b_L1_SingleMu10er1p5; //! + TBranch *b_L1_SingleEG38er2p5; //! + TBranch *b_L1_HTT255er; //! + TBranch *b_L1_HTT160er; //! + TBranch *b_L1_SingleMuOpen; //! + TBranch *b_L1_LooseIsoEG26er2p1_HTT100er; //! + TBranch *b_L1_Mu6_DoubleEG15er2p5; //! + TBranch *b_L1_DoubleMu10_SQ; //! + TBranch *b_L1_LooseIsoEG30er2p1_HTT100er; //! + TBranch *b_L1_SingleMuOpen_er1p1_NotBptxOR_3BX; //! + TBranch *b_L1_DoubleEG_25_12_er2p5; //! + TBranch *b_L1_TripleEG_16_12_8_er2p5; //! + TBranch *b_L1_SingleJet120; //! + TBranch *b_L1_TripleMu0_OQ; //! + TBranch *b_L1_BPTX_AND_Ref1_VME; //! + TBranch *b_L1_DoubleJet_90_30_DoubleJet30_Mass_Min620; //! + TBranch *b_L1_HCAL_LaserMon_Trig; //! + TBranch *b_L1_BPTX_BeamGas_Ref1_VME; //! + TBranch *b_L1_Mu22er2p1_Tau70er2p1; //! + TBranch *b_L1_HTT320er_QuadJet_80_60_er2p1_50_45_er2p3; //! + TBranch *b_L1_SingleMu0_BMTF; //! + TBranch *b_L1_BPTX_RefAND_VME; //! + TBranch *b_L1_DoubleMu0_SQ_OS; //! + TBranch *b_L1_ETMHF110_HTT60er_NotSecondBunchInTrain; //! + TBranch *b_L1_UnprefireableEvent; //! + TBranch *b_L1_LooseIsoEG22er2p1_IsoTau26er2p1_dR_Min0p3; //! + TBranch *b_L1_ETMHF100; //! + TBranch *b_L1_SingleIsoEG26er2p1; //! + TBranch *b_L1_ETMHF130; //! + TBranch *b_L1_DoubleEG_15_10_er2p5; //! + TBranch *b_L1_DoubleMu_12_5; //! + TBranch *b_L1_TripleMu_5_3_3_SQ; //! + TBranch *b_L1_DoubleMu3_SQ_ETMHF50_Jet60er2p5; //! + TBranch *b_L1_HCAL_LaserMon_Veto; //! + TBranch *b_L1_DoubleJet_120_45_DoubleJet45_Mass_Min620_Jet60TT28; //! + TBranch *b_L1_SingleMu0_OMTF; //! + TBranch *b_L1_DoubleMu3_dR_Max1p6_Jet90er2p5_dR_Max0p8; //! + TBranch *b_L1_ETT2000; //! + TBranch *b_L1_DoubleJet_115_40_DoubleJet40_Mass_Min620; //! + TBranch *b_L1_SingleJet140er2p5; //! + TBranch *b_L1_HTT120er; //! + TBranch *b_L1_MinimumBiasHF0_AND_BptxAND; //! + TBranch *b_L1_SingleEG34er2p5; //! + TBranch *b_L1_AlwaysTrue; //! + TBranch *b_L1_SingleTau120er2p1; //! + TBranch *b_L1_DoubleEG_20_10_er2p5; //! + TBranch *b_L1_DoubleJet_115_40_DoubleJet40_Mass_Min620_Jet60TT28; //! + TBranch *b_L1_ETM150; //! + TBranch *b_L1_TripleEG16er2p5; //! + TBranch *b_L1_Mu22er2p1_IsoTau34er2p1; //! + TBranch *b_L1_DoubleMu_15_5_SQ; //! + TBranch *b_L1_SingleIsoEG30er2p5; //! + TBranch *b_L1_SingleJet120_FWD3p0; //! + TBranch *b_L1_DoubleMu_15_7; //! + TBranch *b_L1_UnpairedBunchBptxMinus; //! + TBranch *b_L1_SingleLooseIsoEG28er1p5; //! + TBranch *b_L1_HTT450er; //! + TBranch *b_L1_SingleMuCosmics; //! + TBranch *b_L1_SingleEG50; //! + TBranch *b_L1_FirstCollisionInOrbit; //! + TBranch *b_L1_FirstBunchBeforeTrain; //! + TBranch *b_L1_SingleMu7er1p5; //! + TBranch *b_L1_TripleMu_5_5_3; //! + TBranch *b_L1_TripleJet_100_80_70_DoubleJet_80_70_er2p5; //! + TBranch *b_L1_HTT400er; //! + TBranch *b_L1_DoubleJet35_Mass_Min450_IsoTau45_RmOvlp; //! + TBranch *b_L1_IsoTau40er2p1_ETMHF90; //! + TBranch *b_L1_Mu3_Jet30er2p5; //! + TBranch *b_L1_SingleJet160er2p5; //! + TBranch *b_L1_DoubleJet100er2p3_dEta_Max1p6; //! + TBranch *b_L1_SingleMu22_BMTF; //! + TBranch *b_L1_IsoEG32er2p5_Mt40; //! + TBranch *b_L1_DoubleTau70er2p1; //! + TBranch *b_L1_DoubleMu4p5er2p0_SQ_OS_Mass7to18; //! + TBranch *b_L1_Mu3_Jet35er2p5_dR_Max0p4; //! + TBranch *b_L1_Mu7_EG23er2p5; //! + TBranch *b_L1_DoubleEG_LooseIso22_10_er2p5; //! + TBranch *b_L1_ETMHF90_HTT60er; //! + TBranch *b_L1_Mu5_LooseIsoEG20er2p5; //! + TBranch *b_L1_SingleMu8er1p5; //! + TBranch *b_L1_Mu6_DoubleEG17er2p5; //! + TBranch *b_L1_DoubleMu3_SQ_HTT240er; //! + TBranch *b_L1_DoubleMu3_SQ_ETMHF50_Jet60er2p5_OR_DoubleJet40er2p5; //! + TBranch *b_L1_SingleEG60; //! + TBranch *b_L1_LooseIsoEG22er2p1_Tau70er2p1_dR_Min0p3; //! + TBranch *b_L1_SingleIsoEG30er2p1; //! + TBranch *b_L1_Mu3_Jet16er2p5_dR_Max0p4; //! + TBranch *b_L1_SingleMu6er1p5; //! + TBranch *b_L1_LooseIsoEG24er2p1_HTT100er; //! + TBranch *b_L1_TOTEM_4; //! + TBranch *b_L1_QuadMu0; //! + TBranch *b_L1_DoubleJet30er2p5_Mass_Min300_dEta_Max1p5; //! + TBranch *b_L1_SingleMu14er1p5; //! + TBranch *b_L1_Mu18er2p1_Tau26er2p1; //! + TBranch *b_L1_SingleTau130er2p1; //! + TBranch *b_L1_BptxPlus; //! + TBranch *b_L1_TripleEG_18_18_12_er2p5; //! + TBranch *b_L1_TripleMu0; //! + TBranch *b_L1_DoubleIsoTau34er2p1; //! + TBranch *b_L1_TripleEG_18_17_8_er2p5; //! + TBranch *b_L1_SingleIsoEG32er2p5; //! + TBranch *b_L1_SingleJet60er2p5; //! + TBranch *b_L1_DoubleMu4_SQ_EG9er2p5; //! + TBranch *b_L1_IsoTau40er2p1_ETMHF120; //! + TBranch *b_L1_SingleIsoEG24er1p5; //! + TBranch *b_L1_IsolatedBunch; //! + TBranch *b_L1_DoubleJet30er2p5_Mass_Min330_dEta_Max1p5; //! + TBranch *b_L1_BPTX_OR_Ref3_VME; //! + TBranch *b_L1_TripleMu3_SQ; //! + TBranch *b_L1_Mu3_Jet120er2p5_dR_Max0p4; //! + TBranch *b_L1_SingleEG26er2p5; //! + TBranch *b_L1_Mu22er2p1_IsoTau36er2p1; //! + TBranch *b_L1_SingleJet20er2p5_NotBptxOR_3BX; //! + TBranch *b_L1_SingleMu12er1p5; //! + TBranch *b_L1_Mu12er2p3_Jet40er2p1_dR_Max0p4_DoubleJet40er2p1_dEta_Max1p6; //! + TBranch *b_L1_SingleMu9er1p5; //! + TBranch *b_L1_DoubleJet30er2p5_Mass_Min360_dEta_Max1p5; //! + TBranch *b_L1_DoubleJet_80_30_Mass_Min420_IsoTau40_RmOvlp; //! + TBranch *b_L1_DoubleMu9_SQ; //! + TBranch *b_L1_SingleIsoEG32er2p1; //! + TBranch *b_L1_SingleJet12erHE; //! + TBranch *b_L1_SingleLooseIsoEG30er1p5; //! + TBranch *b_L1_SingleJet200; //! + TBranch *b_L1_BPTX_AND_Ref3_VME; //! + TBranch *b_L1_DoubleEG_27_14_er2p5; //! + TBranch *b_L1_DoubleJet_80_30_Mass_Min420_DoubleMu0_SQ; //! + TBranch *b_L1_SingleJet10erHE; //! + TBranch *b_L1_SingleMuCosmics_EMTF; //! + TBranch *b_L1_SingleEG15er2p5; //! + TBranch *b_L1_SingleIsoEG26er2p5; //! + TBranch *b_L1_DoubleMu0er2p0_SQ_OS_dR_Max1p4; //! + TBranch *b_L1_SingleJet46er2p5_NotBptxOR_3BX; //! + TBranch *b_L1_IsoTau40er2p1_ETMHF100; //! + TBranch *b_L1_SingleEG45er2p5; //! + TBranch *b_L1_SingleMu5; //! + TBranch *b_L1_Mu3er1p5_Jet100er2p5_ETMHF40; //! + TBranch *b_L1_Mu6_HTT250er; //! + TBranch *b_L1_TOTEM_1; //! + TBranch *b_L1_TripleMu_5_3_3; //! + TBranch *b_L1_TripleMu_5_3p5_2p5_OQ_DoubleMu_5_2p5_OQ_OS_Mass_5to17; //! + TBranch *b_L1_TripleMu_5_3p5_2p5; //! + TBranch *b_L1_Mu6_HTT240er; //! + TBranch *b_L1_LooseIsoEG26er2p1_Jet34er2p5_dR_Min0p3; //! + TBranch *b_L1_LooseIsoEG30er2p1_Jet34er2p5_dR_Min0p3; //! + TBranch *b_L1_SingleJet35_FWD3p0; //! + TBranch *b_L1_SingleJet20er2p5_NotBptxOR; //! + TBranch *b_L1_DoubleMu0_Mass_Min1; //! + TBranch *b_L1_ZeroBias; //! + TBranch *b_L1_SingleMu12_DQ_BMTF; //! + TBranch *b_L1_DoubleJet_120_45_DoubleJet45_Mass_Min620; //! + TBranch *b_L1_TripleJet_95_75_65_DoubleJet_75_65_er2p5; //! + TBranch *b_L1_Mu6_DoubleEG10er2p5; //! + TBranch *b_L1_LooseIsoEG28er2p1_Jet34er2p5_dR_Min0p3; //! + TBranch *b_L1_SingleMu12_DQ_OMTF; //! + TBranch *b_L1_SingleEG42er2p5; //! + TBranch *b_L1_SingleMu22; //! + TBranch *b_L1_SingleMu15_DQ; //! + TBranch *b_L1_TripleMu_5SQ_3SQ_0OQ_DoubleMu_5_3_SQ_OS_Mass_Max9; //! + TBranch *b_L1_DoubleJet30er2p5_Mass_Min200_dEta_Max1p5; //! + TBranch *b_L1_ETMHF130_HTT60er; //! + TBranch *b_L1_QuadMu0_SQ; //! + TBranch *b_L1_SingleEG8er2p5; //! + TBranch *b_L1_SingleMuOpen_NotBptxOR; //! + TBranch *b_L1_DoubleMu3_OS_DoubleEG7p5Upsilon; //! + TBranch *b_L1_SingleJet60_FWD3p0; //! + TBranch *b_L1_ETMHF150; //! + TBranch *b_L1_DoubleMu_15_7_Mass_Min1; //! + TBranch *b_L1_DoubleMu4_SQ_OS_dR_Max1p2; //! + TBranch *b_L1_BPTX_BeamGas_B1_VME; //! + TBranch *b_L1_SingleJet35; //! + TBranch *b_L1_TripleMu_5_3p5_2p5_DoubleMu_5_2p5_OS_Mass_5to17; //! + TBranch *b_L1_Mu7_LooseIsoEG23er2p5; //! + TBranch *b_L1_Mu6_DoubleEG12er2p5; //! + TBranch *b_L1_DoubleJet100er2p5; //! + TBranch *b_L1_IsoTau40er2p1_ETMHF110; //! + TBranch *b_L1_DoubleMu3_SQ_ETMHF60_Jet60er2p5; //! + TBranch *b_L1_Mu3_Jet80er2p5_dR_Max0p4; //! + TBranch *b_L1_DoubleMu0_dR_Max1p6_Jet90er2p5_dR_Max0p8; //! + TBranch *b_L1_SingleJet180; //! + TBranch *b_L1_SingleMu25; //! + TBranch *b_L1_SingleJet180er2p5; //! + TBranch *b_L1_DoubleMu0_OQ; //! + TBranch *b_L1_DoubleMu4p5_SQ_OS; //! + TBranch *b_L1_SingleMu3; //! + TBranch *b_L1_ETT1200; //! + TBranch *b_L1_Mu20_EG10er2p5; //! + TBranch *b_L1_SingleMu0_DQ; //! + TBranch *b_L1_DoubleMu0_SQ; //! + TBranch *b_L1_SecondLastBunchInTrain; //! + TBranch *b_L1_ETM120; //! + TBranch *b_L1_DoubleJet120er2p5; //! + TBranch *b_L1_DoubleMu0er1p5_SQ_dR_Max1p4; //! + TBranch *b_L1_UnpairedBunchBptxPlus; //! + TBranch *b_L1_DoubleMu5Upsilon_OS_DoubleEG3; //! + TBranch *b_L1_NotBptxOR; //! + TBranch *b_L1_SingleIsoEG26er1p5; //! + TBranch *b_nTau; //! + TBranch *b_Tau_charge; //! + TBranch *b_Tau_rawIsodR03; //! + TBranch *b_Tau_leadTkDeltaPhi; //! + TBranch *b_Tau_leadTkPtOverTauPt; //! + TBranch *b_Tau_phi; //! + TBranch *b_Tau_idDeepTau2017v2p1VSe; //! + TBranch *b_Tau_idDeepTau2017v2p1VSjet; //! + TBranch *b_Tau_eta; //! + TBranch *b_Tau_dxy; //! + TBranch *b_Tau_photonsOutsideSignalCone; //! + TBranch *b_Tau_genPartFlav; //! + TBranch *b_Tau_genPartIdx; //! + TBranch *b_Tau_dz; //! + TBranch *b_Tau_rawDeepTau2017v2p1VSjet; //! + TBranch *b_Tau_mass; //! + TBranch *b_Tau_idAntiEleDeadECal; //! + TBranch *b_Tau_rawDeepTau2017v2p1VSmu; //! + TBranch *b_Tau_cleanmask; //! + TBranch *b_Tau_pt; //! + TBranch *b_Tau_neutralIso; //! + TBranch *b_Tau_jetIdx; //! + TBranch *b_Tau_idDecayModeOldDMs; //! + TBranch *b_Tau_chargedIso; //! + TBranch *b_Tau_idDeepTau2017v2p1VSmu; //! + TBranch *b_Tau_decayMode; //! + TBranch *b_Tau_puCorr; //! + TBranch *b_Tau_leadTkDeltaEta; //! + TBranch *b_Tau_rawIso; //! + TBranch *b_Tau_idAntiMu; //! + TBranch *b_Tau_rawDeepTau2017v2p1VSe; //! + TBranch *b_nIsoTrack; //! + TBranch *b_IsoTrack_pdgId; //! + TBranch *b_IsoTrack_eta; //! + TBranch *b_IsoTrack_pfRelIso03_all; //! + TBranch *b_IsoTrack_charge; //! + TBranch *b_IsoTrack_isFromLostTrack; //! + TBranch *b_IsoTrack_fromPV; //! + TBranch *b_IsoTrack_isHighPurityTrack; //! + TBranch *b_IsoTrack_pt; //! + TBranch *b_IsoTrack_phi; //! + TBranch *b_IsoTrack_pfRelIso03_chg; //! + TBranch *b_IsoTrack_isPFcand; //! + TBranch *b_IsoTrack_dz; //! + TBranch *b_IsoTrack_miniPFRelIso_chg; //! + TBranch *b_IsoTrack_miniPFRelIso_all; //! + TBranch *b_IsoTrack_dxy; //! + TBranch *b_nGenPart; //! + TBranch *b_GenPart_MotherStatus; //! + TBranch *b_GenPart_phi; //! + TBranch *b_GenPart_pdgId; //! + TBranch *b_GenPart_pt; //! + TBranch *b_GenPart_isTauDecayProduct; //! + TBranch *b_GenPart_MotherPID; //! + TBranch *b_GenPart_isDirectPromptTauDecayProduct; //! + TBranch *b_GenPart_genPartIdxMother; //! + TBranch *b_GenPart_mass; //! + TBranch *b_GenPart_fromHardProcess; //! + TBranch *b_GenPart_isPrompt; //! + TBranch *b_GenPart_status; //! + TBranch *b_GenPart_isDirectHadronDecayProduct; //! + TBranch *b_GenPart_eta; //! + TBranch *b_GenPart_statusFlags; //! + TBranch *b_nLHEPart; //! + TBranch *b_LHEPart_incomingpz; //! + TBranch *b_LHEPart_pt; //! + TBranch *b_LHEPart_phi; //! + TBranch *b_LHEPart_mass; //! + TBranch *b_LHEPart_status; //! + TBranch *b_LHEPart_spin; //! + TBranch *b_LHEPart_pdgId; //! + TBranch *b_LHEPart_eta; //! + TBranch *b_nTrigObj; //! + TBranch *b_TrigObj_l1iso; //! + TBranch *b_TrigObj_l1pt; //! + TBranch *b_TrigObj_l1pt_2; //! + TBranch *b_TrigObj_phi; //! + TBranch *b_TrigObj_l1charge; //! + TBranch *b_TrigObj_eta; //! + TBranch *b_TrigObj_id; //! + TBranch *b_TrigObj_l2pt; //! + TBranch *b_TrigObj_filterBits; //! + TBranch *b_TrigObj_pt; //! + TBranch *b_nNeutrinoGen; //! + TBranch *b_NeutrinoGen_status; //! + TBranch *b_NeutrinoGen_MotherStatus; //! + TBranch *b_NeutrinoGen_phi; //! + TBranch *b_NeutrinoGen_eta; //! + TBranch *b_NeutrinoGen_isTauDecayProduct; //! + TBranch *b_NeutrinoGen_fromHardProcess; //! + TBranch *b_NeutrinoGen_isDirectHadronDecayProduct; //! + TBranch *b_NeutrinoGen_isPrompt; //! + TBranch *b_NeutrinoGen_mass; //! + TBranch *b_NeutrinoGen_isDirectPromptTauDecayProduct; //! + TBranch *b_NeutrinoGen_pdgId; //! + TBranch *b_NeutrinoGen_MotherPID; //! + TBranch *b_NeutrinoGen_pt; //! + TBranch *b_nSubJet; //! + TBranch *b_SubJet_btagCSVV2; //! + TBranch *b_SubJet_mass; //! + TBranch *b_SubJet_nCHadrons; //! + TBranch *b_SubJet_tau1; //! + TBranch *b_SubJet_hadronFlavour; //! + TBranch *b_SubJet_n2b1; //! + TBranch *b_SubJet_phi; //! + TBranch *b_SubJet_tau4; //! + TBranch *b_SubJet_pt; //! + TBranch *b_SubJet_tau2; //! + TBranch *b_SubJet_btagDeepB; //! + TBranch *b_SubJet_nBHadrons; //! + TBranch *b_SubJet_tau3; //! + TBranch *b_SubJet_eta; //! + TBranch *b_SubJet_n3b1; //! + TBranch *b_SubJet_rawFactor; //! + TBranch *b_ChsMET_pt; //! + TBranch *b_ChsMET_phi; //! + TBranch *b_ChsMET_sumEt; //! + TBranch *b_nLeptonGen; //! + TBranch *b_LeptonGen_status; //! + TBranch *b_LeptonGen_pt; //! + TBranch *b_LeptonGen_isDirectPromptTauDecayProduct; //! + TBranch *b_LeptonGen_fromHardProcess; //! + TBranch *b_LeptonGen_phi; //! + TBranch *b_LeptonGen_MotherStatus; //! + TBranch *b_LeptonGen_isTauDecayProduct; //! + TBranch *b_LeptonGen_eta; //! + TBranch *b_LeptonGen_isPrompt; //! + TBranch *b_LeptonGen_pdgId; //! + TBranch *b_LeptonGen_isDirectHadronDecayProduct; //! + TBranch *b_LeptonGen_mass; //! + TBranch *b_LeptonGen_MotherPID; //! + TBranch *b_nFatJet; //! + TBranch *b_FatJet_hadronFlavour; //! + TBranch *b_FatJet_deepTagMD_HbbvsQCD; //! + TBranch *b_FatJet_deepTagMD_ZHccvsQCD; //! + TBranch *b_FatJet_tau3; //! + TBranch *b_FatJet_subJetIdx1; //! + TBranch *b_FatJet_deepTagMD_ZvsQCD; //! + TBranch *b_FatJet_btagCSVV2; //! + TBranch *b_FatJet_btagHbb; //! + TBranch *b_FatJet_deepTag_QCD; //! + TBranch *b_FatJet_tau4; //! + TBranch *b_FatJet_msoftdrop; //! + TBranch *b_FatJet_particleNet_mass; //! + TBranch *b_FatJet_subJetIdx2; //! + TBranch *b_FatJet_genJetAK8Idx; //! + TBranch *b_FatJet_particleNetMD_Xbb; //! + TBranch *b_FatJet_btagDDCvLV2; //! + TBranch *b_FatJet_deepTagMD_WvsQCD; //! + TBranch *b_FatJet_pt; //! + TBranch *b_FatJet_n2b1; //! + TBranch *b_FatJet_deepTagMD_bbvsLight; //! + TBranch *b_FatJet_deepTagMD_TvsQCD; //! + TBranch *b_FatJet_particleNet_QCD; //! + TBranch *b_FatJet_particleNet_HccvsQCD; //! + TBranch *b_FatJet_btagDDCvBV2; //! + TBranch *b_FatJet_area; //! + TBranch *b_FatJet_btagDDBvLV2; //! + TBranch *b_FatJet_eta; //! + TBranch *b_FatJet_particleNet_ZvsQCD; //! + TBranch *b_FatJet_particleNetMD_QCD; //! + TBranch *b_FatJet_nCHadrons; //! + TBranch *b_FatJet_deepTag_WvsQCD; //! + TBranch *b_FatJet_deepTag_ZvsQCD; //! + TBranch *b_FatJet_deepTagMD_H4qvsQCD; //! + TBranch *b_FatJet_particleNet_TvsQCD; //! + TBranch *b_FatJet_deepTag_TvsQCD; //! + TBranch *b_FatJet_particleNet_HbbvsQCD; //! + TBranch *b_FatJet_lsf3; //! + TBranch *b_FatJet_tau1; //! + TBranch *b_FatJet_deepTagMD_ZHbbvsQCD; //! + TBranch *b_FatJet_particleNet_H4qvsQCD; //! + TBranch *b_FatJet_particleNet_WvsQCD; //! + TBranch *b_FatJet_deepTagMD_ZbbvsQCD; //! + TBranch *b_FatJet_deepTag_QCDothers; //! + TBranch *b_FatJet_deepTagMD_ccvsLight; //! + TBranch *b_FatJet_phi; //! + TBranch *b_FatJet_muonIdx3SJ; //! + TBranch *b_FatJet_jetId; //! + TBranch *b_FatJet_nBHadrons; //! + TBranch *b_FatJet_particleNetMD_Xcc; //! + TBranch *b_FatJet_deepTag_H; //! + TBranch *b_FatJet_rawFactor; //! + TBranch *b_FatJet_btagDeepB; //! + TBranch *b_FatJet_electronIdx3SJ; //! + TBranch *b_FatJet_mass; //! + TBranch *b_FatJet_nConstituents; //! + TBranch *b_FatJet_particleNetMD_Xqq; //! + TBranch *b_FatJet_n3b1; //! + TBranch *b_FatJet_tau2; //! + TBranch *b_nPhotonGen; //! + TBranch *b_PhotonGen_fromHardProcess; //! + TBranch *b_PhotonGen_isTauDecayProduct; //! + TBranch *b_PhotonGen_MotherStatus; //! + TBranch *b_PhotonGen_eta; //! + TBranch *b_PhotonGen_phi; //! + TBranch *b_PhotonGen_isDirectHadronDecayProduct; //! + TBranch *b_PhotonGen_isDirectPromptTauDecayProduct; //! + TBranch *b_PhotonGen_pt; //! + TBranch *b_PhotonGen_pdgId; //! + TBranch *b_PhotonGen_isPrompt; //! + TBranch *b_PhotonGen_mass; //! + TBranch *b_PhotonGen_MotherPID; //! + TBranch *b_PhotonGen_status; //! + TBranch *b_nDressedLepton; //! + TBranch *b_DressedLepton_phi; //! + TBranch *b_DressedLepton_eta; //! + TBranch *b_DressedLepton_pt; //! + TBranch *b_DressedLepton_mass; //! + TBranch *b_DressedLepton_pdgId; //! + TBranch *b_nGenDressedLepton; //! + TBranch *b_GenDressedLepton_phi; //! + TBranch *b_GenDressedLepton_hasTauAnc; //! + TBranch *b_GenDressedLepton_mass; //! + TBranch *b_GenDressedLepton_eta; //! + TBranch *b_GenDressedLepton_pdgId; //! + TBranch *b_GenDressedLepton_pt; //! + TBranch *b_nSubGenJetAK8; //! + TBranch *b_SubGenJetAK8_mass; //! + TBranch *b_SubGenJetAK8_pt; //! + TBranch *b_SubGenJetAK8_eta; //! + TBranch *b_SubGenJetAK8_phi; //! + TBranch *b_nLowPtElectron; //! + TBranch *b_LowPtElectron_convWP; //! + TBranch *b_LowPtElectron_dxy; //! + TBranch *b_LowPtElectron_phi; //! + TBranch *b_LowPtElectron_ID; //! + TBranch *b_LowPtElectron_miniPFRelIso_chg; //! + TBranch *b_LowPtElectron_convVeto; //! + TBranch *b_LowPtElectron_eInvMinusPInv; //! + TBranch *b_LowPtElectron_miniPFRelIso_all; //! + TBranch *b_LowPtElectron_dxyErr; //! + TBranch *b_LowPtElectron_hoe; //! + TBranch *b_LowPtElectron_scEtOverPt; //! + TBranch *b_LowPtElectron_pt; //! + TBranch *b_LowPtElectron_r9; //! + TBranch *b_LowPtElectron_genPartFlav; //! + TBranch *b_LowPtElectron_genPartIdx; //! + TBranch *b_LowPtElectron_charge; //! + TBranch *b_LowPtElectron_convVtxRadius; //! + TBranch *b_LowPtElectron_energyErr; //! + TBranch *b_LowPtElectron_pdgId; //! + TBranch *b_LowPtElectron_mass; //! + TBranch *b_LowPtElectron_lostHits; //! + TBranch *b_LowPtElectron_sieie; //! + TBranch *b_LowPtElectron_ptbiased; //! + TBranch *b_LowPtElectron_dz; //! + TBranch *b_LowPtElectron_dzErr; //! + TBranch *b_LowPtElectron_unbiased; //! + TBranch *b_LowPtElectron_eta; //! + TBranch *b_LowPtElectron_deltaEtaSC; //! + TBranch *b_LowPtElectron_embeddedID; //! + TBranch *b_nVetoLepton; //! + TBranch *b_VetoLepton_pt; //! + TBranch *b_VetoLepton_eta; //! + TBranch *b_VetoLepton_pdgId; //! + TBranch *b_VetoLepton_muonIdx; //! + TBranch *b_VetoLepton_phi; //! + TBranch *b_VetoLepton_electronIdx; //! + TBranch *b_LHEWeight_originalXWGTUP; //! + TBranch *b_nGenIsolatedPhoton; //! + TBranch *b_GenIsolatedPhoton_mass; //! + TBranch *b_GenIsolatedPhoton_eta; //! + TBranch *b_GenIsolatedPhoton_pt; //! + TBranch *b_GenIsolatedPhoton_phi; //! + TBranch *b_RawMET_pt; //! + TBranch *b_RawMET_phi; //! + TBranch *b_RawMET_sumEt; //! + TBranch *b_TkMET_pt; //! + TBranch *b_TkMET_sumEt; //! + TBranch *b_TkMET_phi; //! + TBranch *b_nboostedTau; //! + TBranch *b_boostedTau_rawIso; //! + TBranch *b_boostedTau_leadTkDeltaPhi; //! + TBranch *b_boostedTau_decayMode; //! + TBranch *b_boostedTau_rawAntiEle2018; //! + TBranch *b_boostedTau_photonsOutsideSignalCone; //! + TBranch *b_boostedTau_pt; //! + TBranch *b_boostedTau_leadTkDeltaEta; //! + TBranch *b_boostedTau_genPartFlav; //! + TBranch *b_boostedTau_rawMVAoldDM2017v2; //! + TBranch *b_boostedTau_jetIdx; //! + TBranch *b_boostedTau_rawMVAoldDMdR032017v2; //! + TBranch *b_boostedTau_rawMVAnewDM2017v2; //! + TBranch *b_boostedTau_neutralIso; //! + TBranch *b_boostedTau_puCorr; //! + TBranch *b_boostedTau_idMVAoldDM2017v2; //! + TBranch *b_boostedTau_leadTkPtOverTauPt; //! + TBranch *b_boostedTau_chargedIso; //! + TBranch *b_boostedTau_rawIsodR03; //! + TBranch *b_boostedTau_eta; //! + TBranch *b_boostedTau_idMVAnewDM2017v2; //! + TBranch *b_boostedTau_rawAntiEleCat2018; //! + TBranch *b_boostedTau_idAntiEle2018; //! + TBranch *b_boostedTau_idAntiMu; //! + TBranch *b_boostedTau_charge; //! + TBranch *b_boostedTau_idMVAoldDMdR032017v2; //! + TBranch *b_boostedTau_mass; //! + TBranch *b_boostedTau_phi; //! + TBranch *b_boostedTau_genPartIdx; //! + TBranch *b_nGenJet; //! + TBranch *b_GenJet_hadronFlavour; //! + TBranch *b_GenJet_mass; //! + TBranch *b_GenJet_partonFlavour; //! + TBranch *b_GenJet_eta; //! + TBranch *b_GenJet_pt; //! + TBranch *b_GenJet_phi; //! + TBranch *b_TriggerEffWeight_2l_u; //! + TBranch *b_TriggerEffWeight_sngMu; //! + TBranch *b_TriggerEffWeight_dblEl; //! + TBranch *b_TriggerEffWeight_4l; //! + TBranch *b_TriggerEffWeight_3l; //! + TBranch *b_TriggerEffWeight_dblMu; //! + TBranch *b_TriggerEffWeight_3l_u; //! + TBranch *b_TriggerEffWeight_1l_d; //! + TBranch *b_TriggerEffWeight_sngEl; //! + TBranch *b_TriggerEffWeight_2l_d; //! + TBranch *b_TriggerEffWeight_4l_d; //! + TBranch *b_TriggerEffWeight_3l_d; //! + TBranch *b_TriggerEffWeight_ElMu; //! + TBranch *b_TriggerEffWeight_1l_u; //! + TBranch *b_TriggerEffWeight_4l_u; //! + TBranch *b_TriggerEffWeight_1l; //! + TBranch *b_TriggerEffWeight_2l; //! + TBranch *b_TriggerSFWeight_ElMu; //! + TBranch *b_TriggerSFWeight_dblEl_d; //! + TBranch *b_TriggerSFWeight_3l; //! + TBranch *b_TriggerSFWeight_sngMu_u; //! + TBranch *b_TriggerSFWeight_dblMu; //! + TBranch *b_TriggerSFWeight_2l_u; //! + TBranch *b_TriggerSFWeight_ElMu_u; //! + TBranch *b_TriggerSFWeight_dblEl_u; //! + TBranch *b_TriggerSFWeight_sngMu_d; //! + TBranch *b_TriggerSFWeight_dblMu_u; //! + TBranch *b_TriggerSFWeight_sngEl_u; //! + TBranch *b_TriggerSFWeight_4l_u; //! + TBranch *b_TriggerSFWeight_ElMu_d; //! + TBranch *b_TriggerSFWeight_sngMu; //! + TBranch *b_TriggerSFWeight_1l_d; //! + TBranch *b_TriggerSFWeight_1l; //! + TBranch *b_TriggerSFWeight_2l; //! + TBranch *b_TriggerSFWeight_1l_u; //! + TBranch *b_TriggerSFWeight_sngEl; //! + TBranch *b_TriggerSFWeight_dblMu_d; //! + TBranch *b_TriggerSFWeight_sngEl_d; //! + TBranch *b_TriggerSFWeight_4l_d; //! + TBranch *b_TriggerSFWeight_dblEl; //! + TBranch *b_TriggerSFWeight_3l_u; //! + TBranch *b_TriggerSFWeight_4l; //! + TBranch *b_TriggerSFWeight_3l_d; //! + TBranch *b_TriggerSFWeight_2l_d; //! + TBranch *b_nGenJetAK8; //! + TBranch *b_GenJetAK8_phi; //! + TBranch *b_GenJetAK8_eta; //! + TBranch *b_GenJetAK8_mass; //! + TBranch *b_GenJetAK8_pt; //! + TBranch *b_GenJetAK8_hadronFlavour; //! + TBranch *b_GenJetAK8_partonFlavour; //! + TBranch *b_Flag_trkPOG_toomanystripclus53X; //! + TBranch *b_Flag_CSCTightHaloTrkMuUnvetoFilter; //! + TBranch *b_Flag_HBHENoiseFilter; //! + TBranch *b_Flag_EcalDeadCellBoundaryEnergyFilter; //! + TBranch *b_Flag_HBHENoiseIsoFilter; //! + TBranch *b_Flag_globalTightHalo2016Filter; //! + TBranch *b_Flag_trkPOG_logErrorTooManyClusters; //! + TBranch *b_Flag_BadPFMuonDzFilter; //! + TBranch *b_Flag_EcalDeadCellTriggerPrimitiveFilter; //! + TBranch *b_Flag_trkPOG_manystripclus53X; //! + TBranch *b_Flag_BadChargedCandidateFilter; //! + TBranch *b_Flag_hcalLaserEventFilter; //! + TBranch *b_Flag_hfNoisyHitsFilter; //! + TBranch *b_Flag_BadChargedCandidateSummer16Filter; //! + TBranch *b_Flag_chargedHadronTrackResolutionFilter; //! + TBranch *b_Flag_trkPOGFilters; //! + TBranch *b_Flag_muonBadTrackFilter; //! + TBranch *b_Flag_HcalStripHaloFilter; //! + TBranch *b_Flag_CSCTightHaloFilter; //! + TBranch *b_Flag_BadPFMuonFilter; //! + TBranch *b_Flag_eeBadScFilter; //! + TBranch *b_Flag_globalSuperTightHalo2016Filter; //! + TBranch *b_Flag_METFilters; //! + TBranch *b_Flag_ecalBadCalibFilter; //! + TBranch *b_Flag_BadPFMuonSummer16Filter; //! + TBranch *b_Flag_ecalLaserCorrFilter; //! + TBranch *b_Flag_goodVertices; //! + TBranch *b_Flag_CSCTightHalo2015Filter; //! + TBranch *b_Pileup_sumLOOT; //! + TBranch *b_Pileup_nPU; //! + TBranch *b_Pileup_nTrueInt; //! + TBranch *b_Pileup_pudensity; //! + TBranch *b_Pileup_gpudensity; //! + TBranch *b_Pileup_sumEOOT; //! + TBranch *b_HTXS_stage_1_pTjet25; //! + TBranch *b_HTXS_stage1_1_cat_pTjet30GeV; //! + TBranch *b_HTXS_stage1_2_cat_pTjet25GeV; //! + TBranch *b_HTXS_Higgs_y; //! + TBranch *b_HTXS_stage1_1_fine_cat_pTjet25GeV; //! + TBranch *b_HTXS_stage1_2_cat_pTjet30GeV; //! + TBranch *b_HTXS_njets30; //! + TBranch *b_HTXS_stage1_2_fine_cat_pTjet30GeV; //! + TBranch *b_HTXS_stage_1_pTjet30; //! + TBranch *b_HTXS_stage_0; //! + TBranch *b_HTXS_stage1_1_cat_pTjet25GeV; //! + TBranch *b_HTXS_Higgs_pt; //! + TBranch *b_HTXS_stage1_1_fine_cat_pTjet30GeV; //! + TBranch *b_HTXS_stage1_2_fine_cat_pTjet25GeV; //! + TBranch *b_HTXS_njets25; //! + TBranch *b_GenVtx_z; //! + TBranch *b_GenVtx_x; //! + TBranch *b_GenVtx_y; //! + TBranch *b_GenVtx_t0; //! + TBranch *b_Generator_scalePDF; //! + TBranch *b_Generator_id1; //! + TBranch *b_Generator_x1; //! + TBranch *b_Generator_binvar; //! + TBranch *b_Generator_xpdf1; //! + TBranch *b_Generator_id2; //! + TBranch *b_Generator_weight; //! + TBranch *b_Generator_x2; //! + TBranch *b_Generator_xpdf2; //! + TBranch *b_Trigger_sngMu; //! + TBranch *b_Trigger_dblMu; //! + TBranch *b_Trigger_sngEl; //! + TBranch *b_Trigger_dblEl; //! + TBranch *b_Trigger_ElMu; //! + TBranch *b_nGenVisTau; //! + TBranch *b_GenVisTau_genPartIdxMother; //! + TBranch *b_GenVisTau_mass; //! + TBranch *b_GenVisTau_status; //! + TBranch *b_GenVisTau_charge; //! + TBranch *b_GenVisTau_eta; //! + TBranch *b_GenVisTau_phi; //! + TBranch *b_GenVisTau_pt; //! + TBranch *b_RawPuppiMET_sumEt; //! + TBranch *b_RawPuppiMET_pt; //! + TBranch *b_RawPuppiMET_phi; //! + TBranch *b_nSoftActivityJet; //! + TBranch *b_SoftActivityJet_pt; //! + TBranch *b_SoftActivityJet_phi; //! + TBranch *b_SoftActivityJet_eta; //! + TBranch *b_CaloMET_phi; //! + TBranch *b_CaloMET_sumEt; //! + TBranch *b_CaloMET_pt; //! + TBranch *b_nFsrPhoton; //! + TBranch *b_FsrPhoton_relIso03; //! + TBranch *b_FsrPhoton_phi; //! + TBranch *b_FsrPhoton_eta; //! + TBranch *b_FsrPhoton_muonIdx; //! + TBranch *b_FsrPhoton_dROverEt2; //! + TBranch *b_FsrPhoton_pt; //! + TBranch *b_PV_x; //! + TBranch *b_PV_y; //! + TBranch *b_PV_score; //! + TBranch *b_PV_chi2; //! + TBranch *b_PV_npvs; //! + TBranch *b_PV_z; //! + TBranch *b_PV_ndof; //! + TBranch *b_PV_npvsGood; //! + TBranch *b_nSV; //! + TBranch *b_SV_chi2; //! + TBranch *b_SV_ndof; //! + TBranch *b_SV_charge; //! + TBranch *b_SV_eta; //! + TBranch *b_SV_phi; //! + TBranch *b_SV_x; //! + TBranch *b_SV_mass; //! + TBranch *b_SV_dxy; //! + TBranch *b_SV_pt; //! + TBranch *b_SV_z; //! + TBranch *b_SV_dxySig; //! + TBranch *b_SV_dlen; //! + TBranch *b_SV_pAngle; //! + TBranch *b_SV_ntracks; //! + TBranch *b_SV_y; //! + TBranch *b_SV_dlenSig; //! + TBranch *b_GenMET_pt; //! + TBranch *b_GenMET_phi; //! + TBranch *b_gen_mll; //! + TBranch *b_gen_llchannel; //! + TBranch *b_gen_ptllmet; //! + TBranch *b_gen_mlvlv; //! + TBranch *b_gen_ptll; //! + TBranch *b_nOtherPV; //! + TBranch *b_OtherPV_z; //! + TBranch *b_topGenPt; //! + TBranch *b_mTOT_cut; //! + TBranch *b_dphilep1jj; //! + TBranch *b_btagWeight_DeepCSVB; //! + TBranch *b_WlepMt_whss; //! + TBranch *b_channel; //! + TBranch *b_detaj2l1; //! + TBranch *b_baseW; //! + TBranch *b_PSWeight; //! + TBranch *b_pTWW; //! + TBranch *b_genWeight; //! + TBranch *b_jetpt2_cut; //! + TBranch *b_dphijet1met; //! + TBranch *b_dphilep1jet2; //! + TBranch *b_L1Reco_step; //! + TBranch *b_dphijjmet_cut; //! + TBranch *b_SoftActivityJetNjets2; //! + TBranch *b_LHEScaleWeight; //! + TBranch *b_dphilljet; //! + TBranch *b_nLHEReweightingWeight; //! + TBranch *b_higgsGenEta; //! + TBranch *b_mtw2; //! + TBranch *b_SoftActivityJetHT5; //! + TBranch *b_detaj1l1; //! + TBranch *b_mtw1; //! + TBranch *b_PfMetDivSumMet; //! + TBranch *b_mlljj20_whss_no_jet2; //! + TBranch *b_dphilep2jet1; //! + TBranch *b_fixedGridRhoFastjetAll; //! + TBranch *b_dphijet1met_cut; //! + TBranch *b_LHEPdfWeight; //! + TBranch *b_SoftActivityJetHT10; //! + TBranch *b_run; //! + TBranch *b_dphilmet; //! + TBranch *b_Ceta_cut; //! + TBranch *b_SoftActivityJetNjets10; //! + TBranch *b_phi2; //! + TBranch *b_L1simulation_step; //! + TBranch *b_mcollWW; //! + TBranch *b_nLHEPdfWeight; //! + TBranch *b_run_period; //! + TBranch *b_mll; //! + TBranch *b_TriggerEmulator; //! + TBranch *b_WlepPt_whss; //! + TBranch *b_mjj; //! + TBranch *b_antitopGenEta; //! + TBranch *b_dphilljetjet_cut; //! + TBranch *b_dphilmet2; //! + TBranch *b_genVPt; //! + TBranch *b_projpfmet; //! + TBranch *b_mllTwoThree; //! + TBranch *b_HLTriggerFirstPath; //! + TBranch *b_njet; //! + TBranch *b_fixedGridRhoFastjetCentralChargedPileUp; //! + TBranch *b_event; //! + TBranch *b_L1PreFiringWeight_Muon_StatUp; //! + TBranch *b_HLTriggerFinalPath; //! + TBranch *b_higgsGenMass; //! + TBranch *b_dphilljet_cut; //! + TBranch *b_higgsGenPhi; //! + TBranch *b_eta2; //! + TBranch *b_dphijj; //! + TBranch *b_L1PreFiringWeight_Dn; //! + TBranch *b_projtkmet; //! + TBranch *b_WlepPt_whss_no_jet2; //! + TBranch *b_SoftActivityJetNjets5; //! + TBranch *b_ptjj; //! + TBranch *b_L1PreFiringWeight_Muon_Nom; //! + TBranch *b_dphill; //! + TBranch *b_dphilep1jet1; //! + TBranch *b_nPSWeight; //! + TBranch *b_fixedGridRhoFastjetCentralNeutral; //! + TBranch *b_SoftActivityJetHT2; //! + TBranch *b_mllWgSt; //! + TBranch *b_yll; //! + TBranch *b_fixedGridRhoFastjetCentral; //! + TBranch *b_L1PreFiringWeight_Nom; //! + TBranch *b_L1PreFiringWeight_Muon_SystUp; //! + TBranch *b_topGenMass; //! + TBranch *b_WlepPt_whss_jet2; //! + TBranch *b_mlljj20_whss_jet2; //! + TBranch *b_mTi; //! + TBranch *b_mllOneThree; //! + TBranch *b_mlljj20_whss; //! + TBranch *b_pt2; //! + TBranch *b_dphillmet; //! + TBranch *b_drll; //! + TBranch *b_phi1; //! + TBranch *b_dphijet2met_cut; //! + TBranch *b_eta1; //! + TBranch *b_mllThird; //! + TBranch *b_luminosityBlock; //! + TBranch *b_L1PreFiringWeight_Muon_SystDn; //! + TBranch *b_choiMass; //! + TBranch *b_drjj; //! + TBranch *b_fixedGridRhoFastjetCentralCalo; //! + TBranch *b_antitopGenPhi; //! + TBranch *b_genTtbarId; //! + TBranch *b_mR; //! + TBranch *b_m2ljj20; //! + TBranch *b_jetpt1_cut; //! + TBranch *b_dphil1tkmet; //! + TBranch *b_L1PreFiringWeight_ECAL_Nom; //! + TBranch *b_dphilep2jet2; //! + TBranch *b_ht; //! + TBranch *b_dphilep2jj; //! + TBranch *b_recoil; //! + TBranch *b_mth; //! + TBranch *b_topGenPhi; //! + TBranch *b_dphijjmet; //! + TBranch *b_detaj2l2; //! + TBranch *b_nLHEScaleWeight; //! + TBranch *b_ptll; //! + TBranch *b_OLV2_cut; //! + TBranch *b_dphilljetjet; //! + TBranch *b_dphiltkmet; //! + TBranch *b_drllOneThree; //! + TBranch *b_maxdphilepjj; //! + TBranch *b_L1PreFiringWeight_Muon_StatDn; //! + TBranch *b_drllWgSt; //! + TBranch *b_nisLoose; //! + TBranch *b_isLoose; //! + TBranch *b_btagWeight_CSVV2; //! + TBranch *b_CUT; //! + TBranch *b_pt1; //! + TBranch *b_detall; //! + TBranch *b_antitopGenMass; //! + TBranch *b_vht_pt; //! + TBranch *b_pTHjj; //! + TBranch *b_L1PreFiringWeight_Up; //! + TBranch *b_LHEReweightingWeight; //! + TBranch *b_m2ljj30; //! + TBranch *b_L1PreFiringWeight_ECAL_Up; //! + TBranch *b_higgsGenPt; //! + TBranch *b_ptTOT_cut; //! + TBranch *b_upara; //! + TBranch *b_dphilmet1; //! + TBranch *b_mlljj30_whss; //! + TBranch *b_antitopGenPt; //! + TBranch *b_detaj1l2; //! + TBranch *b_dphil2tkmet; //! + TBranch *b_SoftActivityJetHT; //! + TBranch *b_OLV1_cut; //! + TBranch *b_drllTwoThree; //! + TBranch *b_mcoll; //! + TBranch *b_topGenEta; //! + TBranch *b_uperp; //! + TBranch *b_L1PreFiringWeight_ECAL_Dn; //! + TBranch *b_mTe; //! + TBranch *b_dphijet2met; //! + TBranch *b_detajj; //! + TBranch *b_mindetajl; //! + + postproc(TTree *tree=0); + virtual ~postproc(); + virtual Int_t Cut(Long64_t entry); + virtual Int_t GetEntry(Long64_t entry); + virtual Long64_t LoadTree(Long64_t entry); + virtual void Init(TTree *tree); + virtual void Loop(); + virtual Bool_t Notify(); + virtual void Show(Long64_t entry = -1); +}; + +#endif + +#ifdef postproc_cxx +postproc::postproc(TTree *tree) : fChain(0) +{ +// if parameter tree is not specified (or zero), connect the file +// used to generate this class and read the Tree. + if (tree == 0) { + TFile *f = (TFile*)gROOT->GetListOfFiles()->FindObject("root://eoshome-a.cern.ch//eos/user/a/amassiro/HIG/ZHggPostProc/Summer20UL18_106x_nAODv9_Full2018v9/MCFull2018v9/nanoLatino_ZHgg__part0.root"); + if (!f || !f->IsOpen()) { + f = new TFile("root://eoshome-a.cern.ch//eos/user/a/amassiro/HIG/ZHggPostProc/Summer20UL18_106x_nAODv9_Full2018v9/MCFull2018v9/nanoLatino_ZHgg__part0.root"); + } + f->GetObject("Events",tree); + + } + Init(tree); +} + +postproc::~postproc() +{ + if (!fChain) return; + delete fChain->GetCurrentFile(); +} + +Int_t postproc::GetEntry(Long64_t entry) +{ +// Read contents of entry. + if (!fChain) return 0; + return fChain->GetEntry(entry); +} +Long64_t postproc::LoadTree(Long64_t entry) +{ +// Set the environment to read one entry + if (!fChain) return -5; + Long64_t centry = fChain->LoadTree(entry); + if (centry < 0) return centry; + if (fChain->GetTreeNumber() != fCurrent) { + fCurrent = fChain->GetTreeNumber(); + Notify(); + } + return centry; +} + +void postproc::Init(TTree *tree) +{ + // The Init() function is called when the selector needs to initialize + // a new tree or chain. Typically here the branch addresses and branch + // pointers of the tree will be set. + // It is normally not necessary to make changes to the generated + // code, but the routine can be extended by the user if needed. + // Init() will be called many times when running on PROOF + // (once per file to be processed). + + // Set branch addresses and branch pointers + if (!tree) return; + fChain = tree; + fCurrent = -1; + fChain->SetMakeClass(1); + + fChain->SetBranchAddress("nCleanJet", &nCleanJet, &b_nCleanJet); + fChain->SetBranchAddress("CleanJet_eta", CleanJet_eta, &b_CleanJet_eta); + fChain->SetBranchAddress("CleanJet_jetIdx", CleanJet_jetIdx, &b_CleanJet_jetIdx); + fChain->SetBranchAddress("CleanJet_mass", CleanJet_mass, &b_CleanJet_mass); + fChain->SetBranchAddress("CleanJet_phi", CleanJet_phi, &b_CleanJet_phi); + fChain->SetBranchAddress("CleanJet_pt", CleanJet_pt, &b_CleanJet_pt); + fChain->SetBranchAddress("MET_MetUnclustEnUpDeltaY", &MET_MetUnclustEnUpDeltaY, &b_MET_MetUnclustEnUpDeltaY); + fChain->SetBranchAddress("MET_pt", &MET_pt, &b_MET_pt); + fChain->SetBranchAddress("MET_MetUnclustEnUpDeltaX", &MET_MetUnclustEnUpDeltaX, &b_MET_MetUnclustEnUpDeltaX); + fChain->SetBranchAddress("MET_phi", &MET_phi, &b_MET_phi); + fChain->SetBranchAddress("MET_covXY", &MET_covXY, &b_MET_covXY); + fChain->SetBranchAddress("MET_sumEt", &MET_sumEt, &b_MET_sumEt); + fChain->SetBranchAddress("MET_covYY", &MET_covYY, &b_MET_covYY); + fChain->SetBranchAddress("MET_sumPtUnclustered", &MET_sumPtUnclustered, &b_MET_sumPtUnclustered); + fChain->SetBranchAddress("MET_fiducialGenPt", &MET_fiducialGenPt, &b_MET_fiducialGenPt); + fChain->SetBranchAddress("MET_significance", &MET_significance, &b_MET_significance); + fChain->SetBranchAddress("MET_covXX", &MET_covXX, &b_MET_covXX); + fChain->SetBranchAddress("MET_fiducialGenPhi", &MET_fiducialGenPhi, &b_MET_fiducialGenPhi); + fChain->SetBranchAddress("nJet", &nJet, &b_nJet); + fChain->SetBranchAddress("Jet_btagSF_deepjet_shape_down_jesEC2", Jet_btagSF_deepjet_shape_down_jesEC2, &b_Jet_btagSF_deepjet_shape_down_jesEC2); + fChain->SetBranchAddress("Jet_btagSF_deepjet_shape_down_lf", Jet_btagSF_deepjet_shape_down_lf, &b_Jet_btagSF_deepjet_shape_down_lf); + fChain->SetBranchAddress("Jet_btagSF_deepjet_shape_down_jesBBEC1_2018", Jet_btagSF_deepjet_shape_down_jesBBEC1_2018, &b_Jet_btagSF_deepjet_shape_down_jesBBEC1_2018); + fChain->SetBranchAddress("Jet_hfsigmaEtaEta", Jet_hfsigmaEtaEta, &b_Jet_hfsigmaEtaEta); + fChain->SetBranchAddress("Jet_btagSF_deepjet_shape_down_hf", Jet_btagSF_deepjet_shape_down_hf, &b_Jet_btagSF_deepjet_shape_down_hf); + fChain->SetBranchAddress("Jet_btagSF_deepjet_shape_up_hfstats2", Jet_btagSF_deepjet_shape_up_hfstats2, &b_Jet_btagSF_deepjet_shape_up_hfstats2); + fChain->SetBranchAddress("Jet_phi", Jet_phi, &b_Jet_phi); + fChain->SetBranchAddress("Jet_partonFlavour", Jet_partonFlavour, &b_Jet_partonFlavour); + fChain->SetBranchAddress("Jet_btagSF_deepjet_shape_up_hf", Jet_btagSF_deepjet_shape_up_hf, &b_Jet_btagSF_deepjet_shape_up_hf); + fChain->SetBranchAddress("Jet_electronIdx1", Jet_electronIdx1, &b_Jet_electronIdx1); + fChain->SetBranchAddress("Jet_nConstituents", Jet_nConstituents, &b_Jet_nConstituents); + fChain->SetBranchAddress("Jet_btagDeepB", Jet_btagDeepB, &b_Jet_btagDeepB); + fChain->SetBranchAddress("Jet_btagDeepFlavCvL", Jet_btagDeepFlavCvL, &b_Jet_btagDeepFlavCvL); + fChain->SetBranchAddress("Jet_btagSF_deepjet_shape_up_jesRelativeSample_2018", Jet_btagSF_deepjet_shape_up_jesRelativeSample_2018, &b_Jet_btagSF_deepjet_shape_up_jesRelativeSample_2018); + fChain->SetBranchAddress("Jet_btagSF_deepjet_shape_up_jesEC2", Jet_btagSF_deepjet_shape_up_jesEC2, &b_Jet_btagSF_deepjet_shape_up_jesEC2); + fChain->SetBranchAddress("Jet_btagSF_deepjet_shape_down_cferr2", Jet_btagSF_deepjet_shape_down_cferr2, &b_Jet_btagSF_deepjet_shape_down_cferr2); + fChain->SetBranchAddress("Jet_nMuons", Jet_nMuons, &b_Jet_nMuons); + fChain->SetBranchAddress("Jet_btagSF_deepjet_shape_up_jesBBEC1_2018", Jet_btagSF_deepjet_shape_up_jesBBEC1_2018, &b_Jet_btagSF_deepjet_shape_up_jesBBEC1_2018); + fChain->SetBranchAddress("Jet_btagSF_deepjet_shape_down_jesAbsolute_2018", Jet_btagSF_deepjet_shape_down_jesAbsolute_2018, &b_Jet_btagSF_deepjet_shape_down_jesAbsolute_2018); + fChain->SetBranchAddress("Jet_btagSF_deepjet_shape_up_lfstats1", Jet_btagSF_deepjet_shape_up_lfstats1, &b_Jet_btagSF_deepjet_shape_up_lfstats1); + fChain->SetBranchAddress("Jet_bRegRes", Jet_bRegRes, &b_Jet_bRegRes); + fChain->SetBranchAddress("Jet_bRegCorr", Jet_bRegCorr, &b_Jet_bRegCorr); + fChain->SetBranchAddress("Jet_btagSF_deepjet_shape_down_hfstats2", Jet_btagSF_deepjet_shape_down_hfstats2, &b_Jet_btagSF_deepjet_shape_down_hfstats2); + fChain->SetBranchAddress("Jet_muonIdx1", Jet_muonIdx1, &b_Jet_muonIdx1); + fChain->SetBranchAddress("Jet_nElectrons", Jet_nElectrons, &b_Jet_nElectrons); + fChain->SetBranchAddress("Jet_btagSF_deepjet_shape_down_jesFlavorQCD", Jet_btagSF_deepjet_shape_down_jesFlavorQCD, &b_Jet_btagSF_deepjet_shape_down_jesFlavorQCD); + fChain->SetBranchAddress("Jet_btagSF_deepjet_shape_up_jesHF_2018", Jet_btagSF_deepjet_shape_up_jesHF_2018, &b_Jet_btagSF_deepjet_shape_up_jesHF_2018); + fChain->SetBranchAddress("Jet_cRegRes", Jet_cRegRes, &b_Jet_cRegRes); + fChain->SetBranchAddress("Jet_hfcentralEtaStripSize", Jet_hfcentralEtaStripSize, &b_Jet_hfcentralEtaStripSize); + fChain->SetBranchAddress("Jet_chFPV0EF", Jet_chFPV0EF, &b_Jet_chFPV0EF); + fChain->SetBranchAddress("Jet_btagSF_deepjet_shape_up_jes", Jet_btagSF_deepjet_shape_up_jes, &b_Jet_btagSF_deepjet_shape_up_jes); + fChain->SetBranchAddress("Jet_area", Jet_area, &b_Jet_area); + fChain->SetBranchAddress("Jet_muonIdx2", Jet_muonIdx2, &b_Jet_muonIdx2); + fChain->SetBranchAddress("Jet_electronIdx2", Jet_electronIdx2, &b_Jet_electronIdx2); + fChain->SetBranchAddress("Jet_btagSF_deepjet_shape", Jet_btagSF_deepjet_shape, &b_Jet_btagSF_deepjet_shape); + fChain->SetBranchAddress("Jet_neEmEF", Jet_neEmEF, &b_Jet_neEmEF); + fChain->SetBranchAddress("Jet_btagDeepFlavCvB", Jet_btagDeepFlavCvB, &b_Jet_btagDeepFlavCvB); + fChain->SetBranchAddress("Jet_eta", Jet_eta, &b_Jet_eta); + fChain->SetBranchAddress("Jet_btagDeepCvB", Jet_btagDeepCvB, &b_Jet_btagDeepCvB); + fChain->SetBranchAddress("Jet_btagDeepFlavQG", Jet_btagDeepFlavQG, &b_Jet_btagDeepFlavQG); + fChain->SetBranchAddress("Jet_neHEF", Jet_neHEF, &b_Jet_neHEF); + fChain->SetBranchAddress("Jet_btagSF_deepjet_shape_up_lfstats2", Jet_btagSF_deepjet_shape_up_lfstats2, &b_Jet_btagSF_deepjet_shape_up_lfstats2); + fChain->SetBranchAddress("Jet_btagSF_deepjet_shape_down_jesHF_2018", Jet_btagSF_deepjet_shape_down_jesHF_2018, &b_Jet_btagSF_deepjet_shape_down_jesHF_2018); + fChain->SetBranchAddress("Jet_btagDeepCvL", Jet_btagDeepCvL, &b_Jet_btagDeepCvL); + fChain->SetBranchAddress("Jet_btagSF_deepjet_shape_up_hfstats1", Jet_btagSF_deepjet_shape_up_hfstats1, &b_Jet_btagSF_deepjet_shape_up_hfstats1); + fChain->SetBranchAddress("Jet_puIdDisc", Jet_puIdDisc, &b_Jet_puIdDisc); + fChain->SetBranchAddress("Jet_btagSF_deepjet_shape_up_jesRelativeBal", Jet_btagSF_deepjet_shape_up_jesRelativeBal, &b_Jet_btagSF_deepjet_shape_up_jesRelativeBal); + fChain->SetBranchAddress("Jet_btagSF_deepjet_shape_down_hfstats1", Jet_btagSF_deepjet_shape_down_hfstats1, &b_Jet_btagSF_deepjet_shape_down_hfstats1); + fChain->SetBranchAddress("Jet_puId", Jet_puId, &b_Jet_puId); + fChain->SetBranchAddress("Jet_btagSF_deepjet_shape_up_jesFlavorQCD", Jet_btagSF_deepjet_shape_up_jesFlavorQCD, &b_Jet_btagSF_deepjet_shape_up_jesFlavorQCD); + fChain->SetBranchAddress("Jet_btagSF_deepjet_shape_up_jesBBEC1", Jet_btagSF_deepjet_shape_up_jesBBEC1, &b_Jet_btagSF_deepjet_shape_up_jesBBEC1); + fChain->SetBranchAddress("Jet_btagSF_deepjet_shape_up_jesAbsolute_2018", Jet_btagSF_deepjet_shape_up_jesAbsolute_2018, &b_Jet_btagSF_deepjet_shape_up_jesAbsolute_2018); + fChain->SetBranchAddress("Jet_cRegCorr", Jet_cRegCorr, &b_Jet_cRegCorr); + fChain->SetBranchAddress("Jet_btagSF_deepjet_shape_down_jes", Jet_btagSF_deepjet_shape_down_jes, &b_Jet_btagSF_deepjet_shape_down_jes); + fChain->SetBranchAddress("Jet_genJetIdx", Jet_genJetIdx, &b_Jet_genJetIdx); + fChain->SetBranchAddress("Jet_btagSF_deepjet_shape_down_jesHF", Jet_btagSF_deepjet_shape_down_jesHF, &b_Jet_btagSF_deepjet_shape_down_jesHF); + fChain->SetBranchAddress("Jet_btagSF_deepjet_shape_down_lfstats2", Jet_btagSF_deepjet_shape_down_lfstats2, &b_Jet_btagSF_deepjet_shape_down_lfstats2); + fChain->SetBranchAddress("Jet_qgl", Jet_qgl, &b_Jet_qgl); + fChain->SetBranchAddress("Jet_cleanmask", Jet_cleanmask, &b_Jet_cleanmask); + fChain->SetBranchAddress("Jet_chEmEF", Jet_chEmEF, &b_Jet_chEmEF); + fChain->SetBranchAddress("Jet_btagDeepFlavB", Jet_btagDeepFlavB, &b_Jet_btagDeepFlavB); + fChain->SetBranchAddress("Jet_btagSF_deepjet_shape_up_jesEC2_2018", Jet_btagSF_deepjet_shape_up_jesEC2_2018, &b_Jet_btagSF_deepjet_shape_up_jesEC2_2018); + fChain->SetBranchAddress("Jet_hfadjacentEtaStripsSize", Jet_hfadjacentEtaStripsSize, &b_Jet_hfadjacentEtaStripsSize); + fChain->SetBranchAddress("Jet_rawFactor", Jet_rawFactor, &b_Jet_rawFactor); + fChain->SetBranchAddress("Jet_hadronFlavour", Jet_hadronFlavour, &b_Jet_hadronFlavour); + fChain->SetBranchAddress("Jet_btagSF_deepjet_shape_up_lf", Jet_btagSF_deepjet_shape_up_lf, &b_Jet_btagSF_deepjet_shape_up_lf); + fChain->SetBranchAddress("Jet_btagSF_deepjet_shape_down_jesRelativeSample_2018", Jet_btagSF_deepjet_shape_down_jesRelativeSample_2018, &b_Jet_btagSF_deepjet_shape_down_jesRelativeSample_2018); + fChain->SetBranchAddress("Jet_btagSF_deepjet_shape_up_cferr2", Jet_btagSF_deepjet_shape_up_cferr2, &b_Jet_btagSF_deepjet_shape_up_cferr2); + fChain->SetBranchAddress("Jet_btagSF_deepjet_shape_down_jesAbsolute", Jet_btagSF_deepjet_shape_down_jesAbsolute, &b_Jet_btagSF_deepjet_shape_down_jesAbsolute); + fChain->SetBranchAddress("Jet_chHEF", Jet_chHEF, &b_Jet_chHEF); + fChain->SetBranchAddress("Jet_pt", Jet_pt, &b_Jet_pt); + fChain->SetBranchAddress("Jet_btagSF_deepjet_shape_down_jesRelativeBal", Jet_btagSF_deepjet_shape_down_jesRelativeBal, &b_Jet_btagSF_deepjet_shape_down_jesRelativeBal); + fChain->SetBranchAddress("Jet_muEF", Jet_muEF, &b_Jet_muEF); + fChain->SetBranchAddress("Jet_btagSF_deepjet_shape_up_jesAbsolute", Jet_btagSF_deepjet_shape_up_jesAbsolute, &b_Jet_btagSF_deepjet_shape_up_jesAbsolute); + fChain->SetBranchAddress("Jet_btagSF_deepjet_shape_down_jesEC2_2018", Jet_btagSF_deepjet_shape_down_jesEC2_2018, &b_Jet_btagSF_deepjet_shape_down_jesEC2_2018); + fChain->SetBranchAddress("Jet_btagSF_deepjet_shape_down_cferr1", Jet_btagSF_deepjet_shape_down_cferr1, &b_Jet_btagSF_deepjet_shape_down_cferr1); + fChain->SetBranchAddress("Jet_btagSF_deepjet_shape_down_jesBBEC1", Jet_btagSF_deepjet_shape_down_jesBBEC1, &b_Jet_btagSF_deepjet_shape_down_jesBBEC1); + fChain->SetBranchAddress("Jet_btagCSVV2", Jet_btagCSVV2, &b_Jet_btagCSVV2); + fChain->SetBranchAddress("Jet_btagSF_deepjet_shape_up_cferr1", Jet_btagSF_deepjet_shape_up_cferr1, &b_Jet_btagSF_deepjet_shape_up_cferr1); + fChain->SetBranchAddress("Jet_mass", Jet_mass, &b_Jet_mass); + fChain->SetBranchAddress("Jet_btagSF_deepjet_shape_down_lfstats1", Jet_btagSF_deepjet_shape_down_lfstats1, &b_Jet_btagSF_deepjet_shape_down_lfstats1); + fChain->SetBranchAddress("Jet_btagSF_deepjet_shape_up_jesHF", Jet_btagSF_deepjet_shape_up_jesHF, &b_Jet_btagSF_deepjet_shape_up_jesHF); + fChain->SetBranchAddress("Jet_jetId", Jet_jetId, &b_Jet_jetId); + fChain->SetBranchAddress("Jet_hfsigmaPhiPhi", Jet_hfsigmaPhiPhi, &b_Jet_hfsigmaPhiPhi); + fChain->SetBranchAddress("PuppiMET_sumEt", &PuppiMET_sumEt, &b_PuppiMET_sumEt); + fChain->SetBranchAddress("PuppiMET_phiJERDown", &PuppiMET_phiJERDown, &b_PuppiMET_phiJERDown); + fChain->SetBranchAddress("PuppiMET_ptJESDown", &PuppiMET_ptJESDown, &b_PuppiMET_ptJESDown); + fChain->SetBranchAddress("PuppiMET_phiJESUp", &PuppiMET_phiJESUp, &b_PuppiMET_phiJESUp); + fChain->SetBranchAddress("PuppiMET_ptJESUp", &PuppiMET_ptJESUp, &b_PuppiMET_ptJESUp); + fChain->SetBranchAddress("PuppiMET_ptUnclusteredDown", &PuppiMET_ptUnclusteredDown, &b_PuppiMET_ptUnclusteredDown); + fChain->SetBranchAddress("PuppiMET_pt", &PuppiMET_pt, &b_PuppiMET_pt); + fChain->SetBranchAddress("PuppiMET_ptJERDown", &PuppiMET_ptJERDown, &b_PuppiMET_ptJERDown); + fChain->SetBranchAddress("PuppiMET_phiUnclusteredUp", &PuppiMET_phiUnclusteredUp, &b_PuppiMET_phiUnclusteredUp); + fChain->SetBranchAddress("PuppiMET_phiUnclusteredDown", &PuppiMET_phiUnclusteredDown, &b_PuppiMET_phiUnclusteredDown); + fChain->SetBranchAddress("PuppiMET_ptJERUp", &PuppiMET_ptJERUp, &b_PuppiMET_ptJERUp); + fChain->SetBranchAddress("PuppiMET_phiJERUp", &PuppiMET_phiJERUp, &b_PuppiMET_phiJERUp); + fChain->SetBranchAddress("PuppiMET_phiJESDown", &PuppiMET_phiJESDown, &b_PuppiMET_phiJESDown); + fChain->SetBranchAddress("PuppiMET_ptUnclusteredUp", &PuppiMET_ptUnclusteredUp, &b_PuppiMET_ptUnclusteredUp); + fChain->SetBranchAddress("PuppiMET_phi", &PuppiMET_phi, &b_PuppiMET_phi); + fChain->SetBranchAddress("nLepton_isTightElectron", &nLepton_isTightElectron, &b_nLepton_isTightElectron); + fChain->SetBranchAddress("Lepton_isTightElectron_mvaFall17V2Iso_WP90", Lepton_isTightElectron_mvaFall17V2Iso_WP90, &b_Lepton_isTightElectron_mvaFall17V2Iso_WP90); + fChain->SetBranchAddress("nLepton_isTightMuon", &nLepton_isTightMuon, &b_nLepton_isTightMuon); + fChain->SetBranchAddress("Lepton_isTightMuon_cut_Tight_HWWW", Lepton_isTightMuon_cut_Tight_HWWW, &b_Lepton_isTightMuon_cut_Tight_HWWW); + fChain->SetBranchAddress("nLepton", &nLepton, &b_nLepton); + fChain->SetBranchAddress("Lepton_promptgenmatched", Lepton_promptgenmatched, &b_Lepton_promptgenmatched); + fChain->SetBranchAddress("Lepton_genmatched", Lepton_genmatched, &b_Lepton_genmatched); + fChain->SetBranchAddress("Lepton_muonIdx", Lepton_muonIdx, &b_Lepton_muonIdx); + fChain->SetBranchAddress("Lepton_phi", Lepton_phi, &b_Lepton_phi); + fChain->SetBranchAddress("Lepton_eta", Lepton_eta, &b_Lepton_eta); + fChain->SetBranchAddress("Lepton_electronIdx", Lepton_electronIdx, &b_Lepton_electronIdx); + fChain->SetBranchAddress("Lepton_pt", Lepton_pt, &b_Lepton_pt); + fChain->SetBranchAddress("Lepton_pdgId", Lepton_pdgId, &b_Lepton_pdgId); + fChain->SetBranchAddress("nMuon", &nMuon, &b_nMuon); + fChain->SetBranchAddress("Muon_multiIsoId", Muon_multiIsoId, &b_Muon_multiIsoId); + fChain->SetBranchAddress("Muon_nStations", Muon_nStations, &b_Muon_nStations); + fChain->SetBranchAddress("Muon_fsrPhotonIdx", Muon_fsrPhotonIdx, &b_Muon_fsrPhotonIdx); + fChain->SetBranchAddress("Muon_tightCharge", Muon_tightCharge, &b_Muon_tightCharge); + fChain->SetBranchAddress("Muon_pfRelIso03_chg", Muon_pfRelIso03_chg, &b_Muon_pfRelIso03_chg); + fChain->SetBranchAddress("Muon_jetRelIso", Muon_jetRelIso, &b_Muon_jetRelIso); + fChain->SetBranchAddress("Muon_dzErr", Muon_dzErr, &b_Muon_dzErr); + fChain->SetBranchAddress("Muon_mediumPromptId", Muon_mediumPromptId, &b_Muon_mediumPromptId); + fChain->SetBranchAddress("Muon_tightId", Muon_tightId, &b_Muon_tightId); + fChain->SetBranchAddress("Muon_mvaId", Muon_mvaId, &b_Muon_mvaId); + fChain->SetBranchAddress("Muon_puppiIsoId", Muon_puppiIsoId, &b_Muon_puppiIsoId); + fChain->SetBranchAddress("Muon_miniPFRelIso_all", Muon_miniPFRelIso_all, &b_Muon_miniPFRelIso_all); + fChain->SetBranchAddress("Muon_mass", Muon_mass, &b_Muon_mass); + fChain->SetBranchAddress("Muon_pfRelIso04_all", Muon_pfRelIso04_all, &b_Muon_pfRelIso04_all); + fChain->SetBranchAddress("Muon_mvaTTH", Muon_mvaTTH, &b_Muon_mvaTTH); + fChain->SetBranchAddress("Muon_ip3d", Muon_ip3d, &b_Muon_ip3d); + fChain->SetBranchAddress("Muon_sip3d", Muon_sip3d, &b_Muon_sip3d); + fChain->SetBranchAddress("Muon_jetNDauCharged", Muon_jetNDauCharged, &b_Muon_jetNDauCharged); + fChain->SetBranchAddress("Muon_ptErr", Muon_ptErr, &b_Muon_ptErr); + fChain->SetBranchAddress("Muon_cleanmask", Muon_cleanmask, &b_Muon_cleanmask); + fChain->SetBranchAddress("Muon_dxybs", Muon_dxybs, &b_Muon_dxybs); + fChain->SetBranchAddress("Muon_isStandalone", Muon_isStandalone, &b_Muon_isStandalone); + fChain->SetBranchAddress("Muon_softId", Muon_softId, &b_Muon_softId); + fChain->SetBranchAddress("Muon_inTimeMuon", Muon_inTimeMuon, &b_Muon_inTimeMuon); + fChain->SetBranchAddress("Muon_softMvaId", Muon_softMvaId, &b_Muon_softMvaId); + fChain->SetBranchAddress("Muon_dxyErr", Muon_dxyErr, &b_Muon_dxyErr); + fChain->SetBranchAddress("Muon_miniIsoId", Muon_miniIsoId, &b_Muon_miniIsoId); + fChain->SetBranchAddress("Muon_tkIsoId", Muon_tkIsoId, &b_Muon_tkIsoId); + fChain->SetBranchAddress("Muon_isPFcand", Muon_isPFcand, &b_Muon_isPFcand); + fChain->SetBranchAddress("Muon_mvaLowPt", Muon_mvaLowPt, &b_Muon_mvaLowPt); + fChain->SetBranchAddress("Muon_genPartIdx", Muon_genPartIdx, &b_Muon_genPartIdx); + fChain->SetBranchAddress("Muon_tunepRelPt", Muon_tunepRelPt, &b_Muon_tunepRelPt); + fChain->SetBranchAddress("Muon_dxy", Muon_dxy, &b_Muon_dxy); + fChain->SetBranchAddress("Muon_isTracker", Muon_isTracker, &b_Muon_isTracker); + fChain->SetBranchAddress("Muon_mediumId", Muon_mediumId, &b_Muon_mediumId); + fChain->SetBranchAddress("Muon_jetIdx", Muon_jetIdx, &b_Muon_jetIdx); + fChain->SetBranchAddress("Muon_highPtId", Muon_highPtId, &b_Muon_highPtId); + fChain->SetBranchAddress("Muon_pdgId", Muon_pdgId, &b_Muon_pdgId); + fChain->SetBranchAddress("Muon_genPartFlav", Muon_genPartFlav, &b_Muon_genPartFlav); + fChain->SetBranchAddress("Muon_pt", Muon_pt, &b_Muon_pt); + fChain->SetBranchAddress("Muon_highPurity", Muon_highPurity, &b_Muon_highPurity); + fChain->SetBranchAddress("Muon_isGlobal", Muon_isGlobal, &b_Muon_isGlobal); + fChain->SetBranchAddress("Muon_pfRelIso03_all", Muon_pfRelIso03_all, &b_Muon_pfRelIso03_all); + fChain->SetBranchAddress("Muon_jetPtRelv2", Muon_jetPtRelv2, &b_Muon_jetPtRelv2); + fChain->SetBranchAddress("Muon_softMva", Muon_softMva, &b_Muon_softMva); + fChain->SetBranchAddress("Muon_eta", Muon_eta, &b_Muon_eta); + fChain->SetBranchAddress("Muon_triggerIdLoose", Muon_triggerIdLoose, &b_Muon_triggerIdLoose); + fChain->SetBranchAddress("Muon_segmentComp", Muon_segmentComp, &b_Muon_segmentComp); + fChain->SetBranchAddress("Muon_miniPFRelIso_chg", Muon_miniPFRelIso_chg, &b_Muon_miniPFRelIso_chg); + fChain->SetBranchAddress("Muon_mvaLowPtId", Muon_mvaLowPtId, &b_Muon_mvaLowPtId); + fChain->SetBranchAddress("Muon_charge", Muon_charge, &b_Muon_charge); + fChain->SetBranchAddress("Muon_looseId", Muon_looseId, &b_Muon_looseId); + fChain->SetBranchAddress("Muon_tkRelIso", Muon_tkRelIso, &b_Muon_tkRelIso); + fChain->SetBranchAddress("Muon_dz", Muon_dz, &b_Muon_dz); + fChain->SetBranchAddress("Muon_nTrackerLayers", Muon_nTrackerLayers, &b_Muon_nTrackerLayers); + fChain->SetBranchAddress("Muon_pfIsoId", Muon_pfIsoId, &b_Muon_pfIsoId); + fChain->SetBranchAddress("Muon_phi", Muon_phi, &b_Muon_phi); + fChain->SetBranchAddress("nElectron", &nElectron, &b_nElectron); + fChain->SetBranchAddress("Electron_sip3d", Electron_sip3d, &b_Electron_sip3d); + fChain->SetBranchAddress("Electron_mvaFall17V2noIso", Electron_mvaFall17V2noIso, &b_Electron_mvaFall17V2noIso); + fChain->SetBranchAddress("Electron_dr03TkSumPt", Electron_dr03TkSumPt, &b_Electron_dr03TkSumPt); + fChain->SetBranchAddress("Electron_mass", Electron_mass, &b_Electron_mass); + fChain->SetBranchAddress("Electron_convVeto", Electron_convVeto, &b_Electron_convVeto); + fChain->SetBranchAddress("Electron_tightCharge", Electron_tightCharge, &b_Electron_tightCharge); + fChain->SetBranchAddress("Electron_dzErr", Electron_dzErr, &b_Electron_dzErr); + fChain->SetBranchAddress("Electron_mvaFall17V2Iso", Electron_mvaFall17V2Iso, &b_Electron_mvaFall17V2Iso); + fChain->SetBranchAddress("Electron_dr03HcalDepth1TowerSumEt", Electron_dr03HcalDepth1TowerSumEt, &b_Electron_dr03HcalDepth1TowerSumEt); + fChain->SetBranchAddress("Electron_dEscaleDown", Electron_dEscaleDown, &b_Electron_dEscaleDown); + fChain->SetBranchAddress("Electron_mvaTTH", Electron_mvaTTH, &b_Electron_mvaTTH); + fChain->SetBranchAddress("Electron_photonIdx", Electron_photonIdx, &b_Electron_photonIdx); + fChain->SetBranchAddress("Electron_eCorr", Electron_eCorr, &b_Electron_eCorr); + fChain->SetBranchAddress("Electron_jetPtRelv2", Electron_jetPtRelv2, &b_Electron_jetPtRelv2); + fChain->SetBranchAddress("Electron_genPartIdx", Electron_genPartIdx, &b_Electron_genPartIdx); + fChain->SetBranchAddress("Electron_scEtOverPt", Electron_scEtOverPt, &b_Electron_scEtOverPt); + fChain->SetBranchAddress("Electron_seedGain", Electron_seedGain, &b_Electron_seedGain); + fChain->SetBranchAddress("Electron_sieie", Electron_sieie, &b_Electron_sieie); + fChain->SetBranchAddress("Electron_mvaFall17V2noIso_WP90", Electron_mvaFall17V2noIso_WP90, &b_Electron_mvaFall17V2noIso_WP90); + fChain->SetBranchAddress("Electron_phi", Electron_phi, &b_Electron_phi); + fChain->SetBranchAddress("Electron_jetRelIso", Electron_jetRelIso, &b_Electron_jetRelIso); + fChain->SetBranchAddress("Electron_charge", Electron_charge, &b_Electron_charge); + fChain->SetBranchAddress("Electron_pdgId", Electron_pdgId, &b_Electron_pdgId); + fChain->SetBranchAddress("Electron_vidNestedWPBitmap", Electron_vidNestedWPBitmap, &b_Electron_vidNestedWPBitmap); + fChain->SetBranchAddress("Electron_dEsigmaUp", Electron_dEsigmaUp, &b_Electron_dEsigmaUp); + fChain->SetBranchAddress("Electron_jetIdx", Electron_jetIdx, &b_Electron_jetIdx); + fChain->SetBranchAddress("Electron_mvaFall17V2noIso_WP80", Electron_mvaFall17V2noIso_WP80, &b_Electron_mvaFall17V2noIso_WP80); + fChain->SetBranchAddress("Electron_dz", Electron_dz, &b_Electron_dz); + fChain->SetBranchAddress("Electron_pt", Electron_pt, &b_Electron_pt); + fChain->SetBranchAddress("Electron_pfRelIso03_chg", Electron_pfRelIso03_chg, &b_Electron_pfRelIso03_chg); + fChain->SetBranchAddress("Electron_mvaFall17V2Iso_WP80", Electron_mvaFall17V2Iso_WP80, &b_Electron_mvaFall17V2Iso_WP80); + fChain->SetBranchAddress("Electron_miniPFRelIso_chg", Electron_miniPFRelIso_chg, &b_Electron_miniPFRelIso_chg); + fChain->SetBranchAddress("Electron_isPFcand", Electron_isPFcand, &b_Electron_isPFcand); + fChain->SetBranchAddress("Electron_jetNDauCharged", Electron_jetNDauCharged, &b_Electron_jetNDauCharged); + fChain->SetBranchAddress("Electron_dxyErr", Electron_dxyErr, &b_Electron_dxyErr); + fChain->SetBranchAddress("Electron_mvaFall17V2Iso_WPL", Electron_mvaFall17V2Iso_WPL, &b_Electron_mvaFall17V2Iso_WPL); + fChain->SetBranchAddress("Electron_eta", Electron_eta, &b_Electron_eta); + fChain->SetBranchAddress("Electron_hoe", Electron_hoe, &b_Electron_hoe); + fChain->SetBranchAddress("Electron_cleanmask", Electron_cleanmask, &b_Electron_cleanmask); + fChain->SetBranchAddress("Electron_dr03TkSumPtHEEP", Electron_dr03TkSumPtHEEP, &b_Electron_dr03TkSumPtHEEP); + fChain->SetBranchAddress("Electron_eInvMinusPInv", Electron_eInvMinusPInv, &b_Electron_eInvMinusPInv); + fChain->SetBranchAddress("Electron_cutBased", Electron_cutBased, &b_Electron_cutBased); + fChain->SetBranchAddress("Electron_dxy", Electron_dxy, &b_Electron_dxy); + fChain->SetBranchAddress("Electron_genPartFlav", Electron_genPartFlav, &b_Electron_genPartFlav); + fChain->SetBranchAddress("Electron_dr03EcalRecHitSumEt", Electron_dr03EcalRecHitSumEt, &b_Electron_dr03EcalRecHitSumEt); + fChain->SetBranchAddress("Electron_cutBased_HEEP", Electron_cutBased_HEEP, &b_Electron_cutBased_HEEP); + fChain->SetBranchAddress("Electron_miniPFRelIso_all", Electron_miniPFRelIso_all, &b_Electron_miniPFRelIso_all); + fChain->SetBranchAddress("Electron_pfRelIso03_all", Electron_pfRelIso03_all, &b_Electron_pfRelIso03_all); + fChain->SetBranchAddress("Electron_vidNestedWPBitmapHEEP", Electron_vidNestedWPBitmapHEEP, &b_Electron_vidNestedWPBitmapHEEP); + fChain->SetBranchAddress("Electron_ip3d", Electron_ip3d, &b_Electron_ip3d); + fChain->SetBranchAddress("Electron_r9", Electron_r9, &b_Electron_r9); + fChain->SetBranchAddress("Electron_dEscaleUp", Electron_dEscaleUp, &b_Electron_dEscaleUp); + fChain->SetBranchAddress("Electron_mvaFall17V2noIso_WPL", Electron_mvaFall17V2noIso_WPL, &b_Electron_mvaFall17V2noIso_WPL); + fChain->SetBranchAddress("Electron_deltaEtaSC", Electron_deltaEtaSC, &b_Electron_deltaEtaSC); + fChain->SetBranchAddress("Electron_energyErr", Electron_energyErr, &b_Electron_energyErr); + fChain->SetBranchAddress("Electron_mvaFall17V2Iso_WP90", Electron_mvaFall17V2Iso_WP90, &b_Electron_mvaFall17V2Iso_WP90); + fChain->SetBranchAddress("Electron_lostHits", Electron_lostHits, &b_Electron_lostHits); + fChain->SetBranchAddress("Electron_dEsigmaDown", Electron_dEsigmaDown, &b_Electron_dEsigmaDown); + fChain->SetBranchAddress("nPhoton", &nPhoton, &b_nPhoton); + fChain->SetBranchAddress("Photon_isScEtaEE", Photon_isScEtaEE, &b_Photon_isScEtaEE); + fChain->SetBranchAddress("Photon_mvaID_WP80", Photon_mvaID_WP80, &b_Photon_mvaID_WP80); + fChain->SetBranchAddress("Photon_eCorr", Photon_eCorr, &b_Photon_eCorr); + fChain->SetBranchAddress("Photon_dEsigmaUp", Photon_dEsigmaUp, &b_Photon_dEsigmaUp); + fChain->SetBranchAddress("Photon_phi", Photon_phi, &b_Photon_phi); + fChain->SetBranchAddress("Photon_genPartIdx", Photon_genPartIdx, &b_Photon_genPartIdx); + fChain->SetBranchAddress("Photon_dEsigmaDown", Photon_dEsigmaDown, &b_Photon_dEsigmaDown); + fChain->SetBranchAddress("Photon_cutBased_Fall17V1Bitmap", Photon_cutBased_Fall17V1Bitmap, &b_Photon_cutBased_Fall17V1Bitmap); + fChain->SetBranchAddress("Photon_electronVeto", Photon_electronVeto, &b_Photon_electronVeto); + fChain->SetBranchAddress("Photon_hoe", Photon_hoe, &b_Photon_hoe); + fChain->SetBranchAddress("Photon_isScEtaEB", Photon_isScEtaEB, &b_Photon_isScEtaEB); + fChain->SetBranchAddress("Photon_mvaID", Photon_mvaID, &b_Photon_mvaID); + fChain->SetBranchAddress("Photon_vidNestedWPBitmap", Photon_vidNestedWPBitmap, &b_Photon_vidNestedWPBitmap); + fChain->SetBranchAddress("Photon_sieie", Photon_sieie, &b_Photon_sieie); + fChain->SetBranchAddress("Photon_r9", Photon_r9, &b_Photon_r9); + fChain->SetBranchAddress("Photon_mass", Photon_mass, &b_Photon_mass); + fChain->SetBranchAddress("Photon_pt", Photon_pt, &b_Photon_pt); + fChain->SetBranchAddress("Photon_cleanmask", Photon_cleanmask, &b_Photon_cleanmask); + fChain->SetBranchAddress("Photon_dEscaleDown", Photon_dEscaleDown, &b_Photon_dEscaleDown); + fChain->SetBranchAddress("Photon_genPartFlav", Photon_genPartFlav, &b_Photon_genPartFlav); + fChain->SetBranchAddress("Photon_pixelSeed", Photon_pixelSeed, &b_Photon_pixelSeed); + fChain->SetBranchAddress("Photon_mvaID_WP90", Photon_mvaID_WP90, &b_Photon_mvaID_WP90); + fChain->SetBranchAddress("Photon_dEscaleUp", Photon_dEscaleUp, &b_Photon_dEscaleUp); + fChain->SetBranchAddress("Photon_charge", Photon_charge, &b_Photon_charge); + fChain->SetBranchAddress("Photon_pdgId", Photon_pdgId, &b_Photon_pdgId); + fChain->SetBranchAddress("Photon_cutBased", Photon_cutBased, &b_Photon_cutBased); + fChain->SetBranchAddress("Photon_pfRelIso03_chg", Photon_pfRelIso03_chg, &b_Photon_pfRelIso03_chg); + fChain->SetBranchAddress("Photon_mvaID_Fall17V1p1", Photon_mvaID_Fall17V1p1, &b_Photon_mvaID_Fall17V1p1); + fChain->SetBranchAddress("Photon_seedGain", Photon_seedGain, &b_Photon_seedGain); + fChain->SetBranchAddress("Photon_electronIdx", Photon_electronIdx, &b_Photon_electronIdx); + fChain->SetBranchAddress("Photon_jetIdx", Photon_jetIdx, &b_Photon_jetIdx); + fChain->SetBranchAddress("Photon_eta", Photon_eta, &b_Photon_eta); + fChain->SetBranchAddress("Photon_pfRelIso03_all", Photon_pfRelIso03_all, &b_Photon_pfRelIso03_all); + fChain->SetBranchAddress("Photon_energyErr", Photon_energyErr, &b_Photon_energyErr); + fChain->SetBranchAddress("Gen_ZGstar_ele2_phi", &Gen_ZGstar_ele2_phi, &b_Gen_ZGstar_ele2_phi); + fChain->SetBranchAddress("Gen_ZGstar_mass", &Gen_ZGstar_mass, &b_Gen_ZGstar_mass); + fChain->SetBranchAddress("Gen_ZGstar_MomId", &Gen_ZGstar_MomId, &b_Gen_ZGstar_MomId); + fChain->SetBranchAddress("Gen_ZGstar_MomStatus", &Gen_ZGstar_MomStatus, &b_Gen_ZGstar_MomStatus); + fChain->SetBranchAddress("Gen_ZGstar_ele1_pt", &Gen_ZGstar_ele1_pt, &b_Gen_ZGstar_ele1_pt); + fChain->SetBranchAddress("Gen_ZGstar_ele1_phi", &Gen_ZGstar_ele1_phi, &b_Gen_ZGstar_ele1_phi); + fChain->SetBranchAddress("Gen_ZGstar_deltaR", &Gen_ZGstar_deltaR, &b_Gen_ZGstar_deltaR); + fChain->SetBranchAddress("Gen_ZGstar_mu2_pt", &Gen_ZGstar_mu2_pt, &b_Gen_ZGstar_mu2_pt); + fChain->SetBranchAddress("Gen_ZGstar_mu2_phi", &Gen_ZGstar_mu2_phi, &b_Gen_ZGstar_mu2_phi); + fChain->SetBranchAddress("Gen_ZGstar_ele2_pt", &Gen_ZGstar_ele2_pt, &b_Gen_ZGstar_ele2_pt); + fChain->SetBranchAddress("Gen_ZGstar_mu1_pt", &Gen_ZGstar_mu1_pt, &b_Gen_ZGstar_mu1_pt); + fChain->SetBranchAddress("Gen_ZGstar_ele1_eta", &Gen_ZGstar_ele1_eta, &b_Gen_ZGstar_ele1_eta); + fChain->SetBranchAddress("Gen_ZGstar_mu2_eta", &Gen_ZGstar_mu2_eta, &b_Gen_ZGstar_mu2_eta); + fChain->SetBranchAddress("Gen_ZGstar_mu1_phi", &Gen_ZGstar_mu1_phi, &b_Gen_ZGstar_mu1_phi); + fChain->SetBranchAddress("Gen_ZGstar_ele2_eta", &Gen_ZGstar_ele2_eta, &b_Gen_ZGstar_ele2_eta); + fChain->SetBranchAddress("Gen_ZGstar_mu1_eta", &Gen_ZGstar_mu1_eta, &b_Gen_ZGstar_mu1_eta); + fChain->SetBranchAddress("LHE_Nuds", &LHE_Nuds, &b_LHE_Nuds); + fChain->SetBranchAddress("LHE_HT", &LHE_HT, &b_LHE_HT); + fChain->SetBranchAddress("LHE_Nglu", &LHE_Nglu, &b_LHE_Nglu); + fChain->SetBranchAddress("LHE_NpLO", &LHE_NpLO, &b_LHE_NpLO); + fChain->SetBranchAddress("LHE_Njets", &LHE_Njets, &b_LHE_Njets); + fChain->SetBranchAddress("LHE_HTIncoming", &LHE_HTIncoming, &b_LHE_HTIncoming); + fChain->SetBranchAddress("LHE_NpNLO", &LHE_NpNLO, &b_LHE_NpNLO); + fChain->SetBranchAddress("LHE_Vpt", &LHE_Vpt, &b_LHE_Vpt); + fChain->SetBranchAddress("LHE_AlphaS", &LHE_AlphaS, &b_LHE_AlphaS); + fChain->SetBranchAddress("LHE_Nc", &LHE_Nc, &b_LHE_Nc); + fChain->SetBranchAddress("LHE_Nb", &LHE_Nb, &b_LHE_Nb); + fChain->SetBranchAddress("HLT_Ele250_CaloIdVT_GsfTrkIdT", &HLT_Ele250_CaloIdVT_GsfTrkIdT, &b_HLT_Ele250_CaloIdVT_GsfTrkIdT); + fChain->SetBranchAddress("HLT_Mu3er1p5_PFJet100er2p5_PFMETNoMu100_PFMHTNoMu100_IDTight", &HLT_Mu3er1p5_PFJet100er2p5_PFMETNoMu100_PFMHTNoMu100_IDTight, &b_HLT_Mu3er1p5_PFJet100er2p5_PFMETNoMu100_PFMHTNoMu100_IDTight); + fChain->SetBranchAddress("HLT_L2Mu23NoVtx_2Cha_CosmicSeed", &HLT_L2Mu23NoVtx_2Cha_CosmicSeed, &b_HLT_L2Mu23NoVtx_2Cha_CosmicSeed); + fChain->SetBranchAddress("HLT_AK8PFJet330_TrimMass30_PFAK8BTagDeepCSV_p17", &HLT_AK8PFJet330_TrimMass30_PFAK8BTagDeepCSV_p17, &b_HLT_AK8PFJet330_TrimMass30_PFAK8BTagDeepCSV_p17); + fChain->SetBranchAddress("HLT_Ele16_Ele12_Ele8_CaloIdL_TrackIdL", &HLT_Ele16_Ele12_Ele8_CaloIdL_TrackIdL, &b_HLT_Ele16_Ele12_Ele8_CaloIdL_TrackIdL); + fChain->SetBranchAddress("HLT_DoubleL2Mu25NoVtx_2Cha_CosmicSeed_Eta2p4", &HLT_DoubleL2Mu25NoVtx_2Cha_CosmicSeed_Eta2p4, &b_HLT_DoubleL2Mu25NoVtx_2Cha_CosmicSeed_Eta2p4); + fChain->SetBranchAddress("HLT_DoubleMu3_DZ_PFMET70_PFMHT70", &HLT_DoubleMu3_DZ_PFMET70_PFMHT70, &b_HLT_DoubleMu3_DZ_PFMET70_PFMHT70); + fChain->SetBranchAddress("HLT_Ele27_WPTight_Gsf", &HLT_Ele27_WPTight_Gsf, &b_HLT_Ele27_WPTight_Gsf); + fChain->SetBranchAddress("HLT_Mu20_Mu10_SameSign", &HLT_Mu20_Mu10_SameSign, &b_HLT_Mu20_Mu10_SameSign); + fChain->SetBranchAddress("HLT_Photon150", &HLT_Photon150, &b_HLT_Photon150); + fChain->SetBranchAddress("HLT_Mu3er1p5_PFJet100er2p5_PFMET80_PFMHT80_IDTight", &HLT_Mu3er1p5_PFJet100er2p5_PFMET80_PFMHT80_IDTight, &b_HLT_Mu3er1p5_PFJet100er2p5_PFMET80_PFMHT80_IDTight); + fChain->SetBranchAddress("HLT_AK8PFHT800_TrimMass50", &HLT_AK8PFHT800_TrimMass50, &b_HLT_AK8PFHT800_TrimMass50); + fChain->SetBranchAddress("HLT_Photon35_TwoProngs35", &HLT_Photon35_TwoProngs35, &b_HLT_Photon35_TwoProngs35); + fChain->SetBranchAddress("HLT_Ele15_IsoVVVL_PFHT450_PFMET50", &HLT_Ele15_IsoVVVL_PFHT450_PFMET50, &b_HLT_Ele15_IsoVVVL_PFHT450_PFMET50); + fChain->SetBranchAddress("HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET120", &HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET120, &b_HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET120); + fChain->SetBranchAddress("HLT_Photon165_R9Id90_HE10_IsoM", &HLT_Photon165_R9Id90_HE10_IsoM, &b_HLT_Photon165_R9Id90_HE10_IsoM); + fChain->SetBranchAddress("HLT_DiPFJetAve100_HFJEC", &HLT_DiPFJetAve100_HFJEC, &b_HLT_DiPFJetAve100_HFJEC); + fChain->SetBranchAddress("HLT_Mu15_IsoVVVL_PFHT450", &HLT_Mu15_IsoVVVL_PFHT450, &b_HLT_Mu15_IsoVVVL_PFHT450); + fChain->SetBranchAddress("HLT_DoubleEle8_CaloIdM_TrackIdM_Mass8_DZ_PFHT350", &HLT_DoubleEle8_CaloIdM_TrackIdM_Mass8_DZ_PFHT350, &b_HLT_DoubleEle8_CaloIdM_TrackIdM_Mass8_DZ_PFHT350); + fChain->SetBranchAddress("HLT_Ele300_CaloIdVT_GsfTrkIdT", &HLT_Ele300_CaloIdVT_GsfTrkIdT, &b_HLT_Ele300_CaloIdVT_GsfTrkIdT); + fChain->SetBranchAddress("HLT_Dimuon0_LowMass_L1_0er1p5R", &HLT_Dimuon0_LowMass_L1_0er1p5R, &b_HLT_Dimuon0_LowMass_L1_0er1p5R); + fChain->SetBranchAddress("HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET140", &HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET140, &b_HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET140); + fChain->SetBranchAddress("HLT_PFMET200_NotCleaned", &HLT_PFMET200_NotCleaned, &b_HLT_PFMET200_NotCleaned); + fChain->SetBranchAddress("HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET90", &HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET90, &b_HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET90); + fChain->SetBranchAddress("HLT_Mu8_IP3_part3", &HLT_Mu8_IP3_part3, &b_HLT_Mu8_IP3_part3); + fChain->SetBranchAddress("HLT_VBF_DoubleMediumChargedIsoPFTauHPS20_Trk1_eta2p1", &HLT_VBF_DoubleMediumChargedIsoPFTauHPS20_Trk1_eta2p1, &b_HLT_VBF_DoubleMediumChargedIsoPFTauHPS20_Trk1_eta2p1); + fChain->SetBranchAddress("HLT_Ele27_Ele37_CaloIdL_MW", &HLT_Ele27_Ele37_CaloIdL_MW, &b_HLT_Ele27_Ele37_CaloIdL_MW); + fChain->SetBranchAddress("HLT_Dimuon0_Upsilon_NoVertexing", &HLT_Dimuon0_Upsilon_NoVertexing, &b_HLT_Dimuon0_Upsilon_NoVertexing); + fChain->SetBranchAddress("HLT_Ele24_eta2p1_WPTight_Gsf_LooseChargedIsoPFTauHPS30_eta2p1_TightID_CrossL1", &HLT_Ele24_eta2p1_WPTight_Gsf_LooseChargedIsoPFTauHPS30_eta2p1_TightID_CrossL1, &b_HLT_Ele24_eta2p1_WPTight_Gsf_LooseChargedIsoPFTauHPS30_eta2p1_TightID_CrossL1); + fChain->SetBranchAddress("HLT_Mu12_DoublePFJets350_CaloBTagDeepCSV_p71", &HLT_Mu12_DoublePFJets350_CaloBTagDeepCSV_p71, &b_HLT_Mu12_DoublePFJets350_CaloBTagDeepCSV_p71); + fChain->SetBranchAddress("HLT_DoubleMu48NoFiltersNoVtx", &HLT_DoubleMu48NoFiltersNoVtx, &b_HLT_DoubleMu48NoFiltersNoVtx); + fChain->SetBranchAddress("HLT_Photon120EB_TightID_TightIso", &HLT_Photon120EB_TightID_TightIso, &b_HLT_Photon120EB_TightID_TightIso); + fChain->SetBranchAddress("HLT_Dimuon14_Phi_Barrel_Seagulls", &HLT_Dimuon14_Phi_Barrel_Seagulls, &b_HLT_Dimuon14_Phi_Barrel_Seagulls); + fChain->SetBranchAddress("HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET130", &HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET130, &b_HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET130); + fChain->SetBranchAddress("HLT_PFJetFwd320", &HLT_PFJetFwd320, &b_HLT_PFJetFwd320); + fChain->SetBranchAddress("HLT_AK4PFJet50", &HLT_AK4PFJet50, &b_HLT_AK4PFJet50); + fChain->SetBranchAddress("HLT_UncorrectedJetE30_NoBPTX3BX", &HLT_UncorrectedJetE30_NoBPTX3BX, &b_HLT_UncorrectedJetE30_NoBPTX3BX); + fChain->SetBranchAddress("HLT_Photon60_R9Id90_CaloIdL_IsoL_DisplacedIdL_PFHT350MinPFJet15", &HLT_Photon60_R9Id90_CaloIdL_IsoL_DisplacedIdL_PFHT350MinPFJet15, &b_HLT_Photon60_R9Id90_CaloIdL_IsoL_DisplacedIdL_PFHT350MinPFJet15); + fChain->SetBranchAddress("HLT_IsoMu27_TightChargedIsoPFTauHPS20_Trk1_eta2p1_SingleL1", &HLT_IsoMu27_TightChargedIsoPFTauHPS20_Trk1_eta2p1_SingleL1, &b_HLT_IsoMu27_TightChargedIsoPFTauHPS20_Trk1_eta2p1_SingleL1); + fChain->SetBranchAddress("HLT_Dimuon0_Jpsi", &HLT_Dimuon0_Jpsi, &b_HLT_Dimuon0_Jpsi); + fChain->SetBranchAddress("HLT_CaloMET100_NotCleaned", &HLT_CaloMET100_NotCleaned, &b_HLT_CaloMET100_NotCleaned); + fChain->SetBranchAddress("HLT_PFMETNoMu120_PFMHTNoMu120_IDTight_PFHT60", &HLT_PFMETNoMu120_PFMHTNoMu120_IDTight_PFHT60, &b_HLT_PFMETNoMu120_PFMHTNoMu120_IDTight_PFHT60); + fChain->SetBranchAddress("HLT_AK8PFJetFwd260", &HLT_AK8PFJetFwd260, &b_HLT_AK8PFJetFwd260); + fChain->SetBranchAddress("HLT_CaloMET110_NotCleaned", &HLT_CaloMET110_NotCleaned, &b_HLT_CaloMET110_NotCleaned); + fChain->SetBranchAddress("HLT_Mu43NoFiltersNoVtx_Photon43_CaloIdL", &HLT_Mu43NoFiltersNoVtx_Photon43_CaloIdL, &b_HLT_Mu43NoFiltersNoVtx_Photon43_CaloIdL); + fChain->SetBranchAddress("HLT_CaloMHT90", &HLT_CaloMHT90, &b_HLT_CaloMHT90); + fChain->SetBranchAddress("HLT_UncorrectedJetE60_NoBPTX3BX", &HLT_UncorrectedJetE60_NoBPTX3BX, &b_HLT_UncorrectedJetE60_NoBPTX3BX); + fChain->SetBranchAddress("HLT_TripleMu_10_5_5_DZ", &HLT_TripleMu_10_5_5_DZ, &b_HLT_TripleMu_10_5_5_DZ); + fChain->SetBranchAddress("HLT_AK8PFJet15", &HLT_AK8PFJet15, &b_HLT_AK8PFJet15); + fChain->SetBranchAddress("HLT_Mu19", &HLT_Mu19, &b_HLT_Mu19); + fChain->SetBranchAddress("HLT_Mu8_TrkIsoVVL", &HLT_Mu8_TrkIsoVVL, &b_HLT_Mu8_TrkIsoVVL); + fChain->SetBranchAddress("HLT_QuadPFJet98_83_71_15_PFBTagDeepCSV_1p3_VBF2", &HLT_QuadPFJet98_83_71_15_PFBTagDeepCSV_1p3_VBF2, &b_HLT_QuadPFJet98_83_71_15_PFBTagDeepCSV_1p3_VBF2); + fChain->SetBranchAddress("HLT_DiMu9_Ele9_CaloIdL_TrackIdL", &HLT_DiMu9_Ele9_CaloIdL_TrackIdL, &b_HLT_DiMu9_Ele9_CaloIdL_TrackIdL); + fChain->SetBranchAddress("HLT_MonoCentralPFJet80_PFMETNoMu110_PFMHTNoMu110_IDTight", &HLT_MonoCentralPFJet80_PFMETNoMu110_PFMHTNoMu110_IDTight, &b_HLT_MonoCentralPFJet80_PFMETNoMu110_PFMHTNoMu110_IDTight); + fChain->SetBranchAddress("HLT_AK8PFJet25", &HLT_AK8PFJet25, &b_HLT_AK8PFJet25); + fChain->SetBranchAddress("HLT_AK8PFJet330_TrimMass30_PFAK8BoostedDoubleB_np4", &HLT_AK8PFJet330_TrimMass30_PFAK8BoostedDoubleB_np4, &b_HLT_AK8PFJet330_TrimMass30_PFAK8BoostedDoubleB_np4); + fChain->SetBranchAddress("HLT_DoubleL2Mu25NoVtx_2Cha", &HLT_DoubleL2Mu25NoVtx_2Cha, &b_HLT_DoubleL2Mu25NoVtx_2Cha); + fChain->SetBranchAddress("HLT_Ele15_IsoVVVL_PFHT600", &HLT_Ele15_IsoVVVL_PFHT600, &b_HLT_Ele15_IsoVVVL_PFHT600); + fChain->SetBranchAddress("HLT_Ele50_IsoVVVL_PFHT450", &HLT_Ele50_IsoVVVL_PFHT450, &b_HLT_Ele50_IsoVVVL_PFHT450); + fChain->SetBranchAddress("HLT_Mu9_IP4_part2", &HLT_Mu9_IP4_part2, &b_HLT_Mu9_IP4_part2); + fChain->SetBranchAddress("HLT_Mu7p5_Track7_Jpsi", &HLT_Mu7p5_Track7_Jpsi, &b_HLT_Mu7p5_Track7_Jpsi); + fChain->SetBranchAddress("HLT_Mu17_Photon30_IsoCaloId", &HLT_Mu17_Photon30_IsoCaloId, &b_HLT_Mu17_Photon30_IsoCaloId); + fChain->SetBranchAddress("HLT_Mu43NoFiltersNoVtxDisplaced_Photon43_CaloIdL", &HLT_Mu43NoFiltersNoVtxDisplaced_Photon43_CaloIdL, &b_HLT_Mu43NoFiltersNoVtxDisplaced_Photon43_CaloIdL); + fChain->SetBranchAddress("HLT_Mu23_Mu12", &HLT_Mu23_Mu12, &b_HLT_Mu23_Mu12); + fChain->SetBranchAddress("HLT_L2Mu10", &HLT_L2Mu10, &b_HLT_L2Mu10); + fChain->SetBranchAddress("HLT_Mu12_IP6_part0", &HLT_Mu12_IP6_part0, &b_HLT_Mu12_IP6_part0); + fChain->SetBranchAddress("HLT_MediumChargedIsoPFTau200HighPtRelaxedIso_Trk50_eta2p1", &HLT_MediumChargedIsoPFTau200HighPtRelaxedIso_Trk50_eta2p1, &b_HLT_MediumChargedIsoPFTau200HighPtRelaxedIso_Trk50_eta2p1); + fChain->SetBranchAddress("HLT_PFMETTypeOne140_PFMHT140_IDTight", &HLT_PFMETTypeOne140_PFMHT140_IDTight, &b_HLT_PFMETTypeOne140_PFMHT140_IDTight); + fChain->SetBranchAddress("HLT_Mu7_IP4_part2", &HLT_Mu7_IP4_part2, &b_HLT_Mu7_IP4_part2); + fChain->SetBranchAddress("HLT_DoublePFJets200_CaloBTagDeepCSV_p71", &HLT_DoublePFJets200_CaloBTagDeepCSV_p71, &b_HLT_DoublePFJets200_CaloBTagDeepCSV_p71); + fChain->SetBranchAddress("HLT_AK8PFJetFwd60", &HLT_AK8PFJetFwd60, &b_HLT_AK8PFJetFwd60); + fChain->SetBranchAddress("HLT_Mu3er1p5_PFJet100er2p5_PFMETNoMu70_PFMHTNoMu70_IDTight", &HLT_Mu3er1p5_PFJet100er2p5_PFMETNoMu70_PFMHTNoMu70_IDTight, &b_HLT_Mu3er1p5_PFJet100er2p5_PFMETNoMu70_PFMHTNoMu70_IDTight); + fChain->SetBranchAddress("HLT_Photon90_R9Id90_HE10_IsoM", &HLT_Photon90_R9Id90_HE10_IsoM, &b_HLT_Photon90_R9Id90_HE10_IsoM); + fChain->SetBranchAddress("HLT_PFMET200_HBHECleaned", &HLT_PFMET200_HBHECleaned, &b_HLT_PFMET200_HBHECleaned); + fChain->SetBranchAddress("HLT_DoubleL2Mu30NoVtx_2Cha_CosmicSeed_Eta2p4", &HLT_DoubleL2Mu30NoVtx_2Cha_CosmicSeed_Eta2p4, &b_HLT_DoubleL2Mu30NoVtx_2Cha_CosmicSeed_Eta2p4); + fChain->SetBranchAddress("HLT_BTagMu_AK8Jet170_DoubleMu5_noalgo", &HLT_BTagMu_AK8Jet170_DoubleMu5_noalgo, &b_HLT_BTagMu_AK8Jet170_DoubleMu5_noalgo); + fChain->SetBranchAddress("HLT_Mu8_IP6_part3", &HLT_Mu8_IP6_part3, &b_HLT_Mu8_IP6_part3); + fChain->SetBranchAddress("HLT_DoubleL2Mu25NoVtx_2Cha_CosmicSeed", &HLT_DoubleL2Mu25NoVtx_2Cha_CosmicSeed, &b_HLT_DoubleL2Mu25NoVtx_2Cha_CosmicSeed); + fChain->SetBranchAddress("HLT_AK8PFJet400", &HLT_AK8PFJet400, &b_HLT_AK8PFJet400); + fChain->SetBranchAddress("HLT_Mu23_Mu12_SameSign", &HLT_Mu23_Mu12_SameSign, &b_HLT_Mu23_Mu12_SameSign); + fChain->SetBranchAddress("HLT_DoubleMu3_Trk_Tau3mu", &HLT_DoubleMu3_Trk_Tau3mu, &b_HLT_DoubleMu3_Trk_Tau3mu); + fChain->SetBranchAddress("HLT_Mu27", &HLT_Mu27, &b_HLT_Mu27); + fChain->SetBranchAddress("HLT_AK8PFJetFwd500", &HLT_AK8PFJetFwd500, &b_HLT_AK8PFJetFwd500); + fChain->SetBranchAddress("HLT_AK4CaloJet30", &HLT_AK4CaloJet30, &b_HLT_AK4CaloJet30); + fChain->SetBranchAddress("HLT_Photon90", &HLT_Photon90, &b_HLT_Photon90); + fChain->SetBranchAddress("HLT_Dimuon18_PsiPrime_noCorrL1", &HLT_Dimuon18_PsiPrime_noCorrL1, &b_HLT_Dimuon18_PsiPrime_noCorrL1); + fChain->SetBranchAddress("HLT_Dimuon10_PsiPrime_Barrel_Seagulls", &HLT_Dimuon10_PsiPrime_Barrel_Seagulls, &b_HLT_Dimuon10_PsiPrime_Barrel_Seagulls); + fChain->SetBranchAddress("HLT_BTagMu_AK4DiJet70_Mu5", &HLT_BTagMu_AK4DiJet70_Mu5, &b_HLT_BTagMu_AK4DiJet70_Mu5); + fChain->SetBranchAddress("HLT_PFHT330PT30_QuadPFJet_75_60_45_40", &HLT_PFHT330PT30_QuadPFJet_75_60_45_40, &b_HLT_PFHT330PT30_QuadPFJet_75_60_45_40); + fChain->SetBranchAddress("HLT_PFJetFwd25", &HLT_PFJetFwd25, &b_HLT_PFJetFwd25); + fChain->SetBranchAddress("HLT_Ele38_WPTight_Gsf", &HLT_Ele38_WPTight_Gsf, &b_HLT_Ele38_WPTight_Gsf); + fChain->SetBranchAddress("HLT_Tau3Mu_Mu7_Mu1_TkMu1_IsoTau15", &HLT_Tau3Mu_Mu7_Mu1_TkMu1_IsoTau15, &b_HLT_Tau3Mu_Mu7_Mu1_TkMu1_IsoTau15); + fChain->SetBranchAddress("HLT_Mu7_IP4_part3", &HLT_Mu7_IP4_part3, &b_HLT_Mu7_IP4_part3); + fChain->SetBranchAddress("HLT_UncorrectedJetE30_NoBPTX", &HLT_UncorrectedJetE30_NoBPTX, &b_HLT_UncorrectedJetE30_NoBPTX); + fChain->SetBranchAddress("HLT_Ele23_CaloIdM_TrackIdM_PFJet30", &HLT_Ele23_CaloIdM_TrackIdM_PFJet30, &b_HLT_Ele23_CaloIdM_TrackIdM_PFJet30); + fChain->SetBranchAddress("HLT_HT425", &HLT_HT425, &b_HLT_HT425); + fChain->SetBranchAddress("HLT_DoubleMu20_7_Mass0to30_Photon23", &HLT_DoubleMu20_7_Mass0to30_Photon23, &b_HLT_DoubleMu20_7_Mass0to30_Photon23); + fChain->SetBranchAddress("HLT_TrkMu17_DoubleTrkMu8NoFiltersNoVtx", &HLT_TrkMu17_DoubleTrkMu8NoFiltersNoVtx, &b_HLT_TrkMu17_DoubleTrkMu8NoFiltersNoVtx); + fChain->SetBranchAddress("HLT_Mu8_DiEle12_CaloIdL_TrackIdL_DZ", &HLT_Mu8_DiEle12_CaloIdL_TrackIdL_DZ, &b_HLT_Mu8_DiEle12_CaloIdL_TrackIdL_DZ); + fChain->SetBranchAddress("HLT_Photon175", &HLT_Photon175, &b_HLT_Photon175); + fChain->SetBranchAddress("HLT_Ele20_WPLoose_Gsf", &HLT_Ele20_WPLoose_Gsf, &b_HLT_Ele20_WPLoose_Gsf); + fChain->SetBranchAddress("HLT_DoubleTightChargedIsoPFTauHPS35_Trk1_TightID_eta2p1_Reg", &HLT_DoubleTightChargedIsoPFTauHPS35_Trk1_TightID_eta2p1_Reg, &b_HLT_DoubleTightChargedIsoPFTauHPS35_Trk1_TightID_eta2p1_Reg); + fChain->SetBranchAddress("HLT_AK8PFJet260", &HLT_AK8PFJet260, &b_HLT_AK8PFJet260); + fChain->SetBranchAddress("HLT_Diphoton30_22_R9Id_OR_IsoCaloId_AND_HE_R9Id_Mass90", &HLT_Diphoton30_22_R9Id_OR_IsoCaloId_AND_HE_R9Id_Mass90, &b_HLT_Diphoton30_22_R9Id_OR_IsoCaloId_AND_HE_R9Id_Mass90); + fChain->SetBranchAddress("HLT_DoubleL2Mu25NoVtx_2Cha_CosmicSeed_NoL2Matched", &HLT_DoubleL2Mu25NoVtx_2Cha_CosmicSeed_NoL2Matched, &b_HLT_DoubleL2Mu25NoVtx_2Cha_CosmicSeed_NoL2Matched); + fChain->SetBranchAddress("HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_Mass3p8", &HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_Mass3p8, &b_HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_Mass3p8); + fChain->SetBranchAddress("HLT_Ele24_eta2p1_WPTight_Gsf_TightChargedIsoPFTauHPS30_eta2p1_TightID_CrossL1", &HLT_Ele24_eta2p1_WPTight_Gsf_TightChargedIsoPFTauHPS30_eta2p1_TightID_CrossL1, &b_HLT_Ele24_eta2p1_WPTight_Gsf_TightChargedIsoPFTauHPS30_eta2p1_TightID_CrossL1); + fChain->SetBranchAddress("HLT_Ele8_CaloIdM_TrackIdM_PFJet30", &HLT_Ele8_CaloIdM_TrackIdM_PFJet30, &b_HLT_Ele8_CaloIdM_TrackIdM_PFJet30); + fChain->SetBranchAddress("HLT_PFMETNoMu110_PFMHTNoMu110_IDTight", &HLT_PFMETNoMu110_PFMHTNoMu110_IDTight, &b_HLT_PFMETNoMu110_PFMHTNoMu110_IDTight); + fChain->SetBranchAddress("HLT_Photon110EB_TightID_TightIso", &HLT_Photon110EB_TightID_TightIso, &b_HLT_Photon110EB_TightID_TightIso); + fChain->SetBranchAddress("HLT_Mu7p5_Track2_Jpsi", &HLT_Mu7p5_Track2_Jpsi, &b_HLT_Mu7p5_Track2_Jpsi); + fChain->SetBranchAddress("HLT_PFMET120_PFMHT120_IDTight_PFHT60", &HLT_PFMET120_PFMHT120_IDTight_PFHT60, &b_HLT_PFMET120_PFMHT120_IDTight_PFHT60); + fChain->SetBranchAddress("HLT_Mu9_IP6_part2", &HLT_Mu9_IP6_part2, &b_HLT_Mu9_IP6_part2); + fChain->SetBranchAddress("HLT_CDC_L2cosmic_5p5_er1p0", &HLT_CDC_L2cosmic_5p5_er1p0, &b_HLT_CDC_L2cosmic_5p5_er1p0); + fChain->SetBranchAddress("HLT_DoubleMu33NoFiltersNoVtxDisplaced", &HLT_DoubleMu33NoFiltersNoVtxDisplaced, &b_HLT_DoubleMu33NoFiltersNoVtxDisplaced); + fChain->SetBranchAddress("HLT_HT430_DisplacedDijet40_DisplacedTrack", &HLT_HT430_DisplacedDijet40_DisplacedTrack, &b_HLT_HT430_DisplacedDijet40_DisplacedTrack); + fChain->SetBranchAddress("HLT_ZeroBias_FirstBXAfterTrain", &HLT_ZeroBias_FirstBXAfterTrain, &b_HLT_ZeroBias_FirstBXAfterTrain); + fChain->SetBranchAddress("HLT_AK8PFJetFwd320", &HLT_AK8PFJetFwd320, &b_HLT_AK8PFJetFwd320); + fChain->SetBranchAddress("HLT_CaloMET250_NotCleaned", &HLT_CaloMET250_NotCleaned, &b_HLT_CaloMET250_NotCleaned); + fChain->SetBranchAddress("HLT_Mu27_Ele37_CaloIdL_MW", &HLT_Mu27_Ele37_CaloIdL_MW, &b_HLT_Mu27_Ele37_CaloIdL_MW); + fChain->SetBranchAddress("HLT_Dimuon0_LowMass_L1_4R", &HLT_Dimuon0_LowMass_L1_4R, &b_HLT_Dimuon0_LowMass_L1_4R); + fChain->SetBranchAddress("HLT_RsqMR300_Rsq0p09_MR200", &HLT_RsqMR300_Rsq0p09_MR200, &b_HLT_RsqMR300_Rsq0p09_MR200); + fChain->SetBranchAddress("HLT_PFMETTypeOne100_PFMHT100_IDTight_PFHT60", &HLT_PFMETTypeOne100_PFMHT100_IDTight_PFHT60, &b_HLT_PFMETTypeOne100_PFMHT100_IDTight_PFHT60); + fChain->SetBranchAddress("HLT_AK4CaloJet120", &HLT_AK4CaloJet120, &b_HLT_AK4CaloJet120); + fChain->SetBranchAddress("HLT_AK8PFJet360_TrimMass30", &HLT_AK8PFJet360_TrimMass30, &b_HLT_AK8PFJet360_TrimMass30); + fChain->SetBranchAddress("HLT_Mu8_IP3_part1", &HLT_Mu8_IP3_part1, &b_HLT_Mu8_IP3_part1); + fChain->SetBranchAddress("HLT_Dimuon0_Jpsi3p5_Muon2", &HLT_Dimuon0_Jpsi3p5_Muon2, &b_HLT_Dimuon0_Jpsi3p5_Muon2); + fChain->SetBranchAddress("HLT_Ele145_CaloIdVT_GsfTrkIdT", &HLT_Ele145_CaloIdVT_GsfTrkIdT, &b_HLT_Ele145_CaloIdVT_GsfTrkIdT); + fChain->SetBranchAddress("HLT_Ele50_CaloIdVT_GsfTrkIdT_PFJet165", &HLT_Ele50_CaloIdVT_GsfTrkIdT_PFJet165, &b_HLT_Ele50_CaloIdVT_GsfTrkIdT_PFJet165); + fChain->SetBranchAddress("HLT_Dimuon25_Jpsi_noCorrL1", &HLT_Dimuon25_Jpsi_noCorrL1, &b_HLT_Dimuon25_Jpsi_noCorrL1); + fChain->SetBranchAddress("HLT_IsoMu24_eta2p1", &HLT_IsoMu24_eta2p1, &b_HLT_IsoMu24_eta2p1); + fChain->SetBranchAddress("HLT_Dimuon0_Jpsi_L1_4R_0er1p5R", &HLT_Dimuon0_Jpsi_L1_4R_0er1p5R, &b_HLT_Dimuon0_Jpsi_L1_4R_0er1p5R); + fChain->SetBranchAddress("HLT_Mu7_IP4_part1", &HLT_Mu7_IP4_part1, &b_HLT_Mu7_IP4_part1); + fChain->SetBranchAddress("HLT_HT300_Beamspot", &HLT_HT300_Beamspot, &b_HLT_HT300_Beamspot); + fChain->SetBranchAddress("HLT_DiJet110_35_Mjj650_PFMET120", &HLT_DiJet110_35_Mjj650_PFMET120, &b_HLT_DiJet110_35_Mjj650_PFMET120); + fChain->SetBranchAddress("HLT_DoubleL2Mu25NoVtx_2Cha_NoL2Matched", &HLT_DoubleL2Mu25NoVtx_2Cha_NoL2Matched, &b_HLT_DoubleL2Mu25NoVtx_2Cha_NoL2Matched); + fChain->SetBranchAddress("HLT_Mu3_PFJet40", &HLT_Mu3_PFJet40, &b_HLT_Mu3_PFJet40); + fChain->SetBranchAddress("HLT_Mu20_Mu10", &HLT_Mu20_Mu10, &b_HLT_Mu20_Mu10); + fChain->SetBranchAddress("HLT_AK8PFJet380_TrimMass30", &HLT_AK8PFJet380_TrimMass30, &b_HLT_AK8PFJet380_TrimMass30); + fChain->SetBranchAddress("HLT_DiJet110_35_Mjj650_PFMET110", &HLT_DiJet110_35_Mjj650_PFMET110, &b_HLT_DiJet110_35_Mjj650_PFMET110); + fChain->SetBranchAddress("HLT_Mu15_IsoVVVL_PFHT450_PFMET50", &HLT_Mu15_IsoVVVL_PFHT450_PFMET50, &b_HLT_Mu15_IsoVVVL_PFHT450_PFMET50); + fChain->SetBranchAddress("HLT_Mu9_IP5_part4", &HLT_Mu9_IP5_part4, &b_HLT_Mu9_IP5_part4); + fChain->SetBranchAddress("HLT_IsoMu20_eta2p1_MediumChargedIsoPFTauHPS27_eta2p1_TightID_CrossL1", &HLT_IsoMu20_eta2p1_MediumChargedIsoPFTauHPS27_eta2p1_TightID_CrossL1, &b_HLT_IsoMu20_eta2p1_MediumChargedIsoPFTauHPS27_eta2p1_TightID_CrossL1); + fChain->SetBranchAddress("HLT_IsoMu27_MediumChargedIsoPFTauHPS20_Trk1_eta2p1_SingleL1", &HLT_IsoMu27_MediumChargedIsoPFTauHPS20_Trk1_eta2p1_SingleL1, &b_HLT_IsoMu27_MediumChargedIsoPFTauHPS20_Trk1_eta2p1_SingleL1); + fChain->SetBranchAddress("HLT_BTagMu_AK4DiJet40_Mu5_noalgo", &HLT_BTagMu_AK4DiJet40_Mu5_noalgo, &b_HLT_BTagMu_AK4DiJet40_Mu5_noalgo); + fChain->SetBranchAddress("HLT_DoublePhoton70", &HLT_DoublePhoton70, &b_HLT_DoublePhoton70); + fChain->SetBranchAddress("HLT_Photon100EEHE10", &HLT_Photon100EEHE10, &b_HLT_Photon100EEHE10); + fChain->SetBranchAddress("HLT_PFJetFwd15", &HLT_PFJetFwd15, &b_HLT_PFJetFwd15); + fChain->SetBranchAddress("HLT_DoubleMu4_3_Bs", &HLT_DoubleMu4_3_Bs, &b_HLT_DoubleMu4_3_Bs); + fChain->SetBranchAddress("HLT_Mu9_IP5_part3", &HLT_Mu9_IP5_part3, &b_HLT_Mu9_IP5_part3); + fChain->SetBranchAddress("HLT_HcalNZS", &HLT_HcalNZS, &b_HLT_HcalNZS); + fChain->SetBranchAddress("HLT_Mu7p5_L2Mu2_Jpsi", &HLT_Mu7p5_L2Mu2_Jpsi, &b_HLT_Mu7p5_L2Mu2_Jpsi); + fChain->SetBranchAddress("HLT_Dimuon0_Upsilon_L1_4p5", &HLT_Dimuon0_Upsilon_L1_4p5, &b_HLT_Dimuon0_Upsilon_L1_4p5); + fChain->SetBranchAddress("HLT_AK8PFHT850_TrimMass50", &HLT_AK8PFHT850_TrimMass50, &b_HLT_AK8PFHT850_TrimMass50); + fChain->SetBranchAddress("HLT_DoubleMu4_Jpsi_NoVertexing", &HLT_DoubleMu4_Jpsi_NoVertexing, &b_HLT_DoubleMu4_Jpsi_NoVertexing); + fChain->SetBranchAddress("HLT_Mu3er1p5_PFJet100er2p5_PFMET100_PFMHT100_IDTight", &HLT_Mu3er1p5_PFJet100er2p5_PFMET100_PFMHT100_IDTight, &b_HLT_Mu3er1p5_PFJet100er2p5_PFMET100_PFMHT100_IDTight); + fChain->SetBranchAddress("HLT_DoubleEle8_CaloIdM_TrackIdM_Mass8_PFHT350", &HLT_DoubleEle8_CaloIdM_TrackIdM_Mass8_PFHT350, &b_HLT_DoubleEle8_CaloIdM_TrackIdM_Mass8_PFHT350); + fChain->SetBranchAddress("HLT_Ele15_IsoVVVL_PFHT450", &HLT_Ele15_IsoVVVL_PFHT450, &b_HLT_Ele15_IsoVVVL_PFHT450); + fChain->SetBranchAddress("HLT_Mu7p5_Track3p5_Jpsi", &HLT_Mu7p5_Track3p5_Jpsi, &b_HLT_Mu7p5_Track3p5_Jpsi); + fChain->SetBranchAddress("HLT_DiMu9_Ele9_CaloIdL_TrackIdL_DZ", &HLT_DiMu9_Ele9_CaloIdL_TrackIdL_DZ, &b_HLT_DiMu9_Ele9_CaloIdL_TrackIdL_DZ); + fChain->SetBranchAddress("HLT_QuadPFJet111_90_80_15_PFBTagDeepCSV_1p3_VBF2", &HLT_QuadPFJet111_90_80_15_PFBTagDeepCSV_1p3_VBF2, &b_HLT_QuadPFJet111_90_80_15_PFBTagDeepCSV_1p3_VBF2); + fChain->SetBranchAddress("HLT_PFJet200", &HLT_PFJet200, &b_HLT_PFJet200); + fChain->SetBranchAddress("HLT_AK8PFJetFwd450", &HLT_AK8PFJetFwd450, &b_HLT_AK8PFJetFwd450); + fChain->SetBranchAddress("HLT_Ele23_Ele12_CaloIdL_TrackIdL_IsoVL", &HLT_Ele23_Ele12_CaloIdL_TrackIdL_IsoVL, &b_HLT_Ele23_Ele12_CaloIdL_TrackIdL_IsoVL); + fChain->SetBranchAddress("HLT_Mu17_TrkIsoVVL", &HLT_Mu17_TrkIsoVVL, &b_HLT_Mu17_TrkIsoVVL); + fChain->SetBranchAddress("HLT_Rsq0p40", &HLT_Rsq0p40, &b_HLT_Rsq0p40); + fChain->SetBranchAddress("HLT_Physics_part3", &HLT_Physics_part3, &b_HLT_Physics_part3); + fChain->SetBranchAddress("HLT_DoublePhoton85", &HLT_DoublePhoton85, &b_HLT_DoublePhoton85); + fChain->SetBranchAddress("HLT_Dimuon12_Upsilon_y1p4", &HLT_Dimuon12_Upsilon_y1p4, &b_HLT_Dimuon12_Upsilon_y1p4); + fChain->SetBranchAddress("HLT_Ele20_eta2p1_WPLoose_Gsf", &HLT_Ele20_eta2p1_WPLoose_Gsf, &b_HLT_Ele20_eta2p1_WPLoose_Gsf); + fChain->SetBranchAddress("HLT_Mu8_IP6_part2", &HLT_Mu8_IP6_part2, &b_HLT_Mu8_IP6_part2); + fChain->SetBranchAddress("HLT_Mu12_DoublePFJets200_CaloBTagDeepCSV_p71", &HLT_Mu12_DoublePFJets200_CaloBTagDeepCSV_p71, &b_HLT_Mu12_DoublePFJets200_CaloBTagDeepCSV_p71); + fChain->SetBranchAddress("HLT_PFHT800_PFMET75_PFMHT75_IDTight", &HLT_PFHT800_PFMET75_PFMHT75_IDTight, &b_HLT_PFHT800_PFMET75_PFMHT75_IDTight); + fChain->SetBranchAddress("HLT_PFJetFwd260", &HLT_PFJetFwd260, &b_HLT_PFJetFwd260); + fChain->SetBranchAddress("HLT_PFHT800_PFMET85_PFMHT85_IDTight", &HLT_PFHT800_PFMET85_PFMHT85_IDTight, &b_HLT_PFHT800_PFMET85_PFMHT85_IDTight); + fChain->SetBranchAddress("HLT_DoubleMu4_3_Jpsi", &HLT_DoubleMu4_3_Jpsi, &b_HLT_DoubleMu4_3_Jpsi); + fChain->SetBranchAddress("HLT_AK8PFHT750_TrimMass50", &HLT_AK8PFHT750_TrimMass50, &b_HLT_AK8PFHT750_TrimMass50); + fChain->SetBranchAddress("HLT_ZeroBias_Beamspot", &HLT_ZeroBias_Beamspot, &b_HLT_ZeroBias_Beamspot); + fChain->SetBranchAddress("HLT_AK8PFJet450", &HLT_AK8PFJet450, &b_HLT_AK8PFJet450); + fChain->SetBranchAddress("HLT_HT430_DisplacedDijet60_DisplacedTrack", &HLT_HT430_DisplacedDijet60_DisplacedTrack, &b_HLT_HT430_DisplacedDijet60_DisplacedTrack); + fChain->SetBranchAddress("HLT_PFHT500_PFMET110_PFMHT110_IDTight", &HLT_PFHT500_PFMET110_PFMHT110_IDTight, &b_HLT_PFHT500_PFMET110_PFMHT110_IDTight); + fChain->SetBranchAddress("HLT_Dimuon24_Phi_noCorrL1", &HLT_Dimuon24_Phi_noCorrL1, &b_HLT_Dimuon24_Phi_noCorrL1); + fChain->SetBranchAddress("HLT_PFHT430", &HLT_PFHT430, &b_HLT_PFHT430); + fChain->SetBranchAddress("HLT_OldMu100", &HLT_OldMu100, &b_HLT_OldMu100); + fChain->SetBranchAddress("HLT_DoubleMu3_DoubleEle7p5_CaloIdL_TrackIdL_Upsilon", &HLT_DoubleMu3_DoubleEle7p5_CaloIdL_TrackIdL_Upsilon, &b_HLT_DoubleMu3_DoubleEle7p5_CaloIdL_TrackIdL_Upsilon); + fChain->SetBranchAddress("HLT_PFJet400", &HLT_PFJet400, &b_HLT_PFJet400); + fChain->SetBranchAddress("HLT_Mu12_IP6_part3", &HLT_Mu12_IP6_part3, &b_HLT_Mu12_IP6_part3); + fChain->SetBranchAddress("HLT_AK4CaloJet80", &HLT_AK4CaloJet80, &b_HLT_AK4CaloJet80); + fChain->SetBranchAddress("HLT_DiPFJetAve200", &HLT_DiPFJetAve200, &b_HLT_DiPFJetAve200); + fChain->SetBranchAddress("HLT_QuadPFJet103_88_75_15", &HLT_QuadPFJet103_88_75_15, &b_HLT_QuadPFJet103_88_75_15); + fChain->SetBranchAddress("HLT_VBF_DoubleLooseChargedIsoPFTauHPS20_Trk1_eta2p1", &HLT_VBF_DoubleLooseChargedIsoPFTauHPS20_Trk1_eta2p1, &b_HLT_VBF_DoubleLooseChargedIsoPFTauHPS20_Trk1_eta2p1); + fChain->SetBranchAddress("HLT_PFMET140_PFMHT140_IDTight_CaloBTagDeepCSV_3p1", &HLT_PFMET140_PFMHT140_IDTight_CaloBTagDeepCSV_3p1, &b_HLT_PFMET140_PFMHT140_IDTight_CaloBTagDeepCSV_3p1); + fChain->SetBranchAddress("HLT_IsoMu20_eta2p1_MediumChargedIsoPFTauHPS27_eta2p1_CrossL1", &HLT_IsoMu20_eta2p1_MediumChargedIsoPFTauHPS27_eta2p1_CrossL1, &b_HLT_IsoMu20_eta2p1_MediumChargedIsoPFTauHPS27_eta2p1_CrossL1); + fChain->SetBranchAddress("HLT_Mu7_IP4_part0", &HLT_Mu7_IP4_part0, &b_HLT_Mu7_IP4_part0); + fChain->SetBranchAddress("HLT_AK8PFJet420_TrimMass30", &HLT_AK8PFJet420_TrimMass30, &b_HLT_AK8PFJet420_TrimMass30); + fChain->SetBranchAddress("HLT_Mu8_Ele8_CaloIdM_TrackIdM_Mass8_PFHT350", &HLT_Mu8_Ele8_CaloIdM_TrackIdM_Mass8_PFHT350, &b_HLT_Mu8_Ele8_CaloIdM_TrackIdM_Mass8_PFHT350); + fChain->SetBranchAddress("HLT_TripleMu_5_3_3_Mass3p8_DCA", &HLT_TripleMu_5_3_3_Mass3p8_DCA, &b_HLT_TripleMu_5_3_3_Mass3p8_DCA); + fChain->SetBranchAddress("HLT_MediumChargedIsoPFTau180HighPtRelaxedIso_Trk50_eta2p1", &HLT_MediumChargedIsoPFTau180HighPtRelaxedIso_Trk50_eta2p1, &b_HLT_MediumChargedIsoPFTau180HighPtRelaxedIso_Trk50_eta2p1); + fChain->SetBranchAddress("HLT_PFJetFwd500", &HLT_PFJetFwd500, &b_HLT_PFJetFwd500); + fChain->SetBranchAddress("HLT_Ele15_IsoVVVL_PFHT450_CaloBTagDeepCSV_4p5", &HLT_Ele15_IsoVVVL_PFHT450_CaloBTagDeepCSV_4p5, &b_HLT_Ele15_IsoVVVL_PFHT450_CaloBTagDeepCSV_4p5); + fChain->SetBranchAddress("HLT_Physics", &HLT_Physics, &b_HLT_Physics); + fChain->SetBranchAddress("HLT_PFJet260", &HLT_PFJet260, &b_HLT_PFJet260); + fChain->SetBranchAddress("HLT_Tau3Mu_Mu7_Mu1_TkMu1_Tau15", &HLT_Tau3Mu_Mu7_Mu1_TkMu1_Tau15, &b_HLT_Tau3Mu_Mu7_Mu1_TkMu1_Tau15); + fChain->SetBranchAddress("HLT_TriplePhoton_20_20_20_CaloIdLV2_R9IdVL", &HLT_TriplePhoton_20_20_20_CaloIdLV2_R9IdVL, &b_HLT_TriplePhoton_20_20_20_CaloIdLV2_R9IdVL); + fChain->SetBranchAddress("HLT_AK8PFJet550", &HLT_AK8PFJet550, &b_HLT_AK8PFJet550); + fChain->SetBranchAddress("HLT_DoubleMediumChargedIsoPFTauHPS35_Trk1_TightID_eta2p1_Reg", &HLT_DoubleMediumChargedIsoPFTauHPS35_Trk1_TightID_eta2p1_Reg, &b_HLT_DoubleMediumChargedIsoPFTauHPS35_Trk1_TightID_eta2p1_Reg); + fChain->SetBranchAddress("HLT_DoubleMu40NoFiltersNoVtxDisplaced", &HLT_DoubleMu40NoFiltersNoVtxDisplaced, &b_HLT_DoubleMu40NoFiltersNoVtxDisplaced); + fChain->SetBranchAddress("HLT_Mu3_L1SingleMu5orSingleMu7", &HLT_Mu3_L1SingleMu5orSingleMu7, &b_HLT_Mu3_L1SingleMu5orSingleMu7); + fChain->SetBranchAddress("HLT_Mu23_TrkIsoVVL_Ele12_CaloIdL_TrackIdL_IsoVL_DZ", &HLT_Mu23_TrkIsoVVL_Ele12_CaloIdL_TrackIdL_IsoVL_DZ, &b_HLT_Mu23_TrkIsoVVL_Ele12_CaloIdL_TrackIdL_IsoVL_DZ); + fChain->SetBranchAddress("HLT_Dimuon0_Upsilon_Muon_NoL1Mass", &HLT_Dimuon0_Upsilon_Muon_NoL1Mass, &b_HLT_Dimuon0_Upsilon_Muon_NoL1Mass); + fChain->SetBranchAddress("HLT_ZeroBias_part5", &HLT_ZeroBias_part5, &b_HLT_ZeroBias_part5); + fChain->SetBranchAddress("HLT_IsoMu27", &HLT_IsoMu27, &b_HLT_IsoMu27); + fChain->SetBranchAddress("HLT_DoubleEle25_CaloIdL_MW", &HLT_DoubleEle25_CaloIdL_MW, &b_HLT_DoubleEle25_CaloIdL_MW); + fChain->SetBranchAddress("HLT_TkMu100", &HLT_TkMu100, &b_HLT_TkMu100); + fChain->SetBranchAddress("HLT_PFJet15", &HLT_PFJet15, &b_HLT_PFJet15); + fChain->SetBranchAddress("HLT_DoubleMu4_Mass3p8_DZ_PFHT350", &HLT_DoubleMu4_Mass3p8_DZ_PFHT350, &b_HLT_DoubleMu4_Mass3p8_DZ_PFHT350); + fChain->SetBranchAddress("HLT_IsoMu20_eta2p1_TightChargedIsoPFTauHPS27_eta2p1_TightID_CrossL1", &HLT_IsoMu20_eta2p1_TightChargedIsoPFTauHPS27_eta2p1_TightID_CrossL1, &b_HLT_IsoMu20_eta2p1_TightChargedIsoPFTauHPS27_eta2p1_TightID_CrossL1); + fChain->SetBranchAddress("HLT_Mu8_IP5_part1", &HLT_Mu8_IP5_part1, &b_HLT_Mu8_IP5_part1); + fChain->SetBranchAddress("HLT_Ele32_WPTight_Gsf", &HLT_Ele32_WPTight_Gsf, &b_HLT_Ele32_WPTight_Gsf); + fChain->SetBranchAddress("HLT_HT500_DisplacedDijet40_DisplacedTrack", &HLT_HT500_DisplacedDijet40_DisplacedTrack, &b_HLT_HT500_DisplacedDijet40_DisplacedTrack); + fChain->SetBranchAddress("HLT_Photon20", &HLT_Photon20, &b_HLT_Photon20); + fChain->SetBranchAddress("HLT_Mu3er1p5_PFJet100er2p5_PFMETNoMu90_PFMHTNoMu90_IDTight", &HLT_Mu3er1p5_PFJet100er2p5_PFMETNoMu90_PFMHTNoMu90_IDTight, &b_HLT_Mu3er1p5_PFJet100er2p5_PFMETNoMu90_PFMHTNoMu90_IDTight); + fChain->SetBranchAddress("HLT_Mu9_IP4_part3", &HLT_Mu9_IP4_part3, &b_HLT_Mu9_IP4_part3); + fChain->SetBranchAddress("HLT_AK4PFJet80", &HLT_AK4PFJet80, &b_HLT_AK4PFJet80); + fChain->SetBranchAddress("HLT_DoubleMu3_TkMu_DsTau3Mu", &HLT_DoubleMu3_TkMu_DsTau3Mu, &b_HLT_DoubleMu3_TkMu_DsTau3Mu); + fChain->SetBranchAddress("HLT_IsoMu24_eta2p1_MediumChargedIsoPFTauHPS35_Trk1_TightID_eta2p1_Reg_CrossL1", &HLT_IsoMu24_eta2p1_MediumChargedIsoPFTauHPS35_Trk1_TightID_eta2p1_Reg_CrossL1, &b_HLT_IsoMu24_eta2p1_MediumChargedIsoPFTauHPS35_Trk1_TightID_eta2p1_Reg_CrossL1); + fChain->SetBranchAddress("HLT_DoubleTightChargedIsoPFTauHPS35_Trk1_eta2p1_Reg", &HLT_DoubleTightChargedIsoPFTauHPS35_Trk1_eta2p1_Reg, &b_HLT_DoubleTightChargedIsoPFTauHPS35_Trk1_eta2p1_Reg); + fChain->SetBranchAddress("HLT_DiPFJetAve40", &HLT_DiPFJetAve40, &b_HLT_DiPFJetAve40); + fChain->SetBranchAddress("HLT_PFMET250_HBHECleaned", &HLT_PFMET250_HBHECleaned, &b_HLT_PFMET250_HBHECleaned); + fChain->SetBranchAddress("HLT_UncorrectedJetE70_NoBPTX3BX", &HLT_UncorrectedJetE70_NoBPTX3BX, &b_HLT_UncorrectedJetE70_NoBPTX3BX); + fChain->SetBranchAddress("HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_Mass8", &HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_Mass8, &b_HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_Mass8); + fChain->SetBranchAddress("HLT_PFHT350", &HLT_PFHT350, &b_HLT_PFHT350); + fChain->SetBranchAddress("HLT_PFMETNoMu100_PFMHTNoMu100_IDTight_PFHT60", &HLT_PFMETNoMu100_PFMHTNoMu100_IDTight_PFHT60, &b_HLT_PFMETNoMu100_PFMHTNoMu100_IDTight_PFHT60); + fChain->SetBranchAddress("HLT_Photon50_R9Id90_HE10_IsoM_EBOnly_PFJetsMJJ300DEta3_PFMET50", &HLT_Photon50_R9Id90_HE10_IsoM_EBOnly_PFJetsMJJ300DEta3_PFMET50, &b_HLT_Photon50_R9Id90_HE10_IsoM_EBOnly_PFJetsMJJ300DEta3_PFMET50); + fChain->SetBranchAddress("HLT_DiSC30_18_EIso_AND_HE_Mass70", &HLT_DiSC30_18_EIso_AND_HE_Mass70, &b_HLT_DiSC30_18_EIso_AND_HE_Mass70); + fChain->SetBranchAddress("HLT_Dimuon0_Upsilon_L1_4p5NoOS", &HLT_Dimuon0_Upsilon_L1_4p5NoOS, &b_HLT_Dimuon0_Upsilon_L1_4p5NoOS); + fChain->SetBranchAddress("HLT_DoubleMu2_Jpsi_DoubleTrk1_Phi1p05", &HLT_DoubleMu2_Jpsi_DoubleTrk1_Phi1p05, &b_HLT_DoubleMu2_Jpsi_DoubleTrk1_Phi1p05); + fChain->SetBranchAddress("HLT_Mu12", &HLT_Mu12, &b_HLT_Mu12); + fChain->SetBranchAddress("HLT_BTagMu_AK4DiJet40_Mu5", &HLT_BTagMu_AK4DiJet40_Mu5, &b_HLT_BTagMu_AK4DiJet40_Mu5); + fChain->SetBranchAddress("HLT_Mu38NoFiltersNoVtxDisplaced_Photon38_CaloIdL", &HLT_Mu38NoFiltersNoVtxDisplaced_Photon38_CaloIdL, &b_HLT_Mu38NoFiltersNoVtxDisplaced_Photon38_CaloIdL); + fChain->SetBranchAddress("HLT_TripleJet110_35_35_Mjj650_PFMET110", &HLT_TripleJet110_35_35_Mjj650_PFMET110, &b_HLT_TripleJet110_35_35_Mjj650_PFMET110); + fChain->SetBranchAddress("HLT_MET120_IsoTrk50", &HLT_MET120_IsoTrk50, &b_HLT_MET120_IsoTrk50); + fChain->SetBranchAddress("HLT_BTagMu_AK8Jet170_DoubleMu5", &HLT_BTagMu_AK8Jet170_DoubleMu5, &b_HLT_BTagMu_AK8Jet170_DoubleMu5); + fChain->SetBranchAddress("HLT_CaloMET300_HBHECleaned", &HLT_CaloMET300_HBHECleaned, &b_HLT_CaloMET300_HBHECleaned); + fChain->SetBranchAddress("HLT_Photon60_R9Id90_CaloIdL_IsoL_DisplacedIdL", &HLT_Photon60_R9Id90_CaloIdL_IsoL_DisplacedIdL, &b_HLT_Photon60_R9Id90_CaloIdL_IsoL_DisplacedIdL); + fChain->SetBranchAddress("HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ", &HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ, &b_HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ); + fChain->SetBranchAddress("HLT_Mu9_IP6_part0", &HLT_Mu9_IP6_part0, &b_HLT_Mu9_IP6_part0); + fChain->SetBranchAddress("HLT_PFJetFwd450", &HLT_PFJetFwd450, &b_HLT_PFJetFwd450); + fChain->SetBranchAddress("HLT_Ele8_CaloIdL_TrackIdL_IsoVL_PFJet30", &HLT_Ele8_CaloIdL_TrackIdL_IsoVL_PFJet30, &b_HLT_Ele8_CaloIdL_TrackIdL_IsoVL_PFJet30); + fChain->SetBranchAddress("HLT_Mu55", &HLT_Mu55, &b_HLT_Mu55); + fChain->SetBranchAddress("HLT_QuadPFJet105_88_76_15_DoublePFBTagDeepCSV_1p3_7p7_VBF1", &HLT_QuadPFJet105_88_76_15_DoublePFBTagDeepCSV_1p3_7p7_VBF1, &b_HLT_QuadPFJet105_88_76_15_DoublePFBTagDeepCSV_1p3_7p7_VBF1); + fChain->SetBranchAddress("HLT_PFMETTypeOne130_PFMHT130_IDTight", &HLT_PFMETTypeOne130_PFMHT130_IDTight, &b_HLT_PFMETTypeOne130_PFMHT130_IDTight); + fChain->SetBranchAddress("HLT_Diphoton30_18_R9IdL_AND_HE_AND_IsoCaloId_NoPixelVeto_Mass55", &HLT_Diphoton30_18_R9IdL_AND_HE_AND_IsoCaloId_NoPixelVeto_Mass55, &b_HLT_Diphoton30_18_R9IdL_AND_HE_AND_IsoCaloId_NoPixelVeto_Mass55); + fChain->SetBranchAddress("HLT_PFMETTypeOne200_HBHE_BeamHaloCleaned", &HLT_PFMETTypeOne200_HBHE_BeamHaloCleaned, &b_HLT_PFMETTypeOne200_HBHE_BeamHaloCleaned); + fChain->SetBranchAddress("HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET110", &HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET110, &b_HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET110); + fChain->SetBranchAddress("HLT_L1SingleMu25", &HLT_L1SingleMu25, &b_HLT_L1SingleMu25); + fChain->SetBranchAddress("HLT_BTagMu_AK4Jet300_Mu5", &HLT_BTagMu_AK4Jet300_Mu5, &b_HLT_BTagMu_AK4Jet300_Mu5); + fChain->SetBranchAddress("HLT_DoubleMu3_DZ_PFMET50_PFMHT60", &HLT_DoubleMu3_DZ_PFMET50_PFMHT60, &b_HLT_DoubleMu3_DZ_PFMET50_PFMHT60); + fChain->SetBranchAddress("HLT_L1ETMHadSeeds", &HLT_L1ETMHadSeeds, &b_HLT_L1ETMHadSeeds); + fChain->SetBranchAddress("HLT_Ele12_CaloIdL_TrackIdL_IsoVL_PFJet30", &HLT_Ele12_CaloIdL_TrackIdL_IsoVL_PFJet30, &b_HLT_Ele12_CaloIdL_TrackIdL_IsoVL_PFJet30); + fChain->SetBranchAddress("HLT_DiPFJetAve140", &HLT_DiPFJetAve140, &b_HLT_DiPFJetAve140); + fChain->SetBranchAddress("HLT_ZeroBias_part3", &HLT_ZeroBias_part3, &b_HLT_ZeroBias_part3); + fChain->SetBranchAddress("HLT_AK8PFJet330_TrimMass30_PFAK8BoostedDoubleB_p02", &HLT_AK8PFJet330_TrimMass30_PFAK8BoostedDoubleB_p02, &b_HLT_AK8PFJet330_TrimMass30_PFAK8BoostedDoubleB_p02); + fChain->SetBranchAddress("HLT_Mu8_DiEle12_CaloIdL_TrackIdL", &HLT_Mu8_DiEle12_CaloIdL_TrackIdL, &b_HLT_Mu8_DiEle12_CaloIdL_TrackIdL); + fChain->SetBranchAddress("HLT_DiEle27_WPTightCaloOnly_L1DoubleEG", &HLT_DiEle27_WPTightCaloOnly_L1DoubleEG, &b_HLT_DiEle27_WPTightCaloOnly_L1DoubleEG); + fChain->SetBranchAddress("HLT_AK8PFJetFwd40", &HLT_AK8PFJetFwd40, &b_HLT_AK8PFJetFwd40); + fChain->SetBranchAddress("HLT_CaloJet500_NoJetID", &HLT_CaloJet500_NoJetID, &b_HLT_CaloJet500_NoJetID); + fChain->SetBranchAddress("HLT_MonoCentralPFJet80_PFMETNoMu130_PFMHTNoMu130_IDTight", &HLT_MonoCentralPFJet80_PFMETNoMu130_PFMHTNoMu130_IDTight, &b_HLT_MonoCentralPFJet80_PFMETNoMu130_PFMHTNoMu130_IDTight); + fChain->SetBranchAddress("HLT_Photon33", &HLT_Photon33, &b_HLT_Photon33); + fChain->SetBranchAddress("HLT_VBF_DoubleTightChargedIsoPFTauHPS20_Trk1_eta2p1", &HLT_VBF_DoubleTightChargedIsoPFTauHPS20_Trk1_eta2p1, &b_HLT_VBF_DoubleTightChargedIsoPFTauHPS20_Trk1_eta2p1); + fChain->SetBranchAddress("HLT_Ele23_CaloIdL_TrackIdL_IsoVL_PFJet30", &HLT_Ele23_CaloIdL_TrackIdL_IsoVL_PFJet30, &b_HLT_Ele23_CaloIdL_TrackIdL_IsoVL_PFJet30); + fChain->SetBranchAddress("HLT_BTagMu_AK4DiJet20_Mu5_noalgo", &HLT_BTagMu_AK4DiJet20_Mu5_noalgo, &b_HLT_BTagMu_AK4DiJet20_Mu5_noalgo); + fChain->SetBranchAddress("HLT_DoubleL2Mu23NoVtx_2Cha_CosmicSeed", &HLT_DoubleL2Mu23NoVtx_2Cha_CosmicSeed, &b_HLT_DoubleL2Mu23NoVtx_2Cha_CosmicSeed); + fChain->SetBranchAddress("HLT_Dimuon0_Upsilon_L1_4p5er2p0M", &HLT_Dimuon0_Upsilon_L1_4p5er2p0M, &b_HLT_Dimuon0_Upsilon_L1_4p5er2p0M); + fChain->SetBranchAddress("HLT_Ele30_eta2p1_WPTight_Gsf_CentralPFJet35_EleCleaned", &HLT_Ele30_eta2p1_WPTight_Gsf_CentralPFJet35_EleCleaned, &b_HLT_Ele30_eta2p1_WPTight_Gsf_CentralPFJet35_EleCleaned); + fChain->SetBranchAddress("HLT_AK8PFJetFwd400", &HLT_AK8PFJetFwd400, &b_HLT_AK8PFJetFwd400); + fChain->SetBranchAddress("HLT_PFJet450", &HLT_PFJet450, &b_HLT_PFJet450); + fChain->SetBranchAddress("HLT_Ele24_eta2p1_WPTight_Gsf_TightChargedIsoPFTauHPS30_eta2p1_CrossL1", &HLT_Ele24_eta2p1_WPTight_Gsf_TightChargedIsoPFTauHPS30_eta2p1_CrossL1, &b_HLT_Ele24_eta2p1_WPTight_Gsf_TightChargedIsoPFTauHPS30_eta2p1_CrossL1); + fChain->SetBranchAddress("HLT_Physics_part5", &HLT_Physics_part5, &b_HLT_Physics_part5); + fChain->SetBranchAddress("HLT_ZeroBias", &HLT_ZeroBias, &b_HLT_ZeroBias); + fChain->SetBranchAddress("HLT_ZeroBias_part1", &HLT_ZeroBias_part1, &b_HLT_ZeroBias_part1); + fChain->SetBranchAddress("HLT_Mu25_TkMu0_Onia", &HLT_Mu25_TkMu0_Onia, &b_HLT_Mu25_TkMu0_Onia); + fChain->SetBranchAddress("HLT_Ele35_WPTight_Gsf_L1EGMT", &HLT_Ele35_WPTight_Gsf_L1EGMT, &b_HLT_Ele35_WPTight_Gsf_L1EGMT); + fChain->SetBranchAddress("HLT_CaloMET100_HBHECleaned", &HLT_CaloMET100_HBHECleaned, &b_HLT_CaloMET100_HBHECleaned); + fChain->SetBranchAddress("HLT_AK4PFJet120", &HLT_AK4PFJet120, &b_HLT_AK4PFJet120); + fChain->SetBranchAddress("HLT_DiPFJetAve60_HFJEC", &HLT_DiPFJetAve60_HFJEC, &b_HLT_DiPFJetAve60_HFJEC); + fChain->SetBranchAddress("HLT_Photon75", &HLT_Photon75, &b_HLT_Photon75); + fChain->SetBranchAddress("HLT_Tau3Mu_Mu7_Mu1_TkMu1_Tau15_Charge1", &HLT_Tau3Mu_Mu7_Mu1_TkMu1_Tau15_Charge1, &b_HLT_Tau3Mu_Mu7_Mu1_TkMu1_Tau15_Charge1); + fChain->SetBranchAddress("HLT_Mu19_TrkIsoVVL", &HLT_Mu19_TrkIsoVVL, &b_HLT_Mu19_TrkIsoVVL); + fChain->SetBranchAddress("HLT_Mu20_TkMu0_Phi", &HLT_Mu20_TkMu0_Phi, &b_HLT_Mu20_TkMu0_Phi); + fChain->SetBranchAddress("HLT_HT450_Beamspot", &HLT_HT450_Beamspot, &b_HLT_HT450_Beamspot); + fChain->SetBranchAddress("HLT_Mu7p5_Track2_Upsilon", &HLT_Mu7p5_Track2_Upsilon, &b_HLT_Mu7p5_Track2_Upsilon); + fChain->SetBranchAddress("HLT_IsoMu27_LooseChargedIsoPFTauHPS20_Trk1_eta2p1_SingleL1", &HLT_IsoMu27_LooseChargedIsoPFTauHPS20_Trk1_eta2p1_SingleL1, &b_HLT_IsoMu27_LooseChargedIsoPFTauHPS20_Trk1_eta2p1_SingleL1); + fChain->SetBranchAddress("HLT_PFMETNoMu140_PFMHTNoMu140_IDTight", &HLT_PFMETNoMu140_PFMHTNoMu140_IDTight, &b_HLT_PFMETNoMu140_PFMHTNoMu140_IDTight); + fChain->SetBranchAddress("HLT_DoubleEle24_eta2p1_WPTight_Gsf", &HLT_DoubleEle24_eta2p1_WPTight_Gsf, &b_HLT_DoubleEle24_eta2p1_WPTight_Gsf); + fChain->SetBranchAddress("HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ", &HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ, &b_HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ); + fChain->SetBranchAddress("HLT_Ele20_WPTight_Gsf", &HLT_Ele20_WPTight_Gsf, &b_HLT_Ele20_WPTight_Gsf); + fChain->SetBranchAddress("HLT_AK8PFJetFwd15", &HLT_AK8PFJetFwd15, &b_HLT_AK8PFJetFwd15); + fChain->SetBranchAddress("HLT_Mu15_IsoVVVL_PFHT450_CaloBTagDeepCSV_4p5", &HLT_Mu15_IsoVVVL_PFHT450_CaloBTagDeepCSV_4p5, &b_HLT_Mu15_IsoVVVL_PFHT450_CaloBTagDeepCSV_4p5); + fChain->SetBranchAddress("HLT_Mu3er1p5_PFJet100er2p5_PFMETNoMu80_PFMHTNoMu80_IDTight", &HLT_Mu3er1p5_PFJet100er2p5_PFMETNoMu80_PFMHTNoMu80_IDTight, &b_HLT_Mu3er1p5_PFJet100er2p5_PFMETNoMu80_PFMHTNoMu80_IDTight); + fChain->SetBranchAddress("HLT_DoubleMu3_DCA_PFMET50_PFMHT60", &HLT_DoubleMu3_DCA_PFMET50_PFMHT60, &b_HLT_DoubleMu3_DCA_PFMET50_PFMHT60); + fChain->SetBranchAddress("HLT_Mu20_Mu10_DZ", &HLT_Mu20_Mu10_DZ, &b_HLT_Mu20_Mu10_DZ); + fChain->SetBranchAddress("HLT_Photon300_NoHE", &HLT_Photon300_NoHE, &b_HLT_Photon300_NoHE); + fChain->SetBranchAddress("HLT_DiPFJetAve300_HFJEC", &HLT_DiPFJetAve300_HFJEC, &b_HLT_DiPFJetAve300_HFJEC); + fChain->SetBranchAddress("HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL", &HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL, &b_HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL); + fChain->SetBranchAddress("HLT_DoubleIsoMu20_eta2p1", &HLT_DoubleIsoMu20_eta2p1, &b_HLT_DoubleIsoMu20_eta2p1); + fChain->SetBranchAddress("HLT_HT400_DisplacedDijet40_DisplacedTrack", &HLT_HT400_DisplacedDijet40_DisplacedTrack, &b_HLT_HT400_DisplacedDijet40_DisplacedTrack); + fChain->SetBranchAddress("HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr", &HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr, &b_HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr); + fChain->SetBranchAddress("HLT_Dimuon0_Jpsi_NoVertexing_L1_4R_0er1p5R", &HLT_Dimuon0_Jpsi_NoVertexing_L1_4R_0er1p5R, &b_HLT_Dimuon0_Jpsi_NoVertexing_L1_4R_0er1p5R); + fChain->SetBranchAddress("HLT_PFJet25", &HLT_PFJet25, &b_HLT_PFJet25); + fChain->SetBranchAddress("HLT_Photon100EE_TightID_TightIso", &HLT_Photon100EE_TightID_TightIso, &b_HLT_Photon100EE_TightID_TightIso); + fChain->SetBranchAddress("HLT_DoubleEle33_CaloIdL_MW", &HLT_DoubleEle33_CaloIdL_MW, &b_HLT_DoubleEle33_CaloIdL_MW); + fChain->SetBranchAddress("HLT_Ele32_WPTight_Gsf_L1DoubleEG", &HLT_Ele32_WPTight_Gsf_L1DoubleEG, &b_HLT_Ele32_WPTight_Gsf_L1DoubleEG); + fChain->SetBranchAddress("HLT_DoubleL2Mu50", &HLT_DoubleL2Mu50, &b_HLT_DoubleL2Mu50); + fChain->SetBranchAddress("HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass3p8", &HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass3p8, &b_HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass3p8); + fChain->SetBranchAddress("HLT_DoubleMu3_DZ_PFMET90_PFMHT90", &HLT_DoubleMu3_DZ_PFMET90_PFMHT90, &b_HLT_DoubleMu3_DZ_PFMET90_PFMHT90); + fChain->SetBranchAddress("HLT_Mu7p5_L2Mu2_Upsilon", &HLT_Mu7p5_L2Mu2_Upsilon, &b_HLT_Mu7p5_L2Mu2_Upsilon); + fChain->SetBranchAddress("HLT_ZeroBias_FirstCollisionAfterAbortGap", &HLT_ZeroBias_FirstCollisionAfterAbortGap, &b_HLT_ZeroBias_FirstCollisionAfterAbortGap); + fChain->SetBranchAddress("HLT_PFJet80", &HLT_PFJet80, &b_HLT_PFJet80); + fChain->SetBranchAddress("HLT_Mu23_Mu12_SameSign_DZ", &HLT_Mu23_Mu12_SameSign_DZ, &b_HLT_Mu23_Mu12_SameSign_DZ); + fChain->SetBranchAddress("HLT_Mu12_DoublePFJets40_CaloBTagDeepCSV_p71", &HLT_Mu12_DoublePFJets40_CaloBTagDeepCSV_p71, &b_HLT_Mu12_DoublePFJets40_CaloBTagDeepCSV_p71); + fChain->SetBranchAddress("HLT_Dimuon18_PsiPrime", &HLT_Dimuon18_PsiPrime, &b_HLT_Dimuon18_PsiPrime); + fChain->SetBranchAddress("HLT_Physics_part7", &HLT_Physics_part7, &b_HLT_Physics_part7); + fChain->SetBranchAddress("HLT_IsoMu27_MET90", &HLT_IsoMu27_MET90, &b_HLT_IsoMu27_MET90); + fChain->SetBranchAddress("HLT_AK8PFJetFwd80", &HLT_AK8PFJetFwd80, &b_HLT_AK8PFJetFwd80); + fChain->SetBranchAddress("HLT_IsoTrackHE", &HLT_IsoTrackHE, &b_HLT_IsoTrackHE); + fChain->SetBranchAddress("HLT_DoubleMu4_Jpsi_Displaced", &HLT_DoubleMu4_Jpsi_Displaced, &b_HLT_DoubleMu4_Jpsi_Displaced); + fChain->SetBranchAddress("HLT_Mu10_TrkIsoVVL_DiPFJet40_DEta3p5_MJJ750_HTT350_PFMETNoMu60", &HLT_Mu10_TrkIsoVVL_DiPFJet40_DEta3p5_MJJ750_HTT350_PFMETNoMu60, &b_HLT_Mu10_TrkIsoVVL_DiPFJet40_DEta3p5_MJJ750_HTT350_PFMETNoMu60); + fChain->SetBranchAddress("HLT_DoublePFJets128MaxDeta1p6_DoubleCaloBTagDeepCSV_p71", &HLT_DoublePFJets128MaxDeta1p6_DoubleCaloBTagDeepCSV_p71, &b_HLT_DoublePFJets128MaxDeta1p6_DoubleCaloBTagDeepCSV_p71); + fChain->SetBranchAddress("HLT_DoubleTightChargedIsoPFTauHPS40_Trk1_TightID_eta2p1_Reg", &HLT_DoubleTightChargedIsoPFTauHPS40_Trk1_TightID_eta2p1_Reg, &b_HLT_DoubleTightChargedIsoPFTauHPS40_Trk1_TightID_eta2p1_Reg); + fChain->SetBranchAddress("HLT_Mu3er1p5_PFJet100er2p5_PFMET70_PFMHT70_IDTight", &HLT_Mu3er1p5_PFJet100er2p5_PFMET70_PFMHT70_IDTight, &b_HLT_Mu3er1p5_PFJet100er2p5_PFMET70_PFMHT70_IDTight); + fChain->SetBranchAddress("HLT_PFJet500", &HLT_PFJet500, &b_HLT_PFJet500); + fChain->SetBranchAddress("HLT_AK8PFJet140", &HLT_AK8PFJet140, &b_HLT_AK8PFJet140); + fChain->SetBranchAddress("HLT_PFMET100_PFMHT100_IDTight_CaloBTagDeepCSV_3p1", &HLT_PFMET100_PFMHT100_IDTight_CaloBTagDeepCSV_3p1, &b_HLT_PFMET100_PFMHT100_IDTight_CaloBTagDeepCSV_3p1); + fChain->SetBranchAddress("HLT_Ele28_HighEta_SC20_Mass55", &HLT_Ele28_HighEta_SC20_Mass55, &b_HLT_Ele28_HighEta_SC20_Mass55); + fChain->SetBranchAddress("HLT_L1NotBptxOR", &HLT_L1NotBptxOR, &b_HLT_L1NotBptxOR); + fChain->SetBranchAddress("HLT_Mu20_Mu10_SameSign_DZ", &HLT_Mu20_Mu10_SameSign_DZ, &b_HLT_Mu20_Mu10_SameSign_DZ); + fChain->SetBranchAddress("HLT_Dimuon0_Jpsi_L1_NoOS", &HLT_Dimuon0_Jpsi_L1_NoOS, &b_HLT_Dimuon0_Jpsi_L1_NoOS); + fChain->SetBranchAddress("HLT_CaloMET250_HBHECleaned", &HLT_CaloMET250_HBHECleaned, &b_HLT_CaloMET250_HBHECleaned); + fChain->SetBranchAddress("HLT_Physics_part4", &HLT_Physics_part4, &b_HLT_Physics_part4); + fChain->SetBranchAddress("HLT_CaloMET70_HBHECleaned", &HLT_CaloMET70_HBHECleaned, &b_HLT_CaloMET70_HBHECleaned); + fChain->SetBranchAddress("HLT_AK4PFJet30", &HLT_AK4PFJet30, &b_HLT_AK4PFJet30); + fChain->SetBranchAddress("HLT_BTagMu_AK4DiJet110_Mu5_noalgo", &HLT_BTagMu_AK4DiJet110_Mu5_noalgo, &b_HLT_BTagMu_AK4DiJet110_Mu5_noalgo); + fChain->SetBranchAddress("HLT_DoubleMediumChargedIsoPFTauHPS35_Trk1_eta2p1_Reg", &HLT_DoubleMediumChargedIsoPFTauHPS35_Trk1_eta2p1_Reg, &b_HLT_DoubleMediumChargedIsoPFTauHPS35_Trk1_eta2p1_Reg); + fChain->SetBranchAddress("HLT_L1UnpairedBunchBptxPlus", &HLT_L1UnpairedBunchBptxPlus, &b_HLT_L1UnpairedBunchBptxPlus); + fChain->SetBranchAddress("HLT_TripleJet110_35_35_Mjj650_PFMET130", &HLT_TripleJet110_35_35_Mjj650_PFMET130, &b_HLT_TripleJet110_35_35_Mjj650_PFMET130); + fChain->SetBranchAddress("HLT_Photon60_R9Id90_CaloIdL_IsoL", &HLT_Photon60_R9Id90_CaloIdL_IsoL, &b_HLT_Photon60_R9Id90_CaloIdL_IsoL); + fChain->SetBranchAddress("HLT_Mu9_IP6_part3", &HLT_Mu9_IP6_part3, &b_HLT_Mu9_IP6_part3); + fChain->SetBranchAddress("HLT_AK8PFHT900_TrimMass50", &HLT_AK8PFHT900_TrimMass50, &b_HLT_AK8PFHT900_TrimMass50); + fChain->SetBranchAddress("HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL", &HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL, &b_HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL); + fChain->SetBranchAddress("HLT_Mu12_DoublePFJets100_CaloBTagDeepCSV_p71", &HLT_Mu12_DoublePFJets100_CaloBTagDeepCSV_p71, &b_HLT_Mu12_DoublePFJets100_CaloBTagDeepCSV_p71); + fChain->SetBranchAddress("HLT_Dimuon25_Jpsi", &HLT_Dimuon25_Jpsi, &b_HLT_Dimuon25_Jpsi); + fChain->SetBranchAddress("HLT_Mu15_IsoVVVL_PFHT600", &HLT_Mu15_IsoVVVL_PFHT600, &b_HLT_Mu15_IsoVVVL_PFHT600); + fChain->SetBranchAddress("HLT_Rsq0p35", &HLT_Rsq0p35, &b_HLT_Rsq0p35); + fChain->SetBranchAddress("HLT_Diphoton30_22_R9Id_OR_IsoCaloId_AND_HE_R9Id_Mass95", &HLT_Diphoton30_22_R9Id_OR_IsoCaloId_AND_HE_R9Id_Mass95, &b_HLT_Diphoton30_22_R9Id_OR_IsoCaloId_AND_HE_R9Id_Mass95); + fChain->SetBranchAddress("HLT_RsqMR320_Rsq0p09_MR200_4jet", &HLT_RsqMR320_Rsq0p09_MR200_4jet, &b_HLT_RsqMR320_Rsq0p09_MR200_4jet); + fChain->SetBranchAddress("HLT_BTagMu_AK8DiJet170_Mu5", &HLT_BTagMu_AK8DiJet170_Mu5, &b_HLT_BTagMu_AK8DiJet170_Mu5); + fChain->SetBranchAddress("HLT_PFHT590", &HLT_PFHT590, &b_HLT_PFHT590); + fChain->SetBranchAddress("HLT_PFJet40", &HLT_PFJet40, &b_HLT_PFJet40); + fChain->SetBranchAddress("HLT_Mu9_IP6_part1", &HLT_Mu9_IP6_part1, &b_HLT_Mu9_IP6_part1); + fChain->SetBranchAddress("HLT_Ele24_eta2p1_WPTight_Gsf_MediumChargedIsoPFTauHPS30_eta2p1_TightID_CrossL1", &HLT_Ele24_eta2p1_WPTight_Gsf_MediumChargedIsoPFTauHPS30_eta2p1_TightID_CrossL1, &b_HLT_Ele24_eta2p1_WPTight_Gsf_MediumChargedIsoPFTauHPS30_eta2p1_TightID_CrossL1); + fChain->SetBranchAddress("HLT_DoubleTrkMu_16_6_NoFiltersNoVtx", &HLT_DoubleTrkMu_16_6_NoFiltersNoVtx, &b_HLT_DoubleTrkMu_16_6_NoFiltersNoVtx); + fChain->SetBranchAddress("HLT_DoubleMu43NoFiltersNoVtx", &HLT_DoubleMu43NoFiltersNoVtx, &b_HLT_DoubleMu43NoFiltersNoVtx); + fChain->SetBranchAddress("HLT_Ele24_eta2p1_WPTight_Gsf_LooseChargedIsoPFTauHPS30_eta2p1_CrossL1", &HLT_Ele24_eta2p1_WPTight_Gsf_LooseChargedIsoPFTauHPS30_eta2p1_CrossL1, &b_HLT_Ele24_eta2p1_WPTight_Gsf_LooseChargedIsoPFTauHPS30_eta2p1_CrossL1); + fChain->SetBranchAddress("HLT_BTagMu_AK4DiJet70_Mu5_noalgo", &HLT_BTagMu_AK4DiJet70_Mu5_noalgo, &b_HLT_BTagMu_AK4DiJet70_Mu5_noalgo); + fChain->SetBranchAddress("HLT_Mu8_IP5_part2", &HLT_Mu8_IP5_part2, &b_HLT_Mu8_IP5_part2); + fChain->SetBranchAddress("HLT_IsoMu20", &HLT_IsoMu20, &b_HLT_IsoMu20); + fChain->SetBranchAddress("HLT_BTagMu_AK4DiJet110_Mu5", &HLT_BTagMu_AK4DiJet110_Mu5, &b_HLT_BTagMu_AK4DiJet110_Mu5); + fChain->SetBranchAddress("HLT_BTagMu_AK8Jet300_Mu5_noalgo", &HLT_BTagMu_AK8Jet300_Mu5_noalgo, &b_HLT_BTagMu_AK8Jet300_Mu5_noalgo); + fChain->SetBranchAddress("HLT_ZeroBias_part6", &HLT_ZeroBias_part6, &b_HLT_ZeroBias_part6); + fChain->SetBranchAddress("HLT_L1SingleMu18", &HLT_L1SingleMu18, &b_HLT_L1SingleMu18); + fChain->SetBranchAddress("HLT_Mu18_Mu9", &HLT_Mu18_Mu9, &b_HLT_Mu18_Mu9); + fChain->SetBranchAddress("HLT_SinglePhoton10_Eta3p1ForPPRef", &HLT_SinglePhoton10_Eta3p1ForPPRef, &b_HLT_SinglePhoton10_Eta3p1ForPPRef); + fChain->SetBranchAddress("HLT_TrkMu6NoFiltersNoVtx", &HLT_TrkMu6NoFiltersNoVtx, &b_HLT_TrkMu6NoFiltersNoVtx); + fChain->SetBranchAddress("HLT_Mu20", &HLT_Mu20, &b_HLT_Mu20); + fChain->SetBranchAddress("HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ", &HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ, &b_HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ); + fChain->SetBranchAddress("HLT_DiPFJetAve220_HFJEC", &HLT_DiPFJetAve220_HFJEC, &b_HLT_DiPFJetAve220_HFJEC); + fChain->SetBranchAddress("HLT_Diphoton30PV_18PV_R9Id_AND_IsoCaloId_AND_HE_R9Id_PixelVeto_Mass55", &HLT_Diphoton30PV_18PV_R9Id_AND_IsoCaloId_AND_HE_R9Id_PixelVeto_Mass55, &b_HLT_Diphoton30PV_18PV_R9Id_AND_IsoCaloId_AND_HE_R9Id_PixelVeto_Mass55); + fChain->SetBranchAddress("HLT_Mu8_IP5_part4", &HLT_Mu8_IP5_part4, &b_HLT_Mu8_IP5_part4); + fChain->SetBranchAddress("HLT_PFMET100_PFMHT100_IDTight_PFHT60", &HLT_PFMET100_PFMHT100_IDTight_PFHT60, &b_HLT_PFMET100_PFMHT100_IDTight_PFHT60); + fChain->SetBranchAddress("HLT_Photon50", &HLT_Photon50, &b_HLT_Photon50); + fChain->SetBranchAddress("HLT_DiPFJetAve60", &HLT_DiPFJetAve60, &b_HLT_DiPFJetAve60); + fChain->SetBranchAddress("HLT_Trimuon5_3p5_2_Upsilon_Muon", &HLT_Trimuon5_3p5_2_Upsilon_Muon, &b_HLT_Trimuon5_3p5_2_Upsilon_Muon); + fChain->SetBranchAddress("HLT_Mu12_IP6_part1", &HLT_Mu12_IP6_part1, &b_HLT_Mu12_IP6_part1); + fChain->SetBranchAddress("HLT_QuadPFJet111_90_80_15", &HLT_QuadPFJet111_90_80_15, &b_HLT_QuadPFJet111_90_80_15); + fChain->SetBranchAddress("HLT_Ele135_CaloIdVT_GsfTrkIdT", &HLT_Ele135_CaloIdVT_GsfTrkIdT, &b_HLT_Ele135_CaloIdVT_GsfTrkIdT); + fChain->SetBranchAddress("HLT_PFMETTypeOne110_PFMHT110_IDTight", &HLT_PFMETTypeOne110_PFMHT110_IDTight, &b_HLT_PFMETTypeOne110_PFMHT110_IDTight); + fChain->SetBranchAddress("HLT_AK4PFJet100", &HLT_AK4PFJet100, &b_HLT_AK4PFJet100); + fChain->SetBranchAddress("HLT_ZeroBias_LastCollisionInTrain", &HLT_ZeroBias_LastCollisionInTrain, &b_HLT_ZeroBias_LastCollisionInTrain); + fChain->SetBranchAddress("HLT_PFMET110_PFMHT110_IDTight_CaloBTagDeepCSV_3p1", &HLT_PFMET110_PFMHT110_IDTight_CaloBTagDeepCSV_3p1, &b_HLT_PFMET110_PFMHT110_IDTight_CaloBTagDeepCSV_3p1); + fChain->SetBranchAddress("HLT_PFHT700_PFMET95_PFMHT95_IDTight", &HLT_PFHT700_PFMET95_PFMHT95_IDTight, &b_HLT_PFHT700_PFMET95_PFMHT95_IDTight); + fChain->SetBranchAddress("HLT_Mu23_Mu12_DZ", &HLT_Mu23_Mu12_DZ, &b_HLT_Mu23_Mu12_DZ); + fChain->SetBranchAddress("HLT_IsoMu20_eta2p1_LooseChargedIsoPFTauHPS27_eta2p1_CrossL1", &HLT_IsoMu20_eta2p1_LooseChargedIsoPFTauHPS27_eta2p1_CrossL1, &b_HLT_IsoMu20_eta2p1_LooseChargedIsoPFTauHPS27_eta2p1_CrossL1); + fChain->SetBranchAddress("HLT_Diphoton30_18_R9IdL_AND_HE_AND_IsoCaloId_NoPixelVeto", &HLT_Diphoton30_18_R9IdL_AND_HE_AND_IsoCaloId_NoPixelVeto, &b_HLT_Diphoton30_18_R9IdL_AND_HE_AND_IsoCaloId_NoPixelVeto); + fChain->SetBranchAddress("HLT_Ele28_eta2p1_WPTight_Gsf_HT150", &HLT_Ele28_eta2p1_WPTight_Gsf_HT150, &b_HLT_Ele28_eta2p1_WPTight_Gsf_HT150); + fChain->SetBranchAddress("HLT_PFMET130_PFMHT130_IDTight_CaloBTagDeepCSV_3p1", &HLT_PFMET130_PFMHT130_IDTight_CaloBTagDeepCSV_3p1, &b_HLT_PFMET130_PFMHT130_IDTight_CaloBTagDeepCSV_3p1); + fChain->SetBranchAddress("HLT_DiPFJetAve160_HFJEC", &HLT_DiPFJetAve160_HFJEC, &b_HLT_DiPFJetAve160_HFJEC); + fChain->SetBranchAddress("HLT_PFMET200_HBHE_BeamHaloCleaned", &HLT_PFMET200_HBHE_BeamHaloCleaned, &b_HLT_PFMET200_HBHE_BeamHaloCleaned); + fChain->SetBranchAddress("HLT_PFJetFwd140", &HLT_PFJetFwd140, &b_HLT_PFJetFwd140); + fChain->SetBranchAddress("HLT_DiPFJetAve260", &HLT_DiPFJetAve260, &b_HLT_DiPFJetAve260); + fChain->SetBranchAddress("HLT_Ele35_WPTight_Gsf", &HLT_Ele35_WPTight_Gsf, &b_HLT_Ele35_WPTight_Gsf); + fChain->SetBranchAddress("HLT_MonoCentralPFJet80_PFMETNoMu120_PFMHTNoMu120_IDTight", &HLT_MonoCentralPFJet80_PFMETNoMu120_PFMHTNoMu120_IDTight, &b_HLT_MonoCentralPFJet80_PFMETNoMu120_PFMHTNoMu120_IDTight); + fChain->SetBranchAddress("HLT_BTagMu_AK4DiJet20_Mu5", &HLT_BTagMu_AK4DiJet20_Mu5, &b_HLT_BTagMu_AK4DiJet20_Mu5); + fChain->SetBranchAddress("HLT_MET105_IsoTrk50", &HLT_MET105_IsoTrk50, &b_HLT_MET105_IsoTrk50); + fChain->SetBranchAddress("HLT_Ele200_CaloIdVT_GsfTrkIdT", &HLT_Ele200_CaloIdVT_GsfTrkIdT, &b_HLT_Ele200_CaloIdVT_GsfTrkIdT); + fChain->SetBranchAddress("HLT_SinglePhoton20_Eta3p1ForPPRef", &HLT_SinglePhoton20_Eta3p1ForPPRef, &b_HLT_SinglePhoton20_Eta3p1ForPPRef); + fChain->SetBranchAddress("HLT_PFHT330PT30_QuadPFJet_75_60_45_40_TriplePFBTagDeepCSV_4p5", &HLT_PFHT330PT30_QuadPFJet_75_60_45_40_TriplePFBTagDeepCSV_4p5, &b_HLT_PFHT330PT30_QuadPFJet_75_60_45_40_TriplePFBTagDeepCSV_4p5); + fChain->SetBranchAddress("HLT_Dimuon0_LowMass_L1_0er1p5", &HLT_Dimuon0_LowMass_L1_0er1p5, &b_HLT_Dimuon0_LowMass_L1_0er1p5); + fChain->SetBranchAddress("HLT_DoubleMu4_LowMassNonResonantTrk_Displaced", &HLT_DoubleMu4_LowMassNonResonantTrk_Displaced, &b_HLT_DoubleMu4_LowMassNonResonantTrk_Displaced); + fChain->SetBranchAddress("HLT_Ele115_CaloIdVT_GsfTrkIdT", &HLT_Ele115_CaloIdVT_GsfTrkIdT, &b_HLT_Ele115_CaloIdVT_GsfTrkIdT); + fChain->SetBranchAddress("HLT_SingleJet30_Mu12_SinglePFJet40", &HLT_SingleJet30_Mu12_SinglePFJet40, &b_HLT_SingleJet30_Mu12_SinglePFJet40); + fChain->SetBranchAddress("HLT_ZeroBias_part7", &HLT_ZeroBias_part7, &b_HLT_ZeroBias_part7); + fChain->SetBranchAddress("HLT_TripleMu_5_3_3_Mass3p8_DZ", &HLT_TripleMu_5_3_3_Mass3p8_DZ, &b_HLT_TripleMu_5_3_3_Mass3p8_DZ); + fChain->SetBranchAddress("HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET100", &HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET100, &b_HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET100); + fChain->SetBranchAddress("HLT_BTagMu_AK4DiJet170_Mu5", &HLT_BTagMu_AK4DiJet170_Mu5, &b_HLT_BTagMu_AK4DiJet170_Mu5); + fChain->SetBranchAddress("HLT_CaloJet550_NoJetID", &HLT_CaloJet550_NoJetID, &b_HLT_CaloJet550_NoJetID); + fChain->SetBranchAddress("HLT_PFMET110_PFMHT110_IDTight", &HLT_PFMET110_PFMHT110_IDTight, &b_HLT_PFMET110_PFMHT110_IDTight); + fChain->SetBranchAddress("HLT_Photon200", &HLT_Photon200, &b_HLT_Photon200); + fChain->SetBranchAddress("HLT_PFHT370", &HLT_PFHT370, &b_HLT_PFHT370); + fChain->SetBranchAddress("HLT_Photon50_R9Id90_HE10_IsoM", &HLT_Photon50_R9Id90_HE10_IsoM, &b_HLT_Photon50_R9Id90_HE10_IsoM); + fChain->SetBranchAddress("HLT_IsoMu24_eta2p1_MediumChargedIsoPFTauHPS35_Trk1_eta2p1_Reg_CrossL1", &HLT_IsoMu24_eta2p1_MediumChargedIsoPFTauHPS35_Trk1_eta2p1_Reg_CrossL1, &b_HLT_IsoMu24_eta2p1_MediumChargedIsoPFTauHPS35_Trk1_eta2p1_Reg_CrossL1); + fChain->SetBranchAddress("HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL", &HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL, &b_HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL); + fChain->SetBranchAddress("HLT_QuadPFJet105_88_76_15", &HLT_QuadPFJet105_88_76_15, &b_HLT_QuadPFJet105_88_76_15); + fChain->SetBranchAddress("HLT_HcalCalibration", &HLT_HcalCalibration, &b_HLT_HcalCalibration); + fChain->SetBranchAddress("HLT_MediumChargedIsoPFTau180HighPtRelaxedIso_Trk50_eta2p1_1pr", &HLT_MediumChargedIsoPFTau180HighPtRelaxedIso_Trk50_eta2p1_1pr, &b_HLT_MediumChargedIsoPFTau180HighPtRelaxedIso_Trk50_eta2p1_1pr); + fChain->SetBranchAddress("HLT_Physics_part6", &HLT_Physics_part6, &b_HLT_Physics_part6); + fChain->SetBranchAddress("HLT_CaloMET80_NotCleaned", &HLT_CaloMET80_NotCleaned, &b_HLT_CaloMET80_NotCleaned); + fChain->SetBranchAddress("HLT_AK8PFJet60", &HLT_AK8PFJet60, &b_HLT_AK8PFJet60); + fChain->SetBranchAddress("HLT_AK8PFJet40", &HLT_AK8PFJet40, &b_HLT_AK8PFJet40); + fChain->SetBranchAddress("HLT_Mu9_IP5_part1", &HLT_Mu9_IP5_part1, &b_HLT_Mu9_IP5_part1); + fChain->SetBranchAddress("HLT_QuadPFJet105_88_76_15_PFBTagDeepCSV_1p3_VBF2", &HLT_QuadPFJet105_88_76_15_PFBTagDeepCSV_1p3_VBF2, &b_HLT_QuadPFJet105_88_76_15_PFBTagDeepCSV_1p3_VBF2); + fChain->SetBranchAddress("HLT_PFJetFwd400", &HLT_PFJetFwd400, &b_HLT_PFJetFwd400); + fChain->SetBranchAddress("HLT_PFMET130_PFMHT130_IDTight", &HLT_PFMET130_PFMHT130_IDTight, &b_HLT_PFMET130_PFMHT130_IDTight); + fChain->SetBranchAddress("HLT_Ele15_WPLoose_Gsf", &HLT_Ele15_WPLoose_Gsf, &b_HLT_Ele15_WPLoose_Gsf); + fChain->SetBranchAddress("HLT_DoubleMu4_JpsiTrkTrk_Displaced", &HLT_DoubleMu4_JpsiTrkTrk_Displaced, &b_HLT_DoubleMu4_JpsiTrkTrk_Displaced); + fChain->SetBranchAddress("HLT_AK8PFJetFwd200", &HLT_AK8PFJetFwd200, &b_HLT_AK8PFJetFwd200); + fChain->SetBranchAddress("HLT_Dimuon0_Upsilon_L1_5M", &HLT_Dimuon0_Upsilon_L1_5M, &b_HLT_Dimuon0_Upsilon_L1_5M); + fChain->SetBranchAddress("HLT_TripleMu_12_10_5", &HLT_TripleMu_12_10_5, &b_HLT_TripleMu_12_10_5); + fChain->SetBranchAddress("HLT_Physics_part1", &HLT_Physics_part1, &b_HLT_Physics_part1); + fChain->SetBranchAddress("HLT_Mu18_Mu9_SameSign", &HLT_Mu18_Mu9_SameSign, &b_HLT_Mu18_Mu9_SameSign); + fChain->SetBranchAddress("HLT_DoubleL2Mu30NoVtx_2Cha_Eta2p4", &HLT_DoubleL2Mu30NoVtx_2Cha_Eta2p4, &b_HLT_DoubleL2Mu30NoVtx_2Cha_Eta2p4); + fChain->SetBranchAddress("HLT_L2Mu10_NoVertex_NoBPTX", &HLT_L2Mu10_NoVertex_NoBPTX, &b_HLT_L2Mu10_NoVertex_NoBPTX); + fChain->SetBranchAddress("HLT_PFHT890", &HLT_PFHT890, &b_HLT_PFHT890); + fChain->SetBranchAddress("HLT_TrkMu16_DoubleTrkMu6NoFiltersNoVtx", &HLT_TrkMu16_DoubleTrkMu6NoFiltersNoVtx, &b_HLT_TrkMu16_DoubleTrkMu6NoFiltersNoVtx); + fChain->SetBranchAddress("HLT_PFJet320", &HLT_PFJet320, &b_HLT_PFJet320); + fChain->SetBranchAddress("HLT_TrkMu16NoFiltersNoVtx", &HLT_TrkMu16NoFiltersNoVtx, &b_HLT_TrkMu16NoFiltersNoVtx); + fChain->SetBranchAddress("HLT_AK8PFJetFwd140", &HLT_AK8PFJetFwd140, &b_HLT_AK8PFJetFwd140); + fChain->SetBranchAddress("HLT_PFHT1050", &HLT_PFHT1050, &b_HLT_PFHT1050); + fChain->SetBranchAddress("HLT_Mu8_IP5_part3", &HLT_Mu8_IP5_part3, &b_HLT_Mu8_IP5_part3); + fChain->SetBranchAddress("HLT_Mu48NoFiltersNoVtx_Photon48_CaloIdL", &HLT_Mu48NoFiltersNoVtx_Photon48_CaloIdL, &b_HLT_Mu48NoFiltersNoVtx_Photon48_CaloIdL); + fChain->SetBranchAddress("HLT_Mu9_IP4_part4", &HLT_Mu9_IP4_part4, &b_HLT_Mu9_IP4_part4); + fChain->SetBranchAddress("HLT_PFJetFwd60", &HLT_PFJetFwd60, &b_HLT_PFJetFwd60); + fChain->SetBranchAddress("HLT_DoubleMediumChargedIsoPFTauHPS40_Trk1_eta2p1_Reg", &HLT_DoubleMediumChargedIsoPFTauHPS40_Trk1_eta2p1_Reg, &b_HLT_DoubleMediumChargedIsoPFTauHPS40_Trk1_eta2p1_Reg); + fChain->SetBranchAddress("HLT_Mu9_IP5_part0", &HLT_Mu9_IP5_part0, &b_HLT_Mu9_IP5_part0); + fChain->SetBranchAddress("HLT_PFJetFwd80", &HLT_PFJetFwd80, &b_HLT_PFJetFwd80); + fChain->SetBranchAddress("HLT_Photon90_CaloIdL_PFHT700", &HLT_Photon90_CaloIdL_PFHT700, &b_HLT_Photon90_CaloIdL_PFHT700); + fChain->SetBranchAddress("HLT_L2Mu23NoVtx_2Cha", &HLT_L2Mu23NoVtx_2Cha, &b_HLT_L2Mu23NoVtx_2Cha); + fChain->SetBranchAddress("HLT_DoubleMu4_PsiPrimeTrk_Displaced", &HLT_DoubleMu4_PsiPrimeTrk_Displaced, &b_HLT_DoubleMu4_PsiPrimeTrk_Displaced); + fChain->SetBranchAddress("HLT_Dimuon0_LowMass_L1_4", &HLT_Dimuon0_LowMass_L1_4, &b_HLT_Dimuon0_LowMass_L1_4); + fChain->SetBranchAddress("HLT_BTagMu_AK4Jet300_Mu5_noalgo", &HLT_BTagMu_AK4Jet300_Mu5_noalgo, &b_HLT_BTagMu_AK4Jet300_Mu5_noalgo); + fChain->SetBranchAddress("HLT_DoubleMu3_Trk_Tau3mu_NoL1Mass", &HLT_DoubleMu3_Trk_Tau3mu_NoL1Mass, &b_HLT_DoubleMu3_Trk_Tau3mu_NoL1Mass); + fChain->SetBranchAddress("HLT_Photon100EBHE10", &HLT_Photon100EBHE10, &b_HLT_Photon100EBHE10); + fChain->SetBranchAddress("HLT_L2Mu50", &HLT_L2Mu50, &b_HLT_L2Mu50); + fChain->SetBranchAddress("HLT_ZeroBias_Alignment", &HLT_ZeroBias_Alignment, &b_HLT_ZeroBias_Alignment); + fChain->SetBranchAddress("HLT_Mu50_IsoVVVL_PFHT450", &HLT_Mu50_IsoVVVL_PFHT450, &b_HLT_Mu50_IsoVVVL_PFHT450); + fChain->SetBranchAddress("HLT_DoubleL2Mu23NoVtx_2Cha_CosmicSeed_NoL2Matched", &HLT_DoubleL2Mu23NoVtx_2Cha_CosmicSeed_NoL2Matched, &b_HLT_DoubleL2Mu23NoVtx_2Cha_CosmicSeed_NoL2Matched); + fChain->SetBranchAddress("HLT_PFHT180", &HLT_PFHT180, &b_HLT_PFHT180); + fChain->SetBranchAddress("HLT_CaloMET80_HBHECleaned", &HLT_CaloMET80_HBHECleaned, &b_HLT_CaloMET80_HBHECleaned); + fChain->SetBranchAddress("HLT_Mu8_IP5_part0", &HLT_Mu8_IP5_part0, &b_HLT_Mu8_IP5_part0); + fChain->SetBranchAddress("HLT_Ele17_CaloIdM_TrackIdM_PFJet30", &HLT_Ele17_CaloIdM_TrackIdM_PFJet30, &b_HLT_Ele17_CaloIdM_TrackIdM_PFJet30); + fChain->SetBranchAddress("HLT_Mu9_IP6_part4", &HLT_Mu9_IP6_part4, &b_HLT_Mu9_IP6_part4); + fChain->SetBranchAddress("HLT_PFJet60", &HLT_PFJet60, &b_HLT_PFJet60); + fChain->SetBranchAddress("HLT_IsoMu24_eta2p1_TightChargedIsoPFTauHPS35_Trk1_eta2p1_Reg_CrossL1", &HLT_IsoMu24_eta2p1_TightChargedIsoPFTauHPS35_Trk1_eta2p1_Reg_CrossL1, &b_HLT_IsoMu24_eta2p1_TightChargedIsoPFTauHPS35_Trk1_eta2p1_Reg_CrossL1); + fChain->SetBranchAddress("HLT_Mu23_TrkIsoVVL_Ele12_CaloIdL_TrackIdL_IsoVL", &HLT_Mu23_TrkIsoVVL_Ele12_CaloIdL_TrackIdL_IsoVL, &b_HLT_Mu23_TrkIsoVVL_Ele12_CaloIdL_TrackIdL_IsoVL); + fChain->SetBranchAddress("HLT_Mu8_IP3_part4", &HLT_Mu8_IP3_part4, &b_HLT_Mu8_IP3_part4); + fChain->SetBranchAddress("HLT_Dimuon0_Upsilon_Muon_L1_TM0", &HLT_Dimuon0_Upsilon_Muon_L1_TM0, &b_HLT_Dimuon0_Upsilon_Muon_L1_TM0); + fChain->SetBranchAddress("HLT_Mu8_IP3_part0", &HLT_Mu8_IP3_part0, &b_HLT_Mu8_IP3_part0); + fChain->SetBranchAddress("HLT_DiPFJetAve320", &HLT_DiPFJetAve320, &b_HLT_DiPFJetAve320); + fChain->SetBranchAddress("HLT_Ele28_WPTight_Gsf", &HLT_Ele28_WPTight_Gsf, &b_HLT_Ele28_WPTight_Gsf); + fChain->SetBranchAddress("HLT_Photon20_HoverELoose", &HLT_Photon20_HoverELoose, &b_HLT_Photon20_HoverELoose); + fChain->SetBranchAddress("HLT_DiPFJetAve80", &HLT_DiPFJetAve80, &b_HLT_DiPFJetAve80); + fChain->SetBranchAddress("HLT_Mu8", &HLT_Mu8, &b_HLT_Mu8); + fChain->SetBranchAddress("HLT_Mu17", &HLT_Mu17, &b_HLT_Mu17); + fChain->SetBranchAddress("HLT_PFMET120_PFMHT120_IDTight_CaloBTagDeepCSV_3p1", &HLT_PFMET120_PFMHT120_IDTight_CaloBTagDeepCSV_3p1, &b_HLT_PFMET120_PFMHT120_IDTight_CaloBTagDeepCSV_3p1); + fChain->SetBranchAddress("HLT_DoublePFJets116MaxDeta1p6_DoubleCaloBTagDeepCSV_p71", &HLT_DoublePFJets116MaxDeta1p6_DoubleCaloBTagDeepCSV_p71, &b_HLT_DoublePFJets116MaxDeta1p6_DoubleCaloBTagDeepCSV_p71); + fChain->SetBranchAddress("HLT_PFHT400_SixPFJet32_DoublePFBTagDeepCSV_2p94", &HLT_PFHT400_SixPFJet32_DoublePFBTagDeepCSV_2p94, &b_HLT_PFHT400_SixPFJet32_DoublePFBTagDeepCSV_2p94); + fChain->SetBranchAddress("HLT_Photon75_R9Id90_HE10_IsoM_EBOnly_PFJetsMJJ600DEta3", &HLT_Photon75_R9Id90_HE10_IsoM_EBOnly_PFJetsMJJ600DEta3, &b_HLT_Photon75_R9Id90_HE10_IsoM_EBOnly_PFJetsMJJ600DEta3); + fChain->SetBranchAddress("HLT_DoubleMu20_7_Mass0to30_L1_DM4EG", &HLT_DoubleMu20_7_Mass0to30_L1_DM4EG, &b_HLT_DoubleMu20_7_Mass0to30_L1_DM4EG); + fChain->SetBranchAddress("HLT_Mu12_DoublePhoton20", &HLT_Mu12_DoublePhoton20, &b_HLT_Mu12_DoublePhoton20); + fChain->SetBranchAddress("HLT_IsoMu24_eta2p1_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr", &HLT_IsoMu24_eta2p1_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr, &b_HLT_IsoMu24_eta2p1_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr); + fChain->SetBranchAddress("HLT_Ele24_eta2p1_WPTight_Gsf_MediumChargedIsoPFTauHPS30_eta2p1_CrossL1", &HLT_Ele24_eta2p1_WPTight_Gsf_MediumChargedIsoPFTauHPS30_eta2p1_CrossL1, &b_HLT_Ele24_eta2p1_WPTight_Gsf_MediumChargedIsoPFTauHPS30_eta2p1_CrossL1); + fChain->SetBranchAddress("HLT_PFHT510", &HLT_PFHT510, &b_HLT_PFHT510); + fChain->SetBranchAddress("HLT_Mu9_IP4_part1", &HLT_Mu9_IP4_part1, &b_HLT_Mu9_IP4_part1); + fChain->SetBranchAddress("HLT_Diphoton30PV_18PV_R9Id_AND_IsoCaloId_AND_HE_R9Id_NoPixelVeto_Mass55", &HLT_Diphoton30PV_18PV_R9Id_AND_IsoCaloId_AND_HE_R9Id_NoPixelVeto_Mass55, &b_HLT_Diphoton30PV_18PV_R9Id_AND_IsoCaloId_AND_HE_R9Id_NoPixelVeto_Mass55); + fChain->SetBranchAddress("HLT_PFJetFwd40", &HLT_PFJetFwd40, &b_HLT_PFJetFwd40); + fChain->SetBranchAddress("HLT_Photon120", &HLT_Photon120, &b_HLT_Photon120); + fChain->SetBranchAddress("HLT_AK8PFJet200", &HLT_AK8PFJet200, &b_HLT_AK8PFJet200); + fChain->SetBranchAddress("HLT_Dimuon0_Upsilon_L1_4p5er2p0", &HLT_Dimuon0_Upsilon_L1_4p5er2p0, &b_HLT_Dimuon0_Upsilon_L1_4p5er2p0); + fChain->SetBranchAddress("HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30", &HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30, &b_HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30); + fChain->SetBranchAddress("HLT_Photon100EB_TightID_TightIso", &HLT_Photon100EB_TightID_TightIso, &b_HLT_Photon100EB_TightID_TightIso); + fChain->SetBranchAddress("HLT_DiPFJetAve500", &HLT_DiPFJetAve500, &b_HLT_DiPFJetAve500); + fChain->SetBranchAddress("HLT_SinglePhoton30_Eta3p1ForPPRef", &HLT_SinglePhoton30_Eta3p1ForPPRef, &b_HLT_SinglePhoton30_Eta3p1ForPPRef); + fChain->SetBranchAddress("HLT_IsoMu24", &HLT_IsoMu24, &b_HLT_IsoMu24); + fChain->SetBranchAddress("HLT_PFMETTypeOne120_PFMHT120_IDTight", &HLT_PFMETTypeOne120_PFMHT120_IDTight, &b_HLT_PFMETTypeOne120_PFMHT120_IDTight); + fChain->SetBranchAddress("HLT_Mu18_Mu9_SameSign_DZ", &HLT_Mu18_Mu9_SameSign_DZ, &b_HLT_Mu18_Mu9_SameSign_DZ); + fChain->SetBranchAddress("HLT_PFMET140_PFMHT140_IDTight", &HLT_PFMET140_PFMHT140_IDTight, &b_HLT_PFMET140_PFMHT140_IDTight); + fChain->SetBranchAddress("HLT_Mu25_TkMu0_Phi", &HLT_Mu25_TkMu0_Phi, &b_HLT_Mu25_TkMu0_Phi); + fChain->SetBranchAddress("HLT_AK4CaloJet100", &HLT_AK4CaloJet100, &b_HLT_AK4CaloJet100); + fChain->SetBranchAddress("HLT_Mu15", &HLT_Mu15, &b_HLT_Mu15); + fChain->SetBranchAddress("HLT_Mu9_IP4_part0", &HLT_Mu9_IP4_part0, &b_HLT_Mu9_IP4_part0); + fChain->SetBranchAddress("HLT_Mu12_DoublePFJets62MaxDeta1p6_DoubleCaloBTagDeepCSV_p71", &HLT_Mu12_DoublePFJets62MaxDeta1p6_DoubleCaloBTagDeepCSV_p71, &b_HLT_Mu12_DoublePFJets62MaxDeta1p6_DoubleCaloBTagDeepCSV_p71); + fChain->SetBranchAddress("HLT_DiJet110_35_Mjj650_PFMET130", &HLT_DiJet110_35_Mjj650_PFMET130, &b_HLT_DiJet110_35_Mjj650_PFMET130); + fChain->SetBranchAddress("HLT_PFJet550", &HLT_PFJet550, &b_HLT_PFJet550); + fChain->SetBranchAddress("HLT_DiPFJetAve400", &HLT_DiPFJetAve400, &b_HLT_DiPFJetAve400); + fChain->SetBranchAddress("HLT_TrimuonOpen_5_3p5_2_Upsilon_Muon", &HLT_TrimuonOpen_5_3p5_2_Upsilon_Muon, &b_HLT_TrimuonOpen_5_3p5_2_Upsilon_Muon); + fChain->SetBranchAddress("HLT_PFHT450_SixPFJet36", &HLT_PFHT450_SixPFJet36, &b_HLT_PFHT450_SixPFJet36); + fChain->SetBranchAddress("HLT_QuadPFJet103_88_75_15_DoublePFBTagDeepCSV_1p3_7p7_VBF1", &HLT_QuadPFJet103_88_75_15_DoublePFBTagDeepCSV_1p3_7p7_VBF1, &b_HLT_QuadPFJet103_88_75_15_DoublePFBTagDeepCSV_1p3_7p7_VBF1); + fChain->SetBranchAddress("HLT_L1UnpairedBunchBptxMinus", &HLT_L1UnpairedBunchBptxMinus, &b_HLT_L1UnpairedBunchBptxMinus); + fChain->SetBranchAddress("HLT_CaloMET90_HBHECleaned", &HLT_CaloMET90_HBHECleaned, &b_HLT_CaloMET90_HBHECleaned); + fChain->SetBranchAddress("HLT_TriplePhoton_30_30_10_CaloIdLV2", &HLT_TriplePhoton_30_30_10_CaloIdLV2, &b_HLT_TriplePhoton_30_30_10_CaloIdLV2); + fChain->SetBranchAddress("HLT_AK8PFJet320", &HLT_AK8PFJet320, &b_HLT_AK8PFJet320); + fChain->SetBranchAddress("HLT_ZeroBias_part0", &HLT_ZeroBias_part0, &b_HLT_ZeroBias_part0); + fChain->SetBranchAddress("HLT_Mu12_DoublePFJets40MaxDeta1p6_DoubleCaloBTagDeepCSV_p71", &HLT_Mu12_DoublePFJets40MaxDeta1p6_DoubleCaloBTagDeepCSV_p71, &b_HLT_Mu12_DoublePFJets40MaxDeta1p6_DoubleCaloBTagDeepCSV_p71); + fChain->SetBranchAddress("HLT_Mu37_TkMu27", &HLT_Mu37_TkMu27, &b_HLT_Mu37_TkMu27); + fChain->SetBranchAddress("HLT_IsoMu24_TwoProngs35", &HLT_IsoMu24_TwoProngs35, &b_HLT_IsoMu24_TwoProngs35); + fChain->SetBranchAddress("HLT_Mu12_IP6_part4", &HLT_Mu12_IP6_part4, &b_HLT_Mu12_IP6_part4); + fChain->SetBranchAddress("HLT_DoubleL2Mu23NoVtx_2Cha_NoL2Matched", &HLT_DoubleL2Mu23NoVtx_2Cha_NoL2Matched, &b_HLT_DoubleL2Mu23NoVtx_2Cha_NoL2Matched); + fChain->SetBranchAddress("HLT_AK8PFJet330_TrimMass30_PFAK8BoostedDoubleB_np2", &HLT_AK8PFJet330_TrimMass30_PFAK8BoostedDoubleB_np2, &b_HLT_AK8PFJet330_TrimMass30_PFAK8BoostedDoubleB_np2); + fChain->SetBranchAddress("HLT_PFHT780", &HLT_PFHT780, &b_HLT_PFHT780); + fChain->SetBranchAddress("HLT_Dimuon0_LowMass", &HLT_Dimuon0_LowMass, &b_HLT_Dimuon0_LowMass); + fChain->SetBranchAddress("HLT_Mu7p5_Track7_Upsilon", &HLT_Mu7p5_Track7_Upsilon, &b_HLT_Mu7p5_Track7_Upsilon); + fChain->SetBranchAddress("HLT_IsoMu30", &HLT_IsoMu30, &b_HLT_IsoMu30); + fChain->SetBranchAddress("HLT_DoubleEle27_CaloIdL_MW", &HLT_DoubleEle27_CaloIdL_MW, &b_HLT_DoubleEle27_CaloIdL_MW); + fChain->SetBranchAddress("HLT_Mu4_TrkIsoVVL_DiPFJet90_40_DEta3p5_MJJ750_HTT300_PFMETNoMu60", &HLT_Mu4_TrkIsoVVL_DiPFJet90_40_DEta3p5_MJJ750_HTT300_PFMETNoMu60, &b_HLT_Mu4_TrkIsoVVL_DiPFJet90_40_DEta3p5_MJJ750_HTT300_PFMETNoMu60); + fChain->SetBranchAddress("HLT_CaloMET90_NotCleaned", &HLT_CaloMET90_NotCleaned, &b_HLT_CaloMET90_NotCleaned); + fChain->SetBranchAddress("HLT_TriplePhoton_35_35_5_CaloIdLV2_R9IdVL", &HLT_TriplePhoton_35_35_5_CaloIdLV2_R9IdVL, &b_HLT_TriplePhoton_35_35_5_CaloIdLV2_R9IdVL); + fChain->SetBranchAddress("HLT_Photon75_R9Id90_HE10_IsoM", &HLT_Photon75_R9Id90_HE10_IsoM, &b_HLT_Photon75_R9Id90_HE10_IsoM); + fChain->SetBranchAddress("HLT_L2Mu45_NoVertex_3Sta_NoBPTX3BX", &HLT_L2Mu45_NoVertex_3Sta_NoBPTX3BX, &b_HLT_L2Mu45_NoVertex_3Sta_NoBPTX3BX); + fChain->SetBranchAddress("HLT_DoublePFJets40_CaloBTagDeepCSV_p71", &HLT_DoublePFJets40_CaloBTagDeepCSV_p71, &b_HLT_DoublePFJets40_CaloBTagDeepCSV_p71); + fChain->SetBranchAddress("HLT_PFHT450_SixPFJet36_PFBTagDeepCSV_1p59", &HLT_PFHT450_SixPFJet36_PFBTagDeepCSV_1p59, &b_HLT_PFHT450_SixPFJet36_PFBTagDeepCSV_1p59); + fChain->SetBranchAddress("HLT_Mu50", &HLT_Mu50, &b_HLT_Mu50); + fChain->SetBranchAddress("HLT_Dimuon0_Jpsi_NoVertexing_NoOS", &HLT_Dimuon0_Jpsi_NoVertexing_NoOS, &b_HLT_Dimuon0_Jpsi_NoVertexing_NoOS); + fChain->SetBranchAddress("HLT_Photon30_HoverELoose", &HLT_Photon30_HoverELoose, &b_HLT_Photon30_HoverELoose); + fChain->SetBranchAddress("HLT_Mu7_IP4_part4", &HLT_Mu7_IP4_part4, &b_HLT_Mu7_IP4_part4); + fChain->SetBranchAddress("HLT_IsoTrackHB", &HLT_IsoTrackHB, &b_HLT_IsoTrackHB); + fChain->SetBranchAddress("HLT_AK4CaloJet40", &HLT_AK4CaloJet40, &b_HLT_AK4CaloJet40); + fChain->SetBranchAddress("HLT_AK8PFJet400_TrimMass30", &HLT_AK8PFJet400_TrimMass30, &b_HLT_AK8PFJet400_TrimMass30); + fChain->SetBranchAddress("HLT_HcalPhiSym", &HLT_HcalPhiSym, &b_HLT_HcalPhiSym); + fChain->SetBranchAddress("HLT_AK8PFJet80", &HLT_AK8PFJet80, &b_HLT_AK8PFJet80); + fChain->SetBranchAddress("HLT_DoubleL2Mu25NoVtx_2Cha_Eta2p4", &HLT_DoubleL2Mu25NoVtx_2Cha_Eta2p4, &b_HLT_DoubleL2Mu25NoVtx_2Cha_Eta2p4); + fChain->SetBranchAddress("HLT_Dimuon0_Jpsi_NoVertexing", &HLT_Dimuon0_Jpsi_NoVertexing, &b_HLT_Dimuon0_Jpsi_NoVertexing); + fChain->SetBranchAddress("HLT_TripleJet110_35_35_Mjj650_PFMET120", &HLT_TripleJet110_35_35_Mjj650_PFMET120, &b_HLT_TripleJet110_35_35_Mjj650_PFMET120); + fChain->SetBranchAddress("HLT_DoubleMediumChargedIsoPFTauHPS40_Trk1_TightID_eta2p1_Reg", &HLT_DoubleMediumChargedIsoPFTauHPS40_Trk1_TightID_eta2p1_Reg, &b_HLT_DoubleMediumChargedIsoPFTauHPS40_Trk1_TightID_eta2p1_Reg); + fChain->SetBranchAddress("HLT_PFMETNoMu120_PFMHTNoMu120_IDTight", &HLT_PFMETNoMu120_PFMHTNoMu120_IDTight, &b_HLT_PFMETNoMu120_PFMHTNoMu120_IDTight); + fChain->SetBranchAddress("HLT_Photon75_R9Id90_HE10_IsoM_EBOnly_CaloMJJ300_PFJetsMJJ400DEta3", &HLT_Photon75_R9Id90_HE10_IsoM_EBOnly_CaloMJJ300_PFJetsMJJ400DEta3, &b_HLT_Photon75_R9Id90_HE10_IsoM_EBOnly_CaloMJJ300_PFJetsMJJ400DEta3); + fChain->SetBranchAddress("HLT_Mu30_TkMu0_Upsilon", &HLT_Mu30_TkMu0_Upsilon, &b_HLT_Mu30_TkMu0_Upsilon); + fChain->SetBranchAddress("HLT_Dimuon24_Upsilon_noCorrL1", &HLT_Dimuon24_Upsilon_noCorrL1, &b_HLT_Dimuon24_Upsilon_noCorrL1); + fChain->SetBranchAddress("HLT_MonoCentralPFJet80_PFMETNoMu140_PFMHTNoMu140_IDTight", &HLT_MonoCentralPFJet80_PFMETNoMu140_PFMHTNoMu140_IDTight, &b_HLT_MonoCentralPFJet80_PFMETNoMu140_PFMHTNoMu140_IDTight); + fChain->SetBranchAddress("HLT_QuadPFJet98_83_71_15", &HLT_QuadPFJet98_83_71_15, &b_HLT_QuadPFJet98_83_71_15); + fChain->SetBranchAddress("HLT_PFMET300_HBHECleaned", &HLT_PFMET300_HBHECleaned, &b_HLT_PFMET300_HBHECleaned); + fChain->SetBranchAddress("HLT_Mu30_TkMu0_Psi", &HLT_Mu30_TkMu0_Psi, &b_HLT_Mu30_TkMu0_Psi); + fChain->SetBranchAddress("HLT_DoubleMu4_JpsiTrk_Displaced", &HLT_DoubleMu4_JpsiTrk_Displaced, &b_HLT_DoubleMu4_JpsiTrk_Displaced); + fChain->SetBranchAddress("HLT_Photon75_R9Id90_HE10_IsoM_EBOnly_CaloMJJ400_PFJetsMJJ600DEta3", &HLT_Photon75_R9Id90_HE10_IsoM_EBOnly_CaloMJJ400_PFJetsMJJ600DEta3, &b_HLT_Photon75_R9Id90_HE10_IsoM_EBOnly_CaloMJJ400_PFJetsMJJ600DEta3); + fChain->SetBranchAddress("HLT_ZeroBias_part4", &HLT_ZeroBias_part4, &b_HLT_ZeroBias_part4); + fChain->SetBranchAddress("HLT_Ele40_WPTight_Gsf", &HLT_Ele40_WPTight_Gsf, &b_HLT_Ele40_WPTight_Gsf); + fChain->SetBranchAddress("HLT_DoubleTightChargedIsoPFTauHPS40_Trk1_eta2p1_Reg", &HLT_DoubleTightChargedIsoPFTauHPS40_Trk1_eta2p1_Reg, &b_HLT_DoubleTightChargedIsoPFTauHPS40_Trk1_eta2p1_Reg); + fChain->SetBranchAddress("HLT_Photon120_R9Id90_HE10_IsoM", &HLT_Photon120_R9Id90_HE10_IsoM, &b_HLT_Photon120_R9Id90_HE10_IsoM); + fChain->SetBranchAddress("HLT_TriplePhoton_30_30_10_CaloIdLV2_R9IdVL", &HLT_TriplePhoton_30_30_10_CaloIdLV2_R9IdVL, &b_HLT_TriplePhoton_30_30_10_CaloIdLV2_R9IdVL); + fChain->SetBranchAddress("HLT_Ele30_WPTight_Gsf", &HLT_Ele30_WPTight_Gsf, &b_HLT_Ele30_WPTight_Gsf); + fChain->SetBranchAddress("HLT_PFHT400_SixPFJet32", &HLT_PFHT400_SixPFJet32, &b_HLT_PFHT400_SixPFJet32); + fChain->SetBranchAddress("HLT_HT550_DisplacedDijet60_Inclusive", &HLT_HT550_DisplacedDijet60_Inclusive, &b_HLT_HT550_DisplacedDijet60_Inclusive); + fChain->SetBranchAddress("HLT_DoublePFJets100_CaloBTagDeepCSV_p71", &HLT_DoublePFJets100_CaloBTagDeepCSV_p71, &b_HLT_DoublePFJets100_CaloBTagDeepCSV_p71); + fChain->SetBranchAddress("HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_CaloDiJet30_CaloBtagDeepCSV_1p5", &HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_CaloDiJet30_CaloBtagDeepCSV_1p5, &b_HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_CaloDiJet30_CaloBtagDeepCSV_1p5); + fChain->SetBranchAddress("HLT_RsqMR320_Rsq0p09_MR200", &HLT_RsqMR320_Rsq0p09_MR200, &b_HLT_RsqMR320_Rsq0p09_MR200); + fChain->SetBranchAddress("HLT_Tau3Mu_Mu7_Mu1_TkMu1_IsoTau15_Charge1", &HLT_Tau3Mu_Mu7_Mu1_TkMu1_IsoTau15_Charge1, &b_HLT_Tau3Mu_Mu7_Mu1_TkMu1_IsoTau15_Charge1); + fChain->SetBranchAddress("HLT_DiMu4_Ele9_CaloIdL_TrackIdL_DZ_Mass3p8", &HLT_DiMu4_Ele9_CaloIdL_TrackIdL_DZ_Mass3p8, &b_HLT_DiMu4_Ele9_CaloIdL_TrackIdL_DZ_Mass3p8); + fChain->SetBranchAddress("HLT_Dimuon20_Jpsi_Barrel_Seagulls", &HLT_Dimuon20_Jpsi_Barrel_Seagulls, &b_HLT_Dimuon20_Jpsi_Barrel_Seagulls); + fChain->SetBranchAddress("HLT_DoubleMu2_Jpsi_DoubleTkMu0_Phi", &HLT_DoubleMu2_Jpsi_DoubleTkMu0_Phi, &b_HLT_DoubleMu2_Jpsi_DoubleTkMu0_Phi); + fChain->SetBranchAddress("HLT_AK8PFJet330_TrimMass30_PFAK8BTagDeepCSV_p1", &HLT_AK8PFJet330_TrimMass30_PFAK8BTagDeepCSV_p1, &b_HLT_AK8PFJet330_TrimMass30_PFAK8BTagDeepCSV_p1); + fChain->SetBranchAddress("HLT_ECALHT800", &HLT_ECALHT800, &b_HLT_ECALHT800); + fChain->SetBranchAddress("HLT_ZeroBias_part2", &HLT_ZeroBias_part2, &b_HLT_ZeroBias_part2); + fChain->SetBranchAddress("HLT_Dimuon0_LowMass_L1_TM530", &HLT_Dimuon0_LowMass_L1_TM530, &b_HLT_Dimuon0_LowMass_L1_TM530); + fChain->SetBranchAddress("HLT_Mu3er1p5_PFJet100er2p5_PFMET90_PFMHT90_IDTight", &HLT_Mu3er1p5_PFJet100er2p5_PFMET90_PFMHT90_IDTight, &b_HLT_Mu3er1p5_PFJet100er2p5_PFMET90_PFMHT90_IDTight); + fChain->SetBranchAddress("HLT_L2Mu10_NoVertex_NoBPTX3BX", &HLT_L2Mu10_NoVertex_NoBPTX3BX, &b_HLT_L2Mu10_NoVertex_NoBPTX3BX); + fChain->SetBranchAddress("HLT_Mu12_DoublePFJets54MaxDeta1p6_DoubleCaloBTagDeepCSV_p71", &HLT_Mu12_DoublePFJets54MaxDeta1p6_DoubleCaloBTagDeepCSV_p71, &b_HLT_Mu12_DoublePFJets54MaxDeta1p6_DoubleCaloBTagDeepCSV_p71); + fChain->SetBranchAddress("HLT_CaloMET350_HBHECleaned", &HLT_CaloMET350_HBHECleaned, &b_HLT_CaloMET350_HBHECleaned); + fChain->SetBranchAddress("HLT_Mu7p5_Track3p5_Upsilon", &HLT_Mu7p5_Track3p5_Upsilon, &b_HLT_Mu7p5_Track3p5_Upsilon); + fChain->SetBranchAddress("HLT_L1_CDC_SingleMu_3_er1p2_TOP120_DPHI2p618_3p142", &HLT_L1_CDC_SingleMu_3_er1p2_TOP120_DPHI2p618_3p142, &b_HLT_L1_CDC_SingleMu_3_er1p2_TOP120_DPHI2p618_3p142); + fChain->SetBranchAddress("HLT_Mu8_TrkIsoVVL_DiPFJet40_DEta3p5_MJJ750_HTT300_PFMETNoMu60", &HLT_Mu8_TrkIsoVVL_DiPFJet40_DEta3p5_MJJ750_HTT300_PFMETNoMu60, &b_HLT_Mu8_TrkIsoVVL_DiPFJet40_DEta3p5_MJJ750_HTT300_PFMETNoMu60); + fChain->SetBranchAddress("HLT_BTagMu_AK8DiJet170_Mu5_noalgo", &HLT_BTagMu_AK8DiJet170_Mu5_noalgo, &b_HLT_BTagMu_AK8DiJet170_Mu5_noalgo); + fChain->SetBranchAddress("HLT_L2Mu40_NoVertex_3Sta_NoBPTX3BX", &HLT_L2Mu40_NoVertex_3Sta_NoBPTX3BX, &b_HLT_L2Mu40_NoVertex_3Sta_NoBPTX3BX); + fChain->SetBranchAddress("HLT_IsoMu20_eta2p1_TightChargedIsoPFTauHPS27_eta2p1_CrossL1", &HLT_IsoMu20_eta2p1_TightChargedIsoPFTauHPS27_eta2p1_CrossL1, &b_HLT_IsoMu20_eta2p1_TightChargedIsoPFTauHPS27_eta2p1_CrossL1); + fChain->SetBranchAddress("HLT_HcalIsolatedbunch", &HLT_HcalIsolatedbunch, &b_HLT_HcalIsolatedbunch); + fChain->SetBranchAddress("HLT_AK8PFJet500", &HLT_AK8PFJet500, &b_HLT_AK8PFJet500); + fChain->SetBranchAddress("HLT_Random", &HLT_Random, &b_HLT_Random); + fChain->SetBranchAddress("HLT_DoubleL2Mu23NoVtx_2Cha", &HLT_DoubleL2Mu23NoVtx_2Cha, &b_HLT_DoubleL2Mu23NoVtx_2Cha); + fChain->SetBranchAddress("HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_CaloDiJet30", &HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_CaloDiJet30, &b_HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_CaloDiJet30); + fChain->SetBranchAddress("HLT_PFHT350MinPFJet15", &HLT_PFHT350MinPFJet15, &b_HLT_PFHT350MinPFJet15); + fChain->SetBranchAddress("HLT_QuadPFJet98_83_71_15_DoublePFBTagDeepCSV_1p3_7p7_VBF1", &HLT_QuadPFJet98_83_71_15_DoublePFBTagDeepCSV_1p3_7p7_VBF1, &b_HLT_QuadPFJet98_83_71_15_DoublePFBTagDeepCSV_1p3_7p7_VBF1); + fChain->SetBranchAddress("HLT_PFHT680", &HLT_PFHT680, &b_HLT_PFHT680); + fChain->SetBranchAddress("HLT_Mu37_Ele27_CaloIdL_MW", &HLT_Mu37_Ele27_CaloIdL_MW, &b_HLT_Mu37_Ele27_CaloIdL_MW); + fChain->SetBranchAddress("HLT_Mu12_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ", &HLT_Mu12_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ, &b_HLT_Mu12_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ); + fChain->SetBranchAddress("HLT_DiPFJetAve80_HFJEC", &HLT_DiPFJetAve80_HFJEC, &b_HLT_DiPFJetAve80_HFJEC); + fChain->SetBranchAddress("HLT_Ele15_CaloIdL_TrackIdL_IsoVL_PFJet30", &HLT_Ele15_CaloIdL_TrackIdL_IsoVL_PFJet30, &b_HLT_Ele15_CaloIdL_TrackIdL_IsoVL_PFJet30); + fChain->SetBranchAddress("HLT_ZeroBias_FirstCollisionInTrain", &HLT_ZeroBias_FirstCollisionInTrain, &b_HLT_ZeroBias_FirstCollisionInTrain); + fChain->SetBranchAddress("HLT_Mu9_IP5_part2", &HLT_Mu9_IP5_part2, &b_HLT_Mu9_IP5_part2); + fChain->SetBranchAddress("HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30_PFBtagDeepCSV_1p5", &HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30_PFBtagDeepCSV_1p5, &b_HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30_PFBtagDeepCSV_1p5); + fChain->SetBranchAddress("HLT_PFJetFwd200", &HLT_PFJetFwd200, &b_HLT_PFJetFwd200); + fChain->SetBranchAddress("HLT_Physics_part2", &HLT_Physics_part2, &b_HLT_Physics_part2); + fChain->SetBranchAddress("HLT_DoubleMu20_7_Mass0to30_L1_DM4", &HLT_DoubleMu20_7_Mass0to30_L1_DM4, &b_HLT_DoubleMu20_7_Mass0to30_L1_DM4); + fChain->SetBranchAddress("HLT_MediumChargedIsoPFTau220HighPtRelaxedIso_Trk50_eta2p1", &HLT_MediumChargedIsoPFTau220HighPtRelaxedIso_Trk50_eta2p1, &b_HLT_MediumChargedIsoPFTau220HighPtRelaxedIso_Trk50_eta2p1); + fChain->SetBranchAddress("HLT_BTagMu_AK4DiJet170_Mu5_noalgo", &HLT_BTagMu_AK4DiJet170_Mu5_noalgo, &b_HLT_BTagMu_AK4DiJet170_Mu5_noalgo); + fChain->SetBranchAddress("HLT_DoublePhoton33_CaloIdL", &HLT_DoublePhoton33_CaloIdL, &b_HLT_DoublePhoton33_CaloIdL); + fChain->SetBranchAddress("HLT_Mu12_IP6_part2", &HLT_Mu12_IP6_part2, &b_HLT_Mu12_IP6_part2); + fChain->SetBranchAddress("HLT_Mu8_Ele8_CaloIdM_TrackIdM_Mass8_PFHT350_DZ", &HLT_Mu8_Ele8_CaloIdM_TrackIdM_Mass8_PFHT350_DZ, &b_HLT_Mu8_Ele8_CaloIdM_TrackIdM_Mass8_PFHT350_DZ); + fChain->SetBranchAddress("HLT_PFJet140", &HLT_PFJet140, &b_HLT_PFJet140); + fChain->SetBranchAddress("HLT_PFHT250", &HLT_PFHT250, &b_HLT_PFHT250); + fChain->SetBranchAddress("HLT_PFMETNoMu130_PFMHTNoMu130_IDTight", &HLT_PFMETNoMu130_PFMHTNoMu130_IDTight, &b_HLT_PFMETNoMu130_PFMHTNoMu130_IDTight); + fChain->SetBranchAddress("HLT_IsoMu24_eta2p1_TightChargedIsoPFTauHPS35_Trk1_TightID_eta2p1_Reg_CrossL1", &HLT_IsoMu24_eta2p1_TightChargedIsoPFTauHPS35_Trk1_TightID_eta2p1_Reg_CrossL1, &b_HLT_IsoMu24_eta2p1_TightChargedIsoPFTauHPS35_Trk1_TightID_eta2p1_Reg_CrossL1); + fChain->SetBranchAddress("HLT_Mu8_IP6_part0", &HLT_Mu8_IP6_part0, &b_HLT_Mu8_IP6_part0); + fChain->SetBranchAddress("HLT_CDC_L2cosmic_5_er1p0", &HLT_CDC_L2cosmic_5_er1p0, &b_HLT_CDC_L2cosmic_5_er1p0); + fChain->SetBranchAddress("HLT_AK8PFJetFwd25", &HLT_AK8PFJetFwd25, &b_HLT_AK8PFJetFwd25); + fChain->SetBranchAddress("HLT_DoubleMu5_Upsilon_DoubleEle3_CaloIdL_TrackIdL", &HLT_DoubleMu5_Upsilon_DoubleEle3_CaloIdL_TrackIdL, &b_HLT_DoubleMu5_Upsilon_DoubleEle3_CaloIdL_TrackIdL); + fChain->SetBranchAddress("HLT_Ele15_Ele8_CaloIdL_TrackIdL_IsoVL", &HLT_Ele15_Ele8_CaloIdL_TrackIdL_IsoVL, &b_HLT_Ele15_Ele8_CaloIdL_TrackIdL_IsoVL); + fChain->SetBranchAddress("HLT_Ele23_Ele12_CaloIdL_TrackIdL_IsoVL_DZ", &HLT_Ele23_Ele12_CaloIdL_TrackIdL_IsoVL_DZ, &b_HLT_Ele23_Ele12_CaloIdL_TrackIdL_IsoVL_DZ); + fChain->SetBranchAddress("HLT_IsoMu20_eta2p1_LooseChargedIsoPFTauHPS27_eta2p1_TightID_CrossL1", &HLT_IsoMu20_eta2p1_LooseChargedIsoPFTauHPS27_eta2p1_TightID_CrossL1, &b_HLT_IsoMu20_eta2p1_LooseChargedIsoPFTauHPS27_eta2p1_TightID_CrossL1); + fChain->SetBranchAddress("HLT_EcalCalibration", &HLT_EcalCalibration, &b_HLT_EcalCalibration); + fChain->SetBranchAddress("HLT_HT650_DisplacedDijet60_Inclusive", &HLT_HT650_DisplacedDijet60_Inclusive, &b_HLT_HT650_DisplacedDijet60_Inclusive); + fChain->SetBranchAddress("HLT_QuadPFJet103_88_75_15_PFBTagDeepCSV_1p3_VBF2", &HLT_QuadPFJet103_88_75_15_PFBTagDeepCSV_1p3_VBF2, &b_HLT_QuadPFJet103_88_75_15_PFBTagDeepCSV_1p3_VBF2); + fChain->SetBranchAddress("HLT_AK4CaloJet50", &HLT_AK4CaloJet50, &b_HLT_AK4CaloJet50); + fChain->SetBranchAddress("HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8", &HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8, &b_HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8); + fChain->SetBranchAddress("HLT_PFMET120_PFMHT120_IDTight", &HLT_PFMET120_PFMHT120_IDTight, &b_HLT_PFMET120_PFMHT120_IDTight); + fChain->SetBranchAddress("HLT_TriplePhoton_20_20_20_CaloIdLV2", &HLT_TriplePhoton_20_20_20_CaloIdLV2, &b_HLT_TriplePhoton_20_20_20_CaloIdLV2); + fChain->SetBranchAddress("HLT_ZeroBias_IsolatedBunches", &HLT_ZeroBias_IsolatedBunches, &b_HLT_ZeroBias_IsolatedBunches); + fChain->SetBranchAddress("HLT_PFHT700_PFMET85_PFMHT85_IDTight", &HLT_PFHT700_PFMET85_PFMHT85_IDTight, &b_HLT_PFHT700_PFMET85_PFMHT85_IDTight); + fChain->SetBranchAddress("HLT_Physics_part0", &HLT_Physics_part0, &b_HLT_Physics_part0); + fChain->SetBranchAddress("HLT_Mu8_IP6_part4", &HLT_Mu8_IP6_part4, &b_HLT_Mu8_IP6_part4); + fChain->SetBranchAddress("HLT_BTagMu_AK8Jet300_Mu5", &HLT_BTagMu_AK8Jet300_Mu5, &b_HLT_BTagMu_AK8Jet300_Mu5); + fChain->SetBranchAddress("HLT_PFHT500_PFMET100_PFMHT100_IDTight", &HLT_PFHT500_PFMET100_PFMHT100_IDTight, &b_HLT_PFHT500_PFMET100_PFMHT100_IDTight); + fChain->SetBranchAddress("HLT_DoublePFJets350_CaloBTagDeepCSV_p71", &HLT_DoublePFJets350_CaloBTagDeepCSV_p71, &b_HLT_DoublePFJets350_CaloBTagDeepCSV_p71); + fChain->SetBranchAddress("HLT_PFMETTypeOne120_PFMHT120_IDTight_PFHT60", &HLT_PFMETTypeOne120_PFMHT120_IDTight_PFHT60, &b_HLT_PFMETTypeOne120_PFMHT120_IDTight_PFHT60); + fChain->SetBranchAddress("HLT_RsqMR300_Rsq0p09_MR200_4jet", &HLT_RsqMR300_Rsq0p09_MR200_4jet, &b_HLT_RsqMR300_Rsq0p09_MR200_4jet); + fChain->SetBranchAddress("HLT_Mu18_Mu9_DZ", &HLT_Mu18_Mu9_DZ, &b_HLT_Mu18_Mu9_DZ); + fChain->SetBranchAddress("HLT_Mu8_IP3_part2", &HLT_Mu8_IP3_part2, &b_HLT_Mu8_IP3_part2); + fChain->SetBranchAddress("HLT_Mu8_IP6_part1", &HLT_Mu8_IP6_part1, &b_HLT_Mu8_IP6_part1); + fChain->SetBranchAddress("HLT_QuadPFJet111_90_80_15_DoublePFBTagDeepCSV_1p3_7p7_VBF1", &HLT_QuadPFJet111_90_80_15_DoublePFBTagDeepCSV_1p3_7p7_VBF1, &b_HLT_QuadPFJet111_90_80_15_DoublePFBTagDeepCSV_1p3_7p7_VBF1); + fChain->SetBranchAddress("HLT_Dimuon0_Upsilon_L1_5", &HLT_Dimuon0_Upsilon_L1_5, &b_HLT_Dimuon0_Upsilon_L1_5); + fChain->SetBranchAddress("HLT_TrkMu12_DoubleTrkMu5NoFiltersNoVtx", &HLT_TrkMu12_DoubleTrkMu5NoFiltersNoVtx, &b_HLT_TrkMu12_DoubleTrkMu5NoFiltersNoVtx); + fChain->SetBranchAddress("HLT_Mu12_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL", &HLT_Mu12_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL, &b_HLT_Mu12_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL); + fChain->SetBranchAddress("HLT_Ele17_WPLoose_Gsf", &HLT_Ele17_WPLoose_Gsf, &b_HLT_Ele17_WPLoose_Gsf); + fChain->SetBranchAddress("HLT_Photon75_R9Id90_HE10_IsoM_EBOnly_PFJetsMJJ300DEta3", &HLT_Photon75_R9Id90_HE10_IsoM_EBOnly_PFJetsMJJ300DEta3, &b_HLT_Photon75_R9Id90_HE10_IsoM_EBOnly_PFJetsMJJ300DEta3); + fChain->SetBranchAddress("L1_DoubleMu0er2p0_SQ_dR_Max1p4", &L1_DoubleMu0er2p0_SQ_dR_Max1p4, &b_L1_DoubleMu0er2p0_SQ_dR_Max1p4); + fChain->SetBranchAddress("L1_SingleJet60", &L1_SingleJet60, &b_L1_SingleJet60); + fChain->SetBranchAddress("L1_ETMHF120_NotSecondBunchInTrain", &L1_ETMHF120_NotSecondBunchInTrain, &b_L1_ETMHF120_NotSecondBunchInTrain); + fChain->SetBranchAddress("L1_IsoEG32er2p5_Mt48", &L1_IsoEG32er2p5_Mt48, &b_L1_IsoEG32er2p5_Mt48); + fChain->SetBranchAddress("L1_SingleEG40er2p5", &L1_SingleEG40er2p5, &b_L1_SingleEG40er2p5); + fChain->SetBranchAddress("L1_DoubleIsoTau32er2p1", &L1_DoubleIsoTau32er2p1, &b_L1_DoubleIsoTau32er2p1); + fChain->SetBranchAddress("L1_DoubleMu4p5_SQ_OS_dR_Max1p2", &L1_DoubleMu4p5_SQ_OS_dR_Max1p2, &b_L1_DoubleMu4p5_SQ_OS_dR_Max1p2); + fChain->SetBranchAddress("L1_SingleEG10er2p5", &L1_SingleEG10er2p5, &b_L1_SingleEG10er2p5); + fChain->SetBranchAddress("L1_SingleJet140er2p5_ETMHF80", &L1_SingleJet140er2p5_ETMHF80, &b_L1_SingleJet140er2p5_ETMHF80); + fChain->SetBranchAddress("L1_DoubleEG_22_10_er2p5", &L1_DoubleEG_22_10_er2p5, &b_L1_DoubleEG_22_10_er2p5); + fChain->SetBranchAddress("L1_BPTX_NotOR_VME", &L1_BPTX_NotOR_VME, &b_L1_BPTX_NotOR_VME); + fChain->SetBranchAddress("L1_DoubleEG8er2p5_HTT260er", &L1_DoubleEG8er2p5_HTT260er, &b_L1_DoubleEG8er2p5_HTT260er); + fChain->SetBranchAddress("L1_BPTX_OR_Ref4_VME", &L1_BPTX_OR_Ref4_VME, &b_L1_BPTX_OR_Ref4_VME); + fChain->SetBranchAddress("L1_SingleMu22_OMTF", &L1_SingleMu22_OMTF, &b_L1_SingleMu22_OMTF); + fChain->SetBranchAddress("L1_DoubleJet112er2p3_dEta_Max1p6", &L1_DoubleJet112er2p3_dEta_Max1p6, &b_L1_DoubleJet112er2p3_dEta_Max1p6); + fChain->SetBranchAddress("L1_ETMHF110", &L1_ETMHF110, &b_L1_ETMHF110); + fChain->SetBranchAddress("L1_QuadJet_95_75_65_20_DoubleJet_75_65_er2p5_Jet20_FWD3p0", &L1_QuadJet_95_75_65_20_DoubleJet_75_65_er2p5_Jet20_FWD3p0, &b_L1_QuadJet_95_75_65_20_DoubleJet_75_65_er2p5_Jet20_FWD3p0); + fChain->SetBranchAddress("L1_BPTX_BeamGas_Ref2_VME", &L1_BPTX_BeamGas_Ref2_VME, &b_L1_BPTX_BeamGas_Ref2_VME); + fChain->SetBranchAddress("L1_DoubleMu0er1p5_SQ_OS_dR_Max1p4", &L1_DoubleMu0er1p5_SQ_OS_dR_Max1p4, &b_L1_DoubleMu0er1p5_SQ_OS_dR_Max1p4); + fChain->SetBranchAddress("L1_SingleMu18", &L1_SingleMu18, &b_L1_SingleMu18); + fChain->SetBranchAddress("L1_SingleMu20", &L1_SingleMu20, &b_L1_SingleMu20); + fChain->SetBranchAddress("L1_BptxXOR", &L1_BptxXOR, &b_L1_BptxXOR); + fChain->SetBranchAddress("L1_HTT200er", &L1_HTT200er, &b_L1_HTT200er); + fChain->SetBranchAddress("L1_SingleMu22_EMTF", &L1_SingleMu22_EMTF, &b_L1_SingleMu22_EMTF); + fChain->SetBranchAddress("L1_SecondBunchInTrain", &L1_SecondBunchInTrain, &b_L1_SecondBunchInTrain); + fChain->SetBranchAddress("L1_SingleMu18er1p5", &L1_SingleMu18er1p5, &b_L1_SingleMu18er1p5); + fChain->SetBranchAddress("L1_TripleMu3", &L1_TripleMu3, &b_L1_TripleMu3); + fChain->SetBranchAddress("L1_TripleMu_5SQ_3SQ_0OQ", &L1_TripleMu_5SQ_3SQ_0OQ, &b_L1_TripleMu_5SQ_3SQ_0OQ); + fChain->SetBranchAddress("L1_LastCollisionInTrain", &L1_LastCollisionInTrain, &b_L1_LastCollisionInTrain); + fChain->SetBranchAddress("L1_DoubleJet_100_30_DoubleJet30_Mass_Min620", &L1_DoubleJet_100_30_DoubleJet30_Mass_Min620, &b_L1_DoubleJet_100_30_DoubleJet30_Mass_Min620); + fChain->SetBranchAddress("L1_FirstBunchInTrain", &L1_FirstBunchInTrain, &b_L1_FirstBunchInTrain); + fChain->SetBranchAddress("L1_DoubleLooseIsoEG24er2p1", &L1_DoubleLooseIsoEG24er2p1, &b_L1_DoubleLooseIsoEG24er2p1); + fChain->SetBranchAddress("L1_Mu3_Jet120er2p5_dR_Max0p8", &L1_Mu3_Jet120er2p5_dR_Max0p8, &b_L1_Mu3_Jet120er2p5_dR_Max0p8); + fChain->SetBranchAddress("L1_DoubleEG_25_14_er2p5", &L1_DoubleEG_25_14_er2p5, &b_L1_DoubleEG_25_14_er2p5); + fChain->SetBranchAddress("L1_DoubleMu4_SQ_OS", &L1_DoubleMu4_SQ_OS, &b_L1_DoubleMu4_SQ_OS); + fChain->SetBranchAddress("L1_ZeroBias_copy", &L1_ZeroBias_copy, &b_L1_ZeroBias_copy); + fChain->SetBranchAddress("L1_HTT280er_QuadJet_70_55_40_35_er2p4", &L1_HTT280er_QuadJet_70_55_40_35_er2p4, &b_L1_HTT280er_QuadJet_70_55_40_35_er2p4); + fChain->SetBranchAddress("L1_LooseIsoEG28er2p1_HTT100er", &L1_LooseIsoEG28er2p1_HTT100er, &b_L1_LooseIsoEG28er2p1_HTT100er); + fChain->SetBranchAddress("L1_QuadMu0_OQ", &L1_QuadMu0_OQ, &b_L1_QuadMu0_OQ); + fChain->SetBranchAddress("L1_DoubleMu0er1p5_SQ_OS", &L1_DoubleMu0er1p5_SQ_OS, &b_L1_DoubleMu0er1p5_SQ_OS); + fChain->SetBranchAddress("L1_BPTX_BeamGas_B2_VME", &L1_BPTX_BeamGas_B2_VME, &b_L1_BPTX_BeamGas_B2_VME); + fChain->SetBranchAddress("L1_SingleJet120er2p5", &L1_SingleJet120er2p5, &b_L1_SingleJet120er2p5); + fChain->SetBranchAddress("L1_DoubleLooseIsoEG22er2p1", &L1_DoubleLooseIsoEG22er2p1, &b_L1_DoubleLooseIsoEG22er2p1); + fChain->SetBranchAddress("L1_SingleJet8erHE", &L1_SingleJet8erHE, &b_L1_SingleJet8erHE); + fChain->SetBranchAddress("L1_CDC_SingleMu_3_er1p2_TOP120_DPHI2p618_3p142", &L1_CDC_SingleMu_3_er1p2_TOP120_DPHI2p618_3p142, &b_L1_CDC_SingleMu_3_er1p2_TOP120_DPHI2p618_3p142); + fChain->SetBranchAddress("L1_BPTX_AND_Ref4_VME", &L1_BPTX_AND_Ref4_VME, &b_L1_BPTX_AND_Ref4_VME); + fChain->SetBranchAddress("L1_DoubleEG8er2p5_HTT280er", &L1_DoubleEG8er2p5_HTT280er, &b_L1_DoubleEG8er2p5_HTT280er); + fChain->SetBranchAddress("L1_FirstBunchAfterTrain", &L1_FirstBunchAfterTrain, &b_L1_FirstBunchAfterTrain); + fChain->SetBranchAddress("L1_SingleIsoEG28er1p5", &L1_SingleIsoEG28er1p5, &b_L1_SingleIsoEG28er1p5); + fChain->SetBranchAddress("L1_HTT320er_QuadJet_70_55_40_40_er2p4", &L1_HTT320er_QuadJet_70_55_40_40_er2p4, &b_L1_HTT320er_QuadJet_70_55_40_40_er2p4); + fChain->SetBranchAddress("L1_HTT320er_QuadJet_80_60_er2p1_45_40_er2p3", &L1_HTT320er_QuadJet_80_60_er2p1_45_40_er2p3, &b_L1_HTT320er_QuadJet_80_60_er2p1_45_40_er2p3); + fChain->SetBranchAddress("L1_SingleJet90er2p5", &L1_SingleJet90er2p5, &b_L1_SingleJet90er2p5); + fChain->SetBranchAddress("L1_DoubleMu5_SQ_EG9er2p5", &L1_DoubleMu5_SQ_EG9er2p5, &b_L1_DoubleMu5_SQ_EG9er2p5); + fChain->SetBranchAddress("L1_DoubleEG8er2p5_HTT320er", &L1_DoubleEG8er2p5_HTT320er, &b_L1_DoubleEG8er2p5_HTT320er); + fChain->SetBranchAddress("L1_TripleMu_5SQ_3SQ_0_DoubleMu_5_3_SQ_OS_Mass_Max9", &L1_TripleMu_5SQ_3SQ_0_DoubleMu_5_3_SQ_OS_Mass_Max9, &b_L1_TripleMu_5SQ_3SQ_0_DoubleMu_5_3_SQ_OS_Mass_Max9); + fChain->SetBranchAddress("L1_DoubleMu0er1p5_SQ", &L1_DoubleMu0er1p5_SQ, &b_L1_DoubleMu0er1p5_SQ); + fChain->SetBranchAddress("L1_QuadJet36er2p5_IsoTau52er2p1", &L1_QuadJet36er2p5_IsoTau52er2p1, &b_L1_QuadJet36er2p5_IsoTau52er2p1); + fChain->SetBranchAddress("L1_TripleEG_16_15_8_er2p5", &L1_TripleEG_16_15_8_er2p5, &b_L1_TripleEG_16_15_8_er2p5); + fChain->SetBranchAddress("L1_DoubleIsoTau36er2p1", &L1_DoubleIsoTau36er2p1, &b_L1_DoubleIsoTau36er2p1); + fChain->SetBranchAddress("L1_DoubleJet30er2p5_Mass_Min150_dEta_Max1p5", &L1_DoubleJet30er2p5_Mass_Min150_dEta_Max1p5, &b_L1_DoubleJet30er2p5_Mass_Min150_dEta_Max1p5); + fChain->SetBranchAddress("L1_Mu22er2p1_IsoTau32er2p1", &L1_Mu22er2p1_IsoTau32er2p1, &b_L1_Mu22er2p1_IsoTau32er2p1); + fChain->SetBranchAddress("L1_SingleMuCosmics_BMTF", &L1_SingleMuCosmics_BMTF, &b_L1_SingleMuCosmics_BMTF); + fChain->SetBranchAddress("L1_DoubleEG8er2p5_HTT300er", &L1_DoubleEG8er2p5_HTT300er, &b_L1_DoubleEG8er2p5_HTT300er); + fChain->SetBranchAddress("L1_SingleJet90_FWD3p0", &L1_SingleJet90_FWD3p0, &b_L1_SingleJet90_FWD3p0); + fChain->SetBranchAddress("L1_SingleEG36er2p5", &L1_SingleEG36er2p5, &b_L1_SingleEG36er2p5); + fChain->SetBranchAddress("L1_DoubleMu3_SQ_ETMHF50_HTT60er", &L1_DoubleMu3_SQ_ETMHF50_HTT60er, &b_L1_DoubleMu3_SQ_ETMHF50_HTT60er); + fChain->SetBranchAddress("L1_Mu3_Jet60er2p5_dR_Max0p4", &L1_Mu3_Jet60er2p5_dR_Max0p4, &b_L1_Mu3_Jet60er2p5_dR_Max0p4); + fChain->SetBranchAddress("L1_ETMHF120", &L1_ETMHF120, &b_L1_ETMHF120); + fChain->SetBranchAddress("L1_BptxOR", &L1_BptxOR, &b_L1_BptxOR); + fChain->SetBranchAddress("L1_DoubleMu0er1p4_SQ_OS_dR_Max1p4", &L1_DoubleMu0er1p4_SQ_OS_dR_Max1p4, &b_L1_DoubleMu0er1p4_SQ_OS_dR_Max1p4); + fChain->SetBranchAddress("L1_IsoEG32er2p5_Mt44", &L1_IsoEG32er2p5_Mt44, &b_L1_IsoEG32er2p5_Mt44); + fChain->SetBranchAddress("L1_SingleIsoEG24er2p1", &L1_SingleIsoEG24er2p1, &b_L1_SingleIsoEG24er2p1); + fChain->SetBranchAddress("L1_Mu10er2p3_Jet32er2p3_dR_Max0p4_DoubleJet32er2p3_dEta_Max1p6", &L1_Mu10er2p3_Jet32er2p3_dR_Max0p4_DoubleJet32er2p3_dEta_Max1p6, &b_L1_Mu10er2p3_Jet32er2p3_dR_Max0p4_DoubleJet32er2p3_dEta_Max1p6); + fChain->SetBranchAddress("L1_Mu3er1p5_Jet100er2p5_ETMHF50", &L1_Mu3er1p5_Jet100er2p5_ETMHF50, &b_L1_Mu3er1p5_Jet100er2p5_ETMHF50); + fChain->SetBranchAddress("L1_SingleJet90", &L1_SingleJet90, &b_L1_SingleJet90); + fChain->SetBranchAddress("L1_SingleJet35er2p5", &L1_SingleJet35er2p5, &b_L1_SingleJet35er2p5); + fChain->SetBranchAddress("L1_Mu12er2p3_Jet40er2p3_dR_Max0p4_DoubleJet40er2p3_dEta_Max1p6", &L1_Mu12er2p3_Jet40er2p3_dR_Max0p4_DoubleJet40er2p3_dEta_Max1p6, &b_L1_Mu12er2p3_Jet40er2p3_dR_Max0p4_DoubleJet40er2p3_dEta_Max1p6); + fChain->SetBranchAddress("L1_SingleJet140er2p5_ETMHF90", &L1_SingleJet140er2p5_ETMHF90, &b_L1_SingleJet140er2p5_ETMHF90); + fChain->SetBranchAddress("L1_SingleMuOpen_er1p4_NotBptxOR_3BX", &L1_SingleMuOpen_er1p4_NotBptxOR_3BX, &b_L1_SingleMuOpen_er1p4_NotBptxOR_3BX); + fChain->SetBranchAddress("L1_DoubleMu4p5er2p0_SQ_OS", &L1_DoubleMu4p5er2p0_SQ_OS, &b_L1_DoubleMu4p5er2p0_SQ_OS); + fChain->SetBranchAddress("L1_SingleMu12_DQ_EMTF", &L1_SingleMu12_DQ_EMTF, &b_L1_SingleMu12_DQ_EMTF); + fChain->SetBranchAddress("L1_HTT360er", &L1_HTT360er, &b_L1_HTT360er); + fChain->SetBranchAddress("L1_DoubleJet150er2p5", &L1_DoubleJet150er2p5, &b_L1_DoubleJet150er2p5); + fChain->SetBranchAddress("L1_Mu7_LooseIsoEG20er2p5", &L1_Mu7_LooseIsoEG20er2p5, &b_L1_Mu7_LooseIsoEG20er2p5); + fChain->SetBranchAddress("L1_QuadJet60er2p5", &L1_QuadJet60er2p5, &b_L1_QuadJet60er2p5); + fChain->SetBranchAddress("L1_SingleIsoEG34er2p5", &L1_SingleIsoEG34er2p5, &b_L1_SingleIsoEG34er2p5); + fChain->SetBranchAddress("L1_TripleMu_5_4_2p5_DoubleMu_5_2p5_OS_Mass_5to17", &L1_TripleMu_5_4_2p5_DoubleMu_5_2p5_OS_Mass_5to17, &b_L1_TripleMu_5_4_2p5_DoubleMu_5_2p5_OS_Mass_5to17); + fChain->SetBranchAddress("L1_DoubleEG_LooseIso25_12_er2p5", &L1_DoubleEG_LooseIso25_12_er2p5, &b_L1_DoubleEG_LooseIso25_12_er2p5); + fChain->SetBranchAddress("L1_FirstCollisionInTrain", &L1_FirstCollisionInTrain, &b_L1_FirstCollisionInTrain); + fChain->SetBranchAddress("L1_HTT320er", &L1_HTT320er, &b_L1_HTT320er); + fChain->SetBranchAddress("L1_Mu18er2p1_Tau24er2p1", &L1_Mu18er2p1_Tau24er2p1, &b_L1_Mu18er2p1_Tau24er2p1); + fChain->SetBranchAddress("L1_Mu22er2p1_IsoTau40er2p1", &L1_Mu22er2p1_IsoTau40er2p1, &b_L1_Mu22er2p1_IsoTau40er2p1); + fChain->SetBranchAddress("L1_SingleMu7_DQ", &L1_SingleMu7_DQ, &b_L1_SingleMu7_DQ); + fChain->SetBranchAddress("L1_ETMHF140", &L1_ETMHF140, &b_L1_ETMHF140); + fChain->SetBranchAddress("L1_ETMHF110_HTT60er", &L1_ETMHF110_HTT60er, &b_L1_ETMHF110_HTT60er); + fChain->SetBranchAddress("L1_SingleIsoEG28er2p5", &L1_SingleIsoEG28er2p5, &b_L1_SingleIsoEG28er2p5); + fChain->SetBranchAddress("L1_ETMHF120_HTT60er", &L1_ETMHF120_HTT60er, &b_L1_ETMHF120_HTT60er); + fChain->SetBranchAddress("L1_DoubleEG_LooseIso20_10_er2p5", &L1_DoubleEG_LooseIso20_10_er2p5, &b_L1_DoubleEG_LooseIso20_10_er2p5); + fChain->SetBranchAddress("L1_ETMHF100_HTT60er", &L1_ETMHF100_HTT60er, &b_L1_ETMHF100_HTT60er); + fChain->SetBranchAddress("L1_DoubleJet_110_35_DoubleJet35_Mass_Min620", &L1_DoubleJet_110_35_DoubleJet35_Mass_Min620, &b_L1_DoubleJet_110_35_DoubleJet35_Mass_Min620); + fChain->SetBranchAddress("L1_ETT1600", &L1_ETT1600, &b_L1_ETT1600); + fChain->SetBranchAddress("L1_DoubleMu0", &L1_DoubleMu0, &b_L1_DoubleMu0); + fChain->SetBranchAddress("L1_TripleJet_105_85_75_DoubleJet_85_75_er2p5", &L1_TripleJet_105_85_75_DoubleJet_85_75_er2p5, &b_L1_TripleJet_105_85_75_DoubleJet_85_75_er2p5); + fChain->SetBranchAddress("L1_SingleMuCosmics_OMTF", &L1_SingleMuCosmics_OMTF, &b_L1_SingleMuCosmics_OMTF); + fChain->SetBranchAddress("L1_SingleMu7", &L1_SingleMu7, &b_L1_SingleMu7); + fChain->SetBranchAddress("L1_HTT280er", &L1_HTT280er, &b_L1_HTT280er); + fChain->SetBranchAddress("L1_SingleMu16er1p5", &L1_SingleMu16er1p5, &b_L1_SingleMu16er1p5); + fChain->SetBranchAddress("L1_DoubleMu3_SQ_HTT220er", &L1_DoubleMu3_SQ_HTT220er, &b_L1_DoubleMu3_SQ_HTT220er); + fChain->SetBranchAddress("L1_Mu5_EG23er2p5", &L1_Mu5_EG23er2p5, &b_L1_Mu5_EG23er2p5); + fChain->SetBranchAddress("L1_DoubleMu18er2p1", &L1_DoubleMu18er2p1, &b_L1_DoubleMu18er2p1); + fChain->SetBranchAddress("L1_DoubleMu3_SQ_HTT260er", &L1_DoubleMu3_SQ_HTT260er, &b_L1_DoubleMu3_SQ_HTT260er); + fChain->SetBranchAddress("L1_DoubleJet30er2p5_Mass_Min250_dEta_Max1p5", &L1_DoubleJet30er2p5_Mass_Min250_dEta_Max1p5, &b_L1_DoubleJet30er2p5_Mass_Min250_dEta_Max1p5); + fChain->SetBranchAddress("L1_LastBunchInTrain", &L1_LastBunchInTrain, &b_L1_LastBunchInTrain); + fChain->SetBranchAddress("L1_DoubleEG_LooseIso22_12_er2p5", &L1_DoubleEG_LooseIso22_12_er2p5, &b_L1_DoubleEG_LooseIso22_12_er2p5); + fChain->SetBranchAddress("L1_SingleIsoEG28er2p1", &L1_SingleIsoEG28er2p1, &b_L1_SingleIsoEG28er2p1); + fChain->SetBranchAddress("L1_DoubleJet40er2p5", &L1_DoubleJet40er2p5, &b_L1_DoubleJet40er2p5); + fChain->SetBranchAddress("L1_DoubleMu_15_7_SQ", &L1_DoubleMu_15_7_SQ, &b_L1_DoubleMu_15_7_SQ); + fChain->SetBranchAddress("L1_SingleMu0_EMTF", &L1_SingleMu0_EMTF, &b_L1_SingleMu0_EMTF); + fChain->SetBranchAddress("L1_TOTEM_2", &L1_TOTEM_2, &b_L1_TOTEM_2); + fChain->SetBranchAddress("L1_TripleMu0_SQ", &L1_TripleMu0_SQ, &b_L1_TripleMu0_SQ); + fChain->SetBranchAddress("L1_BptxMinus", &L1_BptxMinus, &b_L1_BptxMinus); + fChain->SetBranchAddress("L1_SingleJet43er2p5_NotBptxOR_3BX", &L1_SingleJet43er2p5_NotBptxOR_3BX, &b_L1_SingleJet43er2p5_NotBptxOR_3BX); + fChain->SetBranchAddress("L1_DoubleJet_80_30_Mass_Min420_Mu8", &L1_DoubleJet_80_30_Mass_Min420_Mu8, &b_L1_DoubleJet_80_30_Mass_Min420_Mu8); + fChain->SetBranchAddress("L1_TOTEM_3", &L1_TOTEM_3, &b_L1_TOTEM_3); + fChain->SetBranchAddress("L1_LooseIsoEG24er2p1_IsoTau27er2p1_dR_Min0p3", &L1_LooseIsoEG24er2p1_IsoTau27er2p1_dR_Min0p3, &b_L1_LooseIsoEG24er2p1_IsoTau27er2p1_dR_Min0p3); + fChain->SetBranchAddress("L1_DoubleEG8er2p5_HTT340er", &L1_DoubleEG8er2p5_HTT340er, &b_L1_DoubleEG8er2p5_HTT340er); + fChain->SetBranchAddress("L1_SingleMu10er1p5", &L1_SingleMu10er1p5, &b_L1_SingleMu10er1p5); + fChain->SetBranchAddress("L1_SingleEG38er2p5", &L1_SingleEG38er2p5, &b_L1_SingleEG38er2p5); + fChain->SetBranchAddress("L1_HTT255er", &L1_HTT255er, &b_L1_HTT255er); + fChain->SetBranchAddress("L1_HTT160er", &L1_HTT160er, &b_L1_HTT160er); + fChain->SetBranchAddress("L1_SingleMuOpen", &L1_SingleMuOpen, &b_L1_SingleMuOpen); + fChain->SetBranchAddress("L1_LooseIsoEG26er2p1_HTT100er", &L1_LooseIsoEG26er2p1_HTT100er, &b_L1_LooseIsoEG26er2p1_HTT100er); + fChain->SetBranchAddress("L1_Mu6_DoubleEG15er2p5", &L1_Mu6_DoubleEG15er2p5, &b_L1_Mu6_DoubleEG15er2p5); + fChain->SetBranchAddress("L1_DoubleMu10_SQ", &L1_DoubleMu10_SQ, &b_L1_DoubleMu10_SQ); + fChain->SetBranchAddress("L1_LooseIsoEG30er2p1_HTT100er", &L1_LooseIsoEG30er2p1_HTT100er, &b_L1_LooseIsoEG30er2p1_HTT100er); + fChain->SetBranchAddress("L1_SingleMuOpen_er1p1_NotBptxOR_3BX", &L1_SingleMuOpen_er1p1_NotBptxOR_3BX, &b_L1_SingleMuOpen_er1p1_NotBptxOR_3BX); + fChain->SetBranchAddress("L1_DoubleEG_25_12_er2p5", &L1_DoubleEG_25_12_er2p5, &b_L1_DoubleEG_25_12_er2p5); + fChain->SetBranchAddress("L1_TripleEG_16_12_8_er2p5", &L1_TripleEG_16_12_8_er2p5, &b_L1_TripleEG_16_12_8_er2p5); + fChain->SetBranchAddress("L1_SingleJet120", &L1_SingleJet120, &b_L1_SingleJet120); + fChain->SetBranchAddress("L1_TripleMu0_OQ", &L1_TripleMu0_OQ, &b_L1_TripleMu0_OQ); + fChain->SetBranchAddress("L1_BPTX_AND_Ref1_VME", &L1_BPTX_AND_Ref1_VME, &b_L1_BPTX_AND_Ref1_VME); + fChain->SetBranchAddress("L1_DoubleJet_90_30_DoubleJet30_Mass_Min620", &L1_DoubleJet_90_30_DoubleJet30_Mass_Min620, &b_L1_DoubleJet_90_30_DoubleJet30_Mass_Min620); + fChain->SetBranchAddress("L1_HCAL_LaserMon_Trig", &L1_HCAL_LaserMon_Trig, &b_L1_HCAL_LaserMon_Trig); + fChain->SetBranchAddress("L1_BPTX_BeamGas_Ref1_VME", &L1_BPTX_BeamGas_Ref1_VME, &b_L1_BPTX_BeamGas_Ref1_VME); + fChain->SetBranchAddress("L1_Mu22er2p1_Tau70er2p1", &L1_Mu22er2p1_Tau70er2p1, &b_L1_Mu22er2p1_Tau70er2p1); + fChain->SetBranchAddress("L1_HTT320er_QuadJet_80_60_er2p1_50_45_er2p3", &L1_HTT320er_QuadJet_80_60_er2p1_50_45_er2p3, &b_L1_HTT320er_QuadJet_80_60_er2p1_50_45_er2p3); + fChain->SetBranchAddress("L1_SingleMu0_BMTF", &L1_SingleMu0_BMTF, &b_L1_SingleMu0_BMTF); + fChain->SetBranchAddress("L1_BPTX_RefAND_VME", &L1_BPTX_RefAND_VME, &b_L1_BPTX_RefAND_VME); + fChain->SetBranchAddress("L1_DoubleMu0_SQ_OS", &L1_DoubleMu0_SQ_OS, &b_L1_DoubleMu0_SQ_OS); + fChain->SetBranchAddress("L1_ETMHF110_HTT60er_NotSecondBunchInTrain", &L1_ETMHF110_HTT60er_NotSecondBunchInTrain, &b_L1_ETMHF110_HTT60er_NotSecondBunchInTrain); + fChain->SetBranchAddress("L1_UnprefireableEvent", &L1_UnprefireableEvent, &b_L1_UnprefireableEvent); + fChain->SetBranchAddress("L1_LooseIsoEG22er2p1_IsoTau26er2p1_dR_Min0p3", &L1_LooseIsoEG22er2p1_IsoTau26er2p1_dR_Min0p3, &b_L1_LooseIsoEG22er2p1_IsoTau26er2p1_dR_Min0p3); + fChain->SetBranchAddress("L1_ETMHF100", &L1_ETMHF100, &b_L1_ETMHF100); + fChain->SetBranchAddress("L1_SingleIsoEG26er2p1", &L1_SingleIsoEG26er2p1, &b_L1_SingleIsoEG26er2p1); + fChain->SetBranchAddress("L1_ETMHF130", &L1_ETMHF130, &b_L1_ETMHF130); + fChain->SetBranchAddress("L1_DoubleEG_15_10_er2p5", &L1_DoubleEG_15_10_er2p5, &b_L1_DoubleEG_15_10_er2p5); + fChain->SetBranchAddress("L1_DoubleMu_12_5", &L1_DoubleMu_12_5, &b_L1_DoubleMu_12_5); + fChain->SetBranchAddress("L1_TripleMu_5_3_3_SQ", &L1_TripleMu_5_3_3_SQ, &b_L1_TripleMu_5_3_3_SQ); + fChain->SetBranchAddress("L1_DoubleMu3_SQ_ETMHF50_Jet60er2p5", &L1_DoubleMu3_SQ_ETMHF50_Jet60er2p5, &b_L1_DoubleMu3_SQ_ETMHF50_Jet60er2p5); + fChain->SetBranchAddress("L1_HCAL_LaserMon_Veto", &L1_HCAL_LaserMon_Veto, &b_L1_HCAL_LaserMon_Veto); + fChain->SetBranchAddress("L1_DoubleJet_120_45_DoubleJet45_Mass_Min620_Jet60TT28", &L1_DoubleJet_120_45_DoubleJet45_Mass_Min620_Jet60TT28, &b_L1_DoubleJet_120_45_DoubleJet45_Mass_Min620_Jet60TT28); + fChain->SetBranchAddress("L1_SingleMu0_OMTF", &L1_SingleMu0_OMTF, &b_L1_SingleMu0_OMTF); + fChain->SetBranchAddress("L1_DoubleMu3_dR_Max1p6_Jet90er2p5_dR_Max0p8", &L1_DoubleMu3_dR_Max1p6_Jet90er2p5_dR_Max0p8, &b_L1_DoubleMu3_dR_Max1p6_Jet90er2p5_dR_Max0p8); + fChain->SetBranchAddress("L1_ETT2000", &L1_ETT2000, &b_L1_ETT2000); + fChain->SetBranchAddress("L1_DoubleJet_115_40_DoubleJet40_Mass_Min620", &L1_DoubleJet_115_40_DoubleJet40_Mass_Min620, &b_L1_DoubleJet_115_40_DoubleJet40_Mass_Min620); + fChain->SetBranchAddress("L1_SingleJet140er2p5", &L1_SingleJet140er2p5, &b_L1_SingleJet140er2p5); + fChain->SetBranchAddress("L1_HTT120er", &L1_HTT120er, &b_L1_HTT120er); + fChain->SetBranchAddress("L1_MinimumBiasHF0_AND_BptxAND", &L1_MinimumBiasHF0_AND_BptxAND, &b_L1_MinimumBiasHF0_AND_BptxAND); + fChain->SetBranchAddress("L1_SingleEG34er2p5", &L1_SingleEG34er2p5, &b_L1_SingleEG34er2p5); + fChain->SetBranchAddress("L1_AlwaysTrue", &L1_AlwaysTrue, &b_L1_AlwaysTrue); + fChain->SetBranchAddress("L1_SingleTau120er2p1", &L1_SingleTau120er2p1, &b_L1_SingleTau120er2p1); + fChain->SetBranchAddress("L1_DoubleEG_20_10_er2p5", &L1_DoubleEG_20_10_er2p5, &b_L1_DoubleEG_20_10_er2p5); + fChain->SetBranchAddress("L1_DoubleJet_115_40_DoubleJet40_Mass_Min620_Jet60TT28", &L1_DoubleJet_115_40_DoubleJet40_Mass_Min620_Jet60TT28, &b_L1_DoubleJet_115_40_DoubleJet40_Mass_Min620_Jet60TT28); + fChain->SetBranchAddress("L1_ETM150", &L1_ETM150, &b_L1_ETM150); + fChain->SetBranchAddress("L1_TripleEG16er2p5", &L1_TripleEG16er2p5, &b_L1_TripleEG16er2p5); + fChain->SetBranchAddress("L1_Mu22er2p1_IsoTau34er2p1", &L1_Mu22er2p1_IsoTau34er2p1, &b_L1_Mu22er2p1_IsoTau34er2p1); + fChain->SetBranchAddress("L1_DoubleMu_15_5_SQ", &L1_DoubleMu_15_5_SQ, &b_L1_DoubleMu_15_5_SQ); + fChain->SetBranchAddress("L1_SingleIsoEG30er2p5", &L1_SingleIsoEG30er2p5, &b_L1_SingleIsoEG30er2p5); + fChain->SetBranchAddress("L1_SingleJet120_FWD3p0", &L1_SingleJet120_FWD3p0, &b_L1_SingleJet120_FWD3p0); + fChain->SetBranchAddress("L1_DoubleMu_15_7", &L1_DoubleMu_15_7, &b_L1_DoubleMu_15_7); + fChain->SetBranchAddress("L1_UnpairedBunchBptxMinus", &L1_UnpairedBunchBptxMinus, &b_L1_UnpairedBunchBptxMinus); + fChain->SetBranchAddress("L1_SingleLooseIsoEG28er1p5", &L1_SingleLooseIsoEG28er1p5, &b_L1_SingleLooseIsoEG28er1p5); + fChain->SetBranchAddress("L1_HTT450er", &L1_HTT450er, &b_L1_HTT450er); + fChain->SetBranchAddress("L1_SingleMuCosmics", &L1_SingleMuCosmics, &b_L1_SingleMuCosmics); + fChain->SetBranchAddress("L1_SingleEG50", &L1_SingleEG50, &b_L1_SingleEG50); + fChain->SetBranchAddress("L1_FirstCollisionInOrbit", &L1_FirstCollisionInOrbit, &b_L1_FirstCollisionInOrbit); + fChain->SetBranchAddress("L1_FirstBunchBeforeTrain", &L1_FirstBunchBeforeTrain, &b_L1_FirstBunchBeforeTrain); + fChain->SetBranchAddress("L1_SingleMu7er1p5", &L1_SingleMu7er1p5, &b_L1_SingleMu7er1p5); + fChain->SetBranchAddress("L1_TripleMu_5_5_3", &L1_TripleMu_5_5_3, &b_L1_TripleMu_5_5_3); + fChain->SetBranchAddress("L1_TripleJet_100_80_70_DoubleJet_80_70_er2p5", &L1_TripleJet_100_80_70_DoubleJet_80_70_er2p5, &b_L1_TripleJet_100_80_70_DoubleJet_80_70_er2p5); + fChain->SetBranchAddress("L1_HTT400er", &L1_HTT400er, &b_L1_HTT400er); + fChain->SetBranchAddress("L1_DoubleJet35_Mass_Min450_IsoTau45_RmOvlp", &L1_DoubleJet35_Mass_Min450_IsoTau45_RmOvlp, &b_L1_DoubleJet35_Mass_Min450_IsoTau45_RmOvlp); + fChain->SetBranchAddress("L1_IsoTau40er2p1_ETMHF90", &L1_IsoTau40er2p1_ETMHF90, &b_L1_IsoTau40er2p1_ETMHF90); + fChain->SetBranchAddress("L1_Mu3_Jet30er2p5", &L1_Mu3_Jet30er2p5, &b_L1_Mu3_Jet30er2p5); + fChain->SetBranchAddress("L1_SingleJet160er2p5", &L1_SingleJet160er2p5, &b_L1_SingleJet160er2p5); + fChain->SetBranchAddress("L1_DoubleJet100er2p3_dEta_Max1p6", &L1_DoubleJet100er2p3_dEta_Max1p6, &b_L1_DoubleJet100er2p3_dEta_Max1p6); + fChain->SetBranchAddress("L1_SingleMu22_BMTF", &L1_SingleMu22_BMTF, &b_L1_SingleMu22_BMTF); + fChain->SetBranchAddress("L1_IsoEG32er2p5_Mt40", &L1_IsoEG32er2p5_Mt40, &b_L1_IsoEG32er2p5_Mt40); + fChain->SetBranchAddress("L1_DoubleTau70er2p1", &L1_DoubleTau70er2p1, &b_L1_DoubleTau70er2p1); + fChain->SetBranchAddress("L1_DoubleMu4p5er2p0_SQ_OS_Mass7to18", &L1_DoubleMu4p5er2p0_SQ_OS_Mass7to18, &b_L1_DoubleMu4p5er2p0_SQ_OS_Mass7to18); + fChain->SetBranchAddress("L1_Mu3_Jet35er2p5_dR_Max0p4", &L1_Mu3_Jet35er2p5_dR_Max0p4, &b_L1_Mu3_Jet35er2p5_dR_Max0p4); + fChain->SetBranchAddress("L1_Mu7_EG23er2p5", &L1_Mu7_EG23er2p5, &b_L1_Mu7_EG23er2p5); + fChain->SetBranchAddress("L1_DoubleEG_LooseIso22_10_er2p5", &L1_DoubleEG_LooseIso22_10_er2p5, &b_L1_DoubleEG_LooseIso22_10_er2p5); + fChain->SetBranchAddress("L1_ETMHF90_HTT60er", &L1_ETMHF90_HTT60er, &b_L1_ETMHF90_HTT60er); + fChain->SetBranchAddress("L1_Mu5_LooseIsoEG20er2p5", &L1_Mu5_LooseIsoEG20er2p5, &b_L1_Mu5_LooseIsoEG20er2p5); + fChain->SetBranchAddress("L1_SingleMu8er1p5", &L1_SingleMu8er1p5, &b_L1_SingleMu8er1p5); + fChain->SetBranchAddress("L1_Mu6_DoubleEG17er2p5", &L1_Mu6_DoubleEG17er2p5, &b_L1_Mu6_DoubleEG17er2p5); + fChain->SetBranchAddress("L1_DoubleMu3_SQ_HTT240er", &L1_DoubleMu3_SQ_HTT240er, &b_L1_DoubleMu3_SQ_HTT240er); + fChain->SetBranchAddress("L1_DoubleMu3_SQ_ETMHF50_Jet60er2p5_OR_DoubleJet40er2p5", &L1_DoubleMu3_SQ_ETMHF50_Jet60er2p5_OR_DoubleJet40er2p5, &b_L1_DoubleMu3_SQ_ETMHF50_Jet60er2p5_OR_DoubleJet40er2p5); + fChain->SetBranchAddress("L1_SingleEG60", &L1_SingleEG60, &b_L1_SingleEG60); + fChain->SetBranchAddress("L1_LooseIsoEG22er2p1_Tau70er2p1_dR_Min0p3", &L1_LooseIsoEG22er2p1_Tau70er2p1_dR_Min0p3, &b_L1_LooseIsoEG22er2p1_Tau70er2p1_dR_Min0p3); + fChain->SetBranchAddress("L1_SingleIsoEG30er2p1", &L1_SingleIsoEG30er2p1, &b_L1_SingleIsoEG30er2p1); + fChain->SetBranchAddress("L1_Mu3_Jet16er2p5_dR_Max0p4", &L1_Mu3_Jet16er2p5_dR_Max0p4, &b_L1_Mu3_Jet16er2p5_dR_Max0p4); + fChain->SetBranchAddress("L1_SingleMu6er1p5", &L1_SingleMu6er1p5, &b_L1_SingleMu6er1p5); + fChain->SetBranchAddress("L1_LooseIsoEG24er2p1_HTT100er", &L1_LooseIsoEG24er2p1_HTT100er, &b_L1_LooseIsoEG24er2p1_HTT100er); + fChain->SetBranchAddress("L1_TOTEM_4", &L1_TOTEM_4, &b_L1_TOTEM_4); + fChain->SetBranchAddress("L1_QuadMu0", &L1_QuadMu0, &b_L1_QuadMu0); + fChain->SetBranchAddress("L1_DoubleJet30er2p5_Mass_Min300_dEta_Max1p5", &L1_DoubleJet30er2p5_Mass_Min300_dEta_Max1p5, &b_L1_DoubleJet30er2p5_Mass_Min300_dEta_Max1p5); + fChain->SetBranchAddress("L1_SingleMu14er1p5", &L1_SingleMu14er1p5, &b_L1_SingleMu14er1p5); + fChain->SetBranchAddress("L1_Mu18er2p1_Tau26er2p1", &L1_Mu18er2p1_Tau26er2p1, &b_L1_Mu18er2p1_Tau26er2p1); + fChain->SetBranchAddress("L1_SingleTau130er2p1", &L1_SingleTau130er2p1, &b_L1_SingleTau130er2p1); + fChain->SetBranchAddress("L1_BptxPlus", &L1_BptxPlus, &b_L1_BptxPlus); + fChain->SetBranchAddress("L1_TripleEG_18_18_12_er2p5", &L1_TripleEG_18_18_12_er2p5, &b_L1_TripleEG_18_18_12_er2p5); + fChain->SetBranchAddress("L1_TripleMu0", &L1_TripleMu0, &b_L1_TripleMu0); + fChain->SetBranchAddress("L1_DoubleIsoTau34er2p1", &L1_DoubleIsoTau34er2p1, &b_L1_DoubleIsoTau34er2p1); + fChain->SetBranchAddress("L1_TripleEG_18_17_8_er2p5", &L1_TripleEG_18_17_8_er2p5, &b_L1_TripleEG_18_17_8_er2p5); + fChain->SetBranchAddress("L1_SingleIsoEG32er2p5", &L1_SingleIsoEG32er2p5, &b_L1_SingleIsoEG32er2p5); + fChain->SetBranchAddress("L1_SingleJet60er2p5", &L1_SingleJet60er2p5, &b_L1_SingleJet60er2p5); + fChain->SetBranchAddress("L1_DoubleMu4_SQ_EG9er2p5", &L1_DoubleMu4_SQ_EG9er2p5, &b_L1_DoubleMu4_SQ_EG9er2p5); + fChain->SetBranchAddress("L1_IsoTau40er2p1_ETMHF120", &L1_IsoTau40er2p1_ETMHF120, &b_L1_IsoTau40er2p1_ETMHF120); + fChain->SetBranchAddress("L1_SingleIsoEG24er1p5", &L1_SingleIsoEG24er1p5, &b_L1_SingleIsoEG24er1p5); + fChain->SetBranchAddress("L1_IsolatedBunch", &L1_IsolatedBunch, &b_L1_IsolatedBunch); + fChain->SetBranchAddress("L1_DoubleJet30er2p5_Mass_Min330_dEta_Max1p5", &L1_DoubleJet30er2p5_Mass_Min330_dEta_Max1p5, &b_L1_DoubleJet30er2p5_Mass_Min330_dEta_Max1p5); + fChain->SetBranchAddress("L1_BPTX_OR_Ref3_VME", &L1_BPTX_OR_Ref3_VME, &b_L1_BPTX_OR_Ref3_VME); + fChain->SetBranchAddress("L1_TripleMu3_SQ", &L1_TripleMu3_SQ, &b_L1_TripleMu3_SQ); + fChain->SetBranchAddress("L1_Mu3_Jet120er2p5_dR_Max0p4", &L1_Mu3_Jet120er2p5_dR_Max0p4, &b_L1_Mu3_Jet120er2p5_dR_Max0p4); + fChain->SetBranchAddress("L1_SingleEG26er2p5", &L1_SingleEG26er2p5, &b_L1_SingleEG26er2p5); + fChain->SetBranchAddress("L1_Mu22er2p1_IsoTau36er2p1", &L1_Mu22er2p1_IsoTau36er2p1, &b_L1_Mu22er2p1_IsoTau36er2p1); + fChain->SetBranchAddress("L1_SingleJet20er2p5_NotBptxOR_3BX", &L1_SingleJet20er2p5_NotBptxOR_3BX, &b_L1_SingleJet20er2p5_NotBptxOR_3BX); + fChain->SetBranchAddress("L1_SingleMu12er1p5", &L1_SingleMu12er1p5, &b_L1_SingleMu12er1p5); + fChain->SetBranchAddress("L1_Mu12er2p3_Jet40er2p1_dR_Max0p4_DoubleJet40er2p1_dEta_Max1p6", &L1_Mu12er2p3_Jet40er2p1_dR_Max0p4_DoubleJet40er2p1_dEta_Max1p6, &b_L1_Mu12er2p3_Jet40er2p1_dR_Max0p4_DoubleJet40er2p1_dEta_Max1p6); + fChain->SetBranchAddress("L1_SingleMu9er1p5", &L1_SingleMu9er1p5, &b_L1_SingleMu9er1p5); + fChain->SetBranchAddress("L1_DoubleJet30er2p5_Mass_Min360_dEta_Max1p5", &L1_DoubleJet30er2p5_Mass_Min360_dEta_Max1p5, &b_L1_DoubleJet30er2p5_Mass_Min360_dEta_Max1p5); + fChain->SetBranchAddress("L1_DoubleJet_80_30_Mass_Min420_IsoTau40_RmOvlp", &L1_DoubleJet_80_30_Mass_Min420_IsoTau40_RmOvlp, &b_L1_DoubleJet_80_30_Mass_Min420_IsoTau40_RmOvlp); + fChain->SetBranchAddress("L1_DoubleMu9_SQ", &L1_DoubleMu9_SQ, &b_L1_DoubleMu9_SQ); + fChain->SetBranchAddress("L1_SingleIsoEG32er2p1", &L1_SingleIsoEG32er2p1, &b_L1_SingleIsoEG32er2p1); + fChain->SetBranchAddress("L1_SingleJet12erHE", &L1_SingleJet12erHE, &b_L1_SingleJet12erHE); + fChain->SetBranchAddress("L1_SingleLooseIsoEG30er1p5", &L1_SingleLooseIsoEG30er1p5, &b_L1_SingleLooseIsoEG30er1p5); + fChain->SetBranchAddress("L1_SingleJet200", &L1_SingleJet200, &b_L1_SingleJet200); + fChain->SetBranchAddress("L1_BPTX_AND_Ref3_VME", &L1_BPTX_AND_Ref3_VME, &b_L1_BPTX_AND_Ref3_VME); + fChain->SetBranchAddress("L1_DoubleEG_27_14_er2p5", &L1_DoubleEG_27_14_er2p5, &b_L1_DoubleEG_27_14_er2p5); + fChain->SetBranchAddress("L1_DoubleJet_80_30_Mass_Min420_DoubleMu0_SQ", &L1_DoubleJet_80_30_Mass_Min420_DoubleMu0_SQ, &b_L1_DoubleJet_80_30_Mass_Min420_DoubleMu0_SQ); + fChain->SetBranchAddress("L1_SingleJet10erHE", &L1_SingleJet10erHE, &b_L1_SingleJet10erHE); + fChain->SetBranchAddress("L1_SingleMuCosmics_EMTF", &L1_SingleMuCosmics_EMTF, &b_L1_SingleMuCosmics_EMTF); + fChain->SetBranchAddress("L1_SingleEG15er2p5", &L1_SingleEG15er2p5, &b_L1_SingleEG15er2p5); + fChain->SetBranchAddress("L1_SingleIsoEG26er2p5", &L1_SingleIsoEG26er2p5, &b_L1_SingleIsoEG26er2p5); + fChain->SetBranchAddress("L1_DoubleMu0er2p0_SQ_OS_dR_Max1p4", &L1_DoubleMu0er2p0_SQ_OS_dR_Max1p4, &b_L1_DoubleMu0er2p0_SQ_OS_dR_Max1p4); + fChain->SetBranchAddress("L1_SingleJet46er2p5_NotBptxOR_3BX", &L1_SingleJet46er2p5_NotBptxOR_3BX, &b_L1_SingleJet46er2p5_NotBptxOR_3BX); + fChain->SetBranchAddress("L1_IsoTau40er2p1_ETMHF100", &L1_IsoTau40er2p1_ETMHF100, &b_L1_IsoTau40er2p1_ETMHF100); + fChain->SetBranchAddress("L1_SingleEG45er2p5", &L1_SingleEG45er2p5, &b_L1_SingleEG45er2p5); + fChain->SetBranchAddress("L1_SingleMu5", &L1_SingleMu5, &b_L1_SingleMu5); + fChain->SetBranchAddress("L1_Mu3er1p5_Jet100er2p5_ETMHF40", &L1_Mu3er1p5_Jet100er2p5_ETMHF40, &b_L1_Mu3er1p5_Jet100er2p5_ETMHF40); + fChain->SetBranchAddress("L1_Mu6_HTT250er", &L1_Mu6_HTT250er, &b_L1_Mu6_HTT250er); + fChain->SetBranchAddress("L1_TOTEM_1", &L1_TOTEM_1, &b_L1_TOTEM_1); + fChain->SetBranchAddress("L1_TripleMu_5_3_3", &L1_TripleMu_5_3_3, &b_L1_TripleMu_5_3_3); + fChain->SetBranchAddress("L1_TripleMu_5_3p5_2p5_OQ_DoubleMu_5_2p5_OQ_OS_Mass_5to17", &L1_TripleMu_5_3p5_2p5_OQ_DoubleMu_5_2p5_OQ_OS_Mass_5to17, &b_L1_TripleMu_5_3p5_2p5_OQ_DoubleMu_5_2p5_OQ_OS_Mass_5to17); + fChain->SetBranchAddress("L1_TripleMu_5_3p5_2p5", &L1_TripleMu_5_3p5_2p5, &b_L1_TripleMu_5_3p5_2p5); + fChain->SetBranchAddress("L1_Mu6_HTT240er", &L1_Mu6_HTT240er, &b_L1_Mu6_HTT240er); + fChain->SetBranchAddress("L1_LooseIsoEG26er2p1_Jet34er2p5_dR_Min0p3", &L1_LooseIsoEG26er2p1_Jet34er2p5_dR_Min0p3, &b_L1_LooseIsoEG26er2p1_Jet34er2p5_dR_Min0p3); + fChain->SetBranchAddress("L1_LooseIsoEG30er2p1_Jet34er2p5_dR_Min0p3", &L1_LooseIsoEG30er2p1_Jet34er2p5_dR_Min0p3, &b_L1_LooseIsoEG30er2p1_Jet34er2p5_dR_Min0p3); + fChain->SetBranchAddress("L1_SingleJet35_FWD3p0", &L1_SingleJet35_FWD3p0, &b_L1_SingleJet35_FWD3p0); + fChain->SetBranchAddress("L1_SingleJet20er2p5_NotBptxOR", &L1_SingleJet20er2p5_NotBptxOR, &b_L1_SingleJet20er2p5_NotBptxOR); + fChain->SetBranchAddress("L1_DoubleMu0_Mass_Min1", &L1_DoubleMu0_Mass_Min1, &b_L1_DoubleMu0_Mass_Min1); + fChain->SetBranchAddress("L1_ZeroBias", &L1_ZeroBias, &b_L1_ZeroBias); + fChain->SetBranchAddress("L1_SingleMu12_DQ_BMTF", &L1_SingleMu12_DQ_BMTF, &b_L1_SingleMu12_DQ_BMTF); + fChain->SetBranchAddress("L1_DoubleJet_120_45_DoubleJet45_Mass_Min620", &L1_DoubleJet_120_45_DoubleJet45_Mass_Min620, &b_L1_DoubleJet_120_45_DoubleJet45_Mass_Min620); + fChain->SetBranchAddress("L1_TripleJet_95_75_65_DoubleJet_75_65_er2p5", &L1_TripleJet_95_75_65_DoubleJet_75_65_er2p5, &b_L1_TripleJet_95_75_65_DoubleJet_75_65_er2p5); + fChain->SetBranchAddress("L1_Mu6_DoubleEG10er2p5", &L1_Mu6_DoubleEG10er2p5, &b_L1_Mu6_DoubleEG10er2p5); + fChain->SetBranchAddress("L1_LooseIsoEG28er2p1_Jet34er2p5_dR_Min0p3", &L1_LooseIsoEG28er2p1_Jet34er2p5_dR_Min0p3, &b_L1_LooseIsoEG28er2p1_Jet34er2p5_dR_Min0p3); + fChain->SetBranchAddress("L1_SingleMu12_DQ_OMTF", &L1_SingleMu12_DQ_OMTF, &b_L1_SingleMu12_DQ_OMTF); + fChain->SetBranchAddress("L1_SingleEG42er2p5", &L1_SingleEG42er2p5, &b_L1_SingleEG42er2p5); + fChain->SetBranchAddress("L1_SingleMu22", &L1_SingleMu22, &b_L1_SingleMu22); + fChain->SetBranchAddress("L1_SingleMu15_DQ", &L1_SingleMu15_DQ, &b_L1_SingleMu15_DQ); + fChain->SetBranchAddress("L1_TripleMu_5SQ_3SQ_0OQ_DoubleMu_5_3_SQ_OS_Mass_Max9", &L1_TripleMu_5SQ_3SQ_0OQ_DoubleMu_5_3_SQ_OS_Mass_Max9, &b_L1_TripleMu_5SQ_3SQ_0OQ_DoubleMu_5_3_SQ_OS_Mass_Max9); + fChain->SetBranchAddress("L1_DoubleJet30er2p5_Mass_Min200_dEta_Max1p5", &L1_DoubleJet30er2p5_Mass_Min200_dEta_Max1p5, &b_L1_DoubleJet30er2p5_Mass_Min200_dEta_Max1p5); + fChain->SetBranchAddress("L1_ETMHF130_HTT60er", &L1_ETMHF130_HTT60er, &b_L1_ETMHF130_HTT60er); + fChain->SetBranchAddress("L1_QuadMu0_SQ", &L1_QuadMu0_SQ, &b_L1_QuadMu0_SQ); + fChain->SetBranchAddress("L1_SingleEG8er2p5", &L1_SingleEG8er2p5, &b_L1_SingleEG8er2p5); + fChain->SetBranchAddress("L1_SingleMuOpen_NotBptxOR", &L1_SingleMuOpen_NotBptxOR, &b_L1_SingleMuOpen_NotBptxOR); + fChain->SetBranchAddress("L1_DoubleMu3_OS_DoubleEG7p5Upsilon", &L1_DoubleMu3_OS_DoubleEG7p5Upsilon, &b_L1_DoubleMu3_OS_DoubleEG7p5Upsilon); + fChain->SetBranchAddress("L1_SingleJet60_FWD3p0", &L1_SingleJet60_FWD3p0, &b_L1_SingleJet60_FWD3p0); + fChain->SetBranchAddress("L1_ETMHF150", &L1_ETMHF150, &b_L1_ETMHF150); + fChain->SetBranchAddress("L1_DoubleMu_15_7_Mass_Min1", &L1_DoubleMu_15_7_Mass_Min1, &b_L1_DoubleMu_15_7_Mass_Min1); + fChain->SetBranchAddress("L1_DoubleMu4_SQ_OS_dR_Max1p2", &L1_DoubleMu4_SQ_OS_dR_Max1p2, &b_L1_DoubleMu4_SQ_OS_dR_Max1p2); + fChain->SetBranchAddress("L1_BPTX_BeamGas_B1_VME", &L1_BPTX_BeamGas_B1_VME, &b_L1_BPTX_BeamGas_B1_VME); + fChain->SetBranchAddress("L1_SingleJet35", &L1_SingleJet35, &b_L1_SingleJet35); + fChain->SetBranchAddress("L1_TripleMu_5_3p5_2p5_DoubleMu_5_2p5_OS_Mass_5to17", &L1_TripleMu_5_3p5_2p5_DoubleMu_5_2p5_OS_Mass_5to17, &b_L1_TripleMu_5_3p5_2p5_DoubleMu_5_2p5_OS_Mass_5to17); + fChain->SetBranchAddress("L1_Mu7_LooseIsoEG23er2p5", &L1_Mu7_LooseIsoEG23er2p5, &b_L1_Mu7_LooseIsoEG23er2p5); + fChain->SetBranchAddress("L1_Mu6_DoubleEG12er2p5", &L1_Mu6_DoubleEG12er2p5, &b_L1_Mu6_DoubleEG12er2p5); + fChain->SetBranchAddress("L1_DoubleJet100er2p5", &L1_DoubleJet100er2p5, &b_L1_DoubleJet100er2p5); + fChain->SetBranchAddress("L1_IsoTau40er2p1_ETMHF110", &L1_IsoTau40er2p1_ETMHF110, &b_L1_IsoTau40er2p1_ETMHF110); + fChain->SetBranchAddress("L1_DoubleMu3_SQ_ETMHF60_Jet60er2p5", &L1_DoubleMu3_SQ_ETMHF60_Jet60er2p5, &b_L1_DoubleMu3_SQ_ETMHF60_Jet60er2p5); + fChain->SetBranchAddress("L1_Mu3_Jet80er2p5_dR_Max0p4", &L1_Mu3_Jet80er2p5_dR_Max0p4, &b_L1_Mu3_Jet80er2p5_dR_Max0p4); + fChain->SetBranchAddress("L1_DoubleMu0_dR_Max1p6_Jet90er2p5_dR_Max0p8", &L1_DoubleMu0_dR_Max1p6_Jet90er2p5_dR_Max0p8, &b_L1_DoubleMu0_dR_Max1p6_Jet90er2p5_dR_Max0p8); + fChain->SetBranchAddress("L1_SingleJet180", &L1_SingleJet180, &b_L1_SingleJet180); + fChain->SetBranchAddress("L1_SingleMu25", &L1_SingleMu25, &b_L1_SingleMu25); + fChain->SetBranchAddress("L1_SingleJet180er2p5", &L1_SingleJet180er2p5, &b_L1_SingleJet180er2p5); + fChain->SetBranchAddress("L1_DoubleMu0_OQ", &L1_DoubleMu0_OQ, &b_L1_DoubleMu0_OQ); + fChain->SetBranchAddress("L1_DoubleMu4p5_SQ_OS", &L1_DoubleMu4p5_SQ_OS, &b_L1_DoubleMu4p5_SQ_OS); + fChain->SetBranchAddress("L1_SingleMu3", &L1_SingleMu3, &b_L1_SingleMu3); + fChain->SetBranchAddress("L1_ETT1200", &L1_ETT1200, &b_L1_ETT1200); + fChain->SetBranchAddress("L1_Mu20_EG10er2p5", &L1_Mu20_EG10er2p5, &b_L1_Mu20_EG10er2p5); + fChain->SetBranchAddress("L1_SingleMu0_DQ", &L1_SingleMu0_DQ, &b_L1_SingleMu0_DQ); + fChain->SetBranchAddress("L1_DoubleMu0_SQ", &L1_DoubleMu0_SQ, &b_L1_DoubleMu0_SQ); + fChain->SetBranchAddress("L1_SecondLastBunchInTrain", &L1_SecondLastBunchInTrain, &b_L1_SecondLastBunchInTrain); + fChain->SetBranchAddress("L1_ETM120", &L1_ETM120, &b_L1_ETM120); + fChain->SetBranchAddress("L1_DoubleJet120er2p5", &L1_DoubleJet120er2p5, &b_L1_DoubleJet120er2p5); + fChain->SetBranchAddress("L1_DoubleMu0er1p5_SQ_dR_Max1p4", &L1_DoubleMu0er1p5_SQ_dR_Max1p4, &b_L1_DoubleMu0er1p5_SQ_dR_Max1p4); + fChain->SetBranchAddress("L1_UnpairedBunchBptxPlus", &L1_UnpairedBunchBptxPlus, &b_L1_UnpairedBunchBptxPlus); + fChain->SetBranchAddress("L1_DoubleMu5Upsilon_OS_DoubleEG3", &L1_DoubleMu5Upsilon_OS_DoubleEG3, &b_L1_DoubleMu5Upsilon_OS_DoubleEG3); + fChain->SetBranchAddress("L1_NotBptxOR", &L1_NotBptxOR, &b_L1_NotBptxOR); + fChain->SetBranchAddress("L1_SingleIsoEG26er1p5", &L1_SingleIsoEG26er1p5, &b_L1_SingleIsoEG26er1p5); + fChain->SetBranchAddress("nTau", &nTau, &b_nTau); + fChain->SetBranchAddress("Tau_charge", Tau_charge, &b_Tau_charge); + fChain->SetBranchAddress("Tau_rawIsodR03", Tau_rawIsodR03, &b_Tau_rawIsodR03); + fChain->SetBranchAddress("Tau_leadTkDeltaPhi", Tau_leadTkDeltaPhi, &b_Tau_leadTkDeltaPhi); + fChain->SetBranchAddress("Tau_leadTkPtOverTauPt", Tau_leadTkPtOverTauPt, &b_Tau_leadTkPtOverTauPt); + fChain->SetBranchAddress("Tau_phi", Tau_phi, &b_Tau_phi); + fChain->SetBranchAddress("Tau_idDeepTau2017v2p1VSe", Tau_idDeepTau2017v2p1VSe, &b_Tau_idDeepTau2017v2p1VSe); + fChain->SetBranchAddress("Tau_idDeepTau2017v2p1VSjet", Tau_idDeepTau2017v2p1VSjet, &b_Tau_idDeepTau2017v2p1VSjet); + fChain->SetBranchAddress("Tau_eta", Tau_eta, &b_Tau_eta); + fChain->SetBranchAddress("Tau_dxy", Tau_dxy, &b_Tau_dxy); + fChain->SetBranchAddress("Tau_photonsOutsideSignalCone", Tau_photonsOutsideSignalCone, &b_Tau_photonsOutsideSignalCone); + fChain->SetBranchAddress("Tau_genPartFlav", Tau_genPartFlav, &b_Tau_genPartFlav); + fChain->SetBranchAddress("Tau_genPartIdx", Tau_genPartIdx, &b_Tau_genPartIdx); + fChain->SetBranchAddress("Tau_dz", Tau_dz, &b_Tau_dz); + fChain->SetBranchAddress("Tau_rawDeepTau2017v2p1VSjet", Tau_rawDeepTau2017v2p1VSjet, &b_Tau_rawDeepTau2017v2p1VSjet); + fChain->SetBranchAddress("Tau_mass", Tau_mass, &b_Tau_mass); + fChain->SetBranchAddress("Tau_idAntiEleDeadECal", Tau_idAntiEleDeadECal, &b_Tau_idAntiEleDeadECal); + fChain->SetBranchAddress("Tau_rawDeepTau2017v2p1VSmu", Tau_rawDeepTau2017v2p1VSmu, &b_Tau_rawDeepTau2017v2p1VSmu); + fChain->SetBranchAddress("Tau_cleanmask", Tau_cleanmask, &b_Tau_cleanmask); + fChain->SetBranchAddress("Tau_pt", Tau_pt, &b_Tau_pt); + fChain->SetBranchAddress("Tau_neutralIso", Tau_neutralIso, &b_Tau_neutralIso); + fChain->SetBranchAddress("Tau_jetIdx", Tau_jetIdx, &b_Tau_jetIdx); + fChain->SetBranchAddress("Tau_idDecayModeOldDMs", Tau_idDecayModeOldDMs, &b_Tau_idDecayModeOldDMs); + fChain->SetBranchAddress("Tau_chargedIso", Tau_chargedIso, &b_Tau_chargedIso); + fChain->SetBranchAddress("Tau_idDeepTau2017v2p1VSmu", Tau_idDeepTau2017v2p1VSmu, &b_Tau_idDeepTau2017v2p1VSmu); + fChain->SetBranchAddress("Tau_decayMode", Tau_decayMode, &b_Tau_decayMode); + fChain->SetBranchAddress("Tau_puCorr", Tau_puCorr, &b_Tau_puCorr); + fChain->SetBranchAddress("Tau_leadTkDeltaEta", Tau_leadTkDeltaEta, &b_Tau_leadTkDeltaEta); + fChain->SetBranchAddress("Tau_rawIso", Tau_rawIso, &b_Tau_rawIso); + fChain->SetBranchAddress("Tau_idAntiMu", Tau_idAntiMu, &b_Tau_idAntiMu); + fChain->SetBranchAddress("Tau_rawDeepTau2017v2p1VSe", Tau_rawDeepTau2017v2p1VSe, &b_Tau_rawDeepTau2017v2p1VSe); + fChain->SetBranchAddress("nIsoTrack", &nIsoTrack, &b_nIsoTrack); + fChain->SetBranchAddress("IsoTrack_pdgId", IsoTrack_pdgId, &b_IsoTrack_pdgId); + fChain->SetBranchAddress("IsoTrack_eta", IsoTrack_eta, &b_IsoTrack_eta); + fChain->SetBranchAddress("IsoTrack_pfRelIso03_all", IsoTrack_pfRelIso03_all, &b_IsoTrack_pfRelIso03_all); + fChain->SetBranchAddress("IsoTrack_charge", IsoTrack_charge, &b_IsoTrack_charge); + fChain->SetBranchAddress("IsoTrack_isFromLostTrack", IsoTrack_isFromLostTrack, &b_IsoTrack_isFromLostTrack); + fChain->SetBranchAddress("IsoTrack_fromPV", IsoTrack_fromPV, &b_IsoTrack_fromPV); + fChain->SetBranchAddress("IsoTrack_isHighPurityTrack", IsoTrack_isHighPurityTrack, &b_IsoTrack_isHighPurityTrack); + fChain->SetBranchAddress("IsoTrack_pt", IsoTrack_pt, &b_IsoTrack_pt); + fChain->SetBranchAddress("IsoTrack_phi", IsoTrack_phi, &b_IsoTrack_phi); + fChain->SetBranchAddress("IsoTrack_pfRelIso03_chg", IsoTrack_pfRelIso03_chg, &b_IsoTrack_pfRelIso03_chg); + fChain->SetBranchAddress("IsoTrack_isPFcand", IsoTrack_isPFcand, &b_IsoTrack_isPFcand); + fChain->SetBranchAddress("IsoTrack_dz", IsoTrack_dz, &b_IsoTrack_dz); + fChain->SetBranchAddress("IsoTrack_miniPFRelIso_chg", IsoTrack_miniPFRelIso_chg, &b_IsoTrack_miniPFRelIso_chg); + fChain->SetBranchAddress("IsoTrack_miniPFRelIso_all", IsoTrack_miniPFRelIso_all, &b_IsoTrack_miniPFRelIso_all); + fChain->SetBranchAddress("IsoTrack_dxy", IsoTrack_dxy, &b_IsoTrack_dxy); + fChain->SetBranchAddress("nGenPart", &nGenPart, &b_nGenPart); + fChain->SetBranchAddress("GenPart_MotherStatus", GenPart_MotherStatus, &b_GenPart_MotherStatus); + fChain->SetBranchAddress("GenPart_phi", GenPart_phi, &b_GenPart_phi); + fChain->SetBranchAddress("GenPart_pdgId", GenPart_pdgId, &b_GenPart_pdgId); + fChain->SetBranchAddress("GenPart_pt", GenPart_pt, &b_GenPart_pt); + fChain->SetBranchAddress("GenPart_isTauDecayProduct", GenPart_isTauDecayProduct, &b_GenPart_isTauDecayProduct); + fChain->SetBranchAddress("GenPart_MotherPID", GenPart_MotherPID, &b_GenPart_MotherPID); + fChain->SetBranchAddress("GenPart_isDirectPromptTauDecayProduct", GenPart_isDirectPromptTauDecayProduct, &b_GenPart_isDirectPromptTauDecayProduct); + fChain->SetBranchAddress("GenPart_genPartIdxMother", GenPart_genPartIdxMother, &b_GenPart_genPartIdxMother); + fChain->SetBranchAddress("GenPart_mass", GenPart_mass, &b_GenPart_mass); + fChain->SetBranchAddress("GenPart_fromHardProcess", GenPart_fromHardProcess, &b_GenPart_fromHardProcess); + fChain->SetBranchAddress("GenPart_isPrompt", GenPart_isPrompt, &b_GenPart_isPrompt); + fChain->SetBranchAddress("GenPart_status", GenPart_status, &b_GenPart_status); + fChain->SetBranchAddress("GenPart_isDirectHadronDecayProduct", GenPart_isDirectHadronDecayProduct, &b_GenPart_isDirectHadronDecayProduct); + fChain->SetBranchAddress("GenPart_eta", GenPart_eta, &b_GenPart_eta); + fChain->SetBranchAddress("GenPart_statusFlags", GenPart_statusFlags, &b_GenPart_statusFlags); + fChain->SetBranchAddress("nLHEPart", &nLHEPart, &b_nLHEPart); + fChain->SetBranchAddress("LHEPart_incomingpz", LHEPart_incomingpz, &b_LHEPart_incomingpz); + fChain->SetBranchAddress("LHEPart_pt", LHEPart_pt, &b_LHEPart_pt); + fChain->SetBranchAddress("LHEPart_phi", LHEPart_phi, &b_LHEPart_phi); + fChain->SetBranchAddress("LHEPart_mass", LHEPart_mass, &b_LHEPart_mass); + fChain->SetBranchAddress("LHEPart_status", LHEPart_status, &b_LHEPart_status); + fChain->SetBranchAddress("LHEPart_spin", LHEPart_spin, &b_LHEPart_spin); + fChain->SetBranchAddress("LHEPart_pdgId", LHEPart_pdgId, &b_LHEPart_pdgId); + fChain->SetBranchAddress("LHEPart_eta", LHEPart_eta, &b_LHEPart_eta); + fChain->SetBranchAddress("nTrigObj", &nTrigObj, &b_nTrigObj); + fChain->SetBranchAddress("TrigObj_l1iso", TrigObj_l1iso, &b_TrigObj_l1iso); + fChain->SetBranchAddress("TrigObj_l1pt", TrigObj_l1pt, &b_TrigObj_l1pt); + fChain->SetBranchAddress("TrigObj_l1pt_2", TrigObj_l1pt_2, &b_TrigObj_l1pt_2); + fChain->SetBranchAddress("TrigObj_phi", TrigObj_phi, &b_TrigObj_phi); + fChain->SetBranchAddress("TrigObj_l1charge", TrigObj_l1charge, &b_TrigObj_l1charge); + fChain->SetBranchAddress("TrigObj_eta", TrigObj_eta, &b_TrigObj_eta); + fChain->SetBranchAddress("TrigObj_id", TrigObj_id, &b_TrigObj_id); + fChain->SetBranchAddress("TrigObj_l2pt", TrigObj_l2pt, &b_TrigObj_l2pt); + fChain->SetBranchAddress("TrigObj_filterBits", TrigObj_filterBits, &b_TrigObj_filterBits); + fChain->SetBranchAddress("TrigObj_pt", TrigObj_pt, &b_TrigObj_pt); + fChain->SetBranchAddress("nNeutrinoGen", &nNeutrinoGen, &b_nNeutrinoGen); + fChain->SetBranchAddress("NeutrinoGen_status", NeutrinoGen_status, &b_NeutrinoGen_status); + fChain->SetBranchAddress("NeutrinoGen_MotherStatus", NeutrinoGen_MotherStatus, &b_NeutrinoGen_MotherStatus); + fChain->SetBranchAddress("NeutrinoGen_phi", NeutrinoGen_phi, &b_NeutrinoGen_phi); + fChain->SetBranchAddress("NeutrinoGen_eta", NeutrinoGen_eta, &b_NeutrinoGen_eta); + fChain->SetBranchAddress("NeutrinoGen_isTauDecayProduct", NeutrinoGen_isTauDecayProduct, &b_NeutrinoGen_isTauDecayProduct); + fChain->SetBranchAddress("NeutrinoGen_fromHardProcess", NeutrinoGen_fromHardProcess, &b_NeutrinoGen_fromHardProcess); + fChain->SetBranchAddress("NeutrinoGen_isDirectHadronDecayProduct", NeutrinoGen_isDirectHadronDecayProduct, &b_NeutrinoGen_isDirectHadronDecayProduct); + fChain->SetBranchAddress("NeutrinoGen_isPrompt", NeutrinoGen_isPrompt, &b_NeutrinoGen_isPrompt); + fChain->SetBranchAddress("NeutrinoGen_mass", NeutrinoGen_mass, &b_NeutrinoGen_mass); + fChain->SetBranchAddress("NeutrinoGen_isDirectPromptTauDecayProduct", NeutrinoGen_isDirectPromptTauDecayProduct, &b_NeutrinoGen_isDirectPromptTauDecayProduct); + fChain->SetBranchAddress("NeutrinoGen_pdgId", NeutrinoGen_pdgId, &b_NeutrinoGen_pdgId); + fChain->SetBranchAddress("NeutrinoGen_MotherPID", NeutrinoGen_MotherPID, &b_NeutrinoGen_MotherPID); + fChain->SetBranchAddress("NeutrinoGen_pt", NeutrinoGen_pt, &b_NeutrinoGen_pt); + fChain->SetBranchAddress("nSubJet", &nSubJet, &b_nSubJet); + fChain->SetBranchAddress("SubJet_btagCSVV2", SubJet_btagCSVV2, &b_SubJet_btagCSVV2); + fChain->SetBranchAddress("SubJet_mass", SubJet_mass, &b_SubJet_mass); + fChain->SetBranchAddress("SubJet_nCHadrons", SubJet_nCHadrons, &b_SubJet_nCHadrons); + fChain->SetBranchAddress("SubJet_tau1", SubJet_tau1, &b_SubJet_tau1); + fChain->SetBranchAddress("SubJet_hadronFlavour", SubJet_hadronFlavour, &b_SubJet_hadronFlavour); + fChain->SetBranchAddress("SubJet_n2b1", SubJet_n2b1, &b_SubJet_n2b1); + fChain->SetBranchAddress("SubJet_phi", SubJet_phi, &b_SubJet_phi); + fChain->SetBranchAddress("SubJet_tau4", SubJet_tau4, &b_SubJet_tau4); + fChain->SetBranchAddress("SubJet_pt", SubJet_pt, &b_SubJet_pt); + fChain->SetBranchAddress("SubJet_tau2", SubJet_tau2, &b_SubJet_tau2); + fChain->SetBranchAddress("SubJet_btagDeepB", SubJet_btagDeepB, &b_SubJet_btagDeepB); + fChain->SetBranchAddress("SubJet_nBHadrons", SubJet_nBHadrons, &b_SubJet_nBHadrons); + fChain->SetBranchAddress("SubJet_tau3", SubJet_tau3, &b_SubJet_tau3); + fChain->SetBranchAddress("SubJet_eta", SubJet_eta, &b_SubJet_eta); + fChain->SetBranchAddress("SubJet_n3b1", SubJet_n3b1, &b_SubJet_n3b1); + fChain->SetBranchAddress("SubJet_rawFactor", SubJet_rawFactor, &b_SubJet_rawFactor); + fChain->SetBranchAddress("ChsMET_pt", &ChsMET_pt, &b_ChsMET_pt); + fChain->SetBranchAddress("ChsMET_phi", &ChsMET_phi, &b_ChsMET_phi); + fChain->SetBranchAddress("ChsMET_sumEt", &ChsMET_sumEt, &b_ChsMET_sumEt); + fChain->SetBranchAddress("nLeptonGen", &nLeptonGen, &b_nLeptonGen); + fChain->SetBranchAddress("LeptonGen_status", LeptonGen_status, &b_LeptonGen_status); + fChain->SetBranchAddress("LeptonGen_pt", LeptonGen_pt, &b_LeptonGen_pt); + fChain->SetBranchAddress("LeptonGen_isDirectPromptTauDecayProduct", LeptonGen_isDirectPromptTauDecayProduct, &b_LeptonGen_isDirectPromptTauDecayProduct); + fChain->SetBranchAddress("LeptonGen_fromHardProcess", LeptonGen_fromHardProcess, &b_LeptonGen_fromHardProcess); + fChain->SetBranchAddress("LeptonGen_phi", LeptonGen_phi, &b_LeptonGen_phi); + fChain->SetBranchAddress("LeptonGen_MotherStatus", LeptonGen_MotherStatus, &b_LeptonGen_MotherStatus); + fChain->SetBranchAddress("LeptonGen_isTauDecayProduct", LeptonGen_isTauDecayProduct, &b_LeptonGen_isTauDecayProduct); + fChain->SetBranchAddress("LeptonGen_eta", LeptonGen_eta, &b_LeptonGen_eta); + fChain->SetBranchAddress("LeptonGen_isPrompt", LeptonGen_isPrompt, &b_LeptonGen_isPrompt); + fChain->SetBranchAddress("LeptonGen_pdgId", LeptonGen_pdgId, &b_LeptonGen_pdgId); + fChain->SetBranchAddress("LeptonGen_isDirectHadronDecayProduct", LeptonGen_isDirectHadronDecayProduct, &b_LeptonGen_isDirectHadronDecayProduct); + fChain->SetBranchAddress("LeptonGen_mass", LeptonGen_mass, &b_LeptonGen_mass); + fChain->SetBranchAddress("LeptonGen_MotherPID", LeptonGen_MotherPID, &b_LeptonGen_MotherPID); + fChain->SetBranchAddress("nFatJet", &nFatJet, &b_nFatJet); + fChain->SetBranchAddress("FatJet_hadronFlavour", FatJet_hadronFlavour, &b_FatJet_hadronFlavour); + fChain->SetBranchAddress("FatJet_deepTagMD_HbbvsQCD", FatJet_deepTagMD_HbbvsQCD, &b_FatJet_deepTagMD_HbbvsQCD); + fChain->SetBranchAddress("FatJet_deepTagMD_ZHccvsQCD", FatJet_deepTagMD_ZHccvsQCD, &b_FatJet_deepTagMD_ZHccvsQCD); + fChain->SetBranchAddress("FatJet_tau3", FatJet_tau3, &b_FatJet_tau3); + fChain->SetBranchAddress("FatJet_subJetIdx1", FatJet_subJetIdx1, &b_FatJet_subJetIdx1); + fChain->SetBranchAddress("FatJet_deepTagMD_ZvsQCD", FatJet_deepTagMD_ZvsQCD, &b_FatJet_deepTagMD_ZvsQCD); + fChain->SetBranchAddress("FatJet_btagCSVV2", FatJet_btagCSVV2, &b_FatJet_btagCSVV2); + fChain->SetBranchAddress("FatJet_btagHbb", FatJet_btagHbb, &b_FatJet_btagHbb); + fChain->SetBranchAddress("FatJet_deepTag_QCD", FatJet_deepTag_QCD, &b_FatJet_deepTag_QCD); + fChain->SetBranchAddress("FatJet_tau4", FatJet_tau4, &b_FatJet_tau4); + fChain->SetBranchAddress("FatJet_msoftdrop", FatJet_msoftdrop, &b_FatJet_msoftdrop); + fChain->SetBranchAddress("FatJet_particleNet_mass", FatJet_particleNet_mass, &b_FatJet_particleNet_mass); + fChain->SetBranchAddress("FatJet_subJetIdx2", FatJet_subJetIdx2, &b_FatJet_subJetIdx2); + fChain->SetBranchAddress("FatJet_genJetAK8Idx", FatJet_genJetAK8Idx, &b_FatJet_genJetAK8Idx); + fChain->SetBranchAddress("FatJet_particleNetMD_Xbb", FatJet_particleNetMD_Xbb, &b_FatJet_particleNetMD_Xbb); + fChain->SetBranchAddress("FatJet_btagDDCvLV2", FatJet_btagDDCvLV2, &b_FatJet_btagDDCvLV2); + fChain->SetBranchAddress("FatJet_deepTagMD_WvsQCD", FatJet_deepTagMD_WvsQCD, &b_FatJet_deepTagMD_WvsQCD); + fChain->SetBranchAddress("FatJet_pt", FatJet_pt, &b_FatJet_pt); + fChain->SetBranchAddress("FatJet_n2b1", FatJet_n2b1, &b_FatJet_n2b1); + fChain->SetBranchAddress("FatJet_deepTagMD_bbvsLight", FatJet_deepTagMD_bbvsLight, &b_FatJet_deepTagMD_bbvsLight); + fChain->SetBranchAddress("FatJet_deepTagMD_TvsQCD", FatJet_deepTagMD_TvsQCD, &b_FatJet_deepTagMD_TvsQCD); + fChain->SetBranchAddress("FatJet_particleNet_QCD", FatJet_particleNet_QCD, &b_FatJet_particleNet_QCD); + fChain->SetBranchAddress("FatJet_particleNet_HccvsQCD", FatJet_particleNet_HccvsQCD, &b_FatJet_particleNet_HccvsQCD); + fChain->SetBranchAddress("FatJet_btagDDCvBV2", FatJet_btagDDCvBV2, &b_FatJet_btagDDCvBV2); + fChain->SetBranchAddress("FatJet_area", FatJet_area, &b_FatJet_area); + fChain->SetBranchAddress("FatJet_btagDDBvLV2", FatJet_btagDDBvLV2, &b_FatJet_btagDDBvLV2); + fChain->SetBranchAddress("FatJet_eta", FatJet_eta, &b_FatJet_eta); + fChain->SetBranchAddress("FatJet_particleNet_ZvsQCD", FatJet_particleNet_ZvsQCD, &b_FatJet_particleNet_ZvsQCD); + fChain->SetBranchAddress("FatJet_particleNetMD_QCD", FatJet_particleNetMD_QCD, &b_FatJet_particleNetMD_QCD); + fChain->SetBranchAddress("FatJet_nCHadrons", FatJet_nCHadrons, &b_FatJet_nCHadrons); + fChain->SetBranchAddress("FatJet_deepTag_WvsQCD", FatJet_deepTag_WvsQCD, &b_FatJet_deepTag_WvsQCD); + fChain->SetBranchAddress("FatJet_deepTag_ZvsQCD", FatJet_deepTag_ZvsQCD, &b_FatJet_deepTag_ZvsQCD); + fChain->SetBranchAddress("FatJet_deepTagMD_H4qvsQCD", FatJet_deepTagMD_H4qvsQCD, &b_FatJet_deepTagMD_H4qvsQCD); + fChain->SetBranchAddress("FatJet_particleNet_TvsQCD", FatJet_particleNet_TvsQCD, &b_FatJet_particleNet_TvsQCD); + fChain->SetBranchAddress("FatJet_deepTag_TvsQCD", FatJet_deepTag_TvsQCD, &b_FatJet_deepTag_TvsQCD); + fChain->SetBranchAddress("FatJet_particleNet_HbbvsQCD", FatJet_particleNet_HbbvsQCD, &b_FatJet_particleNet_HbbvsQCD); + fChain->SetBranchAddress("FatJet_lsf3", FatJet_lsf3, &b_FatJet_lsf3); + fChain->SetBranchAddress("FatJet_tau1", FatJet_tau1, &b_FatJet_tau1); + fChain->SetBranchAddress("FatJet_deepTagMD_ZHbbvsQCD", FatJet_deepTagMD_ZHbbvsQCD, &b_FatJet_deepTagMD_ZHbbvsQCD); + fChain->SetBranchAddress("FatJet_particleNet_H4qvsQCD", FatJet_particleNet_H4qvsQCD, &b_FatJet_particleNet_H4qvsQCD); + fChain->SetBranchAddress("FatJet_particleNet_WvsQCD", FatJet_particleNet_WvsQCD, &b_FatJet_particleNet_WvsQCD); + fChain->SetBranchAddress("FatJet_deepTagMD_ZbbvsQCD", FatJet_deepTagMD_ZbbvsQCD, &b_FatJet_deepTagMD_ZbbvsQCD); + fChain->SetBranchAddress("FatJet_deepTag_QCDothers", FatJet_deepTag_QCDothers, &b_FatJet_deepTag_QCDothers); + fChain->SetBranchAddress("FatJet_deepTagMD_ccvsLight", FatJet_deepTagMD_ccvsLight, &b_FatJet_deepTagMD_ccvsLight); + fChain->SetBranchAddress("FatJet_phi", FatJet_phi, &b_FatJet_phi); + fChain->SetBranchAddress("FatJet_muonIdx3SJ", FatJet_muonIdx3SJ, &b_FatJet_muonIdx3SJ); + fChain->SetBranchAddress("FatJet_jetId", FatJet_jetId, &b_FatJet_jetId); + fChain->SetBranchAddress("FatJet_nBHadrons", FatJet_nBHadrons, &b_FatJet_nBHadrons); + fChain->SetBranchAddress("FatJet_particleNetMD_Xcc", FatJet_particleNetMD_Xcc, &b_FatJet_particleNetMD_Xcc); + fChain->SetBranchAddress("FatJet_deepTag_H", FatJet_deepTag_H, &b_FatJet_deepTag_H); + fChain->SetBranchAddress("FatJet_rawFactor", FatJet_rawFactor, &b_FatJet_rawFactor); + fChain->SetBranchAddress("FatJet_btagDeepB", FatJet_btagDeepB, &b_FatJet_btagDeepB); + fChain->SetBranchAddress("FatJet_electronIdx3SJ", FatJet_electronIdx3SJ, &b_FatJet_electronIdx3SJ); + fChain->SetBranchAddress("FatJet_mass", FatJet_mass, &b_FatJet_mass); + fChain->SetBranchAddress("FatJet_nConstituents", FatJet_nConstituents, &b_FatJet_nConstituents); + fChain->SetBranchAddress("FatJet_particleNetMD_Xqq", FatJet_particleNetMD_Xqq, &b_FatJet_particleNetMD_Xqq); + fChain->SetBranchAddress("FatJet_n3b1", FatJet_n3b1, &b_FatJet_n3b1); + fChain->SetBranchAddress("FatJet_tau2", FatJet_tau2, &b_FatJet_tau2); + fChain->SetBranchAddress("nPhotonGen", &nPhotonGen, &b_nPhotonGen); + fChain->SetBranchAddress("PhotonGen_fromHardProcess", PhotonGen_fromHardProcess, &b_PhotonGen_fromHardProcess); + fChain->SetBranchAddress("PhotonGen_isTauDecayProduct", PhotonGen_isTauDecayProduct, &b_PhotonGen_isTauDecayProduct); + fChain->SetBranchAddress("PhotonGen_MotherStatus", PhotonGen_MotherStatus, &b_PhotonGen_MotherStatus); + fChain->SetBranchAddress("PhotonGen_eta", PhotonGen_eta, &b_PhotonGen_eta); + fChain->SetBranchAddress("PhotonGen_phi", PhotonGen_phi, &b_PhotonGen_phi); + fChain->SetBranchAddress("PhotonGen_isDirectHadronDecayProduct", PhotonGen_isDirectHadronDecayProduct, &b_PhotonGen_isDirectHadronDecayProduct); + fChain->SetBranchAddress("PhotonGen_isDirectPromptTauDecayProduct", PhotonGen_isDirectPromptTauDecayProduct, &b_PhotonGen_isDirectPromptTauDecayProduct); + fChain->SetBranchAddress("PhotonGen_pt", PhotonGen_pt, &b_PhotonGen_pt); + fChain->SetBranchAddress("PhotonGen_pdgId", PhotonGen_pdgId, &b_PhotonGen_pdgId); + fChain->SetBranchAddress("PhotonGen_isPrompt", PhotonGen_isPrompt, &b_PhotonGen_isPrompt); + fChain->SetBranchAddress("PhotonGen_mass", PhotonGen_mass, &b_PhotonGen_mass); + fChain->SetBranchAddress("PhotonGen_MotherPID", PhotonGen_MotherPID, &b_PhotonGen_MotherPID); + fChain->SetBranchAddress("PhotonGen_status", PhotonGen_status, &b_PhotonGen_status); + fChain->SetBranchAddress("nDressedLepton", &nDressedLepton, &b_nDressedLepton); + fChain->SetBranchAddress("DressedLepton_phi", DressedLepton_phi, &b_DressedLepton_phi); + fChain->SetBranchAddress("DressedLepton_eta", DressedLepton_eta, &b_DressedLepton_eta); + fChain->SetBranchAddress("DressedLepton_pt", DressedLepton_pt, &b_DressedLepton_pt); + fChain->SetBranchAddress("DressedLepton_mass", DressedLepton_mass, &b_DressedLepton_mass); + fChain->SetBranchAddress("DressedLepton_pdgId", DressedLepton_pdgId, &b_DressedLepton_pdgId); + fChain->SetBranchAddress("nGenDressedLepton", &nGenDressedLepton, &b_nGenDressedLepton); + fChain->SetBranchAddress("GenDressedLepton_phi", GenDressedLepton_phi, &b_GenDressedLepton_phi); + fChain->SetBranchAddress("GenDressedLepton_hasTauAnc", GenDressedLepton_hasTauAnc, &b_GenDressedLepton_hasTauAnc); + fChain->SetBranchAddress("GenDressedLepton_mass", GenDressedLepton_mass, &b_GenDressedLepton_mass); + fChain->SetBranchAddress("GenDressedLepton_eta", GenDressedLepton_eta, &b_GenDressedLepton_eta); + fChain->SetBranchAddress("GenDressedLepton_pdgId", GenDressedLepton_pdgId, &b_GenDressedLepton_pdgId); + fChain->SetBranchAddress("GenDressedLepton_pt", GenDressedLepton_pt, &b_GenDressedLepton_pt); + fChain->SetBranchAddress("nSubGenJetAK8", &nSubGenJetAK8, &b_nSubGenJetAK8); + fChain->SetBranchAddress("SubGenJetAK8_mass", SubGenJetAK8_mass, &b_SubGenJetAK8_mass); + fChain->SetBranchAddress("SubGenJetAK8_pt", SubGenJetAK8_pt, &b_SubGenJetAK8_pt); + fChain->SetBranchAddress("SubGenJetAK8_eta", SubGenJetAK8_eta, &b_SubGenJetAK8_eta); + fChain->SetBranchAddress("SubGenJetAK8_phi", SubGenJetAK8_phi, &b_SubGenJetAK8_phi); + fChain->SetBranchAddress("nLowPtElectron", &nLowPtElectron, &b_nLowPtElectron); + fChain->SetBranchAddress("LowPtElectron_convWP", LowPtElectron_convWP, &b_LowPtElectron_convWP); + fChain->SetBranchAddress("LowPtElectron_dxy", LowPtElectron_dxy, &b_LowPtElectron_dxy); + fChain->SetBranchAddress("LowPtElectron_phi", LowPtElectron_phi, &b_LowPtElectron_phi); + fChain->SetBranchAddress("LowPtElectron_ID", LowPtElectron_ID, &b_LowPtElectron_ID); + fChain->SetBranchAddress("LowPtElectron_miniPFRelIso_chg", LowPtElectron_miniPFRelIso_chg, &b_LowPtElectron_miniPFRelIso_chg); + fChain->SetBranchAddress("LowPtElectron_convVeto", LowPtElectron_convVeto, &b_LowPtElectron_convVeto); + fChain->SetBranchAddress("LowPtElectron_eInvMinusPInv", LowPtElectron_eInvMinusPInv, &b_LowPtElectron_eInvMinusPInv); + fChain->SetBranchAddress("LowPtElectron_miniPFRelIso_all", LowPtElectron_miniPFRelIso_all, &b_LowPtElectron_miniPFRelIso_all); + fChain->SetBranchAddress("LowPtElectron_dxyErr", LowPtElectron_dxyErr, &b_LowPtElectron_dxyErr); + fChain->SetBranchAddress("LowPtElectron_hoe", LowPtElectron_hoe, &b_LowPtElectron_hoe); + fChain->SetBranchAddress("LowPtElectron_scEtOverPt", LowPtElectron_scEtOverPt, &b_LowPtElectron_scEtOverPt); + fChain->SetBranchAddress("LowPtElectron_pt", LowPtElectron_pt, &b_LowPtElectron_pt); + fChain->SetBranchAddress("LowPtElectron_r9", LowPtElectron_r9, &b_LowPtElectron_r9); + fChain->SetBranchAddress("LowPtElectron_genPartFlav", LowPtElectron_genPartFlav, &b_LowPtElectron_genPartFlav); + fChain->SetBranchAddress("LowPtElectron_genPartIdx", LowPtElectron_genPartIdx, &b_LowPtElectron_genPartIdx); + fChain->SetBranchAddress("LowPtElectron_charge", LowPtElectron_charge, &b_LowPtElectron_charge); + fChain->SetBranchAddress("LowPtElectron_convVtxRadius", LowPtElectron_convVtxRadius, &b_LowPtElectron_convVtxRadius); + fChain->SetBranchAddress("LowPtElectron_energyErr", LowPtElectron_energyErr, &b_LowPtElectron_energyErr); + fChain->SetBranchAddress("LowPtElectron_pdgId", LowPtElectron_pdgId, &b_LowPtElectron_pdgId); + fChain->SetBranchAddress("LowPtElectron_mass", LowPtElectron_mass, &b_LowPtElectron_mass); + fChain->SetBranchAddress("LowPtElectron_lostHits", LowPtElectron_lostHits, &b_LowPtElectron_lostHits); + fChain->SetBranchAddress("LowPtElectron_sieie", LowPtElectron_sieie, &b_LowPtElectron_sieie); + fChain->SetBranchAddress("LowPtElectron_ptbiased", LowPtElectron_ptbiased, &b_LowPtElectron_ptbiased); + fChain->SetBranchAddress("LowPtElectron_dz", LowPtElectron_dz, &b_LowPtElectron_dz); + fChain->SetBranchAddress("LowPtElectron_dzErr", LowPtElectron_dzErr, &b_LowPtElectron_dzErr); + fChain->SetBranchAddress("LowPtElectron_unbiased", LowPtElectron_unbiased, &b_LowPtElectron_unbiased); + fChain->SetBranchAddress("LowPtElectron_eta", LowPtElectron_eta, &b_LowPtElectron_eta); + fChain->SetBranchAddress("LowPtElectron_deltaEtaSC", LowPtElectron_deltaEtaSC, &b_LowPtElectron_deltaEtaSC); + fChain->SetBranchAddress("LowPtElectron_embeddedID", LowPtElectron_embeddedID, &b_LowPtElectron_embeddedID); + fChain->SetBranchAddress("nVetoLepton", &nVetoLepton, &b_nVetoLepton); + fChain->SetBranchAddress("VetoLepton_pt", VetoLepton_pt, &b_VetoLepton_pt); + fChain->SetBranchAddress("VetoLepton_eta", VetoLepton_eta, &b_VetoLepton_eta); + fChain->SetBranchAddress("VetoLepton_pdgId", VetoLepton_pdgId, &b_VetoLepton_pdgId); + fChain->SetBranchAddress("VetoLepton_muonIdx", VetoLepton_muonIdx, &b_VetoLepton_muonIdx); + fChain->SetBranchAddress("VetoLepton_phi", VetoLepton_phi, &b_VetoLepton_phi); + fChain->SetBranchAddress("VetoLepton_electronIdx", VetoLepton_electronIdx, &b_VetoLepton_electronIdx); + fChain->SetBranchAddress("LHEWeight_originalXWGTUP", &LHEWeight_originalXWGTUP, &b_LHEWeight_originalXWGTUP); + fChain->SetBranchAddress("nGenIsolatedPhoton", &nGenIsolatedPhoton, &b_nGenIsolatedPhoton); + fChain->SetBranchAddress("GenIsolatedPhoton_mass", GenIsolatedPhoton_mass, &b_GenIsolatedPhoton_mass); + fChain->SetBranchAddress("GenIsolatedPhoton_eta", GenIsolatedPhoton_eta, &b_GenIsolatedPhoton_eta); + fChain->SetBranchAddress("GenIsolatedPhoton_pt", GenIsolatedPhoton_pt, &b_GenIsolatedPhoton_pt); + fChain->SetBranchAddress("GenIsolatedPhoton_phi", GenIsolatedPhoton_phi, &b_GenIsolatedPhoton_phi); + fChain->SetBranchAddress("RawMET_pt", &RawMET_pt, &b_RawMET_pt); + fChain->SetBranchAddress("RawMET_phi", &RawMET_phi, &b_RawMET_phi); + fChain->SetBranchAddress("RawMET_sumEt", &RawMET_sumEt, &b_RawMET_sumEt); + fChain->SetBranchAddress("TkMET_pt", &TkMET_pt, &b_TkMET_pt); + fChain->SetBranchAddress("TkMET_sumEt", &TkMET_sumEt, &b_TkMET_sumEt); + fChain->SetBranchAddress("TkMET_phi", &TkMET_phi, &b_TkMET_phi); + fChain->SetBranchAddress("nboostedTau", &nboostedTau, &b_nboostedTau); + fChain->SetBranchAddress("boostedTau_rawIso", boostedTau_rawIso, &b_boostedTau_rawIso); + fChain->SetBranchAddress("boostedTau_leadTkDeltaPhi", boostedTau_leadTkDeltaPhi, &b_boostedTau_leadTkDeltaPhi); + fChain->SetBranchAddress("boostedTau_decayMode", boostedTau_decayMode, &b_boostedTau_decayMode); + fChain->SetBranchAddress("boostedTau_rawAntiEle2018", boostedTau_rawAntiEle2018, &b_boostedTau_rawAntiEle2018); + fChain->SetBranchAddress("boostedTau_photonsOutsideSignalCone", boostedTau_photonsOutsideSignalCone, &b_boostedTau_photonsOutsideSignalCone); + fChain->SetBranchAddress("boostedTau_pt", boostedTau_pt, &b_boostedTau_pt); + fChain->SetBranchAddress("boostedTau_leadTkDeltaEta", boostedTau_leadTkDeltaEta, &b_boostedTau_leadTkDeltaEta); + fChain->SetBranchAddress("boostedTau_genPartFlav", boostedTau_genPartFlav, &b_boostedTau_genPartFlav); + fChain->SetBranchAddress("boostedTau_rawMVAoldDM2017v2", boostedTau_rawMVAoldDM2017v2, &b_boostedTau_rawMVAoldDM2017v2); + fChain->SetBranchAddress("boostedTau_jetIdx", boostedTau_jetIdx, &b_boostedTau_jetIdx); + fChain->SetBranchAddress("boostedTau_rawMVAoldDMdR032017v2", boostedTau_rawMVAoldDMdR032017v2, &b_boostedTau_rawMVAoldDMdR032017v2); + fChain->SetBranchAddress("boostedTau_rawMVAnewDM2017v2", boostedTau_rawMVAnewDM2017v2, &b_boostedTau_rawMVAnewDM2017v2); + fChain->SetBranchAddress("boostedTau_neutralIso", boostedTau_neutralIso, &b_boostedTau_neutralIso); + fChain->SetBranchAddress("boostedTau_puCorr", boostedTau_puCorr, &b_boostedTau_puCorr); + fChain->SetBranchAddress("boostedTau_idMVAoldDM2017v2", boostedTau_idMVAoldDM2017v2, &b_boostedTau_idMVAoldDM2017v2); + fChain->SetBranchAddress("boostedTau_leadTkPtOverTauPt", boostedTau_leadTkPtOverTauPt, &b_boostedTau_leadTkPtOverTauPt); + fChain->SetBranchAddress("boostedTau_chargedIso", boostedTau_chargedIso, &b_boostedTau_chargedIso); + fChain->SetBranchAddress("boostedTau_rawIsodR03", boostedTau_rawIsodR03, &b_boostedTau_rawIsodR03); + fChain->SetBranchAddress("boostedTau_eta", boostedTau_eta, &b_boostedTau_eta); + fChain->SetBranchAddress("boostedTau_idMVAnewDM2017v2", boostedTau_idMVAnewDM2017v2, &b_boostedTau_idMVAnewDM2017v2); + fChain->SetBranchAddress("boostedTau_rawAntiEleCat2018", boostedTau_rawAntiEleCat2018, &b_boostedTau_rawAntiEleCat2018); + fChain->SetBranchAddress("boostedTau_idAntiEle2018", boostedTau_idAntiEle2018, &b_boostedTau_idAntiEle2018); + fChain->SetBranchAddress("boostedTau_idAntiMu", boostedTau_idAntiMu, &b_boostedTau_idAntiMu); + fChain->SetBranchAddress("boostedTau_charge", boostedTau_charge, &b_boostedTau_charge); + fChain->SetBranchAddress("boostedTau_idMVAoldDMdR032017v2", boostedTau_idMVAoldDMdR032017v2, &b_boostedTau_idMVAoldDMdR032017v2); + fChain->SetBranchAddress("boostedTau_mass", boostedTau_mass, &b_boostedTau_mass); + fChain->SetBranchAddress("boostedTau_phi", boostedTau_phi, &b_boostedTau_phi); + fChain->SetBranchAddress("boostedTau_genPartIdx", boostedTau_genPartIdx, &b_boostedTau_genPartIdx); + fChain->SetBranchAddress("nGenJet", &nGenJet, &b_nGenJet); + fChain->SetBranchAddress("GenJet_hadronFlavour", GenJet_hadronFlavour, &b_GenJet_hadronFlavour); + fChain->SetBranchAddress("GenJet_mass", GenJet_mass, &b_GenJet_mass); + fChain->SetBranchAddress("GenJet_partonFlavour", GenJet_partonFlavour, &b_GenJet_partonFlavour); + fChain->SetBranchAddress("GenJet_eta", GenJet_eta, &b_GenJet_eta); + fChain->SetBranchAddress("GenJet_pt", GenJet_pt, &b_GenJet_pt); + fChain->SetBranchAddress("GenJet_phi", GenJet_phi, &b_GenJet_phi); + fChain->SetBranchAddress("TriggerEffWeight_2l_u", &TriggerEffWeight_2l_u, &b_TriggerEffWeight_2l_u); + fChain->SetBranchAddress("TriggerEffWeight_sngMu", &TriggerEffWeight_sngMu, &b_TriggerEffWeight_sngMu); + fChain->SetBranchAddress("TriggerEffWeight_dblEl", &TriggerEffWeight_dblEl, &b_TriggerEffWeight_dblEl); + fChain->SetBranchAddress("TriggerEffWeight_4l", &TriggerEffWeight_4l, &b_TriggerEffWeight_4l); + fChain->SetBranchAddress("TriggerEffWeight_3l", &TriggerEffWeight_3l, &b_TriggerEffWeight_3l); + fChain->SetBranchAddress("TriggerEffWeight_dblMu", &TriggerEffWeight_dblMu, &b_TriggerEffWeight_dblMu); + fChain->SetBranchAddress("TriggerEffWeight_3l_u", &TriggerEffWeight_3l_u, &b_TriggerEffWeight_3l_u); + fChain->SetBranchAddress("TriggerEffWeight_1l_d", &TriggerEffWeight_1l_d, &b_TriggerEffWeight_1l_d); + fChain->SetBranchAddress("TriggerEffWeight_sngEl", &TriggerEffWeight_sngEl, &b_TriggerEffWeight_sngEl); + fChain->SetBranchAddress("TriggerEffWeight_2l_d", &TriggerEffWeight_2l_d, &b_TriggerEffWeight_2l_d); + fChain->SetBranchAddress("TriggerEffWeight_4l_d", &TriggerEffWeight_4l_d, &b_TriggerEffWeight_4l_d); + fChain->SetBranchAddress("TriggerEffWeight_3l_d", &TriggerEffWeight_3l_d, &b_TriggerEffWeight_3l_d); + fChain->SetBranchAddress("TriggerEffWeight_ElMu", &TriggerEffWeight_ElMu, &b_TriggerEffWeight_ElMu); + fChain->SetBranchAddress("TriggerEffWeight_1l_u", &TriggerEffWeight_1l_u, &b_TriggerEffWeight_1l_u); + fChain->SetBranchAddress("TriggerEffWeight_4l_u", &TriggerEffWeight_4l_u, &b_TriggerEffWeight_4l_u); + fChain->SetBranchAddress("TriggerEffWeight_1l", &TriggerEffWeight_1l, &b_TriggerEffWeight_1l); + fChain->SetBranchAddress("TriggerEffWeight_2l", &TriggerEffWeight_2l, &b_TriggerEffWeight_2l); + fChain->SetBranchAddress("TriggerSFWeight_ElMu", &TriggerSFWeight_ElMu, &b_TriggerSFWeight_ElMu); + fChain->SetBranchAddress("TriggerSFWeight_dblEl_d", &TriggerSFWeight_dblEl_d, &b_TriggerSFWeight_dblEl_d); + fChain->SetBranchAddress("TriggerSFWeight_3l", &TriggerSFWeight_3l, &b_TriggerSFWeight_3l); + fChain->SetBranchAddress("TriggerSFWeight_sngMu_u", &TriggerSFWeight_sngMu_u, &b_TriggerSFWeight_sngMu_u); + fChain->SetBranchAddress("TriggerSFWeight_dblMu", &TriggerSFWeight_dblMu, &b_TriggerSFWeight_dblMu); + fChain->SetBranchAddress("TriggerSFWeight_2l_u", &TriggerSFWeight_2l_u, &b_TriggerSFWeight_2l_u); + fChain->SetBranchAddress("TriggerSFWeight_ElMu_u", &TriggerSFWeight_ElMu_u, &b_TriggerSFWeight_ElMu_u); + fChain->SetBranchAddress("TriggerSFWeight_dblEl_u", &TriggerSFWeight_dblEl_u, &b_TriggerSFWeight_dblEl_u); + fChain->SetBranchAddress("TriggerSFWeight_sngMu_d", &TriggerSFWeight_sngMu_d, &b_TriggerSFWeight_sngMu_d); + fChain->SetBranchAddress("TriggerSFWeight_dblMu_u", &TriggerSFWeight_dblMu_u, &b_TriggerSFWeight_dblMu_u); + fChain->SetBranchAddress("TriggerSFWeight_sngEl_u", &TriggerSFWeight_sngEl_u, &b_TriggerSFWeight_sngEl_u); + fChain->SetBranchAddress("TriggerSFWeight_4l_u", &TriggerSFWeight_4l_u, &b_TriggerSFWeight_4l_u); + fChain->SetBranchAddress("TriggerSFWeight_ElMu_d", &TriggerSFWeight_ElMu_d, &b_TriggerSFWeight_ElMu_d); + fChain->SetBranchAddress("TriggerSFWeight_sngMu", &TriggerSFWeight_sngMu, &b_TriggerSFWeight_sngMu); + fChain->SetBranchAddress("TriggerSFWeight_1l_d", &TriggerSFWeight_1l_d, &b_TriggerSFWeight_1l_d); + fChain->SetBranchAddress("TriggerSFWeight_1l", &TriggerSFWeight_1l, &b_TriggerSFWeight_1l); + fChain->SetBranchAddress("TriggerSFWeight_2l", &TriggerSFWeight_2l, &b_TriggerSFWeight_2l); + fChain->SetBranchAddress("TriggerSFWeight_1l_u", &TriggerSFWeight_1l_u, &b_TriggerSFWeight_1l_u); + fChain->SetBranchAddress("TriggerSFWeight_sngEl", &TriggerSFWeight_sngEl, &b_TriggerSFWeight_sngEl); + fChain->SetBranchAddress("TriggerSFWeight_dblMu_d", &TriggerSFWeight_dblMu_d, &b_TriggerSFWeight_dblMu_d); + fChain->SetBranchAddress("TriggerSFWeight_sngEl_d", &TriggerSFWeight_sngEl_d, &b_TriggerSFWeight_sngEl_d); + fChain->SetBranchAddress("TriggerSFWeight_4l_d", &TriggerSFWeight_4l_d, &b_TriggerSFWeight_4l_d); + fChain->SetBranchAddress("TriggerSFWeight_dblEl", &TriggerSFWeight_dblEl, &b_TriggerSFWeight_dblEl); + fChain->SetBranchAddress("TriggerSFWeight_3l_u", &TriggerSFWeight_3l_u, &b_TriggerSFWeight_3l_u); + fChain->SetBranchAddress("TriggerSFWeight_4l", &TriggerSFWeight_4l, &b_TriggerSFWeight_4l); + fChain->SetBranchAddress("TriggerSFWeight_3l_d", &TriggerSFWeight_3l_d, &b_TriggerSFWeight_3l_d); + fChain->SetBranchAddress("TriggerSFWeight_2l_d", &TriggerSFWeight_2l_d, &b_TriggerSFWeight_2l_d); + fChain->SetBranchAddress("nGenJetAK8", &nGenJetAK8, &b_nGenJetAK8); + fChain->SetBranchAddress("GenJetAK8_phi", GenJetAK8_phi, &b_GenJetAK8_phi); + fChain->SetBranchAddress("GenJetAK8_eta", GenJetAK8_eta, &b_GenJetAK8_eta); + fChain->SetBranchAddress("GenJetAK8_mass", GenJetAK8_mass, &b_GenJetAK8_mass); + fChain->SetBranchAddress("GenJetAK8_pt", GenJetAK8_pt, &b_GenJetAK8_pt); + fChain->SetBranchAddress("GenJetAK8_hadronFlavour", GenJetAK8_hadronFlavour, &b_GenJetAK8_hadronFlavour); + fChain->SetBranchAddress("GenJetAK8_partonFlavour", GenJetAK8_partonFlavour, &b_GenJetAK8_partonFlavour); + fChain->SetBranchAddress("Flag_trkPOG_toomanystripclus53X", &Flag_trkPOG_toomanystripclus53X, &b_Flag_trkPOG_toomanystripclus53X); + fChain->SetBranchAddress("Flag_CSCTightHaloTrkMuUnvetoFilter", &Flag_CSCTightHaloTrkMuUnvetoFilter, &b_Flag_CSCTightHaloTrkMuUnvetoFilter); + fChain->SetBranchAddress("Flag_HBHENoiseFilter", &Flag_HBHENoiseFilter, &b_Flag_HBHENoiseFilter); + fChain->SetBranchAddress("Flag_EcalDeadCellBoundaryEnergyFilter", &Flag_EcalDeadCellBoundaryEnergyFilter, &b_Flag_EcalDeadCellBoundaryEnergyFilter); + fChain->SetBranchAddress("Flag_HBHENoiseIsoFilter", &Flag_HBHENoiseIsoFilter, &b_Flag_HBHENoiseIsoFilter); + fChain->SetBranchAddress("Flag_globalTightHalo2016Filter", &Flag_globalTightHalo2016Filter, &b_Flag_globalTightHalo2016Filter); + fChain->SetBranchAddress("Flag_trkPOG_logErrorTooManyClusters", &Flag_trkPOG_logErrorTooManyClusters, &b_Flag_trkPOG_logErrorTooManyClusters); + fChain->SetBranchAddress("Flag_BadPFMuonDzFilter", &Flag_BadPFMuonDzFilter, &b_Flag_BadPFMuonDzFilter); + fChain->SetBranchAddress("Flag_EcalDeadCellTriggerPrimitiveFilter", &Flag_EcalDeadCellTriggerPrimitiveFilter, &b_Flag_EcalDeadCellTriggerPrimitiveFilter); + fChain->SetBranchAddress("Flag_trkPOG_manystripclus53X", &Flag_trkPOG_manystripclus53X, &b_Flag_trkPOG_manystripclus53X); + fChain->SetBranchAddress("Flag_BadChargedCandidateFilter", &Flag_BadChargedCandidateFilter, &b_Flag_BadChargedCandidateFilter); + fChain->SetBranchAddress("Flag_hcalLaserEventFilter", &Flag_hcalLaserEventFilter, &b_Flag_hcalLaserEventFilter); + fChain->SetBranchAddress("Flag_hfNoisyHitsFilter", &Flag_hfNoisyHitsFilter, &b_Flag_hfNoisyHitsFilter); + fChain->SetBranchAddress("Flag_BadChargedCandidateSummer16Filter", &Flag_BadChargedCandidateSummer16Filter, &b_Flag_BadChargedCandidateSummer16Filter); + fChain->SetBranchAddress("Flag_chargedHadronTrackResolutionFilter", &Flag_chargedHadronTrackResolutionFilter, &b_Flag_chargedHadronTrackResolutionFilter); + fChain->SetBranchAddress("Flag_trkPOGFilters", &Flag_trkPOGFilters, &b_Flag_trkPOGFilters); + fChain->SetBranchAddress("Flag_muonBadTrackFilter", &Flag_muonBadTrackFilter, &b_Flag_muonBadTrackFilter); + fChain->SetBranchAddress("Flag_HcalStripHaloFilter", &Flag_HcalStripHaloFilter, &b_Flag_HcalStripHaloFilter); + fChain->SetBranchAddress("Flag_CSCTightHaloFilter", &Flag_CSCTightHaloFilter, &b_Flag_CSCTightHaloFilter); + fChain->SetBranchAddress("Flag_BadPFMuonFilter", &Flag_BadPFMuonFilter, &b_Flag_BadPFMuonFilter); + fChain->SetBranchAddress("Flag_eeBadScFilter", &Flag_eeBadScFilter, &b_Flag_eeBadScFilter); + fChain->SetBranchAddress("Flag_globalSuperTightHalo2016Filter", &Flag_globalSuperTightHalo2016Filter, &b_Flag_globalSuperTightHalo2016Filter); + fChain->SetBranchAddress("Flag_METFilters", &Flag_METFilters, &b_Flag_METFilters); + fChain->SetBranchAddress("Flag_ecalBadCalibFilter", &Flag_ecalBadCalibFilter, &b_Flag_ecalBadCalibFilter); + fChain->SetBranchAddress("Flag_BadPFMuonSummer16Filter", &Flag_BadPFMuonSummer16Filter, &b_Flag_BadPFMuonSummer16Filter); + fChain->SetBranchAddress("Flag_ecalLaserCorrFilter", &Flag_ecalLaserCorrFilter, &b_Flag_ecalLaserCorrFilter); + fChain->SetBranchAddress("Flag_goodVertices", &Flag_goodVertices, &b_Flag_goodVertices); + fChain->SetBranchAddress("Flag_CSCTightHalo2015Filter", &Flag_CSCTightHalo2015Filter, &b_Flag_CSCTightHalo2015Filter); + fChain->SetBranchAddress("Pileup_sumLOOT", &Pileup_sumLOOT, &b_Pileup_sumLOOT); + fChain->SetBranchAddress("Pileup_nPU", &Pileup_nPU, &b_Pileup_nPU); + fChain->SetBranchAddress("Pileup_nTrueInt", &Pileup_nTrueInt, &b_Pileup_nTrueInt); + fChain->SetBranchAddress("Pileup_pudensity", &Pileup_pudensity, &b_Pileup_pudensity); + fChain->SetBranchAddress("Pileup_gpudensity", &Pileup_gpudensity, &b_Pileup_gpudensity); + fChain->SetBranchAddress("Pileup_sumEOOT", &Pileup_sumEOOT, &b_Pileup_sumEOOT); + fChain->SetBranchAddress("HTXS_stage_1_pTjet25", &HTXS_stage_1_pTjet25, &b_HTXS_stage_1_pTjet25); + fChain->SetBranchAddress("HTXS_stage1_1_cat_pTjet30GeV", &HTXS_stage1_1_cat_pTjet30GeV, &b_HTXS_stage1_1_cat_pTjet30GeV); + fChain->SetBranchAddress("HTXS_stage1_2_cat_pTjet25GeV", &HTXS_stage1_2_cat_pTjet25GeV, &b_HTXS_stage1_2_cat_pTjet25GeV); + fChain->SetBranchAddress("HTXS_Higgs_y", &HTXS_Higgs_y, &b_HTXS_Higgs_y); + fChain->SetBranchAddress("HTXS_stage1_1_fine_cat_pTjet25GeV", &HTXS_stage1_1_fine_cat_pTjet25GeV, &b_HTXS_stage1_1_fine_cat_pTjet25GeV); + fChain->SetBranchAddress("HTXS_stage1_2_cat_pTjet30GeV", &HTXS_stage1_2_cat_pTjet30GeV, &b_HTXS_stage1_2_cat_pTjet30GeV); + fChain->SetBranchAddress("HTXS_njets30", &HTXS_njets30, &b_HTXS_njets30); + fChain->SetBranchAddress("HTXS_stage1_2_fine_cat_pTjet30GeV", &HTXS_stage1_2_fine_cat_pTjet30GeV, &b_HTXS_stage1_2_fine_cat_pTjet30GeV); + fChain->SetBranchAddress("HTXS_stage_1_pTjet30", &HTXS_stage_1_pTjet30, &b_HTXS_stage_1_pTjet30); + fChain->SetBranchAddress("HTXS_stage_0", &HTXS_stage_0, &b_HTXS_stage_0); + fChain->SetBranchAddress("HTXS_stage1_1_cat_pTjet25GeV", &HTXS_stage1_1_cat_pTjet25GeV, &b_HTXS_stage1_1_cat_pTjet25GeV); + fChain->SetBranchAddress("HTXS_Higgs_pt", &HTXS_Higgs_pt, &b_HTXS_Higgs_pt); + fChain->SetBranchAddress("HTXS_stage1_1_fine_cat_pTjet30GeV", &HTXS_stage1_1_fine_cat_pTjet30GeV, &b_HTXS_stage1_1_fine_cat_pTjet30GeV); + fChain->SetBranchAddress("HTXS_stage1_2_fine_cat_pTjet25GeV", &HTXS_stage1_2_fine_cat_pTjet25GeV, &b_HTXS_stage1_2_fine_cat_pTjet25GeV); + fChain->SetBranchAddress("HTXS_njets25", &HTXS_njets25, &b_HTXS_njets25); + fChain->SetBranchAddress("GenVtx_z", &GenVtx_z, &b_GenVtx_z); + fChain->SetBranchAddress("GenVtx_x", &GenVtx_x, &b_GenVtx_x); + fChain->SetBranchAddress("GenVtx_y", &GenVtx_y, &b_GenVtx_y); + fChain->SetBranchAddress("GenVtx_t0", &GenVtx_t0, &b_GenVtx_t0); + fChain->SetBranchAddress("Generator_scalePDF", &Generator_scalePDF, &b_Generator_scalePDF); + fChain->SetBranchAddress("Generator_id1", &Generator_id1, &b_Generator_id1); + fChain->SetBranchAddress("Generator_x1", &Generator_x1, &b_Generator_x1); + fChain->SetBranchAddress("Generator_binvar", &Generator_binvar, &b_Generator_binvar); + fChain->SetBranchAddress("Generator_xpdf1", &Generator_xpdf1, &b_Generator_xpdf1); + fChain->SetBranchAddress("Generator_id2", &Generator_id2, &b_Generator_id2); + fChain->SetBranchAddress("Generator_weight", &Generator_weight, &b_Generator_weight); + fChain->SetBranchAddress("Generator_x2", &Generator_x2, &b_Generator_x2); + fChain->SetBranchAddress("Generator_xpdf2", &Generator_xpdf2, &b_Generator_xpdf2); + fChain->SetBranchAddress("Trigger_sngMu", &Trigger_sngMu, &b_Trigger_sngMu); + fChain->SetBranchAddress("Trigger_dblMu", &Trigger_dblMu, &b_Trigger_dblMu); + fChain->SetBranchAddress("Trigger_sngEl", &Trigger_sngEl, &b_Trigger_sngEl); + fChain->SetBranchAddress("Trigger_dblEl", &Trigger_dblEl, &b_Trigger_dblEl); + fChain->SetBranchAddress("Trigger_ElMu", &Trigger_ElMu, &b_Trigger_ElMu); + fChain->SetBranchAddress("nGenVisTau", &nGenVisTau, &b_nGenVisTau); + fChain->SetBranchAddress("GenVisTau_genPartIdxMother", GenVisTau_genPartIdxMother, &b_GenVisTau_genPartIdxMother); + fChain->SetBranchAddress("GenVisTau_mass", GenVisTau_mass, &b_GenVisTau_mass); + fChain->SetBranchAddress("GenVisTau_status", GenVisTau_status, &b_GenVisTau_status); + fChain->SetBranchAddress("GenVisTau_charge", GenVisTau_charge, &b_GenVisTau_charge); + fChain->SetBranchAddress("GenVisTau_eta", GenVisTau_eta, &b_GenVisTau_eta); + fChain->SetBranchAddress("GenVisTau_phi", GenVisTau_phi, &b_GenVisTau_phi); + fChain->SetBranchAddress("GenVisTau_pt", GenVisTau_pt, &b_GenVisTau_pt); + fChain->SetBranchAddress("RawPuppiMET_sumEt", &RawPuppiMET_sumEt, &b_RawPuppiMET_sumEt); + fChain->SetBranchAddress("RawPuppiMET_pt", &RawPuppiMET_pt, &b_RawPuppiMET_pt); + fChain->SetBranchAddress("RawPuppiMET_phi", &RawPuppiMET_phi, &b_RawPuppiMET_phi); + fChain->SetBranchAddress("nSoftActivityJet", &nSoftActivityJet, &b_nSoftActivityJet); + fChain->SetBranchAddress("SoftActivityJet_pt", SoftActivityJet_pt, &b_SoftActivityJet_pt); + fChain->SetBranchAddress("SoftActivityJet_phi", SoftActivityJet_phi, &b_SoftActivityJet_phi); + fChain->SetBranchAddress("SoftActivityJet_eta", SoftActivityJet_eta, &b_SoftActivityJet_eta); + fChain->SetBranchAddress("CaloMET_phi", &CaloMET_phi, &b_CaloMET_phi); + fChain->SetBranchAddress("CaloMET_sumEt", &CaloMET_sumEt, &b_CaloMET_sumEt); + fChain->SetBranchAddress("CaloMET_pt", &CaloMET_pt, &b_CaloMET_pt); + fChain->SetBranchAddress("nFsrPhoton", &nFsrPhoton, &b_nFsrPhoton); + fChain->SetBranchAddress("FsrPhoton_relIso03", FsrPhoton_relIso03, &b_FsrPhoton_relIso03); + fChain->SetBranchAddress("FsrPhoton_phi", FsrPhoton_phi, &b_FsrPhoton_phi); + fChain->SetBranchAddress("FsrPhoton_eta", FsrPhoton_eta, &b_FsrPhoton_eta); + fChain->SetBranchAddress("FsrPhoton_muonIdx", FsrPhoton_muonIdx, &b_FsrPhoton_muonIdx); + fChain->SetBranchAddress("FsrPhoton_dROverEt2", FsrPhoton_dROverEt2, &b_FsrPhoton_dROverEt2); + fChain->SetBranchAddress("FsrPhoton_pt", FsrPhoton_pt, &b_FsrPhoton_pt); + fChain->SetBranchAddress("PV_x", &PV_x, &b_PV_x); + fChain->SetBranchAddress("PV_y", &PV_y, &b_PV_y); + fChain->SetBranchAddress("PV_score", &PV_score, &b_PV_score); + fChain->SetBranchAddress("PV_chi2", &PV_chi2, &b_PV_chi2); + fChain->SetBranchAddress("PV_npvs", &PV_npvs, &b_PV_npvs); + fChain->SetBranchAddress("PV_z", &PV_z, &b_PV_z); + fChain->SetBranchAddress("PV_ndof", &PV_ndof, &b_PV_ndof); + fChain->SetBranchAddress("PV_npvsGood", &PV_npvsGood, &b_PV_npvsGood); + fChain->SetBranchAddress("nSV", &nSV, &b_nSV); + fChain->SetBranchAddress("SV_chi2", SV_chi2, &b_SV_chi2); + fChain->SetBranchAddress("SV_ndof", SV_ndof, &b_SV_ndof); + fChain->SetBranchAddress("SV_charge", SV_charge, &b_SV_charge); + fChain->SetBranchAddress("SV_eta", SV_eta, &b_SV_eta); + fChain->SetBranchAddress("SV_phi", SV_phi, &b_SV_phi); + fChain->SetBranchAddress("SV_x", SV_x, &b_SV_x); + fChain->SetBranchAddress("SV_mass", SV_mass, &b_SV_mass); + fChain->SetBranchAddress("SV_dxy", SV_dxy, &b_SV_dxy); + fChain->SetBranchAddress("SV_pt", SV_pt, &b_SV_pt); + fChain->SetBranchAddress("SV_z", SV_z, &b_SV_z); + fChain->SetBranchAddress("SV_dxySig", SV_dxySig, &b_SV_dxySig); + fChain->SetBranchAddress("SV_dlen", SV_dlen, &b_SV_dlen); + fChain->SetBranchAddress("SV_pAngle", SV_pAngle, &b_SV_pAngle); + fChain->SetBranchAddress("SV_ntracks", SV_ntracks, &b_SV_ntracks); + fChain->SetBranchAddress("SV_y", SV_y, &b_SV_y); + fChain->SetBranchAddress("SV_dlenSig", SV_dlenSig, &b_SV_dlenSig); + fChain->SetBranchAddress("GenMET_pt", &GenMET_pt, &b_GenMET_pt); + fChain->SetBranchAddress("GenMET_phi", &GenMET_phi, &b_GenMET_phi); + fChain->SetBranchAddress("gen_mll", &gen_mll, &b_gen_mll); + fChain->SetBranchAddress("gen_llchannel", &gen_llchannel, &b_gen_llchannel); + fChain->SetBranchAddress("gen_ptllmet", &gen_ptllmet, &b_gen_ptllmet); + fChain->SetBranchAddress("gen_mlvlv", &gen_mlvlv, &b_gen_mlvlv); + fChain->SetBranchAddress("gen_ptll", &gen_ptll, &b_gen_ptll); + fChain->SetBranchAddress("nOtherPV", &nOtherPV, &b_nOtherPV); + fChain->SetBranchAddress("OtherPV_z", OtherPV_z, &b_OtherPV_z); + fChain->SetBranchAddress("topGenPt", &topGenPt, &b_topGenPt); + fChain->SetBranchAddress("mTOT_cut", &mTOT_cut, &b_mTOT_cut); + fChain->SetBranchAddress("dphilep1jj", &dphilep1jj, &b_dphilep1jj); + fChain->SetBranchAddress("btagWeight_DeepCSVB", &btagWeight_DeepCSVB, &b_btagWeight_DeepCSVB); + fChain->SetBranchAddress("WlepMt_whss", &WlepMt_whss, &b_WlepMt_whss); + fChain->SetBranchAddress("channel", &channel, &b_channel); + fChain->SetBranchAddress("detaj2l1", &detaj2l1, &b_detaj2l1); + fChain->SetBranchAddress("baseW", &baseW, &b_baseW); + fChain->SetBranchAddress("PSWeight", PSWeight, &b_PSWeight); + fChain->SetBranchAddress("pTWW", &pTWW, &b_pTWW); + fChain->SetBranchAddress("genWeight", &genWeight, &b_genWeight); + fChain->SetBranchAddress("jetpt2_cut", &jetpt2_cut, &b_jetpt2_cut); + fChain->SetBranchAddress("dphijet1met", &dphijet1met, &b_dphijet1met); + fChain->SetBranchAddress("dphilep1jet2", &dphilep1jet2, &b_dphilep1jet2); + fChain->SetBranchAddress("L1Reco_step", &L1Reco_step, &b_L1Reco_step); + fChain->SetBranchAddress("dphijjmet_cut", &dphijjmet_cut, &b_dphijjmet_cut); + fChain->SetBranchAddress("SoftActivityJetNjets2", &SoftActivityJetNjets2, &b_SoftActivityJetNjets2); + fChain->SetBranchAddress("LHEScaleWeight", LHEScaleWeight, &b_LHEScaleWeight); + fChain->SetBranchAddress("dphilljet", &dphilljet, &b_dphilljet); + fChain->SetBranchAddress("nLHEReweightingWeight", &nLHEReweightingWeight, &b_nLHEReweightingWeight); + fChain->SetBranchAddress("higgsGenEta", &higgsGenEta, &b_higgsGenEta); + fChain->SetBranchAddress("mtw2", &mtw2, &b_mtw2); + fChain->SetBranchAddress("SoftActivityJetHT5", &SoftActivityJetHT5, &b_SoftActivityJetHT5); + fChain->SetBranchAddress("detaj1l1", &detaj1l1, &b_detaj1l1); + fChain->SetBranchAddress("mtw1", &mtw1, &b_mtw1); + fChain->SetBranchAddress("PfMetDivSumMet", &PfMetDivSumMet, &b_PfMetDivSumMet); + fChain->SetBranchAddress("mlljj20_whss_no_jet2", &mlljj20_whss_no_jet2, &b_mlljj20_whss_no_jet2); + fChain->SetBranchAddress("dphilep2jet1", &dphilep2jet1, &b_dphilep2jet1); + fChain->SetBranchAddress("fixedGridRhoFastjetAll", &fixedGridRhoFastjetAll, &b_fixedGridRhoFastjetAll); + fChain->SetBranchAddress("dphijet1met_cut", &dphijet1met_cut, &b_dphijet1met_cut); + fChain->SetBranchAddress("LHEPdfWeight", LHEPdfWeight, &b_LHEPdfWeight); + fChain->SetBranchAddress("SoftActivityJetHT10", &SoftActivityJetHT10, &b_SoftActivityJetHT10); + fChain->SetBranchAddress("run", &run, &b_run); + fChain->SetBranchAddress("dphilmet", &dphilmet, &b_dphilmet); + fChain->SetBranchAddress("Ceta_cut", &Ceta_cut, &b_Ceta_cut); + fChain->SetBranchAddress("SoftActivityJetNjets10", &SoftActivityJetNjets10, &b_SoftActivityJetNjets10); + fChain->SetBranchAddress("phi2", &phi2, &b_phi2); + fChain->SetBranchAddress("L1simulation_step", &L1simulation_step, &b_L1simulation_step); + fChain->SetBranchAddress("mcollWW", &mcollWW, &b_mcollWW); + fChain->SetBranchAddress("nLHEPdfWeight", &nLHEPdfWeight, &b_nLHEPdfWeight); + fChain->SetBranchAddress("run_period", &run_period, &b_run_period); + fChain->SetBranchAddress("mll", &mll, &b_mll); + fChain->SetBranchAddress("TriggerEmulator", TriggerEmulator, &b_TriggerEmulator); + fChain->SetBranchAddress("WlepPt_whss", &WlepPt_whss, &b_WlepPt_whss); + fChain->SetBranchAddress("mjj", &mjj, &b_mjj); + fChain->SetBranchAddress("antitopGenEta", &antitopGenEta, &b_antitopGenEta); + fChain->SetBranchAddress("dphilljetjet_cut", &dphilljetjet_cut, &b_dphilljetjet_cut); + fChain->SetBranchAddress("dphilmet2", &dphilmet2, &b_dphilmet2); + fChain->SetBranchAddress("genVPt", &genVPt, &b_genVPt); + fChain->SetBranchAddress("projpfmet", &projpfmet, &b_projpfmet); + fChain->SetBranchAddress("mllTwoThree", &mllTwoThree, &b_mllTwoThree); + fChain->SetBranchAddress("HLTriggerFirstPath", &HLTriggerFirstPath, &b_HLTriggerFirstPath); + fChain->SetBranchAddress("njet", &njet, &b_njet); + fChain->SetBranchAddress("fixedGridRhoFastjetCentralChargedPileUp", &fixedGridRhoFastjetCentralChargedPileUp, &b_fixedGridRhoFastjetCentralChargedPileUp); + fChain->SetBranchAddress("event", &event, &b_event); + fChain->SetBranchAddress("L1PreFiringWeight_Muon_StatUp", &L1PreFiringWeight_Muon_StatUp, &b_L1PreFiringWeight_Muon_StatUp); + fChain->SetBranchAddress("HLTriggerFinalPath", &HLTriggerFinalPath, &b_HLTriggerFinalPath); + fChain->SetBranchAddress("higgsGenMass", &higgsGenMass, &b_higgsGenMass); + fChain->SetBranchAddress("dphilljet_cut", &dphilljet_cut, &b_dphilljet_cut); + fChain->SetBranchAddress("higgsGenPhi", &higgsGenPhi, &b_higgsGenPhi); + fChain->SetBranchAddress("eta2", &eta2, &b_eta2); + fChain->SetBranchAddress("dphijj", &dphijj, &b_dphijj); + fChain->SetBranchAddress("L1PreFiringWeight_Dn", &L1PreFiringWeight_Dn, &b_L1PreFiringWeight_Dn); + fChain->SetBranchAddress("projtkmet", &projtkmet, &b_projtkmet); + fChain->SetBranchAddress("WlepPt_whss_no_jet2", &WlepPt_whss_no_jet2, &b_WlepPt_whss_no_jet2); + fChain->SetBranchAddress("SoftActivityJetNjets5", &SoftActivityJetNjets5, &b_SoftActivityJetNjets5); + fChain->SetBranchAddress("ptjj", &ptjj, &b_ptjj); + fChain->SetBranchAddress("L1PreFiringWeight_Muon_Nom", &L1PreFiringWeight_Muon_Nom, &b_L1PreFiringWeight_Muon_Nom); + fChain->SetBranchAddress("dphill", &dphill, &b_dphill); + fChain->SetBranchAddress("dphilep1jet1", &dphilep1jet1, &b_dphilep1jet1); + fChain->SetBranchAddress("nPSWeight", &nPSWeight, &b_nPSWeight); + fChain->SetBranchAddress("fixedGridRhoFastjetCentralNeutral", &fixedGridRhoFastjetCentralNeutral, &b_fixedGridRhoFastjetCentralNeutral); + fChain->SetBranchAddress("SoftActivityJetHT2", &SoftActivityJetHT2, &b_SoftActivityJetHT2); + fChain->SetBranchAddress("mllWgSt", &mllWgSt, &b_mllWgSt); + fChain->SetBranchAddress("yll", &yll, &b_yll); + fChain->SetBranchAddress("fixedGridRhoFastjetCentral", &fixedGridRhoFastjetCentral, &b_fixedGridRhoFastjetCentral); + fChain->SetBranchAddress("L1PreFiringWeight_Nom", &L1PreFiringWeight_Nom, &b_L1PreFiringWeight_Nom); + fChain->SetBranchAddress("L1PreFiringWeight_Muon_SystUp", &L1PreFiringWeight_Muon_SystUp, &b_L1PreFiringWeight_Muon_SystUp); + fChain->SetBranchAddress("topGenMass", &topGenMass, &b_topGenMass); + fChain->SetBranchAddress("WlepPt_whss_jet2", &WlepPt_whss_jet2, &b_WlepPt_whss_jet2); + fChain->SetBranchAddress("mlljj20_whss_jet2", &mlljj20_whss_jet2, &b_mlljj20_whss_jet2); + fChain->SetBranchAddress("mTi", &mTi, &b_mTi); + fChain->SetBranchAddress("mllOneThree", &mllOneThree, &b_mllOneThree); + fChain->SetBranchAddress("mlljj20_whss", &mlljj20_whss, &b_mlljj20_whss); + fChain->SetBranchAddress("pt2", &pt2, &b_pt2); + fChain->SetBranchAddress("dphillmet", &dphillmet, &b_dphillmet); + fChain->SetBranchAddress("drll", &drll, &b_drll); + fChain->SetBranchAddress("phi1", &phi1, &b_phi1); + fChain->SetBranchAddress("dphijet2met_cut", &dphijet2met_cut, &b_dphijet2met_cut); + fChain->SetBranchAddress("eta1", &eta1, &b_eta1); + fChain->SetBranchAddress("mllThird", &mllThird, &b_mllThird); + fChain->SetBranchAddress("luminosityBlock", &luminosityBlock, &b_luminosityBlock); + fChain->SetBranchAddress("L1PreFiringWeight_Muon_SystDn", &L1PreFiringWeight_Muon_SystDn, &b_L1PreFiringWeight_Muon_SystDn); + fChain->SetBranchAddress("choiMass", &choiMass, &b_choiMass); + fChain->SetBranchAddress("drjj", &drjj, &b_drjj); + fChain->SetBranchAddress("fixedGridRhoFastjetCentralCalo", &fixedGridRhoFastjetCentralCalo, &b_fixedGridRhoFastjetCentralCalo); + fChain->SetBranchAddress("antitopGenPhi", &antitopGenPhi, &b_antitopGenPhi); + fChain->SetBranchAddress("genTtbarId", &genTtbarId, &b_genTtbarId); + fChain->SetBranchAddress("mR", &mR, &b_mR); + fChain->SetBranchAddress("m2ljj20", &m2ljj20, &b_m2ljj20); + fChain->SetBranchAddress("jetpt1_cut", &jetpt1_cut, &b_jetpt1_cut); + fChain->SetBranchAddress("dphil1tkmet", &dphil1tkmet, &b_dphil1tkmet); + fChain->SetBranchAddress("L1PreFiringWeight_ECAL_Nom", &L1PreFiringWeight_ECAL_Nom, &b_L1PreFiringWeight_ECAL_Nom); + fChain->SetBranchAddress("dphilep2jet2", &dphilep2jet2, &b_dphilep2jet2); + fChain->SetBranchAddress("ht", &ht, &b_ht); + fChain->SetBranchAddress("dphilep2jj", &dphilep2jj, &b_dphilep2jj); + fChain->SetBranchAddress("recoil", &recoil, &b_recoil); + fChain->SetBranchAddress("mth", &mth, &b_mth); + fChain->SetBranchAddress("topGenPhi", &topGenPhi, &b_topGenPhi); + fChain->SetBranchAddress("dphijjmet", &dphijjmet, &b_dphijjmet); + fChain->SetBranchAddress("detaj2l2", &detaj2l2, &b_detaj2l2); + fChain->SetBranchAddress("nLHEScaleWeight", &nLHEScaleWeight, &b_nLHEScaleWeight); + fChain->SetBranchAddress("ptll", &ptll, &b_ptll); + fChain->SetBranchAddress("OLV2_cut", &OLV2_cut, &b_OLV2_cut); + fChain->SetBranchAddress("dphilljetjet", &dphilljetjet, &b_dphilljetjet); + fChain->SetBranchAddress("dphiltkmet", &dphiltkmet, &b_dphiltkmet); + fChain->SetBranchAddress("drllOneThree", &drllOneThree, &b_drllOneThree); + fChain->SetBranchAddress("maxdphilepjj", &maxdphilepjj, &b_maxdphilepjj); + fChain->SetBranchAddress("L1PreFiringWeight_Muon_StatDn", &L1PreFiringWeight_Muon_StatDn, &b_L1PreFiringWeight_Muon_StatDn); + fChain->SetBranchAddress("drllWgSt", &drllWgSt, &b_drllWgSt); + fChain->SetBranchAddress("nisLoose", &nisLoose, &b_nisLoose); + fChain->SetBranchAddress("isLoose", isLoose, &b_isLoose); + fChain->SetBranchAddress("btagWeight_CSVV2", &btagWeight_CSVV2, &b_btagWeight_CSVV2); + fChain->SetBranchAddress("CUT", &CUT, &b_CUT); + fChain->SetBranchAddress("pt1", &pt1, &b_pt1); + fChain->SetBranchAddress("detall", &detall, &b_detall); + fChain->SetBranchAddress("antitopGenMass", &antitopGenMass, &b_antitopGenMass); + fChain->SetBranchAddress("vht_pt", &vht_pt, &b_vht_pt); + fChain->SetBranchAddress("pTHjj", &pTHjj, &b_pTHjj); + fChain->SetBranchAddress("L1PreFiringWeight_Up", &L1PreFiringWeight_Up, &b_L1PreFiringWeight_Up); + fChain->SetBranchAddress("LHEReweightingWeight", &LHEReweightingWeight, &b_LHEReweightingWeight); + fChain->SetBranchAddress("m2ljj30", &m2ljj30, &b_m2ljj30); + fChain->SetBranchAddress("L1PreFiringWeight_ECAL_Up", &L1PreFiringWeight_ECAL_Up, &b_L1PreFiringWeight_ECAL_Up); + fChain->SetBranchAddress("higgsGenPt", &higgsGenPt, &b_higgsGenPt); + fChain->SetBranchAddress("ptTOT_cut", &ptTOT_cut, &b_ptTOT_cut); + fChain->SetBranchAddress("upara", &upara, &b_upara); + fChain->SetBranchAddress("dphilmet1", &dphilmet1, &b_dphilmet1); + fChain->SetBranchAddress("mlljj30_whss", &mlljj30_whss, &b_mlljj30_whss); + fChain->SetBranchAddress("antitopGenPt", &antitopGenPt, &b_antitopGenPt); + fChain->SetBranchAddress("detaj1l2", &detaj1l2, &b_detaj1l2); + fChain->SetBranchAddress("dphil2tkmet", &dphil2tkmet, &b_dphil2tkmet); + fChain->SetBranchAddress("SoftActivityJetHT", &SoftActivityJetHT, &b_SoftActivityJetHT); + fChain->SetBranchAddress("OLV1_cut", &OLV1_cut, &b_OLV1_cut); + fChain->SetBranchAddress("drllTwoThree", &drllTwoThree, &b_drllTwoThree); + fChain->SetBranchAddress("mcoll", &mcoll, &b_mcoll); + fChain->SetBranchAddress("topGenEta", &topGenEta, &b_topGenEta); + fChain->SetBranchAddress("uperp", &uperp, &b_uperp); + fChain->SetBranchAddress("L1PreFiringWeight_ECAL_Dn", &L1PreFiringWeight_ECAL_Dn, &b_L1PreFiringWeight_ECAL_Dn); + fChain->SetBranchAddress("mTe", &mTe, &b_mTe); + fChain->SetBranchAddress("dphijet2met", &dphijet2met, &b_dphijet2met); + fChain->SetBranchAddress("detajj", &detajj, &b_detajj); + fChain->SetBranchAddress("mindetajl", &mindetajl, &b_mindetajl); + Notify(); +} + +Bool_t postproc::Notify() +{ + // The Notify() function is called when a new file is opened. This + // can be either for a new TTree in a TChain or when when a new TTree + // is started when using PROOF. It is normally not necessary to make changes + // to the generated code, but the routine can be extended by the + // user if needed. The return value is currently not used. + + return kTRUE; +} + +void postproc::Show(Long64_t entry) +{ +// Print contents of entry. +// If entry is not specified, print current entry + if (!fChain) return; + fChain->Show(entry); +} +Int_t postproc::Cut(Long64_t entry) +{ +// This function may be called from Loop. +// returns 1 if entry is accepted. +// returns -1 otherwise. + return 1; +} +#endif // #ifdef postproc_cxx diff --git a/Hgg/2018UL1l/postprocData.C b/Hgg/2018UL1l/postprocData.C new file mode 100644 index 00000000..f1052192 --- /dev/null +++ b/Hgg/2018UL1l/postprocData.C @@ -0,0 +1,43 @@ +#define postprocData_cxx +#include "postprocData.h" +#include +#include +#include + +void postprocData::Loop() +{ +// In a ROOT session, you can do: +// root> .L postprocData.C +// root> postprocData t +// root> t.GetEntry(12); // Fill t data members with entry number 12 +// root> t.Show(); // Show values of entry 12 +// root> t.Show(16); // Read and show values of entry 16 +// root> t.Loop(); // Loop on all entries +// + +// This is the loop skeleton where: +// jentry is the global entry number in the chain +// ientry is the entry number in the current Tree +// Note that the argument to GetEntry must be: +// jentry for TChain::GetEntry +// ientry for TTree::GetEntry and TBranch::GetEntry +// +// To read only selected branches, Insert statements like: +// METHOD1: +// fChain->SetBranchStatus("*",0); // disable all branches +// fChain->SetBranchStatus("branchname",1); // activate branchname +// METHOD2: replace line +// fChain->GetEntry(jentry); //read all branches +//by b_branchname->GetEntry(ientry); //read only this branch + if (fChain == 0) return; + + Long64_t nentries = fChain->GetEntriesFast(); + + Long64_t nbytes = 0, nb = 0; + for (Long64_t jentry=0; jentryGetEntry(jentry); nbytes += nb; + // if (Cut(ientry) < 0) continue; + } +} diff --git a/Hgg/2018UL1l/postprocData.h b/Hgg/2018UL1l/postprocData.h new file mode 100644 index 00000000..be90e095 --- /dev/null +++ b/Hgg/2018UL1l/postprocData.h @@ -0,0 +1,5412 @@ +////////////////////////////////////////////////////////// +// This class has been automatically generated on +// Tue Oct 14 12:28:14 2025 by ROOT version 6.30/02 +// from TTree Events/Events +// found on file: root://eoscms.cern.ch//eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Run2018_UL2018_nAODv9_Full2018v9/DATAl1loose2018v9__l2loose__l2tightOR2018v9/nanoLatino_MuonEG_Run2018A-UL2018-v1__part13.root +////////////////////////////////////////////////////////// + +#ifndef postprocData_h +#define postprocData_h + +#include +#include +#include + +// Header file for the classes stored in the TTree if any. + +class postprocData { +public : + TTree *fChain; //!pointer to the analyzed TTree or TChain + Int_t fCurrent; //!current Tree number in a TChain + +// Fixed size dimensions of array or collections stored in the TTree if any. + + // Declaration of leaf types + UInt_t run; + UInt_t luminosityBlock; + ULong64_t event; + UInt_t nboostedTau; + Float_t boostedTau_chargedIso[4]; //[nboostedTau] + Float_t boostedTau_eta[4]; //[nboostedTau] + Float_t boostedTau_leadTkDeltaEta[4]; //[nboostedTau] + Float_t boostedTau_leadTkDeltaPhi[4]; //[nboostedTau] + Float_t boostedTau_leadTkPtOverTauPt[4]; //[nboostedTau] + Float_t boostedTau_mass[4]; //[nboostedTau] + Float_t boostedTau_neutralIso[4]; //[nboostedTau] + Float_t boostedTau_phi[4]; //[nboostedTau] + Float_t boostedTau_photonsOutsideSignalCone[4]; //[nboostedTau] + Float_t boostedTau_pt[4]; //[nboostedTau] + Float_t boostedTau_puCorr[4]; //[nboostedTau] + Float_t boostedTau_rawAntiEle2018[4]; //[nboostedTau] + Float_t boostedTau_rawIso[4]; //[nboostedTau] + Float_t boostedTau_rawIsodR03[4]; //[nboostedTau] + Float_t boostedTau_rawMVAnewDM2017v2[4]; //[nboostedTau] + Float_t boostedTau_rawMVAoldDM2017v2[4]; //[nboostedTau] + Float_t boostedTau_rawMVAoldDMdR032017v2[4]; //[nboostedTau] + Int_t boostedTau_charge[4]; //[nboostedTau] + Int_t boostedTau_decayMode[4]; //[nboostedTau] + Int_t boostedTau_jetIdx[4]; //[nboostedTau] + Int_t boostedTau_rawAntiEleCat2018[4]; //[nboostedTau] + UChar_t boostedTau_idAntiEle2018[4]; //[nboostedTau] + UChar_t boostedTau_idAntiMu[4]; //[nboostedTau] + UChar_t boostedTau_idMVAnewDM2017v2[4]; //[nboostedTau] + UChar_t boostedTau_idMVAoldDM2017v2[4]; //[nboostedTau] + UChar_t boostedTau_idMVAoldDMdR032017v2[4]; //[nboostedTau] + Float_t CaloMET_phi; + Float_t CaloMET_pt; + Float_t CaloMET_sumEt; + Float_t ChsMET_phi; + Float_t ChsMET_pt; + Float_t ChsMET_sumEt; + UInt_t nCorrT1METJet; + Float_t CorrT1METJet_area[33]; //[nCorrT1METJet] + Float_t CorrT1METJet_eta[33]; //[nCorrT1METJet] + Float_t CorrT1METJet_muonSubtrFactor[33]; //[nCorrT1METJet] + Float_t CorrT1METJet_phi[33]; //[nCorrT1METJet] + Float_t CorrT1METJet_rawPt[33]; //[nCorrT1METJet] + Float_t DeepMETResolutionTune_phi; + Float_t DeepMETResolutionTune_pt; + Float_t DeepMETResponseTune_phi; + Float_t DeepMETResponseTune_pt; + UInt_t nElectron; + Float_t Electron_dEscaleDown[8]; //[nElectron] + Float_t Electron_dEscaleUp[8]; //[nElectron] + Float_t Electron_dEsigmaDown[8]; //[nElectron] + Float_t Electron_dEsigmaUp[8]; //[nElectron] + Float_t Electron_deltaEtaSC[8]; //[nElectron] + Float_t Electron_dr03EcalRecHitSumEt[8]; //[nElectron] + Float_t Electron_dr03HcalDepth1TowerSumEt[8]; //[nElectron] + Float_t Electron_dr03TkSumPt[8]; //[nElectron] + Float_t Electron_dr03TkSumPtHEEP[8]; //[nElectron] + Float_t Electron_dxy[8]; //[nElectron] + Float_t Electron_dxyErr[8]; //[nElectron] + Float_t Electron_dz[8]; //[nElectron] + Float_t Electron_dzErr[8]; //[nElectron] + Float_t Electron_eCorr[8]; //[nElectron] + Float_t Electron_eInvMinusPInv[8]; //[nElectron] + Float_t Electron_energyErr[8]; //[nElectron] + Float_t Electron_eta[8]; //[nElectron] + Float_t Electron_hoe[8]; //[nElectron] + Float_t Electron_ip3d[8]; //[nElectron] + Float_t Electron_jetPtRelv2[8]; //[nElectron] + Float_t Electron_jetRelIso[8]; //[nElectron] + Float_t Electron_mass[8]; //[nElectron] + Float_t Electron_miniPFRelIso_all[8]; //[nElectron] + Float_t Electron_miniPFRelIso_chg[8]; //[nElectron] + Float_t Electron_mvaFall17V2Iso[8]; //[nElectron] + Float_t Electron_mvaFall17V2noIso[8]; //[nElectron] + Float_t Electron_pfRelIso03_all[8]; //[nElectron] + Float_t Electron_pfRelIso03_chg[8]; //[nElectron] + Float_t Electron_phi[8]; //[nElectron] + Float_t Electron_pt[8]; //[nElectron] + Float_t Electron_r9[8]; //[nElectron] + Float_t Electron_scEtOverPt[8]; //[nElectron] + Float_t Electron_sieie[8]; //[nElectron] + Float_t Electron_sip3d[8]; //[nElectron] + Float_t Electron_mvaTTH[8]; //[nElectron] + Int_t Electron_charge[8]; //[nElectron] + Int_t Electron_cutBased[8]; //[nElectron] + Int_t Electron_jetIdx[8]; //[nElectron] + Int_t Electron_pdgId[8]; //[nElectron] + Int_t Electron_photonIdx[8]; //[nElectron] + Int_t Electron_tightCharge[8]; //[nElectron] + Int_t Electron_vidNestedWPBitmap[8]; //[nElectron] + Int_t Electron_vidNestedWPBitmapHEEP[8]; //[nElectron] + Bool_t Electron_convVeto[8]; //[nElectron] + Bool_t Electron_cutBased_HEEP[8]; //[nElectron] + Bool_t Electron_isPFcand[8]; //[nElectron] + UChar_t Electron_jetNDauCharged[8]; //[nElectron] + UChar_t Electron_lostHits[8]; //[nElectron] + Bool_t Electron_mvaFall17V2Iso_WP80[8]; //[nElectron] + Bool_t Electron_mvaFall17V2Iso_WP90[8]; //[nElectron] + Bool_t Electron_mvaFall17V2Iso_WPL[8]; //[nElectron] + Bool_t Electron_mvaFall17V2noIso_WP80[8]; //[nElectron] + Bool_t Electron_mvaFall17V2noIso_WP90[8]; //[nElectron] + Bool_t Electron_mvaFall17V2noIso_WPL[8]; //[nElectron] + UChar_t Electron_seedGain[8]; //[nElectron] + UInt_t nFatJet; + Float_t FatJet_area[7]; //[nFatJet] + Float_t FatJet_btagCSVV2[7]; //[nFatJet] + Float_t FatJet_btagDDBvLV2[7]; //[nFatJet] + Float_t FatJet_btagDDCvBV2[7]; //[nFatJet] + Float_t FatJet_btagDDCvLV2[7]; //[nFatJet] + Float_t FatJet_btagDeepB[7]; //[nFatJet] + Float_t FatJet_btagHbb[7]; //[nFatJet] + Float_t FatJet_deepTagMD_H4qvsQCD[7]; //[nFatJet] + Float_t FatJet_deepTagMD_HbbvsQCD[7]; //[nFatJet] + Float_t FatJet_deepTagMD_TvsQCD[7]; //[nFatJet] + Float_t FatJet_deepTagMD_WvsQCD[7]; //[nFatJet] + Float_t FatJet_deepTagMD_ZHbbvsQCD[7]; //[nFatJet] + Float_t FatJet_deepTagMD_ZHccvsQCD[7]; //[nFatJet] + Float_t FatJet_deepTagMD_ZbbvsQCD[7]; //[nFatJet] + Float_t FatJet_deepTagMD_ZvsQCD[7]; //[nFatJet] + Float_t FatJet_deepTagMD_bbvsLight[7]; //[nFatJet] + Float_t FatJet_deepTagMD_ccvsLight[7]; //[nFatJet] + Float_t FatJet_deepTag_H[7]; //[nFatJet] + Float_t FatJet_deepTag_QCD[7]; //[nFatJet] + Float_t FatJet_deepTag_QCDothers[7]; //[nFatJet] + Float_t FatJet_deepTag_TvsQCD[7]; //[nFatJet] + Float_t FatJet_deepTag_WvsQCD[7]; //[nFatJet] + Float_t FatJet_deepTag_ZvsQCD[7]; //[nFatJet] + Float_t FatJet_eta[7]; //[nFatJet] + Float_t FatJet_mass[7]; //[nFatJet] + Float_t FatJet_msoftdrop[7]; //[nFatJet] + Float_t FatJet_n2b1[7]; //[nFatJet] + Float_t FatJet_n3b1[7]; //[nFatJet] + Float_t FatJet_particleNetMD_QCD[7]; //[nFatJet] + Float_t FatJet_particleNetMD_Xbb[7]; //[nFatJet] + Float_t FatJet_particleNetMD_Xcc[7]; //[nFatJet] + Float_t FatJet_particleNetMD_Xqq[7]; //[nFatJet] + Float_t FatJet_particleNet_H4qvsQCD[7]; //[nFatJet] + Float_t FatJet_particleNet_HbbvsQCD[7]; //[nFatJet] + Float_t FatJet_particleNet_HccvsQCD[7]; //[nFatJet] + Float_t FatJet_particleNet_QCD[7]; //[nFatJet] + Float_t FatJet_particleNet_TvsQCD[7]; //[nFatJet] + Float_t FatJet_particleNet_WvsQCD[7]; //[nFatJet] + Float_t FatJet_particleNet_ZvsQCD[7]; //[nFatJet] + Float_t FatJet_particleNet_mass[7]; //[nFatJet] + Float_t FatJet_phi[7]; //[nFatJet] + Float_t FatJet_pt[7]; //[nFatJet] + Float_t FatJet_rawFactor[7]; //[nFatJet] + Float_t FatJet_tau1[7]; //[nFatJet] + Float_t FatJet_tau2[7]; //[nFatJet] + Float_t FatJet_tau3[7]; //[nFatJet] + Float_t FatJet_tau4[7]; //[nFatJet] + Float_t FatJet_lsf3[7]; //[nFatJet] + Int_t FatJet_jetId[7]; //[nFatJet] + Int_t FatJet_subJetIdx1[7]; //[nFatJet] + Int_t FatJet_subJetIdx2[7]; //[nFatJet] + Int_t FatJet_electronIdx3SJ[7]; //[nFatJet] + Int_t FatJet_muonIdx3SJ[7]; //[nFatJet] + UChar_t FatJet_nConstituents[7]; //[nFatJet] + UInt_t nFsrPhoton; + Float_t FsrPhoton_dROverEt2[3]; //[nFsrPhoton] + Float_t FsrPhoton_eta[3]; //[nFsrPhoton] + Float_t FsrPhoton_phi[3]; //[nFsrPhoton] + Float_t FsrPhoton_pt[3]; //[nFsrPhoton] + Float_t FsrPhoton_relIso03[3]; //[nFsrPhoton] + Int_t FsrPhoton_muonIdx[3]; //[nFsrPhoton] + UInt_t nIsoTrack; + Float_t IsoTrack_dxy[15]; //[nIsoTrack] + Float_t IsoTrack_dz[15]; //[nIsoTrack] + Float_t IsoTrack_eta[15]; //[nIsoTrack] + Float_t IsoTrack_pfRelIso03_all[15]; //[nIsoTrack] + Float_t IsoTrack_pfRelIso03_chg[15]; //[nIsoTrack] + Float_t IsoTrack_phi[15]; //[nIsoTrack] + Float_t IsoTrack_pt[15]; //[nIsoTrack] + Float_t IsoTrack_miniPFRelIso_all[15]; //[nIsoTrack] + Float_t IsoTrack_miniPFRelIso_chg[15]; //[nIsoTrack] + Int_t IsoTrack_charge[15]; //[nIsoTrack] + Int_t IsoTrack_fromPV[15]; //[nIsoTrack] + Int_t IsoTrack_pdgId[15]; //[nIsoTrack] + Bool_t IsoTrack_isHighPurityTrack[15]; //[nIsoTrack] + Bool_t IsoTrack_isPFcand[15]; //[nIsoTrack] + Bool_t IsoTrack_isFromLostTrack[15]; //[nIsoTrack] + UInt_t nJet; + Float_t Jet_area[35]; //[nJet] + Float_t Jet_btagCSVV2[35]; //[nJet] + Float_t Jet_btagDeepB[35]; //[nJet] + Float_t Jet_btagDeepCvB[35]; //[nJet] + Float_t Jet_btagDeepCvL[35]; //[nJet] + Float_t Jet_btagDeepFlavB[35]; //[nJet] + Float_t Jet_btagDeepFlavCvB[35]; //[nJet] + Float_t Jet_btagDeepFlavCvL[35]; //[nJet] + Float_t Jet_btagDeepFlavQG[35]; //[nJet] + Float_t Jet_chEmEF[35]; //[nJet] + Float_t Jet_chFPV0EF[35]; //[nJet] + Float_t Jet_chHEF[35]; //[nJet] + Float_t Jet_eta[35]; //[nJet] + Float_t Jet_hfsigmaEtaEta[35]; //[nJet] + Float_t Jet_hfsigmaPhiPhi[35]; //[nJet] + Float_t Jet_mass[35]; //[nJet] + Float_t Jet_muEF[35]; //[nJet] + Float_t Jet_muonSubtrFactor[35]; //[nJet] + Float_t Jet_neEmEF[35]; //[nJet] + Float_t Jet_neHEF[35]; //[nJet] + Float_t Jet_phi[35]; //[nJet] + Float_t Jet_pt[35]; //[nJet] + Float_t Jet_puIdDisc[35]; //[nJet] + Float_t Jet_qgl[35]; //[nJet] + Float_t Jet_rawFactor[35]; //[nJet] + Float_t Jet_bRegCorr[35]; //[nJet] + Float_t Jet_bRegRes[35]; //[nJet] + Float_t Jet_cRegCorr[35]; //[nJet] + Float_t Jet_cRegRes[35]; //[nJet] + Int_t Jet_electronIdx1[35]; //[nJet] + Int_t Jet_electronIdx2[35]; //[nJet] + Int_t Jet_hfadjacentEtaStripsSize[35]; //[nJet] + Int_t Jet_hfcentralEtaStripSize[35]; //[nJet] + Int_t Jet_jetId[35]; //[nJet] + Int_t Jet_muonIdx1[35]; //[nJet] + Int_t Jet_muonIdx2[35]; //[nJet] + Int_t Jet_nElectrons[35]; //[nJet] + Int_t Jet_nMuons[35]; //[nJet] + Int_t Jet_puId[35]; //[nJet] + UChar_t Jet_nConstituents[35]; //[nJet] + Float_t L1PreFiringWeight_Dn; + Float_t L1PreFiringWeight_ECAL_Dn; + Float_t L1PreFiringWeight_ECAL_Nom; + Float_t L1PreFiringWeight_ECAL_Up; + Float_t L1PreFiringWeight_Muon_Nom; + Float_t L1PreFiringWeight_Muon_StatDn; + Float_t L1PreFiringWeight_Muon_StatUp; + Float_t L1PreFiringWeight_Muon_SystDn; + Float_t L1PreFiringWeight_Muon_SystUp; + Float_t L1PreFiringWeight_Nom; + Float_t L1PreFiringWeight_Up; + UInt_t nLowPtElectron; + Float_t LowPtElectron_ID[8]; //[nLowPtElectron] + Float_t LowPtElectron_convVtxRadius[8]; //[nLowPtElectron] + Float_t LowPtElectron_deltaEtaSC[8]; //[nLowPtElectron] + Float_t LowPtElectron_dxy[8]; //[nLowPtElectron] + Float_t LowPtElectron_dxyErr[8]; //[nLowPtElectron] + Float_t LowPtElectron_dz[8]; //[nLowPtElectron] + Float_t LowPtElectron_dzErr[8]; //[nLowPtElectron] + Float_t LowPtElectron_eInvMinusPInv[8]; //[nLowPtElectron] + Float_t LowPtElectron_embeddedID[8]; //[nLowPtElectron] + Float_t LowPtElectron_energyErr[8]; //[nLowPtElectron] + Float_t LowPtElectron_eta[8]; //[nLowPtElectron] + Float_t LowPtElectron_hoe[8]; //[nLowPtElectron] + Float_t LowPtElectron_mass[8]; //[nLowPtElectron] + Float_t LowPtElectron_miniPFRelIso_all[8]; //[nLowPtElectron] + Float_t LowPtElectron_miniPFRelIso_chg[8]; //[nLowPtElectron] + Float_t LowPtElectron_phi[8]; //[nLowPtElectron] + Float_t LowPtElectron_pt[8]; //[nLowPtElectron] + Float_t LowPtElectron_ptbiased[8]; //[nLowPtElectron] + Float_t LowPtElectron_r9[8]; //[nLowPtElectron] + Float_t LowPtElectron_scEtOverPt[8]; //[nLowPtElectron] + Float_t LowPtElectron_sieie[8]; //[nLowPtElectron] + Float_t LowPtElectron_unbiased[8]; //[nLowPtElectron] + Int_t LowPtElectron_charge[8]; //[nLowPtElectron] + Int_t LowPtElectron_convWP[8]; //[nLowPtElectron] + Int_t LowPtElectron_pdgId[8]; //[nLowPtElectron] + Bool_t LowPtElectron_convVeto[8]; //[nLowPtElectron] + UChar_t LowPtElectron_lostHits[8]; //[nLowPtElectron] + Float_t MET_MetUnclustEnUpDeltaX; + Float_t MET_MetUnclustEnUpDeltaY; + Float_t MET_covXX; + Float_t MET_covXY; + Float_t MET_covYY; + Float_t MET_phi; + Float_t MET_pt; + Float_t MET_significance; + Float_t MET_sumEt; + Float_t MET_sumPtUnclustered; + UInt_t nProton_multiRP; + Float_t Proton_multiRP_t[9]; //[nProton_multiRP] + Float_t Proton_multiRP_thetaX[9]; //[nProton_multiRP] + Float_t Proton_multiRP_thetaY[9]; //[nProton_multiRP] + Float_t Proton_multiRP_time[9]; //[nProton_multiRP] + Float_t Proton_multiRP_timeUnc[9]; //[nProton_multiRP] + Float_t Proton_multiRP_xi[9]; //[nProton_multiRP] + Int_t Proton_multiRP_arm[9]; //[nProton_multiRP] + UInt_t nMuon; + Float_t Muon_dxy[21]; //[nMuon] + Float_t Muon_dxyErr[21]; //[nMuon] + Float_t Muon_dxybs[21]; //[nMuon] + Float_t Muon_dz[21]; //[nMuon] + Float_t Muon_dzErr[21]; //[nMuon] + Float_t Muon_eta[21]; //[nMuon] + Float_t Muon_ip3d[21]; //[nMuon] + Float_t Muon_jetPtRelv2[21]; //[nMuon] + Float_t Muon_jetRelIso[21]; //[nMuon] + Float_t Muon_mass[21]; //[nMuon] + Float_t Muon_miniPFRelIso_all[21]; //[nMuon] + Float_t Muon_miniPFRelIso_chg[21]; //[nMuon] + Float_t Muon_pfRelIso03_all[21]; //[nMuon] + Float_t Muon_pfRelIso03_chg[21]; //[nMuon] + Float_t Muon_pfRelIso04_all[21]; //[nMuon] + Float_t Muon_phi[21]; //[nMuon] + Float_t Muon_pt[21]; //[nMuon] + Float_t Muon_ptErr[21]; //[nMuon] + Float_t Muon_segmentComp[21]; //[nMuon] + Float_t Muon_sip3d[21]; //[nMuon] + Float_t Muon_softMva[21]; //[nMuon] + Float_t Muon_tkRelIso[21]; //[nMuon] + Float_t Muon_tunepRelPt[21]; //[nMuon] + Float_t Muon_mvaLowPt[21]; //[nMuon] + Float_t Muon_mvaTTH[21]; //[nMuon] + Int_t Muon_charge[21]; //[nMuon] + Int_t Muon_jetIdx[21]; //[nMuon] + Int_t Muon_nStations[21]; //[nMuon] + Int_t Muon_nTrackerLayers[21]; //[nMuon] + Int_t Muon_pdgId[21]; //[nMuon] + Int_t Muon_tightCharge[21]; //[nMuon] + Int_t Muon_fsrPhotonIdx[21]; //[nMuon] + UChar_t Muon_highPtId[21]; //[nMuon] + Bool_t Muon_highPurity[21]; //[nMuon] + Bool_t Muon_inTimeMuon[21]; //[nMuon] + Bool_t Muon_isGlobal[21]; //[nMuon] + Bool_t Muon_isPFcand[21]; //[nMuon] + Bool_t Muon_isStandalone[21]; //[nMuon] + Bool_t Muon_isTracker[21]; //[nMuon] + UChar_t Muon_jetNDauCharged[21]; //[nMuon] + Bool_t Muon_looseId[21]; //[nMuon] + Bool_t Muon_mediumId[21]; //[nMuon] + Bool_t Muon_mediumPromptId[21]; //[nMuon] + UChar_t Muon_miniIsoId[21]; //[nMuon] + UChar_t Muon_multiIsoId[21]; //[nMuon] + UChar_t Muon_mvaId[21]; //[nMuon] + UChar_t Muon_mvaLowPtId[21]; //[nMuon] + UChar_t Muon_pfIsoId[21]; //[nMuon] + UChar_t Muon_puppiIsoId[21]; //[nMuon] + Bool_t Muon_softId[21]; //[nMuon] + Bool_t Muon_softMvaId[21]; //[nMuon] + Bool_t Muon_tightId[21]; //[nMuon] + UChar_t Muon_tkIsoId[21]; //[nMuon] + Bool_t Muon_triggerIdLoose[21]; //[nMuon] + UInt_t nPhoton; + Float_t Photon_dEscaleDown[10]; //[nPhoton] + Float_t Photon_dEscaleUp[10]; //[nPhoton] + Float_t Photon_dEsigmaDown[10]; //[nPhoton] + Float_t Photon_dEsigmaUp[10]; //[nPhoton] + Float_t Photon_eCorr[10]; //[nPhoton] + Float_t Photon_energyErr[10]; //[nPhoton] + Float_t Photon_eta[10]; //[nPhoton] + Float_t Photon_hoe[10]; //[nPhoton] + Float_t Photon_mass[10]; //[nPhoton] + Float_t Photon_mvaID[10]; //[nPhoton] + Float_t Photon_mvaID_Fall17V1p1[10]; //[nPhoton] + Float_t Photon_pfRelIso03_all[10]; //[nPhoton] + Float_t Photon_pfRelIso03_chg[10]; //[nPhoton] + Float_t Photon_phi[10]; //[nPhoton] + Float_t Photon_pt[10]; //[nPhoton] + Float_t Photon_r9[10]; //[nPhoton] + Float_t Photon_sieie[10]; //[nPhoton] + Int_t Photon_charge[10]; //[nPhoton] + Int_t Photon_cutBased[10]; //[nPhoton] + Int_t Photon_cutBased_Fall17V1Bitmap[10]; //[nPhoton] + Int_t Photon_electronIdx[10]; //[nPhoton] + Int_t Photon_jetIdx[10]; //[nPhoton] + Int_t Photon_pdgId[10]; //[nPhoton] + Int_t Photon_vidNestedWPBitmap[10]; //[nPhoton] + Bool_t Photon_electronVeto[10]; //[nPhoton] + Bool_t Photon_isScEtaEB[10]; //[nPhoton] + Bool_t Photon_isScEtaEE[10]; //[nPhoton] + Bool_t Photon_mvaID_WP80[10]; //[nPhoton] + Bool_t Photon_mvaID_WP90[10]; //[nPhoton] + Bool_t Photon_pixelSeed[10]; //[nPhoton] + UChar_t Photon_seedGain[10]; //[nPhoton] + UInt_t nPPSLocalTrack; + Float_t PPSLocalTrack_x[23]; //[nPPSLocalTrack] + Float_t PPSLocalTrack_y[23]; //[nPPSLocalTrack] + Float_t PPSLocalTrack_time[23]; //[nPPSLocalTrack] + Float_t PPSLocalTrack_timeUnc[23]; //[nPPSLocalTrack] + Int_t PPSLocalTrack_multiRPProtonIdx[23]; //[nPPSLocalTrack] + Int_t PPSLocalTrack_singleRPProtonIdx[23]; //[nPPSLocalTrack] + Int_t PPSLocalTrack_decRPId[23]; //[nPPSLocalTrack] + Int_t PPSLocalTrack_rpType[23]; //[nPPSLocalTrack] + Float_t PuppiMET_phi; + Float_t PuppiMET_phiJERDown; + Float_t PuppiMET_phiJERUp; + Float_t PuppiMET_phiJESDown; + Float_t PuppiMET_phiJESUp; + Float_t PuppiMET_phiUnclusteredDown; + Float_t PuppiMET_phiUnclusteredUp; + Float_t PuppiMET_pt; + Float_t PuppiMET_ptJERDown; + Float_t PuppiMET_ptJERUp; + Float_t PuppiMET_ptJESDown; + Float_t PuppiMET_ptJESUp; + Float_t PuppiMET_ptUnclusteredDown; + Float_t PuppiMET_ptUnclusteredUp; + Float_t PuppiMET_sumEt; + Float_t RawMET_phi; + Float_t RawMET_pt; + Float_t RawMET_sumEt; + Float_t RawPuppiMET_phi; + Float_t RawPuppiMET_pt; + Float_t RawPuppiMET_sumEt; + Float_t fixedGridRhoFastjetAll; + Float_t fixedGridRhoFastjetCentral; + Float_t fixedGridRhoFastjetCentralCalo; + Float_t fixedGridRhoFastjetCentralChargedPileUp; + Float_t fixedGridRhoFastjetCentralNeutral; + UInt_t nSoftActivityJet; + Float_t SoftActivityJet_eta[6]; //[nSoftActivityJet] + Float_t SoftActivityJet_phi[6]; //[nSoftActivityJet] + Float_t SoftActivityJet_pt[6]; //[nSoftActivityJet] + Float_t SoftActivityJetHT; + Float_t SoftActivityJetHT10; + Float_t SoftActivityJetHT2; + Float_t SoftActivityJetHT5; + Int_t SoftActivityJetNjets10; + Int_t SoftActivityJetNjets2; + Int_t SoftActivityJetNjets5; + UInt_t nProton_singleRP; + Float_t Proton_singleRP_thetaY[23]; //[nProton_singleRP] + Float_t Proton_singleRP_xi[23]; //[nProton_singleRP] + Int_t Proton_singleRP_decRPId[23]; //[nProton_singleRP] + UInt_t nSubJet; + Float_t SubJet_btagCSVV2[13]; //[nSubJet] + Float_t SubJet_btagDeepB[13]; //[nSubJet] + Float_t SubJet_eta[13]; //[nSubJet] + Float_t SubJet_mass[13]; //[nSubJet] + Float_t SubJet_n2b1[13]; //[nSubJet] + Float_t SubJet_n3b1[13]; //[nSubJet] + Float_t SubJet_phi[13]; //[nSubJet] + Float_t SubJet_pt[13]; //[nSubJet] + Float_t SubJet_rawFactor[13]; //[nSubJet] + Float_t SubJet_tau1[13]; //[nSubJet] + Float_t SubJet_tau2[13]; //[nSubJet] + Float_t SubJet_tau3[13]; //[nSubJet] + Float_t SubJet_tau4[13]; //[nSubJet] + UInt_t nTau; + Float_t Tau_chargedIso[6]; //[nTau] + Float_t Tau_dxy[6]; //[nTau] + Float_t Tau_dz[6]; //[nTau] + Float_t Tau_eta[6]; //[nTau] + Float_t Tau_leadTkDeltaEta[6]; //[nTau] + Float_t Tau_leadTkDeltaPhi[6]; //[nTau] + Float_t Tau_leadTkPtOverTauPt[6]; //[nTau] + Float_t Tau_mass[6]; //[nTau] + Float_t Tau_neutralIso[6]; //[nTau] + Float_t Tau_phi[6]; //[nTau] + Float_t Tau_photonsOutsideSignalCone[6]; //[nTau] + Float_t Tau_pt[6]; //[nTau] + Float_t Tau_puCorr[6]; //[nTau] + Float_t Tau_rawDeepTau2017v2p1VSe[6]; //[nTau] + Float_t Tau_rawDeepTau2017v2p1VSjet[6]; //[nTau] + Float_t Tau_rawDeepTau2017v2p1VSmu[6]; //[nTau] + Float_t Tau_rawIso[6]; //[nTau] + Float_t Tau_rawIsodR03[6]; //[nTau] + Int_t Tau_charge[6]; //[nTau] + Int_t Tau_decayMode[6]; //[nTau] + Int_t Tau_jetIdx[6]; //[nTau] + Bool_t Tau_idAntiEleDeadECal[6]; //[nTau] + UChar_t Tau_idAntiMu[6]; //[nTau] + Bool_t Tau_idDecayModeOldDMs[6]; //[nTau] + UChar_t Tau_idDeepTau2017v2p1VSe[6]; //[nTau] + UChar_t Tau_idDeepTau2017v2p1VSjet[6]; //[nTau] + UChar_t Tau_idDeepTau2017v2p1VSmu[6]; //[nTau] + Float_t TkMET_phi; + Float_t TkMET_pt; + Float_t TkMET_sumEt; + UInt_t nTrigObj; + Float_t TrigObj_pt[43]; //[nTrigObj] + Float_t TrigObj_eta[43]; //[nTrigObj] + Float_t TrigObj_phi[43]; //[nTrigObj] + Float_t TrigObj_l1pt[43]; //[nTrigObj] + Float_t TrigObj_l1pt_2[43]; //[nTrigObj] + Float_t TrigObj_l2pt[43]; //[nTrigObj] + Int_t TrigObj_id[43]; //[nTrigObj] + Int_t TrigObj_l1iso[43]; //[nTrigObj] + Int_t TrigObj_l1charge[43]; //[nTrigObj] + Int_t TrigObj_filterBits[43]; //[nTrigObj] + UInt_t nOtherPV; + Float_t OtherPV_z[3]; //[nOtherPV] + Float_t PV_ndof; + Float_t PV_x; + Float_t PV_y; + Float_t PV_z; + Float_t PV_chi2; + Float_t PV_score; + Int_t PV_npvs; + Int_t PV_npvsGood; + UInt_t nSV; + Float_t SV_dlen[18]; //[nSV] + Float_t SV_dlenSig[18]; //[nSV] + Float_t SV_dxy[18]; //[nSV] + Float_t SV_dxySig[18]; //[nSV] + Float_t SV_pAngle[18]; //[nSV] + Int_t SV_charge[18]; //[nSV] + UChar_t Electron_cleanmask[8]; //[nElectron] + UChar_t Jet_cleanmask[35]; //[nJet] + UChar_t Muon_cleanmask[21]; //[nMuon] + UChar_t Photon_cleanmask[10]; //[nPhoton] + UChar_t Tau_cleanmask[6]; //[nTau] + Float_t SV_chi2[18]; //[nSV] + Float_t SV_eta[18]; //[nSV] + Float_t SV_mass[18]; //[nSV] + Float_t SV_ndof[18]; //[nSV] + Float_t SV_phi[18]; //[nSV] + Float_t SV_pt[18]; //[nSV] + Float_t SV_x[18]; //[nSV] + Float_t SV_y[18]; //[nSV] + Float_t SV_z[18]; //[nSV] + UChar_t SV_ntracks[18]; //[nSV] + Bool_t L1_AlwaysTrue; + Bool_t L1_BPTX_AND_Ref1_VME; + Bool_t L1_BPTX_AND_Ref3_VME; + Bool_t L1_BPTX_AND_Ref4_VME; + Bool_t L1_BPTX_BeamGas_B1_VME; + Bool_t L1_BPTX_BeamGas_B2_VME; + Bool_t L1_BPTX_BeamGas_Ref1_VME; + Bool_t L1_BPTX_BeamGas_Ref2_VME; + Bool_t L1_BPTX_NotOR_VME; + Bool_t L1_BPTX_OR_Ref3_VME; + Bool_t L1_BPTX_OR_Ref4_VME; + Bool_t L1_BPTX_RefAND_VME; + Bool_t L1_BptxMinus; + Bool_t L1_BptxOR; + Bool_t L1_BptxPlus; + Bool_t L1_BptxXOR; + Bool_t L1_CDC_SingleMu_3_er1p2_TOP120_DPHI2p618_3p142; + Bool_t L1_DoubleEG6_HTT240er; + Bool_t L1_DoubleEG6_HTT250er; + Bool_t L1_DoubleEG6_HTT255er; + Bool_t L1_DoubleEG6_HTT270er; + Bool_t L1_DoubleEG6_HTT300er; + Bool_t L1_DoubleEG8er2p6_HTT255er; + Bool_t L1_DoubleEG8er2p6_HTT270er; + Bool_t L1_DoubleEG8er2p6_HTT300er; + Bool_t L1_DoubleEG_22_10; + Bool_t L1_DoubleEG_25_12; + Bool_t L1_DoubleEG_25_14; + Bool_t L1_DoubleEG_LooseIso23_10; + Bool_t L1_DoubleEG_LooseIso24_10; + Bool_t L1_DoubleIsoTau32er2p1; + Bool_t L1_DoubleIsoTau34er2p1; + Bool_t L1_DoubleIsoTau36er2p1; + Bool_t L1_DoubleJet100er2p3_dEta_Max1p6; + Bool_t L1_DoubleJet100er2p7; + Bool_t L1_DoubleJet112er2p3_dEta_Max1p6; + Bool_t L1_DoubleJet112er2p7; + Bool_t L1_DoubleJet120er2p7; + Bool_t L1_DoubleJet150er2p7; + Bool_t L1_DoubleJet30_Mass_Min300_dEta_Max1p5; + Bool_t L1_DoubleJet30_Mass_Min320_dEta_Max1p5; + Bool_t L1_DoubleJet30_Mass_Min340_dEta_Max1p5; + Bool_t L1_DoubleJet30_Mass_Min360_dEta_Max1p5; + Bool_t L1_DoubleJet30_Mass_Min380_dEta_Max1p5; + Bool_t L1_DoubleJet30_Mass_Min400_dEta_Max1p5; + Bool_t L1_DoubleJet35_rmovlp_IsoTau45_Mass_Min450; + Bool_t L1_DoubleJet40er2p7; + Bool_t L1_DoubleJet50er2p7; + Bool_t L1_DoubleJet60er2p7; + Bool_t L1_DoubleJet60er2p7_ETM100; + Bool_t L1_DoubleJet60er2p7_ETM60; + Bool_t L1_DoubleJet60er2p7_ETM70; + Bool_t L1_DoubleJet60er2p7_ETM80; + Bool_t L1_DoubleJet60er2p7_ETM90; + Bool_t L1_DoubleJet80er2p7; + Bool_t L1_DoubleJet_100_30_DoubleJet30_Mass_Min620; + Bool_t L1_DoubleJet_100_35_DoubleJet35_Mass_Min620; + Bool_t L1_DoubleJet_110_35_DoubleJet35_Mass_Min620; + Bool_t L1_DoubleJet_110_40_DoubleJet40_Mass_Min620; + Bool_t L1_DoubleJet_115_35_DoubleJet35_Mass_Min620; + Bool_t L1_DoubleJet_115_40_DoubleJet40_Mass_Min620; + Bool_t L1_DoubleJet_90_30_DoubleJet30_Mass_Min620; + Bool_t L1_DoubleLooseIsoEG22er2p1; + Bool_t L1_DoubleLooseIsoEG24er2p1; + Bool_t L1_DoubleMu0; + Bool_t L1_DoubleMu0_SQ; + Bool_t L1_DoubleMu0_SQ_OS; + Bool_t L1_DoubleMu0er1p4_SQ_OS_dR_Max1p4; + Bool_t L1_DoubleMu0er1p4_dEta_Max1p8_OS; + Bool_t L1_DoubleMu0er1p5_SQ_OS; + Bool_t L1_DoubleMu0er1p5_SQ_OS_dR_Max1p4; + Bool_t L1_DoubleMu0er1p5_SQ_dR_Max1p4; + Bool_t L1_DoubleMu0er2_SQ_dR_Max1p4; + Bool_t L1_DoubleMu18er2p1; + Bool_t L1_DoubleMu22er2p1; + Bool_t L1_DoubleMu3_OS_DoubleEG7p5Upsilon; + Bool_t L1_DoubleMu3_SQ_ETMHF40_Jet60_OR_DoubleJet30; + Bool_t L1_DoubleMu3_SQ_ETMHF50_Jet60_OR_DoubleJet30; + Bool_t L1_DoubleMu3_SQ_ETMHF60_Jet60_OR_DoubleJet30; + Bool_t L1_DoubleMu3_SQ_ETMHF70_Jet60_OR_DoubleJet30; + Bool_t L1_DoubleMu3_SQ_ETMHF80_Jet60_OR_DoubleJet30; + Bool_t L1_DoubleMu3_SQ_HTT100er; + Bool_t L1_DoubleMu3_SQ_HTT200er; + Bool_t L1_DoubleMu3_SQ_HTT220er; + Bool_t L1_DoubleMu3_SQ_HTT240er; + Bool_t L1_DoubleMu4_OS_EG12; + Bool_t L1_DoubleMu4_SQ_OS; + Bool_t L1_DoubleMu4_SQ_OS_dR_Max1p2; + Bool_t L1_DoubleMu4p5_SQ; + Bool_t L1_DoubleMu4p5_SQ_OS; + Bool_t L1_DoubleMu4p5_SQ_OS_dR_Max1p2; + Bool_t L1_DoubleMu4p5er2p0_SQ_OS; + Bool_t L1_DoubleMu4p5er2p0_SQ_OS_Mass7to18; + Bool_t L1_DoubleMu5Upsilon_OS_DoubleEG3; + Bool_t L1_DoubleMu5_OS_EG12; + Bool_t L1_DoubleMu5_SQ_OS; + Bool_t L1_DoubleMu5_SQ_OS_Mass7to18; + Bool_t L1_DoubleMu6_SQ_OS; + Bool_t L1_DoubleMu7_EG7; + Bool_t L1_DoubleMu7_SQ_EG7; + Bool_t L1_DoubleMu8_SQ; + Bool_t L1_DoubleMu_10_0_dEta_Max1p8; + Bool_t L1_DoubleMu_12_5; + Bool_t L1_DoubleMu_15_5_SQ; + Bool_t L1_DoubleMu_15_7; + Bool_t L1_DoubleMu_20_2_SQ_Mass_Max20; + Bool_t L1_DoubleTau70er2p1; + Bool_t L1_EG25er2p1_HTT125er; + Bool_t L1_EG27er2p1_HTT200er; + Bool_t L1_EG40er2p1_Tau20er2p1_dR_Min0p3; + Bool_t L1_ETM100; + Bool_t L1_ETM100_Jet60_dPhi_Min0p4; + Bool_t L1_ETM105; + Bool_t L1_ETM110; + Bool_t L1_ETM110_Jet60_dPhi_Min0p4; + Bool_t L1_ETM115; + Bool_t L1_ETM120; + Bool_t L1_ETM150; + Bool_t L1_ETM30; + Bool_t L1_ETM40; + Bool_t L1_ETM50; + Bool_t L1_ETM60; + Bool_t L1_ETM70; + Bool_t L1_ETM75; + Bool_t L1_ETM75_Jet60_dPhi_Min0p4; + Bool_t L1_ETM80; + Bool_t L1_ETM80_Jet60_dPhi_Min0p4; + Bool_t L1_ETM85; + Bool_t L1_ETM90; + Bool_t L1_ETM90_Jet60_dPhi_Min0p4; + Bool_t L1_ETM95; + Bool_t L1_ETMHF100; + Bool_t L1_ETMHF100_HTT60er; + Bool_t L1_ETMHF100_Jet60_OR_DiJet30woTT28; + Bool_t L1_ETMHF100_Jet60_OR_DoubleJet30; + Bool_t L1_ETMHF100_Jet90_OR_DoubleJet45_OR_TripleJet30; + Bool_t L1_ETMHF110; + Bool_t L1_ETMHF110_HTT60er; + Bool_t L1_ETMHF110_Jet60_OR_DiJet30woTT28; + Bool_t L1_ETMHF110_Jet90_OR_DoubleJet45_OR_TripleJet30; + Bool_t L1_ETMHF120; + Bool_t L1_ETMHF120_HTT60er; + Bool_t L1_ETMHF120_Jet60_OR_DiJet30woTT28; + Bool_t L1_ETMHF150; + Bool_t L1_ETMHF70; + Bool_t L1_ETMHF70_Jet90_OR_DoubleJet45_OR_TripleJet30; + Bool_t L1_ETMHF80; + Bool_t L1_ETMHF80_HTT60er; + Bool_t L1_ETMHF80_Jet90_OR_DoubleJet45_OR_TripleJet30; + Bool_t L1_ETMHF90; + Bool_t L1_ETMHF90_HTT60er; + Bool_t L1_ETMHF90_Jet90_OR_DoubleJet45_OR_TripleJet30; + Bool_t L1_ETT100_BptxAND; + Bool_t L1_ETT110_BptxAND; + Bool_t L1_ETT40_BptxAND; + Bool_t L1_ETT50_BptxAND; + Bool_t L1_ETT60_BptxAND; + Bool_t L1_ETT70_BptxAND; + Bool_t L1_ETT75_BptxAND; + Bool_t L1_ETT80_BptxAND; + Bool_t L1_ETT85_BptxAND; + Bool_t L1_ETT90_BptxAND; + Bool_t L1_ETT95_BptxAND; + Bool_t L1_FirstBunchAfterTrain; + Bool_t L1_FirstBunchInTrain; + Bool_t L1_FirstCollisionInOrbit; + Bool_t L1_FirstCollisionInTrain; + Bool_t L1_HCAL_LaserMon_Trig; + Bool_t L1_HCAL_LaserMon_Veto; + Bool_t L1_HTT120er; + Bool_t L1_HTT160er; + Bool_t L1_HTT200er; + Bool_t L1_HTT220er; + Bool_t L1_HTT240er; + Bool_t L1_HTT255er; + Bool_t L1_HTT270er; + Bool_t L1_HTT280er; + Bool_t L1_HTT280er_QuadJet_70_55_40_35_er2p5; + Bool_t L1_HTT300er; + Bool_t L1_HTT300er_QuadJet_70_55_40_35_er2p5; + Bool_t L1_HTT320er; + Bool_t L1_HTT320er_QuadJet_70_55_40_40_er2p4; + Bool_t L1_HTT320er_QuadJet_70_55_40_40_er2p5; + Bool_t L1_HTT320er_QuadJet_70_55_45_45_er2p5; + Bool_t L1_HTT340er; + Bool_t L1_HTT340er_QuadJet_70_55_40_40_er2p5; + Bool_t L1_HTT340er_QuadJet_70_55_45_45_er2p5; + Bool_t L1_HTT380er; + Bool_t L1_HTT400er; + Bool_t L1_HTT450er; + Bool_t L1_HTT500er; + Bool_t L1_IsoEG33_Mt40; + Bool_t L1_IsoEG33_Mt44; + Bool_t L1_IsoEG33_Mt48; + Bool_t L1_IsoTau40er_ETMHF100; + Bool_t L1_IsoTau40er_ETMHF110; + Bool_t L1_IsoTau40er_ETMHF120; + Bool_t L1_IsoTau40er_ETMHF90; + Bool_t L1_IsolatedBunch; + Bool_t L1_LastCollisionInTrain; + Bool_t L1_LooseIsoEG22er2p1_IsoTau26er2p1_dR_Min0p3; + Bool_t L1_LooseIsoEG24er2p1_HTT100er; + Bool_t L1_LooseIsoEG24er2p1_IsoTau27er2p1_dR_Min0p3; + Bool_t L1_LooseIsoEG24er2p1_Jet26er2p7_dR_Min0p3; + Bool_t L1_LooseIsoEG24er2p1_TripleJet_26er2p7_26_26er2p7; + Bool_t L1_LooseIsoEG26er2p1_HTT100er; + Bool_t L1_LooseIsoEG26er2p1_Jet34er2p7_dR_Min0p3; + Bool_t L1_LooseIsoEG28er2p1_HTT100er; + Bool_t L1_LooseIsoEG28er2p1_Jet34er2p7_dR_Min0p3; + Bool_t L1_LooseIsoEG30er2p1_Jet34er2p7_dR_Min0p3; + Bool_t L1_MU20_EG15; + Bool_t L1_MinimumBiasHF0_AND_BptxAND; + Bool_t L1_MinimumBiasHF0_OR_BptxAND; + Bool_t L1_Mu10er2p3_Jet32er2p3_dR_Max0p4_DoubleJet32er2p3_dEta_Max1p6; + Bool_t L1_Mu12_EG10; + Bool_t L1_Mu12er2p3_Jet40er2p3_dR_Max0p4_DoubleJet40er2p3_dEta_Max1p6; + Bool_t L1_Mu18er2p1_Tau24er2p1; + Bool_t L1_Mu20_EG10; + Bool_t L1_Mu20_EG17; + Bool_t L1_Mu20_LooseIsoEG6; + Bool_t L1_Mu22er2p1_IsoTau32er2p1; + Bool_t L1_Mu22er2p1_IsoTau34er2p1; + Bool_t L1_Mu22er2p1_IsoTau36er2p1; + Bool_t L1_Mu22er2p1_IsoTau40er2p1; + Bool_t L1_Mu22er2p1_Tau70er2p1; + Bool_t L1_Mu23_EG10; + Bool_t L1_Mu23_LooseIsoEG10; + Bool_t L1_Mu3_Jet120er2p7_dEta_Max0p4_dPhi_Max0p4; + Bool_t L1_Mu3_Jet16er2p7_dEta_Max0p4_dPhi_Max0p4; + Bool_t L1_Mu3_Jet30er2p5; + Bool_t L1_Mu3_Jet60er2p7_dEta_Max0p4_dPhi_Max0p4; + Bool_t L1_Mu5_EG15; + Bool_t L1_Mu5_EG20; + Bool_t L1_Mu5_EG23; + Bool_t L1_Mu5_LooseIsoEG18; + Bool_t L1_Mu5_LooseIsoEG20; + Bool_t L1_Mu6_DoubleEG10; + Bool_t L1_Mu6_DoubleEG17; + Bool_t L1_Mu6_HTT240er; + Bool_t L1_Mu6_HTT250er; + Bool_t L1_Mu7_EG23; + Bool_t L1_Mu7_LooseIsoEG20; + Bool_t L1_Mu7_LooseIsoEG23; + Bool_t L1_NotBptxOR; + Bool_t L1_QuadJet36er2p7_IsoTau52er2p1; + Bool_t L1_QuadJet40er2p7; + Bool_t L1_QuadJet50er2p7; + Bool_t L1_QuadJet60er2p7; + Bool_t L1_QuadMu0; + Bool_t L1_SingleEG10; + Bool_t L1_SingleEG15; + Bool_t L1_SingleEG26; + Bool_t L1_SingleEG34; + Bool_t L1_SingleEG34er2p1; + Bool_t L1_SingleEG34er2p5; + Bool_t L1_SingleEG36; + Bool_t L1_SingleEG36er2p1; + Bool_t L1_SingleEG36er2p5; + Bool_t L1_SingleEG38; + Bool_t L1_SingleEG38er2p1; + Bool_t L1_SingleEG38er2p5; + Bool_t L1_SingleEG40; + Bool_t L1_SingleEG40er2p5; + Bool_t L1_SingleEG42; + Bool_t L1_SingleEG42er2p5; + Bool_t L1_SingleEG45; + Bool_t L1_SingleEG5; + Bool_t L1_SingleEG50; + Bool_t L1_SingleIsoEG24er2p1; + Bool_t L1_SingleIsoEG26; + Bool_t L1_SingleIsoEG26er2p1; + Bool_t L1_SingleIsoEG26er2p5; + Bool_t L1_SingleIsoEG28; + Bool_t L1_SingleIsoEG28er2p1; + Bool_t L1_SingleIsoEG28er2p5; + Bool_t L1_SingleIsoEG30; + Bool_t L1_SingleIsoEG30er2p1; + Bool_t L1_SingleIsoEG30er2p5; + Bool_t L1_SingleIsoEG32; + Bool_t L1_SingleIsoEG32er2p1; + Bool_t L1_SingleIsoEG32er2p5; + Bool_t L1_SingleIsoEG34; + Bool_t L1_SingleIsoEG34er2p5; + Bool_t L1_SingleJet10erHE; + Bool_t L1_SingleJet120; + Bool_t L1_SingleJet120_FWD; + Bool_t L1_SingleJet12_BptxAND; + Bool_t L1_SingleJet12erHE; + Bool_t L1_SingleJet140; + Bool_t L1_SingleJet150; + Bool_t L1_SingleJet16; + Bool_t L1_SingleJet160; + Bool_t L1_SingleJet170; + Bool_t L1_SingleJet180; + Bool_t L1_SingleJet20; + Bool_t L1_SingleJet200; + Bool_t L1_SingleJet20er2p7_NotBptxOR; + Bool_t L1_SingleJet20er2p7_NotBptxOR_3BX; + Bool_t L1_SingleJet35; + Bool_t L1_SingleJet35_FWD; + Bool_t L1_SingleJet35_HFm; + Bool_t L1_SingleJet35_HFp; + Bool_t L1_SingleJet43er2p7_NotBptxOR_3BX; + Bool_t L1_SingleJet46er2p7_NotBptxOR_3BX; + Bool_t L1_SingleJet60; + Bool_t L1_SingleJet60_FWD; + Bool_t L1_SingleJet60_HFm; + Bool_t L1_SingleJet60_HFp; + Bool_t L1_SingleJet8erHE; + Bool_t L1_SingleJet90; + Bool_t L1_SingleJet90_FWD; + Bool_t L1_SingleMu0_BMTF; + Bool_t L1_SingleMu0_EMTF; + Bool_t L1_SingleMu0_OMTF; + Bool_t L1_SingleMu10_LowQ; + Bool_t L1_SingleMu12_LowQ_BMTF; + Bool_t L1_SingleMu12_LowQ_EMTF; + Bool_t L1_SingleMu12_LowQ_OMTF; + Bool_t L1_SingleMu18; + Bool_t L1_SingleMu20; + Bool_t L1_SingleMu22; + Bool_t L1_SingleMu22_BMTF; + Bool_t L1_SingleMu22_EMTF; + Bool_t L1_SingleMu22_OMTF; + Bool_t L1_SingleMu25; + Bool_t L1_SingleMu3; + Bool_t L1_SingleMu5; + Bool_t L1_SingleMu7; + Bool_t L1_SingleMuCosmics; + Bool_t L1_SingleMuCosmics_BMTF; + Bool_t L1_SingleMuCosmics_EMTF; + Bool_t L1_SingleMuCosmics_OMTF; + Bool_t L1_SingleMuOpen; + Bool_t L1_SingleMuOpen_NotBptxOR; + Bool_t L1_SingleMuOpen_er1p1_NotBptxOR_3BX; + Bool_t L1_SingleMuOpen_er1p4_NotBptxOR_3BX; + Bool_t L1_SingleTau120er2p1; + Bool_t L1_SingleTau130er2p1; + Bool_t L1_TOTEM_1; + Bool_t L1_TOTEM_2; + Bool_t L1_TOTEM_3; + Bool_t L1_TOTEM_4; + Bool_t L1_TripleEG_18_17_8; + Bool_t L1_TripleEG_LooseIso20_10_5; + Bool_t L1_TripleJet_100_85_72_VBF; + Bool_t L1_TripleJet_105_85_76_VBF; + Bool_t L1_TripleJet_98_83_71_VBF; + Bool_t L1_TripleMu0; + Bool_t L1_TripleMu0_OQ; + Bool_t L1_TripleMu3; + Bool_t L1_TripleMu3_SQ; + Bool_t L1_TripleMu_4_4_4; + Bool_t L1_TripleMu_5OQ_3p5OQ_2p5OQ_DoubleMu_5_2p5_OQ_OS_Mass_5to17; + Bool_t L1_TripleMu_5OQ_3p5OQ_2p5OQ_DoubleMu_5_2p5_OQ_OS_Mass_8to14; + Bool_t L1_TripleMu_5SQ_3SQ_0OQ; + Bool_t L1_TripleMu_5SQ_3SQ_0OQ_DoubleMu_5_3_SQ_OS_Mass_Max9; + Bool_t L1_TripleMu_5SQ_3SQ_0_DoubleMu_5_3_SQ_OS_Mass_Max9; + Bool_t L1_TripleMu_5_0_0; + Bool_t L1_TripleMu_5_3_3; + Bool_t L1_TripleMu_5_3p5_2p5; + Bool_t L1_TripleMu_5_3p5_2p5_DoubleMu_5_2p5_OS_Mass_5to17; + Bool_t L1_TripleMu_5_4_2p5_DoubleMu_5_2p5_OS_Mass_5to17; + Bool_t L1_TripleMu_5_5_3; + Bool_t L1_UnpairedBunchBptxMinus; + Bool_t L1_UnpairedBunchBptxPlus; + Bool_t L1_ZeroBias; + Bool_t L1_ZeroBias_copy; + Bool_t L1_UnprefireableEvent; + Bool_t Flag_HBHENoiseFilter; + Bool_t Flag_HBHENoiseIsoFilter; + Bool_t Flag_CSCTightHaloFilter; + Bool_t Flag_CSCTightHaloTrkMuUnvetoFilter; + Bool_t Flag_CSCTightHalo2015Filter; + Bool_t Flag_globalTightHalo2016Filter; + Bool_t Flag_globalSuperTightHalo2016Filter; + Bool_t Flag_HcalStripHaloFilter; + Bool_t Flag_hcalLaserEventFilter; + Bool_t Flag_EcalDeadCellTriggerPrimitiveFilter; + Bool_t Flag_EcalDeadCellBoundaryEnergyFilter; + Bool_t Flag_ecalBadCalibFilter; + Bool_t Flag_goodVertices; + Bool_t Flag_eeBadScFilter; + Bool_t Flag_ecalLaserCorrFilter; + Bool_t Flag_trkPOGFilters; + Bool_t Flag_chargedHadronTrackResolutionFilter; + Bool_t Flag_muonBadTrackFilter; + Bool_t Flag_BadChargedCandidateFilter; + Bool_t Flag_BadPFMuonFilter; + Bool_t Flag_BadPFMuonDzFilter; + Bool_t Flag_hfNoisyHitsFilter; + Bool_t Flag_BadChargedCandidateSummer16Filter; + Bool_t Flag_BadPFMuonSummer16Filter; + Bool_t Flag_trkPOG_manystripclus53X; + Bool_t Flag_trkPOG_toomanystripclus53X; + Bool_t Flag_trkPOG_logErrorTooManyClusters; + Bool_t Flag_METFilters; + Bool_t L1Reco_step; + Bool_t Flag_HBHENoiseFilter_pRECO; + Bool_t Flag_HBHENoiseIsoFilter_pRECO; + Bool_t Flag_CSCTightHaloFilter_pRECO; + Bool_t Flag_CSCTightHaloTrkMuUnvetoFilter_pRECO; + Bool_t Flag_CSCTightHalo2015Filter_pRECO; + Bool_t Flag_globalTightHalo2016Filter_pRECO; + Bool_t Flag_globalSuperTightHalo2016Filter_pRECO; + Bool_t Flag_HcalStripHaloFilter_pRECO; + Bool_t Flag_hcalLaserEventFilter_pRECO; + Bool_t Flag_EcalDeadCellTriggerPrimitiveFilter_pRECO; + Bool_t Flag_EcalDeadCellBoundaryEnergyFilter_pRECO; + Bool_t Flag_ecalBadCalibFilter_pRECO; + Bool_t Flag_goodVertices_pRECO; + Bool_t Flag_eeBadScFilter_pRECO; + Bool_t Flag_ecalLaserCorrFilter_pRECO; + Bool_t Flag_trkPOGFilters_pRECO; + Bool_t Flag_chargedHadronTrackResolutionFilter_pRECO; + Bool_t Flag_muonBadTrackFilter_pRECO; + Bool_t Flag_BadChargedCandidateFilter_pRECO; + Bool_t Flag_BadPFMuonFilter_pRECO; + Bool_t Flag_BadChargedCandidateSummer16Filter_pRECO; + Bool_t Flag_BadPFMuonSummer16Filter_pRECO; + Bool_t Flag_trkPOG_manystripclus53X_pRECO; + Bool_t Flag_trkPOG_toomanystripclus53X_pRECO; + Bool_t Flag_trkPOG_logErrorTooManyClusters_pRECO; + Bool_t Flag_METFilters_pRECO; + Bool_t HLTriggerFirstPath; + Bool_t HLT_AK8PFJet360_TrimMass30; + Bool_t HLT_AK8PFJet380_TrimMass30; + Bool_t HLT_AK8PFJet400_TrimMass30; + Bool_t HLT_AK8PFJet420_TrimMass30; + Bool_t HLT_AK8PFHT750_TrimMass50; + Bool_t HLT_AK8PFHT800_TrimMass50; + Bool_t HLT_AK8PFHT850_TrimMass50; + Bool_t HLT_AK8PFHT900_TrimMass50; + Bool_t HLT_CaloJet500_NoJetID; + Bool_t HLT_CaloJet550_NoJetID; + Bool_t HLT_DoubleMu5_Upsilon_DoubleEle3_CaloIdL_TrackIdL; + Bool_t HLT_DoubleMu3_DoubleEle7p5_CaloIdL_TrackIdL_Upsilon; + Bool_t HLT_Trimuon5_3p5_2_Upsilon_Muon; + Bool_t HLT_TrimuonOpen_5_3p5_2_Upsilon_Muon; + Bool_t HLT_DoubleEle25_CaloIdL_MW; + Bool_t HLT_DoubleEle27_CaloIdL_MW; + Bool_t HLT_DoubleEle33_CaloIdL_MW; + Bool_t HLT_DoubleEle24_eta2p1_WPTight_Gsf; + Bool_t HLT_DoubleEle8_CaloIdM_TrackIdM_Mass8_DZ_PFHT350; + Bool_t HLT_DoubleEle8_CaloIdM_TrackIdM_Mass8_PFHT350; + Bool_t HLT_Ele27_Ele37_CaloIdL_MW; + Bool_t HLT_Mu27_Ele37_CaloIdL_MW; + Bool_t HLT_Mu37_Ele27_CaloIdL_MW; + Bool_t HLT_Mu37_TkMu27; + Bool_t HLT_DoubleMu4_3_Bs; + Bool_t HLT_DoubleMu4_3_Jpsi; + Bool_t HLT_DoubleMu4_JpsiTrk_Displaced; + Bool_t HLT_DoubleMu4_LowMassNonResonantTrk_Displaced; + Bool_t HLT_DoubleMu3_Trk_Tau3mu; + Bool_t HLT_DoubleMu3_TkMu_DsTau3Mu; + Bool_t HLT_DoubleMu4_PsiPrimeTrk_Displaced; + Bool_t HLT_DoubleMu4_Mass8_DZ_PFHT350; + Bool_t HLT_DoubleMu8_Mass8_PFHT350; + Bool_t HLT_Mu3_PFJet40; + Bool_t HLT_Mu7p5_L2Mu2_Jpsi; + Bool_t HLT_Mu7p5_L2Mu2_Upsilon; + Bool_t HLT_Mu7p5_Track2_Jpsi; + Bool_t HLT_Mu7p5_Track3p5_Jpsi; + Bool_t HLT_Mu7p5_Track7_Jpsi; + Bool_t HLT_Mu7p5_Track2_Upsilon; + Bool_t HLT_Mu7p5_Track3p5_Upsilon; + Bool_t HLT_Mu7p5_Track7_Upsilon; + Bool_t HLT_DoublePhoton33_CaloIdL; + Bool_t HLT_DoublePhoton70; + Bool_t HLT_DoublePhoton85; + Bool_t HLT_Ele20_WPTight_Gsf; + Bool_t HLT_Ele15_WPLoose_Gsf; + Bool_t HLT_Ele17_WPLoose_Gsf; + Bool_t HLT_Ele20_WPLoose_Gsf; + Bool_t HLT_Ele20_eta2p1_WPLoose_Gsf; + Bool_t HLT_DiEle27_WPTightCaloOnly_L1DoubleEG; + Bool_t HLT_Ele27_WPTight_Gsf; + Bool_t HLT_Ele32_WPTight_Gsf; + Bool_t HLT_Ele35_WPTight_Gsf; + Bool_t HLT_Ele35_WPTight_Gsf_L1EGMT; + Bool_t HLT_Ele38_WPTight_Gsf; + Bool_t HLT_Ele40_WPTight_Gsf; + Bool_t HLT_Ele32_WPTight_Gsf_L1DoubleEG; + Bool_t HLT_HT450_Beamspot; + Bool_t HLT_HT300_Beamspot; + Bool_t HLT_ZeroBias_Beamspot; + Bool_t HLT_IsoMu20_eta2p1_LooseChargedIsoPFTau27_eta2p1_CrossL1; + Bool_t HLT_IsoMu20_eta2p1_MediumChargedIsoPFTau27_eta2p1_CrossL1; + Bool_t HLT_IsoMu20_eta2p1_TightChargedIsoPFTau27_eta2p1_CrossL1; + Bool_t HLT_IsoMu20_eta2p1_LooseChargedIsoPFTau27_eta2p1_TightID_CrossL1; + Bool_t HLT_IsoMu20_eta2p1_MediumChargedIsoPFTau27_eta2p1_TightID_CrossL1; + Bool_t HLT_IsoMu20_eta2p1_TightChargedIsoPFTau27_eta2p1_TightID_CrossL1; + Bool_t HLT_IsoMu20; + Bool_t HLT_IsoMu24; + Bool_t HLT_IsoMu24_eta2p1; + Bool_t HLT_IsoMu27; + Bool_t HLT_IsoMu30; + Bool_t HLT_UncorrectedJetE30_NoBPTX; + Bool_t HLT_UncorrectedJetE30_NoBPTX3BX; + Bool_t HLT_UncorrectedJetE60_NoBPTX3BX; + Bool_t HLT_UncorrectedJetE70_NoBPTX3BX; + Bool_t HLT_L1SingleMu18; + Bool_t HLT_L1SingleMu25; + Bool_t HLT_L2Mu10; + Bool_t HLT_L2Mu10_NoVertex_NoBPTX3BX; + Bool_t HLT_L2Mu10_NoVertex_NoBPTX; + Bool_t HLT_L2Mu45_NoVertex_3Sta_NoBPTX3BX; + Bool_t HLT_L2Mu40_NoVertex_3Sta_NoBPTX3BX; + Bool_t HLT_L2Mu50; + Bool_t HLT_L2Mu23NoVtx_2Cha; + Bool_t HLT_L2Mu23NoVtx_2Cha_CosmicSeed; + Bool_t HLT_DoubleL2Mu30NoVtx_2Cha_CosmicSeed_Eta2p4; + Bool_t HLT_DoubleL2Mu30NoVtx_2Cha_Eta2p4; + Bool_t HLT_DoubleL2Mu50; + Bool_t HLT_DoubleL2Mu23NoVtx_2Cha_CosmicSeed; + Bool_t HLT_DoubleL2Mu25NoVtx_2Cha_CosmicSeed; + Bool_t HLT_DoubleL2Mu25NoVtx_2Cha_CosmicSeed_Eta2p4; + Bool_t HLT_DoubleL2Mu23NoVtx_2Cha; + Bool_t HLT_DoubleL2Mu25NoVtx_2Cha; + Bool_t HLT_DoubleL2Mu25NoVtx_2Cha_Eta2p4; + Bool_t HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL; + Bool_t HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL; + Bool_t HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ; + Bool_t HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ; + Bool_t HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8; + Bool_t HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_Mass8; + Bool_t HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass3p8; + Bool_t HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_Mass3p8; + Bool_t HLT_Mu25_TkMu0_Onia; + Bool_t HLT_Mu30_TkMu0_Onia; + Bool_t HLT_Mu20_TkMu0_Phi; + Bool_t HLT_Mu25_TkMu0_Phi; + Bool_t HLT_Mu12; + Bool_t HLT_Mu15; + Bool_t HLT_Mu20; + Bool_t HLT_Mu27; + Bool_t HLT_Mu50; + Bool_t HLT_Mu55; + Bool_t HLT_OldMu100; + Bool_t HLT_TkMu100; + Bool_t HLT_DiPFJet15_NoCaloMatched; + Bool_t HLT_DiPFJet25_NoCaloMatched; + Bool_t HLT_DiPFJet15_FBEta3_NoCaloMatched; + Bool_t HLT_DiPFJet25_FBEta3_NoCaloMatched; + Bool_t HLT_DiPFJetAve40; + Bool_t HLT_DiPFJetAve60; + Bool_t HLT_DiPFJetAve80; + Bool_t HLT_DiPFJetAve140; + Bool_t HLT_DiPFJetAve200; + Bool_t HLT_DiPFJetAve260; + Bool_t HLT_DiPFJetAve320; + Bool_t HLT_DiPFJetAve400; + Bool_t HLT_DiPFJetAve500; + Bool_t HLT_DiPFJetAve15_HFJEC; + Bool_t HLT_DiPFJetAve25_HFJEC; + Bool_t HLT_DiPFJetAve35_HFJEC; + Bool_t HLT_DiPFJetAve60_HFJEC; + Bool_t HLT_DiPFJetAve80_HFJEC; + Bool_t HLT_DiPFJetAve100_HFJEC; + Bool_t HLT_DiPFJetAve160_HFJEC; + Bool_t HLT_DiPFJetAve220_HFJEC; + Bool_t HLT_DiPFJetAve300_HFJEC; + Bool_t HLT_AK8PFJet15; + Bool_t HLT_AK8PFJet25; + Bool_t HLT_AK8PFJet40; + Bool_t HLT_AK8PFJet60; + Bool_t HLT_AK8PFJet80; + Bool_t HLT_AK8PFJet140; + Bool_t HLT_AK8PFJet200; + Bool_t HLT_AK8PFJet260; + Bool_t HLT_AK8PFJet320; + Bool_t HLT_AK8PFJet400; + Bool_t HLT_AK8PFJet450; + Bool_t HLT_AK8PFJet500; + Bool_t HLT_AK8PFJet550; + Bool_t HLT_PFJet15; + Bool_t HLT_PFJet25; + Bool_t HLT_PFJet40; + Bool_t HLT_PFJet60; + Bool_t HLT_PFJet80; + Bool_t HLT_PFJet140; + Bool_t HLT_PFJet200; + Bool_t HLT_PFJet260; + Bool_t HLT_PFJet320; + Bool_t HLT_PFJet400; + Bool_t HLT_PFJet450; + Bool_t HLT_PFJet500; + Bool_t HLT_PFJet550; + Bool_t HLT_PFJetFwd15; + Bool_t HLT_PFJetFwd25; + Bool_t HLT_PFJetFwd40; + Bool_t HLT_PFJetFwd60; + Bool_t HLT_PFJetFwd80; + Bool_t HLT_PFJetFwd140; + Bool_t HLT_PFJetFwd200; + Bool_t HLT_PFJetFwd260; + Bool_t HLT_PFJetFwd320; + Bool_t HLT_PFJetFwd400; + Bool_t HLT_PFJetFwd450; + Bool_t HLT_PFJetFwd500; + Bool_t HLT_AK8PFJetFwd15; + Bool_t HLT_AK8PFJetFwd25; + Bool_t HLT_AK8PFJetFwd40; + Bool_t HLT_AK8PFJetFwd60; + Bool_t HLT_AK8PFJetFwd80; + Bool_t HLT_AK8PFJetFwd140; + Bool_t HLT_AK8PFJetFwd200; + Bool_t HLT_AK8PFJetFwd260; + Bool_t HLT_AK8PFJetFwd320; + Bool_t HLT_AK8PFJetFwd400; + Bool_t HLT_AK8PFJetFwd450; + Bool_t HLT_AK8PFJetFwd500; + Bool_t HLT_PFHT180; + Bool_t HLT_PFHT250; + Bool_t HLT_PFHT370; + Bool_t HLT_PFHT430; + Bool_t HLT_PFHT510; + Bool_t HLT_PFHT590; + Bool_t HLT_PFHT680; + Bool_t HLT_PFHT780; + Bool_t HLT_PFHT890; + Bool_t HLT_PFHT1050; + Bool_t HLT_PFHT500_PFMET100_PFMHT100_IDTight; + Bool_t HLT_PFHT500_PFMET110_PFMHT110_IDTight; + Bool_t HLT_PFHT700_PFMET85_PFMHT85_IDTight; + Bool_t HLT_PFHT700_PFMET95_PFMHT95_IDTight; + Bool_t HLT_PFHT800_PFMET75_PFMHT75_IDTight; + Bool_t HLT_PFHT800_PFMET85_PFMHT85_IDTight; + Bool_t HLT_PFMET110_PFMHT110_IDTight; + Bool_t HLT_PFMET120_PFMHT120_IDTight; + Bool_t HLT_PFMET130_PFMHT130_IDTight; + Bool_t HLT_PFMET140_PFMHT140_IDTight; + Bool_t HLT_PFMET100_PFMHT100_IDTight_CaloBTagCSV_3p1; + Bool_t HLT_PFMET110_PFMHT110_IDTight_CaloBTagCSV_3p1; + Bool_t HLT_PFMET120_PFMHT120_IDTight_CaloBTagCSV_3p1; + Bool_t HLT_PFMET130_PFMHT130_IDTight_CaloBTagCSV_3p1; + Bool_t HLT_PFMET140_PFMHT140_IDTight_CaloBTagCSV_3p1; + Bool_t HLT_PFMET120_PFMHT120_IDTight_PFHT60; + Bool_t HLT_PFMETNoMu120_PFMHTNoMu120_IDTight_PFHT60; + Bool_t HLT_PFMETTypeOne120_PFMHT120_IDTight_PFHT60; + Bool_t HLT_PFMETTypeOne110_PFMHT110_IDTight; + Bool_t HLT_PFMETTypeOne120_PFMHT120_IDTight; + Bool_t HLT_PFMETTypeOne130_PFMHT130_IDTight; + Bool_t HLT_PFMETTypeOne140_PFMHT140_IDTight; + Bool_t HLT_PFMETNoMu110_PFMHTNoMu110_IDTight; + Bool_t HLT_PFMETNoMu120_PFMHTNoMu120_IDTight; + Bool_t HLT_PFMETNoMu130_PFMHTNoMu130_IDTight; + Bool_t HLT_PFMETNoMu140_PFMHTNoMu140_IDTight; + Bool_t HLT_MonoCentralPFJet80_PFMETNoMu110_PFMHTNoMu110_IDTight; + Bool_t HLT_MonoCentralPFJet80_PFMETNoMu120_PFMHTNoMu120_IDTight; + Bool_t HLT_MonoCentralPFJet80_PFMETNoMu130_PFMHTNoMu130_IDTight; + Bool_t HLT_MonoCentralPFJet80_PFMETNoMu140_PFMHTNoMu140_IDTight; + Bool_t HLT_L1ETMHadSeeds; + Bool_t HLT_CaloMHT90; + Bool_t HLT_CaloMET80_NotCleaned; + Bool_t HLT_CaloMET90_NotCleaned; + Bool_t HLT_CaloMET100_NotCleaned; + Bool_t HLT_CaloMET110_NotCleaned; + Bool_t HLT_CaloMET250_NotCleaned; + Bool_t HLT_CaloMET70_HBHECleaned; + Bool_t HLT_CaloMET80_HBHECleaned; + Bool_t HLT_CaloMET90_HBHECleaned; + Bool_t HLT_CaloMET100_HBHECleaned; + Bool_t HLT_CaloMET250_HBHECleaned; + Bool_t HLT_CaloMET300_HBHECleaned; + Bool_t HLT_CaloMET350_HBHECleaned; + Bool_t HLT_PFMET200_NotCleaned; + Bool_t HLT_PFMET200_HBHECleaned; + Bool_t HLT_PFMET250_HBHECleaned; + Bool_t HLT_PFMET300_HBHECleaned; + Bool_t HLT_PFMET200_HBHE_BeamHaloCleaned; + Bool_t HLT_PFMETTypeOne200_HBHE_BeamHaloCleaned; + Bool_t HLT_MET105_IsoTrk50; + Bool_t HLT_MET120_IsoTrk50; + Bool_t HLT_SingleJet30_Mu12_SinglePFJet40; + Bool_t HLT_Mu12_DoublePFJets40_CaloBTagCSV_p79; + Bool_t HLT_Mu12_DoublePFJets100_CaloBTagCSV_p79; + Bool_t HLT_Mu12_DoublePFJets200_CaloBTagCSV_p79; + Bool_t HLT_Mu12_DoublePFJets350_CaloBTagCSV_p79; + Bool_t HLT_Mu12_DoublePFJets40MaxDeta1p6_DoubleCaloBTagCSV_p79; + Bool_t HLT_Mu12_DoublePFJets54MaxDeta1p6_DoubleCaloBTagCSV_p79; + Bool_t HLT_Mu12_DoublePFJets62MaxDeta1p6_DoubleCaloBTagCSV_p79; + Bool_t HLT_DoublePFJets40_CaloBTagCSV_p79; + Bool_t HLT_DoublePFJets100_CaloBTagCSV_p79; + Bool_t HLT_DoublePFJets200_CaloBTagCSV_p79; + Bool_t HLT_DoublePFJets350_CaloBTagCSV_p79; + Bool_t HLT_DoublePFJets116MaxDeta1p6_DoubleCaloBTagCSV_p79; + Bool_t HLT_DoublePFJets128MaxDeta1p6_DoubleCaloBTagCSV_p79; + Bool_t HLT_Photon300_NoHE; + Bool_t HLT_Mu8_TrkIsoVVL; + Bool_t HLT_Mu8_DiEle12_CaloIdL_TrackIdL_DZ; + Bool_t HLT_Mu8_DiEle12_CaloIdL_TrackIdL; + Bool_t HLT_Mu8_Ele8_CaloIdM_TrackIdM_Mass8_PFHT350_DZ; + Bool_t HLT_Mu8_Ele8_CaloIdM_TrackIdM_Mass8_PFHT350; + Bool_t HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ; + Bool_t HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL; + Bool_t HLT_Mu17_TrkIsoVVL; + Bool_t HLT_Mu19_TrkIsoVVL; + Bool_t HLT_BTagMu_AK4DiJet20_Mu5; + Bool_t HLT_BTagMu_AK4DiJet40_Mu5; + Bool_t HLT_BTagMu_AK4DiJet70_Mu5; + Bool_t HLT_BTagMu_AK4DiJet110_Mu5; + Bool_t HLT_BTagMu_AK4DiJet170_Mu5; + Bool_t HLT_BTagMu_AK4Jet300_Mu5; + Bool_t HLT_BTagMu_AK8DiJet170_Mu5; + Bool_t HLT_BTagMu_AK8Jet300_Mu5; + Bool_t HLT_Ele15_Ele8_CaloIdL_TrackIdL_IsoVL; + Bool_t HLT_Ele23_Ele12_CaloIdL_TrackIdL_IsoVL_DZ; + Bool_t HLT_Ele23_Ele12_CaloIdL_TrackIdL_IsoVL; + Bool_t HLT_Mu23_TrkIsoVVL_Ele12_CaloIdL_TrackIdL_IsoVL_DZ; + Bool_t HLT_Mu23_TrkIsoVVL_Ele12_CaloIdL_TrackIdL_IsoVL; + Bool_t HLT_Mu12_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL; + Bool_t HLT_Mu12_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ; + Bool_t HLT_Mu12_DoublePhoton20; + Bool_t HLT_TriplePhoton_20_20_20_CaloIdLV2; + Bool_t HLT_TriplePhoton_20_20_20_CaloIdLV2_R9IdVL; + Bool_t HLT_TriplePhoton_30_30_10_CaloIdLV2; + Bool_t HLT_TriplePhoton_30_30_10_CaloIdLV2_R9IdVL; + Bool_t HLT_TriplePhoton_35_35_5_CaloIdLV2_R9IdVL; + Bool_t HLT_Photon20; + Bool_t HLT_Photon33; + Bool_t HLT_Photon50; + Bool_t HLT_Photon75; + Bool_t HLT_Photon90; + Bool_t HLT_Photon120; + Bool_t HLT_Photon150; + Bool_t HLT_Photon175; + Bool_t HLT_Photon200; + Bool_t HLT_Photon50_R9Id90_HE10_IsoM; + Bool_t HLT_Photon75_R9Id90_HE10_IsoM; + Bool_t HLT_Photon75_R9Id90_HE10_IsoM_EBOnly_CaloMJJ300_PFJetsMJJ400DEta3; + Bool_t HLT_Photon75_R9Id90_HE10_IsoM_EBOnly_CaloMJJ400_PFJetsMJJ600DEta3; + Bool_t HLT_Photon90_R9Id90_HE10_IsoM; + Bool_t HLT_Photon120_R9Id90_HE10_IsoM; + Bool_t HLT_Photon165_R9Id90_HE10_IsoM; + Bool_t HLT_Diphoton30_22_R9Id_OR_IsoCaloId_AND_HE_R9Id_Mass90; + Bool_t HLT_Diphoton30_22_R9Id_OR_IsoCaloId_AND_HE_R9Id_Mass95; + Bool_t HLT_Diphoton30PV_18PV_R9Id_AND_IsoCaloId_AND_HE_R9Id_PixelVeto_Mass55; + Bool_t HLT_Diphoton30PV_18PV_R9Id_AND_IsoCaloId_AND_HE_R9Id_NoPixelVeto_Mass55; + Bool_t HLT_Diphoton30EB_18EB_R9Id_OR_IsoCaloId_AND_HE_R9Id_NoPixelVeto_Mass55; + Bool_t HLT_Diphoton30EB_18EB_R9Id_OR_IsoCaloId_AND_HE_R9Id_PixelVeto_Mass55; + Bool_t HLT_Dimuon0_Jpsi_L1_NoOS; + Bool_t HLT_Dimuon0_Jpsi_NoVertexing_NoOS; + Bool_t HLT_Dimuon0_Jpsi; + Bool_t HLT_Dimuon0_Jpsi_NoVertexing; + Bool_t HLT_Dimuon0_Jpsi_L1_4R_0er1p5R; + Bool_t HLT_Dimuon0_Jpsi_NoVertexing_L1_4R_0er1p5R; + Bool_t HLT_Dimuon0_Jpsi3p5_Muon2; + Bool_t HLT_Dimuon0_Upsilon_L1_4p5; + Bool_t HLT_Dimuon0_Upsilon_L1_5; + Bool_t HLT_Dimuon0_Upsilon_L1_4p5NoOS; + Bool_t HLT_Dimuon0_Upsilon_L1_4p5er2p0; + Bool_t HLT_Dimuon0_Upsilon_L1_4p5er2p0M; + Bool_t HLT_Dimuon0_Upsilon_NoVertexing; + Bool_t HLT_Dimuon0_Upsilon_L1_5M; + Bool_t HLT_Dimuon0_LowMass_L1_0er1p5R; + Bool_t HLT_Dimuon0_LowMass_L1_0er1p5; + Bool_t HLT_Dimuon0_LowMass; + Bool_t HLT_Dimuon0_LowMass_L1_4; + Bool_t HLT_Dimuon0_LowMass_L1_4R; + Bool_t HLT_Dimuon0_LowMass_L1_TM530; + Bool_t HLT_Dimuon0_Upsilon_Muon_L1_TM0; + Bool_t HLT_Dimuon0_Upsilon_Muon_NoL1Mass; + Bool_t HLT_TripleMu_5_3_3_Mass3p8to60_DZ; + Bool_t HLT_TripleMu_10_5_5_DZ; + Bool_t HLT_TripleMu_12_10_5; + Bool_t HLT_Tau3Mu_Mu7_Mu1_TkMu1_Tau15; + Bool_t HLT_Tau3Mu_Mu7_Mu1_TkMu1_Tau15_Charge1; + Bool_t HLT_Tau3Mu_Mu7_Mu1_TkMu1_IsoTau15; + Bool_t HLT_Tau3Mu_Mu7_Mu1_TkMu1_IsoTau15_Charge1; + Bool_t HLT_DoubleMu3_DZ_PFMET50_PFMHT60; + Bool_t HLT_DoubleMu3_DZ_PFMET70_PFMHT70; + Bool_t HLT_DoubleMu3_DZ_PFMET90_PFMHT90; + Bool_t HLT_DoubleMu3_Trk_Tau3mu_NoL1Mass; + Bool_t HLT_DoubleMu4_Jpsi_Displaced; + Bool_t HLT_DoubleMu4_Jpsi_NoVertexing; + Bool_t HLT_DoubleMu4_JpsiTrkTrk_Displaced; + Bool_t HLT_DoubleMu43NoFiltersNoVtx; + Bool_t HLT_DoubleMu48NoFiltersNoVtx; + Bool_t HLT_Mu43NoFiltersNoVtx_Photon43_CaloIdL; + Bool_t HLT_Mu48NoFiltersNoVtx_Photon48_CaloIdL; + Bool_t HLT_DoubleMu20_7_Mass0to30_L1_DM4; + Bool_t HLT_DoubleMu20_7_Mass0to30_L1_DM4EG; + Bool_t HLT_HT425; + Bool_t HLT_HT430_DisplacedDijet40_DisplacedTrack; + Bool_t HLT_HT500_DisplacedDijet40_DisplacedTrack; + Bool_t HLT_HT430_DisplacedDijet60_DisplacedTrack; + Bool_t HLT_HT400_DisplacedDijet40_DisplacedTrack; + Bool_t HLT_HT650_DisplacedDijet60_Inclusive; + Bool_t HLT_HT550_DisplacedDijet60_Inclusive; + Bool_t HLT_DiJet110_35_Mjj650_PFMET110; + Bool_t HLT_DiJet110_35_Mjj650_PFMET120; + Bool_t HLT_DiJet110_35_Mjj650_PFMET130; + Bool_t HLT_TripleJet110_35_35_Mjj650_PFMET110; + Bool_t HLT_TripleJet110_35_35_Mjj650_PFMET120; + Bool_t HLT_TripleJet110_35_35_Mjj650_PFMET130; + Bool_t HLT_VBF_DoubleLooseChargedIsoPFTau20_Trk1_eta2p1; + Bool_t HLT_VBF_DoubleMediumChargedIsoPFTau20_Trk1_eta2p1; + Bool_t HLT_VBF_DoubleTightChargedIsoPFTau20_Trk1_eta2p1; + Bool_t HLT_Ele30_eta2p1_WPTight_Gsf_CentralPFJet35_EleCleaned; + Bool_t HLT_Ele28_eta2p1_WPTight_Gsf_HT150; + Bool_t HLT_Ele28_HighEta_SC20_Mass55; + Bool_t HLT_DoubleMu20_7_Mass0to30_Photon23; + Bool_t HLT_Ele15_IsoVVVL_PFHT450_CaloBTagCSV_4p5; + Bool_t HLT_Ele15_IsoVVVL_PFHT450_PFMET50; + Bool_t HLT_Ele15_IsoVVVL_PFHT450; + Bool_t HLT_Ele50_IsoVVVL_PFHT450; + Bool_t HLT_Ele15_IsoVVVL_PFHT600; + Bool_t HLT_Mu8_TrkIsoVVL_DiPFJet40_DEta3p5_MJJ750_HTT300_PFMETNoMu60; + Bool_t HLT_Mu10_TrkIsoVVL_DiPFJet40_DEta3p5_MJJ750_HTT350_PFMETNoMu60; + Bool_t HLT_Mu15_IsoVVVL_PFHT450_CaloBTagCSV_4p5; + Bool_t HLT_Mu15_IsoVVVL_PFHT450_PFMET50; + Bool_t HLT_Mu15_IsoVVVL_PFHT450; + Bool_t HLT_Mu50_IsoVVVL_PFHT450; + Bool_t HLT_Mu15_IsoVVVL_PFHT600; + Bool_t HLT_Dimuon10_PsiPrime_Barrel_Seagulls; + Bool_t HLT_Dimuon20_Jpsi_Barrel_Seagulls; + Bool_t HLT_Dimuon10_Upsilon_Barrel_Seagulls; + Bool_t HLT_Dimuon12_Upsilon_eta1p5; + Bool_t HLT_Dimuon14_Phi_Barrel_Seagulls; + Bool_t HLT_Dimuon18_PsiPrime; + Bool_t HLT_Dimuon25_Jpsi; + Bool_t HLT_Dimuon18_PsiPrime_noCorrL1; + Bool_t HLT_Dimuon24_Upsilon_noCorrL1; + Bool_t HLT_Dimuon24_Phi_noCorrL1; + Bool_t HLT_Dimuon25_Jpsi_noCorrL1; + Bool_t HLT_DiMu9_Ele9_CaloIdL_TrackIdL_DZ; + Bool_t HLT_DiMu9_Ele9_CaloIdL_TrackIdL; + Bool_t HLT_DoubleIsoMu20_eta2p1; + Bool_t HLT_DoubleIsoMu24_eta2p1; + Bool_t HLT_TrkMu12_DoubleTrkMu5NoFiltersNoVtx; + Bool_t HLT_TrkMu16_DoubleTrkMu6NoFiltersNoVtx; + Bool_t HLT_TrkMu17_DoubleTrkMu8NoFiltersNoVtx; + Bool_t HLT_Mu8; + Bool_t HLT_Mu17; + Bool_t HLT_Mu19; + Bool_t HLT_Mu17_Photon30_IsoCaloId; + Bool_t HLT_Ele8_CaloIdL_TrackIdL_IsoVL_PFJet30; + Bool_t HLT_Ele12_CaloIdL_TrackIdL_IsoVL_PFJet30; + Bool_t HLT_Ele15_CaloIdL_TrackIdL_IsoVL_PFJet30; + Bool_t HLT_Ele23_CaloIdL_TrackIdL_IsoVL_PFJet30; + Bool_t HLT_Ele8_CaloIdM_TrackIdM_PFJet30; + Bool_t HLT_Ele17_CaloIdM_TrackIdM_PFJet30; + Bool_t HLT_Ele23_CaloIdM_TrackIdM_PFJet30; + Bool_t HLT_Ele50_CaloIdVT_GsfTrkIdT_PFJet165; + Bool_t HLT_Ele115_CaloIdVT_GsfTrkIdT; + Bool_t HLT_Ele135_CaloIdVT_GsfTrkIdT; + Bool_t HLT_Ele145_CaloIdVT_GsfTrkIdT; + Bool_t HLT_Ele200_CaloIdVT_GsfTrkIdT; + Bool_t HLT_Ele250_CaloIdVT_GsfTrkIdT; + Bool_t HLT_Ele300_CaloIdVT_GsfTrkIdT; + Bool_t HLT_PFHT330PT30_QuadPFJet_75_60_45_40_TriplePFBTagDeepCSV_4p5; + Bool_t HLT_PFHT330PT30_QuadPFJet_75_60_45_40; + Bool_t HLT_PFHT380_SixPFJet32_DoublePFBTagCSV_2p2; + Bool_t HLT_PFHT380_SixPFJet32_DoublePFBTagDeepCSV_2p2; + Bool_t HLT_PFHT380_SixPFJet32; + Bool_t HLT_PFHT430_SixPFJet40_PFBTagCSV_1p5; + Bool_t HLT_PFHT430_SixPFJet40; + Bool_t HLT_PFHT350; + Bool_t HLT_PFHT350MinPFJet15; + Bool_t HLT_Photon60_R9Id90_CaloIdL_IsoL; + Bool_t HLT_Photon60_R9Id90_CaloIdL_IsoL_DisplacedIdL; + Bool_t HLT_Photon60_R9Id90_CaloIdL_IsoL_DisplacedIdL_PFHT350MinPFJet15; + Bool_t HLT_FullTrack_Multiplicity85; + Bool_t HLT_FullTrack_Multiplicity100; + Bool_t HLT_FullTrack_Multiplicity130; + Bool_t HLT_FullTrack_Multiplicity155; + Bool_t HLT_ECALHT800; + Bool_t HLT_DiSC30_18_EIso_AND_HE_Mass70; + Bool_t HLT_Physics; + Bool_t HLT_Physics_part0; + Bool_t HLT_Physics_part1; + Bool_t HLT_Physics_part2; + Bool_t HLT_Physics_part3; + Bool_t HLT_Physics_part4; + Bool_t HLT_Physics_part5; + Bool_t HLT_Physics_part6; + Bool_t HLT_Physics_part7; + Bool_t HLT_Random; + Bool_t HLT_ZeroBias; + Bool_t HLT_ZeroBias_part0; + Bool_t HLT_ZeroBias_part1; + Bool_t HLT_ZeroBias_part2; + Bool_t HLT_ZeroBias_part3; + Bool_t HLT_ZeroBias_part4; + Bool_t HLT_ZeroBias_part5; + Bool_t HLT_ZeroBias_part6; + Bool_t HLT_ZeroBias_part7; + Bool_t HLT_AK4CaloJet30; + Bool_t HLT_AK4CaloJet40; + Bool_t HLT_AK4CaloJet50; + Bool_t HLT_AK4CaloJet80; + Bool_t HLT_AK4CaloJet100; + Bool_t HLT_AK4CaloJet120; + Bool_t HLT_AK4PFJet30; + Bool_t HLT_AK4PFJet50; + Bool_t HLT_AK4PFJet80; + Bool_t HLT_AK4PFJet100; + Bool_t HLT_AK4PFJet120; + Bool_t HLT_SinglePhoton10_Eta3p1ForPPRef; + Bool_t HLT_SinglePhoton20_Eta3p1ForPPRef; + Bool_t HLT_SinglePhoton30_Eta3p1ForPPRef; + Bool_t HLT_Photon20_HoverELoose; + Bool_t HLT_Photon30_HoverELoose; + Bool_t HLT_EcalCalibration; + Bool_t HLT_HcalCalibration; + Bool_t HLT_L1UnpairedBunchBptxMinus; + Bool_t HLT_L1UnpairedBunchBptxPlus; + Bool_t HLT_L1NotBptxOR; + Bool_t HLT_L1MinimumBiasHF_OR; + Bool_t HLT_L1MinimumBiasHF0OR; + Bool_t HLT_L1_CDC_SingleMu_3_er1p2_TOP120_DPHI2p618_3p142; + Bool_t HLT_HcalNZS; + Bool_t HLT_HcalPhiSym; + Bool_t HLT_HcalIsolatedbunch; + Bool_t HLT_IsoTrackHB; + Bool_t HLT_IsoTrackHE; + Bool_t HLT_ZeroBias_FirstCollisionAfterAbortGap; + Bool_t HLT_ZeroBias_IsolatedBunches; + Bool_t HLT_ZeroBias_FirstCollisionInTrain; + Bool_t HLT_ZeroBias_LastCollisionInTrain; + Bool_t HLT_ZeroBias_FirstBXAfterTrain; + Bool_t HLT_Ele24_eta2p1_WPTight_Gsf_LooseChargedIsoPFTau30_eta2p1_CrossL1; + Bool_t HLT_Ele24_eta2p1_WPTight_Gsf_MediumChargedIsoPFTau30_eta2p1_CrossL1; + Bool_t HLT_Ele24_eta2p1_WPTight_Gsf_TightChargedIsoPFTau30_eta2p1_CrossL1; + Bool_t HLT_Ele24_eta2p1_WPTight_Gsf_LooseChargedIsoPFTau30_eta2p1_TightID_CrossL1; + Bool_t HLT_Ele24_eta2p1_WPTight_Gsf_MediumChargedIsoPFTau30_eta2p1_TightID_CrossL1; + Bool_t HLT_Ele24_eta2p1_WPTight_Gsf_TightChargedIsoPFTau30_eta2p1_TightID_CrossL1; + Bool_t HLT_DoubleMediumChargedIsoPFTau35_Trk1_eta2p1_Reg; + Bool_t HLT_DoubleMediumChargedIsoPFTau40_Trk1_eta2p1_Reg; + Bool_t HLT_DoubleTightChargedIsoPFTau35_Trk1_eta2p1_Reg; + Bool_t HLT_DoubleTightChargedIsoPFTau40_Trk1_eta2p1_Reg; + Bool_t HLT_DoubleMediumChargedIsoPFTau35_Trk1_TightID_eta2p1_Reg; + Bool_t HLT_DoubleMediumChargedIsoPFTau40_Trk1_TightID_eta2p1_Reg; + Bool_t HLT_DoubleTightChargedIsoPFTau35_Trk1_TightID_eta2p1_Reg; + Bool_t HLT_DoubleTightChargedIsoPFTau40_Trk1_TightID_eta2p1_Reg; + Bool_t HLT_IsoMu24_eta2p1_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr; + Bool_t HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET90; + Bool_t HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET100; + Bool_t HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET110; + Bool_t HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET120; + Bool_t HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET130; + Bool_t HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET140; + Bool_t HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr; + Bool_t HLT_MediumChargedIsoPFTau180HighPtRelaxedIso_Trk50_eta2p1_1pr; + Bool_t HLT_MediumChargedIsoPFTau180HighPtRelaxedIso_Trk50_eta2p1; + Bool_t HLT_MediumChargedIsoPFTau200HighPtRelaxedIso_Trk50_eta2p1; + Bool_t HLT_MediumChargedIsoPFTau220HighPtRelaxedIso_Trk50_eta2p1; + Bool_t HLT_IsoMu24_eta2p1_MediumChargedIsoPFTau35_Trk1_eta2p1_Reg_CrossL1; + Bool_t HLT_IsoMu24_eta2p1_MediumChargedIsoPFTau35_Trk1_TightID_eta2p1_Reg_CrossL1; + Bool_t HLT_IsoMu24_eta2p1_TightChargedIsoPFTau35_Trk1_eta2p1_Reg_CrossL1; + Bool_t HLT_IsoMu24_eta2p1_TightChargedIsoPFTau35_Trk1_TightID_eta2p1_Reg_CrossL1; + Bool_t HLT_Ele16_Ele12_Ele8_CaloIdL_TrackIdL; + Bool_t HLT_Rsq0p35; + Bool_t HLT_Rsq0p40; + Bool_t HLT_RsqMR300_Rsq0p09_MR200; + Bool_t HLT_RsqMR320_Rsq0p09_MR200; + Bool_t HLT_RsqMR300_Rsq0p09_MR200_4jet; + Bool_t HLT_RsqMR320_Rsq0p09_MR200_4jet; + Bool_t HLT_IsoMu27_LooseChargedIsoPFTau20_Trk1_eta2p1_SingleL1; + Bool_t HLT_IsoMu27_MediumChargedIsoPFTau20_Trk1_eta2p1_SingleL1; + Bool_t HLT_IsoMu27_TightChargedIsoPFTau20_Trk1_eta2p1_SingleL1; + Bool_t HLT_IsoMu27_MET90; + Bool_t HLT_IsoMu20_eta2p1_LooseChargedIsoPFTauHPS27_eta2p1_CrossL1; + Bool_t HLT_IsoMu24_eta2p1_MediumChargedIsoPFTauHPS35_Trk1_eta2p1_Reg_CrossL1; + Bool_t HLT_DoubleMediumChargedIsoPFTauHPS35_Trk1_eta2p1_Reg; + Bool_t HLT_Photon50_R9Id90_HE10_IsoM_EBOnly_PFJetsMJJ300DEta3_PFMET50; + Bool_t HLT_Photon75_R9Id90_HE10_IsoM_EBOnly_PFJetsMJJ300DEta3; + Bool_t HLT_Photon75_R9Id90_HE10_IsoM_EBOnly_PFJetsMJJ600DEta3; + Bool_t HLT_PFMET100_PFMHT100_IDTight_PFHT60; + Bool_t HLT_PFMETNoMu100_PFMHTNoMu100_IDTight_PFHT60; + Bool_t HLT_PFMETTypeOne100_PFMHT100_IDTight_PFHT60; + Bool_t HLT_Mu18_Mu9_SameSign; + Bool_t HLT_Mu18_Mu9_SameSign_DZ; + Bool_t HLT_Mu18_Mu9; + Bool_t HLT_Mu18_Mu9_DZ; + Bool_t HLT_Mu20_Mu10_SameSign; + Bool_t HLT_Mu20_Mu10_SameSign_DZ; + Bool_t HLT_Mu20_Mu10; + Bool_t HLT_Mu20_Mu10_DZ; + Bool_t HLT_Mu23_Mu12_SameSign; + Bool_t HLT_Mu23_Mu12_SameSign_DZ; + Bool_t HLT_Mu23_Mu12; + Bool_t HLT_Mu23_Mu12_DZ; + Bool_t HLT_DoubleMu2_Jpsi_DoubleTrk1_Phi1p05; + Bool_t HLT_DoubleMu2_Jpsi_DoubleTkMu0_Phi; + Bool_t HLT_DoubleMu3_DCA_PFMET50_PFMHT60; + Bool_t HLT_TripleMu_5_3_3_Mass3p8to60_DCA; + Bool_t HLT_QuadPFJet98_83_71_15_DoubleBTagCSV_p013_p08_VBF1; + Bool_t HLT_QuadPFJet103_88_75_15_DoubleBTagCSV_p013_p08_VBF1; + Bool_t HLT_QuadPFJet105_90_76_15_DoubleBTagCSV_p013_p08_VBF1; + Bool_t HLT_QuadPFJet111_90_80_15_DoubleBTagCSV_p013_p08_VBF1; + Bool_t HLT_QuadPFJet98_83_71_15_BTagCSV_p013_VBF2; + Bool_t HLT_QuadPFJet103_88_75_15_BTagCSV_p013_VBF2; + Bool_t HLT_QuadPFJet105_88_76_15_BTagCSV_p013_VBF2; + Bool_t HLT_QuadPFJet111_90_80_15_BTagCSV_p013_VBF2; + Bool_t HLT_QuadPFJet98_83_71_15; + Bool_t HLT_QuadPFJet103_88_75_15; + Bool_t HLT_QuadPFJet105_88_76_15; + Bool_t HLT_QuadPFJet111_90_80_15; + Bool_t HLT_AK8PFJet330_TrimMass30_PFAK8BTagCSV_p17; + Bool_t HLT_AK8PFJet330_TrimMass30_PFAK8BTagCSV_p1; + Bool_t HLT_AK8PFJet330_TrimMass30_PFAK8BoostedDoubleB_p02; + Bool_t HLT_Diphoton30_18_PVrealAND_R9Id_AND_IsoCaloId_AND_HE_R9Id_PixelVeto_Mass55; + Bool_t HLT_Diphoton30_18_PVrealAND_R9Id_AND_IsoCaloId_AND_HE_R9Id_NoPixelVeto_Mass55; + Bool_t HLTriggerFinalPath; + UInt_t nLepton; + Int_t Lepton_pdgId[5]; //[nLepton] + Int_t Lepton_electronIdx[5]; //[nLepton] + Int_t Lepton_muonIdx[5]; //[nLepton] + Float_t Lepton_pt[5]; //[nLepton] + Float_t Lepton_eta[5]; //[nLepton] + Float_t Lepton_phi[5]; //[nLepton] + UInt_t nVetoLepton; + Int_t VetoLepton_pdgId[8]; //[nVetoLepton] + Int_t VetoLepton_electronIdx[8]; //[nVetoLepton] + Int_t VetoLepton_muonIdx[8]; //[nVetoLepton] + Float_t VetoLepton_pt[8]; //[nVetoLepton] + Float_t VetoLepton_eta[8]; //[nVetoLepton] + Float_t VetoLepton_phi[8]; //[nVetoLepton] + UInt_t nCleanJet; + Int_t CleanJet_jetIdx[20]; //[nCleanJet] + Float_t CleanJet_pt[20]; //[nCleanJet] + Float_t CleanJet_eta[20]; //[nCleanJet] + Float_t CleanJet_phi[20]; //[nCleanJet] + Int_t Lepton_isLoose[5]; //[nLepton] + Int_t Lepton_isVeto[5]; //[nLepton] + Float_t dmZll_veto; + Int_t Lepton_isTightElectron_mvaFall17V2Iso_WP90_tthmva_70[5]; //[nLepton] + Int_t Lepton_isTightElectron_mvaFall17V2Iso_WP90_SS_tthmva_70[5]; //[nLepton] + Int_t Lepton_isTightElectron_mvaFall17V2Iso_WP90_SS[5]; //[nLepton] + Int_t Lepton_isTightElectron_mvaFall17V2Iso_WP90[5]; //[nLepton] + Int_t Lepton_isTightMuon_cut_Tight_HWWW_tthmva_80[5]; //[nLepton] + Int_t Lepton_isTightMuon_cut_Tight_HWWW[5]; //[nLepton] + UInt_t nCleanFatJet; + Int_t CleanFatJet_jetIdx[3]; //[nCleanFatJet] + Float_t CleanFatJet_pt[3]; //[nCleanFatJet] + Float_t CleanFatJet_eta[3]; //[nCleanFatJet] + Float_t CleanFatJet_phi[3]; //[nCleanFatJet] + Float_t CleanFatJet_mass[3]; //[nCleanFatJet] + Float_t CleanFatJet_tau21[3]; //[nCleanFatJet] + UInt_t nCleanJetNotFat; + Int_t CleanJetNotFat_jetIdx[20]; //[nCleanJetNotFat] + Float_t CleanJetNotFat_deltaR[20]; //[nCleanJetNotFat] + Float_t Lepton_rochesterSF[5]; //[nLepton] + Float_t mll; + Float_t dphill; + Float_t yll; + Float_t ptll; + Float_t pt1; + Float_t pt2; + Float_t mth; + Float_t mcoll; + Float_t mcollWW; + Float_t mTi; + Float_t mTe; + Float_t choiMass; + Float_t mR; + Float_t mT2; + Float_t channel; + Float_t drll; + Float_t dphilljet; + Float_t dphilljetjet; + Float_t dphilljetjet_cut; + Float_t dphillmet; + Float_t dphilmet; + Float_t dphilmet1; + Float_t dphilmet2; + Float_t mtw1; + Float_t mtw2; + Float_t mjj; + Float_t detajj; + Float_t njet; + Float_t mllWgSt; + Float_t drllWgSt; + Float_t mllThird; + Float_t mllOneThree; + Float_t mllTwoThree; + Float_t drllOneThree; + Float_t drllTwoThree; + Float_t dphijet1met; + Float_t dphijet2met; + Float_t dphijjmet; + Float_t dphijjmet_cut; + Float_t dphilep1jet1; + Float_t dphilep1jet2; + Float_t dphilep2jet1; + Float_t dphilep2jet2; + Float_t mindetajl; + Float_t detall; + Float_t dphijj; + Float_t maxdphilepjj; + Float_t dphilep1jj; + Float_t dphilep2jj; + Float_t ht; + Float_t vht_pt; + Float_t vht_phi; + Float_t projpfmet; + Float_t dphiltkmet; + Float_t projtkmet; + Float_t mpmet; + Float_t pTWW; + Float_t pTHjj; + Float_t recoil; + Float_t jetpt1_cut; + Float_t jetpt2_cut; + Float_t dphilljet_cut; + Float_t dphijet1met_cut; + Float_t dphijet2met_cut; + Float_t PfMetDivSumMet; + Float_t upara; + Float_t uperp; + Float_t m2ljj20; + Float_t m2ljj30; + Float_t ptTOT_cut; + Float_t mTOT_cut; + Float_t OLV1_cut; + Float_t OLV2_cut; + Float_t Ceta_cut; + Float_t mlljj20_whss; + Float_t mlljj30_whss; + Float_t WlepPt_whss; + Float_t WlepMt_whss; + Float_t WH3l_dphilmet[3]; + Float_t WH3l_drOSll[3]; + Float_t WH3l_ZVeto; + Bool_t WH3l_flagOSSF; + Float_t ZH3l_checkmZ; + Float_t ZH3l_njet; + Float_t ZH3l_pdgid_l; + Float_t WH3l_mOSll[3]; + Float_t WH3l_mtWWW; + Float_t ZH3l_mTlmet; + Float_t WH3l_ptOSll[3]; + Float_t ZH3l_mTlmetj; + Float_t ZH3l_pTlmetjj; + Float_t WH3l_ptlll; + Int_t WH3l_chlll; + Float_t ZH3l_Z4lveto; + Float_t ZH3l_dmjjmW; + Float_t ZH3l_dphilmetjj; + Float_t ZH3l_mTlmetjj; + Float_t WH3l_ptW; + Float_t ZH3l_pTlmetj; + Float_t ZH3l_pTZ; + Float_t WH3l_mtlmet[3]; + Float_t WH3l_dphilllmet; + Float_t ZH3l_dphilmetj; + Int_t WH3l_njet; + Float_t WH3l_ptWWW; + Float_t WH3l_mlll; + Float_t pfmetPhi_zh4l; + Float_t z0Mass_zh4l; + Float_t z0Pt_zh4l; + Float_t z1Mass_zh4l; + Float_t z1Pt_zh4l; + Float_t zaMass_zh4l; + Float_t zbMass_zh4l; + Float_t flagZ1SF_zh4l; + Float_t z0DeltaPhi_zh4l; + Float_t z1DeltaPhi_zh4l; + Float_t zaDeltaPhi_zh4l; + Float_t zbDeltaPhi_zh4l; + Float_t minDeltaPhi_zh4l; + Float_t z0DeltaR_zh4l; + Float_t z1DeltaR_zh4l; + Float_t zaDeltaR_zh4l; + Float_t zbDeltaR_zh4l; + Float_t lep1Mt_zh4l; + Float_t lep2Mt_zh4l; + Float_t lep3Mt_zh4l; + Float_t lep4Mt_zh4l; + Float_t minMt_zh4l; + Float_t z1Mt_zh4l; + Float_t mllll_zh4l; + Float_t chllll_zh4l; + Float_t z1dPhi_lep1MET_zh4l; + Float_t z1dPhi_lep2MET_zh4l; + Float_t z1mindPhi_lepMET_zh4l; + Int_t EMTFbug_veto; + Int_t run_period; + Int_t Trigger_sngEl; + Int_t Trigger_sngMu; + Int_t Trigger_dblEl; + Int_t Trigger_dblMu; + Int_t Trigger_ElMu; + Float_t LepCut3l__ele_mvaFall17V2Iso_WP90_tthmva_70__mu_cut_Tight_HWWW; + Float_t LepCut3l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW; + Float_t LepCut3l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW_tthmva_80; + Float_t METFilter_DATA; + Float_t LepCut4l__ele_mvaFall17V2Iso_WP90_SS__mu_cut_Tight_HWWW_tthmva_80; + Float_t LepCut2l__ele_mvaFall17V2Iso_WP90_SS_tthmva_70__mu_cut_Tight_HWWW; + Float_t LepCut4l__ele_mvaFall17V2Iso_WP90_tthmva_70__mu_cut_Tight_HWWW; + Float_t LepCut4l__ele_mvaFall17V2Iso_WP90_SS_tthmva_70__mu_cut_Tight_HWWW; + Float_t LepCut2l__ele_mvaFall17V2Iso_WP90_SS_tthmva_70__mu_cut_Tight_HWWW_tthmva_80; + Float_t LepCut3l__ele_mvaFall17V2Iso_WP90_SS__mu_cut_Tight_HWWW_tthmva_80; + Float_t LepCut3l__ele_mvaFall17V2Iso_WP90_tthmva_70__mu_cut_Tight_HWWW_tthmva_80; + Float_t LepCut4l__ele_mvaFall17V2Iso_WP90_SS__mu_cut_Tight_HWWW; + Float_t LepCut3l__ele_mvaFall17V2Iso_WP90_SS__mu_cut_Tight_HWWW; + Float_t LepCut4l__ele_mvaFall17V2Iso_WP90_tthmva_70__mu_cut_Tight_HWWW_tthmva_80; + Float_t LepCut2l__ele_mvaFall17V2Iso_WP90_tthmva_70__mu_cut_Tight_HWWW; + Float_t LepCut2l__ele_mvaFall17V2Iso_WP90_tthmva_70__mu_cut_Tight_HWWW_tthmva_80; + Float_t LepCut3l__ele_mvaFall17V2Iso_WP90_SS_tthmva_70__mu_cut_Tight_HWWW; + Float_t LepCut2l__ele_mvaFall17V2Iso_WP90_SS__mu_cut_Tight_HWWW_tthmva_80; + Float_t LepCut2l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW_tthmva_80; + Float_t LepCut2l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW; + Float_t LepCut4l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW; + Float_t LepCut4l__ele_mvaFall17V2Iso_WP90_SS_tthmva_70__mu_cut_Tight_HWWW_tthmva_80; + Float_t LepCut3l__ele_mvaFall17V2Iso_WP90_SS_tthmva_70__mu_cut_Tight_HWWW_tthmva_80; + Float_t LepCut2l__ele_mvaFall17V2Iso_WP90_SS__mu_cut_Tight_HWWW; + Float_t LepCut4l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW_tthmva_80; + Float_t Lepton_mvaTTH_UL[5]; //[nLepton] + Float_t hm; + Float_t me_vbf_hsm; + Float_t me_vbf_hm; + Float_t me_vbf_hp; + Float_t me_vbf_hl; + Float_t me_vbf_hlzg; + Float_t me_vbf_mixhm; + Float_t me_vbf_mixhp; + Float_t me_wh_hsm; + Float_t me_wh_hm; + Float_t me_wh_hp; + Float_t me_wh_hl; + Float_t me_wh_mixhm; + Float_t me_wh_mixhp; + Float_t me_zh_hsm; + Float_t me_zh_hm; + Float_t me_zh_hp; + Float_t me_zh_hl; + Float_t me_zh_hlzg; + Float_t me_zh_mixhm; + Float_t me_zh_mixhp; + Float_t me_qcd_hsm; + Float_t me_qcd_hm; + Float_t me_qcd_mixhm; + Float_t pjjSm_wh; + Float_t pjjTr_wh; + Float_t pjjSm_zh; + Float_t pjjTr_zh; + Float_t meAvg_wh; + Float_t meAvg_zh; + Float_t me_Wh_hsm; + Float_t me_Wh_hm; + Float_t me_Wh_hp; + Float_t me_Wh_hl; + Float_t me_Wh_mixhm; + Float_t me_Wh_mixhp; + Float_t me_Zh_hsm; + Float_t me_Zh_hm; + Float_t me_Zh_hp; + Float_t me_Zh_hl; + Float_t me_Zh_hlzg; + Float_t me_Zh_mixhm; + Float_t me_Zh_mixhp; + Float_t me_QCD_hsm; + Float_t pjjSm_Wh; + Float_t pjjTr_Wh; + Float_t pjjSm_Zh; + Float_t pjjTr_Zh; + + // List of branches + TBranch *b_run; //! + TBranch *b_luminosityBlock; //! + TBranch *b_event; //! + TBranch *b_nboostedTau; //! + TBranch *b_boostedTau_chargedIso; //! + TBranch *b_boostedTau_eta; //! + TBranch *b_boostedTau_leadTkDeltaEta; //! + TBranch *b_boostedTau_leadTkDeltaPhi; //! + TBranch *b_boostedTau_leadTkPtOverTauPt; //! + TBranch *b_boostedTau_mass; //! + TBranch *b_boostedTau_neutralIso; //! + TBranch *b_boostedTau_phi; //! + TBranch *b_boostedTau_photonsOutsideSignalCone; //! + TBranch *b_boostedTau_pt; //! + TBranch *b_boostedTau_puCorr; //! + TBranch *b_boostedTau_rawAntiEle2018; //! + TBranch *b_boostedTau_rawIso; //! + TBranch *b_boostedTau_rawIsodR03; //! + TBranch *b_boostedTau_rawMVAnewDM2017v2; //! + TBranch *b_boostedTau_rawMVAoldDM2017v2; //! + TBranch *b_boostedTau_rawMVAoldDMdR032017v2; //! + TBranch *b_boostedTau_charge; //! + TBranch *b_boostedTau_decayMode; //! + TBranch *b_boostedTau_jetIdx; //! + TBranch *b_boostedTau_rawAntiEleCat2018; //! + TBranch *b_boostedTau_idAntiEle2018; //! + TBranch *b_boostedTau_idAntiMu; //! + TBranch *b_boostedTau_idMVAnewDM2017v2; //! + TBranch *b_boostedTau_idMVAoldDM2017v2; //! + TBranch *b_boostedTau_idMVAoldDMdR032017v2; //! + TBranch *b_CaloMET_phi; //! + TBranch *b_CaloMET_pt; //! + TBranch *b_CaloMET_sumEt; //! + TBranch *b_ChsMET_phi; //! + TBranch *b_ChsMET_pt; //! + TBranch *b_ChsMET_sumEt; //! + TBranch *b_nCorrT1METJet; //! + TBranch *b_CorrT1METJet_area; //! + TBranch *b_CorrT1METJet_eta; //! + TBranch *b_CorrT1METJet_muonSubtrFactor; //! + TBranch *b_CorrT1METJet_phi; //! + TBranch *b_CorrT1METJet_rawPt; //! + TBranch *b_DeepMETResolutionTune_phi; //! + TBranch *b_DeepMETResolutionTune_pt; //! + TBranch *b_DeepMETResponseTune_phi; //! + TBranch *b_DeepMETResponseTune_pt; //! + TBranch *b_nElectron; //! + TBranch *b_Electron_dEscaleDown; //! + TBranch *b_Electron_dEscaleUp; //! + TBranch *b_Electron_dEsigmaDown; //! + TBranch *b_Electron_dEsigmaUp; //! + TBranch *b_Electron_deltaEtaSC; //! + TBranch *b_Electron_dr03EcalRecHitSumEt; //! + TBranch *b_Electron_dr03HcalDepth1TowerSumEt; //! + TBranch *b_Electron_dr03TkSumPt; //! + TBranch *b_Electron_dr03TkSumPtHEEP; //! + TBranch *b_Electron_dxy; //! + TBranch *b_Electron_dxyErr; //! + TBranch *b_Electron_dz; //! + TBranch *b_Electron_dzErr; //! + TBranch *b_Electron_eCorr; //! + TBranch *b_Electron_eInvMinusPInv; //! + TBranch *b_Electron_energyErr; //! + TBranch *b_Electron_eta; //! + TBranch *b_Electron_hoe; //! + TBranch *b_Electron_ip3d; //! + TBranch *b_Electron_jetPtRelv2; //! + TBranch *b_Electron_jetRelIso; //! + TBranch *b_Electron_mass; //! + TBranch *b_Electron_miniPFRelIso_all; //! + TBranch *b_Electron_miniPFRelIso_chg; //! + TBranch *b_Electron_mvaFall17V2Iso; //! + TBranch *b_Electron_mvaFall17V2noIso; //! + TBranch *b_Electron_pfRelIso03_all; //! + TBranch *b_Electron_pfRelIso03_chg; //! + TBranch *b_Electron_phi; //! + TBranch *b_Electron_pt; //! + TBranch *b_Electron_r9; //! + TBranch *b_Electron_scEtOverPt; //! + TBranch *b_Electron_sieie; //! + TBranch *b_Electron_sip3d; //! + TBranch *b_Electron_mvaTTH; //! + TBranch *b_Electron_charge; //! + TBranch *b_Electron_cutBased; //! + TBranch *b_Electron_jetIdx; //! + TBranch *b_Electron_pdgId; //! + TBranch *b_Electron_photonIdx; //! + TBranch *b_Electron_tightCharge; //! + TBranch *b_Electron_vidNestedWPBitmap; //! + TBranch *b_Electron_vidNestedWPBitmapHEEP; //! + TBranch *b_Electron_convVeto; //! + TBranch *b_Electron_cutBased_HEEP; //! + TBranch *b_Electron_isPFcand; //! + TBranch *b_Electron_jetNDauCharged; //! + TBranch *b_Electron_lostHits; //! + TBranch *b_Electron_mvaFall17V2Iso_WP80; //! + TBranch *b_Electron_mvaFall17V2Iso_WP90; //! + TBranch *b_Electron_mvaFall17V2Iso_WPL; //! + TBranch *b_Electron_mvaFall17V2noIso_WP80; //! + TBranch *b_Electron_mvaFall17V2noIso_WP90; //! + TBranch *b_Electron_mvaFall17V2noIso_WPL; //! + TBranch *b_Electron_seedGain; //! + TBranch *b_nFatJet; //! + TBranch *b_FatJet_area; //! + TBranch *b_FatJet_btagCSVV2; //! + TBranch *b_FatJet_btagDDBvLV2; //! + TBranch *b_FatJet_btagDDCvBV2; //! + TBranch *b_FatJet_btagDDCvLV2; //! + TBranch *b_FatJet_btagDeepB; //! + TBranch *b_FatJet_btagHbb; //! + TBranch *b_FatJet_deepTagMD_H4qvsQCD; //! + TBranch *b_FatJet_deepTagMD_HbbvsQCD; //! + TBranch *b_FatJet_deepTagMD_TvsQCD; //! + TBranch *b_FatJet_deepTagMD_WvsQCD; //! + TBranch *b_FatJet_deepTagMD_ZHbbvsQCD; //! + TBranch *b_FatJet_deepTagMD_ZHccvsQCD; //! + TBranch *b_FatJet_deepTagMD_ZbbvsQCD; //! + TBranch *b_FatJet_deepTagMD_ZvsQCD; //! + TBranch *b_FatJet_deepTagMD_bbvsLight; //! + TBranch *b_FatJet_deepTagMD_ccvsLight; //! + TBranch *b_FatJet_deepTag_H; //! + TBranch *b_FatJet_deepTag_QCD; //! + TBranch *b_FatJet_deepTag_QCDothers; //! + TBranch *b_FatJet_deepTag_TvsQCD; //! + TBranch *b_FatJet_deepTag_WvsQCD; //! + TBranch *b_FatJet_deepTag_ZvsQCD; //! + TBranch *b_FatJet_eta; //! + TBranch *b_FatJet_mass; //! + TBranch *b_FatJet_msoftdrop; //! + TBranch *b_FatJet_n2b1; //! + TBranch *b_FatJet_n3b1; //! + TBranch *b_FatJet_particleNetMD_QCD; //! + TBranch *b_FatJet_particleNetMD_Xbb; //! + TBranch *b_FatJet_particleNetMD_Xcc; //! + TBranch *b_FatJet_particleNetMD_Xqq; //! + TBranch *b_FatJet_particleNet_H4qvsQCD; //! + TBranch *b_FatJet_particleNet_HbbvsQCD; //! + TBranch *b_FatJet_particleNet_HccvsQCD; //! + TBranch *b_FatJet_particleNet_QCD; //! + TBranch *b_FatJet_particleNet_TvsQCD; //! + TBranch *b_FatJet_particleNet_WvsQCD; //! + TBranch *b_FatJet_particleNet_ZvsQCD; //! + TBranch *b_FatJet_particleNet_mass; //! + TBranch *b_FatJet_phi; //! + TBranch *b_FatJet_pt; //! + TBranch *b_FatJet_rawFactor; //! + TBranch *b_FatJet_tau1; //! + TBranch *b_FatJet_tau2; //! + TBranch *b_FatJet_tau3; //! + TBranch *b_FatJet_tau4; //! + TBranch *b_FatJet_lsf3; //! + TBranch *b_FatJet_jetId; //! + TBranch *b_FatJet_subJetIdx1; //! + TBranch *b_FatJet_subJetIdx2; //! + TBranch *b_FatJet_electronIdx3SJ; //! + TBranch *b_FatJet_muonIdx3SJ; //! + TBranch *b_FatJet_nConstituents; //! + TBranch *b_nFsrPhoton; //! + TBranch *b_FsrPhoton_dROverEt2; //! + TBranch *b_FsrPhoton_eta; //! + TBranch *b_FsrPhoton_phi; //! + TBranch *b_FsrPhoton_pt; //! + TBranch *b_FsrPhoton_relIso03; //! + TBranch *b_FsrPhoton_muonIdx; //! + TBranch *b_nIsoTrack; //! + TBranch *b_IsoTrack_dxy; //! + TBranch *b_IsoTrack_dz; //! + TBranch *b_IsoTrack_eta; //! + TBranch *b_IsoTrack_pfRelIso03_all; //! + TBranch *b_IsoTrack_pfRelIso03_chg; //! + TBranch *b_IsoTrack_phi; //! + TBranch *b_IsoTrack_pt; //! + TBranch *b_IsoTrack_miniPFRelIso_all; //! + TBranch *b_IsoTrack_miniPFRelIso_chg; //! + TBranch *b_IsoTrack_charge; //! + TBranch *b_IsoTrack_fromPV; //! + TBranch *b_IsoTrack_pdgId; //! + TBranch *b_IsoTrack_isHighPurityTrack; //! + TBranch *b_IsoTrack_isPFcand; //! + TBranch *b_IsoTrack_isFromLostTrack; //! + TBranch *b_nJet; //! + TBranch *b_Jet_area; //! + TBranch *b_Jet_btagCSVV2; //! + TBranch *b_Jet_btagDeepB; //! + TBranch *b_Jet_btagDeepCvB; //! + TBranch *b_Jet_btagDeepCvL; //! + TBranch *b_Jet_btagDeepFlavB; //! + TBranch *b_Jet_btagDeepFlavCvB; //! + TBranch *b_Jet_btagDeepFlavCvL; //! + TBranch *b_Jet_btagDeepFlavQG; //! + TBranch *b_Jet_chEmEF; //! + TBranch *b_Jet_chFPV0EF; //! + TBranch *b_Jet_chHEF; //! + TBranch *b_Jet_eta; //! + TBranch *b_Jet_hfsigmaEtaEta; //! + TBranch *b_Jet_hfsigmaPhiPhi; //! + TBranch *b_Jet_mass; //! + TBranch *b_Jet_muEF; //! + TBranch *b_Jet_muonSubtrFactor; //! + TBranch *b_Jet_neEmEF; //! + TBranch *b_Jet_neHEF; //! + TBranch *b_Jet_phi; //! + TBranch *b_Jet_pt; //! + TBranch *b_Jet_puIdDisc; //! + TBranch *b_Jet_qgl; //! + TBranch *b_Jet_rawFactor; //! + TBranch *b_Jet_bRegCorr; //! + TBranch *b_Jet_bRegRes; //! + TBranch *b_Jet_cRegCorr; //! + TBranch *b_Jet_cRegRes; //! + TBranch *b_Jet_electronIdx1; //! + TBranch *b_Jet_electronIdx2; //! + TBranch *b_Jet_hfadjacentEtaStripsSize; //! + TBranch *b_Jet_hfcentralEtaStripSize; //! + TBranch *b_Jet_jetId; //! + TBranch *b_Jet_muonIdx1; //! + TBranch *b_Jet_muonIdx2; //! + TBranch *b_Jet_nElectrons; //! + TBranch *b_Jet_nMuons; //! + TBranch *b_Jet_puId; //! + TBranch *b_Jet_nConstituents; //! + TBranch *b_L1PreFiringWeight_Dn; //! + TBranch *b_L1PreFiringWeight_ECAL_Dn; //! + TBranch *b_L1PreFiringWeight_ECAL_Nom; //! + TBranch *b_L1PreFiringWeight_ECAL_Up; //! + TBranch *b_L1PreFiringWeight_Muon_Nom; //! + TBranch *b_L1PreFiringWeight_Muon_StatDn; //! + TBranch *b_L1PreFiringWeight_Muon_StatUp; //! + TBranch *b_L1PreFiringWeight_Muon_SystDn; //! + TBranch *b_L1PreFiringWeight_Muon_SystUp; //! + TBranch *b_L1PreFiringWeight_Nom; //! + TBranch *b_L1PreFiringWeight_Up; //! + TBranch *b_nLowPtElectron; //! + TBranch *b_LowPtElectron_ID; //! + TBranch *b_LowPtElectron_convVtxRadius; //! + TBranch *b_LowPtElectron_deltaEtaSC; //! + TBranch *b_LowPtElectron_dxy; //! + TBranch *b_LowPtElectron_dxyErr; //! + TBranch *b_LowPtElectron_dz; //! + TBranch *b_LowPtElectron_dzErr; //! + TBranch *b_LowPtElectron_eInvMinusPInv; //! + TBranch *b_LowPtElectron_embeddedID; //! + TBranch *b_LowPtElectron_energyErr; //! + TBranch *b_LowPtElectron_eta; //! + TBranch *b_LowPtElectron_hoe; //! + TBranch *b_LowPtElectron_mass; //! + TBranch *b_LowPtElectron_miniPFRelIso_all; //! + TBranch *b_LowPtElectron_miniPFRelIso_chg; //! + TBranch *b_LowPtElectron_phi; //! + TBranch *b_LowPtElectron_pt; //! + TBranch *b_LowPtElectron_ptbiased; //! + TBranch *b_LowPtElectron_r9; //! + TBranch *b_LowPtElectron_scEtOverPt; //! + TBranch *b_LowPtElectron_sieie; //! + TBranch *b_LowPtElectron_unbiased; //! + TBranch *b_LowPtElectron_charge; //! + TBranch *b_LowPtElectron_convWP; //! + TBranch *b_LowPtElectron_pdgId; //! + TBranch *b_LowPtElectron_convVeto; //! + TBranch *b_LowPtElectron_lostHits; //! + TBranch *b_MET_MetUnclustEnUpDeltaX; //! + TBranch *b_MET_MetUnclustEnUpDeltaY; //! + TBranch *b_MET_covXX; //! + TBranch *b_MET_covXY; //! + TBranch *b_MET_covYY; //! + TBranch *b_MET_phi; //! + TBranch *b_MET_pt; //! + TBranch *b_MET_significance; //! + TBranch *b_MET_sumEt; //! + TBranch *b_MET_sumPtUnclustered; //! + TBranch *b_nProton_multiRP; //! + TBranch *b_Proton_multiRP_t; //! + TBranch *b_Proton_multiRP_thetaX; //! + TBranch *b_Proton_multiRP_thetaY; //! + TBranch *b_Proton_multiRP_time; //! + TBranch *b_Proton_multiRP_timeUnc; //! + TBranch *b_Proton_multiRP_xi; //! + TBranch *b_Proton_multiRP_arm; //! + TBranch *b_nMuon; //! + TBranch *b_Muon_dxy; //! + TBranch *b_Muon_dxyErr; //! + TBranch *b_Muon_dxybs; //! + TBranch *b_Muon_dz; //! + TBranch *b_Muon_dzErr; //! + TBranch *b_Muon_eta; //! + TBranch *b_Muon_ip3d; //! + TBranch *b_Muon_jetPtRelv2; //! + TBranch *b_Muon_jetRelIso; //! + TBranch *b_Muon_mass; //! + TBranch *b_Muon_miniPFRelIso_all; //! + TBranch *b_Muon_miniPFRelIso_chg; //! + TBranch *b_Muon_pfRelIso03_all; //! + TBranch *b_Muon_pfRelIso03_chg; //! + TBranch *b_Muon_pfRelIso04_all; //! + TBranch *b_Muon_phi; //! + TBranch *b_Muon_pt; //! + TBranch *b_Muon_ptErr; //! + TBranch *b_Muon_segmentComp; //! + TBranch *b_Muon_sip3d; //! + TBranch *b_Muon_softMva; //! + TBranch *b_Muon_tkRelIso; //! + TBranch *b_Muon_tunepRelPt; //! + TBranch *b_Muon_mvaLowPt; //! + TBranch *b_Muon_mvaTTH; //! + TBranch *b_Muon_charge; //! + TBranch *b_Muon_jetIdx; //! + TBranch *b_Muon_nStations; //! + TBranch *b_Muon_nTrackerLayers; //! + TBranch *b_Muon_pdgId; //! + TBranch *b_Muon_tightCharge; //! + TBranch *b_Muon_fsrPhotonIdx; //! + TBranch *b_Muon_highPtId; //! + TBranch *b_Muon_highPurity; //! + TBranch *b_Muon_inTimeMuon; //! + TBranch *b_Muon_isGlobal; //! + TBranch *b_Muon_isPFcand; //! + TBranch *b_Muon_isStandalone; //! + TBranch *b_Muon_isTracker; //! + TBranch *b_Muon_jetNDauCharged; //! + TBranch *b_Muon_looseId; //! + TBranch *b_Muon_mediumId; //! + TBranch *b_Muon_mediumPromptId; //! + TBranch *b_Muon_miniIsoId; //! + TBranch *b_Muon_multiIsoId; //! + TBranch *b_Muon_mvaId; //! + TBranch *b_Muon_mvaLowPtId; //! + TBranch *b_Muon_pfIsoId; //! + TBranch *b_Muon_puppiIsoId; //! + TBranch *b_Muon_softId; //! + TBranch *b_Muon_softMvaId; //! + TBranch *b_Muon_tightId; //! + TBranch *b_Muon_tkIsoId; //! + TBranch *b_Muon_triggerIdLoose; //! + TBranch *b_nPhoton; //! + TBranch *b_Photon_dEscaleDown; //! + TBranch *b_Photon_dEscaleUp; //! + TBranch *b_Photon_dEsigmaDown; //! + TBranch *b_Photon_dEsigmaUp; //! + TBranch *b_Photon_eCorr; //! + TBranch *b_Photon_energyErr; //! + TBranch *b_Photon_eta; //! + TBranch *b_Photon_hoe; //! + TBranch *b_Photon_mass; //! + TBranch *b_Photon_mvaID; //! + TBranch *b_Photon_mvaID_Fall17V1p1; //! + TBranch *b_Photon_pfRelIso03_all; //! + TBranch *b_Photon_pfRelIso03_chg; //! + TBranch *b_Photon_phi; //! + TBranch *b_Photon_pt; //! + TBranch *b_Photon_r9; //! + TBranch *b_Photon_sieie; //! + TBranch *b_Photon_charge; //! + TBranch *b_Photon_cutBased; //! + TBranch *b_Photon_cutBased_Fall17V1Bitmap; //! + TBranch *b_Photon_electronIdx; //! + TBranch *b_Photon_jetIdx; //! + TBranch *b_Photon_pdgId; //! + TBranch *b_Photon_vidNestedWPBitmap; //! + TBranch *b_Photon_electronVeto; //! + TBranch *b_Photon_isScEtaEB; //! + TBranch *b_Photon_isScEtaEE; //! + TBranch *b_Photon_mvaID_WP80; //! + TBranch *b_Photon_mvaID_WP90; //! + TBranch *b_Photon_pixelSeed; //! + TBranch *b_Photon_seedGain; //! + TBranch *b_nPPSLocalTrack; //! + TBranch *b_PPSLocalTrack_x; //! + TBranch *b_PPSLocalTrack_y; //! + TBranch *b_PPSLocalTrack_time; //! + TBranch *b_PPSLocalTrack_timeUnc; //! + TBranch *b_PPSLocalTrack_multiRPProtonIdx; //! + TBranch *b_PPSLocalTrack_singleRPProtonIdx; //! + TBranch *b_PPSLocalTrack_decRPId; //! + TBranch *b_PPSLocalTrack_rpType; //! + TBranch *b_PuppiMET_phi; //! + TBranch *b_PuppiMET_phiJERDown; //! + TBranch *b_PuppiMET_phiJERUp; //! + TBranch *b_PuppiMET_phiJESDown; //! + TBranch *b_PuppiMET_phiJESUp; //! + TBranch *b_PuppiMET_phiUnclusteredDown; //! + TBranch *b_PuppiMET_phiUnclusteredUp; //! + TBranch *b_PuppiMET_pt; //! + TBranch *b_PuppiMET_ptJERDown; //! + TBranch *b_PuppiMET_ptJERUp; //! + TBranch *b_PuppiMET_ptJESDown; //! + TBranch *b_PuppiMET_ptJESUp; //! + TBranch *b_PuppiMET_ptUnclusteredDown; //! + TBranch *b_PuppiMET_ptUnclusteredUp; //! + TBranch *b_PuppiMET_sumEt; //! + TBranch *b_RawMET_phi; //! + TBranch *b_RawMET_pt; //! + TBranch *b_RawMET_sumEt; //! + TBranch *b_RawPuppiMET_phi; //! + TBranch *b_RawPuppiMET_pt; //! + TBranch *b_RawPuppiMET_sumEt; //! + TBranch *b_fixedGridRhoFastjetAll; //! + TBranch *b_fixedGridRhoFastjetCentral; //! + TBranch *b_fixedGridRhoFastjetCentralCalo; //! + TBranch *b_fixedGridRhoFastjetCentralChargedPileUp; //! + TBranch *b_fixedGridRhoFastjetCentralNeutral; //! + TBranch *b_nSoftActivityJet; //! + TBranch *b_SoftActivityJet_eta; //! + TBranch *b_SoftActivityJet_phi; //! + TBranch *b_SoftActivityJet_pt; //! + TBranch *b_SoftActivityJetHT; //! + TBranch *b_SoftActivityJetHT10; //! + TBranch *b_SoftActivityJetHT2; //! + TBranch *b_SoftActivityJetHT5; //! + TBranch *b_SoftActivityJetNjets10; //! + TBranch *b_SoftActivityJetNjets2; //! + TBranch *b_SoftActivityJetNjets5; //! + TBranch *b_nProton_singleRP; //! + TBranch *b_Proton_singleRP_thetaY; //! + TBranch *b_Proton_singleRP_xi; //! + TBranch *b_Proton_singleRP_decRPId; //! + TBranch *b_nSubJet; //! + TBranch *b_SubJet_btagCSVV2; //! + TBranch *b_SubJet_btagDeepB; //! + TBranch *b_SubJet_eta; //! + TBranch *b_SubJet_mass; //! + TBranch *b_SubJet_n2b1; //! + TBranch *b_SubJet_n3b1; //! + TBranch *b_SubJet_phi; //! + TBranch *b_SubJet_pt; //! + TBranch *b_SubJet_rawFactor; //! + TBranch *b_SubJet_tau1; //! + TBranch *b_SubJet_tau2; //! + TBranch *b_SubJet_tau3; //! + TBranch *b_SubJet_tau4; //! + TBranch *b_nTau; //! + TBranch *b_Tau_chargedIso; //! + TBranch *b_Tau_dxy; //! + TBranch *b_Tau_dz; //! + TBranch *b_Tau_eta; //! + TBranch *b_Tau_leadTkDeltaEta; //! + TBranch *b_Tau_leadTkDeltaPhi; //! + TBranch *b_Tau_leadTkPtOverTauPt; //! + TBranch *b_Tau_mass; //! + TBranch *b_Tau_neutralIso; //! + TBranch *b_Tau_phi; //! + TBranch *b_Tau_photonsOutsideSignalCone; //! + TBranch *b_Tau_pt; //! + TBranch *b_Tau_puCorr; //! + TBranch *b_Tau_rawDeepTau2017v2p1VSe; //! + TBranch *b_Tau_rawDeepTau2017v2p1VSjet; //! + TBranch *b_Tau_rawDeepTau2017v2p1VSmu; //! + TBranch *b_Tau_rawIso; //! + TBranch *b_Tau_rawIsodR03; //! + TBranch *b_Tau_charge; //! + TBranch *b_Tau_decayMode; //! + TBranch *b_Tau_jetIdx; //! + TBranch *b_Tau_idAntiEleDeadECal; //! + TBranch *b_Tau_idAntiMu; //! + TBranch *b_Tau_idDecayModeOldDMs; //! + TBranch *b_Tau_idDeepTau2017v2p1VSe; //! + TBranch *b_Tau_idDeepTau2017v2p1VSjet; //! + TBranch *b_Tau_idDeepTau2017v2p1VSmu; //! + TBranch *b_TkMET_phi; //! + TBranch *b_TkMET_pt; //! + TBranch *b_TkMET_sumEt; //! + TBranch *b_nTrigObj; //! + TBranch *b_TrigObj_pt; //! + TBranch *b_TrigObj_eta; //! + TBranch *b_TrigObj_phi; //! + TBranch *b_TrigObj_l1pt; //! + TBranch *b_TrigObj_l1pt_2; //! + TBranch *b_TrigObj_l2pt; //! + TBranch *b_TrigObj_id; //! + TBranch *b_TrigObj_l1iso; //! + TBranch *b_TrigObj_l1charge; //! + TBranch *b_TrigObj_filterBits; //! + TBranch *b_nOtherPV; //! + TBranch *b_OtherPV_z; //! + TBranch *b_PV_ndof; //! + TBranch *b_PV_x; //! + TBranch *b_PV_y; //! + TBranch *b_PV_z; //! + TBranch *b_PV_chi2; //! + TBranch *b_PV_score; //! + TBranch *b_PV_npvs; //! + TBranch *b_PV_npvsGood; //! + TBranch *b_nSV; //! + TBranch *b_SV_dlen; //! + TBranch *b_SV_dlenSig; //! + TBranch *b_SV_dxy; //! + TBranch *b_SV_dxySig; //! + TBranch *b_SV_pAngle; //! + TBranch *b_SV_charge; //! + TBranch *b_Electron_cleanmask; //! + TBranch *b_Jet_cleanmask; //! + TBranch *b_Muon_cleanmask; //! + TBranch *b_Photon_cleanmask; //! + TBranch *b_Tau_cleanmask; //! + TBranch *b_SV_chi2; //! + TBranch *b_SV_eta; //! + TBranch *b_SV_mass; //! + TBranch *b_SV_ndof; //! + TBranch *b_SV_phi; //! + TBranch *b_SV_pt; //! + TBranch *b_SV_x; //! + TBranch *b_SV_y; //! + TBranch *b_SV_z; //! + TBranch *b_SV_ntracks; //! + TBranch *b_L1_AlwaysTrue; //! + TBranch *b_L1_BPTX_AND_Ref1_VME; //! + TBranch *b_L1_BPTX_AND_Ref3_VME; //! + TBranch *b_L1_BPTX_AND_Ref4_VME; //! + TBranch *b_L1_BPTX_BeamGas_B1_VME; //! + TBranch *b_L1_BPTX_BeamGas_B2_VME; //! + TBranch *b_L1_BPTX_BeamGas_Ref1_VME; //! + TBranch *b_L1_BPTX_BeamGas_Ref2_VME; //! + TBranch *b_L1_BPTX_NotOR_VME; //! + TBranch *b_L1_BPTX_OR_Ref3_VME; //! + TBranch *b_L1_BPTX_OR_Ref4_VME; //! + TBranch *b_L1_BPTX_RefAND_VME; //! + TBranch *b_L1_BptxMinus; //! + TBranch *b_L1_BptxOR; //! + TBranch *b_L1_BptxPlus; //! + TBranch *b_L1_BptxXOR; //! + TBranch *b_L1_CDC_SingleMu_3_er1p2_TOP120_DPHI2p618_3p142; //! + TBranch *b_L1_DoubleEG6_HTT240er; //! + TBranch *b_L1_DoubleEG6_HTT250er; //! + TBranch *b_L1_DoubleEG6_HTT255er; //! + TBranch *b_L1_DoubleEG6_HTT270er; //! + TBranch *b_L1_DoubleEG6_HTT300er; //! + TBranch *b_L1_DoubleEG8er2p6_HTT255er; //! + TBranch *b_L1_DoubleEG8er2p6_HTT270er; //! + TBranch *b_L1_DoubleEG8er2p6_HTT300er; //! + TBranch *b_L1_DoubleEG_22_10; //! + TBranch *b_L1_DoubleEG_25_12; //! + TBranch *b_L1_DoubleEG_25_14; //! + TBranch *b_L1_DoubleEG_LooseIso23_10; //! + TBranch *b_L1_DoubleEG_LooseIso24_10; //! + TBranch *b_L1_DoubleIsoTau32er2p1; //! + TBranch *b_L1_DoubleIsoTau34er2p1; //! + TBranch *b_L1_DoubleIsoTau36er2p1; //! + TBranch *b_L1_DoubleJet100er2p3_dEta_Max1p6; //! + TBranch *b_L1_DoubleJet100er2p7; //! + TBranch *b_L1_DoubleJet112er2p3_dEta_Max1p6; //! + TBranch *b_L1_DoubleJet112er2p7; //! + TBranch *b_L1_DoubleJet120er2p7; //! + TBranch *b_L1_DoubleJet150er2p7; //! + TBranch *b_L1_DoubleJet30_Mass_Min300_dEta_Max1p5; //! + TBranch *b_L1_DoubleJet30_Mass_Min320_dEta_Max1p5; //! + TBranch *b_L1_DoubleJet30_Mass_Min340_dEta_Max1p5; //! + TBranch *b_L1_DoubleJet30_Mass_Min360_dEta_Max1p5; //! + TBranch *b_L1_DoubleJet30_Mass_Min380_dEta_Max1p5; //! + TBranch *b_L1_DoubleJet30_Mass_Min400_dEta_Max1p5; //! + TBranch *b_L1_DoubleJet35_rmovlp_IsoTau45_Mass_Min450; //! + TBranch *b_L1_DoubleJet40er2p7; //! + TBranch *b_L1_DoubleJet50er2p7; //! + TBranch *b_L1_DoubleJet60er2p7; //! + TBranch *b_L1_DoubleJet60er2p7_ETM100; //! + TBranch *b_L1_DoubleJet60er2p7_ETM60; //! + TBranch *b_L1_DoubleJet60er2p7_ETM70; //! + TBranch *b_L1_DoubleJet60er2p7_ETM80; //! + TBranch *b_L1_DoubleJet60er2p7_ETM90; //! + TBranch *b_L1_DoubleJet80er2p7; //! + TBranch *b_L1_DoubleJet_100_30_DoubleJet30_Mass_Min620; //! + TBranch *b_L1_DoubleJet_100_35_DoubleJet35_Mass_Min620; //! + TBranch *b_L1_DoubleJet_110_35_DoubleJet35_Mass_Min620; //! + TBranch *b_L1_DoubleJet_110_40_DoubleJet40_Mass_Min620; //! + TBranch *b_L1_DoubleJet_115_35_DoubleJet35_Mass_Min620; //! + TBranch *b_L1_DoubleJet_115_40_DoubleJet40_Mass_Min620; //! + TBranch *b_L1_DoubleJet_90_30_DoubleJet30_Mass_Min620; //! + TBranch *b_L1_DoubleLooseIsoEG22er2p1; //! + TBranch *b_L1_DoubleLooseIsoEG24er2p1; //! + TBranch *b_L1_DoubleMu0; //! + TBranch *b_L1_DoubleMu0_SQ; //! + TBranch *b_L1_DoubleMu0_SQ_OS; //! + TBranch *b_L1_DoubleMu0er1p4_SQ_OS_dR_Max1p4; //! + TBranch *b_L1_DoubleMu0er1p4_dEta_Max1p8_OS; //! + TBranch *b_L1_DoubleMu0er1p5_SQ_OS; //! + TBranch *b_L1_DoubleMu0er1p5_SQ_OS_dR_Max1p4; //! + TBranch *b_L1_DoubleMu0er1p5_SQ_dR_Max1p4; //! + TBranch *b_L1_DoubleMu0er2_SQ_dR_Max1p4; //! + TBranch *b_L1_DoubleMu18er2p1; //! + TBranch *b_L1_DoubleMu22er2p1; //! + TBranch *b_L1_DoubleMu3_OS_DoubleEG7p5Upsilon; //! + TBranch *b_L1_DoubleMu3_SQ_ETMHF40_Jet60_OR_DoubleJet30; //! + TBranch *b_L1_DoubleMu3_SQ_ETMHF50_Jet60_OR_DoubleJet30; //! + TBranch *b_L1_DoubleMu3_SQ_ETMHF60_Jet60_OR_DoubleJet30; //! + TBranch *b_L1_DoubleMu3_SQ_ETMHF70_Jet60_OR_DoubleJet30; //! + TBranch *b_L1_DoubleMu3_SQ_ETMHF80_Jet60_OR_DoubleJet30; //! + TBranch *b_L1_DoubleMu3_SQ_HTT100er; //! + TBranch *b_L1_DoubleMu3_SQ_HTT200er; //! + TBranch *b_L1_DoubleMu3_SQ_HTT220er; //! + TBranch *b_L1_DoubleMu3_SQ_HTT240er; //! + TBranch *b_L1_DoubleMu4_OS_EG12; //! + TBranch *b_L1_DoubleMu4_SQ_OS; //! + TBranch *b_L1_DoubleMu4_SQ_OS_dR_Max1p2; //! + TBranch *b_L1_DoubleMu4p5_SQ; //! + TBranch *b_L1_DoubleMu4p5_SQ_OS; //! + TBranch *b_L1_DoubleMu4p5_SQ_OS_dR_Max1p2; //! + TBranch *b_L1_DoubleMu4p5er2p0_SQ_OS; //! + TBranch *b_L1_DoubleMu4p5er2p0_SQ_OS_Mass7to18; //! + TBranch *b_L1_DoubleMu5Upsilon_OS_DoubleEG3; //! + TBranch *b_L1_DoubleMu5_OS_EG12; //! + TBranch *b_L1_DoubleMu5_SQ_OS; //! + TBranch *b_L1_DoubleMu5_SQ_OS_Mass7to18; //! + TBranch *b_L1_DoubleMu6_SQ_OS; //! + TBranch *b_L1_DoubleMu7_EG7; //! + TBranch *b_L1_DoubleMu7_SQ_EG7; //! + TBranch *b_L1_DoubleMu8_SQ; //! + TBranch *b_L1_DoubleMu_10_0_dEta_Max1p8; //! + TBranch *b_L1_DoubleMu_12_5; //! + TBranch *b_L1_DoubleMu_15_5_SQ; //! + TBranch *b_L1_DoubleMu_15_7; //! + TBranch *b_L1_DoubleMu_20_2_SQ_Mass_Max20; //! + TBranch *b_L1_DoubleTau70er2p1; //! + TBranch *b_L1_EG25er2p1_HTT125er; //! + TBranch *b_L1_EG27er2p1_HTT200er; //! + TBranch *b_L1_EG40er2p1_Tau20er2p1_dR_Min0p3; //! + TBranch *b_L1_ETM100; //! + TBranch *b_L1_ETM100_Jet60_dPhi_Min0p4; //! + TBranch *b_L1_ETM105; //! + TBranch *b_L1_ETM110; //! + TBranch *b_L1_ETM110_Jet60_dPhi_Min0p4; //! + TBranch *b_L1_ETM115; //! + TBranch *b_L1_ETM120; //! + TBranch *b_L1_ETM150; //! + TBranch *b_L1_ETM30; //! + TBranch *b_L1_ETM40; //! + TBranch *b_L1_ETM50; //! + TBranch *b_L1_ETM60; //! + TBranch *b_L1_ETM70; //! + TBranch *b_L1_ETM75; //! + TBranch *b_L1_ETM75_Jet60_dPhi_Min0p4; //! + TBranch *b_L1_ETM80; //! + TBranch *b_L1_ETM80_Jet60_dPhi_Min0p4; //! + TBranch *b_L1_ETM85; //! + TBranch *b_L1_ETM90; //! + TBranch *b_L1_ETM90_Jet60_dPhi_Min0p4; //! + TBranch *b_L1_ETM95; //! + TBranch *b_L1_ETMHF100; //! + TBranch *b_L1_ETMHF100_HTT60er; //! + TBranch *b_L1_ETMHF100_Jet60_OR_DiJet30woTT28; //! + TBranch *b_L1_ETMHF100_Jet60_OR_DoubleJet30; //! + TBranch *b_L1_ETMHF100_Jet90_OR_DoubleJet45_OR_TripleJet30; //! + TBranch *b_L1_ETMHF110; //! + TBranch *b_L1_ETMHF110_HTT60er; //! + TBranch *b_L1_ETMHF110_Jet60_OR_DiJet30woTT28; //! + TBranch *b_L1_ETMHF110_Jet90_OR_DoubleJet45_OR_TripleJet30; //! + TBranch *b_L1_ETMHF120; //! + TBranch *b_L1_ETMHF120_HTT60er; //! + TBranch *b_L1_ETMHF120_Jet60_OR_DiJet30woTT28; //! + TBranch *b_L1_ETMHF150; //! + TBranch *b_L1_ETMHF70; //! + TBranch *b_L1_ETMHF70_Jet90_OR_DoubleJet45_OR_TripleJet30; //! + TBranch *b_L1_ETMHF80; //! + TBranch *b_L1_ETMHF80_HTT60er; //! + TBranch *b_L1_ETMHF80_Jet90_OR_DoubleJet45_OR_TripleJet30; //! + TBranch *b_L1_ETMHF90; //! + TBranch *b_L1_ETMHF90_HTT60er; //! + TBranch *b_L1_ETMHF90_Jet90_OR_DoubleJet45_OR_TripleJet30; //! + TBranch *b_L1_ETT100_BptxAND; //! + TBranch *b_L1_ETT110_BptxAND; //! + TBranch *b_L1_ETT40_BptxAND; //! + TBranch *b_L1_ETT50_BptxAND; //! + TBranch *b_L1_ETT60_BptxAND; //! + TBranch *b_L1_ETT70_BptxAND; //! + TBranch *b_L1_ETT75_BptxAND; //! + TBranch *b_L1_ETT80_BptxAND; //! + TBranch *b_L1_ETT85_BptxAND; //! + TBranch *b_L1_ETT90_BptxAND; //! + TBranch *b_L1_ETT95_BptxAND; //! + TBranch *b_L1_FirstBunchAfterTrain; //! + TBranch *b_L1_FirstBunchInTrain; //! + TBranch *b_L1_FirstCollisionInOrbit; //! + TBranch *b_L1_FirstCollisionInTrain; //! + TBranch *b_L1_HCAL_LaserMon_Trig; //! + TBranch *b_L1_HCAL_LaserMon_Veto; //! + TBranch *b_L1_HTT120er; //! + TBranch *b_L1_HTT160er; //! + TBranch *b_L1_HTT200er; //! + TBranch *b_L1_HTT220er; //! + TBranch *b_L1_HTT240er; //! + TBranch *b_L1_HTT255er; //! + TBranch *b_L1_HTT270er; //! + TBranch *b_L1_HTT280er; //! + TBranch *b_L1_HTT280er_QuadJet_70_55_40_35_er2p5; //! + TBranch *b_L1_HTT300er; //! + TBranch *b_L1_HTT300er_QuadJet_70_55_40_35_er2p5; //! + TBranch *b_L1_HTT320er; //! + TBranch *b_L1_HTT320er_QuadJet_70_55_40_40_er2p4; //! + TBranch *b_L1_HTT320er_QuadJet_70_55_40_40_er2p5; //! + TBranch *b_L1_HTT320er_QuadJet_70_55_45_45_er2p5; //! + TBranch *b_L1_HTT340er; //! + TBranch *b_L1_HTT340er_QuadJet_70_55_40_40_er2p5; //! + TBranch *b_L1_HTT340er_QuadJet_70_55_45_45_er2p5; //! + TBranch *b_L1_HTT380er; //! + TBranch *b_L1_HTT400er; //! + TBranch *b_L1_HTT450er; //! + TBranch *b_L1_HTT500er; //! + TBranch *b_L1_IsoEG33_Mt40; //! + TBranch *b_L1_IsoEG33_Mt44; //! + TBranch *b_L1_IsoEG33_Mt48; //! + TBranch *b_L1_IsoTau40er_ETMHF100; //! + TBranch *b_L1_IsoTau40er_ETMHF110; //! + TBranch *b_L1_IsoTau40er_ETMHF120; //! + TBranch *b_L1_IsoTau40er_ETMHF90; //! + TBranch *b_L1_IsolatedBunch; //! + TBranch *b_L1_LastCollisionInTrain; //! + TBranch *b_L1_LooseIsoEG22er2p1_IsoTau26er2p1_dR_Min0p3; //! + TBranch *b_L1_LooseIsoEG24er2p1_HTT100er; //! + TBranch *b_L1_LooseIsoEG24er2p1_IsoTau27er2p1_dR_Min0p3; //! + TBranch *b_L1_LooseIsoEG24er2p1_Jet26er2p7_dR_Min0p3; //! + TBranch *b_L1_LooseIsoEG24er2p1_TripleJet_26er2p7_26_26er2p7; //! + TBranch *b_L1_LooseIsoEG26er2p1_HTT100er; //! + TBranch *b_L1_LooseIsoEG26er2p1_Jet34er2p7_dR_Min0p3; //! + TBranch *b_L1_LooseIsoEG28er2p1_HTT100er; //! + TBranch *b_L1_LooseIsoEG28er2p1_Jet34er2p7_dR_Min0p3; //! + TBranch *b_L1_LooseIsoEG30er2p1_Jet34er2p7_dR_Min0p3; //! + TBranch *b_L1_MU20_EG15; //! + TBranch *b_L1_MinimumBiasHF0_AND_BptxAND; //! + TBranch *b_L1_MinimumBiasHF0_OR_BptxAND; //! + TBranch *b_L1_Mu10er2p3_Jet32er2p3_dR_Max0p4_DoubleJet32er2p3_dEta_Max1p6; //! + TBranch *b_L1_Mu12_EG10; //! + TBranch *b_L1_Mu12er2p3_Jet40er2p3_dR_Max0p4_DoubleJet40er2p3_dEta_Max1p6; //! + TBranch *b_L1_Mu18er2p1_Tau24er2p1; //! + TBranch *b_L1_Mu20_EG10; //! + TBranch *b_L1_Mu20_EG17; //! + TBranch *b_L1_Mu20_LooseIsoEG6; //! + TBranch *b_L1_Mu22er2p1_IsoTau32er2p1; //! + TBranch *b_L1_Mu22er2p1_IsoTau34er2p1; //! + TBranch *b_L1_Mu22er2p1_IsoTau36er2p1; //! + TBranch *b_L1_Mu22er2p1_IsoTau40er2p1; //! + TBranch *b_L1_Mu22er2p1_Tau70er2p1; //! + TBranch *b_L1_Mu23_EG10; //! + TBranch *b_L1_Mu23_LooseIsoEG10; //! + TBranch *b_L1_Mu3_Jet120er2p7_dEta_Max0p4_dPhi_Max0p4; //! + TBranch *b_L1_Mu3_Jet16er2p7_dEta_Max0p4_dPhi_Max0p4; //! + TBranch *b_L1_Mu3_Jet30er2p5; //! + TBranch *b_L1_Mu3_Jet60er2p7_dEta_Max0p4_dPhi_Max0p4; //! + TBranch *b_L1_Mu5_EG15; //! + TBranch *b_L1_Mu5_EG20; //! + TBranch *b_L1_Mu5_EG23; //! + TBranch *b_L1_Mu5_LooseIsoEG18; //! + TBranch *b_L1_Mu5_LooseIsoEG20; //! + TBranch *b_L1_Mu6_DoubleEG10; //! + TBranch *b_L1_Mu6_DoubleEG17; //! + TBranch *b_L1_Mu6_HTT240er; //! + TBranch *b_L1_Mu6_HTT250er; //! + TBranch *b_L1_Mu7_EG23; //! + TBranch *b_L1_Mu7_LooseIsoEG20; //! + TBranch *b_L1_Mu7_LooseIsoEG23; //! + TBranch *b_L1_NotBptxOR; //! + TBranch *b_L1_QuadJet36er2p7_IsoTau52er2p1; //! + TBranch *b_L1_QuadJet40er2p7; //! + TBranch *b_L1_QuadJet50er2p7; //! + TBranch *b_L1_QuadJet60er2p7; //! + TBranch *b_L1_QuadMu0; //! + TBranch *b_L1_SingleEG10; //! + TBranch *b_L1_SingleEG15; //! + TBranch *b_L1_SingleEG26; //! + TBranch *b_L1_SingleEG34; //! + TBranch *b_L1_SingleEG34er2p1; //! + TBranch *b_L1_SingleEG34er2p5; //! + TBranch *b_L1_SingleEG36; //! + TBranch *b_L1_SingleEG36er2p1; //! + TBranch *b_L1_SingleEG36er2p5; //! + TBranch *b_L1_SingleEG38; //! + TBranch *b_L1_SingleEG38er2p1; //! + TBranch *b_L1_SingleEG38er2p5; //! + TBranch *b_L1_SingleEG40; //! + TBranch *b_L1_SingleEG40er2p5; //! + TBranch *b_L1_SingleEG42; //! + TBranch *b_L1_SingleEG42er2p5; //! + TBranch *b_L1_SingleEG45; //! + TBranch *b_L1_SingleEG5; //! + TBranch *b_L1_SingleEG50; //! + TBranch *b_L1_SingleIsoEG24er2p1; //! + TBranch *b_L1_SingleIsoEG26; //! + TBranch *b_L1_SingleIsoEG26er2p1; //! + TBranch *b_L1_SingleIsoEG26er2p5; //! + TBranch *b_L1_SingleIsoEG28; //! + TBranch *b_L1_SingleIsoEG28er2p1; //! + TBranch *b_L1_SingleIsoEG28er2p5; //! + TBranch *b_L1_SingleIsoEG30; //! + TBranch *b_L1_SingleIsoEG30er2p1; //! + TBranch *b_L1_SingleIsoEG30er2p5; //! + TBranch *b_L1_SingleIsoEG32; //! + TBranch *b_L1_SingleIsoEG32er2p1; //! + TBranch *b_L1_SingleIsoEG32er2p5; //! + TBranch *b_L1_SingleIsoEG34; //! + TBranch *b_L1_SingleIsoEG34er2p5; //! + TBranch *b_L1_SingleJet10erHE; //! + TBranch *b_L1_SingleJet120; //! + TBranch *b_L1_SingleJet120_FWD; //! + TBranch *b_L1_SingleJet12_BptxAND; //! + TBranch *b_L1_SingleJet12erHE; //! + TBranch *b_L1_SingleJet140; //! + TBranch *b_L1_SingleJet150; //! + TBranch *b_L1_SingleJet16; //! + TBranch *b_L1_SingleJet160; //! + TBranch *b_L1_SingleJet170; //! + TBranch *b_L1_SingleJet180; //! + TBranch *b_L1_SingleJet20; //! + TBranch *b_L1_SingleJet200; //! + TBranch *b_L1_SingleJet20er2p7_NotBptxOR; //! + TBranch *b_L1_SingleJet20er2p7_NotBptxOR_3BX; //! + TBranch *b_L1_SingleJet35; //! + TBranch *b_L1_SingleJet35_FWD; //! + TBranch *b_L1_SingleJet35_HFm; //! + TBranch *b_L1_SingleJet35_HFp; //! + TBranch *b_L1_SingleJet43er2p7_NotBptxOR_3BX; //! + TBranch *b_L1_SingleJet46er2p7_NotBptxOR_3BX; //! + TBranch *b_L1_SingleJet60; //! + TBranch *b_L1_SingleJet60_FWD; //! + TBranch *b_L1_SingleJet60_HFm; //! + TBranch *b_L1_SingleJet60_HFp; //! + TBranch *b_L1_SingleJet8erHE; //! + TBranch *b_L1_SingleJet90; //! + TBranch *b_L1_SingleJet90_FWD; //! + TBranch *b_L1_SingleMu0_BMTF; //! + TBranch *b_L1_SingleMu0_EMTF; //! + TBranch *b_L1_SingleMu0_OMTF; //! + TBranch *b_L1_SingleMu10_LowQ; //! + TBranch *b_L1_SingleMu12_LowQ_BMTF; //! + TBranch *b_L1_SingleMu12_LowQ_EMTF; //! + TBranch *b_L1_SingleMu12_LowQ_OMTF; //! + TBranch *b_L1_SingleMu18; //! + TBranch *b_L1_SingleMu20; //! + TBranch *b_L1_SingleMu22; //! + TBranch *b_L1_SingleMu22_BMTF; //! + TBranch *b_L1_SingleMu22_EMTF; //! + TBranch *b_L1_SingleMu22_OMTF; //! + TBranch *b_L1_SingleMu25; //! + TBranch *b_L1_SingleMu3; //! + TBranch *b_L1_SingleMu5; //! + TBranch *b_L1_SingleMu7; //! + TBranch *b_L1_SingleMuCosmics; //! + TBranch *b_L1_SingleMuCosmics_BMTF; //! + TBranch *b_L1_SingleMuCosmics_EMTF; //! + TBranch *b_L1_SingleMuCosmics_OMTF; //! + TBranch *b_L1_SingleMuOpen; //! + TBranch *b_L1_SingleMuOpen_NotBptxOR; //! + TBranch *b_L1_SingleMuOpen_er1p1_NotBptxOR_3BX; //! + TBranch *b_L1_SingleMuOpen_er1p4_NotBptxOR_3BX; //! + TBranch *b_L1_SingleTau120er2p1; //! + TBranch *b_L1_SingleTau130er2p1; //! + TBranch *b_L1_TOTEM_1; //! + TBranch *b_L1_TOTEM_2; //! + TBranch *b_L1_TOTEM_3; //! + TBranch *b_L1_TOTEM_4; //! + TBranch *b_L1_TripleEG_18_17_8; //! + TBranch *b_L1_TripleEG_LooseIso20_10_5; //! + TBranch *b_L1_TripleJet_100_85_72_VBF; //! + TBranch *b_L1_TripleJet_105_85_76_VBF; //! + TBranch *b_L1_TripleJet_98_83_71_VBF; //! + TBranch *b_L1_TripleMu0; //! + TBranch *b_L1_TripleMu0_OQ; //! + TBranch *b_L1_TripleMu3; //! + TBranch *b_L1_TripleMu3_SQ; //! + TBranch *b_L1_TripleMu_4_4_4; //! + TBranch *b_L1_TripleMu_5OQ_3p5OQ_2p5OQ_DoubleMu_5_2p5_OQ_OS_Mass_5to17; //! + TBranch *b_L1_TripleMu_5OQ_3p5OQ_2p5OQ_DoubleMu_5_2p5_OQ_OS_Mass_8to14; //! + TBranch *b_L1_TripleMu_5SQ_3SQ_0OQ; //! + TBranch *b_L1_TripleMu_5SQ_3SQ_0OQ_DoubleMu_5_3_SQ_OS_Mass_Max9; //! + TBranch *b_L1_TripleMu_5SQ_3SQ_0_DoubleMu_5_3_SQ_OS_Mass_Max9; //! + TBranch *b_L1_TripleMu_5_0_0; //! + TBranch *b_L1_TripleMu_5_3_3; //! + TBranch *b_L1_TripleMu_5_3p5_2p5; //! + TBranch *b_L1_TripleMu_5_3p5_2p5_DoubleMu_5_2p5_OS_Mass_5to17; //! + TBranch *b_L1_TripleMu_5_4_2p5_DoubleMu_5_2p5_OS_Mass_5to17; //! + TBranch *b_L1_TripleMu_5_5_3; //! + TBranch *b_L1_UnpairedBunchBptxMinus; //! + TBranch *b_L1_UnpairedBunchBptxPlus; //! + TBranch *b_L1_ZeroBias; //! + TBranch *b_L1_ZeroBias_copy; //! + TBranch *b_L1_UnprefireableEvent; //! + TBranch *b_Flag_HBHENoiseFilter; //! + TBranch *b_Flag_HBHENoiseIsoFilter; //! + TBranch *b_Flag_CSCTightHaloFilter; //! + TBranch *b_Flag_CSCTightHaloTrkMuUnvetoFilter; //! + TBranch *b_Flag_CSCTightHalo2015Filter; //! + TBranch *b_Flag_globalTightHalo2016Filter; //! + TBranch *b_Flag_globalSuperTightHalo2016Filter; //! + TBranch *b_Flag_HcalStripHaloFilter; //! + TBranch *b_Flag_hcalLaserEventFilter; //! + TBranch *b_Flag_EcalDeadCellTriggerPrimitiveFilter; //! + TBranch *b_Flag_EcalDeadCellBoundaryEnergyFilter; //! + TBranch *b_Flag_ecalBadCalibFilter; //! + TBranch *b_Flag_goodVertices; //! + TBranch *b_Flag_eeBadScFilter; //! + TBranch *b_Flag_ecalLaserCorrFilter; //! + TBranch *b_Flag_trkPOGFilters; //! + TBranch *b_Flag_chargedHadronTrackResolutionFilter; //! + TBranch *b_Flag_muonBadTrackFilter; //! + TBranch *b_Flag_BadChargedCandidateFilter; //! + TBranch *b_Flag_BadPFMuonFilter; //! + TBranch *b_Flag_BadPFMuonDzFilter; //! + TBranch *b_Flag_hfNoisyHitsFilter; //! + TBranch *b_Flag_BadChargedCandidateSummer16Filter; //! + TBranch *b_Flag_BadPFMuonSummer16Filter; //! + TBranch *b_Flag_trkPOG_manystripclus53X; //! + TBranch *b_Flag_trkPOG_toomanystripclus53X; //! + TBranch *b_Flag_trkPOG_logErrorTooManyClusters; //! + TBranch *b_Flag_METFilters; //! + TBranch *b_L1Reco_step; //! + TBranch *b_Flag_HBHENoiseFilter_pRECO; //! + TBranch *b_Flag_HBHENoiseIsoFilter_pRECO; //! + TBranch *b_Flag_CSCTightHaloFilter_pRECO; //! + TBranch *b_Flag_CSCTightHaloTrkMuUnvetoFilter_pRECO; //! + TBranch *b_Flag_CSCTightHalo2015Filter_pRECO; //! + TBranch *b_Flag_globalTightHalo2016Filter_pRECO; //! + TBranch *b_Flag_globalSuperTightHalo2016Filter_pRECO; //! + TBranch *b_Flag_HcalStripHaloFilter_pRECO; //! + TBranch *b_Flag_hcalLaserEventFilter_pRECO; //! + TBranch *b_Flag_EcalDeadCellTriggerPrimitiveFilter_pRECO; //! + TBranch *b_Flag_EcalDeadCellBoundaryEnergyFilter_pRECO; //! + TBranch *b_Flag_ecalBadCalibFilter_pRECO; //! + TBranch *b_Flag_goodVertices_pRECO; //! + TBranch *b_Flag_eeBadScFilter_pRECO; //! + TBranch *b_Flag_ecalLaserCorrFilter_pRECO; //! + TBranch *b_Flag_trkPOGFilters_pRECO; //! + TBranch *b_Flag_chargedHadronTrackResolutionFilter_pRECO; //! + TBranch *b_Flag_muonBadTrackFilter_pRECO; //! + TBranch *b_Flag_BadChargedCandidateFilter_pRECO; //! + TBranch *b_Flag_BadPFMuonFilter_pRECO; //! + TBranch *b_Flag_BadChargedCandidateSummer16Filter_pRECO; //! + TBranch *b_Flag_BadPFMuonSummer16Filter_pRECO; //! + TBranch *b_Flag_trkPOG_manystripclus53X_pRECO; //! + TBranch *b_Flag_trkPOG_toomanystripclus53X_pRECO; //! + TBranch *b_Flag_trkPOG_logErrorTooManyClusters_pRECO; //! + TBranch *b_Flag_METFilters_pRECO; //! + TBranch *b_HLTriggerFirstPath; //! + TBranch *b_HLT_AK8PFJet360_TrimMass30; //! + TBranch *b_HLT_AK8PFJet380_TrimMass30; //! + TBranch *b_HLT_AK8PFJet400_TrimMass30; //! + TBranch *b_HLT_AK8PFJet420_TrimMass30; //! + TBranch *b_HLT_AK8PFHT750_TrimMass50; //! + TBranch *b_HLT_AK8PFHT800_TrimMass50; //! + TBranch *b_HLT_AK8PFHT850_TrimMass50; //! + TBranch *b_HLT_AK8PFHT900_TrimMass50; //! + TBranch *b_HLT_CaloJet500_NoJetID; //! + TBranch *b_HLT_CaloJet550_NoJetID; //! + TBranch *b_HLT_DoubleMu5_Upsilon_DoubleEle3_CaloIdL_TrackIdL; //! + TBranch *b_HLT_DoubleMu3_DoubleEle7p5_CaloIdL_TrackIdL_Upsilon; //! + TBranch *b_HLT_Trimuon5_3p5_2_Upsilon_Muon; //! + TBranch *b_HLT_TrimuonOpen_5_3p5_2_Upsilon_Muon; //! + TBranch *b_HLT_DoubleEle25_CaloIdL_MW; //! + TBranch *b_HLT_DoubleEle27_CaloIdL_MW; //! + TBranch *b_HLT_DoubleEle33_CaloIdL_MW; //! + TBranch *b_HLT_DoubleEle24_eta2p1_WPTight_Gsf; //! + TBranch *b_HLT_DoubleEle8_CaloIdM_TrackIdM_Mass8_DZ_PFHT350; //! + TBranch *b_HLT_DoubleEle8_CaloIdM_TrackIdM_Mass8_PFHT350; //! + TBranch *b_HLT_Ele27_Ele37_CaloIdL_MW; //! + TBranch *b_HLT_Mu27_Ele37_CaloIdL_MW; //! + TBranch *b_HLT_Mu37_Ele27_CaloIdL_MW; //! + TBranch *b_HLT_Mu37_TkMu27; //! + TBranch *b_HLT_DoubleMu4_3_Bs; //! + TBranch *b_HLT_DoubleMu4_3_Jpsi; //! + TBranch *b_HLT_DoubleMu4_JpsiTrk_Displaced; //! + TBranch *b_HLT_DoubleMu4_LowMassNonResonantTrk_Displaced; //! + TBranch *b_HLT_DoubleMu3_Trk_Tau3mu; //! + TBranch *b_HLT_DoubleMu3_TkMu_DsTau3Mu; //! + TBranch *b_HLT_DoubleMu4_PsiPrimeTrk_Displaced; //! + TBranch *b_HLT_DoubleMu4_Mass8_DZ_PFHT350; //! + TBranch *b_HLT_DoubleMu8_Mass8_PFHT350; //! + TBranch *b_HLT_Mu3_PFJet40; //! + TBranch *b_HLT_Mu7p5_L2Mu2_Jpsi; //! + TBranch *b_HLT_Mu7p5_L2Mu2_Upsilon; //! + TBranch *b_HLT_Mu7p5_Track2_Jpsi; //! + TBranch *b_HLT_Mu7p5_Track3p5_Jpsi; //! + TBranch *b_HLT_Mu7p5_Track7_Jpsi; //! + TBranch *b_HLT_Mu7p5_Track2_Upsilon; //! + TBranch *b_HLT_Mu7p5_Track3p5_Upsilon; //! + TBranch *b_HLT_Mu7p5_Track7_Upsilon; //! + TBranch *b_HLT_DoublePhoton33_CaloIdL; //! + TBranch *b_HLT_DoublePhoton70; //! + TBranch *b_HLT_DoublePhoton85; //! + TBranch *b_HLT_Ele20_WPTight_Gsf; //! + TBranch *b_HLT_Ele15_WPLoose_Gsf; //! + TBranch *b_HLT_Ele17_WPLoose_Gsf; //! + TBranch *b_HLT_Ele20_WPLoose_Gsf; //! + TBranch *b_HLT_Ele20_eta2p1_WPLoose_Gsf; //! + TBranch *b_HLT_DiEle27_WPTightCaloOnly_L1DoubleEG; //! + TBranch *b_HLT_Ele27_WPTight_Gsf; //! + TBranch *b_HLT_Ele32_WPTight_Gsf; //! + TBranch *b_HLT_Ele35_WPTight_Gsf; //! + TBranch *b_HLT_Ele35_WPTight_Gsf_L1EGMT; //! + TBranch *b_HLT_Ele38_WPTight_Gsf; //! + TBranch *b_HLT_Ele40_WPTight_Gsf; //! + TBranch *b_HLT_Ele32_WPTight_Gsf_L1DoubleEG; //! + TBranch *b_HLT_HT450_Beamspot; //! + TBranch *b_HLT_HT300_Beamspot; //! + TBranch *b_HLT_ZeroBias_Beamspot; //! + TBranch *b_HLT_IsoMu20_eta2p1_LooseChargedIsoPFTau27_eta2p1_CrossL1; //! + TBranch *b_HLT_IsoMu20_eta2p1_MediumChargedIsoPFTau27_eta2p1_CrossL1; //! + TBranch *b_HLT_IsoMu20_eta2p1_TightChargedIsoPFTau27_eta2p1_CrossL1; //! + TBranch *b_HLT_IsoMu20_eta2p1_LooseChargedIsoPFTau27_eta2p1_TightID_CrossL1; //! + TBranch *b_HLT_IsoMu20_eta2p1_MediumChargedIsoPFTau27_eta2p1_TightID_CrossL1; //! + TBranch *b_HLT_IsoMu20_eta2p1_TightChargedIsoPFTau27_eta2p1_TightID_CrossL1; //! + TBranch *b_HLT_IsoMu20; //! + TBranch *b_HLT_IsoMu24; //! + TBranch *b_HLT_IsoMu24_eta2p1; //! + TBranch *b_HLT_IsoMu27; //! + TBranch *b_HLT_IsoMu30; //! + TBranch *b_HLT_UncorrectedJetE30_NoBPTX; //! + TBranch *b_HLT_UncorrectedJetE30_NoBPTX3BX; //! + TBranch *b_HLT_UncorrectedJetE60_NoBPTX3BX; //! + TBranch *b_HLT_UncorrectedJetE70_NoBPTX3BX; //! + TBranch *b_HLT_L1SingleMu18; //! + TBranch *b_HLT_L1SingleMu25; //! + TBranch *b_HLT_L2Mu10; //! + TBranch *b_HLT_L2Mu10_NoVertex_NoBPTX3BX; //! + TBranch *b_HLT_L2Mu10_NoVertex_NoBPTX; //! + TBranch *b_HLT_L2Mu45_NoVertex_3Sta_NoBPTX3BX; //! + TBranch *b_HLT_L2Mu40_NoVertex_3Sta_NoBPTX3BX; //! + TBranch *b_HLT_L2Mu50; //! + TBranch *b_HLT_L2Mu23NoVtx_2Cha; //! + TBranch *b_HLT_L2Mu23NoVtx_2Cha_CosmicSeed; //! + TBranch *b_HLT_DoubleL2Mu30NoVtx_2Cha_CosmicSeed_Eta2p4; //! + TBranch *b_HLT_DoubleL2Mu30NoVtx_2Cha_Eta2p4; //! + TBranch *b_HLT_DoubleL2Mu50; //! + TBranch *b_HLT_DoubleL2Mu23NoVtx_2Cha_CosmicSeed; //! + TBranch *b_HLT_DoubleL2Mu25NoVtx_2Cha_CosmicSeed; //! + TBranch *b_HLT_DoubleL2Mu25NoVtx_2Cha_CosmicSeed_Eta2p4; //! + TBranch *b_HLT_DoubleL2Mu23NoVtx_2Cha; //! + TBranch *b_HLT_DoubleL2Mu25NoVtx_2Cha; //! + TBranch *b_HLT_DoubleL2Mu25NoVtx_2Cha_Eta2p4; //! + TBranch *b_HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL; //! + TBranch *b_HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL; //! + TBranch *b_HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ; //! + TBranch *b_HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ; //! + TBranch *b_HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8; //! + TBranch *b_HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_Mass8; //! + TBranch *b_HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass3p8; //! + TBranch *b_HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_Mass3p8; //! + TBranch *b_HLT_Mu25_TkMu0_Onia; //! + TBranch *b_HLT_Mu30_TkMu0_Onia; //! + TBranch *b_HLT_Mu20_TkMu0_Phi; //! + TBranch *b_HLT_Mu25_TkMu0_Phi; //! + TBranch *b_HLT_Mu12; //! + TBranch *b_HLT_Mu15; //! + TBranch *b_HLT_Mu20; //! + TBranch *b_HLT_Mu27; //! + TBranch *b_HLT_Mu50; //! + TBranch *b_HLT_Mu55; //! + TBranch *b_HLT_OldMu100; //! + TBranch *b_HLT_TkMu100; //! + TBranch *b_HLT_DiPFJet15_NoCaloMatched; //! + TBranch *b_HLT_DiPFJet25_NoCaloMatched; //! + TBranch *b_HLT_DiPFJet15_FBEta3_NoCaloMatched; //! + TBranch *b_HLT_DiPFJet25_FBEta3_NoCaloMatched; //! + TBranch *b_HLT_DiPFJetAve40; //! + TBranch *b_HLT_DiPFJetAve60; //! + TBranch *b_HLT_DiPFJetAve80; //! + TBranch *b_HLT_DiPFJetAve140; //! + TBranch *b_HLT_DiPFJetAve200; //! + TBranch *b_HLT_DiPFJetAve260; //! + TBranch *b_HLT_DiPFJetAve320; //! + TBranch *b_HLT_DiPFJetAve400; //! + TBranch *b_HLT_DiPFJetAve500; //! + TBranch *b_HLT_DiPFJetAve15_HFJEC; //! + TBranch *b_HLT_DiPFJetAve25_HFJEC; //! + TBranch *b_HLT_DiPFJetAve35_HFJEC; //! + TBranch *b_HLT_DiPFJetAve60_HFJEC; //! + TBranch *b_HLT_DiPFJetAve80_HFJEC; //! + TBranch *b_HLT_DiPFJetAve100_HFJEC; //! + TBranch *b_HLT_DiPFJetAve160_HFJEC; //! + TBranch *b_HLT_DiPFJetAve220_HFJEC; //! + TBranch *b_HLT_DiPFJetAve300_HFJEC; //! + TBranch *b_HLT_AK8PFJet15; //! + TBranch *b_HLT_AK8PFJet25; //! + TBranch *b_HLT_AK8PFJet40; //! + TBranch *b_HLT_AK8PFJet60; //! + TBranch *b_HLT_AK8PFJet80; //! + TBranch *b_HLT_AK8PFJet140; //! + TBranch *b_HLT_AK8PFJet200; //! + TBranch *b_HLT_AK8PFJet260; //! + TBranch *b_HLT_AK8PFJet320; //! + TBranch *b_HLT_AK8PFJet400; //! + TBranch *b_HLT_AK8PFJet450; //! + TBranch *b_HLT_AK8PFJet500; //! + TBranch *b_HLT_AK8PFJet550; //! + TBranch *b_HLT_PFJet15; //! + TBranch *b_HLT_PFJet25; //! + TBranch *b_HLT_PFJet40; //! + TBranch *b_HLT_PFJet60; //! + TBranch *b_HLT_PFJet80; //! + TBranch *b_HLT_PFJet140; //! + TBranch *b_HLT_PFJet200; //! + TBranch *b_HLT_PFJet260; //! + TBranch *b_HLT_PFJet320; //! + TBranch *b_HLT_PFJet400; //! + TBranch *b_HLT_PFJet450; //! + TBranch *b_HLT_PFJet500; //! + TBranch *b_HLT_PFJet550; //! + TBranch *b_HLT_PFJetFwd15; //! + TBranch *b_HLT_PFJetFwd25; //! + TBranch *b_HLT_PFJetFwd40; //! + TBranch *b_HLT_PFJetFwd60; //! + TBranch *b_HLT_PFJetFwd80; //! + TBranch *b_HLT_PFJetFwd140; //! + TBranch *b_HLT_PFJetFwd200; //! + TBranch *b_HLT_PFJetFwd260; //! + TBranch *b_HLT_PFJetFwd320; //! + TBranch *b_HLT_PFJetFwd400; //! + TBranch *b_HLT_PFJetFwd450; //! + TBranch *b_HLT_PFJetFwd500; //! + TBranch *b_HLT_AK8PFJetFwd15; //! + TBranch *b_HLT_AK8PFJetFwd25; //! + TBranch *b_HLT_AK8PFJetFwd40; //! + TBranch *b_HLT_AK8PFJetFwd60; //! + TBranch *b_HLT_AK8PFJetFwd80; //! + TBranch *b_HLT_AK8PFJetFwd140; //! + TBranch *b_HLT_AK8PFJetFwd200; //! + TBranch *b_HLT_AK8PFJetFwd260; //! + TBranch *b_HLT_AK8PFJetFwd320; //! + TBranch *b_HLT_AK8PFJetFwd400; //! + TBranch *b_HLT_AK8PFJetFwd450; //! + TBranch *b_HLT_AK8PFJetFwd500; //! + TBranch *b_HLT_PFHT180; //! + TBranch *b_HLT_PFHT250; //! + TBranch *b_HLT_PFHT370; //! + TBranch *b_HLT_PFHT430; //! + TBranch *b_HLT_PFHT510; //! + TBranch *b_HLT_PFHT590; //! + TBranch *b_HLT_PFHT680; //! + TBranch *b_HLT_PFHT780; //! + TBranch *b_HLT_PFHT890; //! + TBranch *b_HLT_PFHT1050; //! + TBranch *b_HLT_PFHT500_PFMET100_PFMHT100_IDTight; //! + TBranch *b_HLT_PFHT500_PFMET110_PFMHT110_IDTight; //! + TBranch *b_HLT_PFHT700_PFMET85_PFMHT85_IDTight; //! + TBranch *b_HLT_PFHT700_PFMET95_PFMHT95_IDTight; //! + TBranch *b_HLT_PFHT800_PFMET75_PFMHT75_IDTight; //! + TBranch *b_HLT_PFHT800_PFMET85_PFMHT85_IDTight; //! + TBranch *b_HLT_PFMET110_PFMHT110_IDTight; //! + TBranch *b_HLT_PFMET120_PFMHT120_IDTight; //! + TBranch *b_HLT_PFMET130_PFMHT130_IDTight; //! + TBranch *b_HLT_PFMET140_PFMHT140_IDTight; //! + TBranch *b_HLT_PFMET100_PFMHT100_IDTight_CaloBTagCSV_3p1; //! + TBranch *b_HLT_PFMET110_PFMHT110_IDTight_CaloBTagCSV_3p1; //! + TBranch *b_HLT_PFMET120_PFMHT120_IDTight_CaloBTagCSV_3p1; //! + TBranch *b_HLT_PFMET130_PFMHT130_IDTight_CaloBTagCSV_3p1; //! + TBranch *b_HLT_PFMET140_PFMHT140_IDTight_CaloBTagCSV_3p1; //! + TBranch *b_HLT_PFMET120_PFMHT120_IDTight_PFHT60; //! + TBranch *b_HLT_PFMETNoMu120_PFMHTNoMu120_IDTight_PFHT60; //! + TBranch *b_HLT_PFMETTypeOne120_PFMHT120_IDTight_PFHT60; //! + TBranch *b_HLT_PFMETTypeOne110_PFMHT110_IDTight; //! + TBranch *b_HLT_PFMETTypeOne120_PFMHT120_IDTight; //! + TBranch *b_HLT_PFMETTypeOne130_PFMHT130_IDTight; //! + TBranch *b_HLT_PFMETTypeOne140_PFMHT140_IDTight; //! + TBranch *b_HLT_PFMETNoMu110_PFMHTNoMu110_IDTight; //! + TBranch *b_HLT_PFMETNoMu120_PFMHTNoMu120_IDTight; //! + TBranch *b_HLT_PFMETNoMu130_PFMHTNoMu130_IDTight; //! + TBranch *b_HLT_PFMETNoMu140_PFMHTNoMu140_IDTight; //! + TBranch *b_HLT_MonoCentralPFJet80_PFMETNoMu110_PFMHTNoMu110_IDTight; //! + TBranch *b_HLT_MonoCentralPFJet80_PFMETNoMu120_PFMHTNoMu120_IDTight; //! + TBranch *b_HLT_MonoCentralPFJet80_PFMETNoMu130_PFMHTNoMu130_IDTight; //! + TBranch *b_HLT_MonoCentralPFJet80_PFMETNoMu140_PFMHTNoMu140_IDTight; //! + TBranch *b_HLT_L1ETMHadSeeds; //! + TBranch *b_HLT_CaloMHT90; //! + TBranch *b_HLT_CaloMET80_NotCleaned; //! + TBranch *b_HLT_CaloMET90_NotCleaned; //! + TBranch *b_HLT_CaloMET100_NotCleaned; //! + TBranch *b_HLT_CaloMET110_NotCleaned; //! + TBranch *b_HLT_CaloMET250_NotCleaned; //! + TBranch *b_HLT_CaloMET70_HBHECleaned; //! + TBranch *b_HLT_CaloMET80_HBHECleaned; //! + TBranch *b_HLT_CaloMET90_HBHECleaned; //! + TBranch *b_HLT_CaloMET100_HBHECleaned; //! + TBranch *b_HLT_CaloMET250_HBHECleaned; //! + TBranch *b_HLT_CaloMET300_HBHECleaned; //! + TBranch *b_HLT_CaloMET350_HBHECleaned; //! + TBranch *b_HLT_PFMET200_NotCleaned; //! + TBranch *b_HLT_PFMET200_HBHECleaned; //! + TBranch *b_HLT_PFMET250_HBHECleaned; //! + TBranch *b_HLT_PFMET300_HBHECleaned; //! + TBranch *b_HLT_PFMET200_HBHE_BeamHaloCleaned; //! + TBranch *b_HLT_PFMETTypeOne200_HBHE_BeamHaloCleaned; //! + TBranch *b_HLT_MET105_IsoTrk50; //! + TBranch *b_HLT_MET120_IsoTrk50; //! + TBranch *b_HLT_SingleJet30_Mu12_SinglePFJet40; //! + TBranch *b_HLT_Mu12_DoublePFJets40_CaloBTagCSV_p79; //! + TBranch *b_HLT_Mu12_DoublePFJets100_CaloBTagCSV_p79; //! + TBranch *b_HLT_Mu12_DoublePFJets200_CaloBTagCSV_p79; //! + TBranch *b_HLT_Mu12_DoublePFJets350_CaloBTagCSV_p79; //! + TBranch *b_HLT_Mu12_DoublePFJets40MaxDeta1p6_DoubleCaloBTagCSV_p79; //! + TBranch *b_HLT_Mu12_DoublePFJets54MaxDeta1p6_DoubleCaloBTagCSV_p79; //! + TBranch *b_HLT_Mu12_DoublePFJets62MaxDeta1p6_DoubleCaloBTagCSV_p79; //! + TBranch *b_HLT_DoublePFJets40_CaloBTagCSV_p79; //! + TBranch *b_HLT_DoublePFJets100_CaloBTagCSV_p79; //! + TBranch *b_HLT_DoublePFJets200_CaloBTagCSV_p79; //! + TBranch *b_HLT_DoublePFJets350_CaloBTagCSV_p79; //! + TBranch *b_HLT_DoublePFJets116MaxDeta1p6_DoubleCaloBTagCSV_p79; //! + TBranch *b_HLT_DoublePFJets128MaxDeta1p6_DoubleCaloBTagCSV_p79; //! + TBranch *b_HLT_Photon300_NoHE; //! + TBranch *b_HLT_Mu8_TrkIsoVVL; //! + TBranch *b_HLT_Mu8_DiEle12_CaloIdL_TrackIdL_DZ; //! + TBranch *b_HLT_Mu8_DiEle12_CaloIdL_TrackIdL; //! + TBranch *b_HLT_Mu8_Ele8_CaloIdM_TrackIdM_Mass8_PFHT350_DZ; //! + TBranch *b_HLT_Mu8_Ele8_CaloIdM_TrackIdM_Mass8_PFHT350; //! + TBranch *b_HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ; //! + TBranch *b_HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL; //! + TBranch *b_HLT_Mu17_TrkIsoVVL; //! + TBranch *b_HLT_Mu19_TrkIsoVVL; //! + TBranch *b_HLT_BTagMu_AK4DiJet20_Mu5; //! + TBranch *b_HLT_BTagMu_AK4DiJet40_Mu5; //! + TBranch *b_HLT_BTagMu_AK4DiJet70_Mu5; //! + TBranch *b_HLT_BTagMu_AK4DiJet110_Mu5; //! + TBranch *b_HLT_BTagMu_AK4DiJet170_Mu5; //! + TBranch *b_HLT_BTagMu_AK4Jet300_Mu5; //! + TBranch *b_HLT_BTagMu_AK8DiJet170_Mu5; //! + TBranch *b_HLT_BTagMu_AK8Jet300_Mu5; //! + TBranch *b_HLT_Ele15_Ele8_CaloIdL_TrackIdL_IsoVL; //! + TBranch *b_HLT_Ele23_Ele12_CaloIdL_TrackIdL_IsoVL_DZ; //! + TBranch *b_HLT_Ele23_Ele12_CaloIdL_TrackIdL_IsoVL; //! + TBranch *b_HLT_Mu23_TrkIsoVVL_Ele12_CaloIdL_TrackIdL_IsoVL_DZ; //! + TBranch *b_HLT_Mu23_TrkIsoVVL_Ele12_CaloIdL_TrackIdL_IsoVL; //! + TBranch *b_HLT_Mu12_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL; //! + TBranch *b_HLT_Mu12_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ; //! + TBranch *b_HLT_Mu12_DoublePhoton20; //! + TBranch *b_HLT_TriplePhoton_20_20_20_CaloIdLV2; //! + TBranch *b_HLT_TriplePhoton_20_20_20_CaloIdLV2_R9IdVL; //! + TBranch *b_HLT_TriplePhoton_30_30_10_CaloIdLV2; //! + TBranch *b_HLT_TriplePhoton_30_30_10_CaloIdLV2_R9IdVL; //! + TBranch *b_HLT_TriplePhoton_35_35_5_CaloIdLV2_R9IdVL; //! + TBranch *b_HLT_Photon20; //! + TBranch *b_HLT_Photon33; //! + TBranch *b_HLT_Photon50; //! + TBranch *b_HLT_Photon75; //! + TBranch *b_HLT_Photon90; //! + TBranch *b_HLT_Photon120; //! + TBranch *b_HLT_Photon150; //! + TBranch *b_HLT_Photon175; //! + TBranch *b_HLT_Photon200; //! + TBranch *b_HLT_Photon50_R9Id90_HE10_IsoM; //! + TBranch *b_HLT_Photon75_R9Id90_HE10_IsoM; //! + TBranch *b_HLT_Photon75_R9Id90_HE10_IsoM_EBOnly_CaloMJJ300_PFJetsMJJ400DEta3; //! + TBranch *b_HLT_Photon75_R9Id90_HE10_IsoM_EBOnly_CaloMJJ400_PFJetsMJJ600DEta3; //! + TBranch *b_HLT_Photon90_R9Id90_HE10_IsoM; //! + TBranch *b_HLT_Photon120_R9Id90_HE10_IsoM; //! + TBranch *b_HLT_Photon165_R9Id90_HE10_IsoM; //! + TBranch *b_HLT_Diphoton30_22_R9Id_OR_IsoCaloId_AND_HE_R9Id_Mass90; //! + TBranch *b_HLT_Diphoton30_22_R9Id_OR_IsoCaloId_AND_HE_R9Id_Mass95; //! + TBranch *b_HLT_Diphoton30PV_18PV_R9Id_AND_IsoCaloId_AND_HE_R9Id_PixelVeto_Mass55; //! + TBranch *b_HLT_Diphoton30PV_18PV_R9Id_AND_IsoCaloId_AND_HE_R9Id_NoPixelVeto_Mass55; //! + TBranch *b_HLT_Diphoton30EB_18EB_R9Id_OR_IsoCaloId_AND_HE_R9Id_NoPixelVeto_Mass55; //! + TBranch *b_HLT_Diphoton30EB_18EB_R9Id_OR_IsoCaloId_AND_HE_R9Id_PixelVeto_Mass55; //! + TBranch *b_HLT_Dimuon0_Jpsi_L1_NoOS; //! + TBranch *b_HLT_Dimuon0_Jpsi_NoVertexing_NoOS; //! + TBranch *b_HLT_Dimuon0_Jpsi; //! + TBranch *b_HLT_Dimuon0_Jpsi_NoVertexing; //! + TBranch *b_HLT_Dimuon0_Jpsi_L1_4R_0er1p5R; //! + TBranch *b_HLT_Dimuon0_Jpsi_NoVertexing_L1_4R_0er1p5R; //! + TBranch *b_HLT_Dimuon0_Jpsi3p5_Muon2; //! + TBranch *b_HLT_Dimuon0_Upsilon_L1_4p5; //! + TBranch *b_HLT_Dimuon0_Upsilon_L1_5; //! + TBranch *b_HLT_Dimuon0_Upsilon_L1_4p5NoOS; //! + TBranch *b_HLT_Dimuon0_Upsilon_L1_4p5er2p0; //! + TBranch *b_HLT_Dimuon0_Upsilon_L1_4p5er2p0M; //! + TBranch *b_HLT_Dimuon0_Upsilon_NoVertexing; //! + TBranch *b_HLT_Dimuon0_Upsilon_L1_5M; //! + TBranch *b_HLT_Dimuon0_LowMass_L1_0er1p5R; //! + TBranch *b_HLT_Dimuon0_LowMass_L1_0er1p5; //! + TBranch *b_HLT_Dimuon0_LowMass; //! + TBranch *b_HLT_Dimuon0_LowMass_L1_4; //! + TBranch *b_HLT_Dimuon0_LowMass_L1_4R; //! + TBranch *b_HLT_Dimuon0_LowMass_L1_TM530; //! + TBranch *b_HLT_Dimuon0_Upsilon_Muon_L1_TM0; //! + TBranch *b_HLT_Dimuon0_Upsilon_Muon_NoL1Mass; //! + TBranch *b_HLT_TripleMu_5_3_3_Mass3p8to60_DZ; //! + TBranch *b_HLT_TripleMu_10_5_5_DZ; //! + TBranch *b_HLT_TripleMu_12_10_5; //! + TBranch *b_HLT_Tau3Mu_Mu7_Mu1_TkMu1_Tau15; //! + TBranch *b_HLT_Tau3Mu_Mu7_Mu1_TkMu1_Tau15_Charge1; //! + TBranch *b_HLT_Tau3Mu_Mu7_Mu1_TkMu1_IsoTau15; //! + TBranch *b_HLT_Tau3Mu_Mu7_Mu1_TkMu1_IsoTau15_Charge1; //! + TBranch *b_HLT_DoubleMu3_DZ_PFMET50_PFMHT60; //! + TBranch *b_HLT_DoubleMu3_DZ_PFMET70_PFMHT70; //! + TBranch *b_HLT_DoubleMu3_DZ_PFMET90_PFMHT90; //! + TBranch *b_HLT_DoubleMu3_Trk_Tau3mu_NoL1Mass; //! + TBranch *b_HLT_DoubleMu4_Jpsi_Displaced; //! + TBranch *b_HLT_DoubleMu4_Jpsi_NoVertexing; //! + TBranch *b_HLT_DoubleMu4_JpsiTrkTrk_Displaced; //! + TBranch *b_HLT_DoubleMu43NoFiltersNoVtx; //! + TBranch *b_HLT_DoubleMu48NoFiltersNoVtx; //! + TBranch *b_HLT_Mu43NoFiltersNoVtx_Photon43_CaloIdL; //! + TBranch *b_HLT_Mu48NoFiltersNoVtx_Photon48_CaloIdL; //! + TBranch *b_HLT_DoubleMu20_7_Mass0to30_L1_DM4; //! + TBranch *b_HLT_DoubleMu20_7_Mass0to30_L1_DM4EG; //! + TBranch *b_HLT_HT425; //! + TBranch *b_HLT_HT430_DisplacedDijet40_DisplacedTrack; //! + TBranch *b_HLT_HT500_DisplacedDijet40_DisplacedTrack; //! + TBranch *b_HLT_HT430_DisplacedDijet60_DisplacedTrack; //! + TBranch *b_HLT_HT400_DisplacedDijet40_DisplacedTrack; //! + TBranch *b_HLT_HT650_DisplacedDijet60_Inclusive; //! + TBranch *b_HLT_HT550_DisplacedDijet60_Inclusive; //! + TBranch *b_HLT_DiJet110_35_Mjj650_PFMET110; //! + TBranch *b_HLT_DiJet110_35_Mjj650_PFMET120; //! + TBranch *b_HLT_DiJet110_35_Mjj650_PFMET130; //! + TBranch *b_HLT_TripleJet110_35_35_Mjj650_PFMET110; //! + TBranch *b_HLT_TripleJet110_35_35_Mjj650_PFMET120; //! + TBranch *b_HLT_TripleJet110_35_35_Mjj650_PFMET130; //! + TBranch *b_HLT_VBF_DoubleLooseChargedIsoPFTau20_Trk1_eta2p1; //! + TBranch *b_HLT_VBF_DoubleMediumChargedIsoPFTau20_Trk1_eta2p1; //! + TBranch *b_HLT_VBF_DoubleTightChargedIsoPFTau20_Trk1_eta2p1; //! + TBranch *b_HLT_Ele30_eta2p1_WPTight_Gsf_CentralPFJet35_EleCleaned; //! + TBranch *b_HLT_Ele28_eta2p1_WPTight_Gsf_HT150; //! + TBranch *b_HLT_Ele28_HighEta_SC20_Mass55; //! + TBranch *b_HLT_DoubleMu20_7_Mass0to30_Photon23; //! + TBranch *b_HLT_Ele15_IsoVVVL_PFHT450_CaloBTagCSV_4p5; //! + TBranch *b_HLT_Ele15_IsoVVVL_PFHT450_PFMET50; //! + TBranch *b_HLT_Ele15_IsoVVVL_PFHT450; //! + TBranch *b_HLT_Ele50_IsoVVVL_PFHT450; //! + TBranch *b_HLT_Ele15_IsoVVVL_PFHT600; //! + TBranch *b_HLT_Mu8_TrkIsoVVL_DiPFJet40_DEta3p5_MJJ750_HTT300_PFMETNoMu60; //! + TBranch *b_HLT_Mu10_TrkIsoVVL_DiPFJet40_DEta3p5_MJJ750_HTT350_PFMETNoMu60; //! + TBranch *b_HLT_Mu15_IsoVVVL_PFHT450_CaloBTagCSV_4p5; //! + TBranch *b_HLT_Mu15_IsoVVVL_PFHT450_PFMET50; //! + TBranch *b_HLT_Mu15_IsoVVVL_PFHT450; //! + TBranch *b_HLT_Mu50_IsoVVVL_PFHT450; //! + TBranch *b_HLT_Mu15_IsoVVVL_PFHT600; //! + TBranch *b_HLT_Dimuon10_PsiPrime_Barrel_Seagulls; //! + TBranch *b_HLT_Dimuon20_Jpsi_Barrel_Seagulls; //! + TBranch *b_HLT_Dimuon10_Upsilon_Barrel_Seagulls; //! + TBranch *b_HLT_Dimuon12_Upsilon_eta1p5; //! + TBranch *b_HLT_Dimuon14_Phi_Barrel_Seagulls; //! + TBranch *b_HLT_Dimuon18_PsiPrime; //! + TBranch *b_HLT_Dimuon25_Jpsi; //! + TBranch *b_HLT_Dimuon18_PsiPrime_noCorrL1; //! + TBranch *b_HLT_Dimuon24_Upsilon_noCorrL1; //! + TBranch *b_HLT_Dimuon24_Phi_noCorrL1; //! + TBranch *b_HLT_Dimuon25_Jpsi_noCorrL1; //! + TBranch *b_HLT_DiMu9_Ele9_CaloIdL_TrackIdL_DZ; //! + TBranch *b_HLT_DiMu9_Ele9_CaloIdL_TrackIdL; //! + TBranch *b_HLT_DoubleIsoMu20_eta2p1; //! + TBranch *b_HLT_DoubleIsoMu24_eta2p1; //! + TBranch *b_HLT_TrkMu12_DoubleTrkMu5NoFiltersNoVtx; //! + TBranch *b_HLT_TrkMu16_DoubleTrkMu6NoFiltersNoVtx; //! + TBranch *b_HLT_TrkMu17_DoubleTrkMu8NoFiltersNoVtx; //! + TBranch *b_HLT_Mu8; //! + TBranch *b_HLT_Mu17; //! + TBranch *b_HLT_Mu19; //! + TBranch *b_HLT_Mu17_Photon30_IsoCaloId; //! + TBranch *b_HLT_Ele8_CaloIdL_TrackIdL_IsoVL_PFJet30; //! + TBranch *b_HLT_Ele12_CaloIdL_TrackIdL_IsoVL_PFJet30; //! + TBranch *b_HLT_Ele15_CaloIdL_TrackIdL_IsoVL_PFJet30; //! + TBranch *b_HLT_Ele23_CaloIdL_TrackIdL_IsoVL_PFJet30; //! + TBranch *b_HLT_Ele8_CaloIdM_TrackIdM_PFJet30; //! + TBranch *b_HLT_Ele17_CaloIdM_TrackIdM_PFJet30; //! + TBranch *b_HLT_Ele23_CaloIdM_TrackIdM_PFJet30; //! + TBranch *b_HLT_Ele50_CaloIdVT_GsfTrkIdT_PFJet165; //! + TBranch *b_HLT_Ele115_CaloIdVT_GsfTrkIdT; //! + TBranch *b_HLT_Ele135_CaloIdVT_GsfTrkIdT; //! + TBranch *b_HLT_Ele145_CaloIdVT_GsfTrkIdT; //! + TBranch *b_HLT_Ele200_CaloIdVT_GsfTrkIdT; //! + TBranch *b_HLT_Ele250_CaloIdVT_GsfTrkIdT; //! + TBranch *b_HLT_Ele300_CaloIdVT_GsfTrkIdT; //! + TBranch *b_HLT_PFHT330PT30_QuadPFJet_75_60_45_40_TriplePFBTagDeepCSV_4p5; //! + TBranch *b_HLT_PFHT330PT30_QuadPFJet_75_60_45_40; //! + TBranch *b_HLT_PFHT380_SixPFJet32_DoublePFBTagCSV_2p2; //! + TBranch *b_HLT_PFHT380_SixPFJet32_DoublePFBTagDeepCSV_2p2; //! + TBranch *b_HLT_PFHT380_SixPFJet32; //! + TBranch *b_HLT_PFHT430_SixPFJet40_PFBTagCSV_1p5; //! + TBranch *b_HLT_PFHT430_SixPFJet40; //! + TBranch *b_HLT_PFHT350; //! + TBranch *b_HLT_PFHT350MinPFJet15; //! + TBranch *b_HLT_Photon60_R9Id90_CaloIdL_IsoL; //! + TBranch *b_HLT_Photon60_R9Id90_CaloIdL_IsoL_DisplacedIdL; //! + TBranch *b_HLT_Photon60_R9Id90_CaloIdL_IsoL_DisplacedIdL_PFHT350MinPFJet15; //! + TBranch *b_HLT_FullTrack_Multiplicity85; //! + TBranch *b_HLT_FullTrack_Multiplicity100; //! + TBranch *b_HLT_FullTrack_Multiplicity130; //! + TBranch *b_HLT_FullTrack_Multiplicity155; //! + TBranch *b_HLT_ECALHT800; //! + TBranch *b_HLT_DiSC30_18_EIso_AND_HE_Mass70; //! + TBranch *b_HLT_Physics; //! + TBranch *b_HLT_Physics_part0; //! + TBranch *b_HLT_Physics_part1; //! + TBranch *b_HLT_Physics_part2; //! + TBranch *b_HLT_Physics_part3; //! + TBranch *b_HLT_Physics_part4; //! + TBranch *b_HLT_Physics_part5; //! + TBranch *b_HLT_Physics_part6; //! + TBranch *b_HLT_Physics_part7; //! + TBranch *b_HLT_Random; //! + TBranch *b_HLT_ZeroBias; //! + TBranch *b_HLT_ZeroBias_part0; //! + TBranch *b_HLT_ZeroBias_part1; //! + TBranch *b_HLT_ZeroBias_part2; //! + TBranch *b_HLT_ZeroBias_part3; //! + TBranch *b_HLT_ZeroBias_part4; //! + TBranch *b_HLT_ZeroBias_part5; //! + TBranch *b_HLT_ZeroBias_part6; //! + TBranch *b_HLT_ZeroBias_part7; //! + TBranch *b_HLT_AK4CaloJet30; //! + TBranch *b_HLT_AK4CaloJet40; //! + TBranch *b_HLT_AK4CaloJet50; //! + TBranch *b_HLT_AK4CaloJet80; //! + TBranch *b_HLT_AK4CaloJet100; //! + TBranch *b_HLT_AK4CaloJet120; //! + TBranch *b_HLT_AK4PFJet30; //! + TBranch *b_HLT_AK4PFJet50; //! + TBranch *b_HLT_AK4PFJet80; //! + TBranch *b_HLT_AK4PFJet100; //! + TBranch *b_HLT_AK4PFJet120; //! + TBranch *b_HLT_SinglePhoton10_Eta3p1ForPPRef; //! + TBranch *b_HLT_SinglePhoton20_Eta3p1ForPPRef; //! + TBranch *b_HLT_SinglePhoton30_Eta3p1ForPPRef; //! + TBranch *b_HLT_Photon20_HoverELoose; //! + TBranch *b_HLT_Photon30_HoverELoose; //! + TBranch *b_HLT_EcalCalibration; //! + TBranch *b_HLT_HcalCalibration; //! + TBranch *b_HLT_L1UnpairedBunchBptxMinus; //! + TBranch *b_HLT_L1UnpairedBunchBptxPlus; //! + TBranch *b_HLT_L1NotBptxOR; //! + TBranch *b_HLT_L1MinimumBiasHF_OR; //! + TBranch *b_HLT_L1MinimumBiasHF0OR; //! + TBranch *b_HLT_L1_CDC_SingleMu_3_er1p2_TOP120_DPHI2p618_3p142; //! + TBranch *b_HLT_HcalNZS; //! + TBranch *b_HLT_HcalPhiSym; //! + TBranch *b_HLT_HcalIsolatedbunch; //! + TBranch *b_HLT_IsoTrackHB; //! + TBranch *b_HLT_IsoTrackHE; //! + TBranch *b_HLT_ZeroBias_FirstCollisionAfterAbortGap; //! + TBranch *b_HLT_ZeroBias_IsolatedBunches; //! + TBranch *b_HLT_ZeroBias_FirstCollisionInTrain; //! + TBranch *b_HLT_ZeroBias_LastCollisionInTrain; //! + TBranch *b_HLT_ZeroBias_FirstBXAfterTrain; //! + TBranch *b_HLT_Ele24_eta2p1_WPTight_Gsf_LooseChargedIsoPFTau30_eta2p1_CrossL1; //! + TBranch *b_HLT_Ele24_eta2p1_WPTight_Gsf_MediumChargedIsoPFTau30_eta2p1_CrossL1; //! + TBranch *b_HLT_Ele24_eta2p1_WPTight_Gsf_TightChargedIsoPFTau30_eta2p1_CrossL1; //! + TBranch *b_HLT_Ele24_eta2p1_WPTight_Gsf_LooseChargedIsoPFTau30_eta2p1_TightID_CrossL1; //! + TBranch *b_HLT_Ele24_eta2p1_WPTight_Gsf_MediumChargedIsoPFTau30_eta2p1_TightID_CrossL1; //! + TBranch *b_HLT_Ele24_eta2p1_WPTight_Gsf_TightChargedIsoPFTau30_eta2p1_TightID_CrossL1; //! + TBranch *b_HLT_DoubleMediumChargedIsoPFTau35_Trk1_eta2p1_Reg; //! + TBranch *b_HLT_DoubleMediumChargedIsoPFTau40_Trk1_eta2p1_Reg; //! + TBranch *b_HLT_DoubleTightChargedIsoPFTau35_Trk1_eta2p1_Reg; //! + TBranch *b_HLT_DoubleTightChargedIsoPFTau40_Trk1_eta2p1_Reg; //! + TBranch *b_HLT_DoubleMediumChargedIsoPFTau35_Trk1_TightID_eta2p1_Reg; //! + TBranch *b_HLT_DoubleMediumChargedIsoPFTau40_Trk1_TightID_eta2p1_Reg; //! + TBranch *b_HLT_DoubleTightChargedIsoPFTau35_Trk1_TightID_eta2p1_Reg; //! + TBranch *b_HLT_DoubleTightChargedIsoPFTau40_Trk1_TightID_eta2p1_Reg; //! + TBranch *b_HLT_IsoMu24_eta2p1_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr; //! + TBranch *b_HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET90; //! + TBranch *b_HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET100; //! + TBranch *b_HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET110; //! + TBranch *b_HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET120; //! + TBranch *b_HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET130; //! + TBranch *b_HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET140; //! + TBranch *b_HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr; //! + TBranch *b_HLT_MediumChargedIsoPFTau180HighPtRelaxedIso_Trk50_eta2p1_1pr; //! + TBranch *b_HLT_MediumChargedIsoPFTau180HighPtRelaxedIso_Trk50_eta2p1; //! + TBranch *b_HLT_MediumChargedIsoPFTau200HighPtRelaxedIso_Trk50_eta2p1; //! + TBranch *b_HLT_MediumChargedIsoPFTau220HighPtRelaxedIso_Trk50_eta2p1; //! + TBranch *b_HLT_IsoMu24_eta2p1_MediumChargedIsoPFTau35_Trk1_eta2p1_Reg_CrossL1; //! + TBranch *b_HLT_IsoMu24_eta2p1_MediumChargedIsoPFTau35_Trk1_TightID_eta2p1_Reg_CrossL1; //! + TBranch *b_HLT_IsoMu24_eta2p1_TightChargedIsoPFTau35_Trk1_eta2p1_Reg_CrossL1; //! + TBranch *b_HLT_IsoMu24_eta2p1_TightChargedIsoPFTau35_Trk1_TightID_eta2p1_Reg_CrossL1; //! + TBranch *b_HLT_Ele16_Ele12_Ele8_CaloIdL_TrackIdL; //! + TBranch *b_HLT_Rsq0p35; //! + TBranch *b_HLT_Rsq0p40; //! + TBranch *b_HLT_RsqMR300_Rsq0p09_MR200; //! + TBranch *b_HLT_RsqMR320_Rsq0p09_MR200; //! + TBranch *b_HLT_RsqMR300_Rsq0p09_MR200_4jet; //! + TBranch *b_HLT_RsqMR320_Rsq0p09_MR200_4jet; //! + TBranch *b_HLT_IsoMu27_LooseChargedIsoPFTau20_Trk1_eta2p1_SingleL1; //! + TBranch *b_HLT_IsoMu27_MediumChargedIsoPFTau20_Trk1_eta2p1_SingleL1; //! + TBranch *b_HLT_IsoMu27_TightChargedIsoPFTau20_Trk1_eta2p1_SingleL1; //! + TBranch *b_HLT_IsoMu27_MET90; //! + TBranch *b_HLT_IsoMu20_eta2p1_LooseChargedIsoPFTauHPS27_eta2p1_CrossL1; //! + TBranch *b_HLT_IsoMu24_eta2p1_MediumChargedIsoPFTauHPS35_Trk1_eta2p1_Reg_CrossL1; //! + TBranch *b_HLT_DoubleMediumChargedIsoPFTauHPS35_Trk1_eta2p1_Reg; //! + TBranch *b_HLT_Photon50_R9Id90_HE10_IsoM_EBOnly_PFJetsMJJ300DEta3_PFMET50; //! + TBranch *b_HLT_Photon75_R9Id90_HE10_IsoM_EBOnly_PFJetsMJJ300DEta3; //! + TBranch *b_HLT_Photon75_R9Id90_HE10_IsoM_EBOnly_PFJetsMJJ600DEta3; //! + TBranch *b_HLT_PFMET100_PFMHT100_IDTight_PFHT60; //! + TBranch *b_HLT_PFMETNoMu100_PFMHTNoMu100_IDTight_PFHT60; //! + TBranch *b_HLT_PFMETTypeOne100_PFMHT100_IDTight_PFHT60; //! + TBranch *b_HLT_Mu18_Mu9_SameSign; //! + TBranch *b_HLT_Mu18_Mu9_SameSign_DZ; //! + TBranch *b_HLT_Mu18_Mu9; //! + TBranch *b_HLT_Mu18_Mu9_DZ; //! + TBranch *b_HLT_Mu20_Mu10_SameSign; //! + TBranch *b_HLT_Mu20_Mu10_SameSign_DZ; //! + TBranch *b_HLT_Mu20_Mu10; //! + TBranch *b_HLT_Mu20_Mu10_DZ; //! + TBranch *b_HLT_Mu23_Mu12_SameSign; //! + TBranch *b_HLT_Mu23_Mu12_SameSign_DZ; //! + TBranch *b_HLT_Mu23_Mu12; //! + TBranch *b_HLT_Mu23_Mu12_DZ; //! + TBranch *b_HLT_DoubleMu2_Jpsi_DoubleTrk1_Phi1p05; //! + TBranch *b_HLT_DoubleMu2_Jpsi_DoubleTkMu0_Phi; //! + TBranch *b_HLT_DoubleMu3_DCA_PFMET50_PFMHT60; //! + TBranch *b_HLT_TripleMu_5_3_3_Mass3p8to60_DCA; //! + TBranch *b_HLT_QuadPFJet98_83_71_15_DoubleBTagCSV_p013_p08_VBF1; //! + TBranch *b_HLT_QuadPFJet103_88_75_15_DoubleBTagCSV_p013_p08_VBF1; //! + TBranch *b_HLT_QuadPFJet105_90_76_15_DoubleBTagCSV_p013_p08_VBF1; //! + TBranch *b_HLT_QuadPFJet111_90_80_15_DoubleBTagCSV_p013_p08_VBF1; //! + TBranch *b_HLT_QuadPFJet98_83_71_15_BTagCSV_p013_VBF2; //! + TBranch *b_HLT_QuadPFJet103_88_75_15_BTagCSV_p013_VBF2; //! + TBranch *b_HLT_QuadPFJet105_88_76_15_BTagCSV_p013_VBF2; //! + TBranch *b_HLT_QuadPFJet111_90_80_15_BTagCSV_p013_VBF2; //! + TBranch *b_HLT_QuadPFJet98_83_71_15; //! + TBranch *b_HLT_QuadPFJet103_88_75_15; //! + TBranch *b_HLT_QuadPFJet105_88_76_15; //! + TBranch *b_HLT_QuadPFJet111_90_80_15; //! + TBranch *b_HLT_AK8PFJet330_TrimMass30_PFAK8BTagCSV_p17; //! + TBranch *b_HLT_AK8PFJet330_TrimMass30_PFAK8BTagCSV_p1; //! + TBranch *b_HLT_AK8PFJet330_TrimMass30_PFAK8BoostedDoubleB_p02; //! + TBranch *b_HLT_Diphoton30_18_PVrealAND_R9Id_AND_IsoCaloId_AND_HE_R9Id_PixelVeto_Mass55; //! + TBranch *b_HLT_Diphoton30_18_PVrealAND_R9Id_AND_IsoCaloId_AND_HE_R9Id_NoPixelVeto_Mass55; //! + TBranch *b_HLTriggerFinalPath; //! + TBranch *b_nLepton; //! + TBranch *b_Lepton_pdgId; //! + TBranch *b_Lepton_electronIdx; //! + TBranch *b_Lepton_muonIdx; //! + TBranch *b_Lepton_pt; //! + TBranch *b_Lepton_eta; //! + TBranch *b_Lepton_phi; //! + TBranch *b_nVetoLepton; //! + TBranch *b_VetoLepton_pdgId; //! + TBranch *b_VetoLepton_electronIdx; //! + TBranch *b_VetoLepton_muonIdx; //! + TBranch *b_VetoLepton_pt; //! + TBranch *b_VetoLepton_eta; //! + TBranch *b_VetoLepton_phi; //! + TBranch *b_nCleanJet; //! + TBranch *b_CleanJet_jetIdx; //! + TBranch *b_CleanJet_pt; //! + TBranch *b_CleanJet_eta; //! + TBranch *b_CleanJet_phi; //! + TBranch *b_Lepton_isLoose; //! + TBranch *b_Lepton_isVeto; //! + TBranch *b_dmZll_veto; //! + TBranch *b_Lepton_isTightElectron_mvaFall17V2Iso_WP90_tthmva_70; //! + TBranch *b_Lepton_isTightElectron_mvaFall17V2Iso_WP90_SS_tthmva_70; //! + TBranch *b_Lepton_isTightElectron_mvaFall17V2Iso_WP90_SS; //! + TBranch *b_Lepton_isTightElectron_mvaFall17V2Iso_WP90; //! + TBranch *b_Lepton_isTightMuon_cut_Tight_HWWW_tthmva_80; //! + TBranch *b_Lepton_isTightMuon_cut_Tight_HWWW; //! + TBranch *b_nCleanFatJet; //! + TBranch *b_CleanFatJet_jetIdx; //! + TBranch *b_CleanFatJet_pt; //! + TBranch *b_CleanFatJet_eta; //! + TBranch *b_CleanFatJet_phi; //! + TBranch *b_CleanFatJet_mass; //! + TBranch *b_CleanFatJet_tau21; //! + TBranch *b_nCleanJetNotFat; //! + TBranch *b_CleanJetNotFat_jetIdx; //! + TBranch *b_CleanJetNotFat_deltaR; //! + TBranch *b_Lepton_rochesterSF; //! + TBranch *b_mll; //! + TBranch *b_dphill; //! + TBranch *b_yll; //! + TBranch *b_ptll; //! + TBranch *b_pt1; //! + TBranch *b_pt2; //! + TBranch *b_mth; //! + TBranch *b_mcoll; //! + TBranch *b_mcollWW; //! + TBranch *b_mTi; //! + TBranch *b_mTe; //! + TBranch *b_choiMass; //! + TBranch *b_mR; //! + TBranch *b_mT2; //! + TBranch *b_channel; //! + TBranch *b_drll; //! + TBranch *b_dphilljet; //! + TBranch *b_dphilljetjet; //! + TBranch *b_dphilljetjet_cut; //! + TBranch *b_dphillmet; //! + TBranch *b_dphilmet; //! + TBranch *b_dphilmet1; //! + TBranch *b_dphilmet2; //! + TBranch *b_mtw1; //! + TBranch *b_mtw2; //! + TBranch *b_mjj; //! + TBranch *b_detajj; //! + TBranch *b_njet; //! + TBranch *b_mllWgSt; //! + TBranch *b_drllWgSt; //! + TBranch *b_mllThird; //! + TBranch *b_mllOneThree; //! + TBranch *b_mllTwoThree; //! + TBranch *b_drllOneThree; //! + TBranch *b_drllTwoThree; //! + TBranch *b_dphijet1met; //! + TBranch *b_dphijet2met; //! + TBranch *b_dphijjmet; //! + TBranch *b_dphijjmet_cut; //! + TBranch *b_dphilep1jet1; //! + TBranch *b_dphilep1jet2; //! + TBranch *b_dphilep2jet1; //! + TBranch *b_dphilep2jet2; //! + TBranch *b_mindetajl; //! + TBranch *b_detall; //! + TBranch *b_dphijj; //! + TBranch *b_maxdphilepjj; //! + TBranch *b_dphilep1jj; //! + TBranch *b_dphilep2jj; //! + TBranch *b_ht; //! + TBranch *b_vht_pt; //! + TBranch *b_vht_phi; //! + TBranch *b_projpfmet; //! + TBranch *b_dphiltkmet; //! + TBranch *b_projtkmet; //! + TBranch *b_mpmet; //! + TBranch *b_pTWW; //! + TBranch *b_pTHjj; //! + TBranch *b_recoil; //! + TBranch *b_jetpt1_cut; //! + TBranch *b_jetpt2_cut; //! + TBranch *b_dphilljet_cut; //! + TBranch *b_dphijet1met_cut; //! + TBranch *b_dphijet2met_cut; //! + TBranch *b_PfMetDivSumMet; //! + TBranch *b_upara; //! + TBranch *b_uperp; //! + TBranch *b_m2ljj20; //! + TBranch *b_m2ljj30; //! + TBranch *b_ptTOT_cut; //! + TBranch *b_mTOT_cut; //! + TBranch *b_OLV1_cut; //! + TBranch *b_OLV2_cut; //! + TBranch *b_Ceta_cut; //! + TBranch *b_mlljj20_whss; //! + TBranch *b_mlljj30_whss; //! + TBranch *b_WlepPt_whss; //! + TBranch *b_WlepMt_whss; //! + TBranch *b_WH3l_dphilmet; //! + TBranch *b_WH3l_drOSll; //! + TBranch *b_WH3l_ZVeto; //! + TBranch *b_WH3l_flagOSSF; //! + TBranch *b_ZH3l_checkmZ; //! + TBranch *b_ZH3l_njet; //! + TBranch *b_ZH3l_pdgid_l; //! + TBranch *b_WH3l_mOSll; //! + TBranch *b_WH3l_mtWWW; //! + TBranch *b_ZH3l_mTlmet; //! + TBranch *b_WH3l_ptOSll; //! + TBranch *b_ZH3l_mTlmetj; //! + TBranch *b_ZH3l_pTlmetjj; //! + TBranch *b_WH3l_ptlll; //! + TBranch *b_WH3l_chlll; //! + TBranch *b_ZH3l_Z4lveto; //! + TBranch *b_ZH3l_dmjjmW; //! + TBranch *b_ZH3l_dphilmetjj; //! + TBranch *b_ZH3l_mTlmetjj; //! + TBranch *b_WH3l_ptW; //! + TBranch *b_ZH3l_pTlmetj; //! + TBranch *b_ZH3l_pTZ; //! + TBranch *b_WH3l_mtlmet; //! + TBranch *b_WH3l_dphilllmet; //! + TBranch *b_ZH3l_dphilmetj; //! + TBranch *b_WH3l_njet; //! + TBranch *b_WH3l_ptWWW; //! + TBranch *b_WH3l_mlll; //! + TBranch *b_pfmetPhi_zh4l; //! + TBranch *b_z0Mass_zh4l; //! + TBranch *b_z0Pt_zh4l; //! + TBranch *b_z1Mass_zh4l; //! + TBranch *b_z1Pt_zh4l; //! + TBranch *b_zaMass_zh4l; //! + TBranch *b_zbMass_zh4l; //! + TBranch *b_flagZ1SF_zh4l; //! + TBranch *b_z0DeltaPhi_zh4l; //! + TBranch *b_z1DeltaPhi_zh4l; //! + TBranch *b_zaDeltaPhi_zh4l; //! + TBranch *b_zbDeltaPhi_zh4l; //! + TBranch *b_minDeltaPhi_zh4l; //! + TBranch *b_z0DeltaR_zh4l; //! + TBranch *b_z1DeltaR_zh4l; //! + TBranch *b_zaDeltaR_zh4l; //! + TBranch *b_zbDeltaR_zh4l; //! + TBranch *b_lep1Mt_zh4l; //! + TBranch *b_lep2Mt_zh4l; //! + TBranch *b_lep3Mt_zh4l; //! + TBranch *b_lep4Mt_zh4l; //! + TBranch *b_minMt_zh4l; //! + TBranch *b_z1Mt_zh4l; //! + TBranch *b_mllll_zh4l; //! + TBranch *b_chllll_zh4l; //! + TBranch *b_z1dPhi_lep1MET_zh4l; //! + TBranch *b_z1dPhi_lep2MET_zh4l; //! + TBranch *b_z1mindPhi_lepMET_zh4l; //! + TBranch *b_EMTFbug_veto; //! + TBranch *b_run_period; //! + TBranch *b_Trigger_sngEl; //! + TBranch *b_Trigger_sngMu; //! + TBranch *b_Trigger_dblEl; //! + TBranch *b_Trigger_dblMu; //! + TBranch *b_Trigger_ElMu; //! + TBranch *b_LepCut3l__ele_mvaFall17V2Iso_WP90_tthmva_70__mu_cut_Tight_HWWW; //! + TBranch *b_LepCut3l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW; //! + TBranch *b_LepCut3l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW_tthmva_80; //! + TBranch *b_METFilter_DATA; //! + TBranch *b_LepCut4l__ele_mvaFall17V2Iso_WP90_SS__mu_cut_Tight_HWWW_tthmva_80; //! + TBranch *b_LepCut2l__ele_mvaFall17V2Iso_WP90_SS_tthmva_70__mu_cut_Tight_HWWW; //! + TBranch *b_LepCut4l__ele_mvaFall17V2Iso_WP90_tthmva_70__mu_cut_Tight_HWWW; //! + TBranch *b_LepCut4l__ele_mvaFall17V2Iso_WP90_SS_tthmva_70__mu_cut_Tight_HWWW; //! + TBranch *b_LepCut2l__ele_mvaFall17V2Iso_WP90_SS_tthmva_70__mu_cut_Tight_HWWW_tthmva_80; //! + TBranch *b_LepCut3l__ele_mvaFall17V2Iso_WP90_SS__mu_cut_Tight_HWWW_tthmva_80; //! + TBranch *b_LepCut3l__ele_mvaFall17V2Iso_WP90_tthmva_70__mu_cut_Tight_HWWW_tthmva_80; //! + TBranch *b_LepCut4l__ele_mvaFall17V2Iso_WP90_SS__mu_cut_Tight_HWWW; //! + TBranch *b_LepCut3l__ele_mvaFall17V2Iso_WP90_SS__mu_cut_Tight_HWWW; //! + TBranch *b_LepCut4l__ele_mvaFall17V2Iso_WP90_tthmva_70__mu_cut_Tight_HWWW_tthmva_80; //! + TBranch *b_LepCut2l__ele_mvaFall17V2Iso_WP90_tthmva_70__mu_cut_Tight_HWWW; //! + TBranch *b_LepCut2l__ele_mvaFall17V2Iso_WP90_tthmva_70__mu_cut_Tight_HWWW_tthmva_80; //! + TBranch *b_LepCut3l__ele_mvaFall17V2Iso_WP90_SS_tthmva_70__mu_cut_Tight_HWWW; //! + TBranch *b_LepCut2l__ele_mvaFall17V2Iso_WP90_SS__mu_cut_Tight_HWWW_tthmva_80; //! + TBranch *b_LepCut2l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW_tthmva_80; //! + TBranch *b_LepCut2l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW; //! + TBranch *b_LepCut4l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW; //! + TBranch *b_LepCut4l__ele_mvaFall17V2Iso_WP90_SS_tthmva_70__mu_cut_Tight_HWWW_tthmva_80; //! + TBranch *b_LepCut3l__ele_mvaFall17V2Iso_WP90_SS_tthmva_70__mu_cut_Tight_HWWW_tthmva_80; //! + TBranch *b_LepCut2l__ele_mvaFall17V2Iso_WP90_SS__mu_cut_Tight_HWWW; //! + TBranch *b_LepCut4l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW_tthmva_80; //! + TBranch *b_Lepton_mvaTTH_UL; //! + TBranch *b_hm; //! + TBranch *b_me_vbf_hsm; //! + TBranch *b_me_vbf_hm; //! + TBranch *b_me_vbf_hp; //! + TBranch *b_me_vbf_hl; //! + TBranch *b_me_vbf_hlzg; //! + TBranch *b_me_vbf_mixhm; //! + TBranch *b_me_vbf_mixhp; //! + TBranch *b_me_wh_hsm; //! + TBranch *b_me_wh_hm; //! + TBranch *b_me_wh_hp; //! + TBranch *b_me_wh_hl; //! + TBranch *b_me_wh_mixhm; //! + TBranch *b_me_wh_mixhp; //! + TBranch *b_me_zh_hsm; //! + TBranch *b_me_zh_hm; //! + TBranch *b_me_zh_hp; //! + TBranch *b_me_zh_hl; //! + TBranch *b_me_zh_hlzg; //! + TBranch *b_me_zh_mixhm; //! + TBranch *b_me_zh_mixhp; //! + TBranch *b_me_qcd_hsm; //! + TBranch *b_me_qcd_hm; //! + TBranch *b_me_qcd_mixhm; //! + TBranch *b_pjjSm_wh; //! + TBranch *b_pjjTr_wh; //! + TBranch *b_pjjSm_zh; //! + TBranch *b_pjjTr_zh; //! + TBranch *b_meAvg_wh; //! + TBranch *b_meAvg_zh; //! + TBranch *b_me_Wh_hsm; //! + TBranch *b_me_Wh_hm; //! + TBranch *b_me_Wh_hp; //! + TBranch *b_me_Wh_hl; //! + TBranch *b_me_Wh_mixhm; //! + TBranch *b_me_Wh_mixhp; //! + TBranch *b_me_Zh_hsm; //! + TBranch *b_me_Zh_hm; //! + TBranch *b_me_Zh_hp; //! + TBranch *b_me_Zh_hl; //! + TBranch *b_me_Zh_hlzg; //! + TBranch *b_me_Zh_mixhm; //! + TBranch *b_me_Zh_mixhp; //! + TBranch *b_me_QCD_hsm; //! + TBranch *b_pjjSm_Wh; //! + TBranch *b_pjjTr_Wh; //! + TBranch *b_pjjSm_Zh; //! + TBranch *b_pjjTr_Zh; //! + + postprocData(TTree *tree=0); + virtual ~postprocData(); + virtual Int_t Cut(Long64_t entry); + virtual Int_t GetEntry(Long64_t entry); + virtual Long64_t LoadTree(Long64_t entry); + virtual void Init(TTree *tree); + virtual void Loop(); + virtual Bool_t Notify(); + virtual void Show(Long64_t entry = -1); +}; + +#endif + +#ifdef postprocData_cxx +postprocData::postprocData(TTree *tree) : fChain(0) +{ +// if parameter tree is not specified (or zero), connect the file +// used to generate this class and read the Tree. + if (tree == 0) { + TFile *f = (TFile*)gROOT->GetListOfFiles()->FindObject("root://eoscms.cern.ch//eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Run2018_UL2018_nAODv9_Full2018v9/DATAl1loose2018v9__l2loose__l2tightOR2018v9/nanoLatino_MuonEG_Run2018A-UL2018-v1__part13.root"); + if (!f || !f->IsOpen()) { + f = new TFile("root://eoscms.cern.ch//eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Run2018_UL2018_nAODv9_Full2018v9/DATAl1loose2018v9__l2loose__l2tightOR2018v9/nanoLatino_MuonEG_Run2018A-UL2018-v1__part13.root"); + } + f->GetObject("Events",tree); + + } + Init(tree); +} + +postprocData::~postprocData() +{ + if (!fChain) return; + delete fChain->GetCurrentFile(); +} + +Int_t postprocData::GetEntry(Long64_t entry) +{ +// Read contents of entry. + if (!fChain) return 0; + return fChain->GetEntry(entry); +} +Long64_t postprocData::LoadTree(Long64_t entry) +{ +// Set the environment to read one entry + if (!fChain) return -5; + Long64_t centry = fChain->LoadTree(entry); + if (centry < 0) return centry; + if (fChain->GetTreeNumber() != fCurrent) { + fCurrent = fChain->GetTreeNumber(); + Notify(); + } + return centry; +} + +void postprocData::Init(TTree *tree) +{ + // The Init() function is called when the selector needs to initialize + // a new tree or chain. Typically here the branch addresses and branch + // pointers of the tree will be set. + // It is normally not necessary to make changes to the generated + // code, but the routine can be extended by the user if needed. + // Init() will be called many times when running on PROOF + // (once per file to be processed). + + // Set branch addresses and branch pointers + if (!tree) return; + fChain = tree; + fCurrent = -1; + fChain->SetMakeClass(1); + + fChain->SetBranchAddress("run", &run, &b_run); + fChain->SetBranchAddress("luminosityBlock", &luminosityBlock, &b_luminosityBlock); + fChain->SetBranchAddress("event", &event, &b_event); + fChain->SetBranchAddress("nboostedTau", &nboostedTau, &b_nboostedTau); + fChain->SetBranchAddress("boostedTau_chargedIso", boostedTau_chargedIso, &b_boostedTau_chargedIso); + fChain->SetBranchAddress("boostedTau_eta", boostedTau_eta, &b_boostedTau_eta); + fChain->SetBranchAddress("boostedTau_leadTkDeltaEta", boostedTau_leadTkDeltaEta, &b_boostedTau_leadTkDeltaEta); + fChain->SetBranchAddress("boostedTau_leadTkDeltaPhi", boostedTau_leadTkDeltaPhi, &b_boostedTau_leadTkDeltaPhi); + fChain->SetBranchAddress("boostedTau_leadTkPtOverTauPt", boostedTau_leadTkPtOverTauPt, &b_boostedTau_leadTkPtOverTauPt); + fChain->SetBranchAddress("boostedTau_mass", boostedTau_mass, &b_boostedTau_mass); + fChain->SetBranchAddress("boostedTau_neutralIso", boostedTau_neutralIso, &b_boostedTau_neutralIso); + fChain->SetBranchAddress("boostedTau_phi", boostedTau_phi, &b_boostedTau_phi); + fChain->SetBranchAddress("boostedTau_photonsOutsideSignalCone", boostedTau_photonsOutsideSignalCone, &b_boostedTau_photonsOutsideSignalCone); + fChain->SetBranchAddress("boostedTau_pt", boostedTau_pt, &b_boostedTau_pt); + fChain->SetBranchAddress("boostedTau_puCorr", boostedTau_puCorr, &b_boostedTau_puCorr); + fChain->SetBranchAddress("boostedTau_rawAntiEle2018", boostedTau_rawAntiEle2018, &b_boostedTau_rawAntiEle2018); + fChain->SetBranchAddress("boostedTau_rawIso", boostedTau_rawIso, &b_boostedTau_rawIso); + fChain->SetBranchAddress("boostedTau_rawIsodR03", boostedTau_rawIsodR03, &b_boostedTau_rawIsodR03); + fChain->SetBranchAddress("boostedTau_rawMVAnewDM2017v2", boostedTau_rawMVAnewDM2017v2, &b_boostedTau_rawMVAnewDM2017v2); + fChain->SetBranchAddress("boostedTau_rawMVAoldDM2017v2", boostedTau_rawMVAoldDM2017v2, &b_boostedTau_rawMVAoldDM2017v2); + fChain->SetBranchAddress("boostedTau_rawMVAoldDMdR032017v2", boostedTau_rawMVAoldDMdR032017v2, &b_boostedTau_rawMVAoldDMdR032017v2); + fChain->SetBranchAddress("boostedTau_charge", boostedTau_charge, &b_boostedTau_charge); + fChain->SetBranchAddress("boostedTau_decayMode", boostedTau_decayMode, &b_boostedTau_decayMode); + fChain->SetBranchAddress("boostedTau_jetIdx", boostedTau_jetIdx, &b_boostedTau_jetIdx); + fChain->SetBranchAddress("boostedTau_rawAntiEleCat2018", boostedTau_rawAntiEleCat2018, &b_boostedTau_rawAntiEleCat2018); + fChain->SetBranchAddress("boostedTau_idAntiEle2018", boostedTau_idAntiEle2018, &b_boostedTau_idAntiEle2018); + fChain->SetBranchAddress("boostedTau_idAntiMu", boostedTau_idAntiMu, &b_boostedTau_idAntiMu); + fChain->SetBranchAddress("boostedTau_idMVAnewDM2017v2", boostedTau_idMVAnewDM2017v2, &b_boostedTau_idMVAnewDM2017v2); + fChain->SetBranchAddress("boostedTau_idMVAoldDM2017v2", boostedTau_idMVAoldDM2017v2, &b_boostedTau_idMVAoldDM2017v2); + fChain->SetBranchAddress("boostedTau_idMVAoldDMdR032017v2", boostedTau_idMVAoldDMdR032017v2, &b_boostedTau_idMVAoldDMdR032017v2); + fChain->SetBranchAddress("CaloMET_phi", &CaloMET_phi, &b_CaloMET_phi); + fChain->SetBranchAddress("CaloMET_pt", &CaloMET_pt, &b_CaloMET_pt); + fChain->SetBranchAddress("CaloMET_sumEt", &CaloMET_sumEt, &b_CaloMET_sumEt); + fChain->SetBranchAddress("ChsMET_phi", &ChsMET_phi, &b_ChsMET_phi); + fChain->SetBranchAddress("ChsMET_pt", &ChsMET_pt, &b_ChsMET_pt); + fChain->SetBranchAddress("ChsMET_sumEt", &ChsMET_sumEt, &b_ChsMET_sumEt); + fChain->SetBranchAddress("nCorrT1METJet", &nCorrT1METJet, &b_nCorrT1METJet); + fChain->SetBranchAddress("CorrT1METJet_area", CorrT1METJet_area, &b_CorrT1METJet_area); + fChain->SetBranchAddress("CorrT1METJet_eta", CorrT1METJet_eta, &b_CorrT1METJet_eta); + fChain->SetBranchAddress("CorrT1METJet_muonSubtrFactor", CorrT1METJet_muonSubtrFactor, &b_CorrT1METJet_muonSubtrFactor); + fChain->SetBranchAddress("CorrT1METJet_phi", CorrT1METJet_phi, &b_CorrT1METJet_phi); + fChain->SetBranchAddress("CorrT1METJet_rawPt", CorrT1METJet_rawPt, &b_CorrT1METJet_rawPt); + fChain->SetBranchAddress("DeepMETResolutionTune_phi", &DeepMETResolutionTune_phi, &b_DeepMETResolutionTune_phi); + fChain->SetBranchAddress("DeepMETResolutionTune_pt", &DeepMETResolutionTune_pt, &b_DeepMETResolutionTune_pt); + fChain->SetBranchAddress("DeepMETResponseTune_phi", &DeepMETResponseTune_phi, &b_DeepMETResponseTune_phi); + fChain->SetBranchAddress("DeepMETResponseTune_pt", &DeepMETResponseTune_pt, &b_DeepMETResponseTune_pt); + fChain->SetBranchAddress("nElectron", &nElectron, &b_nElectron); + fChain->SetBranchAddress("Electron_dEscaleDown", Electron_dEscaleDown, &b_Electron_dEscaleDown); + fChain->SetBranchAddress("Electron_dEscaleUp", Electron_dEscaleUp, &b_Electron_dEscaleUp); + fChain->SetBranchAddress("Electron_dEsigmaDown", Electron_dEsigmaDown, &b_Electron_dEsigmaDown); + fChain->SetBranchAddress("Electron_dEsigmaUp", Electron_dEsigmaUp, &b_Electron_dEsigmaUp); + fChain->SetBranchAddress("Electron_deltaEtaSC", Electron_deltaEtaSC, &b_Electron_deltaEtaSC); + fChain->SetBranchAddress("Electron_dr03EcalRecHitSumEt", Electron_dr03EcalRecHitSumEt, &b_Electron_dr03EcalRecHitSumEt); + fChain->SetBranchAddress("Electron_dr03HcalDepth1TowerSumEt", Electron_dr03HcalDepth1TowerSumEt, &b_Electron_dr03HcalDepth1TowerSumEt); + fChain->SetBranchAddress("Electron_dr03TkSumPt", Electron_dr03TkSumPt, &b_Electron_dr03TkSumPt); + fChain->SetBranchAddress("Electron_dr03TkSumPtHEEP", Electron_dr03TkSumPtHEEP, &b_Electron_dr03TkSumPtHEEP); + fChain->SetBranchAddress("Electron_dxy", Electron_dxy, &b_Electron_dxy); + fChain->SetBranchAddress("Electron_dxyErr", Electron_dxyErr, &b_Electron_dxyErr); + fChain->SetBranchAddress("Electron_dz", Electron_dz, &b_Electron_dz); + fChain->SetBranchAddress("Electron_dzErr", Electron_dzErr, &b_Electron_dzErr); + fChain->SetBranchAddress("Electron_eCorr", Electron_eCorr, &b_Electron_eCorr); + fChain->SetBranchAddress("Electron_eInvMinusPInv", Electron_eInvMinusPInv, &b_Electron_eInvMinusPInv); + fChain->SetBranchAddress("Electron_energyErr", Electron_energyErr, &b_Electron_energyErr); + fChain->SetBranchAddress("Electron_eta", Electron_eta, &b_Electron_eta); + fChain->SetBranchAddress("Electron_hoe", Electron_hoe, &b_Electron_hoe); + fChain->SetBranchAddress("Electron_ip3d", Electron_ip3d, &b_Electron_ip3d); + fChain->SetBranchAddress("Electron_jetPtRelv2", Electron_jetPtRelv2, &b_Electron_jetPtRelv2); + fChain->SetBranchAddress("Electron_jetRelIso", Electron_jetRelIso, &b_Electron_jetRelIso); + fChain->SetBranchAddress("Electron_mass", Electron_mass, &b_Electron_mass); + fChain->SetBranchAddress("Electron_miniPFRelIso_all", Electron_miniPFRelIso_all, &b_Electron_miniPFRelIso_all); + fChain->SetBranchAddress("Electron_miniPFRelIso_chg", Electron_miniPFRelIso_chg, &b_Electron_miniPFRelIso_chg); + fChain->SetBranchAddress("Electron_mvaFall17V2Iso", Electron_mvaFall17V2Iso, &b_Electron_mvaFall17V2Iso); + fChain->SetBranchAddress("Electron_mvaFall17V2noIso", Electron_mvaFall17V2noIso, &b_Electron_mvaFall17V2noIso); + fChain->SetBranchAddress("Electron_pfRelIso03_all", Electron_pfRelIso03_all, &b_Electron_pfRelIso03_all); + fChain->SetBranchAddress("Electron_pfRelIso03_chg", Electron_pfRelIso03_chg, &b_Electron_pfRelIso03_chg); + fChain->SetBranchAddress("Electron_phi", Electron_phi, &b_Electron_phi); + fChain->SetBranchAddress("Electron_pt", Electron_pt, &b_Electron_pt); + fChain->SetBranchAddress("Electron_r9", Electron_r9, &b_Electron_r9); + fChain->SetBranchAddress("Electron_scEtOverPt", Electron_scEtOverPt, &b_Electron_scEtOverPt); + fChain->SetBranchAddress("Electron_sieie", Electron_sieie, &b_Electron_sieie); + fChain->SetBranchAddress("Electron_sip3d", Electron_sip3d, &b_Electron_sip3d); + fChain->SetBranchAddress("Electron_mvaTTH", Electron_mvaTTH, &b_Electron_mvaTTH); + fChain->SetBranchAddress("Electron_charge", Electron_charge, &b_Electron_charge); + fChain->SetBranchAddress("Electron_cutBased", Electron_cutBased, &b_Electron_cutBased); + fChain->SetBranchAddress("Electron_jetIdx", Electron_jetIdx, &b_Electron_jetIdx); + fChain->SetBranchAddress("Electron_pdgId", Electron_pdgId, &b_Electron_pdgId); + fChain->SetBranchAddress("Electron_photonIdx", Electron_photonIdx, &b_Electron_photonIdx); + fChain->SetBranchAddress("Electron_tightCharge", Electron_tightCharge, &b_Electron_tightCharge); + fChain->SetBranchAddress("Electron_vidNestedWPBitmap", Electron_vidNestedWPBitmap, &b_Electron_vidNestedWPBitmap); + fChain->SetBranchAddress("Electron_vidNestedWPBitmapHEEP", Electron_vidNestedWPBitmapHEEP, &b_Electron_vidNestedWPBitmapHEEP); + fChain->SetBranchAddress("Electron_convVeto", Electron_convVeto, &b_Electron_convVeto); + fChain->SetBranchAddress("Electron_cutBased_HEEP", Electron_cutBased_HEEP, &b_Electron_cutBased_HEEP); + fChain->SetBranchAddress("Electron_isPFcand", Electron_isPFcand, &b_Electron_isPFcand); + fChain->SetBranchAddress("Electron_jetNDauCharged", Electron_jetNDauCharged, &b_Electron_jetNDauCharged); + fChain->SetBranchAddress("Electron_lostHits", Electron_lostHits, &b_Electron_lostHits); + fChain->SetBranchAddress("Electron_mvaFall17V2Iso_WP80", Electron_mvaFall17V2Iso_WP80, &b_Electron_mvaFall17V2Iso_WP80); + fChain->SetBranchAddress("Electron_mvaFall17V2Iso_WP90", Electron_mvaFall17V2Iso_WP90, &b_Electron_mvaFall17V2Iso_WP90); + fChain->SetBranchAddress("Electron_mvaFall17V2Iso_WPL", Electron_mvaFall17V2Iso_WPL, &b_Electron_mvaFall17V2Iso_WPL); + fChain->SetBranchAddress("Electron_mvaFall17V2noIso_WP80", Electron_mvaFall17V2noIso_WP80, &b_Electron_mvaFall17V2noIso_WP80); + fChain->SetBranchAddress("Electron_mvaFall17V2noIso_WP90", Electron_mvaFall17V2noIso_WP90, &b_Electron_mvaFall17V2noIso_WP90); + fChain->SetBranchAddress("Electron_mvaFall17V2noIso_WPL", Electron_mvaFall17V2noIso_WPL, &b_Electron_mvaFall17V2noIso_WPL); + fChain->SetBranchAddress("Electron_seedGain", Electron_seedGain, &b_Electron_seedGain); + fChain->SetBranchAddress("nFatJet", &nFatJet, &b_nFatJet); + fChain->SetBranchAddress("FatJet_area", FatJet_area, &b_FatJet_area); + fChain->SetBranchAddress("FatJet_btagCSVV2", FatJet_btagCSVV2, &b_FatJet_btagCSVV2); + fChain->SetBranchAddress("FatJet_btagDDBvLV2", FatJet_btagDDBvLV2, &b_FatJet_btagDDBvLV2); + fChain->SetBranchAddress("FatJet_btagDDCvBV2", FatJet_btagDDCvBV2, &b_FatJet_btagDDCvBV2); + fChain->SetBranchAddress("FatJet_btagDDCvLV2", FatJet_btagDDCvLV2, &b_FatJet_btagDDCvLV2); + fChain->SetBranchAddress("FatJet_btagDeepB", FatJet_btagDeepB, &b_FatJet_btagDeepB); + fChain->SetBranchAddress("FatJet_btagHbb", FatJet_btagHbb, &b_FatJet_btagHbb); + fChain->SetBranchAddress("FatJet_deepTagMD_H4qvsQCD", FatJet_deepTagMD_H4qvsQCD, &b_FatJet_deepTagMD_H4qvsQCD); + fChain->SetBranchAddress("FatJet_deepTagMD_HbbvsQCD", FatJet_deepTagMD_HbbvsQCD, &b_FatJet_deepTagMD_HbbvsQCD); + fChain->SetBranchAddress("FatJet_deepTagMD_TvsQCD", FatJet_deepTagMD_TvsQCD, &b_FatJet_deepTagMD_TvsQCD); + fChain->SetBranchAddress("FatJet_deepTagMD_WvsQCD", FatJet_deepTagMD_WvsQCD, &b_FatJet_deepTagMD_WvsQCD); + fChain->SetBranchAddress("FatJet_deepTagMD_ZHbbvsQCD", FatJet_deepTagMD_ZHbbvsQCD, &b_FatJet_deepTagMD_ZHbbvsQCD); + fChain->SetBranchAddress("FatJet_deepTagMD_ZHccvsQCD", FatJet_deepTagMD_ZHccvsQCD, &b_FatJet_deepTagMD_ZHccvsQCD); + fChain->SetBranchAddress("FatJet_deepTagMD_ZbbvsQCD", FatJet_deepTagMD_ZbbvsQCD, &b_FatJet_deepTagMD_ZbbvsQCD); + fChain->SetBranchAddress("FatJet_deepTagMD_ZvsQCD", FatJet_deepTagMD_ZvsQCD, &b_FatJet_deepTagMD_ZvsQCD); + fChain->SetBranchAddress("FatJet_deepTagMD_bbvsLight", FatJet_deepTagMD_bbvsLight, &b_FatJet_deepTagMD_bbvsLight); + fChain->SetBranchAddress("FatJet_deepTagMD_ccvsLight", FatJet_deepTagMD_ccvsLight, &b_FatJet_deepTagMD_ccvsLight); + fChain->SetBranchAddress("FatJet_deepTag_H", FatJet_deepTag_H, &b_FatJet_deepTag_H); + fChain->SetBranchAddress("FatJet_deepTag_QCD", FatJet_deepTag_QCD, &b_FatJet_deepTag_QCD); + fChain->SetBranchAddress("FatJet_deepTag_QCDothers", FatJet_deepTag_QCDothers, &b_FatJet_deepTag_QCDothers); + fChain->SetBranchAddress("FatJet_deepTag_TvsQCD", FatJet_deepTag_TvsQCD, &b_FatJet_deepTag_TvsQCD); + fChain->SetBranchAddress("FatJet_deepTag_WvsQCD", FatJet_deepTag_WvsQCD, &b_FatJet_deepTag_WvsQCD); + fChain->SetBranchAddress("FatJet_deepTag_ZvsQCD", FatJet_deepTag_ZvsQCD, &b_FatJet_deepTag_ZvsQCD); + fChain->SetBranchAddress("FatJet_eta", FatJet_eta, &b_FatJet_eta); + fChain->SetBranchAddress("FatJet_mass", FatJet_mass, &b_FatJet_mass); + fChain->SetBranchAddress("FatJet_msoftdrop", FatJet_msoftdrop, &b_FatJet_msoftdrop); + fChain->SetBranchAddress("FatJet_n2b1", FatJet_n2b1, &b_FatJet_n2b1); + fChain->SetBranchAddress("FatJet_n3b1", FatJet_n3b1, &b_FatJet_n3b1); + fChain->SetBranchAddress("FatJet_particleNetMD_QCD", FatJet_particleNetMD_QCD, &b_FatJet_particleNetMD_QCD); + fChain->SetBranchAddress("FatJet_particleNetMD_Xbb", FatJet_particleNetMD_Xbb, &b_FatJet_particleNetMD_Xbb); + fChain->SetBranchAddress("FatJet_particleNetMD_Xcc", FatJet_particleNetMD_Xcc, &b_FatJet_particleNetMD_Xcc); + fChain->SetBranchAddress("FatJet_particleNetMD_Xqq", FatJet_particleNetMD_Xqq, &b_FatJet_particleNetMD_Xqq); + fChain->SetBranchAddress("FatJet_particleNet_H4qvsQCD", FatJet_particleNet_H4qvsQCD, &b_FatJet_particleNet_H4qvsQCD); + fChain->SetBranchAddress("FatJet_particleNet_HbbvsQCD", FatJet_particleNet_HbbvsQCD, &b_FatJet_particleNet_HbbvsQCD); + fChain->SetBranchAddress("FatJet_particleNet_HccvsQCD", FatJet_particleNet_HccvsQCD, &b_FatJet_particleNet_HccvsQCD); + fChain->SetBranchAddress("FatJet_particleNet_QCD", FatJet_particleNet_QCD, &b_FatJet_particleNet_QCD); + fChain->SetBranchAddress("FatJet_particleNet_TvsQCD", FatJet_particleNet_TvsQCD, &b_FatJet_particleNet_TvsQCD); + fChain->SetBranchAddress("FatJet_particleNet_WvsQCD", FatJet_particleNet_WvsQCD, &b_FatJet_particleNet_WvsQCD); + fChain->SetBranchAddress("FatJet_particleNet_ZvsQCD", FatJet_particleNet_ZvsQCD, &b_FatJet_particleNet_ZvsQCD); + fChain->SetBranchAddress("FatJet_particleNet_mass", FatJet_particleNet_mass, &b_FatJet_particleNet_mass); + fChain->SetBranchAddress("FatJet_phi", FatJet_phi, &b_FatJet_phi); + fChain->SetBranchAddress("FatJet_pt", FatJet_pt, &b_FatJet_pt); + fChain->SetBranchAddress("FatJet_rawFactor", FatJet_rawFactor, &b_FatJet_rawFactor); + fChain->SetBranchAddress("FatJet_tau1", FatJet_tau1, &b_FatJet_tau1); + fChain->SetBranchAddress("FatJet_tau2", FatJet_tau2, &b_FatJet_tau2); + fChain->SetBranchAddress("FatJet_tau3", FatJet_tau3, &b_FatJet_tau3); + fChain->SetBranchAddress("FatJet_tau4", FatJet_tau4, &b_FatJet_tau4); + fChain->SetBranchAddress("FatJet_lsf3", FatJet_lsf3, &b_FatJet_lsf3); + fChain->SetBranchAddress("FatJet_jetId", FatJet_jetId, &b_FatJet_jetId); + fChain->SetBranchAddress("FatJet_subJetIdx1", FatJet_subJetIdx1, &b_FatJet_subJetIdx1); + fChain->SetBranchAddress("FatJet_subJetIdx2", FatJet_subJetIdx2, &b_FatJet_subJetIdx2); + fChain->SetBranchAddress("FatJet_electronIdx3SJ", FatJet_electronIdx3SJ, &b_FatJet_electronIdx3SJ); + fChain->SetBranchAddress("FatJet_muonIdx3SJ", FatJet_muonIdx3SJ, &b_FatJet_muonIdx3SJ); + fChain->SetBranchAddress("FatJet_nConstituents", FatJet_nConstituents, &b_FatJet_nConstituents); + fChain->SetBranchAddress("nFsrPhoton", &nFsrPhoton, &b_nFsrPhoton); + fChain->SetBranchAddress("FsrPhoton_dROverEt2", FsrPhoton_dROverEt2, &b_FsrPhoton_dROverEt2); + fChain->SetBranchAddress("FsrPhoton_eta", FsrPhoton_eta, &b_FsrPhoton_eta); + fChain->SetBranchAddress("FsrPhoton_phi", FsrPhoton_phi, &b_FsrPhoton_phi); + fChain->SetBranchAddress("FsrPhoton_pt", FsrPhoton_pt, &b_FsrPhoton_pt); + fChain->SetBranchAddress("FsrPhoton_relIso03", FsrPhoton_relIso03, &b_FsrPhoton_relIso03); + fChain->SetBranchAddress("FsrPhoton_muonIdx", FsrPhoton_muonIdx, &b_FsrPhoton_muonIdx); + fChain->SetBranchAddress("nIsoTrack", &nIsoTrack, &b_nIsoTrack); + fChain->SetBranchAddress("IsoTrack_dxy", IsoTrack_dxy, &b_IsoTrack_dxy); + fChain->SetBranchAddress("IsoTrack_dz", IsoTrack_dz, &b_IsoTrack_dz); + fChain->SetBranchAddress("IsoTrack_eta", IsoTrack_eta, &b_IsoTrack_eta); + fChain->SetBranchAddress("IsoTrack_pfRelIso03_all", IsoTrack_pfRelIso03_all, &b_IsoTrack_pfRelIso03_all); + fChain->SetBranchAddress("IsoTrack_pfRelIso03_chg", IsoTrack_pfRelIso03_chg, &b_IsoTrack_pfRelIso03_chg); + fChain->SetBranchAddress("IsoTrack_phi", IsoTrack_phi, &b_IsoTrack_phi); + fChain->SetBranchAddress("IsoTrack_pt", IsoTrack_pt, &b_IsoTrack_pt); + fChain->SetBranchAddress("IsoTrack_miniPFRelIso_all", IsoTrack_miniPFRelIso_all, &b_IsoTrack_miniPFRelIso_all); + fChain->SetBranchAddress("IsoTrack_miniPFRelIso_chg", IsoTrack_miniPFRelIso_chg, &b_IsoTrack_miniPFRelIso_chg); + fChain->SetBranchAddress("IsoTrack_charge", IsoTrack_charge, &b_IsoTrack_charge); + fChain->SetBranchAddress("IsoTrack_fromPV", IsoTrack_fromPV, &b_IsoTrack_fromPV); + fChain->SetBranchAddress("IsoTrack_pdgId", IsoTrack_pdgId, &b_IsoTrack_pdgId); + fChain->SetBranchAddress("IsoTrack_isHighPurityTrack", IsoTrack_isHighPurityTrack, &b_IsoTrack_isHighPurityTrack); + fChain->SetBranchAddress("IsoTrack_isPFcand", IsoTrack_isPFcand, &b_IsoTrack_isPFcand); + fChain->SetBranchAddress("IsoTrack_isFromLostTrack", IsoTrack_isFromLostTrack, &b_IsoTrack_isFromLostTrack); + fChain->SetBranchAddress("nJet", &nJet, &b_nJet); + fChain->SetBranchAddress("Jet_area", Jet_area, &b_Jet_area); + fChain->SetBranchAddress("Jet_btagCSVV2", Jet_btagCSVV2, &b_Jet_btagCSVV2); + fChain->SetBranchAddress("Jet_btagDeepB", Jet_btagDeepB, &b_Jet_btagDeepB); + fChain->SetBranchAddress("Jet_btagDeepCvB", Jet_btagDeepCvB, &b_Jet_btagDeepCvB); + fChain->SetBranchAddress("Jet_btagDeepCvL", Jet_btagDeepCvL, &b_Jet_btagDeepCvL); + fChain->SetBranchAddress("Jet_btagDeepFlavB", Jet_btagDeepFlavB, &b_Jet_btagDeepFlavB); + fChain->SetBranchAddress("Jet_btagDeepFlavCvB", Jet_btagDeepFlavCvB, &b_Jet_btagDeepFlavCvB); + fChain->SetBranchAddress("Jet_btagDeepFlavCvL", Jet_btagDeepFlavCvL, &b_Jet_btagDeepFlavCvL); + fChain->SetBranchAddress("Jet_btagDeepFlavQG", Jet_btagDeepFlavQG, &b_Jet_btagDeepFlavQG); + fChain->SetBranchAddress("Jet_chEmEF", Jet_chEmEF, &b_Jet_chEmEF); + fChain->SetBranchAddress("Jet_chFPV0EF", Jet_chFPV0EF, &b_Jet_chFPV0EF); + fChain->SetBranchAddress("Jet_chHEF", Jet_chHEF, &b_Jet_chHEF); + fChain->SetBranchAddress("Jet_eta", Jet_eta, &b_Jet_eta); + fChain->SetBranchAddress("Jet_hfsigmaEtaEta", Jet_hfsigmaEtaEta, &b_Jet_hfsigmaEtaEta); + fChain->SetBranchAddress("Jet_hfsigmaPhiPhi", Jet_hfsigmaPhiPhi, &b_Jet_hfsigmaPhiPhi); + fChain->SetBranchAddress("Jet_mass", Jet_mass, &b_Jet_mass); + fChain->SetBranchAddress("Jet_muEF", Jet_muEF, &b_Jet_muEF); + fChain->SetBranchAddress("Jet_muonSubtrFactor", Jet_muonSubtrFactor, &b_Jet_muonSubtrFactor); + fChain->SetBranchAddress("Jet_neEmEF", Jet_neEmEF, &b_Jet_neEmEF); + fChain->SetBranchAddress("Jet_neHEF", Jet_neHEF, &b_Jet_neHEF); + fChain->SetBranchAddress("Jet_phi", Jet_phi, &b_Jet_phi); + fChain->SetBranchAddress("Jet_pt", Jet_pt, &b_Jet_pt); + fChain->SetBranchAddress("Jet_puIdDisc", Jet_puIdDisc, &b_Jet_puIdDisc); + fChain->SetBranchAddress("Jet_qgl", Jet_qgl, &b_Jet_qgl); + fChain->SetBranchAddress("Jet_rawFactor", Jet_rawFactor, &b_Jet_rawFactor); + fChain->SetBranchAddress("Jet_bRegCorr", Jet_bRegCorr, &b_Jet_bRegCorr); + fChain->SetBranchAddress("Jet_bRegRes", Jet_bRegRes, &b_Jet_bRegRes); + fChain->SetBranchAddress("Jet_cRegCorr", Jet_cRegCorr, &b_Jet_cRegCorr); + fChain->SetBranchAddress("Jet_cRegRes", Jet_cRegRes, &b_Jet_cRegRes); + fChain->SetBranchAddress("Jet_electronIdx1", Jet_electronIdx1, &b_Jet_electronIdx1); + fChain->SetBranchAddress("Jet_electronIdx2", Jet_electronIdx2, &b_Jet_electronIdx2); + fChain->SetBranchAddress("Jet_hfadjacentEtaStripsSize", Jet_hfadjacentEtaStripsSize, &b_Jet_hfadjacentEtaStripsSize); + fChain->SetBranchAddress("Jet_hfcentralEtaStripSize", Jet_hfcentralEtaStripSize, &b_Jet_hfcentralEtaStripSize); + fChain->SetBranchAddress("Jet_jetId", Jet_jetId, &b_Jet_jetId); + fChain->SetBranchAddress("Jet_muonIdx1", Jet_muonIdx1, &b_Jet_muonIdx1); + fChain->SetBranchAddress("Jet_muonIdx2", Jet_muonIdx2, &b_Jet_muonIdx2); + fChain->SetBranchAddress("Jet_nElectrons", Jet_nElectrons, &b_Jet_nElectrons); + fChain->SetBranchAddress("Jet_nMuons", Jet_nMuons, &b_Jet_nMuons); + fChain->SetBranchAddress("Jet_puId", Jet_puId, &b_Jet_puId); + fChain->SetBranchAddress("Jet_nConstituents", Jet_nConstituents, &b_Jet_nConstituents); + fChain->SetBranchAddress("L1PreFiringWeight_Dn", &L1PreFiringWeight_Dn, &b_L1PreFiringWeight_Dn); + fChain->SetBranchAddress("L1PreFiringWeight_ECAL_Dn", &L1PreFiringWeight_ECAL_Dn, &b_L1PreFiringWeight_ECAL_Dn); + fChain->SetBranchAddress("L1PreFiringWeight_ECAL_Nom", &L1PreFiringWeight_ECAL_Nom, &b_L1PreFiringWeight_ECAL_Nom); + fChain->SetBranchAddress("L1PreFiringWeight_ECAL_Up", &L1PreFiringWeight_ECAL_Up, &b_L1PreFiringWeight_ECAL_Up); + fChain->SetBranchAddress("L1PreFiringWeight_Muon_Nom", &L1PreFiringWeight_Muon_Nom, &b_L1PreFiringWeight_Muon_Nom); + fChain->SetBranchAddress("L1PreFiringWeight_Muon_StatDn", &L1PreFiringWeight_Muon_StatDn, &b_L1PreFiringWeight_Muon_StatDn); + fChain->SetBranchAddress("L1PreFiringWeight_Muon_StatUp", &L1PreFiringWeight_Muon_StatUp, &b_L1PreFiringWeight_Muon_StatUp); + fChain->SetBranchAddress("L1PreFiringWeight_Muon_SystDn", &L1PreFiringWeight_Muon_SystDn, &b_L1PreFiringWeight_Muon_SystDn); + fChain->SetBranchAddress("L1PreFiringWeight_Muon_SystUp", &L1PreFiringWeight_Muon_SystUp, &b_L1PreFiringWeight_Muon_SystUp); + fChain->SetBranchAddress("L1PreFiringWeight_Nom", &L1PreFiringWeight_Nom, &b_L1PreFiringWeight_Nom); + fChain->SetBranchAddress("L1PreFiringWeight_Up", &L1PreFiringWeight_Up, &b_L1PreFiringWeight_Up); + fChain->SetBranchAddress("nLowPtElectron", &nLowPtElectron, &b_nLowPtElectron); + fChain->SetBranchAddress("LowPtElectron_ID", LowPtElectron_ID, &b_LowPtElectron_ID); + fChain->SetBranchAddress("LowPtElectron_convVtxRadius", LowPtElectron_convVtxRadius, &b_LowPtElectron_convVtxRadius); + fChain->SetBranchAddress("LowPtElectron_deltaEtaSC", LowPtElectron_deltaEtaSC, &b_LowPtElectron_deltaEtaSC); + fChain->SetBranchAddress("LowPtElectron_dxy", LowPtElectron_dxy, &b_LowPtElectron_dxy); + fChain->SetBranchAddress("LowPtElectron_dxyErr", LowPtElectron_dxyErr, &b_LowPtElectron_dxyErr); + fChain->SetBranchAddress("LowPtElectron_dz", LowPtElectron_dz, &b_LowPtElectron_dz); + fChain->SetBranchAddress("LowPtElectron_dzErr", LowPtElectron_dzErr, &b_LowPtElectron_dzErr); + fChain->SetBranchAddress("LowPtElectron_eInvMinusPInv", LowPtElectron_eInvMinusPInv, &b_LowPtElectron_eInvMinusPInv); + fChain->SetBranchAddress("LowPtElectron_embeddedID", LowPtElectron_embeddedID, &b_LowPtElectron_embeddedID); + fChain->SetBranchAddress("LowPtElectron_energyErr", LowPtElectron_energyErr, &b_LowPtElectron_energyErr); + fChain->SetBranchAddress("LowPtElectron_eta", LowPtElectron_eta, &b_LowPtElectron_eta); + fChain->SetBranchAddress("LowPtElectron_hoe", LowPtElectron_hoe, &b_LowPtElectron_hoe); + fChain->SetBranchAddress("LowPtElectron_mass", LowPtElectron_mass, &b_LowPtElectron_mass); + fChain->SetBranchAddress("LowPtElectron_miniPFRelIso_all", LowPtElectron_miniPFRelIso_all, &b_LowPtElectron_miniPFRelIso_all); + fChain->SetBranchAddress("LowPtElectron_miniPFRelIso_chg", LowPtElectron_miniPFRelIso_chg, &b_LowPtElectron_miniPFRelIso_chg); + fChain->SetBranchAddress("LowPtElectron_phi", LowPtElectron_phi, &b_LowPtElectron_phi); + fChain->SetBranchAddress("LowPtElectron_pt", LowPtElectron_pt, &b_LowPtElectron_pt); + fChain->SetBranchAddress("LowPtElectron_ptbiased", LowPtElectron_ptbiased, &b_LowPtElectron_ptbiased); + fChain->SetBranchAddress("LowPtElectron_r9", LowPtElectron_r9, &b_LowPtElectron_r9); + fChain->SetBranchAddress("LowPtElectron_scEtOverPt", LowPtElectron_scEtOverPt, &b_LowPtElectron_scEtOverPt); + fChain->SetBranchAddress("LowPtElectron_sieie", LowPtElectron_sieie, &b_LowPtElectron_sieie); + fChain->SetBranchAddress("LowPtElectron_unbiased", LowPtElectron_unbiased, &b_LowPtElectron_unbiased); + fChain->SetBranchAddress("LowPtElectron_charge", LowPtElectron_charge, &b_LowPtElectron_charge); + fChain->SetBranchAddress("LowPtElectron_convWP", LowPtElectron_convWP, &b_LowPtElectron_convWP); + fChain->SetBranchAddress("LowPtElectron_pdgId", LowPtElectron_pdgId, &b_LowPtElectron_pdgId); + fChain->SetBranchAddress("LowPtElectron_convVeto", LowPtElectron_convVeto, &b_LowPtElectron_convVeto); + fChain->SetBranchAddress("LowPtElectron_lostHits", LowPtElectron_lostHits, &b_LowPtElectron_lostHits); + fChain->SetBranchAddress("MET_MetUnclustEnUpDeltaX", &MET_MetUnclustEnUpDeltaX, &b_MET_MetUnclustEnUpDeltaX); + fChain->SetBranchAddress("MET_MetUnclustEnUpDeltaY", &MET_MetUnclustEnUpDeltaY, &b_MET_MetUnclustEnUpDeltaY); + fChain->SetBranchAddress("MET_covXX", &MET_covXX, &b_MET_covXX); + fChain->SetBranchAddress("MET_covXY", &MET_covXY, &b_MET_covXY); + fChain->SetBranchAddress("MET_covYY", &MET_covYY, &b_MET_covYY); + fChain->SetBranchAddress("MET_phi", &MET_phi, &b_MET_phi); + fChain->SetBranchAddress("MET_pt", &MET_pt, &b_MET_pt); + fChain->SetBranchAddress("MET_significance", &MET_significance, &b_MET_significance); + fChain->SetBranchAddress("MET_sumEt", &MET_sumEt, &b_MET_sumEt); + fChain->SetBranchAddress("MET_sumPtUnclustered", &MET_sumPtUnclustered, &b_MET_sumPtUnclustered); + fChain->SetBranchAddress("nProton_multiRP", &nProton_multiRP, &b_nProton_multiRP); + fChain->SetBranchAddress("Proton_multiRP_t", Proton_multiRP_t, &b_Proton_multiRP_t); + fChain->SetBranchAddress("Proton_multiRP_thetaX", Proton_multiRP_thetaX, &b_Proton_multiRP_thetaX); + fChain->SetBranchAddress("Proton_multiRP_thetaY", Proton_multiRP_thetaY, &b_Proton_multiRP_thetaY); + fChain->SetBranchAddress("Proton_multiRP_time", Proton_multiRP_time, &b_Proton_multiRP_time); + fChain->SetBranchAddress("Proton_multiRP_timeUnc", Proton_multiRP_timeUnc, &b_Proton_multiRP_timeUnc); + fChain->SetBranchAddress("Proton_multiRP_xi", Proton_multiRP_xi, &b_Proton_multiRP_xi); + fChain->SetBranchAddress("Proton_multiRP_arm", Proton_multiRP_arm, &b_Proton_multiRP_arm); + fChain->SetBranchAddress("nMuon", &nMuon, &b_nMuon); + fChain->SetBranchAddress("Muon_dxy", Muon_dxy, &b_Muon_dxy); + fChain->SetBranchAddress("Muon_dxyErr", Muon_dxyErr, &b_Muon_dxyErr); + fChain->SetBranchAddress("Muon_dxybs", Muon_dxybs, &b_Muon_dxybs); + fChain->SetBranchAddress("Muon_dz", Muon_dz, &b_Muon_dz); + fChain->SetBranchAddress("Muon_dzErr", Muon_dzErr, &b_Muon_dzErr); + fChain->SetBranchAddress("Muon_eta", Muon_eta, &b_Muon_eta); + fChain->SetBranchAddress("Muon_ip3d", Muon_ip3d, &b_Muon_ip3d); + fChain->SetBranchAddress("Muon_jetPtRelv2", Muon_jetPtRelv2, &b_Muon_jetPtRelv2); + fChain->SetBranchAddress("Muon_jetRelIso", Muon_jetRelIso, &b_Muon_jetRelIso); + fChain->SetBranchAddress("Muon_mass", Muon_mass, &b_Muon_mass); + fChain->SetBranchAddress("Muon_miniPFRelIso_all", Muon_miniPFRelIso_all, &b_Muon_miniPFRelIso_all); + fChain->SetBranchAddress("Muon_miniPFRelIso_chg", Muon_miniPFRelIso_chg, &b_Muon_miniPFRelIso_chg); + fChain->SetBranchAddress("Muon_pfRelIso03_all", Muon_pfRelIso03_all, &b_Muon_pfRelIso03_all); + fChain->SetBranchAddress("Muon_pfRelIso03_chg", Muon_pfRelIso03_chg, &b_Muon_pfRelIso03_chg); + fChain->SetBranchAddress("Muon_pfRelIso04_all", Muon_pfRelIso04_all, &b_Muon_pfRelIso04_all); + fChain->SetBranchAddress("Muon_phi", Muon_phi, &b_Muon_phi); + fChain->SetBranchAddress("Muon_pt", Muon_pt, &b_Muon_pt); + fChain->SetBranchAddress("Muon_ptErr", Muon_ptErr, &b_Muon_ptErr); + fChain->SetBranchAddress("Muon_segmentComp", Muon_segmentComp, &b_Muon_segmentComp); + fChain->SetBranchAddress("Muon_sip3d", Muon_sip3d, &b_Muon_sip3d); + fChain->SetBranchAddress("Muon_softMva", Muon_softMva, &b_Muon_softMva); + fChain->SetBranchAddress("Muon_tkRelIso", Muon_tkRelIso, &b_Muon_tkRelIso); + fChain->SetBranchAddress("Muon_tunepRelPt", Muon_tunepRelPt, &b_Muon_tunepRelPt); + fChain->SetBranchAddress("Muon_mvaLowPt", Muon_mvaLowPt, &b_Muon_mvaLowPt); + fChain->SetBranchAddress("Muon_mvaTTH", Muon_mvaTTH, &b_Muon_mvaTTH); + fChain->SetBranchAddress("Muon_charge", Muon_charge, &b_Muon_charge); + fChain->SetBranchAddress("Muon_jetIdx", Muon_jetIdx, &b_Muon_jetIdx); + fChain->SetBranchAddress("Muon_nStations", Muon_nStations, &b_Muon_nStations); + fChain->SetBranchAddress("Muon_nTrackerLayers", Muon_nTrackerLayers, &b_Muon_nTrackerLayers); + fChain->SetBranchAddress("Muon_pdgId", Muon_pdgId, &b_Muon_pdgId); + fChain->SetBranchAddress("Muon_tightCharge", Muon_tightCharge, &b_Muon_tightCharge); + fChain->SetBranchAddress("Muon_fsrPhotonIdx", Muon_fsrPhotonIdx, &b_Muon_fsrPhotonIdx); + fChain->SetBranchAddress("Muon_highPtId", Muon_highPtId, &b_Muon_highPtId); + fChain->SetBranchAddress("Muon_highPurity", Muon_highPurity, &b_Muon_highPurity); + fChain->SetBranchAddress("Muon_inTimeMuon", Muon_inTimeMuon, &b_Muon_inTimeMuon); + fChain->SetBranchAddress("Muon_isGlobal", Muon_isGlobal, &b_Muon_isGlobal); + fChain->SetBranchAddress("Muon_isPFcand", Muon_isPFcand, &b_Muon_isPFcand); + fChain->SetBranchAddress("Muon_isStandalone", Muon_isStandalone, &b_Muon_isStandalone); + fChain->SetBranchAddress("Muon_isTracker", Muon_isTracker, &b_Muon_isTracker); + fChain->SetBranchAddress("Muon_jetNDauCharged", Muon_jetNDauCharged, &b_Muon_jetNDauCharged); + fChain->SetBranchAddress("Muon_looseId", Muon_looseId, &b_Muon_looseId); + fChain->SetBranchAddress("Muon_mediumId", Muon_mediumId, &b_Muon_mediumId); + fChain->SetBranchAddress("Muon_mediumPromptId", Muon_mediumPromptId, &b_Muon_mediumPromptId); + fChain->SetBranchAddress("Muon_miniIsoId", Muon_miniIsoId, &b_Muon_miniIsoId); + fChain->SetBranchAddress("Muon_multiIsoId", Muon_multiIsoId, &b_Muon_multiIsoId); + fChain->SetBranchAddress("Muon_mvaId", Muon_mvaId, &b_Muon_mvaId); + fChain->SetBranchAddress("Muon_mvaLowPtId", Muon_mvaLowPtId, &b_Muon_mvaLowPtId); + fChain->SetBranchAddress("Muon_pfIsoId", Muon_pfIsoId, &b_Muon_pfIsoId); + fChain->SetBranchAddress("Muon_puppiIsoId", Muon_puppiIsoId, &b_Muon_puppiIsoId); + fChain->SetBranchAddress("Muon_softId", Muon_softId, &b_Muon_softId); + fChain->SetBranchAddress("Muon_softMvaId", Muon_softMvaId, &b_Muon_softMvaId); + fChain->SetBranchAddress("Muon_tightId", Muon_tightId, &b_Muon_tightId); + fChain->SetBranchAddress("Muon_tkIsoId", Muon_tkIsoId, &b_Muon_tkIsoId); + fChain->SetBranchAddress("Muon_triggerIdLoose", Muon_triggerIdLoose, &b_Muon_triggerIdLoose); + fChain->SetBranchAddress("nPhoton", &nPhoton, &b_nPhoton); + fChain->SetBranchAddress("Photon_dEscaleDown", Photon_dEscaleDown, &b_Photon_dEscaleDown); + fChain->SetBranchAddress("Photon_dEscaleUp", Photon_dEscaleUp, &b_Photon_dEscaleUp); + fChain->SetBranchAddress("Photon_dEsigmaDown", Photon_dEsigmaDown, &b_Photon_dEsigmaDown); + fChain->SetBranchAddress("Photon_dEsigmaUp", Photon_dEsigmaUp, &b_Photon_dEsigmaUp); + fChain->SetBranchAddress("Photon_eCorr", Photon_eCorr, &b_Photon_eCorr); + fChain->SetBranchAddress("Photon_energyErr", Photon_energyErr, &b_Photon_energyErr); + fChain->SetBranchAddress("Photon_eta", Photon_eta, &b_Photon_eta); + fChain->SetBranchAddress("Photon_hoe", Photon_hoe, &b_Photon_hoe); + fChain->SetBranchAddress("Photon_mass", Photon_mass, &b_Photon_mass); + fChain->SetBranchAddress("Photon_mvaID", Photon_mvaID, &b_Photon_mvaID); + fChain->SetBranchAddress("Photon_mvaID_Fall17V1p1", Photon_mvaID_Fall17V1p1, &b_Photon_mvaID_Fall17V1p1); + fChain->SetBranchAddress("Photon_pfRelIso03_all", Photon_pfRelIso03_all, &b_Photon_pfRelIso03_all); + fChain->SetBranchAddress("Photon_pfRelIso03_chg", Photon_pfRelIso03_chg, &b_Photon_pfRelIso03_chg); + fChain->SetBranchAddress("Photon_phi", Photon_phi, &b_Photon_phi); + fChain->SetBranchAddress("Photon_pt", Photon_pt, &b_Photon_pt); + fChain->SetBranchAddress("Photon_r9", Photon_r9, &b_Photon_r9); + fChain->SetBranchAddress("Photon_sieie", Photon_sieie, &b_Photon_sieie); + fChain->SetBranchAddress("Photon_charge", Photon_charge, &b_Photon_charge); + fChain->SetBranchAddress("Photon_cutBased", Photon_cutBased, &b_Photon_cutBased); + fChain->SetBranchAddress("Photon_cutBased_Fall17V1Bitmap", Photon_cutBased_Fall17V1Bitmap, &b_Photon_cutBased_Fall17V1Bitmap); + fChain->SetBranchAddress("Photon_electronIdx", Photon_electronIdx, &b_Photon_electronIdx); + fChain->SetBranchAddress("Photon_jetIdx", Photon_jetIdx, &b_Photon_jetIdx); + fChain->SetBranchAddress("Photon_pdgId", Photon_pdgId, &b_Photon_pdgId); + fChain->SetBranchAddress("Photon_vidNestedWPBitmap", Photon_vidNestedWPBitmap, &b_Photon_vidNestedWPBitmap); + fChain->SetBranchAddress("Photon_electronVeto", Photon_electronVeto, &b_Photon_electronVeto); + fChain->SetBranchAddress("Photon_isScEtaEB", Photon_isScEtaEB, &b_Photon_isScEtaEB); + fChain->SetBranchAddress("Photon_isScEtaEE", Photon_isScEtaEE, &b_Photon_isScEtaEE); + fChain->SetBranchAddress("Photon_mvaID_WP80", Photon_mvaID_WP80, &b_Photon_mvaID_WP80); + fChain->SetBranchAddress("Photon_mvaID_WP90", Photon_mvaID_WP90, &b_Photon_mvaID_WP90); + fChain->SetBranchAddress("Photon_pixelSeed", Photon_pixelSeed, &b_Photon_pixelSeed); + fChain->SetBranchAddress("Photon_seedGain", Photon_seedGain, &b_Photon_seedGain); + fChain->SetBranchAddress("nPPSLocalTrack", &nPPSLocalTrack, &b_nPPSLocalTrack); + fChain->SetBranchAddress("PPSLocalTrack_x", PPSLocalTrack_x, &b_PPSLocalTrack_x); + fChain->SetBranchAddress("PPSLocalTrack_y", PPSLocalTrack_y, &b_PPSLocalTrack_y); + fChain->SetBranchAddress("PPSLocalTrack_time", PPSLocalTrack_time, &b_PPSLocalTrack_time); + fChain->SetBranchAddress("PPSLocalTrack_timeUnc", PPSLocalTrack_timeUnc, &b_PPSLocalTrack_timeUnc); + fChain->SetBranchAddress("PPSLocalTrack_multiRPProtonIdx", PPSLocalTrack_multiRPProtonIdx, &b_PPSLocalTrack_multiRPProtonIdx); + fChain->SetBranchAddress("PPSLocalTrack_singleRPProtonIdx", PPSLocalTrack_singleRPProtonIdx, &b_PPSLocalTrack_singleRPProtonIdx); + fChain->SetBranchAddress("PPSLocalTrack_decRPId", PPSLocalTrack_decRPId, &b_PPSLocalTrack_decRPId); + fChain->SetBranchAddress("PPSLocalTrack_rpType", PPSLocalTrack_rpType, &b_PPSLocalTrack_rpType); + fChain->SetBranchAddress("PuppiMET_phi", &PuppiMET_phi, &b_PuppiMET_phi); + fChain->SetBranchAddress("PuppiMET_phiJERDown", &PuppiMET_phiJERDown, &b_PuppiMET_phiJERDown); + fChain->SetBranchAddress("PuppiMET_phiJERUp", &PuppiMET_phiJERUp, &b_PuppiMET_phiJERUp); + fChain->SetBranchAddress("PuppiMET_phiJESDown", &PuppiMET_phiJESDown, &b_PuppiMET_phiJESDown); + fChain->SetBranchAddress("PuppiMET_phiJESUp", &PuppiMET_phiJESUp, &b_PuppiMET_phiJESUp); + fChain->SetBranchAddress("PuppiMET_phiUnclusteredDown", &PuppiMET_phiUnclusteredDown, &b_PuppiMET_phiUnclusteredDown); + fChain->SetBranchAddress("PuppiMET_phiUnclusteredUp", &PuppiMET_phiUnclusteredUp, &b_PuppiMET_phiUnclusteredUp); + fChain->SetBranchAddress("PuppiMET_pt", &PuppiMET_pt, &b_PuppiMET_pt); + fChain->SetBranchAddress("PuppiMET_ptJERDown", &PuppiMET_ptJERDown, &b_PuppiMET_ptJERDown); + fChain->SetBranchAddress("PuppiMET_ptJERUp", &PuppiMET_ptJERUp, &b_PuppiMET_ptJERUp); + fChain->SetBranchAddress("PuppiMET_ptJESDown", &PuppiMET_ptJESDown, &b_PuppiMET_ptJESDown); + fChain->SetBranchAddress("PuppiMET_ptJESUp", &PuppiMET_ptJESUp, &b_PuppiMET_ptJESUp); + fChain->SetBranchAddress("PuppiMET_ptUnclusteredDown", &PuppiMET_ptUnclusteredDown, &b_PuppiMET_ptUnclusteredDown); + fChain->SetBranchAddress("PuppiMET_ptUnclusteredUp", &PuppiMET_ptUnclusteredUp, &b_PuppiMET_ptUnclusteredUp); + fChain->SetBranchAddress("PuppiMET_sumEt", &PuppiMET_sumEt, &b_PuppiMET_sumEt); + fChain->SetBranchAddress("RawMET_phi", &RawMET_phi, &b_RawMET_phi); + fChain->SetBranchAddress("RawMET_pt", &RawMET_pt, &b_RawMET_pt); + fChain->SetBranchAddress("RawMET_sumEt", &RawMET_sumEt, &b_RawMET_sumEt); + fChain->SetBranchAddress("RawPuppiMET_phi", &RawPuppiMET_phi, &b_RawPuppiMET_phi); + fChain->SetBranchAddress("RawPuppiMET_pt", &RawPuppiMET_pt, &b_RawPuppiMET_pt); + fChain->SetBranchAddress("RawPuppiMET_sumEt", &RawPuppiMET_sumEt, &b_RawPuppiMET_sumEt); + fChain->SetBranchAddress("fixedGridRhoFastjetAll", &fixedGridRhoFastjetAll, &b_fixedGridRhoFastjetAll); + fChain->SetBranchAddress("fixedGridRhoFastjetCentral", &fixedGridRhoFastjetCentral, &b_fixedGridRhoFastjetCentral); + fChain->SetBranchAddress("fixedGridRhoFastjetCentralCalo", &fixedGridRhoFastjetCentralCalo, &b_fixedGridRhoFastjetCentralCalo); + fChain->SetBranchAddress("fixedGridRhoFastjetCentralChargedPileUp", &fixedGridRhoFastjetCentralChargedPileUp, &b_fixedGridRhoFastjetCentralChargedPileUp); + fChain->SetBranchAddress("fixedGridRhoFastjetCentralNeutral", &fixedGridRhoFastjetCentralNeutral, &b_fixedGridRhoFastjetCentralNeutral); + fChain->SetBranchAddress("nSoftActivityJet", &nSoftActivityJet, &b_nSoftActivityJet); + fChain->SetBranchAddress("SoftActivityJet_eta", SoftActivityJet_eta, &b_SoftActivityJet_eta); + fChain->SetBranchAddress("SoftActivityJet_phi", SoftActivityJet_phi, &b_SoftActivityJet_phi); + fChain->SetBranchAddress("SoftActivityJet_pt", SoftActivityJet_pt, &b_SoftActivityJet_pt); + fChain->SetBranchAddress("SoftActivityJetHT", &SoftActivityJetHT, &b_SoftActivityJetHT); + fChain->SetBranchAddress("SoftActivityJetHT10", &SoftActivityJetHT10, &b_SoftActivityJetHT10); + fChain->SetBranchAddress("SoftActivityJetHT2", &SoftActivityJetHT2, &b_SoftActivityJetHT2); + fChain->SetBranchAddress("SoftActivityJetHT5", &SoftActivityJetHT5, &b_SoftActivityJetHT5); + fChain->SetBranchAddress("SoftActivityJetNjets10", &SoftActivityJetNjets10, &b_SoftActivityJetNjets10); + fChain->SetBranchAddress("SoftActivityJetNjets2", &SoftActivityJetNjets2, &b_SoftActivityJetNjets2); + fChain->SetBranchAddress("SoftActivityJetNjets5", &SoftActivityJetNjets5, &b_SoftActivityJetNjets5); + fChain->SetBranchAddress("nProton_singleRP", &nProton_singleRP, &b_nProton_singleRP); + fChain->SetBranchAddress("Proton_singleRP_thetaY", Proton_singleRP_thetaY, &b_Proton_singleRP_thetaY); + fChain->SetBranchAddress("Proton_singleRP_xi", Proton_singleRP_xi, &b_Proton_singleRP_xi); + fChain->SetBranchAddress("Proton_singleRP_decRPId", Proton_singleRP_decRPId, &b_Proton_singleRP_decRPId); + fChain->SetBranchAddress("nSubJet", &nSubJet, &b_nSubJet); + fChain->SetBranchAddress("SubJet_btagCSVV2", SubJet_btagCSVV2, &b_SubJet_btagCSVV2); + fChain->SetBranchAddress("SubJet_btagDeepB", SubJet_btagDeepB, &b_SubJet_btagDeepB); + fChain->SetBranchAddress("SubJet_eta", SubJet_eta, &b_SubJet_eta); + fChain->SetBranchAddress("SubJet_mass", SubJet_mass, &b_SubJet_mass); + fChain->SetBranchAddress("SubJet_n2b1", SubJet_n2b1, &b_SubJet_n2b1); + fChain->SetBranchAddress("SubJet_n3b1", SubJet_n3b1, &b_SubJet_n3b1); + fChain->SetBranchAddress("SubJet_phi", SubJet_phi, &b_SubJet_phi); + fChain->SetBranchAddress("SubJet_pt", SubJet_pt, &b_SubJet_pt); + fChain->SetBranchAddress("SubJet_rawFactor", SubJet_rawFactor, &b_SubJet_rawFactor); + fChain->SetBranchAddress("SubJet_tau1", SubJet_tau1, &b_SubJet_tau1); + fChain->SetBranchAddress("SubJet_tau2", SubJet_tau2, &b_SubJet_tau2); + fChain->SetBranchAddress("SubJet_tau3", SubJet_tau3, &b_SubJet_tau3); + fChain->SetBranchAddress("SubJet_tau4", SubJet_tau4, &b_SubJet_tau4); + fChain->SetBranchAddress("nTau", &nTau, &b_nTau); + fChain->SetBranchAddress("Tau_chargedIso", Tau_chargedIso, &b_Tau_chargedIso); + fChain->SetBranchAddress("Tau_dxy", Tau_dxy, &b_Tau_dxy); + fChain->SetBranchAddress("Tau_dz", Tau_dz, &b_Tau_dz); + fChain->SetBranchAddress("Tau_eta", Tau_eta, &b_Tau_eta); + fChain->SetBranchAddress("Tau_leadTkDeltaEta", Tau_leadTkDeltaEta, &b_Tau_leadTkDeltaEta); + fChain->SetBranchAddress("Tau_leadTkDeltaPhi", Tau_leadTkDeltaPhi, &b_Tau_leadTkDeltaPhi); + fChain->SetBranchAddress("Tau_leadTkPtOverTauPt", Tau_leadTkPtOverTauPt, &b_Tau_leadTkPtOverTauPt); + fChain->SetBranchAddress("Tau_mass", Tau_mass, &b_Tau_mass); + fChain->SetBranchAddress("Tau_neutralIso", Tau_neutralIso, &b_Tau_neutralIso); + fChain->SetBranchAddress("Tau_phi", Tau_phi, &b_Tau_phi); + fChain->SetBranchAddress("Tau_photonsOutsideSignalCone", Tau_photonsOutsideSignalCone, &b_Tau_photonsOutsideSignalCone); + fChain->SetBranchAddress("Tau_pt", Tau_pt, &b_Tau_pt); + fChain->SetBranchAddress("Tau_puCorr", Tau_puCorr, &b_Tau_puCorr); + fChain->SetBranchAddress("Tau_rawDeepTau2017v2p1VSe", Tau_rawDeepTau2017v2p1VSe, &b_Tau_rawDeepTau2017v2p1VSe); + fChain->SetBranchAddress("Tau_rawDeepTau2017v2p1VSjet", Tau_rawDeepTau2017v2p1VSjet, &b_Tau_rawDeepTau2017v2p1VSjet); + fChain->SetBranchAddress("Tau_rawDeepTau2017v2p1VSmu", Tau_rawDeepTau2017v2p1VSmu, &b_Tau_rawDeepTau2017v2p1VSmu); + fChain->SetBranchAddress("Tau_rawIso", Tau_rawIso, &b_Tau_rawIso); + fChain->SetBranchAddress("Tau_rawIsodR03", Tau_rawIsodR03, &b_Tau_rawIsodR03); + fChain->SetBranchAddress("Tau_charge", Tau_charge, &b_Tau_charge); + fChain->SetBranchAddress("Tau_decayMode", Tau_decayMode, &b_Tau_decayMode); + fChain->SetBranchAddress("Tau_jetIdx", Tau_jetIdx, &b_Tau_jetIdx); + fChain->SetBranchAddress("Tau_idAntiEleDeadECal", Tau_idAntiEleDeadECal, &b_Tau_idAntiEleDeadECal); + fChain->SetBranchAddress("Tau_idAntiMu", Tau_idAntiMu, &b_Tau_idAntiMu); + fChain->SetBranchAddress("Tau_idDecayModeOldDMs", Tau_idDecayModeOldDMs, &b_Tau_idDecayModeOldDMs); + fChain->SetBranchAddress("Tau_idDeepTau2017v2p1VSe", Tau_idDeepTau2017v2p1VSe, &b_Tau_idDeepTau2017v2p1VSe); + fChain->SetBranchAddress("Tau_idDeepTau2017v2p1VSjet", Tau_idDeepTau2017v2p1VSjet, &b_Tau_idDeepTau2017v2p1VSjet); + fChain->SetBranchAddress("Tau_idDeepTau2017v2p1VSmu", Tau_idDeepTau2017v2p1VSmu, &b_Tau_idDeepTau2017v2p1VSmu); + fChain->SetBranchAddress("TkMET_phi", &TkMET_phi, &b_TkMET_phi); + fChain->SetBranchAddress("TkMET_pt", &TkMET_pt, &b_TkMET_pt); + fChain->SetBranchAddress("TkMET_sumEt", &TkMET_sumEt, &b_TkMET_sumEt); + fChain->SetBranchAddress("nTrigObj", &nTrigObj, &b_nTrigObj); + fChain->SetBranchAddress("TrigObj_pt", TrigObj_pt, &b_TrigObj_pt); + fChain->SetBranchAddress("TrigObj_eta", TrigObj_eta, &b_TrigObj_eta); + fChain->SetBranchAddress("TrigObj_phi", TrigObj_phi, &b_TrigObj_phi); + fChain->SetBranchAddress("TrigObj_l1pt", TrigObj_l1pt, &b_TrigObj_l1pt); + fChain->SetBranchAddress("TrigObj_l1pt_2", TrigObj_l1pt_2, &b_TrigObj_l1pt_2); + fChain->SetBranchAddress("TrigObj_l2pt", TrigObj_l2pt, &b_TrigObj_l2pt); + fChain->SetBranchAddress("TrigObj_id", TrigObj_id, &b_TrigObj_id); + fChain->SetBranchAddress("TrigObj_l1iso", TrigObj_l1iso, &b_TrigObj_l1iso); + fChain->SetBranchAddress("TrigObj_l1charge", TrigObj_l1charge, &b_TrigObj_l1charge); + fChain->SetBranchAddress("TrigObj_filterBits", TrigObj_filterBits, &b_TrigObj_filterBits); + fChain->SetBranchAddress("nOtherPV", &nOtherPV, &b_nOtherPV); + fChain->SetBranchAddress("OtherPV_z", OtherPV_z, &b_OtherPV_z); + fChain->SetBranchAddress("PV_ndof", &PV_ndof, &b_PV_ndof); + fChain->SetBranchAddress("PV_x", &PV_x, &b_PV_x); + fChain->SetBranchAddress("PV_y", &PV_y, &b_PV_y); + fChain->SetBranchAddress("PV_z", &PV_z, &b_PV_z); + fChain->SetBranchAddress("PV_chi2", &PV_chi2, &b_PV_chi2); + fChain->SetBranchAddress("PV_score", &PV_score, &b_PV_score); + fChain->SetBranchAddress("PV_npvs", &PV_npvs, &b_PV_npvs); + fChain->SetBranchAddress("PV_npvsGood", &PV_npvsGood, &b_PV_npvsGood); + fChain->SetBranchAddress("nSV", &nSV, &b_nSV); + fChain->SetBranchAddress("SV_dlen", SV_dlen, &b_SV_dlen); + fChain->SetBranchAddress("SV_dlenSig", SV_dlenSig, &b_SV_dlenSig); + fChain->SetBranchAddress("SV_dxy", SV_dxy, &b_SV_dxy); + fChain->SetBranchAddress("SV_dxySig", SV_dxySig, &b_SV_dxySig); + fChain->SetBranchAddress("SV_pAngle", SV_pAngle, &b_SV_pAngle); + fChain->SetBranchAddress("SV_charge", SV_charge, &b_SV_charge); + fChain->SetBranchAddress("Electron_cleanmask", Electron_cleanmask, &b_Electron_cleanmask); + fChain->SetBranchAddress("Jet_cleanmask", Jet_cleanmask, &b_Jet_cleanmask); + fChain->SetBranchAddress("Muon_cleanmask", Muon_cleanmask, &b_Muon_cleanmask); + fChain->SetBranchAddress("Photon_cleanmask", Photon_cleanmask, &b_Photon_cleanmask); + fChain->SetBranchAddress("Tau_cleanmask", Tau_cleanmask, &b_Tau_cleanmask); + fChain->SetBranchAddress("SV_chi2", SV_chi2, &b_SV_chi2); + fChain->SetBranchAddress("SV_eta", SV_eta, &b_SV_eta); + fChain->SetBranchAddress("SV_mass", SV_mass, &b_SV_mass); + fChain->SetBranchAddress("SV_ndof", SV_ndof, &b_SV_ndof); + fChain->SetBranchAddress("SV_phi", SV_phi, &b_SV_phi); + fChain->SetBranchAddress("SV_pt", SV_pt, &b_SV_pt); + fChain->SetBranchAddress("SV_x", SV_x, &b_SV_x); + fChain->SetBranchAddress("SV_y", SV_y, &b_SV_y); + fChain->SetBranchAddress("SV_z", SV_z, &b_SV_z); + fChain->SetBranchAddress("SV_ntracks", SV_ntracks, &b_SV_ntracks); + fChain->SetBranchAddress("L1_AlwaysTrue", &L1_AlwaysTrue, &b_L1_AlwaysTrue); + fChain->SetBranchAddress("L1_BPTX_AND_Ref1_VME", &L1_BPTX_AND_Ref1_VME, &b_L1_BPTX_AND_Ref1_VME); + fChain->SetBranchAddress("L1_BPTX_AND_Ref3_VME", &L1_BPTX_AND_Ref3_VME, &b_L1_BPTX_AND_Ref3_VME); + fChain->SetBranchAddress("L1_BPTX_AND_Ref4_VME", &L1_BPTX_AND_Ref4_VME, &b_L1_BPTX_AND_Ref4_VME); + fChain->SetBranchAddress("L1_BPTX_BeamGas_B1_VME", &L1_BPTX_BeamGas_B1_VME, &b_L1_BPTX_BeamGas_B1_VME); + fChain->SetBranchAddress("L1_BPTX_BeamGas_B2_VME", &L1_BPTX_BeamGas_B2_VME, &b_L1_BPTX_BeamGas_B2_VME); + fChain->SetBranchAddress("L1_BPTX_BeamGas_Ref1_VME", &L1_BPTX_BeamGas_Ref1_VME, &b_L1_BPTX_BeamGas_Ref1_VME); + fChain->SetBranchAddress("L1_BPTX_BeamGas_Ref2_VME", &L1_BPTX_BeamGas_Ref2_VME, &b_L1_BPTX_BeamGas_Ref2_VME); + fChain->SetBranchAddress("L1_BPTX_NotOR_VME", &L1_BPTX_NotOR_VME, &b_L1_BPTX_NotOR_VME); + fChain->SetBranchAddress("L1_BPTX_OR_Ref3_VME", &L1_BPTX_OR_Ref3_VME, &b_L1_BPTX_OR_Ref3_VME); + fChain->SetBranchAddress("L1_BPTX_OR_Ref4_VME", &L1_BPTX_OR_Ref4_VME, &b_L1_BPTX_OR_Ref4_VME); + fChain->SetBranchAddress("L1_BPTX_RefAND_VME", &L1_BPTX_RefAND_VME, &b_L1_BPTX_RefAND_VME); + fChain->SetBranchAddress("L1_BptxMinus", &L1_BptxMinus, &b_L1_BptxMinus); + fChain->SetBranchAddress("L1_BptxOR", &L1_BptxOR, &b_L1_BptxOR); + fChain->SetBranchAddress("L1_BptxPlus", &L1_BptxPlus, &b_L1_BptxPlus); + fChain->SetBranchAddress("L1_BptxXOR", &L1_BptxXOR, &b_L1_BptxXOR); + fChain->SetBranchAddress("L1_CDC_SingleMu_3_er1p2_TOP120_DPHI2p618_3p142", &L1_CDC_SingleMu_3_er1p2_TOP120_DPHI2p618_3p142, &b_L1_CDC_SingleMu_3_er1p2_TOP120_DPHI2p618_3p142); + fChain->SetBranchAddress("L1_DoubleEG6_HTT240er", &L1_DoubleEG6_HTT240er, &b_L1_DoubleEG6_HTT240er); + fChain->SetBranchAddress("L1_DoubleEG6_HTT250er", &L1_DoubleEG6_HTT250er, &b_L1_DoubleEG6_HTT250er); + fChain->SetBranchAddress("L1_DoubleEG6_HTT255er", &L1_DoubleEG6_HTT255er, &b_L1_DoubleEG6_HTT255er); + fChain->SetBranchAddress("L1_DoubleEG6_HTT270er", &L1_DoubleEG6_HTT270er, &b_L1_DoubleEG6_HTT270er); + fChain->SetBranchAddress("L1_DoubleEG6_HTT300er", &L1_DoubleEG6_HTT300er, &b_L1_DoubleEG6_HTT300er); + fChain->SetBranchAddress("L1_DoubleEG8er2p6_HTT255er", &L1_DoubleEG8er2p6_HTT255er, &b_L1_DoubleEG8er2p6_HTT255er); + fChain->SetBranchAddress("L1_DoubleEG8er2p6_HTT270er", &L1_DoubleEG8er2p6_HTT270er, &b_L1_DoubleEG8er2p6_HTT270er); + fChain->SetBranchAddress("L1_DoubleEG8er2p6_HTT300er", &L1_DoubleEG8er2p6_HTT300er, &b_L1_DoubleEG8er2p6_HTT300er); + fChain->SetBranchAddress("L1_DoubleEG_22_10", &L1_DoubleEG_22_10, &b_L1_DoubleEG_22_10); + fChain->SetBranchAddress("L1_DoubleEG_25_12", &L1_DoubleEG_25_12, &b_L1_DoubleEG_25_12); + fChain->SetBranchAddress("L1_DoubleEG_25_14", &L1_DoubleEG_25_14, &b_L1_DoubleEG_25_14); + fChain->SetBranchAddress("L1_DoubleEG_LooseIso23_10", &L1_DoubleEG_LooseIso23_10, &b_L1_DoubleEG_LooseIso23_10); + fChain->SetBranchAddress("L1_DoubleEG_LooseIso24_10", &L1_DoubleEG_LooseIso24_10, &b_L1_DoubleEG_LooseIso24_10); + fChain->SetBranchAddress("L1_DoubleIsoTau32er2p1", &L1_DoubleIsoTau32er2p1, &b_L1_DoubleIsoTau32er2p1); + fChain->SetBranchAddress("L1_DoubleIsoTau34er2p1", &L1_DoubleIsoTau34er2p1, &b_L1_DoubleIsoTau34er2p1); + fChain->SetBranchAddress("L1_DoubleIsoTau36er2p1", &L1_DoubleIsoTau36er2p1, &b_L1_DoubleIsoTau36er2p1); + fChain->SetBranchAddress("L1_DoubleJet100er2p3_dEta_Max1p6", &L1_DoubleJet100er2p3_dEta_Max1p6, &b_L1_DoubleJet100er2p3_dEta_Max1p6); + fChain->SetBranchAddress("L1_DoubleJet100er2p7", &L1_DoubleJet100er2p7, &b_L1_DoubleJet100er2p7); + fChain->SetBranchAddress("L1_DoubleJet112er2p3_dEta_Max1p6", &L1_DoubleJet112er2p3_dEta_Max1p6, &b_L1_DoubleJet112er2p3_dEta_Max1p6); + fChain->SetBranchAddress("L1_DoubleJet112er2p7", &L1_DoubleJet112er2p7, &b_L1_DoubleJet112er2p7); + fChain->SetBranchAddress("L1_DoubleJet120er2p7", &L1_DoubleJet120er2p7, &b_L1_DoubleJet120er2p7); + fChain->SetBranchAddress("L1_DoubleJet150er2p7", &L1_DoubleJet150er2p7, &b_L1_DoubleJet150er2p7); + fChain->SetBranchAddress("L1_DoubleJet30_Mass_Min300_dEta_Max1p5", &L1_DoubleJet30_Mass_Min300_dEta_Max1p5, &b_L1_DoubleJet30_Mass_Min300_dEta_Max1p5); + fChain->SetBranchAddress("L1_DoubleJet30_Mass_Min320_dEta_Max1p5", &L1_DoubleJet30_Mass_Min320_dEta_Max1p5, &b_L1_DoubleJet30_Mass_Min320_dEta_Max1p5); + fChain->SetBranchAddress("L1_DoubleJet30_Mass_Min340_dEta_Max1p5", &L1_DoubleJet30_Mass_Min340_dEta_Max1p5, &b_L1_DoubleJet30_Mass_Min340_dEta_Max1p5); + fChain->SetBranchAddress("L1_DoubleJet30_Mass_Min360_dEta_Max1p5", &L1_DoubleJet30_Mass_Min360_dEta_Max1p5, &b_L1_DoubleJet30_Mass_Min360_dEta_Max1p5); + fChain->SetBranchAddress("L1_DoubleJet30_Mass_Min380_dEta_Max1p5", &L1_DoubleJet30_Mass_Min380_dEta_Max1p5, &b_L1_DoubleJet30_Mass_Min380_dEta_Max1p5); + fChain->SetBranchAddress("L1_DoubleJet30_Mass_Min400_dEta_Max1p5", &L1_DoubleJet30_Mass_Min400_dEta_Max1p5, &b_L1_DoubleJet30_Mass_Min400_dEta_Max1p5); + fChain->SetBranchAddress("L1_DoubleJet35_rmovlp_IsoTau45_Mass_Min450", &L1_DoubleJet35_rmovlp_IsoTau45_Mass_Min450, &b_L1_DoubleJet35_rmovlp_IsoTau45_Mass_Min450); + fChain->SetBranchAddress("L1_DoubleJet40er2p7", &L1_DoubleJet40er2p7, &b_L1_DoubleJet40er2p7); + fChain->SetBranchAddress("L1_DoubleJet50er2p7", &L1_DoubleJet50er2p7, &b_L1_DoubleJet50er2p7); + fChain->SetBranchAddress("L1_DoubleJet60er2p7", &L1_DoubleJet60er2p7, &b_L1_DoubleJet60er2p7); + fChain->SetBranchAddress("L1_DoubleJet60er2p7_ETM100", &L1_DoubleJet60er2p7_ETM100, &b_L1_DoubleJet60er2p7_ETM100); + fChain->SetBranchAddress("L1_DoubleJet60er2p7_ETM60", &L1_DoubleJet60er2p7_ETM60, &b_L1_DoubleJet60er2p7_ETM60); + fChain->SetBranchAddress("L1_DoubleJet60er2p7_ETM70", &L1_DoubleJet60er2p7_ETM70, &b_L1_DoubleJet60er2p7_ETM70); + fChain->SetBranchAddress("L1_DoubleJet60er2p7_ETM80", &L1_DoubleJet60er2p7_ETM80, &b_L1_DoubleJet60er2p7_ETM80); + fChain->SetBranchAddress("L1_DoubleJet60er2p7_ETM90", &L1_DoubleJet60er2p7_ETM90, &b_L1_DoubleJet60er2p7_ETM90); + fChain->SetBranchAddress("L1_DoubleJet80er2p7", &L1_DoubleJet80er2p7, &b_L1_DoubleJet80er2p7); + fChain->SetBranchAddress("L1_DoubleJet_100_30_DoubleJet30_Mass_Min620", &L1_DoubleJet_100_30_DoubleJet30_Mass_Min620, &b_L1_DoubleJet_100_30_DoubleJet30_Mass_Min620); + fChain->SetBranchAddress("L1_DoubleJet_100_35_DoubleJet35_Mass_Min620", &L1_DoubleJet_100_35_DoubleJet35_Mass_Min620, &b_L1_DoubleJet_100_35_DoubleJet35_Mass_Min620); + fChain->SetBranchAddress("L1_DoubleJet_110_35_DoubleJet35_Mass_Min620", &L1_DoubleJet_110_35_DoubleJet35_Mass_Min620, &b_L1_DoubleJet_110_35_DoubleJet35_Mass_Min620); + fChain->SetBranchAddress("L1_DoubleJet_110_40_DoubleJet40_Mass_Min620", &L1_DoubleJet_110_40_DoubleJet40_Mass_Min620, &b_L1_DoubleJet_110_40_DoubleJet40_Mass_Min620); + fChain->SetBranchAddress("L1_DoubleJet_115_35_DoubleJet35_Mass_Min620", &L1_DoubleJet_115_35_DoubleJet35_Mass_Min620, &b_L1_DoubleJet_115_35_DoubleJet35_Mass_Min620); + fChain->SetBranchAddress("L1_DoubleJet_115_40_DoubleJet40_Mass_Min620", &L1_DoubleJet_115_40_DoubleJet40_Mass_Min620, &b_L1_DoubleJet_115_40_DoubleJet40_Mass_Min620); + fChain->SetBranchAddress("L1_DoubleJet_90_30_DoubleJet30_Mass_Min620", &L1_DoubleJet_90_30_DoubleJet30_Mass_Min620, &b_L1_DoubleJet_90_30_DoubleJet30_Mass_Min620); + fChain->SetBranchAddress("L1_DoubleLooseIsoEG22er2p1", &L1_DoubleLooseIsoEG22er2p1, &b_L1_DoubleLooseIsoEG22er2p1); + fChain->SetBranchAddress("L1_DoubleLooseIsoEG24er2p1", &L1_DoubleLooseIsoEG24er2p1, &b_L1_DoubleLooseIsoEG24er2p1); + fChain->SetBranchAddress("L1_DoubleMu0", &L1_DoubleMu0, &b_L1_DoubleMu0); + fChain->SetBranchAddress("L1_DoubleMu0_SQ", &L1_DoubleMu0_SQ, &b_L1_DoubleMu0_SQ); + fChain->SetBranchAddress("L1_DoubleMu0_SQ_OS", &L1_DoubleMu0_SQ_OS, &b_L1_DoubleMu0_SQ_OS); + fChain->SetBranchAddress("L1_DoubleMu0er1p4_SQ_OS_dR_Max1p4", &L1_DoubleMu0er1p4_SQ_OS_dR_Max1p4, &b_L1_DoubleMu0er1p4_SQ_OS_dR_Max1p4); + fChain->SetBranchAddress("L1_DoubleMu0er1p4_dEta_Max1p8_OS", &L1_DoubleMu0er1p4_dEta_Max1p8_OS, &b_L1_DoubleMu0er1p4_dEta_Max1p8_OS); + fChain->SetBranchAddress("L1_DoubleMu0er1p5_SQ_OS", &L1_DoubleMu0er1p5_SQ_OS, &b_L1_DoubleMu0er1p5_SQ_OS); + fChain->SetBranchAddress("L1_DoubleMu0er1p5_SQ_OS_dR_Max1p4", &L1_DoubleMu0er1p5_SQ_OS_dR_Max1p4, &b_L1_DoubleMu0er1p5_SQ_OS_dR_Max1p4); + fChain->SetBranchAddress("L1_DoubleMu0er1p5_SQ_dR_Max1p4", &L1_DoubleMu0er1p5_SQ_dR_Max1p4, &b_L1_DoubleMu0er1p5_SQ_dR_Max1p4); + fChain->SetBranchAddress("L1_DoubleMu0er2_SQ_dR_Max1p4", &L1_DoubleMu0er2_SQ_dR_Max1p4, &b_L1_DoubleMu0er2_SQ_dR_Max1p4); + fChain->SetBranchAddress("L1_DoubleMu18er2p1", &L1_DoubleMu18er2p1, &b_L1_DoubleMu18er2p1); + fChain->SetBranchAddress("L1_DoubleMu22er2p1", &L1_DoubleMu22er2p1, &b_L1_DoubleMu22er2p1); + fChain->SetBranchAddress("L1_DoubleMu3_OS_DoubleEG7p5Upsilon", &L1_DoubleMu3_OS_DoubleEG7p5Upsilon, &b_L1_DoubleMu3_OS_DoubleEG7p5Upsilon); + fChain->SetBranchAddress("L1_DoubleMu3_SQ_ETMHF40_Jet60_OR_DoubleJet30", &L1_DoubleMu3_SQ_ETMHF40_Jet60_OR_DoubleJet30, &b_L1_DoubleMu3_SQ_ETMHF40_Jet60_OR_DoubleJet30); + fChain->SetBranchAddress("L1_DoubleMu3_SQ_ETMHF50_Jet60_OR_DoubleJet30", &L1_DoubleMu3_SQ_ETMHF50_Jet60_OR_DoubleJet30, &b_L1_DoubleMu3_SQ_ETMHF50_Jet60_OR_DoubleJet30); + fChain->SetBranchAddress("L1_DoubleMu3_SQ_ETMHF60_Jet60_OR_DoubleJet30", &L1_DoubleMu3_SQ_ETMHF60_Jet60_OR_DoubleJet30, &b_L1_DoubleMu3_SQ_ETMHF60_Jet60_OR_DoubleJet30); + fChain->SetBranchAddress("L1_DoubleMu3_SQ_ETMHF70_Jet60_OR_DoubleJet30", &L1_DoubleMu3_SQ_ETMHF70_Jet60_OR_DoubleJet30, &b_L1_DoubleMu3_SQ_ETMHF70_Jet60_OR_DoubleJet30); + fChain->SetBranchAddress("L1_DoubleMu3_SQ_ETMHF80_Jet60_OR_DoubleJet30", &L1_DoubleMu3_SQ_ETMHF80_Jet60_OR_DoubleJet30, &b_L1_DoubleMu3_SQ_ETMHF80_Jet60_OR_DoubleJet30); + fChain->SetBranchAddress("L1_DoubleMu3_SQ_HTT100er", &L1_DoubleMu3_SQ_HTT100er, &b_L1_DoubleMu3_SQ_HTT100er); + fChain->SetBranchAddress("L1_DoubleMu3_SQ_HTT200er", &L1_DoubleMu3_SQ_HTT200er, &b_L1_DoubleMu3_SQ_HTT200er); + fChain->SetBranchAddress("L1_DoubleMu3_SQ_HTT220er", &L1_DoubleMu3_SQ_HTT220er, &b_L1_DoubleMu3_SQ_HTT220er); + fChain->SetBranchAddress("L1_DoubleMu3_SQ_HTT240er", &L1_DoubleMu3_SQ_HTT240er, &b_L1_DoubleMu3_SQ_HTT240er); + fChain->SetBranchAddress("L1_DoubleMu4_OS_EG12", &L1_DoubleMu4_OS_EG12, &b_L1_DoubleMu4_OS_EG12); + fChain->SetBranchAddress("L1_DoubleMu4_SQ_OS", &L1_DoubleMu4_SQ_OS, &b_L1_DoubleMu4_SQ_OS); + fChain->SetBranchAddress("L1_DoubleMu4_SQ_OS_dR_Max1p2", &L1_DoubleMu4_SQ_OS_dR_Max1p2, &b_L1_DoubleMu4_SQ_OS_dR_Max1p2); + fChain->SetBranchAddress("L1_DoubleMu4p5_SQ", &L1_DoubleMu4p5_SQ, &b_L1_DoubleMu4p5_SQ); + fChain->SetBranchAddress("L1_DoubleMu4p5_SQ_OS", &L1_DoubleMu4p5_SQ_OS, &b_L1_DoubleMu4p5_SQ_OS); + fChain->SetBranchAddress("L1_DoubleMu4p5_SQ_OS_dR_Max1p2", &L1_DoubleMu4p5_SQ_OS_dR_Max1p2, &b_L1_DoubleMu4p5_SQ_OS_dR_Max1p2); + fChain->SetBranchAddress("L1_DoubleMu4p5er2p0_SQ_OS", &L1_DoubleMu4p5er2p0_SQ_OS, &b_L1_DoubleMu4p5er2p0_SQ_OS); + fChain->SetBranchAddress("L1_DoubleMu4p5er2p0_SQ_OS_Mass7to18", &L1_DoubleMu4p5er2p0_SQ_OS_Mass7to18, &b_L1_DoubleMu4p5er2p0_SQ_OS_Mass7to18); + fChain->SetBranchAddress("L1_DoubleMu5Upsilon_OS_DoubleEG3", &L1_DoubleMu5Upsilon_OS_DoubleEG3, &b_L1_DoubleMu5Upsilon_OS_DoubleEG3); + fChain->SetBranchAddress("L1_DoubleMu5_OS_EG12", &L1_DoubleMu5_OS_EG12, &b_L1_DoubleMu5_OS_EG12); + fChain->SetBranchAddress("L1_DoubleMu5_SQ_OS", &L1_DoubleMu5_SQ_OS, &b_L1_DoubleMu5_SQ_OS); + fChain->SetBranchAddress("L1_DoubleMu5_SQ_OS_Mass7to18", &L1_DoubleMu5_SQ_OS_Mass7to18, &b_L1_DoubleMu5_SQ_OS_Mass7to18); + fChain->SetBranchAddress("L1_DoubleMu6_SQ_OS", &L1_DoubleMu6_SQ_OS, &b_L1_DoubleMu6_SQ_OS); + fChain->SetBranchAddress("L1_DoubleMu7_EG7", &L1_DoubleMu7_EG7, &b_L1_DoubleMu7_EG7); + fChain->SetBranchAddress("L1_DoubleMu7_SQ_EG7", &L1_DoubleMu7_SQ_EG7, &b_L1_DoubleMu7_SQ_EG7); + fChain->SetBranchAddress("L1_DoubleMu8_SQ", &L1_DoubleMu8_SQ, &b_L1_DoubleMu8_SQ); + fChain->SetBranchAddress("L1_DoubleMu_10_0_dEta_Max1p8", &L1_DoubleMu_10_0_dEta_Max1p8, &b_L1_DoubleMu_10_0_dEta_Max1p8); + fChain->SetBranchAddress("L1_DoubleMu_12_5", &L1_DoubleMu_12_5, &b_L1_DoubleMu_12_5); + fChain->SetBranchAddress("L1_DoubleMu_15_5_SQ", &L1_DoubleMu_15_5_SQ, &b_L1_DoubleMu_15_5_SQ); + fChain->SetBranchAddress("L1_DoubleMu_15_7", &L1_DoubleMu_15_7, &b_L1_DoubleMu_15_7); + fChain->SetBranchAddress("L1_DoubleMu_20_2_SQ_Mass_Max20", &L1_DoubleMu_20_2_SQ_Mass_Max20, &b_L1_DoubleMu_20_2_SQ_Mass_Max20); + fChain->SetBranchAddress("L1_DoubleTau70er2p1", &L1_DoubleTau70er2p1, &b_L1_DoubleTau70er2p1); + fChain->SetBranchAddress("L1_EG25er2p1_HTT125er", &L1_EG25er2p1_HTT125er, &b_L1_EG25er2p1_HTT125er); + fChain->SetBranchAddress("L1_EG27er2p1_HTT200er", &L1_EG27er2p1_HTT200er, &b_L1_EG27er2p1_HTT200er); + fChain->SetBranchAddress("L1_EG40er2p1_Tau20er2p1_dR_Min0p3", &L1_EG40er2p1_Tau20er2p1_dR_Min0p3, &b_L1_EG40er2p1_Tau20er2p1_dR_Min0p3); + fChain->SetBranchAddress("L1_ETM100", &L1_ETM100, &b_L1_ETM100); + fChain->SetBranchAddress("L1_ETM100_Jet60_dPhi_Min0p4", &L1_ETM100_Jet60_dPhi_Min0p4, &b_L1_ETM100_Jet60_dPhi_Min0p4); + fChain->SetBranchAddress("L1_ETM105", &L1_ETM105, &b_L1_ETM105); + fChain->SetBranchAddress("L1_ETM110", &L1_ETM110, &b_L1_ETM110); + fChain->SetBranchAddress("L1_ETM110_Jet60_dPhi_Min0p4", &L1_ETM110_Jet60_dPhi_Min0p4, &b_L1_ETM110_Jet60_dPhi_Min0p4); + fChain->SetBranchAddress("L1_ETM115", &L1_ETM115, &b_L1_ETM115); + fChain->SetBranchAddress("L1_ETM120", &L1_ETM120, &b_L1_ETM120); + fChain->SetBranchAddress("L1_ETM150", &L1_ETM150, &b_L1_ETM150); + fChain->SetBranchAddress("L1_ETM30", &L1_ETM30, &b_L1_ETM30); + fChain->SetBranchAddress("L1_ETM40", &L1_ETM40, &b_L1_ETM40); + fChain->SetBranchAddress("L1_ETM50", &L1_ETM50, &b_L1_ETM50); + fChain->SetBranchAddress("L1_ETM60", &L1_ETM60, &b_L1_ETM60); + fChain->SetBranchAddress("L1_ETM70", &L1_ETM70, &b_L1_ETM70); + fChain->SetBranchAddress("L1_ETM75", &L1_ETM75, &b_L1_ETM75); + fChain->SetBranchAddress("L1_ETM75_Jet60_dPhi_Min0p4", &L1_ETM75_Jet60_dPhi_Min0p4, &b_L1_ETM75_Jet60_dPhi_Min0p4); + fChain->SetBranchAddress("L1_ETM80", &L1_ETM80, &b_L1_ETM80); + fChain->SetBranchAddress("L1_ETM80_Jet60_dPhi_Min0p4", &L1_ETM80_Jet60_dPhi_Min0p4, &b_L1_ETM80_Jet60_dPhi_Min0p4); + fChain->SetBranchAddress("L1_ETM85", &L1_ETM85, &b_L1_ETM85); + fChain->SetBranchAddress("L1_ETM90", &L1_ETM90, &b_L1_ETM90); + fChain->SetBranchAddress("L1_ETM90_Jet60_dPhi_Min0p4", &L1_ETM90_Jet60_dPhi_Min0p4, &b_L1_ETM90_Jet60_dPhi_Min0p4); + fChain->SetBranchAddress("L1_ETM95", &L1_ETM95, &b_L1_ETM95); + fChain->SetBranchAddress("L1_ETMHF100", &L1_ETMHF100, &b_L1_ETMHF100); + fChain->SetBranchAddress("L1_ETMHF100_HTT60er", &L1_ETMHF100_HTT60er, &b_L1_ETMHF100_HTT60er); + fChain->SetBranchAddress("L1_ETMHF100_Jet60_OR_DiJet30woTT28", &L1_ETMHF100_Jet60_OR_DiJet30woTT28, &b_L1_ETMHF100_Jet60_OR_DiJet30woTT28); + fChain->SetBranchAddress("L1_ETMHF100_Jet60_OR_DoubleJet30", &L1_ETMHF100_Jet60_OR_DoubleJet30, &b_L1_ETMHF100_Jet60_OR_DoubleJet30); + fChain->SetBranchAddress("L1_ETMHF100_Jet90_OR_DoubleJet45_OR_TripleJet30", &L1_ETMHF100_Jet90_OR_DoubleJet45_OR_TripleJet30, &b_L1_ETMHF100_Jet90_OR_DoubleJet45_OR_TripleJet30); + fChain->SetBranchAddress("L1_ETMHF110", &L1_ETMHF110, &b_L1_ETMHF110); + fChain->SetBranchAddress("L1_ETMHF110_HTT60er", &L1_ETMHF110_HTT60er, &b_L1_ETMHF110_HTT60er); + fChain->SetBranchAddress("L1_ETMHF110_Jet60_OR_DiJet30woTT28", &L1_ETMHF110_Jet60_OR_DiJet30woTT28, &b_L1_ETMHF110_Jet60_OR_DiJet30woTT28); + fChain->SetBranchAddress("L1_ETMHF110_Jet90_OR_DoubleJet45_OR_TripleJet30", &L1_ETMHF110_Jet90_OR_DoubleJet45_OR_TripleJet30, &b_L1_ETMHF110_Jet90_OR_DoubleJet45_OR_TripleJet30); + fChain->SetBranchAddress("L1_ETMHF120", &L1_ETMHF120, &b_L1_ETMHF120); + fChain->SetBranchAddress("L1_ETMHF120_HTT60er", &L1_ETMHF120_HTT60er, &b_L1_ETMHF120_HTT60er); + fChain->SetBranchAddress("L1_ETMHF120_Jet60_OR_DiJet30woTT28", &L1_ETMHF120_Jet60_OR_DiJet30woTT28, &b_L1_ETMHF120_Jet60_OR_DiJet30woTT28); + fChain->SetBranchAddress("L1_ETMHF150", &L1_ETMHF150, &b_L1_ETMHF150); + fChain->SetBranchAddress("L1_ETMHF70", &L1_ETMHF70, &b_L1_ETMHF70); + fChain->SetBranchAddress("L1_ETMHF70_Jet90_OR_DoubleJet45_OR_TripleJet30", &L1_ETMHF70_Jet90_OR_DoubleJet45_OR_TripleJet30, &b_L1_ETMHF70_Jet90_OR_DoubleJet45_OR_TripleJet30); + fChain->SetBranchAddress("L1_ETMHF80", &L1_ETMHF80, &b_L1_ETMHF80); + fChain->SetBranchAddress("L1_ETMHF80_HTT60er", &L1_ETMHF80_HTT60er, &b_L1_ETMHF80_HTT60er); + fChain->SetBranchAddress("L1_ETMHF80_Jet90_OR_DoubleJet45_OR_TripleJet30", &L1_ETMHF80_Jet90_OR_DoubleJet45_OR_TripleJet30, &b_L1_ETMHF80_Jet90_OR_DoubleJet45_OR_TripleJet30); + fChain->SetBranchAddress("L1_ETMHF90", &L1_ETMHF90, &b_L1_ETMHF90); + fChain->SetBranchAddress("L1_ETMHF90_HTT60er", &L1_ETMHF90_HTT60er, &b_L1_ETMHF90_HTT60er); + fChain->SetBranchAddress("L1_ETMHF90_Jet90_OR_DoubleJet45_OR_TripleJet30", &L1_ETMHF90_Jet90_OR_DoubleJet45_OR_TripleJet30, &b_L1_ETMHF90_Jet90_OR_DoubleJet45_OR_TripleJet30); + fChain->SetBranchAddress("L1_ETT100_BptxAND", &L1_ETT100_BptxAND, &b_L1_ETT100_BptxAND); + fChain->SetBranchAddress("L1_ETT110_BptxAND", &L1_ETT110_BptxAND, &b_L1_ETT110_BptxAND); + fChain->SetBranchAddress("L1_ETT40_BptxAND", &L1_ETT40_BptxAND, &b_L1_ETT40_BptxAND); + fChain->SetBranchAddress("L1_ETT50_BptxAND", &L1_ETT50_BptxAND, &b_L1_ETT50_BptxAND); + fChain->SetBranchAddress("L1_ETT60_BptxAND", &L1_ETT60_BptxAND, &b_L1_ETT60_BptxAND); + fChain->SetBranchAddress("L1_ETT70_BptxAND", &L1_ETT70_BptxAND, &b_L1_ETT70_BptxAND); + fChain->SetBranchAddress("L1_ETT75_BptxAND", &L1_ETT75_BptxAND, &b_L1_ETT75_BptxAND); + fChain->SetBranchAddress("L1_ETT80_BptxAND", &L1_ETT80_BptxAND, &b_L1_ETT80_BptxAND); + fChain->SetBranchAddress("L1_ETT85_BptxAND", &L1_ETT85_BptxAND, &b_L1_ETT85_BptxAND); + fChain->SetBranchAddress("L1_ETT90_BptxAND", &L1_ETT90_BptxAND, &b_L1_ETT90_BptxAND); + fChain->SetBranchAddress("L1_ETT95_BptxAND", &L1_ETT95_BptxAND, &b_L1_ETT95_BptxAND); + fChain->SetBranchAddress("L1_FirstBunchAfterTrain", &L1_FirstBunchAfterTrain, &b_L1_FirstBunchAfterTrain); + fChain->SetBranchAddress("L1_FirstBunchInTrain", &L1_FirstBunchInTrain, &b_L1_FirstBunchInTrain); + fChain->SetBranchAddress("L1_FirstCollisionInOrbit", &L1_FirstCollisionInOrbit, &b_L1_FirstCollisionInOrbit); + fChain->SetBranchAddress("L1_FirstCollisionInTrain", &L1_FirstCollisionInTrain, &b_L1_FirstCollisionInTrain); + fChain->SetBranchAddress("L1_HCAL_LaserMon_Trig", &L1_HCAL_LaserMon_Trig, &b_L1_HCAL_LaserMon_Trig); + fChain->SetBranchAddress("L1_HCAL_LaserMon_Veto", &L1_HCAL_LaserMon_Veto, &b_L1_HCAL_LaserMon_Veto); + fChain->SetBranchAddress("L1_HTT120er", &L1_HTT120er, &b_L1_HTT120er); + fChain->SetBranchAddress("L1_HTT160er", &L1_HTT160er, &b_L1_HTT160er); + fChain->SetBranchAddress("L1_HTT200er", &L1_HTT200er, &b_L1_HTT200er); + fChain->SetBranchAddress("L1_HTT220er", &L1_HTT220er, &b_L1_HTT220er); + fChain->SetBranchAddress("L1_HTT240er", &L1_HTT240er, &b_L1_HTT240er); + fChain->SetBranchAddress("L1_HTT255er", &L1_HTT255er, &b_L1_HTT255er); + fChain->SetBranchAddress("L1_HTT270er", &L1_HTT270er, &b_L1_HTT270er); + fChain->SetBranchAddress("L1_HTT280er", &L1_HTT280er, &b_L1_HTT280er); + fChain->SetBranchAddress("L1_HTT280er_QuadJet_70_55_40_35_er2p5", &L1_HTT280er_QuadJet_70_55_40_35_er2p5, &b_L1_HTT280er_QuadJet_70_55_40_35_er2p5); + fChain->SetBranchAddress("L1_HTT300er", &L1_HTT300er, &b_L1_HTT300er); + fChain->SetBranchAddress("L1_HTT300er_QuadJet_70_55_40_35_er2p5", &L1_HTT300er_QuadJet_70_55_40_35_er2p5, &b_L1_HTT300er_QuadJet_70_55_40_35_er2p5); + fChain->SetBranchAddress("L1_HTT320er", &L1_HTT320er, &b_L1_HTT320er); + fChain->SetBranchAddress("L1_HTT320er_QuadJet_70_55_40_40_er2p4", &L1_HTT320er_QuadJet_70_55_40_40_er2p4, &b_L1_HTT320er_QuadJet_70_55_40_40_er2p4); + fChain->SetBranchAddress("L1_HTT320er_QuadJet_70_55_40_40_er2p5", &L1_HTT320er_QuadJet_70_55_40_40_er2p5, &b_L1_HTT320er_QuadJet_70_55_40_40_er2p5); + fChain->SetBranchAddress("L1_HTT320er_QuadJet_70_55_45_45_er2p5", &L1_HTT320er_QuadJet_70_55_45_45_er2p5, &b_L1_HTT320er_QuadJet_70_55_45_45_er2p5); + fChain->SetBranchAddress("L1_HTT340er", &L1_HTT340er, &b_L1_HTT340er); + fChain->SetBranchAddress("L1_HTT340er_QuadJet_70_55_40_40_er2p5", &L1_HTT340er_QuadJet_70_55_40_40_er2p5, &b_L1_HTT340er_QuadJet_70_55_40_40_er2p5); + fChain->SetBranchAddress("L1_HTT340er_QuadJet_70_55_45_45_er2p5", &L1_HTT340er_QuadJet_70_55_45_45_er2p5, &b_L1_HTT340er_QuadJet_70_55_45_45_er2p5); + fChain->SetBranchAddress("L1_HTT380er", &L1_HTT380er, &b_L1_HTT380er); + fChain->SetBranchAddress("L1_HTT400er", &L1_HTT400er, &b_L1_HTT400er); + fChain->SetBranchAddress("L1_HTT450er", &L1_HTT450er, &b_L1_HTT450er); + fChain->SetBranchAddress("L1_HTT500er", &L1_HTT500er, &b_L1_HTT500er); + fChain->SetBranchAddress("L1_IsoEG33_Mt40", &L1_IsoEG33_Mt40, &b_L1_IsoEG33_Mt40); + fChain->SetBranchAddress("L1_IsoEG33_Mt44", &L1_IsoEG33_Mt44, &b_L1_IsoEG33_Mt44); + fChain->SetBranchAddress("L1_IsoEG33_Mt48", &L1_IsoEG33_Mt48, &b_L1_IsoEG33_Mt48); + fChain->SetBranchAddress("L1_IsoTau40er_ETMHF100", &L1_IsoTau40er_ETMHF100, &b_L1_IsoTau40er_ETMHF100); + fChain->SetBranchAddress("L1_IsoTau40er_ETMHF110", &L1_IsoTau40er_ETMHF110, &b_L1_IsoTau40er_ETMHF110); + fChain->SetBranchAddress("L1_IsoTau40er_ETMHF120", &L1_IsoTau40er_ETMHF120, &b_L1_IsoTau40er_ETMHF120); + fChain->SetBranchAddress("L1_IsoTau40er_ETMHF90", &L1_IsoTau40er_ETMHF90, &b_L1_IsoTau40er_ETMHF90); + fChain->SetBranchAddress("L1_IsolatedBunch", &L1_IsolatedBunch, &b_L1_IsolatedBunch); + fChain->SetBranchAddress("L1_LastCollisionInTrain", &L1_LastCollisionInTrain, &b_L1_LastCollisionInTrain); + fChain->SetBranchAddress("L1_LooseIsoEG22er2p1_IsoTau26er2p1_dR_Min0p3", &L1_LooseIsoEG22er2p1_IsoTau26er2p1_dR_Min0p3, &b_L1_LooseIsoEG22er2p1_IsoTau26er2p1_dR_Min0p3); + fChain->SetBranchAddress("L1_LooseIsoEG24er2p1_HTT100er", &L1_LooseIsoEG24er2p1_HTT100er, &b_L1_LooseIsoEG24er2p1_HTT100er); + fChain->SetBranchAddress("L1_LooseIsoEG24er2p1_IsoTau27er2p1_dR_Min0p3", &L1_LooseIsoEG24er2p1_IsoTau27er2p1_dR_Min0p3, &b_L1_LooseIsoEG24er2p1_IsoTau27er2p1_dR_Min0p3); + fChain->SetBranchAddress("L1_LooseIsoEG24er2p1_Jet26er2p7_dR_Min0p3", &L1_LooseIsoEG24er2p1_Jet26er2p7_dR_Min0p3, &b_L1_LooseIsoEG24er2p1_Jet26er2p7_dR_Min0p3); + fChain->SetBranchAddress("L1_LooseIsoEG24er2p1_TripleJet_26er2p7_26_26er2p7", &L1_LooseIsoEG24er2p1_TripleJet_26er2p7_26_26er2p7, &b_L1_LooseIsoEG24er2p1_TripleJet_26er2p7_26_26er2p7); + fChain->SetBranchAddress("L1_LooseIsoEG26er2p1_HTT100er", &L1_LooseIsoEG26er2p1_HTT100er, &b_L1_LooseIsoEG26er2p1_HTT100er); + fChain->SetBranchAddress("L1_LooseIsoEG26er2p1_Jet34er2p7_dR_Min0p3", &L1_LooseIsoEG26er2p1_Jet34er2p7_dR_Min0p3, &b_L1_LooseIsoEG26er2p1_Jet34er2p7_dR_Min0p3); + fChain->SetBranchAddress("L1_LooseIsoEG28er2p1_HTT100er", &L1_LooseIsoEG28er2p1_HTT100er, &b_L1_LooseIsoEG28er2p1_HTT100er); + fChain->SetBranchAddress("L1_LooseIsoEG28er2p1_Jet34er2p7_dR_Min0p3", &L1_LooseIsoEG28er2p1_Jet34er2p7_dR_Min0p3, &b_L1_LooseIsoEG28er2p1_Jet34er2p7_dR_Min0p3); + fChain->SetBranchAddress("L1_LooseIsoEG30er2p1_Jet34er2p7_dR_Min0p3", &L1_LooseIsoEG30er2p1_Jet34er2p7_dR_Min0p3, &b_L1_LooseIsoEG30er2p1_Jet34er2p7_dR_Min0p3); + fChain->SetBranchAddress("L1_MU20_EG15", &L1_MU20_EG15, &b_L1_MU20_EG15); + fChain->SetBranchAddress("L1_MinimumBiasHF0_AND_BptxAND", &L1_MinimumBiasHF0_AND_BptxAND, &b_L1_MinimumBiasHF0_AND_BptxAND); + fChain->SetBranchAddress("L1_MinimumBiasHF0_OR_BptxAND", &L1_MinimumBiasHF0_OR_BptxAND, &b_L1_MinimumBiasHF0_OR_BptxAND); + fChain->SetBranchAddress("L1_Mu10er2p3_Jet32er2p3_dR_Max0p4_DoubleJet32er2p3_dEta_Max1p6", &L1_Mu10er2p3_Jet32er2p3_dR_Max0p4_DoubleJet32er2p3_dEta_Max1p6, &b_L1_Mu10er2p3_Jet32er2p3_dR_Max0p4_DoubleJet32er2p3_dEta_Max1p6); + fChain->SetBranchAddress("L1_Mu12_EG10", &L1_Mu12_EG10, &b_L1_Mu12_EG10); + fChain->SetBranchAddress("L1_Mu12er2p3_Jet40er2p3_dR_Max0p4_DoubleJet40er2p3_dEta_Max1p6", &L1_Mu12er2p3_Jet40er2p3_dR_Max0p4_DoubleJet40er2p3_dEta_Max1p6, &b_L1_Mu12er2p3_Jet40er2p3_dR_Max0p4_DoubleJet40er2p3_dEta_Max1p6); + fChain->SetBranchAddress("L1_Mu18er2p1_Tau24er2p1", &L1_Mu18er2p1_Tau24er2p1, &b_L1_Mu18er2p1_Tau24er2p1); + fChain->SetBranchAddress("L1_Mu20_EG10", &L1_Mu20_EG10, &b_L1_Mu20_EG10); + fChain->SetBranchAddress("L1_Mu20_EG17", &L1_Mu20_EG17, &b_L1_Mu20_EG17); + fChain->SetBranchAddress("L1_Mu20_LooseIsoEG6", &L1_Mu20_LooseIsoEG6, &b_L1_Mu20_LooseIsoEG6); + fChain->SetBranchAddress("L1_Mu22er2p1_IsoTau32er2p1", &L1_Mu22er2p1_IsoTau32er2p1, &b_L1_Mu22er2p1_IsoTau32er2p1); + fChain->SetBranchAddress("L1_Mu22er2p1_IsoTau34er2p1", &L1_Mu22er2p1_IsoTau34er2p1, &b_L1_Mu22er2p1_IsoTau34er2p1); + fChain->SetBranchAddress("L1_Mu22er2p1_IsoTau36er2p1", &L1_Mu22er2p1_IsoTau36er2p1, &b_L1_Mu22er2p1_IsoTau36er2p1); + fChain->SetBranchAddress("L1_Mu22er2p1_IsoTau40er2p1", &L1_Mu22er2p1_IsoTau40er2p1, &b_L1_Mu22er2p1_IsoTau40er2p1); + fChain->SetBranchAddress("L1_Mu22er2p1_Tau70er2p1", &L1_Mu22er2p1_Tau70er2p1, &b_L1_Mu22er2p1_Tau70er2p1); + fChain->SetBranchAddress("L1_Mu23_EG10", &L1_Mu23_EG10, &b_L1_Mu23_EG10); + fChain->SetBranchAddress("L1_Mu23_LooseIsoEG10", &L1_Mu23_LooseIsoEG10, &b_L1_Mu23_LooseIsoEG10); + fChain->SetBranchAddress("L1_Mu3_Jet120er2p7_dEta_Max0p4_dPhi_Max0p4", &L1_Mu3_Jet120er2p7_dEta_Max0p4_dPhi_Max0p4, &b_L1_Mu3_Jet120er2p7_dEta_Max0p4_dPhi_Max0p4); + fChain->SetBranchAddress("L1_Mu3_Jet16er2p7_dEta_Max0p4_dPhi_Max0p4", &L1_Mu3_Jet16er2p7_dEta_Max0p4_dPhi_Max0p4, &b_L1_Mu3_Jet16er2p7_dEta_Max0p4_dPhi_Max0p4); + fChain->SetBranchAddress("L1_Mu3_Jet30er2p5", &L1_Mu3_Jet30er2p5, &b_L1_Mu3_Jet30er2p5); + fChain->SetBranchAddress("L1_Mu3_Jet60er2p7_dEta_Max0p4_dPhi_Max0p4", &L1_Mu3_Jet60er2p7_dEta_Max0p4_dPhi_Max0p4, &b_L1_Mu3_Jet60er2p7_dEta_Max0p4_dPhi_Max0p4); + fChain->SetBranchAddress("L1_Mu5_EG15", &L1_Mu5_EG15, &b_L1_Mu5_EG15); + fChain->SetBranchAddress("L1_Mu5_EG20", &L1_Mu5_EG20, &b_L1_Mu5_EG20); + fChain->SetBranchAddress("L1_Mu5_EG23", &L1_Mu5_EG23, &b_L1_Mu5_EG23); + fChain->SetBranchAddress("L1_Mu5_LooseIsoEG18", &L1_Mu5_LooseIsoEG18, &b_L1_Mu5_LooseIsoEG18); + fChain->SetBranchAddress("L1_Mu5_LooseIsoEG20", &L1_Mu5_LooseIsoEG20, &b_L1_Mu5_LooseIsoEG20); + fChain->SetBranchAddress("L1_Mu6_DoubleEG10", &L1_Mu6_DoubleEG10, &b_L1_Mu6_DoubleEG10); + fChain->SetBranchAddress("L1_Mu6_DoubleEG17", &L1_Mu6_DoubleEG17, &b_L1_Mu6_DoubleEG17); + fChain->SetBranchAddress("L1_Mu6_HTT240er", &L1_Mu6_HTT240er, &b_L1_Mu6_HTT240er); + fChain->SetBranchAddress("L1_Mu6_HTT250er", &L1_Mu6_HTT250er, &b_L1_Mu6_HTT250er); + fChain->SetBranchAddress("L1_Mu7_EG23", &L1_Mu7_EG23, &b_L1_Mu7_EG23); + fChain->SetBranchAddress("L1_Mu7_LooseIsoEG20", &L1_Mu7_LooseIsoEG20, &b_L1_Mu7_LooseIsoEG20); + fChain->SetBranchAddress("L1_Mu7_LooseIsoEG23", &L1_Mu7_LooseIsoEG23, &b_L1_Mu7_LooseIsoEG23); + fChain->SetBranchAddress("L1_NotBptxOR", &L1_NotBptxOR, &b_L1_NotBptxOR); + fChain->SetBranchAddress("L1_QuadJet36er2p7_IsoTau52er2p1", &L1_QuadJet36er2p7_IsoTau52er2p1, &b_L1_QuadJet36er2p7_IsoTau52er2p1); + fChain->SetBranchAddress("L1_QuadJet40er2p7", &L1_QuadJet40er2p7, &b_L1_QuadJet40er2p7); + fChain->SetBranchAddress("L1_QuadJet50er2p7", &L1_QuadJet50er2p7, &b_L1_QuadJet50er2p7); + fChain->SetBranchAddress("L1_QuadJet60er2p7", &L1_QuadJet60er2p7, &b_L1_QuadJet60er2p7); + fChain->SetBranchAddress("L1_QuadMu0", &L1_QuadMu0, &b_L1_QuadMu0); + fChain->SetBranchAddress("L1_SingleEG10", &L1_SingleEG10, &b_L1_SingleEG10); + fChain->SetBranchAddress("L1_SingleEG15", &L1_SingleEG15, &b_L1_SingleEG15); + fChain->SetBranchAddress("L1_SingleEG26", &L1_SingleEG26, &b_L1_SingleEG26); + fChain->SetBranchAddress("L1_SingleEG34", &L1_SingleEG34, &b_L1_SingleEG34); + fChain->SetBranchAddress("L1_SingleEG34er2p1", &L1_SingleEG34er2p1, &b_L1_SingleEG34er2p1); + fChain->SetBranchAddress("L1_SingleEG34er2p5", &L1_SingleEG34er2p5, &b_L1_SingleEG34er2p5); + fChain->SetBranchAddress("L1_SingleEG36", &L1_SingleEG36, &b_L1_SingleEG36); + fChain->SetBranchAddress("L1_SingleEG36er2p1", &L1_SingleEG36er2p1, &b_L1_SingleEG36er2p1); + fChain->SetBranchAddress("L1_SingleEG36er2p5", &L1_SingleEG36er2p5, &b_L1_SingleEG36er2p5); + fChain->SetBranchAddress("L1_SingleEG38", &L1_SingleEG38, &b_L1_SingleEG38); + fChain->SetBranchAddress("L1_SingleEG38er2p1", &L1_SingleEG38er2p1, &b_L1_SingleEG38er2p1); + fChain->SetBranchAddress("L1_SingleEG38er2p5", &L1_SingleEG38er2p5, &b_L1_SingleEG38er2p5); + fChain->SetBranchAddress("L1_SingleEG40", &L1_SingleEG40, &b_L1_SingleEG40); + fChain->SetBranchAddress("L1_SingleEG40er2p5", &L1_SingleEG40er2p5, &b_L1_SingleEG40er2p5); + fChain->SetBranchAddress("L1_SingleEG42", &L1_SingleEG42, &b_L1_SingleEG42); + fChain->SetBranchAddress("L1_SingleEG42er2p5", &L1_SingleEG42er2p5, &b_L1_SingleEG42er2p5); + fChain->SetBranchAddress("L1_SingleEG45", &L1_SingleEG45, &b_L1_SingleEG45); + fChain->SetBranchAddress("L1_SingleEG5", &L1_SingleEG5, &b_L1_SingleEG5); + fChain->SetBranchAddress("L1_SingleEG50", &L1_SingleEG50, &b_L1_SingleEG50); + fChain->SetBranchAddress("L1_SingleIsoEG24er2p1", &L1_SingleIsoEG24er2p1, &b_L1_SingleIsoEG24er2p1); + fChain->SetBranchAddress("L1_SingleIsoEG26", &L1_SingleIsoEG26, &b_L1_SingleIsoEG26); + fChain->SetBranchAddress("L1_SingleIsoEG26er2p1", &L1_SingleIsoEG26er2p1, &b_L1_SingleIsoEG26er2p1); + fChain->SetBranchAddress("L1_SingleIsoEG26er2p5", &L1_SingleIsoEG26er2p5, &b_L1_SingleIsoEG26er2p5); + fChain->SetBranchAddress("L1_SingleIsoEG28", &L1_SingleIsoEG28, &b_L1_SingleIsoEG28); + fChain->SetBranchAddress("L1_SingleIsoEG28er2p1", &L1_SingleIsoEG28er2p1, &b_L1_SingleIsoEG28er2p1); + fChain->SetBranchAddress("L1_SingleIsoEG28er2p5", &L1_SingleIsoEG28er2p5, &b_L1_SingleIsoEG28er2p5); + fChain->SetBranchAddress("L1_SingleIsoEG30", &L1_SingleIsoEG30, &b_L1_SingleIsoEG30); + fChain->SetBranchAddress("L1_SingleIsoEG30er2p1", &L1_SingleIsoEG30er2p1, &b_L1_SingleIsoEG30er2p1); + fChain->SetBranchAddress("L1_SingleIsoEG30er2p5", &L1_SingleIsoEG30er2p5, &b_L1_SingleIsoEG30er2p5); + fChain->SetBranchAddress("L1_SingleIsoEG32", &L1_SingleIsoEG32, &b_L1_SingleIsoEG32); + fChain->SetBranchAddress("L1_SingleIsoEG32er2p1", &L1_SingleIsoEG32er2p1, &b_L1_SingleIsoEG32er2p1); + fChain->SetBranchAddress("L1_SingleIsoEG32er2p5", &L1_SingleIsoEG32er2p5, &b_L1_SingleIsoEG32er2p5); + fChain->SetBranchAddress("L1_SingleIsoEG34", &L1_SingleIsoEG34, &b_L1_SingleIsoEG34); + fChain->SetBranchAddress("L1_SingleIsoEG34er2p5", &L1_SingleIsoEG34er2p5, &b_L1_SingleIsoEG34er2p5); + fChain->SetBranchAddress("L1_SingleJet10erHE", &L1_SingleJet10erHE, &b_L1_SingleJet10erHE); + fChain->SetBranchAddress("L1_SingleJet120", &L1_SingleJet120, &b_L1_SingleJet120); + fChain->SetBranchAddress("L1_SingleJet120_FWD", &L1_SingleJet120_FWD, &b_L1_SingleJet120_FWD); + fChain->SetBranchAddress("L1_SingleJet12_BptxAND", &L1_SingleJet12_BptxAND, &b_L1_SingleJet12_BptxAND); + fChain->SetBranchAddress("L1_SingleJet12erHE", &L1_SingleJet12erHE, &b_L1_SingleJet12erHE); + fChain->SetBranchAddress("L1_SingleJet140", &L1_SingleJet140, &b_L1_SingleJet140); + fChain->SetBranchAddress("L1_SingleJet150", &L1_SingleJet150, &b_L1_SingleJet150); + fChain->SetBranchAddress("L1_SingleJet16", &L1_SingleJet16, &b_L1_SingleJet16); + fChain->SetBranchAddress("L1_SingleJet160", &L1_SingleJet160, &b_L1_SingleJet160); + fChain->SetBranchAddress("L1_SingleJet170", &L1_SingleJet170, &b_L1_SingleJet170); + fChain->SetBranchAddress("L1_SingleJet180", &L1_SingleJet180, &b_L1_SingleJet180); + fChain->SetBranchAddress("L1_SingleJet20", &L1_SingleJet20, &b_L1_SingleJet20); + fChain->SetBranchAddress("L1_SingleJet200", &L1_SingleJet200, &b_L1_SingleJet200); + fChain->SetBranchAddress("L1_SingleJet20er2p7_NotBptxOR", &L1_SingleJet20er2p7_NotBptxOR, &b_L1_SingleJet20er2p7_NotBptxOR); + fChain->SetBranchAddress("L1_SingleJet20er2p7_NotBptxOR_3BX", &L1_SingleJet20er2p7_NotBptxOR_3BX, &b_L1_SingleJet20er2p7_NotBptxOR_3BX); + fChain->SetBranchAddress("L1_SingleJet35", &L1_SingleJet35, &b_L1_SingleJet35); + fChain->SetBranchAddress("L1_SingleJet35_FWD", &L1_SingleJet35_FWD, &b_L1_SingleJet35_FWD); + fChain->SetBranchAddress("L1_SingleJet35_HFm", &L1_SingleJet35_HFm, &b_L1_SingleJet35_HFm); + fChain->SetBranchAddress("L1_SingleJet35_HFp", &L1_SingleJet35_HFp, &b_L1_SingleJet35_HFp); + fChain->SetBranchAddress("L1_SingleJet43er2p7_NotBptxOR_3BX", &L1_SingleJet43er2p7_NotBptxOR_3BX, &b_L1_SingleJet43er2p7_NotBptxOR_3BX); + fChain->SetBranchAddress("L1_SingleJet46er2p7_NotBptxOR_3BX", &L1_SingleJet46er2p7_NotBptxOR_3BX, &b_L1_SingleJet46er2p7_NotBptxOR_3BX); + fChain->SetBranchAddress("L1_SingleJet60", &L1_SingleJet60, &b_L1_SingleJet60); + fChain->SetBranchAddress("L1_SingleJet60_FWD", &L1_SingleJet60_FWD, &b_L1_SingleJet60_FWD); + fChain->SetBranchAddress("L1_SingleJet60_HFm", &L1_SingleJet60_HFm, &b_L1_SingleJet60_HFm); + fChain->SetBranchAddress("L1_SingleJet60_HFp", &L1_SingleJet60_HFp, &b_L1_SingleJet60_HFp); + fChain->SetBranchAddress("L1_SingleJet8erHE", &L1_SingleJet8erHE, &b_L1_SingleJet8erHE); + fChain->SetBranchAddress("L1_SingleJet90", &L1_SingleJet90, &b_L1_SingleJet90); + fChain->SetBranchAddress("L1_SingleJet90_FWD", &L1_SingleJet90_FWD, &b_L1_SingleJet90_FWD); + fChain->SetBranchAddress("L1_SingleMu0_BMTF", &L1_SingleMu0_BMTF, &b_L1_SingleMu0_BMTF); + fChain->SetBranchAddress("L1_SingleMu0_EMTF", &L1_SingleMu0_EMTF, &b_L1_SingleMu0_EMTF); + fChain->SetBranchAddress("L1_SingleMu0_OMTF", &L1_SingleMu0_OMTF, &b_L1_SingleMu0_OMTF); + fChain->SetBranchAddress("L1_SingleMu10_LowQ", &L1_SingleMu10_LowQ, &b_L1_SingleMu10_LowQ); + fChain->SetBranchAddress("L1_SingleMu12_LowQ_BMTF", &L1_SingleMu12_LowQ_BMTF, &b_L1_SingleMu12_LowQ_BMTF); + fChain->SetBranchAddress("L1_SingleMu12_LowQ_EMTF", &L1_SingleMu12_LowQ_EMTF, &b_L1_SingleMu12_LowQ_EMTF); + fChain->SetBranchAddress("L1_SingleMu12_LowQ_OMTF", &L1_SingleMu12_LowQ_OMTF, &b_L1_SingleMu12_LowQ_OMTF); + fChain->SetBranchAddress("L1_SingleMu18", &L1_SingleMu18, &b_L1_SingleMu18); + fChain->SetBranchAddress("L1_SingleMu20", &L1_SingleMu20, &b_L1_SingleMu20); + fChain->SetBranchAddress("L1_SingleMu22", &L1_SingleMu22, &b_L1_SingleMu22); + fChain->SetBranchAddress("L1_SingleMu22_BMTF", &L1_SingleMu22_BMTF, &b_L1_SingleMu22_BMTF); + fChain->SetBranchAddress("L1_SingleMu22_EMTF", &L1_SingleMu22_EMTF, &b_L1_SingleMu22_EMTF); + fChain->SetBranchAddress("L1_SingleMu22_OMTF", &L1_SingleMu22_OMTF, &b_L1_SingleMu22_OMTF); + fChain->SetBranchAddress("L1_SingleMu25", &L1_SingleMu25, &b_L1_SingleMu25); + fChain->SetBranchAddress("L1_SingleMu3", &L1_SingleMu3, &b_L1_SingleMu3); + fChain->SetBranchAddress("L1_SingleMu5", &L1_SingleMu5, &b_L1_SingleMu5); + fChain->SetBranchAddress("L1_SingleMu7", &L1_SingleMu7, &b_L1_SingleMu7); + fChain->SetBranchAddress("L1_SingleMuCosmics", &L1_SingleMuCosmics, &b_L1_SingleMuCosmics); + fChain->SetBranchAddress("L1_SingleMuCosmics_BMTF", &L1_SingleMuCosmics_BMTF, &b_L1_SingleMuCosmics_BMTF); + fChain->SetBranchAddress("L1_SingleMuCosmics_EMTF", &L1_SingleMuCosmics_EMTF, &b_L1_SingleMuCosmics_EMTF); + fChain->SetBranchAddress("L1_SingleMuCosmics_OMTF", &L1_SingleMuCosmics_OMTF, &b_L1_SingleMuCosmics_OMTF); + fChain->SetBranchAddress("L1_SingleMuOpen", &L1_SingleMuOpen, &b_L1_SingleMuOpen); + fChain->SetBranchAddress("L1_SingleMuOpen_NotBptxOR", &L1_SingleMuOpen_NotBptxOR, &b_L1_SingleMuOpen_NotBptxOR); + fChain->SetBranchAddress("L1_SingleMuOpen_er1p1_NotBptxOR_3BX", &L1_SingleMuOpen_er1p1_NotBptxOR_3BX, &b_L1_SingleMuOpen_er1p1_NotBptxOR_3BX); + fChain->SetBranchAddress("L1_SingleMuOpen_er1p4_NotBptxOR_3BX", &L1_SingleMuOpen_er1p4_NotBptxOR_3BX, &b_L1_SingleMuOpen_er1p4_NotBptxOR_3BX); + fChain->SetBranchAddress("L1_SingleTau120er2p1", &L1_SingleTau120er2p1, &b_L1_SingleTau120er2p1); + fChain->SetBranchAddress("L1_SingleTau130er2p1", &L1_SingleTau130er2p1, &b_L1_SingleTau130er2p1); + fChain->SetBranchAddress("L1_TOTEM_1", &L1_TOTEM_1, &b_L1_TOTEM_1); + fChain->SetBranchAddress("L1_TOTEM_2", &L1_TOTEM_2, &b_L1_TOTEM_2); + fChain->SetBranchAddress("L1_TOTEM_3", &L1_TOTEM_3, &b_L1_TOTEM_3); + fChain->SetBranchAddress("L1_TOTEM_4", &L1_TOTEM_4, &b_L1_TOTEM_4); + fChain->SetBranchAddress("L1_TripleEG_18_17_8", &L1_TripleEG_18_17_8, &b_L1_TripleEG_18_17_8); + fChain->SetBranchAddress("L1_TripleEG_LooseIso20_10_5", &L1_TripleEG_LooseIso20_10_5, &b_L1_TripleEG_LooseIso20_10_5); + fChain->SetBranchAddress("L1_TripleJet_100_85_72_VBF", &L1_TripleJet_100_85_72_VBF, &b_L1_TripleJet_100_85_72_VBF); + fChain->SetBranchAddress("L1_TripleJet_105_85_76_VBF", &L1_TripleJet_105_85_76_VBF, &b_L1_TripleJet_105_85_76_VBF); + fChain->SetBranchAddress("L1_TripleJet_98_83_71_VBF", &L1_TripleJet_98_83_71_VBF, &b_L1_TripleJet_98_83_71_VBF); + fChain->SetBranchAddress("L1_TripleMu0", &L1_TripleMu0, &b_L1_TripleMu0); + fChain->SetBranchAddress("L1_TripleMu0_OQ", &L1_TripleMu0_OQ, &b_L1_TripleMu0_OQ); + fChain->SetBranchAddress("L1_TripleMu3", &L1_TripleMu3, &b_L1_TripleMu3); + fChain->SetBranchAddress("L1_TripleMu3_SQ", &L1_TripleMu3_SQ, &b_L1_TripleMu3_SQ); + fChain->SetBranchAddress("L1_TripleMu_4_4_4", &L1_TripleMu_4_4_4, &b_L1_TripleMu_4_4_4); + fChain->SetBranchAddress("L1_TripleMu_5OQ_3p5OQ_2p5OQ_DoubleMu_5_2p5_OQ_OS_Mass_5to17", &L1_TripleMu_5OQ_3p5OQ_2p5OQ_DoubleMu_5_2p5_OQ_OS_Mass_5to17, &b_L1_TripleMu_5OQ_3p5OQ_2p5OQ_DoubleMu_5_2p5_OQ_OS_Mass_5to17); + fChain->SetBranchAddress("L1_TripleMu_5OQ_3p5OQ_2p5OQ_DoubleMu_5_2p5_OQ_OS_Mass_8to14", &L1_TripleMu_5OQ_3p5OQ_2p5OQ_DoubleMu_5_2p5_OQ_OS_Mass_8to14, &b_L1_TripleMu_5OQ_3p5OQ_2p5OQ_DoubleMu_5_2p5_OQ_OS_Mass_8to14); + fChain->SetBranchAddress("L1_TripleMu_5SQ_3SQ_0OQ", &L1_TripleMu_5SQ_3SQ_0OQ, &b_L1_TripleMu_5SQ_3SQ_0OQ); + fChain->SetBranchAddress("L1_TripleMu_5SQ_3SQ_0OQ_DoubleMu_5_3_SQ_OS_Mass_Max9", &L1_TripleMu_5SQ_3SQ_0OQ_DoubleMu_5_3_SQ_OS_Mass_Max9, &b_L1_TripleMu_5SQ_3SQ_0OQ_DoubleMu_5_3_SQ_OS_Mass_Max9); + fChain->SetBranchAddress("L1_TripleMu_5SQ_3SQ_0_DoubleMu_5_3_SQ_OS_Mass_Max9", &L1_TripleMu_5SQ_3SQ_0_DoubleMu_5_3_SQ_OS_Mass_Max9, &b_L1_TripleMu_5SQ_3SQ_0_DoubleMu_5_3_SQ_OS_Mass_Max9); + fChain->SetBranchAddress("L1_TripleMu_5_0_0", &L1_TripleMu_5_0_0, &b_L1_TripleMu_5_0_0); + fChain->SetBranchAddress("L1_TripleMu_5_3_3", &L1_TripleMu_5_3_3, &b_L1_TripleMu_5_3_3); + fChain->SetBranchAddress("L1_TripleMu_5_3p5_2p5", &L1_TripleMu_5_3p5_2p5, &b_L1_TripleMu_5_3p5_2p5); + fChain->SetBranchAddress("L1_TripleMu_5_3p5_2p5_DoubleMu_5_2p5_OS_Mass_5to17", &L1_TripleMu_5_3p5_2p5_DoubleMu_5_2p5_OS_Mass_5to17, &b_L1_TripleMu_5_3p5_2p5_DoubleMu_5_2p5_OS_Mass_5to17); + fChain->SetBranchAddress("L1_TripleMu_5_4_2p5_DoubleMu_5_2p5_OS_Mass_5to17", &L1_TripleMu_5_4_2p5_DoubleMu_5_2p5_OS_Mass_5to17, &b_L1_TripleMu_5_4_2p5_DoubleMu_5_2p5_OS_Mass_5to17); + fChain->SetBranchAddress("L1_TripleMu_5_5_3", &L1_TripleMu_5_5_3, &b_L1_TripleMu_5_5_3); + fChain->SetBranchAddress("L1_UnpairedBunchBptxMinus", &L1_UnpairedBunchBptxMinus, &b_L1_UnpairedBunchBptxMinus); + fChain->SetBranchAddress("L1_UnpairedBunchBptxPlus", &L1_UnpairedBunchBptxPlus, &b_L1_UnpairedBunchBptxPlus); + fChain->SetBranchAddress("L1_ZeroBias", &L1_ZeroBias, &b_L1_ZeroBias); + fChain->SetBranchAddress("L1_ZeroBias_copy", &L1_ZeroBias_copy, &b_L1_ZeroBias_copy); + fChain->SetBranchAddress("L1_UnprefireableEvent", &L1_UnprefireableEvent, &b_L1_UnprefireableEvent); + fChain->SetBranchAddress("Flag_HBHENoiseFilter", &Flag_HBHENoiseFilter, &b_Flag_HBHENoiseFilter); + fChain->SetBranchAddress("Flag_HBHENoiseIsoFilter", &Flag_HBHENoiseIsoFilter, &b_Flag_HBHENoiseIsoFilter); + fChain->SetBranchAddress("Flag_CSCTightHaloFilter", &Flag_CSCTightHaloFilter, &b_Flag_CSCTightHaloFilter); + fChain->SetBranchAddress("Flag_CSCTightHaloTrkMuUnvetoFilter", &Flag_CSCTightHaloTrkMuUnvetoFilter, &b_Flag_CSCTightHaloTrkMuUnvetoFilter); + fChain->SetBranchAddress("Flag_CSCTightHalo2015Filter", &Flag_CSCTightHalo2015Filter, &b_Flag_CSCTightHalo2015Filter); + fChain->SetBranchAddress("Flag_globalTightHalo2016Filter", &Flag_globalTightHalo2016Filter, &b_Flag_globalTightHalo2016Filter); + fChain->SetBranchAddress("Flag_globalSuperTightHalo2016Filter", &Flag_globalSuperTightHalo2016Filter, &b_Flag_globalSuperTightHalo2016Filter); + fChain->SetBranchAddress("Flag_HcalStripHaloFilter", &Flag_HcalStripHaloFilter, &b_Flag_HcalStripHaloFilter); + fChain->SetBranchAddress("Flag_hcalLaserEventFilter", &Flag_hcalLaserEventFilter, &b_Flag_hcalLaserEventFilter); + fChain->SetBranchAddress("Flag_EcalDeadCellTriggerPrimitiveFilter", &Flag_EcalDeadCellTriggerPrimitiveFilter, &b_Flag_EcalDeadCellTriggerPrimitiveFilter); + fChain->SetBranchAddress("Flag_EcalDeadCellBoundaryEnergyFilter", &Flag_EcalDeadCellBoundaryEnergyFilter, &b_Flag_EcalDeadCellBoundaryEnergyFilter); + fChain->SetBranchAddress("Flag_ecalBadCalibFilter", &Flag_ecalBadCalibFilter, &b_Flag_ecalBadCalibFilter); + fChain->SetBranchAddress("Flag_goodVertices", &Flag_goodVertices, &b_Flag_goodVertices); + fChain->SetBranchAddress("Flag_eeBadScFilter", &Flag_eeBadScFilter, &b_Flag_eeBadScFilter); + fChain->SetBranchAddress("Flag_ecalLaserCorrFilter", &Flag_ecalLaserCorrFilter, &b_Flag_ecalLaserCorrFilter); + fChain->SetBranchAddress("Flag_trkPOGFilters", &Flag_trkPOGFilters, &b_Flag_trkPOGFilters); + fChain->SetBranchAddress("Flag_chargedHadronTrackResolutionFilter", &Flag_chargedHadronTrackResolutionFilter, &b_Flag_chargedHadronTrackResolutionFilter); + fChain->SetBranchAddress("Flag_muonBadTrackFilter", &Flag_muonBadTrackFilter, &b_Flag_muonBadTrackFilter); + fChain->SetBranchAddress("Flag_BadChargedCandidateFilter", &Flag_BadChargedCandidateFilter, &b_Flag_BadChargedCandidateFilter); + fChain->SetBranchAddress("Flag_BadPFMuonFilter", &Flag_BadPFMuonFilter, &b_Flag_BadPFMuonFilter); + fChain->SetBranchAddress("Flag_BadPFMuonDzFilter", &Flag_BadPFMuonDzFilter, &b_Flag_BadPFMuonDzFilter); + fChain->SetBranchAddress("Flag_hfNoisyHitsFilter", &Flag_hfNoisyHitsFilter, &b_Flag_hfNoisyHitsFilter); + fChain->SetBranchAddress("Flag_BadChargedCandidateSummer16Filter", &Flag_BadChargedCandidateSummer16Filter, &b_Flag_BadChargedCandidateSummer16Filter); + fChain->SetBranchAddress("Flag_BadPFMuonSummer16Filter", &Flag_BadPFMuonSummer16Filter, &b_Flag_BadPFMuonSummer16Filter); + fChain->SetBranchAddress("Flag_trkPOG_manystripclus53X", &Flag_trkPOG_manystripclus53X, &b_Flag_trkPOG_manystripclus53X); + fChain->SetBranchAddress("Flag_trkPOG_toomanystripclus53X", &Flag_trkPOG_toomanystripclus53X, &b_Flag_trkPOG_toomanystripclus53X); + fChain->SetBranchAddress("Flag_trkPOG_logErrorTooManyClusters", &Flag_trkPOG_logErrorTooManyClusters, &b_Flag_trkPOG_logErrorTooManyClusters); + fChain->SetBranchAddress("Flag_METFilters", &Flag_METFilters, &b_Flag_METFilters); + fChain->SetBranchAddress("L1Reco_step", &L1Reco_step, &b_L1Reco_step); + fChain->SetBranchAddress("Flag_HBHENoiseFilter_pRECO", &Flag_HBHENoiseFilter_pRECO, &b_Flag_HBHENoiseFilter_pRECO); + fChain->SetBranchAddress("Flag_HBHENoiseIsoFilter_pRECO", &Flag_HBHENoiseIsoFilter_pRECO, &b_Flag_HBHENoiseIsoFilter_pRECO); + fChain->SetBranchAddress("Flag_CSCTightHaloFilter_pRECO", &Flag_CSCTightHaloFilter_pRECO, &b_Flag_CSCTightHaloFilter_pRECO); + fChain->SetBranchAddress("Flag_CSCTightHaloTrkMuUnvetoFilter_pRECO", &Flag_CSCTightHaloTrkMuUnvetoFilter_pRECO, &b_Flag_CSCTightHaloTrkMuUnvetoFilter_pRECO); + fChain->SetBranchAddress("Flag_CSCTightHalo2015Filter_pRECO", &Flag_CSCTightHalo2015Filter_pRECO, &b_Flag_CSCTightHalo2015Filter_pRECO); + fChain->SetBranchAddress("Flag_globalTightHalo2016Filter_pRECO", &Flag_globalTightHalo2016Filter_pRECO, &b_Flag_globalTightHalo2016Filter_pRECO); + fChain->SetBranchAddress("Flag_globalSuperTightHalo2016Filter_pRECO", &Flag_globalSuperTightHalo2016Filter_pRECO, &b_Flag_globalSuperTightHalo2016Filter_pRECO); + fChain->SetBranchAddress("Flag_HcalStripHaloFilter_pRECO", &Flag_HcalStripHaloFilter_pRECO, &b_Flag_HcalStripHaloFilter_pRECO); + fChain->SetBranchAddress("Flag_hcalLaserEventFilter_pRECO", &Flag_hcalLaserEventFilter_pRECO, &b_Flag_hcalLaserEventFilter_pRECO); + fChain->SetBranchAddress("Flag_EcalDeadCellTriggerPrimitiveFilter_pRECO", &Flag_EcalDeadCellTriggerPrimitiveFilter_pRECO, &b_Flag_EcalDeadCellTriggerPrimitiveFilter_pRECO); + fChain->SetBranchAddress("Flag_EcalDeadCellBoundaryEnergyFilter_pRECO", &Flag_EcalDeadCellBoundaryEnergyFilter_pRECO, &b_Flag_EcalDeadCellBoundaryEnergyFilter_pRECO); + fChain->SetBranchAddress("Flag_ecalBadCalibFilter_pRECO", &Flag_ecalBadCalibFilter_pRECO, &b_Flag_ecalBadCalibFilter_pRECO); + fChain->SetBranchAddress("Flag_goodVertices_pRECO", &Flag_goodVertices_pRECO, &b_Flag_goodVertices_pRECO); + fChain->SetBranchAddress("Flag_eeBadScFilter_pRECO", &Flag_eeBadScFilter_pRECO, &b_Flag_eeBadScFilter_pRECO); + fChain->SetBranchAddress("Flag_ecalLaserCorrFilter_pRECO", &Flag_ecalLaserCorrFilter_pRECO, &b_Flag_ecalLaserCorrFilter_pRECO); + fChain->SetBranchAddress("Flag_trkPOGFilters_pRECO", &Flag_trkPOGFilters_pRECO, &b_Flag_trkPOGFilters_pRECO); + fChain->SetBranchAddress("Flag_chargedHadronTrackResolutionFilter_pRECO", &Flag_chargedHadronTrackResolutionFilter_pRECO, &b_Flag_chargedHadronTrackResolutionFilter_pRECO); + fChain->SetBranchAddress("Flag_muonBadTrackFilter_pRECO", &Flag_muonBadTrackFilter_pRECO, &b_Flag_muonBadTrackFilter_pRECO); + fChain->SetBranchAddress("Flag_BadChargedCandidateFilter_pRECO", &Flag_BadChargedCandidateFilter_pRECO, &b_Flag_BadChargedCandidateFilter_pRECO); + fChain->SetBranchAddress("Flag_BadPFMuonFilter_pRECO", &Flag_BadPFMuonFilter_pRECO, &b_Flag_BadPFMuonFilter_pRECO); + fChain->SetBranchAddress("Flag_BadChargedCandidateSummer16Filter_pRECO", &Flag_BadChargedCandidateSummer16Filter_pRECO, &b_Flag_BadChargedCandidateSummer16Filter_pRECO); + fChain->SetBranchAddress("Flag_BadPFMuonSummer16Filter_pRECO", &Flag_BadPFMuonSummer16Filter_pRECO, &b_Flag_BadPFMuonSummer16Filter_pRECO); + fChain->SetBranchAddress("Flag_trkPOG_manystripclus53X_pRECO", &Flag_trkPOG_manystripclus53X_pRECO, &b_Flag_trkPOG_manystripclus53X_pRECO); + fChain->SetBranchAddress("Flag_trkPOG_toomanystripclus53X_pRECO", &Flag_trkPOG_toomanystripclus53X_pRECO, &b_Flag_trkPOG_toomanystripclus53X_pRECO); + fChain->SetBranchAddress("Flag_trkPOG_logErrorTooManyClusters_pRECO", &Flag_trkPOG_logErrorTooManyClusters_pRECO, &b_Flag_trkPOG_logErrorTooManyClusters_pRECO); + fChain->SetBranchAddress("Flag_METFilters_pRECO", &Flag_METFilters_pRECO, &b_Flag_METFilters_pRECO); + fChain->SetBranchAddress("HLTriggerFirstPath", &HLTriggerFirstPath, &b_HLTriggerFirstPath); + fChain->SetBranchAddress("HLT_AK8PFJet360_TrimMass30", &HLT_AK8PFJet360_TrimMass30, &b_HLT_AK8PFJet360_TrimMass30); + fChain->SetBranchAddress("HLT_AK8PFJet380_TrimMass30", &HLT_AK8PFJet380_TrimMass30, &b_HLT_AK8PFJet380_TrimMass30); + fChain->SetBranchAddress("HLT_AK8PFJet400_TrimMass30", &HLT_AK8PFJet400_TrimMass30, &b_HLT_AK8PFJet400_TrimMass30); + fChain->SetBranchAddress("HLT_AK8PFJet420_TrimMass30", &HLT_AK8PFJet420_TrimMass30, &b_HLT_AK8PFJet420_TrimMass30); + fChain->SetBranchAddress("HLT_AK8PFHT750_TrimMass50", &HLT_AK8PFHT750_TrimMass50, &b_HLT_AK8PFHT750_TrimMass50); + fChain->SetBranchAddress("HLT_AK8PFHT800_TrimMass50", &HLT_AK8PFHT800_TrimMass50, &b_HLT_AK8PFHT800_TrimMass50); + fChain->SetBranchAddress("HLT_AK8PFHT850_TrimMass50", &HLT_AK8PFHT850_TrimMass50, &b_HLT_AK8PFHT850_TrimMass50); + fChain->SetBranchAddress("HLT_AK8PFHT900_TrimMass50", &HLT_AK8PFHT900_TrimMass50, &b_HLT_AK8PFHT900_TrimMass50); + fChain->SetBranchAddress("HLT_CaloJet500_NoJetID", &HLT_CaloJet500_NoJetID, &b_HLT_CaloJet500_NoJetID); + fChain->SetBranchAddress("HLT_CaloJet550_NoJetID", &HLT_CaloJet550_NoJetID, &b_HLT_CaloJet550_NoJetID); + fChain->SetBranchAddress("HLT_DoubleMu5_Upsilon_DoubleEle3_CaloIdL_TrackIdL", &HLT_DoubleMu5_Upsilon_DoubleEle3_CaloIdL_TrackIdL, &b_HLT_DoubleMu5_Upsilon_DoubleEle3_CaloIdL_TrackIdL); + fChain->SetBranchAddress("HLT_DoubleMu3_DoubleEle7p5_CaloIdL_TrackIdL_Upsilon", &HLT_DoubleMu3_DoubleEle7p5_CaloIdL_TrackIdL_Upsilon, &b_HLT_DoubleMu3_DoubleEle7p5_CaloIdL_TrackIdL_Upsilon); + fChain->SetBranchAddress("HLT_Trimuon5_3p5_2_Upsilon_Muon", &HLT_Trimuon5_3p5_2_Upsilon_Muon, &b_HLT_Trimuon5_3p5_2_Upsilon_Muon); + fChain->SetBranchAddress("HLT_TrimuonOpen_5_3p5_2_Upsilon_Muon", &HLT_TrimuonOpen_5_3p5_2_Upsilon_Muon, &b_HLT_TrimuonOpen_5_3p5_2_Upsilon_Muon); + fChain->SetBranchAddress("HLT_DoubleEle25_CaloIdL_MW", &HLT_DoubleEle25_CaloIdL_MW, &b_HLT_DoubleEle25_CaloIdL_MW); + fChain->SetBranchAddress("HLT_DoubleEle27_CaloIdL_MW", &HLT_DoubleEle27_CaloIdL_MW, &b_HLT_DoubleEle27_CaloIdL_MW); + fChain->SetBranchAddress("HLT_DoubleEle33_CaloIdL_MW", &HLT_DoubleEle33_CaloIdL_MW, &b_HLT_DoubleEle33_CaloIdL_MW); + fChain->SetBranchAddress("HLT_DoubleEle24_eta2p1_WPTight_Gsf", &HLT_DoubleEle24_eta2p1_WPTight_Gsf, &b_HLT_DoubleEle24_eta2p1_WPTight_Gsf); + fChain->SetBranchAddress("HLT_DoubleEle8_CaloIdM_TrackIdM_Mass8_DZ_PFHT350", &HLT_DoubleEle8_CaloIdM_TrackIdM_Mass8_DZ_PFHT350, &b_HLT_DoubleEle8_CaloIdM_TrackIdM_Mass8_DZ_PFHT350); + fChain->SetBranchAddress("HLT_DoubleEle8_CaloIdM_TrackIdM_Mass8_PFHT350", &HLT_DoubleEle8_CaloIdM_TrackIdM_Mass8_PFHT350, &b_HLT_DoubleEle8_CaloIdM_TrackIdM_Mass8_PFHT350); + fChain->SetBranchAddress("HLT_Ele27_Ele37_CaloIdL_MW", &HLT_Ele27_Ele37_CaloIdL_MW, &b_HLT_Ele27_Ele37_CaloIdL_MW); + fChain->SetBranchAddress("HLT_Mu27_Ele37_CaloIdL_MW", &HLT_Mu27_Ele37_CaloIdL_MW, &b_HLT_Mu27_Ele37_CaloIdL_MW); + fChain->SetBranchAddress("HLT_Mu37_Ele27_CaloIdL_MW", &HLT_Mu37_Ele27_CaloIdL_MW, &b_HLT_Mu37_Ele27_CaloIdL_MW); + fChain->SetBranchAddress("HLT_Mu37_TkMu27", &HLT_Mu37_TkMu27, &b_HLT_Mu37_TkMu27); + fChain->SetBranchAddress("HLT_DoubleMu4_3_Bs", &HLT_DoubleMu4_3_Bs, &b_HLT_DoubleMu4_3_Bs); + fChain->SetBranchAddress("HLT_DoubleMu4_3_Jpsi", &HLT_DoubleMu4_3_Jpsi, &b_HLT_DoubleMu4_3_Jpsi); + fChain->SetBranchAddress("HLT_DoubleMu4_JpsiTrk_Displaced", &HLT_DoubleMu4_JpsiTrk_Displaced, &b_HLT_DoubleMu4_JpsiTrk_Displaced); + fChain->SetBranchAddress("HLT_DoubleMu4_LowMassNonResonantTrk_Displaced", &HLT_DoubleMu4_LowMassNonResonantTrk_Displaced, &b_HLT_DoubleMu4_LowMassNonResonantTrk_Displaced); + fChain->SetBranchAddress("HLT_DoubleMu3_Trk_Tau3mu", &HLT_DoubleMu3_Trk_Tau3mu, &b_HLT_DoubleMu3_Trk_Tau3mu); + fChain->SetBranchAddress("HLT_DoubleMu3_TkMu_DsTau3Mu", &HLT_DoubleMu3_TkMu_DsTau3Mu, &b_HLT_DoubleMu3_TkMu_DsTau3Mu); + fChain->SetBranchAddress("HLT_DoubleMu4_PsiPrimeTrk_Displaced", &HLT_DoubleMu4_PsiPrimeTrk_Displaced, &b_HLT_DoubleMu4_PsiPrimeTrk_Displaced); + fChain->SetBranchAddress("HLT_DoubleMu4_Mass8_DZ_PFHT350", &HLT_DoubleMu4_Mass8_DZ_PFHT350, &b_HLT_DoubleMu4_Mass8_DZ_PFHT350); + fChain->SetBranchAddress("HLT_DoubleMu8_Mass8_PFHT350", &HLT_DoubleMu8_Mass8_PFHT350, &b_HLT_DoubleMu8_Mass8_PFHT350); + fChain->SetBranchAddress("HLT_Mu3_PFJet40", &HLT_Mu3_PFJet40, &b_HLT_Mu3_PFJet40); + fChain->SetBranchAddress("HLT_Mu7p5_L2Mu2_Jpsi", &HLT_Mu7p5_L2Mu2_Jpsi, &b_HLT_Mu7p5_L2Mu2_Jpsi); + fChain->SetBranchAddress("HLT_Mu7p5_L2Mu2_Upsilon", &HLT_Mu7p5_L2Mu2_Upsilon, &b_HLT_Mu7p5_L2Mu2_Upsilon); + fChain->SetBranchAddress("HLT_Mu7p5_Track2_Jpsi", &HLT_Mu7p5_Track2_Jpsi, &b_HLT_Mu7p5_Track2_Jpsi); + fChain->SetBranchAddress("HLT_Mu7p5_Track3p5_Jpsi", &HLT_Mu7p5_Track3p5_Jpsi, &b_HLT_Mu7p5_Track3p5_Jpsi); + fChain->SetBranchAddress("HLT_Mu7p5_Track7_Jpsi", &HLT_Mu7p5_Track7_Jpsi, &b_HLT_Mu7p5_Track7_Jpsi); + fChain->SetBranchAddress("HLT_Mu7p5_Track2_Upsilon", &HLT_Mu7p5_Track2_Upsilon, &b_HLT_Mu7p5_Track2_Upsilon); + fChain->SetBranchAddress("HLT_Mu7p5_Track3p5_Upsilon", &HLT_Mu7p5_Track3p5_Upsilon, &b_HLT_Mu7p5_Track3p5_Upsilon); + fChain->SetBranchAddress("HLT_Mu7p5_Track7_Upsilon", &HLT_Mu7p5_Track7_Upsilon, &b_HLT_Mu7p5_Track7_Upsilon); + fChain->SetBranchAddress("HLT_DoublePhoton33_CaloIdL", &HLT_DoublePhoton33_CaloIdL, &b_HLT_DoublePhoton33_CaloIdL); + fChain->SetBranchAddress("HLT_DoublePhoton70", &HLT_DoublePhoton70, &b_HLT_DoublePhoton70); + fChain->SetBranchAddress("HLT_DoublePhoton85", &HLT_DoublePhoton85, &b_HLT_DoublePhoton85); + fChain->SetBranchAddress("HLT_Ele20_WPTight_Gsf", &HLT_Ele20_WPTight_Gsf, &b_HLT_Ele20_WPTight_Gsf); + fChain->SetBranchAddress("HLT_Ele15_WPLoose_Gsf", &HLT_Ele15_WPLoose_Gsf, &b_HLT_Ele15_WPLoose_Gsf); + fChain->SetBranchAddress("HLT_Ele17_WPLoose_Gsf", &HLT_Ele17_WPLoose_Gsf, &b_HLT_Ele17_WPLoose_Gsf); + fChain->SetBranchAddress("HLT_Ele20_WPLoose_Gsf", &HLT_Ele20_WPLoose_Gsf, &b_HLT_Ele20_WPLoose_Gsf); + fChain->SetBranchAddress("HLT_Ele20_eta2p1_WPLoose_Gsf", &HLT_Ele20_eta2p1_WPLoose_Gsf, &b_HLT_Ele20_eta2p1_WPLoose_Gsf); + fChain->SetBranchAddress("HLT_DiEle27_WPTightCaloOnly_L1DoubleEG", &HLT_DiEle27_WPTightCaloOnly_L1DoubleEG, &b_HLT_DiEle27_WPTightCaloOnly_L1DoubleEG); + fChain->SetBranchAddress("HLT_Ele27_WPTight_Gsf", &HLT_Ele27_WPTight_Gsf, &b_HLT_Ele27_WPTight_Gsf); + fChain->SetBranchAddress("HLT_Ele32_WPTight_Gsf", &HLT_Ele32_WPTight_Gsf, &b_HLT_Ele32_WPTight_Gsf); + fChain->SetBranchAddress("HLT_Ele35_WPTight_Gsf", &HLT_Ele35_WPTight_Gsf, &b_HLT_Ele35_WPTight_Gsf); + fChain->SetBranchAddress("HLT_Ele35_WPTight_Gsf_L1EGMT", &HLT_Ele35_WPTight_Gsf_L1EGMT, &b_HLT_Ele35_WPTight_Gsf_L1EGMT); + fChain->SetBranchAddress("HLT_Ele38_WPTight_Gsf", &HLT_Ele38_WPTight_Gsf, &b_HLT_Ele38_WPTight_Gsf); + fChain->SetBranchAddress("HLT_Ele40_WPTight_Gsf", &HLT_Ele40_WPTight_Gsf, &b_HLT_Ele40_WPTight_Gsf); + fChain->SetBranchAddress("HLT_Ele32_WPTight_Gsf_L1DoubleEG", &HLT_Ele32_WPTight_Gsf_L1DoubleEG, &b_HLT_Ele32_WPTight_Gsf_L1DoubleEG); + fChain->SetBranchAddress("HLT_HT450_Beamspot", &HLT_HT450_Beamspot, &b_HLT_HT450_Beamspot); + fChain->SetBranchAddress("HLT_HT300_Beamspot", &HLT_HT300_Beamspot, &b_HLT_HT300_Beamspot); + fChain->SetBranchAddress("HLT_ZeroBias_Beamspot", &HLT_ZeroBias_Beamspot, &b_HLT_ZeroBias_Beamspot); + fChain->SetBranchAddress("HLT_IsoMu20_eta2p1_LooseChargedIsoPFTau27_eta2p1_CrossL1", &HLT_IsoMu20_eta2p1_LooseChargedIsoPFTau27_eta2p1_CrossL1, &b_HLT_IsoMu20_eta2p1_LooseChargedIsoPFTau27_eta2p1_CrossL1); + fChain->SetBranchAddress("HLT_IsoMu20_eta2p1_MediumChargedIsoPFTau27_eta2p1_CrossL1", &HLT_IsoMu20_eta2p1_MediumChargedIsoPFTau27_eta2p1_CrossL1, &b_HLT_IsoMu20_eta2p1_MediumChargedIsoPFTau27_eta2p1_CrossL1); + fChain->SetBranchAddress("HLT_IsoMu20_eta2p1_TightChargedIsoPFTau27_eta2p1_CrossL1", &HLT_IsoMu20_eta2p1_TightChargedIsoPFTau27_eta2p1_CrossL1, &b_HLT_IsoMu20_eta2p1_TightChargedIsoPFTau27_eta2p1_CrossL1); + fChain->SetBranchAddress("HLT_IsoMu20_eta2p1_LooseChargedIsoPFTau27_eta2p1_TightID_CrossL1", &HLT_IsoMu20_eta2p1_LooseChargedIsoPFTau27_eta2p1_TightID_CrossL1, &b_HLT_IsoMu20_eta2p1_LooseChargedIsoPFTau27_eta2p1_TightID_CrossL1); + fChain->SetBranchAddress("HLT_IsoMu20_eta2p1_MediumChargedIsoPFTau27_eta2p1_TightID_CrossL1", &HLT_IsoMu20_eta2p1_MediumChargedIsoPFTau27_eta2p1_TightID_CrossL1, &b_HLT_IsoMu20_eta2p1_MediumChargedIsoPFTau27_eta2p1_TightID_CrossL1); + fChain->SetBranchAddress("HLT_IsoMu20_eta2p1_TightChargedIsoPFTau27_eta2p1_TightID_CrossL1", &HLT_IsoMu20_eta2p1_TightChargedIsoPFTau27_eta2p1_TightID_CrossL1, &b_HLT_IsoMu20_eta2p1_TightChargedIsoPFTau27_eta2p1_TightID_CrossL1); + fChain->SetBranchAddress("HLT_IsoMu20", &HLT_IsoMu20, &b_HLT_IsoMu20); + fChain->SetBranchAddress("HLT_IsoMu24", &HLT_IsoMu24, &b_HLT_IsoMu24); + fChain->SetBranchAddress("HLT_IsoMu24_eta2p1", &HLT_IsoMu24_eta2p1, &b_HLT_IsoMu24_eta2p1); + fChain->SetBranchAddress("HLT_IsoMu27", &HLT_IsoMu27, &b_HLT_IsoMu27); + fChain->SetBranchAddress("HLT_IsoMu30", &HLT_IsoMu30, &b_HLT_IsoMu30); + fChain->SetBranchAddress("HLT_UncorrectedJetE30_NoBPTX", &HLT_UncorrectedJetE30_NoBPTX, &b_HLT_UncorrectedJetE30_NoBPTX); + fChain->SetBranchAddress("HLT_UncorrectedJetE30_NoBPTX3BX", &HLT_UncorrectedJetE30_NoBPTX3BX, &b_HLT_UncorrectedJetE30_NoBPTX3BX); + fChain->SetBranchAddress("HLT_UncorrectedJetE60_NoBPTX3BX", &HLT_UncorrectedJetE60_NoBPTX3BX, &b_HLT_UncorrectedJetE60_NoBPTX3BX); + fChain->SetBranchAddress("HLT_UncorrectedJetE70_NoBPTX3BX", &HLT_UncorrectedJetE70_NoBPTX3BX, &b_HLT_UncorrectedJetE70_NoBPTX3BX); + fChain->SetBranchAddress("HLT_L1SingleMu18", &HLT_L1SingleMu18, &b_HLT_L1SingleMu18); + fChain->SetBranchAddress("HLT_L1SingleMu25", &HLT_L1SingleMu25, &b_HLT_L1SingleMu25); + fChain->SetBranchAddress("HLT_L2Mu10", &HLT_L2Mu10, &b_HLT_L2Mu10); + fChain->SetBranchAddress("HLT_L2Mu10_NoVertex_NoBPTX3BX", &HLT_L2Mu10_NoVertex_NoBPTX3BX, &b_HLT_L2Mu10_NoVertex_NoBPTX3BX); + fChain->SetBranchAddress("HLT_L2Mu10_NoVertex_NoBPTX", &HLT_L2Mu10_NoVertex_NoBPTX, &b_HLT_L2Mu10_NoVertex_NoBPTX); + fChain->SetBranchAddress("HLT_L2Mu45_NoVertex_3Sta_NoBPTX3BX", &HLT_L2Mu45_NoVertex_3Sta_NoBPTX3BX, &b_HLT_L2Mu45_NoVertex_3Sta_NoBPTX3BX); + fChain->SetBranchAddress("HLT_L2Mu40_NoVertex_3Sta_NoBPTX3BX", &HLT_L2Mu40_NoVertex_3Sta_NoBPTX3BX, &b_HLT_L2Mu40_NoVertex_3Sta_NoBPTX3BX); + fChain->SetBranchAddress("HLT_L2Mu50", &HLT_L2Mu50, &b_HLT_L2Mu50); + fChain->SetBranchAddress("HLT_L2Mu23NoVtx_2Cha", &HLT_L2Mu23NoVtx_2Cha, &b_HLT_L2Mu23NoVtx_2Cha); + fChain->SetBranchAddress("HLT_L2Mu23NoVtx_2Cha_CosmicSeed", &HLT_L2Mu23NoVtx_2Cha_CosmicSeed, &b_HLT_L2Mu23NoVtx_2Cha_CosmicSeed); + fChain->SetBranchAddress("HLT_DoubleL2Mu30NoVtx_2Cha_CosmicSeed_Eta2p4", &HLT_DoubleL2Mu30NoVtx_2Cha_CosmicSeed_Eta2p4, &b_HLT_DoubleL2Mu30NoVtx_2Cha_CosmicSeed_Eta2p4); + fChain->SetBranchAddress("HLT_DoubleL2Mu30NoVtx_2Cha_Eta2p4", &HLT_DoubleL2Mu30NoVtx_2Cha_Eta2p4, &b_HLT_DoubleL2Mu30NoVtx_2Cha_Eta2p4); + fChain->SetBranchAddress("HLT_DoubleL2Mu50", &HLT_DoubleL2Mu50, &b_HLT_DoubleL2Mu50); + fChain->SetBranchAddress("HLT_DoubleL2Mu23NoVtx_2Cha_CosmicSeed", &HLT_DoubleL2Mu23NoVtx_2Cha_CosmicSeed, &b_HLT_DoubleL2Mu23NoVtx_2Cha_CosmicSeed); + fChain->SetBranchAddress("HLT_DoubleL2Mu25NoVtx_2Cha_CosmicSeed", &HLT_DoubleL2Mu25NoVtx_2Cha_CosmicSeed, &b_HLT_DoubleL2Mu25NoVtx_2Cha_CosmicSeed); + fChain->SetBranchAddress("HLT_DoubleL2Mu25NoVtx_2Cha_CosmicSeed_Eta2p4", &HLT_DoubleL2Mu25NoVtx_2Cha_CosmicSeed_Eta2p4, &b_HLT_DoubleL2Mu25NoVtx_2Cha_CosmicSeed_Eta2p4); + fChain->SetBranchAddress("HLT_DoubleL2Mu23NoVtx_2Cha", &HLT_DoubleL2Mu23NoVtx_2Cha, &b_HLT_DoubleL2Mu23NoVtx_2Cha); + fChain->SetBranchAddress("HLT_DoubleL2Mu25NoVtx_2Cha", &HLT_DoubleL2Mu25NoVtx_2Cha, &b_HLT_DoubleL2Mu25NoVtx_2Cha); + fChain->SetBranchAddress("HLT_DoubleL2Mu25NoVtx_2Cha_Eta2p4", &HLT_DoubleL2Mu25NoVtx_2Cha_Eta2p4, &b_HLT_DoubleL2Mu25NoVtx_2Cha_Eta2p4); + fChain->SetBranchAddress("HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL", &HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL, &b_HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL); + fChain->SetBranchAddress("HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL", &HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL, &b_HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL); + fChain->SetBranchAddress("HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ", &HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ, &b_HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ); + fChain->SetBranchAddress("HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ", &HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ, &b_HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ); + fChain->SetBranchAddress("HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8", &HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8, &b_HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8); + fChain->SetBranchAddress("HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_Mass8", &HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_Mass8, &b_HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_Mass8); + fChain->SetBranchAddress("HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass3p8", &HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass3p8, &b_HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass3p8); + fChain->SetBranchAddress("HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_Mass3p8", &HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_Mass3p8, &b_HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_Mass3p8); + fChain->SetBranchAddress("HLT_Mu25_TkMu0_Onia", &HLT_Mu25_TkMu0_Onia, &b_HLT_Mu25_TkMu0_Onia); + fChain->SetBranchAddress("HLT_Mu30_TkMu0_Onia", &HLT_Mu30_TkMu0_Onia, &b_HLT_Mu30_TkMu0_Onia); + fChain->SetBranchAddress("HLT_Mu20_TkMu0_Phi", &HLT_Mu20_TkMu0_Phi, &b_HLT_Mu20_TkMu0_Phi); + fChain->SetBranchAddress("HLT_Mu25_TkMu0_Phi", &HLT_Mu25_TkMu0_Phi, &b_HLT_Mu25_TkMu0_Phi); + fChain->SetBranchAddress("HLT_Mu12", &HLT_Mu12, &b_HLT_Mu12); + fChain->SetBranchAddress("HLT_Mu15", &HLT_Mu15, &b_HLT_Mu15); + fChain->SetBranchAddress("HLT_Mu20", &HLT_Mu20, &b_HLT_Mu20); + fChain->SetBranchAddress("HLT_Mu27", &HLT_Mu27, &b_HLT_Mu27); + fChain->SetBranchAddress("HLT_Mu50", &HLT_Mu50, &b_HLT_Mu50); + fChain->SetBranchAddress("HLT_Mu55", &HLT_Mu55, &b_HLT_Mu55); + fChain->SetBranchAddress("HLT_OldMu100", &HLT_OldMu100, &b_HLT_OldMu100); + fChain->SetBranchAddress("HLT_TkMu100", &HLT_TkMu100, &b_HLT_TkMu100); + fChain->SetBranchAddress("HLT_DiPFJet15_NoCaloMatched", &HLT_DiPFJet15_NoCaloMatched, &b_HLT_DiPFJet15_NoCaloMatched); + fChain->SetBranchAddress("HLT_DiPFJet25_NoCaloMatched", &HLT_DiPFJet25_NoCaloMatched, &b_HLT_DiPFJet25_NoCaloMatched); + fChain->SetBranchAddress("HLT_DiPFJet15_FBEta3_NoCaloMatched", &HLT_DiPFJet15_FBEta3_NoCaloMatched, &b_HLT_DiPFJet15_FBEta3_NoCaloMatched); + fChain->SetBranchAddress("HLT_DiPFJet25_FBEta3_NoCaloMatched", &HLT_DiPFJet25_FBEta3_NoCaloMatched, &b_HLT_DiPFJet25_FBEta3_NoCaloMatched); + fChain->SetBranchAddress("HLT_DiPFJetAve40", &HLT_DiPFJetAve40, &b_HLT_DiPFJetAve40); + fChain->SetBranchAddress("HLT_DiPFJetAve60", &HLT_DiPFJetAve60, &b_HLT_DiPFJetAve60); + fChain->SetBranchAddress("HLT_DiPFJetAve80", &HLT_DiPFJetAve80, &b_HLT_DiPFJetAve80); + fChain->SetBranchAddress("HLT_DiPFJetAve140", &HLT_DiPFJetAve140, &b_HLT_DiPFJetAve140); + fChain->SetBranchAddress("HLT_DiPFJetAve200", &HLT_DiPFJetAve200, &b_HLT_DiPFJetAve200); + fChain->SetBranchAddress("HLT_DiPFJetAve260", &HLT_DiPFJetAve260, &b_HLT_DiPFJetAve260); + fChain->SetBranchAddress("HLT_DiPFJetAve320", &HLT_DiPFJetAve320, &b_HLT_DiPFJetAve320); + fChain->SetBranchAddress("HLT_DiPFJetAve400", &HLT_DiPFJetAve400, &b_HLT_DiPFJetAve400); + fChain->SetBranchAddress("HLT_DiPFJetAve500", &HLT_DiPFJetAve500, &b_HLT_DiPFJetAve500); + fChain->SetBranchAddress("HLT_DiPFJetAve15_HFJEC", &HLT_DiPFJetAve15_HFJEC, &b_HLT_DiPFJetAve15_HFJEC); + fChain->SetBranchAddress("HLT_DiPFJetAve25_HFJEC", &HLT_DiPFJetAve25_HFJEC, &b_HLT_DiPFJetAve25_HFJEC); + fChain->SetBranchAddress("HLT_DiPFJetAve35_HFJEC", &HLT_DiPFJetAve35_HFJEC, &b_HLT_DiPFJetAve35_HFJEC); + fChain->SetBranchAddress("HLT_DiPFJetAve60_HFJEC", &HLT_DiPFJetAve60_HFJEC, &b_HLT_DiPFJetAve60_HFJEC); + fChain->SetBranchAddress("HLT_DiPFJetAve80_HFJEC", &HLT_DiPFJetAve80_HFJEC, &b_HLT_DiPFJetAve80_HFJEC); + fChain->SetBranchAddress("HLT_DiPFJetAve100_HFJEC", &HLT_DiPFJetAve100_HFJEC, &b_HLT_DiPFJetAve100_HFJEC); + fChain->SetBranchAddress("HLT_DiPFJetAve160_HFJEC", &HLT_DiPFJetAve160_HFJEC, &b_HLT_DiPFJetAve160_HFJEC); + fChain->SetBranchAddress("HLT_DiPFJetAve220_HFJEC", &HLT_DiPFJetAve220_HFJEC, &b_HLT_DiPFJetAve220_HFJEC); + fChain->SetBranchAddress("HLT_DiPFJetAve300_HFJEC", &HLT_DiPFJetAve300_HFJEC, &b_HLT_DiPFJetAve300_HFJEC); + fChain->SetBranchAddress("HLT_AK8PFJet15", &HLT_AK8PFJet15, &b_HLT_AK8PFJet15); + fChain->SetBranchAddress("HLT_AK8PFJet25", &HLT_AK8PFJet25, &b_HLT_AK8PFJet25); + fChain->SetBranchAddress("HLT_AK8PFJet40", &HLT_AK8PFJet40, &b_HLT_AK8PFJet40); + fChain->SetBranchAddress("HLT_AK8PFJet60", &HLT_AK8PFJet60, &b_HLT_AK8PFJet60); + fChain->SetBranchAddress("HLT_AK8PFJet80", &HLT_AK8PFJet80, &b_HLT_AK8PFJet80); + fChain->SetBranchAddress("HLT_AK8PFJet140", &HLT_AK8PFJet140, &b_HLT_AK8PFJet140); + fChain->SetBranchAddress("HLT_AK8PFJet200", &HLT_AK8PFJet200, &b_HLT_AK8PFJet200); + fChain->SetBranchAddress("HLT_AK8PFJet260", &HLT_AK8PFJet260, &b_HLT_AK8PFJet260); + fChain->SetBranchAddress("HLT_AK8PFJet320", &HLT_AK8PFJet320, &b_HLT_AK8PFJet320); + fChain->SetBranchAddress("HLT_AK8PFJet400", &HLT_AK8PFJet400, &b_HLT_AK8PFJet400); + fChain->SetBranchAddress("HLT_AK8PFJet450", &HLT_AK8PFJet450, &b_HLT_AK8PFJet450); + fChain->SetBranchAddress("HLT_AK8PFJet500", &HLT_AK8PFJet500, &b_HLT_AK8PFJet500); + fChain->SetBranchAddress("HLT_AK8PFJet550", &HLT_AK8PFJet550, &b_HLT_AK8PFJet550); + fChain->SetBranchAddress("HLT_PFJet15", &HLT_PFJet15, &b_HLT_PFJet15); + fChain->SetBranchAddress("HLT_PFJet25", &HLT_PFJet25, &b_HLT_PFJet25); + fChain->SetBranchAddress("HLT_PFJet40", &HLT_PFJet40, &b_HLT_PFJet40); + fChain->SetBranchAddress("HLT_PFJet60", &HLT_PFJet60, &b_HLT_PFJet60); + fChain->SetBranchAddress("HLT_PFJet80", &HLT_PFJet80, &b_HLT_PFJet80); + fChain->SetBranchAddress("HLT_PFJet140", &HLT_PFJet140, &b_HLT_PFJet140); + fChain->SetBranchAddress("HLT_PFJet200", &HLT_PFJet200, &b_HLT_PFJet200); + fChain->SetBranchAddress("HLT_PFJet260", &HLT_PFJet260, &b_HLT_PFJet260); + fChain->SetBranchAddress("HLT_PFJet320", &HLT_PFJet320, &b_HLT_PFJet320); + fChain->SetBranchAddress("HLT_PFJet400", &HLT_PFJet400, &b_HLT_PFJet400); + fChain->SetBranchAddress("HLT_PFJet450", &HLT_PFJet450, &b_HLT_PFJet450); + fChain->SetBranchAddress("HLT_PFJet500", &HLT_PFJet500, &b_HLT_PFJet500); + fChain->SetBranchAddress("HLT_PFJet550", &HLT_PFJet550, &b_HLT_PFJet550); + fChain->SetBranchAddress("HLT_PFJetFwd15", &HLT_PFJetFwd15, &b_HLT_PFJetFwd15); + fChain->SetBranchAddress("HLT_PFJetFwd25", &HLT_PFJetFwd25, &b_HLT_PFJetFwd25); + fChain->SetBranchAddress("HLT_PFJetFwd40", &HLT_PFJetFwd40, &b_HLT_PFJetFwd40); + fChain->SetBranchAddress("HLT_PFJetFwd60", &HLT_PFJetFwd60, &b_HLT_PFJetFwd60); + fChain->SetBranchAddress("HLT_PFJetFwd80", &HLT_PFJetFwd80, &b_HLT_PFJetFwd80); + fChain->SetBranchAddress("HLT_PFJetFwd140", &HLT_PFJetFwd140, &b_HLT_PFJetFwd140); + fChain->SetBranchAddress("HLT_PFJetFwd200", &HLT_PFJetFwd200, &b_HLT_PFJetFwd200); + fChain->SetBranchAddress("HLT_PFJetFwd260", &HLT_PFJetFwd260, &b_HLT_PFJetFwd260); + fChain->SetBranchAddress("HLT_PFJetFwd320", &HLT_PFJetFwd320, &b_HLT_PFJetFwd320); + fChain->SetBranchAddress("HLT_PFJetFwd400", &HLT_PFJetFwd400, &b_HLT_PFJetFwd400); + fChain->SetBranchAddress("HLT_PFJetFwd450", &HLT_PFJetFwd450, &b_HLT_PFJetFwd450); + fChain->SetBranchAddress("HLT_PFJetFwd500", &HLT_PFJetFwd500, &b_HLT_PFJetFwd500); + fChain->SetBranchAddress("HLT_AK8PFJetFwd15", &HLT_AK8PFJetFwd15, &b_HLT_AK8PFJetFwd15); + fChain->SetBranchAddress("HLT_AK8PFJetFwd25", &HLT_AK8PFJetFwd25, &b_HLT_AK8PFJetFwd25); + fChain->SetBranchAddress("HLT_AK8PFJetFwd40", &HLT_AK8PFJetFwd40, &b_HLT_AK8PFJetFwd40); + fChain->SetBranchAddress("HLT_AK8PFJetFwd60", &HLT_AK8PFJetFwd60, &b_HLT_AK8PFJetFwd60); + fChain->SetBranchAddress("HLT_AK8PFJetFwd80", &HLT_AK8PFJetFwd80, &b_HLT_AK8PFJetFwd80); + fChain->SetBranchAddress("HLT_AK8PFJetFwd140", &HLT_AK8PFJetFwd140, &b_HLT_AK8PFJetFwd140); + fChain->SetBranchAddress("HLT_AK8PFJetFwd200", &HLT_AK8PFJetFwd200, &b_HLT_AK8PFJetFwd200); + fChain->SetBranchAddress("HLT_AK8PFJetFwd260", &HLT_AK8PFJetFwd260, &b_HLT_AK8PFJetFwd260); + fChain->SetBranchAddress("HLT_AK8PFJetFwd320", &HLT_AK8PFJetFwd320, &b_HLT_AK8PFJetFwd320); + fChain->SetBranchAddress("HLT_AK8PFJetFwd400", &HLT_AK8PFJetFwd400, &b_HLT_AK8PFJetFwd400); + fChain->SetBranchAddress("HLT_AK8PFJetFwd450", &HLT_AK8PFJetFwd450, &b_HLT_AK8PFJetFwd450); + fChain->SetBranchAddress("HLT_AK8PFJetFwd500", &HLT_AK8PFJetFwd500, &b_HLT_AK8PFJetFwd500); + fChain->SetBranchAddress("HLT_PFHT180", &HLT_PFHT180, &b_HLT_PFHT180); + fChain->SetBranchAddress("HLT_PFHT250", &HLT_PFHT250, &b_HLT_PFHT250); + fChain->SetBranchAddress("HLT_PFHT370", &HLT_PFHT370, &b_HLT_PFHT370); + fChain->SetBranchAddress("HLT_PFHT430", &HLT_PFHT430, &b_HLT_PFHT430); + fChain->SetBranchAddress("HLT_PFHT510", &HLT_PFHT510, &b_HLT_PFHT510); + fChain->SetBranchAddress("HLT_PFHT590", &HLT_PFHT590, &b_HLT_PFHT590); + fChain->SetBranchAddress("HLT_PFHT680", &HLT_PFHT680, &b_HLT_PFHT680); + fChain->SetBranchAddress("HLT_PFHT780", &HLT_PFHT780, &b_HLT_PFHT780); + fChain->SetBranchAddress("HLT_PFHT890", &HLT_PFHT890, &b_HLT_PFHT890); + fChain->SetBranchAddress("HLT_PFHT1050", &HLT_PFHT1050, &b_HLT_PFHT1050); + fChain->SetBranchAddress("HLT_PFHT500_PFMET100_PFMHT100_IDTight", &HLT_PFHT500_PFMET100_PFMHT100_IDTight, &b_HLT_PFHT500_PFMET100_PFMHT100_IDTight); + fChain->SetBranchAddress("HLT_PFHT500_PFMET110_PFMHT110_IDTight", &HLT_PFHT500_PFMET110_PFMHT110_IDTight, &b_HLT_PFHT500_PFMET110_PFMHT110_IDTight); + fChain->SetBranchAddress("HLT_PFHT700_PFMET85_PFMHT85_IDTight", &HLT_PFHT700_PFMET85_PFMHT85_IDTight, &b_HLT_PFHT700_PFMET85_PFMHT85_IDTight); + fChain->SetBranchAddress("HLT_PFHT700_PFMET95_PFMHT95_IDTight", &HLT_PFHT700_PFMET95_PFMHT95_IDTight, &b_HLT_PFHT700_PFMET95_PFMHT95_IDTight); + fChain->SetBranchAddress("HLT_PFHT800_PFMET75_PFMHT75_IDTight", &HLT_PFHT800_PFMET75_PFMHT75_IDTight, &b_HLT_PFHT800_PFMET75_PFMHT75_IDTight); + fChain->SetBranchAddress("HLT_PFHT800_PFMET85_PFMHT85_IDTight", &HLT_PFHT800_PFMET85_PFMHT85_IDTight, &b_HLT_PFHT800_PFMET85_PFMHT85_IDTight); + fChain->SetBranchAddress("HLT_PFMET110_PFMHT110_IDTight", &HLT_PFMET110_PFMHT110_IDTight, &b_HLT_PFMET110_PFMHT110_IDTight); + fChain->SetBranchAddress("HLT_PFMET120_PFMHT120_IDTight", &HLT_PFMET120_PFMHT120_IDTight, &b_HLT_PFMET120_PFMHT120_IDTight); + fChain->SetBranchAddress("HLT_PFMET130_PFMHT130_IDTight", &HLT_PFMET130_PFMHT130_IDTight, &b_HLT_PFMET130_PFMHT130_IDTight); + fChain->SetBranchAddress("HLT_PFMET140_PFMHT140_IDTight", &HLT_PFMET140_PFMHT140_IDTight, &b_HLT_PFMET140_PFMHT140_IDTight); + fChain->SetBranchAddress("HLT_PFMET100_PFMHT100_IDTight_CaloBTagCSV_3p1", &HLT_PFMET100_PFMHT100_IDTight_CaloBTagCSV_3p1, &b_HLT_PFMET100_PFMHT100_IDTight_CaloBTagCSV_3p1); + fChain->SetBranchAddress("HLT_PFMET110_PFMHT110_IDTight_CaloBTagCSV_3p1", &HLT_PFMET110_PFMHT110_IDTight_CaloBTagCSV_3p1, &b_HLT_PFMET110_PFMHT110_IDTight_CaloBTagCSV_3p1); + fChain->SetBranchAddress("HLT_PFMET120_PFMHT120_IDTight_CaloBTagCSV_3p1", &HLT_PFMET120_PFMHT120_IDTight_CaloBTagCSV_3p1, &b_HLT_PFMET120_PFMHT120_IDTight_CaloBTagCSV_3p1); + fChain->SetBranchAddress("HLT_PFMET130_PFMHT130_IDTight_CaloBTagCSV_3p1", &HLT_PFMET130_PFMHT130_IDTight_CaloBTagCSV_3p1, &b_HLT_PFMET130_PFMHT130_IDTight_CaloBTagCSV_3p1); + fChain->SetBranchAddress("HLT_PFMET140_PFMHT140_IDTight_CaloBTagCSV_3p1", &HLT_PFMET140_PFMHT140_IDTight_CaloBTagCSV_3p1, &b_HLT_PFMET140_PFMHT140_IDTight_CaloBTagCSV_3p1); + fChain->SetBranchAddress("HLT_PFMET120_PFMHT120_IDTight_PFHT60", &HLT_PFMET120_PFMHT120_IDTight_PFHT60, &b_HLT_PFMET120_PFMHT120_IDTight_PFHT60); + fChain->SetBranchAddress("HLT_PFMETNoMu120_PFMHTNoMu120_IDTight_PFHT60", &HLT_PFMETNoMu120_PFMHTNoMu120_IDTight_PFHT60, &b_HLT_PFMETNoMu120_PFMHTNoMu120_IDTight_PFHT60); + fChain->SetBranchAddress("HLT_PFMETTypeOne120_PFMHT120_IDTight_PFHT60", &HLT_PFMETTypeOne120_PFMHT120_IDTight_PFHT60, &b_HLT_PFMETTypeOne120_PFMHT120_IDTight_PFHT60); + fChain->SetBranchAddress("HLT_PFMETTypeOne110_PFMHT110_IDTight", &HLT_PFMETTypeOne110_PFMHT110_IDTight, &b_HLT_PFMETTypeOne110_PFMHT110_IDTight); + fChain->SetBranchAddress("HLT_PFMETTypeOne120_PFMHT120_IDTight", &HLT_PFMETTypeOne120_PFMHT120_IDTight, &b_HLT_PFMETTypeOne120_PFMHT120_IDTight); + fChain->SetBranchAddress("HLT_PFMETTypeOne130_PFMHT130_IDTight", &HLT_PFMETTypeOne130_PFMHT130_IDTight, &b_HLT_PFMETTypeOne130_PFMHT130_IDTight); + fChain->SetBranchAddress("HLT_PFMETTypeOne140_PFMHT140_IDTight", &HLT_PFMETTypeOne140_PFMHT140_IDTight, &b_HLT_PFMETTypeOne140_PFMHT140_IDTight); + fChain->SetBranchAddress("HLT_PFMETNoMu110_PFMHTNoMu110_IDTight", &HLT_PFMETNoMu110_PFMHTNoMu110_IDTight, &b_HLT_PFMETNoMu110_PFMHTNoMu110_IDTight); + fChain->SetBranchAddress("HLT_PFMETNoMu120_PFMHTNoMu120_IDTight", &HLT_PFMETNoMu120_PFMHTNoMu120_IDTight, &b_HLT_PFMETNoMu120_PFMHTNoMu120_IDTight); + fChain->SetBranchAddress("HLT_PFMETNoMu130_PFMHTNoMu130_IDTight", &HLT_PFMETNoMu130_PFMHTNoMu130_IDTight, &b_HLT_PFMETNoMu130_PFMHTNoMu130_IDTight); + fChain->SetBranchAddress("HLT_PFMETNoMu140_PFMHTNoMu140_IDTight", &HLT_PFMETNoMu140_PFMHTNoMu140_IDTight, &b_HLT_PFMETNoMu140_PFMHTNoMu140_IDTight); + fChain->SetBranchAddress("HLT_MonoCentralPFJet80_PFMETNoMu110_PFMHTNoMu110_IDTight", &HLT_MonoCentralPFJet80_PFMETNoMu110_PFMHTNoMu110_IDTight, &b_HLT_MonoCentralPFJet80_PFMETNoMu110_PFMHTNoMu110_IDTight); + fChain->SetBranchAddress("HLT_MonoCentralPFJet80_PFMETNoMu120_PFMHTNoMu120_IDTight", &HLT_MonoCentralPFJet80_PFMETNoMu120_PFMHTNoMu120_IDTight, &b_HLT_MonoCentralPFJet80_PFMETNoMu120_PFMHTNoMu120_IDTight); + fChain->SetBranchAddress("HLT_MonoCentralPFJet80_PFMETNoMu130_PFMHTNoMu130_IDTight", &HLT_MonoCentralPFJet80_PFMETNoMu130_PFMHTNoMu130_IDTight, &b_HLT_MonoCentralPFJet80_PFMETNoMu130_PFMHTNoMu130_IDTight); + fChain->SetBranchAddress("HLT_MonoCentralPFJet80_PFMETNoMu140_PFMHTNoMu140_IDTight", &HLT_MonoCentralPFJet80_PFMETNoMu140_PFMHTNoMu140_IDTight, &b_HLT_MonoCentralPFJet80_PFMETNoMu140_PFMHTNoMu140_IDTight); + fChain->SetBranchAddress("HLT_L1ETMHadSeeds", &HLT_L1ETMHadSeeds, &b_HLT_L1ETMHadSeeds); + fChain->SetBranchAddress("HLT_CaloMHT90", &HLT_CaloMHT90, &b_HLT_CaloMHT90); + fChain->SetBranchAddress("HLT_CaloMET80_NotCleaned", &HLT_CaloMET80_NotCleaned, &b_HLT_CaloMET80_NotCleaned); + fChain->SetBranchAddress("HLT_CaloMET90_NotCleaned", &HLT_CaloMET90_NotCleaned, &b_HLT_CaloMET90_NotCleaned); + fChain->SetBranchAddress("HLT_CaloMET100_NotCleaned", &HLT_CaloMET100_NotCleaned, &b_HLT_CaloMET100_NotCleaned); + fChain->SetBranchAddress("HLT_CaloMET110_NotCleaned", &HLT_CaloMET110_NotCleaned, &b_HLT_CaloMET110_NotCleaned); + fChain->SetBranchAddress("HLT_CaloMET250_NotCleaned", &HLT_CaloMET250_NotCleaned, &b_HLT_CaloMET250_NotCleaned); + fChain->SetBranchAddress("HLT_CaloMET70_HBHECleaned", &HLT_CaloMET70_HBHECleaned, &b_HLT_CaloMET70_HBHECleaned); + fChain->SetBranchAddress("HLT_CaloMET80_HBHECleaned", &HLT_CaloMET80_HBHECleaned, &b_HLT_CaloMET80_HBHECleaned); + fChain->SetBranchAddress("HLT_CaloMET90_HBHECleaned", &HLT_CaloMET90_HBHECleaned, &b_HLT_CaloMET90_HBHECleaned); + fChain->SetBranchAddress("HLT_CaloMET100_HBHECleaned", &HLT_CaloMET100_HBHECleaned, &b_HLT_CaloMET100_HBHECleaned); + fChain->SetBranchAddress("HLT_CaloMET250_HBHECleaned", &HLT_CaloMET250_HBHECleaned, &b_HLT_CaloMET250_HBHECleaned); + fChain->SetBranchAddress("HLT_CaloMET300_HBHECleaned", &HLT_CaloMET300_HBHECleaned, &b_HLT_CaloMET300_HBHECleaned); + fChain->SetBranchAddress("HLT_CaloMET350_HBHECleaned", &HLT_CaloMET350_HBHECleaned, &b_HLT_CaloMET350_HBHECleaned); + fChain->SetBranchAddress("HLT_PFMET200_NotCleaned", &HLT_PFMET200_NotCleaned, &b_HLT_PFMET200_NotCleaned); + fChain->SetBranchAddress("HLT_PFMET200_HBHECleaned", &HLT_PFMET200_HBHECleaned, &b_HLT_PFMET200_HBHECleaned); + fChain->SetBranchAddress("HLT_PFMET250_HBHECleaned", &HLT_PFMET250_HBHECleaned, &b_HLT_PFMET250_HBHECleaned); + fChain->SetBranchAddress("HLT_PFMET300_HBHECleaned", &HLT_PFMET300_HBHECleaned, &b_HLT_PFMET300_HBHECleaned); + fChain->SetBranchAddress("HLT_PFMET200_HBHE_BeamHaloCleaned", &HLT_PFMET200_HBHE_BeamHaloCleaned, &b_HLT_PFMET200_HBHE_BeamHaloCleaned); + fChain->SetBranchAddress("HLT_PFMETTypeOne200_HBHE_BeamHaloCleaned", &HLT_PFMETTypeOne200_HBHE_BeamHaloCleaned, &b_HLT_PFMETTypeOne200_HBHE_BeamHaloCleaned); + fChain->SetBranchAddress("HLT_MET105_IsoTrk50", &HLT_MET105_IsoTrk50, &b_HLT_MET105_IsoTrk50); + fChain->SetBranchAddress("HLT_MET120_IsoTrk50", &HLT_MET120_IsoTrk50, &b_HLT_MET120_IsoTrk50); + fChain->SetBranchAddress("HLT_SingleJet30_Mu12_SinglePFJet40", &HLT_SingleJet30_Mu12_SinglePFJet40, &b_HLT_SingleJet30_Mu12_SinglePFJet40); + fChain->SetBranchAddress("HLT_Mu12_DoublePFJets40_CaloBTagCSV_p79", &HLT_Mu12_DoublePFJets40_CaloBTagCSV_p79, &b_HLT_Mu12_DoublePFJets40_CaloBTagCSV_p79); + fChain->SetBranchAddress("HLT_Mu12_DoublePFJets100_CaloBTagCSV_p79", &HLT_Mu12_DoublePFJets100_CaloBTagCSV_p79, &b_HLT_Mu12_DoublePFJets100_CaloBTagCSV_p79); + fChain->SetBranchAddress("HLT_Mu12_DoublePFJets200_CaloBTagCSV_p79", &HLT_Mu12_DoublePFJets200_CaloBTagCSV_p79, &b_HLT_Mu12_DoublePFJets200_CaloBTagCSV_p79); + fChain->SetBranchAddress("HLT_Mu12_DoublePFJets350_CaloBTagCSV_p79", &HLT_Mu12_DoublePFJets350_CaloBTagCSV_p79, &b_HLT_Mu12_DoublePFJets350_CaloBTagCSV_p79); + fChain->SetBranchAddress("HLT_Mu12_DoublePFJets40MaxDeta1p6_DoubleCaloBTagCSV_p79", &HLT_Mu12_DoublePFJets40MaxDeta1p6_DoubleCaloBTagCSV_p79, &b_HLT_Mu12_DoublePFJets40MaxDeta1p6_DoubleCaloBTagCSV_p79); + fChain->SetBranchAddress("HLT_Mu12_DoublePFJets54MaxDeta1p6_DoubleCaloBTagCSV_p79", &HLT_Mu12_DoublePFJets54MaxDeta1p6_DoubleCaloBTagCSV_p79, &b_HLT_Mu12_DoublePFJets54MaxDeta1p6_DoubleCaloBTagCSV_p79); + fChain->SetBranchAddress("HLT_Mu12_DoublePFJets62MaxDeta1p6_DoubleCaloBTagCSV_p79", &HLT_Mu12_DoublePFJets62MaxDeta1p6_DoubleCaloBTagCSV_p79, &b_HLT_Mu12_DoublePFJets62MaxDeta1p6_DoubleCaloBTagCSV_p79); + fChain->SetBranchAddress("HLT_DoublePFJets40_CaloBTagCSV_p79", &HLT_DoublePFJets40_CaloBTagCSV_p79, &b_HLT_DoublePFJets40_CaloBTagCSV_p79); + fChain->SetBranchAddress("HLT_DoublePFJets100_CaloBTagCSV_p79", &HLT_DoublePFJets100_CaloBTagCSV_p79, &b_HLT_DoublePFJets100_CaloBTagCSV_p79); + fChain->SetBranchAddress("HLT_DoublePFJets200_CaloBTagCSV_p79", &HLT_DoublePFJets200_CaloBTagCSV_p79, &b_HLT_DoublePFJets200_CaloBTagCSV_p79); + fChain->SetBranchAddress("HLT_DoublePFJets350_CaloBTagCSV_p79", &HLT_DoublePFJets350_CaloBTagCSV_p79, &b_HLT_DoublePFJets350_CaloBTagCSV_p79); + fChain->SetBranchAddress("HLT_DoublePFJets116MaxDeta1p6_DoubleCaloBTagCSV_p79", &HLT_DoublePFJets116MaxDeta1p6_DoubleCaloBTagCSV_p79, &b_HLT_DoublePFJets116MaxDeta1p6_DoubleCaloBTagCSV_p79); + fChain->SetBranchAddress("HLT_DoublePFJets128MaxDeta1p6_DoubleCaloBTagCSV_p79", &HLT_DoublePFJets128MaxDeta1p6_DoubleCaloBTagCSV_p79, &b_HLT_DoublePFJets128MaxDeta1p6_DoubleCaloBTagCSV_p79); + fChain->SetBranchAddress("HLT_Photon300_NoHE", &HLT_Photon300_NoHE, &b_HLT_Photon300_NoHE); + fChain->SetBranchAddress("HLT_Mu8_TrkIsoVVL", &HLT_Mu8_TrkIsoVVL, &b_HLT_Mu8_TrkIsoVVL); + fChain->SetBranchAddress("HLT_Mu8_DiEle12_CaloIdL_TrackIdL_DZ", &HLT_Mu8_DiEle12_CaloIdL_TrackIdL_DZ, &b_HLT_Mu8_DiEle12_CaloIdL_TrackIdL_DZ); + fChain->SetBranchAddress("HLT_Mu8_DiEle12_CaloIdL_TrackIdL", &HLT_Mu8_DiEle12_CaloIdL_TrackIdL, &b_HLT_Mu8_DiEle12_CaloIdL_TrackIdL); + fChain->SetBranchAddress("HLT_Mu8_Ele8_CaloIdM_TrackIdM_Mass8_PFHT350_DZ", &HLT_Mu8_Ele8_CaloIdM_TrackIdM_Mass8_PFHT350_DZ, &b_HLT_Mu8_Ele8_CaloIdM_TrackIdM_Mass8_PFHT350_DZ); + fChain->SetBranchAddress("HLT_Mu8_Ele8_CaloIdM_TrackIdM_Mass8_PFHT350", &HLT_Mu8_Ele8_CaloIdM_TrackIdM_Mass8_PFHT350, &b_HLT_Mu8_Ele8_CaloIdM_TrackIdM_Mass8_PFHT350); + fChain->SetBranchAddress("HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ", &HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ, &b_HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ); + fChain->SetBranchAddress("HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL", &HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL, &b_HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL); + fChain->SetBranchAddress("HLT_Mu17_TrkIsoVVL", &HLT_Mu17_TrkIsoVVL, &b_HLT_Mu17_TrkIsoVVL); + fChain->SetBranchAddress("HLT_Mu19_TrkIsoVVL", &HLT_Mu19_TrkIsoVVL, &b_HLT_Mu19_TrkIsoVVL); + fChain->SetBranchAddress("HLT_BTagMu_AK4DiJet20_Mu5", &HLT_BTagMu_AK4DiJet20_Mu5, &b_HLT_BTagMu_AK4DiJet20_Mu5); + fChain->SetBranchAddress("HLT_BTagMu_AK4DiJet40_Mu5", &HLT_BTagMu_AK4DiJet40_Mu5, &b_HLT_BTagMu_AK4DiJet40_Mu5); + fChain->SetBranchAddress("HLT_BTagMu_AK4DiJet70_Mu5", &HLT_BTagMu_AK4DiJet70_Mu5, &b_HLT_BTagMu_AK4DiJet70_Mu5); + fChain->SetBranchAddress("HLT_BTagMu_AK4DiJet110_Mu5", &HLT_BTagMu_AK4DiJet110_Mu5, &b_HLT_BTagMu_AK4DiJet110_Mu5); + fChain->SetBranchAddress("HLT_BTagMu_AK4DiJet170_Mu5", &HLT_BTagMu_AK4DiJet170_Mu5, &b_HLT_BTagMu_AK4DiJet170_Mu5); + fChain->SetBranchAddress("HLT_BTagMu_AK4Jet300_Mu5", &HLT_BTagMu_AK4Jet300_Mu5, &b_HLT_BTagMu_AK4Jet300_Mu5); + fChain->SetBranchAddress("HLT_BTagMu_AK8DiJet170_Mu5", &HLT_BTagMu_AK8DiJet170_Mu5, &b_HLT_BTagMu_AK8DiJet170_Mu5); + fChain->SetBranchAddress("HLT_BTagMu_AK8Jet300_Mu5", &HLT_BTagMu_AK8Jet300_Mu5, &b_HLT_BTagMu_AK8Jet300_Mu5); + fChain->SetBranchAddress("HLT_Ele15_Ele8_CaloIdL_TrackIdL_IsoVL", &HLT_Ele15_Ele8_CaloIdL_TrackIdL_IsoVL, &b_HLT_Ele15_Ele8_CaloIdL_TrackIdL_IsoVL); + fChain->SetBranchAddress("HLT_Ele23_Ele12_CaloIdL_TrackIdL_IsoVL_DZ", &HLT_Ele23_Ele12_CaloIdL_TrackIdL_IsoVL_DZ, &b_HLT_Ele23_Ele12_CaloIdL_TrackIdL_IsoVL_DZ); + fChain->SetBranchAddress("HLT_Ele23_Ele12_CaloIdL_TrackIdL_IsoVL", &HLT_Ele23_Ele12_CaloIdL_TrackIdL_IsoVL, &b_HLT_Ele23_Ele12_CaloIdL_TrackIdL_IsoVL); + fChain->SetBranchAddress("HLT_Mu23_TrkIsoVVL_Ele12_CaloIdL_TrackIdL_IsoVL_DZ", &HLT_Mu23_TrkIsoVVL_Ele12_CaloIdL_TrackIdL_IsoVL_DZ, &b_HLT_Mu23_TrkIsoVVL_Ele12_CaloIdL_TrackIdL_IsoVL_DZ); + fChain->SetBranchAddress("HLT_Mu23_TrkIsoVVL_Ele12_CaloIdL_TrackIdL_IsoVL", &HLT_Mu23_TrkIsoVVL_Ele12_CaloIdL_TrackIdL_IsoVL, &b_HLT_Mu23_TrkIsoVVL_Ele12_CaloIdL_TrackIdL_IsoVL); + fChain->SetBranchAddress("HLT_Mu12_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL", &HLT_Mu12_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL, &b_HLT_Mu12_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL); + fChain->SetBranchAddress("HLT_Mu12_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ", &HLT_Mu12_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ, &b_HLT_Mu12_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ); + fChain->SetBranchAddress("HLT_Mu12_DoublePhoton20", &HLT_Mu12_DoublePhoton20, &b_HLT_Mu12_DoublePhoton20); + fChain->SetBranchAddress("HLT_TriplePhoton_20_20_20_CaloIdLV2", &HLT_TriplePhoton_20_20_20_CaloIdLV2, &b_HLT_TriplePhoton_20_20_20_CaloIdLV2); + fChain->SetBranchAddress("HLT_TriplePhoton_20_20_20_CaloIdLV2_R9IdVL", &HLT_TriplePhoton_20_20_20_CaloIdLV2_R9IdVL, &b_HLT_TriplePhoton_20_20_20_CaloIdLV2_R9IdVL); + fChain->SetBranchAddress("HLT_TriplePhoton_30_30_10_CaloIdLV2", &HLT_TriplePhoton_30_30_10_CaloIdLV2, &b_HLT_TriplePhoton_30_30_10_CaloIdLV2); + fChain->SetBranchAddress("HLT_TriplePhoton_30_30_10_CaloIdLV2_R9IdVL", &HLT_TriplePhoton_30_30_10_CaloIdLV2_R9IdVL, &b_HLT_TriplePhoton_30_30_10_CaloIdLV2_R9IdVL); + fChain->SetBranchAddress("HLT_TriplePhoton_35_35_5_CaloIdLV2_R9IdVL", &HLT_TriplePhoton_35_35_5_CaloIdLV2_R9IdVL, &b_HLT_TriplePhoton_35_35_5_CaloIdLV2_R9IdVL); + fChain->SetBranchAddress("HLT_Photon20", &HLT_Photon20, &b_HLT_Photon20); + fChain->SetBranchAddress("HLT_Photon33", &HLT_Photon33, &b_HLT_Photon33); + fChain->SetBranchAddress("HLT_Photon50", &HLT_Photon50, &b_HLT_Photon50); + fChain->SetBranchAddress("HLT_Photon75", &HLT_Photon75, &b_HLT_Photon75); + fChain->SetBranchAddress("HLT_Photon90", &HLT_Photon90, &b_HLT_Photon90); + fChain->SetBranchAddress("HLT_Photon120", &HLT_Photon120, &b_HLT_Photon120); + fChain->SetBranchAddress("HLT_Photon150", &HLT_Photon150, &b_HLT_Photon150); + fChain->SetBranchAddress("HLT_Photon175", &HLT_Photon175, &b_HLT_Photon175); + fChain->SetBranchAddress("HLT_Photon200", &HLT_Photon200, &b_HLT_Photon200); + fChain->SetBranchAddress("HLT_Photon50_R9Id90_HE10_IsoM", &HLT_Photon50_R9Id90_HE10_IsoM, &b_HLT_Photon50_R9Id90_HE10_IsoM); + fChain->SetBranchAddress("HLT_Photon75_R9Id90_HE10_IsoM", &HLT_Photon75_R9Id90_HE10_IsoM, &b_HLT_Photon75_R9Id90_HE10_IsoM); + fChain->SetBranchAddress("HLT_Photon75_R9Id90_HE10_IsoM_EBOnly_CaloMJJ300_PFJetsMJJ400DEta3", &HLT_Photon75_R9Id90_HE10_IsoM_EBOnly_CaloMJJ300_PFJetsMJJ400DEta3, &b_HLT_Photon75_R9Id90_HE10_IsoM_EBOnly_CaloMJJ300_PFJetsMJJ400DEta3); + fChain->SetBranchAddress("HLT_Photon75_R9Id90_HE10_IsoM_EBOnly_CaloMJJ400_PFJetsMJJ600DEta3", &HLT_Photon75_R9Id90_HE10_IsoM_EBOnly_CaloMJJ400_PFJetsMJJ600DEta3, &b_HLT_Photon75_R9Id90_HE10_IsoM_EBOnly_CaloMJJ400_PFJetsMJJ600DEta3); + fChain->SetBranchAddress("HLT_Photon90_R9Id90_HE10_IsoM", &HLT_Photon90_R9Id90_HE10_IsoM, &b_HLT_Photon90_R9Id90_HE10_IsoM); + fChain->SetBranchAddress("HLT_Photon120_R9Id90_HE10_IsoM", &HLT_Photon120_R9Id90_HE10_IsoM, &b_HLT_Photon120_R9Id90_HE10_IsoM); + fChain->SetBranchAddress("HLT_Photon165_R9Id90_HE10_IsoM", &HLT_Photon165_R9Id90_HE10_IsoM, &b_HLT_Photon165_R9Id90_HE10_IsoM); + fChain->SetBranchAddress("HLT_Diphoton30_22_R9Id_OR_IsoCaloId_AND_HE_R9Id_Mass90", &HLT_Diphoton30_22_R9Id_OR_IsoCaloId_AND_HE_R9Id_Mass90, &b_HLT_Diphoton30_22_R9Id_OR_IsoCaloId_AND_HE_R9Id_Mass90); + fChain->SetBranchAddress("HLT_Diphoton30_22_R9Id_OR_IsoCaloId_AND_HE_R9Id_Mass95", &HLT_Diphoton30_22_R9Id_OR_IsoCaloId_AND_HE_R9Id_Mass95, &b_HLT_Diphoton30_22_R9Id_OR_IsoCaloId_AND_HE_R9Id_Mass95); + fChain->SetBranchAddress("HLT_Diphoton30PV_18PV_R9Id_AND_IsoCaloId_AND_HE_R9Id_PixelVeto_Mass55", &HLT_Diphoton30PV_18PV_R9Id_AND_IsoCaloId_AND_HE_R9Id_PixelVeto_Mass55, &b_HLT_Diphoton30PV_18PV_R9Id_AND_IsoCaloId_AND_HE_R9Id_PixelVeto_Mass55); + fChain->SetBranchAddress("HLT_Diphoton30PV_18PV_R9Id_AND_IsoCaloId_AND_HE_R9Id_NoPixelVeto_Mass55", &HLT_Diphoton30PV_18PV_R9Id_AND_IsoCaloId_AND_HE_R9Id_NoPixelVeto_Mass55, &b_HLT_Diphoton30PV_18PV_R9Id_AND_IsoCaloId_AND_HE_R9Id_NoPixelVeto_Mass55); + fChain->SetBranchAddress("HLT_Diphoton30EB_18EB_R9Id_OR_IsoCaloId_AND_HE_R9Id_NoPixelVeto_Mass55", &HLT_Diphoton30EB_18EB_R9Id_OR_IsoCaloId_AND_HE_R9Id_NoPixelVeto_Mass55, &b_HLT_Diphoton30EB_18EB_R9Id_OR_IsoCaloId_AND_HE_R9Id_NoPixelVeto_Mass55); + fChain->SetBranchAddress("HLT_Diphoton30EB_18EB_R9Id_OR_IsoCaloId_AND_HE_R9Id_PixelVeto_Mass55", &HLT_Diphoton30EB_18EB_R9Id_OR_IsoCaloId_AND_HE_R9Id_PixelVeto_Mass55, &b_HLT_Diphoton30EB_18EB_R9Id_OR_IsoCaloId_AND_HE_R9Id_PixelVeto_Mass55); + fChain->SetBranchAddress("HLT_Dimuon0_Jpsi_L1_NoOS", &HLT_Dimuon0_Jpsi_L1_NoOS, &b_HLT_Dimuon0_Jpsi_L1_NoOS); + fChain->SetBranchAddress("HLT_Dimuon0_Jpsi_NoVertexing_NoOS", &HLT_Dimuon0_Jpsi_NoVertexing_NoOS, &b_HLT_Dimuon0_Jpsi_NoVertexing_NoOS); + fChain->SetBranchAddress("HLT_Dimuon0_Jpsi", &HLT_Dimuon0_Jpsi, &b_HLT_Dimuon0_Jpsi); + fChain->SetBranchAddress("HLT_Dimuon0_Jpsi_NoVertexing", &HLT_Dimuon0_Jpsi_NoVertexing, &b_HLT_Dimuon0_Jpsi_NoVertexing); + fChain->SetBranchAddress("HLT_Dimuon0_Jpsi_L1_4R_0er1p5R", &HLT_Dimuon0_Jpsi_L1_4R_0er1p5R, &b_HLT_Dimuon0_Jpsi_L1_4R_0er1p5R); + fChain->SetBranchAddress("HLT_Dimuon0_Jpsi_NoVertexing_L1_4R_0er1p5R", &HLT_Dimuon0_Jpsi_NoVertexing_L1_4R_0er1p5R, &b_HLT_Dimuon0_Jpsi_NoVertexing_L1_4R_0er1p5R); + fChain->SetBranchAddress("HLT_Dimuon0_Jpsi3p5_Muon2", &HLT_Dimuon0_Jpsi3p5_Muon2, &b_HLT_Dimuon0_Jpsi3p5_Muon2); + fChain->SetBranchAddress("HLT_Dimuon0_Upsilon_L1_4p5", &HLT_Dimuon0_Upsilon_L1_4p5, &b_HLT_Dimuon0_Upsilon_L1_4p5); + fChain->SetBranchAddress("HLT_Dimuon0_Upsilon_L1_5", &HLT_Dimuon0_Upsilon_L1_5, &b_HLT_Dimuon0_Upsilon_L1_5); + fChain->SetBranchAddress("HLT_Dimuon0_Upsilon_L1_4p5NoOS", &HLT_Dimuon0_Upsilon_L1_4p5NoOS, &b_HLT_Dimuon0_Upsilon_L1_4p5NoOS); + fChain->SetBranchAddress("HLT_Dimuon0_Upsilon_L1_4p5er2p0", &HLT_Dimuon0_Upsilon_L1_4p5er2p0, &b_HLT_Dimuon0_Upsilon_L1_4p5er2p0); + fChain->SetBranchAddress("HLT_Dimuon0_Upsilon_L1_4p5er2p0M", &HLT_Dimuon0_Upsilon_L1_4p5er2p0M, &b_HLT_Dimuon0_Upsilon_L1_4p5er2p0M); + fChain->SetBranchAddress("HLT_Dimuon0_Upsilon_NoVertexing", &HLT_Dimuon0_Upsilon_NoVertexing, &b_HLT_Dimuon0_Upsilon_NoVertexing); + fChain->SetBranchAddress("HLT_Dimuon0_Upsilon_L1_5M", &HLT_Dimuon0_Upsilon_L1_5M, &b_HLT_Dimuon0_Upsilon_L1_5M); + fChain->SetBranchAddress("HLT_Dimuon0_LowMass_L1_0er1p5R", &HLT_Dimuon0_LowMass_L1_0er1p5R, &b_HLT_Dimuon0_LowMass_L1_0er1p5R); + fChain->SetBranchAddress("HLT_Dimuon0_LowMass_L1_0er1p5", &HLT_Dimuon0_LowMass_L1_0er1p5, &b_HLT_Dimuon0_LowMass_L1_0er1p5); + fChain->SetBranchAddress("HLT_Dimuon0_LowMass", &HLT_Dimuon0_LowMass, &b_HLT_Dimuon0_LowMass); + fChain->SetBranchAddress("HLT_Dimuon0_LowMass_L1_4", &HLT_Dimuon0_LowMass_L1_4, &b_HLT_Dimuon0_LowMass_L1_4); + fChain->SetBranchAddress("HLT_Dimuon0_LowMass_L1_4R", &HLT_Dimuon0_LowMass_L1_4R, &b_HLT_Dimuon0_LowMass_L1_4R); + fChain->SetBranchAddress("HLT_Dimuon0_LowMass_L1_TM530", &HLT_Dimuon0_LowMass_L1_TM530, &b_HLT_Dimuon0_LowMass_L1_TM530); + fChain->SetBranchAddress("HLT_Dimuon0_Upsilon_Muon_L1_TM0", &HLT_Dimuon0_Upsilon_Muon_L1_TM0, &b_HLT_Dimuon0_Upsilon_Muon_L1_TM0); + fChain->SetBranchAddress("HLT_Dimuon0_Upsilon_Muon_NoL1Mass", &HLT_Dimuon0_Upsilon_Muon_NoL1Mass, &b_HLT_Dimuon0_Upsilon_Muon_NoL1Mass); + fChain->SetBranchAddress("HLT_TripleMu_5_3_3_Mass3p8to60_DZ", &HLT_TripleMu_5_3_3_Mass3p8to60_DZ, &b_HLT_TripleMu_5_3_3_Mass3p8to60_DZ); + fChain->SetBranchAddress("HLT_TripleMu_10_5_5_DZ", &HLT_TripleMu_10_5_5_DZ, &b_HLT_TripleMu_10_5_5_DZ); + fChain->SetBranchAddress("HLT_TripleMu_12_10_5", &HLT_TripleMu_12_10_5, &b_HLT_TripleMu_12_10_5); + fChain->SetBranchAddress("HLT_Tau3Mu_Mu7_Mu1_TkMu1_Tau15", &HLT_Tau3Mu_Mu7_Mu1_TkMu1_Tau15, &b_HLT_Tau3Mu_Mu7_Mu1_TkMu1_Tau15); + fChain->SetBranchAddress("HLT_Tau3Mu_Mu7_Mu1_TkMu1_Tau15_Charge1", &HLT_Tau3Mu_Mu7_Mu1_TkMu1_Tau15_Charge1, &b_HLT_Tau3Mu_Mu7_Mu1_TkMu1_Tau15_Charge1); + fChain->SetBranchAddress("HLT_Tau3Mu_Mu7_Mu1_TkMu1_IsoTau15", &HLT_Tau3Mu_Mu7_Mu1_TkMu1_IsoTau15, &b_HLT_Tau3Mu_Mu7_Mu1_TkMu1_IsoTau15); + fChain->SetBranchAddress("HLT_Tau3Mu_Mu7_Mu1_TkMu1_IsoTau15_Charge1", &HLT_Tau3Mu_Mu7_Mu1_TkMu1_IsoTau15_Charge1, &b_HLT_Tau3Mu_Mu7_Mu1_TkMu1_IsoTau15_Charge1); + fChain->SetBranchAddress("HLT_DoubleMu3_DZ_PFMET50_PFMHT60", &HLT_DoubleMu3_DZ_PFMET50_PFMHT60, &b_HLT_DoubleMu3_DZ_PFMET50_PFMHT60); + fChain->SetBranchAddress("HLT_DoubleMu3_DZ_PFMET70_PFMHT70", &HLT_DoubleMu3_DZ_PFMET70_PFMHT70, &b_HLT_DoubleMu3_DZ_PFMET70_PFMHT70); + fChain->SetBranchAddress("HLT_DoubleMu3_DZ_PFMET90_PFMHT90", &HLT_DoubleMu3_DZ_PFMET90_PFMHT90, &b_HLT_DoubleMu3_DZ_PFMET90_PFMHT90); + fChain->SetBranchAddress("HLT_DoubleMu3_Trk_Tau3mu_NoL1Mass", &HLT_DoubleMu3_Trk_Tau3mu_NoL1Mass, &b_HLT_DoubleMu3_Trk_Tau3mu_NoL1Mass); + fChain->SetBranchAddress("HLT_DoubleMu4_Jpsi_Displaced", &HLT_DoubleMu4_Jpsi_Displaced, &b_HLT_DoubleMu4_Jpsi_Displaced); + fChain->SetBranchAddress("HLT_DoubleMu4_Jpsi_NoVertexing", &HLT_DoubleMu4_Jpsi_NoVertexing, &b_HLT_DoubleMu4_Jpsi_NoVertexing); + fChain->SetBranchAddress("HLT_DoubleMu4_JpsiTrkTrk_Displaced", &HLT_DoubleMu4_JpsiTrkTrk_Displaced, &b_HLT_DoubleMu4_JpsiTrkTrk_Displaced); + fChain->SetBranchAddress("HLT_DoubleMu43NoFiltersNoVtx", &HLT_DoubleMu43NoFiltersNoVtx, &b_HLT_DoubleMu43NoFiltersNoVtx); + fChain->SetBranchAddress("HLT_DoubleMu48NoFiltersNoVtx", &HLT_DoubleMu48NoFiltersNoVtx, &b_HLT_DoubleMu48NoFiltersNoVtx); + fChain->SetBranchAddress("HLT_Mu43NoFiltersNoVtx_Photon43_CaloIdL", &HLT_Mu43NoFiltersNoVtx_Photon43_CaloIdL, &b_HLT_Mu43NoFiltersNoVtx_Photon43_CaloIdL); + fChain->SetBranchAddress("HLT_Mu48NoFiltersNoVtx_Photon48_CaloIdL", &HLT_Mu48NoFiltersNoVtx_Photon48_CaloIdL, &b_HLT_Mu48NoFiltersNoVtx_Photon48_CaloIdL); + fChain->SetBranchAddress("HLT_DoubleMu20_7_Mass0to30_L1_DM4", &HLT_DoubleMu20_7_Mass0to30_L1_DM4, &b_HLT_DoubleMu20_7_Mass0to30_L1_DM4); + fChain->SetBranchAddress("HLT_DoubleMu20_7_Mass0to30_L1_DM4EG", &HLT_DoubleMu20_7_Mass0to30_L1_DM4EG, &b_HLT_DoubleMu20_7_Mass0to30_L1_DM4EG); + fChain->SetBranchAddress("HLT_HT425", &HLT_HT425, &b_HLT_HT425); + fChain->SetBranchAddress("HLT_HT430_DisplacedDijet40_DisplacedTrack", &HLT_HT430_DisplacedDijet40_DisplacedTrack, &b_HLT_HT430_DisplacedDijet40_DisplacedTrack); + fChain->SetBranchAddress("HLT_HT500_DisplacedDijet40_DisplacedTrack", &HLT_HT500_DisplacedDijet40_DisplacedTrack, &b_HLT_HT500_DisplacedDijet40_DisplacedTrack); + fChain->SetBranchAddress("HLT_HT430_DisplacedDijet60_DisplacedTrack", &HLT_HT430_DisplacedDijet60_DisplacedTrack, &b_HLT_HT430_DisplacedDijet60_DisplacedTrack); + fChain->SetBranchAddress("HLT_HT400_DisplacedDijet40_DisplacedTrack", &HLT_HT400_DisplacedDijet40_DisplacedTrack, &b_HLT_HT400_DisplacedDijet40_DisplacedTrack); + fChain->SetBranchAddress("HLT_HT650_DisplacedDijet60_Inclusive", &HLT_HT650_DisplacedDijet60_Inclusive, &b_HLT_HT650_DisplacedDijet60_Inclusive); + fChain->SetBranchAddress("HLT_HT550_DisplacedDijet60_Inclusive", &HLT_HT550_DisplacedDijet60_Inclusive, &b_HLT_HT550_DisplacedDijet60_Inclusive); + fChain->SetBranchAddress("HLT_DiJet110_35_Mjj650_PFMET110", &HLT_DiJet110_35_Mjj650_PFMET110, &b_HLT_DiJet110_35_Mjj650_PFMET110); + fChain->SetBranchAddress("HLT_DiJet110_35_Mjj650_PFMET120", &HLT_DiJet110_35_Mjj650_PFMET120, &b_HLT_DiJet110_35_Mjj650_PFMET120); + fChain->SetBranchAddress("HLT_DiJet110_35_Mjj650_PFMET130", &HLT_DiJet110_35_Mjj650_PFMET130, &b_HLT_DiJet110_35_Mjj650_PFMET130); + fChain->SetBranchAddress("HLT_TripleJet110_35_35_Mjj650_PFMET110", &HLT_TripleJet110_35_35_Mjj650_PFMET110, &b_HLT_TripleJet110_35_35_Mjj650_PFMET110); + fChain->SetBranchAddress("HLT_TripleJet110_35_35_Mjj650_PFMET120", &HLT_TripleJet110_35_35_Mjj650_PFMET120, &b_HLT_TripleJet110_35_35_Mjj650_PFMET120); + fChain->SetBranchAddress("HLT_TripleJet110_35_35_Mjj650_PFMET130", &HLT_TripleJet110_35_35_Mjj650_PFMET130, &b_HLT_TripleJet110_35_35_Mjj650_PFMET130); + fChain->SetBranchAddress("HLT_VBF_DoubleLooseChargedIsoPFTau20_Trk1_eta2p1", &HLT_VBF_DoubleLooseChargedIsoPFTau20_Trk1_eta2p1, &b_HLT_VBF_DoubleLooseChargedIsoPFTau20_Trk1_eta2p1); + fChain->SetBranchAddress("HLT_VBF_DoubleMediumChargedIsoPFTau20_Trk1_eta2p1", &HLT_VBF_DoubleMediumChargedIsoPFTau20_Trk1_eta2p1, &b_HLT_VBF_DoubleMediumChargedIsoPFTau20_Trk1_eta2p1); + fChain->SetBranchAddress("HLT_VBF_DoubleTightChargedIsoPFTau20_Trk1_eta2p1", &HLT_VBF_DoubleTightChargedIsoPFTau20_Trk1_eta2p1, &b_HLT_VBF_DoubleTightChargedIsoPFTau20_Trk1_eta2p1); + fChain->SetBranchAddress("HLT_Ele30_eta2p1_WPTight_Gsf_CentralPFJet35_EleCleaned", &HLT_Ele30_eta2p1_WPTight_Gsf_CentralPFJet35_EleCleaned, &b_HLT_Ele30_eta2p1_WPTight_Gsf_CentralPFJet35_EleCleaned); + fChain->SetBranchAddress("HLT_Ele28_eta2p1_WPTight_Gsf_HT150", &HLT_Ele28_eta2p1_WPTight_Gsf_HT150, &b_HLT_Ele28_eta2p1_WPTight_Gsf_HT150); + fChain->SetBranchAddress("HLT_Ele28_HighEta_SC20_Mass55", &HLT_Ele28_HighEta_SC20_Mass55, &b_HLT_Ele28_HighEta_SC20_Mass55); + fChain->SetBranchAddress("HLT_DoubleMu20_7_Mass0to30_Photon23", &HLT_DoubleMu20_7_Mass0to30_Photon23, &b_HLT_DoubleMu20_7_Mass0to30_Photon23); + fChain->SetBranchAddress("HLT_Ele15_IsoVVVL_PFHT450_CaloBTagCSV_4p5", &HLT_Ele15_IsoVVVL_PFHT450_CaloBTagCSV_4p5, &b_HLT_Ele15_IsoVVVL_PFHT450_CaloBTagCSV_4p5); + fChain->SetBranchAddress("HLT_Ele15_IsoVVVL_PFHT450_PFMET50", &HLT_Ele15_IsoVVVL_PFHT450_PFMET50, &b_HLT_Ele15_IsoVVVL_PFHT450_PFMET50); + fChain->SetBranchAddress("HLT_Ele15_IsoVVVL_PFHT450", &HLT_Ele15_IsoVVVL_PFHT450, &b_HLT_Ele15_IsoVVVL_PFHT450); + fChain->SetBranchAddress("HLT_Ele50_IsoVVVL_PFHT450", &HLT_Ele50_IsoVVVL_PFHT450, &b_HLT_Ele50_IsoVVVL_PFHT450); + fChain->SetBranchAddress("HLT_Ele15_IsoVVVL_PFHT600", &HLT_Ele15_IsoVVVL_PFHT600, &b_HLT_Ele15_IsoVVVL_PFHT600); + fChain->SetBranchAddress("HLT_Mu8_TrkIsoVVL_DiPFJet40_DEta3p5_MJJ750_HTT300_PFMETNoMu60", &HLT_Mu8_TrkIsoVVL_DiPFJet40_DEta3p5_MJJ750_HTT300_PFMETNoMu60, &b_HLT_Mu8_TrkIsoVVL_DiPFJet40_DEta3p5_MJJ750_HTT300_PFMETNoMu60); + fChain->SetBranchAddress("HLT_Mu10_TrkIsoVVL_DiPFJet40_DEta3p5_MJJ750_HTT350_PFMETNoMu60", &HLT_Mu10_TrkIsoVVL_DiPFJet40_DEta3p5_MJJ750_HTT350_PFMETNoMu60, &b_HLT_Mu10_TrkIsoVVL_DiPFJet40_DEta3p5_MJJ750_HTT350_PFMETNoMu60); + fChain->SetBranchAddress("HLT_Mu15_IsoVVVL_PFHT450_CaloBTagCSV_4p5", &HLT_Mu15_IsoVVVL_PFHT450_CaloBTagCSV_4p5, &b_HLT_Mu15_IsoVVVL_PFHT450_CaloBTagCSV_4p5); + fChain->SetBranchAddress("HLT_Mu15_IsoVVVL_PFHT450_PFMET50", &HLT_Mu15_IsoVVVL_PFHT450_PFMET50, &b_HLT_Mu15_IsoVVVL_PFHT450_PFMET50); + fChain->SetBranchAddress("HLT_Mu15_IsoVVVL_PFHT450", &HLT_Mu15_IsoVVVL_PFHT450, &b_HLT_Mu15_IsoVVVL_PFHT450); + fChain->SetBranchAddress("HLT_Mu50_IsoVVVL_PFHT450", &HLT_Mu50_IsoVVVL_PFHT450, &b_HLT_Mu50_IsoVVVL_PFHT450); + fChain->SetBranchAddress("HLT_Mu15_IsoVVVL_PFHT600", &HLT_Mu15_IsoVVVL_PFHT600, &b_HLT_Mu15_IsoVVVL_PFHT600); + fChain->SetBranchAddress("HLT_Dimuon10_PsiPrime_Barrel_Seagulls", &HLT_Dimuon10_PsiPrime_Barrel_Seagulls, &b_HLT_Dimuon10_PsiPrime_Barrel_Seagulls); + fChain->SetBranchAddress("HLT_Dimuon20_Jpsi_Barrel_Seagulls", &HLT_Dimuon20_Jpsi_Barrel_Seagulls, &b_HLT_Dimuon20_Jpsi_Barrel_Seagulls); + fChain->SetBranchAddress("HLT_Dimuon10_Upsilon_Barrel_Seagulls", &HLT_Dimuon10_Upsilon_Barrel_Seagulls, &b_HLT_Dimuon10_Upsilon_Barrel_Seagulls); + fChain->SetBranchAddress("HLT_Dimuon12_Upsilon_eta1p5", &HLT_Dimuon12_Upsilon_eta1p5, &b_HLT_Dimuon12_Upsilon_eta1p5); + fChain->SetBranchAddress("HLT_Dimuon14_Phi_Barrel_Seagulls", &HLT_Dimuon14_Phi_Barrel_Seagulls, &b_HLT_Dimuon14_Phi_Barrel_Seagulls); + fChain->SetBranchAddress("HLT_Dimuon18_PsiPrime", &HLT_Dimuon18_PsiPrime, &b_HLT_Dimuon18_PsiPrime); + fChain->SetBranchAddress("HLT_Dimuon25_Jpsi", &HLT_Dimuon25_Jpsi, &b_HLT_Dimuon25_Jpsi); + fChain->SetBranchAddress("HLT_Dimuon18_PsiPrime_noCorrL1", &HLT_Dimuon18_PsiPrime_noCorrL1, &b_HLT_Dimuon18_PsiPrime_noCorrL1); + fChain->SetBranchAddress("HLT_Dimuon24_Upsilon_noCorrL1", &HLT_Dimuon24_Upsilon_noCorrL1, &b_HLT_Dimuon24_Upsilon_noCorrL1); + fChain->SetBranchAddress("HLT_Dimuon24_Phi_noCorrL1", &HLT_Dimuon24_Phi_noCorrL1, &b_HLT_Dimuon24_Phi_noCorrL1); + fChain->SetBranchAddress("HLT_Dimuon25_Jpsi_noCorrL1", &HLT_Dimuon25_Jpsi_noCorrL1, &b_HLT_Dimuon25_Jpsi_noCorrL1); + fChain->SetBranchAddress("HLT_DiMu9_Ele9_CaloIdL_TrackIdL_DZ", &HLT_DiMu9_Ele9_CaloIdL_TrackIdL_DZ, &b_HLT_DiMu9_Ele9_CaloIdL_TrackIdL_DZ); + fChain->SetBranchAddress("HLT_DiMu9_Ele9_CaloIdL_TrackIdL", &HLT_DiMu9_Ele9_CaloIdL_TrackIdL, &b_HLT_DiMu9_Ele9_CaloIdL_TrackIdL); + fChain->SetBranchAddress("HLT_DoubleIsoMu20_eta2p1", &HLT_DoubleIsoMu20_eta2p1, &b_HLT_DoubleIsoMu20_eta2p1); + fChain->SetBranchAddress("HLT_DoubleIsoMu24_eta2p1", &HLT_DoubleIsoMu24_eta2p1, &b_HLT_DoubleIsoMu24_eta2p1); + fChain->SetBranchAddress("HLT_TrkMu12_DoubleTrkMu5NoFiltersNoVtx", &HLT_TrkMu12_DoubleTrkMu5NoFiltersNoVtx, &b_HLT_TrkMu12_DoubleTrkMu5NoFiltersNoVtx); + fChain->SetBranchAddress("HLT_TrkMu16_DoubleTrkMu6NoFiltersNoVtx", &HLT_TrkMu16_DoubleTrkMu6NoFiltersNoVtx, &b_HLT_TrkMu16_DoubleTrkMu6NoFiltersNoVtx); + fChain->SetBranchAddress("HLT_TrkMu17_DoubleTrkMu8NoFiltersNoVtx", &HLT_TrkMu17_DoubleTrkMu8NoFiltersNoVtx, &b_HLT_TrkMu17_DoubleTrkMu8NoFiltersNoVtx); + fChain->SetBranchAddress("HLT_Mu8", &HLT_Mu8, &b_HLT_Mu8); + fChain->SetBranchAddress("HLT_Mu17", &HLT_Mu17, &b_HLT_Mu17); + fChain->SetBranchAddress("HLT_Mu19", &HLT_Mu19, &b_HLT_Mu19); + fChain->SetBranchAddress("HLT_Mu17_Photon30_IsoCaloId", &HLT_Mu17_Photon30_IsoCaloId, &b_HLT_Mu17_Photon30_IsoCaloId); + fChain->SetBranchAddress("HLT_Ele8_CaloIdL_TrackIdL_IsoVL_PFJet30", &HLT_Ele8_CaloIdL_TrackIdL_IsoVL_PFJet30, &b_HLT_Ele8_CaloIdL_TrackIdL_IsoVL_PFJet30); + fChain->SetBranchAddress("HLT_Ele12_CaloIdL_TrackIdL_IsoVL_PFJet30", &HLT_Ele12_CaloIdL_TrackIdL_IsoVL_PFJet30, &b_HLT_Ele12_CaloIdL_TrackIdL_IsoVL_PFJet30); + fChain->SetBranchAddress("HLT_Ele15_CaloIdL_TrackIdL_IsoVL_PFJet30", &HLT_Ele15_CaloIdL_TrackIdL_IsoVL_PFJet30, &b_HLT_Ele15_CaloIdL_TrackIdL_IsoVL_PFJet30); + fChain->SetBranchAddress("HLT_Ele23_CaloIdL_TrackIdL_IsoVL_PFJet30", &HLT_Ele23_CaloIdL_TrackIdL_IsoVL_PFJet30, &b_HLT_Ele23_CaloIdL_TrackIdL_IsoVL_PFJet30); + fChain->SetBranchAddress("HLT_Ele8_CaloIdM_TrackIdM_PFJet30", &HLT_Ele8_CaloIdM_TrackIdM_PFJet30, &b_HLT_Ele8_CaloIdM_TrackIdM_PFJet30); + fChain->SetBranchAddress("HLT_Ele17_CaloIdM_TrackIdM_PFJet30", &HLT_Ele17_CaloIdM_TrackIdM_PFJet30, &b_HLT_Ele17_CaloIdM_TrackIdM_PFJet30); + fChain->SetBranchAddress("HLT_Ele23_CaloIdM_TrackIdM_PFJet30", &HLT_Ele23_CaloIdM_TrackIdM_PFJet30, &b_HLT_Ele23_CaloIdM_TrackIdM_PFJet30); + fChain->SetBranchAddress("HLT_Ele50_CaloIdVT_GsfTrkIdT_PFJet165", &HLT_Ele50_CaloIdVT_GsfTrkIdT_PFJet165, &b_HLT_Ele50_CaloIdVT_GsfTrkIdT_PFJet165); + fChain->SetBranchAddress("HLT_Ele115_CaloIdVT_GsfTrkIdT", &HLT_Ele115_CaloIdVT_GsfTrkIdT, &b_HLT_Ele115_CaloIdVT_GsfTrkIdT); + fChain->SetBranchAddress("HLT_Ele135_CaloIdVT_GsfTrkIdT", &HLT_Ele135_CaloIdVT_GsfTrkIdT, &b_HLT_Ele135_CaloIdVT_GsfTrkIdT); + fChain->SetBranchAddress("HLT_Ele145_CaloIdVT_GsfTrkIdT", &HLT_Ele145_CaloIdVT_GsfTrkIdT, &b_HLT_Ele145_CaloIdVT_GsfTrkIdT); + fChain->SetBranchAddress("HLT_Ele200_CaloIdVT_GsfTrkIdT", &HLT_Ele200_CaloIdVT_GsfTrkIdT, &b_HLT_Ele200_CaloIdVT_GsfTrkIdT); + fChain->SetBranchAddress("HLT_Ele250_CaloIdVT_GsfTrkIdT", &HLT_Ele250_CaloIdVT_GsfTrkIdT, &b_HLT_Ele250_CaloIdVT_GsfTrkIdT); + fChain->SetBranchAddress("HLT_Ele300_CaloIdVT_GsfTrkIdT", &HLT_Ele300_CaloIdVT_GsfTrkIdT, &b_HLT_Ele300_CaloIdVT_GsfTrkIdT); + fChain->SetBranchAddress("HLT_PFHT330PT30_QuadPFJet_75_60_45_40_TriplePFBTagDeepCSV_4p5", &HLT_PFHT330PT30_QuadPFJet_75_60_45_40_TriplePFBTagDeepCSV_4p5, &b_HLT_PFHT330PT30_QuadPFJet_75_60_45_40_TriplePFBTagDeepCSV_4p5); + fChain->SetBranchAddress("HLT_PFHT330PT30_QuadPFJet_75_60_45_40", &HLT_PFHT330PT30_QuadPFJet_75_60_45_40, &b_HLT_PFHT330PT30_QuadPFJet_75_60_45_40); + fChain->SetBranchAddress("HLT_PFHT380_SixPFJet32_DoublePFBTagCSV_2p2", &HLT_PFHT380_SixPFJet32_DoublePFBTagCSV_2p2, &b_HLT_PFHT380_SixPFJet32_DoublePFBTagCSV_2p2); + fChain->SetBranchAddress("HLT_PFHT380_SixPFJet32_DoublePFBTagDeepCSV_2p2", &HLT_PFHT380_SixPFJet32_DoublePFBTagDeepCSV_2p2, &b_HLT_PFHT380_SixPFJet32_DoublePFBTagDeepCSV_2p2); + fChain->SetBranchAddress("HLT_PFHT380_SixPFJet32", &HLT_PFHT380_SixPFJet32, &b_HLT_PFHT380_SixPFJet32); + fChain->SetBranchAddress("HLT_PFHT430_SixPFJet40_PFBTagCSV_1p5", &HLT_PFHT430_SixPFJet40_PFBTagCSV_1p5, &b_HLT_PFHT430_SixPFJet40_PFBTagCSV_1p5); + fChain->SetBranchAddress("HLT_PFHT430_SixPFJet40", &HLT_PFHT430_SixPFJet40, &b_HLT_PFHT430_SixPFJet40); + fChain->SetBranchAddress("HLT_PFHT350", &HLT_PFHT350, &b_HLT_PFHT350); + fChain->SetBranchAddress("HLT_PFHT350MinPFJet15", &HLT_PFHT350MinPFJet15, &b_HLT_PFHT350MinPFJet15); + fChain->SetBranchAddress("HLT_Photon60_R9Id90_CaloIdL_IsoL", &HLT_Photon60_R9Id90_CaloIdL_IsoL, &b_HLT_Photon60_R9Id90_CaloIdL_IsoL); + fChain->SetBranchAddress("HLT_Photon60_R9Id90_CaloIdL_IsoL_DisplacedIdL", &HLT_Photon60_R9Id90_CaloIdL_IsoL_DisplacedIdL, &b_HLT_Photon60_R9Id90_CaloIdL_IsoL_DisplacedIdL); + fChain->SetBranchAddress("HLT_Photon60_R9Id90_CaloIdL_IsoL_DisplacedIdL_PFHT350MinPFJet15", &HLT_Photon60_R9Id90_CaloIdL_IsoL_DisplacedIdL_PFHT350MinPFJet15, &b_HLT_Photon60_R9Id90_CaloIdL_IsoL_DisplacedIdL_PFHT350MinPFJet15); + fChain->SetBranchAddress("HLT_FullTrack_Multiplicity85", &HLT_FullTrack_Multiplicity85, &b_HLT_FullTrack_Multiplicity85); + fChain->SetBranchAddress("HLT_FullTrack_Multiplicity100", &HLT_FullTrack_Multiplicity100, &b_HLT_FullTrack_Multiplicity100); + fChain->SetBranchAddress("HLT_FullTrack_Multiplicity130", &HLT_FullTrack_Multiplicity130, &b_HLT_FullTrack_Multiplicity130); + fChain->SetBranchAddress("HLT_FullTrack_Multiplicity155", &HLT_FullTrack_Multiplicity155, &b_HLT_FullTrack_Multiplicity155); + fChain->SetBranchAddress("HLT_ECALHT800", &HLT_ECALHT800, &b_HLT_ECALHT800); + fChain->SetBranchAddress("HLT_DiSC30_18_EIso_AND_HE_Mass70", &HLT_DiSC30_18_EIso_AND_HE_Mass70, &b_HLT_DiSC30_18_EIso_AND_HE_Mass70); + fChain->SetBranchAddress("HLT_Physics", &HLT_Physics, &b_HLT_Physics); + fChain->SetBranchAddress("HLT_Physics_part0", &HLT_Physics_part0, &b_HLT_Physics_part0); + fChain->SetBranchAddress("HLT_Physics_part1", &HLT_Physics_part1, &b_HLT_Physics_part1); + fChain->SetBranchAddress("HLT_Physics_part2", &HLT_Physics_part2, &b_HLT_Physics_part2); + fChain->SetBranchAddress("HLT_Physics_part3", &HLT_Physics_part3, &b_HLT_Physics_part3); + fChain->SetBranchAddress("HLT_Physics_part4", &HLT_Physics_part4, &b_HLT_Physics_part4); + fChain->SetBranchAddress("HLT_Physics_part5", &HLT_Physics_part5, &b_HLT_Physics_part5); + fChain->SetBranchAddress("HLT_Physics_part6", &HLT_Physics_part6, &b_HLT_Physics_part6); + fChain->SetBranchAddress("HLT_Physics_part7", &HLT_Physics_part7, &b_HLT_Physics_part7); + fChain->SetBranchAddress("HLT_Random", &HLT_Random, &b_HLT_Random); + fChain->SetBranchAddress("HLT_ZeroBias", &HLT_ZeroBias, &b_HLT_ZeroBias); + fChain->SetBranchAddress("HLT_ZeroBias_part0", &HLT_ZeroBias_part0, &b_HLT_ZeroBias_part0); + fChain->SetBranchAddress("HLT_ZeroBias_part1", &HLT_ZeroBias_part1, &b_HLT_ZeroBias_part1); + fChain->SetBranchAddress("HLT_ZeroBias_part2", &HLT_ZeroBias_part2, &b_HLT_ZeroBias_part2); + fChain->SetBranchAddress("HLT_ZeroBias_part3", &HLT_ZeroBias_part3, &b_HLT_ZeroBias_part3); + fChain->SetBranchAddress("HLT_ZeroBias_part4", &HLT_ZeroBias_part4, &b_HLT_ZeroBias_part4); + fChain->SetBranchAddress("HLT_ZeroBias_part5", &HLT_ZeroBias_part5, &b_HLT_ZeroBias_part5); + fChain->SetBranchAddress("HLT_ZeroBias_part6", &HLT_ZeroBias_part6, &b_HLT_ZeroBias_part6); + fChain->SetBranchAddress("HLT_ZeroBias_part7", &HLT_ZeroBias_part7, &b_HLT_ZeroBias_part7); + fChain->SetBranchAddress("HLT_AK4CaloJet30", &HLT_AK4CaloJet30, &b_HLT_AK4CaloJet30); + fChain->SetBranchAddress("HLT_AK4CaloJet40", &HLT_AK4CaloJet40, &b_HLT_AK4CaloJet40); + fChain->SetBranchAddress("HLT_AK4CaloJet50", &HLT_AK4CaloJet50, &b_HLT_AK4CaloJet50); + fChain->SetBranchAddress("HLT_AK4CaloJet80", &HLT_AK4CaloJet80, &b_HLT_AK4CaloJet80); + fChain->SetBranchAddress("HLT_AK4CaloJet100", &HLT_AK4CaloJet100, &b_HLT_AK4CaloJet100); + fChain->SetBranchAddress("HLT_AK4CaloJet120", &HLT_AK4CaloJet120, &b_HLT_AK4CaloJet120); + fChain->SetBranchAddress("HLT_AK4PFJet30", &HLT_AK4PFJet30, &b_HLT_AK4PFJet30); + fChain->SetBranchAddress("HLT_AK4PFJet50", &HLT_AK4PFJet50, &b_HLT_AK4PFJet50); + fChain->SetBranchAddress("HLT_AK4PFJet80", &HLT_AK4PFJet80, &b_HLT_AK4PFJet80); + fChain->SetBranchAddress("HLT_AK4PFJet100", &HLT_AK4PFJet100, &b_HLT_AK4PFJet100); + fChain->SetBranchAddress("HLT_AK4PFJet120", &HLT_AK4PFJet120, &b_HLT_AK4PFJet120); + fChain->SetBranchAddress("HLT_SinglePhoton10_Eta3p1ForPPRef", &HLT_SinglePhoton10_Eta3p1ForPPRef, &b_HLT_SinglePhoton10_Eta3p1ForPPRef); + fChain->SetBranchAddress("HLT_SinglePhoton20_Eta3p1ForPPRef", &HLT_SinglePhoton20_Eta3p1ForPPRef, &b_HLT_SinglePhoton20_Eta3p1ForPPRef); + fChain->SetBranchAddress("HLT_SinglePhoton30_Eta3p1ForPPRef", &HLT_SinglePhoton30_Eta3p1ForPPRef, &b_HLT_SinglePhoton30_Eta3p1ForPPRef); + fChain->SetBranchAddress("HLT_Photon20_HoverELoose", &HLT_Photon20_HoverELoose, &b_HLT_Photon20_HoverELoose); + fChain->SetBranchAddress("HLT_Photon30_HoverELoose", &HLT_Photon30_HoverELoose, &b_HLT_Photon30_HoverELoose); + fChain->SetBranchAddress("HLT_EcalCalibration", &HLT_EcalCalibration, &b_HLT_EcalCalibration); + fChain->SetBranchAddress("HLT_HcalCalibration", &HLT_HcalCalibration, &b_HLT_HcalCalibration); + fChain->SetBranchAddress("HLT_L1UnpairedBunchBptxMinus", &HLT_L1UnpairedBunchBptxMinus, &b_HLT_L1UnpairedBunchBptxMinus); + fChain->SetBranchAddress("HLT_L1UnpairedBunchBptxPlus", &HLT_L1UnpairedBunchBptxPlus, &b_HLT_L1UnpairedBunchBptxPlus); + fChain->SetBranchAddress("HLT_L1NotBptxOR", &HLT_L1NotBptxOR, &b_HLT_L1NotBptxOR); + fChain->SetBranchAddress("HLT_L1MinimumBiasHF_OR", &HLT_L1MinimumBiasHF_OR, &b_HLT_L1MinimumBiasHF_OR); + fChain->SetBranchAddress("HLT_L1MinimumBiasHF0OR", &HLT_L1MinimumBiasHF0OR, &b_HLT_L1MinimumBiasHF0OR); + fChain->SetBranchAddress("HLT_L1_CDC_SingleMu_3_er1p2_TOP120_DPHI2p618_3p142", &HLT_L1_CDC_SingleMu_3_er1p2_TOP120_DPHI2p618_3p142, &b_HLT_L1_CDC_SingleMu_3_er1p2_TOP120_DPHI2p618_3p142); + fChain->SetBranchAddress("HLT_HcalNZS", &HLT_HcalNZS, &b_HLT_HcalNZS); + fChain->SetBranchAddress("HLT_HcalPhiSym", &HLT_HcalPhiSym, &b_HLT_HcalPhiSym); + fChain->SetBranchAddress("HLT_HcalIsolatedbunch", &HLT_HcalIsolatedbunch, &b_HLT_HcalIsolatedbunch); + fChain->SetBranchAddress("HLT_IsoTrackHB", &HLT_IsoTrackHB, &b_HLT_IsoTrackHB); + fChain->SetBranchAddress("HLT_IsoTrackHE", &HLT_IsoTrackHE, &b_HLT_IsoTrackHE); + fChain->SetBranchAddress("HLT_ZeroBias_FirstCollisionAfterAbortGap", &HLT_ZeroBias_FirstCollisionAfterAbortGap, &b_HLT_ZeroBias_FirstCollisionAfterAbortGap); + fChain->SetBranchAddress("HLT_ZeroBias_IsolatedBunches", &HLT_ZeroBias_IsolatedBunches, &b_HLT_ZeroBias_IsolatedBunches); + fChain->SetBranchAddress("HLT_ZeroBias_FirstCollisionInTrain", &HLT_ZeroBias_FirstCollisionInTrain, &b_HLT_ZeroBias_FirstCollisionInTrain); + fChain->SetBranchAddress("HLT_ZeroBias_LastCollisionInTrain", &HLT_ZeroBias_LastCollisionInTrain, &b_HLT_ZeroBias_LastCollisionInTrain); + fChain->SetBranchAddress("HLT_ZeroBias_FirstBXAfterTrain", &HLT_ZeroBias_FirstBXAfterTrain, &b_HLT_ZeroBias_FirstBXAfterTrain); + fChain->SetBranchAddress("HLT_Ele24_eta2p1_WPTight_Gsf_LooseChargedIsoPFTau30_eta2p1_CrossL1", &HLT_Ele24_eta2p1_WPTight_Gsf_LooseChargedIsoPFTau30_eta2p1_CrossL1, &b_HLT_Ele24_eta2p1_WPTight_Gsf_LooseChargedIsoPFTau30_eta2p1_CrossL1); + fChain->SetBranchAddress("HLT_Ele24_eta2p1_WPTight_Gsf_MediumChargedIsoPFTau30_eta2p1_CrossL1", &HLT_Ele24_eta2p1_WPTight_Gsf_MediumChargedIsoPFTau30_eta2p1_CrossL1, &b_HLT_Ele24_eta2p1_WPTight_Gsf_MediumChargedIsoPFTau30_eta2p1_CrossL1); + fChain->SetBranchAddress("HLT_Ele24_eta2p1_WPTight_Gsf_TightChargedIsoPFTau30_eta2p1_CrossL1", &HLT_Ele24_eta2p1_WPTight_Gsf_TightChargedIsoPFTau30_eta2p1_CrossL1, &b_HLT_Ele24_eta2p1_WPTight_Gsf_TightChargedIsoPFTau30_eta2p1_CrossL1); + fChain->SetBranchAddress("HLT_Ele24_eta2p1_WPTight_Gsf_LooseChargedIsoPFTau30_eta2p1_TightID_CrossL1", &HLT_Ele24_eta2p1_WPTight_Gsf_LooseChargedIsoPFTau30_eta2p1_TightID_CrossL1, &b_HLT_Ele24_eta2p1_WPTight_Gsf_LooseChargedIsoPFTau30_eta2p1_TightID_CrossL1); + fChain->SetBranchAddress("HLT_Ele24_eta2p1_WPTight_Gsf_MediumChargedIsoPFTau30_eta2p1_TightID_CrossL1", &HLT_Ele24_eta2p1_WPTight_Gsf_MediumChargedIsoPFTau30_eta2p1_TightID_CrossL1, &b_HLT_Ele24_eta2p1_WPTight_Gsf_MediumChargedIsoPFTau30_eta2p1_TightID_CrossL1); + fChain->SetBranchAddress("HLT_Ele24_eta2p1_WPTight_Gsf_TightChargedIsoPFTau30_eta2p1_TightID_CrossL1", &HLT_Ele24_eta2p1_WPTight_Gsf_TightChargedIsoPFTau30_eta2p1_TightID_CrossL1, &b_HLT_Ele24_eta2p1_WPTight_Gsf_TightChargedIsoPFTau30_eta2p1_TightID_CrossL1); + fChain->SetBranchAddress("HLT_DoubleMediumChargedIsoPFTau35_Trk1_eta2p1_Reg", &HLT_DoubleMediumChargedIsoPFTau35_Trk1_eta2p1_Reg, &b_HLT_DoubleMediumChargedIsoPFTau35_Trk1_eta2p1_Reg); + fChain->SetBranchAddress("HLT_DoubleMediumChargedIsoPFTau40_Trk1_eta2p1_Reg", &HLT_DoubleMediumChargedIsoPFTau40_Trk1_eta2p1_Reg, &b_HLT_DoubleMediumChargedIsoPFTau40_Trk1_eta2p1_Reg); + fChain->SetBranchAddress("HLT_DoubleTightChargedIsoPFTau35_Trk1_eta2p1_Reg", &HLT_DoubleTightChargedIsoPFTau35_Trk1_eta2p1_Reg, &b_HLT_DoubleTightChargedIsoPFTau35_Trk1_eta2p1_Reg); + fChain->SetBranchAddress("HLT_DoubleTightChargedIsoPFTau40_Trk1_eta2p1_Reg", &HLT_DoubleTightChargedIsoPFTau40_Trk1_eta2p1_Reg, &b_HLT_DoubleTightChargedIsoPFTau40_Trk1_eta2p1_Reg); + fChain->SetBranchAddress("HLT_DoubleMediumChargedIsoPFTau35_Trk1_TightID_eta2p1_Reg", &HLT_DoubleMediumChargedIsoPFTau35_Trk1_TightID_eta2p1_Reg, &b_HLT_DoubleMediumChargedIsoPFTau35_Trk1_TightID_eta2p1_Reg); + fChain->SetBranchAddress("HLT_DoubleMediumChargedIsoPFTau40_Trk1_TightID_eta2p1_Reg", &HLT_DoubleMediumChargedIsoPFTau40_Trk1_TightID_eta2p1_Reg, &b_HLT_DoubleMediumChargedIsoPFTau40_Trk1_TightID_eta2p1_Reg); + fChain->SetBranchAddress("HLT_DoubleTightChargedIsoPFTau35_Trk1_TightID_eta2p1_Reg", &HLT_DoubleTightChargedIsoPFTau35_Trk1_TightID_eta2p1_Reg, &b_HLT_DoubleTightChargedIsoPFTau35_Trk1_TightID_eta2p1_Reg); + fChain->SetBranchAddress("HLT_DoubleTightChargedIsoPFTau40_Trk1_TightID_eta2p1_Reg", &HLT_DoubleTightChargedIsoPFTau40_Trk1_TightID_eta2p1_Reg, &b_HLT_DoubleTightChargedIsoPFTau40_Trk1_TightID_eta2p1_Reg); + fChain->SetBranchAddress("HLT_IsoMu24_eta2p1_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr", &HLT_IsoMu24_eta2p1_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr, &b_HLT_IsoMu24_eta2p1_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr); + fChain->SetBranchAddress("HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET90", &HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET90, &b_HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET90); + fChain->SetBranchAddress("HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET100", &HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET100, &b_HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET100); + fChain->SetBranchAddress("HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET110", &HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET110, &b_HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET110); + fChain->SetBranchAddress("HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET120", &HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET120, &b_HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET120); + fChain->SetBranchAddress("HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET130", &HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET130, &b_HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET130); + fChain->SetBranchAddress("HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET140", &HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET140, &b_HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr_MET140); + fChain->SetBranchAddress("HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr", &HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr, &b_HLT_MediumChargedIsoPFTau50_Trk30_eta2p1_1pr); + fChain->SetBranchAddress("HLT_MediumChargedIsoPFTau180HighPtRelaxedIso_Trk50_eta2p1_1pr", &HLT_MediumChargedIsoPFTau180HighPtRelaxedIso_Trk50_eta2p1_1pr, &b_HLT_MediumChargedIsoPFTau180HighPtRelaxedIso_Trk50_eta2p1_1pr); + fChain->SetBranchAddress("HLT_MediumChargedIsoPFTau180HighPtRelaxedIso_Trk50_eta2p1", &HLT_MediumChargedIsoPFTau180HighPtRelaxedIso_Trk50_eta2p1, &b_HLT_MediumChargedIsoPFTau180HighPtRelaxedIso_Trk50_eta2p1); + fChain->SetBranchAddress("HLT_MediumChargedIsoPFTau200HighPtRelaxedIso_Trk50_eta2p1", &HLT_MediumChargedIsoPFTau200HighPtRelaxedIso_Trk50_eta2p1, &b_HLT_MediumChargedIsoPFTau200HighPtRelaxedIso_Trk50_eta2p1); + fChain->SetBranchAddress("HLT_MediumChargedIsoPFTau220HighPtRelaxedIso_Trk50_eta2p1", &HLT_MediumChargedIsoPFTau220HighPtRelaxedIso_Trk50_eta2p1, &b_HLT_MediumChargedIsoPFTau220HighPtRelaxedIso_Trk50_eta2p1); + fChain->SetBranchAddress("HLT_IsoMu24_eta2p1_MediumChargedIsoPFTau35_Trk1_eta2p1_Reg_CrossL1", &HLT_IsoMu24_eta2p1_MediumChargedIsoPFTau35_Trk1_eta2p1_Reg_CrossL1, &b_HLT_IsoMu24_eta2p1_MediumChargedIsoPFTau35_Trk1_eta2p1_Reg_CrossL1); + fChain->SetBranchAddress("HLT_IsoMu24_eta2p1_MediumChargedIsoPFTau35_Trk1_TightID_eta2p1_Reg_CrossL1", &HLT_IsoMu24_eta2p1_MediumChargedIsoPFTau35_Trk1_TightID_eta2p1_Reg_CrossL1, &b_HLT_IsoMu24_eta2p1_MediumChargedIsoPFTau35_Trk1_TightID_eta2p1_Reg_CrossL1); + fChain->SetBranchAddress("HLT_IsoMu24_eta2p1_TightChargedIsoPFTau35_Trk1_eta2p1_Reg_CrossL1", &HLT_IsoMu24_eta2p1_TightChargedIsoPFTau35_Trk1_eta2p1_Reg_CrossL1, &b_HLT_IsoMu24_eta2p1_TightChargedIsoPFTau35_Trk1_eta2p1_Reg_CrossL1); + fChain->SetBranchAddress("HLT_IsoMu24_eta2p1_TightChargedIsoPFTau35_Trk1_TightID_eta2p1_Reg_CrossL1", &HLT_IsoMu24_eta2p1_TightChargedIsoPFTau35_Trk1_TightID_eta2p1_Reg_CrossL1, &b_HLT_IsoMu24_eta2p1_TightChargedIsoPFTau35_Trk1_TightID_eta2p1_Reg_CrossL1); + fChain->SetBranchAddress("HLT_Ele16_Ele12_Ele8_CaloIdL_TrackIdL", &HLT_Ele16_Ele12_Ele8_CaloIdL_TrackIdL, &b_HLT_Ele16_Ele12_Ele8_CaloIdL_TrackIdL); + fChain->SetBranchAddress("HLT_Rsq0p35", &HLT_Rsq0p35, &b_HLT_Rsq0p35); + fChain->SetBranchAddress("HLT_Rsq0p40", &HLT_Rsq0p40, &b_HLT_Rsq0p40); + fChain->SetBranchAddress("HLT_RsqMR300_Rsq0p09_MR200", &HLT_RsqMR300_Rsq0p09_MR200, &b_HLT_RsqMR300_Rsq0p09_MR200); + fChain->SetBranchAddress("HLT_RsqMR320_Rsq0p09_MR200", &HLT_RsqMR320_Rsq0p09_MR200, &b_HLT_RsqMR320_Rsq0p09_MR200); + fChain->SetBranchAddress("HLT_RsqMR300_Rsq0p09_MR200_4jet", &HLT_RsqMR300_Rsq0p09_MR200_4jet, &b_HLT_RsqMR300_Rsq0p09_MR200_4jet); + fChain->SetBranchAddress("HLT_RsqMR320_Rsq0p09_MR200_4jet", &HLT_RsqMR320_Rsq0p09_MR200_4jet, &b_HLT_RsqMR320_Rsq0p09_MR200_4jet); + fChain->SetBranchAddress("HLT_IsoMu27_LooseChargedIsoPFTau20_Trk1_eta2p1_SingleL1", &HLT_IsoMu27_LooseChargedIsoPFTau20_Trk1_eta2p1_SingleL1, &b_HLT_IsoMu27_LooseChargedIsoPFTau20_Trk1_eta2p1_SingleL1); + fChain->SetBranchAddress("HLT_IsoMu27_MediumChargedIsoPFTau20_Trk1_eta2p1_SingleL1", &HLT_IsoMu27_MediumChargedIsoPFTau20_Trk1_eta2p1_SingleL1, &b_HLT_IsoMu27_MediumChargedIsoPFTau20_Trk1_eta2p1_SingleL1); + fChain->SetBranchAddress("HLT_IsoMu27_TightChargedIsoPFTau20_Trk1_eta2p1_SingleL1", &HLT_IsoMu27_TightChargedIsoPFTau20_Trk1_eta2p1_SingleL1, &b_HLT_IsoMu27_TightChargedIsoPFTau20_Trk1_eta2p1_SingleL1); + fChain->SetBranchAddress("HLT_IsoMu27_MET90", &HLT_IsoMu27_MET90, &b_HLT_IsoMu27_MET90); + fChain->SetBranchAddress("HLT_IsoMu20_eta2p1_LooseChargedIsoPFTauHPS27_eta2p1_CrossL1", &HLT_IsoMu20_eta2p1_LooseChargedIsoPFTauHPS27_eta2p1_CrossL1, &b_HLT_IsoMu20_eta2p1_LooseChargedIsoPFTauHPS27_eta2p1_CrossL1); + fChain->SetBranchAddress("HLT_IsoMu24_eta2p1_MediumChargedIsoPFTauHPS35_Trk1_eta2p1_Reg_CrossL1", &HLT_IsoMu24_eta2p1_MediumChargedIsoPFTauHPS35_Trk1_eta2p1_Reg_CrossL1, &b_HLT_IsoMu24_eta2p1_MediumChargedIsoPFTauHPS35_Trk1_eta2p1_Reg_CrossL1); + fChain->SetBranchAddress("HLT_DoubleMediumChargedIsoPFTauHPS35_Trk1_eta2p1_Reg", &HLT_DoubleMediumChargedIsoPFTauHPS35_Trk1_eta2p1_Reg, &b_HLT_DoubleMediumChargedIsoPFTauHPS35_Trk1_eta2p1_Reg); + fChain->SetBranchAddress("HLT_Photon50_R9Id90_HE10_IsoM_EBOnly_PFJetsMJJ300DEta3_PFMET50", &HLT_Photon50_R9Id90_HE10_IsoM_EBOnly_PFJetsMJJ300DEta3_PFMET50, &b_HLT_Photon50_R9Id90_HE10_IsoM_EBOnly_PFJetsMJJ300DEta3_PFMET50); + fChain->SetBranchAddress("HLT_Photon75_R9Id90_HE10_IsoM_EBOnly_PFJetsMJJ300DEta3", &HLT_Photon75_R9Id90_HE10_IsoM_EBOnly_PFJetsMJJ300DEta3, &b_HLT_Photon75_R9Id90_HE10_IsoM_EBOnly_PFJetsMJJ300DEta3); + fChain->SetBranchAddress("HLT_Photon75_R9Id90_HE10_IsoM_EBOnly_PFJetsMJJ600DEta3", &HLT_Photon75_R9Id90_HE10_IsoM_EBOnly_PFJetsMJJ600DEta3, &b_HLT_Photon75_R9Id90_HE10_IsoM_EBOnly_PFJetsMJJ600DEta3); + fChain->SetBranchAddress("HLT_PFMET100_PFMHT100_IDTight_PFHT60", &HLT_PFMET100_PFMHT100_IDTight_PFHT60, &b_HLT_PFMET100_PFMHT100_IDTight_PFHT60); + fChain->SetBranchAddress("HLT_PFMETNoMu100_PFMHTNoMu100_IDTight_PFHT60", &HLT_PFMETNoMu100_PFMHTNoMu100_IDTight_PFHT60, &b_HLT_PFMETNoMu100_PFMHTNoMu100_IDTight_PFHT60); + fChain->SetBranchAddress("HLT_PFMETTypeOne100_PFMHT100_IDTight_PFHT60", &HLT_PFMETTypeOne100_PFMHT100_IDTight_PFHT60, &b_HLT_PFMETTypeOne100_PFMHT100_IDTight_PFHT60); + fChain->SetBranchAddress("HLT_Mu18_Mu9_SameSign", &HLT_Mu18_Mu9_SameSign, &b_HLT_Mu18_Mu9_SameSign); + fChain->SetBranchAddress("HLT_Mu18_Mu9_SameSign_DZ", &HLT_Mu18_Mu9_SameSign_DZ, &b_HLT_Mu18_Mu9_SameSign_DZ); + fChain->SetBranchAddress("HLT_Mu18_Mu9", &HLT_Mu18_Mu9, &b_HLT_Mu18_Mu9); + fChain->SetBranchAddress("HLT_Mu18_Mu9_DZ", &HLT_Mu18_Mu9_DZ, &b_HLT_Mu18_Mu9_DZ); + fChain->SetBranchAddress("HLT_Mu20_Mu10_SameSign", &HLT_Mu20_Mu10_SameSign, &b_HLT_Mu20_Mu10_SameSign); + fChain->SetBranchAddress("HLT_Mu20_Mu10_SameSign_DZ", &HLT_Mu20_Mu10_SameSign_DZ, &b_HLT_Mu20_Mu10_SameSign_DZ); + fChain->SetBranchAddress("HLT_Mu20_Mu10", &HLT_Mu20_Mu10, &b_HLT_Mu20_Mu10); + fChain->SetBranchAddress("HLT_Mu20_Mu10_DZ", &HLT_Mu20_Mu10_DZ, &b_HLT_Mu20_Mu10_DZ); + fChain->SetBranchAddress("HLT_Mu23_Mu12_SameSign", &HLT_Mu23_Mu12_SameSign, &b_HLT_Mu23_Mu12_SameSign); + fChain->SetBranchAddress("HLT_Mu23_Mu12_SameSign_DZ", &HLT_Mu23_Mu12_SameSign_DZ, &b_HLT_Mu23_Mu12_SameSign_DZ); + fChain->SetBranchAddress("HLT_Mu23_Mu12", &HLT_Mu23_Mu12, &b_HLT_Mu23_Mu12); + fChain->SetBranchAddress("HLT_Mu23_Mu12_DZ", &HLT_Mu23_Mu12_DZ, &b_HLT_Mu23_Mu12_DZ); + fChain->SetBranchAddress("HLT_DoubleMu2_Jpsi_DoubleTrk1_Phi1p05", &HLT_DoubleMu2_Jpsi_DoubleTrk1_Phi1p05, &b_HLT_DoubleMu2_Jpsi_DoubleTrk1_Phi1p05); + fChain->SetBranchAddress("HLT_DoubleMu2_Jpsi_DoubleTkMu0_Phi", &HLT_DoubleMu2_Jpsi_DoubleTkMu0_Phi, &b_HLT_DoubleMu2_Jpsi_DoubleTkMu0_Phi); + fChain->SetBranchAddress("HLT_DoubleMu3_DCA_PFMET50_PFMHT60", &HLT_DoubleMu3_DCA_PFMET50_PFMHT60, &b_HLT_DoubleMu3_DCA_PFMET50_PFMHT60); + fChain->SetBranchAddress("HLT_TripleMu_5_3_3_Mass3p8to60_DCA", &HLT_TripleMu_5_3_3_Mass3p8to60_DCA, &b_HLT_TripleMu_5_3_3_Mass3p8to60_DCA); + fChain->SetBranchAddress("HLT_QuadPFJet98_83_71_15_DoubleBTagCSV_p013_p08_VBF1", &HLT_QuadPFJet98_83_71_15_DoubleBTagCSV_p013_p08_VBF1, &b_HLT_QuadPFJet98_83_71_15_DoubleBTagCSV_p013_p08_VBF1); + fChain->SetBranchAddress("HLT_QuadPFJet103_88_75_15_DoubleBTagCSV_p013_p08_VBF1", &HLT_QuadPFJet103_88_75_15_DoubleBTagCSV_p013_p08_VBF1, &b_HLT_QuadPFJet103_88_75_15_DoubleBTagCSV_p013_p08_VBF1); + fChain->SetBranchAddress("HLT_QuadPFJet105_90_76_15_DoubleBTagCSV_p013_p08_VBF1", &HLT_QuadPFJet105_90_76_15_DoubleBTagCSV_p013_p08_VBF1, &b_HLT_QuadPFJet105_90_76_15_DoubleBTagCSV_p013_p08_VBF1); + fChain->SetBranchAddress("HLT_QuadPFJet111_90_80_15_DoubleBTagCSV_p013_p08_VBF1", &HLT_QuadPFJet111_90_80_15_DoubleBTagCSV_p013_p08_VBF1, &b_HLT_QuadPFJet111_90_80_15_DoubleBTagCSV_p013_p08_VBF1); + fChain->SetBranchAddress("HLT_QuadPFJet98_83_71_15_BTagCSV_p013_VBF2", &HLT_QuadPFJet98_83_71_15_BTagCSV_p013_VBF2, &b_HLT_QuadPFJet98_83_71_15_BTagCSV_p013_VBF2); + fChain->SetBranchAddress("HLT_QuadPFJet103_88_75_15_BTagCSV_p013_VBF2", &HLT_QuadPFJet103_88_75_15_BTagCSV_p013_VBF2, &b_HLT_QuadPFJet103_88_75_15_BTagCSV_p013_VBF2); + fChain->SetBranchAddress("HLT_QuadPFJet105_88_76_15_BTagCSV_p013_VBF2", &HLT_QuadPFJet105_88_76_15_BTagCSV_p013_VBF2, &b_HLT_QuadPFJet105_88_76_15_BTagCSV_p013_VBF2); + fChain->SetBranchAddress("HLT_QuadPFJet111_90_80_15_BTagCSV_p013_VBF2", &HLT_QuadPFJet111_90_80_15_BTagCSV_p013_VBF2, &b_HLT_QuadPFJet111_90_80_15_BTagCSV_p013_VBF2); + fChain->SetBranchAddress("HLT_QuadPFJet98_83_71_15", &HLT_QuadPFJet98_83_71_15, &b_HLT_QuadPFJet98_83_71_15); + fChain->SetBranchAddress("HLT_QuadPFJet103_88_75_15", &HLT_QuadPFJet103_88_75_15, &b_HLT_QuadPFJet103_88_75_15); + fChain->SetBranchAddress("HLT_QuadPFJet105_88_76_15", &HLT_QuadPFJet105_88_76_15, &b_HLT_QuadPFJet105_88_76_15); + fChain->SetBranchAddress("HLT_QuadPFJet111_90_80_15", &HLT_QuadPFJet111_90_80_15, &b_HLT_QuadPFJet111_90_80_15); + fChain->SetBranchAddress("HLT_AK8PFJet330_TrimMass30_PFAK8BTagCSV_p17", &HLT_AK8PFJet330_TrimMass30_PFAK8BTagCSV_p17, &b_HLT_AK8PFJet330_TrimMass30_PFAK8BTagCSV_p17); + fChain->SetBranchAddress("HLT_AK8PFJet330_TrimMass30_PFAK8BTagCSV_p1", &HLT_AK8PFJet330_TrimMass30_PFAK8BTagCSV_p1, &b_HLT_AK8PFJet330_TrimMass30_PFAK8BTagCSV_p1); + fChain->SetBranchAddress("HLT_AK8PFJet330_TrimMass30_PFAK8BoostedDoubleB_p02", &HLT_AK8PFJet330_TrimMass30_PFAK8BoostedDoubleB_p02, &b_HLT_AK8PFJet330_TrimMass30_PFAK8BoostedDoubleB_p02); + fChain->SetBranchAddress("HLT_Diphoton30_18_PVrealAND_R9Id_AND_IsoCaloId_AND_HE_R9Id_PixelVeto_Mass55", &HLT_Diphoton30_18_PVrealAND_R9Id_AND_IsoCaloId_AND_HE_R9Id_PixelVeto_Mass55, &b_HLT_Diphoton30_18_PVrealAND_R9Id_AND_IsoCaloId_AND_HE_R9Id_PixelVeto_Mass55); + fChain->SetBranchAddress("HLT_Diphoton30_18_PVrealAND_R9Id_AND_IsoCaloId_AND_HE_R9Id_NoPixelVeto_Mass55", &HLT_Diphoton30_18_PVrealAND_R9Id_AND_IsoCaloId_AND_HE_R9Id_NoPixelVeto_Mass55, &b_HLT_Diphoton30_18_PVrealAND_R9Id_AND_IsoCaloId_AND_HE_R9Id_NoPixelVeto_Mass55); + fChain->SetBranchAddress("HLTriggerFinalPath", &HLTriggerFinalPath, &b_HLTriggerFinalPath); + fChain->SetBranchAddress("nLepton", &nLepton, &b_nLepton); + fChain->SetBranchAddress("Lepton_pdgId", Lepton_pdgId, &b_Lepton_pdgId); + fChain->SetBranchAddress("Lepton_electronIdx", Lepton_electronIdx, &b_Lepton_electronIdx); + fChain->SetBranchAddress("Lepton_muonIdx", Lepton_muonIdx, &b_Lepton_muonIdx); + fChain->SetBranchAddress("Lepton_pt", Lepton_pt, &b_Lepton_pt); + fChain->SetBranchAddress("Lepton_eta", Lepton_eta, &b_Lepton_eta); + fChain->SetBranchAddress("Lepton_phi", Lepton_phi, &b_Lepton_phi); + fChain->SetBranchAddress("nVetoLepton", &nVetoLepton, &b_nVetoLepton); + fChain->SetBranchAddress("VetoLepton_pdgId", VetoLepton_pdgId, &b_VetoLepton_pdgId); + fChain->SetBranchAddress("VetoLepton_electronIdx", VetoLepton_electronIdx, &b_VetoLepton_electronIdx); + fChain->SetBranchAddress("VetoLepton_muonIdx", VetoLepton_muonIdx, &b_VetoLepton_muonIdx); + fChain->SetBranchAddress("VetoLepton_pt", VetoLepton_pt, &b_VetoLepton_pt); + fChain->SetBranchAddress("VetoLepton_eta", VetoLepton_eta, &b_VetoLepton_eta); + fChain->SetBranchAddress("VetoLepton_phi", VetoLepton_phi, &b_VetoLepton_phi); + fChain->SetBranchAddress("nCleanJet", &nCleanJet, &b_nCleanJet); + fChain->SetBranchAddress("CleanJet_jetIdx", CleanJet_jetIdx, &b_CleanJet_jetIdx); + fChain->SetBranchAddress("CleanJet_pt", CleanJet_pt, &b_CleanJet_pt); + fChain->SetBranchAddress("CleanJet_eta", CleanJet_eta, &b_CleanJet_eta); + fChain->SetBranchAddress("CleanJet_phi", CleanJet_phi, &b_CleanJet_phi); + fChain->SetBranchAddress("Lepton_isLoose", Lepton_isLoose, &b_Lepton_isLoose); + fChain->SetBranchAddress("Lepton_isVeto", Lepton_isVeto, &b_Lepton_isVeto); + fChain->SetBranchAddress("dmZll_veto", &dmZll_veto, &b_dmZll_veto); + fChain->SetBranchAddress("Lepton_isTightElectron_mvaFall17V2Iso_WP90_tthmva_70", Lepton_isTightElectron_mvaFall17V2Iso_WP90_tthmva_70, &b_Lepton_isTightElectron_mvaFall17V2Iso_WP90_tthmva_70); + fChain->SetBranchAddress("Lepton_isTightElectron_mvaFall17V2Iso_WP90_SS_tthmva_70", Lepton_isTightElectron_mvaFall17V2Iso_WP90_SS_tthmva_70, &b_Lepton_isTightElectron_mvaFall17V2Iso_WP90_SS_tthmva_70); + fChain->SetBranchAddress("Lepton_isTightElectron_mvaFall17V2Iso_WP90_SS", Lepton_isTightElectron_mvaFall17V2Iso_WP90_SS, &b_Lepton_isTightElectron_mvaFall17V2Iso_WP90_SS); + fChain->SetBranchAddress("Lepton_isTightElectron_mvaFall17V2Iso_WP90", Lepton_isTightElectron_mvaFall17V2Iso_WP90, &b_Lepton_isTightElectron_mvaFall17V2Iso_WP90); + fChain->SetBranchAddress("Lepton_isTightMuon_cut_Tight_HWWW_tthmva_80", Lepton_isTightMuon_cut_Tight_HWWW_tthmva_80, &b_Lepton_isTightMuon_cut_Tight_HWWW_tthmva_80); + fChain->SetBranchAddress("Lepton_isTightMuon_cut_Tight_HWWW", Lepton_isTightMuon_cut_Tight_HWWW, &b_Lepton_isTightMuon_cut_Tight_HWWW); + fChain->SetBranchAddress("nCleanFatJet", &nCleanFatJet, &b_nCleanFatJet); + fChain->SetBranchAddress("CleanFatJet_jetIdx", CleanFatJet_jetIdx, &b_CleanFatJet_jetIdx); + fChain->SetBranchAddress("CleanFatJet_pt", CleanFatJet_pt, &b_CleanFatJet_pt); + fChain->SetBranchAddress("CleanFatJet_eta", CleanFatJet_eta, &b_CleanFatJet_eta); + fChain->SetBranchAddress("CleanFatJet_phi", CleanFatJet_phi, &b_CleanFatJet_phi); + fChain->SetBranchAddress("CleanFatJet_mass", CleanFatJet_mass, &b_CleanFatJet_mass); + fChain->SetBranchAddress("CleanFatJet_tau21", CleanFatJet_tau21, &b_CleanFatJet_tau21); + fChain->SetBranchAddress("nCleanJetNotFat", &nCleanJetNotFat, &b_nCleanJetNotFat); + fChain->SetBranchAddress("CleanJetNotFat_jetIdx", CleanJetNotFat_jetIdx, &b_CleanJetNotFat_jetIdx); + fChain->SetBranchAddress("CleanJetNotFat_deltaR", CleanJetNotFat_deltaR, &b_CleanJetNotFat_deltaR); + fChain->SetBranchAddress("Lepton_rochesterSF", Lepton_rochesterSF, &b_Lepton_rochesterSF); + fChain->SetBranchAddress("mll", &mll, &b_mll); + fChain->SetBranchAddress("dphill", &dphill, &b_dphill); + fChain->SetBranchAddress("yll", &yll, &b_yll); + fChain->SetBranchAddress("ptll", &ptll, &b_ptll); + fChain->SetBranchAddress("pt1", &pt1, &b_pt1); + fChain->SetBranchAddress("pt2", &pt2, &b_pt2); + fChain->SetBranchAddress("mth", &mth, &b_mth); + fChain->SetBranchAddress("mcoll", &mcoll, &b_mcoll); + fChain->SetBranchAddress("mcollWW", &mcollWW, &b_mcollWW); + fChain->SetBranchAddress("mTi", &mTi, &b_mTi); + fChain->SetBranchAddress("mTe", &mTe, &b_mTe); + fChain->SetBranchAddress("choiMass", &choiMass, &b_choiMass); + fChain->SetBranchAddress("mR", &mR, &b_mR); + fChain->SetBranchAddress("mT2", &mT2, &b_mT2); + fChain->SetBranchAddress("channel", &channel, &b_channel); + fChain->SetBranchAddress("drll", &drll, &b_drll); + fChain->SetBranchAddress("dphilljet", &dphilljet, &b_dphilljet); + fChain->SetBranchAddress("dphilljetjet", &dphilljetjet, &b_dphilljetjet); + fChain->SetBranchAddress("dphilljetjet_cut", &dphilljetjet_cut, &b_dphilljetjet_cut); + fChain->SetBranchAddress("dphillmet", &dphillmet, &b_dphillmet); + fChain->SetBranchAddress("dphilmet", &dphilmet, &b_dphilmet); + fChain->SetBranchAddress("dphilmet1", &dphilmet1, &b_dphilmet1); + fChain->SetBranchAddress("dphilmet2", &dphilmet2, &b_dphilmet2); + fChain->SetBranchAddress("mtw1", &mtw1, &b_mtw1); + fChain->SetBranchAddress("mtw2", &mtw2, &b_mtw2); + fChain->SetBranchAddress("mjj", &mjj, &b_mjj); + fChain->SetBranchAddress("detajj", &detajj, &b_detajj); + fChain->SetBranchAddress("njet", &njet, &b_njet); + fChain->SetBranchAddress("mllWgSt", &mllWgSt, &b_mllWgSt); + fChain->SetBranchAddress("drllWgSt", &drllWgSt, &b_drllWgSt); + fChain->SetBranchAddress("mllThird", &mllThird, &b_mllThird); + fChain->SetBranchAddress("mllOneThree", &mllOneThree, &b_mllOneThree); + fChain->SetBranchAddress("mllTwoThree", &mllTwoThree, &b_mllTwoThree); + fChain->SetBranchAddress("drllOneThree", &drllOneThree, &b_drllOneThree); + fChain->SetBranchAddress("drllTwoThree", &drllTwoThree, &b_drllTwoThree); + fChain->SetBranchAddress("dphijet1met", &dphijet1met, &b_dphijet1met); + fChain->SetBranchAddress("dphijet2met", &dphijet2met, &b_dphijet2met); + fChain->SetBranchAddress("dphijjmet", &dphijjmet, &b_dphijjmet); + fChain->SetBranchAddress("dphijjmet_cut", &dphijjmet_cut, &b_dphijjmet_cut); + fChain->SetBranchAddress("dphilep1jet1", &dphilep1jet1, &b_dphilep1jet1); + fChain->SetBranchAddress("dphilep1jet2", &dphilep1jet2, &b_dphilep1jet2); + fChain->SetBranchAddress("dphilep2jet1", &dphilep2jet1, &b_dphilep2jet1); + fChain->SetBranchAddress("dphilep2jet2", &dphilep2jet2, &b_dphilep2jet2); + fChain->SetBranchAddress("mindetajl", &mindetajl, &b_mindetajl); + fChain->SetBranchAddress("detall", &detall, &b_detall); + fChain->SetBranchAddress("dphijj", &dphijj, &b_dphijj); + fChain->SetBranchAddress("maxdphilepjj", &maxdphilepjj, &b_maxdphilepjj); + fChain->SetBranchAddress("dphilep1jj", &dphilep1jj, &b_dphilep1jj); + fChain->SetBranchAddress("dphilep2jj", &dphilep2jj, &b_dphilep2jj); + fChain->SetBranchAddress("ht", &ht, &b_ht); + fChain->SetBranchAddress("vht_pt", &vht_pt, &b_vht_pt); + fChain->SetBranchAddress("vht_phi", &vht_phi, &b_vht_phi); + fChain->SetBranchAddress("projpfmet", &projpfmet, &b_projpfmet); + fChain->SetBranchAddress("dphiltkmet", &dphiltkmet, &b_dphiltkmet); + fChain->SetBranchAddress("projtkmet", &projtkmet, &b_projtkmet); + fChain->SetBranchAddress("mpmet", &mpmet, &b_mpmet); + fChain->SetBranchAddress("pTWW", &pTWW, &b_pTWW); + fChain->SetBranchAddress("pTHjj", &pTHjj, &b_pTHjj); + fChain->SetBranchAddress("recoil", &recoil, &b_recoil); + fChain->SetBranchAddress("jetpt1_cut", &jetpt1_cut, &b_jetpt1_cut); + fChain->SetBranchAddress("jetpt2_cut", &jetpt2_cut, &b_jetpt2_cut); + fChain->SetBranchAddress("dphilljet_cut", &dphilljet_cut, &b_dphilljet_cut); + fChain->SetBranchAddress("dphijet1met_cut", &dphijet1met_cut, &b_dphijet1met_cut); + fChain->SetBranchAddress("dphijet2met_cut", &dphijet2met_cut, &b_dphijet2met_cut); + fChain->SetBranchAddress("PfMetDivSumMet", &PfMetDivSumMet, &b_PfMetDivSumMet); + fChain->SetBranchAddress("upara", &upara, &b_upara); + fChain->SetBranchAddress("uperp", &uperp, &b_uperp); + fChain->SetBranchAddress("m2ljj20", &m2ljj20, &b_m2ljj20); + fChain->SetBranchAddress("m2ljj30", &m2ljj30, &b_m2ljj30); + fChain->SetBranchAddress("ptTOT_cut", &ptTOT_cut, &b_ptTOT_cut); + fChain->SetBranchAddress("mTOT_cut", &mTOT_cut, &b_mTOT_cut); + fChain->SetBranchAddress("OLV1_cut", &OLV1_cut, &b_OLV1_cut); + fChain->SetBranchAddress("OLV2_cut", &OLV2_cut, &b_OLV2_cut); + fChain->SetBranchAddress("Ceta_cut", &Ceta_cut, &b_Ceta_cut); + fChain->SetBranchAddress("mlljj20_whss", &mlljj20_whss, &b_mlljj20_whss); + fChain->SetBranchAddress("mlljj30_whss", &mlljj30_whss, &b_mlljj30_whss); + fChain->SetBranchAddress("WlepPt_whss", &WlepPt_whss, &b_WlepPt_whss); + fChain->SetBranchAddress("WlepMt_whss", &WlepMt_whss, &b_WlepMt_whss); + fChain->SetBranchAddress("WH3l_dphilmet", WH3l_dphilmet, &b_WH3l_dphilmet); + fChain->SetBranchAddress("WH3l_drOSll", WH3l_drOSll, &b_WH3l_drOSll); + fChain->SetBranchAddress("WH3l_ZVeto", &WH3l_ZVeto, &b_WH3l_ZVeto); + fChain->SetBranchAddress("WH3l_flagOSSF", &WH3l_flagOSSF, &b_WH3l_flagOSSF); + fChain->SetBranchAddress("ZH3l_checkmZ", &ZH3l_checkmZ, &b_ZH3l_checkmZ); + fChain->SetBranchAddress("ZH3l_njet", &ZH3l_njet, &b_ZH3l_njet); + fChain->SetBranchAddress("ZH3l_pdgid_l", &ZH3l_pdgid_l, &b_ZH3l_pdgid_l); + fChain->SetBranchAddress("WH3l_mOSll", WH3l_mOSll, &b_WH3l_mOSll); + fChain->SetBranchAddress("WH3l_mtWWW", &WH3l_mtWWW, &b_WH3l_mtWWW); + fChain->SetBranchAddress("ZH3l_mTlmet", &ZH3l_mTlmet, &b_ZH3l_mTlmet); + fChain->SetBranchAddress("WH3l_ptOSll", WH3l_ptOSll, &b_WH3l_ptOSll); + fChain->SetBranchAddress("ZH3l_mTlmetj", &ZH3l_mTlmetj, &b_ZH3l_mTlmetj); + fChain->SetBranchAddress("ZH3l_pTlmetjj", &ZH3l_pTlmetjj, &b_ZH3l_pTlmetjj); + fChain->SetBranchAddress("WH3l_ptlll", &WH3l_ptlll, &b_WH3l_ptlll); + fChain->SetBranchAddress("WH3l_chlll", &WH3l_chlll, &b_WH3l_chlll); + fChain->SetBranchAddress("ZH3l_Z4lveto", &ZH3l_Z4lveto, &b_ZH3l_Z4lveto); + fChain->SetBranchAddress("ZH3l_dmjjmW", &ZH3l_dmjjmW, &b_ZH3l_dmjjmW); + fChain->SetBranchAddress("ZH3l_dphilmetjj", &ZH3l_dphilmetjj, &b_ZH3l_dphilmetjj); + fChain->SetBranchAddress("ZH3l_mTlmetjj", &ZH3l_mTlmetjj, &b_ZH3l_mTlmetjj); + fChain->SetBranchAddress("WH3l_ptW", &WH3l_ptW, &b_WH3l_ptW); + fChain->SetBranchAddress("ZH3l_pTlmetj", &ZH3l_pTlmetj, &b_ZH3l_pTlmetj); + fChain->SetBranchAddress("ZH3l_pTZ", &ZH3l_pTZ, &b_ZH3l_pTZ); + fChain->SetBranchAddress("WH3l_mtlmet", WH3l_mtlmet, &b_WH3l_mtlmet); + fChain->SetBranchAddress("WH3l_dphilllmet", &WH3l_dphilllmet, &b_WH3l_dphilllmet); + fChain->SetBranchAddress("ZH3l_dphilmetj", &ZH3l_dphilmetj, &b_ZH3l_dphilmetj); + fChain->SetBranchAddress("WH3l_njet", &WH3l_njet, &b_WH3l_njet); + fChain->SetBranchAddress("WH3l_ptWWW", &WH3l_ptWWW, &b_WH3l_ptWWW); + fChain->SetBranchAddress("WH3l_mlll", &WH3l_mlll, &b_WH3l_mlll); + fChain->SetBranchAddress("pfmetPhi_zh4l", &pfmetPhi_zh4l, &b_pfmetPhi_zh4l); + fChain->SetBranchAddress("z0Mass_zh4l", &z0Mass_zh4l, &b_z0Mass_zh4l); + fChain->SetBranchAddress("z0Pt_zh4l", &z0Pt_zh4l, &b_z0Pt_zh4l); + fChain->SetBranchAddress("z1Mass_zh4l", &z1Mass_zh4l, &b_z1Mass_zh4l); + fChain->SetBranchAddress("z1Pt_zh4l", &z1Pt_zh4l, &b_z1Pt_zh4l); + fChain->SetBranchAddress("zaMass_zh4l", &zaMass_zh4l, &b_zaMass_zh4l); + fChain->SetBranchAddress("zbMass_zh4l", &zbMass_zh4l, &b_zbMass_zh4l); + fChain->SetBranchAddress("flagZ1SF_zh4l", &flagZ1SF_zh4l, &b_flagZ1SF_zh4l); + fChain->SetBranchAddress("z0DeltaPhi_zh4l", &z0DeltaPhi_zh4l, &b_z0DeltaPhi_zh4l); + fChain->SetBranchAddress("z1DeltaPhi_zh4l", &z1DeltaPhi_zh4l, &b_z1DeltaPhi_zh4l); + fChain->SetBranchAddress("zaDeltaPhi_zh4l", &zaDeltaPhi_zh4l, &b_zaDeltaPhi_zh4l); + fChain->SetBranchAddress("zbDeltaPhi_zh4l", &zbDeltaPhi_zh4l, &b_zbDeltaPhi_zh4l); + fChain->SetBranchAddress("minDeltaPhi_zh4l", &minDeltaPhi_zh4l, &b_minDeltaPhi_zh4l); + fChain->SetBranchAddress("z0DeltaR_zh4l", &z0DeltaR_zh4l, &b_z0DeltaR_zh4l); + fChain->SetBranchAddress("z1DeltaR_zh4l", &z1DeltaR_zh4l, &b_z1DeltaR_zh4l); + fChain->SetBranchAddress("zaDeltaR_zh4l", &zaDeltaR_zh4l, &b_zaDeltaR_zh4l); + fChain->SetBranchAddress("zbDeltaR_zh4l", &zbDeltaR_zh4l, &b_zbDeltaR_zh4l); + fChain->SetBranchAddress("lep1Mt_zh4l", &lep1Mt_zh4l, &b_lep1Mt_zh4l); + fChain->SetBranchAddress("lep2Mt_zh4l", &lep2Mt_zh4l, &b_lep2Mt_zh4l); + fChain->SetBranchAddress("lep3Mt_zh4l", &lep3Mt_zh4l, &b_lep3Mt_zh4l); + fChain->SetBranchAddress("lep4Mt_zh4l", &lep4Mt_zh4l, &b_lep4Mt_zh4l); + fChain->SetBranchAddress("minMt_zh4l", &minMt_zh4l, &b_minMt_zh4l); + fChain->SetBranchAddress("z1Mt_zh4l", &z1Mt_zh4l, &b_z1Mt_zh4l); + fChain->SetBranchAddress("mllll_zh4l", &mllll_zh4l, &b_mllll_zh4l); + fChain->SetBranchAddress("chllll_zh4l", &chllll_zh4l, &b_chllll_zh4l); + fChain->SetBranchAddress("z1dPhi_lep1MET_zh4l", &z1dPhi_lep1MET_zh4l, &b_z1dPhi_lep1MET_zh4l); + fChain->SetBranchAddress("z1dPhi_lep2MET_zh4l", &z1dPhi_lep2MET_zh4l, &b_z1dPhi_lep2MET_zh4l); + fChain->SetBranchAddress("z1mindPhi_lepMET_zh4l", &z1mindPhi_lepMET_zh4l, &b_z1mindPhi_lepMET_zh4l); + fChain->SetBranchAddress("EMTFbug_veto", &EMTFbug_veto, &b_EMTFbug_veto); + fChain->SetBranchAddress("run_period", &run_period, &b_run_period); + fChain->SetBranchAddress("Trigger_sngEl", &Trigger_sngEl, &b_Trigger_sngEl); + fChain->SetBranchAddress("Trigger_sngMu", &Trigger_sngMu, &b_Trigger_sngMu); + fChain->SetBranchAddress("Trigger_dblEl", &Trigger_dblEl, &b_Trigger_dblEl); + fChain->SetBranchAddress("Trigger_dblMu", &Trigger_dblMu, &b_Trigger_dblMu); + fChain->SetBranchAddress("Trigger_ElMu", &Trigger_ElMu, &b_Trigger_ElMu); + fChain->SetBranchAddress("LepCut3l__ele_mvaFall17V2Iso_WP90_tthmva_70__mu_cut_Tight_HWWW", &LepCut3l__ele_mvaFall17V2Iso_WP90_tthmva_70__mu_cut_Tight_HWWW, &b_LepCut3l__ele_mvaFall17V2Iso_WP90_tthmva_70__mu_cut_Tight_HWWW); + fChain->SetBranchAddress("LepCut3l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW", &LepCut3l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW, &b_LepCut3l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW); + fChain->SetBranchAddress("LepCut3l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW_tthmva_80", &LepCut3l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW_tthmva_80, &b_LepCut3l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW_tthmva_80); + fChain->SetBranchAddress("METFilter_DATA", &METFilter_DATA, &b_METFilter_DATA); + fChain->SetBranchAddress("LepCut4l__ele_mvaFall17V2Iso_WP90_SS__mu_cut_Tight_HWWW_tthmva_80", &LepCut4l__ele_mvaFall17V2Iso_WP90_SS__mu_cut_Tight_HWWW_tthmva_80, &b_LepCut4l__ele_mvaFall17V2Iso_WP90_SS__mu_cut_Tight_HWWW_tthmva_80); + fChain->SetBranchAddress("LepCut2l__ele_mvaFall17V2Iso_WP90_SS_tthmva_70__mu_cut_Tight_HWWW", &LepCut2l__ele_mvaFall17V2Iso_WP90_SS_tthmva_70__mu_cut_Tight_HWWW, &b_LepCut2l__ele_mvaFall17V2Iso_WP90_SS_tthmva_70__mu_cut_Tight_HWWW); + fChain->SetBranchAddress("LepCut4l__ele_mvaFall17V2Iso_WP90_tthmva_70__mu_cut_Tight_HWWW", &LepCut4l__ele_mvaFall17V2Iso_WP90_tthmva_70__mu_cut_Tight_HWWW, &b_LepCut4l__ele_mvaFall17V2Iso_WP90_tthmva_70__mu_cut_Tight_HWWW); + fChain->SetBranchAddress("LepCut4l__ele_mvaFall17V2Iso_WP90_SS_tthmva_70__mu_cut_Tight_HWWW", &LepCut4l__ele_mvaFall17V2Iso_WP90_SS_tthmva_70__mu_cut_Tight_HWWW, &b_LepCut4l__ele_mvaFall17V2Iso_WP90_SS_tthmva_70__mu_cut_Tight_HWWW); + fChain->SetBranchAddress("LepCut2l__ele_mvaFall17V2Iso_WP90_SS_tthmva_70__mu_cut_Tight_HWWW_tthmva_80", &LepCut2l__ele_mvaFall17V2Iso_WP90_SS_tthmva_70__mu_cut_Tight_HWWW_tthmva_80, &b_LepCut2l__ele_mvaFall17V2Iso_WP90_SS_tthmva_70__mu_cut_Tight_HWWW_tthmva_80); + fChain->SetBranchAddress("LepCut3l__ele_mvaFall17V2Iso_WP90_SS__mu_cut_Tight_HWWW_tthmva_80", &LepCut3l__ele_mvaFall17V2Iso_WP90_SS__mu_cut_Tight_HWWW_tthmva_80, &b_LepCut3l__ele_mvaFall17V2Iso_WP90_SS__mu_cut_Tight_HWWW_tthmva_80); + fChain->SetBranchAddress("LepCut3l__ele_mvaFall17V2Iso_WP90_tthmva_70__mu_cut_Tight_HWWW_tthmva_80", &LepCut3l__ele_mvaFall17V2Iso_WP90_tthmva_70__mu_cut_Tight_HWWW_tthmva_80, &b_LepCut3l__ele_mvaFall17V2Iso_WP90_tthmva_70__mu_cut_Tight_HWWW_tthmva_80); + fChain->SetBranchAddress("LepCut4l__ele_mvaFall17V2Iso_WP90_SS__mu_cut_Tight_HWWW", &LepCut4l__ele_mvaFall17V2Iso_WP90_SS__mu_cut_Tight_HWWW, &b_LepCut4l__ele_mvaFall17V2Iso_WP90_SS__mu_cut_Tight_HWWW); + fChain->SetBranchAddress("LepCut3l__ele_mvaFall17V2Iso_WP90_SS__mu_cut_Tight_HWWW", &LepCut3l__ele_mvaFall17V2Iso_WP90_SS__mu_cut_Tight_HWWW, &b_LepCut3l__ele_mvaFall17V2Iso_WP90_SS__mu_cut_Tight_HWWW); + fChain->SetBranchAddress("LepCut4l__ele_mvaFall17V2Iso_WP90_tthmva_70__mu_cut_Tight_HWWW_tthmva_80", &LepCut4l__ele_mvaFall17V2Iso_WP90_tthmva_70__mu_cut_Tight_HWWW_tthmva_80, &b_LepCut4l__ele_mvaFall17V2Iso_WP90_tthmva_70__mu_cut_Tight_HWWW_tthmva_80); + fChain->SetBranchAddress("LepCut2l__ele_mvaFall17V2Iso_WP90_tthmva_70__mu_cut_Tight_HWWW", &LepCut2l__ele_mvaFall17V2Iso_WP90_tthmva_70__mu_cut_Tight_HWWW, &b_LepCut2l__ele_mvaFall17V2Iso_WP90_tthmva_70__mu_cut_Tight_HWWW); + fChain->SetBranchAddress("LepCut2l__ele_mvaFall17V2Iso_WP90_tthmva_70__mu_cut_Tight_HWWW_tthmva_80", &LepCut2l__ele_mvaFall17V2Iso_WP90_tthmva_70__mu_cut_Tight_HWWW_tthmva_80, &b_LepCut2l__ele_mvaFall17V2Iso_WP90_tthmva_70__mu_cut_Tight_HWWW_tthmva_80); + fChain->SetBranchAddress("LepCut3l__ele_mvaFall17V2Iso_WP90_SS_tthmva_70__mu_cut_Tight_HWWW", &LepCut3l__ele_mvaFall17V2Iso_WP90_SS_tthmva_70__mu_cut_Tight_HWWW, &b_LepCut3l__ele_mvaFall17V2Iso_WP90_SS_tthmva_70__mu_cut_Tight_HWWW); + fChain->SetBranchAddress("LepCut2l__ele_mvaFall17V2Iso_WP90_SS__mu_cut_Tight_HWWW_tthmva_80", &LepCut2l__ele_mvaFall17V2Iso_WP90_SS__mu_cut_Tight_HWWW_tthmva_80, &b_LepCut2l__ele_mvaFall17V2Iso_WP90_SS__mu_cut_Tight_HWWW_tthmva_80); + fChain->SetBranchAddress("LepCut2l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW_tthmva_80", &LepCut2l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW_tthmva_80, &b_LepCut2l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW_tthmva_80); + fChain->SetBranchAddress("LepCut2l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW", &LepCut2l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW, &b_LepCut2l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW); + fChain->SetBranchAddress("LepCut4l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW", &LepCut4l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW, &b_LepCut4l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW); + fChain->SetBranchAddress("LepCut4l__ele_mvaFall17V2Iso_WP90_SS_tthmva_70__mu_cut_Tight_HWWW_tthmva_80", &LepCut4l__ele_mvaFall17V2Iso_WP90_SS_tthmva_70__mu_cut_Tight_HWWW_tthmva_80, &b_LepCut4l__ele_mvaFall17V2Iso_WP90_SS_tthmva_70__mu_cut_Tight_HWWW_tthmva_80); + fChain->SetBranchAddress("LepCut3l__ele_mvaFall17V2Iso_WP90_SS_tthmva_70__mu_cut_Tight_HWWW_tthmva_80", &LepCut3l__ele_mvaFall17V2Iso_WP90_SS_tthmva_70__mu_cut_Tight_HWWW_tthmva_80, &b_LepCut3l__ele_mvaFall17V2Iso_WP90_SS_tthmva_70__mu_cut_Tight_HWWW_tthmva_80); + fChain->SetBranchAddress("LepCut2l__ele_mvaFall17V2Iso_WP90_SS__mu_cut_Tight_HWWW", &LepCut2l__ele_mvaFall17V2Iso_WP90_SS__mu_cut_Tight_HWWW, &b_LepCut2l__ele_mvaFall17V2Iso_WP90_SS__mu_cut_Tight_HWWW); + fChain->SetBranchAddress("LepCut4l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW_tthmva_80", &LepCut4l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW_tthmva_80, &b_LepCut4l__ele_mvaFall17V2Iso_WP90__mu_cut_Tight_HWWW_tthmva_80); + fChain->SetBranchAddress("Lepton_mvaTTH_UL", Lepton_mvaTTH_UL, &b_Lepton_mvaTTH_UL); + fChain->SetBranchAddress("hm", &hm, &b_hm); + fChain->SetBranchAddress("me_vbf_hsm", &me_vbf_hsm, &b_me_vbf_hsm); + fChain->SetBranchAddress("me_vbf_hm", &me_vbf_hm, &b_me_vbf_hm); + fChain->SetBranchAddress("me_vbf_hp", &me_vbf_hp, &b_me_vbf_hp); + fChain->SetBranchAddress("me_vbf_hl", &me_vbf_hl, &b_me_vbf_hl); + fChain->SetBranchAddress("me_vbf_hlzg", &me_vbf_hlzg, &b_me_vbf_hlzg); + fChain->SetBranchAddress("me_vbf_mixhm", &me_vbf_mixhm, &b_me_vbf_mixhm); + fChain->SetBranchAddress("me_vbf_mixhp", &me_vbf_mixhp, &b_me_vbf_mixhp); + fChain->SetBranchAddress("me_wh_hsm", &me_wh_hsm, &b_me_wh_hsm); + fChain->SetBranchAddress("me_wh_hm", &me_wh_hm, &b_me_wh_hm); + fChain->SetBranchAddress("me_wh_hp", &me_wh_hp, &b_me_wh_hp); + fChain->SetBranchAddress("me_wh_hl", &me_wh_hl, &b_me_wh_hl); + fChain->SetBranchAddress("me_wh_mixhm", &me_wh_mixhm, &b_me_wh_mixhm); + fChain->SetBranchAddress("me_wh_mixhp", &me_wh_mixhp, &b_me_wh_mixhp); + fChain->SetBranchAddress("me_zh_hsm", &me_zh_hsm, &b_me_zh_hsm); + fChain->SetBranchAddress("me_zh_hm", &me_zh_hm, &b_me_zh_hm); + fChain->SetBranchAddress("me_zh_hp", &me_zh_hp, &b_me_zh_hp); + fChain->SetBranchAddress("me_zh_hl", &me_zh_hl, &b_me_zh_hl); + fChain->SetBranchAddress("me_zh_hlzg", &me_zh_hlzg, &b_me_zh_hlzg); + fChain->SetBranchAddress("me_zh_mixhm", &me_zh_mixhm, &b_me_zh_mixhm); + fChain->SetBranchAddress("me_zh_mixhp", &me_zh_mixhp, &b_me_zh_mixhp); + fChain->SetBranchAddress("me_qcd_hsm", &me_qcd_hsm, &b_me_qcd_hsm); + fChain->SetBranchAddress("me_qcd_hm", &me_qcd_hm, &b_me_qcd_hm); + fChain->SetBranchAddress("me_qcd_mixhm", &me_qcd_mixhm, &b_me_qcd_mixhm); + fChain->SetBranchAddress("pjjSm_wh", &pjjSm_wh, &b_pjjSm_wh); + fChain->SetBranchAddress("pjjTr_wh", &pjjTr_wh, &b_pjjTr_wh); + fChain->SetBranchAddress("pjjSm_zh", &pjjSm_zh, &b_pjjSm_zh); + fChain->SetBranchAddress("pjjTr_zh", &pjjTr_zh, &b_pjjTr_zh); + fChain->SetBranchAddress("meAvg_wh", &meAvg_wh, &b_meAvg_wh); + fChain->SetBranchAddress("meAvg_zh", &meAvg_zh, &b_meAvg_zh); + fChain->SetBranchAddress("me_Wh_hsm", &me_Wh_hsm, &b_me_Wh_hsm); + fChain->SetBranchAddress("me_Wh_hm", &me_Wh_hm, &b_me_Wh_hm); + fChain->SetBranchAddress("me_Wh_hp", &me_Wh_hp, &b_me_Wh_hp); + fChain->SetBranchAddress("me_Wh_hl", &me_Wh_hl, &b_me_Wh_hl); + fChain->SetBranchAddress("me_Wh_mixhm", &me_Wh_mixhm, &b_me_Wh_mixhm); + fChain->SetBranchAddress("me_Wh_mixhp", &me_Wh_mixhp, &b_me_Wh_mixhp); + fChain->SetBranchAddress("me_Zh_hsm", &me_Zh_hsm, &b_me_Zh_hsm); + fChain->SetBranchAddress("me_Zh_hm", &me_Zh_hm, &b_me_Zh_hm); + fChain->SetBranchAddress("me_Zh_hp", &me_Zh_hp, &b_me_Zh_hp); + fChain->SetBranchAddress("me_Zh_hl", &me_Zh_hl, &b_me_Zh_hl); + fChain->SetBranchAddress("me_Zh_hlzg", &me_Zh_hlzg, &b_me_Zh_hlzg); + fChain->SetBranchAddress("me_Zh_mixhm", &me_Zh_mixhm, &b_me_Zh_mixhm); + fChain->SetBranchAddress("me_Zh_mixhp", &me_Zh_mixhp, &b_me_Zh_mixhp); + fChain->SetBranchAddress("me_QCD_hsm", &me_QCD_hsm, &b_me_QCD_hsm); + fChain->SetBranchAddress("pjjSm_Wh", &pjjSm_Wh, &b_pjjSm_Wh); + fChain->SetBranchAddress("pjjTr_Wh", &pjjTr_Wh, &b_pjjTr_Wh); + fChain->SetBranchAddress("pjjSm_Zh", &pjjSm_Zh, &b_pjjSm_Zh); + fChain->SetBranchAddress("pjjTr_Zh", &pjjTr_Zh, &b_pjjTr_Zh); + Notify(); +} + +Bool_t postprocData::Notify() +{ + // The Notify() function is called when a new file is opened. This + // can be either for a new TTree in a TChain or when when a new TTree + // is started when using PROOF. It is normally not necessary to make changes + // to the generated code, but the routine can be extended by the + // user if needed. The return value is currently not used. + + return kTRUE; +} + +void postprocData::Show(Long64_t entry) +{ +// Print contents of entry. +// If entry is not specified, print current entry + if (!fChain) return; + fChain->Show(entry); +} +Int_t postprocData::Cut(Long64_t entry) +{ +// This function may be called from Loop. +// returns 1 if entry is accepted. +// returns -1 otherwise. + return 1; +} +#endif // #ifdef postprocData_cxx diff --git a/Hgg/2018UL1l/repeat.sh b/Hgg/2018UL1l/repeat.sh new file mode 100644 index 00000000..e9f4c726 --- /dev/null +++ b/Hgg/2018UL1l/repeat.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +if [ $# -eq 0 ]; then + echo "$0: Missing arguments" + exit 1 +else + echo "We got some argument(s)" + echo "===========================" + echo "Number of arguments. : $#" + echo "List of arguments... : $@" + echo "Arg #1: sample : $1" + echo "Arg #2: compile : $2" + echo "===========================" + SAMPLE=$1 + COMPILE=$2 +fi + + +if [ "$COMPILE" == "True" ]; then + mkShapesRDF -c 1 + mkShapesRDF -o 0 -f . -b 1 -dR 1 +fi +cd condor/WHSS_OSCR_2018_v9_chargeAsymmetry_Mu82_EleUL90/${SAMPLE}/ +cp ../../../../../../../../../mkShapesRDF/mkShapesRDF/include/headers.hh ../../../../../../../../../mkShapesRDF/mkShapesRDF/shapeAnalysis/runner.py . +python runner.py +cp output.root /eos/user/n/ntrevisa/mkShapesRDF_rootfiles/WHSS_OSCR_2018_v9_chargeAsymmetry_Mu82_EleUL90/rootFile/mkShapes__WHSS_OSCR_2018_v9_chargeAsymmetry_Mu82_EleUL90__ALL__${SAMPLE}.root +rm output.root diff --git a/Hgg/2018UL1l/samples.py b/Hgg/2018UL1l/samples.py new file mode 100644 index 00000000..c41fc32e --- /dev/null +++ b/Hgg/2018UL1l/samples.py @@ -0,0 +1,561 @@ +import os,glob + +# +# See as reference: +# https://github.com/UniMiBAnalyses/PlotsConfigurations/blob/VBF_W/Configurations/VBF_W/2018/UL/samples.py +# https://github.com/UniMiBAnalyses/PlotsConfigurations/blob/VBF_W/Configurations/VBF_W/2018/UL/aliases.py +# + +################################################ +################# SKIMS ######################## +################################################ + +# MC: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Summer20UL18_106x_nAODv9_Full2018v9/MCl1loose2018v9__MCCorr2018v9NoJERInHorn__l2tightOR2018v9/ +# DATA: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Run2018_UL2018_nAODv9_Full2018v9/DATAl1loose2018v9__l2loose__l2tightOR2018v9/ +# FAKE: /eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano/Run2018_UL2018_nAODv9_Full2018v9/DATAl1loose2018v9__l2loose__fakeW/ + + +# +# 2l version +# +# mcProduction = 'Summer20UL18_106x_nAODv9_Full2018v9' +# dataReco = 'Run2018_UL2018_nAODv9_Full2018v9' +# mcSteps = 'MCl1loose2018v9__MCCorr2018v9NoJERInHorn__l2tightOR2018v9{var}' +# fakeSteps = 'DATAl1loose2018v9__l2loose__fakeW' +# dataSteps = 'DATAl1loose2018v9__l2loose__l2tightOR2018v9' +# +# ############################################## +# ###### Tree base directory for the site ###### +# ############################################## +# +# treeBaseDir = '/eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano' +# + + + +mcProduction = 'Summer20UL18_106x_nAODv9_Full2018v9' +dataReco = 'Run2018_UL2018_nAODv9_Full2018v9' +mcSteps = 'MCl1loose2018v9__MCCorr2018v9NoJERInHorn{var}' +fakeSteps = 'DATAl1loose2018v9' +dataSteps = 'DATAl1loose2018v9' + +############################################## +###### Tree base directory for the site ###### +############################################## + +treeBaseDir = '/eos/cms/store/group/phys_higgs/cmshww/amassiro/HWWNano' +limitFiles = -1 # why on earth would you want to limit the number of files? Debug reason?? + + +def makeMCDirectory(var=''): + return os.path.join(treeBaseDir, mcProduction, mcSteps.format(var='')) + +mcDirectory = makeMCDirectory() +fakeDirectory = os.path.join(treeBaseDir, dataReco, fakeSteps) +dataDirectory = os.path.join(treeBaseDir, dataReco, dataSteps) + +print (" mcDirectory = " , mcDirectory) + + +samples = {} + +from mkShapesRDF.lib.search_files import SearchFiles +s = SearchFiles() + +useXROOTD = True +redirector = 'root://eoscms.cern.ch/' + +def nanoGetSampleFiles(path, name): + _files = s.searchFiles(path, name, redirector=redirector) + if limitFiles != -1 and len(_files) > limitFiles: + return [(name, _files[:limitFiles])] + else: + return [(name, _files)] + +def nanoGetLocalSampleFiles(path, name): + print ("nanoGetLocalSampleFiles!") + _files = s.searchFiles(path, name, redirector='') + if limitFiles != -1 and len(_files) > limitFiles: + return [(name, _files[:limitFiles])] + else: + return [(name, _files)] + + +def CombineBaseW(samples, proc, samplelist): + _filtFiles = list(filter(lambda k: k[0] in samplelist, samples[proc]['name'])) + _files = list(map(lambda k: k[1], _filtFiles)) + _l = list(map(lambda k: len(k), _files)) + leastFiles = _files[_l.index(min(_l))] + dfSmall = ROOT.RDataFrame('Runs', leastFiles) + s = dfSmall.Sum('genEventSumw').GetValue() + f = ROOT.TFile.Open(leastFiles[0]) + t = f.Get('Events') + t.GetEntry(1) + xs = t.baseW * s + + __files = [] + for f in _files: + __files += f + df = ROOT.RDataFrame('Runs', __files) + s = df.Sum('genEventSumw').GetValue() + newbaseW = str(xs / s) + weight = newbaseW + '/baseW' + + for iSample in samplelist: + addSampleWeight(samples, proc, iSample, weight) + +def addSampleWeight(samples, sampleName, sampleNameType, weight): + obj = list(filter(lambda k: k[0] == sampleNameType, samples[sampleName]['name']))[0] + samples[sampleName]['name'] = list(filter(lambda k: k[0] != sampleNameType, samples[sampleName]['name'])) + if len(obj) > 2: + samples[sampleName]['name'].append((obj[0], obj[1], obj[2] + '*(' + weight + ')')) + else: + samples[sampleName]['name'].append((obj[0], obj[1], '(' + weight + ')' )) + + +################################################ +############ DATA DECLARATION ################## +################################################ + +DataRun = [ + ['A','Run2018A-UL2018-v1'], + ['B','Run2018B-UL2018-v1'], + ['C','Run2018C-UL2018-v1'], + ['D','Run2018D-UL2018-v1'], +] + +DataSets = ['SingleMuon','EGamma'] + +DataTrig = { + 'SingleMuon' : 'Trigger_sngMu' , + 'EGamma' : '!Trigger_sngMu && Trigger_sngEl' , +} + +######################################### +############ MC COMMON ################## +######################################### + +XSWeight = 'baseW*genWeight' + + +trigg_MC = '( (abs(Lepton_pdgId[0])==13) * (HLT_IsoMu24 > 0.5) || (abs(Lepton_pdgId[0])==11) * (HLT_Ele32_WPTight_Gsf > 0.5) )' + +# +# TriggerSFWeight_1l --> check the values but ok for now +# see https://github.com/latinos/mkShapesRDF/blob/master/mkShapesRDF/processor/data/TrigMaker_cfg.py +# +SFweight1l = ['puWeight', 'Lepton_RecoSF[0]', 'LepWPWeight_1l', 'LepWPCut_1l', 'btagSF', 'Jet_PUIDSF', 'TriggerSFWeight_1l', trigg_MC] + +# +# Jet_PUIDSF defined in aliases.py +# btagSF defined in aliases.py +# + +SFweight = ' * '.join(SFweight1l) + + +# +# METFilter_MC not filled?? +# + +mcCommonWeightNoMatch = XSWeight+'*' + SFweight +mcCommonWeight = XSWeight+'*' + SFweight + '*Lepton_genmatched[0]' +# mcCommonWeightNoMatch = 'XSWeight*SFweight*METFilter_MC' +# mcCommonWeight = 'XSWeight*SFweight*METFilter_MC*Lepton_genmatched[0]' + + +###### H>gluglu ####### + +# the string "ZHgg" here is very important, since the root files that will be selected must have the format "nanoLatino_ZHgg__part*.root" +#files = nanoGetSampleFiles("/eos/user/a/amassiro/HIG/", "ZHgg") +# files = nanoGetLocalSampleFiles("/eos/user/a/amassiro/HIG/ZHggPostProc/Summer20UL18_106x_nAODv9_Full2018v9/MCFull2018v9/", "ZHgg") +# print (" list of files Hgg = ", files) +# +# samples["Hgluglu"] = { +# "name": files, +# #"weight": mcCommonWeight, --> missing post processing +# #"weight": 1, +# "weight": "baseW*genWeight*0.8839*0.08187*0.033658*3", +# "FilesPerJob": 1, +# } + + +# +# qqZH: 8.839E-01 pb - 1.227E-01 pb = 7.612E-01 +# +# AM: should I subtract the two values from the excel file? +# + +files = nanoGetLocalSampleFiles("/eos/user/a/amassiro/HIG/ZHggPostProc/Summer20UL18_106x_nAODv9_Full2018v9/MCFull2018v9/", "ZHllHgg") + +samples["qqZHgluglu"] = { + "name": files, + #"weight": mcCommonWeight, --> missing post processing + #"weight": 1, + "weight": "baseW*genWeight*0.7612*0.08187*0.033658*3", + "FilesPerJob": 200, +} + + +# +# ggZH: 1.227E-01 pb +# + +files = nanoGetLocalSampleFiles("/eos/user/a/amassiro/HIG/ZHggPostProc/Summer20UL18_106x_nAODv9_Full2018v9/MCFull2018v9/", "ggZHllHgg") + +samples["ggZHgluglu"] = { + "name": files, + #"weight": mcCommonWeight, --> missing post processing + #"weight": 1, + "weight": "baseW*genWeight*0.1227*0.08187*0.033658*3", + "FilesPerJob": 200, +} + + +# +# W+ : 8.400E-01 pb +# W- : 5.328E-01 pb +# +files = nanoGetLocalSampleFiles("/eos/user/a/amassiro/HIG/ZHggPostProc/Summer20UL18_106x_nAODv9_Full2018v9/MCFull2018v9/", "WminuslvHgg") + \ + nanoGetLocalSampleFiles("/eos/user/a/amassiro/HIG/ZHggPostProc/Summer20UL18_106x_nAODv9_Full2018v9/MCFull2018v9/", "WpluslvHgg") + +samples["WHgluglu"] = { + "name": files, + #"weight": mcCommonWeight, --> missing post processing + #"weight": 1, + "weight": "baseW*genWeight*1.0*0.08187*0.1086*3", + "FilesPerJob": 200, +} + +addSampleWeight( samples, 'WHgluglu', 'WminuslvHgg', '0.5328') # xsec pb (above I put 1.0) +addSampleWeight( samples, 'WHgluglu', 'WpluslvHgg', '0.8400') # xsec pb (above I put 1.0) + + + +# +# during post-processing, baseW, xsec = 1 +# +# xs_db["ZHgg"] = ["xsec=1.000", "kfact=1.000", "ref=X"] +# Units in pb +# From https://twiki.cern.ch/twiki/pub/LHCPhysics/HiggsXSBR/Higgs_XSBR_YR4_update.xlsx +# 8.839E-01 pb +# and the branching ratio: +# https://twiki.cern.ch/twiki/bin/view/LHCPhysics/CERNYellowReportPageBR +# 8.187E-02 +# BR Z>ll: 3.3658% x 3 +# From https://pdg.lbl.gov/2018/listings/rpp2018-list-z-boson.pdf +# +# BR W>lv: 10.86% x 3 +# https://pdg.lbl.gov/2018/listings/rpp2018-list-w-boson.pdf +# +# ZH_HToGluGlu_ZToLL_13TeV_powheg_pythia8 +# +# 59000×0.8839×0.08187×0.033658×3 +# + +########################################### +############# BACKGROUNDS ############### +########################################### + + +# # ####### Wjets ######### + +files = nanoGetSampleFiles(mcDirectory, 'WJetsToLNu-LO') + \ + nanoGetSampleFiles(mcDirectory, 'WJetsToLNu_HT70To100') + \ + nanoGetSampleFiles(mcDirectory, 'WJetsToLNu_HT100To200') + \ + nanoGetSampleFiles(mcDirectory, 'WJetsToLNu_HT200To400') + \ + nanoGetSampleFiles(mcDirectory, 'WJetsToLNu_HT400To600') + \ + nanoGetSampleFiles(mcDirectory, 'WJetsToLNu_HT600To800') + \ + nanoGetSampleFiles(mcDirectory, 'WJetsToLNu_HT800To1200') + \ + nanoGetSampleFiles(mcDirectory, 'WJetsToLNu_HT1200To2500') + \ + nanoGetSampleFiles(mcDirectory, 'WJetsToLNu_HT2500ToInf') + + +samples['Wjets'] = { + 'name': files, + 'weight': mcCommonWeight + '*1', + 'FilesPerJob' : 4, + } + +# # Fix Wjets binned + LO +addSampleWeight(samples,'Wjets', 'WJetsToLNu-LO', '(LHE_HT < 70)') +# ############ +# # HT stiching corrections 2018 +addSampleWeight( samples, 'Wjets', 'WJetsToLNu_HT70To100', '1.21 * 0.95148') #adding also k-factor +addSampleWeight( samples, 'Wjets', 'WJetsToLNu_HT100To200', '0.9471') +addSampleWeight( samples, 'Wjets', 'WJetsToLNu_HT200To400', '0.9515') +addSampleWeight( samples, 'Wjets', 'WJetsToLNu_HT400To600', '0.9581') +addSampleWeight( samples, 'Wjets', 'WJetsToLNu_HT600To800', '1.0582') +addSampleWeight( samples, 'Wjets', 'WJetsToLNu_HT800To1200', '1.1285') +addSampleWeight( samples, 'Wjets', 'WJetsToLNu_HT1200To2500', '1.3268') +addSampleWeight( samples, 'Wjets', 'WJetsToLNu_HT2500ToInf', '2.7948') + + + +############ DY ############ + +files = nanoGetSampleFiles(mcDirectory, 'DYJetsToLL_M-10to50_NLO') + \ + nanoGetSampleFiles(mcDirectory, 'DYJetsToLL_M-50') + +#print (" list of files DY = ", files) + +samples['DY'] = { + 'name': files, + 'weight': mcCommonWeight + '*1', + 'FilesPerJob': 4, +} + + +##### Top ####### + +files = nanoGetSampleFiles(mcDirectory, 'TTTo2L2Nu') + \ + nanoGetSampleFiles(mcDirectory, 'ST_s-channel') + \ + nanoGetSampleFiles(mcDirectory, 'ST_t-channel_top') + \ + nanoGetSampleFiles(mcDirectory, 'ST_t-channel_antitop') + \ + nanoGetSampleFiles(mcDirectory, 'ST_tW_antitop') + \ + nanoGetSampleFiles(mcDirectory, 'ST_tW_top') + \ + nanoGetSampleFiles(mcDirectory, 'TTToSemiLeptonic') + +samples['top'] = { + 'name': files, + 'weight': mcCommonWeight, + 'FilesPerJob': 8, +} + +addSampleWeight(samples,'top','TTTo2L2Nu','Top_pTrw') +addSampleWeight(samples,'top','TTToSemiLeptonic','Top_pTrw') + +############# VV ################## + +files = nanoGetSampleFiles( mcDirectory, 'WmToLNu_WmTo2J_QCD') + \ + nanoGetSampleFiles( mcDirectory, 'WmToLNu_ZTo2J_QCD') + \ + nanoGetSampleFiles( mcDirectory, 'WmTo2J_ZTo2L_QCD') + \ + nanoGetSampleFiles( mcDirectory, 'WpTo2J_WmToLNu_QCD') + \ + nanoGetSampleFiles( mcDirectory, 'WpTo2J_ZTo2L_QCD') + \ + nanoGetSampleFiles( mcDirectory, 'WpToLNu_WpTo2J_QCD') + \ + nanoGetSampleFiles( mcDirectory, 'WpToLNu_WmTo2J_QCD') + \ + nanoGetSampleFiles( mcDirectory, 'WpToLNu_ZTo2J_QCD') + \ + nanoGetSampleFiles( mcDirectory, 'ZTo2L_ZTo2J_QCD') + +samples['VV'] = { + 'name' : files, + 'weight': mcCommonWeight + '*1', + 'FilesPerJob' : 4, + } + + +######## Vg ######## +files = nanoGetSampleFiles(mcDirectory, 'Wg_AMCNLOFXFX_01J') + \ + nanoGetSampleFiles(mcDirectory, 'ZGToLLG') + +samples['Vg'] = { + 'name': files, + 'weight': mcCommonWeightNoMatch + '*(Gen_ZGstar_mass <= 0)*1', + 'FilesPerJob': 4, +} + +######## VgS ######## +files = nanoGetSampleFiles(mcDirectory, 'Wg_AMCNLOFXFX_01J') + \ + nanoGetSampleFiles(mcDirectory, 'WZTo3LNu_mllmin0p1') + \ + nanoGetSampleFiles(mcDirectory, 'ZGToLLG') + +samples['VgS'] = { + 'name': files, + 'weight': mcCommonWeight + '*1', + 'FilesPerJob': 4, +} +addSampleWeight(samples, 'VgS', 'Wg_AMCNLOFXFX_01J', '((Gen_ZGstar_mass > 0 && Gen_ZGstar_mass <= 0.1))*(gstarLow*0.94)') +addSampleWeight(samples, 'VgS', 'WZTo3LNu_mllmin0p1', '((Gen_ZGstar_mass > 0.1)*(0.601644*58.59/4.666))*(gstarLow*0.94)') +addSampleWeight(samples, 'VgS', 'ZGToLLG', '(Gen_ZGstar_mass > 0)') + + +############ WZ ############ +# files = nanoGetSampleFiles(mcDirectory, 'WZTo3LNu_mllmin0p1') + \ +# nanoGetSampleFiles(mcDirectory, 'WZTo2Q2L_mllmin4p0') +# +# samples['WZ'] = { +# 'name': files, +# 'weight': mcCommonWeight + ' * (gstarHigh)*1', +# 'FilesPerJob': 4 +# } +# addSampleWeight(samples, 'WZ', 'WZTo3LNu_mllmin0p1', '(0.601644*58.59/4.666)') + + +############ ZZ ############ +# files = nanoGetSampleFiles(mcDirectory, 'ZZTo2L2Nu') + \ +# nanoGetSampleFiles(mcDirectory, 'ZZTo2Q2L_mllmin4p0') + \ +# nanoGetSampleFiles(mcDirectory, 'ZZTo4L') +# +# samples['ZZ'] = { +# 'name': files, +# 'weight': mcCommonWeight + '*1', +# 'FilesPerJob': 4 +# } + + +########## VVV ######### +files = nanoGetSampleFiles(mcDirectory, 'ZZZ') + \ + nanoGetSampleFiles(mcDirectory, 'WZZ') + \ + nanoGetSampleFiles(mcDirectory, 'WWZ') + \ + nanoGetSampleFiles(mcDirectory, 'WWW') + +samples['VVV'] = { + 'name': files, + 'weight': mcCommonWeight + '*1', + 'FilesPerJob': 4 +} + +########################################### +############# SIGNALS ################## +########################################### + +signals = [] + +############ ggH H->WW ############ +samples['ggH_hww'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'GluGluHToWWTo2L2Nu_M125'), + 'weight': mcCommonWeight + '*1', + 'FilesPerJob': 2 +} +signals.append('ggH_hww') + +############ VBF H->WW ############ +samples['qqH_hww'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'VBFHToWWTo2L2Nu_M125'), + 'weight': mcCommonWeight + '*1', + 'FilesPerJob': 4 +} +signals.append('qqH_hww') + +############ ZH H->WW ############ +samples['ZH_hww'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'HZJ_HToWW_M125'), + 'weight': mcCommonWeight + '*1', + 'FilesPerJob': 4 +} +signals.append('ZH_hww') + +samples['ggZH_hww'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'GluGluZH_HToWWTo2L2Nu_M125'), + 'weight': mcCommonWeight + '*1', + 'FilesPerJob': 4 +} +signals.append('ggZH_hww') + +############ WH H->WW ############ +samples['WH_hww_plus'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'HWplusJ_HToWW_M125'), + 'weight': mcCommonWeight + '*1', + 'FilesPerJob': 4 +} +signals.append('WH_hww_plus') + +samples['WH_hww_minus'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'HWminusJ_HToWW_M125'), + 'weight': mcCommonWeight + '*1', + 'FilesPerJob': 4 +} + +signals.append('WH_hww_minus') + +############ ttH ############ +samples['ttH_hww'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'ttHToNonbb_M125'), + 'weight': mcCommonWeight + '*1', + 'FilesPerJob': 2 +} +signals.append('ttH_hww') + +############ H->TauTau ############ +samples['ggH_htt'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'GluGluHToTauTau_M125_Powheg'), + 'weight': mcCommonWeight + '*1', + 'FilesPerJob': 20 +} +signals.append('ggH_htt') + +samples['qqH_htt'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'VBFHToTauTau_M125'), + 'weight': mcCommonWeight + '*1', + 'FilesPerJob': 10 +} +signals.append('qqH_htt') + +samples['ZH_htt'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'ZHToTauTau_M125'), + 'weight': mcCommonWeight + '*1', + 'FilesPerJob': 4 +} +signals.append('ZH_htt') + +############ WH H->TauTau ############ +samples['WH_htt_plus'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'WplusHToTauTau_M125'), + 'weight': mcCommonWeight + '*1', + 'FilesPerJob': 4 +} +signals.append('WH_htt_plus') + +samples['WH_htt_minus'] = { + 'name': nanoGetSampleFiles(mcDirectory, 'WminusHToTauTau_M125'), + 'weight': mcCommonWeight + '*1', + 'FilesPerJob': 4 +} +signals.append('WH_htt_minus') + + +########################################### +################## FAKE ################### +########################################### + +# # # ## Fakes +# samples['Fake'] = { +# 'name': [], +# 'weight': METFilter_DATA +'*'+ fakeW +'* fakes_correction', +# 'weights': [], +# 'isData': ['all'], +# 'FilesPerJob' : 30, +# } +# +# for Run in DataRun : +# for DataSet in DataSets : +# version = 'v1' +# if "SingleMuon" in DataSet and any(k in Run[0] for k in ["A", "B", "C"]): +# version = 'v2' +# # # BE Careful --> we use directory_data because the Lepton tight cut was not applied in post-processing +# files = nanoGetSampleFiles(dataDirectoryHWW, DataSet+'_'+Run[1]+'-'+version) +# for iFile in files: +# samples['Fake']['name'].append(iFile) +# samples['Fake']['weights'].append(DataTrig[DataSet]) + + + +########################################### +################## DATA ################### +########################################### + +samples['DATA'] = { + 'name': [], + 'weight': 'LepWPCut_1l*METFilter_DATA*1', + 'weights': [], + 'isData': ['all'], + 'FilesPerJob': 50 +} + +for _, sd in DataRun: + for pd in DataSets: + tag_data = pd + '_' + sd + + if ( ('SingleMuon' in pd and 'Run2018A' in sd) + or ('SingleMuon' in pd and 'Run2018B' in sd) + or ('SingleMuon' in pd and 'Run2018C' in sd)): + print("sd = {}".format(sd)) + print("pd = {}".format(pd)) + print("Old tag = {}".format(tag_data)) + tag_data = tag_data.replace('v1','v2') + print("New tag = {}".format(tag_data)) + + files = nanoGetSampleFiles(dataDirectory, tag_data) + + samples['DATA']['name'].extend(files) + addSampleWeight(samples, 'DATA', tag_data, DataTrig[pd]) diff --git a/Hgg/2018UL1l/structure.py b/Hgg/2018UL1l/structure.py new file mode 100644 index 00000000..59cc7b3f --- /dev/null +++ b/Hgg/2018UL1l/structure.py @@ -0,0 +1,188 @@ +# +# structure configuration for datacard +# + +# keys here must match keys in samples.py + +structure = {} + + +structure['Wjets'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['DY'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['top'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['WW'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['WWewk'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['ggWW'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['Vg'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['VgS'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['WZ'] = { + 'isSignal' : 0, + 'isData' : 0, + 'scaleSampleForDatacard' : 1.138 # NLO -> NNLO k-factor +} + +structure['VV'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['ZZ'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['VVV'] = { + 'isSignal' : 0, + 'isData' : 0, +} + + +# Higgs + +# structure['Hgluglu'] = { +# 'isSignal' : 1, +# 'isData' : 0, +# #'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity +# } + + +structure['qqZHgluglu'] = { + 'isSignal' : 1, + 'isData' : 0, + #'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity +} + +structure['ggZHgluglu'] = { + 'isSignal' : 1, + 'isData' : 0, + #'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity +} + +structure['WHgluglu'] = { + 'isSignal' : 1, + 'isData' : 0, + #'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity +} + + + + +structure['ggH_hww'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['qqH_hww'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['ZH_hww'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['ggZH_hww'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['WH_hww_plus'] = { + 'isSignal' : 0, + 'isData' : 0, + #'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity +} + +structure['WH_hww_minus'] = { + 'isSignal' : 0, + 'isData' : 0, + #'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity +} + +structure['ttH_hww'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['ggH_htt'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['qqH_htt'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['ZH_htt'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['WH_htt_plus'] = { + 'isSignal' : 0, + 'isData' : 0, + #'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity +} + +structure['WH_htt_minus'] = { + 'isSignal' : 0, + 'isData' : 0, + #'scaleSampleForDatacard' : 10 # scaling signal to have sensitivity +} + + +# Fakes +structure['Fake_ee'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['Fake_mm'] = { + 'isSignal' : 0, + 'isData' : 0, +} + +structure['Fake_em'] = { + 'isSignal' : 0, + 'isData' : 0, +} + + +# Data +structure['DATA'] = { + 'isSignal' : 0, + 'isData' : 1 +} diff --git a/Hgg/2018UL1l/variables.py b/Hgg/2018UL1l/variables.py new file mode 100644 index 00000000..3b724013 --- /dev/null +++ b/Hgg/2018UL1l/variables.py @@ -0,0 +1,175 @@ +# variables + +# 0 = not fold (default), 1 = fold underflowbin, 2 = fold overflow bin, 3 = fold underflow and overflow + +variables = {} + +# variables['ttree_variable'] = { +# 'tree': {'LeptonPt1': 'Lepton_pt[0]'}, +# 'cuts': ['sr'] +# } + +variables['ptj1'] = { + 'name': 'Alt(CleanJet_pt,0,0)', + 'range': (100, 30, 500), + 'xaxis': 'p_{T} 1st jet', + 'fold' :3 +} + +variables['ptj2'] = { + 'name': 'Alt(CleanJet_pt,1,0)', + 'range': (100, 30, 500), + 'xaxis': 'p_{T} 2nd jet', + 'fold' :3 +} + +variables['qglj1'] = { + 'name': 'Alt(Jet_qgl,CleanJet_jetIdx[0],2)', + 'range': (100, -1, 1), + 'xaxis': 'QGL 1st jet', + 'fold' :3 +} + + +variables['qglj1morebins'] = { + 'name': 'Alt(Jet_qgl,CleanJet_jetIdx[0],2)', + 'range': (20, -0.01, 0.3), + 'xaxis': 'QGL 1st jet', + 'fold' :3 +} + +variables['qglj2'] = { + 'name': 'Alt(Jet_qgl,CleanJet_jetIdx[1],2)', + 'range': (100, -1, 1), + 'xaxis': 'QGL 2nd jet', + 'fold' :3 +} + + +variables['etaj1'] = { + 'name': 'Alt(CleanJet_eta,0,0)', + 'range': (100, -5, 5), + 'xaxis': '#eta 1st jet', + 'fold' :3 +} + +variables['etaj2'] = { + 'name': 'Alt(CleanJet_eta,1,0)', + 'range': (100, -5, 5), + 'xaxis': '#eta 2nd jet', + 'fold' :3 +} + + + +variables['btagDeepBj1'] = { + 'name': 'Alt(Jet_btagDeepB,CleanJet_jetIdx[0],2)', + 'range': (100, -1, 1), + 'xaxis': 'btagDeepB 1st jet', + 'fold' :3 +} + +variables['btagDeepBj2'] = { + 'name': 'Alt(Jet_btagDeepB,CleanJet_jetIdx[1],2)', + 'range': (100, -1, 1), + 'xaxis': 'btagDeepB 2nd jet', + 'fold' :3 +} + + +variables['btagCSVV2j1'] = { + 'name': 'Alt(Jet_btagCSVV2,CleanJet_jetIdx[0],2)', + 'range': (100, -1, 1), + 'xaxis': 'btagCSVV2 1st jet', + 'fold' :3 +} + +variables['btagCSVV2j2'] = { + 'name': 'Alt(Jet_btagCSVV2,CleanJet_jetIdx[1],2)', + 'range': (100, -1, 1), + 'xaxis': 'btagCSVV2 2nd jet', + 'fold' :3 +} + + +# +# +# lepton and jet variables +# + + +variables['dphilep1jj'] = { + 'name': 'dphilep1jj', + 'range': (100, -3.15, 3.15), + 'xaxis': '#Delta#phi ljj', + 'fold' :3 +} + + + + + + + +#Take(Jet_btagDeepFlavB, CleanJet_jetIdx), 0) +#Jet_btagDeepFlavB[CleanJet_jetIdx[0]] +#Alt(Take(Jet_btagDeepFlavB, CleanJet_jetIdx), 1, -99) -999.99*(CleanJet_pt[1]<20) +# +#Take(Jet_btagDeepFlavB, CleanJet_jetIdx)[0] +#Jet_btagDeepFlavB[CleanJet_jetIdx[0]] +# + +variables['mjj'] = { 'name': 'mjj', # variable name + 'range' : (20, 0, 200), # variable range + 'xaxis' : 'm_{jj} [GeV]', # x axis name + 'fold' :3 + } + +variables['mjjbins'] = { 'name': 'mjj', # variable name + 'range' : (100, 0, 200), # variable range + 'xaxis' : 'm_{jj} [GeV]', # x axis name + 'fold' :3 + } + +variables['ptl1'] = { 'name': 'Lepton_pt[0]', + 'range' : (100,0,100), + 'xaxis' : 'p_{T} 1st lep', + 'fold' : 3 + } + +variables['etal1'] = { + 'name': 'Lepton_eta[0]', + 'range': (100, -5, 5), + 'xaxis': '#eta lepton', + 'fold' :3 + } + +variables['puppimet'] = { + 'name': 'PuppiMET_pt', + 'range' : (100,0,200), + 'xaxis' : 'puppimet [GeV]', + 'fold' : 3 + } + +variables['detajj'] = { 'name': 'detajj', + 'range' : (100, 0.0, 9.0), + 'xaxis' : '#Delta#eta_{jj}', + 'fold' : 3 + } + +variables['dphijj'] = { 'name': 'dphijj', + 'range' : (100, -3.15, 3.15), + 'xaxis' : '#Delta#phi_{jj}', + 'fold' : 3 + } + + +# variables['ptjj'] = { +# 'name': 'ptjj', +# 'range' : (200,0,400), +# 'xaxis' : 'p_{T} jetjet [GeV]', +# 'fold' : 3 +# } + + + diff --git a/Hgg/Run2/nuisances.py b/Hgg/Run2/nuisances.py index 3353e8e7..aceda5d1 100644 --- a/Hgg/Run2/nuisances.py +++ b/Hgg/Run2/nuisances.py @@ -7,6 +7,14 @@ # nuisances = {} +try: + len(nuisances) +except NameError: + # import collections + # nuisances = collections.OrderedDict() + nuisances = {} + + limitFiles = -1 #