CMS 3D CMS Logo

HTMonitor.cc
Go to the documentation of this file.
1 #include <string>
2 #include <vector>
3 
37 
38 class HTMonitor : public DQMEDAnalyzer, public TriggerDQMBase {
39 public:
42 
44  ~HTMonitor() throw() override;
45  static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
46 
47 protected:
49  void analyze(edm::Event const& iEvent, edm::EventSetup const& iSetup) override;
50 
51 private:
53 
57 
63 
65  edm::EDGetTokenT<reco::JetView> jetToken_;
67  edm::EDGetTokenT<reco::MuonCollection> muoToken_;
69 
74 
76  ObjME htVsLS_;
77  ObjME METPhiME_;
78  ObjME jetpt1ME_;
79  ObjME jetpt2ME_;
80  ObjME phij1ME_;
81  ObjME phij2ME_;
82  ObjME etaj1ME_;
83  ObjME etaj2ME_;
84  ObjME nJetsME_; //number of jets passing jet selection (Pt>0)
85  ObjME nJetsHTME_; //number of jets passing jet selection HT (Pt>30 & eta<2.5)
86 
89 
95  unsigned njets_;
96  unsigned nelectrons_;
97  unsigned nmuons_;
98  double dEtaCut_;
99 
100  static constexpr double MAXedge_PHI = 3.2;
101  static constexpr int Nbin_PHI = 64;
103  // Define Eta Bining
104  static constexpr double MAX_ETA = 5.0;
105  static constexpr int N_ETA = 20;
107  //Define nJets Binning HT selection Pt>30 && eta<2.4
108  static constexpr int MIN_NJETS_HT = 0;
109  static constexpr int MAX_NJETS_HT = 30;
110  static constexpr int N_BIN_NJETS_HT = 30;
112  //Define nJets Binning general selection Pt>0
113  static constexpr int MIN_NJETS = 0;
114  static constexpr int MAX_NJETS = 200;
115  static constexpr int N_BIN_NJETS = 200;
117 
120 };
121 
123  : folderName_(iConfig.getParameter<std::string>("FolderName")),
124  requireValidHLTPaths_(iConfig.getParameter<bool>("requireValidHLTPaths")),
125  hltPathsAreValid_(false),
126  enableFullMonitoring_(iConfig.getParameter<bool>("enableFullMonitoring")),
127  metInputTag_(iConfig.getParameter<edm::InputTag>("met")),
128  jetInputTag_(iConfig.getParameter<edm::InputTag>("jets")),
129  eleInputTag_(iConfig.getParameter<edm::InputTag>("electrons")),
130  muoInputTag_(iConfig.getParameter<edm::InputTag>("muons")),
131  vtxInputTag_(iConfig.getParameter<edm::InputTag>("vertices")),
132  metToken_(consumes<reco::PFMETCollection>(metInputTag_)),
133  jetToken_(mayConsume<reco::JetView>(jetInputTag_)),
134  eleToken_(mayConsume<reco::GsfElectronCollection>(eleInputTag_)),
135  muoToken_(mayConsume<reco::MuonCollection>(muoInputTag_)),
136  vtxToken_(mayConsume<reco::VertexCollection>(vtxInputTag_)),
137  ht_variable_binning_(
138  iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<std::vector<double> >("htBinning")),
139  jetptBinning_(
140  iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<std::vector<double> >("jetptBinning")),
141  ht_binning_(
142  getHistoPSet(iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<edm::ParameterSet>("htPSet"))),
143  ls_binning_(
144  getHistoPSet(iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<edm::ParameterSet>("lsPSet"))),
145  num_genTriggerEventFlag_(new GenericTriggerEventFlag(
146  iConfig.getParameter<edm::ParameterSet>("numGenericTriggerEventPSet"), consumesCollector(), *this)),
147  den_genTriggerEventFlag_(new GenericTriggerEventFlag(
148  iConfig.getParameter<edm::ParameterSet>("denGenericTriggerEventPSet"), consumesCollector(), *this)),
149  metSelection_(iConfig.getParameter<std::string>("metSelection")),
150  jetSelection_(iConfig.getParameter<std::string>("jetSelection")),
151  eleSelection_(iConfig.getParameter<std::string>("eleSelection")),
152  muoSelection_(iConfig.getParameter<std::string>("muoSelection")),
153  jetSelection_HT_(iConfig.getParameter<std::string>("jetSelection_HT")),
154  njets_(iConfig.getParameter<unsigned>("njets")),
155  nelectrons_(iConfig.getParameter<unsigned>("nelectrons")),
156  nmuons_(iConfig.getParameter<unsigned>("nmuons")),
157  dEtaCut_(iConfig.getParameter<double>("dEtaCut")),
158  quantity_(iConfig.getParameter<std::string>("quantity")),
159  warningWasPrinted_(false) {}
160 
163  num_genTriggerEventFlag_.reset();
164  }
166  den_genTriggerEventFlag_.reset();
167  }
168 }
169 
170 void HTMonitor::bookHistograms(DQMStore::IBooker& ibooker, edm::Run const& iRun, edm::EventSetup const& iSetup) {
171  // Initialize the GenericTriggerEventFlag
173  num_genTriggerEventFlag_->initRun(iRun, iSetup);
174  }
176  den_genTriggerEventFlag_->initRun(iRun, iSetup);
177  }
178 
179  // check if every HLT path specified in numerator and denominator has a valid match in the HLT Menu
181  den_genTriggerEventFlag_->on() && num_genTriggerEventFlag_->allHLTPathsAreValid() &&
182  den_genTriggerEventFlag_->allHLTPathsAreValid());
183 
184  // if valid HLT paths are required,
185  // create DQM outputs only if all paths are valid
187  return;
188  }
189 
190  std::string histname, histtitle;
191 
192  std::string currentFolder = folderName_;
193  ibooker.setCurrentFolder(currentFolder);
194  if (quantity_ == "HT") {
195  histname = "ht_variable";
196  histtitle = "HT";
197  bookME(ibooker, qME_variableBinning_, histname, histtitle, ht_variable_binning_);
198  setMETitle(qME_variableBinning_, "HT [GeV]", "events / [GeV]");
199 
200  histname = "htVsLS";
201  histtitle = "HT vs LS";
202  bookME(ibooker,
203  htVsLS_,
204  histname,
205  histtitle,
210  ht_binning_.xmax);
211  setMETitle(htVsLS_, "LS", "HT [GeV]");
212 
213  if (!enableFullMonitoring_) {
214  return;
215  }
216 
217  histname = "METPhi";
218  histtitle = "METPhi";
219  bookME(ibooker, METPhiME_, histname, histtitle, phi_binning_.nbins, phi_binning_.xmin, phi_binning_.xmax);
220  setMETitle(METPhiME_, "MET phi", "events / 0.1 rad");
221 
222  histname = "jetPt1";
223  histtitle = "leading Jet Pt";
224  bookME(ibooker, jetpt1ME_, histname, histtitle, jetptBinning_);
225  setMETitle(jetpt1ME_, "Pt_1 [GeV]", "events");
226 
227  histname = "jetPt2";
228  histtitle = "second leading Jet Pt";
229  bookME(ibooker, jetpt2ME_, histname, histtitle, jetptBinning_);
230  setMETitle(jetpt2ME_, "Pt_2 [GeV]", "events");
231 
232  histname = "jetEta1";
233  histtitle = "leading Jet eta";
234  bookME(ibooker, etaj1ME_, histname, histtitle, eta_binning.nbins, eta_binning.xmin, eta_binning.xmax);
235  setMETitle(etaj1ME_, "Jet_1 #eta", "events");
236 
237  histname = "jetEta2";
238  histtitle = "subleading Jet eta";
239  bookME(ibooker, etaj2ME_, histname, histtitle, eta_binning.nbins, eta_binning.xmin, eta_binning.xmax);
240  setMETitle(etaj2ME_, "Jet_2 #eta", "events");
241 
242  histname = "jetPhi1";
243  histtitle = "leading Jet phi";
244  bookME(ibooker, phij1ME_, histname, histtitle, phi_binning_.nbins, phi_binning_.xmin, phi_binning_.xmax);
245  setMETitle(phij1ME_, "Jet_1 #phi", "events / 0.1 rad");
246 
247  histname = "jetPhi2";
248  histtitle = "subleading Jet phi";
249  bookME(ibooker, phij2ME_, histname, histtitle, phi_binning_.nbins, phi_binning_.xmin, phi_binning_.xmax);
250  setMETitle(phij2ME_, "Jet_2 #phi", "events / 0.1 rad");
251 
252  histname = "nJets";
253  histtitle = "number of Jets";
254  bookME(ibooker, nJetsME_, histname, histtitle, nJets_binning.nbins, nJets_binning.xmin, nJets_binning.xmax);
255  setMETitle(nJetsME_, "number of Jets", "events");
256 
257  histname = "nJetsHT";
258  histtitle = "number of Jets HT";
259  bookME(
260  ibooker, nJetsHTME_, histname, histtitle, nJets_HT_binning.nbins, nJets_HT_binning.xmin, nJets_HT_binning.xmax);
261  setMETitle(nJetsHTME_, "number of Jets HT", "events");
262  } //end if -- HT quantity
263  else if (quantity_ == "Mjj") {
264  histname = "mjj_variable";
265  histtitle = "Mjj";
266  bookME(ibooker, qME_variableBinning_, histname, histtitle, ht_variable_binning_);
267  setMETitle(qME_variableBinning_, "Mjj [GeV]", "events / [GeV]");
268  } //end if -- Mjj quantity
269  else if (quantity_ == "softdrop") {
270  histname = "softdrop_variable";
271  histtitle = "softdropmass";
272  bookME(ibooker, qME_variableBinning_, histname, histtitle, ht_variable_binning_);
273  setMETitle(qME_variableBinning_, "leading jet softdropmass [GeV]", "events / [GeV]");
274  } //end if -- softdrop quantity
275 }
276 
278  // if valid HLT paths are required,
279  // analyze event only if all paths are valid
281  return;
282  }
283 
284  // Filter out events if Trigger Filtering is requested
285  if (den_genTriggerEventFlag_->on() && !den_genTriggerEventFlag_->accept(iEvent, iSetup))
286  return;
287 
289  iEvent.getByToken(metToken_, metHandle);
290  if (not metHandle.isValid()) {
291  if (not warningWasPrinted_) {
292  edm::LogWarning("HTMonitor") << "skipping events because the collection " << metInputTag_.label().c_str()
293  << " is not available";
294  warningWasPrinted_ = true;
295  }
296  return;
297  }
298  reco::PFMET pfmet = metHandle->front();
299  if (!metSelection_(pfmet))
300  return;
301 
302  edm::Handle<reco::JetView> jetHandle; //add a configurable jet collection & jet pt selection
303  iEvent.getByToken(jetToken_, jetHandle);
304  if (!jetHandle.isValid()) {
305  if (not warningWasPrinted_) {
306  edm::LogWarning("HTMonitor") << "skipping events because the collection " << jetInputTag_.label().c_str()
307  << " is not available";
308  warningWasPrinted_ = true;
309  }
310  return;
311  }
312  std::vector<reco::Jet> jets;
313  if (jetHandle->size() < njets_)
314  return;
315  for (auto const& j : *jetHandle) {
316  if (jetSelection_(j)) {
317  jets.push_back(j);
318  }
319  }
320 
321  if (jets.size() < njets_)
322  return;
323 
324  const float metphi = pfmet.phi();
325  const int nJetsSel = jets.size(); //jetSelection: PT>0
326  const float Pt_J1 = !jets.empty() ? jets[0].pt() : -10.0;
327  const float Pt_J2 = jets.size() >= 2 ? jets[1].pt() : -10.0;
328  const float Phi_J1 = !jets.empty() ? jets[0].phi() : -10.0;
329  const float Phi_J2 = jets.size() >= 2 ? jets[1].phi() : -10.0;
330  const float Eta_J1 = !jets.empty() ? jets[0].p4().eta() : -10.0;
331  const float Eta_J2 = jets.size() >= 2 ? jets[1].p4().eta() : -10.0;
332 
333  std::vector<reco::GsfElectron> electrons;
335  iEvent.getByToken(eleToken_, eleHandle);
336  if (eleHandle.isValid()) {
337  if (eleHandle->size() < nelectrons_)
338  return;
339  for (auto const& e : *eleHandle) {
340  if (eleSelection_(e))
341  electrons.push_back(e);
342  }
343  if (electrons.size() < nelectrons_)
344  return;
345  } else {
346  if (not warningWasPrinted_) {
347  if (eleInputTag_.label().empty())
348  edm::LogWarning("HTMonitor") << "GsfElectronCollection not set";
349  else
350  edm::LogWarning("HTMonitor") << "skipping events because the collection " << eleInputTag_.label().c_str()
351  << " is not available";
352 
353  warningWasPrinted_ = true;
354  }
355  if (!eleInputTag_.label().empty())
356  return;
357  }
358 
361  iEvent.getByToken(vtxToken_, vtxHandle);
362  if (vtxHandle.isValid()) {
363  for (auto const& v : *vtxHandle) {
364  bool isFake = v.isFake();
365 
366  if (!isFake) {
367  vtx = v;
368  break;
369  }
370  }
371  } else {
372  if (not warningWasPrinted_) {
373  if (vtxInputTag_.label().empty())
374  edm::LogWarning("HTMonitor") << "VertexCollection not set";
375  else
376  edm::LogWarning("HTMonitor") << "skipping events because the collection " << vtxInputTag_.label().c_str()
377  << " is not available";
378 
379  warningWasPrinted_ = true;
380  }
381  if (!vtxInputTag_.label().empty())
382  return;
383  }
384 
385  std::vector<reco::Muon> muons;
387  iEvent.getByToken(muoToken_, muoHandle);
388  if (muoHandle.isValid()) {
389  if (muoHandle->size() < nmuons_)
390  return;
391  for (auto const& m : *muoHandle) {
392  if (muoSelection_(m) && m.isGlobalMuon() && m.isPFMuon() && m.globalTrack()->normalizedChi2() < 10. &&
393  m.globalTrack()->hitPattern().numberOfValidMuonHits() > 0 && m.numberOfMatchedStations() > 1 &&
394  fabs(m.muonBestTrack()->dxy(vtx.position())) < 0.2 && fabs(m.muonBestTrack()->dz(vtx.position())) < 0.5 &&
395  m.innerTrack()->hitPattern().numberOfValidPixelHits() > 0 &&
396  m.innerTrack()->hitPattern().trackerLayersWithMeasurement() > 5)
397  muons.push_back(m);
398  }
399  if (muons.size() < nmuons_)
400  return;
401  } else {
402  if (not warningWasPrinted_) {
403  if (muoInputTag_.label().empty())
404  edm::LogWarning("HTMonitor") << "MuonCollection not set";
405  else
406  edm::LogWarning("HTMonitor") << "skipping events because the collection " << muoInputTag_.label().c_str()
407  << " is not available";
408 
409  warningWasPrinted_ = true;
410  }
411  if (!muoInputTag_.label().empty())
412  return;
413  }
414 
415  // fill histograms
416  if (quantity_ == "HT") {
417  float ht = 0.0;
418  int nJets_HT = 0;
419  for (auto const& j : *jetHandle) {
420  if (jetSelection_HT_(j)) {
421  ht += j.pt();
422  nJets_HT = nJets_HT + 1; //===== jetSelection HT: Pt>30 & eta<2.5
423  }
424  }
425 
426  // filling histograms (denominator)
428 
429  int ls = iEvent.id().luminosityBlock();
430  htVsLS_.denominator->Fill(ls, ht);
431 
432  if (enableFullMonitoring_) { //===check the flag
433 
435  jetpt1ME_.denominator->Fill(Pt_J1);
436  jetpt2ME_.denominator->Fill(Pt_J2);
437  phij1ME_.denominator->Fill(Phi_J1);
438  phij2ME_.denominator->Fill(Phi_J2);
439  etaj1ME_.denominator->Fill(Eta_J1);
440  etaj2ME_.denominator->Fill(Eta_J2);
441  nJetsME_.denominator->Fill(nJetsSel);
442  nJetsHTME_.denominator->Fill(nJets_HT);
443  }
444 
445  // applying selection for numerator
446  if (num_genTriggerEventFlag_->on() && !num_genTriggerEventFlag_->accept(iEvent, iSetup))
447  return;
448 
449  // filling histograms (num_genTriggerEventFlag_)
451 
452  htVsLS_.numerator->Fill(ls, ht);
453 
454  if (enableFullMonitoring_) { //===check the flag
456  jetpt1ME_.numerator->Fill(Pt_J1);
457  jetpt2ME_.numerator->Fill(Pt_J2);
458  phij1ME_.numerator->Fill(Phi_J1);
459  phij2ME_.numerator->Fill(Phi_J2);
460  etaj1ME_.numerator->Fill(Eta_J1);
461  etaj2ME_.numerator->Fill(Eta_J2);
462  nJetsME_.numerator->Fill(nJetsSel);
463  nJetsHTME_.numerator->Fill(nJets_HT);
464  }
465  } //end if -- HT
466  else if (quantity_ == "Mjj") {
467  if (jets.size() < 2)
468  return;
469 
470  // deltaEta cut
471  if (fabs(jets[0].p4().Eta() - jets[1].p4().Eta()) >= dEtaCut_)
472  return;
473  float mjj = (jets[0].p4() + jets[1].p4()).M();
474 
476 
477  // applying selection for numerator
478  if (num_genTriggerEventFlag_->on() && !num_genTriggerEventFlag_->accept(iEvent, iSetup))
479  return;
480 
482  } // end if -- Mjj
483  else if (quantity_ == "softdrop") {
484  if (jets.size() < 2)
485  return;
486 
487  // deltaEta cut
488  if (fabs(jets[0].p4().Eta() - jets[1].p4().Eta()) >= dEtaCut_)
489  return;
490 
491  float softdrop = jets[0].p4().M();
492 
494 
495  // applying selection for numerator
496  if (num_genTriggerEventFlag_->on() && !num_genTriggerEventFlag_->accept(iEvent, iSetup))
497  return;
498 
500  } //end if -- softdrop
501 }
502 
505  desc.add<std::string>("FolderName", "HLT/HT");
506  desc.add<bool>("requireValidHLTPaths", true);
507  desc.add<bool>("enableFullMonitoring", false);
508  desc.add<edm::InputTag>("met", edm::InputTag("pfMet"));
509  desc.add<edm::InputTag>("jets", edm::InputTag("ak4PFJetsCHS"));
510  desc.add<edm::InputTag>("electrons", edm::InputTag("gedGsfElectrons"));
511  desc.add<edm::InputTag>("muons", edm::InputTag("muons"));
512  desc.add<edm::InputTag>("vertices", edm::InputTag("offlinePrimaryVertices"));
513  desc.add<std::string>("metSelection", "pt > 0");
514  desc.add<std::string>("jetSelection", "pt > 0");
515  desc.add<std::string>("eleSelection", "pt > 0");
516  desc.add<std::string>("muoSelection", "pt > 0");
517  desc.add<std::string>("jetSelection_HT", "pt > 30 && eta < 2.5");
518  desc.add<unsigned>("njets", 0);
519  desc.add<unsigned>("nelectrons", 0);
520  desc.add<unsigned>("nmuons", 0);
521  desc.add<double>("dEtaCut", 1.3);
522 
525 
526  desc.add<edm::ParameterSetDescription>("numGenericTriggerEventPSet", genericTriggerEventPSet);
527  desc.add<edm::ParameterSetDescription>("denGenericTriggerEventPSet", genericTriggerEventPSet);
528 
533  std::vector<double> bins = {0., 20., 40., 60., 80., 90., 100., 110., 120., 130., 140.,
534  150., 160., 170., 180., 190., 200., 220., 240., 260., 280., 300.,
535  350., 400., 450., 500., 550., 600., 650., 700., 750., 800., 850.,
536  900., 950., 1000., 1050., 1100., 1200., 1300., 1400., 1500., 2000., 2500.};
537  histoPSet.add<std::vector<double> >("htBinning", bins);
538  std::vector<double> bins_2 = {
539  0., 20., 40., 60., 80., 90., 100., 110., 120., 130., 140., 150., 160.,
540  170., 180., 190., 200., 220., 240., 260., 280., 300., 350., 400., 450., 1000.}; // Jet pT Binning
541  histoPSet.add<std::vector<double> >("jetptBinning", bins_2);
545 
546  desc.add<edm::ParameterSetDescription>("histoPSet", histoPSet);
547 
548  desc.add<std::string>("quantity", "HT");
549 
550  descriptions.add("htMonitoring", desc);
551 }
552 
edm::EDGetTokenT< reco::MuonCollection > muoToken_
Definition: HTMonitor.cc:67
static constexpr int Nbin_PHI
Definition: HTMonitor.cc:101
static constexpr int MIN_NJETS
Definition: HTMonitor.cc:113
std::vector< double > jetptBinning_
Definition: HTMonitor.cc:71
StringCutObjectSelector< reco::Jet, true > jetSelection_
Definition: HTMonitor.cc:91
double dEtaCut_
Definition: HTMonitor.cc:98
ObjME jetpt2ME_
Definition: HTMonitor.cc:79
static void fillHistoLSPSetDescription(edm::ParameterSetDescription &pset)
static constexpr double MAXedge_PHI
Definition: HTMonitor.cc:100
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:36
ObjME etaj2ME_
Definition: HTMonitor.cc:83
const bool requireValidHLTPaths_
Definition: HTMonitor.cc:54
dqm::reco::DQMStore DQMStore
Definition: HTMonitor.cc:41
edm::InputTag muoInputTag_
Definition: HTMonitor.cc:61
ObjME nJetsME_
Definition: HTMonitor.cc:84
static constexpr int MAX_NJETS
Definition: HTMonitor.cc:114
~HTMonitor() override
Definition: HTMonitor.cc:161
std::vector< double > ht_variable_binning_
Definition: HTMonitor.cc:70
ObjME nJetsHTME_
Definition: HTMonitor.cc:85
ObjME etaj1ME_
Definition: HTMonitor.cc:82
unsigned njets_
Definition: HTMonitor.cc:95
Provides a code based selection for trigger and DCS information in order to have no failing filters i...
edm::EDGetTokenT< reco::VertexCollection > vtxToken_
Definition: HTMonitor.cc:68
static void fillHistoPSetDescription(edm::ParameterSetDescription &pset)
std::string const & label() const
Definition: InputTag.h:36
edm::View< Jet > JetView
edm references
Definition: JetCollection.h:11
edm::InputTag jetInputTag_
Definition: HTMonitor.cc:59
std::unique_ptr< T, impl::DeviceDeleter > unique_ptr
std::vector< Vertex > VertexCollection
Definition: Vertex.h:31
muons
the two sets of parameters below are mutually exclusive, depending if RECO or ALCARECO is used the us...
Definition: DiMuonV_cfg.py:214
void setMETitle(ObjME &me, const std::string &titleX, const std::string &titleY)
static constexpr MEbinning nJets_binning
Definition: HTMonitor.cc:116
std::vector< GsfElectron > GsfElectronCollection
collection of GsfElectron objects
static constexpr int MAX_NJETS_HT
Definition: HTMonitor.cc:109
std::unique_ptr< GenericTriggerEventFlag > den_genTriggerEventFlag_
Definition: HTMonitor.cc:88
std::vector< Muon > MuonCollection
collection of Muon objects
Definition: MuonFwd.h:9
MEbinning ht_binning_
Definition: HTMonitor.cc:72
size_type size() const
void Fill(long long x)
int iEvent
Definition: GenABIO.cc:224
edm::InputTag eleInputTag_
Definition: HTMonitor.cc:60
MEbinning ls_binning_
Definition: HTMonitor.cc:73
StringCutObjectSelector< reco::Muon, true > muoSelection_
Definition: HTMonitor.cc:93
Definition: Muon.py:1
Definition: Jet.py:1
static constexpr int N_ETA
Definition: HTMonitor.cc:105
MonitorElement * denominator
MonitorElement * numerator
HTMonitor(const edm::ParameterSet &)
Definition: HTMonitor.cc:122
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
std::string quantity_
Definition: HTMonitor.cc:118
static constexpr MEbinning phi_binning_
Definition: HTMonitor.cc:102
static constexpr MEbinning eta_binning
Definition: HTMonitor.cc:106
static constexpr double MAX_ETA
Definition: HTMonitor.cc:104
edm::EDGetTokenT< reco::GsfElectronCollection > eleToken_
Definition: HTMonitor.cc:66
const bool enableFullMonitoring_
Definition: HTMonitor.cc:56
StringCutObjectSelector< reco::MET, true > metSelection_
Definition: HTMonitor.cc:90
edm::InputTag vtxInputTag_
Definition: HTMonitor.cc:62
static constexpr int MIN_NJETS_HT
Definition: HTMonitor.cc:108
edm::InputTag metInputTag_
Definition: HTMonitor.cc:58
StringCutObjectSelector< reco::GsfElectron, true > eleSelection_
Definition: HTMonitor.cc:92
unsigned nelectrons_
Definition: HTMonitor.cc:96
edm::EDGetTokenT< reco::JetView > jetToken_
Definition: HTMonitor.cc:65
const std::string folderName_
Definition: HTMonitor.cc:52
static constexpr int N_BIN_NJETS_HT
Definition: HTMonitor.cc:110
void add(std::string const &label, ParameterSetDescription const &psetDescription)
void analyze(edm::Event const &iEvent, edm::EventSetup const &iSetup) override
Definition: HTMonitor.cc:277
static constexpr MEbinning nJets_HT_binning
Definition: HTMonitor.cc:111
ObjME METPhiME_
Definition: HTMonitor.cc:77
bool isValid() const
Definition: HandleBase.h:70
void bookME(DQMStore::IBooker &, ObjME &me, const std::string &histname, const std::string &histtitle, const uint nbins, const double xmin, const double xmax, const bool bookDen=true)
static constexpr int N_BIN_NJETS
Definition: HTMonitor.cc:115
bool warningWasPrinted_
Definition: HTMonitor.cc:119
fixed size matrix
HLT enums.
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
Definition: HTMonitor.cc:503
ObjME htVsLS_
Definition: HTMonitor.cc:76
bool hltPathsAreValid_
Definition: HTMonitor.cc:55
ObjME jetpt1ME_
Definition: HTMonitor.cc:78
ObjME phij2ME_
Definition: HTMonitor.cc:81
edm::EDGetTokenT< reco::PFMETCollection > metToken_
Definition: HTMonitor.cc:64
dqm::reco::MonitorElement MonitorElement
Definition: HTMonitor.cc:40
Log< level::Warning, false > LogWarning
ObjME phij1ME_
Definition: HTMonitor.cc:80
ObjME qME_variableBinning_
Definition: HTMonitor.cc:75
double phi() const final
momentum azimuthal angle
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
Definition: HTMonitor.cc:170
static void fillPSetDescription(edm::ParameterSetDescription &desc)
unsigned nmuons_
Definition: HTMonitor.cc:97
StringCutObjectSelector< reco::Jet, true > jetSelection_HT_
Definition: HTMonitor.cc:94
Definition: Run.h:45
Collection of PF MET.
std::unique_ptr< GenericTriggerEventFlag > num_genTriggerEventFlag_
Definition: HTMonitor.cc:87