CMS 3D CMS Logo

JetMETHLTOfflineSource.cc
Go to the documentation of this file.
1 /*
2  JetMETHLTOffline DQM code
3  Migrated to use DQMEDAnalyzer by: Jyothsna Rani Komaragiri, Oct 2014
4 */
5 
7 
13 
20 
22 
24 
25 #include "TMath.h"
26 #include "TH1F.h"
27 #include "TH2F.h"
28 #include "TProfile.h"
29 #include "TPRegexp.h"
30 
31 #include <cmath>
32 
33 using namespace edm;
34 using namespace reco;
35 using namespace std;
36 using namespace trigger;
37 
39  LogDebug("JetMETHLTOfflineSource") << "constructor....";
40 
41  //
42  dirname_ = iConfig.getUntrackedParameter("dirname", std::string("HLT/JetMET/"));
43  processname_ = iConfig.getParameter<std::string>("processname");
44  triggerSummaryLabel_ = iConfig.getParameter<edm::InputTag>("triggerSummaryLabel");
45  triggerResultsLabel_ = iConfig.getParameter<edm::InputTag>("triggerResultsLabel");
46  triggerSummaryToken = consumes<trigger::TriggerEvent>(triggerSummaryLabel_);
47  triggerResultsToken = consumes<edm::TriggerResults>(triggerResultsLabel_);
48  triggerSummaryFUToken = consumes<trigger::TriggerEvent>(
50  triggerResultsFUToken = consumes<edm::TriggerResults>(
52  //
53  verbose_ = iConfig.getUntrackedParameter<bool>("verbose", false);
54  runStandalone_ = iConfig.getUntrackedParameter<bool>("runStandalone", false);
55  //
56  plotAll_ = iConfig.getUntrackedParameter<bool>("plotAll", true);
57  plotEff_ = iConfig.getUntrackedParameter<bool>("plotEff", true);
58  nameForEff_ = iConfig.getUntrackedParameter<bool>("nameForEff", true);
59  MuonTrigPaths_ = iConfig.getUntrackedParameter<vector<std::string> >("pathnameMuon");
60  MBTrigPaths_ = iConfig.getUntrackedParameter<vector<std::string> >("pathnameMB");
61  //CaloJet, CaloMET
62  caloJetsToken = consumes<reco::CaloJetCollection>(iConfig.getParameter<edm::InputTag>("CaloJetCollectionLabel"));
63  caloMetToken = consumes<reco::CaloMETCollection>(iConfig.getParameter<edm::InputTag>("CaloMETCollectionLabel"));
64  //PFJet, PFMET
65  pfJetsToken = consumes<reco::PFJetCollection>(iConfig.getParameter<edm::InputTag>("PFJetCollectionLabel"));
66  pfMetToken = consumes<reco::PFMETCollection>(iConfig.getParameter<edm::InputTag>("PFMETCollectionLabel"));
67  //pfmhtTag_ = iConfig.getParameter<edm::InputTag>("PFMHTCollectionLabel");
68  //Vertex info
69  vertexToken = consumes<reco::VertexCollection>(std::string("offlinePrimaryVertices"));
70  //
71  CaloJetCorToken_ = consumes<reco::JetCorrector>(iConfig.getParameter<edm::InputTag>("CaloJetCorLabel"));
72  PFJetCorToken_ = consumes<reco::JetCorrector>(iConfig.getParameter<edm::InputTag>("PFJetCorLabel"));
73  //JetID
74  jetID = new reco::helper::JetIDHelper(iConfig.getParameter<ParameterSet>("JetIDParams"), consumesCollector());
75  _fEMF = iConfig.getUntrackedParameter<double>("fEMF", 0.01);
76  _feta = iConfig.getUntrackedParameter<double>("feta", 2.60);
77  _fHPD = iConfig.getUntrackedParameter<double>("fHPD", 0.98);
78  _n90Hits = iConfig.getUntrackedParameter<double>("n90Hits", 1.0);
79  _min_NHEF = iConfig.getUntrackedParameter<double>("minNHEF", 0.);
80  _max_NHEF = iConfig.getUntrackedParameter<double>("maxNHEF", 0.99);
81  _min_CHEF = iConfig.getUntrackedParameter<double>("minCHEF", 0.);
82  _max_CHEF = iConfig.getUntrackedParameter<double>("maxCHEF", 1.);
83  _min_NEMF = iConfig.getUntrackedParameter<double>("minNEMF", 0.);
84  _max_NEMF = iConfig.getUntrackedParameter<double>("maxNEMF", 0.99);
85  _min_CEMF = iConfig.getUntrackedParameter<double>("minCEMF", 0.);
86  _max_CEMF = iConfig.getUntrackedParameter<double>("maxCEMF", 0.99);
87  //Paths
88  pathFilter_ = iConfig.getUntrackedParameter<vector<std::string> >("pathFilter");
89  pathRejectKeyword_ = iConfig.getUntrackedParameter<vector<std::string> >("pathRejectKeyword");
90  std::vector<edm::ParameterSet> paths = iConfig.getParameter<std::vector<edm::ParameterSet> >("pathPairs");
91  for (auto& path : paths) {
92  custompathnamepairs_.push_back(
93  make_pair(path.getParameter<std::string>("pathname"), path.getParameter<std::string>("denompathname")));
94  }
95 }
96 
97 //------------------------------------------------------------------------//
99  //
100  // do anything here that needs to be done at desctruction time
101  // (e.g. close files, deallocate resources etc.)
102  delete jetID;
103 }
104 
105 //------------------------------------------------------------------------//
107  if (verbose_) {
108  cout << endl;
109  cout << "============================================================" << endl;
110  cout << " New event" << endl << endl;
111  }
112 
113  //---------- triggerResults ----------
115  if (!triggerResults_.isValid()) {
117  if (!triggerResults_.isValid()) {
118  if (verbose_)
119  cout << " triggerResults not valid" << endl;
120  edm::LogInfo("JetMETHLTOfflineSource") << "TriggerResults not found, "
121  "skipping event";
122  return;
123  }
124  }
125  if (verbose_)
126  cout << " done triggerResults" << endl;
127 
128  //---------- triggerResults ----------
129  triggerNames_ = iEvent.triggerNames(*triggerResults_);
130 
131  //---------- triggerSummary ----------
133  if (!triggerObj_.isValid()) {
135  if (!triggerObj_.isValid()) {
136  edm::LogInfo("JetMETHLTOfflineSource") << "TriggerEvent not found, "
137  "skipping event";
138  return;
139  }
140  }
141  if (verbose_)
142  cout << " done triggerSummary" << endl;
143 
144  if (verbose_) {
145  cout << endl;
146  cout << "============================================================" << endl;
147  cout << " Reading in offline objects" << endl << endl;
148  }
149 
150  //------------ Offline Objects -------
151  iEvent.getByToken(caloJetsToken, calojetColl_);
152  if (!calojetColl_.isValid())
153  return;
155  //std::stable_sort( calojet.begin(), calojet.end(), PtSorter() );
156 
157  if (verbose_)
158  cout << " done calo" << endl;
159 
160  iEvent.getByToken(pfJetsToken, pfjetColl_);
161  if (!pfjetColl_.isValid())
162  return;
163  pfjet = *pfjetColl_;
164  //std::stable_sort( pfjet.begin(), pfjet.end(), PtSorter() );
165 
166  if (verbose_)
167  cout << " done pf" << endl;
168 
169  iEvent.getByToken(caloMetToken, calometColl_);
170  if (!calometColl_.isValid())
171  return;
172 
173  iEvent.getByToken(pfMetToken, pfmetColl_);
174  if (!pfmetColl_.isValid())
175  return;
176 
177  if (verbose_) {
178  cout << endl;
179  cout << "============================================================" << endl;
180  cout << " Read in offline objects" << endl << endl;
181  }
182 
183  //---------- Event counting (DEBUG) ----------
184  if (verbose_ && iEvent.id().event() % 10000 == 0)
185  cout << "Run = " << iEvent.id().run() << ", LS = " << iEvent.luminosityBlock()
186  << ", Event = " << iEvent.id().event() << endl;
187 
188  //Define on-the-fly correction Jet
189  for (int i = 0; i < 2; i++) {
190  CaloJetPx[i] = 0.;
191  CaloJetPy[i] = 0.;
192  CaloJetPt[i] = 0.;
193  CaloJetEta[i] = 0.;
194  CaloJetPhi[i] = 0.;
195  CaloJetEMF[i] = 0.;
196  CaloJetfHPD[i] = 0.;
197  CaloJetn90[i] = 0.;
198  PFJetPx[i] = 0.;
199  PFJetPy[i] = 0.;
200  PFJetPt[i] = 0.;
201  PFJetEta[i] = 0.;
202  PFJetPhi[i] = 0.;
203  PFJetNHEF[i] = 0.;
204  PFJetCHEF[i] = 0.;
205  PFJetNEMF[i] = 0.;
206  PFJetCEMF[i] = 0.;
207  }
208 
209  //---------- CaloJet Correction (on-the-fly) ----------
210  edm::Handle<reco::JetCorrector> calocorrector;
211  iEvent.getByToken(CaloJetCorToken_, calocorrector);
212  auto calojet_ = calojet.begin();
213  for (; calojet_ != calojet.end(); ++calojet_) {
214  double scale = calocorrector->correction(*calojet_);
215  jetID->calculate(iEvent, iSetup, *calojet_);
216 
217  if (scale * calojet_->pt() > CaloJetPt[0]) {
218  CaloJetPt[1] = CaloJetPt[0];
219  CaloJetPx[1] = CaloJetPx[0];
220  CaloJetPy[1] = CaloJetPy[0];
221  CaloJetEta[1] = CaloJetEta[0];
222  CaloJetPhi[1] = CaloJetPhi[0];
223  CaloJetEMF[1] = CaloJetEMF[0];
224  CaloJetfHPD[1] = CaloJetfHPD[0];
225  CaloJetn90[1] = CaloJetn90[0];
226  //
227  CaloJetPt[0] = scale * calojet_->pt();
228  CaloJetPx[0] = scale * calojet_->px();
229  CaloJetPy[0] = scale * calojet_->py();
230  CaloJetEta[0] = calojet_->eta();
231  CaloJetPhi[0] = calojet_->phi();
232  CaloJetEMF[0] = calojet_->emEnergyFraction();
233  CaloJetfHPD[0] = jetID->fHPD();
234  CaloJetn90[0] = jetID->n90Hits();
235  } else if (scale * calojet_->pt() < CaloJetPt[0] && scale * calojet_->pt() > CaloJetPt[1]) {
236  CaloJetPt[1] = scale * calojet_->pt();
237  CaloJetPx[1] = scale * calojet_->px();
238  CaloJetPy[1] = scale * calojet_->py();
239  CaloJetEta[1] = calojet_->eta();
240  CaloJetPhi[1] = calojet_->phi();
241  CaloJetEMF[1] = calojet_->emEnergyFraction();
242  CaloJetfHPD[1] = jetID->fHPD();
243  CaloJetn90[1] = jetID->n90Hits();
244  } else {
245  }
246  }
247 
248  //---------- PFJet Correction (on-the-fly) ----------
249  pfMHTx_All = 0.;
250  pfMHTy_All = 0.;
252  iEvent.getByToken(PFJetCorToken_, pfcorrector);
253  auto pfjet_ = pfjet.begin();
254  for (; pfjet_ != pfjet.end(); ++pfjet_) {
255  double scale = pfcorrector->correction(*pfjet_);
256  pfMHTx_All = pfMHTx_All + scale * pfjet_->px();
257  pfMHTy_All = pfMHTy_All + scale * pfjet_->py();
258  if (scale * pfjet_->pt() > PFJetPt[0]) {
259  PFJetPt[1] = PFJetPt[0];
260  PFJetPx[1] = PFJetPx[0];
261  PFJetPy[1] = PFJetPy[0];
262  PFJetEta[1] = PFJetEta[0];
263  PFJetPhi[1] = PFJetPhi[0];
264  PFJetNHEF[1] = PFJetNHEF[0];
265  PFJetCHEF[1] = PFJetCHEF[0];
266  PFJetNEMF[1] = PFJetNEMF[0];
267  PFJetCEMF[1] = PFJetCEMF[0];
268  //
269  PFJetPt[0] = scale * pfjet_->pt();
270  PFJetPx[0] = scale * pfjet_->px();
271  PFJetPy[0] = scale * pfjet_->py();
272  PFJetEta[0] = pfjet_->eta();
273  PFJetPhi[0] = pfjet_->phi();
274  PFJetNHEF[0] = pfjet_->neutralHadronEnergyFraction();
275  PFJetCHEF[0] = pfjet_->chargedHadronEnergyFraction();
276  PFJetNEMF[0] = pfjet_->neutralEmEnergyFraction();
277  PFJetCEMF[0] = pfjet_->chargedEmEnergyFraction();
278  } else if (scale * pfjet_->pt() < PFJetPt[0] && scale * pfjet_->pt() > PFJetPt[1]) {
279  PFJetPt[1] = scale * pfjet_->pt();
280  PFJetPx[1] = scale * pfjet_->px();
281  PFJetPy[1] = scale * pfjet_->py();
282  PFJetEta[1] = pfjet_->eta();
283  PFJetPhi[1] = pfjet_->phi();
284  PFJetNHEF[1] = pfjet_->neutralHadronEnergyFraction();
285  PFJetCHEF[1] = pfjet_->chargedHadronEnergyFraction();
286  PFJetNEMF[1] = pfjet_->neutralEmEnergyFraction();
287  PFJetCEMF[1] = pfjet_->chargedEmEnergyFraction();
288  } else {
289  }
290  }
291 
292  if (verbose_) {
293  for (int i = 0; i < 2; i++) {
294  cout << "CaloJet-0: " << CaloJetPt[i] << ", Eta = " << CaloJetEta[i] << ", Phi = " << CaloJetPhi[i] << endl;
295  cout << "fHPD = " << CaloJetfHPD[0] << ", n90 = " << CaloJetn90[0] << endl;
296  }
297  for (int i = 0; i < 2; i++) {
298  cout << "PFJet-0: " << PFJetPt[i] << ", Eta = " << PFJetEta[i] << ", Phi = " << PFJetPhi[i] << endl;
299  }
300  }
301 
302  //---------- RUN ----------
304  if (plotAll_)
306  if (plotEff_)
308  if (runStandalone_)
310 }
311 
312 //------------------------------------------------------------------------//
313 // Trigger summary for all paths
315  if (verbose_)
316  cout << ">> Inside fillMEforMonTriggerSummary " << endl;
317  bool muTrig = false;
318 
319  for (auto const& MuonTrigPath : MuonTrigPaths_) {
320  const unsigned int nPath(hltConfig_.size());
321  for (unsigned int j = 0; j != nPath; ++j) {
323  if (pathname.find(MuonTrigPath) != std::string::npos) {
325  muTrig = true;
326  if (verbose_)
327  cout << "fillMEforMonTriggerSummary: Muon Match" << endl;
328  }
329  }
330  if (muTrig)
331  break;
332  }
333  if (muTrig)
334  break;
335  }
336 
337  bool mbTrig = false;
338  for (auto const& MBTrigPath : MBTrigPaths_) {
339  const unsigned int nPath(hltConfig_.size());
340  for (unsigned int j = 0; j != nPath; ++j) {
342  if (pathname.find(MBTrigPath) != std::string::npos) {
344  mbTrig = true;
345  if (verbose_)
346  cout << "fillMEforMonTriggerSummary: MinBias Match" << endl;
347  }
348  }
349  if (mbTrig)
350  break;
351  }
352  if (mbTrig)
353  break;
354  }
355 
356  auto v = hltPathsAll_.begin();
357  for (; v != hltPathsAll_.end(); ++v) {
358  bool trigFirst = false;
359  double binV = TriggerPosition(v->getPath());
360  if (isHLTPathAccepted(v->getPath()))
361  trigFirst = true;
362  if (!trigFirst)
363  continue;
364  if (trigFirst) {
365  rate_All->Fill(binV);
366  correlation_All->Fill(binV, binV);
367  if (muTrig && runStandalone_) {
368  rate_AllWrtMu->Fill(binV);
369  correlation_AllWrtMu->Fill(binV, binV);
370  }
371  if (mbTrig && runStandalone_) {
372  rate_AllWrtMB->Fill(binV);
373  correlation_AllWrtMB->Fill(binV, binV);
374  }
375  }
376  for (auto w = v + 1; w != hltPathsAll_.end(); ++w) {
377  bool trigSec = false;
378  double binW = TriggerPosition(w->getPath());
379  if (isHLTPathAccepted(w->getPath()))
380  trigSec = true;
381  if (trigSec && trigFirst) {
382  correlation_All->Fill(binV, binW);
383  if (muTrig && runStandalone_)
384  correlation_AllWrtMu->Fill(binV, binW);
385  if (mbTrig && runStandalone_)
386  correlation_AllWrtMB->Fill(binV, binW);
387  }
388  if (!trigSec && trigFirst) {
389  correlation_All->Fill(binW, binV);
390  if (muTrig && runStandalone_)
391  correlation_AllWrtMu->Fill(binW, binV);
392  if (mbTrig && runStandalone_)
393  correlation_AllWrtMB->Fill(binW, binV);
394  }
395  }
396  }
397 
398  //Vertex
400  iEvent.getByToken(vertexToken, Vtx);
401  int vtxcnt = 0;
402  for (auto const& itv : *Vtx) {
403  //if(vtxcnt>=20) break;
404  PVZ->Fill(itv.z());
405  //chi2vtx[vtxcnt] = itv->chi2();
406  //ndofvtx[vtxcnt] = itv->ndof();
407  //ntrkvtx[vtxcnt] = itv->tracksSize();
408  vtxcnt++;
409  }
410  NVertices->Fill(vtxcnt);
411 }
412 
413 //------------------------------------------------------------------------//
415  if (verbose_)
416  cout << ">> Inside fillMEforTriggerNTfired" << endl;
417  if (!triggerResults_.isValid())
418  return;
419  if (verbose_)
420  cout << " ... and triggerResults is valid" << endl;
421 
422  //
423  for (auto& v : hltPathsAll_) {
424  unsigned index = triggerNames_.triggerIndex(v.getPath());
425  if (index < triggerNames_.size()) {
426  v.getMEhisto_TriggerSummary()->Fill(0.);
427  edm::InputTag l1Tag(v.getl1Path(), "", processname_);
428  const int l1Index = triggerObj_->filterIndex(l1Tag);
429  bool l1found = false;
430  if (l1Index < triggerObj_->sizeFilters())
431  l1found = true;
432  if (!l1found)
433  v.getMEhisto_TriggerSummary()->Fill(1.);
434  if (!l1found && !(triggerResults_->accept(index)))
435  v.getMEhisto_TriggerSummary()->Fill(2.);
436  if (!l1found && (triggerResults_->accept(index)))
437  v.getMEhisto_TriggerSummary()->Fill(3.);
438  if (l1found)
439  v.getMEhisto_TriggerSummary()->Fill(4.);
440  if (l1found && (triggerResults_->accept(index)))
441  v.getMEhisto_TriggerSummary()->Fill(5.);
442  if (l1found && !(triggerResults_->accept(index)))
443  v.getMEhisto_TriggerSummary()->Fill(6.);
444  if (!(triggerResults_->accept(index)) && l1found) {
445  //cout<<v->getTriggerType()<<endl;
446  if ((v.getTriggerType() == "SingleJet_Trigger") && (calojetColl_.isValid()) && !calojet.empty()) {
447  auto jet = calojet.begin();
448  v.getMEhisto_JetPt()->Fill(jet->pt());
449  v.getMEhisto_EtavsPt()->Fill(jet->eta(), jet->pt());
450  v.getMEhisto_PhivsPt()->Fill(jet->phi(), jet->pt());
451  }
452  // single jet trigger is not fired
453 
454  if ((v.getTriggerType() == "DiJet_Trigger") && calojetColl_.isValid() && !calojet.empty()) {
455  v.getMEhisto_JetSize()->Fill(calojet.size());
456  if (calojet.size() >= 2) {
457  auto jet = calojet.begin();
458  auto jet2 = calojet.begin();
459  jet2++;
460  double jet3pt = 0.;
461  if (calojet.size() > 2) {
462  auto jet3 = jet2++;
463  jet3pt = jet3->pt();
464  }
465  v.getMEhisto_Pt12()->Fill((jet->pt() + jet2->pt()) / 2.);
466  v.getMEhisto_Eta12()->Fill((jet->eta() + jet2->eta()) / 2.);
467  v.getMEhisto_Phi12()->Fill(deltaPhi(jet->phi(), jet2->phi()));
468  v.getMEhisto_Pt3()->Fill(jet3pt);
469  v.getMEhisto_Pt12Pt3()->Fill((jet->pt() + jet2->pt()) / 2., jet3pt);
470  v.getMEhisto_Pt12Phi12()->Fill((jet->pt() + jet2->pt()) / 2., deltaPhi(jet->phi(), jet2->phi()));
471  }
472  } // di jet trigger is not fired
473 
474  if (((v.getTriggerType() == "MET_Trigger") || (v.getTriggerType() == "TET_Trigger")) &&
475  calometColl_.isValid()) {
476  const CaloMETCollection* calometcol = calometColl_.product();
477  const CaloMET met = calometcol->front();
478  v.getMEhisto_JetPt()->Fill(met.pt());
479  } //MET trigger is not fired
480  } // L1 is fired
481  } //
482  } // trigger not fired
483 }
484 
485 //------------------------------------------------------------------------//
487  if (verbose_)
488  cout << ">> Inside fillMEforMonAllTrigger " << endl;
489  if (!triggerResults_.isValid())
490  return;
491  if (verbose_)
492  cout << " ... and triggerResults is valid" << endl;
493 
495  for (auto& v : hltPathsAll_) {
496  if (verbose_)
497  cout << " + Checking path " << v.getPath();
498  if (isHLTPathAccepted(v.getPath()) == false) {
499  if (verbose_)
500  cout << " - failed" << endl;
501  continue;
502  }
503  if (verbose_)
504  cout << " - PASSED! " << endl;
505 
506  //New jet collection (after apply JEC)
507  std::vector<double> jetPtVec;
508  std::vector<double> jetPhiVec;
509  std::vector<double> jetEtaVec;
510  std::vector<double> jetPxVec;
511  std::vector<double> jetPyVec;
512  std::vector<double> hltPtVec;
513  std::vector<double> hltPhiVec;
514  std::vector<double> hltEtaVec;
515  std::vector<double> hltPxVec;
516  std::vector<double> hltPyVec;
517 
518  //This will be used to find out punch through trigger
519  //bool fillL1HLT = false;
520 
521  //L1 and HLT indices
522  if (verbose_) {
523  cout << " - L1Path = " << v.getl1Path() << endl;
524  cout << " - Label = " << v.getLabel() << endl;
525  }
526 
527  //edm::InputTag l1Tag(v->getl1Path(),"",processname_);
528  edm::InputTag l1Tag(v.getLabel(), "", processname_);
529  const int l1Index = triggerObj_->filterIndex(l1Tag);
530  if (verbose_)
531  cout << " - l1Index = " << l1Index << " - l1Tag = [" << l1Tag << "]" << endl;
532 
533  edm::InputTag hltTag(v.getLabel(), "", processname_);
534  const int hltIndex = triggerObj_->filterIndex(hltTag);
535  if (verbose_)
536  cout << " - hltIndex = " << hltIndex << " - hltTag = [" << hltTag << "]" << endl;
537 
538  //bool l1TrigBool = false;
539  bool hltTrigBool = false;
540  bool diJetFire = false;
541  int jetsize = 0;
542 
543  if (l1Index >= triggerObj_->sizeFilters()) {
544  edm::LogInfo("JetMETHLTOfflineSource") << "no index " << l1Index << " of that name " << l1Tag;
545  if (verbose_)
546  cout << "[JetMETHLTOfflineSource::fillMEforMonAllTrigger] - No index l1Index=" << l1Index << " of that name \""
547  << l1Tag << "\"" << endl;
548  } else {
549  //l1TrigBool = true;
550  const trigger::Keys& kl1 = triggerObj_->filterKeys(l1Index);
551  //
552  if (v.getObjectType() == trigger::TriggerJet && v.getTriggerType() == "SingleJet_Trigger")
553  v.getMEhisto_N_L1()->Fill(kl1.size());
554  //
555  auto ki = kl1.begin();
556  for (; ki != kl1.end(); ++ki) {
557  double l1TrigEta = -100;
558  double l1TrigPhi = -100;
559  //
560  if (v.getObjectType() == trigger::TriggerJet) {
561  l1TrigEta = toc[*ki].eta();
562  l1TrigPhi = toc[*ki].phi();
563  if (v.getTriggerType() == "SingleJet_Trigger") {
564  v.getMEhisto_Pt_L1()->Fill(toc[*ki].pt());
565  if (isBarrel(toc[*ki].eta()))
566  v.getMEhisto_PtBarrel_L1()->Fill(toc[*ki].pt());
567  if (isEndCap(toc[*ki].eta()))
568  v.getMEhisto_PtEndcap_L1()->Fill(toc[*ki].pt());
569  if (isForward(toc[*ki].eta()))
570  v.getMEhisto_PtForward_L1()->Fill(toc[*ki].pt());
571  v.getMEhisto_Eta_L1()->Fill(toc[*ki].eta());
572  v.getMEhisto_Phi_L1()->Fill(toc[*ki].phi());
573  v.getMEhisto_EtaPhi_L1()->Fill(toc[*ki].eta(), toc[*ki].phi());
574  }
575  }
576  if (v.getObjectType() == trigger::TriggerMET || v.getObjectType() == trigger::TriggerTET) {
577  v.getMEhisto_Pt_L1()->Fill(toc[*ki].pt());
578  v.getMEhisto_Phi_L1()->Fill(toc[*ki].phi());
579  }
580 
581  //-----------------------------------------------
582  if (hltIndex >= triggerObj_->sizeFilters()) {
583  edm::LogInfo("JetMETHLTOfflineSource") << "no index hlt" << hltIndex << " of that name ";
584  if (verbose_)
585  cout << "[JetMETHLTOfflineSource::fillMEforMonAllTrigger] - No index hltIndex=" << hltIndex
586  << " of that name " << endl;
587  } else {
588  const trigger::Keys& khlt = triggerObj_->filterKeys(hltIndex);
589  if (v.getObjectType() == trigger::TriggerJet && ki == kl1.begin() &&
590  v.getTriggerType() == "SingleJet_Trigger")
591  v.getMEhisto_N_HLT()->Fill(khlt.size());
592  //
593  auto kj = khlt.begin();
594  //Define hltTrigBool
595  for (; kj != khlt.end(); ++kj) {
596  if (v.getObjectType() == trigger::TriggerJet) {
597  double hltTrigEta = -100;
598  double hltTrigPhi = -100;
599  hltTrigEta = toc[*kj].eta();
600  hltTrigPhi = toc[*kj].phi();
601  if ((deltaR(hltTrigEta, hltTrigPhi, l1TrigEta, l1TrigPhi)) < 0.4 &&
602  (v.getTriggerType() == "DiJet_Trigger"))
603  hltTrigBool = true;
604  }
605  }
606  //
607  kj = khlt.begin();
608  for (; kj != khlt.end(); ++kj) {
609  double hltTrigEta = -100.;
610  double hltTrigPhi = -100.;
611  //fillL1HLT = true;
612  //MET Triggers
613  if (verbose_)
614  cout << "+ MET Triggers plots" << endl;
615  if (v.getObjectType() == trigger::TriggerMET || (v.getObjectType() == trigger::TriggerTET)) {
616  v.getMEhisto_Pt_HLT()->Fill(toc[*kj].pt());
617  v.getMEhisto_Phi_HLT()->Fill(toc[*kj].phi());
618  v.getMEhisto_PtCorrelation_L1HLT()->Fill(toc[*ki].pt(), toc[*kj].pt());
619  v.getMEhisto_PhiCorrelation_L1HLT()->Fill(toc[*ki].phi(), toc[*kj].phi());
620  v.getMEhisto_PtResolution_L1HLT()->Fill((toc[*ki].pt() - toc[*kj].pt()) / (toc[*ki].pt()));
621  v.getMEhisto_PhiResolution_L1HLT()->Fill(toc[*ki].phi() - toc[*kj].phi());
622  }
623  //Jet Triggers
624  if (verbose_)
625  cout << "+ Jet Trigger plots" << endl;
626  if (v.getObjectType() == trigger::TriggerJet) {
627  if (verbose_)
628  cout << " - Going for those..." << endl;
629  hltTrigEta = toc[*kj].eta();
630  hltTrigPhi = toc[*kj].phi();
631  if ((deltaR(hltTrigEta, hltTrigPhi, l1TrigEta, l1TrigPhi)) < 0.4) {
632  if (v.getTriggerType() == "SingleJet_Trigger") {
633  v.getMEhisto_PtCorrelation_L1HLT()->Fill(toc[*ki].pt(), toc[*kj].pt());
634  v.getMEhisto_EtaCorrelation_L1HLT()->Fill(toc[*ki].eta(), toc[*kj].eta());
635  v.getMEhisto_PhiCorrelation_L1HLT()->Fill(toc[*ki].phi(), toc[*kj].phi());
636  v.getMEhisto_PtResolution_L1HLT()->Fill((toc[*ki].pt() - toc[*kj].pt()) / (toc[*ki].pt()));
637  v.getMEhisto_EtaResolution_L1HLT()->Fill(toc[*ki].eta() - toc[*kj].eta());
638  v.getMEhisto_PhiResolution_L1HLT()->Fill(toc[*ki].phi() - toc[*kj].phi());
639  }
640  }
641  if (((deltaR(hltTrigEta, hltTrigPhi, l1TrigEta, l1TrigPhi) < 0.4) ||
642  ((v.getTriggerType() == "DiJet_Trigger") && hltTrigBool)) &&
643  !diJetFire) {
644  if (v.getTriggerType() == "SingleJet_Trigger") {
645  v.getMEhisto_Pt_HLT()->Fill(toc[*kj].pt());
646  if (isBarrel(toc[*kj].eta()))
647  v.getMEhisto_PtBarrel_HLT()->Fill(toc[*kj].pt());
648  if (isEndCap(toc[*kj].eta()))
649  v.getMEhisto_PtEndcap_HLT()->Fill(toc[*kj].pt());
650  if (isForward(toc[*kj].eta()))
651  v.getMEhisto_PtForward_HLT()->Fill(toc[*kj].pt());
652  v.getMEhisto_Eta_HLT()->Fill(toc[*kj].eta());
653  v.getMEhisto_Phi_HLT()->Fill(toc[*kj].phi());
654  v.getMEhisto_EtaPhi_HLT()->Fill(toc[*kj].eta(), toc[*kj].phi());
655  }
656 
657  //Calojet
658  if (calojetColl_.isValid() && (v.getObjectType() == trigger::TriggerJet) && (v.getPath() == "PFJet")) {
659  //CaloJetCollection::const_iterator jet = calojet.begin();
660  //for(; jet != calojet.end(); ++jet) {
661  for (int iCalo = 0; iCalo < 2; iCalo++) {
662  if (deltaR(hltTrigEta, hltTrigPhi, CaloJetEta[iCalo], CaloJetPhi[iCalo]) < 0.4) {
663  jetsize++;
664  if (v.getTriggerType() == "SingleJet_Trigger") {
665  v.getMEhisto_Pt()->Fill(CaloJetPt[iCalo]);
666  if (isBarrel(CaloJetEta[iCalo]))
667  v.getMEhisto_PtBarrel()->Fill(CaloJetPt[iCalo]);
668  if (isEndCap(CaloJetEta[iCalo]))
669  v.getMEhisto_PtEndcap()->Fill(CaloJetPt[iCalo]);
670  if (isForward(CaloJetEta[iCalo]))
671  v.getMEhisto_PtForward()->Fill(CaloJetPt[iCalo]);
672  //
673  v.getMEhisto_Eta()->Fill(CaloJetEta[iCalo]);
674  v.getMEhisto_Phi()->Fill(CaloJetPhi[iCalo]);
675  v.getMEhisto_EtaPhi()->Fill(CaloJetEta[iCalo], CaloJetPhi[iCalo]);
676  //
677  v.getMEhisto_PtCorrelation_HLTRecObj()->Fill(toc[*kj].pt(), CaloJetPt[iCalo]);
678  v.getMEhisto_EtaCorrelation_HLTRecObj()->Fill(toc[*kj].eta(), CaloJetEta[iCalo]);
679  v.getMEhisto_PhiCorrelation_HLTRecObj()->Fill(toc[*kj].phi(), CaloJetPhi[iCalo]);
680  //
681  v.getMEhisto_PtResolution_HLTRecObj()->Fill((toc[*kj].pt() - CaloJetPt[iCalo]) /
682  (toc[*kj].pt()));
683  v.getMEhisto_EtaResolution_HLTRecObj()->Fill(toc[*kj].eta() - CaloJetEta[iCalo]);
684  v.getMEhisto_PhiResolution_HLTRecObj()->Fill(toc[*kj].phi() - CaloJetPhi[iCalo]);
685  }
686 
687  //-------------------------------------------------------
688  if ((v.getTriggerType() == "DiJet_Trigger")) {
689  jetPhiVec.push_back(CaloJetPhi[iCalo]);
690  jetPtVec.push_back(CaloJetPt[iCalo]);
691  jetEtaVec.push_back(CaloJetEta[iCalo]);
692  jetPxVec.push_back(CaloJetPx[iCalo]);
693  jetPyVec.push_back(CaloJetPy[iCalo]);
694  //
695  hltPhiVec.push_back(toc[*kj].phi());
696  hltPtVec.push_back(toc[*kj].pt());
697  hltEtaVec.push_back(toc[*kj].eta());
698  hltPxVec.push_back(toc[*kj].px());
699  hltPyVec.push_back(toc[*kj].py());
700  }
701  } // matching jet
702  } // Jet Loop
703  } // valid calojet collection, with calojet trigger
704 
705  //PFJet trigger
706  if (pfjetColl_.isValid() && (v.getObjectType() == trigger::TriggerJet) && (v.getPath() != "PFJet")) {
707  //PFJetCollection::const_iterator jet = pfjet.begin();
708  //for(; jet != pfjet.end(); ++jet){
709  for (int iPF = 0; iPF < 2; iPF++) {
710  if (deltaR(hltTrigEta, hltTrigPhi, PFJetEta[iPF], PFJetPhi[iPF]) < 0.4) {
711  jetsize++;
712  if (v.getTriggerType() == "SingleJet_Trigger") {
713  v.getMEhisto_Pt()->Fill(PFJetPt[iPF]);
714  if (isBarrel(PFJetEta[iPF]))
715  v.getMEhisto_PtBarrel()->Fill(PFJetPt[iPF]);
716  if (isEndCap(PFJetEta[iPF]))
717  v.getMEhisto_PtEndcap()->Fill(PFJetPt[iPF]);
718  if (isForward(PFJetEta[iPF]))
719  v.getMEhisto_PtForward()->Fill(PFJetPt[iPF]);
720  //
721  v.getMEhisto_Eta()->Fill(PFJetEta[iPF]);
722  v.getMEhisto_Phi()->Fill(PFJetPhi[iPF]);
723  v.getMEhisto_EtaPhi()->Fill(PFJetEta[iPF], PFJetPhi[iPF]);
724  //
725  v.getMEhisto_PtCorrelation_HLTRecObj()->Fill(toc[*kj].pt(), PFJetPt[iPF]);
726  v.getMEhisto_EtaCorrelation_HLTRecObj()->Fill(toc[*kj].eta(), PFJetEta[iPF]);
727  v.getMEhisto_PhiCorrelation_HLTRecObj()->Fill(toc[*kj].phi(), PFJetPhi[iPF]);
728  //
729  v.getMEhisto_PtResolution_HLTRecObj()->Fill((toc[*kj].pt() - PFJetPt[iPF]) / (toc[*kj].pt()));
730  v.getMEhisto_EtaResolution_HLTRecObj()->Fill(toc[*kj].eta() - PFJetEta[iPF]);
731  v.getMEhisto_PhiResolution_HLTRecObj()->Fill(toc[*kj].phi() - PFJetPhi[iPF]);
732  }
733 
734  //-------------------------------------------------------
735  if ((v.getTriggerType() == "DiJet_Trigger")) {
736  jetPhiVec.push_back(PFJetPhi[iPF]);
737  jetPtVec.push_back(PFJetPt[iPF]);
738  jetEtaVec.push_back(PFJetEta[iPF]);
739  jetPxVec.push_back(PFJetPx[iPF]);
740  jetPyVec.push_back(PFJetPy[iPF]);
741  //
742  hltPhiVec.push_back(toc[*kj].phi());
743  hltPtVec.push_back(toc[*kj].pt());
744  hltEtaVec.push_back(toc[*kj].eta());
745  hltPxVec.push_back(toc[*kj].px());
746  hltPyVec.push_back(toc[*kj].py());
747  }
748  } // matching jet
749  } //PFJet loop
750  } //valid pfjet collection, with pfjet trigger
751  //
752  } // hlt matching with l1
753  } // jet trigger
754 
755  //------------------------------------------------------
756  if (calometColl_.isValid() &&
757  ((v.getObjectType() == trigger::TriggerMET) || (v.getObjectType() == trigger::TriggerTET)) &&
758  (v.getPath().find("HLT_PFMET") == std::string::npos)) {
759  const CaloMETCollection* calometcol = calometColl_.product();
760  const CaloMET met = calometcol->front();
761  //
762  v.getMEhisto_Pt()->Fill(met.et());
763  v.getMEhisto_Phi()->Fill(met.phi());
764  //
765  v.getMEhisto_PtCorrelation_HLTRecObj()->Fill(toc[*kj].et(), met.et());
766  v.getMEhisto_PhiCorrelation_HLTRecObj()->Fill(toc[*kj].phi(), met.phi());
767  v.getMEhisto_PtResolution_HLTRecObj()->Fill((toc[*kj].et() - met.et()) / (toc[*kj].et()));
768  v.getMEhisto_PhiResolution_HLTRecObj()->Fill(toc[*kj].phi() - met.phi());
769  }
770 
771  //--------------------------------------------------------
772  if (pfmetColl_.isValid() &&
773  ((v.getObjectType() == trigger::TriggerMET) || (v.getObjectType() == trigger::TriggerTET)) &&
774  (v.getPath().find("HLT_PFMET") != std::string::npos)) {
775  const PFMETCollection* pfmetcol = pfmetColl_.product();
776  const PFMET pfmet = pfmetcol->front();
777  //
778  v.getMEhisto_Pt()->Fill(pfmet.et());
779  v.getMEhisto_Phi()->Fill(pfmet.phi());
780  //
781  v.getMEhisto_PtCorrelation_HLTRecObj()->Fill(toc[*kj].et(), pfmet.et());
782  v.getMEhisto_PhiCorrelation_HLTRecObj()->Fill(toc[*kj].phi(), pfmet.phi());
783  v.getMEhisto_PtResolution_HLTRecObj()->Fill((toc[*kj].et() - pfmet.et()) / (toc[*kj].et()));
784  v.getMEhisto_PhiResolution_HLTRecObj()->Fill(toc[*kj].phi() - pfmet.phi());
785  }
786  } //Loop over HLT trigger candidates
787  if ((v.getTriggerType() == "DiJet_Trigger"))
788  diJetFire = true;
789  } // Valid hlt trigger object
790  } // Loop over L1 objects
791  } // Valid L1 trigger object
792  v.getMEhisto_N()->Fill(jetsize);
793 
794  //--------------------------------------------------------
795  if ((v.getTriggerType() == "DiJet_Trigger") && jetPtVec.size() > 1) {
796  double AveJetPt = (jetPtVec[0] + jetPtVec[1]) / 2;
797  double AveJetEta = (jetEtaVec[0] + jetEtaVec[1]) / 2;
798  double JetDelPhi = deltaPhi(jetPhiVec[0], jetPhiVec[1]);
799  double AveHLTPt = (hltPtVec[0] + hltPtVec[1]) / 2;
800  double AveHLTEta = (hltEtaVec[0] + hltEtaVec[1]) / 2;
801  double HLTDelPhi = deltaPhi(hltPhiVec[0], hltPhiVec[1]);
802  v.getMEhisto_AveragePt_RecObj()->Fill(AveJetPt);
803  v.getMEhisto_AverageEta_RecObj()->Fill(AveJetEta);
804  v.getMEhisto_DeltaPhi_RecObj()->Fill(JetDelPhi);
805  //
806  v.getMEhisto_AveragePt_HLTObj()->Fill(AveHLTPt);
807  v.getMEhisto_AverageEta_HLTObj()->Fill(AveHLTEta);
808  v.getMEhisto_DeltaPhi_HLTObj()->Fill(HLTDelPhi);
809  }
810  }
811  if (verbose_)
812  cout << "<< Exiting fillMEforMonAllTrigger " << endl;
813 }
814 
815 //------------------------------------------------------------------------//
817  if (!triggerResults_.isValid())
818  return;
819 
820  bool denompassed = false;
821  bool numpassed = false;
823 
824  for (auto& v : hltPathsEff_) {
825  denompassed = false;
826  numpassed = false;
827 
828  unsigned indexNum = triggerNames_.triggerIndex(v.getPath());
829  unsigned indexDenom = triggerNames_.triggerIndex(v.getDenomPath());
830 
831  if (indexNum < triggerNames_.size() && triggerResults_->accept(indexNum))
832  numpassed = true;
833  if (indexDenom < triggerNames_.size() && triggerResults_->accept(indexDenom))
834  denompassed = true;
835 
836  if (denompassed == false)
837  continue;
838 
839  //if(numpassed==true){
840  edm::InputTag hltTag(v.getLabel(), "", processname_);
841  const int hltIndex = triggerObj_->filterIndex(hltTag);
842  edm::InputTag l1Tag(v.getl1Path(), "", processname_);
843  const int l1Index = triggerObj_->filterIndex(l1Tag);
844  //}
845 
846  //----------------------------------------------------------------------
847  //double pTcut = 0;
848  double trigLowpTcut = 0;
849  double trigMedpTcut = 0;
850  double trigHighpTcut = 0;
851  double trigLowpTcutFwd = 0;
852  double trigMedpTcutFwd = 0;
853  double trigHighpTcutFwd = 0;
854  //
855  //double pTPFcut = 0 ;
856  double trigLowpTPFcut = 0;
857  double trigMedpTPFcut = 0;
858  double trigHighpTPFcut = 0;
859  double trigLowpTPFcutFwd = 0;
860  double trigMedpTPFcutFwd = 0;
861  double trigHighpTPFcutFwd = 0;
862  //
863  //cout<<"pre-path" << v->getPath()<<endl;
864  size_t jetstrfound = v.getPath().find("Jet");
865  //size_t censtrfound = v->getPath().find("Central"); //shoouldn't be needed?
866  string tpath = v.getPath();
867  string jetTrigVal;
868  float jetVal = 0.;
869  //
870  if (jetstrfound != string::npos) { // && ustrfound != string::npos ){
871  //cout<<v->getPath()<<endl;
872  for (int trig = int(jetstrfound) + 3; trig < int(jetstrfound) + 7; trig++) { // int(ustrfound); trig++){
873  if (!isdigit(tpath[trig]))
874  break;
875  jetTrigVal += tpath[trig];
876  }
877  jetVal = atof(jetTrigVal.c_str());
878  //
879  if (jetVal > 0.) {
880  if (jetVal < 50.) {
881  //pTcut = jetVal / 2.;
882  trigMedpTcut = jetVal + 5.;
883  trigHighpTcut = jetVal + 10.;
884  //
885  trigLowpTcutFwd = jetVal + 9.;
886  trigMedpTcutFwd = jetVal + 15.;
887  trigHighpTcutFwd = jetVal + 21.;
888  } else {
889  //pTcut = jetVal - 20. ;
890  trigMedpTcut = jetVal + 2.;
891  trigHighpTcut = jetVal + 60.;
892  //
893  trigLowpTcutFwd = jetVal + 22.;
894  trigMedpTcutFwd = jetVal + 25.;
895  trigHighpTcutFwd = jetVal + 110.;
896  }
897  trigLowpTcut = jetVal;
898  }
899  //
900  if (jetVal > 0.) {
901  if (jetVal < 50.) {
902  //pTPFcut = jetVal ;
903  trigMedpTPFcut = jetVal + 20.;
904  trigHighpTPFcut = jetVal + 40.;
905  //
906  trigLowpTPFcutFwd = jetVal + 60.;
907  trigMedpTPFcutFwd = jetVal + 80.;
908  trigHighpTPFcutFwd = jetVal + 100.;
909  } else {
910  //pTPFcut = jetVal ;
911  trigMedpTPFcut = jetVal + 40.;
912  trigHighpTPFcut = jetVal + 140.;
913  //
914  trigLowpTPFcutFwd = jetVal + 110.;
915  trigMedpTPFcutFwd = jetVal + 130.;
916  trigHighpTPFcutFwd = jetVal + 190.;
917  }
918  trigLowpTPFcut = jetVal;
919  }
920  }
921  //----------------------------------------------------------------------
922 
923  //CaloJet paths
924  if (verbose_)
925  std::cout << "fillMEforEffAllTrigger: CaloJet -------------------" << std::endl;
926  if (calojetColl_.isValid() && (v.getObjectType() == trigger::TriggerJet)) {
927  //cout<<" - CaloJet "<<endl;
928  //&& (v->getPath().find("HLT_PFJet")==std::string::npos)
929  //&& (v->getPath().find("HLT_DiPFJet")==std::string::npos)){
930  bool jetIDbool = false;
931  double leadjpt = CaloJetPt[0];
932  double leadjeta = CaloJetEta[0];
933  double leadjphi = CaloJetPhi[0];
934  //double ljemf = CaloJetEMF[0];
935  double ljfhpd = CaloJetfHPD[0];
936  double ljn90 = CaloJetn90[0];
937  if ((v.getTriggerType() == "SingleJet_Trigger") && !calojet.empty()) { //this line stops the central jets
938  if ((ljfhpd < _fHPD) && (ljn90 > _n90Hits)) {
939  if (verbose_)
940  cout << "Passed CaloJet ID -------------------" << endl;
941  jetIDbool = true;
942  //Denominator fill
943  v.getMEhisto_DenominatorPt()->Fill(leadjpt);
944  if (isBarrel(leadjeta))
945  v.getMEhisto_DenominatorPtBarrel()->Fill(leadjpt);
946  if (isEndCap(leadjeta))
947  v.getMEhisto_DenominatorPtEndcap()->Fill(leadjpt);
948  if (isForward(leadjeta))
949  v.getMEhisto_DenominatorPtForward()->Fill(leadjpt);
950  v.getMEhisto_DenominatorEta()->Fill(leadjeta);
951  v.getMEhisto_DenominatorPhi()->Fill(leadjphi);
952  v.getMEhisto_DenominatorEtaPhi()->Fill(leadjeta, leadjphi);
953  if (isBarrel(leadjeta)) {
954  v.getMEhisto_DenominatorEtaBarrel()->Fill(leadjeta);
955  v.getMEhisto_DenominatorPhiBarrel()->Fill(leadjphi);
956  }
957  if (isEndCap(leadjeta)) {
958  v.getMEhisto_DenominatorEtaEndcap()->Fill(leadjeta);
959  v.getMEhisto_DenominatorPhiEndcap()->Fill(leadjphi);
960  }
961  if (isForward(leadjeta)) {
962  v.getMEhisto_DenominatorEtaForward()->Fill(leadjeta);
963  v.getMEhisto_DenominatorPhiForward()->Fill(leadjphi);
964  }
965  if ((leadjpt > trigLowpTcut && !isForward(leadjeta)) || (leadjpt > trigLowpTcutFwd && isForward(leadjeta))) {
966  v.getMEhisto_DenominatorEta_LowpTcut()->Fill(leadjeta);
967  v.getMEhisto_DenominatorPhi_LowpTcut()->Fill(leadjphi);
968  v.getMEhisto_DenominatorEtaPhi_LowpTcut()->Fill(leadjeta, leadjphi);
969  }
970  if ((leadjpt > trigMedpTcut && !isForward(leadjeta)) || (leadjpt > trigMedpTcutFwd && isForward(leadjeta))) {
971  v.getMEhisto_DenominatorEta_MedpTcut()->Fill(leadjeta);
972  v.getMEhisto_DenominatorPhi_MedpTcut()->Fill(leadjphi);
973  v.getMEhisto_DenominatorEtaPhi_MedpTcut()->Fill(leadjeta, leadjphi);
974  }
975  if ((leadjpt > trigHighpTcut && !isForward(leadjeta)) ||
976  (leadjpt > trigHighpTcutFwd && isForward(leadjeta))) {
977  v.getMEhisto_DenominatorEta_HighpTcut()->Fill(leadjeta);
978  v.getMEhisto_DenominatorPhi_HighpTcut()->Fill(leadjphi);
979  v.getMEhisto_DenominatorEtaPhi_HighpTcut()->Fill(leadjeta, leadjphi);
980  }
981 
982  //Numerator fill
983  if (numpassed) {
984  //
985  double dRmin = 99999.;
986  double dPhimin = 9999.;
987  if (v.getPath().find("L1") != std::string::npos) {
988  if (l1Index >= triggerObj_->sizeFilters()) {
989  edm::LogInfo("JetMETHLTOfflineSource") << "no index hlt" << hltIndex << " of that name ";
990  } else {
991  const trigger::Keys& kl1 = triggerObj_->filterKeys(l1Index);
992  for (unsigned short ki : kl1) {
993  double dR = deltaR(toc[ki].eta(), toc[ki].phi(), leadjeta, leadjphi);
994  if (dR < dRmin) {
995  dRmin = dR;
996  }
997  }
998  }
999  } else {
1000  if (hltIndex >= triggerObj_->sizeFilters()) {
1001  edm::LogInfo("JetMETHLTOfflineSource") << "no index hlt" << hltIndex << " of that name ";
1002  } else {
1003  const trigger::Keys& khlt = triggerObj_->filterKeys(hltIndex);
1004  auto kj = khlt.begin();
1005  for (; kj != khlt.end(); ++kj) {
1006  double dR = deltaR(toc[*kj].eta(), toc[*kj].phi(), leadjeta, leadjphi);
1007  if (dR < dRmin) {
1008  dRmin = dR;
1009  }
1010  double dPhi = deltaPhi(toc[*kj].phi(), leadjphi);
1011  if (dPhi < dPhimin) {
1012  dPhimin = dPhi;
1013  }
1014  }
1015  //v->getMEhisto_DeltaPhi()->Fill(dPhimin);
1016  v.getMEhisto_DeltaPhi()->Fill(dPhimin);
1017  v.getMEhisto_DeltaR()->Fill(dRmin);
1018  }
1019  }
1020  if (dRmin < 0.1 || (v.getPath().find("L1") != std::string::npos && dRmin < 0.4)) {
1021  v.getMEhisto_NumeratorPt()->Fill(leadjpt);
1022  if (isBarrel(leadjeta))
1023  v.getMEhisto_NumeratorPtBarrel()->Fill(leadjpt);
1024  if (isEndCap(leadjeta))
1025  v.getMEhisto_NumeratorPtEndcap()->Fill(leadjpt);
1026  if (isForward(leadjeta))
1027  v.getMEhisto_NumeratorPtForward()->Fill(leadjpt);
1028  v.getMEhisto_NumeratorEta()->Fill(leadjeta);
1029  v.getMEhisto_NumeratorPhi()->Fill(leadjphi);
1030  v.getMEhisto_NumeratorEtaPhi()->Fill(leadjeta, leadjphi);
1031  if (isBarrel(leadjeta)) {
1032  v.getMEhisto_NumeratorEtaBarrel()->Fill(leadjeta);
1033  v.getMEhisto_NumeratorPhiBarrel()->Fill(leadjphi);
1034  }
1035  if (isEndCap(leadjeta)) {
1036  v.getMEhisto_NumeratorEtaEndcap()->Fill(leadjeta);
1037  v.getMEhisto_NumeratorPhiEndcap()->Fill(leadjphi);
1038  }
1039  if (isForward(leadjeta)) {
1040  v.getMEhisto_NumeratorEtaForward()->Fill(leadjeta);
1041  v.getMEhisto_NumeratorPhiForward()->Fill(leadjphi);
1042  }
1043  if ((leadjpt > trigLowpTcut && !isForward(leadjeta)) ||
1044  (leadjpt > trigLowpTcutFwd && isForward(leadjeta))) {
1045  v.getMEhisto_NumeratorEta_LowpTcut()->Fill(leadjeta);
1046  v.getMEhisto_NumeratorPhi_LowpTcut()->Fill(leadjphi);
1047  v.getMEhisto_NumeratorEtaPhi_LowpTcut()->Fill(leadjeta, leadjphi);
1048  }
1049  if ((leadjpt > trigMedpTcut && !isForward(leadjeta)) ||
1050  (leadjpt > trigMedpTcutFwd && isForward(leadjeta))) {
1051  v.getMEhisto_NumeratorEta_MedpTcut()->Fill(leadjeta);
1052  v.getMEhisto_NumeratorPhi_MedpTcut()->Fill(leadjphi);
1053  v.getMEhisto_NumeratorEtaPhi_MedpTcut()->Fill(leadjeta, leadjphi);
1054  }
1055  if ((leadjpt > trigHighpTcut && !isForward(leadjeta)) ||
1056  (leadjpt > trigHighpTcutFwd && isForward(leadjeta))) {
1057  v.getMEhisto_NumeratorEta_HighpTcut()->Fill(leadjeta);
1058  v.getMEhisto_NumeratorPhi_HighpTcut()->Fill(leadjphi);
1059  v.getMEhisto_NumeratorEtaPhi_HighpTcut()->Fill(leadjeta, leadjphi);
1060  }
1061  }
1062  } //numpassed
1063  } //CalojetID filter
1064  }
1065 
1066  if (jetIDbool == true && (v.getTriggerType() == "DiJet_Trigger") && calojet.size() > 1) {
1067  if (((CaloJetEMF[1] > _fEMF || std::abs(CaloJetEta[1]) > _feta) && CaloJetfHPD[0] < _fHPD &&
1068  CaloJetn90[0] > _n90Hits)) {
1069  v.getMEhisto_DenominatorPt()->Fill((CaloJetPt[0] + CaloJetPt[1]) / 2.);
1070  v.getMEhisto_DenominatorEta()->Fill((CaloJetEta[0] + CaloJetEta[1]) / 2.);
1071  if (numpassed == true) {
1072  v.getMEhisto_NumeratorPt()->Fill((CaloJetPt[0] + CaloJetPt[1]) / 2.);
1073  v.getMEhisto_NumeratorEta()->Fill((CaloJetEta[0] + CaloJetEta[1]) / 2.);
1074  }
1075  }
1076  }
1077  } // Jet trigger and valid jet collection
1078 
1079  //PFJet paths
1080  if (verbose_)
1081  std::cout << "fillMEforEffAllTrigger: PFJet -------------------" << std::endl;
1082  if (pfjetColl_.isValid() && (v.getObjectType() == trigger::TriggerJet)) {
1083  //cout<<" - PFJet "<<endl;
1084  //&& (v->getPath().find("HLT_PFJet")!=std::string::npos)
1085  //&& (v->getPath().find("HLT_DiPFJet")!=std::string::npos)){
1086  bool jetIDbool = false;
1087  double leadjpt = PFJetPt[0];
1088  double leadjeta = PFJetEta[0];
1089  double leadjphi = PFJetPhi[0];
1090  double ljNHEF = PFJetNHEF[0];
1091  double ljCHEF = PFJetCHEF[0];
1092  double ljNEMF = PFJetNEMF[0];
1093  double ljCEMF = PFJetCEMF[0];
1094  //double sleadjpt = PFJetPt[1];
1095  //double sleadjeta = PFJetEta[1];
1096  //double sleadjphi = PFJetPhi[1];
1097  double sljNHEF = PFJetNHEF[1];
1098  double sljCHEF = PFJetCHEF[1];
1099  double sljNEMF = PFJetNEMF[1];
1100  double sljCEMF = PFJetCEMF[1];
1101  //
1102  double pfMHTx = pfMHTx_All;
1103  double pfMHTy = pfMHTy_All;
1104  //
1105  if ((v.getTriggerType() == "SingleJet_Trigger") && !pfjet.empty()) { //this line stops the central jets
1106 
1107  //======get pfmht
1108  _pfMHT = sqrt(pfMHTx * pfMHTx + pfMHTy * pfMHTy);
1109  v.getMEhisto_DenominatorPFMHT()->Fill(_pfMHT);
1110 
1111  if (ljNHEF >= _min_NHEF && ljNHEF <= _max_NHEF && ljCHEF >= _min_CHEF && ljCHEF <= _max_CHEF &&
1112  ljNEMF >= _min_NEMF && ljNEMF <= _max_NEMF && ljCEMF >= _min_CEMF && ljCEMF <= _max_CEMF) {
1113  if (verbose_)
1114  cout << "Passed PFJet ID -------------------" << endl;
1115  jetIDbool = true;
1116  v.getMEhisto_DenominatorPFPt()->Fill(leadjpt);
1117  if (isBarrel(leadjeta))
1118  v.getMEhisto_DenominatorPFPtBarrel()->Fill(leadjpt);
1119  if (isEndCap(leadjeta))
1120  v.getMEhisto_DenominatorPFPtEndcap()->Fill(leadjpt);
1121  if (isForward(leadjeta))
1122  v.getMEhisto_DenominatorPFPtForward()->Fill(leadjpt);
1123  v.getMEhisto_DenominatorPFEta()->Fill(leadjeta);
1124  v.getMEhisto_DenominatorPFPhi()->Fill(leadjphi);
1125  v.getMEhisto_DenominatorPFEtaPhi()->Fill(leadjeta, leadjphi);
1126  if (isBarrel(leadjeta)) {
1127  v.getMEhisto_DenominatorPFEtaBarrel()->Fill(leadjeta);
1128  v.getMEhisto_DenominatorPFPhiBarrel()->Fill(leadjphi);
1129  }
1130  if (isEndCap(leadjeta)) {
1131  v.getMEhisto_DenominatorPFEtaEndcap()->Fill(leadjeta);
1132  v.getMEhisto_DenominatorPFPhiEndcap()->Fill(leadjphi);
1133  }
1134  if (isForward(leadjeta)) {
1135  v.getMEhisto_DenominatorPFEtaForward()->Fill(leadjeta);
1136  v.getMEhisto_DenominatorPFPhiForward()->Fill(leadjphi);
1137  }
1138  if ((leadjpt > trigLowpTPFcut && !isForward(leadjeta)) ||
1139  (leadjpt > trigLowpTPFcutFwd && isForward(leadjeta))) {
1140  v.getMEhisto_DenominatorPFEta_LowpTcut()->Fill(leadjeta);
1141  v.getMEhisto_DenominatorPFPhi_LowpTcut()->Fill(leadjphi);
1142  v.getMEhisto_DenominatorPFEtaPhi_LowpTcut()->Fill(leadjeta, leadjphi);
1143  }
1144  if ((leadjpt > trigMedpTPFcut && !isForward(leadjeta)) ||
1145  (leadjpt > trigMedpTPFcutFwd && isForward(leadjeta))) {
1146  v.getMEhisto_DenominatorPFEta_MedpTcut()->Fill(leadjeta);
1147  v.getMEhisto_DenominatorPFPhi_MedpTcut()->Fill(leadjphi);
1148  v.getMEhisto_DenominatorPFEtaPhi_MedpTcut()->Fill(leadjeta, leadjphi);
1149  }
1150  if ((leadjpt > trigHighpTPFcut && !isForward(leadjeta)) ||
1151  (leadjpt > trigHighpTPFcutFwd && isForward(leadjeta))) {
1152  v.getMEhisto_DenominatorPFEta_HighpTcut()->Fill(leadjeta);
1153  v.getMEhisto_DenominatorPFPhi_HighpTcut()->Fill(leadjphi);
1154  v.getMEhisto_DenominatorPFEtaPhi_HighpTcut()->Fill(leadjeta, leadjphi);
1155  }
1156 
1157  //Numerator fill
1158  if (numpassed) {
1159  double dRmin = 99999.;
1160  double dPhimin = 9999.;
1161  if (v.getPath().find("L1") != std::string::npos) {
1162  if (l1Index >= triggerObj_->sizeFilters()) {
1163  edm::LogInfo("JetMETHLTOfflineSource") << "no index hlt" << hltIndex << " of that name ";
1164  } else {
1165  const trigger::Keys& kl1 = triggerObj_->filterKeys(l1Index);
1166  for (unsigned short ki : kl1) {
1167  double dR = deltaR(toc[ki].eta(), toc[ki].phi(), leadjeta, leadjphi);
1168  if (dR < dRmin) {
1169  dRmin = dR;
1170  }
1171  }
1172  }
1173  } else {
1174  if (hltIndex >= triggerObj_->sizeFilters()) {
1175  edm::LogInfo("JetMETHLTOfflineSource") << "no index hlt" << hltIndex << " of that name ";
1176  } else {
1177  const trigger::Keys& khlt = triggerObj_->filterKeys(hltIndex);
1178  for (unsigned short kj : khlt) {
1179  double dR = deltaR(toc[kj].eta(), toc[kj].phi(), leadjeta, leadjphi);
1180  if (dR < dRmin) {
1181  dRmin = dR;
1182  }
1183  double dPhi = deltaPhi(toc[kj].phi(), leadjphi);
1184  if (dPhi < dPhimin) {
1185  dPhimin = dPhi;
1186  }
1187  }
1188  v.getMEhisto_PFDeltaPhi()->Fill(dPhimin);
1189  v.getMEhisto_PFDeltaR()->Fill(dRmin);
1190  }
1191  }
1192  if (dRmin < 0.1 || (v.getPath().find("L1") != std::string::npos && dRmin < 0.4)) {
1193  v.getMEhisto_NumeratorPFPt()->Fill(leadjpt);
1194  if (isBarrel(leadjeta))
1195  v.getMEhisto_NumeratorPFPtBarrel()->Fill(leadjpt);
1196  if (isEndCap(leadjeta))
1197  v.getMEhisto_NumeratorPFPtEndcap()->Fill(leadjpt);
1198  if (isForward(leadjeta))
1199  v.getMEhisto_NumeratorPFPtForward()->Fill(leadjpt);
1200  v.getMEhisto_NumeratorPFEta()->Fill(leadjeta);
1201  v.getMEhisto_NumeratorPFPhi()->Fill(leadjphi);
1202  v.getMEhisto_NumeratorPFEtaPhi()->Fill(leadjeta, leadjphi);
1203  if (isBarrel(leadjeta)) {
1204  v.getMEhisto_NumeratorPFEtaBarrel()->Fill(leadjeta);
1205  v.getMEhisto_NumeratorPFPhiBarrel()->Fill(leadjphi);
1206  }
1207  if (isEndCap(leadjeta)) {
1208  v.getMEhisto_NumeratorPFEtaEndcap()->Fill(leadjeta);
1209  v.getMEhisto_NumeratorPFPhiEndcap()->Fill(leadjphi);
1210  }
1211  if (isForward(leadjeta)) {
1212  v.getMEhisto_NumeratorPFEtaForward()->Fill(leadjeta);
1213  v.getMEhisto_NumeratorPFPhiForward()->Fill(leadjphi);
1214  }
1215  if ((leadjpt > trigLowpTPFcut && !isForward(leadjeta)) ||
1216  (leadjpt > trigLowpTPFcutFwd && isForward(leadjeta))) {
1217  v.getMEhisto_NumeratorPFEta_LowpTcut()->Fill(leadjeta);
1218  v.getMEhisto_NumeratorPFPhi_LowpTcut()->Fill(leadjphi);
1219  v.getMEhisto_NumeratorPFEtaPhi_LowpTcut()->Fill(leadjeta, leadjphi);
1220  }
1221  if ((leadjpt > trigMedpTPFcut && !isForward(leadjeta)) ||
1222  (leadjpt > trigMedpTPFcutFwd && isForward(leadjeta))) {
1223  v.getMEhisto_NumeratorPFEta_MedpTcut()->Fill(leadjeta);
1224  v.getMEhisto_NumeratorPFPhi_MedpTcut()->Fill(leadjphi);
1225  v.getMEhisto_NumeratorPFEtaPhi_MedpTcut()->Fill(leadjeta, leadjphi);
1226  }
1227  if ((leadjpt > trigHighpTPFcut && !isForward(leadjeta)) ||
1228  (leadjpt > trigHighpTPFcutFwd && isForward(leadjeta))) {
1229  v.getMEhisto_NumeratorPFEta_HighpTcut()->Fill(leadjeta);
1230  v.getMEhisto_NumeratorPFPhi_HighpTcut()->Fill(leadjphi);
1231  v.getMEhisto_NumeratorPFEtaPhi_HighpTcut()->Fill(leadjeta, leadjphi);
1232  }
1233  }
1234  }
1235  }
1236  }
1237  if (jetIDbool == true && (v.getTriggerType() == "DiJet_Trigger") && pfjet.size() > 1) {
1238  if (ljNHEF >= _min_NHEF && ljNHEF <= _max_NHEF && ljCHEF >= _min_CHEF && ljCHEF <= _max_CHEF &&
1239  ljNEMF >= _min_NEMF && ljNEMF <= _max_NEMF && ljCEMF >= _min_CEMF && ljCEMF <= _max_CEMF &&
1240  sljNHEF >= _min_NHEF && sljNHEF <= _max_NHEF && sljCHEF >= _min_CHEF && sljCHEF <= _max_CHEF &&
1241  sljNEMF >= _min_NEMF && sljNEMF <= _max_NEMF && sljCEMF >= _min_CEMF && sljCEMF <= _max_CEMF) {
1242  v.getMEhisto_DenominatorPFPt()->Fill((PFJetPt[0] + PFJetPt[1]) / 2.);
1243  v.getMEhisto_DenominatorPFEta()->Fill((PFJetEta[0] + PFJetEta[1]) / 2.);
1244  if (numpassed) {
1245  v.getMEhisto_NumeratorPFPt()->Fill((PFJetPt[0] + PFJetPt[1]) / 2.);
1246  v.getMEhisto_NumeratorPFEta()->Fill((PFJetEta[0] + PFJetEta[1]) / 2.);
1247  }
1248  }
1249  }
1250  } // PF Jet trigger and valid jet collection
1251 
1252  //CaloMET path
1253  if (verbose_)
1254  std::cout << "fillMEforEffAllTrigger: CaloMET -------------------" << std::endl;
1255  if (calometColl_.isValid() &&
1256  ((v.getObjectType() == trigger::TriggerMET) || (v.getObjectType() == trigger::TriggerTET)) &&
1257  (v.getPath().find("HLT_PFMET") == std::string::npos)) {
1258  const CaloMETCollection* calometcol = calometColl_.product();
1259  const CaloMET met = calometcol->front();
1260  v.getMEhisto_DenominatorPt()->Fill(met.et());
1261  v.getMEhisto_DenominatorPhi()->Fill(met.phi());
1262  if (numpassed) {
1263  v.getMEhisto_NumeratorPt()->Fill(met.et());
1264  v.getMEhisto_NumeratorPhi()->Fill(met.phi());
1265  if (hltIndex >= triggerObj_->sizeFilters()) {
1266  edm::LogInfo("JetMETHLTOfflineSource") << "no index hlt" << hltIndex << " of that name ";
1267  } else {
1268  double dPhimin = 9999.; //
1269  const trigger::Keys& khlt = triggerObj_->filterKeys(hltIndex);
1270  for (unsigned short kj : khlt) {
1271  double dPhi = deltaPhi(toc[kj].phi(), met.phi());
1272  if (dPhi < dPhimin) {
1273  dPhimin = dPhi;
1274  }
1275  }
1276  v.getMEhisto_DeltaPhi()->Fill(dPhimin);
1277  }
1278  }
1279  }
1280 
1281  //PFMET
1282  if (verbose_)
1283  std::cout << "fillMEforEffAllTrigger: PFMET -------------------" << std::endl;
1284  if (pfmetColl_.isValid() &&
1285  ((v.getObjectType() == trigger::TriggerMET) || (v.getObjectType() == trigger::TriggerTET)) &&
1286  (v.getPath().find("HLT_PFMET") != std::string::npos)) {
1287  const PFMETCollection* pfmetcol = pfmetColl_.product();
1288  const PFMET met = pfmetcol->front();
1289  v.getMEhisto_DenominatorPt()->Fill(met.et());
1290  v.getMEhisto_DenominatorPhi()->Fill(met.phi());
1291  if (numpassed) {
1292  v.getMEhisto_NumeratorPt()->Fill(met.et());
1293  v.getMEhisto_NumeratorPhi()->Fill(met.phi());
1294  if (hltIndex >= triggerObj_->sizeFilters()) {
1295  edm::LogInfo("JetMETHLTOfflineSource") << "no index hlt" << hltIndex << " of that name ";
1296  } else {
1297  double dPhimin = 9999.; //
1298  const trigger::Keys& khlt = triggerObj_->filterKeys(hltIndex);
1299  for (unsigned short kj : khlt) {
1300  double dPhi = deltaPhi(toc[kj].phi(), met.phi());
1301  if (dPhi < dPhimin) {
1302  dPhimin = dPhi;
1303  }
1304  }
1305  v.getMEhisto_DeltaPhi()->Fill(dPhimin);
1306  }
1307  }
1308  }
1309 
1310  /*
1311  if(pfmhtColl_.isValid() && ((v->getObjectType() == trigger::TriggerMET)|| (v->getObjectType() == trigger::TriggerTET))){
1312  const PFMHTCollection *pfmhtcol = pfmhtColl_.product();
1313  const PFMHT met = pfmhtcol->front();
1314  v->getMEhisto_DenominatorPFPt()->Fill(met.pt());
1315  v->getMEhisto_DenominatorPFPhi()->Fill(met.phi());
1316  }// PFMHT trigger and valid MET collection
1317  */
1318  } // trigger under study
1319 }
1320 
1321 //------------------------------------------------------------------------//
1322 //This method is called before the booking action in the DQMStore is triggered.
1324  if (!isSetup_) {
1325  //--- htlConfig_
1326  bool changed(true);
1327  if (!hltConfig_.init(run, c, processname_, changed)) {
1328  LogDebug("HLTJetMETDQMSource") << "HLTConfigProvider failed to initialize.";
1329  }
1330 
1331  /*
1332  Here we select the Single Jet, DiJet, MET trigger. SingleJet and DiJet trigger are saved under same object type "TriggerJet".
1333  We can easily separate out single and di jet trigger later. For the first trigger in the list, denominator trigger is dummy
1334  (empty) whereas for other triggers denom is previous trigger of same type. e.g. SingleJet50 has singleJet30 as denominator.
1335  */
1336 
1337  const unsigned int n(hltConfig_.size());
1338  int singleJet = 0;
1339  int diJet = 0;
1340  int met = 0;
1341  int tet = 0;
1342  for (unsigned int i = 0; i != n; ++i) {
1343  bool denomFound = false;
1344  bool numFound = false;
1345  bool checkPath = false;
1346 
1347  //Look for paths if "path name fraction" is found in the pathname
1349  //Filter only paths JetMET triggers are interested in
1350  auto controlPathname = pathFilter_.begin();
1351  for (; controlPathname != pathFilter_.end(); ++controlPathname) {
1352  if (pathname.find((*controlPathname)) != std::string::npos) {
1353  checkPath = true;
1354  break;
1355  }
1356  }
1357  if (checkPath == false)
1358  continue;
1359 
1360  //Reject if keyword(s) is found in the pathname
1361  auto rejectPathname = pathRejectKeyword_.begin();
1362  for (; rejectPathname != pathRejectKeyword_.end(); ++rejectPathname) {
1363  if (pathname.find((*rejectPathname)) != std::string::npos) {
1364  checkPath = false;
1365  break;
1366  }
1367  }
1368  if (checkPath == false)
1369  continue;
1370 
1371  //
1372  if (verbose_)
1373  cout << "==pathname==" << pathname << endl;
1374  std::string dpathname = MuonTrigPaths_[0];
1375  std::string l1pathname = "dummy";
1377  unsigned int usedPrescale = 1;
1378  unsigned int objectType = 0;
1379  std::string triggerType = "";
1380  std::string filtername("dummy");
1381  std::string Denomfiltername("denomdummy");
1382 
1383  if (pathname.find("Jet") != std::string::npos && !(pathname.find("DoubleJet") != std::string::npos) &&
1384  !(pathname.find("DiJet") != std::string::npos) && !(pathname.find("DiPFJet") != std::string::npos) &&
1385  !(pathname.find("BTag") != std::string::npos) && !(pathname.find("Mu") != std::string::npos) &&
1386  !(pathname.find("Fwd") != std::string::npos)) {
1387  triggerType = "SingleJet_Trigger";
1388  objectType = trigger::TriggerJet;
1389  }
1390  if (pathname.find("DiJet") != std::string::npos || pathname.find("DiPFJet") != std::string::npos ||
1391  pathname.find("DoubleJet") != std::string::npos) {
1392  triggerType = "DiJet_Trigger";
1393  objectType = trigger::TriggerJet;
1394  }
1395  if (pathname.find("MET") != std::string::npos) {
1396  triggerType = "MET_Trigger";
1397  objectType = trigger::TriggerMET;
1398  }
1399  if (pathname.find("HT") != std::string::npos) {
1400  triggerType = "TET_Trigger";
1401  objectType = trigger::TriggerTET;
1402  }
1403 
1404  //
1405  if (objectType == trigger::TriggerJet && !(pathname.find("DiJet") != std::string::npos) &&
1406  !(pathname.find("DiPFJet") != std::string::npos) && !(pathname.find("DoubleJet") != std::string::npos)) {
1407  singleJet++;
1408  if (singleJet > 1)
1409  dpathname = dpathname = hltConfig_.triggerName(i - 1);
1410  if (singleJet == 1)
1411  dpathname = MuonTrigPaths_[0];
1412  }
1413  if (objectType == trigger::TriggerJet &&
1414  ((pathname.find("DiJet") != std::string::npos) || (pathname.find("DiPFJet") != std::string::npos))) {
1415  diJet++;
1416  if (diJet > 1)
1417  dpathname = dpathname = hltConfig_.triggerName(i - 1);
1418  if (diJet == 1)
1419  dpathname = MuonTrigPaths_[0];
1420  }
1421  if (objectType == trigger::TriggerMET) {
1422  met++;
1423  if (met > 1)
1424  dpathname = dpathname = hltConfig_.triggerName(i - 1);
1425  if (met == 1)
1426  dpathname = MuonTrigPaths_[0];
1427  }
1428  if (objectType == trigger::TriggerTET) {
1429  tet++;
1430  if (tet > 1)
1431  dpathname = dpathname = hltConfig_.triggerName(i - 1);
1432  if (tet == 1)
1433  dpathname = MuonTrigPaths_[0];
1434  }
1435 
1436  // find L1 condition for numpath with numpath objecttype
1437  // find PSet for L1 global seed for numpath,sss
1438  // list module labels for numpath
1439 
1440  // Checking if the trigger exist in HLT table or not
1441  for (unsigned int i = 0; i != n; ++i) {
1442  std::string HLTname = hltConfig_.triggerName(i);
1443  if (HLTname == pathname)
1444  numFound = true;
1445  if (HLTname == dpathname)
1446  denomFound = true;
1447  }
1448 
1449  if (numFound) { //make trigger exist in the menu
1450  //ml needs change l1pathname
1451  l1pathname = getL1ConditionModuleName(pathname); //ml added L1conditionmodulename
1452  //ml added
1453  std::vector<std::string> numpathmodules = hltConfig_.moduleLabels(pathname);
1454  for (auto& numpathmodule : numpathmodules) {
1455  edm::InputTag testTag(numpathmodule, "", processname_);
1456  if ((hltConfig_.moduleType(numpathmodule) == "HLT1CaloJet") ||
1457  (hltConfig_.moduleType(numpathmodule) == "HLT1PFJet") ||
1458  (hltConfig_.moduleType(numpathmodule) == "HLTDiJetAveFilter") ||
1459  (hltConfig_.moduleType(numpathmodule) == "HLTDiPFJetAveFilter") ||
1460  (hltConfig_.moduleType(numpathmodule) == "HLT1CaloMET") ||
1461  (hltConfig_.moduleType(numpathmodule) == "HLTMhtFilter") ||
1462  (hltConfig_.moduleType(numpathmodule) == "HLTPrescaler"))
1463  filtername = numpathmodule;
1464  }
1465  }
1466 
1467  if (objectType != 0 && denomFound) {
1468  std::vector<std::string> numpathmodules = hltConfig_.moduleLabels(dpathname);
1469  for (auto& numpathmodule : numpathmodules) {
1470  edm::InputTag testTag(numpathmodule, "", processname_);
1471  if ((hltConfig_.moduleType(numpathmodule) == "HLT1CaloJet") ||
1472  (hltConfig_.moduleType(numpathmodule) == "HLT1PFJet") ||
1473  (hltConfig_.moduleType(numpathmodule) == "HLTDiJetAveFilter") ||
1474  (hltConfig_.moduleType(numpathmodule) == "HLTDiPFJetAveFilter") ||
1475  (hltConfig_.moduleType(numpathmodule) == "HLT1CaloMET") ||
1476  (hltConfig_.moduleType(numpathmodule) == "HLTMhtFilter") ||
1477  (hltConfig_.moduleType(numpathmodule) == "HLTPrescaler"))
1478  Denomfiltername = numpathmodule;
1479  }
1480  }
1481 
1482  if (objectType != 0 && numFound) {
1483  if (verbose_)
1484  cout << "=Pathname= " << pathname << " | =Denompath= " << dpathname << " | =Filtername= " << filtername
1485  << " | =Denomfiltername= " << Denomfiltername << " | =L1pathname= " << l1pathname
1486  << " | =ObjectType= " << objectType << endl;
1487  if (!((pathname.find("HT") != std::string::npos) || (pathname.find("Quad") != std::string::npos))) {
1488  hltPathsAll_.push_back(PathInfo(usedPrescale,
1489  dpathname,
1490  pathname,
1491  l1pathname,
1492  filtername,
1493  Denomfiltername,
1494  processname_,
1495  objectType,
1496  triggerType));
1497  if (!nameForEff_ && denomFound)
1498  hltPathsEff_.push_back(PathInfo(usedPrescale,
1499  dpathname,
1500  pathname,
1501  l1pathname,
1502  filtername,
1503  Denomfiltername,
1504  processname_,
1505  objectType,
1506  triggerType));
1507  }
1508  hltPathsAllTriggerSummary_.push_back(PathInfo(usedPrescale,
1509  dpathname,
1510  pathname,
1511  l1pathname,
1512  filtername,
1513  Denomfiltername,
1514  processname_,
1515  objectType,
1516  triggerType));
1517  }
1518  } //Loop over paths
1519 
1520  if (verbose_)
1521  cout << "get names for efficicncy------------------" << endl;
1522  //---------bool to pick trigger names pair from config file-------------
1523  if (nameForEff_) {
1524  std::string l1pathname = "dummy";
1526  unsigned int usedPrescale = 1;
1527  unsigned int objectType = 0;
1528  std::string triggerType = "";
1529  std::string filtername("dummy");
1530  std::string Denomfiltername("denomdummy");
1531  for (auto& custompathnamepair : custompathnamepairs_) {
1532  std::string pathname = custompathnamepair.first;
1533  std::string dpathname = custompathnamepair.second;
1534  bool numFound = false;
1535  bool denomFound = false;
1536  // Checking if the trigger exist in HLT table or not
1537  for (unsigned int i = 0; i != n; ++i) {
1538  std::string HLTname = hltConfig_.triggerName(i);
1539  if (HLTname.find(pathname) != std::string::npos) {
1540  numFound = true;
1541  pathname = HLTname;
1542  } //changed to get versions
1543  if (HLTname.find(dpathname) != std::string::npos) {
1544  denomFound = true;
1545  dpathname = HLTname;
1546  }
1547  }
1548  if (numFound && denomFound) {
1549  if (pathname.find("Jet") != std::string::npos && !(pathname.find("DiJet") != std::string::npos) &&
1550  !(pathname.find("DiPFJet") != std::string::npos) && !(pathname.find("DoubleJet") != std::string::npos) &&
1551  !(pathname.find("BTag") != std::string::npos) && !(pathname.find("Mu") != std::string::npos) &&
1552  !(pathname.find("Fwd") != std::string::npos)) {
1553  triggerType = "SingleJet_Trigger";
1554  objectType = trigger::TriggerJet;
1555  }
1556  if (pathname.find("DiJet") != std::string::npos || pathname.find("DiPFJet") != std::string::npos ||
1557  pathname.find("DoubleJet") != std::string::npos) {
1558  triggerType = "DiJet_Trigger";
1559  objectType = trigger::TriggerJet;
1560  }
1561  if (pathname.find("MET") != std::string::npos) {
1562  triggerType = "MET_Trigger";
1563  objectType = trigger::TriggerMET;
1564  }
1565  if (pathname.find("TET") != std::string::npos) {
1566  triggerType = "TET_Trigger";
1567  objectType = trigger::TriggerTET;
1568  }
1569 
1570  l1pathname = getL1ConditionModuleName(pathname); //ml added L1conditionmodulename
1571  std::vector<std::string> numpathmodules = hltConfig_.moduleLabels(pathname);
1572  for (auto& numpathmodule : numpathmodules) {
1573  edm::InputTag testTag(numpathmodule, "", processname_);
1574  if ((hltConfig_.moduleType(numpathmodule) == "HLT1CaloJet") ||
1575  (hltConfig_.moduleType(numpathmodule) == "HLT1PFJet") ||
1576  (hltConfig_.moduleType(numpathmodule) == "HLTDiJetAveFilter") ||
1577  (hltConfig_.moduleType(numpathmodule) == "HLTDiPFJetAveFilter") ||
1578  (hltConfig_.moduleType(numpathmodule) == "HLT1CaloMET") ||
1579  (hltConfig_.moduleType(numpathmodule) == "HLTMhtFilter") ||
1580  (hltConfig_.moduleType(numpathmodule) == "HLTPrescaler"))
1581  filtername = numpathmodule;
1582  }
1583 
1584  if (objectType != 0) {
1585  std::vector<std::string> numpathmodules = hltConfig_.moduleLabels(dpathname);
1586  for (auto& numpathmodule : numpathmodules) {
1587  edm::InputTag testTag(numpathmodule, "", processname_);
1588  if ((hltConfig_.moduleType(numpathmodule) == "HLT1CaloJet") ||
1589  (hltConfig_.moduleType(numpathmodule) == "HLT1PFJet") ||
1590  (hltConfig_.moduleType(numpathmodule) == "HLTDiJetAveFilter") ||
1591  (hltConfig_.moduleType(numpathmodule) == "HLTDiPFJetAveFilter") ||
1592  (hltConfig_.moduleType(numpathmodule) == "HLT1CaloMET") ||
1593  (hltConfig_.moduleType(numpathmodule) == "HLTMhtFilter") ||
1594  (hltConfig_.moduleType(numpathmodule) == "HLTPrescaler"))
1595  Denomfiltername = numpathmodule;
1596  }
1597 
1598  if (verbose_)
1599  cout << "==pathname==" << pathname << "==denompath==" << dpathname << "==filtername==" << filtername
1600  << "==denomfiltername==" << Denomfiltername << "==l1pathname==" << l1pathname
1601  << "==objectType==" << objectType << endl;
1602  hltPathsEff_.push_back(PathInfo(usedPrescale,
1603  dpathname,
1604  pathname,
1605  l1pathname,
1606  filtername,
1607  Denomfiltername,
1608  processname_,
1609  objectType,
1610  triggerType));
1611  }
1612  }
1613  }
1614  }
1615 
1616  if (verbose_)
1617  cout << "== end hltPathsEff_.push_back ======" << endl;
1618  }
1619 }
1620 
1621 //------------------------------------------------------------------------//
1623  if (!isSetup_) {
1624  iBooker.setCurrentFolder(dirname_);
1625 
1626  //-----------------------------------------------------------------
1627  //---book trigger summary histos
1628  if (!isSetup_) {
1629  std::string foldernm = "/TriggerSummary/";
1630  iBooker.setCurrentFolder(dirname_ + foldernm);
1631 
1632  int TrigBins_ = hltPathsAllTriggerSummary_.size();
1633  double TrigMin_ = -0.5;
1634  double TrigMax_ = hltPathsAllTriggerSummary_.size() - 0.5;
1635 
1636  std::string histonm = "JetMET_TriggerRate";
1637  std::string histot = "JetMET TriggerRate Summary";
1638  rate_All = iBooker.book1D(histonm.c_str(), histot.c_str(), TrigBins_, TrigMin_, TrigMax_);
1639 
1640  histonm = "JetMET_TriggerRate_Correlation";
1641  histot = "JetMET TriggerRate Correlation Summary;y&&!x;x&&y";
1642  correlation_All =
1643  iBooker.book2D(histonm.c_str(), histot.c_str(), TrigBins_, TrigMin_, TrigMax_, TrigBins_, TrigMin_, TrigMax_);
1644 
1645  histonm = "JetMET_NVertices";
1646  histot = "No. of vertices";
1647  NVertices = iBooker.book1D(histonm.c_str(), histot.c_str(), 100, 0, 50);
1648 
1649  histonm = "JetMET_PVZ";
1650  histot = "Primary Vertex Z pos";
1651  PVZ = iBooker.book1D(histonm.c_str(), histot.c_str(), 100, -50., 50.);
1652 
1653  if (runStandalone_) {
1654  histonm = "JetMET_TriggerRate_WrtMuTrigger";
1655  histot = "JetMET TriggerRate Summary Wrt Muon Trigger ";
1656  rate_AllWrtMu = iBooker.book1D(histonm.c_str(), histot.c_str(), TrigBins_, TrigMin_, TrigMax_);
1657 
1658  histonm = "JetMET_TriggerRate_Correlation_WrtMuTrigger";
1659  histot = "JetMET TriggerRate Correlation Summary Wrt Muon Trigger;y&&!x;x&&y";
1660  correlation_AllWrtMu = iBooker.book2D(
1661  histonm.c_str(), histot.c_str(), TrigBins_, TrigMin_, TrigMax_, TrigBins_, TrigMin_, TrigMax_);
1662 
1663  histonm = "JetMET_TriggerRate_WrtMBTrigger";
1664  histot = "JetMET TriggerRate Summary Wrt MB Trigger";
1665  rate_AllWrtMB = iBooker.book1D(histonm.c_str(), histot.c_str(), TrigBins_, TrigMin_, TrigMax_);
1666 
1667  histonm = "JetMET_TriggerRate_Correlation_WrtMBTrigger";
1668  histot = "JetMET TriggerRate Correlation Wrt MB Trigger;y&&!x;x&&y";
1669  correlation_AllWrtMB = iBooker.book2D(
1670  histonm.c_str(), histot.c_str(), TrigBins_, TrigMin_, TrigMax_, TrigBins_, TrigMin_, TrigMax_);
1671  }
1672  isSetup_ = true;
1673  }
1674  //---Set bin label
1675 
1676  for (auto& v : hltPathsAllTriggerSummary_) {
1677  std::string labelnm("dummy");
1678  labelnm = v.getPath();
1679  int nbins = rate_All->getTH1()->GetNbinsX();
1680  for (int ibin = 1; ibin < nbins + 1; ibin++) {
1681  const char* binLabel = rate_All->getTH1()->GetXaxis()->GetBinLabel(ibin);
1682  std::string binLabel_str = string(binLabel);
1683  if (binLabel_str == labelnm)
1684  break;
1685  if (binLabel[0] == '\0') {
1686  rate_All->setBinLabel(ibin, labelnm);
1687  correlation_All->setBinLabel(ibin, labelnm, 1);
1688  correlation_All->setBinLabel(ibin, labelnm, 2);
1689  if (runStandalone_) {
1690  rate_AllWrtMu->setBinLabel(ibin, labelnm);
1691  rate_AllWrtMB->setBinLabel(ibin, labelnm);
1692  correlation_AllWrtMu->setBinLabel(ibin, labelnm, 1);
1693  correlation_AllWrtMB->setBinLabel(ibin, labelnm, 1);
1694  correlation_AllWrtMu->setBinLabel(ibin, labelnm, 2);
1695  correlation_AllWrtMB->setBinLabel(ibin, labelnm, 2);
1696  }
1697  break;
1698  }
1699  }
1700  }
1701 
1702  // Now define histos for All triggers
1703  if (plotAll_) {
1704  //
1705  int Nbins_ = 10;
1706  double Nmin_ = -0.5;
1707  double Nmax_ = 9.5;
1708  //
1709  int Ptbins_ = 100;
1710  if (runStandalone_)
1711  Ptbins_ = 1000;
1712  double PtMin_ = 0.;
1713  double PtMax_ = 1000.;
1714  //
1715  int Etabins_ = 50;
1716  if (runStandalone_)
1717  Etabins_ = 100;
1718  double EtaMin_ = -5.;
1719  double EtaMax_ = 5.;
1720  //
1721  int Phibins_ = 35;
1722  double PhiMin_ = -3.5;
1723  double PhiMax_ = 3.5;
1724 
1725  int Resbins_ = 30;
1726  double ResMin_ = -1.5;
1727  double ResMax_ = 1.5;
1728  //
1729  std::string dirName = dirname_ + "/MonitorAllTriggers/";
1730  for (auto& v : hltPathsAll_) {
1731  //
1732  std::string trgPathName = HLTConfigProvider::removeVersion(v.getPath());
1733  std::string subdirName = dirName + trgPathName;
1734  std::string trigPath = "(" + trgPathName + ")";
1735  iBooker.setCurrentFolder(subdirName);
1736 
1737  std::string labelname("ME");
1738  std::string histoname(labelname + "");
1739  std::string title(labelname + "");
1740 
1742  dummy = iBooker.bookFloat("dummy");
1743 
1744  if (v.getObjectType() == trigger::TriggerJet && v.getTriggerType() == "SingleJet_Trigger") {
1745  histoname = labelname + "_recObjN";
1746  title = labelname + "_recObjN;Reco multiplicity()" + trigPath;
1747  MonitorElement* N = iBooker.book1D(histoname.c_str(), title.c_str(), Nbins_, Nmin_, Nmax_);
1748  N->getTH1();
1749 
1750  histoname = labelname + "_recObjPt";
1751  title = labelname + "_recObjPt; Reco Pt[GeV/c]" + trigPath;
1752  MonitorElement* Pt = iBooker.book1D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_);
1753  Pt->getTH1();
1754 
1755  histoname = labelname + "_recObjPtBarrel";
1756  title = labelname + "_recObjPtBarrel;Reco Pt[GeV/c]" + trigPath;
1757  MonitorElement* PtBarrel = iBooker.book1D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_);
1758  PtBarrel->getTH1();
1759 
1760  histoname = labelname + "_recObjPtEndcap";
1761  title = labelname + "_recObjPtEndcap;Reco Pt[GeV/c]" + trigPath;
1762  MonitorElement* PtEndcap = iBooker.book1D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_);
1763  PtEndcap->getTH1();
1764 
1765  histoname = labelname + "_recObjPtForward";
1766  title = labelname + "_recObjPtForward;Reco Pt[GeV/c]" + trigPath;
1767  MonitorElement* PtForward = iBooker.book1D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_);
1768  PtForward->getTH1();
1769 
1770  histoname = labelname + "_recObjEta";
1771  title = labelname + "_recObjEta;Reco #eta" + trigPath;
1772  MonitorElement* Eta = iBooker.book1D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_);
1773  Eta->getTH1();
1774 
1775  histoname = labelname + "_recObjPhi";
1776  title = labelname + "_recObjPhi;Reco #Phi" + trigPath;
1777  MonitorElement* Phi = iBooker.book1D(histoname.c_str(), title.c_str(), Phibins_, PhiMin_, PhiMax_);
1778  Phi->getTH1();
1779 
1780  histoname = labelname + "_recObjEtaPhi";
1781  title = labelname + "_recObjEtaPhi;Reco #eta;Reco #Phi" + trigPath;
1782  MonitorElement* EtaPhi =
1783  iBooker.book2D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_, Phibins_, PhiMin_, PhiMax_);
1784  EtaPhi->getTH1();
1785 
1786  histoname = labelname + "_l1ObjPt";
1787  title = labelname + "_l1ObjPt;L1 Pt[GeV/c]" + trigPath;
1788  MonitorElement* Pt_L1 = iBooker.book1D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_);
1789  Pt_L1->getTH1();
1790 
1791  histoname = labelname + "_l1ObjEta";
1792  title = labelname + "_l1ObjEta;L1 #eta" + trigPath;
1793  MonitorElement* Eta_L1 = iBooker.book1D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_);
1794  Eta_L1->getTH1();
1795 
1796  histoname = labelname + "_l1ObjPhi";
1797  title = labelname + "_l1ObjPhi;L1 #Phi" + trigPath;
1798  MonitorElement* Phi_L1 = iBooker.book1D(histoname.c_str(), title.c_str(), Phibins_, PhiMin_, PhiMax_);
1799  Phi_L1->getTH1();
1800 
1801  histoname = labelname + "_l1ObjEtaPhi";
1802  title = labelname + "_l1ObjEtaPhi;L1 #eta;L1 #Phi" + trigPath;
1803  MonitorElement* EtaPhi_L1 =
1804  iBooker.book2D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_, Phibins_, PhiMin_, PhiMax_);
1805  EtaPhi_L1->getTH1();
1806 
1807  histoname = labelname + "_l1ObjN";
1808  title = labelname + "_l1ObjN;L1 multiplicity" + trigPath;
1809  MonitorElement* N_L1 = iBooker.book1D(histoname.c_str(), title.c_str(), Nbins_, Nmin_, Nmax_);
1810  N_L1->getTH1();
1811 
1812  histoname = labelname + "_l1ObjPtBarrel";
1813  title = labelname + "_l1ObjPtBarrel;L1 Pt[GeV/c]" + trigPath;
1814  MonitorElement* PtBarrel_L1 = iBooker.book1D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_);
1815  PtBarrel_L1->getTH1();
1816 
1817  histoname = labelname + "_l1ObjPtEndcap";
1818  title = labelname + "_l1ObjPtEndcap;L1 Pt[GeV/c]" + trigPath;
1819  MonitorElement* PtEndcap_L1 = iBooker.book1D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_);
1820  PtEndcap_L1->getTH1();
1821 
1822  histoname = labelname + "_l1ObjPtForward";
1823  title = labelname + "_l1ObjPtForward;L1 Pt[GeV/c]" + trigPath;
1824  MonitorElement* PtForward_L1 = iBooker.book1D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_);
1825  PtForward_L1->getTH1();
1826 
1827  histoname = labelname + "_hltObjN";
1828  title = labelname + "_hltObjN;HLT multiplicity" + trigPath;
1829  MonitorElement* N_HLT = iBooker.book1D(histoname.c_str(), title.c_str(), Nbins_, Nmin_, Nmax_);
1830  N_HLT->getTH1();
1831 
1832  histoname = labelname + "_hltObjPtBarrel";
1833  title = labelname + "_hltObjPtBarrel;HLT Pt[GeV/c]" + trigPath;
1834  MonitorElement* PtBarrel_HLT = iBooker.book1D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_);
1835  PtBarrel_HLT->getTH1();
1836 
1837  histoname = labelname + "_hltObjPtEndcap";
1838  title = labelname + "_hltObjPtEndcap;HLT Pt[GeV/c]" + trigPath;
1839  MonitorElement* PtEndcap_HLT = iBooker.book1D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_);
1840  PtEndcap_HLT->getTH1();
1841 
1842  histoname = labelname + "_hltObjPtForward";
1843  title = labelname + "_hltObjPtForward;HLT Pt[GeV/c]" + trigPath;
1844  MonitorElement* PtForward_HLT = iBooker.book1D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_);
1845  PtForward_HLT->getTH1();
1846 
1847  histoname = labelname + "_hltObjPt";
1848  title = labelname + "_hltObjPt;HLT Pt[GeV/c]" + trigPath;
1849  MonitorElement* Pt_HLT = iBooker.book1D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_);
1850  Pt_HLT->getTH1();
1851 
1852  histoname = labelname + "_hltObjEta";
1853  title = labelname + "_hltObjEta;HLT #eta" + trigPath;
1854  MonitorElement* Eta_HLT = iBooker.book1D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_);
1855  Eta_HLT->getTH1();
1856 
1857  histoname = labelname + "_hltObjPhi";
1858  title = labelname + "_hltObjPhi;HLT #Phi" + trigPath;
1859  MonitorElement* Phi_HLT = iBooker.book1D(histoname.c_str(), title.c_str(), Phibins_, PhiMin_, PhiMax_);
1860  Phi_HLT->getTH1();
1861 
1862  histoname = labelname + "_hltObjEtaPhi";
1863  title = labelname + "_hltObjEtaPhi;HLT #eta;HLT #Phi" + trigPath;
1864  MonitorElement* EtaPhi_HLT =
1865  iBooker.book2D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_, Phibins_, PhiMin_, PhiMax_);
1866  EtaPhi_HLT->getTH1();
1867 
1868  histoname = labelname + "_l1HLTPtResolution";
1869  title = labelname + "_l1HLTPtResolution;(Pt(L1)-Pt(HLT))/Pt(L1)" + trigPath;
1870  MonitorElement* PtResolution_L1HLT =
1871  iBooker.book1D(histoname.c_str(), title.c_str(), Resbins_, ResMin_, ResMax_);
1872  PtResolution_L1HLT->getTH1();
1873 
1874  histoname = labelname + "_l1HLTEtaResolution";
1875  title = labelname + "_l1HLTEtaResolution;#eta(L1)-#eta(HLT)" + trigPath;
1876  MonitorElement* EtaResolution_L1HLT =
1877  iBooker.book1D(histoname.c_str(), title.c_str(), Resbins_, ResMin_, ResMax_);
1878  EtaResolution_L1HLT->getTH1();
1879 
1880  histoname = labelname + "_l1HLTPhiResolution";
1881  title = labelname + "_l1HLTPhiResolution;#Phi(L1)-#Phi(HLT)" + trigPath;
1882  MonitorElement* PhiResolution_L1HLT =
1883  iBooker.book1D(histoname.c_str(), title.c_str(), Resbins_, ResMin_, ResMax_);
1884  PhiResolution_L1HLT->getTH1();
1885 
1886  histoname = labelname + "_l1HLTPtCorrelation";
1887  title = labelname + "_l1HLTPtCorrelation;Pt(L1)[GeV/c];Pt(HLT)[GeV/c]" + trigPath;
1888  MonitorElement* PtCorrelation_L1HLT =
1889  iBooker.book2D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_, Ptbins_, PtMin_, PtMax_);
1890  PtCorrelation_L1HLT->getTH1();
1891 
1892  histoname = labelname + "_l1HLTEtaCorrelation";
1893  title = labelname + "_l1HLTEtaCorrelation;#eta(L1);#eta(HLT)" + trigPath;
1894  MonitorElement* EtaCorrelation_L1HLT =
1895  iBooker.book2D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_, Etabins_, EtaMin_, EtaMax_);
1896  EtaCorrelation_L1HLT->getTH1();
1897 
1898  histoname = labelname + "_l1HLTPhiCorrelation";
1899  title = labelname + "_l1HLTPhiCorrelation;#Phi(L1);#Phi(HLT)" + trigPath;
1900  MonitorElement* PhiCorrelation_L1HLT =
1901  iBooker.book2D(histoname.c_str(), title.c_str(), Phibins_, PhiMin_, PhiMax_, Phibins_, PhiMin_, PhiMax_);
1902  PhiCorrelation_L1HLT->getTH1();
1903 
1904  histoname = labelname + "_hltRecObjPtResolution";
1905  title = labelname + "_hltRecObjPtResolution;(Pt(HLT)-Pt(Reco))/Pt(HLT)" + trigPath;
1906  MonitorElement* PtResolution_HLTRecObj =
1907  iBooker.book1D(histoname.c_str(), title.c_str(), Resbins_, ResMin_, ResMax_);
1908  PtResolution_HLTRecObj->getTH1();
1909 
1910  histoname = labelname + "_hltRecObjEtaResolution";
1911  title = labelname + "_hltRecObjEtaResolution;#eta(HLT)-#eta(Reco)" + trigPath;
1912  MonitorElement* EtaResolution_HLTRecObj =
1913  iBooker.book1D(histoname.c_str(), title.c_str(), Resbins_, ResMin_, ResMax_);
1914  EtaResolution_HLTRecObj->getTH1();
1915 
1916  histoname = labelname + "_hltRecObjPhiResolution";
1917  title = labelname + "_hltRecObjPhiResolution;#Phi(HLT)-#Phi(Reco)" + trigPath;
1918  MonitorElement* PhiResolution_HLTRecObj =
1919  iBooker.book1D(histoname.c_str(), title.c_str(), Resbins_, ResMin_, ResMax_);
1920  PhiResolution_HLTRecObj->getTH1();
1921 
1922  histoname = labelname + "_hltRecObjPtCorrelation";
1923  title = labelname + "_hltRecObjPtCorrelation;Pt(HLT)[GeV/c];Pt(Reco)[GeV/c]" + trigPath;
1924  MonitorElement* PtCorrelation_HLTRecObj =
1925  iBooker.book2D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_, Ptbins_, PtMin_, PtMax_);
1926  PtCorrelation_HLTRecObj->getTH1();
1927 
1928  histoname = labelname + "_hltRecObjEtaCorrelation";
1929  title = labelname + "_hltRecObjEtaCorrelation;#eta(HLT);#eta(Reco)" + trigPath;
1930  MonitorElement* EtaCorrelation_HLTRecObj =
1931  iBooker.book2D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_, Etabins_, EtaMin_, EtaMax_);
1932  EtaCorrelation_HLTRecObj->getTH1();
1933 
1934  histoname = labelname + "_hltRecObjPhiCorrelation";
1935  title = labelname + "_hltRecObjPhiCorrelation;#Phi(HLT);#Phi(Reco)" + trigPath;
1936  MonitorElement* PhiCorrelation_HLTRecObj =
1937  iBooker.book2D(histoname.c_str(), title.c_str(), Phibins_, PhiMin_, PhiMax_, Phibins_, PhiMin_, PhiMax_);
1938  PhiCorrelation_HLTRecObj->getTH1();
1939 
1940  v.setHistos(N,
1941  Pt,
1942  PtBarrel,
1943  PtEndcap,
1944  PtForward,
1945  Eta,
1946  Phi,
1947  EtaPhi,
1948  N_L1,
1949  Pt_L1,
1950  PtBarrel_L1,
1951  PtEndcap_L1,
1952  PtForward_L1,
1953  Eta_L1,
1954  Phi_L1,
1955  EtaPhi_L1,
1956  N_HLT,
1957  Pt_HLT,
1958  PtBarrel_HLT,
1959  PtEndcap_HLT,
1960  PtForward_HLT,
1961  Eta_HLT,
1962  Phi_HLT,
1963  EtaPhi_HLT,
1964  PtResolution_L1HLT,
1965  EtaResolution_L1HLT,
1966  PhiResolution_L1HLT,
1967  PtResolution_HLTRecObj,
1968  EtaResolution_HLTRecObj,
1969  PhiResolution_HLTRecObj,
1970  PtCorrelation_L1HLT,
1971  EtaCorrelation_L1HLT,
1972  PhiCorrelation_L1HLT,
1973  PtCorrelation_HLTRecObj,
1974  EtaCorrelation_HLTRecObj,
1975  PhiCorrelation_HLTRecObj,
1976  dummy,
1977  dummy,
1978  dummy,
1979  dummy,
1980  dummy,
1981  dummy,
1982  dummy,
1983  dummy,
1984  dummy);
1985  } // histos for SingleJet Triggers
1986 
1987  if (v.getObjectType() == trigger::TriggerJet && v.getTriggerType() == "DiJet_Trigger") {
1988  histoname = labelname + "_RecObjAveragePt";
1989  title = labelname + "_RecObjAveragePt;Reco Average Pt[GeV/c]" + trigPath;
1990  MonitorElement* jetAveragePt = iBooker.book1D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_);
1991  jetAveragePt->getTH1();
1992 
1993  histoname = labelname + "_RecObjAverageEta";
1994  title = labelname + "_RecObjAverageEta;Reco Average #eta" + trigPath;
1995  MonitorElement* jetAverageEta = iBooker.book1D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_);
1996  jetAverageEta->getTH1();
1997 
1998  histoname = labelname + "_RecObjPhiDifference";
1999  title = labelname + "_RecObjPhiDifference;Reco #Delta#Phi" + trigPath;
2000  MonitorElement* jetPhiDifference =
2001  iBooker.book1D(histoname.c_str(), title.c_str(), Phibins_, PhiMin_, PhiMax_);
2002  jetPhiDifference->getTH1();
2003 
2004  histoname = labelname + "_hltObjAveragePt";
2005  title = labelname + "_hltObjAveragePt;HLT Average Pt[GeV/c]" + trigPath;
2006  MonitorElement* hltAveragePt = iBooker.book1D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_);
2007  hltAveragePt->getTH1();
2008 
2009  histoname = labelname + "_hltObjAverageEta";
2010  title = labelname + "_hltObjAverageEta;HLT Average #eta" + trigPath;
2011  MonitorElement* hltAverageEta = iBooker.book1D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_);
2012  hltAverageEta->getTH1();
2013 
2014  histoname = labelname + "_hltObjPhiDifference";
2015  title = labelname + "_hltObjPhiDifference;Reco #Delta#Phi" + trigPath;
2016  MonitorElement* hltPhiDifference =
2017  iBooker.book1D(histoname.c_str(), title.c_str(), Phibins_, PhiMin_, PhiMax_);
2018  hltPhiDifference->getTH1();
2019 
2020  v.setHistos(dummy,
2021  dummy,
2022  dummy,
2023  dummy,
2024  dummy,
2025  dummy,
2026  dummy,
2027  dummy,
2028  dummy,
2029  dummy,
2030  dummy,
2031  dummy,
2032  dummy,
2033  dummy,
2034  dummy,
2035  dummy,
2036  dummy,
2037  dummy,
2038  dummy,
2039  dummy,
2040  dummy,
2041  dummy,
2042  dummy,
2043  dummy,
2044  dummy,
2045  dummy,
2046  dummy,
2047  dummy,
2048  dummy,
2049  dummy,
2050  dummy,
2051  dummy,
2052  dummy,
2053  dummy,
2054  dummy,
2055  dummy,
2056  jetAveragePt,
2057  jetAverageEta,
2058  jetPhiDifference,
2059  hltAveragePt,
2060  hltAverageEta,
2061  hltPhiDifference,
2062  dummy,
2063  dummy,
2064  dummy);
2065  } // histos for DiJet Triggers
2066 
2067  if (v.getObjectType() == trigger::TriggerMET || (v.getObjectType() == trigger::TriggerTET)) {
2068  histoname = labelname + "_recObjPt";
2069  title = labelname + "_recObjPt;Reco Pt[GeV/c]" + trigPath;
2070  MonitorElement* Pt = iBooker.book1D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_);
2071  Pt->getTH1();
2072 
2073  histoname = labelname + "_recObjPhi";
2074  title = labelname + "_recObjPhi;Reco #Phi" + trigPath;
2075  MonitorElement* Phi = iBooker.book1D(histoname.c_str(), title.c_str(), Phibins_, PhiMin_, PhiMax_);
2076  Phi->getTH1();
2077 
2078  histoname = labelname + "_l1ObjPt";
2079  title = labelname + "_l1ObjPt;L1 Pt[GeV/c]" + trigPath;
2080  MonitorElement* Pt_L1 = iBooker.book1D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_);
2081  Pt_L1->getTH1();
2082 
2083  histoname = labelname + "_l1ObjPhi";
2084  title = labelname + "_l1ObjPhi;L1 #Phi" + trigPath;
2085  MonitorElement* Phi_L1 = iBooker.book1D(histoname.c_str(), title.c_str(), Phibins_, PhiMin_, PhiMax_);
2086  Phi_L1->getTH1();
2087 
2088  histoname = labelname + "_hltObjPt";
2089  title = labelname + "_hltObjPt;HLT Pt[GeV/c]" + trigPath;
2090  MonitorElement* Pt_HLT = iBooker.book1D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_);
2091  Pt_HLT->getTH1();
2092 
2093  histoname = labelname + "_hltObjPhi";
2094  title = labelname + "_hltObjPhi;HLT #Phi" + trigPath;
2095  MonitorElement* Phi_HLT = iBooker.book1D(histoname.c_str(), title.c_str(), Phibins_, PhiMin_, PhiMax_);
2096  Phi_HLT->getTH1();
2097 
2098  histoname = labelname + "_l1HLTPtResolution";
2099  title = labelname + "_l1HLTPtResolution;(Pt(L1)-Pt(HLT))/Pt(L1)" + trigPath;
2100  MonitorElement* PtResolution_L1HLT =
2101  iBooker.book1D(histoname.c_str(), title.c_str(), Resbins_, ResMin_, ResMax_);
2102  PtResolution_L1HLT->getTH1();
2103 
2104  histoname = labelname + "_l1HLTPhiResolution";
2105  title = labelname + "_l1HLTPhiResolution;#Phi(L1)-#Phi(HLT)" + trigPath;
2106  MonitorElement* PhiResolution_L1HLT =
2107  iBooker.book1D(histoname.c_str(), title.c_str(), Resbins_, ResMin_, ResMax_);
2108  PhiResolution_L1HLT->getTH1();
2109 
2110  histoname = labelname + "_l1HLTPtCorrelation";
2111  title = labelname + "_l1HLTPtCorrelation;Pt(L1)[GeV/c];Pt(HLT)[GeV/c]" + trigPath;
2112  MonitorElement* PtCorrelation_L1HLT =
2113  iBooker.book2D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_, Ptbins_, PtMin_, PtMax_);
2114  PtCorrelation_L1HLT->getTH1();
2115 
2116  histoname = labelname + "_l1HLTPhiCorrelation";
2117  title = labelname + "_l1HLTPhiCorrelation;#Phi(L1);#Phi(HLT)" + trigPath;
2118  MonitorElement* PhiCorrelation_L1HLT =
2119  iBooker.book2D(histoname.c_str(), title.c_str(), Phibins_, PhiMin_, PhiMax_, Phibins_, PhiMin_, PhiMax_);
2120  PhiCorrelation_L1HLT->getTH1();
2121 
2122  histoname = labelname + "_hltRecObjPtResolution";
2123  title = labelname + "_hltRecObjPtResolution;(Pt(HLT)-Pt(Reco))/Pt(HLT)" + trigPath;
2124  MonitorElement* PtResolution_HLTRecObj =
2125  iBooker.book1D(histoname.c_str(), title.c_str(), Resbins_, ResMin_, ResMax_);
2126  PtResolution_HLTRecObj->getTH1();
2127 
2128  histoname = labelname + "_hltRecObjPhiResolution";
2129  title = labelname + "_hltRecObjPhiResolution;#Phi(HLT)-#Phi(Reco)" + trigPath;
2130  MonitorElement* PhiResolution_HLTRecObj =
2131  iBooker.book1D(histoname.c_str(), title.c_str(), Resbins_, ResMin_, ResMax_);
2132  PhiResolution_HLTRecObj->getTH1();
2133 
2134  histoname = labelname + "_hltRecObjPtCorrelation";
2135  title = labelname + "_hltRecObjPtCorrelation;Pt(HLT)[GeV/c];Pt(Reco)[GeV/c]" + trigPath;
2136  MonitorElement* PtCorrelation_HLTRecObj =
2137  iBooker.book2D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_, Ptbins_, PtMin_, PtMax_);
2138  PtCorrelation_HLTRecObj->getTH1();
2139 
2140  histoname = labelname + "_hltRecObjPhiCorrelation";
2141  title = labelname + "_hltRecObjPhiCorrelation;#Phi(HLT);#Phi(Reco)" + trigPath;
2142  MonitorElement* PhiCorrelation_HLTRecObj =
2143  iBooker.book2D(histoname.c_str(), title.c_str(), Phibins_, PhiMin_, PhiMax_, Phibins_, PhiMin_, PhiMax_);
2144  PhiCorrelation_HLTRecObj->getTH1();
2145 
2146  v.setHistos(dummy,
2147  Pt,
2148  dummy,
2149  dummy,
2150  dummy,
2151  dummy,
2152  Phi,
2153  dummy,
2154  dummy,
2155  Pt_L1,
2156  dummy,
2157  dummy,
2158  dummy,
2159  dummy,
2160  Phi_L1,
2161  dummy,
2162  dummy,
2163  Pt_HLT,
2164  dummy,
2165  dummy,
2166  dummy,
2167  dummy,
2168  Phi_HLT,
2169  dummy,
2170  PtResolution_L1HLT,
2171  dummy,
2172  PhiResolution_L1HLT,
2173  PtResolution_HLTRecObj,
2174  dummy,
2175  PhiResolution_HLTRecObj,
2176  PtCorrelation_L1HLT,
2177  dummy,
2178  PhiCorrelation_L1HLT,
2179  PtCorrelation_HLTRecObj,
2180  dummy,
2181  PhiCorrelation_HLTRecObj,
2182  dummy,
2183  dummy,
2184  dummy,
2185  dummy,
2186  dummy,
2187  dummy,
2188  dummy,
2189  dummy,
2190  dummy);
2191  } // histos for MET Triggers
2192  }
2193  } //plotAll_
2194 
2195  //-------Now Efficiency histos--------
2196  if (plotEff_) {
2197  int Ptbins_ = 100;
2198  if (runStandalone_)
2199  Ptbins_ = 1000;
2200  double PtMin_ = 0.;
2201  double PtMax_ = 1000.;
2202  //
2203  int Etabins_ = 50;
2204  double EtaMin_ = -5.;
2205  double EtaMax_ = 5.;
2206  //
2207  int Phibins_ = 35;
2208  double PhiMin_ = -3.5;
2209  double PhiMax_ = 3.5;
2210  // Now define histos wrt lower threshold trigger
2211  std::string dirName1 = dirname_ + "/RelativeTriggerEff/";
2212  for (auto& v : hltPathsEff_) {
2213  //
2214  std::string trgPathName = HLTConfigProvider::removeVersion(v.getPath());
2215  std::string trgPathNameD = HLTConfigProvider::removeVersion(v.getDenomPath());
2216  //
2217  std::string labelname("ME");
2218  std::string subdirName = dirName1 + trgPathName + "_wrt_" + trgPathNameD;
2219  iBooker.setCurrentFolder(subdirName);
2220  //
2221  std::string histoname(labelname + "");
2222  std::string title(labelname + "");
2223 
2225  dummy = iBooker.bookFloat("dummy");
2226 
2227  if ((v.getObjectType() == trigger::TriggerJet) && (v.getTriggerType() == "SingleJet_Trigger")) {
2228  histoname = labelname + "_NumeratorPt";
2229  title = labelname + "NumeratorPt;Calo Pt[GeV/c]";
2230  MonitorElement* NumeratorPt = iBooker.book1D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_);
2231  NumeratorPt->getTH1();
2232 
2233  histoname = labelname + "_NumeratorPtBarrel";
2234  title = labelname + "NumeratorPtBarrel;Calo Pt[GeV/c] ";
2235  MonitorElement* NumeratorPtBarrel = iBooker.book1D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_);
2236  NumeratorPtBarrel->getTH1();
2237 
2238  histoname = labelname + "_NumeratorPtEndcap";
2239  title = labelname + "NumeratorPtEndcap;Calo Pt[GeV/c]";
2240  MonitorElement* NumeratorPtEndcap = iBooker.book1D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_);
2241  NumeratorPtEndcap->getTH1();
2242 
2243  histoname = labelname + "_NumeratorPtForward";
2244  title = labelname + "NumeratorPtForward;Calo Pt[GeV/c]";
2245  MonitorElement* NumeratorPtForward =
2246  iBooker.book1D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_);
2247  NumeratorPtForward->getTH1();
2248 
2249  histoname = labelname + "_NumeratorEta";
2250  title = labelname + "NumeratorEta;Calo #eta ";
2251  MonitorElement* NumeratorEta = iBooker.book1D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_);
2252  NumeratorEta->getTH1();
2253 
2254  histoname = labelname + "_NumeratorPhi";
2255  title = labelname + "NumeratorPhi;Calo #Phi";
2256  MonitorElement* NumeratorPhi = iBooker.book1D(histoname.c_str(), title.c_str(), Phibins_, PhiMin_, PhiMax_);
2257  NumeratorPhi->getTH1();
2258 
2259  histoname = labelname + "_NumeratorEtaPhi";
2260  title = labelname + "NumeratorEtaPhi;Calo #eta;Calo #Phi";
2261  MonitorElement* NumeratorEtaPhi =
2262  iBooker.book2D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_, Phibins_, PhiMin_, PhiMax_);
2263  NumeratorEtaPhi->getTH1();
2264 
2265  histoname = labelname + "_NumeratorEtaBarrel";
2266  title = labelname + "NumeratorEtaBarrel;Calo #eta ";
2267  MonitorElement* NumeratorEtaBarrel =
2268  iBooker.book1D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_);
2269  NumeratorEtaBarrel->getTH1();
2270 
2271  histoname = labelname + "_NumeratorPhiBarrel";
2272  title = labelname + "NumeratorPhiBarrel;Calo #Phi";
2273  MonitorElement* NumeratorPhiBarrel =
2274  iBooker.book1D(histoname.c_str(), title.c_str(), Phibins_, PhiMin_, PhiMax_);
2275  NumeratorPhiBarrel->getTH1();
2276 
2277  histoname = labelname + "_NumeratorEtaEndcap";
2278  title = labelname + "NumeratorEtaEndcap;Calo #eta ";
2279  MonitorElement* NumeratorEtaEndcap =
2280  iBooker.book1D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_);
2281  NumeratorEtaEndcap->getTH1();
2282 
2283  histoname = labelname + "_NumeratorPhiEndcap";
2284  title = labelname + "NumeratorPhiEndcap;Calo #Phi";
2285  MonitorElement* NumeratorPhiEndcap =
2286  iBooker.book1D(histoname.c_str(), title.c_str(), Phibins_, PhiMin_, PhiMax_);
2287  NumeratorPhiEndcap->getTH1();
2288 
2289  histoname = labelname + "_NumeratorEtaForward";
2290  title = labelname + "NumeratorEtaForward;Calo #eta ";
2291  MonitorElement* NumeratorEtaForward =
2292  iBooker.book1D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_);
2293  NumeratorEtaForward->getTH1();
2294 
2295  histoname = labelname + "_NumeratorPhiForward";
2296  title = labelname + "NumeratorPhiForward;Calo #Phi";
2297  MonitorElement* NumeratorPhiForward =
2298  iBooker.book1D(histoname.c_str(), title.c_str(), Phibins_, PhiMin_, PhiMax_);
2299  NumeratorPhiForward->getTH1();
2300 
2301  histoname = labelname + "_NumeratorEta_LowpTcut";
2302  title = labelname + "NumeratorEta_LowpTcut;Calo #eta ";
2303  MonitorElement* NumeratorEta_LowpTcut =
2304  iBooker.book1D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_);
2305  NumeratorEta_LowpTcut->getTH1();
2306 
2307  histoname = labelname + "_NumeratorPhi_LowpTcut";
2308  title = labelname + "NumeratorPhi_LowpTcut;Calo #Phi";
2309  MonitorElement* NumeratorPhi_LowpTcut =
2310  iBooker.book1D(histoname.c_str(), title.c_str(), Phibins_, PhiMin_, PhiMax_);
2311  NumeratorPhi_LowpTcut->getTH1();
2312 
2313  histoname = labelname + "_NumeratorEtaPhi_LowpTcut";
2314  title = labelname + "NumeratorEtaPhi_LowpTcut;Calo #eta;Calo #Phi";
2315  MonitorElement* NumeratorEtaPhi_LowpTcut =
2316  iBooker.book2D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_, Phibins_, PhiMin_, PhiMax_);
2317  NumeratorEtaPhi_LowpTcut->getTH1();
2318 
2319  histoname = labelname + "_NumeratorEta_MedpTcut";
2320  title = labelname + "NumeratorEta_MedpTcut;Calo #eta ";
2321  MonitorElement* NumeratorEta_MedpTcut =
2322  iBooker.book1D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_);
2323  NumeratorEta_MedpTcut->getTH1();
2324 
2325  histoname = labelname + "_NumeratorPhi_MedpTcut";
2326  title = labelname + "NumeratorPhi_MedpTcut;Calo #Phi";
2327  MonitorElement* NumeratorPhi_MedpTcut =
2328  iBooker.book1D(histoname.c_str(), title.c_str(), Phibins_, PhiMin_, PhiMax_);
2329  NumeratorPhi_MedpTcut->getTH1();
2330 
2331  histoname = labelname + "_NumeratorEtaPhi_MedpTcut";
2332  title = labelname + "NumeratorEtaPhi_MedpTcut;Calo #eta;Calo #Phi";
2333  MonitorElement* NumeratorEtaPhi_MedpTcut =
2334  iBooker.book2D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_, Phibins_, PhiMin_, PhiMax_);
2335  NumeratorEtaPhi_MedpTcut->getTH1();
2336 
2337  histoname = labelname + "_NumeratorEta_HighpTcut";
2338  title = labelname + "NumeratorEta_HighpTcut;Calo #eta ";
2339  MonitorElement* NumeratorEta_HighpTcut =
2340  iBooker.book1D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_);
2341  NumeratorEta_HighpTcut->getTH1();
2342 
2343  histoname = labelname + "_NumeratorPhi_HighpTcut";
2344  title = labelname + "NumeratorPhi_HighpTcut;Calo #Phi";
2345  MonitorElement* NumeratorPhi_HighpTcut =
2346  iBooker.book1D(histoname.c_str(), title.c_str(), Phibins_, PhiMin_, PhiMax_);
2347  NumeratorPhi_HighpTcut->getTH1();
2348 
2349  histoname = labelname + "_NumeratorEtaPhi_HighpTcut";
2350  title = labelname + "NumeratorEtaPhi_HighpTcut;Calo #eta;Calo #Phi";
2351  MonitorElement* NumeratorEtaPhi_HighpTcut =
2352  iBooker.book2D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_, Phibins_, PhiMin_, PhiMax_);
2353  NumeratorEtaPhi_HighpTcut->getTH1();
2354 
2355  histoname = labelname + "_DenominatorPt";
2356  title = labelname + "DenominatorPt;Calo Pt[GeV/c]";
2357  MonitorElement* DenominatorPt = iBooker.book1D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_);
2358  DenominatorPt->getTH1();
2359 
2360  histoname = labelname + "_DenominatorPtBarrel";
2361  title = labelname + "DenominatorPtBarrel;Calo Pt[GeV/c]";
2362  MonitorElement* DenominatorPtBarrel =
2363  iBooker.book1D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_);
2364  DenominatorPtBarrel->getTH1();
2365 
2366  histoname = labelname + "_DenominatorPtEndcap";
2367  title = labelname + "DenominatorPtEndcap;Calo Pt[GeV/c]";
2368  MonitorElement* DenominatorPtEndcap =
2369  iBooker.book1D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_);
2370  DenominatorPtEndcap->getTH1();
2371 
2372  histoname = labelname + "_DenominatorPtForward";
2373  title = labelname + "DenominatorPtForward;Calo Pt[GeV/c] ";
2374  MonitorElement* DenominatorPtForward =
2375  iBooker.book1D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_);
2376  DenominatorPtForward->getTH1();
2377 
2378  histoname = labelname + "_DenominatorEta";
2379  title = labelname + "DenominatorEta;Calo #eta ";
2380  MonitorElement* DenominatorEta = iBooker.book1D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_);
2381  DenominatorEta->getTH1();
2382 
2383  histoname = labelname + "_DenominatorPhi";
2384  title = labelname + "DenominatorPhi;Calo #Phi";
2385  MonitorElement* DenominatorPhi = iBooker.book1D(histoname.c_str(), title.c_str(), Phibins_, PhiMin_, PhiMax_);
2386  DenominatorPhi->getTH1();
2387 
2388  histoname = labelname + "_DenominatorEtaPhi";
2389  title = labelname + "DenominatorEtaPhi;Calo #eta; Calo #Phi";
2390  MonitorElement* DenominatorEtaPhi =
2391  iBooker.book2D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_, Phibins_, PhiMin_, PhiMax_);
2392  DenominatorEtaPhi->getTH1();
2393 
2394  histoname = labelname + "_DenominatorEtaBarrel";
2395  title = labelname + "DenominatorEtaBarrel;Calo #eta ";
2396  MonitorElement* DenominatorEtaBarrel =
2397  iBooker.book1D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_);
2398  DenominatorEtaBarrel->getTH1();
2399 
2400  histoname = labelname + "_DenominatorPhiBarrel";
2401  title = labelname + "DenominatorPhiBarrel;Calo #Phi";
2402  MonitorElement* DenominatorPhiBarrel =
2403  iBooker.book1D(histoname.c_str(), title.c_str(), Phibins_, PhiMin_, PhiMax_);
2404  DenominatorPhiBarrel->getTH1();
2405 
2406  histoname = labelname + "_DenominatorEtaEndcap";
2407  title = labelname + "DenominatorEtaEndcap;Calo #eta ";
2408  MonitorElement* DenominatorEtaEndcap =
2409  iBooker.book1D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_);
2410  DenominatorEtaEndcap->getTH1();
2411 
2412  histoname = labelname + "_DenominatorPhiEndcap";
2413  title = labelname + "DenominatorPhiEndcap;Calo #Phi";
2414  MonitorElement* DenominatorPhiEndcap =
2415  iBooker.book1D(histoname.c_str(), title.c_str(), Phibins_, PhiMin_, PhiMax_);
2416  DenominatorPhiEndcap->getTH1();
2417 
2418  histoname = labelname + "_DenominatorEtaForward";
2419  title = labelname + "DenominatorEtaForward;Calo #eta ";
2420  MonitorElement* DenominatorEtaForward =
2421  iBooker.book1D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_);
2422  DenominatorEtaForward->getTH1();
2423 
2424  histoname = labelname + "_DenominatorPhiForward";
2425  title = labelname + "DenominatorPhiForward;Calo #Phi";
2426  MonitorElement* DenominatorPhiForward =
2427  iBooker.book1D(histoname.c_str(), title.c_str(), Phibins_, PhiMin_, PhiMax_);
2428  DenominatorPhiForward->getTH1();
2429 
2430  histoname = labelname + "_DenominatorEta_LowpTcut";
2431  title = labelname + "DenominatorEta_LowpTcut;Calo #eta ";
2432  MonitorElement* DenominatorEta_LowpTcut =
2433  iBooker.book1D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_);
2434  DenominatorEta_LowpTcut->getTH1();
2435 
2436  histoname = labelname + "_DenominatorPhi_LowpTcut";
2437  title = labelname + "DenominatorPhi_LowpTcut;Calo #Phi";
2438  MonitorElement* DenominatorPhi_LowpTcut =
2439  iBooker.book1D(histoname.c_str(), title.c_str(), Phibins_, PhiMin_, PhiMax_);
2440  DenominatorPhi_LowpTcut->getTH1();
2441 
2442  histoname = labelname + "_DenominatorEtaPhi_LowpTcut";
2443  title = labelname + "DenominatorEtaPhi_LowpTcut;Calo #eta;Calo #Phi";
2444  MonitorElement* DenominatorEtaPhi_LowpTcut =
2445  iBooker.book2D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_, Phibins_, PhiMin_, PhiMax_);
2446  DenominatorEtaPhi_LowpTcut->getTH1();
2447 
2448  histoname = labelname + "_DenominatorEta_MedpTcut";
2449  title = labelname + "DenominatorEta_MedpTcut;Calo #eta ";
2450  MonitorElement* DenominatorEta_MedpTcut =
2451  iBooker.book1D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_);
2452  DenominatorEta_MedpTcut->getTH1();
2453 
2454  histoname = labelname + "_DenominatorPhi_MedpTcut";
2455  title = labelname + "DenominatorPhi_MedpTcut;Calo #Phi";
2456  MonitorElement* DenominatorPhi_MedpTcut =
2457  iBooker.book1D(histoname.c_str(), title.c_str(), Phibins_, PhiMin_, PhiMax_);
2458  DenominatorPhi_MedpTcut->getTH1();
2459 
2460  histoname = labelname + "_DenominatorEtaPhi_MedpTcut";
2461  title = labelname + "DenominatorEtaPhi_MedpTcut;Calo #eta;Calo #Phi";
2462  MonitorElement* DenominatorEtaPhi_MedpTcut =
2463  iBooker.book2D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_, Phibins_, PhiMin_, PhiMax_);
2464  DenominatorEtaPhi_MedpTcut->getTH1();
2465 
2466  histoname = labelname + "_DenominatorEta_HighpTcut";
2467  title = labelname + "DenominatorEta_HighpTcut;Calo #eta ";
2468  MonitorElement* DenominatorEta_HighpTcut =
2469  iBooker.book1D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_);
2470  DenominatorEta_HighpTcut->getTH1();
2471 
2472  histoname = labelname + "_DenominatorPhi_HighpTcut";
2473  title = labelname + "DenominatorPhi_HighpTcut;Calo #Phi";
2474  MonitorElement* DenominatorPhi_HighpTcut =
2475  iBooker.book1D(histoname.c_str(), title.c_str(), Phibins_, PhiMin_, PhiMax_);
2476  DenominatorPhi_HighpTcut->getTH1();
2477 
2478  histoname = labelname + "_DenominatorEtaPhi_HighpTcut";
2479  title = labelname + "DenominatorEtaPhi_HighpTcut;Calo #eta;Calo #Phi";
2480  MonitorElement* DenominatorEtaPhi_HighpTcut =
2481  iBooker.book2D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_, Phibins_, PhiMin_, PhiMax_);
2482  DenominatorEtaPhi_HighpTcut->getTH1();
2483 
2484  histoname = labelname + "_DeltaR";
2485  title = labelname + "DeltaR;";
2486  MonitorElement* DeltaR = iBooker.book1D(histoname.c_str(), title.c_str(), 100, 0., 1.5);
2487  DeltaR->getTH1();
2488 
2489  histoname = labelname + "_DeltaPhi";
2490  title = labelname + "DeltaPhi;";
2491  MonitorElement* DeltaPhi = iBooker.book1D(histoname.c_str(), title.c_str(), 500, -5.0, 5.0);
2492  DeltaPhi->getTH1();
2493 
2494  histoname = labelname + "_NumeratorPFMHT";
2495  title = labelname + "NumeratorPFMHT;PFMHT[GeV/c]";
2496  MonitorElement* NumeratorPFMHT = iBooker.book1D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_);
2497  NumeratorPFMHT->getTH1();
2498 
2499  histoname = labelname + "_NumeratorPFPt";
2500  title = labelname + "NumeratorPFPt;PF Pt[GeV/c]";
2501  MonitorElement* NumeratorPFPt = iBooker.book1D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_);
2502  NumeratorPFPt->getTH1();
2503 
2504  histoname = labelname + "_NumeratorPFPtBarrel";
2505  title = labelname + "NumeratorPFPtBarrel;PF Pt[GeV/c] ";
2506  MonitorElement* NumeratorPFPtBarrel =
2507  iBooker.book1D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_);
2508  NumeratorPFPtBarrel->getTH1();
2509 
2510  histoname = labelname + "_NumeratorPFPtEndcap";
2511  title = labelname + "NumeratorPFPtEndcap;PF Pt[GeV/c]";
2512  MonitorElement* NumeratorPFPtEndcap =
2513  iBooker.book1D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_);
2514  NumeratorPFPtEndcap->getTH1();
2515 
2516  histoname = labelname + "_NumeratorPFPtForward";
2517  title = labelname + "NumeratorPFPtForward;PF Pt[GeV/c]";
2518  MonitorElement* NumeratorPFPtForward =
2519  iBooker.book1D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_);
2520  NumeratorPFPtForward->getTH1();
2521 
2522  histoname = labelname + "_NumeratorPFEta";
2523  title = labelname + "NumeratorPFEta;PF #eta ";
2524  MonitorElement* NumeratorPFEta = iBooker.book1D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_);
2525  NumeratorPFEta->getTH1();
2526 
2527  histoname = labelname + "_NumeratorPFPhi";
2528  title = labelname + "NumeratorPFPhi;Calo #Phi";
2529  MonitorElement* NumeratorPFPhi = iBooker.book1D(histoname.c_str(), title.c_str(), Phibins_, PhiMin_, PhiMax_);
2530  NumeratorPFPhi->getTH1();
2531 
2532  histoname = labelname + "_NumeratorPFEtaPhi";
2533  title = labelname + "NumeratorPFEtaPhi;PF #eta;Calo #Phi";
2534  MonitorElement* NumeratorPFEtaPhi =
2535  iBooker.book2D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_, Phibins_, PhiMin_, PhiMax_);
2536  NumeratorPFEtaPhi->getTH1();
2537 
2538  histoname = labelname + "_NumeratorPFEtaBarrel";
2539  title = labelname + "NumeratorPFEtaBarrel;PF #eta ";
2540  MonitorElement* NumeratorPFEtaBarrel =
2541  iBooker.book1D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_);
2542  NumeratorPFEtaBarrel->getTH1();
2543 
2544  histoname = labelname + "_NumeratorPFPhiBarrel";
2545  title = labelname + "NumeratorPFPhiBarrel;PF #Phi";
2546  MonitorElement* NumeratorPFPhiBarrel =
2547  iBooker.book1D(histoname.c_str(), title.c_str(), Phibins_, PhiMin_, PhiMax_);
2548  NumeratorPFPhiBarrel->getTH1();
2549 
2550  histoname = labelname + "_NumeratorPFEtaEndcap";
2551  title = labelname + "NumeratorPFEtaEndcap;Calo #eta ";
2552  MonitorElement* NumeratorPFEtaEndcap =
2553  iBooker.book1D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_);
2554  NumeratorPFEtaEndcap->getTH1();
2555 
2556  histoname = labelname + "_NumeratorPFPhiEndcap";
2557  title = labelname + "NumeratorPFPhiEndcap;PF #Phi";
2558  MonitorElement* NumeratorPFPhiEndcap =
2559  iBooker.book1D(histoname.c_str(), title.c_str(), Phibins_, PhiMin_, PhiMax_);
2560  NumeratorPFPhiEndcap->getTH1();
2561 
2562  histoname = labelname + "_NumeratorPFEtaForward";
2563  title = labelname + "NumeratorPFEtaForward;Calo #eta ";
2564  MonitorElement* NumeratorPFEtaForward =
2565  iBooker.book1D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_);
2566  NumeratorPFEtaForward->getTH1();
2567 
2568  histoname = labelname + "_NumeratorPFPhiForward";
2569  title = labelname + "NumeratorPFPhiForward;PF #Phi";
2570  MonitorElement* NumeratorPFPhiForward =
2571  iBooker.book1D(histoname.c_str(), title.c_str(), Phibins_, PhiMin_, PhiMax_);
2572  NumeratorPFPhiForward->getTH1();
2573 
2574  histoname = labelname + "_NumeratorPFEta_LowpTcut";
2575  title = labelname + "NumeratorPFEta_LowpTcut;PF #eta ";
2576  MonitorElement* NumeratorPFEta_LowpTcut =
2577  iBooker.book1D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_);
2578  NumeratorPFEta_LowpTcut->getTH1();
2579 
2580  histoname = labelname + "_NumeratorPFPhi_LowpTcut";
2581  title = labelname + "NumeratorPFPhi_LowpTcut;PF #Phi";
2582  MonitorElement* NumeratorPFPhi_LowpTcut =
2583  iBooker.book1D(histoname.c_str(), title.c_str(), Phibins_, PhiMin_, PhiMax_);
2584  NumeratorPFPhi_LowpTcut->getTH1();
2585 
2586  histoname = labelname + "_NumeratorPFEtaPhi_LowpTcut";
2587  title = labelname + "NumeratorPFEtaPhi_LowpTcut;PF #eta;Calo #Phi";
2588  MonitorElement* NumeratorPFEtaPhi_LowpTcut =
2589  iBooker.book2D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_, Phibins_, PhiMin_, PhiMax_);
2590  NumeratorPFEtaPhi_LowpTcut->getTH1();
2591 
2592  histoname = labelname + "_NumeratorPFEta_MedpTcut";
2593  title = labelname + "NumeratorPFEta_MedpTcut;PF #eta ";
2594  MonitorElement* NumeratorPFEta_MedpTcut =
2595  iBooker.book1D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_);
2596  NumeratorPFEta_MedpTcut->getTH1();
2597 
2598  histoname = labelname + "_NumeratorPFPhi_MedpTcut";
2599  title = labelname + "NumeratorPFPhi_MedpTcut;PF #Phi";
2600  MonitorElement* NumeratorPFPhi_MedpTcut =
2601  iBooker.book1D(histoname.c_str(), title.c_str(), Phibins_, PhiMin_, PhiMax_);
2602  NumeratorPFPhi_MedpTcut->getTH1();
2603 
2604  histoname = labelname + "_NumeratorPFEtaPhi_MedpTcut";
2605  title = labelname + "NumeratorPFEtaPhi_MedpTcut;PF #eta;PF #Phi";
2606  MonitorElement* NumeratorPFEtaPhi_MedpTcut =
2607  iBooker.book2D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_, Phibins_, PhiMin_, PhiMax_);
2608  NumeratorPFEtaPhi_MedpTcut->getTH1();
2609 
2610  histoname = labelname + "_NumeratorPFEta_HighpTcut";
2611  title = labelname + "NumeratorPFEta_HighpTcut;Calo #eta ";
2612  MonitorElement* NumeratorPFEta_HighpTcut =
2613  iBooker.book1D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_);
2614  NumeratorPFEta_HighpTcut->getTH1();
2615 
2616  histoname = labelname + "_NumeratorPFPhi_HighpTcut";
2617  title = labelname + "NumeratorPFPhi_HighpTcut;PF #Phi";
2618  MonitorElement* NumeratorPFPhi_HighpTcut =
2619  iBooker.book1D(histoname.c_str(), title.c_str(), Phibins_, PhiMin_, PhiMax_);
2620  NumeratorPFPhi_HighpTcut->getTH1();
2621 
2622  histoname = labelname + "_NumeratorPFEtaPhi_HighpTcut";
2623  title = labelname + "NumeratorPFEtaPhi_HighpTcut;PF #eta;PF #Phi";
2624  MonitorElement* NumeratorPFEtaPhi_HighpTcut =
2625  iBooker.book2D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_, Phibins_, PhiMin_, PhiMax_);
2626  NumeratorPFEtaPhi_HighpTcut->getTH1();
2627 
2628  histoname = labelname + "_DenominatorPFMHT";
2629  title = labelname + "DenominatorPFMHT;PF Pt[GeV/c]";
2630  MonitorElement* DenominatorPFMHT = iBooker.book1D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_);
2631  DenominatorPFMHT->getTH1();
2632 
2633  histoname = labelname + "_DenominatorPFPt";
2634  title = labelname + "DenominatorPFPt;PF Pt[GeV/c]";
2635  MonitorElement* DenominatorPFPt = iBooker.book1D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_);
2636  DenominatorPFPt->getTH1();
2637 
2638  histoname = labelname + "_DenominatorPFPtBarrel";
2639  title = labelname + "DenominatorPFPtBarrel;Calo Pt[GeV/c]";
2640  MonitorElement* DenominatorPFPtBarrel =
2641  iBooker.book1D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_);
2642  DenominatorPFPtBarrel->getTH1();
2643 
2644  histoname = labelname + "_DenominatorPFPtEndcap";
2645  title = labelname + "DenominatorPFPtEndcap;PF Pt[GeV/c]";
2646  MonitorElement* DenominatorPFPtEndcap =
2647  iBooker.book1D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_);
2648  DenominatorPFPtEndcap->getTH1();
2649 
2650  histoname = labelname + "_DenominatorPFPtForward";
2651  title = labelname + "DenominatorPFPtForward;PF Pt[GeV/c] ";
2652  MonitorElement* DenominatorPFPtForward =
2653  iBooker.book1D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_);
2654  DenominatorPFPtForward->getTH1();
2655 
2656  histoname = labelname + "_DenominatorPFEta";
2657  title = labelname + "DenominatorPFEta;PF #eta ";
2658  MonitorElement* DenominatorPFEta =
2659  iBooker.book1D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_);
2660  DenominatorPFEta->getTH1();
2661 
2662  histoname = labelname + "_DenominatorPFPhi";
2663  title = labelname + "DenominatorPFPhi;PF #Phi";
2664  MonitorElement* DenominatorPFPhi =
2665  iBooker.book1D(histoname.c_str(), title.c_str(), Phibins_, PhiMin_, PhiMax_);
2666  DenominatorPFPhi->getTH1();
2667 
2668  histoname = labelname + "_DenominatorPFEtaPhi";
2669  title = labelname + "DenominatorPFEtaPhi;PF #eta; Calo #Phi";
2670  MonitorElement* DenominatorPFEtaPhi =
2671  iBooker.book2D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_, Phibins_, PhiMin_, PhiMax_);
2672  DenominatorPFEtaPhi->getTH1();
2673 
2674  histoname = labelname + "_DenominatorPFEtaBarrel";
2675  title = labelname + "DenominatorPFEtaBarrel;Calo #eta ";
2676  MonitorElement* DenominatorPFEtaBarrel =
2677  iBooker.book1D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_);
2678  DenominatorPFEtaBarrel->getTH1();
2679 
2680  histoname = labelname + "_DenominatorPFPhiBarrel";
2681  title = labelname + "DenominatorPFPhiBarrel;PF #Phi";
2682  MonitorElement* DenominatorPFPhiBarrel =
2683  iBooker.book1D(histoname.c_str(), title.c_str(), Phibins_, PhiMin_, PhiMax_);
2684  DenominatorPFPhiBarrel->getTH1();
2685 
2686  histoname = labelname + "_DenominatorPFEtaEndcap";
2687  title = labelname + "DenominatorPFEtaEndcap;PF #eta ";
2688  MonitorElement* DenominatorPFEtaEndcap =
2689  iBooker.book1D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_);
2690  DenominatorPFEtaEndcap->getTH1();
2691 
2692  histoname = labelname + "_DenominatorPFPhiEndcap";
2693  title = labelname + "DenominatorPFPhiEndcap;Calo #Phi";
2694  MonitorElement* DenominatorPFPhiEndcap =
2695  iBooker.book1D(histoname.c_str(), title.c_str(), Phibins_, PhiMin_, PhiMax_);
2696  DenominatorPFPhiEndcap->getTH1();
2697 
2698  histoname = labelname + "_DenominatorPFEtaForward";
2699  title = labelname + "DenominatorPFEtaForward;PF #eta ";
2700  MonitorElement* DenominatorPFEtaForward =
2701  iBooker.book1D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_);
2702  DenominatorPFEtaForward->getTH1();
2703 
2704  histoname = labelname + "_DenominatorPFPhiForward";
2705  title = labelname + "DenominatorPFPhiForward;PF #Phi";
2706  MonitorElement* DenominatorPFPhiForward =
2707  iBooker.book1D(histoname.c_str(), title.c_str(), Phibins_, PhiMin_, PhiMax_);
2708  DenominatorPFPhiForward->getTH1();
2709 
2710  histoname = labelname + "_DenominatorPFEta_LowpTcut";
2711  title = labelname + "DenominatorPFEta_LowpTcut;PF #eta ";
2712  MonitorElement* DenominatorPFEta_LowpTcut =
2713  iBooker.book1D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_);
2714  DenominatorPFEta_LowpTcut->getTH1();
2715 
2716  histoname = labelname + "_DenominatorPFPhi_LowpTcut";
2717  title = labelname + "DenominatorPFPhi_LowpTcut;PF #Phi";
2718  MonitorElement* DenominatorPFPhi_LowpTcut =
2719  iBooker.book1D(histoname.c_str(), title.c_str(), Phibins_, PhiMin_, PhiMax_);
2720  DenominatorPFPhi_LowpTcut->getTH1();
2721 
2722  histoname = labelname + "_DenominatorPFEtaPhi_LowpTcut";
2723  title = labelname + "DenominatorPFEtaPhi_LowpTcut;PF #eta;Calo #Phi";
2724  MonitorElement* DenominatorPFEtaPhi_LowpTcut =
2725  iBooker.book2D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_, Phibins_, PhiMin_, PhiMax_);
2726  DenominatorPFEtaPhi_LowpTcut->getTH1();
2727 
2728  histoname = labelname + "_DenominatorPFEta_MedpTcut";
2729  title = labelname + "DenominatorPFEta_MedpTcut;PF #eta ";
2730  MonitorElement* DenominatorPFEta_MedpTcut =
2731  iBooker.book1D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_);
2732  DenominatorPFEta_MedpTcut->getTH1();
2733 
2734  histoname = labelname + "_DenominatorPFPhi_MedpTcut";
2735  title = labelname + "DenominatorPFPhi_MedpTcut;PF #Phi";
2736  MonitorElement* DenominatorPFPhi_MedpTcut =
2737  iBooker.book1D(histoname.c_str(), title.c_str(), Phibins_, PhiMin_, PhiMax_);
2738  DenominatorPFPhi_MedpTcut->getTH1();
2739 
2740  histoname = labelname + "_DenominatorPFEtaPhi_MedpTcut";
2741  title = labelname + "DenominatorPFEtaPhi_MedpTcut;PF #eta;Calo #Phi";
2742  MonitorElement* DenominatorPFEtaPhi_MedpTcut =
2743  iBooker.book2D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_, Phibins_, PhiMin_, PhiMax_);
2744  DenominatorPFEtaPhi_MedpTcut->getTH1();
2745 
2746  histoname = labelname + "_DenominatorPFEta_HighpTcut";
2747  title = labelname + "DenominatorPFEta_HighpTcut;PF #eta ";
2748  MonitorElement* DenominatorPFEta_HighpTcut =
2749  iBooker.book1D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_);
2750  DenominatorPFEta_HighpTcut->getTH1();
2751 
2752  histoname = labelname + "_DenominatorPFPhi_HighpTcut";
2753  title = labelname + "DenominatorPFPhi_HighpTcut;PF #Phi";
2754  MonitorElement* DenominatorPFPhi_HighpTcut =
2755  iBooker.book1D(histoname.c_str(), title.c_str(), Phibins_, PhiMin_, PhiMax_);
2756  DenominatorPFPhi_HighpTcut->getTH1();
2757 
2758  histoname = labelname + "_DenominatorPFEtaPhi_HighpTcut";
2759  title = labelname + "DenominatorPFEtaPhi_HighpTcut;PF #eta;Calo #Phi";
2760  MonitorElement* DenominatorPFEtaPhi_HighpTcut =
2761  iBooker.book2D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_, Phibins_, PhiMin_, PhiMax_);
2762  DenominatorPFEtaPhi_HighpTcut->getTH1();
2763 
2764  histoname = labelname + "_PFDeltaR";
2765  title = labelname + "PFDeltaR;";
2766  MonitorElement* PFDeltaR = iBooker.book1D(histoname.c_str(), title.c_str(), 100, 0., 1.5);
2767  PFDeltaR->getTH1();
2768 
2769  histoname = labelname + "_PFDeltaPhi";
2770  title = labelname + "PFDeltaPhi;";
2771  MonitorElement* PFDeltaPhi = iBooker.book1D(histoname.c_str(), title.c_str(), 500, -5.0, 5.0);
2772  PFDeltaPhi->getTH1();
2773 
2774  v.setEffHistos(NumeratorPt,
2775  NumeratorPtBarrel,
2776  NumeratorPtEndcap,
2777  NumeratorPtForward,
2778  NumeratorEta,
2779  NumeratorPhi,
2780  NumeratorEtaPhi,
2781  //
2782  NumeratorEtaBarrel,
2783  NumeratorPhiBarrel,
2784  NumeratorEtaEndcap,
2785  NumeratorPhiEndcap,
2786  NumeratorEtaForward,
2787  NumeratorPhiForward,
2788  NumeratorEta_LowpTcut,
2789  NumeratorPhi_LowpTcut,
2790  NumeratorEtaPhi_LowpTcut,
2791  NumeratorEta_MedpTcut,
2792  NumeratorPhi_MedpTcut,
2793  NumeratorEtaPhi_MedpTcut,
2794  NumeratorEta_HighpTcut,
2795  NumeratorPhi_HighpTcut,
2796  NumeratorEtaPhi_HighpTcut,
2797  //
2798  DenominatorPt,
2799  DenominatorPtBarrel,
2800  DenominatorPtEndcap,
2801  DenominatorPtForward,
2802  DenominatorEta,
2803  DenominatorPhi,
2804  DenominatorEtaPhi,
2805  //
2806  DenominatorEtaBarrel,
2807  DenominatorPhiBarrel,
2808  DenominatorEtaEndcap,
2809  DenominatorPhiEndcap,
2810  DenominatorEtaForward,
2811  DenominatorPhiForward,
2812  DenominatorEta_LowpTcut,
2813  DenominatorPhi_LowpTcut,
2814  DenominatorEtaPhi_LowpTcut,
2815  DenominatorEta_MedpTcut,
2816  DenominatorPhi_MedpTcut,
2817  DenominatorEtaPhi_MedpTcut,
2818  DenominatorEta_HighpTcut,
2819  DenominatorPhi_HighpTcut,
2820  DenominatorEtaPhi_HighpTcut,
2821  DeltaR,
2822  DeltaPhi,
2823  //
2824  NumeratorPFPt,
2825  NumeratorPFMHT,
2826  NumeratorPFPtBarrel,
2827  NumeratorPFPtEndcap,
2828  NumeratorPFPtForward,
2829  NumeratorPFEta,
2830  NumeratorPFPhi,
2831  NumeratorPFEtaPhi,
2832  NumeratorPFEtaBarrel,
2833  NumeratorPFPhiBarrel,
2834  NumeratorPFEtaEndcap,
2835  NumeratorPFPhiEndcap,
2836  NumeratorPFEtaForward,
2837  NumeratorPFPhiForward,
2838  NumeratorPFEta_LowpTcut,
2839  NumeratorPFPhi_LowpTcut,
2840  NumeratorPFEtaPhi_LowpTcut,
2841  NumeratorPFEta_MedpTcut,
2842  NumeratorPFPhi_MedpTcut,
2843  NumeratorPFEtaPhi_MedpTcut,
2844  NumeratorPFEta_HighpTcut,
2845  NumeratorPFPhi_HighpTcut,
2846  NumeratorPFEtaPhi_HighpTcut,
2847  DenominatorPFPt,
2848  DenominatorPFMHT,
2849  DenominatorPFPtBarrel,
2850  DenominatorPFPtEndcap,
2851  DenominatorPFPtForward,
2852  DenominatorPFEta,
2853  DenominatorPFPhi,
2854  DenominatorPFEtaPhi,
2855  DenominatorPFEtaBarrel,
2856  DenominatorPFPhiBarrel,
2857  DenominatorPFEtaEndcap,
2858  DenominatorPFPhiEndcap,
2859  DenominatorPFEtaForward,
2860  DenominatorPFPhiForward,
2861  DenominatorPFEta_LowpTcut,
2862  DenominatorPFPhi_LowpTcut,
2863  DenominatorPFEtaPhi_LowpTcut,
2864  DenominatorPFEta_MedpTcut,
2865  DenominatorPFPhi_MedpTcut,
2866  DenominatorPFEtaPhi_MedpTcut,
2867  DenominatorPFEta_HighpTcut,
2868  DenominatorPFPhi_HighpTcut,
2869  DenominatorPFEtaPhi_HighpTcut,
2870  PFDeltaR,
2871  PFDeltaPhi);
2872 
2873  } // Loop over Jet Trigger
2874 
2875  if ((v.getObjectType() == trigger::TriggerJet) && (v.getTriggerType() == "DiJet_Trigger")) {
2876  histoname = labelname + "_NumeratorAvrgPt";
2877  title = labelname + "NumeratorAvrgPt;Calo Pt[GeV/c]";
2878  MonitorElement* NumeratorPt = iBooker.book1D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_);
2879  NumeratorPt->getTH1();
2880 
2881  histoname = labelname + "_NumeratorAvrgEta";
2882  title = labelname + "NumeratorAvrgEta;Calo #eta";
2883  MonitorElement* NumeratorEta = iBooker.book1D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_);
2884  NumeratorEta->getTH1();
2885 
2886  histoname = labelname + "_DenominatorAvrgPt";
2887  title = labelname + "DenominatorAvrgPt;Calo Pt[GeV/c] ";
2888  MonitorElement* DenominatorPt = iBooker.book1D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_);
2889  DenominatorPt->getTH1();
2890 
2891  histoname = labelname + "_DenominatorAvrgEta";
2892  title = labelname + "DenominatorAvrgEta;Calo #eta";
2893  MonitorElement* DenominatorEta = iBooker.book1D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_);
2894  DenominatorEta->getTH1();
2895 
2896  histoname = labelname + "_DeltaR";
2897  title = labelname + "DeltaR;";
2898  MonitorElement* DeltaR = iBooker.book1D(histoname.c_str(), title.c_str(), 100, 0., 1.5);
2899  DeltaR->getTH1();
2900 
2901  histoname = labelname + "_DeltaPhi";
2902  title = labelname + "DeltaPhi;";
2903  MonitorElement* DeltaPhi = iBooker.book1D(histoname.c_str(), title.c_str(), 500, -5., 5.);
2904  DeltaPhi->getTH1();
2905 
2906  //add PF histo: SJ
2907  histoname = labelname + "_NumeratorAvrgPFPt";
2908  title = labelname + "NumeratorAvrgPFPt;PF Pt[GeV/c]";
2909  MonitorElement* NumeratorPFPt = iBooker.book1D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_);
2910  NumeratorPFPt->getTH1();
2911 
2912  histoname = labelname + "_NumeratorAvrgPFEta";
2913  title = labelname + "NumeratorAvrgPFEta;PF #eta";
2914  MonitorElement* NumeratorPFEta = iBooker.book1D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_);
2915  NumeratorPFEta->getTH1();
2916 
2917  histoname = labelname + "_DenominatorAvrgPFPt";
2918  title = labelname + "DenominatorAvrgPFPt;PF Pt[GeV/c] ";
2919  MonitorElement* DenominatorPFPt = iBooker.book1D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_);
2920  DenominatorPFPt->getTH1();
2921 
2922  histoname = labelname + "_DenominatorAvrgPFEta";
2923  title = labelname + "DenominatorAvrgPFEta;PF #eta";
2924  MonitorElement* DenominatorPFEta =
2925  iBooker.book1D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_);
2926  DenominatorPFEta->getTH1();
2927 
2928  histoname = labelname + "_PFDeltaR";
2929  title = labelname + "PFDeltaR;";
2930  MonitorElement* PFDeltaR = iBooker.book1D(histoname.c_str(), title.c_str(), 100, 0., 1.5);
2931  PFDeltaR->getTH1();
2932 
2933  histoname = labelname + "_PFDeltaPhi";
2934  title = labelname + "PFDeltaPhi;";
2935  MonitorElement* PFDeltaPhi = iBooker.book1D(histoname.c_str(), title.c_str(), 500, -5., 5.);
2936  PFDeltaPhi->getTH1();
2937 
2938  v.setEffHistos(dummy,
2939  dummy,
2940  dummy,
2941  dummy,
2942  dummy,
2943  dummy,
2944  dummy,
2945  dummy,
2946  dummy,
2947  dummy,
2948  dummy,
2949  dummy,
2950  dummy,
2951  dummy,
2952  dummy,
2953  dummy,
2954  dummy,
2955  dummy,
2956  dummy,
2957  dummy,
2958  dummy,
2959  dummy,
2960  dummy,
2961  dummy,
2962  dummy,
2963  dummy,
2964  dummy,
2965  dummy,
2966  dummy,
2967  dummy,
2968  dummy,
2969  dummy,
2970  dummy,
2971  dummy,
2972  dummy,
2973  dummy,
2974  dummy,
2975  dummy,
2976  dummy,
2977  dummy,
2978  dummy,
2979  dummy,
2980  dummy,
2981  dummy,
2982  dummy,
2983  dummy,
2984  dummy,
2985  dummy,
2986  dummy,
2987  dummy,
2988  dummy,
2989  dummy,
2990  dummy,
2991  dummy,
2992  dummy,
2993  dummy,
2994  dummy,
2995  dummy,
2996  dummy,
2997  dummy,
2998  dummy,
2999  dummy,
3000  dummy,
3001  dummy,
3002  dummy,
3003  dummy,
3004  dummy,
3005  dummy,
3006  dummy,
3007  dummy,
3008  dummy,
3009  dummy,
3010  dummy,
3011  dummy,
3012  dummy,
3013  dummy,
3014  dummy,
3015  dummy,
3016  dummy,
3017  dummy,
3018  dummy,
3019  dummy,
3020  dummy,
3021  dummy,
3022  dummy,
3023  dummy,
3024  dummy,
3025  dummy,
3026  dummy,
3027  dummy,
3028  dummy,
3029  dummy,
3030  dummy,
3031  dummy);
3032  }
3033 
3034  if (v.getObjectType() == trigger::TriggerMET || (v.getObjectType() == trigger::TriggerTET)) {
3035  histoname = labelname + "_NumeratorPt";
3036  if (v.getPath().find("HLT_PFMET") == std::string::npos)
3037  title = labelname + "NumeratorPt; CaloMET[GeV/c]";
3038  else
3039  title = labelname + "NumeratorPt; PFMET[GeV/c]";
3040  MonitorElement* NumeratorPt = iBooker.book1D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_);
3041  NumeratorPt->getTH1();
3042 
3043  histoname = labelname + "_NumeratorPhi";
3044  title = labelname + "NumeratorPhi; #Phi";
3045  MonitorElement* NumeratorPhi = iBooker.book1D(histoname.c_str(), title.c_str(), Phibins_, PhiMin_, PhiMax_);
3046  NumeratorPhi->getTH1();
3047 
3048  histoname = labelname + "_DenominatorPt";
3049  if (v.getPath().find("HLT_PFMET") == std::string::npos)
3050  title = labelname + "DenominatorPt; CaloMET[GeV/c]";
3051  else
3052  title = labelname + "DenominatorPt; PFMET[GeV/c]";
3053  MonitorElement* DenominatorPt = iBooker.book1D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_);
3054  DenominatorPt->getTH1();
3055 
3056  histoname = labelname + "_DenominatorPhi";
3057  title = labelname + "DenominatorPhi; #Phi";
3058  MonitorElement* DenominatorPhi = iBooker.book1D(histoname.c_str(), title.c_str(), Phibins_, PhiMin_, PhiMax_);
3059  DenominatorPhi->getTH1();
3060 
3061  v.setEffHistos(NumeratorPt,
3062  dummy,
3063  dummy,
3064  dummy,
3065  dummy,
3066  NumeratorPhi,
3067  dummy,
3068  dummy,
3069  dummy,
3070  dummy,
3071  dummy,
3072  dummy,
3073  dummy,
3074  dummy,
3075  dummy,
3076  dummy,
3077  dummy,
3078  dummy,
3079  dummy,
3080  dummy,
3081  dummy,
3082  dummy,
3083  DenominatorPt,
3084  dummy,
3085  dummy,
3086  dummy,
3087  dummy,
3088  DenominatorPhi,
3089  dummy,
3090  dummy,
3091  dummy,
3092  dummy,
3093  dummy,
3094  dummy,
3095  dummy,
3096  dummy,
3097  dummy,
3098  dummy,
3099  dummy,
3100  dummy,
3101  dummy,
3102  dummy,
3103  dummy,
3104  dummy,
3105  dummy,
3106  dummy,
3107  dummy,
3108  dummy,
3109  dummy,
3110  dummy,
3111  dummy,
3112  dummy,
3113  dummy,
3114  dummy,
3115  dummy,
3116  dummy,
3117  dummy,
3118  dummy,
3119  dummy,
3120  dummy,
3121  dummy,
3122  dummy,
3123  dummy,
3124  dummy,
3125  dummy,
3126  dummy,
3127  dummy,
3128  dummy,
3129  dummy,
3130  dummy,
3131  dummy,
3132  dummy,
3133  dummy,
3134  dummy,
3135  dummy,
3136  dummy,
3137  dummy,
3138  dummy,
3139  dummy,
3140  dummy,
3141  dummy,
3142  dummy,
3143  dummy,
3144  dummy,
3145  dummy,
3146  dummy,
3147  dummy,
3148  dummy,
3149  dummy,
3150  dummy,
3151  dummy,
3152  dummy,
3153  dummy,
3154  dummy);
3155  } // Loop over MET trigger
3156  }
3157  } //plotEff_
3158 
3159  if (runStandalone_) { //runStandalone
3160  //--------Histos to see WHY trigger is NOT fired----------
3161  int Nbins_ = 10;
3162  int Nmin_ = 0;
3163  int Nmax_ = 10;
3164  int Ptbins_ = 1000;
3165  int Etabins_ = 40;
3166  int Phibins_ = 35;
3167  double PtMin_ = 0.;
3168  double PtMax_ = 1000.;
3169  double EtaMin_ = -5.;
3170  double EtaMax_ = 5.;
3171  double PhiMin_ = -3.14159;
3172  double PhiMax_ = 3.14159;
3173 
3174  std::string dirName4_ = dirname_ + "/TriggerNotFired/";
3175  // iBooker.setCurrentFolder(dirName4);
3176 
3177  for (auto& v : hltPathsAll_) {
3179  dummy = iBooker.bookFloat("dummy");
3180 
3181  std::string labelname("ME");
3182  std::string histoname(labelname + "");
3183  std::string title(labelname + "");
3184  iBooker.setCurrentFolder(dirName4_ + v.getPath());
3185 
3186  histoname = labelname + "_TriggerSummary";
3187  title = labelname + "Summary of trigger levels";
3188  MonitorElement* TriggerSummary = iBooker.book1D(histoname.c_str(), title.c_str(), 7, -0.5, 6.5);
3189 
3190  std::vector<std::string> trigger;
3191  trigger.emplace_back("Nevt");
3192  trigger.emplace_back("L1 failed");
3193  trigger.emplace_back("L1 & HLT failed");
3194  trigger.emplace_back("L1 failed but not HLT");
3195  trigger.emplace_back("L1 passed");
3196  trigger.emplace_back("L1 & HLT passed");
3197  trigger.emplace_back("L1 passed but not HLT");
3198 
3199  for (unsigned int i = 0; i < trigger.size(); i++)
3200  TriggerSummary->setBinLabel(i + 1, trigger[i]);
3201 
3202  if ((v.getTriggerType() == "SingleJet_Trigger")) {
3203  histoname = labelname + "_JetPt";
3204  title = labelname + "Leading jet pT;Pt[GeV/c]";
3205  MonitorElement* JetPt = iBooker.book1D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_);
3206  JetPt->getTH1();
3207 
3208  histoname = labelname + "_JetEtaVsPt";
3209  title = labelname + "Leading jet #eta vs pT;#eta;Pt[GeV/c]";
3210  MonitorElement* JetEtaVsPt =
3211  iBooker.book2D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_, Ptbins_, PtMin_, PtMax_);
3212  JetEtaVsPt->getTH1();
3213 
3214  histoname = labelname + "_JetPhiVsPt";
3215  title = labelname + "Leading jet #Phi vs pT;#Phi;Pt[GeV/c]";
3216  MonitorElement* JetPhiVsPt =
3217  iBooker.book2D(histoname.c_str(), title.c_str(), Phibins_, PhiMin_, PhiMax_, Ptbins_, PtMin_, PtMax_);
3218  JetPhiVsPt->getTH1();
3219 
3220  v.setDgnsHistos(
3221  TriggerSummary, dummy, JetPt, JetEtaVsPt, JetPhiVsPt, dummy, dummy, dummy, dummy, dummy, dummy);
3222  } // single Jet trigger
3223 
3224  if ((v.getTriggerType() == "DiJet_Trigger")) {
3225  histoname = labelname + "_JetSize";
3226  title = labelname + "Jet Size;multiplicity";
3227  MonitorElement* JetSize = iBooker.book1D(histoname.c_str(), title.c_str(), Nbins_, Nmin_, Nmax_);
3228  JetSize->getTH1();
3229 
3230  histoname = labelname + "_AvergPt";
3231  title = labelname + "Average Pt;Pt[GeV/c]";
3232  MonitorElement* Pt12 = iBooker.book1D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_);
3233  Pt12->getTH1();
3234 
3235  histoname = labelname + "_AvergEta";
3236  title = labelname + "Average Eta;#eta";
3237  MonitorElement* Eta12 = iBooker.book1D(histoname.c_str(), title.c_str(), Etabins_, EtaMin_, EtaMax_);
3238  Eta12->getTH1();
3239 
3240  histoname = labelname + "_PhiDifference";
3241  title = labelname + "#Delta#Phi;#Delta#Phi";
3242  MonitorElement* Phi12 = iBooker.book1D(histoname.c_str(), title.c_str(), Phibins_, PhiMin_, PhiMax_);
3243  Phi12->getTH1();
3244 
3245  histoname = labelname + "_Pt3Jet";
3246  title = labelname + "Pt of 3rd Jet;Pt[GeV/c]";
3247  MonitorElement* Pt3 = iBooker.book1D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_);
3248  Pt3->getTH1();
3249 
3250  histoname = labelname + "_Pt12VsPt3Jet";
3251  title = labelname + "Pt of 3rd Jet vs Average Pt of leading jets;Avergage Pt[GeV/c]; Pt of 3rd Jet [GeV/c]";
3252  MonitorElement* Pt12Pt3 =
3253  iBooker.book2D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_, Ptbins_, PtMin_, PtMax_);
3254  Pt12Pt3->getTH1();
3255 
3256  histoname = labelname + "_Pt12VsPhi12";
3257  title = labelname +
3258  "Average Pt of leading jets vs #Delta#Phi between leading jets;Avergage Pt[GeV/c]; #Delta#Phi";
3259  MonitorElement* Pt12Phi12 =
3260  iBooker.book2D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_, Phibins_, PhiMin_, PhiMax_);
3261  Pt12Phi12->getTH1();
3262 
3263  v.setDgnsHistos(TriggerSummary, JetSize, dummy, dummy, dummy, Pt12, Eta12, Phi12, Pt3, Pt12Pt3, Pt12Phi12);
3264  } // Dijet Jet trigger
3265 
3266  if ((v.getTriggerType() == "MET_Trigger")) {
3267  histoname = labelname + "_MET";
3268  title = labelname + "MET;Pt[GeV/c]";
3269  MonitorElement* MET = iBooker.book1D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_);
3270  MET->getTH1();
3271 
3272  v.setDgnsHistos(TriggerSummary, dummy, MET, dummy, dummy, dummy, dummy, dummy, dummy, dummy, dummy);
3273  } // MET trigger
3274 
3275  if ((v.getTriggerType() == "TET_Trigger")) {
3276  histoname = labelname + "_TET";
3277  title = labelname + "TET;Pt[GeV/c]";
3278  MonitorElement* TET = iBooker.book1D(histoname.c_str(), title.c_str(), Ptbins_, PtMin_, PtMax_);
3279  TET->getTH1();
3280 
3281  v.setDgnsHistos(TriggerSummary, dummy, TET, dummy, dummy, dummy, dummy, dummy, dummy, dummy, dummy);
3282  } // TET trigger
3283  }
3284  } //runStandalone
3285  }
3286 }
3287 //------------------------------------------------------------------------//
3289  // find L1 condition for numpath with numpath objecttype
3290  // find PSet for L1 global seed for numpath,
3291  // list module labels for numpath
3292  std::string l1pathname = "dummy";
3293 
3294  std::vector<std::string> numpathmodules = hltConfig_.moduleLabels(pathname);
3295 
3296  for (auto& numpathmodule : numpathmodules) {
3297  if (hltConfig_.moduleType(numpathmodule) == "HLTLevel1GTSeed") {
3298  l1pathname = numpathmodule;
3299  break;
3300  }
3301  }
3302  return l1pathname;
3303 }
3304 
3305 //------------------------------------------------------------------------//
3307  bool output = false;
3308  if (fabs(eta) <= 1.3)
3309  output = true;
3310  return output;
3311 }
3312 
3313 //------------------------------------------------------------------------//
3315  bool output = false;
3316  if (fabs(eta) <= 3.0 && fabs(eta) > 1.3)
3317  output = true;
3318  return output;
3319 }
3320 
3321 //------------------------------------------------------------------------//
3323  bool output = false;
3324  if (fabs(eta) > 3.0)
3325  output = true;
3326  return output;
3327 }
3328 
3329 //------------------------------------------------------------------------//
3331  // hltConfig_ has to be defined first before calling this method
3332  bool output = false;
3333  for (unsigned int j = 0; j != hltConfig_.size(); ++j) {
3334  if (hltConfig_.triggerName(j) == pathname)
3335  output = true;
3336  }
3337  return output;
3338 }
3339 
3340 //------------------------------------------------------------------------//
3342  // triggerResults_, triggerNames_ has to be defined first before calling this method
3343  bool output = false;
3344  if (triggerResults_.isValid()) {
3347  output = true;
3348  }
3349  return output;
3350 }
3351 
3352 //------------------------------------------------------------------------//
3353 // This returns the position of trigger name defined in summary histograms
3355  int nbins = rate_All->getTH1()->GetNbinsX();
3356  double binVal = -100;
3357  for (int ibin = 1; ibin < nbins + 1; ibin++) {
3358  const char* binLabel = rate_All->getTH1()->GetXaxis()->GetBinLabel(ibin);
3359  if (binLabel[0] == '\0')
3360  continue;
3361  // std::string binLabel_str = string(binLabel);
3362  // if(binLabel_str.compare(trigName)!=0)continue;
3363  if (trigName != binLabel)
3364  continue;
3365 
3366  if (trigName == binLabel) {
3367  binVal = rate_All->getTH1()->GetBinCenter(ibin);
3368  break;
3369  }
3370  }
3371  return binVal;
3372 }
3373 
3374 //------------------------------------------------------------------------//
3376  // processname_, triggerObj_ has to be defined before calling this method
3377  bool output = false;
3378  edm::InputTag testTag(objectName, "", processname_);
3379  const int index = triggerObj_->filterIndex(testTag);
3380  if (index >= triggerObj_->sizeFilters()) {
3381  edm::LogInfo("JetMETHLTOfflineSource") << "no index " << index << " of that name ";
3382  } else {
3384  if (!k.empty())
3385  output = true;
3386  }
3387  return output;
3388 }
3389 //------------------------------------------------------------------------//
3390 
bool accept() const
Has at least one path accepted the event?
const std::string & triggerName(unsigned int triggerIndex) const
const Keys & filterKeys(trigger::size_type index) const
Definition: TriggerEvent.h:119
Definition: DeltaR.py:1
T getParameter(std::string const &) const
Definition: ParameterSet.h:307
edm::EDGetTokenT< edm::TriggerResults > triggerResultsFUToken
MonitorElement * bookFloat(TString const &name, FUNC onbooking=NOOP())
Definition: DQMStore.h:80
edm::EDGetTokenT< reco::VertexCollection > vertexToken
edm::EDGetTokenT< reco::PFJetCollection > pfJetsToken
virtual bool isEndCap(double eta)
JetMETHLTOfflineSource(const edm::ParameterSet &)
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:36
edm::Handle< reco::PFJetCollection > pfjetColl_
T w() const
std::string const & instance() const
Definition: InputTag.h:37
virtual double TriggerPosition(std::string trigName)
trigger::size_type sizeFilters() const
Definition: TriggerEvent.h:147
T const * product() const
Definition: Handle.h:70
edm::Handle< edm::TriggerResults > triggerResults_
const std::string moduleType(const std::string &module) const
C++ class name of module.
reco::PFJetCollection pfjet
std::string const & label() const
Definition: InputTag.h:36
edm::Handle< reco::PFMETCollection > pfmetColl_
PathInfoCollection hltPathsAllTriggerSummary_
double correction(const LorentzVector &fJet) const
get correction using Jet information only
Definition: JetCorrector.h:46
virtual bool validPathHLT(std::string path)
void calculate(const edm::Event &event, const edm::EventSetup &setup, const reco::CaloJet &jet, const int iDbg=0)
Definition: JetIDHelper.cc:93
static const std::string removeVersion(const std::string &trigger)
void bookHistograms(DQMStore::IBooker &, edm::Run const &run, edm::EventSetup const &c) override
virtual void fillMEforMonAllTrigger(const edm::Event &iEvent, const edm::EventSetup &)
unsigned int triggerIndex(std::string_view name) const
Definition: TriggerNames.cc:52
T getUntrackedParameter(std::string const &, T const &) const
void Fill(long long x)
Collection of Calo MET.
virtual bool isBarrel(double eta)
std::vector< std::string > pathFilter_
int iEvent
Definition: GenABIO.cc:224
void analyze(const edm::Event &, const edm::EventSetup &) override
edm::EDGetTokenT< reco::JetCorrector > CaloJetCorToken_
std::vector< std::string > MBTrigPaths_
unsigned int size() const
number of trigger paths in trigger table
checkPath
Definition: config.py:11
virtual bool isTriggerObjectFound(std::string objectName)
Definition: MET.h:41
T sqrt(T t)
Definition: SSEVec.h:19
virtual bool isForward(double eta)
const std::vector< std::string > & moduleLabels(unsigned int trigger) const
label(s) of module(s) on a trigger path
MonitorElement * correlation_AllWrtMu
std::vector< std::string > pathRejectKeyword_
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
const TriggerObjectCollection & getObjects() const
Definition: TriggerEvent.h:102
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
edm::EDGetTokenT< reco::CaloMETCollection > caloMetToken
reco::CaloJetCollection calojet
std::vector< std::string > MuonTrigPaths_
virtual void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
virtual bool isHLTPathAccepted(std::string pathName)
edm::Handle< reco::CaloJetCollection > calojetColl_
std::size_t size() const
Definition: TriggerNames.cc:59
void dqmBeginRun(edm::Run const &run, edm::EventSetup const &c) override
edm::EDGetTokenT< trigger::TriggerEvent > triggerSummaryFUToken
std::vector< TriggerObject > TriggerObjectCollection
collection of trigger physics objects (e.g., all isolated muons)
Definition: TriggerObject.h:75
Log< level::Info, false > LogInfo
virtual void fillMEforMonTriggerSummary(const edm::Event &iEvent, const edm::EventSetup &)
trigger::size_type filterIndex(const edm::InputTag &filterTag) const
find index of filter in data-member vector from filter tag
Definition: TriggerEvent.h:133
#define N
Definition: blowfish.cc:9
std::vector< std::pair< std::string, std::string > > custompathnamepairs_
edm::EDGetTokenT< reco::PFMETCollection > pfMetToken
std::vector< size_type > Keys
PathInfoCollection hltPathsAll_
bool init(const edm::Run &iRun, const edm::EventSetup &iSetup, const std::string &processName, bool &changed)
d&#39;tor
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
Definition: DQMStore.h:221
const std::string getL1ConditionModuleName(const std::string &pathname)
edm::Handle< trigger::TriggerEvent > triggerObj_
MonitorElement * correlation_AllWrtMB
edm::EDGetTokenT< reco::CaloJetCollection > caloJetsToken
bool isValid() const
Definition: HandleBase.h:70
fixed size matrix
double et() const final
transverse energy
HLT enums.
edm::Handle< reco::CaloMETCollection > calometColl_
edm::EDGetTokenT< edm::TriggerResults > triggerResultsToken
edm::EDGetTokenT< trigger::TriggerEvent > triggerSummaryToken
Definition: output.py:1
virtual void fillMEforEffAllTrigger(const edm::Event &iEvent, const edm::EventSetup &)
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98
double phi() const final
momentum azimuthal angle
reco::helper::JetIDHelper * jetID
edm::EDGetTokenT< reco::JetCorrector > PFJetCorToken_
Definition: Run.h:45
PathInfoCollection hltPathsEff_
#define LogDebug(id)
Collection of PF MET.