11 #include "TLorentzVector.h" 15 {
"nVertex", PlotConfig::nVertex},
16 {
"ETvsET", PlotConfig::ETvsET},
17 {
"PHIvsPHI", PlotConfig::PHIvsPHI}
27 thePFMETNoMuCollection_(consumes<
reco::
PFMETCollection>(ps.getParameter<
edm::InputTag>(
"pfMETNoMuCollection"))),
29 theBSCollection_(consumes<
reco::
BeamSpot>(ps.getParameter<
edm::InputTag>(
"beamSpotCollection"))),
30 triggerInputTag_(consumes<
trigger::TriggerEvent>(ps.getParameter<
edm::InputTag>(
"triggerInputTag"))),
31 triggerResultsInputTag_(consumes<
edm::TriggerResults>(ps.getParameter<
edm::InputTag>(
"triggerResults"))),
32 triggerProcess_(ps.getParameter<
std::
string>(
"triggerProcess")),
33 triggerNames_(ps.getParameter<
std::vector<
std::
string>>(
"triggerNames")),
34 histFolderEtSum_(ps.getParameter<
std::
string>(
"histFolderEtSum")),
35 histFolderJet_(ps.getParameter<
std::
string>(
"histFolderJet")),
36 efficiencyFolderEtSum_(histFolderEtSum_ +
"/efficiency_raw"),
37 efficiencyFolderJet_(histFolderJet_ +
"/efficiency_raw"),
38 stage2CaloLayer2JetToken_(
40 stage2CaloLayer2EtSumToken_(
42 jetEfficiencyThresholds_(ps.getParameter<
std::vector<double>>(
"jetEfficiencyThresholds")),
43 metEfficiencyThresholds_(ps.getParameter<
std::vector<double>>(
"metEfficiencyThresholds")),
44 mhtEfficiencyThresholds_(ps.getParameter<
std::vector<double>>(
"mhtEfficiencyThresholds")),
45 ettEfficiencyThresholds_(ps.getParameter<
std::vector<double>>(
"ettEfficiencyThresholds")),
46 httEfficiencyThresholds_(ps.getParameter<
std::vector<double>>(
"httEfficiencyThresholds")),
47 jetEfficiencyBins_(ps.getParameter<
std::vector<double>>(
"jetEfficiencyBins")),
48 metEfficiencyBins_(ps.getParameter<
std::vector<double>>(
"metEfficiencyBins")),
49 mhtEfficiencyBins_(ps.getParameter<
std::vector<double>>(
"mhtEfficiencyBins")),
50 ettEfficiencyBins_(ps.getParameter<
std::vector<double>>(
"ettEfficiencyBins")),
51 httEfficiencyBins_(ps.getParameter<
std::vector<double>>(
"httEfficiencyBins")),
52 recoHTTMaxEta_(ps.getParameter<double>(
"recoHTTMaxEta")),
53 recoMHTMaxEta_(ps.getParameter<double>(
"recoMHTMaxEta")),
62 h_L1ETMHFvsCaloETMHF_(),
63 h_L1METvsPFMetNoMu_(),
67 h_L1METPhivsCaloMETPhi_(),
68 h_L1ETMHFPhivsCaloETMHFPhi_(),
69 h_L1METPhivsPFMetNoMuPhi_(),
70 h_L1MHTPhivsRecoMHTPhi_(),
73 h_resolutionPFMetNoMu_(),
77 h_resolutionMETPhi_(),
78 h_resolutionETMHFPhi_(),
79 h_resolutionPFMetNoMuPhi_(),
80 h_resolutionMHTPhi_(),
81 h_efficiencyMET_pass_(),
82 h_efficiencyETMHF_pass_(),
83 h_efficiencyPFMetNoMu_pass_(),
84 h_efficiencyMHT_pass_(),
85 h_efficiencyETT_pass_(),
86 h_efficiencyHTT_pass_(),
87 h_efficiencyMET_total_(),
88 h_efficiencyETMHF_total_(),
89 h_efficiencyPFMetNoMu_total_(),
90 h_efficiencyMHT_total_(),
91 h_efficiencyETT_total_(),
92 h_efficiencyHTT_total_(),
93 h_L1JetETvsPFJetET_HB_(),
94 h_L1JetETvsPFJetET_HE_(),
95 h_L1JetETvsPFJetET_HF_(),
96 h_L1JetETvsPFJetET_HB_HE_(),
97 h_L1JetPhivsPFJetPhi_HB_(),
98 h_L1JetPhivsPFJetPhi_HE_(),
99 h_L1JetPhivsPFJetPhi_HF_(),
100 h_L1JetPhivsPFJetPhi_HB_HE_(),
101 h_L1JetEtavsPFJetEta_(),
102 h_resolutionJetET_HB_(),
103 h_resolutionJetET_HE_(),
104 h_resolutionJetET_HF_(),
105 h_resolutionJetET_HB_HE_(),
106 h_resolutionJetPhi_HB_(),
107 h_resolutionJetPhi_HE_(),
108 h_resolutionJetPhi_HF_(),
109 h_resolutionJetPhi_HB_HE_(),
110 h_resolutionJetEta_(),
111 h_efficiencyJetEt_HB_pass_(),
112 h_efficiencyJetEt_HE_pass_(),
113 h_efficiencyJetEt_HF_pass_(),
114 h_efficiencyJetEt_HB_HE_pass_(),
115 h_efficiencyJetEt_HB_total_(),
116 h_efficiencyJetEt_HE_total_(),
117 h_efficiencyJetEt_HF_total_(),
118 h_efficiencyJetEt_HB_HE_total_()
120 edm::LogInfo(
"L1TStage2CaloLayer2Offline") <<
"Constructor " 121 <<
"L1TStage2CaloLayer2Offline::L1TStage2CaloLayer2Offline " 130 edm::LogInfo(
"L1TStage2CaloLayer2Offline") <<
"Destructor L1TStage2CaloLayer2Offline::~L1TStage2CaloLayer2Offline " 139 <<
"L1TStage2CaloLayer2Offline::beginRun" << std::endl;
143 <<
" HLT config extraction failure with process name " 155 edm::LogInfo(
"L1TStage2CaloLayer2Offline") <<
"L1TStage2CaloLayer2Offline::bookHistograms" << std::endl;
165 edm::LogInfo(
"L1TStage2CaloLayer2Offline") <<
"L1TStage2CaloLayer2Offline::analyze" << std::endl;
169 if (!triggerResultHandle.
isValid()) {
170 edm::LogWarning(
"L1TStage2CaloLayer2Offline") <<
"invalid edm::TriggerResults handle" << std::endl;
177 if (!triggerEventHandle.
isValid()) {
178 edm::LogWarning(
"L1TStage2CaloLayer2Offline") <<
"invalid trigger::TriggerEvent handle" << std::endl;
186 edm::LogWarning(
"L1TStage2CaloLayer2Offline") <<
"invalid collection: vertex " << std::endl;
190 unsigned int nVertex = vertexHandle->size();
219 edm::LogWarning(
"L1TStage2CaloLayer2Offline") <<
"invalid collection: PF jets " << std::endl;
223 edm::LogWarning(
"L1TStage2CaloLayer2Offline") <<
"invalid collection: Offline E_{T}^{miss} " << std::endl;
227 edm::LogWarning(
"L1TStage2CaloLayer2Offline") <<
"invalid collection: Offline E_{T}^{miss} (HF) " << std::endl;
231 edm::LogWarning(
"L1TStage2CaloLayer2Offline") <<
"invalid collection: Offline PF E_{T}^{miss} No Mu" << std::endl;
235 edm::LogWarning(
"L1TStage2CaloLayer2Offline") <<
"invalid collection: L1 ET sums " << std::endl;
239 int bunchCrossing = 0;
244 double l1ETMHFPhi(0);
250 for (
auto etSum = l1EtSums->
begin(bunchCrossing); etSum != l1EtSums->
end(bunchCrossing); ++etSum) {
251 double et = etSum->et();
252 double phi = etSum->phi();
254 switch (etSum->getType()) {
278 double recoMET(caloMETs->front().et());
279 double recoMETPhi(caloMETs->front().phi());
280 double recoETMHF(caloETMHFs->front().et());
281 double recoETMHFPhi(caloETMHFs->front().phi());
282 double recoPFMetNoMu(pfMETNoMus->front().et());
283 double recoPFMetNoMuPhi(pfMETNoMus->front().phi());
285 double recoMHTPhi(0);
286 double recoETT(caloMETs->front().sumEt());
289 TVector2 mht(0., 0.);
291 for (
auto jet = pfJets->begin();
jet != pfJets->end(); ++
jet) {
292 double et =
jet->et();
296 TVector2 jetVec(et *
cos(
jet->phi()), et *
sin(
jet->phi()));
306 recoMHTPhi = TVector2::Phi_mpi_pi(mht.Phi());
309 double outOfBounds = 9999;
311 double resolutionMET = recoMET > 0 ? (l1MET - recoMET) / recoMET : outOfBounds;
314 double resolutionETMHF = recoETMHF > 0 ? (l1ETMHF - recoETMHF) / recoETMHF : outOfBounds;
315 double resolutionETMHFPhi =
reco::deltaPhi(l1ETMHFPhi, recoETMHFPhi);
317 double resolutionPFMetNoMu = recoETMHF > 0 ? (l1MET - recoPFMetNoMu) / recoPFMetNoMu : outOfBounds;
318 double resolutionPFMetNoMuPhi =
reco::deltaPhi(l1METPhi, recoPFMetNoMuPhi);
320 double resolutionMHT = recoMHT > 0 ? (l1MHT - recoMHT) / recoMHT : outOfBounds;
323 double resolutionETT = recoETT > 0 ? (l1ETT - recoETT) / recoETT : outOfBounds;
324 double resolutionHTT = recoHTT > 0 ? (l1HTT - recoHTT) / recoHTT : outOfBounds;
357 if (resolutionMHT < outOfBounds){
360 if(resolutionHTT < outOfBounds){
374 if (l1MET > threshold){
383 if (l1MHT > threshold)
389 if (l1ETT > threshold)
395 if (l1HTT > threshold)
410 edm::LogWarning(
"L1TStage2CaloLayer2Offline") <<
"invalid collection: PF jets " << std::endl;
414 edm::LogWarning(
"L1TStage2CaloLayer2Offline") <<
"invalid collection: L1 jets " << std::endl;
418 if (pfJets->empty()) {
419 LogDebug(
"L1TStage2CaloLayer2Offline") <<
"no PF jets found" << std::endl;
423 auto leadingRecoJet = pfJets->front();
426 double minDeltaR = 0.3;
428 bool foundMatch =
false;
431 int bunchCrossing = 0;
432 for (
auto jet = l1Jets->
begin(bunchCrossing);
jet != l1Jets->
end(bunchCrossing); ++
jet) {
433 double currentDeltaR =
deltaR(
jet->eta(),
jet->phi(), leadingRecoJet.eta(), leadingRecoJet.phi());
434 if (currentDeltaR >= minDeltaR) {
437 minDeltaR = currentDeltaR;
447 LogDebug(
"L1TStage2CaloLayer2Offline") <<
"Could not find a matching L1 Jet " << std::endl;
454 double recoEt = leadingRecoJet.et();
455 double recoEta = leadingRecoJet.eta();
456 double recoPhi = leadingRecoJet.phi();
458 double outOfBounds = 9999;
459 double l1Et = foundMatch ? closestL1Jet.
et() : 0;
460 double l1Eta = foundMatch ? closestL1Jet.
eta() : outOfBounds;
461 double l1Phi = foundMatch ? closestL1Jet.
phi() : outOfBounds;
463 double resolutionEt = recoEt > 0 ? (l1Et - recoEt) / recoEt : outOfBounds;
464 double resolutionEta = l1Eta - recoEta;
465 double resolutionPhi = l1Phi < outOfBounds ?
reco::deltaPhi(l1Phi, recoPhi) : outOfBounds;
495 }
else if (
std::abs(recoEta) <= 3.0) {
523 const double &recoEta) {
529 if (l1Et > threshold) {
534 }
else if (
std::abs(recoEta) <= 3.0) {
538 if (l1Et > threshold) {
546 if (l1Et > threshold) {
558 edm::LogInfo(
"L1TStage2CaloLayer2Offline") <<
"L1TStage2CaloLayer2Offline::endRun" << std::endl;
581 h_controlPlots_[ControlPlots::L1MET] = ibooker.
book1D(
"L1MET",
"L1 E_{T}^{miss}; L1 E_{T}^{miss} (GeV); events", 500,
584 "L1 E_{T}^{miss} (HF); L1 E_{T}^{miss} (HF) (GeV); events", 500, -0.5, 4999.5);
585 h_controlPlots_[ControlPlots::L1MHT] = ibooker.
book1D(
"L1MHT",
"L1 MHT; L1 MHT (GeV); events", 500, -0.5, 4999.5);
586 h_controlPlots_[ControlPlots::L1ETT] = ibooker.
book1D(
"L1ETT",
"L1 ETT; L1 ETT (GeV); events", 500, -0.5, 4999.5);
587 h_controlPlots_[ControlPlots::L1HTT] = ibooker.
book1D(
"L1HTT",
"L1 HTT; L1 HTT (GeV); events", 500, -0.5, 4999.5);
590 "Offline E_{T}^{miss}; Offline E_{T}^{miss} (GeV); events", 500, -0.5, 4999.5);
592 "Offline E_{T}^{miss} (HF); Offline E_{T}^{miss} (HF) (GeV); events", 500, -0.5, 4999.5);
594 "Offline E_{T}^{miss} (PFMetNoMu); Offline E_{T}^{miss} (PFMetNoMu) (GeV); events", 500, -0.5, 4999.5);
595 h_controlPlots_[ControlPlots::OfflineMHT] = ibooker.
book1D(
"OfflineMHT",
"Offline MHT; Offline MHT (GeV); events",
597 h_controlPlots_[ControlPlots::OfflineETT] = ibooker.
book1D(
"OfflineETT",
"Offline ETT; Offline ETT (GeV); events",
599 h_controlPlots_[ControlPlots::OfflineHTT] = ibooker.
book1D(
"OfflineHTT",
"Offline HTT; Offline HTT (GeV); events",
605 "L1 E_{T}^{miss} vs Offline E_{T}^{miss};Offline E_{T}^{miss} (GeV);L1 E_{T}^{miss} (GeV)",
608 "L1 E_{T}^{miss} vs Offline E_{T}^{miss} (HF);Offline E_{T}^{miss} (HF) (GeV);L1 E_{T}^{miss} (HF) (GeV)",
611 "L1 E_{T}^{miss} vs Offline E_{T}^{miss} (PFMetNoMu);Offline E_{T}^{miss} (PFMetNoMu) (GeV);L1 E_{T}^{miss} (GeV)",
618 "L1 Total H_{T} vs Offline Total H_{T};Offline Total H_{T} (GeV);L1 Total H_{T} (GeV)",
623 "L1 E_{T}^{miss} #phi vs Offline E_{T}^{miss} #phi;Offline E_{T}^{miss} #phi;L1 E_{T}^{miss} #phi",
624 templatePHIvsPHI.
nbinsX, templatePHIvsPHI.
xmin, templatePHIvsPHI.
xmax,
625 templatePHIvsPHI.
nbinsY, templatePHIvsPHI.
ymin, templatePHIvsPHI.
ymax);
627 "L1 E_{T}^{miss} #phi vs Offline E_{T}^{miss} (HF) #phi;Offline E_{T}^{miss} (HF) #phi;L1 E_{T}^{miss} #phi",
628 templatePHIvsPHI.
nbinsX, templatePHIvsPHI.
xmin, templatePHIvsPHI.
xmax,
629 templatePHIvsPHI.
nbinsY, templatePHIvsPHI.
ymin, templatePHIvsPHI.
ymax);
631 "L1 E_{T}^{miss} #phi vs Offline E_{T}^{miss} (PFMetNoMu) #phi;Offline E_{T}^{miss} (PFMetNoMu) #phi;L1 E_{T}^{miss} #phi",
632 templatePHIvsPHI.
nbinsX, templatePHIvsPHI.
xmin, templatePHIvsPHI.
xmax,
633 templatePHIvsPHI.
nbinsY, templatePHIvsPHI.
ymin, templatePHIvsPHI.
ymax);
635 "L1 MHT #phi vs reco MHT #phi;reco MHT #phi;L1 MHT #phi",
636 templatePHIvsPHI.
nbinsX, templatePHIvsPHI.
xmin, templatePHIvsPHI.
xmax,
637 templatePHIvsPHI.
nbinsY, templatePHIvsPHI.
ymin, templatePHIvsPHI.
ymax);
641 "MET resolution; (L1 E_{T}^{miss} - Offline E_{T}^{miss})/Offline E_{T}^{miss}; events", 70, -1.0, 2.5);
643 "MET resolution (HF); (L1 E_{T}^{miss} - Offline E_{T}^{miss})/Offline E_{T}^{miss} (HF); events", 70, -1.0, 2.5);
645 "PFMetNoMu resolution; (L1 E_{T}^{miss} - Offline E_{T}^{miss})/Offline E_{T}^{miss} (PFMetNoMu); events", 70, -1.0, 2.5);
646 h_resolutionMHT_ = ibooker.
book1D(
"resolutionMHT",
"MHT resolution; (L1 MHT - reco MHT)/reco MHT; events", 70, -1.0, 2.5);
647 h_resolutionETT_ = ibooker.
book1D(
"resolutionETT",
"ETT resolution; (L1 ETT - calo ETT)/calo ETT; events", 70, -1.0, 2.5);
649 "HTT resolution; (L1 Total H_{T} - Offline Total H_{T})/Offline Total H_{T}; events", 70, -1.0, 2.5);
652 "MET #phi resolution; (L1 E_{T}^{miss} #phi - reco MET #phi); events", 200, -1, 1);
654 "MET #phi resolution (HF); (L1 E_{T}^{miss} #phi - reco MET #phi) (HF); events", 200, -1, 1);
656 "MET #phi resolution (PFMetNoMu); (L1 E_{T}^{miss} #phi - reco MET #phi) (PFMetNoMu); events", 200, -1, 1);
658 "MET #phi resolution; (L1 MHT #phi - reco MHT #phi); events", 200, -1, 1);
671 "MET efficiency (numerator); Offline E_{T}^{miss} (GeV);", metBins.size() - 1, &(metBins[0]));
673 "MET efficiency (denominator); Offline E_{T}^{miss} (GeV);", metBins.size() - 1, &(metBins[0]));
676 "MET efficiency (numerator); Offline E_{T}^{miss} (GeV) (HF);", metBins.size() - 1, &(metBins[0]));
678 "MET efficiency (denominator); Offline E_{T}^{miss} (GeV) (HF);", metBins.size() - 1, &(metBins[0]));
681 "MET efficiency (numerator); Offline E_{T}^{miss} (GeV) (PFMetNoMu);", metBins.size() - 1, &(metBins[0]));
683 "MET efficiency (denominator); Offline E_{T}^{miss} (GeV) (PFMetNoMu);", metBins.size() - 1, &(metBins[0]));
689 "MHT efficiency (numerator); Offline MHT (GeV);", mhtBins.size() - 1, &(mhtBins[0]));
691 "MHT efficiency (denominator); Offline MHT (GeV);", mhtBins.size() - 1, &(mhtBins[0]));
697 "ETT efficiency (numerator); Offline ETT (GeV);", ettBins.size() - 1, &(ettBins[0]));
699 "ETT efficiency (denominator); Offline ETT (GeV);", ettBins.size() - 1, &(ettBins[0]));
704 "HTT efficiency (numerator); Offline Total H_{T} (GeV);", httBins.size() - 1, &(httBins[0]));
706 "HTT efficiency (denominator); Offline Total H_{T} (GeV);", httBins.size() - 1, &(httBins[0]));
717 h_controlPlots_[ControlPlots::L1JetET] = ibooker.
book1D(
"L1JetET",
"L1 Jet E_{T}; L1 Jet E_{T} (GeV); events", 500, 0,
720 "Offline Jet E_{T}; Offline Jet E_{T} (GeV); events", 500, 0, 5
e3);
724 "L1 Jet E_{T} vs Offline Jet E_{T} (HB); Offline Jet E_{T} (GeV); L1 Jet E_{T} (GeV)",
727 "L1 Jet E_{T} vs Offline Jet E_{T} (HE); Offline Jet E_{T} (GeV); L1 Jet E_{T} (GeV)",
730 "L1 Jet E_{T} vs Offline Jet E_{T} (HF); Offline Jet E_{T} (GeV); L1 Jet E_{T} (GeV)",
733 "L1 Jet E_{T} vs Offline Jet E_{T} (HB+HE); Offline Jet E_{T} (GeV); L1 Jet E_{T} (GeV)",
738 "#phi_{jet}^{L1} vs #phi_{jet}^{offline} (HB); #phi_{jet}^{offline}; #phi_{jet}^{L1}",
739 templatePHIvsPHI.
nbinsX, templatePHIvsPHI.
xmin, templatePHIvsPHI.
xmax,
740 templatePHIvsPHI.
nbinsY, templatePHIvsPHI.
ymin, templatePHIvsPHI.
ymax);
742 "#phi_{jet}^{L1} vs #phi_{jet}^{offline} (HE); #phi_{jet}^{offline}; #phi_{jet}^{L1}",
743 templatePHIvsPHI.
nbinsX, templatePHIvsPHI.
xmin, templatePHIvsPHI.
xmax,
744 templatePHIvsPHI.
nbinsY, templatePHIvsPHI.
ymin, templatePHIvsPHI.
ymax);
746 "#phi_{jet}^{L1} vs #phi_{jet}^{offline} (HF); #phi_{jet}^{offline}; #phi_{jet}^{L1}",
747 templatePHIvsPHI.
nbinsX, templatePHIvsPHI.
xmin, templatePHIvsPHI.
xmax,
748 templatePHIvsPHI.
nbinsY, templatePHIvsPHI.
ymin, templatePHIvsPHI.
ymax);
750 "#phi_{jet}^{L1} vs #phi_{jet}^{offline} (HB+HE); #phi_{jet}^{offline}; #phi_{jet}^{L1}",
751 templatePHIvsPHI.
nbinsX, templatePHIvsPHI.
xmin, templatePHIvsPHI.
xmax,
752 templatePHIvsPHI.
nbinsY, templatePHIvsPHI.
ymin, templatePHIvsPHI.
ymax);
755 "L1 Jet #eta vs Offline Jet #eta; Offline Jet #eta; L1 Jet #eta", 100, -10, 10, 100, -10, 10);
759 "jet ET resolution (HB); (L1 Jet E_{T} - Offline Jet E_{T})/Offline Jet E_{T}; events", 50, -1, 1.5);
761 "jet ET resolution (HE); (L1 Jet E_{T} - Offline Jet E_{T})/Offline Jet E_{T}; events", 50, -1, 1.5);
763 "jet ET resolution (HF); (L1 Jet E_{T} - Offline Jet E_{T})/Offline Jet E_{T}; events", 50, -1, 1.5);
765 "jet ET resolution (HB+HE); (L1 Jet E_{T} - Offline Jet E_{T})/Offline Jet E_{T}; events", 50, -1, 1.5);
768 "#phi_{jet} resolution (HB); (#phi_{jet}^{L1} - #phi_{jet}^{offline}); events", 120, -0.3,
771 "jet #phi resolution (HE); (#phi_{jet}^{L1} - #phi_{jet}^{offline}); events", 120, -0.3,
774 "jet #phi resolution (HF); (#phi_{jet}^{L1} - #phi_{jet}^{offline}); events", 120, -0.3,
777 "jet #phi resolution (HB+HE); (#phi_{jet}^{L1} - #phi_{jet}^{offline}); events", 120, -0.3,
781 "jet #eta resolution (HB); (L1 Jet #eta - Offline Jet #eta); events", 120, -0.3, 0.3);
786 int nBins = jetBins.size() - 1;
787 float* jetBinArray = &(jetBins[0]);
792 "jet efficiency (HB) (numerator); Offline Jet E_{T} (GeV); events", nBins, jetBinArray);
794 "jet efficiency (HE) (numerator); Offline Jet E_{T} (GeV); events", nBins, jetBinArray);
796 "jet efficiency (HF) (numerator); Offline Jet E_{T} (GeV); events", nBins, jetBinArray);
798 "efficiencyJetEt_HB_HE_threshold_" + str_threshold +
"_Num",
799 "jet efficiency (HB+HE) (numerator); Offline Jet E_{T} (GeV); events", nBins, jetBinArray);
802 "jet efficiency (HB) (denominator); Offline Jet E_{T} (GeV); events", nBins, jetBinArray);
804 "jet efficiency (HE) (denominator); Offline Jet E_{T} (GeV); events", nBins, jetBinArray);
806 "jet efficiency (HF) (denominator); Offline Jet E_{T} (GeV); events", nBins, jetBinArray);
808 "efficiencyJetEt_HB_HE_threshold_" + str_threshold +
"_Den",
809 "jet efficiency (HB+HE) (denominator); Offline Jet E_{T} (GeV); events", nBins, jetBinArray);
824 std::copy_if(hltObjects.begin(), hltObjects.end(),
825 std::back_inserter(filteredHltObjects),
826 [](
auto obj) {
return obj.et() > 27; });
827 double l1Eta = jet.
eta();
828 double l1Phi = jet.
phi();
831 return matchedObjects.empty();
839 std::vector<MonitorElement *> monElementstoNormalize = {
852 for (
auto mon : monElementstoNormalize) {
853 if (
mon !=
nullptr) {
854 auto h =
mon->getTH2F();
856 h->Scale(1,
"width");
std::vector< float > binsX
constexpr double deltaPhi(double phi1, double phi2)
const_iterator end(int bx) const
ControlPlotMap h_controlPlots_
std::vector< double > ettEfficiencyBins_
MonitorElement * h_L1JetETvsPFJetET_HF_
edm::EDGetTokenT< l1t::JetBxCollection > stage2CaloLayer2JetToken_
std::vector< std::string > triggerNames_
void fillJetEfficiencies(const double &recoEt, const double &l1Et, const double &recoEta)
double eta() const final
momentum pseudorapidity
std::string histFolderJet_
std::map< double, MonitorElement * > h_efficiencyJetEt_HB_pass_
trigger::TriggerObjectCollection getMatchedTriggerObjects(double eta, double phi, double maxDeltaR, const trigger::TriggerObjectCollection triggerObjects)
MonitorElement * h_resolutionPFMetNoMu_
edm::EDGetTokenT< l1t::EtSumBxCollection > stage2CaloLayer2EtSumToken_
MonitorElement * h_resolutionJetET_HE_
std::map< double, MonitorElement * > h_efficiencyHTT_pass_
std::map< double, MonitorElement * > h_efficiencyETT_pass_
FWCore Framework interface EventSetupRecordImplementation h
Helper function to determine trigger accepts.
std::vector< double > mhtEfficiencyBins_
std::map< double, MonitorElement * > h_efficiencyPFMetNoMu_pass_
void dqmBeginRun(edm::Run const &, edm::EventSetup const &) override
MonitorElement * h_L1METTvsCaloETT_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
static const std::map< std::string, unsigned int > PlotConfigNames
std::vector< double > metEfficiencyThresholds_
MonitorElement * h_L1METPhivsPFMetNoMuPhi_
dqmoffline::l1t::HistDefinitions histDefinitions_
void bookEnergySumHistos(DQMStore::IBooker &)
ParameterSet const & getParameterSet(ParameterSetID const &id)
MonitorElement * h_resolutionETMHFPhi_
MonitorElement * h_resolutionJetET_HB_
Sin< T >::type sin(const T &t)
const std::vector< std::string > & triggerNames() const
names of trigger paths
MonitorElement * h_resolutionJetPhi_HB_HE_
void endRun(edm::Run const &run, edm::EventSetup const &eSetup) override
void fillJets(edm::Event const &e, const unsigned int nVertex)
std::map< double, MonitorElement * > h_efficiencyJetEt_HB_total_
trigger::TriggerObjectCollection getTriggerObjects(const std::vector< edm::InputTag > &hltFilters, const trigger::TriggerEvent &triggerEvent)
std::vector< Vertex > VertexCollection
collection of Vertex objects
L1TStage2CaloLayer2Offline(const edm::ParameterSet &ps)
MonitorElement * h_resolutionPFMetNoMuPhi_
MonitorElement * h_resolutionJetET_HF_
std::map< double, MonitorElement * > h_efficiencyETMHF_total_
MonitorElement * h_resolutionMET_
std::vector< unsigned int > getTriggerIndices(const std::vector< std::string > &requestedTriggers, const std::vector< std::string > &triggersInEvent)
void fillEnergySums(edm::Event const &e, const unsigned int nVertex)
void bookJetHistos(DQMStore::IBooker &)
trigger::TriggerEvent triggerEvent_
std::map< double, MonitorElement * > h_efficiencyJetEt_HE_total_
std::vector< double > mhtEfficiencyThresholds_
std::map< double, MonitorElement * > h_efficiencyJetEt_HF_total_
std::map< double, MonitorElement * > h_efficiencyJetEt_HB_HE_pass_
MonitorElement * h_L1MHTvsRecoMHT_
BXVector< EtSum > EtSumBxCollection
#define DEFINE_FWK_MODULE(type)
void setCurrentFolder(std::string const &fullpath)
MonitorElement * h_resolutionMETPhi_
double et() const final
transverse energy
std::string histFolderEtSum_
std::vector< double > httEfficiencyBins_
edm::EDGetTokenT< reco::VertexCollection > thePVCollection_
Cos< T >::type cos(const T &t)
MonitorElement * h_L1JetPhivsPFJetPhi_HF_
std::vector< edm::InputTag > getHLTFilters(const std::vector< unsigned int > &triggers, const HLTConfigProvider &hltConfig, const std::string triggerProcess)
std::map< double, MonitorElement * > h_efficiencyETT_total_
MonitorElement * book1D(Args &&...args)
Abs< T >::type abs(const T &t)
bool doesNotOverlapWithHLTObjects(const l1t::Jet &jet) const
std::vector< double > ettEfficiencyThresholds_
MonitorElement * h_L1METPhivsCaloMETPhi_
std::map< double, MonitorElement * > h_efficiencyMET_pass_
edm::EDGetTokenT< trigger::TriggerEvent > triggerInputTag_
MonitorElement * h_L1ETMHFPhivsCaloETMHFPhi_
std::map< double, MonitorElement * > h_efficiencyHTT_total_
MonitorElement * h_L1JetETvsPFJetET_HB_
std::map< double, MonitorElement * > h_efficiencyMHT_pass_
MonitorElement * h_resolutionJetEta_
std::vector< TriggerObject > TriggerObjectCollection
collection of trigger physics objects (e.g., all isolated muons)
edm::EDGetTokenT< edm::TriggerResults > triggerResultsInputTag_
HistDefinitions readHistDefinitions(const edm::ParameterSet &ps, const std::map< std::string, unsigned int > &mapping)
std::vector< double > jetEfficiencyThresholds_
std::map< double, MonitorElement * > h_efficiencyJetEt_HF_pass_
MonitorElement * h_resolutionJetPhi_HF_
std::vector< double > metEfficiencyBins_
std::vector< double > httEfficiencyThresholds_
BXVector< Jet > JetBxCollection
std::map< double, MonitorElement * > h_efficiencyJetEt_HE_pass_
std::vector< float > binsY
MonitorElement * h_resolutionMHTPhi_
MonitorElement * book2D(Args &&...args)
MonitorElement * h_resolutionJetPhi_HE_
edm::EDGetTokenT< reco::PFJetCollection > thePFJetCollection_
std::map< double, MonitorElement * > h_efficiencyETMHF_pass_
MonitorElement * h_L1METvsCaloMET_
std::vector< bool > getTriggerResults(const std::vector< unsigned int > &triggers, const edm::TriggerResults &triggerResults)
std::vector< unsigned int > triggerIndices_
std::map< double, MonitorElement * > h_efficiencyMET_total_
MonitorElement * h_L1JetEtavsPFJetEta_
MonitorElement * h_nVertex_
bool init(const edm::Run &iRun, const edm::EventSetup &iSetup, const std::string &processName, bool &changed)
d'tor
void fill2DWithinLimits(MonitorElement *mon, double valueX, double valueY, double weight=1.)
edm::EDGetTokenT< reco::CaloMETCollection > thecaloMETCollection_
void normalise2DHistogramsToBinArea()
void analyze(edm::Event const &e, edm::EventSetup const &eSetup) override
et
define resolution functions of each parameter
MonitorElement * h_L1JetPhivsPFJetPhi_HB_HE_
std::map< double, MonitorElement * > h_efficiencyJetEt_HB_HE_total_
void fillWithinLimits(MonitorElement *mon, double value, double weight=1.)
MonitorElement * h_resolutionJetPhi_HB_
std::vector< PFJet > PFJetCollection
collection of PFJet objects
MonitorElement * h_L1JetPhivsPFJetPhi_HE_
MonitorElement * h_L1METvsPFMetNoMu_
std::string efficiencyFolderEtSum_
MonitorElement * h_L1HTTvsRecoHTT_
edm::EDGetTokenT< reco::CaloMETCollection > thecaloETMHFCollection_
MonitorElement * h_resolutionETT_
~L1TStage2CaloLayer2Offline() override
void bookHistos(DQMStore::IBooker &)
std::map< double, MonitorElement * > h_efficiencyMHT_total_
MonitorElement * h_L1MHTPhivsRecoMHTPhi_
std::string efficiencyFolderJet_
edm::EDGetTokenT< reco::PFMETCollection > thePFMETNoMuCollection_
MonitorElement * h_resolutionJetET_HB_HE_
MonitorElement * h_resolutionETMHF_
MonitorElement * h_L1JetETvsPFJetET_HE_
const_iterator begin(int bx) const
double phi() const final
momentum azimuthal angle
std::map< double, MonitorElement * > h_efficiencyPFMetNoMu_total_
std::vector< double > jetEfficiencyBins_
edm::TriggerResults triggerResults_
MonitorElement * h_L1JetPhivsPFJetPhi_HB_
MonitorElement * h_resolutionMHT_
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
std::vector< unsigned int > getFiredTriggerIndices(const std::vector< unsigned int > &triggers, const std::vector< bool > &triggerResults)
std::string triggerProcess_
MonitorElement * h_L1ETMHFvsCaloETMHF_
MonitorElement * h_L1JetETvsPFJetET_HB_HE_
bool passesAnyTriggerFromList(const std::vector< unsigned int > &triggers, const edm::TriggerResults &triggerResults)
MonitorElement * h_resolutionHTT_
HLTConfigProvider hltConfig_