From 83c0d3316d2bc3d01c1d789f25aa4288420bb92e Mon Sep 17 00:00:00 2001 From: Daniel Salerno Date: Fri, 20 Mar 2015 15:45:39 +0100 Subject: [PATCH 1/4] Update hltHiggsValidator_cfi.py Include new paths for All Hadronic ttH(bb) analysis --- .../Higgs/python/hltHiggsValidator_cfi.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/HLTriggerOffline/Higgs/python/hltHiggsValidator_cfi.py b/HLTriggerOffline/Higgs/python/hltHiggsValidator_cfi.py index d3d692c168fbe..6a958391f2068 100644 --- a/HLTriggerOffline/Higgs/python/hltHiggsValidator_cfi.py +++ b/HLTriggerOffline/Higgs/python/hltHiggsValidator_cfi.py @@ -4,7 +4,7 @@ hltHiggsValidator = cms.EDAnalyzer("HLTHiggsValidator", hltProcessName = cms.string("HLT"), - analysis = cms.vstring("HWW", "HZZ", "Hgg", "Htaunu", "H2tau", "VBFHbb_0btag", "VBFHbb_1btag", "VBFHbb_2btag", "ZnnHbb","DoubleHinTaus","HiggsDalitz","X4b","TTHbbej"), + analysis = cms.vstring("HWW", "HZZ", "Hgg", "Htaunu", "H2tau", "VBFHbb_0btag", "VBFHbb_1btag", "VBFHbb_2btag", "ZnnHbb","DoubleHinTaus","HiggsDalitz","X4b","TTHbbej","AHttH"), histDirectory = cms.string("HLT/Higgs"), # -- The instance name of the reco::GenParticles collection @@ -322,4 +322,15 @@ HtJetPtMin = cms.untracked.double(30), HtJetEtaMax = cms.untracked.double(3.0), ), + AHttH = cms.PSet( + hltPathsToCheck = cms.vstring( + "HLT_PFHT450_SixJet40_PFBTagCSV_v", + "HLT_PFHT400_SixJet30_BTagCSV0p5_2PFBTagCSV_v" + ), + #recElecLabel = cms.string("gedGsfElectrons"), + recJetLabel = cms.string("ak4PFJetsCHS"), + jetTagLabel = cms.string("pfCombinedSecondaryVertexBJetTags"), + ## -- Analysis specific cuts + minCandidates = cms.uint32(6), + ), ) From 60d2e32f670cb832b08eb5e5c1bec95fcccc900f Mon Sep 17 00:00:00 2001 From: Daniel Salerno Date: Fri, 20 Mar 2015 16:00:07 +0100 Subject: [PATCH 2/4] Update hltHiggsPostProcessors_cff.py Include new paths for All Hadronic ttH(bb) analysis --- HLTriggerOffline/Higgs/python/hltHiggsPostProcessors_cff.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/HLTriggerOffline/Higgs/python/hltHiggsPostProcessors_cff.py b/HLTriggerOffline/Higgs/python/hltHiggsPostProcessors_cff.py index 328224c074e06..ce40738febf0f 100644 --- a/HLTriggerOffline/Higgs/python/hltHiggsPostProcessors_cff.py +++ b/HLTriggerOffline/Higgs/python/hltHiggsPostProcessors_cff.py @@ -172,6 +172,10 @@ def get_reco_strings(strings): hltHiggsPostTTHbbej.subDirs = ['HLT/Higgs/TTHbbej'] hltHiggsPostTTHbbej.efficiencyProfile = efficiency_strings_TTHbbej +hltHiggsPostAHttH = hltHiggsPostProcessor.clone() +hltHiggsPostAHttH.subDirs = ['HLT/Higgs/AHttH'] +hltHiggsPostAHttH.efficiencyProfile = efficiency_strings + #Specific plots for VBFHbb_2btag #dEtaqq, mqq, dPhibb, CVS1, maxCSV_jets, maxCSV_E, MET, pt1, pt2, pt3, pt4 NminOneCutNames = ("EffdEtaqq", "Effmqq", "EffdPhibb", "EffCSV1", "EffCSV2", "EffCSV3", "EffmaxCSV", "", "", "TurnOn1", "TurnOn2", "TurnOn3", "TurnOn4") @@ -290,6 +294,7 @@ def get_reco_strings(strings): hltHiggsPostHtaunu+ hltHiggsPostH2tau+ hltHiggsPostTTHbbej+ + hltHiggsPostAHttH+ hltHiggsPostVBFHbb_0btag+ hltHiggsPostVBFHbb_1btag+ hltHiggsPostVBFHbb_2btag+ From 8ffb5fa916ee57edc41ea3d3ff9af31f8db0da2f Mon Sep 17 00:00:00 2001 From: Daniel Salerno Date: Wed, 25 Mar 2015 15:58:55 +0100 Subject: [PATCH 3/4] Update hltHiggsValidator_cfi.py Include control paths for All Hadronic ttH(bb) analysis --- HLTriggerOffline/Higgs/python/hltHiggsValidator_cfi.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/HLTriggerOffline/Higgs/python/hltHiggsValidator_cfi.py b/HLTriggerOffline/Higgs/python/hltHiggsValidator_cfi.py index 6a958391f2068..f68e5d7addc89 100644 --- a/HLTriggerOffline/Higgs/python/hltHiggsValidator_cfi.py +++ b/HLTriggerOffline/Higgs/python/hltHiggsValidator_cfi.py @@ -325,7 +325,9 @@ AHttH = cms.PSet( hltPathsToCheck = cms.vstring( "HLT_PFHT450_SixJet40_PFBTagCSV_v", - "HLT_PFHT400_SixJet30_BTagCSV0p5_2PFBTagCSV_v" + "HLT_PFHT400_SixJet30_BTagCSV0p5_2PFBTagCSV_v", + "HLT_PFHT450_SixJet40_v", + "HLT_PFHT400_SixJet30_v", ), #recElecLabel = cms.string("gedGsfElectrons"), recJetLabel = cms.string("ak4PFJetsCHS"), From 5e5586c868f19021149ef13168661da0c4d0b3d7 Mon Sep 17 00:00:00 2001 From: "jasper.lauwers" Date: Mon, 4 May 2015 17:46:35 +0200 Subject: [PATCH 4/4] Update efficiency plots, PU range and added HggControlPath directory Conflicts: HLTriggerOffline/Higgs/python/hltHiggsValidator_cfi.py --- .../python/hltHiggsPostProcessors_cff.py | 45 ++++++++++++++----- .../Higgs/python/hltHiggsValidator_cfi.py | 13 ++++-- .../Higgs/src/HLTHiggsSubAnalysis.cc | 8 ++-- 3 files changed, 48 insertions(+), 18 deletions(-) diff --git a/HLTriggerOffline/Higgs/python/hltHiggsPostProcessors_cff.py b/HLTriggerOffline/Higgs/python/hltHiggsPostProcessors_cff.py index ce40738febf0f..3fa22899e3b6a 100644 --- a/HLTriggerOffline/Higgs/python/hltHiggsPostProcessors_cff.py +++ b/HLTriggerOffline/Higgs/python/hltHiggsPostProcessors_cff.py @@ -119,29 +119,31 @@ def get_reco_strings(strings): #add the summary plots +efficiency_summary_strings = [] for an in _config.analysis: - efficiency_strings.append("EffSummaryPaths_"+an+"_gen ' Efficiency of paths used in "+an+" ; trigger path ' SummaryPaths_"+an+"_gen_passingHLT SummaryPaths_"+an+"_gen") + efficiency_summary_strings.append("EffSummaryPaths_"+an+"_gen ' Efficiency of paths used in "+an+" ; trigger path ' SummaryPaths_"+an+"_gen_passingHLT SummaryPaths_"+an+"_gen") for trig in triggers: - efficiency_strings.append("Eff_trueVtxDist_"+an+"_gen_"+trig+" ' Efficiency of "+trig+" vs nb of interactions ; nb events passing each path ' trueVtxDist_"+an+"_gen_"+trig+" trueVtxDist_"+an+"_gen") + efficiency_summary_strings.append("Eff_trueVtxDist_"+an+"_gen_"+trig+" ' Efficiency of "+trig+" vs nb of interactions ; nb events passing each path ' trueVtxDist_"+an+"_gen_"+trig+" trueVtxDist_"+an+"_gen") +efficiency_strings.extend(efficiency_summary_strings) efficiency_strings.extend(get_reco_strings(efficiency_strings)) - - hltHiggsPostHWW = hltHiggsPostProcessor.clone() hltHiggsPostHWW.subDirs = ['HLT/Higgs/HWW'] hltHiggsPostHWW.efficiencyProfile = efficiency_strings - hltHiggsPostHZZ = hltHiggsPostProcessor.clone() hltHiggsPostHZZ.subDirs = ['HLT/Higgs/HZZ'] hltHiggsPostHZZ.efficiencyProfile = efficiency_strings - hltHiggsPostHgg = hltHiggsPostProcessor.clone() hltHiggsPostHgg.subDirs = ['HLT/Higgs/Hgg'] hltHiggsPostHgg.efficiencyProfile = efficiency_strings +hltHiggsPostHggControlPaths = hltHiggsPostProcessor.clone() +hltHiggsPostHggControlPaths.subDirs = ['HLT/Higgs/HggControlPaths'] +hltHiggsPostHggControlPaths.efficiencyProfile = efficiency_strings + hltHiggsPostDoubleHinTaus = hltHiggsPostProcessor.clone() hltHiggsPostDoubleHinTaus.subDirs = ['HLT/Higgs/DoubleHinTaus'] hltHiggsPostDoubleHinTaus.efficiencyProfile = efficiency_strings @@ -154,19 +156,19 @@ def get_reco_strings(strings): hltHiggsPostH2tau.subDirs = ['HLT/Higgs/H2tau'] hltHiggsPostH2tau.efficiencyProfile = efficiency_strings - hltHiggsPostHtaunu = hltHiggsPostProcessor.clone() hltHiggsPostHtaunu.subDirs = ['HLT/Higgs/Htaunu'] hltHiggsPostHtaunu.efficiencyProfile = efficiency_strings -efficiency_strings_TTHbbej = list(efficiency_strings) +efficiency_strings_TTHbbej = [] #add the summary plots for an in _config.analysis: for trig in triggers: efficiency_strings_TTHbbej.append("Eff_HtDist_"+an+"_gen_"+trig+" ' Efficiency of "+trig+" vs sum pT of jets ; sum pT of jets ' HtDist_"+an+"_gen_"+trig+" HtDist_"+an+"_gen") efficiency_strings_TTHbbej.extend(get_reco_strings(efficiency_strings_TTHbbej)) +efficiency_strings_TTHbbej.extend(efficiency_strings) hltHiggsPostTTHbbej = hltHiggsPostProcessor.clone() hltHiggsPostTTHbbej.subDirs = ['HLT/Higgs/TTHbbej'] @@ -195,6 +197,7 @@ def get_reco_strings(strings): efficiency_strings.append(efficiency_string(obj,type,trig)) efficiency_strings = get_reco_strings(efficiency_strings) +efficiency_strings.extend(get_reco_strings(efficiency_summary_strings)) hltHiggsPostVBFHbb_2btag = hltHiggsPostProcessor.clone() hltHiggsPostVBFHbb_2btag.subDirs = ['HLT/Higgs/VBFHbb_2btag'] @@ -202,7 +205,6 @@ def get_reco_strings(strings): #Specific plots for VBFHbb_1btag #dEtaqq, mqq, dPhibb, CVS1, maxCSV_jets, maxCSV_E, MET, pt1, pt2, pt3, pt4 -NminOneCutNames = ("EffdEtaqq", "Effmqq", "EffdPhibb", "EffCSV1", "EffCSV2", "EffCSV3", "EffmaxCSV", "", "", "TurnOn1", "TurnOn2", "TurnOn3", "TurnOn4") plot_types = [] NminOneCuts = (_config.__getattribute__("VBFHbb_1btag")).__getattribute__("NminOneCuts") if NminOneCuts: @@ -211,6 +213,15 @@ def get_reco_strings(strings): if( NminOneCutNames[iCut] == "EffmaxCSV" ): plot_types.pop() plot_types.append(NminOneCutNames[iCut]) + +efficiency_strings = [] +for type in plot_types: + for obj in ["Jet"]: + for trig in triggers: + efficiency_strings.append(efficiency_string(obj,type,trig)) + +efficiency_strings = get_reco_strings(efficiency_strings) +efficiency_strings.extend(get_reco_strings(efficiency_summary_strings)) hltHiggsPostVBFHbb_1btag = hltHiggsPostProcessor.clone() hltHiggsPostVBFHbb_1btag.subDirs = ['HLT/Higgs/VBFHbb_1btag'] @@ -218,20 +229,29 @@ def get_reco_strings(strings): #Specific plots for VBFHbb_0btag #dEtaqq, mqq, dPhibb, CVS1, maxCSV_jets, maxCSV_E, MET, pt1, pt2, pt3, pt4 -NminOneCutNames = ("EffdEtaqq", "Effmqq", "EffdPhibb", "EffCSV1", "EffCSV2", "EffCSV3", "EffmaxCSV", "", "", "TurnOn1", "TurnOn2", "TurnOn3", "TurnOn4") plot_types = [] NminOneCuts = (_config.__getattribute__("VBFHbb_0btag")).__getattribute__("NminOneCuts") if NminOneCuts: for iCut in range(0,len(NminOneCuts)): if( NminOneCuts[iCut] and NminOneCutNames[iCut] ): + if( NminOneCutNames[iCut] == "EffmaxCSV" ): + plot_types.pop() plot_types.append(NminOneCutNames[iCut]) +efficiency_strings = [] +for type in plot_types: + for obj in ["Jet"]: + for trig in triggers: + efficiency_strings.append(efficiency_string(obj,type,trig)) + +efficiency_strings = get_reco_strings(efficiency_strings) +efficiency_strings.extend(get_reco_strings(efficiency_summary_strings)) + hltHiggsPostVBFHbb_0btag = hltHiggsPostProcessor.clone() hltHiggsPostVBFHbb_0btag.subDirs = ['HLT/Higgs/VBFHbb_0btag'] hltHiggsPostVBFHbb_0btag.efficiencyProfile = efficiency_strings - #Specific plots for ZnnHbb #Jet plots plot_types = ["EffEta", "EffPhi"] @@ -259,6 +279,7 @@ def get_reco_strings(strings): efficiency_strings2 = get_reco_strings(efficiency_strings2) efficiency_strings += efficiency_strings2 +efficiency_strings.extend(get_reco_strings(efficiency_summary_strings)) hltHiggsPostZnnHbb = hltHiggsPostProcessor.clone() hltHiggsPostZnnHbb.subDirs = ['HLT/Higgs/ZnnHbb'] @@ -280,6 +301,7 @@ def get_reco_strings(strings): efficiency_strings.append(efficiency_string(obj,type,trig)) efficiency_strings = get_reco_strings(efficiency_strings) +efficiency_strings.extend(get_reco_strings(efficiency_summary_strings)) hltHiggsPostX4b = hltHiggsPostProcessor.clone() hltHiggsPostX4b.subDirs = ['HLT/Higgs/X4b'] @@ -291,6 +313,7 @@ def get_reco_strings(strings): hltHiggsPostHWW+ hltHiggsPostHZZ+ hltHiggsPostHgg+ + hltHiggsPostHggControlPaths+ hltHiggsPostHtaunu+ hltHiggsPostH2tau+ hltHiggsPostTTHbbej+ diff --git a/HLTriggerOffline/Higgs/python/hltHiggsValidator_cfi.py b/HLTriggerOffline/Higgs/python/hltHiggsValidator_cfi.py index f68e5d7addc89..95b8ea97d135c 100644 --- a/HLTriggerOffline/Higgs/python/hltHiggsValidator_cfi.py +++ b/HLTriggerOffline/Higgs/python/hltHiggsValidator_cfi.py @@ -4,7 +4,7 @@ hltHiggsValidator = cms.EDAnalyzer("HLTHiggsValidator", hltProcessName = cms.string("HLT"), - analysis = cms.vstring("HWW", "HZZ", "Hgg", "Htaunu", "H2tau", "VBFHbb_0btag", "VBFHbb_1btag", "VBFHbb_2btag", "ZnnHbb","DoubleHinTaus","HiggsDalitz","X4b","TTHbbej","AHttH"), + analysis = cms.vstring("HWW", "HZZ", "Hgg", "HggControlPaths", "Htaunu", "H2tau", "VBFHbb_0btag", "VBFHbb_1btag", "VBFHbb_2btag", "ZnnHbb","DoubleHinTaus","HiggsDalitz","X4b","TTHbbej","AHttH"), histDirectory = cms.string("HLT/Higgs"), # -- The instance name of the reco::GenParticles collection @@ -31,7 +31,7 @@ # -- (NBins, minVal, maxValue) for the Eta,Phi and nInterations efficiency plots parametersEta = cms.vdouble(48, -2.400, 2.400), parametersPhi = cms.vdouble(50, -3.142, 3.142), - parametersPu = cms.vdouble(10, 0, 20), + parametersPu = cms.vdouble(10, 0, 50), parametersHt = cms.untracked.vdouble(100, 0, 1000), # TO BE DEPRECATED -------------------------------------------- @@ -156,7 +156,6 @@ hltPathsToCheck = cms.vstring( "HLT_Diphoton10_10_R9Id_OR_IsoCaloId_AND_HE_R9Id_Mass10_ForMC_v", "HLT_Diphoton30_18_R9Id_OR_IsoCaloId_AND_HE_R9Id_Mass95_v", - "HLT_Diphoton30_18_R9Id_OR_IsoCaloId_AND_HE_R9Id_DoublePixelSeedMatch_Mass70_v", "HLT_Diphoton30PV_18PV_R9Id_AND_IsoCaloId_AND_HE_R9Id_DoublePixelVeto_Mass55_v", "HLT_Diphoton30_18_Solid_R9Id_AND_IsoCaloId_AND_HE_R9Id_Mass55_v", "HLT_Diphoton30EB_18EB_R9Id_OR_IsoCaloId_AND_HE_R9Id_DoublePixelVeto_Mass55_v" @@ -165,6 +164,14 @@ # -- Analysis specific cuts minCandidates = cms.uint32(2), ), + HggControlPaths = cms.PSet( + hltPathsToCheck = cms.vstring( + "HLT_Diphoton30_18_R9Id_OR_IsoCaloId_AND_HE_R9Id_DoublePixelSeedMatch_Mass70_v" + ), + recPhotonLabel = cms.string("photons"), + # -- Analysis specific cuts + minCandidates = cms.uint32(2), + ), DoubleHinTaus = cms.PSet( hltPathsToCheck = cms.vstring( "HLT_Mu17_Mu8_SameSign_v", diff --git a/HLTriggerOffline/Higgs/src/HLTHiggsSubAnalysis.cc b/HLTriggerOffline/Higgs/src/HLTHiggsSubAnalysis.cc index 40941f9a5ddda..5bf2c90f01cd0 100644 --- a/HLTriggerOffline/Higgs/src/HLTHiggsSubAnalysis.cc +++ b/HLTriggerOffline/Higgs/src/HLTHiggsSubAnalysis.cc @@ -341,7 +341,7 @@ void HLTHiggsSubAnalysis::bookHistograms(DQMStore::IBooker &ibooker) double minHt = paramsHt[1]; double maxHt = paramsHt[2]; - _elements[nameVtxPlot] = ibooker.book1D(nameVtxPlot.c_str(), titlePu.c_str(), nBinsPu, minPu, maxPu); + if( (! _useNminOneCuts) || sources[i] == "rec" ) _elements[nameVtxPlot] = ibooker.book1D(nameVtxPlot.c_str(), titlePu.c_str(), nBinsPu, minPu, maxPu); if( _bookHtPlots ) _elements[nameHtPlot] = ibooker.book1D(nameHtPlot.c_str(), titleHt.c_str(), nBinsHt, minHt, maxHt); for (size_t j = 0 ; j < _hltPathsToCheck.size() ; j++){ //declare the efficiency vs interaction plots @@ -352,7 +352,7 @@ void HLTHiggsSubAnalysis::bookHistograms(DQMStore::IBooker &ibooker) shortpath = path.substr(0, path.rfind("_v")); } std::string titlePassingPu = "nb of interations in the event passing path " + shortpath; - _elements[nameVtxPlot+"_"+shortpath] = ibooker.book1D(nameVtxPlot+"_"+shortpath, titlePassingPu.c_str(), nBinsPu, minPu, maxPu); + if( (! _useNminOneCuts) || sources[i] == "rec" ) _elements[nameVtxPlot+"_"+shortpath] = ibooker.book1D(nameVtxPlot+"_"+shortpath, titlePassingPu.c_str(), nBinsPu, minPu, maxPu); std::string titlePassingHt = "sum of jet pT in the event passing path " + shortpath; if( _bookHtPlots ) _elements[nameHtPlot+"_"+shortpath] = ibooker.book1D(nameHtPlot+"_"+shortpath, titlePassingHt.c_str(), nBinsHt, minHt, maxHt); @@ -678,7 +678,7 @@ void HLTHiggsSubAnalysis::analyze(const edm::Event & iEvent, const edm::EventSet //fill the efficiency vs nb of interactions std::string nameVtxPlot = "trueVtxDist_"+_analysisname+"_"+u2str[it->first]; - _elements[nameVtxPlot]->Fill(nbMCvtx); + if( (! _useNminOneCuts) || it->first == RECO ) _elements[nameVtxPlot]->Fill(nbMCvtx); //fill the efficiency vs sum pT of jets std::string nameHtPlot = "HtDist_"+_analysisname+"_"+u2str[it->first]; @@ -710,7 +710,7 @@ void HLTHiggsSubAnalysis::analyze(const edm::Event & iEvent, const edm::EventSet _elements[SummaryName]->Fill(refOfThePath); if (ispassTrigger) { _elements[SummaryName+"_passingHLT"]->Fill(refOfThePath,1); - _elements[nameVtxPlot+"_"+fillShortPath.c_str()]->Fill(nbMCvtx); + if( (! _useNminOneCuts) || it->first == RECO ) _elements[nameVtxPlot+"_"+fillShortPath.c_str()]->Fill(nbMCvtx); if( _bookHtPlots ) _elements[nameHtPlot+"_"+fillShortPath.c_str()]->Fill(Htmap[it->first]); } else {