diff --git a/HLTriggerOffline/Exotica/interface/HLTExoticaPlotter.h b/HLTriggerOffline/Exotica/interface/HLTExoticaPlotter.h index e5ee645ea1178..86a9b7a64865f 100644 --- a/HLTriggerOffline/Exotica/interface/HLTExoticaPlotter.h +++ b/HLTriggerOffline/Exotica/interface/HLTExoticaPlotter.h @@ -78,6 +78,10 @@ class HLTExoticaPlotter { std::vector _parametersTurnOnSumEt; std::vector _parametersDxy; + // flag to switch off + bool _drop_pt2; + bool _drop_pt3; + std::map _elements; }; #endif diff --git a/HLTriggerOffline/Exotica/interface/HLTExoticaSubAnalysis.h b/HLTriggerOffline/Exotica/interface/HLTExoticaSubAnalysis.h index e0baad8d2192e..7cd78ccbcfdfb 100644 --- a/HLTriggerOffline/Exotica/interface/HLTExoticaSubAnalysis.h +++ b/HLTriggerOffline/Exotica/interface/HLTExoticaSubAnalysis.h @@ -76,6 +76,7 @@ class HLTExoticaSubAnalysis { ~HLTExoticaSubAnalysis(); void beginJob(); void beginRun(const edm::Run & iRun, const edm::EventSetup & iEventSetup); + void endRun(); /// Method to book all relevant histograms in the DQMStore. /// Uses the IBooker interface for thread safety. @@ -150,6 +151,10 @@ class HLTExoticaSubAnalysis { std::vector _parametersTurnOnSumEt; std::vector _parametersDxy; + // flag to switch off + bool _drop_pt2; + bool _drop_pt3; + /// gen/rec objects cuts std::map _genCut; std::map _recCut; @@ -178,6 +183,9 @@ class HLTExoticaSubAnalysis { /// The plotters: managers of each hlt path where the plots are done std::vector _plotters; + /// counting HLT passed events + std::map _triggerCounter; + /// Interface to the HLT information HLTConfigProvider _hltConfig; diff --git a/HLTriggerOffline/Exotica/python/analyses/hltExoticaDiPhoton_cff.py b/HLTriggerOffline/Exotica/python/analyses/hltExoticaDiPhoton_cff.py index b13a3974cfed7..0644f99fb8f99 100644 --- a/HLTriggerOffline/Exotica/python/analyses/hltExoticaDiPhoton_cff.py +++ b/HLTriggerOffline/Exotica/python/analyses/hltExoticaDiPhoton_cff.py @@ -2,11 +2,13 @@ DiPhotonPSet = cms.PSet( hltPathsToCheck = cms.vstring( - "HLT_DoublePho85_v", # Run2 proposal + "HLT_DoublePhoton85_v", # Run2 proposal "HLT_Photon36_R9Id85_OR_CaloId24b40e_Iso50T80L_Photon22_AND_HE10_R9Id65_Eta2_Mass15_v", "HLT_Photon26_R9Id85_OR_CaloId24b40e_Iso50T80L_Photon16_AND_HE10_R9Id65_Eta2_Mass60_v", "HLT_Photon42_R9Id85_OR_CaloId24b40e_Iso50T80L_Photon25_AND_HE10_R9Id65_Eta2_Mass15_v", #50ns backup menu - "HLT_DoublePhoton60_v" + "HLT_DoublePhoton60_v", + "HLT_DoublePhoton40_v", # 0T + "HLT_DoublePhoton50_v" # 0T #"HLT_DoublePhoton70_v" # Run1 (frozenHLT) ), recElecLabel = cms.InputTag("gedGsfElectrons"), @@ -17,4 +19,5 @@ parametersTurnOn = cms.vdouble( 0, 50, 100, 150, 200, 250, 300, 400, 500, 600, 700, 800, 900, 1000, 1100, 1200, 1500 ), + dropPt3 = cms.bool(True), ) diff --git a/HLTriggerOffline/Exotica/python/analyses/hltExoticaDisplacedDimuon_cff.py b/HLTriggerOffline/Exotica/python/analyses/hltExoticaDisplacedDimuon_cff.py index 04e17f74cbe5b..c0cb9213a3f4a 100644 --- a/HLTriggerOffline/Exotica/python/analyses/hltExoticaDisplacedDimuon_cff.py +++ b/HLTriggerOffline/Exotica/python/analyses/hltExoticaDisplacedDimuon_cff.py @@ -17,4 +17,5 @@ 0, 10, 20, 30, 40, 50, 100, 150, 200, 250, 300, 350, 400, 450, 500, 550, 600 ), + dropPt3 = cms.bool(True), ) diff --git a/HLTriggerOffline/Exotica/python/analyses/hltExoticaDisplacedEleMu_cff.py b/HLTriggerOffline/Exotica/python/analyses/hltExoticaDisplacedEleMu_cff.py index be0662d168ff3..9c86498dc39aa 100644 --- a/HLTriggerOffline/Exotica/python/analyses/hltExoticaDisplacedEleMu_cff.py +++ b/HLTriggerOffline/Exotica/python/analyses/hltExoticaDisplacedEleMu_cff.py @@ -22,4 +22,6 @@ 145, 150, 155, 160, 165, 170, 175, 180, 185, 190, 195, 200), + dropPt2 = cms.bool(True), + dropPt3 = cms.bool(True), ) diff --git a/HLTriggerOffline/Exotica/python/analyses/hltExoticaDisplacedL2Dimuon_cff.py b/HLTriggerOffline/Exotica/python/analyses/hltExoticaDisplacedL2Dimuon_cff.py index 008c6dff6af49..7c13cb8bc1202 100644 --- a/HLTriggerOffline/Exotica/python/analyses/hltExoticaDisplacedL2Dimuon_cff.py +++ b/HLTriggerOffline/Exotica/python/analyses/hltExoticaDisplacedL2Dimuon_cff.py @@ -17,4 +17,5 @@ parametersTurnOn = cms.vdouble( 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 60, 70, 80, 100 ), + dropPt3 = cms.bool(True), ) diff --git a/HLTriggerOffline/Exotica/python/analyses/hltExoticaDisplacedMuEG_cff.py b/HLTriggerOffline/Exotica/python/analyses/hltExoticaDisplacedMuEG_cff.py index e0c73ac558b28..f934b35a87b9c 100644 --- a/HLTriggerOffline/Exotica/python/analyses/hltExoticaDisplacedMuEG_cff.py +++ b/HLTriggerOffline/Exotica/python/analyses/hltExoticaDisplacedMuEG_cff.py @@ -31,5 +31,7 @@ #185, 190, 195, 200), 0, 10, 20, 30, 40, 50, 100, 150, 200, 250, 300, 350, 400, 450, 500, 550, 600 - ) + ), + dropPt2 = cms.bool(True), + dropPt3 = cms.bool(True), ) diff --git a/HLTriggerOffline/Exotica/python/analyses/hltExoticaDisplacedMuJet_cff.py b/HLTriggerOffline/Exotica/python/analyses/hltExoticaDisplacedMuJet_cff.py index 3f425aee2de09..7b333dd228e7f 100644 --- a/HLTriggerOffline/Exotica/python/analyses/hltExoticaDisplacedMuJet_cff.py +++ b/HLTriggerOffline/Exotica/python/analyses/hltExoticaDisplacedMuJet_cff.py @@ -27,4 +27,5 @@ parametersTurnOn = cms.vdouble( 100, 150, 200, 250, 300, 350, 400, 450, 500, 550, 600 ), + dropPt3 = cms.bool(True), ) diff --git a/HLTriggerOffline/Exotica/python/analyses/hltExoticaEleMu_cff.py b/HLTriggerOffline/Exotica/python/analyses/hltExoticaEleMu_cff.py index 411fb8db8aa77..cecb46221b53d 100644 --- a/HLTriggerOffline/Exotica/python/analyses/hltExoticaEleMu_cff.py +++ b/HLTriggerOffline/Exotica/python/analyses/hltExoticaEleMu_cff.py @@ -19,4 +19,6 @@ 145, 150, 155, 160, 165, 170, 175, 180, 185, 190, 195, 200), + dropPt2 = cms.bool(True), + dropPt3 = cms.bool(True), ) diff --git a/HLTriggerOffline/Exotica/python/analyses/hltExoticaHT_cff.py b/HLTriggerOffline/Exotica/python/analyses/hltExoticaHT_cff.py index c82eae146e446..9e2af9a08221b 100644 --- a/HLTriggerOffline/Exotica/python/analyses/hltExoticaHT_cff.py +++ b/HLTriggerOffline/Exotica/python/analyses/hltExoticaHT_cff.py @@ -5,7 +5,7 @@ "HLT_PFHT650_WideJetMJJ900DEtaJJ1p5_v", "HLT_PFHT650_WideJetMJJ950DEtaJJ1p5_v", #"HLT_PFHT750_4Jet_v", # Run2 - "HLT_PFHT750_4Jet_Pt50_v", + "HLT_PFHT750_4Jet_v", "HLT_PFHT650_4Jet_v", # Run2 "HLT_PFHT550_4Jet_v", # Run2 #"HLT_PFHT900_v", # Run2 diff --git a/HLTriggerOffline/Exotica/python/analyses/hltExoticaHighPtDielectron_cff.py b/HLTriggerOffline/Exotica/python/analyses/hltExoticaHighPtDielectron_cff.py index 320087b409d6e..3af8b53e35eea 100644 --- a/HLTriggerOffline/Exotica/python/analyses/hltExoticaHighPtDielectron_cff.py +++ b/HLTriggerOffline/Exotica/python/analyses/hltExoticaHighPtDielectron_cff.py @@ -13,4 +13,5 @@ parametersTurnOn = cms.vdouble( 0, 50, 100, 150, 200, 250, 300, 400, 500, 600, 700, 800, 900, 1000, 1100, 1200, 1500 ), + dropPt3 = cms.bool(True), ) diff --git a/HLTriggerOffline/Exotica/python/analyses/hltExoticaHighPtDimuon_cff.py b/HLTriggerOffline/Exotica/python/analyses/hltExoticaHighPtDimuon_cff.py index 9f574f217a7a3..5bcd49f66d458 100644 --- a/HLTriggerOffline/Exotica/python/analyses/hltExoticaHighPtDimuon_cff.py +++ b/HLTriggerOffline/Exotica/python/analyses/hltExoticaHighPtDimuon_cff.py @@ -16,4 +16,5 @@ parametersTurnOn = cms.vdouble( 0, 50, 100, 150, 200, 250, 300, 400, 500, 600, 700, 800, 900, 1000, 1100, 1200, 1500 ), + dropPt3 = cms.bool(True), ) diff --git a/HLTriggerOffline/Exotica/python/analyses/hltExoticaHighPtElectron_cff.py b/HLTriggerOffline/Exotica/python/analyses/hltExoticaHighPtElectron_cff.py index 88938b23f8611..e962e65efb175 100644 --- a/HLTriggerOffline/Exotica/python/analyses/hltExoticaHighPtElectron_cff.py +++ b/HLTriggerOffline/Exotica/python/analyses/hltExoticaHighPtElectron_cff.py @@ -13,4 +13,6 @@ 300, 400, 500, 600, 700, 800, 900, 1000, 1100, 1200, 1500 ), + dropPt2 = cms.bool(True), + dropPt3 = cms.bool(True), ) diff --git a/HLTriggerOffline/Exotica/python/analyses/hltExoticaHighPtPhoton_cff.py b/HLTriggerOffline/Exotica/python/analyses/hltExoticaHighPtPhoton_cff.py index fc299635f97fa..e4d9aa9b88eb5 100644 --- a/HLTriggerOffline/Exotica/python/analyses/hltExoticaHighPtPhoton_cff.py +++ b/HLTriggerOffline/Exotica/python/analyses/hltExoticaHighPtPhoton_cff.py @@ -6,7 +6,8 @@ "HLT_Photon165_HE10_v", # Run2 proposal "HLT_Photon36_R9Id85_OR_CaloId24b40e_Iso50T80L_Photon31_AND_HE10_R9Id65_Mass10_v", # Run2 proposal "HLT_Photon26_R9Id85_OR_CaloId24b40e_Iso50T80L_Photon16_AND_HE10_R9Id65_Mass60_v", # Run2 proposal - "HLT_Photon90_CaloIdL_PFHT600_v" #50ns backup menu + "HLT_Photon90_CaloIdL_PFHT500_v", #50ns backup menu + "HLT_Photon150_v" # 0T #"HLT_Photon135_v" # Run1 (frozenHLT) ), recPhotonLabel = cms.InputTag("gedPhotons"), @@ -17,4 +18,5 @@ 250, 300, 400, 500, 600, 700, 800, 900, 1000, 1100, 1200, 1500 ), + dropPt3 = cms.bool(True), ) diff --git a/HLTriggerOffline/Exotica/python/analyses/hltExoticaLowPtDielectron_cff.py b/HLTriggerOffline/Exotica/python/analyses/hltExoticaLowPtDielectron_cff.py index c47cfdb56d13d..4c0c410cbb7af 100644 --- a/HLTriggerOffline/Exotica/python/analyses/hltExoticaLowPtDielectron_cff.py +++ b/HLTriggerOffline/Exotica/python/analyses/hltExoticaLowPtDielectron_cff.py @@ -13,4 +13,5 @@ parametersTurnOn = cms.vdouble( 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 60, 70, 80, 100 ), + dropPt3 = cms.bool(True), ) diff --git a/HLTriggerOffline/Exotica/python/analyses/hltExoticaLowPtDimuon_cff.py b/HLTriggerOffline/Exotica/python/analyses/hltExoticaLowPtDimuon_cff.py index db9d530ed1e63..f3a686c1f57cc 100644 --- a/HLTriggerOffline/Exotica/python/analyses/hltExoticaLowPtDimuon_cff.py +++ b/HLTriggerOffline/Exotica/python/analyses/hltExoticaLowPtDimuon_cff.py @@ -17,4 +17,5 @@ parametersTurnOn = cms.vdouble( 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 60, 70, 80, 100 ), + dropPt3 = cms.bool(True), ) diff --git a/HLTriggerOffline/Exotica/python/analyses/hltExoticaLowPtElectron_cff.py b/HLTriggerOffline/Exotica/python/analyses/hltExoticaLowPtElectron_cff.py index c3150892f9db2..cd7a1382a7f51 100644 --- a/HLTriggerOffline/Exotica/python/analyses/hltExoticaLowPtElectron_cff.py +++ b/HLTriggerOffline/Exotica/python/analyses/hltExoticaLowPtElectron_cff.py @@ -14,4 +14,5 @@ parametersTurnOn = cms.vdouble( 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 60, 70, 80, 100 ), + dropPt3 = cms.bool(True), ) diff --git a/HLTriggerOffline/Exotica/python/analyses/hltExoticaLowPtTrimuon_cff.py b/HLTriggerOffline/Exotica/python/analyses/hltExoticaLowPtTrimuon_cff.py index 49710d2dc98cf..ac62963769220 100644 --- a/HLTriggerOffline/Exotica/python/analyses/hltExoticaLowPtTrimuon_cff.py +++ b/HLTriggerOffline/Exotica/python/analyses/hltExoticaLowPtTrimuon_cff.py @@ -4,7 +4,7 @@ hltPathsToCheck = cms.vstring( "HLT_TrkMu15_DoubleTrkMu5NoFiltersNoVtx_v", #signal "HLT_TrkMu17_DoubleTrkMu8NoFiltersNoVtx_v", #signal - "HLT_DiMuon0_Jpsi_Muon", # control + "HLT_Dimuon0_Jpsi_Muon_v", # control "HLT_Mu17_TkMu8_DZ", # backup "HLT_Mu17_Mu8_DZ" # backup ), diff --git a/HLTriggerOffline/Exotica/python/analyses/hltExoticaMETplusTrack_cff.py b/HLTriggerOffline/Exotica/python/analyses/hltExoticaMETplusTrack_cff.py index 0d8cf72ecb60b..85de60bb7c170 100644 --- a/HLTriggerOffline/Exotica/python/analyses/hltExoticaMETplusTrack_cff.py +++ b/HLTriggerOffline/Exotica/python/analyses/hltExoticaMETplusTrack_cff.py @@ -5,7 +5,7 @@ #"HLT_MET80_v", # For debugging #"HLT_MET85_Track50_dEdx3p6_v", # For debugging "HLT_MET75_IsoTrk50_v", - "HLT_MET95_IsoTrk50_v", + "HLT_MET90_IsoTrk50_v", "HLT_MET60_IsoTrk35_Loose_v" ), recPFMETLabel = cms.InputTag("pfMet"), @@ -31,5 +31,7 @@ 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400 ), + dropPt2 = cms.bool(True), + dropPt3 = cms.bool(True), ) diff --git a/HLTriggerOffline/Exotica/python/analyses/hltExoticaMonojetBackup_cff.py b/HLTriggerOffline/Exotica/python/analyses/hltExoticaMonojetBackup_cff.py index b525213a37dc3..e50d10a2b510d 100644 --- a/HLTriggerOffline/Exotica/python/analyses/hltExoticaMonojetBackup_cff.py +++ b/HLTriggerOffline/Exotica/python/analyses/hltExoticaMonojetBackup_cff.py @@ -22,4 +22,6 @@ 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600 ), + dropPt2 = cms.bool(True), + dropPt3 = cms.bool(True), ) diff --git a/HLTriggerOffline/Exotica/python/analyses/hltExoticaMonojet_cff.py b/HLTriggerOffline/Exotica/python/analyses/hltExoticaMonojet_cff.py index 207494c652d08..2946fb02224c4 100644 --- a/HLTriggerOffline/Exotica/python/analyses/hltExoticaMonojet_cff.py +++ b/HLTriggerOffline/Exotica/python/analyses/hltExoticaMonojet_cff.py @@ -33,4 +33,6 @@ 320, 340, 360, 380, 400, 420, 440, 460, 480, 500,600,700,800,900,1100,1200, 1400,1600,1800,2000,2200,2400,2600,2800,3000), + dropPt2 = cms.bool(True), + dropPt3 = cms.bool(True), ) diff --git a/HLTriggerOffline/Exotica/python/analyses/hltExoticaMuonNoBptx_cff.py b/HLTriggerOffline/Exotica/python/analyses/hltExoticaMuonNoBptx_cff.py index 780f5410effd8..49d24bc07c6a0 100644 --- a/HLTriggerOffline/Exotica/python/analyses/hltExoticaMuonNoBptx_cff.py +++ b/HLTriggerOffline/Exotica/python/analyses/hltExoticaMuonNoBptx_cff.py @@ -19,4 +19,6 @@ parametersTurnOn = cms.vdouble( 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 60, 70, 80, 100 ), + dropPt2 = cms.bool(True), + dropPt3 = cms.bool(True), ) diff --git a/HLTriggerOffline/Exotica/python/analyses/hltExoticaPhotonMET_cff.py b/HLTriggerOffline/Exotica/python/analyses/hltExoticaPhotonMET_cff.py index 016a83c258d29..972f62255eed7 100644 --- a/HLTriggerOffline/Exotica/python/analyses/hltExoticaPhotonMET_cff.py +++ b/HLTriggerOffline/Exotica/python/analyses/hltExoticaPhotonMET_cff.py @@ -3,7 +3,8 @@ PhotonMETPSet = cms.PSet( hltPathsToCheck = cms.vstring( #"HLT_Photon135_PFMET100_NoiseCleaned_v" - "HLT_Photon135_PFMET100_JetIdCleaned_v" + "HLT_Photon135_PFMET100_JetIdCleaned_v", + "HLT_Photon125_v" # 0T ), recPFMETLabel = cms.InputTag("pfMet"), recPhotonLabel = cms.InputTag("gedPhotons"), @@ -20,4 +21,6 @@ 145, 150, 155, 160, 165, 170, 175, 180, 185, 190, 195, 200), + dropPt2 = cms.bool(True), + dropPt3 = cms.bool(True), ) diff --git a/HLTriggerOffline/Exotica/python/analyses/hltExoticaPureMET_cff.py b/HLTriggerOffline/Exotica/python/analyses/hltExoticaPureMET_cff.py index 0c6feda23f919..73b7aa4a47b5c 100644 --- a/HLTriggerOffline/Exotica/python/analyses/hltExoticaPureMET_cff.py +++ b/HLTriggerOffline/Exotica/python/analyses/hltExoticaPureMET_cff.py @@ -6,9 +6,9 @@ "HLT_PFMET170_HBHECleaned_v", "HLT_PFMET170_JetIdCleaned_v", "HLT_PFMET170_NoiseCleaned_v", # Run2 - #"HLT_CaloMET200_NoiseCleaned_v" - "HLT_MET200_JetIdCleaned_v" - #"HLT_MET120_HBHENoiseCleaned_v" # Run1 + "HLT_MET200_JetIdCleaned_v", + "HLT_MET100_JetIdCleaned_v", # 0T + "HLT_MET150_JetIdCleaned_v" # 0T ), recPFMETLabel = cms.InputTag("pfMet"), recCaloMETLabel = cms.InputTag("caloMet"), diff --git a/HLTriggerOffline/Exotica/python/analyses/hltExoticaSingleMuon_cff.py b/HLTriggerOffline/Exotica/python/analyses/hltExoticaSingleMuon_cff.py index 77071590898a0..f9f0389863b16 100644 --- a/HLTriggerOffline/Exotica/python/analyses/hltExoticaSingleMuon_cff.py +++ b/HLTriggerOffline/Exotica/python/analyses/hltExoticaSingleMuon_cff.py @@ -2,7 +2,7 @@ SingleMuonPSet = cms.PSet( hltPathsToCheck = cms.vstring( - "HLT_Mu45_e2p1_v", # Run 2 + "HLT_Mu45_eta2p1_v", # Run 2 "HLT_Mu50_v", # Run 2 #50ns backup menu "HLT_Mu55_v", @@ -16,4 +16,6 @@ 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 70, 80, 90, 100 ), + dropPt2 = cms.bool(True), + dropPt3 = cms.bool(True), ) diff --git a/HLTriggerOffline/Exotica/src/HLTExoticaPlotter.cc b/HLTriggerOffline/Exotica/src/HLTExoticaPlotter.cc index 15f7aa1582a12..cfca2ac72ff11 100644 --- a/HLTriggerOffline/Exotica/src/HLTExoticaPlotter.cc +++ b/HLTriggerOffline/Exotica/src/HLTExoticaPlotter.cc @@ -28,8 +28,16 @@ HLTExoticaPlotter::HLTExoticaPlotter(const edm::ParameterSet & pset, _parametersPhi(pset.getParameter >("parametersPhi")), _parametersTurnOn(pset.getParameter >("parametersTurnOn")), _parametersTurnOnSumEt(pset.getParameter >("parametersTurnOnSumEt")), - _parametersDxy(pset.getParameter >("parametersDxy")) + _parametersDxy(pset.getParameter >("parametersDxy")), + _drop_pt2(false), + _drop_pt3(false) { + if (pset.exists("dropPt2")) { + _drop_pt2 = pset.getParameter("dropPt2"); + } + if (pset.exists("dropPt3")) { + _drop_pt3 = pset.getParameter("dropPt3"); + } LogDebug("ExoticaValidation") << "In HLTExoticaPlotter::constructor()"; } @@ -67,8 +75,8 @@ void HLTExoticaPlotter::plotterBookHistos(DQMStore::IBooker & iBooker, continue; } else { bookHist(iBooker, source, objTypeStr, "MaxPt1"); - bookHist(iBooker, source, objTypeStr, "MaxPt2"); - bookHist(iBooker, source, objTypeStr, "MaxPt3"); + if (!_drop_pt2) bookHist(iBooker, source, objTypeStr, "MaxPt2"); + if (!_drop_pt3) bookHist(iBooker, source, objTypeStr, "MaxPt3"); bookHist(iBooker, source, objTypeStr, "Eta"); bookHist(iBooker, source, objTypeStr, "Phi"); @@ -86,8 +94,8 @@ void HLTExoticaPlotter::plotterBookHistos(DQMStore::IBooker & iBooker, bookHist(iBooker, source, objTypeStr, "SumEt"); } else { bookHist(iBooker, source, objTypeStr, "MaxPt1"); - bookHist(iBooker, source, objTypeStr, "MaxPt2"); - bookHist(iBooker, source, objTypeStr, "MaxPt3"); + if (!_drop_pt2) bookHist(iBooker, source, objTypeStr, "MaxPt2"); + if (!_drop_pt3) bookHist(iBooker, source, objTypeStr, "MaxPt3"); bookHist(iBooker, source, objTypeStr, "Eta"); bookHist(iBooker, source, objTypeStr, "Phi"); @@ -125,7 +133,10 @@ void HLTExoticaPlotter::analyze(const bool & isPassTrigger, int counttotal = 0; // 3 : pt1, pt2, pt3 - const int totalobjectssize3 = 3 * countobjects.size(); + int totalobjectssize = 1; + if (!_drop_pt2) totalobjectssize++; + if (!_drop_pt3) totalobjectssize++; + totalobjectssize *= countobjects.size(); // Fill the histos if pass the trigger (just the two with higher pt) for (size_t j = 0; j < matches.size(); ++j) { // Is this object owned by this trigger? If not we are not interested... @@ -161,7 +172,7 @@ void HLTExoticaPlotter::analyze(const bool & isPassTrigger, ++(countobjects[objType]); ++counttotal; } - else if (countobjects[objType] == 1) { + else if (countobjects[objType] == 1 && !_drop_pt2) { if( !( TString(objTypeStr).Contains("MET") || TString(objTypeStr).Contains("MHT") ) ) { this->fillHist(isPassTrigger, source, objTypeStr, "MaxPt2", pt); } @@ -169,7 +180,7 @@ void HLTExoticaPlotter::analyze(const bool & isPassTrigger, ++(countobjects[objType]); ++counttotal; } - else if (countobjects[objType] == 2) { + else if (countobjects[objType] == 2 && !_drop_pt3) { if( !( TString(objTypeStr).Contains("MET") || TString(objTypeStr).Contains("MHT") ) ) { this->fillHist(isPassTrigger, source, objTypeStr, "MaxPt3", pt); } @@ -178,7 +189,7 @@ void HLTExoticaPlotter::analyze(const bool & isPassTrigger, ++counttotal; } else { - if (counttotal == totalobjectssize3) { + if (counttotal == totalobjectssize) { break; } } diff --git a/HLTriggerOffline/Exotica/src/HLTExoticaSubAnalysis.cc b/HLTriggerOffline/Exotica/src/HLTExoticaSubAnalysis.cc index e974160260f2d..5e78629ebea5a 100644 --- a/HLTriggerOffline/Exotica/src/HLTExoticaSubAnalysis.cc +++ b/HLTriggerOffline/Exotica/src/HLTExoticaSubAnalysis.cc @@ -40,6 +40,8 @@ HLTExoticaSubAnalysis::HLTExoticaSubAnalysis(const edm::ParameterSet & pset, _parametersTurnOn(pset.getParameter >("parametersTurnOn")), _parametersTurnOnSumEt(pset.getParameter >("parametersTurnOnSumEt")), _parametersDxy(pset.getParameter >("parametersDxy")), + _drop_pt2(false), + _drop_pt3(false), _recMuonSelector(0), _recMuonTrkSelector(0), _recTrackSelector(0), @@ -85,6 +87,14 @@ HLTExoticaSubAnalysis::HLTExoticaSubAnalysis(const edm::ParameterSet & pset, _parametersTurnOnSumEt = anpset.getParameter >("parametersTurnOnSumEt"); _pset.insert(true, "parametersTurnOnSumEt", anpset.retrieve("parametersTurnOnSumEt")); } + if (anpset.exists("dropPt2")) { + _drop_pt2 = anpset.getParameter("dropPt2"); + _pset.insert(true, "dropPt2", anpset.retrieve("dropPt2")); + } + if (anpset.exists("dropPt3")) { + _drop_pt3 = anpset.getParameter("dropPt3"); + _pset.insert(true, "dropPt3", anpset.retrieve("dropPt3")); + } // Get names of objects that we may want to get from the event. // Notice that genParticles are dealt with separately. @@ -216,8 +226,8 @@ void HLTExoticaSubAnalysis::subAnalysisBookHistos(DQMStore::IBooker &iBooker, continue; } else { bookHist(iBooker, source, objStr, "MaxPt1"); - bookHist(iBooker, source, objStr, "MaxPt2"); - bookHist(iBooker, source, objStr, "MaxPt3"); + if (!_drop_pt2) bookHist(iBooker, source, objStr, "MaxPt2"); + if (!_drop_pt3) bookHist(iBooker, source, objStr, "MaxPt3"); bookHist(iBooker, source, objStr, "Eta"); bookHist(iBooker, source, objStr, "Phi"); @@ -235,8 +245,8 @@ void HLTExoticaSubAnalysis::subAnalysisBookHistos(DQMStore::IBooker &iBooker, bookHist(iBooker, source, objStr, "SumEt"); } else { bookHist(iBooker, source, objStr, "MaxPt1"); - bookHist(iBooker, source, objStr, "MaxPt2"); - bookHist(iBooker, source, objStr, "MaxPt3"); + if (!_drop_pt2) bookHist(iBooker, source, objStr, "MaxPt2"); + if (!_drop_pt3) bookHist(iBooker, source, objStr, "MaxPt3"); bookHist(iBooker, source, objStr, "Eta"); bookHist(iBooker, source, objStr, "Phi"); @@ -290,7 +300,7 @@ void HLTExoticaSubAnalysis::beginRun(const edm::Run & iRun, const edm::EventSetu found = true; } if(verbose>2 && i==0) - std::cout << "--- TRIGGER PATH : " << thetriggername << std::endl; + LogDebug("ExoticaValidation") << "--- TRIGGER PATH : " << thetriggername; } // Oh dear, the path we wanted seems to not be available @@ -360,6 +370,8 @@ void HLTExoticaSubAnalysis::beginRun(const edm::Run & iRun, const edm::EventSetu // needed to evaluate the path are the argumens of the plotter HLTExoticaPlotter analyzer(_pset, shortpath, objsNeedHLT); _plotters.push_back(analyzer); + // counting HLT passed events for debug + _triggerCounter.insert(std::map::value_type(shortpath,0)); }// Okay, at this point we have prepared all the plotters. } @@ -369,7 +381,6 @@ void HLTExoticaSubAnalysis::analyze(const edm::Event & iEvent, const edm::EventS { LogDebug("ExoticaValidation") << "In HLTExoticaSubAnalysis::analyze()"; - if(verbose>2) std::cerr << "### Category : " << _analysisname << std::endl; // Loop over _recLabels to make sure everything is alright. /* std::cout << "Now printing the _recLabels" << std::endl; @@ -445,7 +456,7 @@ void HLTExoticaSubAnalysis::analyze(const edm::Event & iEvent, const edm::EventS // --- same for RECO objects // Extraction of the objects candidates - if(verbose>0) std::cout << "-- enter loop over recLabels" << std::endl; + if(verbose>0) LogDebug("ExoticaValidation") << "-- enter loop over recLabels" ; for (std::map::iterator it = _recLabels.begin(); it != _recLabels.end(); ++it) { //std::cout << "Filling RECO \"matchesReco\" vector for particle kind it->first = " @@ -455,8 +466,8 @@ void HLTExoticaSubAnalysis::analyze(const edm::Event & iEvent, const edm::EventS this->initSelector(it->first); // -- Storing the matchesReco this->insertCandidates(it->first, cols, &matchesReco, theSumEt, trkObjs); - if(verbose>0) std::cout << "--- " << EVTColContainer::getTypeString(it->first) - << " sumEt=" << theSumEt[it->first] << std::endl; + if(verbose>0) LogDebug("ExoticaValidation") << "--- " << EVTColContainer::getTypeString(it->first) + << " sumEt=" << theSumEt[it->first] ; } // std::sort(matchesReco.begin(), @@ -466,6 +477,13 @@ void HLTExoticaSubAnalysis::analyze(const edm::Event & iEvent, const edm::EventS // -- Trigger Results const edm::TriggerNames trigNames = iEvent.triggerNames(*(cols->triggerResults)); + // counting HLT passed events for debugging + for (std::vector::iterator an = _plotters.begin(); an != _plotters.end(); ++an) { + const std::string hltPath = _shortpath2long[an->gethltpath()]; + const bool ispassTrigger = cols->triggerResults->accept(trigNames.triggerIndex(hltPath)); + if (ispassTrigger) _triggerCounter.find(an->gethltpath())->second++; + } + /// Filling the histograms if pass the minimum amount of candidates needed by the analysis: //for (std::map >::iterator it = sourceMatchMap.begin(); it != sourceMatchMap.end(); ++it) { @@ -478,7 +496,6 @@ void HLTExoticaSubAnalysis::analyze(const edm::Event & iEvent, const edm::EventS //////////////// /// GEN CASE /// //////////////// - if(verbose>2) std::cerr << "### matchesGen.size() = " << matchesGen.size() << std::endl; if( matchesGen.size() >= _minCandidates) { // FIXME: A bug is potentially here: what about the mixed channels? // Okay, there are enough candidates. Move on! @@ -501,7 +518,10 @@ void HLTExoticaSubAnalysis::analyze(const edm::Event & iEvent, const edm::EventS int counttotal = 0; // 3 : pt1, pt2, pt3 - int totalobjectssize3 = 3 * countobjects.size(); + int totalobjectssize = 1; + if (!_drop_pt2) totalobjectssize++; + if (!_drop_pt3) totalobjectssize++; + totalobjectssize *= countobjects.size(); bool isPassedLeadingCut = true; @@ -531,19 +551,19 @@ void HLTExoticaSubAnalysis::analyze(const edm::Event & iEvent, const edm::EventS ++(countobjects[objType]); ++counttotal; } - else if (countobjects[objType] == 1) { + else if (countobjects[objType] == 1 && !_drop_pt2) { this->fillHist("gen", objTypeStr, "MaxPt2", pt); ++(countobjects[objType]); ++counttotal; } - else if (countobjects[objType] == 2) { + else if (countobjects[objType] == 2 && !_drop_pt3) { this->fillHist("gen", objTypeStr, "MaxPt3", pt); ++(countobjects[objType]); ++counttotal; } else { // Already the minimum three objects has been filled, get out... - if (counttotal == totalobjectssize3) { + if (counttotal == totalobjectssize) { size_t max_size = matchesGen.size(); for ( size_t jj = j; jj < max_size; jj++ ) { matchesGen.erase(matchesGen.end()); @@ -559,7 +579,7 @@ void HLTExoticaSubAnalysis::analyze(const edm::Event & iEvent, const edm::EventS this->fillHist("gen", objTypeStr, "Phi", phi); // If the target is electron or muon, - // we will add Dxy plots. + if ( objType == EVTColContainer::MUON || objType == EVTColContainer::ELEC ) { const math::XYZPoint & vtx = matchesGen[j].vertex(); @@ -585,7 +605,6 @@ void HLTExoticaSubAnalysis::analyze(const edm::Event & iEvent, const edm::EventS ///////////////// /// RECO CASE /// ///////////////// - if(verbose>2) std::cerr << "### matchesReco.size() = " << matchesReco.size() << std::endl; { if(matchesReco.size() < _minCandidates) return; // FIXME: A bug is potentially here: what about the mixed channels? @@ -610,7 +629,10 @@ void HLTExoticaSubAnalysis::analyze(const edm::Event & iEvent, const edm::EventS int counttotal = 0; // 3 : pt1, pt2, pt3 - int totalobjectssize3 = 3 * countobjects.size(); + int totalobjectssize = 1; + if (!_drop_pt2) totalobjectssize++; + if (!_drop_pt3) totalobjectssize++; + totalobjectssize *= countobjects.size(); /// Debugging. //std::cout << "Our RECO vector has matchesReco.size() = " << matchesReco.size() << std::endl; @@ -642,14 +664,14 @@ void HLTExoticaSubAnalysis::analyze(const edm::Event & iEvent, const edm::EventS ++(countobjects[objType]); ++counttotal; } - else if (countobjects[objType] == 1) { + else if (countobjects[objType] == 1 && !_drop_pt2) { if( ! ( TString(objTypeStr).Contains("MET") || TString(objTypeStr).Contains("MHT") ) ) { this->fillHist("rec", objTypeStr, "MaxPt2", pt); } ++(countobjects[objType]); ++counttotal; } - else if (countobjects[objType] == 2) { + else if (countobjects[objType] == 2 && !_drop_pt3) { if( ! ( TString(objTypeStr).Contains("MET") || TString(objTypeStr).Contains("MHT") ) ) { this->fillHist("rec", objTypeStr, "MaxPt3", pt); } @@ -658,7 +680,7 @@ void HLTExoticaSubAnalysis::analyze(const edm::Event & iEvent, const edm::EventS } else { // Already the minimum three objects has been filled, get out... - if (counttotal == totalobjectssize3) { + if (counttotal == totalobjectssize) { size_t max_size = matchesReco.size(); for ( size_t jj = j; jj < max_size; jj++ ) { matchesReco.erase(matchesReco.end()); @@ -1282,3 +1304,20 @@ void HLTExoticaSubAnalysis::insertCandidates(const unsigned int & objType, const FIXME: ERROR NOT IMPLEMENTED }*/ } + +void HLTExoticaSubAnalysis::endRun() { + // Dump trigger results + std::stringstream log; + log << std::endl; + log << "===========================================================================" << std::endl; + log << " Trigger Results ( " << _analysisname << " ) " << std::endl; + log << "===========================================================================" << std::endl; + log << std::setw(18) << "# of passed events : HLT path names" << std::endl; + log << "-------------------:-------------------------------------------------------" << std::endl; + for (std::map::iterator it = _triggerCounter.begin(); + it != _triggerCounter.end(); ++it) { + log << std::setw(18) << it->second << " : " << it->first << std::endl; + } + log << "===========================================================================" << std::endl; + LogDebug("ExoticaValidation") << log.str().data(); +} diff --git a/HLTriggerOffline/Exotica/src/HLTExoticaValidator.cc b/HLTriggerOffline/Exotica/src/HLTExoticaValidator.cc index 17846dc8456d7..603b3d0237c0f 100644 --- a/HLTriggerOffline/Exotica/src/HLTExoticaValidator.cc +++ b/HLTriggerOffline/Exotica/src/HLTExoticaValidator.cc @@ -109,6 +109,10 @@ void HLTExoticaValidator::beginJob() void HLTExoticaValidator::endRun(const edm::Run & iRun, const edm::EventSetup& iSetup) { + for (std::vector::iterator iter = _analyzers.begin(); + iter != _analyzers.end(); ++iter) { + iter->endRun(); + } }