From 2aedcefb1935c5e0bc8b3bd692024f45896a6e1c Mon Sep 17 00:00:00 2001 From: fravera Date: Mon, 20 May 2019 16:35:37 -0500 Subject: [PATCH 01/12] Code cleaning --- .../plotter_2016Analysis_triggerStudies.cfg | 4 +- ...lectionCfg_2016Analysis_triggerStudies.cfg | 22 ++- ...m_2016ResonantDiHiggs4B_triggerStudies.cfg | 7 +- interface/OfflineProducerHelper.h | 2 +- scripts/TriggerEfficiencyFitter.C | 126 ++++++++++++++---- scripts/submitAllSkimsOnTier3.sh | 2 +- src/OfflineProducerHelper.cc | 82 ++++++------ 7 files changed, 169 insertions(+), 76 deletions(-) diff --git a/config/plotter_2016Analysis_triggerStudies.cfg b/config/plotter_2016Analysis_triggerStudies.cfg index f87fce8e8..50af80161 100644 --- a/config/plotter_2016Analysis_triggerStudies.cfg +++ b/config/plotter_2016Analysis_triggerStudies.cfg @@ -16,8 +16,8 @@ data = tmp_SingleMuon variables = SelectedJetPtSum, FirstSelectedJetPt, SecondSelectedJetPt, ThirdSelectedJetPt, ForthSelectedJetPt, ThirdSelectedJetDeepCSV -selections = Normalization , L1triggerDouble90Double30AndPrevious , QuadCentralJet30AndPrevious , DoubleCentralJet90AndPrevious , BTagCaloCSVp087TripleDouble90Double30AndPrevious , QuadPFCentralJetLooseID30AndPrevious , DoublePFCentralJetLooseID90AndPrevious , L1triggerQuad45AndPrevious , QuadCentralJet45AndPrevious , BTagCaloCSVp087TripleQuad45AndPrevious , QuadPFCentralJetLooseID45AndPrevious -regions = Full +selections = Normalization , L1triggerDouble90Double30AndPrevious , QuadCentralJet30AndPrevious , DoubleCentralJet90AndPrevious , BTagCaloCSVp087TripleDouble90Double30AndPrevious , QuadPFCentralJetLooseID30AndPrevious , DoublePFCentralJetLooseID90AndPrevious , L1triggerQuad45AndPrevious , QuadCentralJet45AndPrevious , BTagCaloCSVp087TripleQuad45AndPrevious , QuadPFCentralJetLooseID45AndPrevious, HLT_Double90Double30AndPrevious, HLT_Quad45AndPrevious +regions = HLT_IsoMu24, HLT_IsoMu20, HLT_IsoMu24_Matched, HLT_IsoMu20_Matched [configs] sampleCfg = config/sampleCfg_2016Analysis_triggerStudies.cfg diff --git a/config/selectionCfg_2016Analysis_triggerStudies.cfg b/config/selectionCfg_2016Analysis_triggerStudies.cfg index b610b9862..07940e01d 100644 --- a/config/selectionCfg_2016Analysis_triggerStudies.cfg +++ b/config/selectionCfg_2016Analysis_triggerStudies.cfg @@ -10,7 +10,7 @@ [selections] # common -basicSelection = ((H1_m > 120-40 && H1_m < 120+40) && (H2_m > 120-40 && H2_m < 120+40)) && HighestMuonPt>40 +basicSelection = ((H1_m > 120-40 && H1_m < 120+40) && (H2_m > 120-40 && H2_m < 120+40)) && HighestIsoMuonPt>40 BTagCaloCSVp087Triple = BTagCaloCSVp087Triple >= 3 # HLT_DoubleJet90_Double30_TripleBTagCSV_p087 @@ -20,12 +20,19 @@ DoubleCentralJet90 = DoubleCentralJet90 >= QuadPFCentralJetLooseID30 = QuadPFCentralJetLooseID30 >= 4 DoublePFCentralJetLooseID90 = DoublePFCentralJetLooseID90 >= 2 +#not per-object efficiency HLT_DoubleJet90_Double30_TripleBTagCSV_p087 +HLT_Double90Double30 = HLT_DoubleJet90_Double30_TripleBTagCSV_p087_Fired && HLT_DoubleJet90_Double30_TripleBTagCSV_p087_ObjectMatched + # HLT_QuadJet45_TripleBTagCSV_p087 L1triggerQuad45 = L1sQuadJetC50IorQuadJetC60IorHTT280IorHTT300IorHTT320IorTripleJet846848VBFIorTripleJet887256VBFIorTripleJet927664VBF >= 1 QuadCentralJet45 = QuadCentralJet45 >= 4 QuadPFCentralJetLooseID45 = QuadPFCentralJetLooseID45 >= 4 +#not per-object efficiency HLT_QuadJet45_TripleBTagCSV_p087 +HLT_Quad45 = HLT_QuadJet45_TripleBTagCSV_p087_Fired && HLT_QuadJet45_TripleBTagCSV_p087_ObjectMatched + + #common Normalization = basicSelection @@ -37,14 +44,23 @@ BTagCaloCSVp087TripleDouble90Double30AndPrevious = DoubleCentralJet90AndPrevious QuadPFCentralJetLooseID30AndPrevious = BTagCaloCSVp087TripleDouble90Double30AndPrevious, QuadPFCentralJetLooseID30 DoublePFCentralJetLooseID90AndPrevious = QuadPFCentralJetLooseID30AndPrevious, DoublePFCentralJetLooseID90 +#not per-object efficiency HLT_DoubleJet90_Double30_TripleBTagCSV_p087 +HLT_Double90Double30AndPrevious = Normalization, HLT_Double90Double30 + # HLT_QuadJet45_TripleBTagCSV_p087 L1triggerQuad45AndPrevious = Normalization, L1triggerQuad45 QuadCentralJet45AndPrevious = L1triggerQuad45AndPrevious, QuadCentralJet45 BTagCaloCSVp087TripleQuad45AndPrevious = QuadCentralJet45AndPrevious, BTagCaloCSVp087Triple QuadPFCentralJetLooseID45AndPrevious = BTagCaloCSVp087TripleQuad45AndPrevious, QuadPFCentralJetLooseID45 +#not per-object efficiency HLT_QuadJet45_TripleBTagCSV_p087 +HLT_Quad45AndPrevious = Normalization, HLT_Quad45 + # Region -Full = 1 +HLT_IsoMu24 = HLT_IsoMu24_Fired +HLT_IsoMu20 = HLT_IsoMu20_Fired +HLT_IsoMu24_Matched = HLT_IsoMu24_Fired && HLT_IsoMu24_ObjectMatched +HLT_IsoMu20_Matched = HLT_IsoMu20_Fired && HLT_IsoMu20_ObjectMatched ######################################################################### ######################################################################### @@ -104,7 +120,7 @@ FirstSelectedJetPt = 150, 20., 160. SecondSelectedJetPt = 150, 20., 200. ThirdSelectedJetPt = 150, 20., 160. ForthSelectedJetPt = 150, 20., 160. -ThirdSelectedJetDeepCSV = 150, 0., 1. +ThirdSelectedJetDeepCSV = 150, 0., 1. # write binning as ROOT declaration: nXbins xmin, xmax, nYbins, ymin, ymax = diff --git a/config/skim_2016ResonantDiHiggs4B_triggerStudies.cfg b/config/skim_2016ResonantDiHiggs4B_triggerStudies.cfg index baf579006..d0c42afd7 100644 --- a/config/skim_2016ResonantDiHiggs4B_triggerStudies.cfg +++ b/config/skim_2016ResonantDiHiggs4B_triggerStudies.cfg @@ -87,7 +87,7 @@ MuonMaxDz = 0.20 ObjectsForCut = TriggerObjects MaxDeltaR = 0.3 -ListOfTriggerObjectsAndBit = 1:0:BTagCaloCSVp087Triple, 1:1:DoubleCentralJet90, 1:2:DoublePFCentralJetLooseID90, 1:3:L1sTripleJetVBFIorHTTIorDoubleJetCIorSingleJet, 1:4:QuadCentralJet30, 1:5:QuadPFCentralJetLooseID30, 1:6:L1sQuadJetC50IorQuadJetC60IorHTT280IorHTT300IorHTT320IorTripleJet846848VBFIorTripleJet887256VBFIorTripleJet927664VBF, 1:7:QuadCentralJet45, 1:8:QuadPFCentralJetLooseID45, 13:11:hltL1sSingleMu22, 13:12:hltL2fL1sMu22L1f0L2Filtered10Q, 13:13:hltL3crIsoL1sMu22L1f0L2f10QL3f24QL3trkIsoFiltered0p09, 13:14:hltL3fL1sMu22L1f0L2f10QL3Filtered24Q +ListOfTriggerObjectsAndBit = 1:0:BTagCaloCSVp087Triple, 1:1:DoubleCentralJet90, 1:2:DoublePFCentralJetLooseID90, 1:3:L1sTripleJetVBFIorHTTIorDoubleJetCIorSingleJet, 1:4:QuadCentralJet30, 1:5:QuadPFCentralJetLooseID30, 1:6:L1sQuadJetC50IorQuadJetC60IorHTT280IorHTT300IorHTT320IorTripleJet846848VBFIorTripleJet887256VBFIorTripleJet927664VBF, 1:7:QuadCentralJet45, 1:8:QuadPFCentralJetLooseID45 # -------------------------------------------------------------------------------------------------------------- # # use BTagScaleFactorMethod to select how to evaluate the b tag scale factors @@ -114,14 +114,15 @@ WeightMethod = StandardWeight # triggers object are listed as objectType:filterBit:MinimumRequired # leave makeORof empty to skip the trigger requirement -makeORof = triggerIsoMu24:HLT_IsoMu24 +makeORof = triggerIsoMu24:HLT_IsoMu24, triggerIsoMu20:HLT_IsoMu20, trigger1:HLT_DoubleJet90_Double30_TripleBTagCSV_p087, trigger2:HLT_QuadJet45_TripleBTagCSV_p087 # makeORof = trigger1:HLT_DoubleJet90_Double30_TripleBTagCSV_p087, trigger2:HLT_QuadJet45_TripleBTagCSV_p087 # makeORof = trigger1:HLT_DoubleJet90_Double30_TripleBTagCSV_p087 # makeORof = trigger2:HLT_QuadJet45_TripleBTagCSV_p087 MaxDeltaR = 0.3 trigger1_ObjectRequirements = 1:0:3, 1:1:2, 1:2:2, 1:3:1, 1:4:4, 1:5:4 trigger2_ObjectRequirements = 1:0:3, 1:6:1, 1:7:4, 1:8:4 -triggerIsoMu24_ObjectRequirements = 13:11:1, 13:12:1, 13:13:1, 13:14:1 +triggerIsoMu24_ObjectRequirements = 13:10:1, 13:11:1, 13:12:1, 13:13:1, 13:14:1 +triggerIsoMu20_ObjectRequirements = 13:15:1, 13:16:1, 13:17:1, 13:18:1, 13:19:1 # ############################################################################################################## # diff --git a/interface/OfflineProducerHelper.h b/interface/OfflineProducerHelper.h index 561941fb1..22b3f0fe2 100644 --- a/interface/OfflineProducerHelper.h +++ b/interface/OfflineProducerHelper.h @@ -36,7 +36,7 @@ using namespace std::experimental; namespace OfflineProducerHelper { - bool debug = true; + bool debug = false; // Load configurations to match the b jets // bool loadConfiguration(CfgParser config); ///static bacause if not I got a glibc detected when the execution is completed diff --git a/scripts/TriggerEfficiencyFitter.C b/scripts/TriggerEfficiencyFitter.C index 495f83162..629ffd318 100644 --- a/scripts/TriggerEfficiencyFitter.C +++ b/scripts/TriggerEfficiencyFitter.C @@ -7,7 +7,7 @@ TGraphAsymmErrors* TriggerEfficiencyFitter(TFile *inputFile, std::string sampleName, std::string histogramName, std::string selectionName, std::string normalizationSelectionName, TF1 *fittingFunction, double *parameters, - std::string histogramTitle, std::string xAxisTitle) + std::string histogramTitle, std::string xAxisTitle, Color_t lineColor) { std::string cutTmpName = Form("%s/%s/%s_%s_%s",sampleName.data(),selectionName.data(),sampleName.data(),selectionName.data(),histogramName.data()); std::cout<GetYaxis()->SetTitle("efficiency"); g_efficiency->SetNameTitle(("Efficiency_"+selectionName).data(), ("Efficiency "+selectionName).data()); g_efficiency->GetYaxis()->SetRangeUser(0., 1.2); - g_efficiency->SetLineColor(kBlue); + g_efficiency->SetLineColor(lineColor); return g_efficiency; } -void MeasureTriggerEfficiency(std::string inputFileName, std::string sampleName, std::string outputFileName) +void MeasureTriggerEfficiency(std::string inputFileName, std::string sampleName, std::string referenceTriggerName, std::string outputFileName, Color_t lineColor) { TF1 *dummyFormula = new TF1(); double dummyParameters[1] = {0.}; @@ -45,71 +45,147 @@ void MeasureTriggerEfficiency(std::string inputFileName, std::string sampleName, // HLT_DoubleJet90_Double30_TripleBTagCSV_p087 efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "SelectedJetPtSum", - "L1triggerDouble90Double30AndPrevious_Full", "Normalization_Full", dummyFormula, dummyParameters, - "L1 Trigger", "p_{1}^{T} + p_{2}^{T} + p_{3}^{T} + p_{4}^{T}"); + "L1triggerDouble90Double30AndPrevious_"+referenceTriggerName, "Normalization_"+referenceTriggerName, dummyFormula, dummyParameters, + "L1 Trigger", "p_{1}^{T} + p_{2}^{T} + p_{3}^{T} + p_{4}^{T}", lineColor); // efficiency->SetDirectory(0); efficiency->Write(); efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "ForthSelectedJetPt", - "QuadCentralJet30AndPrevious_Full", "L1triggerDouble90Double30AndPrevious_Full", dummyFormula, dummyParameters, - "Quad Central Jet 30 GeV", "p_{4}^{T}"); + "QuadCentralJet30AndPrevious_"+referenceTriggerName, "L1triggerDouble90Double30AndPrevious_"+referenceTriggerName, dummyFormula, dummyParameters, + "Quad Central Jet 30 GeV", "p_{4}^{T}", lineColor); // efficiency->SetDirectory(0); efficiency->Write(); efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "SecondSelectedJetPt", - "DoubleCentralJet90AndPrevious_Full", "QuadCentralJet30AndPrevious_Full", dummyFormula, dummyParameters, - "Double Central Jet 90 GeV", "p_{2}^{T}"); + "DoubleCentralJet90AndPrevious_"+referenceTriggerName, "QuadCentralJet30AndPrevious_"+referenceTriggerName, dummyFormula, dummyParameters, + "Double Central Jet 90 GeV", "p_{2}^{T}", lineColor); // efficiency->SetDirectory(0); efficiency->Write(); efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "ThirdSelectedJetDeepCSV", - "BTagCaloCSVp087TripleDouble90Double30AndPrevious_Full", "DoubleCentralJet90AndPrevious_Full", dummyFormula, dummyParameters, - "BTag CaloCSV p087 Triple", "DeepCSV_{3}"); + "BTagCaloCSVp087TripleDouble90Double30AndPrevious_"+referenceTriggerName, "DoubleCentralJet90AndPrevious_"+referenceTriggerName, dummyFormula, dummyParameters, + "BTag CaloCSV p087 Triple", "DeepCSV_{3}", lineColor); // efficiency->SetDirectory(0); efficiency->Write(); efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "ForthSelectedJetPt", - "QuadPFCentralJetLooseID30AndPrevious_Full", "BTagCaloCSVp087TripleDouble90Double30AndPrevious_Full", dummyFormula, dummyParameters, - "Quad PF Central Jet Loose ID 30 GeV", "p_{4}^{T}"); + "QuadPFCentralJetLooseID30AndPrevious_"+referenceTriggerName, "BTagCaloCSVp087TripleDouble90Double30AndPrevious_"+referenceTriggerName, dummyFormula, dummyParameters, + "Quad PF Central Jet Loose ID 30 GeV", "p_{4}^{T}", lineColor); // efficiency->SetDirectory(0); efficiency->Write(); efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "SecondSelectedJetPt", - "DoublePFCentralJetLooseID90AndPrevious_Full", "QuadPFCentralJetLooseID30AndPrevious_Full", dummyFormula, dummyParameters, - "Double PF Central Jet Loose ID 90 GeV", "p_{2}^{T}"); + "DoublePFCentralJetLooseID90AndPrevious_"+referenceTriggerName, "QuadPFCentralJetLooseID30AndPrevious_"+referenceTriggerName, dummyFormula, dummyParameters, + "Double PF Central Jet Loose ID 90 GeV", "p_{2}^{T}", lineColor); // efficiency->SetDirectory(0); efficiency->Write(); +/* + // not per-object efficiency HLT_DoubleJet90_Double30_TripleBTagCSV_p087 + efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "SelectedJetPtSum", + "HLT_Double90Double30AndPrevious_"+referenceTriggerName, "Normalization_"+referenceTriggerName, dummyFormula, dummyParameters, + "L1 Trigger", "p_{1}^{T} + p_{2}^{T} + p_{3}^{T} + p_{4}^{T}", lineColor); + // efficiency->SetDirectory(0); + efficiency->Write(); + + efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "ForthSelectedJetPt", + "HLT_Double90Double30AndPrevious_"+referenceTriggerName, "Normalization_"+referenceTriggerName, dummyFormula, dummyParameters, + "Forth Jet efficiency", "p_{4}^{T}", lineColor); + // efficiency->SetDirectory(0); + efficiency->Write(); + + efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "SecondSelectedJetPt", + "HLT_Double90Double30AndPrevious_"+referenceTriggerName, "Normalization_"+referenceTriggerName, dummyFormula, dummyParameters, + "Second Jet efficiency", "p_{2}^{T}", lineColor); + // efficiency->SetDirectory(0); + efficiency->Write(); - // HLT_QuadJet45_TripleBTagCSV_p087 + efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "ThirdSelectedJetDeepCSV", + "HLT_Double90Double30AndPrevious_"+referenceTriggerName, "Normalization_"+referenceTriggerName, dummyFormula, dummyParameters, + "Third BTag jet efficiency", "DeepCSV_{3}", lineColor); + // efficiency->SetDirectory(0); + efficiency->Write(); +*/ + + // _QuadJet45_TripleBTagCSV_p087 efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "SelectedJetPtSum", - "L1triggerQuad45AndPrevious_Full", "Normalization_Full", dummyFormula, dummyParameters, - "L1 Trigger", "p_{1}^{T} + p_{2}^{T} + p_{3}^{T} + p_{4}^{T}"); + "L1triggerQuad45AndPrevious_"+referenceTriggerName, "Normalization_"+referenceTriggerName, dummyFormula, dummyParameters, + "L1 Trigger", "p_{1}^{T} + p_{2}^{T} + p_{3}^{T} + p_{4}^{T}", lineColor); // efficiency->SetDirectory(0); efficiency->Write(); efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "ForthSelectedJetPt", - "QuadCentralJet45AndPrevious_Full", "L1triggerQuad45AndPrevious_Full", dummyFormula, dummyParameters, - "Quad Central Jet 45 GeV", "p_{4}^{T}"); + "QuadCentralJet45AndPrevious_"+referenceTriggerName, "L1triggerQuad45AndPrevious_"+referenceTriggerName, dummyFormula, dummyParameters, + "Quad Central Jet 45 GeV", "p_{4}^{T}", lineColor); // efficiency->SetDirectory(0); efficiency->Write(); efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "ThirdSelectedJetDeepCSV", - "BTagCaloCSVp087TripleQuad45AndPrevious_Full", "QuadCentralJet45AndPrevious_Full", dummyFormula, dummyParameters, - "BTag CaloCSV p087 Triple", "DeepCSV_{3}"); + "BTagCaloCSVp087TripleQuad45AndPrevious_"+referenceTriggerName, "QuadCentralJet45AndPrevious_"+referenceTriggerName, dummyFormula, dummyParameters, + "BTag CaloCSV p087 Triple", "DeepCSV_{3}", lineColor); + // efficiency->SetDirectory(0); + efficiency->Write(); + + efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "ForthSelectedJetPt", + "QuadPFCentralJetLooseID45AndPrevious_"+referenceTriggerName, "BTagCaloCSVp087TripleQuad45AndPrevious_"+referenceTriggerName, dummyFormula, dummyParameters, + "Quad PF Central Jet Loose ID 45 GeV", "p_{4}^{T}", lineColor); + // efficiency->SetDirectory(0); + efficiency->Write(); + +/* + // not per-object efficiency _QuadJet45_TripleBTagCSV_p087 + efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "SelectedJetPtSum", + "HLT_Quad45AndPrevious_"+referenceTriggerName, "Normalization_"+referenceTriggerName, dummyFormula, dummyParameters, + "L1 Trigger", "p_{1}^{T} + p_{2}^{T} + p_{3}^{T} + p_{4}^{T}", lineColor); // efficiency->SetDirectory(0); efficiency->Write(); efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "ForthSelectedJetPt", - "QuadPFCentralJetLooseID45AndPrevious_Full", "BTagCaloCSVp087TripleQuad45AndPrevious_Full", dummyFormula, dummyParameters, - "Quad PF Central Jet Loose ID 45 GeV", "p_{4}^{T}"); + "HLT_Quad45AndPrevious_"+referenceTriggerName, "Normalization_"+referenceTriggerName, dummyFormula, dummyParameters, + "Forth Jet efficiency", "p_{4}^{T}", lineColor); // efficiency->SetDirectory(0); efficiency->Write(); + efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "ThirdSelectedJetDeepCSV", + "HLT_Quad45AndPrevious_"+referenceTriggerName, "Normalization_"+referenceTriggerName, dummyFormula, dummyParameters, + "Third BTag jet efficiency", "DeepCSV_{3}", lineColor); + // efficiency->SetDirectory(0); + efficiency->Write(); +*/ + //outputFile->WriteObject(efficiency,"Efficiency"); // inputFile->Close(); // outputFile->Close(); return; -} \ No newline at end of file +} + +void PlotAll() +{ + MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt40/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24","TriggerEfficiency_SingleMuon_HLT_IsoMu24_MuPt40.root",kBlue); + MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt40/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24_Matched","TriggerEfficiency_SingleMuon_HLT_IsoMu24_Matched_MuPt40.root",kRed); + + MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt40/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20","TriggerEfficiency_SingleMuon_HLT_IsoMu20_MuPt40.root",kGreen); + MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt40/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20_Matched","TriggerEfficiency_SingleMuon_HLT_IsoMu20_Matched_MuPt40.root",kOrange); + + MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24","TriggerEfficiency_SingleMuon_HLT_IsoMu24_MuPt20.root",kBlue); + MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24_Matched","TriggerEfficiency_SingleMuon_HLT_IsoMu24_Matched_MuPt20.root",kRed); + + MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20","TriggerEfficiency_SingleMuon_HLT_IsoMu20_MuPt20.root",kGreen); + MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20_Matched","TriggerEfficiency_SingleMuon_HLT_IsoMu20_Matched_MuPt20.root",kOrange); + + MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt40/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20","TriggerEfficiency_SingleMuon_HLT_IsoMu20_MuPt40_best.root",kRed); + MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20","TriggerEfficiency_SingleMuon_HLT_IsoMu20_MuPt20_best.root",kBlue); + +} + + + + + + + + + + diff --git a/scripts/submitAllSkimsOnTier3.sh b/scripts/submitAllSkimsOnTier3.sh index b6e313bb6..0e1701863 100755 --- a/scripts/submitAllSkimsOnTier3.sh +++ b/scripts/submitAllSkimsOnTier3.sh @@ -1,5 +1,5 @@ # python scripts/submitSkimOnTier3.py --input=inputFiles/2016ResonantDiHiggs4BDataSets/BTagCSV_Data_FileList_80x_reprocess.txt --tag=$1 --cfg=config/skim_2016ResonantDiHiggs4B.cfg --is-data --njobs=200 -python scripts/submitSkimOnTier3.py --input=inputFiles/2016ResonantDiHiggs4BDataSets/SingleMuon_Data.txt --tag=$1 --cfg=config/skim_2016ResonantDiHiggs4B_triggerStudies.cfg --is-data --njobs=200 +python scripts/submitSkimOnTier3.py --input=inputFiles/2016ResonantDiHiggs4BDataSets/SingleMuon_Data_RunBF.txt --tag=$1 --cfg=config/skim_2016ResonantDiHiggs4B_triggerStudies.cfg --is-data --njobs=300 # python scripts/submitSkimOnTier3.py --input=inputFiles/2016ResonantDiHiggs4BDataSets/BTagCSV_Data_FileList_80x_reprocess.txt --tag=$1 --cfg=config/skim_2016ResonantDiHiggs4B_antiTag.cfg --is-data --njobs=300 # python scripts/submitSkimOnTier3.py --input=inputFiles/2016ResonantDiHiggs4BDataSets/MCSignal_BulkGravTohhTohbbhbb_narrow_M-1000_13TeV-madgraph.txt --tag=$1 --cfg=config/skim_2016ResonantDiHiggs4B.cfg --puWeight=weights/MCSignal_BulkGravTohhTohbbhbb_narrow_M-1000_13TeV-madgraph_PUweights.root --is-signal --xs=1 --no-tar --no-xrdcp-tar --njobs=3 # python scripts/submitSkimOnTier3.py --input=inputFiles/2016ResonantDiHiggs4BDataSets/MCSignal_BulkGravTohhTohbbhbb_narrow_M-1200_13TeV-madgraph.txt --tag=$1 --cfg=config/skim_2016ResonantDiHiggs4B.cfg --puWeight=weights/MCSignal_BulkGravTohhTohbbhbb_narrow_M-1200_13TeV-madgraph_PUweights.root --is-signal --xs=1 --no-tar --no-xrdcp-tar --njobs=3 diff --git a/src/OfflineProducerHelper.cc b/src/OfflineProducerHelper.cc index dcc67eccd..e72297727 100644 --- a/src/OfflineProducerHelper.cc +++ b/src/OfflineProducerHelper.cc @@ -52,8 +52,7 @@ void OfflineProducerHelper::initializeObjectsForCuts(OutputTree &ot){ ot.declareUserFloatBranch("ForthSelectedJetPt", -1.); ot.declareUserFloatBranch("SelectedJetPtSum", -1.); ot.declareUserFloatBranch("ThirdSelectedJetDeepCSV", -1.); - ot.declareUserFloatBranch("HighestMuonPt", -1.); - ot.declareUserFloatBranch("SmallestMuonJetDeltaR", -1.); + ot.declareUserFloatBranch("HighestIsoMuonPt", -1.); } @@ -177,17 +176,6 @@ void OfflineProducerHelper::save_TriggerObjects (NanoAODTree& nat, OutputTree &o ot.userFloat("ForthSelectedJetPt") = candidatePt[3]; ot.userFloat("SelectedJetPtSum") = candidatePt[0] + candidatePt[1] + candidatePt[2] + candidatePt[3]; ot.userFloat("ThirdSelectedJetDeepCSV") = candidateDeepCSV[2]; - if(*(nat.nMuon)>0){ - ot.userFloat("HighestMuonPt") = nat.Muon_pt.At(0); - std::vector muonJetDeltaR; - muonJetDeltaR.emplace_back(sqrt(pow(ei.H1_b1->P4().Eta() - nat.Muon_eta.At(0),2) + pow(deltaPhi(ei.H1_b1->P4().Phi(), nat.Muon_phi.At(0)),2) ) ); - muonJetDeltaR.emplace_back(sqrt(pow(ei.H1_b2->P4().Eta() - nat.Muon_eta.At(0),2) + pow(deltaPhi(ei.H1_b2->P4().Phi(), nat.Muon_phi.At(0)),2) ) ); - muonJetDeltaR.emplace_back(sqrt(pow(ei.H2_b1->P4().Eta() - nat.Muon_eta.At(0),2) + pow(deltaPhi(ei.H2_b1->P4().Phi(), nat.Muon_phi.At(0)),2) ) ); - muonJetDeltaR.emplace_back(sqrt(pow(ei.H2_b2->P4().Eta() - nat.Muon_eta.At(0),2) + pow(deltaPhi(ei.H2_b2->P4().Phi(), nat.Muon_phi.At(0)),2) ) ); - stable_sort(muonJetDeltaR.begin(), muonJetDeltaR.end()); - ot.userFloat("SmallestMuonJetDeltaR") = muonJetDeltaR.at(0); - } - return; } @@ -728,7 +716,6 @@ bool OfflineProducerHelper::select_bbbb_jets(NanoAODTree& nat, EventInfo& ei, Ou for (uint ij = 0; ij < *(nat.nJet); ++ij){ unsmearedJets.emplace_back(Jet(ij, &nat)); } -// std::cout<<"culo1\n"; //if some montecarlo weight are applied via a reshaping of the jets variables, they must be applied here @@ -742,7 +729,6 @@ bool OfflineProducerHelper::select_bbbb_jets(NanoAODTree& nat, EventInfo& ei, Ou //do nothing } else throw std::runtime_error("cannot recognize cut strategy --" + preselectionCutStrategy + "--"); -// std::cout<<"culo2\n"; //at least 4 jets required if(unsmearedJets.size()<4) return false; @@ -776,7 +762,6 @@ bool OfflineProducerHelper::select_bbbb_jets(NanoAODTree& nat, EventInfo& ei, Ou } -// std::cout<<"culo3\n"; int H1b1_idx(-1), H1b2_idx(-1), H2b1_idx(-1), H2b2_idx(-1); //Jet indexes for variations for(auto & jets : jetEnergyVariationsMap) @@ -793,7 +778,6 @@ bool OfflineProducerHelper::select_bbbb_jets(NanoAODTree& nat, EventInfo& ei, Ou } } -// std::cout<<"culo4\n"; // now need to pair the jets std::vector presel_jets = {{ (jets.second[0]), @@ -817,7 +801,6 @@ bool OfflineProducerHelper::select_bbbb_jets(NanoAODTree& nat, EventInfo& ei, Ou } else throw std::runtime_error("cannot recognize bbbb choice strategy " + strategy); -// std::cout<<"culo5\n"; if(ordered_jets.size()!=4) { if(!any_cast(parameterList_->at("UseAntiTagOnOneBjet")) && strategy == "HighestCSVandClosestToMh") @@ -829,31 +812,50 @@ bool OfflineProducerHelper::select_bbbb_jets(NanoAODTree& nat, EventInfo& ei, Ou if(debug) std::cout<< "Event " << *(nat.run) << " - " << *(nat.luminosityBlock) << " - " << *(nat.event) << std::endl; -// std::cout<<"culo6\n"; if(jets.first == originalSampleName) { std::vector< std::unique_ptr > selectedCandidates; -// std::cout<<"culo6.1\n"; for(auto jet : ordered_jets) { selectedCandidates.emplace_back(std::make_unique(jet)); //std::cout<P4().Eta()<<" "<P4().Eta()<0) + if(any_cast(parameterList_->at("ObjectsForCut")) == "TriggerObjects") { - //Candidate *theHighestPtMuon = new Muon(0, &nat); - selectedCandidates.emplace_back(std::make_unique(Muon(0, &nat))); + for (uint muonIt = 0; muonIt < *(nat.nMuon); ++muonIt) + { + if(nat.Muon_pfRelIso04_all[muonIt]<0.1) + { + int muonJetId = nat.Muon_jetIdx[muonIt]; + bool matchingJetFound = false; + if(muonJetId >= 0) + { + for(auto jet : ordered_jets) + { + if(jet.getIdx() == muonJetId) + { + matchingJetFound = true; + break; + } + } + } + if(!matchingJetFound) + { + ot.userFloat("HighestIsoMuonPt") = nat.Muon_pt.At(muonJetId); + selectedCandidates.emplace_back(std::make_unique(Muon(muonJetId, &nat))); + break; + } + } + } } calculateTriggerMatching(selectedCandidates,nat); -// std::cout<<"culo6.2\n"; } if(jets.first == originalSampleName) { -// std::cout<<"culo6.3\n"; for(auto & triggerFired : listOfPassedTriggers) { ot.userInt(triggerFired+"_Fired") = 1; @@ -881,14 +883,12 @@ bool OfflineProducerHelper::select_bbbb_jets(NanoAODTree& nat, EventInfo& ei, Ou if(debug) { Muon *theHighestPtMuon = new Muon(0, &nat); - std::cout<< std::fixed << std::setprecision(3) <getIdx()<<"\t\t"<P4().Pt()<<"\t\t"<P4().Eta()<<"\t\t"<P4().Phi()<<"\n"; + std::cout<< std::fixed << std::setprecision(3) <getIdx()<<"\t\t"<P4().Pt()<<"\t\t"<P4().Eta()<<"\t\t"<P4().Phi()<<"\t\t"<getCandidateTypeId()<<"\n"; } } -// std::cout<<"culo6.4\n"; } -// std::cout<<"culo7\n"; // order H1, H2 by pT: pT(H1) > pT (H2) CompositeCandidate H1 = CompositeCandidate(ordered_jets.at(0), ordered_jets.at(1)); @@ -897,7 +897,6 @@ bool OfflineProducerHelper::select_bbbb_jets(NanoAODTree& nat, EventInfo& ei, Ou CompositeCandidate H2 = CompositeCandidate(ordered_jets.at(2), ordered_jets.at(3)); H2.rebuildP4UsingRegressedPt(true,true); -// std::cout<<"culo8\n"; //Do a random swap to be sure that the m1 and m2 are simmetric bool swapped = (int(H1.P4().Pt()*100.) % 2 == 1); @@ -962,12 +961,10 @@ bool OfflineProducerHelper::select_bbbb_jets(NanoAODTree& nat, EventInfo& ei, Ou ei.LumiSec = *(nat.luminosityBlock); ei.Event = *(nat.event); -// std::cout<<"culo9\n"; } else //Variations { -// std::cout<<"culo10\n"; int H1b1(-1), H1b2(-1), H2b1(-1), H2b2(-1); for(size_t iJet=0; iJet> filterBit) & 0x1 ) //check object passes the filter { if(!isNeeded) isNeeded=true; @@ -1710,11 +1718,11 @@ void OfflineProducerHelper::calculateTriggerMatching(const std::vector< std::uni else if(debug) std::cout<<" "<getCandidateTypeId()<getCandidateTypeId() != triggerObjectId) continue; // Skip different particles //std::cout<<"!!!~~~~ - "< candidatePhi {ei.H1_b1->P4().Phi() , ei.H1_b2->P4().Phi() , ei.H2_b1->P4().Phi() , ei.H2_b2->P4().Phi() }; std::vector candidateEta {ei.H1_b1->P4().Eta() , ei.H1_b2->P4().Eta() , ei.H2_b1->P4().Eta() , ei.H2_b2->P4().Eta() }; @@ -1877,41 +1884,34 @@ bool OfflineProducerHelper::select_gen_bb_bb (NanoAODTree& nat, EventInfo& ei) std::vector genBJetEta {ei.gen_H1_b1->P4().Eta(), ei.gen_H1_b2->P4().Eta(), ei.gen_H2_b1->P4().Eta(), ei.gen_H2_b2->P4().Eta()}; std::vector isCandidaterMatched(4,false); std::vector matchedCandidate(4,-1); -// std::cout<<"culo2\n"; for(uint8_t itGenBJet=0; itGenBJet<4; ++itGenBJet) { -// std::cout<<"culo3\n"; double deltaR = 1024; int candidateMatched=-1; for(uint8_t itCandidate=0; itCandidate<4; ++itCandidate) { -// std::cout<<"culo4\n"; if(isCandidaterMatched[itCandidate]) continue; double tmpDeltaR = deltaPhi(candidatePhi[itCandidate],genBJetPhi[itGenBJet])*deltaPhi(candidatePhi[itCandidate],genBJetPhi[itGenBJet]) + (candidateEta[itCandidate]-genBJetEta[itGenBJet])*(candidateEta[itCandidate]-genBJetEta[itGenBJet]); if(tmpDeltaR Date: Thu, 23 May 2019 11:01:31 -0500 Subject: [PATCH 02/12] Code cleanining and trigger test without selection --- ...lectionCfg_2016Analysis_triggerStudies.cfg | 21 +- ...m_2016ResonantDiHiggs4B_triggerStudies.cfg | 15 +- interface/Candidate.h | 23 +- interface/Electron.h | 2 +- interface/FatJet.h | 2 +- interface/GenJet.h | 2 +- interface/OfflineProducerHelper.h | 1 + scripts/TriggerEfficiencyFitter.C | 46 +- scripts/getTaskStatus.py | 6 +- scripts/submitSkimOnTier3.py | 4 +- src/CompositeCandidate.cc | 5 +- src/OfflineProducerHelper.cc | 1285 +++++++++-------- test/fill_histograms.cpp | 2 +- test/skim_ntuple.cpp | 18 +- 14 files changed, 758 insertions(+), 674 deletions(-) diff --git a/config/selectionCfg_2016Analysis_triggerStudies.cfg b/config/selectionCfg_2016Analysis_triggerStudies.cfg index 07940e01d..317c41b0f 100644 --- a/config/selectionCfg_2016Analysis_triggerStudies.cfg +++ b/config/selectionCfg_2016Analysis_triggerStudies.cfg @@ -10,11 +10,12 @@ [selections] # common +# basicSelection = HighestIsoMuonPt>20 basicSelection = ((H1_m > 120-40 && H1_m < 120+40) && (H2_m > 120-40 && H2_m < 120+40)) && HighestIsoMuonPt>40 BTagCaloCSVp087Triple = BTagCaloCSVp087Triple >= 3 # HLT_DoubleJet90_Double30_TripleBTagCSV_p087 -L1triggerDouble90Double30 = L1sTripleJetVBFIorHTTIorDoubleJetCIorSingleJet >= 1 +L1triggerDouble90Double30 = L1sTripleJetVBFIorHTTIorDoubleJetCIorSingleJet >= 1 QuadCentralJet30 = QuadCentralJet30 >= 4 DoubleCentralJet90 = DoubleCentralJet90 >= 2 QuadPFCentralJetLooseID30 = QuadPFCentralJetLooseID30 >= 4 @@ -33,7 +34,7 @@ QuadPFCentralJetLooseID45 = QuadPFCentralJetLooseID45 >= HLT_Quad45 = HLT_QuadJet45_TripleBTagCSV_p087_Fired && HLT_QuadJet45_TripleBTagCSV_p087_ObjectMatched -#common +# common Normalization = basicSelection # HLT_DoubleJet90_Double30_TripleBTagCSV_p087 @@ -44,7 +45,7 @@ BTagCaloCSVp087TripleDouble90Double30AndPrevious = DoubleCentralJet90AndPrevious QuadPFCentralJetLooseID30AndPrevious = BTagCaloCSVp087TripleDouble90Double30AndPrevious, QuadPFCentralJetLooseID30 DoublePFCentralJetLooseID90AndPrevious = QuadPFCentralJetLooseID30AndPrevious, DoublePFCentralJetLooseID90 -#not per-object efficiency HLT_DoubleJet90_Double30_TripleBTagCSV_p087 +# not per-object efficiency HLT_DoubleJet90_Double30_TripleBTagCSV_p087 HLT_Double90Double30AndPrevious = Normalization, HLT_Double90Double30 # HLT_QuadJet45_TripleBTagCSV_p087 @@ -53,7 +54,7 @@ QuadCentralJet45AndPrevious = L1triggerQuad45AndPrevious, QuadCentral BTagCaloCSVp087TripleQuad45AndPrevious = QuadCentralJet45AndPrevious, BTagCaloCSVp087Triple QuadPFCentralJetLooseID45AndPrevious = BTagCaloCSVp087TripleQuad45AndPrevious, QuadPFCentralJetLooseID45 -#not per-object efficiency HLT_QuadJet45_TripleBTagCSV_p087 +# not per-object efficiency HLT_QuadJet45_TripleBTagCSV_p087 HLT_Quad45AndPrevious = Normalization, HLT_Quad45 # Region @@ -115,12 +116,12 @@ sig_Radion_1200GeV = genWeight, PUWeight, LHEPdfWeight, LHEScaleWeight # write binning as ROOT declaration: nXbins, xmin, xmax [histos] -SelectedJetPtSum = 150, 100., 600. -FirstSelectedJetPt = 150, 20., 160. -SecondSelectedJetPt = 150, 20., 200. -ThirdSelectedJetPt = 150, 20., 160. -ForthSelectedJetPt = 150, 20., 160. -ThirdSelectedJetDeepCSV = 150, 0., 1. +SelectedJetPtSum = 50, 100., 600. +FirstSelectedJetPt = 50, 20., 160. +SecondSelectedJetPt = 50, 20., 200. +ThirdSelectedJetPt = 50, 20., 160. +ForthSelectedJetPt = 50, 20., 160. +ThirdSelectedJetDeepCSV = 50, 0., 1. # write binning as ROOT declaration: nXbins xmin, xmax, nYbins, ymin, ymax = diff --git a/config/skim_2016ResonantDiHiggs4B_triggerStudies.cfg b/config/skim_2016ResonantDiHiggs4B_triggerStudies.cfg index d0c42afd7..28bb5a9b5 100644 --- a/config/skim_2016ResonantDiHiggs4B_triggerStudies.cfg +++ b/config/skim_2016ResonantDiHiggs4B_triggerStudies.cfg @@ -14,6 +14,8 @@ is2016Sample = true # if LMRToMMRTransition<0 only one range is used with HiggsMass = HiggsMassLMR # UseAntiTagOnOneBjet if set to True will require one of the selected jet not to be b-tagged: # Compatible only with PreselectionCut = bJetCut. +# None : No selection, only for trigger studies +# UseAntiTagOnOneBjet if set to True will require one of the selected jet not to be b-tagged: #bbbbChoice = OneClosestToMh #HiggsMass = 120. @@ -24,10 +26,13 @@ is2016Sample = true #bbbbChoice = MostBackToBack #HiggsMass = 120. -bbbbChoice = HighestCSVandClosestToMh -HiggsMassLMR = 120. -HiggsMassMMR = 125. -LMRToMMRTransition = -1. +#bbbbChoice = HighestCSVandClosestToMh +#HiggsMassLMR = 120. +#HiggsMassMMR = 125. +#LMRToMMRTransition = -1. +#UseAntiTagOnOneBjet = false + +bbbbChoice = None UseAntiTagOnOneBjet = false # -------------------------------------------------------------------------------------------------------------- # @@ -38,7 +43,7 @@ UseAntiTagOnOneBjet = false # None (do nothing) PreselectionCut = bJetCut -MinDeepCSV = 0.1 +MinDeepCSV = 0. MinPt = 20 MaxAbsEta = 2.6 diff --git a/interface/Candidate.h b/interface/Candidate.h index 9db61ef77..b7b935900 100644 --- a/interface/Candidate.h +++ b/interface/Candidate.h @@ -23,8 +23,27 @@ class Candidate public: Candidate(){nat_ = nullptr; idx_ = -1; isComposite_=false;} // creates an invalid Candidate Candidate(int idx, NanoAODTree* nat){idx_ = idx; nat_ = nat; isComposite_=false; parentIdxVector_.emplace_back(idx);} // standard ctor to be used for NanoAODTree inspection - ~Candidate(){}; - + virtual ~Candidate(){}; + // Candidate(const Candidate& rhs) + // { + // this -> idx_ = rhs.idx_; + // this -> parentIdxVector_ = rhs.parentIdxVector_; + // this -> p4_ = rhs.p4_; + // this -> nat_ = rhs.nat_; + // this -> isComposite_ = rhs.isComposite_; + // this -> typeId_ = rhs.typeId_; + // } + + // Candidate& operator = (const Candidate& rhs) + // { + // this -> p4_ = rhs.p4_; + // this -> isComposite_ = rhs.isComposite_; + // this -> parentIdxVector_ = rhs.parentIdxVector_; + // this -> cand1_ = rhs.cand1_->clone(); + // this -> cand2_ = rhs.cand2_->clone(); + // return (*this); + // } + TLorentzVector P4() const {return p4_;} void setP4( TLorentzVector p4) {p4_ = p4;} bool getIsComposite() const {return isComposite_;} diff --git a/interface/Electron.h b/interface/Electron.h index c1911f08d..a32f1f799 100644 --- a/interface/Electron.h +++ b/interface/Electron.h @@ -12,7 +12,7 @@ class Electron : public Candidate std::unique_ptr clone() const override{ Electron *clonedElectron = new Electron(this->getIdx(), this->getNanoAODTree()); clonedElectron->setP4(this->P4()); - return std::unique_ptr (clonedElectron); + return std::unique_ptr (clonedElectron); } private: diff --git a/interface/FatJet.h b/interface/FatJet.h index 86d8483af..1fffed4e1 100644 --- a/interface/FatJet.h +++ b/interface/FatJet.h @@ -12,7 +12,7 @@ class FatJet : public Candidate std::unique_ptr clone() const override{ FatJet *clonedFatJet = new FatJet(this->getIdx(), this->getNanoAODTree()); clonedFatJet->setP4(this->P4()); - return std::unique_ptr (clonedFatJet); + return std::unique_ptr (clonedFatJet); } private: diff --git a/interface/GenJet.h b/interface/GenJet.h index fa97da5a0..0e78a8ad2 100644 --- a/interface/GenJet.h +++ b/interface/GenJet.h @@ -12,7 +12,7 @@ class GenJet : public Candidate std::unique_ptr clone() const { GenJet *clonedGenJet = new GenJet(this->getIdx(), this->getNanoAODTree()); clonedGenJet->setP4(this->P4()); - return std::unique_ptr (clonedGenJet); + return std::unique_ptr (clonedGenJet); } private: void buildP4(); diff --git a/interface/OfflineProducerHelper.h b/interface/OfflineProducerHelper.h index 92c953389..c686d95e2 100644 --- a/interface/OfflineProducerHelper.h +++ b/interface/OfflineProducerHelper.h @@ -35,6 +35,7 @@ namespace OfflineProducerHelper { bool debug = false; + std::unique_ptr thirdDeepCSVJet; // Load configurations to match the b jets // bool loadConfiguration(CfgParser config); ///static bacause if not I got a glibc detected when the execution is completed diff --git a/scripts/TriggerEfficiencyFitter.C b/scripts/TriggerEfficiencyFitter.C index 629ffd318..8873f476f 100644 --- a/scripts/TriggerEfficiencyFitter.C +++ b/scripts/TriggerEfficiencyFitter.C @@ -163,20 +163,46 @@ void MeasureTriggerEfficiency(std::string inputFileName, std::string sampleName, void PlotAll() { - MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt40/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24","TriggerEfficiency_SingleMuon_HLT_IsoMu24_MuPt40.root",kBlue); - MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt40/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24_Matched","TriggerEfficiency_SingleMuon_HLT_IsoMu24_Matched_MuPt40.root",kRed); + // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt40/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24","TriggerEfficiency_SingleMuon_HLT_IsoMu24_MuPt40.root",kBlue); + // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt40/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24_Matched","TriggerEfficiency_SingleMuon_HLT_IsoMu24_Matched_MuPt40.root",kRed); - MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt40/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20","TriggerEfficiency_SingleMuon_HLT_IsoMu20_MuPt40.root",kGreen); - MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt40/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20_Matched","TriggerEfficiency_SingleMuon_HLT_IsoMu20_Matched_MuPt40.root",kOrange); + // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt40/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20","TriggerEfficiency_SingleMuon_HLT_IsoMu20_MuPt40.root",kGreen); + // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt40/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20_Matched","TriggerEfficiency_SingleMuon_HLT_IsoMu20_Matched_MuPt40.root",kOrange); - MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24","TriggerEfficiency_SingleMuon_HLT_IsoMu24_MuPt20.root",kBlue); - MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24_Matched","TriggerEfficiency_SingleMuon_HLT_IsoMu24_Matched_MuPt20.root",kRed); + // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24","TriggerEfficiency_SingleMuon_HLT_IsoMu24_MuPt20.root",kBlue); + // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24_Matched","TriggerEfficiency_SingleMuon_HLT_IsoMu24_Matched_MuPt20.root",kRed); - MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20","TriggerEfficiency_SingleMuon_HLT_IsoMu20_MuPt20.root",kGreen); - MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20_Matched","TriggerEfficiency_SingleMuon_HLT_IsoMu20_Matched_MuPt20.root",kOrange); + // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20","TriggerEfficiency_SingleMuon_HLT_IsoMu20_MuPt20.root",kGreen); + // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20_Matched","TriggerEfficiency_SingleMuon_HLT_IsoMu20_Matched_MuPt20.root",kOrange); - MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt40/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20","TriggerEfficiency_SingleMuon_HLT_IsoMu20_MuPt40_best.root",kRed); - MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20","TriggerEfficiency_SingleMuon_HLT_IsoMu20_MuPt20_best.root",kBlue); + // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt40/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20","TriggerEfficiency_SingleMuon_HLT_IsoMu20_MuPt40_best.root",kRed); + // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20","TriggerEfficiency_SingleMuon_HLT_IsoMu20_MuPt20_best.root",kBlue); + + // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt40/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24","TriggerEfficiency_SingleMuon_HLT_IsoMu24_MuPt40.root",kBlue); + // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt40/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24_Matched","TriggerEfficiency_SingleMuon_HLT_IsoMu24_Matched_MuPt40.root",kRed); + + // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt40/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20","TriggerEfficiency_SingleMuon_HLT_IsoMu20_MuPt40.root",kGreen); + // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt40/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20_Matched","TriggerEfficiency_SingleMuon_HLT_IsoMu20_Matched_MuPt40.root",kOrange); + + // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24","TriggerEfficiency_SingleMuon_HLT_IsoMu24_MuPt20.root",kBlue); + // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24_Matched","TriggerEfficiency_SingleMuon_HLT_IsoMu24_Matched_MuPt20.root",kRed); + + // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20","TriggerEfficiency_SingleMuon_HLT_IsoMu20_MuPt20.root",kGreen); + // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20_Matched","TriggerEfficiency_SingleMuon_HLT_IsoMu20_Matched_MuPt20.root",kOrange); + + + // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Matching_Trigger_MuPt20/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24","TriggerEfficiency_SingleMuon_HLT_IsoMu24_MuPt20.root",kBlue); + // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Matching_Trigger_MuPt20/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24_Matched","TriggerEfficiency_SingleMuon_HLT_IsoMu24_Matched_MuPt20.root",kRed); + + // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Matching_Trigger_MuPt20/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20","TriggerEfficiency_SingleMuon_HLT_IsoMu20_MuPt20.root",kGreen); + // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Matching_Trigger_MuPt20/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20_Matched","TriggerEfficiency_SingleMuon_HLT_IsoMu20_Matched_MuPt20.root",kOrange); + + + MeasureTriggerEfficiency("2016DataPlots_SingleMuon_JetSelected_Trigger_MuPt20/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24","TriggerEfficiency_SingleMuon_HLT_IsoMu24_MuPt20.root",kBlue); + MeasureTriggerEfficiency("2016DataPlots_SingleMuon_JetSelected_Trigger_MuPt20/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24_Matched","TriggerEfficiency_SingleMuon_HLT_IsoMu24_Matched_MuPt20.root",kRed); + + MeasureTriggerEfficiency("2016DataPlots_SingleMuon_JetSelected_Trigger_MuPt20/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20","TriggerEfficiency_SingleMuon_HLT_IsoMu20_MuPt20.root",kGreen); + MeasureTriggerEfficiency("2016DataPlots_SingleMuon_JetSelected_Trigger_MuPt20/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20_Matched","TriggerEfficiency_SingleMuon_HLT_IsoMu20_Matched_MuPt20.root",kOrange); } diff --git a/scripts/getTaskStatus.py b/scripts/getTaskStatus.py index bbf8a6eb9..f9c72ad9d 100644 --- a/scripts/getTaskStatus.py +++ b/scripts/getTaskStatus.py @@ -23,8 +23,10 @@ def getExitCode(fname): if code == -888: if "*** Break *** segmentation violation" in line: code = -666; - if '... job finished with status' in line: - code = int(re.search('... job finished with status (\d+)', line).group(1)) + # if '... job finished with status' in line: + if '... execution finished with status' in line: + # code = int(re.search('... job finished with status (\d+)', line).group(1)) + code = int(re.search('... execution finished with status (\d+)', line).group(1)) if "... copy done with status 0" in line: fileCopied = True; diff --git a/scripts/submitSkimOnTier3.py b/scripts/submitSkimOnTier3.py index b53b97d6e..fdcd62b8a 100644 --- a/scripts/submitSkimOnTier3.py +++ b/scripts/submitSkimOnTier3.py @@ -79,6 +79,8 @@ def writeln(f, line): ################## executable = 'bin/skim_ntuple_nonresonant.exe' ##If resonant analysis 'bin/skim_ntuple.exe' +if "2016ResonantDiHiggs4BDataSets" in args.input : # dangerous for future + executable = 'bin/skim_ntuple.exe' ################## username = getpass.getuser() @@ -258,7 +260,7 @@ def writeln(f, line): writeln(outScript, '%s' % this_full_command) writeln(outScript, 'echo "... execution finished with status $?"') writeln(outScript, 'echo "... copying output file %s to EOS in %s"' % (outputFileName, outputEOSName)) - writeln(outScript, 'xrdcp -s %s %s' % (outputFileName, outputEOSName)) ## no not force overwrite output in destination + writeln(outScript, 'xrdcp -s -f %s %s' % (outputFileName, outputEOSName)) ## no force overwrite output in destination writeln(outScript, 'echo "... copy done with status $?"') # writeln(outScript, 'remove the input and output files if you dont want it automatically transferred when the job ends') # writeln(outScript, 'rm nameOfOutputFile.root') diff --git a/src/CompositeCandidate.cc b/src/CompositeCandidate.cc index 1bfee58ca..ef41b61c2 100644 --- a/src/CompositeCandidate.cc +++ b/src/CompositeCandidate.cc @@ -45,11 +45,8 @@ bool CompositeCandidate::sharesComponentWith(const CompositeCandidate& cc) const CompositeCandidate::CompositeCandidate(const CompositeCandidate& rhs) +: Candidate(rhs) { - - this -> p4_ = rhs.p4_; - this -> isComposite_ = rhs.isComposite_; - this -> parentIdxVector_ = rhs.parentIdxVector_; this -> cand1_ = rhs.cand1_->clone(); this -> cand2_ = rhs.cand2_->clone(); } diff --git a/src/OfflineProducerHelper.cc b/src/OfflineProducerHelper.cc index 60942fc70..6be84dbcd 100644 --- a/src/OfflineProducerHelper.cc +++ b/src/OfflineProducerHelper.cc @@ -20,12 +20,13 @@ #include "TMVA/Factory.h" #include "TMVA/DataLoader.h" #include "TMVA/Reader.h" - + using namespace std; // ----------------- Objects for cut - BEGIN ----------------- // -void OfflineProducerHelper::initializeObjectsForCuts(OutputTree &ot){ +void OfflineProducerHelper::initializeObjectsForCuts(OutputTree &ot) +{ string objectsForCut = any_cast(parameterList_->at("ObjectsForCut")); @@ -66,7 +67,8 @@ void OfflineProducerHelper::initializeObjectsForCuts(OutputTree &ot){ } // reject events with leptons that may come from W and Z decays -void OfflineProducerHelper::save_WAndZLeptonDecays (NanoAODTree& nat, OutputTree &ot, EventInfo& ei){ +void OfflineProducerHelper::save_WAndZLeptonDecays (NanoAODTree& nat, OutputTree &ot, EventInfo& ei) +{ std::vector electronFromW; electronFromW.reserve(*(nat.nElectron)); @@ -165,22 +167,29 @@ void OfflineProducerHelper::save_TriggerObjects (NanoAODTree& nat, OutputTree &o }; stable_sort(candidatePt.begin(), candidatePt.end(), greater()); - std::vector candidateDeepCSV = - { - get_property(ei.H1_b1.get(),Jet_btagDeepB), - get_property(ei.H1_b2.get(),Jet_btagDeepB), - get_property(ei.H2_b1.get(),Jet_btagDeepB), - get_property(ei.H2_b2.get(),Jet_btagDeepB) - }; - stable_sort(candidateDeepCSV.begin(), candidateDeepCSV.end(), greater()); - - ot.userFloat("FirstSelectedJetPt") = candidatePt[0]; ot.userFloat("SecondSelectedJetPt") = candidatePt[1]; ot.userFloat("ThirdSelectedJetPt") = candidatePt[2]; ot.userFloat("ForthSelectedJetPt") = candidatePt[3]; ot.userFloat("SelectedJetPtSum") = candidatePt[0] + candidatePt[1] + candidatePt[2] + candidatePt[3]; - ot.userFloat("ThirdSelectedJetDeepCSV") = candidateDeepCSV[2]; + + + if(any_cast(parameterList_->at("bbbbChoice")) != "None") + { + std::vector candidateDeepCSV = + { + get_property(ei.H1_b1.get(),Jet_btagDeepB), + get_property(ei.H1_b2.get(),Jet_btagDeepB), + get_property(ei.H2_b1.get(),Jet_btagDeepB), + get_property(ei.H2_b2.get(),Jet_btagDeepB) + }; + stable_sort(candidateDeepCSV.begin(), candidateDeepCSV.end(), greater()); + ot.userFloat("ThirdSelectedJetDeepCSV") = candidateDeepCSV[2]; + } + else + { + ot.userFloat("ThirdSelectedJetDeepCSV") = get_property((*thirdDeepCSVJet), Jet_btagDeepB); + } return; } @@ -190,7 +199,8 @@ void OfflineProducerHelper::save_TriggerObjects (NanoAODTree& nat, OutputTree &o // ----------------- Compute scaleFactors - BEGIN ----------------- // -void OfflineProducerHelper::initializeObjectsBJetForScaleFactors(OutputTree &ot){ +void OfflineProducerHelper::initializeObjectsBJetForScaleFactors(OutputTree &ot) +{ string scaleFactorsMethod = any_cast(parameterList_->at("BTagScaleFactorMethod")); @@ -223,8 +233,9 @@ void OfflineProducerHelper::initializeObjectsBJetForScaleFactors(OutputTree &ot) } -void OfflineProducerHelper::compute_scaleFactors_fourBtag_eventScaleFactor (const std::vector &jets, NanoAODTree& nat, OutputTree &ot){ - +void OfflineProducerHelper::compute_scaleFactors_fourBtag_eventScaleFactor (const std::vector &jets, NanoAODTree& nat, OutputTree &ot) +{ + float tmpScaleFactor_bJets_central = 1.; float tmpScaleFactor_bJets_up = 1.; float tmpScaleFactor_bJets_down = 1.; @@ -449,7 +460,7 @@ float OfflineProducerHelper::calculateEventWeight_AllWeights(NanoAODTree& nat, O eventWeight *= tmpWeight; // LHEScaleWeight weight variations for(unsigned int var = 0; var<*(nat.nLHEScaleWeight); ++var) - { + { tmpWeight = nat.LHEScaleWeight.At(var); tmpWeight = tmpWeight==0 ? 1 : tmpWeight; //set to 1 if weight is 0 std::string variationBranch = branchName + "_var" + std::to_string(var); @@ -577,7 +588,7 @@ std::vector OfflineProducerHelper::applyJERsmearing(NanoAODTree& nat, std:: float tmpJER_ScaleFactor = jetResolutionScaleFactor_->getScaleFactor(jetParameters, variation ); float tmpJER_Resolution = jetResolution_->getResolution(jetParameters); - + int genJetId = abs(get_property(iJet,Jet_genJetIdx)); float smearFactor; @@ -594,7 +605,7 @@ std::vector OfflineProducerHelper::applyJERsmearing(NanoAODTree& nat, std:: { smearFactor = 1.; } - + float MIN_JET_ENERGY = 1e-2; if (iJet.P4().Energy() * smearFactor < MIN_JET_ENERGY) @@ -653,7 +664,7 @@ void OfflineProducerHelper::initializeJECVariations(OutputTree &ot) void OfflineProducerHelper::standardJECVariations(NanoAODTree& nat, std::vector &jetsUnsmeared, std::vector< std::pair > > &jetEnergyVariationsMap) { - + //Uncertanties are calculated according to https://twiki.cern.ch/twiki/bin/view/CMS/JECUncertaintySources#Code_example for (auto const & variation : mapForJECuncertanties_) @@ -710,7 +721,7 @@ void OfflineProducerHelper::fillJetEnergyVariationBranch(OutputTree &ot, std::st bool OfflineProducerHelper::select_bbbb_jets(NanoAODTree& nat, EventInfo& ei, OutputTree &ot, std::vector listOfPassedTriggers) { - + if (*(nat.nJet) < 4) return false; std::vector unsmearedJets; @@ -725,10 +736,12 @@ bool OfflineProducerHelper::select_bbbb_jets(NanoAODTree& nat, EventInfo& ei, Ou //Apply preselection cuts const string preselectionCutStrategy = any_cast(parameterList_->at("PreselectionCut")); - if(preselectionCutStrategy=="bJetCut"){ + if(preselectionCutStrategy=="bJetCut") + { bJets_PreselectionCut(unsmearedJets); } - else if(preselectionCutStrategy=="None"){ + else if(preselectionCutStrategy=="None") + { //do nothing } else throw std::runtime_error("cannot recognize cut strategy --" + preselectionCutStrategy + "--"); @@ -773,10 +786,12 @@ bool OfflineProducerHelper::select_bbbb_jets(NanoAODTree& nat, EventInfo& ei, Ou if(jets.first == originalSampleName) //Original sample without variations { // calculate scaleFactors after preselection cuts - if(parameterList_->find("BTagScaleFactorMethod") != parameterList_->end()){ //is it a MC event + if(parameterList_->find("BTagScaleFactorMethod") != parameterList_->end()) //is it a MC event + { const string BJetcaleFactorsMethod = any_cast(parameterList_->at("BTagScaleFactorMethod")); - if(BJetcaleFactorsMethod == "FourBtag_ScaleFactor"){ + if(BJetcaleFactorsMethod == "FourBtag_ScaleFactor") + { compute_scaleFactors_fourBtag_eventScaleFactor(jets.second,nat,ot); } } @@ -799,78 +814,96 @@ bool OfflineProducerHelper::select_bbbb_jets(NanoAODTree& nat, EventInfo& ei, Ou ordered_jets = bbbb_jets_idxs_BothClosestToMh(&presel_jets); else if(strategy == "MostBackToBack") ordered_jets = bbbb_jets_idxs_MostBackToBack(&presel_jets); - else if(strategy == "HighestCSVandClosestToMh"){ + else if(strategy == "HighestCSVandClosestToMh") + { ordered_jets = bbbb_jets_idxs_HighestCSVandClosestToMh(&jets.second); } + else if(strategy == "None") + { + thirdDeepCSVJet = std::make_unique(jets.second[2]); + //order them back by pt + stable_sort(jets.second.begin(), jets.second.end(), [](const Jet & a, const Jet & b) -> bool + { + return ( a.P4().Pt() > b.P4().Pt() ); + }); + //I will keep only the four highest pt jets + ordered_jets = jets.second; + // ordered_jets.push_back(jets.second[0]); + // ordered_jets.push_back(jets.second[1]); + // ordered_jets.push_back(jets.second[2]); + // ordered_jets.push_back(jets.second[3]); + } else throw std::runtime_error("cannot recognize bbbb choice strategy " + strategy); - if(ordered_jets.size()!=4) + // std::cout << __PRETTY_FUNCTION__ << ordered_jets.size() << std::endl; + + if(ordered_jets.size()!=4 && strategy != "None") { - if(!any_cast(parameterList_->at("UseAntiTagOnOneBjet")) && strategy == "HighestCSVandClosestToMh") + if(strategy == "HighestCSVandClosestToMh") { - throw std::runtime_error("OfflineProducerHelper::select_bbbb_jets -> candidates not found -> this should never happen to use jet energy variations"); + if(!any_cast(parameterList_->at("UseAntiTagOnOneBjet"))) + { + throw std::runtime_error("OfflineProducerHelper::select_bbbb_jets -> candidates not found -> this should never happen to use jet energy variations"); + } + return false; } - return false; } if(debug) std::cout<< "Event " << *(nat.run) << " - " << *(nat.luminosityBlock) << " - " << *(nat.event) << std::endl; - if(jets.first == originalSampleName) + std::vector< std::unique_ptr > selectedCandidates; + for(auto jet : ordered_jets) { - std::vector< std::unique_ptr > selectedCandidates; - for(auto jet : ordered_jets) - { - selectedCandidates.emplace_back(std::make_unique(jet)); - //std::cout<P4().Eta()<<" "<P4().Eta()<(jet)); + //std::cout<P4().Eta()<<" "<P4().Eta()<(parameterList_->at("ObjectsForCut")) == "TriggerObjects") + if(any_cast(parameterList_->at("ObjectsForCut")) == "TriggerObjects") + { + for (uint muonIt = 0; muonIt < *(nat.nMuon); ++muonIt) { - for (uint muonIt = 0; muonIt < *(nat.nMuon); ++muonIt) + if(nat.Muon_pfRelIso04_all[muonIt]<0.1) { - if(nat.Muon_pfRelIso04_all[muonIt]<0.1) + int muonJetId = nat.Muon_jetIdx[muonIt]; + bool matchingJetFound = false; + if(muonJetId >= 0) { - int muonJetId = nat.Muon_jetIdx[muonIt]; - bool matchingJetFound = false; - if(muonJetId >= 0) + for(auto jet : ordered_jets) { - for(auto jet : ordered_jets) + if(jet.getIdx() == muonJetId) { - if(jet.getIdx() == muonJetId) - { - matchingJetFound = true; - break; - } - } - } - if(!matchingJetFound) - { - ot.userFloat("HighestIsoMuonPt") = nat.Muon_pt.At(muonJetId); - selectedCandidates.emplace_back(std::make_unique(Muon(muonJetId, &nat))); - break; - } + matchingJetFound = true; + break; + } + } + } + if(!matchingJetFound) + { + ot.userFloat("HighestIsoMuonPt") = nat.Muon_pt.At(muonJetId); + selectedCandidates.emplace_back(std::make_unique(Muon(muonJetId, &nat))); + break; } } } - - calculateTriggerMatching(selectedCandidates,nat); - } - - if(jets.first == originalSampleName) + + calculateTriggerMatching(selectedCandidates,nat); + + + for(auto & triggerFired : listOfPassedTriggers) { - for(auto & triggerFired : listOfPassedTriggers) - { - ot.userInt(triggerFired+"_Fired") = 1; - } + ot.userInt(triggerFired+"_Fired") = 1; + } - if(!checkTriggerObjectMatching(listOfPassedTriggers,ot)) + if(!checkTriggerObjectMatching(listOfPassedTriggers,ot)) + { + if(debug) { - if(debug) std::cout<<"TriggerObjects not matched, Printing jets:\n"; - if(debug) std::cout<<"Id\t\tPt\t\tEta\t\tPhi\t\tCSV\t\tSelected\n"; - for(const auto & jet : jetsOriginal) + std::cout<<"TriggerObjects not matched, Printing jets:\n"; + std::cout<<"Id\t\tPt\t\tEta\t\tPhi\t\tCSV\t\tSelected\n"; + for(const auto & jet : jets.second) { - if(debug) std::cout<< std::fixed << std::setprecision(3) <getIdx()<<"\t\t"<P4().Pt()<<"\t\t"<P4().Eta()<<"\t\t"<P4().Phi()<<"\t\t"<getCandidateTypeId()<<"\n"; + if(selected) std::cout<<"*"; + std::cout<getIdx()<<"\t\t"<P4().Pt()<<"\t\t"<P4().Eta()<<"\t\t"<P4().Phi()<<"\t\t"<getCandidateTypeId()<<"\n"; } } - // order H1, H2 by pT: pT(H1) > pT (H2) CompositeCandidate H1 = CompositeCandidate(ordered_jets.at(0), ordered_jets.at(1)); H1.rebuildP4UsingRegressedPt(true,true); - + CompositeCandidate H2 = CompositeCandidate(ordered_jets.at(2), ordered_jets.at(3)); H2.rebuildP4UsingRegressedPt(true,true); - + //Do a random swap to be sure that the m1 and m2 are simmetric bool swapped = (int(H1.P4().Pt()*100.) % 2 == 1); - + if (!swapped) { ei.H1 = H1; @@ -930,36 +959,37 @@ bool OfflineProducerHelper::select_bbbb_jets(NanoAODTree& nat, EventInfo& ei, Ou ei.H1_bb_DeltaR = sqrt(pow(ei.H1_b1->P4Regressed().Eta() - ei.H1_b2->P4Regressed().Eta(),2) + pow(deltaPhi(ei.H1_b1->P4Regressed().Phi(), ei.H1_b2->P4Regressed().Phi()),2)); ei.H2_bb_DeltaR = sqrt(pow(ei.H2_b1->P4Regressed().Eta() - ei.H2_b2->P4Regressed().Eta(),2) + pow(deltaPhi(ei.H2_b1->P4Regressed().Phi(), ei.H2_b2->P4Regressed().Phi()),2)); - + ei.HH = CompositeCandidate(ei.H1.get(), ei.H2.get()); - + float targetHiggsMass; if(strategy == "HighestCSVandClosestToMh") { targetHiggsMass = any_cast(parameterList_->at("HiggsMassLMR")); if(any_cast(parameterList_->at("LMRToMMRTransition"))>=0. && ei.HH->P4().M() > any_cast(parameterList_->at("LMRToMMRTransition"))) targetHiggsMass = any_cast(parameterList_->at("HiggsMassMMR")); - + } - else + else if(strategy != "None") { targetHiggsMass = any_cast(parameterList_->at("HiggsMass")); } + else targetHiggsMass = 120.; ei.HH_2DdeltaM = pow(ei.H1->P4().M() - targetHiggsMass,2) + pow(ei.H2->P4().M() - targetHiggsMass,2); bool applyKineamticFit=true; - if(applyKineamticFit) + if(applyKineamticFit && strategy != "None") { HH4b_kinFit::constrainHH_signalMeasurement(&ordered_jets.at(0).p4Regressed_, &ordered_jets.at(1).p4Regressed_, &ordered_jets.at(2).p4Regressed_, &ordered_jets.at(3).p4Regressed_); CompositeCandidate H1kf = CompositeCandidate(ordered_jets.at(0), ordered_jets.at(1)); H1kf.rebuildP4UsingRegressedPt(true,true); - + CompositeCandidate H2kf = CompositeCandidate(ordered_jets.at(2), ordered_jets.at(3)); H2kf.rebuildP4UsingRegressedPt(true,true); ei.HH_m_kinFit = CompositeCandidate(H1kf, H2kf).P4().M(); } - + ei.Run = *(nat.run); ei.LumiSec = *(nat.luminosityBlock); ei.Event = *(nat.event); @@ -986,16 +1016,16 @@ bool OfflineProducerHelper::select_bbbb_jets(NanoAODTree& nat, EventInfo& ei, Ou CompositeCandidate H2 = CompositeCandidate(jets.second[H2b1], jets.second[H2b2]); H2.rebuildP4UsingRegressedPt(true,true); - + CompositeCandidate HH = CompositeCandidate(H1, H2); - + string strategy = any_cast(parameterList_->at("bbbbChoice")); float targetHiggsMass; if(strategy == "HighestCSVandClosestToMh") { targetHiggsMass = any_cast(parameterList_->at("HiggsMassLMR")); if(any_cast(parameterList_->at("LMRToMMRTransition"))>=0. && ei.HH->P4().M() > any_cast(parameterList_->at("LMRToMMRTransition"))) targetHiggsMass = any_cast(parameterList_->at("HiggsMassMMR")); - + } else { @@ -1051,7 +1081,7 @@ void OfflineProducerHelper::bJets_PreselectionCut(std::vector &jets) { minimumDeepCSVaccepted = -1; } - + if(minimumDeepCSVaccepted<=0. && maximumPtAccepted<=0. && maximumAbsEtaCSVaccepted<=0.) return; auto it = jets.begin(); @@ -1089,12 +1119,14 @@ std::vector OfflineProducerHelper::bbbb_jets_idxs_OneClosestToMh(const std: std::vector>> mHs_and_jetIdx; // each entry is the mH and the two idxs of the pair for (uint i = 0; i < presel_jets->size(); ++i) + { for (uint j = i+1; j < presel_jets->size(); ++j) { TLorentzVector p4sum = (presel_jets->at(i).P4Regressed() + presel_jets->at(j).P4Regressed()); float dmh = fabs(p4sum.Mag() - targetHiggsMass); mHs_and_jetIdx.emplace_back(make_pair(dmh, make_pair(i,j))); } + } // sort to get the pair closest to mH stable_sort (mHs_and_jetIdx.begin(), mHs_and_jetIdx.end()); @@ -1106,9 +1138,9 @@ std::vector OfflineProducerHelper::bbbb_jets_idxs_OneClosestToMh(const std: // get the other two jets. The following creates a vector with idxs 0/1/2/3, and then removes ij1 and ij2 std::vector vres; for (uint i = 0; i < presel_jets->size(); ++i) vres.emplace_back(i); - vres.erase(std::remove(vres.begin(), vres.end(), ij0), vres.end()); + vres.erase(std::remove(vres.begin(), vres.end(), ij0), vres.end()); vres.erase(std::remove(vres.begin(), vres.end(), ij1), vres.end()); - + int ij2 = vres.at(0); int ij3 = vres.at(1); @@ -1126,13 +1158,15 @@ std::vector OfflineProducerHelper::bbbb_jets_idxs_BothClosestToMh(const std float targetHiggsMass = any_cast(parameterList_->at("HiggsMass")); std::vector mHs; - + for (uint i = 0; i < presel_jets->size(); ++i) + { for (uint j = i+1; j < presel_jets->size(); ++j) { TLorentzVector p4sum = (presel_jets->at(i).P4() + presel_jets->at(j).P4()); mHs.emplace_back(p4sum.Mag()); } + } std::pair m_12_34 = make_pair (mHs.at(0), mHs.at(5)); std::pair m_13_24 = make_pair (mHs.at(1), mHs.at(4)); @@ -1191,12 +1225,13 @@ std::vector OfflineProducerHelper::bbbb_jets_idxs_MostBackToBack(const std: } -std::vector OfflineProducerHelper::bbbb_jets_idxs_HighestCSVandClosestToMh(const std::vector *jets){ - +std::vector OfflineProducerHelper::bbbb_jets_idxs_HighestCSVandClosestToMh(const std::vector *jets) +{ + float targetHiggsMassLMR = any_cast(parameterList_->at("HiggsMassLMR" )); float targetHiggsMassMMR = any_cast(parameterList_->at("HiggsMassMMR" )); float LMRToMMRTransition = any_cast(parameterList_->at("LMRToMMRTransition" )); - + std::vector output_jets; unsigned int numberOfJets = jets->size(); if(numberOfJets < 4) @@ -1274,11 +1309,11 @@ void OfflineProducerHelper::VBFCandidatesStudies(NanoAODTree& nat, EventInfo& ei int nmatches=0; float eta1=0,eta2=0; for (uint x=0; x < vbfjets.size(); x++ ) { - if(quarkID.at(vbfjets.at(x).getIdx())==5){nmatches++; eta1=vbfjets.at(x).P4().Eta(); } - if(quarkID.at(vbfjets.at(x).getIdx())==6){nmatches++; eta2=vbfjets.at(x).P4().Eta(); } - } - ei.NVBFCandidateswithVBFMatch=nmatches; - if(nmatches==2){ei.VBFMatchedCandidatesEtaSign=(eta1*eta2)/abs(eta1*eta2);ei.VBFMatchedCandidatesDeltaEta=abs(eta1-eta2);} + if(quarkID.at(vbfjets.at(x).getIdx())==5){nmatches++; eta1=vbfjets.at(x).P4().Eta(); } + if(quarkID.at(vbfjets.at(x).getIdx())==6){nmatches++; eta2=vbfjets.at(x).P4().Eta(); } + } + ei.NVBFCandidateswithVBFMatch=nmatches; + if(nmatches==2){ei.VBFMatchedCandidatesEtaSign=(eta1*eta2)/abs(eta1*eta2);ei.VBFMatchedCandidatesDeltaEta=abs(eta1-eta2);} } @@ -1311,7 +1346,7 @@ bool OfflineProducerHelper::select_bbbbjj_jets(NanoAODTree& nat, EventInfo& ei, for (uint ij = 0; ij < *(nat.nJet); ++ij){jets.emplace_back(Jet(ij, &nat));} //----------------------------EVENT SELECTION ALGORITHM STUDY HERE------------------------------------------------ //---Preselect four 'b-jets' (pt, eta, btagging) & 'two vbfjets'(pt,eta,deltaEta) - std::vector bestjets = bjJets_PreselectionCut(nat,ei,jets); + std::vector bestjets = bjJets_PreselectionCut(nat,ei,jets); if(bestjets.size()<4) return false; //Order preselected the four b-jets std::vector presel_jets; @@ -1363,432 +1398,435 @@ bool OfflineProducerHelper::select_bbbbjj_jets(NanoAODTree& nat, EventInfo& ei, //If VBF Signal MC, then fill branches with information for gen-level studies bool is_VBF_sig = any_cast(parameterList_->at("is_VBF_sig")); if(is_VBF_sig) AddVBFGenMatchVariables(nat, ei); - } - else - { + } + else + { AddGGFCategoryVariables(nat,ei,ordered_jets); ei.VBFEvent = 0 ; - } + } - return true; + return true; } float OfflineProducerHelper::MindRToAJet(const GenPart quark,const std::vector jets) { -float dR=999999,dRmin=0; -for (uint x=0; x < jets.size(); x++ ) -{ + float dR=999999,dRmin=0; + for (uint x=0; x < jets.size(); x++ ) + { dRmin = jets.at(x).P4().DeltaR(quark.P4()); if(dRmin < dR){dR=dRmin;} -} + } -return dR; + return dR; } float OfflineProducerHelper::MindRToAGenJet(const GenPart quark,const std::vector jets) { -float dR=999999,dRmin=0; -for (uint x=0; x < jets.size(); x++ ) -{ + float dR=999999,dRmin=0; + for (uint x=0; x < jets.size(); x++ ) + { dRmin = jets.at(x).P4().DeltaR(quark.P4()); if(dRmin < dR){dR=dRmin;} -} + } -return dR; + return dR; } float OfflineProducerHelper::GenJetToPartonPt(const GenPart quark,const std::vector jets) { -float dR=999999,dRmin=0,ptratio=0; -for (uint x=0; x < jets.size(); x++ ) -{ - dRmin = jets.at(x).P4().DeltaR(quark.P4()); - if(dRmin < dR){dR=dRmin; ptratio = jets.at(x).P4().Pt() / quark.P4().Pt();} -} + float dR=999999,dRmin=0,ptratio=0; + for (uint x=0; x < jets.size(); x++ ) + { + dRmin = jets.at(x).P4().DeltaR(quark.P4()); + if(dRmin < dR) + { + dR=dRmin; + ptratio = jets.at(x).P4().Pt() / quark.P4().Pt(); + } + } -return ptratio; + return ptratio; } void OfflineProducerHelper::AddVBFGenMatchVariables(NanoAODTree& nat, EventInfo& ei) { -std::vector jets; -std::vector quarkID; -jets.reserve(*(nat.nJet)); -for (uint ij = 0; ij < *(nat.nJet); ++ij){ - jets.emplace_back(Jet(ij, &nat)); -} -quarkID = AddGenMatchingInfo(nat,ei,jets); -ei.gen_H1_b1_mindRjet = MindRToAJet(ei.gen_H1_b1.get() ,jets); -ei.gen_H1_b2_mindRjet = MindRToAJet(ei.gen_H1_b2.get() ,jets); -ei.gen_H2_b1_mindRjet = MindRToAJet(ei.gen_H2_b1.get() ,jets); -ei.gen_H2_b2_mindRjet = MindRToAJet(ei.gen_H2_b2.get() ,jets); -ei.gen_q1_out_mindRjet = MindRToAJet(ei.gen_q1_out.get(),jets); -ei.gen_q2_out_mindRjet = MindRToAJet(ei.gen_q2_out.get(),jets); -ei.VBFGeneratedEtaSign = (ei.gen_q1_out.get().P4().Eta()*ei.gen_q2_out.get().P4().Eta() )/ abs(ei.gen_q1_out.get().P4().Eta()*ei.gen_q2_out.get().P4().Eta()); -ei.VBFGeneratedDeltaEta= abs( ei.gen_q1_out.get().P4().Eta()-ei.gen_q2_out.get().P4().Eta() ); -//GenJet variables -std::vector genjets; -genjets.reserve(*(nat.nGenJet)); -for (uint ij = 0; ij < *(nat.nGenJet); ++ij){ - genjets.emplace_back(GenJet(ij, &nat)); -} -ei.gen_H1_b1_mindRgenjet = MindRToAGenJet(ei.gen_H1_b1.get() ,genjets); -ei.gen_H1_b2_mindRgenjet = MindRToAGenJet(ei.gen_H1_b2.get() ,genjets); -ei.gen_H2_b1_mindRgenjet = MindRToAGenJet(ei.gen_H2_b1.get() ,genjets); -ei.gen_H2_b2_mindRgenjet = MindRToAGenJet(ei.gen_H2_b2.get() ,genjets); -ei.gen_q1_out_mindRgenjet = MindRToAGenJet(ei.gen_q1_out.get(),genjets); -ei.gen_q2_out_mindRgenjet = MindRToAGenJet(ei.gen_q2_out.get(),genjets); -ei.gen_H1_b1_ptratio = GenJetToPartonPt(ei.gen_H1_b1.get() ,genjets); -ei.gen_H1_b2_ptratio = GenJetToPartonPt(ei.gen_H1_b2.get() ,genjets); -ei.gen_H2_b1_ptratio = GenJetToPartonPt(ei.gen_H2_b1.get() ,genjets); -ei.gen_H2_b2_ptratio = GenJetToPartonPt(ei.gen_H2_b2.get() ,genjets); -ei.gen_q1_out_ptratio = GenJetToPartonPt(ei.gen_q1_out.get(),genjets); -ei.gen_q2_out_ptratio = GenJetToPartonPt(ei.gen_q2_out.get(),genjets); -ei.gen_H1_b1_pz = ei.gen_H1_b1.get().P4().Pz(); -ei.gen_H1_b2_pz = ei.gen_H1_b2.get().P4().Pz(); -ei.gen_H2_b1_pz = ei.gen_H2_b1.get().P4().Pz(); -ei.gen_H2_b2_pz = ei.gen_H2_b2.get().P4().Pz(); -ei.gen_q1_out_pz = ei.gen_q1_out.get().P4().Pz(); -ei.gen_q2_out_pz = ei.gen_q2_out.get().P4().Pz(); -//Fill quarkID flag -ei.H1_b1_quarkID = quarkID.at(ei.H1_b1.get().getIdx()); -ei.H1_b2_quarkID = quarkID.at(ei.H1_b2.get().getIdx()); -ei.H2_b1_quarkID = quarkID.at(ei.H2_b1.get().getIdx()); -ei.H2_b2_quarkID = quarkID.at(ei.H2_b2.get().getIdx()); -ei.JJ_j1_quarkID = quarkID.at(ei.JJ_j1.get().getIdx()); -ei.JJ_j2_quarkID = quarkID.at(ei.JJ_j2.get().getIdx()); -//Fill genJetIdx flag -ei.H1_b1_genJetIdx = get_property(ei.H1_b1.get(),Jet_genJetIdx); -ei.H1_b2_genJetIdx = get_property(ei.H1_b2.get(),Jet_genJetIdx); -ei.H2_b1_genJetIdx = get_property(ei.H2_b1.get(),Jet_genJetIdx); -ei.H2_b2_genJetIdx = get_property(ei.H2_b2.get(),Jet_genJetIdx); -ei.JJ_j1_genJetIdx = get_property(ei.JJ_j1.get(),Jet_genJetIdx); -ei.JJ_j2_genJetIdx = get_property(ei.JJ_j2.get(),Jet_genJetIdx); -//Fill partonFlavour flag -ei.H1_b1_partonFlavour = get_property(ei.H1_b1.get(),Jet_partonFlavour); -ei.H1_b2_partonFlavour = get_property(ei.H1_b2.get(),Jet_partonFlavour); -ei.H2_b1_partonFlavour = get_property(ei.H2_b1.get(),Jet_partonFlavour); -ei.H2_b2_partonFlavour = get_property(ei.H2_b2.get(),Jet_partonFlavour); -ei.JJ_j1_partonFlavour = get_property(ei.JJ_j1.get(),Jet_partonFlavour); -ei.JJ_j2_partonFlavour = get_property(ei.JJ_j2.get(),Jet_partonFlavour); -//Fill hadronFlavour flag -ei.H1_b1_hadronFlavour = get_property(ei.H1_b1.get(),Jet_hadronFlavour); -ei.H1_b2_hadronFlavour = get_property(ei.H1_b2.get(),Jet_hadronFlavour); -ei.H2_b1_hadronFlavour = get_property(ei.H2_b1.get(),Jet_hadronFlavour); -ei.H2_b2_hadronFlavour = get_property(ei.H2_b2.get(),Jet_hadronFlavour); -ei.JJ_j1_hadronFlavour = get_property(ei.JJ_j1.get(),Jet_hadronFlavour); -ei.JJ_j2_hadronFlavour = get_property(ei.JJ_j2.get(),Jet_hadronFlavour); -//Fill branches with selected b-jets ordered by pt and also their quarkID flag -std::vector presel_bjets={{*(ei.H1_b1),*(ei.H1_b2),*(ei.H2_b1),*(ei.H2_b2)}}; -stable_sort(presel_bjets.begin(), presel_bjets.end(), [](const Jet & a, const Jet & b) -> bool -{return ( get_property(a, Jet_pt) > get_property(b, Jet_pt) );}); -ei.HH_b1_quarkID = quarkID.at(presel_bjets.at(0).getIdx()); -ei.HH_b2_quarkID = quarkID.at(presel_bjets.at(1).getIdx()); -ei.HH_b3_quarkID = quarkID.at(presel_bjets.at(2).getIdx()); -ei.HH_b4_quarkID = quarkID.at(presel_bjets.at(3).getIdx()); -ei.HH_b1_genJetIdx = get_property(ei.HH_b1.get(),Jet_genJetIdx); -ei.HH_b2_genJetIdx = get_property(ei.HH_b2.get(),Jet_genJetIdx); -ei.HH_b3_genJetIdx = get_property(ei.HH_b3.get(),Jet_genJetIdx); -ei.HH_b4_genJetIdx = get_property(ei.HH_b4.get(),Jet_genJetIdx); -ei.HH_b1_partonFlavour = get_property(ei.HH_b1.get(),Jet_partonFlavour); -ei.HH_b2_partonFlavour = get_property(ei.HH_b2.get(),Jet_partonFlavour); -ei.HH_b3_partonFlavour = get_property(ei.HH_b3.get(),Jet_partonFlavour); -ei.HH_b4_partonFlavour = get_property(ei.HH_b4.get(),Jet_partonFlavour); -ei.HH_b1_hadronFlavour = get_property(ei.HH_b1.get(),Jet_hadronFlavour); -ei.HH_b2_hadronFlavour = get_property(ei.HH_b2.get(),Jet_hadronFlavour); -ei.HH_b3_hadronFlavour = get_property(ei.HH_b3.get(),Jet_hadronFlavour); -ei.HH_b4_hadronFlavour = get_property(ei.HH_b4.get(),Jet_hadronFlavour); -//Fill number of jets with a match at gen level in the event -int Nmatches=0,Nq1=0,Nq2=0,Nh1b1=0,Nh1b2=0,Nh2b1=0,Nh2b2=0; -for (uint x=0;x < quarkID.size();x++ ) -{ - if(quarkID.at(x)>0) Nmatches++; - if(quarkID.at(x)==1) Nh1b1++; - if(quarkID.at(x)==2) Nh1b2++; - if(quarkID.at(x)==3) Nh2b1++; - if(quarkID.at(x)==4) Nh2b2++; - if(quarkID.at(x)==5) Nq1++; - if(quarkID.at(x)==6) Nq2++; -} -ei.NPartonsMatchedToJets = Nmatches; -ei.gen_H1_b1_matched = Nh1b1; -ei.gen_H1_b2_matched = Nh1b2; -ei.gen_H2_b1_matched = Nh2b1; -ei.gen_H2_b2_matched = Nh2b2; -ei.gen_q1_out_matched = Nq1; -ei.gen_q2_out_matched = Nq2; -//Fill the flavor of the quark -ei.gen_H1_b1_pdgId = get_property(ei.gen_H1_b1.get(), GenPart_pdgId); -ei.gen_H1_b2_pdgId = get_property(ei.gen_H1_b2.get(), GenPart_pdgId); -ei.gen_H2_b1_pdgId = get_property(ei.gen_H2_b1.get(), GenPart_pdgId); -ei.gen_H2_b2_pdgId = get_property(ei.gen_H2_b2.get(), GenPart_pdgId); -ei.gen_q1_out_pdgId = get_property(ei.gen_q1_out.get(), GenPart_pdgId); -ei.gen_q2_out_pdgId = get_property(ei.gen_q2_out.get(), GenPart_pdgId); -//Fill gen-level information -int h1_flag,h1_wpflag,h1_ukflag,h2_flag,h2_wpflag,h2_ukflag,hh_flag,hh_1wflag,hh_2wflag,hh_3wflag,hh_4wflag,jj_flag,jj_1wflag,jj_2wflag, hhjj_flag; -int h1b1 = quarkID.at(ei.H1_b1.get().getIdx()); -int h1b2 = quarkID.at(ei.H1_b2.get().getIdx()); -int h2b1 = quarkID.at(ei.H2_b1.get().getIdx()); -int h2b2 = quarkID.at(ei.H2_b2.get().getIdx()); -int jjj1 = quarkID.at(ei.JJ_j1.get().getIdx()); -int jjj2 = quarkID.at(ei.JJ_j2.get().getIdx()); -int h1bs=0; int h2bs=0; int js=0; -if(h1b1>0 && h1b1<5){h1bs++;} if(h2b1>0 && h2b1<5){h2bs++;} -if(h1b2>0 && h1b2<5){h1bs++;} if(h2b2>0 && h2b2<5){h2bs++;} -if(jjj1>4){js++;} if(jjj2>4){js++;} -//Check if H1 originates from a Higgs boson -if( (h1b1==1 && h1b2==2) || (h1b1==2 && h1b2==1) || (h1b1==3 && h1b2==4) || (h1b1==4 && h1b2==3)){h1_flag=1;h1_ukflag=0;h1_wpflag=0;} -else -{ - h1_flag=0; - if(h1bs==2){h1_wpflag=1;h1_ukflag=0;} - else{h1_wpflag=0;h1_ukflag=1;} -} -//Check if H2 originates from a Higgs boson -if( (h2b1==1 && h2b2==2) || (h2b1==2 && h2b2==1) || (h2b1==3 && h2b2==4) || (h2b1==4 && h2b2==3)){h2_flag=1;h2_ukflag=0;h2_wpflag=0;} -else -{ - h2_flag=0; - if(h2bs==2){h2_wpflag=1;h2_ukflag=0;} - else{h2_wpflag=0;h2_ukflag=1;} -} -//Check if VBF-jets originate from VBF-partons -if(js==2){jj_flag=1; jj_1wflag=0;jj_2wflag=0;} -else -{ - jj_flag=0; - if(js==1){jj_1wflag=1;jj_2wflag=0;} - if(js==0){jj_1wflag=0;jj_2wflag=1;} -} -//Check if HH originate from both Higgs bosons -//if( h1_flag==1 && h2_flag==1){hh_flag=1;} -if( (h1bs + h2bs) == 4){hh_flag=1;hh_1wflag=0;hh_2wflag=0;hh_3wflag=0;hh_4wflag=0;} -else -{ - hh_flag=0; - if((h1bs + h2bs) == 3){hh_1wflag=1;hh_2wflag=0;hh_3wflag=0;hh_4wflag=0;} - if((h1bs + h2bs) == 2){hh_1wflag=0;hh_2wflag=1;hh_3wflag=0;hh_4wflag=0;} - if((h1bs + h2bs) == 1){hh_1wflag=0;hh_2wflag=0;hh_3wflag=1;hh_4wflag=0;} - if((h1bs + h2bs) == 0){hh_1wflag=0;hh_2wflag=0;hh_3wflag=0;hh_4wflag=1;} -} -//Check if HH and JJ originate from the partons -if(hh_flag==1 && jj_flag==1){hhjj_flag=1;} -else{hhjj_flag=0;} - -//Fill how good (quality) H1,H2, JJ ad HH are selected -ei.H1_quality = h1_flag; -ei.H2_quality = h2_flag; -ei.H1_wpflag = h1_wpflag; -ei.H2_wpflag = h2_wpflag; -ei.H1_ukflag = h1_ukflag; -ei.H2_ukflag = h2_ukflag; -ei.HH_quality = hh_flag; -ei.HH_1wflag = hh_1wflag; -ei.HH_2wflag = hh_2wflag; -ei.HH_3wflag = hh_3wflag; -ei.HH_4wflag = hh_4wflag; -ei.JJ_quality = jj_flag; -ei.JJ_1wflag = jj_1wflag; -ei.JJ_2wflag = jj_2wflag; -ei.HHJJ_quality = hhjj_flag; + std::vector jets; + std::vector quarkID; + jets.reserve(*(nat.nJet)); + for (uint ij = 0; ij < *(nat.nJet); ++ij){ + jets.emplace_back(Jet(ij, &nat)); + } + quarkID = AddGenMatchingInfo(nat,ei,jets); + ei.gen_H1_b1_mindRjet = MindRToAJet(ei.gen_H1_b1.get() ,jets); + ei.gen_H1_b2_mindRjet = MindRToAJet(ei.gen_H1_b2.get() ,jets); + ei.gen_H2_b1_mindRjet = MindRToAJet(ei.gen_H2_b1.get() ,jets); + ei.gen_H2_b2_mindRjet = MindRToAJet(ei.gen_H2_b2.get() ,jets); + ei.gen_q1_out_mindRjet = MindRToAJet(ei.gen_q1_out.get(),jets); + ei.gen_q2_out_mindRjet = MindRToAJet(ei.gen_q2_out.get(),jets); + ei.VBFGeneratedEtaSign = (ei.gen_q1_out.get().P4().Eta()*ei.gen_q2_out.get().P4().Eta() )/ abs(ei.gen_q1_out.get().P4().Eta()*ei.gen_q2_out.get().P4().Eta()); + ei.VBFGeneratedDeltaEta= abs( ei.gen_q1_out.get().P4().Eta()-ei.gen_q2_out.get().P4().Eta() ); + //GenJet variables + std::vector genjets; + genjets.reserve(*(nat.nGenJet)); + for (uint ij = 0; ij < *(nat.nGenJet); ++ij){ + genjets.emplace_back(GenJet(ij, &nat)); + } + ei.gen_H1_b1_mindRgenjet = MindRToAGenJet(ei.gen_H1_b1.get() ,genjets); + ei.gen_H1_b2_mindRgenjet = MindRToAGenJet(ei.gen_H1_b2.get() ,genjets); + ei.gen_H2_b1_mindRgenjet = MindRToAGenJet(ei.gen_H2_b1.get() ,genjets); + ei.gen_H2_b2_mindRgenjet = MindRToAGenJet(ei.gen_H2_b2.get() ,genjets); + ei.gen_q1_out_mindRgenjet = MindRToAGenJet(ei.gen_q1_out.get(),genjets); + ei.gen_q2_out_mindRgenjet = MindRToAGenJet(ei.gen_q2_out.get(),genjets); + ei.gen_H1_b1_ptratio = GenJetToPartonPt(ei.gen_H1_b1.get() ,genjets); + ei.gen_H1_b2_ptratio = GenJetToPartonPt(ei.gen_H1_b2.get() ,genjets); + ei.gen_H2_b1_ptratio = GenJetToPartonPt(ei.gen_H2_b1.get() ,genjets); + ei.gen_H2_b2_ptratio = GenJetToPartonPt(ei.gen_H2_b2.get() ,genjets); + ei.gen_q1_out_ptratio = GenJetToPartonPt(ei.gen_q1_out.get(),genjets); + ei.gen_q2_out_ptratio = GenJetToPartonPt(ei.gen_q2_out.get(),genjets); + ei.gen_H1_b1_pz = ei.gen_H1_b1.get().P4().Pz(); + ei.gen_H1_b2_pz = ei.gen_H1_b2.get().P4().Pz(); + ei.gen_H2_b1_pz = ei.gen_H2_b1.get().P4().Pz(); + ei.gen_H2_b2_pz = ei.gen_H2_b2.get().P4().Pz(); + ei.gen_q1_out_pz = ei.gen_q1_out.get().P4().Pz(); + ei.gen_q2_out_pz = ei.gen_q2_out.get().P4().Pz(); + //Fill quarkID flag + ei.H1_b1_quarkID = quarkID.at(ei.H1_b1.get().getIdx()); + ei.H1_b2_quarkID = quarkID.at(ei.H1_b2.get().getIdx()); + ei.H2_b1_quarkID = quarkID.at(ei.H2_b1.get().getIdx()); + ei.H2_b2_quarkID = quarkID.at(ei.H2_b2.get().getIdx()); + ei.JJ_j1_quarkID = quarkID.at(ei.JJ_j1.get().getIdx()); + ei.JJ_j2_quarkID = quarkID.at(ei.JJ_j2.get().getIdx()); + //Fill genJetIdx flag + ei.H1_b1_genJetIdx = get_property(ei.H1_b1.get(),Jet_genJetIdx); + ei.H1_b2_genJetIdx = get_property(ei.H1_b2.get(),Jet_genJetIdx); + ei.H2_b1_genJetIdx = get_property(ei.H2_b1.get(),Jet_genJetIdx); + ei.H2_b2_genJetIdx = get_property(ei.H2_b2.get(),Jet_genJetIdx); + ei.JJ_j1_genJetIdx = get_property(ei.JJ_j1.get(),Jet_genJetIdx); + ei.JJ_j2_genJetIdx = get_property(ei.JJ_j2.get(),Jet_genJetIdx); + //Fill partonFlavour flag + ei.H1_b1_partonFlavour = get_property(ei.H1_b1.get(),Jet_partonFlavour); + ei.H1_b2_partonFlavour = get_property(ei.H1_b2.get(),Jet_partonFlavour); + ei.H2_b1_partonFlavour = get_property(ei.H2_b1.get(),Jet_partonFlavour); + ei.H2_b2_partonFlavour = get_property(ei.H2_b2.get(),Jet_partonFlavour); + ei.JJ_j1_partonFlavour = get_property(ei.JJ_j1.get(),Jet_partonFlavour); + ei.JJ_j2_partonFlavour = get_property(ei.JJ_j2.get(),Jet_partonFlavour); + //Fill hadronFlavour flag + ei.H1_b1_hadronFlavour = get_property(ei.H1_b1.get(),Jet_hadronFlavour); + ei.H1_b2_hadronFlavour = get_property(ei.H1_b2.get(),Jet_hadronFlavour); + ei.H2_b1_hadronFlavour = get_property(ei.H2_b1.get(),Jet_hadronFlavour); + ei.H2_b2_hadronFlavour = get_property(ei.H2_b2.get(),Jet_hadronFlavour); + ei.JJ_j1_hadronFlavour = get_property(ei.JJ_j1.get(),Jet_hadronFlavour); + ei.JJ_j2_hadronFlavour = get_property(ei.JJ_j2.get(),Jet_hadronFlavour); + //Fill branches with selected b-jets ordered by pt and also their quarkID flag + std::vector presel_bjets={{*(ei.H1_b1),*(ei.H1_b2),*(ei.H2_b1),*(ei.H2_b2)}}; + stable_sort(presel_bjets.begin(), presel_bjets.end(), [](const Jet & a, const Jet & b) -> bool + {return ( get_property(a, Jet_pt) > get_property(b, Jet_pt) );}); + ei.HH_b1_quarkID = quarkID.at(presel_bjets.at(0).getIdx()); + ei.HH_b2_quarkID = quarkID.at(presel_bjets.at(1).getIdx()); + ei.HH_b3_quarkID = quarkID.at(presel_bjets.at(2).getIdx()); + ei.HH_b4_quarkID = quarkID.at(presel_bjets.at(3).getIdx()); + ei.HH_b1_genJetIdx = get_property(ei.HH_b1.get(),Jet_genJetIdx); + ei.HH_b2_genJetIdx = get_property(ei.HH_b2.get(),Jet_genJetIdx); + ei.HH_b3_genJetIdx = get_property(ei.HH_b3.get(),Jet_genJetIdx); + ei.HH_b4_genJetIdx = get_property(ei.HH_b4.get(),Jet_genJetIdx); + ei.HH_b1_partonFlavour = get_property(ei.HH_b1.get(),Jet_partonFlavour); + ei.HH_b2_partonFlavour = get_property(ei.HH_b2.get(),Jet_partonFlavour); + ei.HH_b3_partonFlavour = get_property(ei.HH_b3.get(),Jet_partonFlavour); + ei.HH_b4_partonFlavour = get_property(ei.HH_b4.get(),Jet_partonFlavour); + ei.HH_b1_hadronFlavour = get_property(ei.HH_b1.get(),Jet_hadronFlavour); + ei.HH_b2_hadronFlavour = get_property(ei.HH_b2.get(),Jet_hadronFlavour); + ei.HH_b3_hadronFlavour = get_property(ei.HH_b3.get(),Jet_hadronFlavour); + ei.HH_b4_hadronFlavour = get_property(ei.HH_b4.get(),Jet_hadronFlavour); + //Fill number of jets with a match at gen level in the event + int Nmatches=0,Nq1=0,Nq2=0,Nh1b1=0,Nh1b2=0,Nh2b1=0,Nh2b2=0; + for (uint x=0;x < quarkID.size();x++ ) + { + if(quarkID.at(x)>0) Nmatches++; + if(quarkID.at(x)==1) Nh1b1++; + if(quarkID.at(x)==2) Nh1b2++; + if(quarkID.at(x)==3) Nh2b1++; + if(quarkID.at(x)==4) Nh2b2++; + if(quarkID.at(x)==5) Nq1++; + if(quarkID.at(x)==6) Nq2++; + } + ei.NPartonsMatchedToJets = Nmatches; + ei.gen_H1_b1_matched = Nh1b1; + ei.gen_H1_b2_matched = Nh1b2; + ei.gen_H2_b1_matched = Nh2b1; + ei.gen_H2_b2_matched = Nh2b2; + ei.gen_q1_out_matched = Nq1; + ei.gen_q2_out_matched = Nq2; + //Fill the flavor of the quark + ei.gen_H1_b1_pdgId = get_property(ei.gen_H1_b1.get(), GenPart_pdgId); + ei.gen_H1_b2_pdgId = get_property(ei.gen_H1_b2.get(), GenPart_pdgId); + ei.gen_H2_b1_pdgId = get_property(ei.gen_H2_b1.get(), GenPart_pdgId); + ei.gen_H2_b2_pdgId = get_property(ei.gen_H2_b2.get(), GenPart_pdgId); + ei.gen_q1_out_pdgId = get_property(ei.gen_q1_out.get(), GenPart_pdgId); + ei.gen_q2_out_pdgId = get_property(ei.gen_q2_out.get(), GenPart_pdgId); + //Fill gen-level information + int h1_flag,h1_wpflag,h1_ukflag,h2_flag,h2_wpflag,h2_ukflag,hh_flag,hh_1wflag,hh_2wflag,hh_3wflag,hh_4wflag,jj_flag,jj_1wflag,jj_2wflag, hhjj_flag; + int h1b1 = quarkID.at(ei.H1_b1.get().getIdx()); + int h1b2 = quarkID.at(ei.H1_b2.get().getIdx()); + int h2b1 = quarkID.at(ei.H2_b1.get().getIdx()); + int h2b2 = quarkID.at(ei.H2_b2.get().getIdx()); + int jjj1 = quarkID.at(ei.JJ_j1.get().getIdx()); + int jjj2 = quarkID.at(ei.JJ_j2.get().getIdx()); + int h1bs=0; int h2bs=0; int js=0; + if(h1b1>0 && h1b1<5){h1bs++;} if(h2b1>0 && h2b1<5){h2bs++;} + if(h1b2>0 && h1b2<5){h1bs++;} if(h2b2>0 && h2b2<5){h2bs++;} + if(jjj1>4){js++;} if(jjj2>4){js++;} + //Check if H1 originates from a Higgs boson + if( (h1b1==1 && h1b2==2) || (h1b1==2 && h1b2==1) || (h1b1==3 && h1b2==4) || (h1b1==4 && h1b2==3)){h1_flag=1;h1_ukflag=0;h1_wpflag=0;} + else + { + h1_flag=0; + if(h1bs==2){h1_wpflag=1;h1_ukflag=0;} + else{h1_wpflag=0;h1_ukflag=1;} + } + //Check if H2 originates from a Higgs boson + if( (h2b1==1 && h2b2==2) || (h2b1==2 && h2b2==1) || (h2b1==3 && h2b2==4) || (h2b1==4 && h2b2==3)){h2_flag=1;h2_ukflag=0;h2_wpflag=0;} + else + { + h2_flag=0; + if(h2bs==2){h2_wpflag=1;h2_ukflag=0;} + else{h2_wpflag=0;h2_ukflag=1;} + } + //Check if VBF-jets originate from VBF-partons + if(js==2){jj_flag=1; jj_1wflag=0;jj_2wflag=0;} + else + { + jj_flag=0; + if(js==1){jj_1wflag=1;jj_2wflag=0;} + if(js==0){jj_1wflag=0;jj_2wflag=1;} + } + //Check if HH originate from both Higgs bosons + //if( h1_flag==1 && h2_flag==1){hh_flag=1;} + if( (h1bs + h2bs) == 4){hh_flag=1;hh_1wflag=0;hh_2wflag=0;hh_3wflag=0;hh_4wflag=0;} + else + { + hh_flag=0; + if((h1bs + h2bs) == 3){hh_1wflag=1;hh_2wflag=0;hh_3wflag=0;hh_4wflag=0;} + if((h1bs + h2bs) == 2){hh_1wflag=0;hh_2wflag=1;hh_3wflag=0;hh_4wflag=0;} + if((h1bs + h2bs) == 1){hh_1wflag=0;hh_2wflag=0;hh_3wflag=1;hh_4wflag=0;} + if((h1bs + h2bs) == 0){hh_1wflag=0;hh_2wflag=0;hh_3wflag=0;hh_4wflag=1;} + } + //Check if HH and JJ originate from the partons + if(hh_flag==1 && jj_flag==1){hhjj_flag=1;} + else{hhjj_flag=0;} + + //Fill how good (quality) H1,H2, JJ ad HH are selected + ei.H1_quality = h1_flag; + ei.H2_quality = h2_flag; + ei.H1_wpflag = h1_wpflag; + ei.H2_wpflag = h2_wpflag; + ei.H1_ukflag = h1_ukflag; + ei.H2_ukflag = h2_ukflag; + ei.HH_quality = hh_flag; + ei.HH_1wflag = hh_1wflag; + ei.HH_2wflag = hh_2wflag; + ei.HH_3wflag = hh_3wflag; + ei.HH_4wflag = hh_4wflag; + ei.JJ_quality = jj_flag; + ei.JJ_1wflag = jj_1wflag; + ei.JJ_2wflag = jj_2wflag; + ei.HHJJ_quality = hhjj_flag; -return; + return; } void OfflineProducerHelper::AddGGFCategoryVariables(NanoAODTree& nat, EventInfo& ei,std::vector ordered_jets){ //Fill branches with selected b-jets ordered by pt - std::vector presel_bjets; - uint m=0; while(m<4){presel_bjets.push_back(ordered_jets.at(m)); m++;} - stable_sort(presel_bjets.begin(), presel_bjets.end(), [](const Jet & a, const Jet & b) -> bool + std::vector presel_bjets; + uint m=0; while(m<4){presel_bjets.push_back(ordered_jets.at(m)); m++;} + stable_sort(presel_bjets.begin(), presel_bjets.end(), [](const Jet & a, const Jet & b) -> bool {return ( get_property(a, Jet_pt) > get_property(b, Jet_pt) );}); - ei.HH_b1 = presel_bjets.at(0); - ei.HH_b2 = presel_bjets.at(1); - ei.HH_b3 = presel_bjets.at(2); - ei.HH_b4 = presel_bjets.at(3); + ei.HH_b1 = presel_bjets.at(0); + ei.HH_b2 = presel_bjets.at(1); + ei.HH_b3 = presel_bjets.at(2); + ei.HH_b4 = presel_bjets.at(3); //Mass cut variables with a random swap to be sure that the m1 and m2 are simmetric when selecting the signal region - bool swapped = (int(ei.H1->P4().Pt()*100.) % 2 == 1); - if (!swapped){ei.H1rand = ei.H1.get();ei.H2rand = ei.H2.get();} - else{ei.H1rand = ei.H2.get();ei.H2rand = ei.H1.get();} + bool swapped = (int(ei.H1->P4().Pt()*100.) % 2 == 1); + if (!swapped){ei.H1rand = ei.H1.get();ei.H2rand = ei.H2.get();} + else{ei.H1rand = ei.H2.get();ei.H2rand = ei.H1.get();} //dR,dPhi and dEta between pair b's - ei.H1_bb_deltaR = ei.H1_b1->P4().DeltaR(ei.H1_b2->P4()); - ei.H1_bb_deltaPhi = ei.H1_b1->P4().DeltaPhi(ei.H1_b2->P4()); - ei.H1_bb_deltaEta = abs(ei.H1_b1->P4().Eta() - ei.H1_b2->P4().Eta() ); - ei.H2_bb_deltaR = ei.H2_b1->P4().DeltaR(ei.H2_b2->P4()); - ei.H2_bb_deltaPhi = ei.H2_b1->P4().DeltaPhi(ei.H2_b2->P4()); - ei.H2_bb_deltaEta = abs(ei.H2_b1->P4().Eta() - ei.H2_b2->P4().Eta() ); + ei.H1_bb_deltaR = ei.H1_b1->P4().DeltaR(ei.H1_b2->P4()); + ei.H1_bb_deltaPhi = ei.H1_b1->P4().DeltaPhi(ei.H1_b2->P4()); + ei.H1_bb_deltaEta = abs(ei.H1_b1->P4().Eta() - ei.H1_b2->P4().Eta() ); + ei.H2_bb_deltaR = ei.H2_b1->P4().DeltaR(ei.H2_b2->P4()); + ei.H2_bb_deltaPhi = ei.H2_b1->P4().DeltaPhi(ei.H2_b2->P4()); + ei.H2_bb_deltaEta = abs(ei.H2_b1->P4().Eta() - ei.H2_b2->P4().Eta() ); } void OfflineProducerHelper::AddVBFCategoryVariables(NanoAODTree& nat, EventInfo& ei,std::vector ordered_jets) { //Fill branches with selected b-jets ordered by pt - std::vector presel_bjets; - uint m=0; while(m<4){presel_bjets.push_back(ordered_jets.at(m)); m++;} - stable_sort(presel_bjets.begin(), presel_bjets.end(), [](const Jet & a, const Jet & b) -> bool + std::vector presel_bjets; + uint m=0; while(m<4){presel_bjets.push_back(ordered_jets.at(m)); m++;} + stable_sort(presel_bjets.begin(), presel_bjets.end(), [](const Jet & a, const Jet & b) -> bool {return ( get_property(a, Jet_pt) > get_property(b, Jet_pt) );}); - ei.HH_b1 = presel_bjets.at(0); - ei.HH_b2 = presel_bjets.at(1); - ei.HH_b3 = presel_bjets.at(2); - ei.HH_b4 = presel_bjets.at(3); + ei.HH_b1 = presel_bjets.at(0); + ei.HH_b2 = presel_bjets.at(1); + ei.HH_b3 = presel_bjets.at(2); + ei.HH_b4 = presel_bjets.at(3); //Mass cut variables with a random swap to be sure that the m1 and m2 are simmetric when selecting the signal region - bool swapped = (int(ei.H1->P4().Pt()*100.) % 2 == 1); - if (!swapped){ei.H1rand = ei.H1.get();ei.H2rand = ei.H2.get();} - else{ei.H1rand = ei.H2.get();ei.H2rand = ei.H1.get();} + bool swapped = (int(ei.H1->P4().Pt()*100.) % 2 == 1); + if (!swapped){ei.H1rand = ei.H1.get();ei.H2rand = ei.H2.get();} + else{ei.H1rand = ei.H2.get();ei.H2rand = ei.H1.get();} //dR,dPhi and dEta between pair b's - ei.H1_bb_deltaR = ei.H1_b1->P4().DeltaR(ei.H1_b2->P4()); - ei.H1_bb_deltaPhi = ei.H1_b1->P4().DeltaPhi(ei.H1_b2->P4()); - ei.H1_bb_deltaEta = abs(ei.H1_b1->P4().Eta() - ei.H1_b2->P4().Eta() ); - ei.H2_bb_deltaR = ei.H2_b1->P4().DeltaR(ei.H2_b2->P4()); - ei.H2_bb_deltaPhi = ei.H2_b1->P4().DeltaPhi(ei.H2_b2->P4()); - ei.H2_bb_deltaEta = abs(ei.H2_b1->P4().Eta() - ei.H2_b2->P4().Eta() ); + ei.H1_bb_deltaR = ei.H1_b1->P4().DeltaR(ei.H1_b2->P4()); + ei.H1_bb_deltaPhi = ei.H1_b1->P4().DeltaPhi(ei.H1_b2->P4()); + ei.H1_bb_deltaEta = abs(ei.H1_b1->P4().Eta() - ei.H1_b2->P4().Eta() ); + ei.H2_bb_deltaR = ei.H2_b1->P4().DeltaR(ei.H2_b2->P4()); + ei.H2_bb_deltaPhi = ei.H2_b1->P4().DeltaPhi(ei.H2_b2->P4()); + ei.H2_bb_deltaEta = abs(ei.H2_b1->P4().Eta() - ei.H2_b2->P4().Eta() ); //Special variables:deltaR between jets - ei.b1b2_deltaR = ei.HH_b1->P4().DeltaR(ei.HH_b2->P4()); - ei.b1b3_deltaR = ei.HH_b1->P4().DeltaR(ei.HH_b3->P4()); - ei.b1b4_deltaR = ei.HH_b1->P4().DeltaR(ei.HH_b4->P4()); - ei.b1j1_deltaR = ei.HH_b1->P4().DeltaR(ei.JJ_j1->P4()); - ei.b1j2_deltaR = ei.HH_b1->P4().DeltaR(ei.JJ_j2->P4()); - ei.b2b3_deltaR = ei.HH_b2->P4().DeltaR(ei.HH_b3->P4()); - ei.b2b4_deltaR = ei.HH_b2->P4().DeltaR(ei.HH_b4->P4()); - ei.b2j1_deltaR = ei.HH_b2->P4().DeltaR(ei.JJ_j1->P4()); - ei.b2j2_deltaR = ei.HH_b2->P4().DeltaR(ei.JJ_j2->P4()); - ei.b3b4_deltaR = ei.HH_b3->P4().DeltaR(ei.HH_b4->P4()); - ei.b3j1_deltaR = ei.HH_b3->P4().DeltaR(ei.JJ_j1->P4()); - ei.b3j2_deltaR = ei.HH_b3->P4().DeltaR(ei.JJ_j2->P4()); - ei.b4j1_deltaR = ei.HH_b4->P4().DeltaR(ei.JJ_j1->P4()); - ei.b4j2_deltaR = ei.HH_b4->P4().DeltaR(ei.JJ_j2->P4()); - ei.j1j2_deltaR = ei.JJ_j1->P4().DeltaR(ei.JJ_j2->P4()); + ei.b1b2_deltaR = ei.HH_b1->P4().DeltaR(ei.HH_b2->P4()); + ei.b1b3_deltaR = ei.HH_b1->P4().DeltaR(ei.HH_b3->P4()); + ei.b1b4_deltaR = ei.HH_b1->P4().DeltaR(ei.HH_b4->P4()); + ei.b1j1_deltaR = ei.HH_b1->P4().DeltaR(ei.JJ_j1->P4()); + ei.b1j2_deltaR = ei.HH_b1->P4().DeltaR(ei.JJ_j2->P4()); + ei.b2b3_deltaR = ei.HH_b2->P4().DeltaR(ei.HH_b3->P4()); + ei.b2b4_deltaR = ei.HH_b2->P4().DeltaR(ei.HH_b4->P4()); + ei.b2j1_deltaR = ei.HH_b2->P4().DeltaR(ei.JJ_j1->P4()); + ei.b2j2_deltaR = ei.HH_b2->P4().DeltaR(ei.JJ_j2->P4()); + ei.b3b4_deltaR = ei.HH_b3->P4().DeltaR(ei.HH_b4->P4()); + ei.b3j1_deltaR = ei.HH_b3->P4().DeltaR(ei.JJ_j1->P4()); + ei.b3j2_deltaR = ei.HH_b3->P4().DeltaR(ei.JJ_j2->P4()); + ei.b4j1_deltaR = ei.HH_b4->P4().DeltaR(ei.JJ_j1->P4()); + ei.b4j2_deltaR = ei.HH_b4->P4().DeltaR(ei.JJ_j2->P4()); + ei.j1j2_deltaR = ei.JJ_j1->P4().DeltaR(ei.JJ_j2->P4()); //Special variables:deltaPhi between jets - ei.b1b2_deltaPhi = ei.HH_b1->P4().DeltaPhi(ei.HH_b2->P4()); - ei.b1b3_deltaPhi = ei.HH_b1->P4().DeltaPhi(ei.HH_b3->P4()); - ei.b1b4_deltaPhi = ei.HH_b1->P4().DeltaPhi(ei.HH_b4->P4()); - ei.b1j1_deltaPhi = ei.HH_b1->P4().DeltaPhi(ei.JJ_j1->P4()); - ei.b1j2_deltaPhi = ei.HH_b1->P4().DeltaPhi(ei.JJ_j2->P4()); - ei.b2b3_deltaPhi = ei.HH_b2->P4().DeltaPhi(ei.HH_b3->P4()); - ei.b2b4_deltaPhi = ei.HH_b2->P4().DeltaPhi(ei.HH_b4->P4()); - ei.b2j1_deltaPhi = ei.HH_b2->P4().DeltaPhi(ei.JJ_j1->P4()); - ei.b2j2_deltaPhi = ei.HH_b2->P4().DeltaPhi(ei.JJ_j2->P4()); - ei.b3b4_deltaPhi = ei.HH_b3->P4().DeltaPhi(ei.HH_b4->P4()); - ei.b3j1_deltaPhi = ei.HH_b3->P4().DeltaPhi(ei.JJ_j1->P4()); - ei.b3j2_deltaPhi = ei.HH_b3->P4().DeltaPhi(ei.JJ_j2->P4()); - ei.b4j1_deltaPhi = ei.HH_b4->P4().DeltaPhi(ei.JJ_j1->P4()); - ei.b4j2_deltaPhi = ei.HH_b4->P4().DeltaPhi(ei.JJ_j2->P4()); - ei.j1j2_deltaPhi = ei.JJ_j1->P4().DeltaPhi(ei.JJ_j2->P4()); + ei.b1b2_deltaPhi = ei.HH_b1->P4().DeltaPhi(ei.HH_b2->P4()); + ei.b1b3_deltaPhi = ei.HH_b1->P4().DeltaPhi(ei.HH_b3->P4()); + ei.b1b4_deltaPhi = ei.HH_b1->P4().DeltaPhi(ei.HH_b4->P4()); + ei.b1j1_deltaPhi = ei.HH_b1->P4().DeltaPhi(ei.JJ_j1->P4()); + ei.b1j2_deltaPhi = ei.HH_b1->P4().DeltaPhi(ei.JJ_j2->P4()); + ei.b2b3_deltaPhi = ei.HH_b2->P4().DeltaPhi(ei.HH_b3->P4()); + ei.b2b4_deltaPhi = ei.HH_b2->P4().DeltaPhi(ei.HH_b4->P4()); + ei.b2j1_deltaPhi = ei.HH_b2->P4().DeltaPhi(ei.JJ_j1->P4()); + ei.b2j2_deltaPhi = ei.HH_b2->P4().DeltaPhi(ei.JJ_j2->P4()); + ei.b3b4_deltaPhi = ei.HH_b3->P4().DeltaPhi(ei.HH_b4->P4()); + ei.b3j1_deltaPhi = ei.HH_b3->P4().DeltaPhi(ei.JJ_j1->P4()); + ei.b3j2_deltaPhi = ei.HH_b3->P4().DeltaPhi(ei.JJ_j2->P4()); + ei.b4j1_deltaPhi = ei.HH_b4->P4().DeltaPhi(ei.JJ_j1->P4()); + ei.b4j2_deltaPhi = ei.HH_b4->P4().DeltaPhi(ei.JJ_j2->P4()); + ei.j1j2_deltaPhi = ei.JJ_j1->P4().DeltaPhi(ei.JJ_j2->P4()); //Special variables:deltaEta between jets - ei.b1b2_deltaEta = abs(ei.HH_b1->P4().Eta() - ei.HH_b2->P4().Eta() ); - ei.b1b3_deltaEta = abs(ei.HH_b1->P4().Eta() - ei.HH_b3->P4().Eta() ); - ei.b1b4_deltaEta = abs(ei.HH_b1->P4().Eta() - ei.HH_b4->P4().Eta() ); - ei.b1j1_deltaEta = abs(ei.HH_b1->P4().Eta() - ei.JJ_j1->P4().Eta() ); - ei.b1j2_deltaEta = abs(ei.HH_b1->P4().Eta() - ei.JJ_j2->P4().Eta() ); - ei.b2b3_deltaEta = abs(ei.HH_b2->P4().Eta() - ei.HH_b3->P4().Eta() ); - ei.b2b4_deltaEta = abs(ei.HH_b2->P4().Eta() - ei.HH_b4->P4().Eta() ); - ei.b2j1_deltaEta = abs(ei.HH_b2->P4().Eta() - ei.JJ_j1->P4().Eta() ); - ei.b2j2_deltaEta = abs(ei.HH_b2->P4().Eta() - ei.JJ_j2->P4().Eta() ); - ei.b3b4_deltaEta = abs(ei.HH_b3->P4().Eta() - ei.HH_b4->P4().Eta() ); - ei.b3j1_deltaEta = abs(ei.HH_b3->P4().Eta() - ei.JJ_j1->P4().Eta() ); - ei.b3j2_deltaEta = abs(ei.HH_b3->P4().Eta() - ei.JJ_j2->P4().Eta() ); - ei.b4j1_deltaEta = abs(ei.HH_b4->P4().Eta() - ei.JJ_j1->P4().Eta() ); - ei.b4j2_deltaEta = abs(ei.HH_b4->P4().Eta() - ei.JJ_j2->P4().Eta() ); - ei.j1j2_deltaEta = abs(ei.JJ_j1->P4().Eta() - ei.JJ_j2->P4().Eta() ); - ei.VBFSelectedDeltaEta = abs(ei.JJ_j1->P4().Eta() - ei.JJ_j2->P4().Eta()) ; - ei.VBFSelectedEtaSign = (ei.JJ_j1->P4().Eta() * ei.JJ_j2->P4().Eta())/ abs( ei.JJ_j1->P4().Eta() * ei.JJ_j2->P4().Eta() ) ; + ei.b1b2_deltaEta = abs(ei.HH_b1->P4().Eta() - ei.HH_b2->P4().Eta() ); + ei.b1b3_deltaEta = abs(ei.HH_b1->P4().Eta() - ei.HH_b3->P4().Eta() ); + ei.b1b4_deltaEta = abs(ei.HH_b1->P4().Eta() - ei.HH_b4->P4().Eta() ); + ei.b1j1_deltaEta = abs(ei.HH_b1->P4().Eta() - ei.JJ_j1->P4().Eta() ); + ei.b1j2_deltaEta = abs(ei.HH_b1->P4().Eta() - ei.JJ_j2->P4().Eta() ); + ei.b2b3_deltaEta = abs(ei.HH_b2->P4().Eta() - ei.HH_b3->P4().Eta() ); + ei.b2b4_deltaEta = abs(ei.HH_b2->P4().Eta() - ei.HH_b4->P4().Eta() ); + ei.b2j1_deltaEta = abs(ei.HH_b2->P4().Eta() - ei.JJ_j1->P4().Eta() ); + ei.b2j2_deltaEta = abs(ei.HH_b2->P4().Eta() - ei.JJ_j2->P4().Eta() ); + ei.b3b4_deltaEta = abs(ei.HH_b3->P4().Eta() - ei.HH_b4->P4().Eta() ); + ei.b3j1_deltaEta = abs(ei.HH_b3->P4().Eta() - ei.JJ_j1->P4().Eta() ); + ei.b3j2_deltaEta = abs(ei.HH_b3->P4().Eta() - ei.JJ_j2->P4().Eta() ); + ei.b4j1_deltaEta = abs(ei.HH_b4->P4().Eta() - ei.JJ_j1->P4().Eta() ); + ei.b4j2_deltaEta = abs(ei.HH_b4->P4().Eta() - ei.JJ_j2->P4().Eta() ); + ei.j1j2_deltaEta = abs(ei.JJ_j1->P4().Eta() - ei.JJ_j2->P4().Eta() ); + ei.VBFSelectedDeltaEta = abs(ei.JJ_j1->P4().Eta() - ei.JJ_j2->P4().Eta()) ; + ei.VBFSelectedEtaSign = (ei.JJ_j1->P4().Eta() * ei.JJ_j2->P4().Eta())/ abs( ei.JJ_j1->P4().Eta() * ei.JJ_j2->P4().Eta() ) ; //Special variables: deltaR between h1,h2,j1,j2,HH,JJ - ei.h1h2_deltaR = ei.H1->P4().DeltaR(ei.H2->P4()); - ei.h1j1_deltaR = ei.H1->P4().DeltaR(ei.JJ_j1->P4()); - ei.h1j2_deltaR = ei.H1->P4().DeltaR(ei.JJ_j2->P4()); - ei.h2j1_deltaR = ei.H2->P4().DeltaR(ei.JJ_j1->P4()); - ei.h2j2_deltaR = ei.H2->P4().DeltaR(ei.JJ_j2->P4()); - ei.h1jj_deltaR = ei.H1->P4().DeltaR(ei.JJ->P4()); - ei.h2jj_deltaR = ei.H2->P4().DeltaR(ei.JJ->P4()); - ei.hhj1_deltaR = ei.HH->P4().DeltaR(ei.JJ_j1->P4()); - ei.hhj2_deltaR = ei.HH->P4().DeltaR(ei.JJ_j2->P4()); - ei.hhjj_deltaR = ei.HH->P4().DeltaR(ei.JJ->P4()); + ei.h1h2_deltaR = ei.H1->P4().DeltaR(ei.H2->P4()); + ei.h1j1_deltaR = ei.H1->P4().DeltaR(ei.JJ_j1->P4()); + ei.h1j2_deltaR = ei.H1->P4().DeltaR(ei.JJ_j2->P4()); + ei.h2j1_deltaR = ei.H2->P4().DeltaR(ei.JJ_j1->P4()); + ei.h2j2_deltaR = ei.H2->P4().DeltaR(ei.JJ_j2->P4()); + ei.h1jj_deltaR = ei.H1->P4().DeltaR(ei.JJ->P4()); + ei.h2jj_deltaR = ei.H2->P4().DeltaR(ei.JJ->P4()); + ei.hhj1_deltaR = ei.HH->P4().DeltaR(ei.JJ_j1->P4()); + ei.hhj2_deltaR = ei.HH->P4().DeltaR(ei.JJ_j2->P4()); + ei.hhjj_deltaR = ei.HH->P4().DeltaR(ei.JJ->P4()); //Special variables: deltaPhi between h1,h2,j1,j2,HH,JJ - ei.h1h2_deltaPhi = ei.H1->P4().DeltaPhi(ei.H2->P4()); - ei.h1j1_deltaPhi = ei.H1->P4().DeltaPhi(ei.JJ_j1->P4()); - ei.h1j2_deltaPhi = ei.H1->P4().DeltaPhi(ei.JJ_j2->P4()); - ei.h2j1_deltaPhi = ei.H2->P4().DeltaPhi(ei.JJ_j1->P4()); - ei.h2j2_deltaPhi = ei.H2->P4().DeltaPhi(ei.JJ_j2->P4()); - ei.h1jj_deltaPhi = ei.H1->P4().DeltaPhi(ei.JJ->P4()); - ei.h2jj_deltaPhi = ei.H2->P4().DeltaPhi(ei.JJ->P4()); - ei.hhj1_deltaPhi = ei.HH->P4().DeltaPhi(ei.JJ_j1->P4()); - ei.hhj2_deltaPhi = ei.HH->P4().DeltaPhi(ei.JJ_j2->P4()); - ei.hhjj_deltaPhi = ei.HH->P4().DeltaPhi(ei.JJ->P4()); + ei.h1h2_deltaPhi = ei.H1->P4().DeltaPhi(ei.H2->P4()); + ei.h1j1_deltaPhi = ei.H1->P4().DeltaPhi(ei.JJ_j1->P4()); + ei.h1j2_deltaPhi = ei.H1->P4().DeltaPhi(ei.JJ_j2->P4()); + ei.h2j1_deltaPhi = ei.H2->P4().DeltaPhi(ei.JJ_j1->P4()); + ei.h2j2_deltaPhi = ei.H2->P4().DeltaPhi(ei.JJ_j2->P4()); + ei.h1jj_deltaPhi = ei.H1->P4().DeltaPhi(ei.JJ->P4()); + ei.h2jj_deltaPhi = ei.H2->P4().DeltaPhi(ei.JJ->P4()); + ei.hhj1_deltaPhi = ei.HH->P4().DeltaPhi(ei.JJ_j1->P4()); + ei.hhj2_deltaPhi = ei.HH->P4().DeltaPhi(ei.JJ_j2->P4()); + ei.hhjj_deltaPhi = ei.HH->P4().DeltaPhi(ei.JJ->P4()); //Special variables: deltaEta between h1,h2,j1,j2,HH,JJ - ei.h1h2_deltaEta = abs( ei.H1->P4().Eta() - ei.H2->P4().Eta()); - ei.h1j1_deltaEta = abs( ei.H1->P4().Eta() - ei.JJ_j1->P4().Eta()); - ei.h1j2_deltaEta = abs( ei.H1->P4().Eta() - ei.JJ_j2->P4().Eta()); - ei.h2j1_deltaEta = abs( ei.H2->P4().Eta() - ei.JJ_j1->P4().Eta()); - ei.h2j2_deltaEta = abs( ei.H2->P4().Eta() - ei.JJ_j2->P4().Eta()); - ei.h1jj_deltaEta = abs( ei.H1->P4().Eta() - ei.JJ->P4().Eta()); - ei.h2jj_deltaEta = abs( ei.H2->P4().Eta() - ei.JJ->P4().Eta()); - ei.hhj1_deltaEta = abs( ei.HH->P4().Eta() - ei.JJ_j1->P4().Eta()); - ei.hhj2_deltaEta = abs( ei.HH->P4().Eta() - ei.JJ_j2->P4().Eta()); - ei.hhjj_deltaEta = abs( ei.HH->P4().Eta() - ei.JJ->P4().Eta()); + ei.h1h2_deltaEta = abs( ei.H1->P4().Eta() - ei.H2->P4().Eta()); + ei.h1j1_deltaEta = abs( ei.H1->P4().Eta() - ei.JJ_j1->P4().Eta()); + ei.h1j2_deltaEta = abs( ei.H1->P4().Eta() - ei.JJ_j2->P4().Eta()); + ei.h2j1_deltaEta = abs( ei.H2->P4().Eta() - ei.JJ_j1->P4().Eta()); + ei.h2j2_deltaEta = abs( ei.H2->P4().Eta() - ei.JJ_j2->P4().Eta()); + ei.h1jj_deltaEta = abs( ei.H1->P4().Eta() - ei.JJ->P4().Eta()); + ei.h2jj_deltaEta = abs( ei.H2->P4().Eta() - ei.JJ->P4().Eta()); + ei.hhj1_deltaEta = abs( ei.HH->P4().Eta() - ei.JJ_j1->P4().Eta()); + ei.hhj2_deltaEta = abs( ei.HH->P4().Eta() - ei.JJ_j2->P4().Eta()); + ei.hhjj_deltaEta = abs( ei.HH->P4().Eta() - ei.JJ->P4().Eta()); //Extra and special variables - ei.j1etaj2eta = ei.JJ_j1->P4().Eta()*ei.JJ_j2->P4().Eta(); - ei.maxj1etaj2eta = max( abs(ei.JJ_j1->P4().Eta() ), abs(ei.JJ_j2->P4().Eta() ) ); - ei.ptbalance = abs((ei.HH->P4() + ei.JJ->P4() ).Pt()) / (ei.HH->P4().Pt() + ei.JJ->P4().Pt()); - float ptcalc = sqrt (pow((ei.HH->P4().Px() - (((ei.JJ_j1->P4()+ei.JJ_j2->P4()).Px())/ 2)),2) + pow((ei.HH->P4().Py() - (((ei.JJ_j1->P4()+ei.JJ_j2->P4()).Py())/ 2)),2)); - if( (ei.JJ_j1->P4()-ei.JJ_j2->P4()).Pt() != 0){ei.ptcentrality = ptcalc / (ei.JJ_j1->P4()-ei.JJ_j2->P4()).Pt();} - else{ei.ptcentrality = -1;} - if(ei.JJ_j1->P4().Eta() != ei.JJ_j2->P4().Eta()){ei.etacentrality = abs( ei.HH->P4().Eta() - ((ei.JJ_j1->P4().Eta()+ei.JJ_j2->P4().Eta())/2)) / abs(ei.JJ_j1->P4().Eta() - ei.JJ_j2->P4().Eta());} - else{ei.etacentrality = -1;} - int nextra=0,nextrabarrel=0,nextraendcap=0; - for (uint ij = 0; ij < *(nat.nJet); ++ij) - { - if ( abs(get_property(Jet(ij, &nat), Jet_pt)) < 25) continue; - if ( abs(get_property(Jet(ij, &nat), Jet_eta)) < 5){nextra++;} - if ( abs(get_property(Jet(ij, &nat), Jet_eta)) < 2.4){nextrabarrel++;} - if ( abs(get_property(Jet(ij, &nat), Jet_eta)) > 2.4 && abs(get_property(Jet(ij, &nat), Jet_eta)) < 5){nextraendcap++;} - } - ei.nExtraJet = nextra; - ei.nExtraJetbarrel = nextrabarrel; - ei.nExtraJetendcap = nextraendcap; - return; + ei.j1etaj2eta = ei.JJ_j1->P4().Eta()*ei.JJ_j2->P4().Eta(); + ei.maxj1etaj2eta = max( abs(ei.JJ_j1->P4().Eta() ), abs(ei.JJ_j2->P4().Eta() ) ); + ei.ptbalance = abs((ei.HH->P4() + ei.JJ->P4() ).Pt()) / (ei.HH->P4().Pt() + ei.JJ->P4().Pt()); + float ptcalc = sqrt (pow((ei.HH->P4().Px() - (((ei.JJ_j1->P4()+ei.JJ_j2->P4()).Px())/ 2)),2) + pow((ei.HH->P4().Py() - (((ei.JJ_j1->P4()+ei.JJ_j2->P4()).Py())/ 2)),2)); + if( (ei.JJ_j1->P4()-ei.JJ_j2->P4()).Pt() != 0){ei.ptcentrality = ptcalc / (ei.JJ_j1->P4()-ei.JJ_j2->P4()).Pt();} + else{ei.ptcentrality = -1;} + if(ei.JJ_j1->P4().Eta() != ei.JJ_j2->P4().Eta()){ei.etacentrality = abs( ei.HH->P4().Eta() - ((ei.JJ_j1->P4().Eta()+ei.JJ_j2->P4().Eta())/2)) / abs(ei.JJ_j1->P4().Eta() - ei.JJ_j2->P4().Eta());} + else{ei.etacentrality = -1;} + int nextra=0,nextrabarrel=0,nextraendcap=0; + for (uint ij = 0; ij < *(nat.nJet); ++ij) + { + if ( abs(get_property(Jet(ij, &nat), Jet_pt)) < 25) continue; + if ( abs(get_property(Jet(ij, &nat), Jet_eta)) < 5){nextra++;} + if ( abs(get_property(Jet(ij, &nat), Jet_eta)) < 2.4){nextrabarrel++;} + if ( abs(get_property(Jet(ij, &nat), Jet_eta)) > 2.4 && abs(get_property(Jet(ij, &nat), Jet_eta)) < 5){nextraendcap++;} +} +ei.nExtraJet = nextra; +ei.nExtraJetbarrel = nextrabarrel; +ei.nExtraJetendcap = nextraendcap; +return; } float OfflineProducerHelper::GetBDTScore(EventInfo& ei){ - TMVA::Reader *reader0 = new TMVA::Reader( "!Color:Silent" ); - float H1_eta_bdt=ei.H1->P4().Eta(); - float H2_eta_bdt=ei.H2->P4().Eta(); - float H1_pt_bdt=ei.H1->P4().Pt(); - float H2_pt_bdt=ei.H2->P4().Pt(); - float JJ_j1_pt_bdt=ei.JJ_j1->P4().Pt(); - float JJ_j2_pt_bdt=ei.JJ_j2->P4().Pt(); - float JJ_j1_qgl_bdt = get_property(ei.JJ_j1.get(), Jet_qgl); - float JJ_j2_qgl_bdt = get_property(ei.JJ_j2.get(), Jet_qgl); - float JJ_eta_bdt =ei.JJ->P4().Eta(); - float h1h2_deltaEta_bdt = ei.h1h2_deltaEta.get(); - float h1j1_deltaR_bdt = ei.h1j1_deltaR.get(); - float h1j2_deltaR_bdt = ei.h1j2_deltaR.get(); - float h2j1_deltaR_bdt = ei.h2j1_deltaR.get(); - float h2j2_deltaR_bdt = ei.h2j2_deltaR.get(); - float j1etaj2eta_bdt = ei.j1etaj2eta.get(); - reader0->AddVariable("H1_eta", &(H1_eta_bdt) ); - reader0->AddVariable("H2_eta", &(H2_eta_bdt) ); - reader0->AddVariable("H1_pt", &(H1_pt_bdt) ); - reader0->AddVariable("H2_pt", &(H2_pt_bdt) ); - reader0->AddVariable("JJ_j1_pt", &(JJ_j1_pt_bdt) ); - reader0->AddVariable("JJ_j1_qgl", &(JJ_j1_qgl_bdt)); - reader0->AddVariable("JJ_j2_pt", &(JJ_j2_pt_bdt) ); - reader0->AddVariable("JJ_j2_qgl", &(JJ_j2_qgl_bdt)); - reader0->AddVariable("JJ_eta", &(JJ_eta_bdt)); - reader0->AddVariable("h1h2_deltaEta", &(h1h2_deltaEta_bdt)); - reader0->AddVariable("h1j1_deltaR", &(h1j1_deltaR_bdt)); - reader0->AddVariable("h1j2_deltaR", &(h1j2_deltaR_bdt)); - reader0->AddVariable("h2j1_deltaR", &(h2j1_deltaR_bdt)); - reader0->AddVariable("h2j2_deltaR", &(h2j2_deltaR_bdt)); - reader0->AddVariable("j1etaj2eta", &(j1etaj2eta_bdt)); - TString method = "BDT method"; - reader0->BookMVA( "BDT method", "weights/TMVAClassification_BDT_GGFKiller.weights.xml"); - float BDT = reader0->EvaluateMVA(method); - delete reader0; - return BDT; + TMVA::Reader *reader0 = new TMVA::Reader( "!Color:Silent" ); + float H1_eta_bdt=ei.H1->P4().Eta(); + float H2_eta_bdt=ei.H2->P4().Eta(); + float H1_pt_bdt=ei.H1->P4().Pt(); + float H2_pt_bdt=ei.H2->P4().Pt(); + float JJ_j1_pt_bdt=ei.JJ_j1->P4().Pt(); + float JJ_j2_pt_bdt=ei.JJ_j2->P4().Pt(); + float JJ_j1_qgl_bdt = get_property(ei.JJ_j1.get(), Jet_qgl); + float JJ_j2_qgl_bdt = get_property(ei.JJ_j2.get(), Jet_qgl); + float JJ_eta_bdt =ei.JJ->P4().Eta(); + float h1h2_deltaEta_bdt = ei.h1h2_deltaEta.get(); + float h1j1_deltaR_bdt = ei.h1j1_deltaR.get(); + float h1j2_deltaR_bdt = ei.h1j2_deltaR.get(); + float h2j1_deltaR_bdt = ei.h2j1_deltaR.get(); + float h2j2_deltaR_bdt = ei.h2j2_deltaR.get(); + float j1etaj2eta_bdt = ei.j1etaj2eta.get(); + reader0->AddVariable("H1_eta", &(H1_eta_bdt) ); + reader0->AddVariable("H2_eta", &(H2_eta_bdt) ); + reader0->AddVariable("H1_pt", &(H1_pt_bdt) ); + reader0->AddVariable("H2_pt", &(H2_pt_bdt) ); + reader0->AddVariable("JJ_j1_pt", &(JJ_j1_pt_bdt) ); + reader0->AddVariable("JJ_j1_qgl", &(JJ_j1_qgl_bdt)); + reader0->AddVariable("JJ_j2_pt", &(JJ_j2_pt_bdt) ); + reader0->AddVariable("JJ_j2_qgl", &(JJ_j2_qgl_bdt)); + reader0->AddVariable("JJ_eta", &(JJ_eta_bdt)); + reader0->AddVariable("h1h2_deltaEta", &(h1h2_deltaEta_bdt)); + reader0->AddVariable("h1j1_deltaR", &(h1j1_deltaR_bdt)); + reader0->AddVariable("h1j2_deltaR", &(h1j2_deltaR_bdt)); + reader0->AddVariable("h2j1_deltaR", &(h2j1_deltaR_bdt)); + reader0->AddVariable("h2j2_deltaR", &(h2j2_deltaR_bdt)); + reader0->AddVariable("j1etaj2eta", &(j1etaj2eta_bdt)); + TString method = "BDT method"; + reader0->BookMVA( "BDT method", "weights/TMVAClassification_BDT_GGFKiller.weights.xml"); + float BDT = reader0->EvaluateMVA(method); + delete reader0; + return BDT; } std::vector OfflineProducerHelper::bjJets_PreselectionCut(NanoAODTree& nat, EventInfo& ei,std::vector jets) - { float bminimumDeepCSVAccepted = any_cast(parameterList_->at("bMinDeepCSV" )); float bminimumPtAccepted = any_cast(parameterList_->at("bMinPt" )); @@ -1827,7 +1865,7 @@ std::vector OfflineProducerHelper::bjJets_PreselectionCut(NanoAODTree& nat, /////////////--------Check that there is at least 4 bjet candidates if(jets.size() < 4) return outputJets; stable_sort(jets.begin(), jets.end(), [](const Jet & a, const Jet & b) -> bool - { return ( get_property(a, Jet_btagDeepB) > get_property(b, Jet_btagDeepB) );}); + { return ( get_property(a, Jet_btagDeepB) > get_property(b, Jet_btagDeepB) );}); /////////////--------Pick up the four b-jets with highest pt outputJets = {{*(jets.begin()+0),*(jets.begin()+1),*(jets.begin()+2),*(jets.begin()+3)}}; int c=0; while (c<4){jets.erase(jets.begin());c++;} @@ -1872,29 +1910,30 @@ std::vector OfflineProducerHelper::bjJets_PreselectionCut(NanoAODTree& nat, return outputJets; } -std::vector OfflineProducerHelper::ExternalEtaJetPair(std::vector jets, std::vector bjets){ -//Check Max abs(Eta) among the b-jets -std::vector outputJets; -float maxbEta=-1; -for (uint i=0;i OfflineProducerHelper::ExternalEtaJetPair(std::vector jets, std::vector bjets) { + //Check Max abs(Eta) among the b-jets + std::vector outputJets; + float maxbEta=-1; + for (uint i=0;imaxbEta){maxbEta=Eta;} -} -//Remove VBF-jet candidates with abs(eta) lower than the bjets abs(eta) -auto jt = jets.begin(); -while (jt != jets.end()){ + } + //Remove VBF-jet candidates with abs(eta) lower than the bjets abs(eta) + auto jt = jets.begin(); + while (jt != jets.end()){ if(abs(get_property( (*jt),Jet_eta)) bool -{ return ( get_property(a, Jet_pt ) > get_property(b, Jet_pt) );}); -outputJets = {{*(jets.begin()+0),*(jets.begin()+1)}}; return outputJets; + } + //Ordered the VBF candidates by pt. Ff there are not two VBF-candidates, then return empty + if(jets.size()<2) return outputJets; + stable_sort(jets.begin(), jets.end(), [](const Jet & a, const Jet & b) -> bool + { return ( get_property(a, Jet_pt ) > get_property(b, Jet_pt) );}); + outputJets = {{*(jets.begin()+0),*(jets.begin()+1)}}; return outputJets; } std::vector OfflineProducerHelper::AddGenMatchingInfo(NanoAODTree& nat, EventInfo& ei, std::vector jets) @@ -1922,82 +1961,88 @@ std::vector OfflineProducerHelper::AddGenMatchingInfo(NanoAODTree& nat, Eve ei.gen_H2_b2 = bs.at(1); } //Define a vector with the six ordered quarks - std::vector quarks = {{ - *(ei.gen_H1_b1),*(ei.gen_H1_b2), - *(ei.gen_H2_b1),*(ei.gen_H2_b2), *(ei.gen_q1_out),*(ei.gen_q2_out)}}; + std::vector quarks = {{ *(ei.gen_H1_b1),*(ei.gen_H1_b2), *(ei.gen_H2_b1),*(ei.gen_H2_b2), *(ei.gen_q1_out),*(ei.gen_q2_out)}}; std::vector output = QuarkToJetMatcher(quarks,jets); return output; - } - -std::vector OfflineProducerHelper::QuarkToJetMatcher(const std::vector quarks,const std::vector jets){ -// OUTPUT is a vector with nJet entries filled the QuarkId, ordered by jets index -//----QuarkId: (1) gen_H1_b1, (2) gen_H1_b2, (3) gen_H2_b1, (4) gen_H2_b2, (5) gen_j1_out, (6) gen_j2_out, (0) Others -//----JetId: Index of the jets in the input vector 'jets' -//Define and initialize variables -std::vector> jetsinfo,quarksinfo; -std::vector> quark_jet_link; uint id; -std::vector output; -float dR=0.4, maxDeltaR, DeltaR; bool matched = false; -uint m=0; while(m(quarksinfo[x]).DeltaR( get<0>(jetsinfo[y]) ); - if(DeltaR < maxDeltaR){maxDeltaR=DeltaR; matched=true; id = y ;} - } - if(matched) {quark_jet_link.emplace_back( make_tuple(x,get<1>(jetsinfo[id]))); jetsinfo.erase(jetsinfo.begin()+id);} - else {quark_jet_link.emplace_back( make_tuple(x,-1) );} - matched = false; } -//Create output with QuarkID -bool found; int foundy; -for (uint x=0; x < jets.size(); x++ ){ - uint jetid=x; - found = false; + +std::vector OfflineProducerHelper::QuarkToJetMatcher(const std::vector quarks,const std::vector jets) +{ + // OUTPUT is a vector with nJet entries filled the QuarkId, ordered by jets index + //----QuarkId: (1) gen_H1_b1, (2) gen_H1_b2, (3) gen_H2_b1, (4) gen_H2_b2, (5) gen_j1_out, (6) gen_j2_out, (0) Others + //----JetId: Index of the jets in the input vector 'jets' + //Define and initialize variables + std::vector> jetsinfo,quarksinfo; + std::vector> quark_jet_link; uint id; + std::vector output; + float dR=0.4, maxDeltaR, DeltaR; bool matched = false; + uint m=0; while(m(quarksinfo[x]).DeltaR( get<0>(jetsinfo[y]) ); + if(DeltaR < maxDeltaR) + { + maxDeltaR=DeltaR; matched=true; id = y ; + } + } + if(matched) {quark_jet_link.emplace_back( make_tuple(x,get<1>(jetsinfo[id]))); jetsinfo.erase(jetsinfo.begin()+id);} + else {quark_jet_link.emplace_back( make_tuple(x,-1) );} + matched = false; + } + //Create output with QuarkID + bool found; int foundy; + for (uint x=0; x < jets.size(); x++ ) + { + uint jetid=x; + found = false; //Check if there is a quark that is linked to this jet - for (uint y=0; y < quark_jet_link.size(); y++ ){ - uint m = get<1>(quark_jet_link[y]); - if(jetid == m ){found = true; foundy=y;} - } - //Load jet information to the output: QuarkID - if(found){output.emplace_back(get<0>(quark_jet_link[foundy])+1);} - else{output.emplace_back(0);} -} -return output; + for (uint y=0; y < quark_jet_link.size(); y++ ) + { + uint m = get<1>(quark_jet_link[y]); + if(jetid == m ){found = true; foundy=y;} + } + //Load jet information to the output: QuarkID + if(found){output.emplace_back(get<0>(quark_jet_link[foundy])+1);} + else{output.emplace_back(0);} + } + return output; } -std::vector OfflineProducerHelper::OppositeEtaJetPair(std::vector jets){ -//Initialize DEta -int id; -float Eta1Eta2= 0; bool foundpair=false; -std::vector outputJets; -//Order the jets py pt -stable_sort(jets.begin(), jets.end(), [](const Jet & a, const Jet & b) -> bool -{ return ( get_property(a, Jet_pt ) > get_property(b, Jet_pt) );}); -//Find the j1 (highest pt jet) and j2 (the jet with highest pt and opposite eta sign) -for (uint y=1;y OfflineProducerHelper::OppositeEtaJetPair(std::vector jets) { + //Initialize DEta + int id; + float Eta1Eta2= 0; bool foundpair=false; + std::vector outputJets; + //Order the jets py pt + stable_sort(jets.begin(), jets.end(), [](const Jet & a, const Jet & b) -> bool + { return ( get_property(a, Jet_pt ) > get_property(b, Jet_pt) );}); + //Find the j1 (highest pt jet) and j2 (the jet with highest pt and opposite eta sign) + for (uint y=1;y OfflineProducerHelper::HighestPtJetPair(std::vector jets){ -std::vector outputJets; -//Order the jets py pt -stable_sort(jets.begin(), jets.end(), [](const Jet & a, const Jet & b) -> bool -{ return ( get_property(a, Jet_pt ) > get_property(b, Jet_pt) );}); -//Find the j1 (highest pt jet) and j2 (the jet with highest pt and opposite eta sign) -outputJets = {{*(jets.begin()+0),*(jets.begin()+1)}}; return outputJets; +std::vector OfflineProducerHelper::HighestPtJetPair(std::vector jets) +{ + std::vector outputJets; + //Order the jets py pt + stable_sort(jets.begin(), jets.end(), [](const Jet & a, const Jet & b) -> bool + { return ( get_property(a, Jet_pt ) > get_property(b, Jet_pt) );}); + //Find the j1 (highest pt jet) and j2 (the jet with highest pt and opposite eta sign) + outputJets = {{*(jets.begin()+0),*(jets.begin()+1)}}; return outputJets; } ////////////-----FUNCTIONS FOR PRESELECTION OF EVENTS FOR NON-RESONANT ANALYSIS - END @@ -2045,7 +2090,7 @@ bool OfflineProducerHelper::checkTriggerObjectMatching(std::vector for ( const auto & requiredNumberOfObjects : triggerRequirements.second) // triggers fired { if(mapTriggerMatching_.find(requiredNumberOfObjects.first)==mapTriggerMatching_.end()) triggerResult[triggerRequirements.first] = false; // Object not found - if(mapTriggerMatching_[requiredNumberOfObjects.first] < requiredNumberOfObjects.second) triggerResult[triggerRequirements.first] = false; // Number of object not enought + else if(mapTriggerMatching_.at(requiredNumberOfObjects.first) < requiredNumberOfObjects.second) triggerResult[triggerRequirements.first] = false; // Number of object not enought } for(const auto & triggerChecked : triggerResult) //If at least one of the trigger was found return true @@ -2066,39 +2111,25 @@ void OfflineProducerHelper::calculateTriggerMatching(const std::vector< std::uni if(debug) std::cout<<"\t\tPt\t\tEta\t\tPhi\t\tBit\t\tMatchedJetId\n"; mapTriggerMatching_.clear(); -//std::cout<<"culo6.1.1\n"; for (uint trigObjIt = 0; trigObjIt < *(nat.nTrigObj); ++trigObjIt) //for over all trigger objects { int triggerObjectId = nat.TrigObj_id.At(trigObjIt); -//std::cout<<"culo6.1.2\n"; -//std::cout<> filterBit) & 0x1 ) //check object passes the filter { if(!isNeeded) isNeeded=true; @@ -2109,28 +2140,31 @@ void OfflineProducerHelper::calculateTriggerMatching(const std::vector< std::uni } else if(debug) std::cout<<" "<(parameterList_->at("bbbbChoice")) == "None" && triggerObjectId == 1) //case of no selection and jets { -//std::cout<<"!!! --- "<getCandidateTypeId()<getCandidateTypeId() != triggerObjectId) continue; // Skip different particles - //std::cout<<"!!!~~~~ - "<getCandidateTypeId() != triggerObjectId) continue; // Skip different particles - float candidateEta = candidate->P4().Eta (); - float candidatePhi = candidate->P4().Phi (); - float tmpdeltaR = (candidateEta - triggerObjectEta)*(candidateEta - triggerObjectEta) + deltaPhi(candidatePhi,triggerObjectPhi)*deltaPhi(candidatePhi,triggerObjectPhi); - //std::cout<getIdx()<< "!!!~~~~candidateEta - "<P4().Eta (); + float candidatePhi = candidate->P4().Phi (); + float tmpdeltaR = (candidateEta - triggerObjectEta)*(candidateEta - triggerObjectEta) + deltaPhi(candidatePhi,triggerObjectPhi)*deltaPhi(candidatePhi,triggerObjectPhi); - if(tmpdeltaR < deltaR) - { - deltaR = tmpdeltaR; - tmpCandidateIdx=candidate->getIdx(); + if(tmpdeltaR < deltaR) + { + deltaR = tmpdeltaR; + tmpCandidateIdx=candidate->getIdx(); - } - //std::cout<<"!!!~~~~DeltaR - "<(parameterList_->at("MaxDeltaR"))) // check if a matching was found @@ -2142,7 +2176,6 @@ void OfflineProducerHelper::calculateTriggerMatching(const std::vector< std::uni } ++mapTriggerMatching_[particleAndFilter]; candidateIdx=tmpCandidateIdx; - //std::cout< out_1, in_2 --> out_2 ? // unfortunately there is no valid gen info associated if (get_property(gp, GenPart_genPartIdxMother) == 0) @@ -2338,7 +2371,7 @@ bool OfflineProducerHelper::select_gen_VBF_partons (NanoAODTree& nat, EventInfo& // } // else // good_last = false; - + // // now check and save // if (good_last) // { @@ -2356,22 +2389,22 @@ bool OfflineProducerHelper::select_gen_VBF_partons (NanoAODTree& nat, EventInfo& // quality checks if (!ei.gen_q1_in || !ei.gen_q2_in){ - cout << "** [WARNING] : select_gen_VBF_partons : didn't find two incoming partons : " - << std::boolalpha - << " q1_in :" << ei.gen_q1_in.is_initialized() - << " q2_in :" << ei.gen_q2_in.is_initialized() - << std::noboolalpha - << endl; + cout << "** [WARNING] : select_gen_VBF_partons : didn't find two incoming partons : " + << std::boolalpha + << " q1_in :" << ei.gen_q1_in.is_initialized() + << " q2_in :" << ei.gen_q2_in.is_initialized() + << std::noboolalpha + << endl; all_ok = false; } if (!ei.gen_q1_out || !ei.gen_q2_out){ - cout << "** [WARNING] : select_gen_VBF_partons : didn't find two outgoing partons : " - << std::boolalpha - << " q1_out :" << ei.gen_q1_out.is_initialized() - << " q2_out :" << ei.gen_q2_out.is_initialized() - << std::noboolalpha - << endl; + cout << "** [WARNING] : select_gen_VBF_partons : didn't find two outgoing partons : " + << std::boolalpha + << " q1_out :" << ei.gen_q1_out.is_initialized() + << " q2_out :" << ei.gen_q2_out.is_initialized() + << std::noboolalpha + << endl; all_ok = false; } @@ -2437,32 +2470,32 @@ void OfflineProducerHelper::dump_gen_part (NanoAODTree& nat, bool printFlags) GenPart gp (igp, &nat); // if (abs(get_property(gp, GenPart_pdgId)) >= 6) continue; // only light quarks + b cout << igp << " -- " - << " pdgId: " << setw(4) << get_property(gp, GenPart_pdgId) - << " pt: " << setw(10) << get_property(gp, GenPart_pt) - << " eta: " << setw(10) << get_property(gp, GenPart_eta) - << " phi: " << setw(10) << get_property(gp, GenPart_phi) - << " status: " << setw(4) << get_property(gp, GenPart_status) - << " moth_idx: " << setw(4) << get_property(gp, GenPart_genPartIdxMother) - << endl; + << " pdgId: " << setw(4) << get_property(gp, GenPart_pdgId) + << " pt: " << setw(10) << get_property(gp, GenPart_pt) + << " eta: " << setw(10) << get_property(gp, GenPart_eta) + << " phi: " << setw(10) << get_property(gp, GenPart_phi) + << " status: " << setw(4) << get_property(gp, GenPart_status) + << " moth_idx: " << setw(4) << get_property(gp, GenPart_genPartIdxMother) + << endl; if (printFlags) { cout << " . Flags :" << endl - << " isPrompt : " << gp.isPrompt() << endl - << " isDecayedLeptonHadron : " << gp.isDecayedLeptonHadron() << endl - << " isTauDecayProduct : " << gp.isTauDecayProduct() << endl - << " isPromptTauDecayProduct : " << gp.isPromptTauDecayProduct() << endl - << " isDirectTauDecayProduct : " << gp.isDirectTauDecayProduct() << endl - << " isDirectPromptTauDecayProduct : " << gp.isDirectPromptTauDecayProduct() << endl - << " isDirectHadronDecayProduct : " << gp.isDirectHadronDecayProduct() << endl - << " isHardProcess : " << gp.isHardProcess() << endl - << " fromHardProcess : " << gp.fromHardProcess() << endl - << " isHardProcessTauDecayProduct : " << gp.isHardProcessTauDecayProduct() << endl - << " isDirectHardProcessTauDecayProduct : " << gp.isDirectHardProcessTauDecayProduct() << endl - << " fromHardProcessBeforeFSR : " << gp.fromHardProcessBeforeFSR() << endl - << " isFirstCopy : " << gp.isFirstCopy() << endl - << " isLastCopy : " << gp.isLastCopy() << endl - << " isLastCopyBeforeFSR : " << gp.isLastCopyBeforeFSR() << endl - << endl; + << " isPrompt : " << gp.isPrompt() << endl + << " isDecayedLeptonHadron : " << gp.isDecayedLeptonHadron() << endl + << " isTauDecayProduct : " << gp.isTauDecayProduct() << endl + << " isPromptTauDecayProduct : " << gp.isPromptTauDecayProduct() << endl + << " isDirectTauDecayProduct : " << gp.isDirectTauDecayProduct() << endl + << " isDirectPromptTauDecayProduct : " << gp.isDirectPromptTauDecayProduct() << endl + << " isDirectHadronDecayProduct : " << gp.isDirectHadronDecayProduct() << endl + << " isHardProcess : " << gp.isHardProcess() << endl + << " fromHardProcess : " << gp.fromHardProcess() << endl + << " isHardProcessTauDecayProduct : " << gp.isHardProcessTauDecayProduct() << endl + << " isDirectHardProcessTauDecayProduct : " << gp.isDirectHardProcessTauDecayProduct() << endl + << " fromHardProcessBeforeFSR : " << gp.fromHardProcessBeforeFSR() << endl + << " isFirstCopy : " << gp.isFirstCopy() << endl + << " isLastCopy : " << gp.isLastCopy() << endl + << " isLastCopyBeforeFSR : " << gp.isLastCopyBeforeFSR() << endl + << endl; } } cout << noboolalpha; diff --git a/test/fill_histograms.cpp b/test/fill_histograms.cpp index c51d14dbd..fa2800a2e 100644 --- a/test/fill_histograms.cpp +++ b/test/fill_histograms.cpp @@ -45,5 +45,5 @@ int main(int argc, char** argv) ah.mergeSamples(); // do it just at the end ah.saveOutputsToFile(); cout << "... exiting" << endl; - exit(1); + exit(EXIT_SUCCESS); } \ No newline at end of file diff --git a/test/skim_ntuple.cpp b/test/skim_ntuple.cpp index 56bc7d32f..71829e0ab 100644 --- a/test/skim_ntuple.cpp +++ b/test/skim_ntuple.cpp @@ -129,6 +129,9 @@ int main(int argc, char** argv) throw std::runtime_error("UseAntiTagOnOneBjet can be done only using PreselectionCut = bJetCut"); } } + else if(bbbbChoice == "None"){ + parameterList.emplace("UseAntiTagOnOneBjet" ,config.readBoolOpt("parameters::UseAntiTagOnOneBjet" )); + } // else if(other selection type){ // parameters fo be retreived; // } @@ -412,21 +415,19 @@ int main(int argc, char** argv) double weight = 1.; if(!is_data) weight = oph::calculateEventWeight(nat, ot, ec); -// std::cout<<"pirla1\n"; ec.updateProcessed(weight); -// std::cout<<"pirla2\n"; std::vector listOfPassedTriggers = nat.getTrgPassed(); -// std::cout<<"pirla3\n"; if( listOfPassedTriggers.size() == 0 && triggerVector.size()>0 ) continue; -// std::cout<<"pirla4\n"; ec.updateTriggered(weight); -// std::cout<<"pirla5\n"; - if (!oph::select_bbbb_jets(nat, ei, ot, listOfPassedTriggers)) continue; -// std::cout<<"pirla6\n"; + if (!oph::select_bbbb_jets(nat, ei, ot, listOfPassedTriggers)) + { + // std::cout<<"skipped\n"; + continue; + } if (is_signal){ oph::select_gen_HH(nat, ei); @@ -445,11 +446,8 @@ int main(int argc, char** argv) oph::save_objects_for_cut(nat, ot, ei); -// std::cout<<"pirla7\n"; ec.updateSelected(weight); -// std::cout<<"pirla8\n"; su::fill_output_tree(ot, nat, ei); -// std::cout<<"pirla9\n"; } From e9e378b6fda3bac538c1e179213b63526a172f29 Mon Sep 17 00:00:00 2001 From: fravera Date: Wed, 29 May 2019 15:29:35 -0500 Subject: [PATCH 03/12] Trigger Efficiency as originally thought --- .../plotter_2016Analysis_triggerStudies.cfg | 2 +- ...lectionCfg_2016Analysis_triggerStudies.cfg | 68 +-- config/skim_2016ResonantDiHiggs4B.cfg | 1 + config/skim_2016ResonantDiHiggs4B_antiTag.cfg | 1 + ...m_2016ResonantDiHiggs4B_triggerStudies.cfg | 21 +- scripts/TriggerEfficiencyFitter.C | 51 +- scripts/computeAllPUWeights.sh | 2 + src/OfflineProducerHelper.cc | 436 +++++++++--------- test/skim_ntuple.cpp | 6 +- 9 files changed, 302 insertions(+), 286 deletions(-) diff --git a/config/plotter_2016Analysis_triggerStudies.cfg b/config/plotter_2016Analysis_triggerStudies.cfg index 50af80161..12bacb9d0 100644 --- a/config/plotter_2016Analysis_triggerStudies.cfg +++ b/config/plotter_2016Analysis_triggerStudies.cfg @@ -13,7 +13,7 @@ outputFolder = ./2016DataPlots # signals = tmp_Graviton_750GeV data = tmp_SingleMuon -variables = SelectedJetPtSum, FirstSelectedJetPt, SecondSelectedJetPt, ThirdSelectedJetPt, ForthSelectedJetPt, ThirdSelectedJetDeepCSV +variables = FourHighetJetPtSum, FirstJetPt, SecondJetPt, ThirdJetPt, ForthJetPt, ThirdJetDeepCSV selections = Normalization , L1triggerDouble90Double30AndPrevious , QuadCentralJet30AndPrevious , DoubleCentralJet90AndPrevious , BTagCaloCSVp087TripleDouble90Double30AndPrevious , QuadPFCentralJetLooseID30AndPrevious , DoublePFCentralJetLooseID90AndPrevious , L1triggerQuad45AndPrevious , QuadCentralJet45AndPrevious , BTagCaloCSVp087TripleQuad45AndPrevious , QuadPFCentralJetLooseID45AndPrevious, HLT_Double90Double30AndPrevious, HLT_Quad45AndPrevious diff --git a/config/selectionCfg_2016Analysis_triggerStudies.cfg b/config/selectionCfg_2016Analysis_triggerStudies.cfg index 317c41b0f..8d2229704 100644 --- a/config/selectionCfg_2016Analysis_triggerStudies.cfg +++ b/config/selectionCfg_2016Analysis_triggerStudies.cfg @@ -10,52 +10,56 @@ [selections] # common -# basicSelection = HighestIsoMuonPt>20 -basicSelection = ((H1_m > 120-40 && H1_m < 120+40) && (H2_m > 120-40 && H2_m < 120+40)) && HighestIsoMuonPt>40 -BTagCaloCSVp087Triple = BTagCaloCSVp087Triple >= 3 +# basicSelectionPass = HighestIsoMuonPt>20 +basicSelectionPass = HighestIsoMuonPt>20 && ((H1_m > 120-40 && H1_m < 120+40) && (H2_m > 120-40 && H2_m < 120+40)) && HH_2DdeltaM < 4.*20.*20. +# basicSelectionPass = ForthJetCMVA > 0.185 && ((H1_m > 120-40 && H1_m < 120+40) && (H2_m > 120-40 && H2_m < 120+40)) +# && HH_2DdeltaM < 25.*20*20 +BTagCaloCSVp087TriplePass = BTagCaloCSVp087Triple >= 3 # HLT_DoubleJet90_Double30_TripleBTagCSV_p087 -L1triggerDouble90Double30 = L1sTripleJetVBFIorHTTIorDoubleJetCIorSingleJet >= 1 -QuadCentralJet30 = QuadCentralJet30 >= 4 -DoubleCentralJet90 = DoubleCentralJet90 >= 2 -QuadPFCentralJetLooseID30 = QuadPFCentralJetLooseID30 >= 4 -DoublePFCentralJetLooseID90 = DoublePFCentralJetLooseID90 >= 2 +L1triggerDouble90Double30Pass = L1sTripleJetVBFIorHTTIorDoubleJetCIorSingleJet >= 1 +# L1triggerDouble90Double30Pass = QuadCentralJet30 >= 1 +QuadCentralJet30Pass = QuadCentralJet30 >= 4 +DoubleCentralJet90Pass = DoubleCentralJet90 >= 2 +QuadPFCentralJetLooseID30Pass = QuadPFCentralJetLooseID30 >= 4 +DoublePFCentralJetLooseID90Pass = DoublePFCentralJetLooseID90 >= 2 #not per-object efficiency HLT_DoubleJet90_Double30_TripleBTagCSV_p087 -HLT_Double90Double30 = HLT_DoubleJet90_Double30_TripleBTagCSV_p087_Fired && HLT_DoubleJet90_Double30_TripleBTagCSV_p087_ObjectMatched +HLT_Double90Double30Pass = HLT_DoubleJet90_Double30_TripleBTagCSV_p087_Fired && HLT_DoubleJet90_Double30_TripleBTagCSV_p087_ObjectMatched # HLT_QuadJet45_TripleBTagCSV_p087 -L1triggerQuad45 = L1sQuadJetC50IorQuadJetC60IorHTT280IorHTT300IorHTT320IorTripleJet846848VBFIorTripleJet887256VBFIorTripleJet927664VBF >= 1 -QuadCentralJet45 = QuadCentralJet45 >= 4 -QuadPFCentralJetLooseID45 = QuadPFCentralJetLooseID45 >= 4 +L1triggerQuad45Pass = L1sQuadJetC50IorQuadJetC60IorHTT280IorHTT300IorHTT320IorTripleJet846848VBFIorTripleJet887256VBFIorTripleJet927664VBF >= 1 +# L1triggerQuad45 = QuadCentralJet45 >= 1 +QuadCentralJet45Pass = QuadCentralJet45 >= 4 +QuadPFCentralJetLooseID45Pass = QuadPFCentralJetLooseID45 >= 4 #not per-object efficiency HLT_QuadJet45_TripleBTagCSV_p087 -HLT_Quad45 = HLT_QuadJet45_TripleBTagCSV_p087_Fired && HLT_QuadJet45_TripleBTagCSV_p087_ObjectMatched +HLT_Quad45Pass = HLT_QuadJet45_TripleBTagCSV_p087_Fired && HLT_QuadJet45_TripleBTagCSV_p087_ObjectMatched # common -Normalization = basicSelection +Normalization = basicSelectionPass # HLT_DoubleJet90_Double30_TripleBTagCSV_p087 -L1triggerDouble90Double30AndPrevious = Normalization, L1triggerDouble90Double30 -QuadCentralJet30AndPrevious = L1triggerDouble90Double30AndPrevious, QuadCentralJet30 -DoubleCentralJet90AndPrevious = QuadCentralJet30AndPrevious, DoubleCentralJet90 -BTagCaloCSVp087TripleDouble90Double30AndPrevious = DoubleCentralJet90AndPrevious, BTagCaloCSVp087Triple -QuadPFCentralJetLooseID30AndPrevious = BTagCaloCSVp087TripleDouble90Double30AndPrevious, QuadPFCentralJetLooseID30 -DoublePFCentralJetLooseID90AndPrevious = QuadPFCentralJetLooseID30AndPrevious, DoublePFCentralJetLooseID90 +L1triggerDouble90Double30AndPrevious = Normalization, L1triggerDouble90Double30Pass +QuadCentralJet30AndPrevious = L1triggerDouble90Double30AndPrevious, QuadCentralJet30Pass +DoubleCentralJet90AndPrevious = QuadCentralJet30AndPrevious, DoubleCentralJet90Pass +BTagCaloCSVp087TripleDouble90Double30AndPrevious = DoubleCentralJet90AndPrevious, BTagCaloCSVp087TriplePass +QuadPFCentralJetLooseID30AndPrevious = BTagCaloCSVp087TripleDouble90Double30AndPrevious, QuadPFCentralJetLooseID30Pass +DoublePFCentralJetLooseID90AndPrevious = QuadPFCentralJetLooseID30AndPrevious, DoublePFCentralJetLooseID90Pass # not per-object efficiency HLT_DoubleJet90_Double30_TripleBTagCSV_p087 -HLT_Double90Double30AndPrevious = Normalization, HLT_Double90Double30 +HLT_Double90Double30AndPrevious = Normalization, HLT_Double90Double30Pass # HLT_QuadJet45_TripleBTagCSV_p087 -L1triggerQuad45AndPrevious = Normalization, L1triggerQuad45 -QuadCentralJet45AndPrevious = L1triggerQuad45AndPrevious, QuadCentralJet45 -BTagCaloCSVp087TripleQuad45AndPrevious = QuadCentralJet45AndPrevious, BTagCaloCSVp087Triple -QuadPFCentralJetLooseID45AndPrevious = BTagCaloCSVp087TripleQuad45AndPrevious, QuadPFCentralJetLooseID45 +L1triggerQuad45AndPrevious = Normalization, L1triggerQuad45Pass +QuadCentralJet45AndPrevious = L1triggerQuad45AndPrevious, QuadCentralJet45Pass +BTagCaloCSVp087TripleQuad45AndPrevious = QuadCentralJet45AndPrevious, BTagCaloCSVp087TriplePass +QuadPFCentralJetLooseID45AndPrevious = BTagCaloCSVp087TripleQuad45AndPrevious, QuadPFCentralJetLooseID45Pass # not per-object efficiency HLT_QuadJet45_TripleBTagCSV_p087 -HLT_Quad45AndPrevious = Normalization, HLT_Quad45 +HLT_Quad45AndPrevious = Normalization, HLT_Quad45Pass # Region HLT_IsoMu24 = HLT_IsoMu24_Fired @@ -116,12 +120,12 @@ sig_Radion_1200GeV = genWeight, PUWeight, LHEPdfWeight, LHEScaleWeight # write binning as ROOT declaration: nXbins, xmin, xmax [histos] -SelectedJetPtSum = 50, 100., 600. -FirstSelectedJetPt = 50, 20., 160. -SecondSelectedJetPt = 50, 20., 200. -ThirdSelectedJetPt = 50, 20., 160. -ForthSelectedJetPt = 50, 20., 160. -ThirdSelectedJetDeepCSV = 50, 0., 1. +FourHighetJetPtSum = 50, 100., 600. +FirstJetPt = 50, 20., 160. +SecondJetPt = 50, 20., 200. +ThirdJetPt = 50, 20., 160. +ForthJetPt = 50, 20., 160. +ThirdJetDeepCSV = 50, 0., 1. # write binning as ROOT declaration: nXbins xmin, xmax, nYbins, ymin, ymax = diff --git a/config/skim_2016ResonantDiHiggs4B.cfg b/config/skim_2016ResonantDiHiggs4B.cfg index 21e2004eb..b692856e8 100644 --- a/config/skim_2016ResonantDiHiggs4B.cfg +++ b/config/skim_2016ResonantDiHiggs4B.cfg @@ -122,6 +122,7 @@ makeORof = trigger1:HLT_DoubleJet90_Double30_TripleBTagCSV_p087, trigger2:HLT_Qu MaxDeltaR = 0.3 trigger1_ObjectRequirements = 1:0:3, 1:1:2, 1:2:2, 1:3:1, 1:4:4, 1:5:4 trigger2_ObjectRequirements = 1:0:3, 1:6:1, 1:7:4, 1:8:4 +TriggerStudies = false # ############################################################################################################## # diff --git a/config/skim_2016ResonantDiHiggs4B_antiTag.cfg b/config/skim_2016ResonantDiHiggs4B_antiTag.cfg index d6388c627..38123d1e7 100644 --- a/config/skim_2016ResonantDiHiggs4B_antiTag.cfg +++ b/config/skim_2016ResonantDiHiggs4B_antiTag.cfg @@ -80,6 +80,7 @@ WeightMethod = StandardWeight [triggers] makeORof = HLT_DoubleJet90_Double30_TripleBTagCSV_p087, HLT_QuadJet45_TripleBTagCSV_p087 +TriggerStudies = false # ############################################################################################################## # diff --git a/config/skim_2016ResonantDiHiggs4B_triggerStudies.cfg b/config/skim_2016ResonantDiHiggs4B_triggerStudies.cfg index 28bb5a9b5..b5d96e869 100644 --- a/config/skim_2016ResonantDiHiggs4B_triggerStudies.cfg +++ b/config/skim_2016ResonantDiHiggs4B_triggerStudies.cfg @@ -14,8 +14,6 @@ is2016Sample = true # if LMRToMMRTransition<0 only one range is used with HiggsMass = HiggsMassLMR # UseAntiTagOnOneBjet if set to True will require one of the selected jet not to be b-tagged: # Compatible only with PreselectionCut = bJetCut. -# None : No selection, only for trigger studies -# UseAntiTagOnOneBjet if set to True will require one of the selected jet not to be b-tagged: #bbbbChoice = OneClosestToMh #HiggsMass = 120. @@ -26,13 +24,10 @@ is2016Sample = true #bbbbChoice = MostBackToBack #HiggsMass = 120. -#bbbbChoice = HighestCSVandClosestToMh -#HiggsMassLMR = 120. -#HiggsMassMMR = 125. -#LMRToMMRTransition = -1. -#UseAntiTagOnOneBjet = false - -bbbbChoice = None +bbbbChoice = HighestCSVandClosestToMh +HiggsMassLMR = 120. +HiggsMassMMR = 125. +LMRToMMRTransition = -1. UseAntiTagOnOneBjet = false # -------------------------------------------------------------------------------------------------------------- # @@ -45,7 +40,7 @@ UseAntiTagOnOneBjet = false PreselectionCut = bJetCut MinDeepCSV = 0. MinPt = 20 -MaxAbsEta = 2.6 +MaxAbsEta = 2.4 # PreselectionCut = None @@ -55,8 +50,8 @@ MaxAbsEta = 2.6 # StandardJER: computation as indicated at https://twiki.cern.ch/twiki/bin/view/CMS/JetResolution#Smearing_procedures # None (do nothing) -# JetEnergyResolution = None -JetEnergyResolution = StandardJER +JetEnergyResolution = None +# JetEnergyResolution = StandardJER JERComputeVariations = false JERScaleFactorFile = JERfiles/Summer16_25nsV1_MC_SF_AK4PFchs.txt JERResolutionFile = JERfiles/Summer16_25nsV1_MC_PtResolution_AK4PFchs.txt @@ -79,7 +74,7 @@ JECListOfCorrections = AbsoluteStat, AbsoluteScale, AbsoluteMPFBias, Fragmen # current options are: # None : no further object saved # WandZleptonDecays : save Isolated electrons and muons from W and Z decays -# TriggerObjects : save Trigger objects for trigger studies +# TriggerObjects : save Trigger objects # triggers object are listed as branchName:objectType:filterBit # ObjectsForCut = WandZleptonDecays diff --git a/scripts/TriggerEfficiencyFitter.C b/scripts/TriggerEfficiencyFitter.C index 8873f476f..a6006bb4f 100644 --- a/scripts/TriggerEfficiencyFitter.C +++ b/scripts/TriggerEfficiencyFitter.C @@ -44,37 +44,37 @@ void MeasureTriggerEfficiency(std::string inputFileName, std::string sampleName, // HLT_DoubleJet90_Double30_TripleBTagCSV_p087 - efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "SelectedJetPtSum", + efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "FourHighetJetPtSum", "L1triggerDouble90Double30AndPrevious_"+referenceTriggerName, "Normalization_"+referenceTriggerName, dummyFormula, dummyParameters, "L1 Trigger", "p_{1}^{T} + p_{2}^{T} + p_{3}^{T} + p_{4}^{T}", lineColor); // efficiency->SetDirectory(0); efficiency->Write(); - efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "ForthSelectedJetPt", + efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "ForthJetPt", "QuadCentralJet30AndPrevious_"+referenceTriggerName, "L1triggerDouble90Double30AndPrevious_"+referenceTriggerName, dummyFormula, dummyParameters, "Quad Central Jet 30 GeV", "p_{4}^{T}", lineColor); // efficiency->SetDirectory(0); efficiency->Write(); - efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "SecondSelectedJetPt", + efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "SecondJetPt", "DoubleCentralJet90AndPrevious_"+referenceTriggerName, "QuadCentralJet30AndPrevious_"+referenceTriggerName, dummyFormula, dummyParameters, "Double Central Jet 90 GeV", "p_{2}^{T}", lineColor); // efficiency->SetDirectory(0); efficiency->Write(); - efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "ThirdSelectedJetDeepCSV", + efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "ThirdJetDeepCSV", "BTagCaloCSVp087TripleDouble90Double30AndPrevious_"+referenceTriggerName, "DoubleCentralJet90AndPrevious_"+referenceTriggerName, dummyFormula, dummyParameters, "BTag CaloCSV p087 Triple", "DeepCSV_{3}", lineColor); // efficiency->SetDirectory(0); efficiency->Write(); - efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "ForthSelectedJetPt", + efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "ForthJetPt", "QuadPFCentralJetLooseID30AndPrevious_"+referenceTriggerName, "BTagCaloCSVp087TripleDouble90Double30AndPrevious_"+referenceTriggerName, dummyFormula, dummyParameters, "Quad PF Central Jet Loose ID 30 GeV", "p_{4}^{T}", lineColor); // efficiency->SetDirectory(0); efficiency->Write(); - efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "SecondSelectedJetPt", + efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "SecondJetPt", "DoublePFCentralJetLooseID90AndPrevious_"+referenceTriggerName, "QuadPFCentralJetLooseID30AndPrevious_"+referenceTriggerName, dummyFormula, dummyParameters, "Double PF Central Jet Loose ID 90 GeV", "p_{2}^{T}", lineColor); // efficiency->SetDirectory(0); @@ -108,25 +108,25 @@ void MeasureTriggerEfficiency(std::string inputFileName, std::string sampleName, */ // _QuadJet45_TripleBTagCSV_p087 - efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "SelectedJetPtSum", + efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "FourHighetJetPtSum", "L1triggerQuad45AndPrevious_"+referenceTriggerName, "Normalization_"+referenceTriggerName, dummyFormula, dummyParameters, "L1 Trigger", "p_{1}^{T} + p_{2}^{T} + p_{3}^{T} + p_{4}^{T}", lineColor); // efficiency->SetDirectory(0); efficiency->Write(); - efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "ForthSelectedJetPt", + efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "ForthJetPt", "QuadCentralJet45AndPrevious_"+referenceTriggerName, "L1triggerQuad45AndPrevious_"+referenceTriggerName, dummyFormula, dummyParameters, "Quad Central Jet 45 GeV", "p_{4}^{T}", lineColor); // efficiency->SetDirectory(0); efficiency->Write(); - efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "ThirdSelectedJetDeepCSV", + efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "ThirdJetDeepCSV", "BTagCaloCSVp087TripleQuad45AndPrevious_"+referenceTriggerName, "QuadCentralJet45AndPrevious_"+referenceTriggerName, dummyFormula, dummyParameters, "BTag CaloCSV p087 Triple", "DeepCSV_{3}", lineColor); // efficiency->SetDirectory(0); efficiency->Write(); - efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "ForthSelectedJetPt", + efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "ForthJetPt", "QuadPFCentralJetLooseID45AndPrevious_"+referenceTriggerName, "BTagCaloCSVp087TripleQuad45AndPrevious_"+referenceTriggerName, dummyFormula, dummyParameters, "Quad PF Central Jet Loose ID 45 GeV", "p_{4}^{T}", lineColor); // efficiency->SetDirectory(0); @@ -198,11 +198,34 @@ void PlotAll() // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Matching_Trigger_MuPt20/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20_Matched","TriggerEfficiency_SingleMuon_HLT_IsoMu20_Matched_MuPt20.root",kOrange); - MeasureTriggerEfficiency("2016DataPlots_SingleMuon_JetSelected_Trigger_MuPt20/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24","TriggerEfficiency_SingleMuon_HLT_IsoMu24_MuPt20.root",kBlue); - MeasureTriggerEfficiency("2016DataPlots_SingleMuon_JetSelected_Trigger_MuPt20/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24_Matched","TriggerEfficiency_SingleMuon_HLT_IsoMu24_Matched_MuPt20.root",kRed); + // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20_newCode_CSVcut/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24","TriggerEfficiency_SingleMuon_HLT_IsoMu24_MuPt20_CSVcut.root",kBlue); + // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20_newCode_CSVcut/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24_Matched","TriggerEfficiency_SingleMuon_HLT_IsoMu24_Matched_MuPt20_CSVcut.root",kRed); + + // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20_newCode_CSVcut/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20","TriggerEfficiency_SingleMuon_HLT_IsoMu20_MuPt20_CSVcut.root",kGreen); + // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20_newCode_CSVcut/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20_Matched","TriggerEfficiency_SingleMuon_HLT_IsoMu20_Matched_MuPt20_CSVcut.root",kOrange); + + + // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20_newCode_noCSVcut/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24","TriggerEfficiency_SingleMuon_HLT_IsoMu24_MuPt20_noCSVcut.root",kBlue); + // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20_newCode_noCSVcut/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24_Matched","TriggerEfficiency_SingleMuon_HLT_IsoMu24_Matched_MuPt20_noCSVcut.root",kRed); + + // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20_newCode_noCSVcut/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20","TriggerEfficiency_SingleMuon_HLT_IsoMu20_MuPt20_noCSVcut.root",kGreen); + // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20_newCode_noCSVcut/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20_Matched","TriggerEfficiency_SingleMuon_HLT_IsoMu20_Matched_MuPt20_noCSVcut.root",kOrange); + + + // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20_oldCode_CSVcut/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24","TriggerEfficiency_SingleMuon_HLT_oldCode_IsoMu24_MuPt20_CSVcut.root",kBlue); + // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20_oldCode_CSVcut/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24_Matched","TriggerEfficiency_SingleMuon_HLT_oldCode_IsoMu24_Matched_MuPt20_CSVcut.root",kRed); + + // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20_oldCode_CSVcut/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20","TriggerEfficiency_SingleMuon_HLT_oldCode_IsoMu20_MuPt20_CSVcut.root",kGreen); + // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20_oldCode_CSVcut/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20_Matched","TriggerEfficiency_SingleMuon_HLT_oldCode_IsoMu20_Matched_MuPt20_CSVcut.root",kOrange); + + MeasureTriggerEfficiency("2016DataPlots/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24","TriggerEfficiency_SingleMuon_HLT_IsoMu24_MuPt20_CSVcut.root",kBlue); + MeasureTriggerEfficiency("2016DataPlots/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24_Matched","TriggerEfficiency_SingleMuon_HLT_IsoMu24_Matched_MuPt20_CSVcut.root",kRed); + + MeasureTriggerEfficiency("2016DataPlots/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20","TriggerEfficiency_SingleMuon_HLT_IsoMu20_MuPt20_CSVcut.root",kGreen); + MeasureTriggerEfficiency("2016DataPlots/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20_Matched","TriggerEfficiency_SingleMuon_HLT_IsoMu20_Matched_MuPt20_CSVcut.root",kOrange); + + - MeasureTriggerEfficiency("2016DataPlots_SingleMuon_JetSelected_Trigger_MuPt20/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20","TriggerEfficiency_SingleMuon_HLT_IsoMu20_MuPt20.root",kGreen); - MeasureTriggerEfficiency("2016DataPlots_SingleMuon_JetSelected_Trigger_MuPt20/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20_Matched","TriggerEfficiency_SingleMuon_HLT_IsoMu20_Matched_MuPt20.root",kOrange); } diff --git a/scripts/computeAllPUWeights.sh b/scripts/computeAllPUWeights.sh index c70e386b7..e886cb319 100755 --- a/scripts/computeAllPUWeights.sh +++ b/scripts/computeAllPUWeights.sh @@ -27,6 +27,8 @@ #get_sample_PU_weights.exe --realPU weights/Collision16PileupHistogram.root --realPU_up weights/Collision16PileupHistogramUp.root --realPU_down weights/Collision16PileupHistogramDown.root --input inputFiles/2016ResonantDiHiggs4BDataSets/MCSignal_GluGluToRadionToHHTo4B_M-900_narrow_13TeV-madgraph.txt #get_sample_PU_weights.exe --realPU weights/Collision16PileupHistogram.root --realPU_up weights/Collision16PileupHistogramUp.root --realPU_down weights/Collision16PileupHistogramDown.root --input inputFiles/2016ResonantDiHiggs4BDataSets/MCSignal_RadionTohhTohbbhbb_narrow_M-1000_13TeV-madgraph.txt #get_sample_PU_weights.exe --realPU weights/Collision16PileupHistogram.root --realPU_up weights/Collision16PileupHistogramUp.root --realPU_down weights/Collision16PileupHistogramDown.root --input inputFiles/2016ResonantDiHiggs4BDataSets/MCSignal_RadionTohhTohbbhbb_narrow_M-1200_13TeV-madgraph.txt +#get_sample_PU_weights.exe --realPU weights/Collision16PileupHistogram.root --realPU_up weights/Collision16PileupHistogramUp.root --realPU_down weights/Collision16PileupHistogramDown.root --input inputFiles/2016ResonantDiHiggs4BDataSets/MC_TT_TuneCUETP8M2T4_13TeV-powheg-pythia8.txt + #2016 NON RESONANT SAMPLES get_sample_PU_weights.exe --realPU weights/Collision16PileupHistogram.root --realPU_up weights/Collision16PileupHistogramUp.root --realPU_down weights/Collision16PileupHistogramDown.root -output weights/2016/GluGluToHHTo4B_node_SM_13TeV-madgraph_PUweights.txt --input inputFiles/2016NonResonantDiHiggs4BDataSets/GluGluToHHTo4B_node_SM_13TeV-madgraph.txt diff --git a/src/OfflineProducerHelper.cc b/src/OfflineProducerHelper.cc index 6be84dbcd..04461dbe5 100644 --- a/src/OfflineProducerHelper.cc +++ b/src/OfflineProducerHelper.cc @@ -52,12 +52,14 @@ void OfflineProducerHelper::initializeObjectsForCuts(OutputTree &ot) mapTriggerObjectIdAndFilter_[triggerObject.first.first].emplace_back(triggerObject.first.second); ot.declareUserIntBranch(triggerObject.second, 0); } - ot.declareUserFloatBranch("FirstSelectedJetPt", -1.); - ot.declareUserFloatBranch("SecondSelectedJetPt", -1.); - ot.declareUserFloatBranch("ThirdSelectedJetPt", -1.); - ot.declareUserFloatBranch("ForthSelectedJetPt", -1.); - ot.declareUserFloatBranch("SelectedJetPtSum", -1.); - ot.declareUserFloatBranch("ThirdSelectedJetDeepCSV", -1.); + + ot.declareUserFloatBranch("FirstJetPt", -1.); + ot.declareUserFloatBranch("SecondJetPt", -1.); + ot.declareUserFloatBranch("ThirdJetPt", -1.); + ot.declareUserFloatBranch("ForthJetPt", -1.); + ot.declareUserFloatBranch("FourHighetJetPtSum", -1.); + ot.declareUserFloatBranch("ThirdJetDeepCSV", -1.); + ot.declareUserFloatBranch("ForthJetCMVA", -1.); ot.declareUserFloatBranch("HighestIsoMuonPt", -1.); } @@ -151,46 +153,12 @@ void OfflineProducerHelper::save_WAndZLeptonDecays (NanoAODTree& nat, OutputTree void OfflineProducerHelper::save_TriggerObjects (NanoAODTree& nat, OutputTree &ot, EventInfo& ei) { - for( const auto & triggerAndBranch : any_cast, std::string > >(parameterList_->at("TriggerObjectsForStudies")) ) { ot.userInt(triggerAndBranch.second) = mapTriggerMatching_[triggerAndBranch.first]; } - std::vector candidatePt = - { - ei.H1_b1->P4().Pt(), - ei.H1_b2->P4().Pt(), - ei.H2_b1->P4().Pt(), - ei.H2_b2->P4().Pt() - }; - stable_sort(candidatePt.begin(), candidatePt.end(), greater()); - - ot.userFloat("FirstSelectedJetPt") = candidatePt[0]; - ot.userFloat("SecondSelectedJetPt") = candidatePt[1]; - ot.userFloat("ThirdSelectedJetPt") = candidatePt[2]; - ot.userFloat("ForthSelectedJetPt") = candidatePt[3]; - ot.userFloat("SelectedJetPtSum") = candidatePt[0] + candidatePt[1] + candidatePt[2] + candidatePt[3]; - - - if(any_cast(parameterList_->at("bbbbChoice")) != "None") - { - std::vector candidateDeepCSV = - { - get_property(ei.H1_b1.get(),Jet_btagDeepB), - get_property(ei.H1_b2.get(),Jet_btagDeepB), - get_property(ei.H2_b1.get(),Jet_btagDeepB), - get_property(ei.H2_b2.get(),Jet_btagDeepB) - }; - stable_sort(candidateDeepCSV.begin(), candidateDeepCSV.end(), greater()); - ot.userFloat("ThirdSelectedJetDeepCSV") = candidateDeepCSV[2]; - } - else - { - ot.userFloat("ThirdSelectedJetDeepCSV") = get_property((*thirdDeepCSVJet), Jet_btagDeepB); - } - return; } @@ -721,7 +689,6 @@ void OfflineProducerHelper::fillJetEnergyVariationBranch(OutputTree &ot, std::st bool OfflineProducerHelper::select_bbbb_jets(NanoAODTree& nat, EventInfo& ei, OutputTree &ot, std::vector listOfPassedTriggers) { - if (*(nat.nJet) < 4) return false; std::vector unsmearedJets; @@ -818,26 +785,11 @@ bool OfflineProducerHelper::select_bbbb_jets(NanoAODTree& nat, EventInfo& ei, Ou { ordered_jets = bbbb_jets_idxs_HighestCSVandClosestToMh(&jets.second); } - else if(strategy == "None") - { - thirdDeepCSVJet = std::make_unique(jets.second[2]); - //order them back by pt - stable_sort(jets.second.begin(), jets.second.end(), [](const Jet & a, const Jet & b) -> bool - { - return ( a.P4().Pt() > b.P4().Pt() ); - }); - //I will keep only the four highest pt jets - ordered_jets = jets.second; - // ordered_jets.push_back(jets.second[0]); - // ordered_jets.push_back(jets.second[1]); - // ordered_jets.push_back(jets.second[2]); - // ordered_jets.push_back(jets.second[3]); - } + else throw std::runtime_error("cannot recognize bbbb choice strategy " + strategy); // std::cout << __PRETTY_FUNCTION__ << ordered_jets.size() << std::endl; - - if(ordered_jets.size()!=4 && strategy != "None") + if(ordered_jets.size()!=4) { if(strategy == "HighestCSVandClosestToMh") { @@ -851,12 +803,23 @@ bool OfflineProducerHelper::select_bbbb_jets(NanoAODTree& nat, EventInfo& ei, Ou if(debug) std::cout<< "Event " << *(nat.run) << " - " << *(nat.luminosityBlock) << " - " << *(nat.event) << std::endl; - std::vector< std::unique_ptr > selectedCandidates; + std::vector< std::unique_ptr > candidatesForTriggerMatching; + + // if(any_cast(parameterList_->at("TriggerStudies"))) //case of trigger studies + // { + // for(auto jet : jets.second) + // { + // candidatesForTriggerMatching.emplace_back(std::make_unique(jet)); + // } + // } + // else + // if(!any_cast(parameterList_->at("TriggerStudies"))) + // { for(auto jet : ordered_jets) { - selectedCandidates.emplace_back(std::make_unique(jet)); - //std::cout<P4().Eta()<<" "<P4().Eta()<(jet)); } + // } if(any_cast(parameterList_->at("ObjectsForCut")) == "TriggerObjects") { @@ -879,15 +842,44 @@ bool OfflineProducerHelper::select_bbbb_jets(NanoAODTree& nat, EventInfo& ei, Ou } if(!matchingJetFound) { - ot.userFloat("HighestIsoMuonPt") = nat.Muon_pt.At(muonJetId); - selectedCandidates.emplace_back(std::make_unique(Muon(muonJetId, &nat))); + ot.userFloat("HighestIsoMuonPt") = nat.Muon_pt.At(muonIt); + candidatesForTriggerMatching.emplace_back(std::make_unique(Muon(muonIt, &nat))); break; } } } + + + // sort by deepCSV + stable_sort(ordered_jets.begin(), ordered_jets.end(), [](const Jet & a, const Jet & b) -> bool + { + return ( get_property(a, Jet_btagDeepB) > get_property(b, Jet_btagDeepB) ); + }); + + ot.userFloat("ThirdJetDeepCSV") = get_property(ordered_jets[2],Jet_btagDeepB); + + // order by CMVA + stable_sort(ordered_jets.begin(), ordered_jets.end(), [](const Jet & a, const Jet & b) -> bool + { + return ( get_property(a, Jet_btagCMVA) > get_property(b, Jet_btagCMVA) ); + }); + ot.userFloat("ForthJetCMVA") = get_property(ordered_jets[3],Jet_btagCMVA); + + //order by unregressed pt + stable_sort(ordered_jets.begin(), ordered_jets.end(), [](const Jet & a, const Jet & b) -> bool + { + return ( a.P4().Pt() > a.P4().Pt() ); + }); + + ot.userFloat("FirstJetPt") = ordered_jets[0].P4().Pt(); + ot.userFloat("SecondJetPt") = ordered_jets[1].P4().Pt(); + ot.userFloat("ThirdJetPt") = ordered_jets[2].P4().Pt(); + ot.userFloat("ForthJetPt") = ordered_jets[3].P4().Pt(); + ot.userFloat("FourHighetJetPtSum") = ordered_jets[0].P4().Pt() + ordered_jets[1].P4().Pt() + ordered_jets[2].P4().Pt() + ordered_jets[3].P4().Pt(); + } - calculateTriggerMatching(selectedCandidates,nat); + calculateTriggerMatching(candidatesForTriggerMatching,nat); for(auto & triggerFired : listOfPassedTriggers) @@ -900,14 +892,17 @@ bool OfflineProducerHelper::select_bbbb_jets(NanoAODTree& nat, EventInfo& ei, Ou if(debug) { std::cout<<"TriggerObjects not matched, Printing jets:\n"; - std::cout<<"Id\t\tPt\t\tEta\t\tPhi\t\tCSV\t\tSelected\n"; - for(const auto & jet : jets.second) + std::cout<<"Id\t\tPt\t\tEta\t\tPhi\t\tPId\t\tCSV\t\tSelected\n"; + for(const auto & candidate : candidatesForTriggerMatching) { - std::cout<< std::fixed << std::setprecision(3) <getIdx()<<"\t\t"<P4().Pt()<<"\t\t"<P4().Eta()<<"\t\t"<P4().Phi()<<"\t\t"<getCandidateTypeId()<<"\t\t"; + if(candidate->getCandidateTypeId() == 1) std::cout<< std::fixed << std::setprecision(3)<(candidate.get())),Jet_btagDeepB)<<"\t\t"; + else std::cout << "\t\t\t"; bool selected=false; for(const auto & selectedJet : ordered_jets) { - if(selectedJet.getIdx() == jet.getIdx()) + if(candidate->getCandidateTypeId() != 1) continue; + if(selectedJet.getIdx() == candidate->getIdx()) { selected=true; break; @@ -916,9 +911,6 @@ bool OfflineProducerHelper::select_bbbb_jets(NanoAODTree& nat, EventInfo& ei, Ou if(selected) std::cout<<"*"; std::cout<getIdx()<<"\t\t"<P4().Pt()<<"\t\t"<P4().Eta()<<"\t\t"<P4().Phi()<<"\t\t"<getCandidateTypeId()<<"\n"; } } @@ -969,16 +961,15 @@ bool OfflineProducerHelper::select_bbbb_jets(NanoAODTree& nat, EventInfo& ei, Ou if(any_cast(parameterList_->at("LMRToMMRTransition"))>=0. && ei.HH->P4().M() > any_cast(parameterList_->at("LMRToMMRTransition"))) targetHiggsMass = any_cast(parameterList_->at("HiggsMassMMR")); } - else if(strategy != "None") + else { targetHiggsMass = any_cast(parameterList_->at("HiggsMass")); } - else targetHiggsMass = 120.; - + ei.HH_2DdeltaM = pow(ei.H1->P4().M() - targetHiggsMass,2) + pow(ei.H2->P4().M() - targetHiggsMass,2); bool applyKineamticFit=true; - if(applyKineamticFit && strategy != "None") + if(applyKineamticFit) { HH4b_kinFit::constrainHH_signalMeasurement(&ordered_jets.at(0).p4Regressed_, &ordered_jets.at(1).p4Regressed_, &ordered_jets.at(2).p4Regressed_, &ordered_jets.at(3).p4Regressed_); CompositeCandidate H1kf = CompositeCandidate(ordered_jets.at(0), ordered_jets.at(1)); @@ -1070,7 +1061,7 @@ bool OfflineProducerHelper::select_bbbb_jets(NanoAODTree& nat, EventInfo& ei, Ou } -//functions fo apply preselection cuts: +//functions for apply preselection cuts: void OfflineProducerHelper::bJets_PreselectionCut(std::vector &jets) { @@ -1635,8 +1626,9 @@ void OfflineProducerHelper::AddVBFGenMatchVariables(NanoAODTree& nat, EventInfo& return; } -void OfflineProducerHelper::AddGGFCategoryVariables(NanoAODTree& nat, EventInfo& ei,std::vector ordered_jets){ - //Fill branches with selected b-jets ordered by pt +void OfflineProducerHelper::AddGGFCategoryVariables(NanoAODTree& nat, EventInfo& ei,std::vector ordered_jets) +{ + //Fill branches with selected b-jets ordered by pt std::vector presel_bjets; uint m=0; while(m<4){presel_bjets.push_back(ordered_jets.at(m)); m++;} stable_sort(presel_bjets.begin(), presel_bjets.end(), [](const Jet & a, const Jet & b) -> bool @@ -1661,133 +1653,134 @@ void OfflineProducerHelper::AddGGFCategoryVariables(NanoAODTree& nat, EventInfo& void OfflineProducerHelper::AddVBFCategoryVariables(NanoAODTree& nat, EventInfo& ei,std::vector ordered_jets) { - //Fill branches with selected b-jets ordered by pt - std::vector presel_bjets; - uint m=0; while(m<4){presel_bjets.push_back(ordered_jets.at(m)); m++;} - stable_sort(presel_bjets.begin(), presel_bjets.end(), [](const Jet & a, const Jet & b) -> bool - {return ( get_property(a, Jet_pt) > get_property(b, Jet_pt) );}); - ei.HH_b1 = presel_bjets.at(0); - ei.HH_b2 = presel_bjets.at(1); - ei.HH_b3 = presel_bjets.at(2); - ei.HH_b4 = presel_bjets.at(3); - //Mass cut variables with a random swap to be sure that the m1 and m2 are simmetric when selecting the signal region - bool swapped = (int(ei.H1->P4().Pt()*100.) % 2 == 1); - if (!swapped){ei.H1rand = ei.H1.get();ei.H2rand = ei.H2.get();} - else{ei.H1rand = ei.H2.get();ei.H2rand = ei.H1.get();} - //dR,dPhi and dEta between pair b's - ei.H1_bb_deltaR = ei.H1_b1->P4().DeltaR(ei.H1_b2->P4()); - ei.H1_bb_deltaPhi = ei.H1_b1->P4().DeltaPhi(ei.H1_b2->P4()); - ei.H1_bb_deltaEta = abs(ei.H1_b1->P4().Eta() - ei.H1_b2->P4().Eta() ); - ei.H2_bb_deltaR = ei.H2_b1->P4().DeltaR(ei.H2_b2->P4()); - ei.H2_bb_deltaPhi = ei.H2_b1->P4().DeltaPhi(ei.H2_b2->P4()); - ei.H2_bb_deltaEta = abs(ei.H2_b1->P4().Eta() - ei.H2_b2->P4().Eta() ); - //Special variables:deltaR between jets - ei.b1b2_deltaR = ei.HH_b1->P4().DeltaR(ei.HH_b2->P4()); - ei.b1b3_deltaR = ei.HH_b1->P4().DeltaR(ei.HH_b3->P4()); - ei.b1b4_deltaR = ei.HH_b1->P4().DeltaR(ei.HH_b4->P4()); - ei.b1j1_deltaR = ei.HH_b1->P4().DeltaR(ei.JJ_j1->P4()); - ei.b1j2_deltaR = ei.HH_b1->P4().DeltaR(ei.JJ_j2->P4()); - ei.b2b3_deltaR = ei.HH_b2->P4().DeltaR(ei.HH_b3->P4()); - ei.b2b4_deltaR = ei.HH_b2->P4().DeltaR(ei.HH_b4->P4()); - ei.b2j1_deltaR = ei.HH_b2->P4().DeltaR(ei.JJ_j1->P4()); - ei.b2j2_deltaR = ei.HH_b2->P4().DeltaR(ei.JJ_j2->P4()); - ei.b3b4_deltaR = ei.HH_b3->P4().DeltaR(ei.HH_b4->P4()); - ei.b3j1_deltaR = ei.HH_b3->P4().DeltaR(ei.JJ_j1->P4()); - ei.b3j2_deltaR = ei.HH_b3->P4().DeltaR(ei.JJ_j2->P4()); - ei.b4j1_deltaR = ei.HH_b4->P4().DeltaR(ei.JJ_j1->P4()); - ei.b4j2_deltaR = ei.HH_b4->P4().DeltaR(ei.JJ_j2->P4()); - ei.j1j2_deltaR = ei.JJ_j1->P4().DeltaR(ei.JJ_j2->P4()); - //Special variables:deltaPhi between jets - ei.b1b2_deltaPhi = ei.HH_b1->P4().DeltaPhi(ei.HH_b2->P4()); - ei.b1b3_deltaPhi = ei.HH_b1->P4().DeltaPhi(ei.HH_b3->P4()); - ei.b1b4_deltaPhi = ei.HH_b1->P4().DeltaPhi(ei.HH_b4->P4()); - ei.b1j1_deltaPhi = ei.HH_b1->P4().DeltaPhi(ei.JJ_j1->P4()); - ei.b1j2_deltaPhi = ei.HH_b1->P4().DeltaPhi(ei.JJ_j2->P4()); - ei.b2b3_deltaPhi = ei.HH_b2->P4().DeltaPhi(ei.HH_b3->P4()); - ei.b2b4_deltaPhi = ei.HH_b2->P4().DeltaPhi(ei.HH_b4->P4()); - ei.b2j1_deltaPhi = ei.HH_b2->P4().DeltaPhi(ei.JJ_j1->P4()); - ei.b2j2_deltaPhi = ei.HH_b2->P4().DeltaPhi(ei.JJ_j2->P4()); - ei.b3b4_deltaPhi = ei.HH_b3->P4().DeltaPhi(ei.HH_b4->P4()); - ei.b3j1_deltaPhi = ei.HH_b3->P4().DeltaPhi(ei.JJ_j1->P4()); - ei.b3j2_deltaPhi = ei.HH_b3->P4().DeltaPhi(ei.JJ_j2->P4()); - ei.b4j1_deltaPhi = ei.HH_b4->P4().DeltaPhi(ei.JJ_j1->P4()); - ei.b4j2_deltaPhi = ei.HH_b4->P4().DeltaPhi(ei.JJ_j2->P4()); - ei.j1j2_deltaPhi = ei.JJ_j1->P4().DeltaPhi(ei.JJ_j2->P4()); - //Special variables:deltaEta between jets - ei.b1b2_deltaEta = abs(ei.HH_b1->P4().Eta() - ei.HH_b2->P4().Eta() ); - ei.b1b3_deltaEta = abs(ei.HH_b1->P4().Eta() - ei.HH_b3->P4().Eta() ); - ei.b1b4_deltaEta = abs(ei.HH_b1->P4().Eta() - ei.HH_b4->P4().Eta() ); - ei.b1j1_deltaEta = abs(ei.HH_b1->P4().Eta() - ei.JJ_j1->P4().Eta() ); - ei.b1j2_deltaEta = abs(ei.HH_b1->P4().Eta() - ei.JJ_j2->P4().Eta() ); - ei.b2b3_deltaEta = abs(ei.HH_b2->P4().Eta() - ei.HH_b3->P4().Eta() ); - ei.b2b4_deltaEta = abs(ei.HH_b2->P4().Eta() - ei.HH_b4->P4().Eta() ); - ei.b2j1_deltaEta = abs(ei.HH_b2->P4().Eta() - ei.JJ_j1->P4().Eta() ); - ei.b2j2_deltaEta = abs(ei.HH_b2->P4().Eta() - ei.JJ_j2->P4().Eta() ); - ei.b3b4_deltaEta = abs(ei.HH_b3->P4().Eta() - ei.HH_b4->P4().Eta() ); - ei.b3j1_deltaEta = abs(ei.HH_b3->P4().Eta() - ei.JJ_j1->P4().Eta() ); - ei.b3j2_deltaEta = abs(ei.HH_b3->P4().Eta() - ei.JJ_j2->P4().Eta() ); - ei.b4j1_deltaEta = abs(ei.HH_b4->P4().Eta() - ei.JJ_j1->P4().Eta() ); - ei.b4j2_deltaEta = abs(ei.HH_b4->P4().Eta() - ei.JJ_j2->P4().Eta() ); - ei.j1j2_deltaEta = abs(ei.JJ_j1->P4().Eta() - ei.JJ_j2->P4().Eta() ); - ei.VBFSelectedDeltaEta = abs(ei.JJ_j1->P4().Eta() - ei.JJ_j2->P4().Eta()) ; - ei.VBFSelectedEtaSign = (ei.JJ_j1->P4().Eta() * ei.JJ_j2->P4().Eta())/ abs( ei.JJ_j1->P4().Eta() * ei.JJ_j2->P4().Eta() ) ; - //Special variables: deltaR between h1,h2,j1,j2,HH,JJ - ei.h1h2_deltaR = ei.H1->P4().DeltaR(ei.H2->P4()); - ei.h1j1_deltaR = ei.H1->P4().DeltaR(ei.JJ_j1->P4()); - ei.h1j2_deltaR = ei.H1->P4().DeltaR(ei.JJ_j2->P4()); - ei.h2j1_deltaR = ei.H2->P4().DeltaR(ei.JJ_j1->P4()); - ei.h2j2_deltaR = ei.H2->P4().DeltaR(ei.JJ_j2->P4()); - ei.h1jj_deltaR = ei.H1->P4().DeltaR(ei.JJ->P4()); - ei.h2jj_deltaR = ei.H2->P4().DeltaR(ei.JJ->P4()); - ei.hhj1_deltaR = ei.HH->P4().DeltaR(ei.JJ_j1->P4()); - ei.hhj2_deltaR = ei.HH->P4().DeltaR(ei.JJ_j2->P4()); - ei.hhjj_deltaR = ei.HH->P4().DeltaR(ei.JJ->P4()); - //Special variables: deltaPhi between h1,h2,j1,j2,HH,JJ - ei.h1h2_deltaPhi = ei.H1->P4().DeltaPhi(ei.H2->P4()); - ei.h1j1_deltaPhi = ei.H1->P4().DeltaPhi(ei.JJ_j1->P4()); - ei.h1j2_deltaPhi = ei.H1->P4().DeltaPhi(ei.JJ_j2->P4()); - ei.h2j1_deltaPhi = ei.H2->P4().DeltaPhi(ei.JJ_j1->P4()); - ei.h2j2_deltaPhi = ei.H2->P4().DeltaPhi(ei.JJ_j2->P4()); - ei.h1jj_deltaPhi = ei.H1->P4().DeltaPhi(ei.JJ->P4()); - ei.h2jj_deltaPhi = ei.H2->P4().DeltaPhi(ei.JJ->P4()); - ei.hhj1_deltaPhi = ei.HH->P4().DeltaPhi(ei.JJ_j1->P4()); - ei.hhj2_deltaPhi = ei.HH->P4().DeltaPhi(ei.JJ_j2->P4()); - ei.hhjj_deltaPhi = ei.HH->P4().DeltaPhi(ei.JJ->P4()); - //Special variables: deltaEta between h1,h2,j1,j2,HH,JJ - ei.h1h2_deltaEta = abs( ei.H1->P4().Eta() - ei.H2->P4().Eta()); - ei.h1j1_deltaEta = abs( ei.H1->P4().Eta() - ei.JJ_j1->P4().Eta()); - ei.h1j2_deltaEta = abs( ei.H1->P4().Eta() - ei.JJ_j2->P4().Eta()); - ei.h2j1_deltaEta = abs( ei.H2->P4().Eta() - ei.JJ_j1->P4().Eta()); - ei.h2j2_deltaEta = abs( ei.H2->P4().Eta() - ei.JJ_j2->P4().Eta()); - ei.h1jj_deltaEta = abs( ei.H1->P4().Eta() - ei.JJ->P4().Eta()); - ei.h2jj_deltaEta = abs( ei.H2->P4().Eta() - ei.JJ->P4().Eta()); - ei.hhj1_deltaEta = abs( ei.HH->P4().Eta() - ei.JJ_j1->P4().Eta()); - ei.hhj2_deltaEta = abs( ei.HH->P4().Eta() - ei.JJ_j2->P4().Eta()); - ei.hhjj_deltaEta = abs( ei.HH->P4().Eta() - ei.JJ->P4().Eta()); - //Extra and special variables - ei.j1etaj2eta = ei.JJ_j1->P4().Eta()*ei.JJ_j2->P4().Eta(); - ei.maxj1etaj2eta = max( abs(ei.JJ_j1->P4().Eta() ), abs(ei.JJ_j2->P4().Eta() ) ); - ei.ptbalance = abs((ei.HH->P4() + ei.JJ->P4() ).Pt()) / (ei.HH->P4().Pt() + ei.JJ->P4().Pt()); - float ptcalc = sqrt (pow((ei.HH->P4().Px() - (((ei.JJ_j1->P4()+ei.JJ_j2->P4()).Px())/ 2)),2) + pow((ei.HH->P4().Py() - (((ei.JJ_j1->P4()+ei.JJ_j2->P4()).Py())/ 2)),2)); - if( (ei.JJ_j1->P4()-ei.JJ_j2->P4()).Pt() != 0){ei.ptcentrality = ptcalc / (ei.JJ_j1->P4()-ei.JJ_j2->P4()).Pt();} - else{ei.ptcentrality = -1;} - if(ei.JJ_j1->P4().Eta() != ei.JJ_j2->P4().Eta()){ei.etacentrality = abs( ei.HH->P4().Eta() - ((ei.JJ_j1->P4().Eta()+ei.JJ_j2->P4().Eta())/2)) / abs(ei.JJ_j1->P4().Eta() - ei.JJ_j2->P4().Eta());} - else{ei.etacentrality = -1;} - int nextra=0,nextrabarrel=0,nextraendcap=0; - for (uint ij = 0; ij < *(nat.nJet); ++ij) - { - if ( abs(get_property(Jet(ij, &nat), Jet_pt)) < 25) continue; - if ( abs(get_property(Jet(ij, &nat), Jet_eta)) < 5){nextra++;} - if ( abs(get_property(Jet(ij, &nat), Jet_eta)) < 2.4){nextrabarrel++;} - if ( abs(get_property(Jet(ij, &nat), Jet_eta)) > 2.4 && abs(get_property(Jet(ij, &nat), Jet_eta)) < 5){nextraendcap++;} -} -ei.nExtraJet = nextra; -ei.nExtraJetbarrel = nextrabarrel; -ei.nExtraJetendcap = nextraendcap; -return; + //Fill branches with selected b-jets ordered by pt + std::vector presel_bjets; + uint m=0; while(m<4){presel_bjets.push_back(ordered_jets.at(m)); m++;} + stable_sort(presel_bjets.begin(), presel_bjets.end(), [](const Jet & a, const Jet & b) -> bool + {return ( get_property(a, Jet_pt) > get_property(b, Jet_pt) );}); + ei.HH_b1 = presel_bjets.at(0); + ei.HH_b2 = presel_bjets.at(1); + ei.HH_b3 = presel_bjets.at(2); + ei.HH_b4 = presel_bjets.at(3); + //Mass cut variables with a random swap to be sure that the m1 and m2 are simmetric when selecting the signal region + bool swapped = (int(ei.H1->P4().Pt()*100.) % 2 == 1); + if (!swapped){ei.H1rand = ei.H1.get();ei.H2rand = ei.H2.get();} + else{ei.H1rand = ei.H2.get();ei.H2rand = ei.H1.get();} + //dR,dPhi and dEta between pair b's + ei.H1_bb_deltaR = ei.H1_b1->P4().DeltaR(ei.H1_b2->P4()); + ei.H1_bb_deltaPhi = ei.H1_b1->P4().DeltaPhi(ei.H1_b2->P4()); + ei.H1_bb_deltaEta = abs(ei.H1_b1->P4().Eta() - ei.H1_b2->P4().Eta() ); + ei.H2_bb_deltaR = ei.H2_b1->P4().DeltaR(ei.H2_b2->P4()); + ei.H2_bb_deltaPhi = ei.H2_b1->P4().DeltaPhi(ei.H2_b2->P4()); + ei.H2_bb_deltaEta = abs(ei.H2_b1->P4().Eta() - ei.H2_b2->P4().Eta() ); + //Special variables:deltaR between jets + ei.b1b2_deltaR = ei.HH_b1->P4().DeltaR(ei.HH_b2->P4()); + ei.b1b3_deltaR = ei.HH_b1->P4().DeltaR(ei.HH_b3->P4()); + ei.b1b4_deltaR = ei.HH_b1->P4().DeltaR(ei.HH_b4->P4()); + ei.b1j1_deltaR = ei.HH_b1->P4().DeltaR(ei.JJ_j1->P4()); + ei.b1j2_deltaR = ei.HH_b1->P4().DeltaR(ei.JJ_j2->P4()); + ei.b2b3_deltaR = ei.HH_b2->P4().DeltaR(ei.HH_b3->P4()); + ei.b2b4_deltaR = ei.HH_b2->P4().DeltaR(ei.HH_b4->P4()); + ei.b2j1_deltaR = ei.HH_b2->P4().DeltaR(ei.JJ_j1->P4()); + ei.b2j2_deltaR = ei.HH_b2->P4().DeltaR(ei.JJ_j2->P4()); + ei.b3b4_deltaR = ei.HH_b3->P4().DeltaR(ei.HH_b4->P4()); + ei.b3j1_deltaR = ei.HH_b3->P4().DeltaR(ei.JJ_j1->P4()); + ei.b3j2_deltaR = ei.HH_b3->P4().DeltaR(ei.JJ_j2->P4()); + ei.b4j1_deltaR = ei.HH_b4->P4().DeltaR(ei.JJ_j1->P4()); + ei.b4j2_deltaR = ei.HH_b4->P4().DeltaR(ei.JJ_j2->P4()); + ei.j1j2_deltaR = ei.JJ_j1->P4().DeltaR(ei.JJ_j2->P4()); + //Special variables:deltaPhi between jets + ei.b1b2_deltaPhi = ei.HH_b1->P4().DeltaPhi(ei.HH_b2->P4()); + ei.b1b3_deltaPhi = ei.HH_b1->P4().DeltaPhi(ei.HH_b3->P4()); + ei.b1b4_deltaPhi = ei.HH_b1->P4().DeltaPhi(ei.HH_b4->P4()); + ei.b1j1_deltaPhi = ei.HH_b1->P4().DeltaPhi(ei.JJ_j1->P4()); + ei.b1j2_deltaPhi = ei.HH_b1->P4().DeltaPhi(ei.JJ_j2->P4()); + ei.b2b3_deltaPhi = ei.HH_b2->P4().DeltaPhi(ei.HH_b3->P4()); + ei.b2b4_deltaPhi = ei.HH_b2->P4().DeltaPhi(ei.HH_b4->P4()); + ei.b2j1_deltaPhi = ei.HH_b2->P4().DeltaPhi(ei.JJ_j1->P4()); + ei.b2j2_deltaPhi = ei.HH_b2->P4().DeltaPhi(ei.JJ_j2->P4()); + ei.b3b4_deltaPhi = ei.HH_b3->P4().DeltaPhi(ei.HH_b4->P4()); + ei.b3j1_deltaPhi = ei.HH_b3->P4().DeltaPhi(ei.JJ_j1->P4()); + ei.b3j2_deltaPhi = ei.HH_b3->P4().DeltaPhi(ei.JJ_j2->P4()); + ei.b4j1_deltaPhi = ei.HH_b4->P4().DeltaPhi(ei.JJ_j1->P4()); + ei.b4j2_deltaPhi = ei.HH_b4->P4().DeltaPhi(ei.JJ_j2->P4()); + ei.j1j2_deltaPhi = ei.JJ_j1->P4().DeltaPhi(ei.JJ_j2->P4()); + //Special variables:deltaEta between jets + ei.b1b2_deltaEta = abs(ei.HH_b1->P4().Eta() - ei.HH_b2->P4().Eta() ); + ei.b1b3_deltaEta = abs(ei.HH_b1->P4().Eta() - ei.HH_b3->P4().Eta() ); + ei.b1b4_deltaEta = abs(ei.HH_b1->P4().Eta() - ei.HH_b4->P4().Eta() ); + ei.b1j1_deltaEta = abs(ei.HH_b1->P4().Eta() - ei.JJ_j1->P4().Eta() ); + ei.b1j2_deltaEta = abs(ei.HH_b1->P4().Eta() - ei.JJ_j2->P4().Eta() ); + ei.b2b3_deltaEta = abs(ei.HH_b2->P4().Eta() - ei.HH_b3->P4().Eta() ); + ei.b2b4_deltaEta = abs(ei.HH_b2->P4().Eta() - ei.HH_b4->P4().Eta() ); + ei.b2j1_deltaEta = abs(ei.HH_b2->P4().Eta() - ei.JJ_j1->P4().Eta() ); + ei.b2j2_deltaEta = abs(ei.HH_b2->P4().Eta() - ei.JJ_j2->P4().Eta() ); + ei.b3b4_deltaEta = abs(ei.HH_b3->P4().Eta() - ei.HH_b4->P4().Eta() ); + ei.b3j1_deltaEta = abs(ei.HH_b3->P4().Eta() - ei.JJ_j1->P4().Eta() ); + ei.b3j2_deltaEta = abs(ei.HH_b3->P4().Eta() - ei.JJ_j2->P4().Eta() ); + ei.b4j1_deltaEta = abs(ei.HH_b4->P4().Eta() - ei.JJ_j1->P4().Eta() ); + ei.b4j2_deltaEta = abs(ei.HH_b4->P4().Eta() - ei.JJ_j2->P4().Eta() ); + ei.j1j2_deltaEta = abs(ei.JJ_j1->P4().Eta() - ei.JJ_j2->P4().Eta() ); + ei.VBFSelectedDeltaEta = abs(ei.JJ_j1->P4().Eta() - ei.JJ_j2->P4().Eta()) ; + ei.VBFSelectedEtaSign = (ei.JJ_j1->P4().Eta() * ei.JJ_j2->P4().Eta())/ abs( ei.JJ_j1->P4().Eta() * ei.JJ_j2->P4().Eta() ) ; + //Special variables: deltaR between h1,h2,j1,j2,HH,JJ + ei.h1h2_deltaR = ei.H1->P4().DeltaR(ei.H2->P4()); + ei.h1j1_deltaR = ei.H1->P4().DeltaR(ei.JJ_j1->P4()); + ei.h1j2_deltaR = ei.H1->P4().DeltaR(ei.JJ_j2->P4()); + ei.h2j1_deltaR = ei.H2->P4().DeltaR(ei.JJ_j1->P4()); + ei.h2j2_deltaR = ei.H2->P4().DeltaR(ei.JJ_j2->P4()); + ei.h1jj_deltaR = ei.H1->P4().DeltaR(ei.JJ->P4()); + ei.h2jj_deltaR = ei.H2->P4().DeltaR(ei.JJ->P4()); + ei.hhj1_deltaR = ei.HH->P4().DeltaR(ei.JJ_j1->P4()); + ei.hhj2_deltaR = ei.HH->P4().DeltaR(ei.JJ_j2->P4()); + ei.hhjj_deltaR = ei.HH->P4().DeltaR(ei.JJ->P4()); + //Special variables: deltaPhi between h1,h2,j1,j2,HH,JJ + ei.h1h2_deltaPhi = ei.H1->P4().DeltaPhi(ei.H2->P4()); + ei.h1j1_deltaPhi = ei.H1->P4().DeltaPhi(ei.JJ_j1->P4()); + ei.h1j2_deltaPhi = ei.H1->P4().DeltaPhi(ei.JJ_j2->P4()); + ei.h2j1_deltaPhi = ei.H2->P4().DeltaPhi(ei.JJ_j1->P4()); + ei.h2j2_deltaPhi = ei.H2->P4().DeltaPhi(ei.JJ_j2->P4()); + ei.h1jj_deltaPhi = ei.H1->P4().DeltaPhi(ei.JJ->P4()); + ei.h2jj_deltaPhi = ei.H2->P4().DeltaPhi(ei.JJ->P4()); + ei.hhj1_deltaPhi = ei.HH->P4().DeltaPhi(ei.JJ_j1->P4()); + ei.hhj2_deltaPhi = ei.HH->P4().DeltaPhi(ei.JJ_j2->P4()); + ei.hhjj_deltaPhi = ei.HH->P4().DeltaPhi(ei.JJ->P4()); + //Special variables: deltaEta between h1,h2,j1,j2,HH,JJ + ei.h1h2_deltaEta = abs( ei.H1->P4().Eta() - ei.H2->P4().Eta()); + ei.h1j1_deltaEta = abs( ei.H1->P4().Eta() - ei.JJ_j1->P4().Eta()); + ei.h1j2_deltaEta = abs( ei.H1->P4().Eta() - ei.JJ_j2->P4().Eta()); + ei.h2j1_deltaEta = abs( ei.H2->P4().Eta() - ei.JJ_j1->P4().Eta()); + ei.h2j2_deltaEta = abs( ei.H2->P4().Eta() - ei.JJ_j2->P4().Eta()); + ei.h1jj_deltaEta = abs( ei.H1->P4().Eta() - ei.JJ->P4().Eta()); + ei.h2jj_deltaEta = abs( ei.H2->P4().Eta() - ei.JJ->P4().Eta()); + ei.hhj1_deltaEta = abs( ei.HH->P4().Eta() - ei.JJ_j1->P4().Eta()); + ei.hhj2_deltaEta = abs( ei.HH->P4().Eta() - ei.JJ_j2->P4().Eta()); + ei.hhjj_deltaEta = abs( ei.HH->P4().Eta() - ei.JJ->P4().Eta()); + //Extra and special variables + ei.j1etaj2eta = ei.JJ_j1->P4().Eta()*ei.JJ_j2->P4().Eta(); + ei.maxj1etaj2eta = max( abs(ei.JJ_j1->P4().Eta() ), abs(ei.JJ_j2->P4().Eta() ) ); + ei.ptbalance = abs((ei.HH->P4() + ei.JJ->P4() ).Pt()) / (ei.HH->P4().Pt() + ei.JJ->P4().Pt()); + float ptcalc = sqrt (pow((ei.HH->P4().Px() - (((ei.JJ_j1->P4()+ei.JJ_j2->P4()).Px())/ 2)),2) + pow((ei.HH->P4().Py() - (((ei.JJ_j1->P4()+ei.JJ_j2->P4()).Py())/ 2)),2)); + if( (ei.JJ_j1->P4()-ei.JJ_j2->P4()).Pt() != 0){ei.ptcentrality = ptcalc / (ei.JJ_j1->P4()-ei.JJ_j2->P4()).Pt();} + else{ei.ptcentrality = -1;} + if(ei.JJ_j1->P4().Eta() != ei.JJ_j2->P4().Eta()){ei.etacentrality = abs( ei.HH->P4().Eta() - ((ei.JJ_j1->P4().Eta()+ei.JJ_j2->P4().Eta())/2)) / abs(ei.JJ_j1->P4().Eta() - ei.JJ_j2->P4().Eta());} + else{ei.etacentrality = -1;} + int nextra=0,nextrabarrel=0,nextraendcap=0; + for (uint ij = 0; ij < *(nat.nJet); ++ij) + { + if ( abs(get_property(Jet(ij, &nat), Jet_pt)) < 25) continue; + if ( abs(get_property(Jet(ij, &nat), Jet_eta)) < 5){nextra++;} + if ( abs(get_property(Jet(ij, &nat), Jet_eta)) < 2.4){nextrabarrel++;} + if ( abs(get_property(Jet(ij, &nat), Jet_eta)) > 2.4 && abs(get_property(Jet(ij, &nat), Jet_eta)) < 5){nextraendcap++;} + } + ei.nExtraJet = nextra; + ei.nExtraJetbarrel = nextrabarrel; + ei.nExtraJetendcap = nextraendcap; + return; } -float OfflineProducerHelper::GetBDTScore(EventInfo& ei){ +float OfflineProducerHelper::GetBDTScore(EventInfo& ei) +{ TMVA::Reader *reader0 = new TMVA::Reader( "!Color:Silent" ); float H1_eta_bdt=ei.H1->P4().Eta(); float H2_eta_bdt=ei.H2->P4().Eta(); @@ -2108,7 +2101,7 @@ bool OfflineProducerHelper::checkTriggerObjectMatching(std::vector void OfflineProducerHelper::calculateTriggerMatching(const std::vector< std::unique_ptr > &candidateList, NanoAODTree& nat) { if(debug) std::cout<<"Matching triggers, Objects found:\n"; - if(debug) std::cout<<"\t\tPt\t\tEta\t\tPhi\t\tBit\t\tMatchedJetId\n"; + if(debug) std::cout<<"\t\tPt\t\tEta\t\tPhi\t\tObjId\t\tBit\t\tMatchedJetId\n"; mapTriggerMatching_.clear(); @@ -2135,7 +2128,7 @@ void OfflineProducerHelper::calculateTriggerMatching(const std::vector< std::uni if(!isNeeded) isNeeded=true; if(newCandidate) { - if(debug) std::cout<< std::fixed << std::setprecision(3) <<"\t\t"<(parameterList_->at("bbbbChoice")) == "None" && triggerObjectId == 1) //case of no selection and jets + // if(any_cast(parameterList_->at("TriggerStudies")) && triggerObjectId == 1) + // { + // deltaR = 0; + // } + // else + // { + for(const auto & candidate : candidateList) //loop to find best Candidate matching DeltaR { - deltaR = 0.; - } - else - { - for(const auto & candidate : candidateList) //loop to find best Candidate matching DeltaR - { - if(candidate->getCandidateTypeId() != triggerObjectId) continue; // Skip different particles + if(candidate->getCandidateTypeId() != triggerObjectId) continue; // Skip different particles - float candidateEta = candidate->P4().Eta (); - float candidatePhi = candidate->P4().Phi (); - float tmpdeltaR = (candidateEta - triggerObjectEta)*(candidateEta - triggerObjectEta) + deltaPhi(candidatePhi,triggerObjectPhi)*deltaPhi(candidatePhi,triggerObjectPhi); + float candidateEta = candidate->P4().Eta (); + float candidatePhi = candidate->P4().Phi (); + float tmpdeltaR = (candidateEta - triggerObjectEta)*(candidateEta - triggerObjectEta) + deltaPhi(candidatePhi,triggerObjectPhi)*deltaPhi(candidatePhi,triggerObjectPhi); - if(tmpdeltaR < deltaR) - { - deltaR = tmpdeltaR; - tmpCandidateIdx=candidate->getIdx(); - - } + if(tmpdeltaR < deltaR) + { + deltaR = tmpdeltaR; + tmpCandidateIdx=candidate->getIdx(); } } + // } if(sqrt(deltaR) < any_cast(parameterList_->at("MaxDeltaR"))) // check if a matching was found { diff --git a/test/skim_ntuple.cpp b/test/skim_ntuple.cpp index 71829e0ab..1f262d1c4 100644 --- a/test/skim_ntuple.cpp +++ b/test/skim_ntuple.cpp @@ -129,9 +129,6 @@ int main(int argc, char** argv) throw std::runtime_error("UseAntiTagOnOneBjet can be done only using PreselectionCut = bJetCut"); } } - else if(bbbbChoice == "None"){ - parameterList.emplace("UseAntiTagOnOneBjet" ,config.readBoolOpt("parameters::UseAntiTagOnOneBjet" )); - } // else if(other selection type){ // parameters fo be retreived; // } @@ -357,7 +354,8 @@ int main(int argc, char** argv) } - parameterList.emplace("MaxDeltaR",config.readFloatOpt("triggers::MaxDeltaR")); + parameterList.emplace("MaxDeltaR" ,config.readFloatOpt("triggers::MaxDeltaR") ); + // parameterList.emplace("TriggerStudies",config.readBoolOpt ("triggers::TriggerStudies")); parameterList.emplace("TriggerObjectAndMinNumberMap", triggerObjectAndMinNumberMap); nat.triggerReader().setTriggers(triggerVector); From 8d0009f809b21c76b2174a29df4c8a45a3f066e4 Mon Sep 17 00:00:00 2001 From: fravera Date: Tue, 4 Jun 2019 10:57:34 -0500 Subject: [PATCH 04/12] e9e378b6fda3bac538c1e179213b63526a172f29 with oph from 2aedcefb1935c5e0bc8b3bd692024f45896a6e1c and updated all the code not related to the trigger --- src/OfflineProducerHelper.cc | 172 +++++++++++++++++------------------ 1 file changed, 82 insertions(+), 90 deletions(-) diff --git a/src/OfflineProducerHelper.cc b/src/OfflineProducerHelper.cc index 04461dbe5..4b156b1a0 100644 --- a/src/OfflineProducerHelper.cc +++ b/src/OfflineProducerHelper.cc @@ -153,12 +153,39 @@ void OfflineProducerHelper::save_WAndZLeptonDecays (NanoAODTree& nat, OutputTree void OfflineProducerHelper::save_TriggerObjects (NanoAODTree& nat, OutputTree &ot, EventInfo& ei) { + for( const auto & triggerAndBranch : any_cast, std::string > >(parameterList_->at("TriggerObjectsForStudies")) ) { ot.userInt(triggerAndBranch.second) = mapTriggerMatching_[triggerAndBranch.first]; } + std::vector candidatePt = + { + ei.H1_b1->P4().Pt(), + ei.H1_b2->P4().Pt(), + ei.H2_b1->P4().Pt(), + ei.H2_b2->P4().Pt() + }; + stable_sort(candidatePt.begin(), candidatePt.end(), greater()); + + std::vector candidateDeepCSV = + { + get_property(ei.H1_b1.get(),Jet_btagDeepB), + get_property(ei.H1_b2.get(),Jet_btagDeepB), + get_property(ei.H2_b1.get(),Jet_btagDeepB), + get_property(ei.H2_b2.get(),Jet_btagDeepB) + }; + stable_sort(candidateDeepCSV.begin(), candidateDeepCSV.end(), greater()); + + + ot.userFloat("FirstJetPt") = candidatePt[0]; + ot.userFloat("SecondJetPt") = candidatePt[1]; + ot.userFloat("ThirdJetPt") = candidatePt[2]; + ot.userFloat("ForthJetPt") = candidatePt[3]; + ot.userFloat("FourHighetJetPtSum") = candidatePt[0] + candidatePt[1] + candidatePt[2] + candidatePt[3]; + ot.userFloat("ThirdJetDeepCSV") = candidateDeepCSV[2]; + return; } @@ -791,129 +818,94 @@ bool OfflineProducerHelper::select_bbbb_jets(NanoAODTree& nat, EventInfo& ei, Ou // std::cout << __PRETTY_FUNCTION__ << ordered_jets.size() << std::endl; if(ordered_jets.size()!=4) { - if(strategy == "HighestCSVandClosestToMh") + if(!any_cast(parameterList_->at("UseAntiTagOnOneBjet")) && strategy == "HighestCSVandClosestToMh") { - if(!any_cast(parameterList_->at("UseAntiTagOnOneBjet"))) - { - throw std::runtime_error("OfflineProducerHelper::select_bbbb_jets -> candidates not found -> this should never happen to use jet energy variations"); - } - return false; + throw std::runtime_error("OfflineProducerHelper::select_bbbb_jets -> candidates not found -> this should never happen to use jet energy variations"); } + return false; } if(debug) std::cout<< "Event " << *(nat.run) << " - " << *(nat.luminosityBlock) << " - " << *(nat.event) << std::endl; - std::vector< std::unique_ptr > candidatesForTriggerMatching; - - // if(any_cast(parameterList_->at("TriggerStudies"))) //case of trigger studies - // { - // for(auto jet : jets.second) - // { - // candidatesForTriggerMatching.emplace_back(std::make_unique(jet)); - // } - // } - // else - // if(!any_cast(parameterList_->at("TriggerStudies"))) - // { - for(auto jet : ordered_jets) + if(jets.first == originalSampleName) { - candidatesForTriggerMatching.emplace_back(std::make_unique(jet)); - } - // } + std::vector< std::unique_ptr > selectedCandidates; + for(auto jet : ordered_jets) + { + selectedCandidates.emplace_back(std::make_unique(jet)); + //std::cout<P4().Eta()<<" "<P4().Eta()<(parameterList_->at("ObjectsForCut")) == "TriggerObjects") - { - for (uint muonIt = 0; muonIt < *(nat.nMuon); ++muonIt) + if(any_cast(parameterList_->at("ObjectsForCut")) == "TriggerObjects") { - if(nat.Muon_pfRelIso04_all[muonIt]<0.1) + for (uint muonIt = 0; muonIt < *(nat.nMuon); ++muonIt) { - int muonJetId = nat.Muon_jetIdx[muonIt]; - bool matchingJetFound = false; - if(muonJetId >= 0) + if(nat.Muon_pfRelIso04_all[muonIt]<0.1) { - for(auto jet : ordered_jets) + int muonJetId = nat.Muon_jetIdx[muonIt]; + bool matchingJetFound = false; + if(muonJetId >= 0) { - if(jet.getIdx() == muonJetId) + for(auto jet : ordered_jets) { - matchingJetFound = true; - break; - } - } - } - if(!matchingJetFound) - { - ot.userFloat("HighestIsoMuonPt") = nat.Muon_pt.At(muonIt); - candidatesForTriggerMatching.emplace_back(std::make_unique(Muon(muonIt, &nat))); - break; + if(jet.getIdx() == muonJetId) + { + matchingJetFound = true; + break; + } + } + } + + if(!matchingJetFound) + { + ot.userFloat("HighestIsoMuonPt") = nat.Muon_pt.At(muonIt); + selectedCandidates.emplace_back(std::make_unique(Muon(muonIt, &nat))); + break; + } } } } + + calculateTriggerMatching(selectedCandidates,nat); - - // sort by deepCSV - stable_sort(ordered_jets.begin(), ordered_jets.end(), [](const Jet & a, const Jet & b) -> bool - { - return ( get_property(a, Jet_btagDeepB) > get_property(b, Jet_btagDeepB) ); - }); - - ot.userFloat("ThirdJetDeepCSV") = get_property(ordered_jets[2],Jet_btagDeepB); - - // order by CMVA - stable_sort(ordered_jets.begin(), ordered_jets.end(), [](const Jet & a, const Jet & b) -> bool - { - return ( get_property(a, Jet_btagCMVA) > get_property(b, Jet_btagCMVA) ); - }); - ot.userFloat("ForthJetCMVA") = get_property(ordered_jets[3],Jet_btagCMVA); - - //order by unregressed pt - stable_sort(ordered_jets.begin(), ordered_jets.end(), [](const Jet & a, const Jet & b) -> bool - { - return ( a.P4().Pt() > a.P4().Pt() ); - }); - - ot.userFloat("FirstJetPt") = ordered_jets[0].P4().Pt(); - ot.userFloat("SecondJetPt") = ordered_jets[1].P4().Pt(); - ot.userFloat("ThirdJetPt") = ordered_jets[2].P4().Pt(); - ot.userFloat("ForthJetPt") = ordered_jets[3].P4().Pt(); - ot.userFloat("FourHighetJetPtSum") = ordered_jets[0].P4().Pt() + ordered_jets[1].P4().Pt() + ordered_jets[2].P4().Pt() + ordered_jets[3].P4().Pt(); - } - - calculateTriggerMatching(candidatesForTriggerMatching,nat); - - - for(auto & triggerFired : listOfPassedTriggers) + + if(jets.first == originalSampleName) { - ot.userInt(triggerFired+"_Fired") = 1; - } + for(auto & triggerFired : listOfPassedTriggers) + { + ot.userInt(triggerFired+"_Fired") = 1; + } - if(!checkTriggerObjectMatching(listOfPassedTriggers,ot)) - { - if(debug) + if(!checkTriggerObjectMatching(listOfPassedTriggers,ot)) { - std::cout<<"TriggerObjects not matched, Printing jets:\n"; - std::cout<<"Id\t\tPt\t\tEta\t\tPhi\t\tPId\t\tCSV\t\tSelected\n"; - for(const auto & candidate : candidatesForTriggerMatching) + if(debug) std::cout<<"TriggerObjects not matched, Printing jets:\n"; + if(debug) std::cout<<"Id\t\tPt\t\tEta\t\tPhi\t\tCSV\t\tSelected\n"; + for(const auto & jet : jetsOriginal) { - std::cout<< std::fixed << std::setprecision(3) <getIdx()<<"\t\t"<P4().Pt()<<"\t\t"<P4().Eta()<<"\t\t"<P4().Phi()<<"\t\t"<getCandidateTypeId()<<"\t\t"; - if(candidate->getCandidateTypeId() == 1) std::cout<< std::fixed << std::setprecision(3)<(candidate.get())),Jet_btagDeepB)<<"\t\t"; - else std::cout << "\t\t\t"; + if(debug) std::cout<< std::fixed << std::setprecision(3) <getCandidateTypeId() != 1) continue; - if(selectedJet.getIdx() == candidate->getIdx()) + if(selectedJet.getIdx() == jet.getIdx()) { selected=true; break; } } - if(selected) std::cout<<"*"; - std::cout<getIdx()<<"\t\t"<P4().Pt()<<"\t\t"<P4().Eta()<<"\t\t"<P4().Phi()<<"\t\t"<getCandidateTypeId()<<"\n"; } + } } + // order H1, H2 by pT: pT(H1) > pT (H2) CompositeCandidate H1 = CompositeCandidate(ordered_jets.at(0), ordered_jets.at(1)); H1.rebuildP4UsingRegressedPt(true,true); @@ -2083,7 +2075,7 @@ bool OfflineProducerHelper::checkTriggerObjectMatching(std::vector for ( const auto & requiredNumberOfObjects : triggerRequirements.second) // triggers fired { if(mapTriggerMatching_.find(requiredNumberOfObjects.first)==mapTriggerMatching_.end()) triggerResult[triggerRequirements.first] = false; // Object not found - else if(mapTriggerMatching_.at(requiredNumberOfObjects.first) < requiredNumberOfObjects.second) triggerResult[triggerRequirements.first] = false; // Number of object not enought + if(mapTriggerMatching_[requiredNumberOfObjects.first] < requiredNumberOfObjects.second) triggerResult[triggerRequirements.first] = false; // Number of object not enought } for(const auto & triggerChecked : triggerResult) //If at least one of the trigger was found return true From 325364e66ad7840368ea32dcb63a9140ecd5d2d8 Mon Sep 17 00:00:00 2001 From: fravera Date: Tue, 4 Jun 2019 11:55:28 -0500 Subject: [PATCH 05/12] solved bu in ordering jets for trigger matching --- src/OfflineProducerHelper.cc | 161 ++++++++++++++++++----------------- 1 file changed, 82 insertions(+), 79 deletions(-) diff --git a/src/OfflineProducerHelper.cc b/src/OfflineProducerHelper.cc index 4b156b1a0..139063b1a 100644 --- a/src/OfflineProducerHelper.cc +++ b/src/OfflineProducerHelper.cc @@ -153,39 +153,12 @@ void OfflineProducerHelper::save_WAndZLeptonDecays (NanoAODTree& nat, OutputTree void OfflineProducerHelper::save_TriggerObjects (NanoAODTree& nat, OutputTree &ot, EventInfo& ei) { - for( const auto & triggerAndBranch : any_cast, std::string > >(parameterList_->at("TriggerObjectsForStudies")) ) { ot.userInt(triggerAndBranch.second) = mapTriggerMatching_[triggerAndBranch.first]; } - std::vector candidatePt = - { - ei.H1_b1->P4().Pt(), - ei.H1_b2->P4().Pt(), - ei.H2_b1->P4().Pt(), - ei.H2_b2->P4().Pt() - }; - stable_sort(candidatePt.begin(), candidatePt.end(), greater()); - - std::vector candidateDeepCSV = - { - get_property(ei.H1_b1.get(),Jet_btagDeepB), - get_property(ei.H1_b2.get(),Jet_btagDeepB), - get_property(ei.H2_b1.get(),Jet_btagDeepB), - get_property(ei.H2_b2.get(),Jet_btagDeepB) - }; - stable_sort(candidateDeepCSV.begin(), candidateDeepCSV.end(), greater()); - - - ot.userFloat("FirstJetPt") = candidatePt[0]; - ot.userFloat("SecondJetPt") = candidatePt[1]; - ot.userFloat("ThirdJetPt") = candidatePt[2]; - ot.userFloat("ForthJetPt") = candidatePt[3]; - ot.userFloat("FourHighetJetPtSum") = candidatePt[0] + candidatePt[1] + candidatePt[2] + candidatePt[3]; - ot.userFloat("ThirdJetDeepCSV") = candidateDeepCSV[2]; - return; } @@ -827,85 +800,115 @@ bool OfflineProducerHelper::select_bbbb_jets(NanoAODTree& nat, EventInfo& ei, Ou if(debug) std::cout<< "Event " << *(nat.run) << " - " << *(nat.luminosityBlock) << " - " << *(nat.event) << std::endl; - if(jets.first == originalSampleName) + std::vector< std::unique_ptr > candidatesForTriggerMatching; + for(auto jet : ordered_jets) { - std::vector< std::unique_ptr > selectedCandidates; - for(auto jet : ordered_jets) - { - selectedCandidates.emplace_back(std::make_unique(jet)); - //std::cout<P4().Eta()<<" "<P4().Eta()<(jet)); + } + // } - if(any_cast(parameterList_->at("ObjectsForCut")) == "TriggerObjects") + if(any_cast(parameterList_->at("ObjectsForCut")) == "TriggerObjects") + { + for (uint muonIt = 0; muonIt < *(nat.nMuon); ++muonIt) { - for (uint muonIt = 0; muonIt < *(nat.nMuon); ++muonIt) + if(nat.Muon_pfRelIso04_all[muonIt]<0.1) { - if(nat.Muon_pfRelIso04_all[muonIt]<0.1) + int muonJetId = nat.Muon_jetIdx[muonIt]; + bool matchingJetFound = false; + if(muonJetId >= 0) { - int muonJetId = nat.Muon_jetIdx[muonIt]; - bool matchingJetFound = false; - if(muonJetId >= 0) + for(auto jet : ordered_jets) { - for(auto jet : ordered_jets) + if(jet.getIdx() == muonJetId) { - if(jet.getIdx() == muonJetId) - { - matchingJetFound = true; - break; - } - } - } - - if(!matchingJetFound) - { - ot.userFloat("HighestIsoMuonPt") = nat.Muon_pt.At(muonIt); - selectedCandidates.emplace_back(std::make_unique(Muon(muonIt, &nat))); - break; - } + matchingJetFound = true; + break; + } + } + } + if(!matchingJetFound) + { + ot.userFloat("HighestIsoMuonPt") = nat.Muon_pt.At(muonIt); + candidatesForTriggerMatching.emplace_back(std::make_unique(Muon(muonIt, &nat))); + break; } } } - - calculateTriggerMatching(selectedCandidates,nat); + + + // sort by deepCSV + stable_sort(ordered_jets.begin(), ordered_jets.end(), [](const Jet & a, const Jet & b) -> bool + { + return ( get_property(a, Jet_btagDeepB) > get_property(b, Jet_btagDeepB) ); + }); + + ot.userFloat("ThirdJetDeepCSV") = get_property(ordered_jets[2],Jet_btagDeepB); + // std::cout << __PRETTY_FUNCTION__ << get_property(ordered_jets[0],Jet_btagDeepB) << " " << get_property(ordered_jets[1],Jet_btagDeepB) << " " << get_property(ordered_jets[2],Jet_btagDeepB) << " " << get_property(ordered_jets[3],Jet_btagDeepB) << " " << std::endl; + + // order by CMVA + stable_sort(ordered_jets.begin(), ordered_jets.end(), [](const Jet & a, const Jet & b) -> bool + { + return ( get_property(a, Jet_btagCMVA) > get_property(b, Jet_btagCMVA) ); + }); + ot.userFloat("ForthJetCMVA") = get_property(ordered_jets[3],Jet_btagCMVA); + // std::cout << __PRETTY_FUNCTION__ << get_property(ordered_jets[0],Jet_btagCMVA) << " " << get_property(ordered_jets[1],Jet_btagCMVA) << " " << get_property(ordered_jets[2],Jet_btagCMVA) << " " << get_property(ordered_jets[3],Jet_btagCMVA) << " " << std::endl; + + //order by unregressed pt + stable_sort(ordered_jets.begin(), ordered_jets.end(), [](const Jet & a, const Jet & b) -> bool + { + return ( a.P4().Pt() > b.P4().Pt() ); + }); + + // std::cout << __PRETTY_FUNCTION__ << ordered_jets[0].P4().Pt() << " " << ordered_jets[1].P4().Pt() << " " << ordered_jets[2].P4().Pt() << " " << ordered_jets[3].P4().Pt() << " " << std::endl; + ot.userFloat("FirstJetPt") = ordered_jets[0].P4().Pt(); + ot.userFloat("SecondJetPt") = ordered_jets[1].P4().Pt(); + ot.userFloat("ThirdJetPt") = ordered_jets[2].P4().Pt(); + ot.userFloat("ForthJetPt") = ordered_jets[3].P4().Pt(); + ot.userFloat("FourHighetJetPtSum") = ordered_jets[0].P4().Pt() + ordered_jets[1].P4().Pt() + ordered_jets[2].P4().Pt() + ordered_jets[3].P4().Pt(); + + + + + + } - - if(jets.first == originalSampleName) + + calculateTriggerMatching(candidatesForTriggerMatching,nat); + + + for(auto & triggerFired : listOfPassedTriggers) { - for(auto & triggerFired : listOfPassedTriggers) - { - ot.userInt(triggerFired+"_Fired") = 1; - } + ot.userInt(triggerFired+"_Fired") = 1; + } - if(!checkTriggerObjectMatching(listOfPassedTriggers,ot)) + if(!checkTriggerObjectMatching(listOfPassedTriggers,ot)) + { + if(debug) { - if(debug) std::cout<<"TriggerObjects not matched, Printing jets:\n"; - if(debug) std::cout<<"Id\t\tPt\t\tEta\t\tPhi\t\tCSV\t\tSelected\n"; - for(const auto & jet : jetsOriginal) + std::cout<<"TriggerObjects not matched, Printing jets:\n"; + std::cout<<"Id\t\tPt\t\tEta\t\tPhi\t\tPId\t\tCSV\t\tSelected\n"; + for(const auto & candidate : candidatesForTriggerMatching) { - if(debug) std::cout<< std::fixed << std::setprecision(3) <getIdx()<<"\t\t"<P4().Pt()<<"\t\t"<P4().Eta()<<"\t\t"<P4().Phi()<<"\t\t"<getCandidateTypeId()<<"\t\t"; + if(candidate->getCandidateTypeId() == 1) std::cout<< std::fixed << std::setprecision(3)<(candidate.get())),Jet_btagDeepB)<<"\t\t"; + else std::cout << "\t\t\t"; bool selected=false; for(const auto & selectedJet : ordered_jets) { - if(selectedJet.getIdx() == jet.getIdx()) + if(candidate->getCandidateTypeId() != 1) continue; + if(selectedJet.getIdx() == candidate->getIdx()) { selected=true; break; } } - if(selected) if(debug) std::cout<<"*"; - if(debug) std::cout<getIdx()<<"\t\t"<P4().Pt()<<"\t\t"<P4().Eta()<<"\t\t"<P4().Phi()<<"\t\t"<getCandidateTypeId()<<"\n"; + if(selected) std::cout<<"*"; + std::cout< pT (H2) CompositeCandidate H1 = CompositeCandidate(ordered_jets.at(0), ordered_jets.at(1)); H1.rebuildP4UsingRegressedPt(true,true); @@ -2075,7 +2078,7 @@ bool OfflineProducerHelper::checkTriggerObjectMatching(std::vector for ( const auto & requiredNumberOfObjects : triggerRequirements.second) // triggers fired { if(mapTriggerMatching_.find(requiredNumberOfObjects.first)==mapTriggerMatching_.end()) triggerResult[triggerRequirements.first] = false; // Object not found - if(mapTriggerMatching_[requiredNumberOfObjects.first] < requiredNumberOfObjects.second) triggerResult[triggerRequirements.first] = false; // Number of object not enought + else if(mapTriggerMatching_.at(requiredNumberOfObjects.first) < requiredNumberOfObjects.second) triggerResult[triggerRequirements.first] = false; // Number of object not enought } for(const auto & triggerChecked : triggerResult) //If at least one of the trigger was found return true From c93eaede8d8e0d85e19689ce3082a4c8b87e1b5d Mon Sep 17 00:00:00 2001 From: fravera Date: Thu, 6 Jun 2019 15:29:43 -0500 Subject: [PATCH 06/12] Added skip trigger matching with selected jets --- ...lectionCfg_2016Analysis_triggerStudies.cfg | 4 +- ...m_2016ResonantDiHiggs4B_triggerStudies.cfg | 5 ++- interface/OutputTree.h | 4 +- src/OfflineProducerHelper.cc | 43 +++++++++++-------- src/OutputTree.cc | 7 +-- test/skim_ntuple.cpp | 3 +- 6 files changed, 39 insertions(+), 27 deletions(-) diff --git a/config/selectionCfg_2016Analysis_triggerStudies.cfg b/config/selectionCfg_2016Analysis_triggerStudies.cfg index 8d2229704..0813aa586 100644 --- a/config/selectionCfg_2016Analysis_triggerStudies.cfg +++ b/config/selectionCfg_2016Analysis_triggerStudies.cfg @@ -12,8 +12,8 @@ # common # basicSelectionPass = HighestIsoMuonPt>20 basicSelectionPass = HighestIsoMuonPt>20 && ((H1_m > 120-40 && H1_m < 120+40) && (H2_m > 120-40 && H2_m < 120+40)) && HH_2DdeltaM < 4.*20.*20. -# basicSelectionPass = ForthJetCMVA > 0.185 && ((H1_m > 120-40 && H1_m < 120+40) && (H2_m > 120-40 && H2_m < 120+40)) -# && HH_2DdeltaM < 25.*20*20 +# basicSelectionPass = ForthJetCMVA > 0.185 && ((H1_m > 120-40 && H1_m < 120+40) && (H2_m > 120-40 && H2_m < 120+40)) && HH_2DdeltaM < 25.*20*20 +# basicSelectionPass = ((H1_m > 120-40 && H1_m < 120+40) && (H2_m > 120-40 && H2_m < 120+40)) && HH_2DdeltaM < 25.*20*20 BTagCaloCSVp087TriplePass = BTagCaloCSVp087Triple >= 3 # HLT_DoubleJet90_Double30_TripleBTagCSV_p087 diff --git a/config/skim_2016ResonantDiHiggs4B_triggerStudies.cfg b/config/skim_2016ResonantDiHiggs4B_triggerStudies.cfg index b5d96e869..c6c323b19 100644 --- a/config/skim_2016ResonantDiHiggs4B_triggerStudies.cfg +++ b/config/skim_2016ResonantDiHiggs4B_triggerStudies.cfg @@ -30,6 +30,8 @@ HiggsMassMMR = 125. LMRToMMRTransition = -1. UseAntiTagOnOneBjet = false + + # -------------------------------------------------------------------------------------------------------------- # # use PreselectionCut to cut on the objects during preselection # use negative numbers to skip the cut @@ -39,7 +41,7 @@ UseAntiTagOnOneBjet = false PreselectionCut = bJetCut MinDeepCSV = 0. -MinPt = 20 +MinPt = 20. MaxAbsEta = 2.4 # PreselectionCut = None @@ -123,6 +125,7 @@ trigger1_ObjectRequirements = 1:0:3, 1:1:2, 1:2:2, 1:3:1, 1:4:4, 1:5:4 trigger2_ObjectRequirements = 1:0:3, 1:6:1, 1:7:4, 1:8:4 triggerIsoMu24_ObjectRequirements = 13:10:1, 13:11:1, 13:12:1, 13:13:1, 13:14:1 triggerIsoMu20_ObjectRequirements = 13:15:1, 13:16:1, 13:17:1, 13:18:1, 13:19:1 +MatchWithSelectedObjects = false # ############################################################################################################## # diff --git a/interface/OutputTree.h b/interface/OutputTree.h index e348534d1..74a8fa6cd 100644 --- a/interface/OutputTree.h +++ b/interface/OutputTree.h @@ -41,7 +41,7 @@ class OutputTree { public: - OutputTree (bool savetlv = false, std::string name = "bbbbTree", std::string title = "bbbbTree"); + OutputTree (bool savetlv = false, std::string name = "bbbbTree", std::string title = "bbbbTree", bool initAllBranches = true); ~OutputTree(){}; void clear(); // to be called to reset the var values @@ -322,7 +322,7 @@ class OutputTree { float hhj2_deltaEta; float hhjj_deltaEta; private: - void init_branches(); + void init_branches(bool initAllBranches); std::unique_ptr tree_; const bool savetlv_; diff --git a/src/OfflineProducerHelper.cc b/src/OfflineProducerHelper.cc index 139063b1a..cb841f590 100644 --- a/src/OfflineProducerHelper.cc +++ b/src/OfflineProducerHelper.cc @@ -1063,9 +1063,16 @@ void OfflineProducerHelper::bJets_PreselectionCut(std::vector &jets) float minimumDeepCSVaccepted = any_cast(parameterList_->at("MinDeepCSV" )); float maximumPtAccepted = any_cast(parameterList_->at("MinPt" )); float maximumAbsEtaCSVaccepted = any_cast(parameterList_->at("MaxAbsEta" )); - if(any_cast(parameterList_->at("UseAntiTagOnOneBjet"))) + + if(parameterList_->find("bbbbChoice") != parameterList_->end()) { - minimumDeepCSVaccepted = -1; + if(any_cast(parameterList_->at("bbbbChoice")) == "HighestCSVandClosestToMh") + { + if(any_cast(parameterList_->at("UseAntiTagOnOneBjet"))) + { + minimumDeepCSVaccepted = -1; + } + } } if(minimumDeepCSVaccepted<=0. && maximumPtAccepted<=0. && maximumAbsEtaCSVaccepted<=0.) return; @@ -2131,28 +2138,28 @@ void OfflineProducerHelper::calculateTriggerMatching(const std::vector< std::uni float deltaR = 1024; //easy to do square root int tmpCandidateIdx=-1; - // if(any_cast(parameterList_->at("TriggerStudies")) && triggerObjectId == 1) - // { - // deltaR = 0; - // } - // else - // { - for(const auto & candidate : candidateList) //loop to find best Candidate matching DeltaR + if(any_cast(parameterList_->at("MatchWithSelectedObjects")) && triggerObjectId == 1) { - if(candidate->getCandidateTypeId() != triggerObjectId) continue; // Skip different particles + deltaR = 0; + } + else + { + for(const auto & candidate : candidateList) //loop to find best Candidate matching DeltaR + { + if(candidate->getCandidateTypeId() != triggerObjectId) continue; // Skip different particles - float candidateEta = candidate->P4().Eta (); - float candidatePhi = candidate->P4().Phi (); - float tmpdeltaR = (candidateEta - triggerObjectEta)*(candidateEta - triggerObjectEta) + deltaPhi(candidatePhi,triggerObjectPhi)*deltaPhi(candidatePhi,triggerObjectPhi); + float candidateEta = candidate->P4().Eta (); + float candidatePhi = candidate->P4().Phi (); + float tmpdeltaR = (candidateEta - triggerObjectEta)*(candidateEta - triggerObjectEta) + deltaPhi(candidatePhi,triggerObjectPhi)*deltaPhi(candidatePhi,triggerObjectPhi); - if(tmpdeltaR < deltaR) - { - deltaR = tmpdeltaR; - tmpCandidateIdx=candidate->getIdx(); + if(tmpdeltaR < deltaR) + { + deltaR = tmpdeltaR; + tmpCandidateIdx=candidate->getIdx(); + } } } - // } if(sqrt(deltaR) < any_cast(parameterList_->at("MaxDeltaR"))) // check if a matching was found { diff --git a/src/OutputTree.cc b/src/OutputTree.cc index 93a1ce63a..a365c5a3d 100644 --- a/src/OutputTree.cc +++ b/src/OutputTree.cc @@ -35,22 +35,23 @@ using namespace std; OBJ ## _phi = -999.; \ OBJ ## _p4 . SetPxPyPzE(0,0,0,0); -OutputTree::OutputTree (bool savetlv, string name, string title) : +OutputTree::OutputTree (bool savetlv, string name, string title, bool initAllBranches) : savetlv_ (savetlv) { tree_ = std::unique_ptr (new TTree(name.c_str(), title.c_str())); - init_branches(); + init_branches(initAllBranches); clear(); } -void OutputTree::init_branches() +void OutputTree::init_branches(bool initAllBranches) { //event information tree_->Branch("Run", &Run); tree_->Branch("LumiSec", &LumiSec); tree_->Branch("Event", &Event); + if(!initAllBranches) return; // reco b jets BRANCH_m_pt_ptRegressed_eta_phi_p4(H1_b1) tree_->Branch("H1_b1_deepCSV", &H1_b1_deepCSV); diff --git a/test/skim_ntuple.cpp b/test/skim_ntuple.cpp index 1f262d1c4..425b4388e 100644 --- a/test/skim_ntuple.cpp +++ b/test/skim_ntuple.cpp @@ -354,7 +354,8 @@ int main(int argc, char** argv) } - parameterList.emplace("MaxDeltaR" ,config.readFloatOpt("triggers::MaxDeltaR") ); + parameterList.emplace("MaxDeltaR", config.readFloatOpt("triggers::MaxDeltaR") ); + parameterList.emplace("MatchWithSelectedObjects", config.readBoolOpt("triggers::MatchWithSelectedObjects") ); // parameterList.emplace("TriggerStudies",config.readBoolOpt ("triggers::TriggerStudies")); parameterList.emplace("TriggerObjectAndMinNumberMap", triggerObjectAndMinNumberMap); nat.triggerReader().setTriggers(triggerVector); From e5f1756cfda53890f0c08417b6125c486f8fdf3d Mon Sep 17 00:00:00 2001 From: fravera Date: Thu, 6 Jun 2019 17:01:05 -0500 Subject: [PATCH 07/12] Added MatchWithSelectedObjects flag --- ...lectionCfg_2016Analysis_triggerStudies.cfg | 4 +- ...m_2016ResonantDiHiggs4B_triggerStudies.cfg | 3 +- src/OfflineProducerHelper.cc | 48 ++++++++++--------- 3 files changed, 29 insertions(+), 26 deletions(-) diff --git a/config/selectionCfg_2016Analysis_triggerStudies.cfg b/config/selectionCfg_2016Analysis_triggerStudies.cfg index 0813aa586..9580f9d0e 100644 --- a/config/selectionCfg_2016Analysis_triggerStudies.cfg +++ b/config/selectionCfg_2016Analysis_triggerStudies.cfg @@ -10,8 +10,8 @@ [selections] # common -# basicSelectionPass = HighestIsoMuonPt>20 -basicSelectionPass = HighestIsoMuonPt>20 && ((H1_m > 120-40 && H1_m < 120+40) && (H2_m > 120-40 && H2_m < 120+40)) && HH_2DdeltaM < 4.*20.*20. +basicSelectionPass = HighestIsoMuonPt>40 && ForthJetPt>30 +# basicSelectionPass = HighestIsoMuonPt>20 && ((H1_m > 120-40 && H1_m < 120+40) && (H2_m > 120-40 && H2_m < 120+40)) && HH_2DdeltaM < 4.*20.*20. # basicSelectionPass = ForthJetCMVA > 0.185 && ((H1_m > 120-40 && H1_m < 120+40) && (H2_m > 120-40 && H2_m < 120+40)) && HH_2DdeltaM < 25.*20*20 # basicSelectionPass = ((H1_m > 120-40 && H1_m < 120+40) && (H2_m > 120-40 && H2_m < 120+40)) && HH_2DdeltaM < 25.*20*20 BTagCaloCSVp087TriplePass = BTagCaloCSVp087Triple >= 3 diff --git a/config/skim_2016ResonantDiHiggs4B_triggerStudies.cfg b/config/skim_2016ResonantDiHiggs4B_triggerStudies.cfg index c6c323b19..984bd2850 100644 --- a/config/skim_2016ResonantDiHiggs4B_triggerStudies.cfg +++ b/config/skim_2016ResonantDiHiggs4B_triggerStudies.cfg @@ -31,7 +31,6 @@ LMRToMMRTransition = -1. UseAntiTagOnOneBjet = false - # -------------------------------------------------------------------------------------------------------------- # # use PreselectionCut to cut on the objects during preselection # use negative numbers to skip the cut @@ -125,7 +124,7 @@ trigger1_ObjectRequirements = 1:0:3, 1:1:2, 1:2:2, 1:3:1, 1:4:4, 1:5:4 trigger2_ObjectRequirements = 1:0:3, 1:6:1, 1:7:4, 1:8:4 triggerIsoMu24_ObjectRequirements = 13:10:1, 13:11:1, 13:12:1, 13:13:1, 13:14:1 triggerIsoMu20_ObjectRequirements = 13:15:1, 13:16:1, 13:17:1, 13:18:1, 13:19:1 -MatchWithSelectedObjects = false +MatchWithSelectedObjects = true # ############################################################################################################## # diff --git a/src/OfflineProducerHelper.cc b/src/OfflineProducerHelper.cc index cb841f590..2f066d0db 100644 --- a/src/OfflineProducerHelper.cc +++ b/src/OfflineProducerHelper.cc @@ -809,6 +809,17 @@ bool OfflineProducerHelper::select_bbbb_jets(NanoAODTree& nat, EventInfo& ei, Ou if(any_cast(parameterList_->at("ObjectsForCut")) == "TriggerObjects") { + + std::vector jetsForTriggerStudies; + if(any_cast(parameterList_->at("MatchWithSelectedObjects"))) + { + jetsForTriggerStudies = ordered_jets; + } + else + { + jetsForTriggerStudies = jets.second; + } + for (uint muonIt = 0; muonIt < *(nat.nMuon); ++muonIt) { if(nat.Muon_pfRelIso04_all[muonIt]<0.1) @@ -817,7 +828,7 @@ bool OfflineProducerHelper::select_bbbb_jets(NanoAODTree& nat, EventInfo& ei, Ou bool matchingJetFound = false; if(muonJetId >= 0) { - for(auto jet : ordered_jets) + for(auto jet : jetsForTriggerStudies) { if(jet.getIdx() == muonJetId) { @@ -835,43 +846,36 @@ bool OfflineProducerHelper::select_bbbb_jets(NanoAODTree& nat, EventInfo& ei, Ou } } - // sort by deepCSV - stable_sort(ordered_jets.begin(), ordered_jets.end(), [](const Jet & a, const Jet & b) -> bool + stable_sort(jetsForTriggerStudies.begin(), jetsForTriggerStudies.end(), [](const Jet & a, const Jet & b) -> bool { return ( get_property(a, Jet_btagDeepB) > get_property(b, Jet_btagDeepB) ); }); - ot.userFloat("ThirdJetDeepCSV") = get_property(ordered_jets[2],Jet_btagDeepB); - // std::cout << __PRETTY_FUNCTION__ << get_property(ordered_jets[0],Jet_btagDeepB) << " " << get_property(ordered_jets[1],Jet_btagDeepB) << " " << get_property(ordered_jets[2],Jet_btagDeepB) << " " << get_property(ordered_jets[3],Jet_btagDeepB) << " " << std::endl; + ot.userFloat("ThirdJetDeepCSV") = get_property(jetsForTriggerStudies[2],Jet_btagDeepB); + // std::cout << __PRETTY_FUNCTION__ << get_property(jetsForTriggerStudies[0],Jet_btagDeepB) << " " << get_property(jetsForTriggerStudies[1],Jet_btagDeepB) << " " << get_property(jetsForTriggerStudies[2],Jet_btagDeepB) << " " << get_property(jetsForTriggerStudies[3],Jet_btagDeepB) << " " << std::endl; // order by CMVA - stable_sort(ordered_jets.begin(), ordered_jets.end(), [](const Jet & a, const Jet & b) -> bool + stable_sort(jetsForTriggerStudies.begin(), jetsForTriggerStudies.end(), [](const Jet & a, const Jet & b) -> bool { return ( get_property(a, Jet_btagCMVA) > get_property(b, Jet_btagCMVA) ); }); - ot.userFloat("ForthJetCMVA") = get_property(ordered_jets[3],Jet_btagCMVA); - // std::cout << __PRETTY_FUNCTION__ << get_property(ordered_jets[0],Jet_btagCMVA) << " " << get_property(ordered_jets[1],Jet_btagCMVA) << " " << get_property(ordered_jets[2],Jet_btagCMVA) << " " << get_property(ordered_jets[3],Jet_btagCMVA) << " " << std::endl; + ot.userFloat("ForthJetCMVA") = get_property(jetsForTriggerStudies[3],Jet_btagCMVA); + // std::cout << __PRETTY_FUNCTION__ << get_property(jetsForTriggerStudies[0],Jet_btagCMVA) << " " << get_property(jetsForTriggerStudies[1],Jet_btagCMVA) << " " << get_property(jetsForTriggerStudies[2],Jet_btagCMVA) << " " << get_property(jetsForTriggerStudies[3],Jet_btagCMVA) << " " << std::endl; //order by unregressed pt - stable_sort(ordered_jets.begin(), ordered_jets.end(), [](const Jet & a, const Jet & b) -> bool + stable_sort(jetsForTriggerStudies.begin(), jetsForTriggerStudies.end(), [](const Jet & a, const Jet & b) -> bool { return ( a.P4().Pt() > b.P4().Pt() ); }); - // std::cout << __PRETTY_FUNCTION__ << ordered_jets[0].P4().Pt() << " " << ordered_jets[1].P4().Pt() << " " << ordered_jets[2].P4().Pt() << " " << ordered_jets[3].P4().Pt() << " " << std::endl; - ot.userFloat("FirstJetPt") = ordered_jets[0].P4().Pt(); - ot.userFloat("SecondJetPt") = ordered_jets[1].P4().Pt(); - ot.userFloat("ThirdJetPt") = ordered_jets[2].P4().Pt(); - ot.userFloat("ForthJetPt") = ordered_jets[3].P4().Pt(); - ot.userFloat("FourHighetJetPtSum") = ordered_jets[0].P4().Pt() + ordered_jets[1].P4().Pt() + ordered_jets[2].P4().Pt() + ordered_jets[3].P4().Pt(); + // std::cout << __PRETTY_FUNCTION__ << jetsForTriggerStudies[0].P4().Pt() << " " << jetsForTriggerStudies[1].P4().Pt() << " " << jetsForTriggerStudies[2].P4().Pt() << " " << jetsForTriggerStudies[3].P4().Pt() << " " << std::endl; + ot.userFloat("FirstJetPt") = jetsForTriggerStudies[0].P4().Pt(); + ot.userFloat("SecondJetPt") = jetsForTriggerStudies[1].P4().Pt(); + ot.userFloat("ThirdJetPt") = jetsForTriggerStudies[2].P4().Pt(); + ot.userFloat("ForthJetPt") = jetsForTriggerStudies[3].P4().Pt(); + ot.userFloat("FourHighetJetPtSum") = jetsForTriggerStudies[0].P4().Pt() + jetsForTriggerStudies[1].P4().Pt() + jetsForTriggerStudies[2].P4().Pt() + jetsForTriggerStudies[3].P4().Pt(); - - - - - - } calculateTriggerMatching(candidatesForTriggerMatching,nat); @@ -2138,7 +2142,7 @@ void OfflineProducerHelper::calculateTriggerMatching(const std::vector< std::uni float deltaR = 1024; //easy to do square root int tmpCandidateIdx=-1; - if(any_cast(parameterList_->at("MatchWithSelectedObjects")) && triggerObjectId == 1) + if(triggerObjectId == 1 && !any_cast(parameterList_->at("MatchWithSelectedObjects"))) { deltaR = 0; } From 73aeb05d460cc685a19af219995dc5d8b2245c1f Mon Sep 17 00:00:00 2001 From: fravera Date: Fri, 7 Jun 2019 13:18:41 -0500 Subject: [PATCH 08/12] Added in save trigger Objects number Of jets and jets online vs offline pt resolution --- ...lectionCfg_2016Analysis_triggerStudies.cfg | 4 +-- interface/OfflineProducerHelper.h | 2 +- src/OfflineProducerHelper.cc | 36 +++++++++++++++++-- 3 files changed, 36 insertions(+), 6 deletions(-) diff --git a/config/selectionCfg_2016Analysis_triggerStudies.cfg b/config/selectionCfg_2016Analysis_triggerStudies.cfg index 9580f9d0e..21458a868 100644 --- a/config/selectionCfg_2016Analysis_triggerStudies.cfg +++ b/config/selectionCfg_2016Analysis_triggerStudies.cfg @@ -10,8 +10,8 @@ [selections] # common -basicSelectionPass = HighestIsoMuonPt>40 && ForthJetPt>30 -# basicSelectionPass = HighestIsoMuonPt>20 && ((H1_m > 120-40 && H1_m < 120+40) && (H2_m > 120-40 && H2_m < 120+40)) && HH_2DdeltaM < 4.*20.*20. +# basicSelectionPass = HighestIsoMuonPt>40 && ForthJetPt>30 +basicSelectionPass = HighestIsoMuonPt>20 && ForthJetPt>30 && ((H1_m > 120-40 && H1_m < 120+40) && (H2_m > 120-40 && H2_m < 120+40)) && HH_2DdeltaM < 4.*20.*20. # basicSelectionPass = ForthJetCMVA > 0.185 && ((H1_m > 120-40 && H1_m < 120+40) && (H2_m > 120-40 && H2_m < 120+40)) && HH_2DdeltaM < 25.*20*20 # basicSelectionPass = ((H1_m > 120-40 && H1_m < 120+40) && (H2_m > 120-40 && H2_m < 120+40)) && HH_2DdeltaM < 25.*20*20 BTagCaloCSVp087TriplePass = BTagCaloCSVp087Triple >= 3 diff --git a/interface/OfflineProducerHelper.h b/interface/OfflineProducerHelper.h index c686d95e2..68be0f35b 100644 --- a/interface/OfflineProducerHelper.h +++ b/interface/OfflineProducerHelper.h @@ -103,7 +103,7 @@ namespace OfflineProducerHelper { // save trigger Objects for trigger studies void save_TriggerObjects (NanoAODTree& nat, OutputTree &ot, EventInfo& ei); // Calculate trigger map - void calculateTriggerMatching(const std::vector< std::unique_ptr > &candidateList, NanoAODTree& nat); + void calculateTriggerMatching(const std::vector< std::unique_ptr > &candidateList, NanoAODTree& nat, OutputTree &ot); //Initialize trigger Matching variables void initializeTriggerMatching(OutputTree &ot); diff --git a/src/OfflineProducerHelper.cc b/src/OfflineProducerHelper.cc index 2f066d0db..0dff03d7b 100644 --- a/src/OfflineProducerHelper.cc +++ b/src/OfflineProducerHelper.cc @@ -62,6 +62,10 @@ void OfflineProducerHelper::initializeObjectsForCuts(OutputTree &ot) ot.declareUserFloatBranch("ForthJetCMVA", -1.); ot.declareUserFloatBranch("HighestIsoMuonPt", -1.); + ot.declareUserFloatBranch("ResolutionOnlineCaloJetPt", -999.); + ot.declareUserFloatBranch("ResolutionOnlinePFJetPt", -999.); + ot.declareUserIntBranch("NumberOfJetsPassingPreselection", -1); + } return; @@ -876,9 +880,11 @@ bool OfflineProducerHelper::select_bbbb_jets(NanoAODTree& nat, EventInfo& ei, Ou ot.userFloat("ForthJetPt") = jetsForTriggerStudies[3].P4().Pt(); ot.userFloat("FourHighetJetPtSum") = jetsForTriggerStudies[0].P4().Pt() + jetsForTriggerStudies[1].P4().Pt() + jetsForTriggerStudies[2].P4().Pt() + jetsForTriggerStudies[3].P4().Pt(); + ot.userInt("NumberOfJetsPassingPreselection") = jets.second.size(); + } - calculateTriggerMatching(candidatesForTriggerMatching,nat); + calculateTriggerMatching(candidatesForTriggerMatching,nat,ot); for(auto & triggerFired : listOfPassedTriggers) @@ -2104,7 +2110,7 @@ bool OfflineProducerHelper::checkTriggerObjectMatching(std::vector return triggerMatched; // no matching trigger found among the fired ones } -void OfflineProducerHelper::calculateTriggerMatching(const std::vector< std::unique_ptr > &candidateList, NanoAODTree& nat) +void OfflineProducerHelper::calculateTriggerMatching(const std::vector< std::unique_ptr > &candidateList, NanoAODTree& nat, OutputTree &ot) { if(debug) std::cout<<"Matching triggers, Objects found:\n"; if(debug) std::cout<<"\t\tPt\t\tEta\t\tPhi\t\tObjId\t\tBit\t\tMatchedJetId\n"; @@ -2140,6 +2146,7 @@ void OfflineProducerHelper::calculateTriggerMatching(const std::vector< std::uni else if(debug) std::cout<<" "<(parameterList_->at("MatchWithSelectedObjects"))) @@ -2160,11 +2167,12 @@ void OfflineProducerHelper::calculateTriggerMatching(const std::vector< std::uni { deltaR = tmpdeltaR; tmpCandidateIdx=candidate->getIdx(); + deltaPt = candidate->P4().Pt() - triggerObjectPt; } } } - + if(sqrt(deltaR) < any_cast(parameterList_->at("MaxDeltaR"))) // check if a matching was found { std::pair particleAndFilter(triggerObjectId,filterBit); @@ -2174,6 +2182,28 @@ void OfflineProducerHelper::calculateTriggerMatching(const std::vector< std::uni } ++mapTriggerMatching_[particleAndFilter]; candidateIdx=tmpCandidateIdx; + + //Plot fro online vs offline jet pt resolution + if(any_cast(parameterList_->at("ObjectsForCut")) == "TriggerObjects") + { + if(triggerObjectId == 1 && any_cast(parameterList_->at("MatchWithSelectedObjects"))) + { + if(ot.userFloat("ResolutionOnlineCaloJetPt") == -999.) + { + if(filterBit == 1 || filterBit == 4 || filterBit == 7) + { + ot.userFloat("ResolutionOnlineCaloJetPt") = deltaPt; + } + } + if(ot.userFloat("ResolutionOnlinePFJetPt") == -999.) + { + if(filterBit == 2 || filterBit == 5 || filterBit == 8) + { + ot.userFloat("ResolutionOnlinePFJetPt") = deltaPt; + } + } + } + } } } } From d7611d059b06e9afcf377790ef580996b017cdd4 Mon Sep 17 00:00:00 2001 From: fravera Date: Fri, 7 Jun 2019 13:36:29 -0500 Subject: [PATCH 09/12] Added pt for the mathed offline jet for Calo and PF --- src/OfflineProducerHelper.cc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/OfflineProducerHelper.cc b/src/OfflineProducerHelper.cc index 0dff03d7b..ff4c07660 100644 --- a/src/OfflineProducerHelper.cc +++ b/src/OfflineProducerHelper.cc @@ -63,7 +63,9 @@ void OfflineProducerHelper::initializeObjectsForCuts(OutputTree &ot) ot.declareUserFloatBranch("HighestIsoMuonPt", -1.); ot.declareUserFloatBranch("ResolutionOnlineCaloJetPt", -999.); + ot.declareUserFloatBranch("OfflineJetPtForCaloResolution", -999.); ot.declareUserFloatBranch("ResolutionOnlinePFJetPt", -999.); + ot.declareUserFloatBranch("OfflineJetPtForPFResolution", -999.); ot.declareUserIntBranch("NumberOfJetsPassingPreselection", -1); } @@ -2147,6 +2149,7 @@ void OfflineProducerHelper::calculateTriggerMatching(const std::vector< std::uni float deltaR = 1024; //easy to do square root float deltaPt = -999; + float offlinePt = -999; int tmpCandidateIdx=-1; if(triggerObjectId == 1 && !any_cast(parameterList_->at("MatchWithSelectedObjects"))) @@ -2168,6 +2171,7 @@ void OfflineProducerHelper::calculateTriggerMatching(const std::vector< std::uni deltaR = tmpdeltaR; tmpCandidateIdx=candidate->getIdx(); deltaPt = candidate->P4().Pt() - triggerObjectPt; + offlinePt = candidate->P4().Pt(); } } @@ -2193,6 +2197,7 @@ void OfflineProducerHelper::calculateTriggerMatching(const std::vector< std::uni if(filterBit == 1 || filterBit == 4 || filterBit == 7) { ot.userFloat("ResolutionOnlineCaloJetPt") = deltaPt; + ot.userFloat("OfflineJetPtForCaloResolution") = offlinePt; } } if(ot.userFloat("ResolutionOnlinePFJetPt") == -999.) @@ -2200,6 +2205,7 @@ void OfflineProducerHelper::calculateTriggerMatching(const std::vector< std::uni if(filterBit == 2 || filterBit == 5 || filterBit == 8) { ot.userFloat("ResolutionOnlinePFJetPt") = deltaPt; + ot.userFloat("OfflineJetPtForPFResolution") = offlinePt; } } } From 7fc7cc098e273ec6d7ff7da6cf40f2396f9f5b8a Mon Sep 17 00:00:00 2001 From: fravera Date: Wed, 12 Jun 2019 10:13:23 -0500 Subject: [PATCH 10/12] Added request for a medium Muon Id for trigger studies --- .../plotter_2016Analysis_triggerStudies.cfg | 7 +- .../sampleCfg_2016Analysis_triggerStudies.cfg | 1 + ...lectionCfg_2016Analysis_triggerStudies.cfg | 17 +- ...m_2016ResonantDiHiggs4B_triggerStudies.cfg | 8 +- scripts/TriggerEfficiencyFitter.C | 244 ++++++++---------- scripts/submitAllSkimsOnTier3.sh | 3 +- src/OfflineProducerHelper.cc | 2 +- 7 files changed, 137 insertions(+), 145 deletions(-) diff --git a/config/plotter_2016Analysis_triggerStudies.cfg b/config/plotter_2016Analysis_triggerStudies.cfg index 12bacb9d0..75b272b32 100644 --- a/config/plotter_2016Analysis_triggerStudies.cfg +++ b/config/plotter_2016Analysis_triggerStudies.cfg @@ -1,7 +1,7 @@ [general] lumi = 35900 # pb^-1 -outputFolder = ./2016DataPlots +outputFolder = ./2016DataPlots_TTbar_4bLooseSelection # Comment out an entry if you don't want to run on it. # NOTE; data gets simply plotted (1 event -> 1 entry in the histograms) @@ -11,10 +11,11 @@ outputFolder = ./2016DataPlots # signals = sig_Graviton_1000GeV , sig_Graviton_1200GeV, sig_Graviton_260GeV, sig_Graviton_270GeV, sig_Graviton_300GeV, sig_Graviton_350GeV, sig_Graviton_400GeV, sig_Graviton_450GeV, sig_Graviton_500GeV, sig_Graviton_550GeV, sig_Graviton_600GeV, sig_Graviton_650GeV, sig_Graviton_750GeV, sig_Graviton_800GeV, sig_Graviton_900GeV, sig_Radion_260GeV, sig_Radion_270GeV, sig_Radion_300GeV, sig_Radion_350GeV, sig_Radion_400GeV, sig_Radion_450GeV, sig_Radion_500GeV, sig_Radion_550GeV, sig_Radion_600GeV, sig_Radion_650GeV, sig_Radion_750GeV, sig_Radion_800GeV, sig_Radion_900GeV, sig_Radion_1000GeV, sig_Radion_1200GeV # signals = tmp_Graviton_750GeV -data = tmp_SingleMuon +# data = tmp_SingleMuon +signals = TTbar variables = FourHighetJetPtSum, FirstJetPt, SecondJetPt, ThirdJetPt, ForthJetPt, ThirdJetDeepCSV - +variables2D = OfflineJetPtForCaloResolution:ResolutionOnlineCaloJetPt, OfflineJetPtForPFResolution:ResolutionOnlinePFJetPt selections = Normalization , L1triggerDouble90Double30AndPrevious , QuadCentralJet30AndPrevious , DoubleCentralJet90AndPrevious , BTagCaloCSVp087TripleDouble90Double30AndPrevious , QuadPFCentralJetLooseID30AndPrevious , DoublePFCentralJetLooseID90AndPrevious , L1triggerQuad45AndPrevious , QuadCentralJet45AndPrevious , BTagCaloCSVp087TripleQuad45AndPrevious , QuadPFCentralJetLooseID45AndPrevious, HLT_Double90Double30AndPrevious, HLT_Quad45AndPrevious regions = HLT_IsoMu24, HLT_IsoMu20, HLT_IsoMu24_Matched, HLT_IsoMu20_Matched diff --git a/config/sampleCfg_2016Analysis_triggerStudies.cfg b/config/sampleCfg_2016Analysis_triggerStudies.cfg index d42bca760..d26c7b2a8 100644 --- a/config/sampleCfg_2016Analysis_triggerStudies.cfg +++ b/config/sampleCfg_2016Analysis_triggerStudies.cfg @@ -9,6 +9,7 @@ tmp_SingleMuon = /uscms/home/fravera/nobackup/DiHiggs_v1/CMSSW_10_2_5/src/bbbbAnalysis/plotterListFiles/2016Analysis/Data_SingleMuon_tmp.txt +TTbar = /uscms/home/fravera/nobackup/DiHiggs_v1/CMSSW_10_2_5/src/bbbbAnalysis/plotterListFiles/2016Analysis/MC_TTbar.txt tmp_Graviton_750GeV = /uscms/home/fravera/nobackup/DiHiggs_v1/CMSSW_10_2_5/src/bbbbAnalysis/plotterListFiles/2016Analysis/MCSignal_Graviton750_tmp.txt diff --git a/config/selectionCfg_2016Analysis_triggerStudies.cfg b/config/selectionCfg_2016Analysis_triggerStudies.cfg index 21458a868..eef33dc73 100644 --- a/config/selectionCfg_2016Analysis_triggerStudies.cfg +++ b/config/selectionCfg_2016Analysis_triggerStudies.cfg @@ -10,10 +10,10 @@ [selections] # common -# basicSelectionPass = HighestIsoMuonPt>40 && ForthJetPt>30 -basicSelectionPass = HighestIsoMuonPt>20 && ForthJetPt>30 && ((H1_m > 120-40 && H1_m < 120+40) && (H2_m > 120-40 && H2_m < 120+40)) && HH_2DdeltaM < 4.*20.*20. -# basicSelectionPass = ForthJetCMVA > 0.185 && ((H1_m > 120-40 && H1_m < 120+40) && (H2_m > 120-40 && H2_m < 120+40)) && HH_2DdeltaM < 25.*20*20 -# basicSelectionPass = ((H1_m > 120-40 && H1_m < 120+40) && (H2_m > 120-40 && H2_m < 120+40)) && HH_2DdeltaM < 25.*20*20 +basicSelectionPass = HighestIsoMuonPt>40 && ForthJetPt>30 +# basicSelectionPass = HighestIsoMuonPt>20 && ForthJetPt>30 && ((H1_m > 120-40 && H1_m < 120+40) && (H2_m > 120-40 && H2_m < 120+40)) && HH_2DdeltaM < 4.*20.*20. +# # # basicSelectionPass = ForthJetCMVA > 0.185 && ((H1_m > 120-40 && H1_m < 120+40) && (H2_m > 120-40 && H2_m < 120+40)) && HH_2DdeltaM < 25.*20*20 +# # # basicSelectionPass = ((H1_m > 120-40 && H1_m < 120+40) && (H2_m > 120-40 && H2_m < 120+40)) && HH_2DdeltaM < 25.*20*20 BTagCaloCSVp087TriplePass = BTagCaloCSVp087Triple >= 3 # HLT_DoubleJet90_Double30_TripleBTagCSV_p087 @@ -67,16 +67,20 @@ HLT_IsoMu20 = HLT_IsoMu20_Fired HLT_IsoMu24_Matched = HLT_IsoMu24_Fired && HLT_IsoMu24_ObjectMatched HLT_IsoMu20_Matched = HLT_IsoMu20_Fired && HLT_IsoMu20_ObjectMatched +HLT_IsoMu24_PreselectedJetsLessThan6 = HLT_IsoMu24_Fired && NumberOfJetsPassingPreselection <6 +HLT_IsoMu24_PreselectedJetsBetween7And9 = HLT_IsoMu24_Fired && NumberOfJetsPassingPreselection >=7 && NumberOfJetsPassingPreselection <=9 +HLT_IsoMu24_PreselectedJetsMoreThan9 = HLT_IsoMu24_Fired && NumberOfJetsPassingPreselection > 9 + ######################################################################### ######################################################################### [selectionWeights] -selectionJet = bTagScaleFactor_central ######################################################################### ######################################################################### [sampleWeights] +TTbar = genWeight, PUWeight, LHEPdfWeight, LHEScaleWeight tmp_Graviton_750GeV = genWeight, PUWeight, LHEPdfWeight, LHEScaleWeight sig_Graviton_1000GeV = genWeight, PUWeight, LHEPdfWeight, LHEScaleWeight sig_Graviton_1200GeV = genWeight, PUWeight, LHEPdfWeight, LHEScaleWeight @@ -130,6 +134,9 @@ ThirdJetDeepCSV = 50, 0., 1. # write binning as ROOT declaration: nXbins xmin, xmax, nYbins, ymin, ymax = [histos2D] +OfflineJetPtForCaloResolution:ResolutionOnlineCaloJetPt = 100, 30., 500., 100, -300., +300. +OfflineJetPtForPFResolution:ResolutionOnlinePFJetPt = 100, 30., 500., 100, -300., +300. + # user defined binning: if defined, overrides any definition in [histos] [binning] \ No newline at end of file diff --git a/config/skim_2016ResonantDiHiggs4B_triggerStudies.cfg b/config/skim_2016ResonantDiHiggs4B_triggerStudies.cfg index 984bd2850..dd0f80eb0 100644 --- a/config/skim_2016ResonantDiHiggs4B_triggerStudies.cfg +++ b/config/skim_2016ResonantDiHiggs4B_triggerStudies.cfg @@ -51,8 +51,8 @@ MaxAbsEta = 2.4 # StandardJER: computation as indicated at https://twiki.cern.ch/twiki/bin/view/CMS/JetResolution#Smearing_procedures # None (do nothing) -JetEnergyResolution = None -# JetEnergyResolution = StandardJER +# JetEnergyResolution = None +JetEnergyResolution = StandardJER JERComputeVariations = false JERScaleFactorFile = JERfiles/Summer16_25nsV1_MC_SF_AK4PFchs.txt JERResolutionFile = JERfiles/Summer16_25nsV1_MC_PtResolution_AK4PFchs.txt @@ -96,9 +96,11 @@ ListOfTriggerObjectsAndBit = 1:0:BTagCaloCSVp087Triple, 1:1:DoubleCentralJet90, # None : no scale factors are saved # FourBtag_ScaleFactor : calculate scale factor for four b jet selection -BTagScaleFactorMethod = FourBtag_ScaleFactor +# BTagScaleFactorMethod = FourBtag_ScaleFactor BJetScaleFactorsFile = weights/DeepCSV_Moriond17_B_H.csv +BTagScaleFactorMethod = None + # -------------------------------------------------------------------------------------------------------------- # # use WeightsMethod to select the method to calculate the weights # current options are: diff --git a/scripts/TriggerEfficiencyFitter.C b/scripts/TriggerEfficiencyFitter.C index a6006bb4f..2734d47e8 100644 --- a/scripts/TriggerEfficiencyFitter.C +++ b/scripts/TriggerEfficiencyFitter.C @@ -5,17 +5,17 @@ #include "TGraphAsymmErrors.h" -TGraphAsymmErrors* TriggerEfficiencyFitter(TFile *inputFile, std::string sampleName, std::string histogramName, +TGraphAsymmErrors* TriggerEfficiencyFitter(TFile *inputFile, std::string sampleName, std::string referenceTriggerName, std::string histogramName, std::string selectionName, std::string normalizationSelectionName, TF1 *fittingFunction, double *parameters, std::string histogramTitle, std::string xAxisTitle, Color_t lineColor) { - std::string cutTmpName = Form("%s/%s/%s_%s_%s",sampleName.data(),selectionName.data(),sampleName.data(),selectionName.data(),histogramName.data()); + std::string cutTmpName = Form("%s/%s_%s/%s_%s_%s_%s",sampleName.data(),selectionName.data(),referenceTriggerName.data(),sampleName.data(),selectionName.data(),referenceTriggerName.data(),histogramName.data()); std::cout<Get(cutTmpName.data()); TH1D *cutHisto = (TH1D*)cutTmp->Clone(("cut "+selectionName).data()); cutHisto->SetDirectory(0); - std::string normalizationTmpName = Form("%s/%s/%s_%s_%s",sampleName.data(),normalizationSelectionName.data(),sampleName.data(),normalizationSelectionName.data(),histogramName.data()); + std::string normalizationTmpName = Form("%s/%s_%s/%s_%s_%s_%s",sampleName.data(),normalizationSelectionName.data(),referenceTriggerName.data(), sampleName.data(),normalizationSelectionName.data(),referenceTriggerName.data(), histogramName.data()); std::cout<Get(normalizationTmpName.data()); TH1D *normalizationHisto = (TH1D*)normalizationTmp->Clone(("Normalization "+selectionName).data()); @@ -26,7 +26,7 @@ TGraphAsymmErrors* TriggerEfficiencyFitter(TFile *inputFile, std::string sampleN g_efficiency->SetTitle(histogramTitle.data()); g_efficiency->GetXaxis()->SetTitle(xAxisTitle.data()); g_efficiency->GetYaxis()->SetTitle("efficiency"); - g_efficiency->SetNameTitle(("Efficiency_"+selectionName).data(), ("Efficiency "+selectionName).data()); + g_efficiency->SetNameTitle(("Efficiency_"+selectionName+"_"+histogramName).data(), ("Efficiency "+selectionName+"_"+histogramName).data()); g_efficiency->GetYaxis()->SetRangeUser(0., 1.2); g_efficiency->SetLineColor(lineColor); @@ -44,188 +44,170 @@ void MeasureTriggerEfficiency(std::string inputFileName, std::string sampleName, // HLT_DoubleJet90_Double30_TripleBTagCSV_p087 - efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "FourHighetJetPtSum", - "L1triggerDouble90Double30AndPrevious_"+referenceTriggerName, "Normalization_"+referenceTriggerName, dummyFormula, dummyParameters, + efficiency = TriggerEfficiencyFitter(inputFile, sampleName, referenceTriggerName, "FourHighetJetPtSum", + "L1triggerDouble90Double30AndPrevious", "Normalization", dummyFormula, dummyParameters, "L1 Trigger", "p_{1}^{T} + p_{2}^{T} + p_{3}^{T} + p_{4}^{T}", lineColor); - // efficiency->SetDirectory(0); efficiency->Write(); - efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "ForthJetPt", - "QuadCentralJet30AndPrevious_"+referenceTriggerName, "L1triggerDouble90Double30AndPrevious_"+referenceTriggerName, dummyFormula, dummyParameters, + efficiency = TriggerEfficiencyFitter(inputFile, sampleName, referenceTriggerName, "FirstJetPt", + "QuadCentralJet30AndPrevious", "L1triggerDouble90Double30AndPrevious", dummyFormula, dummyParameters, + "Quad Central Jet 30 GeV", "p_{1}^{T}", lineColor); + efficiency->Write(); + + efficiency = TriggerEfficiencyFitter(inputFile, sampleName, referenceTriggerName, "SecondJetPt", + "QuadCentralJet30AndPrevious", "L1triggerDouble90Double30AndPrevious", dummyFormula, dummyParameters, + "Quad Central Jet 30 GeV", "p_{2}^{T}", lineColor); + efficiency->Write(); + + efficiency = TriggerEfficiencyFitter(inputFile, sampleName, referenceTriggerName, "ThirdJetPt", + "QuadCentralJet30AndPrevious", "L1triggerDouble90Double30AndPrevious", dummyFormula, dummyParameters, + "Quad Central Jet 30 GeV", "p_{3}^{T}", lineColor); + efficiency->Write(); + + efficiency = TriggerEfficiencyFitter(inputFile, sampleName, referenceTriggerName, "ForthJetPt", + "QuadCentralJet30AndPrevious", "L1triggerDouble90Double30AndPrevious", dummyFormula, dummyParameters, "Quad Central Jet 30 GeV", "p_{4}^{T}", lineColor); - // efficiency->SetDirectory(0); efficiency->Write(); - efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "SecondJetPt", - "DoubleCentralJet90AndPrevious_"+referenceTriggerName, "QuadCentralJet30AndPrevious_"+referenceTriggerName, dummyFormula, dummyParameters, + efficiency = TriggerEfficiencyFitter(inputFile, sampleName, referenceTriggerName, "FirstJetPt", + "DoubleCentralJet90AndPrevious", "QuadCentralJet30AndPrevious", dummyFormula, dummyParameters, + "Double Central Jet 90 GeV", "p_{1}^{T}", lineColor); + efficiency->Write(); + + efficiency = TriggerEfficiencyFitter(inputFile, sampleName, referenceTriggerName, "SecondJetPt", + "DoubleCentralJet90AndPrevious", "QuadCentralJet30AndPrevious", dummyFormula, dummyParameters, "Double Central Jet 90 GeV", "p_{2}^{T}", lineColor); - // efficiency->SetDirectory(0); efficiency->Write(); - efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "ThirdJetDeepCSV", - "BTagCaloCSVp087TripleDouble90Double30AndPrevious_"+referenceTriggerName, "DoubleCentralJet90AndPrevious_"+referenceTriggerName, dummyFormula, dummyParameters, + efficiency = TriggerEfficiencyFitter(inputFile, sampleName, referenceTriggerName, "ThirdJetDeepCSV", + "BTagCaloCSVp087TripleDouble90Double30AndPrevious", "DoubleCentralJet90AndPrevious", dummyFormula, dummyParameters, "BTag CaloCSV p087 Triple", "DeepCSV_{3}", lineColor); - // efficiency->SetDirectory(0); efficiency->Write(); - efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "ForthJetPt", - "QuadPFCentralJetLooseID30AndPrevious_"+referenceTriggerName, "BTagCaloCSVp087TripleDouble90Double30AndPrevious_"+referenceTriggerName, dummyFormula, dummyParameters, - "Quad PF Central Jet Loose ID 30 GeV", "p_{4}^{T}", lineColor); - // efficiency->SetDirectory(0); + efficiency = TriggerEfficiencyFitter(inputFile, sampleName, referenceTriggerName, "FirstJetPt", + "QuadPFCentralJetLooseID30AndPrevious", "BTagCaloCSVp087TripleDouble90Double30AndPrevious", dummyFormula, dummyParameters, + "Quad PF Central Jet Loose ID 30 GeV", "p_{1}^{T}", lineColor); efficiency->Write(); - efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "SecondJetPt", - "DoublePFCentralJetLooseID90AndPrevious_"+referenceTriggerName, "QuadPFCentralJetLooseID30AndPrevious_"+referenceTriggerName, dummyFormula, dummyParameters, - "Double PF Central Jet Loose ID 90 GeV", "p_{2}^{T}", lineColor); - // efficiency->SetDirectory(0); + efficiency = TriggerEfficiencyFitter(inputFile, sampleName, referenceTriggerName, "SecondJetPt", + "QuadPFCentralJetLooseID30AndPrevious", "BTagCaloCSVp087TripleDouble90Double30AndPrevious", dummyFormula, dummyParameters, + "Quad PF Central Jet Loose ID 30 GeV", "p_{2}^{T}", lineColor); efficiency->Write(); -/* - // not per-object efficiency HLT_DoubleJet90_Double30_TripleBTagCSV_p087 - efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "SelectedJetPtSum", - "HLT_Double90Double30AndPrevious_"+referenceTriggerName, "Normalization_"+referenceTriggerName, dummyFormula, dummyParameters, - "L1 Trigger", "p_{1}^{T} + p_{2}^{T} + p_{3}^{T} + p_{4}^{T}", lineColor); - // efficiency->SetDirectory(0); + efficiency = TriggerEfficiencyFitter(inputFile, sampleName, referenceTriggerName, "ThirdJetPt", + "QuadPFCentralJetLooseID30AndPrevious", "BTagCaloCSVp087TripleDouble90Double30AndPrevious", dummyFormula, dummyParameters, + "Quad PF Central Jet Loose ID 30 GeV", "p_{3}^{T}", lineColor); efficiency->Write(); - efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "ForthSelectedJetPt", - "HLT_Double90Double30AndPrevious_"+referenceTriggerName, "Normalization_"+referenceTriggerName, dummyFormula, dummyParameters, - "Forth Jet efficiency", "p_{4}^{T}", lineColor); - // efficiency->SetDirectory(0); + efficiency = TriggerEfficiencyFitter(inputFile, sampleName, referenceTriggerName, "ForthJetPt", + "QuadPFCentralJetLooseID30AndPrevious", "BTagCaloCSVp087TripleDouble90Double30AndPrevious", dummyFormula, dummyParameters, + "Quad PF Central Jet Loose ID 30 GeV", "p_{4}^{T}", lineColor); efficiency->Write(); - efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "SecondSelectedJetPt", - "HLT_Double90Double30AndPrevious_"+referenceTriggerName, "Normalization_"+referenceTriggerName, dummyFormula, dummyParameters, - "Second Jet efficiency", "p_{2}^{T}", lineColor); - // efficiency->SetDirectory(0); + efficiency = TriggerEfficiencyFitter(inputFile, sampleName, referenceTriggerName, "FirstJetPt", + "DoublePFCentralJetLooseID90AndPrevious", "QuadPFCentralJetLooseID30AndPrevious", dummyFormula, dummyParameters, + "Double PF Central Jet Loose ID 90 GeV", "p_{1}^{T}", lineColor); efficiency->Write(); - efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "ThirdSelectedJetDeepCSV", - "HLT_Double90Double30AndPrevious_"+referenceTriggerName, "Normalization_"+referenceTriggerName, dummyFormula, dummyParameters, - "Third BTag jet efficiency", "DeepCSV_{3}", lineColor); - // efficiency->SetDirectory(0); + efficiency = TriggerEfficiencyFitter(inputFile, sampleName, referenceTriggerName, "SecondJetPt", + "DoublePFCentralJetLooseID90AndPrevious", "QuadPFCentralJetLooseID30AndPrevious", dummyFormula, dummyParameters, + "Double PF Central Jet Loose ID 90 GeV", "p_{2}^{T}", lineColor); efficiency->Write(); -*/ + + // _QuadJet45_TripleBTagCSV_p087 - efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "FourHighetJetPtSum", - "L1triggerQuad45AndPrevious_"+referenceTriggerName, "Normalization_"+referenceTriggerName, dummyFormula, dummyParameters, + efficiency = TriggerEfficiencyFitter(inputFile, sampleName, referenceTriggerName, "FourHighetJetPtSum", + "L1triggerQuad45AndPrevious", "Normalization", dummyFormula, dummyParameters, "L1 Trigger", "p_{1}^{T} + p_{2}^{T} + p_{3}^{T} + p_{4}^{T}", lineColor); - // efficiency->SetDirectory(0); efficiency->Write(); - efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "ForthJetPt", - "QuadCentralJet45AndPrevious_"+referenceTriggerName, "L1triggerQuad45AndPrevious_"+referenceTriggerName, dummyFormula, dummyParameters, - "Quad Central Jet 45 GeV", "p_{4}^{T}", lineColor); - // efficiency->SetDirectory(0); + efficiency = TriggerEfficiencyFitter(inputFile, sampleName, referenceTriggerName, "FirstJetPt", + "QuadCentralJet45AndPrevious", "L1triggerQuad45AndPrevious", dummyFormula, dummyParameters, + "Quad Central Jet 45 GeV", "p_{1}^{T}", lineColor); efficiency->Write(); - efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "ThirdJetDeepCSV", - "BTagCaloCSVp087TripleQuad45AndPrevious_"+referenceTriggerName, "QuadCentralJet45AndPrevious_"+referenceTriggerName, dummyFormula, dummyParameters, - "BTag CaloCSV p087 Triple", "DeepCSV_{3}", lineColor); - // efficiency->SetDirectory(0); + efficiency = TriggerEfficiencyFitter(inputFile, sampleName, referenceTriggerName, "SecondJetPt", + "QuadCentralJet45AndPrevious", "L1triggerQuad45AndPrevious", dummyFormula, dummyParameters, + "Quad Central Jet 45 GeV", "p_{2}^{T}", lineColor); efficiency->Write(); - efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "ForthJetPt", - "QuadPFCentralJetLooseID45AndPrevious_"+referenceTriggerName, "BTagCaloCSVp087TripleQuad45AndPrevious_"+referenceTriggerName, dummyFormula, dummyParameters, - "Quad PF Central Jet Loose ID 45 GeV", "p_{4}^{T}", lineColor); - // efficiency->SetDirectory(0); + efficiency = TriggerEfficiencyFitter(inputFile, sampleName, referenceTriggerName, "ThirdJetPt", + "QuadCentralJet45AndPrevious", "L1triggerQuad45AndPrevious", dummyFormula, dummyParameters, + "Quad Central Jet 45 GeV", "p_{3}^{T}", lineColor); + efficiency->Write(); + efficiency = TriggerEfficiencyFitter(inputFile, sampleName, referenceTriggerName, "ForthJetPt", + "QuadCentralJet45AndPrevious", "L1triggerQuad45AndPrevious", dummyFormula, dummyParameters, + "Quad Central Jet 45 GeV", "p_{4}^{T}", lineColor); efficiency->Write(); -/* - // not per-object efficiency _QuadJet45_TripleBTagCSV_p087 - efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "SelectedJetPtSum", - "HLT_Quad45AndPrevious_"+referenceTriggerName, "Normalization_"+referenceTriggerName, dummyFormula, dummyParameters, - "L1 Trigger", "p_{1}^{T} + p_{2}^{T} + p_{3}^{T} + p_{4}^{T}", lineColor); - // efficiency->SetDirectory(0); + efficiency = TriggerEfficiencyFitter(inputFile, sampleName, referenceTriggerName, "ThirdJetDeepCSV", + "BTagCaloCSVp087TripleQuad45AndPrevious", "QuadCentralJet45AndPrevious", dummyFormula, dummyParameters, + "BTag CaloCSV p087 Triple", "DeepCSV_{3}", lineColor); efficiency->Write(); - efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "ForthSelectedJetPt", - "HLT_Quad45AndPrevious_"+referenceTriggerName, "Normalization_"+referenceTriggerName, dummyFormula, dummyParameters, - "Forth Jet efficiency", "p_{4}^{T}", lineColor); - // efficiency->SetDirectory(0); + efficiency = TriggerEfficiencyFitter(inputFile, sampleName, referenceTriggerName, "FirstJetPt", + "QuadPFCentralJetLooseID45AndPrevious", "BTagCaloCSVp087TripleQuad45AndPrevious", dummyFormula, dummyParameters, + "Quad PF Central Jet Loose ID 45 GeV", "p_{1}^{T}", lineColor); efficiency->Write(); - efficiency = TriggerEfficiencyFitter(inputFile, sampleName, "ThirdSelectedJetDeepCSV", - "HLT_Quad45AndPrevious_"+referenceTriggerName, "Normalization_"+referenceTriggerName, dummyFormula, dummyParameters, - "Third BTag jet efficiency", "DeepCSV_{3}", lineColor); - // efficiency->SetDirectory(0); + efficiency = TriggerEfficiencyFitter(inputFile, sampleName, referenceTriggerName, "SecondJetPt", + "QuadPFCentralJetLooseID45AndPrevious", "BTagCaloCSVp087TripleQuad45AndPrevious", dummyFormula, dummyParameters, + "Quad PF Central Jet Loose ID 45 GeV", "p_{2}^{T}", lineColor); efficiency->Write(); -*/ - //outputFile->WriteObject(efficiency,"Efficiency"); + efficiency = TriggerEfficiencyFitter(inputFile, sampleName, referenceTriggerName, "ThirdJetPt", + "QuadPFCentralJetLooseID45AndPrevious", "BTagCaloCSVp087TripleQuad45AndPrevious", dummyFormula, dummyParameters, + "Quad PF Central Jet Loose ID 45 GeV", "p_{3}^{T}", lineColor); + efficiency->Write(); - // inputFile->Close(); - // outputFile->Close(); + efficiency = TriggerEfficiencyFitter(inputFile, sampleName, referenceTriggerName, "ForthJetPt", + "QuadPFCentralJetLooseID45AndPrevious", "BTagCaloCSVp087TripleQuad45AndPrevious", dummyFormula, dummyParameters, + "Quad PF Central Jet Loose ID 45 GeV", "p_{4}^{T}", lineColor); + efficiency->Write(); return; } void PlotAll() { - // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt40/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24","TriggerEfficiency_SingleMuon_HLT_IsoMu24_MuPt40.root",kBlue); - // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt40/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24_Matched","TriggerEfficiency_SingleMuon_HLT_IsoMu24_Matched_MuPt40.root",kRed); - - // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt40/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20","TriggerEfficiency_SingleMuon_HLT_IsoMu20_MuPt40.root",kGreen); - // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt40/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20_Matched","TriggerEfficiency_SingleMuon_HLT_IsoMu20_Matched_MuPt40.root",kOrange); - - // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24","TriggerEfficiency_SingleMuon_HLT_IsoMu24_MuPt20.root",kBlue); - // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24_Matched","TriggerEfficiency_SingleMuon_HLT_IsoMu24_Matched_MuPt20.root",kRed); - - // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20","TriggerEfficiency_SingleMuon_HLT_IsoMu20_MuPt20.root",kGreen); - // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20_Matched","TriggerEfficiency_SingleMuon_HLT_IsoMu20_Matched_MuPt20.root",kOrange); - - // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt40/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20","TriggerEfficiency_SingleMuon_HLT_IsoMu20_MuPt40_best.root",kRed); - // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20","TriggerEfficiency_SingleMuon_HLT_IsoMu20_MuPt20_best.root",kBlue); - - // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt40/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24","TriggerEfficiency_SingleMuon_HLT_IsoMu24_MuPt40.root",kBlue); - // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt40/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24_Matched","TriggerEfficiency_SingleMuon_HLT_IsoMu24_Matched_MuPt40.root",kRed); - - // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt40/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20","TriggerEfficiency_SingleMuon_HLT_IsoMu20_MuPt40.root",kGreen); - // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt40/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20_Matched","TriggerEfficiency_SingleMuon_HLT_IsoMu20_Matched_MuPt40.root",kOrange); - - // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24","TriggerEfficiency_SingleMuon_HLT_IsoMu24_MuPt20.root",kBlue); - // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24_Matched","TriggerEfficiency_SingleMuon_HLT_IsoMu24_Matched_MuPt20.root",kRed); - - // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20","TriggerEfficiency_SingleMuon_HLT_IsoMu20_MuPt20.root",kGreen); - // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20_Matched","TriggerEfficiency_SingleMuon_HLT_IsoMu20_Matched_MuPt20.root",kOrange); + // SingleMuon + MeasureTriggerEfficiency("2016DataPlots_SingleMuon_MuonPt40_ForthJetPt30/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24","TriggerEfficiency_SingleMuon_MuonPt40_ForthJetPt30_IsoMu24.root",kBlue); + MeasureTriggerEfficiency("2016DataPlots_SingleMuon_MuonPt40_ForthJetPt30/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24_Matched","TriggerEfficiency_SingleMuon_MuonPt40_ForthJetPt30_IsoMu24_Matched.root",kBlue); + MeasureTriggerEfficiency("2016DataPlots_SingleMuon_MuonPt40_ForthJetPt30/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20","TriggerEfficiency_SingleMuon_MuonPt40_ForthJetPt30_IsoMu20.root",kBlue); + MeasureTriggerEfficiency("2016DataPlots_SingleMuon_MuonPt40_ForthJetPt30/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20_Matched","TriggerEfficiency_SingleMuon_MuonPt40_ForthJetPt30_IsoMu20_Matched.root",kBlue); - // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Matching_Trigger_MuPt20/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24","TriggerEfficiency_SingleMuon_HLT_IsoMu24_MuPt20.root",kBlue); - // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Matching_Trigger_MuPt20/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24_Matched","TriggerEfficiency_SingleMuon_HLT_IsoMu24_Matched_MuPt20.root",kRed); + MeasureTriggerEfficiency("2016DataPlots_SingleMuon_4bLooseSelection/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24","TriggerEfficiency_SingleMuon_4bLooseSelection_IsoMu24.root",kBlue); + MeasureTriggerEfficiency("2016DataPlots_SingleMuon_4bLooseSelection/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24_Matched","TriggerEfficiency_SingleMuon_4bLooseSelection_IsoMu24_Matched.root",kBlue); + MeasureTriggerEfficiency("2016DataPlots_SingleMuon_4bLooseSelection/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20","TriggerEfficiency_SingleMuon_4bLooseSelection_IsoMu20.root",kBlue); + MeasureTriggerEfficiency("2016DataPlots_SingleMuon_4bLooseSelection/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20_Matched","TriggerEfficiency_SingleMuon_4bLooseSelection_IsoMu20_Matched.root",kBlue); - // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Matching_Trigger_MuPt20/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20","TriggerEfficiency_SingleMuon_HLT_IsoMu20_MuPt20.root",kGreen); - // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Matching_Trigger_MuPt20/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20_Matched","TriggerEfficiency_SingleMuon_HLT_IsoMu20_Matched_MuPt20.root",kOrange); + MeasureTriggerEfficiency("2016DataPlots_SingleMuon_4bSelection/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24","TriggerEfficiency_SingleMuon_4bSelection_IsoMu24.root",kBlue); + MeasureTriggerEfficiency("2016DataPlots_SingleMuon_4bSelection/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24_Matched","TriggerEfficiency_SingleMuon_4bSelection_IsoMu24_Matched.root",kBlue); + MeasureTriggerEfficiency("2016DataPlots_SingleMuon_4bSelection/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20","TriggerEfficiency_SingleMuon_4bSelection_IsoMu20.root",kBlue); + MeasureTriggerEfficiency("2016DataPlots_SingleMuon_4bSelection/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20_Matched","TriggerEfficiency_SingleMuon_4bSelection_IsoMu20_Matched.root",kBlue); - // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20_newCode_CSVcut/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24","TriggerEfficiency_SingleMuon_HLT_IsoMu24_MuPt20_CSVcut.root",kBlue); - // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20_newCode_CSVcut/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24_Matched","TriggerEfficiency_SingleMuon_HLT_IsoMu24_Matched_MuPt20_CSVcut.root",kRed); + // TTbar + MeasureTriggerEfficiency("2016DataPlots_TTbar_MuonPt40_ForthJetPt30/outPlotter.root","TTbar","HLT_IsoMu24","TriggerEfficiency_TTbar_MuonPt40_ForthJetPt30_IsoMu24.root",kBlue); + MeasureTriggerEfficiency("2016DataPlots_TTbar_MuonPt40_ForthJetPt30/outPlotter.root","TTbar","HLT_IsoMu24_Matched","TriggerEfficiency_TTbar_MuonPt40_ForthJetPt30_IsoMu24_Matched.root",kBlue); + MeasureTriggerEfficiency("2016DataPlots_TTbar_MuonPt40_ForthJetPt30/outPlotter.root","TTbar","HLT_IsoMu20","TriggerEfficiency_TTbar_MuonPt40_ForthJetPt30_IsoMu20.root",kBlue); + MeasureTriggerEfficiency("2016DataPlots_TTbar_MuonPt40_ForthJetPt30/outPlotter.root","TTbar","HLT_IsoMu20_Matched","TriggerEfficiency_TTbar_MuonPt40_ForthJetPt30_IsoMu20_Matched.root",kBlue); - // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20_newCode_CSVcut/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20","TriggerEfficiency_SingleMuon_HLT_IsoMu20_MuPt20_CSVcut.root",kGreen); - // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20_newCode_CSVcut/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20_Matched","TriggerEfficiency_SingleMuon_HLT_IsoMu20_Matched_MuPt20_CSVcut.root",kOrange); - - - // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20_newCode_noCSVcut/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24","TriggerEfficiency_SingleMuon_HLT_IsoMu24_MuPt20_noCSVcut.root",kBlue); - // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20_newCode_noCSVcut/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24_Matched","TriggerEfficiency_SingleMuon_HLT_IsoMu24_Matched_MuPt20_noCSVcut.root",kRed); - - // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20_newCode_noCSVcut/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20","TriggerEfficiency_SingleMuon_HLT_IsoMu20_MuPt20_noCSVcut.root",kGreen); - // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20_newCode_noCSVcut/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20_Matched","TriggerEfficiency_SingleMuon_HLT_IsoMu20_Matched_MuPt20_noCSVcut.root",kOrange); - - - // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20_oldCode_CSVcut/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24","TriggerEfficiency_SingleMuon_HLT_oldCode_IsoMu24_MuPt20_CSVcut.root",kBlue); - // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20_oldCode_CSVcut/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24_Matched","TriggerEfficiency_SingleMuon_HLT_oldCode_IsoMu24_Matched_MuPt20_CSVcut.root",kRed); - - // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20_oldCode_CSVcut/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20","TriggerEfficiency_SingleMuon_HLT_oldCode_IsoMu20_MuPt20_CSVcut.root",kGreen); - // MeasureTriggerEfficiency("2016DataPlots_SingleMuon_Trigger_MuPt20_oldCode_CSVcut/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20_Matched","TriggerEfficiency_SingleMuon_HLT_oldCode_IsoMu20_Matched_MuPt20_CSVcut.root",kOrange); - - MeasureTriggerEfficiency("2016DataPlots/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24","TriggerEfficiency_SingleMuon_HLT_IsoMu24_MuPt20_CSVcut.root",kBlue); - MeasureTriggerEfficiency("2016DataPlots/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24_Matched","TriggerEfficiency_SingleMuon_HLT_IsoMu24_Matched_MuPt20_CSVcut.root",kRed); - - MeasureTriggerEfficiency("2016DataPlots/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20","TriggerEfficiency_SingleMuon_HLT_IsoMu20_MuPt20_CSVcut.root",kGreen); - MeasureTriggerEfficiency("2016DataPlots/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20_Matched","TriggerEfficiency_SingleMuon_HLT_IsoMu20_Matched_MuPt20_CSVcut.root",kOrange); + MeasureTriggerEfficiency("2016DataPlots_TTbar_4bLooseSelection/outPlotter.root","TTbar","HLT_IsoMu24","TriggerEfficiency_TTbar_4bLooseSelection_IsoMu24.root",kBlue); + MeasureTriggerEfficiency("2016DataPlots_TTbar_4bLooseSelection/outPlotter.root","TTbar","HLT_IsoMu24_Matched","TriggerEfficiency_TTbar_4bLooseSelection_IsoMu24_Matched.root",kBlue); + MeasureTriggerEfficiency("2016DataPlots_TTbar_4bLooseSelection/outPlotter.root","TTbar","HLT_IsoMu20","TriggerEfficiency_TTbar_4bLooseSelection_IsoMu20.root",kBlue); + MeasureTriggerEfficiency("2016DataPlots_TTbar_4bLooseSelection/outPlotter.root","TTbar","HLT_IsoMu20_Matched","TriggerEfficiency_TTbar_4bLooseSelection_IsoMu20_Matched.root",kBlue); + MeasureTriggerEfficiency("2016DataPlots_TTbar_4bSelection/outPlotter.root","TTbar","HLT_IsoMu24","TriggerEfficiency_TTbar_4bSelection_IsoMu24.root",kBlue); + MeasureTriggerEfficiency("2016DataPlots_TTbar_4bSelection/outPlotter.root","TTbar","HLT_IsoMu24_Matched","TriggerEfficiency_TTbar_4bSelection_IsoMu24_Matched.root",kBlue); + MeasureTriggerEfficiency("2016DataPlots_TTbar_4bSelection/outPlotter.root","TTbar","HLT_IsoMu20","TriggerEfficiency_TTbar_4bSelection_IsoMu20.root",kBlue); + MeasureTriggerEfficiency("2016DataPlots_TTbar_4bSelection/outPlotter.root","TTbar","HLT_IsoMu20_Matched","TriggerEfficiency_TTbar_4bSelection_IsoMu20_Matched.root",kBlue); + // MeasureTriggerEfficiency("2016DataPlots/outPlotter.root","TTbar","HLT_IsoMu20","TriggerEfficiency_TTbar_4bLooseSelection_IsoMu20.root",kGreen); + // MeasureTriggerEfficiency("2016DataPlots/outPlotter.root","TTbar","HLT_IsoMu20_Matched","TriggerEfficiency_TTbar_4bLooseSelection_IsoMu20_Matched.root",kOrange); } @@ -236,5 +218,3 @@ void PlotAll() - - diff --git a/scripts/submitAllSkimsOnTier3.sh b/scripts/submitAllSkimsOnTier3.sh index 0e1701863..02ebbdaca 100755 --- a/scripts/submitAllSkimsOnTier3.sh +++ b/scripts/submitAllSkimsOnTier3.sh @@ -1,5 +1,6 @@ # python scripts/submitSkimOnTier3.py --input=inputFiles/2016ResonantDiHiggs4BDataSets/BTagCSV_Data_FileList_80x_reprocess.txt --tag=$1 --cfg=config/skim_2016ResonantDiHiggs4B.cfg --is-data --njobs=200 -python scripts/submitSkimOnTier3.py --input=inputFiles/2016ResonantDiHiggs4BDataSets/SingleMuon_Data_RunBF.txt --tag=$1 --cfg=config/skim_2016ResonantDiHiggs4B_triggerStudies.cfg --is-data --njobs=300 +# python scripts/submitSkimOnTier3.py --input=inputFiles/2016ResonantDiHiggs4BDataSets/SingleMuon_Data_RunBF.txt --tag=$1 --cfg=config/skim_2016ResonantDiHiggs4B_triggerStudies.cfg --is-data --njobs=300 +python scripts/submitSkimOnTier3.py --input=inputFiles/2016ResonantDiHiggs4BDataSets/MC_TT_TuneCUETP8M2T4_13TeV-powheg-pythia8.txt --tag=$1 --cfg=config/skim_2016ResonantDiHiggs4B_triggerStudies.cfg --puWeight=weights/MCSignal_BulkGravTohhTohbbhbb_narrow_M-1000_13TeV-madgraph_PUweights.root --xs=1 --njobs=300 # python scripts/submitSkimOnTier3.py --input=inputFiles/2016ResonantDiHiggs4BDataSets/BTagCSV_Data_FileList_80x_reprocess.txt --tag=$1 --cfg=config/skim_2016ResonantDiHiggs4B_antiTag.cfg --is-data --njobs=300 # python scripts/submitSkimOnTier3.py --input=inputFiles/2016ResonantDiHiggs4BDataSets/MCSignal_BulkGravTohhTohbbhbb_narrow_M-1000_13TeV-madgraph.txt --tag=$1 --cfg=config/skim_2016ResonantDiHiggs4B.cfg --puWeight=weights/MCSignal_BulkGravTohhTohbbhbb_narrow_M-1000_13TeV-madgraph_PUweights.root --is-signal --xs=1 --no-tar --no-xrdcp-tar --njobs=3 # python scripts/submitSkimOnTier3.py --input=inputFiles/2016ResonantDiHiggs4BDataSets/MCSignal_BulkGravTohhTohbbhbb_narrow_M-1200_13TeV-madgraph.txt --tag=$1 --cfg=config/skim_2016ResonantDiHiggs4B.cfg --puWeight=weights/MCSignal_BulkGravTohhTohbbhbb_narrow_M-1200_13TeV-madgraph_PUweights.root --is-signal --xs=1 --no-tar --no-xrdcp-tar --njobs=3 diff --git a/src/OfflineProducerHelper.cc b/src/OfflineProducerHelper.cc index ff4c07660..73021f6cc 100644 --- a/src/OfflineProducerHelper.cc +++ b/src/OfflineProducerHelper.cc @@ -828,7 +828,7 @@ bool OfflineProducerHelper::select_bbbb_jets(NanoAODTree& nat, EventInfo& ei, Ou for (uint muonIt = 0; muonIt < *(nat.nMuon); ++muonIt) { - if(nat.Muon_pfRelIso04_all[muonIt]<0.1) + if(nat.Muon_pfRelIso04_all[muonIt]<0.1 && nat.Muon_mediumId[muonIt]) { int muonJetId = nat.Muon_jetIdx[muonIt]; bool matchingJetFound = false; From 92416651d5d38be7537bf70fb2ee55c9568bd17a Mon Sep 17 00:00:00 2001 From: fravera Date: Thu, 13 Jun 2019 17:16:28 -0500 Subject: [PATCH 11/12] Added info for online btag efficiency --- .../plotter_2016Analysis_triggerStudies.cfg | 11 +- .../sampleCfg_2016Analysis_triggerStudies.cfg | 42 +---- ...lectionCfg_2016Analysis_triggerStudies.cfg | 58 +++---- ...m_2016ResonantDiHiggs4B_triggerStudies.cfg | 2 +- scripts/TriggerEfficiencyFitter.C | 145 ++++++++++++++---- src/OfflineProducerHelper.cc | 95 +++++++++--- 6 files changed, 216 insertions(+), 137 deletions(-) diff --git a/config/plotter_2016Analysis_triggerStudies.cfg b/config/plotter_2016Analysis_triggerStudies.cfg index 75b272b32..00e2081c8 100644 --- a/config/plotter_2016Analysis_triggerStudies.cfg +++ b/config/plotter_2016Analysis_triggerStudies.cfg @@ -1,17 +1,18 @@ [general] lumi = 35900 # pb^-1 -outputFolder = ./2016DataPlots_TTbar_4bLooseSelection +outputFolder = ./2016DataPlots_4bSelection +# outputFolder = ./2016DataPlots_4bLooseSelection +# outputFolder = ./2016DataPlots_MuonPt40_ForthJetPt30 +# outputFolder = ./2016DataPlots_MuonPt40_ForthJetPt30_CMVAM # Comment out an entry if you don't want to run on it. # NOTE; data gets simply plotted (1 event -> 1 entry in the histograms) # while backgrounds and signals get scaled by weights, lumi, and normalisation from the histogram -# data = data_BTagCSV -# backgrounds = bkg_test -# signals = sig_Graviton_1000GeV , sig_Graviton_1200GeV, sig_Graviton_260GeV, sig_Graviton_270GeV, sig_Graviton_300GeV, sig_Graviton_350GeV, sig_Graviton_400GeV, sig_Graviton_450GeV, sig_Graviton_500GeV, sig_Graviton_550GeV, sig_Graviton_600GeV, sig_Graviton_650GeV, sig_Graviton_750GeV, sig_Graviton_800GeV, sig_Graviton_900GeV, sig_Radion_260GeV, sig_Radion_270GeV, sig_Radion_300GeV, sig_Radion_350GeV, sig_Radion_400GeV, sig_Radion_450GeV, sig_Radion_500GeV, sig_Radion_550GeV, sig_Radion_600GeV, sig_Radion_650GeV, sig_Radion_750GeV, sig_Radion_800GeV, sig_Radion_900GeV, sig_Radion_1000GeV, sig_Radion_1200GeV # signals = tmp_Graviton_750GeV -# data = tmp_SingleMuon +data = SingleMuon +# data = SingleMuon_RunBF, SingleMuon_RunGH signals = TTbar variables = FourHighetJetPtSum, FirstJetPt, SecondJetPt, ThirdJetPt, ForthJetPt, ThirdJetDeepCSV diff --git a/config/sampleCfg_2016Analysis_triggerStudies.cfg b/config/sampleCfg_2016Analysis_triggerStudies.cfg index d26c7b2a8..f55932bfe 100644 --- a/config/sampleCfg_2016Analysis_triggerStudies.cfg +++ b/config/sampleCfg_2016Analysis_triggerStudies.cfg @@ -3,45 +3,11 @@ [samples] -# dati_test = /uscms/home/fravera/nobackup/DiHiggs_v1/CMSSW_10_2_5/src/bbbbAnalysis/list_data.txt -# bkg_test = /uscms/home/fravera/nobackup/DiHiggs_v1/CMSSW_10_2_5/src/bbbbAnalysis/list_data.txt -# sig_test = /uscms/home/fravera/nobackup/DiHiggs_v1/CMSSW_10_2_5/src/bbbbAnalysis/list_signal.txt +SingleMuon = /uscms/home/fravera/nobackup/DiHiggs_v1/CMSSW_10_2_5/src/bbbbAnalysis/plotterListFiles/2016Analysis/Data_SingleMuon.txt -tmp_SingleMuon = /uscms/home/fravera/nobackup/DiHiggs_v1/CMSSW_10_2_5/src/bbbbAnalysis/plotterListFiles/2016Analysis/Data_SingleMuon_tmp.txt +# SingleMuon_RunBF = /uscms/home/fravera/nobackup/DiHiggs_v1/CMSSW_10_2_5/src/bbbbAnalysis/plotterListFiles/2016Analysis/Data_SingleMuon_RunBF.txt -TTbar = /uscms/home/fravera/nobackup/DiHiggs_v1/CMSSW_10_2_5/src/bbbbAnalysis/plotterListFiles/2016Analysis/MC_TTbar.txt - -tmp_Graviton_750GeV = /uscms/home/fravera/nobackup/DiHiggs_v1/CMSSW_10_2_5/src/bbbbAnalysis/plotterListFiles/2016Analysis/MCSignal_Graviton750_tmp.txt +# SingleMuon_RunGH = /uscms/home/fravera/nobackup/DiHiggs_v1/CMSSW_10_2_5/src/bbbbAnalysis/plotterListFiles/2016Analysis/Data_SingleMuon_RunGH.txt -data_BTagCSV = /uscms/home/fravera/nobackup/DiHiggs_v1/CMSSW_10_2_5/src/bbbbAnalysis/plotterListFiles/2016Analysis/BTagCSV_Data_FileList_80x_reprocess.txt -sig_Graviton_1000GeV = /uscms/home/fravera/nobackup/DiHiggs_v1/CMSSW_10_2_5/src/bbbbAnalysis/plotterListFiles/2016Analysis/MCSignal_BulkGravTohhTohbbhbb_narrow_M-1000_13TeV-madgraph.txt -sig_Graviton_1200GeV = /uscms/home/fravera/nobackup/DiHiggs_v1/CMSSW_10_2_5/src/bbbbAnalysis/plotterListFiles/2016Analysis/MCSignal_BulkGravTohhTohbbhbb_narrow_M-1200_13TeV-madgraph.txt -sig_Graviton_260GeV = /uscms/home/fravera/nobackup/DiHiggs_v1/CMSSW_10_2_5/src/bbbbAnalysis/plotterListFiles/2016Analysis/MCSignal_GluGluToBulkGravitonToHHTo4B_M-260_narrow_13TeV-madgraph.txt -sig_Graviton_270GeV = /uscms/home/fravera/nobackup/DiHiggs_v1/CMSSW_10_2_5/src/bbbbAnalysis/plotterListFiles/2016Analysis/MCSignal_GluGluToBulkGravitonToHHTo4B_M-270_narrow_13TeV-madgraph.txt -sig_Graviton_300GeV = /uscms/home/fravera/nobackup/DiHiggs_v1/CMSSW_10_2_5/src/bbbbAnalysis/plotterListFiles/2016Analysis/MCSignal_GluGluToBulkGravitonToHHTo4B_M-300_narrow_13TeV-madgraph.txt -sig_Graviton_350GeV = /uscms/home/fravera/nobackup/DiHiggs_v1/CMSSW_10_2_5/src/bbbbAnalysis/plotterListFiles/2016Analysis/MCSignal_GluGluToBulkGravitonToHHTo4B_M-350_narrow_13TeV-madgraph.txt -sig_Graviton_400GeV = /uscms/home/fravera/nobackup/DiHiggs_v1/CMSSW_10_2_5/src/bbbbAnalysis/plotterListFiles/2016Analysis/MCSignal_GluGluToBulkGravitonToHHTo4B_M-400_narrow_13TeV-madgraph.txt -sig_Graviton_450GeV = /uscms/home/fravera/nobackup/DiHiggs_v1/CMSSW_10_2_5/src/bbbbAnalysis/plotterListFiles/2016Analysis/MCSignal_GluGluToBulkGravitonToHHTo4B_M-450_narrow_13TeV-madgraph.txt -sig_Graviton_500GeV = /uscms/home/fravera/nobackup/DiHiggs_v1/CMSSW_10_2_5/src/bbbbAnalysis/plotterListFiles/2016Analysis/MCSignal_GluGluToBulkGravitonToHHTo4B_M-500_narrow_13TeV-madgraph.txt -sig_Graviton_550GeV = /uscms/home/fravera/nobackup/DiHiggs_v1/CMSSW_10_2_5/src/bbbbAnalysis/plotterListFiles/2016Analysis/MCSignal_GluGluToBulkGravitonToHHTo4B_M-550_narrow_13TeV-madgraph.txt -sig_Graviton_600GeV = /uscms/home/fravera/nobackup/DiHiggs_v1/CMSSW_10_2_5/src/bbbbAnalysis/plotterListFiles/2016Analysis/MCSignal_GluGluToBulkGravitonToHHTo4B_M-600_narrow_13TeV-madgraph.txt -sig_Graviton_650GeV = /uscms/home/fravera/nobackup/DiHiggs_v1/CMSSW_10_2_5/src/bbbbAnalysis/plotterListFiles/2016Analysis/MCSignal_GluGluToBulkGravitonToHHTo4B_M-650_narrow_13TeV-madgraph.txt -sig_Graviton_750GeV = /uscms/home/fravera/nobackup/DiHiggs_v1/CMSSW_10_2_5/src/bbbbAnalysis/plotterListFiles/2016Analysis/MCSignal_GluGluToBulkGravitonToHHTo4B_M-750_narrow_13TeV-madgraph.txt -sig_Graviton_800GeV = /uscms/home/fravera/nobackup/DiHiggs_v1/CMSSW_10_2_5/src/bbbbAnalysis/plotterListFiles/2016Analysis/MCSignal_GluGluToBulkGravitonToHHTo4B_M-800_narrow_13TeV-madgraph.txt -sig_Graviton_900GeV = /uscms/home/fravera/nobackup/DiHiggs_v1/CMSSW_10_2_5/src/bbbbAnalysis/plotterListFiles/2016Analysis/MCSignal_GluGluToBulkGravitonToHHTo4B_M-900_narrow_13TeV-madgraph.txt -sig_Radion_260GeV = /uscms/home/fravera/nobackup/DiHiggs_v1/CMSSW_10_2_5/src/bbbbAnalysis/plotterListFiles/2016Analysis/MCSignal_GluGluToRadionToHHTo4B_M-260_narrow_13TeV-madgraph.txt -sig_Radion_270GeV = /uscms/home/fravera/nobackup/DiHiggs_v1/CMSSW_10_2_5/src/bbbbAnalysis/plotterListFiles/2016Analysis/MCSignal_GluGluToRadionToHHTo4B_M-270_narrow_13TeV-madgraph.txt -sig_Radion_300GeV = /uscms/home/fravera/nobackup/DiHiggs_v1/CMSSW_10_2_5/src/bbbbAnalysis/plotterListFiles/2016Analysis/MCSignal_GluGluToRadionToHHTo4B_M-300_narrow_13TeV-madgraph.txt -sig_Radion_350GeV = /uscms/home/fravera/nobackup/DiHiggs_v1/CMSSW_10_2_5/src/bbbbAnalysis/plotterListFiles/2016Analysis/MCSignal_GluGluToRadionToHHTo4B_M-350_narrow_13TeV-madgraph.txt -sig_Radion_400GeV = /uscms/home/fravera/nobackup/DiHiggs_v1/CMSSW_10_2_5/src/bbbbAnalysis/plotterListFiles/2016Analysis/MCSignal_GluGluToRadionToHHTo4B_M-400_narrow_13TeV-madgraph.txt -sig_Radion_450GeV = /uscms/home/fravera/nobackup/DiHiggs_v1/CMSSW_10_2_5/src/bbbbAnalysis/plotterListFiles/2016Analysis/MCSignal_GluGluToRadionToHHTo4B_M-450_narrow_13TeV-madgraph.txt -sig_Radion_500GeV = /uscms/home/fravera/nobackup/DiHiggs_v1/CMSSW_10_2_5/src/bbbbAnalysis/plotterListFiles/2016Analysis/MCSignal_GluGluToRadionToHHTo4B_M-500_narrow_13TeV-madgraph.txt -sig_Radion_550GeV = /uscms/home/fravera/nobackup/DiHiggs_v1/CMSSW_10_2_5/src/bbbbAnalysis/plotterListFiles/2016Analysis/MCSignal_GluGluToRadionToHHTo4B_M-550_narrow_13TeV-madgraph.txt -sig_Radion_600GeV = /uscms/home/fravera/nobackup/DiHiggs_v1/CMSSW_10_2_5/src/bbbbAnalysis/plotterListFiles/2016Analysis/MCSignal_GluGluToRadionToHHTo4B_M-600_narrow_13TeV-madgraph.txt -sig_Radion_650GeV = /uscms/home/fravera/nobackup/DiHiggs_v1/CMSSW_10_2_5/src/bbbbAnalysis/plotterListFiles/2016Analysis/MCSignal_GluGluToRadionToHHTo4B_M-650_narrow_13TeV-madgraph.txt -sig_Radion_750GeV = /uscms/home/fravera/nobackup/DiHiggs_v1/CMSSW_10_2_5/src/bbbbAnalysis/plotterListFiles/2016Analysis/MCSignal_GluGluToRadionToHHTo4B_M-750_narrow_13TeV-madgraph.txt -sig_Radion_800GeV = /uscms/home/fravera/nobackup/DiHiggs_v1/CMSSW_10_2_5/src/bbbbAnalysis/plotterListFiles/2016Analysis/MCSignal_GluGluToRadionToHHTo4B_M-800_narrow_13TeV-madgraph.txt -sig_Radion_900GeV = /uscms/home/fravera/nobackup/DiHiggs_v1/CMSSW_10_2_5/src/bbbbAnalysis/plotterListFiles/2016Analysis/MCSignal_GluGluToRadionToHHTo4B_M-900_narrow_13TeV-madgraph.txt -sig_Radion_1000GeV = /uscms/home/fravera/nobackup/DiHiggs_v1/CMSSW_10_2_5/src/bbbbAnalysis/plotterListFiles/2016Analysis/MCSignal_RadionTohhTohbbhbb_narrow_M-1000_13TeV-madgraph.txt -sig_Radion_1200GeV = /uscms/home/fravera/nobackup/DiHiggs_v1/CMSSW_10_2_5/src/bbbbAnalysis/plotterListFiles/2016Analysis/MCSignal_RadionTohhTohbbhbb_narrow_M-1200_13TeV-madgraph.txt +TTbar = /uscms/home/fravera/nobackup/DiHiggs_v1/CMSSW_10_2_5/src/bbbbAnalysis/plotterListFiles/2016Analysis/MC_TTbar.txt diff --git a/config/selectionCfg_2016Analysis_triggerStudies.cfg b/config/selectionCfg_2016Analysis_triggerStudies.cfg index eef33dc73..706d388f3 100644 --- a/config/selectionCfg_2016Analysis_triggerStudies.cfg +++ b/config/selectionCfg_2016Analysis_triggerStudies.cfg @@ -10,15 +10,16 @@ [selections] # common -basicSelectionPass = HighestIsoMuonPt>40 && ForthJetPt>30 -# basicSelectionPass = HighestIsoMuonPt>20 && ForthJetPt>30 && ((H1_m > 120-40 && H1_m < 120+40) && (H2_m > 120-40 && H2_m < 120+40)) && HH_2DdeltaM < 4.*20.*20. +# basicSelectionPass = HighestIsoMuonPt>30 && ForthJetPt>30 && ForthJetCMVA>0.185 +# basicSelectionPass = HighestIsoMuonPt>30 && ForthJetPt>30 +basicSelectionPass = HighestIsoMuonPt>30 && ForthJetPt>30 && ((H1_m > 120-40 && H1_m < 120+40) && (H2_m > 120-40 && H2_m < 120+40)) && HH_2DdeltaM < 4.*20.*20. # # # basicSelectionPass = ForthJetCMVA > 0.185 && ((H1_m > 120-40 && H1_m < 120+40) && (H2_m > 120-40 && H2_m < 120+40)) && HH_2DdeltaM < 25.*20*20 # # # basicSelectionPass = ((H1_m > 120-40 && H1_m < 120+40) && (H2_m > 120-40 && H2_m < 120+40)) && HH_2DdeltaM < 25.*20*20 BTagCaloCSVp087TriplePass = BTagCaloCSVp087Triple >= 3 # HLT_DoubleJet90_Double30_TripleBTagCSV_p087 -L1triggerDouble90Double30Pass = L1sTripleJetVBFIorHTTIorDoubleJetCIorSingleJet >= 1 -# L1triggerDouble90Double30Pass = QuadCentralJet30 >= 1 +# L1triggerDouble90Double30Pass = L1sTripleJetVBFIorHTTIorDoubleJetCIorSingleJet >= 1 +L1triggerDouble90Double30Pass = QuadCentralJet30 >= 1 QuadCentralJet30Pass = QuadCentralJet30 >= 4 DoubleCentralJet90Pass = DoubleCentralJet90 >= 2 QuadPFCentralJetLooseID30Pass = QuadPFCentralJetLooseID30 >= 4 @@ -28,8 +29,8 @@ DoublePFCentralJetLooseID90Pass = DoublePFCentralJetLooseID90 HLT_Double90Double30Pass = HLT_DoubleJet90_Double30_TripleBTagCSV_p087_Fired && HLT_DoubleJet90_Double30_TripleBTagCSV_p087_ObjectMatched # HLT_QuadJet45_TripleBTagCSV_p087 -L1triggerQuad45Pass = L1sQuadJetC50IorQuadJetC60IorHTT280IorHTT300IorHTT320IorTripleJet846848VBFIorTripleJet887256VBFIorTripleJet927664VBF >= 1 -# L1triggerQuad45 = QuadCentralJet45 >= 1 +# L1triggerQuad45Pass = L1sQuadJetC50IorQuadJetC60IorHTT280IorHTT300IorHTT320IorTripleJet846848VBFIorTripleJet887256VBFIorTripleJet927664VBF >= 1 +L1triggerQuad45Pass = QuadCentralJet45 >= 1 QuadCentralJet45Pass = QuadCentralJet45 >= 4 QuadPFCentralJetLooseID45Pass = QuadPFCentralJetLooseID45 >= 4 @@ -81,37 +82,7 @@ HLT_IsoMu24_PreselectedJetsMoreThan9 = HLT_IsoMu24_Fired && NumberOfJetsPassi [sampleWeights] TTbar = genWeight, PUWeight, LHEPdfWeight, LHEScaleWeight -tmp_Graviton_750GeV = genWeight, PUWeight, LHEPdfWeight, LHEScaleWeight -sig_Graviton_1000GeV = genWeight, PUWeight, LHEPdfWeight, LHEScaleWeight -sig_Graviton_1200GeV = genWeight, PUWeight, LHEPdfWeight, LHEScaleWeight -sig_Graviton_260GeV = genWeight, PUWeight, LHEPdfWeight, LHEScaleWeight -sig_Graviton_270GeV = genWeight, PUWeight, LHEPdfWeight, LHEScaleWeight -sig_Graviton_300GeV = genWeight, PUWeight, LHEPdfWeight, LHEScaleWeight -sig_Graviton_350GeV = genWeight, PUWeight, LHEPdfWeight, LHEScaleWeight -sig_Graviton_400GeV = genWeight, PUWeight, LHEPdfWeight, LHEScaleWeight -sig_Graviton_450GeV = genWeight, PUWeight, LHEPdfWeight, LHEScaleWeight -sig_Graviton_500GeV = genWeight, PUWeight, LHEPdfWeight, LHEScaleWeight -sig_Graviton_550GeV = genWeight, PUWeight, LHEPdfWeight, LHEScaleWeight -sig_Graviton_600GeV = genWeight, PUWeight, LHEPdfWeight, LHEScaleWeight -sig_Graviton_650GeV = genWeight, PUWeight, LHEPdfWeight, LHEScaleWeight -sig_Graviton_750GeV = genWeight, PUWeight, LHEPdfWeight, LHEScaleWeight -sig_Graviton_800GeV = genWeight, PUWeight, LHEPdfWeight, LHEScaleWeight -sig_Graviton_900GeV = genWeight, PUWeight, LHEPdfWeight, LHEScaleWeight -sig_Radion_260GeV = genWeight, PUWeight, LHEPdfWeight, LHEScaleWeight -sig_Radion_270GeV = genWeight, PUWeight, LHEPdfWeight, LHEScaleWeight -sig_Radion_300GeV = genWeight, PUWeight, LHEPdfWeight, LHEScaleWeight -sig_Radion_350GeV = genWeight, PUWeight, LHEPdfWeight, LHEScaleWeight -sig_Radion_400GeV = genWeight, PUWeight, LHEPdfWeight, LHEScaleWeight -sig_Radion_450GeV = genWeight, PUWeight, LHEPdfWeight, LHEScaleWeight -sig_Radion_500GeV = genWeight, PUWeight, LHEPdfWeight, LHEScaleWeight -sig_Radion_550GeV = genWeight, PUWeight, LHEPdfWeight, LHEScaleWeight -sig_Radion_600GeV = genWeight, PUWeight, LHEPdfWeight, LHEScaleWeight -sig_Radion_650GeV = genWeight, PUWeight, LHEPdfWeight, LHEScaleWeight -sig_Radion_750GeV = genWeight, PUWeight, LHEPdfWeight, LHEScaleWeight -sig_Radion_800GeV = genWeight, PUWeight, LHEPdfWeight, LHEScaleWeight -sig_Radion_900GeV = genWeight, PUWeight, LHEPdfWeight, LHEScaleWeight -sig_Radion_1000GeV = genWeight, PUWeight, LHEPdfWeight, LHEScaleWeight -sig_Radion_1200GeV = genWeight, PUWeight, LHEPdfWeight, LHEScaleWeight + ######################################################################### ######################################################################### @@ -139,4 +110,15 @@ OfflineJetPtForPFResolution:ResolutionOnlinePFJetPt = 100, 30., 500., 100, - # user defined binning: if defined, overrides any definition in [histos] -[binning] \ No newline at end of file +[binning] +FourHighetJetPtSum = 100, 120, 140, 160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 520, 540, 560, 580, 600 +SecondJetPt = 20, 34.4, 48.8, 59.6, 66.8, 74, 81.2, 84.8, 88.4, 92, 95.6, 99.2, 102.8, 106.4, 110, 113.6, 117.2, 120.8, 124.4, 128, 131.6, 135.2, 138.8, 146, 153.2, 160.4, 167.6, 178.4, 189.2, 200 + + +ForthJetPt = 20, 25.6, 31.2, 36.8, 39.6, 42.4, 45.2, 48, 50.8, 53.6, 56.4, 59.2, 62, 64.8, 67.6, 70.4, 73.2, 76, 78.8, 84.4, 90, 95.6, 104, 112.4, 120.8, 129.2, 137.6, 148.8, 160 + +ThirdJetDeepCSV = 0, 0.02, 0.04, 0.06, 0.08, 0.1, 0.12, 0.14, 0.16, 0.18, 0.2, 0.22, 0.24, 0.26, 0.28, 0.3, 0.32, 0.36, 0.4, 0.44, 0.48, 0.52, 0.56, 0.6, 0.64, 0.7, 0.76, 0.82, 0.88, 0.94, 1 + + + + diff --git a/config/skim_2016ResonantDiHiggs4B_triggerStudies.cfg b/config/skim_2016ResonantDiHiggs4B_triggerStudies.cfg index dd0f80eb0..1c64f3170 100644 --- a/config/skim_2016ResonantDiHiggs4B_triggerStudies.cfg +++ b/config/skim_2016ResonantDiHiggs4B_triggerStudies.cfg @@ -126,7 +126,7 @@ trigger1_ObjectRequirements = 1:0:3, 1:1:2, 1:2:2, 1:3:1, 1:4:4, 1:5:4 trigger2_ObjectRequirements = 1:0:3, 1:6:1, 1:7:4, 1:8:4 triggerIsoMu24_ObjectRequirements = 13:10:1, 13:11:1, 13:12:1, 13:13:1, 13:14:1 triggerIsoMu20_ObjectRequirements = 13:15:1, 13:16:1, 13:17:1, 13:18:1, 13:19:1 -MatchWithSelectedObjects = true +MatchWithSelectedObjects = false # ############################################################################################################## # diff --git a/scripts/TriggerEfficiencyFitter.C b/scripts/TriggerEfficiencyFitter.C index 2734d47e8..fc1b67ed1 100644 --- a/scripts/TriggerEfficiencyFitter.C +++ b/scripts/TriggerEfficiencyFitter.C @@ -166,48 +166,125 @@ void MeasureTriggerEfficiency(std::string inputFileName, std::string sampleName, "Quad PF Central Jet Loose ID 45 GeV", "p_{4}^{T}", lineColor); efficiency->Write(); - return; -} -void PlotAll() -{ + inputFile->Close(); + outputFile->Close(); - // SingleMuon - MeasureTriggerEfficiency("2016DataPlots_SingleMuon_MuonPt40_ForthJetPt30/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24","TriggerEfficiency_SingleMuon_MuonPt40_ForthJetPt30_IsoMu24.root",kBlue); - MeasureTriggerEfficiency("2016DataPlots_SingleMuon_MuonPt40_ForthJetPt30/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24_Matched","TriggerEfficiency_SingleMuon_MuonPt40_ForthJetPt30_IsoMu24_Matched.root",kBlue); - MeasureTriggerEfficiency("2016DataPlots_SingleMuon_MuonPt40_ForthJetPt30/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20","TriggerEfficiency_SingleMuon_MuonPt40_ForthJetPt30_IsoMu20.root",kBlue); - MeasureTriggerEfficiency("2016DataPlots_SingleMuon_MuonPt40_ForthJetPt30/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20_Matched","TriggerEfficiency_SingleMuon_MuonPt40_ForthJetPt30_IsoMu20_Matched.root",kBlue); + delete inputFile; + delete outputFile; - MeasureTriggerEfficiency("2016DataPlots_SingleMuon_4bLooseSelection/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24","TriggerEfficiency_SingleMuon_4bLooseSelection_IsoMu24.root",kBlue); - MeasureTriggerEfficiency("2016DataPlots_SingleMuon_4bLooseSelection/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24_Matched","TriggerEfficiency_SingleMuon_4bLooseSelection_IsoMu24_Matched.root",kBlue); - MeasureTriggerEfficiency("2016DataPlots_SingleMuon_4bLooseSelection/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20","TriggerEfficiency_SingleMuon_4bLooseSelection_IsoMu20.root",kBlue); - MeasureTriggerEfficiency("2016DataPlots_SingleMuon_4bLooseSelection/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20_Matched","TriggerEfficiency_SingleMuon_4bLooseSelection_IsoMu20_Matched.root",kBlue); + return; +} - MeasureTriggerEfficiency("2016DataPlots_SingleMuon_4bSelection/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24","TriggerEfficiency_SingleMuon_4bSelection_IsoMu24.root",kBlue); - MeasureTriggerEfficiency("2016DataPlots_SingleMuon_4bSelection/outPlotter.root","tmp_SingleMuon","HLT_IsoMu24_Matched","TriggerEfficiency_SingleMuon_4bSelection_IsoMu24_Matched.root",kBlue); - MeasureTriggerEfficiency("2016DataPlots_SingleMuon_4bSelection/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20","TriggerEfficiency_SingleMuon_4bSelection_IsoMu20.root",kBlue); - MeasureTriggerEfficiency("2016DataPlots_SingleMuon_4bSelection/outPlotter.root","tmp_SingleMuon","HLT_IsoMu20_Matched","TriggerEfficiency_SingleMuon_4bSelection_IsoMu20_Matched.root",kBlue); +void ProduceAllTriggerEfficiencies() +{ + // // SingleMuon_RunBF + // MeasureTriggerEfficiency("2016DataPlots_MuonPt40_ForthJetPt30_CMVAM/outPlotter.root","SingleMuon_RunBF","HLT_IsoMu24","TriggerEfficiency_SingleMuon_RunBF_MuonPt40_ForthJetPt30_CMVAM_IsoMu24.root",kBlue); + // MeasureTriggerEfficiency("2016DataPlots_MuonPt40_ForthJetPt30_CMVAM/outPlotter.root","SingleMuon_RunBF","HLT_IsoMu24_Matched","TriggerEfficiency_SingleMuon_RunBF_MuonPt40_ForthJetPt30_CMVAM_IsoMu24_Matched.root",kBlue); + // MeasureTriggerEfficiency("2016DataPlots_MuonPt40_ForthJetPt30_CMVAM/outPlotter.root","SingleMuon_RunBF","HLT_IsoMu20","TriggerEfficiency_SingleMuon_RunBF_MuonPt40_ForthJetPt30_CMVAM_IsoMu20.root",kBlue); + // MeasureTriggerEfficiency("2016DataPlots_MuonPt40_ForthJetPt30_CMVAM/outPlotter.root","SingleMuon_RunBF","HLT_IsoMu20_Matched","TriggerEfficiency_SingleMuon_RunBF_MuonPt40_ForthJetPt30_CMVAM_IsoMu20_Matched.root",kBlue); + + // MeasureTriggerEfficiency("2016DataPlots_MuonPt40_ForthJetPt30/outPlotter.root","SingleMuon_RunBF","HLT_IsoMu24","TriggerEfficiency_SingleMuon_RunBF_MuonPt40_ForthJetPt30_IsoMu24.root",kBlue); + // MeasureTriggerEfficiency("2016DataPlots_MuonPt40_ForthJetPt30/outPlotter.root","SingleMuon_RunBF","HLT_IsoMu24_Matched","TriggerEfficiency_SingleMuon_RunBF_MuonPt40_ForthJetPt30_IsoMu24_Matched.root",kBlue); + // MeasureTriggerEfficiency("2016DataPlots_MuonPt40_ForthJetPt30/outPlotter.root","SingleMuon_RunBF","HLT_IsoMu20","TriggerEfficiency_SingleMuon_RunBF_MuonPt40_ForthJetPt30_IsoMu20.root",kBlue); + // MeasureTriggerEfficiency("2016DataPlots_MuonPt40_ForthJetPt30/outPlotter.root","SingleMuon_RunBF","HLT_IsoMu20_Matched","TriggerEfficiency_SingleMuon_RunBF_MuonPt40_ForthJetPt30_IsoMu20_Matched.root",kBlue); + + // MeasureTriggerEfficiency("2016DataPlots_4bLooseSelection/outPlotter.root","SingleMuon_RunBF","HLT_IsoMu24","TriggerEfficiency_SingleMuon_RunBF_4bLooseSelection_IsoMu24.root",kBlue); + // MeasureTriggerEfficiency("2016DataPlots_4bLooseSelection/outPlotter.root","SingleMuon_RunBF","HLT_IsoMu24_Matched","TriggerEfficiency_SingleMuon_RunBF_4bLooseSelection_IsoMu24_Matched.root",kBlue); + // MeasureTriggerEfficiency("2016DataPlots_4bLooseSelection/outPlotter.root","SingleMuon_RunBF","HLT_IsoMu20","TriggerEfficiency_SingleMuon_RunBF_4bLooseSelection_IsoMu20.root",kBlue); + // MeasureTriggerEfficiency("2016DataPlots_4bLooseSelection/outPlotter.root","SingleMuon_RunBF","HLT_IsoMu20_Matched","TriggerEfficiency_SingleMuon_RunBF_4bLooseSelection_IsoMu20_Matched.root",kBlue); + + // MeasureTriggerEfficiency("2016DataPlots_4bSelection/outPlotter.root","SingleMuon_RunBF","HLT_IsoMu24","TriggerEfficiency_SingleMuon_RunBF_4bSelection_IsoMu24.root",kBlue); + // MeasureTriggerEfficiency("2016DataPlots_4bSelection/outPlotter.root","SingleMuon_RunBF","HLT_IsoMu24_Matched","TriggerEfficiency_SingleMuon_RunBF_4bSelection_IsoMu24_Matched.root",kBlue); + // MeasureTriggerEfficiency("2016DataPlots_4bSelection/outPlotter.root","SingleMuon_RunBF","HLT_IsoMu20","TriggerEfficiency_SingleMuon_RunBF_4bSelection_IsoMu20.root",kBlue); + // MeasureTriggerEfficiency("2016DataPlots_4bSelection/outPlotter.root","SingleMuon_RunBF","HLT_IsoMu20_Matched","TriggerEfficiency_SingleMuon_RunBF_4bSelection_IsoMu20_Matched.root",kBlue); + + // // SingleMuon_RunGH + // MeasureTriggerEfficiency("2016DataPlots_MuonPt40_ForthJetPt30_CMVAM/outPlotter.root","SingleMuon_RunGH","HLT_IsoMu24","TriggerEfficiency_SingleMuon_RunGH_MuonPt40_ForthJetPt30_CMVAM_IsoMu24.root",kBlue); + // MeasureTriggerEfficiency("2016DataPlots_MuonPt40_ForthJetPt30_CMVAM/outPlotter.root","SingleMuon_RunGH","HLT_IsoMu24_Matched","TriggerEfficiency_SingleMuon_RunGH_MuonPt40_ForthJetPt30_CMVAM_IsoMu24_Matched.root",kBlue); + // MeasureTriggerEfficiency("2016DataPlots_MuonPt40_ForthJetPt30_CMVAM/outPlotter.root","SingleMuon_RunGH","HLT_IsoMu20","TriggerEfficiency_SingleMuon_RunGH_MuonPt40_ForthJetPt30_CMVAM_IsoMu20.root",kBlue); + // MeasureTriggerEfficiency("2016DataPlots_MuonPt40_ForthJetPt30_CMVAM/outPlotter.root","SingleMuon_RunGH","HLT_IsoMu20_Matched","TriggerEfficiency_SingleMuon_RunGH_MuonPt40_ForthJetPt30_CMVAM_IsoMu20_Matched.root",kBlue); + + // MeasureTriggerEfficiency("2016DataPlots_MuonPt40_ForthJetPt30/outPlotter.root","SingleMuon_RunGH","HLT_IsoMu24","TriggerEfficiency_SingleMuon_RunGH_MuonPt40_ForthJetPt30_IsoMu24.root",kBlue); + // MeasureTriggerEfficiency("2016DataPlots_MuonPt40_ForthJetPt30/outPlotter.root","SingleMuon_RunGH","HLT_IsoMu24_Matched","TriggerEfficiency_SingleMuon_RunGH_MuonPt40_ForthJetPt30_IsoMu24_Matched.root",kBlue); + // MeasureTriggerEfficiency("2016DataPlots_MuonPt40_ForthJetPt30/outPlotter.root","SingleMuon_RunGH","HLT_IsoMu20","TriggerEfficiency_SingleMuon_RunGH_MuonPt40_ForthJetPt30_IsoMu20.root",kBlue); + // MeasureTriggerEfficiency("2016DataPlots_MuonPt40_ForthJetPt30/outPlotter.root","SingleMuon_RunGH","HLT_IsoMu20_Matched","TriggerEfficiency_SingleMuon_RunGH_MuonPt40_ForthJetPt30_IsoMu20_Matched.root",kBlue); + + // MeasureTriggerEfficiency("2016DataPlots_4bLooseSelection/outPlotter.root","SingleMuon_RunGH","HLT_IsoMu24","TriggerEfficiency_SingleMuon_RunGH_4bLooseSelection_IsoMu24.root",kBlue); + // MeasureTriggerEfficiency("2016DataPlots_4bLooseSelection/outPlotter.root","SingleMuon_RunGH","HLT_IsoMu24_Matched","TriggerEfficiency_SingleMuon_RunGH_4bLooseSelection_IsoMu24_Matched.root",kBlue); + // MeasureTriggerEfficiency("2016DataPlots_4bLooseSelection/outPlotter.root","SingleMuon_RunGH","HLT_IsoMu20","TriggerEfficiency_SingleMuon_RunGH_4bLooseSelection_IsoMu20.root",kBlue); + // MeasureTriggerEfficiency("2016DataPlots_4bLooseSelection/outPlotter.root","SingleMuon_RunGH","HLT_IsoMu20_Matched","TriggerEfficiency_SingleMuon_RunGH_4bLooseSelection_IsoMu20_Matched.root",kBlue); + + // MeasureTriggerEfficiency("2016DataPlots_4bSelection/outPlotter.root","SingleMuon_RunGH","HLT_IsoMu24","TriggerEfficiency_SingleMuon_RunGH_4bSelection_IsoMu24.root",kBlue); + // MeasureTriggerEfficiency("2016DataPlots_4bSelection/outPlotter.root","SingleMuon_RunGH","HLT_IsoMu24_Matched","TriggerEfficiency_SingleMuon_RunGH_4bSelection_IsoMu24_Matched.root",kBlue); + // MeasureTriggerEfficiency("2016DataPlots_4bSelection/outPlotter.root","SingleMuon_RunGH","HLT_IsoMu20","TriggerEfficiency_SingleMuon_RunGH_4bSelection_IsoMu20.root",kBlue); + // MeasureTriggerEfficiency("2016DataPlots_4bSelection/outPlotter.root","SingleMuon_RunGH","HLT_IsoMu20_Matched","TriggerEfficiency_SingleMuon_RunGH_4bSelection_IsoMu20_Matched.root",kBlue); + + // // TTbar + // MeasureTriggerEfficiency("2016DataPlots_MuonPt40_ForthJetPt30_CMVAM/outPlotter.root","TTbar","HLT_IsoMu24","TriggerEfficiency_TTbar_MuonPt40_ForthJetPt30_CMVAM_IsoMu24.root",kBlue); + // MeasureTriggerEfficiency("2016DataPlots_MuonPt40_ForthJetPt30_CMVAM/outPlotter.root","TTbar","HLT_IsoMu24_Matched","TriggerEfficiency_TTbar_MuonPt40_ForthJetPt30_CMVAM_IsoMu24_Matched.root",kBlue); + // MeasureTriggerEfficiency("2016DataPlots_MuonPt40_ForthJetPt30_CMVAM/outPlotter.root","TTbar","HLT_IsoMu20","TriggerEfficiency_TTbar_MuonPt40_ForthJetPt30_CMVAM_IsoMu20.root",kBlue); + // MeasureTriggerEfficiency("2016DataPlots_MuonPt40_ForthJetPt30_CMVAM/outPlotter.root","TTbar","HLT_IsoMu20_Matched","TriggerEfficiency_TTbar_MuonPt40_ForthJetPt30_CMVAM_IsoMu20_Matched.root",kBlue); + + // MeasureTriggerEfficiency("2016DataPlots_MuonPt40_ForthJetPt30/outPlotter.root","TTbar","HLT_IsoMu24","TriggerEfficiency_TTbar_MuonPt40_ForthJetPt30_IsoMu24.root",kBlue); + // MeasureTriggerEfficiency("2016DataPlots_MuonPt40_ForthJetPt30/outPlotter.root","TTbar","HLT_IsoMu24_Matched","TriggerEfficiency_TTbar_MuonPt40_ForthJetPt30_IsoMu24_Matched.root",kBlue); + // MeasureTriggerEfficiency("2016DataPlots_MuonPt40_ForthJetPt30/outPlotter.root","TTbar","HLT_IsoMu20","TriggerEfficiency_TTbar_MuonPt40_ForthJetPt30_IsoMu20.root",kBlue); + // MeasureTriggerEfficiency("2016DataPlots_MuonPt40_ForthJetPt30/outPlotter.root","TTbar","HLT_IsoMu20_Matched","TriggerEfficiency_TTbar_MuonPt40_ForthJetPt30_IsoMu20_Matched.root",kBlue); + + // MeasureTriggerEfficiency("2016DataPlots_4bLooseSelection/outPlotter.root","TTbar","HLT_IsoMu24","TriggerEfficiency_TTbar_4bLooseSelection_IsoMu24.root",kBlue); + // MeasureTriggerEfficiency("2016DataPlots_4bLooseSelection/outPlotter.root","TTbar","HLT_IsoMu24_Matched","TriggerEfficiency_TTbar_4bLooseSelection_IsoMu24_Matched.root",kBlue); + // MeasureTriggerEfficiency("2016DataPlots_4bLooseSelection/outPlotter.root","TTbar","HLT_IsoMu20","TriggerEfficiency_TTbar_4bLooseSelection_IsoMu20.root",kBlue); + // MeasureTriggerEfficiency("2016DataPlots_4bLooseSelection/outPlotter.root","TTbar","HLT_IsoMu20_Matched","TriggerEfficiency_TTbar_4bLooseSelection_IsoMu20_Matched.root",kBlue); + + // MeasureTriggerEfficiency("2016DataPlots_4bSelection/outPlotter.root","TTbar","HLT_IsoMu24","TriggerEfficiency_TTbar_4bSelection_IsoMu24.root",kBlue); + // MeasureTriggerEfficiency("2016DataPlots_4bSelection/outPlotter.root","TTbar","HLT_IsoMu24_Matched","TriggerEfficiency_TTbar_4bSelection_IsoMu24_Matched.root",kBlue); + // MeasureTriggerEfficiency("2016DataPlots_4bSelection/outPlotter.root","TTbar","HLT_IsoMu20","TriggerEfficiency_TTbar_4bSelection_IsoMu20.root",kBlue); + // MeasureTriggerEfficiency("2016DataPlots_4bSelection/outPlotter.root","TTbar","HLT_IsoMu20_Matched","TriggerEfficiency_TTbar_4bSelection_IsoMu20_Matched.root",kBlue); + + + // SingleMuon + MeasureTriggerEfficiency("2016DataPlots_MuonPt40_ForthJetPt30_CMVAM/outPlotter.root","SingleMuon","HLT_IsoMu24","TriggerEfficiency_SingleMuon_MuonPt40_ForthJetPt30_CMVAM_IsoMu24.root",kBlue); + MeasureTriggerEfficiency("2016DataPlots_MuonPt40_ForthJetPt30_CMVAM/outPlotter.root","SingleMuon","HLT_IsoMu24_Matched","TriggerEfficiency_SingleMuon_MuonPt40_ForthJetPt30_CMVAM_IsoMu24_Matched.root",kBlue); + MeasureTriggerEfficiency("2016DataPlots_MuonPt40_ForthJetPt30_CMVAM/outPlotter.root","SingleMuon","HLT_IsoMu20","TriggerEfficiency_SingleMuon_MuonPt40_ForthJetPt30_CMVAM_IsoMu20.root",kBlue); + MeasureTriggerEfficiency("2016DataPlots_MuonPt40_ForthJetPt30_CMVAM/outPlotter.root","SingleMuon","HLT_IsoMu20_Matched","TriggerEfficiency_SingleMuon_MuonPt40_ForthJetPt30_CMVAM_IsoMu20_Matched.root",kBlue); + + MeasureTriggerEfficiency("2016DataPlots_MuonPt40_ForthJetPt30/outPlotter.root","SingleMuon","HLT_IsoMu24","TriggerEfficiency_SingleMuon_MuonPt40_ForthJetPt30_IsoMu24.root",kBlue); + MeasureTriggerEfficiency("2016DataPlots_MuonPt40_ForthJetPt30/outPlotter.root","SingleMuon","HLT_IsoMu24_Matched","TriggerEfficiency_SingleMuon_MuonPt40_ForthJetPt30_IsoMu24_Matched.root",kBlue); + MeasureTriggerEfficiency("2016DataPlots_MuonPt40_ForthJetPt30/outPlotter.root","SingleMuon","HLT_IsoMu20","TriggerEfficiency_SingleMuon_MuonPt40_ForthJetPt30_IsoMu20.root",kBlue); + MeasureTriggerEfficiency("2016DataPlots_MuonPt40_ForthJetPt30/outPlotter.root","SingleMuon","HLT_IsoMu20_Matched","TriggerEfficiency_SingleMuon_MuonPt40_ForthJetPt30_IsoMu20_Matched.root",kBlue); + + MeasureTriggerEfficiency("2016DataPlots_4bLooseSelection/outPlotter.root","SingleMuon","HLT_IsoMu24","TriggerEfficiency_SingleMuon_4bLooseSelection_IsoMu24.root",kBlue); + MeasureTriggerEfficiency("2016DataPlots_4bLooseSelection/outPlotter.root","SingleMuon","HLT_IsoMu24_Matched","TriggerEfficiency_SingleMuon_4bLooseSelection_IsoMu24_Matched.root",kBlue); + MeasureTriggerEfficiency("2016DataPlots_4bLooseSelection/outPlotter.root","SingleMuon","HLT_IsoMu20","TriggerEfficiency_SingleMuon_4bLooseSelection_IsoMu20.root",kBlue); + MeasureTriggerEfficiency("2016DataPlots_4bLooseSelection/outPlotter.root","SingleMuon","HLT_IsoMu20_Matched","TriggerEfficiency_SingleMuon_4bLooseSelection_IsoMu20_Matched.root",kBlue); + + MeasureTriggerEfficiency("2016DataPlots_4bSelection/outPlotter.root","SingleMuon","HLT_IsoMu24","TriggerEfficiency_SingleMuon_4bSelection_IsoMu24.root",kBlue); + MeasureTriggerEfficiency("2016DataPlots_4bSelection/outPlotter.root","SingleMuon","HLT_IsoMu24_Matched","TriggerEfficiency_SingleMuon_4bSelection_IsoMu24_Matched.root",kBlue); + MeasureTriggerEfficiency("2016DataPlots_4bSelection/outPlotter.root","SingleMuon","HLT_IsoMu20","TriggerEfficiency_SingleMuon_4bSelection_IsoMu20.root",kBlue); + MeasureTriggerEfficiency("2016DataPlots_4bSelection/outPlotter.root","SingleMuon","HLT_IsoMu20_Matched","TriggerEfficiency_SingleMuon_4bSelection_IsoMu20_Matched.root",kBlue); // TTbar - MeasureTriggerEfficiency("2016DataPlots_TTbar_MuonPt40_ForthJetPt30/outPlotter.root","TTbar","HLT_IsoMu24","TriggerEfficiency_TTbar_MuonPt40_ForthJetPt30_IsoMu24.root",kBlue); - MeasureTriggerEfficiency("2016DataPlots_TTbar_MuonPt40_ForthJetPt30/outPlotter.root","TTbar","HLT_IsoMu24_Matched","TriggerEfficiency_TTbar_MuonPt40_ForthJetPt30_IsoMu24_Matched.root",kBlue); - MeasureTriggerEfficiency("2016DataPlots_TTbar_MuonPt40_ForthJetPt30/outPlotter.root","TTbar","HLT_IsoMu20","TriggerEfficiency_TTbar_MuonPt40_ForthJetPt30_IsoMu20.root",kBlue); - MeasureTriggerEfficiency("2016DataPlots_TTbar_MuonPt40_ForthJetPt30/outPlotter.root","TTbar","HLT_IsoMu20_Matched","TriggerEfficiency_TTbar_MuonPt40_ForthJetPt30_IsoMu20_Matched.root",kBlue); - - MeasureTriggerEfficiency("2016DataPlots_TTbar_4bLooseSelection/outPlotter.root","TTbar","HLT_IsoMu24","TriggerEfficiency_TTbar_4bLooseSelection_IsoMu24.root",kBlue); - MeasureTriggerEfficiency("2016DataPlots_TTbar_4bLooseSelection/outPlotter.root","TTbar","HLT_IsoMu24_Matched","TriggerEfficiency_TTbar_4bLooseSelection_IsoMu24_Matched.root",kBlue); - MeasureTriggerEfficiency("2016DataPlots_TTbar_4bLooseSelection/outPlotter.root","TTbar","HLT_IsoMu20","TriggerEfficiency_TTbar_4bLooseSelection_IsoMu20.root",kBlue); - MeasureTriggerEfficiency("2016DataPlots_TTbar_4bLooseSelection/outPlotter.root","TTbar","HLT_IsoMu20_Matched","TriggerEfficiency_TTbar_4bLooseSelection_IsoMu20_Matched.root",kBlue); - - MeasureTriggerEfficiency("2016DataPlots_TTbar_4bSelection/outPlotter.root","TTbar","HLT_IsoMu24","TriggerEfficiency_TTbar_4bSelection_IsoMu24.root",kBlue); - MeasureTriggerEfficiency("2016DataPlots_TTbar_4bSelection/outPlotter.root","TTbar","HLT_IsoMu24_Matched","TriggerEfficiency_TTbar_4bSelection_IsoMu24_Matched.root",kBlue); - MeasureTriggerEfficiency("2016DataPlots_TTbar_4bSelection/outPlotter.root","TTbar","HLT_IsoMu20","TriggerEfficiency_TTbar_4bSelection_IsoMu20.root",kBlue); - MeasureTriggerEfficiency("2016DataPlots_TTbar_4bSelection/outPlotter.root","TTbar","HLT_IsoMu20_Matched","TriggerEfficiency_TTbar_4bSelection_IsoMu20_Matched.root",kBlue); - + MeasureTriggerEfficiency("2016DataPlots_MuonPt40_ForthJetPt30_CMVAM/outPlotter.root","TTbar","HLT_IsoMu24","TriggerEfficiency_TTbar_MuonPt40_ForthJetPt30_CMVAM_IsoMu24.root",kBlue); + MeasureTriggerEfficiency("2016DataPlots_MuonPt40_ForthJetPt30_CMVAM/outPlotter.root","TTbar","HLT_IsoMu24_Matched","TriggerEfficiency_TTbar_MuonPt40_ForthJetPt30_CMVAM_IsoMu24_Matched.root",kBlue); + MeasureTriggerEfficiency("2016DataPlots_MuonPt40_ForthJetPt30_CMVAM/outPlotter.root","TTbar","HLT_IsoMu20","TriggerEfficiency_TTbar_MuonPt40_ForthJetPt30_CMVAM_IsoMu20.root",kBlue); + MeasureTriggerEfficiency("2016DataPlots_MuonPt40_ForthJetPt30_CMVAM/outPlotter.root","TTbar","HLT_IsoMu20_Matched","TriggerEfficiency_TTbar_MuonPt40_ForthJetPt30_CMVAM_IsoMu20_Matched.root",kBlue); + + MeasureTriggerEfficiency("2016DataPlots_MuonPt40_ForthJetPt30/outPlotter.root","TTbar","HLT_IsoMu24","TriggerEfficiency_TTbar_MuonPt40_ForthJetPt30_IsoMu24.root",kBlue); + MeasureTriggerEfficiency("2016DataPlots_MuonPt40_ForthJetPt30/outPlotter.root","TTbar","HLT_IsoMu24_Matched","TriggerEfficiency_TTbar_MuonPt40_ForthJetPt30_IsoMu24_Matched.root",kBlue); + MeasureTriggerEfficiency("2016DataPlots_MuonPt40_ForthJetPt30/outPlotter.root","TTbar","HLT_IsoMu20","TriggerEfficiency_TTbar_MuonPt40_ForthJetPt30_IsoMu20.root",kBlue); + MeasureTriggerEfficiency("2016DataPlots_MuonPt40_ForthJetPt30/outPlotter.root","TTbar","HLT_IsoMu20_Matched","TriggerEfficiency_TTbar_MuonPt40_ForthJetPt30_IsoMu20_Matched.root",kBlue); + + MeasureTriggerEfficiency("2016DataPlots_4bLooseSelection/outPlotter.root","TTbar","HLT_IsoMu24","TriggerEfficiency_TTbar_4bLooseSelection_IsoMu24.root",kBlue); + MeasureTriggerEfficiency("2016DataPlots_4bLooseSelection/outPlotter.root","TTbar","HLT_IsoMu24_Matched","TriggerEfficiency_TTbar_4bLooseSelection_IsoMu24_Matched.root",kBlue); + MeasureTriggerEfficiency("2016DataPlots_4bLooseSelection/outPlotter.root","TTbar","HLT_IsoMu20","TriggerEfficiency_TTbar_4bLooseSelection_IsoMu20.root",kBlue); + MeasureTriggerEfficiency("2016DataPlots_4bLooseSelection/outPlotter.root","TTbar","HLT_IsoMu20_Matched","TriggerEfficiency_TTbar_4bLooseSelection_IsoMu20_Matched.root",kBlue); + + MeasureTriggerEfficiency("2016DataPlots_4bSelection/outPlotter.root","TTbar","HLT_IsoMu24","TriggerEfficiency_TTbar_4bSelection_IsoMu24.root",kBlue); + MeasureTriggerEfficiency("2016DataPlots_4bSelection/outPlotter.root","TTbar","HLT_IsoMu24_Matched","TriggerEfficiency_TTbar_4bSelection_IsoMu24_Matched.root",kBlue); + MeasureTriggerEfficiency("2016DataPlots_4bSelection/outPlotter.root","TTbar","HLT_IsoMu20","TriggerEfficiency_TTbar_4bSelection_IsoMu20.root",kBlue); + MeasureTriggerEfficiency("2016DataPlots_4bSelection/outPlotter.root","TTbar","HLT_IsoMu20_Matched","TriggerEfficiency_TTbar_4bSelection_IsoMu20_Matched.root",kBlue); - // MeasureTriggerEfficiency("2016DataPlots/outPlotter.root","TTbar","HLT_IsoMu20","TriggerEfficiency_TTbar_4bLooseSelection_IsoMu20.root",kGreen); - // MeasureTriggerEfficiency("2016DataPlots/outPlotter.root","TTbar","HLT_IsoMu20_Matched","TriggerEfficiency_TTbar_4bLooseSelection_IsoMu20_Matched.root",kOrange); } diff --git a/src/OfflineProducerHelper.cc b/src/OfflineProducerHelper.cc index 73021f6cc..9bafea444 100644 --- a/src/OfflineProducerHelper.cc +++ b/src/OfflineProducerHelper.cc @@ -61,12 +61,17 @@ void OfflineProducerHelper::initializeObjectsForCuts(OutputTree &ot) ot.declareUserFloatBranch("ThirdJetDeepCSV", -1.); ot.declareUserFloatBranch("ForthJetCMVA", -1.); ot.declareUserFloatBranch("HighestIsoMuonPt", -1.); + ot.declareUserFloatBranch("HighestIsoElectronPt", -1.); + ot.declareUserIntBranch ("MuonElectronChargeMultiplication", 0); + ot.declareUserFloatBranch("FirstPtOrderedJetDeepCSV", -1.); + ot.declareUserFloatBranch("SecondPtOrderedJetDeepCSV", -1.); + ot.declareUserIntBranch ("FirstPtOrderedJetOnlineBtag", 0); ot.declareUserFloatBranch("ResolutionOnlineCaloJetPt", -999.); ot.declareUserFloatBranch("OfflineJetPtForCaloResolution", -999.); ot.declareUserFloatBranch("ResolutionOnlinePFJetPt", -999.); ot.declareUserFloatBranch("OfflineJetPtForPFResolution", -999.); - ot.declareUserIntBranch("NumberOfJetsPassingPreselection", -1); + ot.declareUserIntBranch ("NumberOfJetsPassingPreselection", -1); } @@ -807,15 +812,22 @@ bool OfflineProducerHelper::select_bbbb_jets(NanoAODTree& nat, EventInfo& ei, Ou if(debug) std::cout<< "Event " << *(nat.run) << " - " << *(nat.luminosityBlock) << " - " << *(nat.event) << std::endl; std::vector< std::unique_ptr > candidatesForTriggerMatching; + for(auto jet : ordered_jets) { candidatesForTriggerMatching.emplace_back(std::make_unique(jet)); } - // } + + if(any_cast(parameterList_->at("ObjectsForCut")) == "TriggerObjects") { + stable_sort(candidatesForTriggerMatching.begin(), candidatesForTriggerMatching.end(), [](const std::unique_ptr & a, const std::unique_ptr & b) + { + return ( a->P4().Pt() > b->P4().Pt() ); + }); + std::vector jetsForTriggerStudies; if(any_cast(parameterList_->at("MatchWithSelectedObjects"))) { @@ -846,12 +858,40 @@ bool OfflineProducerHelper::select_bbbb_jets(NanoAODTree& nat, EventInfo& ei, Ou if(!matchingJetFound) { ot.userFloat("HighestIsoMuonPt") = nat.Muon_pt.At(muonIt); + ot.userInt ("MuonElectronChargeMultiplication") = nat.Muon_charge.At(muonIt); candidatesForTriggerMatching.emplace_back(std::make_unique(Muon(muonIt, &nat))); break; } } } + for (uint electronIt = 0; electronIt < *(nat.nElectron); ++electronIt) + { + if(nat.Electron_pfRelIso03_all[electronIt]<0.1 && abs(nat.Electron_eta[electronIt])<2.4 && nat.Electron_cutBased[electronIt] == 3) + { + + int electronJetId = nat.Electron_jetIdx[electronIt]; + bool matchingJetFound = false; + if(electronJetId >= 0) + { + for(auto jet : jetsForTriggerStudies) + { + if(jet.getIdx() == electronJetId) + { + matchingJetFound = true; + break; + } + } + } + if(!matchingJetFound) + { + ot.userFloat("HighestIsoElectronPt") = nat.Electron_pt.At(electronIt); + ot.userInt ("MuonElectronChargeMultiplication") *= nat.Electron_charge.At(electronIt); + break; + } + } + } + // sort by deepCSV stable_sort(jetsForTriggerStudies.begin(), jetsForTriggerStudies.end(), [](const Jet & a, const Jet & b) -> bool { @@ -882,6 +922,9 @@ bool OfflineProducerHelper::select_bbbb_jets(NanoAODTree& nat, EventInfo& ei, Ou ot.userFloat("ForthJetPt") = jetsForTriggerStudies[3].P4().Pt(); ot.userFloat("FourHighetJetPtSum") = jetsForTriggerStudies[0].P4().Pt() + jetsForTriggerStudies[1].P4().Pt() + jetsForTriggerStudies[2].P4().Pt() + jetsForTriggerStudies[3].P4().Pt(); + ot.userFloat("FirstPtOrderedJetDeepCSV") = get_property(jetsForTriggerStudies[0],Jet_btagDeepB); + ot.userFloat("SecondPtOrderedJetDeepCSV") = get_property(jetsForTriggerStudies[1],Jet_btagDeepB); + ot.userInt("NumberOfJetsPassingPreselection") = jets.second.size(); } @@ -2151,32 +2194,38 @@ void OfflineProducerHelper::calculateTriggerMatching(const std::vector< std::uni float deltaPt = -999; float offlinePt = -999; int tmpCandidateIdx=-1; + int tmpCandidateNumber=0; + bool firstCandidadeMatched = false; + float firstCandidadeMatchedDeltaR = deltaR; //easy to do square root - if(triggerObjectId == 1 && !any_cast(parameterList_->at("MatchWithSelectedObjects"))) + for(const auto & candidate : candidateList) //loop to find best Candidate matching DeltaR { - deltaR = 0; - } - else - { - for(const auto & candidate : candidateList) //loop to find best Candidate matching DeltaR - { - if(candidate->getCandidateTypeId() != triggerObjectId) continue; // Skip different particles + + if(candidate->getCandidateTypeId() != triggerObjectId) continue; // Skip different particles - float candidateEta = candidate->P4().Eta (); - float candidatePhi = candidate->P4().Phi (); - float tmpdeltaR = (candidateEta - triggerObjectEta)*(candidateEta - triggerObjectEta) + deltaPhi(candidatePhi,triggerObjectPhi)*deltaPhi(candidatePhi,triggerObjectPhi); + float candidateEta = candidate->P4().Eta (); + float candidatePhi = candidate->P4().Phi (); + float tmpdeltaR = (candidateEta - triggerObjectEta)*(candidateEta - triggerObjectEta) + deltaPhi(candidatePhi,triggerObjectPhi)*deltaPhi(candidatePhi,triggerObjectPhi); - if(tmpdeltaR < deltaR) - { - deltaR = tmpdeltaR; - tmpCandidateIdx=candidate->getIdx(); - deltaPt = candidate->P4().Pt() - triggerObjectPt; - offlinePt = candidate->P4().Pt(); + if(tmpdeltaR < deltaR) + { + if(tmpCandidateNumber == 0) firstCandidadeMatched = true; + else firstCandidadeMatched = false; + deltaR = tmpdeltaR; + firstCandidadeMatchedDeltaR = tmpdeltaR; + tmpCandidateIdx=candidate->getIdx(); + deltaPt = candidate->P4().Pt() - triggerObjectPt; + offlinePt = candidate->P4().Pt(); - } } + + ++tmpCandidateNumber; } + if(triggerObjectId == 1 && !any_cast(parameterList_->at("MatchWithSelectedObjects"))) + { + deltaR = 0; + } if(sqrt(deltaR) < any_cast(parameterList_->at("MaxDeltaR"))) // check if a matching was found { std::pair particleAndFilter(triggerObjectId,filterBit); @@ -2187,9 +2236,13 @@ void OfflineProducerHelper::calculateTriggerMatching(const std::vector< std::uni ++mapTriggerMatching_[particleAndFilter]; candidateIdx=tmpCandidateIdx; - //Plot fro online vs offline jet pt resolution + //Plot for online vs offline jet pt resolution if(any_cast(parameterList_->at("ObjectsForCut")) == "TriggerObjects") { + if(triggerObjectId == 1 && firstCandidadeMatched && firstCandidadeMatchedDeltaR < any_cast(parameterList_->at("MaxDeltaR")) && filterBit == 0) //BTagged + { + ot.userInt("FirstPtOrderedJetOnlineBtag")++; + } if(triggerObjectId == 1 && any_cast(parameterList_->at("MatchWithSelectedObjects"))) { if(ot.userFloat("ResolutionOnlineCaloJetPt") == -999.) From f2ef4087d288d7d17af0f492f9bc83a820cf6bf9 Mon Sep 17 00:00:00 2001 From: fravera Date: Wed, 17 Jul 2019 11:09:43 -0500 Subject: [PATCH 12/12] Latest modifications --- .gitignore | 4 +++ .../plotter_2016Analysis_triggerStudies.cfg | 9 ++++--- ...lectionCfg_2016Analysis_triggerStudies.cfg | 26 ++++++++++++------- config/skim_2016ResonantDiHiggs4B.cfg | 6 ++--- ...m_2016ResonantDiHiggs4B_triggerStudies.cfg | 5 ++-- scripts/TriggerEfficiencyFitter.C | 15 +++++++++-- 6 files changed, 44 insertions(+), 21 deletions(-) diff --git a/.gitignore b/.gitignore index a9fe21a61..35f349ca2 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,7 @@ *.root *.tar.gz jobs_*/ +2016DataPlots_* +*_C.d +*_C_ACLiC_dict_rdict.pcm +*.pdf diff --git a/config/plotter_2016Analysis_triggerStudies.cfg b/config/plotter_2016Analysis_triggerStudies.cfg index 00e2081c8..85d4a9f36 100644 --- a/config/plotter_2016Analysis_triggerStudies.cfg +++ b/config/plotter_2016Analysis_triggerStudies.cfg @@ -1,9 +1,9 @@ [general] lumi = 35900 # pb^-1 -outputFolder = ./2016DataPlots_4bSelection +# outputFolder = ./2016DataPlots_4bSelection # outputFolder = ./2016DataPlots_4bLooseSelection -# outputFolder = ./2016DataPlots_MuonPt40_ForthJetPt30 +outputFolder = ./2016DataPlots_MuonPt40_ForthJetPt30_BTag # outputFolder = ./2016DataPlots_MuonPt40_ForthJetPt30_CMVAM # Comment out an entry if you don't want to run on it. @@ -15,10 +15,11 @@ data = SingleMuon # data = SingleMuon_RunBF, SingleMuon_RunGH signals = TTbar -variables = FourHighetJetPtSum, FirstJetPt, SecondJetPt, ThirdJetPt, ForthJetPt, ThirdJetDeepCSV +variables = FourHighetJetPtSum, FirstJetPt, SecondJetPt, ThirdJetPt, ForthJetPt, ThirdJetDeepCSV, FirstPtOrderedJetDeepCSV + variables2D = OfflineJetPtForCaloResolution:ResolutionOnlineCaloJetPt, OfflineJetPtForPFResolution:ResolutionOnlinePFJetPt -selections = Normalization , L1triggerDouble90Double30AndPrevious , QuadCentralJet30AndPrevious , DoubleCentralJet90AndPrevious , BTagCaloCSVp087TripleDouble90Double30AndPrevious , QuadPFCentralJetLooseID30AndPrevious , DoublePFCentralJetLooseID90AndPrevious , L1triggerQuad45AndPrevious , QuadCentralJet45AndPrevious , BTagCaloCSVp087TripleQuad45AndPrevious , QuadPFCentralJetLooseID45AndPrevious, HLT_Double90Double30AndPrevious, HLT_Quad45AndPrevious +selections = Normalization , L1triggerDouble90Double30AndPrevious , QuadCentralJet30AndPrevious , DoubleCentralJet90AndPrevious , BTagCaloCSVp087TripleDouble90Double30AndPrevious , QuadPFCentralJetLooseID30AndPrevious , DoublePFCentralJetLooseID90AndPrevious , L1triggerQuad45AndPrevious , QuadCentralJet45AndPrevious , BTagCaloCSVp087TripleQuad45AndPrevious , QuadPFCentralJetLooseID45AndPrevious, HLT_Double90Double30AndPrevious, HLT_Quad45AndPrevious, NormalizationForBTagDouble90Double30, SelectionForBTagDouble90Double30, NormalizationForBTagQuad45, SelectionForBTagQuad45 regions = HLT_IsoMu24, HLT_IsoMu20, HLT_IsoMu24_Matched, HLT_IsoMu20_Matched [configs] diff --git a/config/selectionCfg_2016Analysis_triggerStudies.cfg b/config/selectionCfg_2016Analysis_triggerStudies.cfg index 706d388f3..42d8ba2c7 100644 --- a/config/selectionCfg_2016Analysis_triggerStudies.cfg +++ b/config/selectionCfg_2016Analysis_triggerStudies.cfg @@ -11,11 +11,14 @@ # common # basicSelectionPass = HighestIsoMuonPt>30 && ForthJetPt>30 && ForthJetCMVA>0.185 -# basicSelectionPass = HighestIsoMuonPt>30 && ForthJetPt>30 -basicSelectionPass = HighestIsoMuonPt>30 && ForthJetPt>30 && ((H1_m > 120-40 && H1_m < 120+40) && (H2_m > 120-40 && H2_m < 120+40)) && HH_2DdeltaM < 4.*20.*20. +basicSelectionPass = HighestIsoMuonPt>30 && ForthJetPt>30 +# basicSelectionPass = HighestIsoMuonPt>30 && ForthJetPt>30 && ((H1_m > 120-40 && H1_m < 120+40) && (H2_m > 120-40 && H2_m < 120+40)) && HH_2DdeltaM < 4.*20.*20. # # # basicSelectionPass = ForthJetCMVA > 0.185 && ((H1_m > 120-40 && H1_m < 120+40) && (H2_m > 120-40 && H2_m < 120+40)) && HH_2DdeltaM < 25.*20*20 # # # basicSelectionPass = ((H1_m > 120-40 && H1_m < 120+40) && (H2_m > 120-40 && H2_m < 120+40)) && HH_2DdeltaM < 25.*20*20 BTagCaloCSVp087TriplePass = BTagCaloCSVp087Triple >= 3 +# SelectionForBTag = HighestIsoElectronPt > 20. && MuonElectronChargeMultiplication <= 0 && SecondPtOrderedJetDeepCSV >= 0.6 +SelectionForBTag = HighestIsoElectronPt > 20. && MuonElectronChargeMultiplication <= 0 +SingleBTag = FirstPtOrderedJetOnlineBtag >=1 # HLT_DoubleJet90_Double30_TripleBTagCSV_p087 # L1triggerDouble90Double30Pass = L1sTripleJetVBFIorHTTIorDoubleJetCIorSingleJet >= 1 @@ -49,6 +52,8 @@ DoubleCentralJet90AndPrevious = QuadCentralJet30AndPrevious, BTagCaloCSVp087TripleDouble90Double30AndPrevious = DoubleCentralJet90AndPrevious, BTagCaloCSVp087TriplePass QuadPFCentralJetLooseID30AndPrevious = BTagCaloCSVp087TripleDouble90Double30AndPrevious, QuadPFCentralJetLooseID30Pass DoublePFCentralJetLooseID90AndPrevious = QuadPFCentralJetLooseID30AndPrevious, DoublePFCentralJetLooseID90Pass +NormalizationForBTagDouble90Double30 = DoubleCentralJet90AndPrevious, SelectionForBTag +SelectionForBTagDouble90Double30 = NormalizationForBTagDouble90Double30, FirstPtOrderedJetOnlineBtag # not per-object efficiency HLT_DoubleJet90_Double30_TripleBTagCSV_p087 HLT_Double90Double30AndPrevious = Normalization, HLT_Double90Double30Pass @@ -58,6 +63,8 @@ L1triggerQuad45AndPrevious = Normalization, L1triggerQuad45Pass QuadCentralJet45AndPrevious = L1triggerQuad45AndPrevious, QuadCentralJet45Pass BTagCaloCSVp087TripleQuad45AndPrevious = QuadCentralJet45AndPrevious, BTagCaloCSVp087TriplePass QuadPFCentralJetLooseID45AndPrevious = BTagCaloCSVp087TripleQuad45AndPrevious, QuadPFCentralJetLooseID45Pass +NormalizationForBTagQuad45 = QuadCentralJet45AndPrevious, SelectionForBTag +SelectionForBTagQuad45 = NormalizationForBTagQuad45, FirstPtOrderedJetOnlineBtag # not per-object efficiency HLT_QuadJet45_TripleBTagCSV_p087 HLT_Quad45AndPrevious = Normalization, HLT_Quad45Pass @@ -95,12 +102,13 @@ TTbar = genWeight, PUWeight, LHEPdfWeight, LHEScaleWeight # write binning as ROOT declaration: nXbins, xmin, xmax [histos] -FourHighetJetPtSum = 50, 100., 600. -FirstJetPt = 50, 20., 160. -SecondJetPt = 50, 20., 200. -ThirdJetPt = 50, 20., 160. -ForthJetPt = 50, 20., 160. -ThirdJetDeepCSV = 50, 0., 1. +FourHighetJetPtSum = 50, 100., 600. +FirstJetPt = 50, 20., 160. +SecondJetPt = 50, 20., 200. +ThirdJetPt = 50, 20., 160. +ForthJetPt = 50, 20., 160. +ThirdJetDeepCSV = 50, 0., 1. +FirstPtOrderedJetDeepCSV = 50, 0., 1. # write binning as ROOT declaration: nXbins xmin, xmax, nYbins, ymin, ymax = @@ -119,6 +127,6 @@ ForthJetPt = 20, 25.6, 31.2, 36.8, 39.6, 42.4, 45.2, 48, 50.8, 53.6, 56. ThirdJetDeepCSV = 0, 0.02, 0.04, 0.06, 0.08, 0.1, 0.12, 0.14, 0.16, 0.18, 0.2, 0.22, 0.24, 0.26, 0.28, 0.3, 0.32, 0.36, 0.4, 0.44, 0.48, 0.52, 0.56, 0.6, 0.64, 0.7, 0.76, 0.82, 0.88, 0.94, 1 - +FirstPtOrderedJetDeepCSV = 0, 0.02, 0.04, 0.06, 0.08, 0.1, 0.12, 0.14, 0.16, 0.18, 0.2, 0.22, 0.24, 0.26, 0.28, 0.3, 0.32, 0.36, 0.4, 0.44, 0.48, 0.52, 0.56, 0.6, 0.64, 0.7, 0.76, 0.82, 0.88, 0.94, 1 diff --git a/config/skim_2016ResonantDiHiggs4B.cfg b/config/skim_2016ResonantDiHiggs4B.cfg index b692856e8..45771f380 100644 --- a/config/skim_2016ResonantDiHiggs4B.cfg +++ b/config/skim_2016ResonantDiHiggs4B.cfg @@ -77,7 +77,7 @@ JECListOfCorrections = AbsoluteStat, AbsoluteScale, AbsoluteMPFBias, Fragmen # TriggerObjects : save Trigger objects for trigger studies # triggers object are listed as branchName:objectType:filterBit -# ObjectsForCut = WandZleptonDecays +ObjectsForCut = WandZleptonDecays WElectronMaxPfIso = 0.12 ZElectronMaxPfIso = 0.15 WMuonMaxPfIso = 0.15 @@ -85,7 +85,7 @@ ZMuonMaxPfIso = 0.25 MuonMaxDxy = 0.05 MuonMaxDz = 0.20 -ObjectsForCut = TriggerObjects +# ObjectsForCut = TriggerObjects MaxDeltaR = 0.3 ListOfTriggerObjectsAndBit = 1:0:BTagCaloCSVp087Triple, 1:1:DoubleCentralJet90, 1:2:DoublePFCentralJetLooseID90, 1:3:L1sTripleJetVBFIorHTTIorDoubleJetCIorSingleJet, 1:4:QuadCentralJet30, 1:5:QuadPFCentralJetLooseID30, 1:6:L1sQuadJetC50IorQuadJetC60IorHTT280IorHTT300IorHTT320IorTripleJet846848VBFIorTripleJet887256VBFIorTripleJet927664VBF, 1:7:QuadCentralJet45, 1:8:QuadPFCentralJetLooseID45 @@ -122,7 +122,7 @@ makeORof = trigger1:HLT_DoubleJet90_Double30_TripleBTagCSV_p087, trigger2:HLT_Qu MaxDeltaR = 0.3 trigger1_ObjectRequirements = 1:0:3, 1:1:2, 1:2:2, 1:3:1, 1:4:4, 1:5:4 trigger2_ObjectRequirements = 1:0:3, 1:6:1, 1:7:4, 1:8:4 -TriggerStudies = false +MatchWithSelectedObjects = true # ############################################################################################################## # diff --git a/config/skim_2016ResonantDiHiggs4B_triggerStudies.cfg b/config/skim_2016ResonantDiHiggs4B_triggerStudies.cfg index 1c64f3170..ad306855b 100644 --- a/config/skim_2016ResonantDiHiggs4B_triggerStudies.cfg +++ b/config/skim_2016ResonantDiHiggs4B_triggerStudies.cfg @@ -30,7 +30,6 @@ HiggsMassMMR = 125. LMRToMMRTransition = -1. UseAntiTagOnOneBjet = false - # -------------------------------------------------------------------------------------------------------------- # # use PreselectionCut to cut on the objects during preselection # use negative numbers to skip the cut @@ -96,10 +95,10 @@ ListOfTriggerObjectsAndBit = 1:0:BTagCaloCSVp087Triple, 1:1:DoubleCentralJet90, # None : no scale factors are saved # FourBtag_ScaleFactor : calculate scale factor for four b jet selection -# BTagScaleFactorMethod = FourBtag_ScaleFactor +BTagScaleFactorMethod = FourBtag_ScaleFactor BJetScaleFactorsFile = weights/DeepCSV_Moriond17_B_H.csv -BTagScaleFactorMethod = None +# BTagScaleFactorMethod = None # -------------------------------------------------------------------------------------------------------------- # # use WeightsMethod to select the method to calculate the weights diff --git a/scripts/TriggerEfficiencyFitter.C b/scripts/TriggerEfficiencyFitter.C index fc1b67ed1..d28c5889e 100644 --- a/scripts/TriggerEfficiencyFitter.C +++ b/scripts/TriggerEfficiencyFitter.C @@ -84,6 +84,11 @@ void MeasureTriggerEfficiency(std::string inputFileName, std::string sampleName, "BTag CaloCSV p087 Triple", "DeepCSV_{3}", lineColor); efficiency->Write(); + // efficiency = TriggerEfficiencyFitter(inputFile, sampleName, referenceTriggerName, "FirstPtOrderedJetDeepCSV", + // "SelectionForBTagDouble90Double30", "NormalizationForBTagDouble90Double30", dummyFormula, dummyParameters, + // "BTag CaloCSV p087 Single", "DeepCSV", lineColor); + // efficiency->Write(); + efficiency = TriggerEfficiencyFitter(inputFile, sampleName, referenceTriggerName, "FirstJetPt", "QuadPFCentralJetLooseID30AndPrevious", "BTagCaloCSVp087TripleDouble90Double30AndPrevious", dummyFormula, dummyParameters, "Quad PF Central Jet Loose ID 30 GeV", "p_{1}^{T}", lineColor); @@ -135,6 +140,7 @@ void MeasureTriggerEfficiency(std::string inputFileName, std::string sampleName, efficiency = TriggerEfficiencyFitter(inputFile, sampleName, referenceTriggerName, "ThirdJetPt", "QuadCentralJet45AndPrevious", "L1triggerQuad45AndPrevious", dummyFormula, dummyParameters, "Quad Central Jet 45 GeV", "p_{3}^{T}", lineColor); + efficiency->Write(); efficiency = TriggerEfficiencyFitter(inputFile, sampleName, referenceTriggerName, "ForthJetPt", "QuadCentralJet45AndPrevious", "L1triggerQuad45AndPrevious", dummyFormula, dummyParameters, @@ -146,6 +152,11 @@ void MeasureTriggerEfficiency(std::string inputFileName, std::string sampleName, "BTag CaloCSV p087 Triple", "DeepCSV_{3}", lineColor); efficiency->Write(); + // efficiency = TriggerEfficiencyFitter(inputFile, sampleName, referenceTriggerName, "FirstPtOrderedJetDeepCSV", + // "SelectionForBTagQuad45", "NormalizationForBTagQuad45", dummyFormula, dummyParameters, + // "BTag CaloCSV p087 Single", "DeepCSV", lineColor); + // efficiency->Write(); + efficiency = TriggerEfficiencyFitter(inputFile, sampleName, referenceTriggerName, "FirstJetPt", "QuadPFCentralJetLooseID45AndPrevious", "BTagCaloCSVp087TripleQuad45AndPrevious", dummyFormula, dummyParameters, "Quad PF Central Jet Loose ID 45 GeV", "p_{1}^{T}", lineColor); @@ -243,7 +254,7 @@ void ProduceAllTriggerEfficiencies() // MeasureTriggerEfficiency("2016DataPlots_4bSelection/outPlotter.root","TTbar","HLT_IsoMu20_Matched","TriggerEfficiency_TTbar_4bSelection_IsoMu20_Matched.root",kBlue); - // SingleMuon + SingleMuon MeasureTriggerEfficiency("2016DataPlots_MuonPt40_ForthJetPt30_CMVAM/outPlotter.root","SingleMuon","HLT_IsoMu24","TriggerEfficiency_SingleMuon_MuonPt40_ForthJetPt30_CMVAM_IsoMu24.root",kBlue); MeasureTriggerEfficiency("2016DataPlots_MuonPt40_ForthJetPt30_CMVAM/outPlotter.root","SingleMuon","HLT_IsoMu24_Matched","TriggerEfficiency_SingleMuon_MuonPt40_ForthJetPt30_CMVAM_IsoMu24_Matched.root",kBlue); MeasureTriggerEfficiency("2016DataPlots_MuonPt40_ForthJetPt30_CMVAM/outPlotter.root","SingleMuon","HLT_IsoMu20","TriggerEfficiency_SingleMuon_MuonPt40_ForthJetPt30_CMVAM_IsoMu20.root",kBlue); @@ -264,7 +275,7 @@ void ProduceAllTriggerEfficiencies() MeasureTriggerEfficiency("2016DataPlots_4bSelection/outPlotter.root","SingleMuon","HLT_IsoMu20","TriggerEfficiency_SingleMuon_4bSelection_IsoMu20.root",kBlue); MeasureTriggerEfficiency("2016DataPlots_4bSelection/outPlotter.root","SingleMuon","HLT_IsoMu20_Matched","TriggerEfficiency_SingleMuon_4bSelection_IsoMu20_Matched.root",kBlue); - // TTbar + TTbar MeasureTriggerEfficiency("2016DataPlots_MuonPt40_ForthJetPt30_CMVAM/outPlotter.root","TTbar","HLT_IsoMu24","TriggerEfficiency_TTbar_MuonPt40_ForthJetPt30_CMVAM_IsoMu24.root",kBlue); MeasureTriggerEfficiency("2016DataPlots_MuonPt40_ForthJetPt30_CMVAM/outPlotter.root","TTbar","HLT_IsoMu24_Matched","TriggerEfficiency_TTbar_MuonPt40_ForthJetPt30_CMVAM_IsoMu24_Matched.root",kBlue); MeasureTriggerEfficiency("2016DataPlots_MuonPt40_ForthJetPt30_CMVAM/outPlotter.root","TTbar","HLT_IsoMu20","TriggerEfficiency_TTbar_MuonPt40_ForthJetPt30_CMVAM_IsoMu20.root",kBlue);