CMS 3D CMS Logo

METMonitor.cc
Go to the documentation of this file.
26 
27 class METMonitor : public DQMEDAnalyzer, public TriggerDQMBase {
28 public:
31 
33  ~METMonitor() throw() override;
34  static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
35 
36 protected:
38  void analyze(edm::Event const& iEvent, edm::EventSetup const& iSetup) override;
39 
40 private:
42 
46 
52 
56  edm::EDGetTokenT<reco::MuonCollection> muoToken_;
58 
63 
64  ObjME metME_;
66  ObjME metVsLS_;
67  ObjME metPhiME_;
70  ObjME phij1ME_;
71  ObjME phij2ME_;
72  ObjME jetPhiME_;
73  ObjME etaj1ME_;
74  ObjME etaj2ME_;
75  ObjME jetEtaME_;
76  ObjME jetpt1ME_;
77  ObjME jetpt2ME_;
78  ObjME jetPtME_;
79  ObjME nJetsME_;
80 
83 
88 
89  unsigned njets_;
90  unsigned nelectrons_;
91  unsigned nmuons_;
92 
93  static constexpr double MAX_PHI = 3.2;
94  static constexpr int N_PHI = 64;
95  static constexpr MEbinning phi_binning_{N_PHI, -MAX_PHI, MAX_PHI};
96  // Define Eta Bining
97  static constexpr double MAX_ETA = 5.0;
98  static constexpr int N_ETA = 50;
99  static constexpr MEbinning eta_binning{N_ETA, -MAX_ETA, MAX_ETA};
100  //Define nJets Binning general selection Pt>0
101  static constexpr int MIN_NJETS = 0;
102  static constexpr int MAX_NJETS = 200;
103  static constexpr int N_BIN_NJETS = 200;
105 
106  std::vector<bool> warningPrinted4token_;
107 };
108 
110  : folderName_(iConfig.getParameter<std::string>("FolderName")),
111  requireValidHLTPaths_(iConfig.getParameter<bool>("requireValidHLTPaths")),
112  hltPathsAreValid_(false),
113  enableFullMonitoring_(iConfig.getParameter<bool>("enableFullMonitoring")),
114  metInputTag_(iConfig.getParameter<edm::InputTag>("met")),
115  jetInputTag_(iConfig.getParameter<edm::InputTag>("jets")),
116  eleInputTag_(iConfig.getParameter<edm::InputTag>("electrons")),
117  muoInputTag_(iConfig.getParameter<edm::InputTag>("muons")),
118  vtxInputTag_(iConfig.getParameter<edm::InputTag>("vertices")),
119  metToken_(consumes<reco::PFMETCollection>(metInputTag_)),
120  jetToken_(mayConsume<reco::PFJetCollection>(jetInputTag_)),
121  eleToken_(mayConsume<reco::GsfElectronCollection>(eleInputTag_)),
122  muoToken_(mayConsume<reco::MuonCollection>(muoInputTag_)),
123  vtxToken_(mayConsume<reco::VertexCollection>(vtxInputTag_)),
124  met_variable_binning_(
125  iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<std::vector<double> >("metBinning")),
126  jetptBinning_(
127  iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<std::vector<double> >("jetptBinning")),
128  met_binning_(getHistoPSet(
129  iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<edm::ParameterSet>("metPSet"))),
130  ls_binning_(
131  getHistoPSet(iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<edm::ParameterSet>("lsPSet"))),
132  num_genTriggerEventFlag_(new GenericTriggerEventFlag(
133  iConfig.getParameter<edm::ParameterSet>("numGenericTriggerEventPSet"), consumesCollector(), *this)),
134  den_genTriggerEventFlag_(new GenericTriggerEventFlag(
135  iConfig.getParameter<edm::ParameterSet>("denGenericTriggerEventPSet"), consumesCollector(), *this)),
136  metSelection_(iConfig.getParameter<std::string>("metSelection")),
137  jetSelection_(iConfig.getParameter<std::string>("jetSelection")),
138  eleSelection_(iConfig.getParameter<std::string>("eleSelection")),
139  muoSelection_(iConfig.getParameter<std::string>("muoSelection")),
140  njets_(iConfig.getParameter<unsigned>("njets")),
141  nelectrons_(iConfig.getParameter<unsigned>("nelectrons")),
142  nmuons_(iConfig.getParameter<unsigned>("nmuons")) {
143  // this vector has to be alligned to the the number of Tokens accessed by this module
144  warningPrinted4token_.push_back(false); // PFMETCollection
145  warningPrinted4token_.push_back(false); // JetCollection
146  warningPrinted4token_.push_back(false); // GsfElectronCollection
147  warningPrinted4token_.push_back(false); // MuonCollection
148  warningPrinted4token_.push_back(false); // VertexCollection
149 }
150 
153  num_genTriggerEventFlag_.reset();
154  }
156  den_genTriggerEventFlag_.reset();
157  }
158 }
159 
160 void METMonitor::bookHistograms(DQMStore::IBooker& ibooker, edm::Run const& iRun, edm::EventSetup const& iSetup) {
161  // Initialize the GenericTriggerEventFlag
163  num_genTriggerEventFlag_->initRun(iRun, iSetup);
164  }
166  den_genTriggerEventFlag_->initRun(iRun, iSetup);
167  }
168 
169  // check if every HLT path specified in numerator and denominator has a valid match in the HLT Menu
171  den_genTriggerEventFlag_->on() && num_genTriggerEventFlag_->allHLTPathsAreValid() &&
172  den_genTriggerEventFlag_->allHLTPathsAreValid());
173 
174  // if valid HLT paths are required,
175  // create DQM outputs only if all paths are valid
177  return;
178  }
179 
180  std::string histname, histtitle;
181 
182  std::string currentFolder = folderName_;
183  ibooker.setCurrentFolder(currentFolder);
184 
185  histname = "deltaphi_metjet1";
186  histtitle = "DPHI_METJ1";
187  bookME(ibooker, deltaphimetj1ME_, histname, histtitle, phi_binning_.nbins, phi_binning_.xmin, phi_binning_.xmax);
188  setMETitle(deltaphimetj1ME_, "delta phi (met, j1)", "events / 0.1 rad");
189 
190  histname = "deltaphi_jet1jet2";
191  histtitle = "DPHI_J1J2";
192  bookME(ibooker, deltaphij1j2ME_, histname, histtitle, phi_binning_.nbins, phi_binning_.xmin, phi_binning_.xmax);
193  setMETitle(deltaphij1j2ME_, "delta phi (j1, j2)", "events / 0.1 rad");
194 
195  histname = "met";
196  histtitle = "PFMET";
197  bookME(ibooker, metME_, histname, histtitle, met_binning_.nbins, met_binning_.xmin, met_binning_.xmax);
198  setMETitle(metME_, "PF MET [GeV]", "events / [GeV]");
199 
200  histname = "met_variable";
201  histtitle = "PFMET";
202  bookME(ibooker, metME_variableBinning_, histname, histtitle, met_variable_binning_);
203  setMETitle(metME_variableBinning_, "PF MET [GeV]", "events / [GeV]");
204 
205  histname = "metVsLS";
206  histtitle = "PFMET vs LS";
207  bookME(ibooker,
208  metVsLS_,
209  histname,
210  histtitle,
216  setMETitle(metVsLS_, "LS", "PF MET [GeV]");
217 
218  histname = "metPhi";
219  histtitle = "PFMET phi";
220  bookME(ibooker, metPhiME_, histname, histtitle, phi_binning_.nbins, phi_binning_.xmin, phi_binning_.xmax);
221  setMETitle(metPhiME_, "PF MET #phi", "events / 0.1 rad");
222 
223  histname = "jetEta";
224  histtitle = "Jet eta";
225  bookME(ibooker, jetEtaME_, histname, histtitle, eta_binning.nbins, eta_binning.xmin, eta_binning.xmax);
226  setMETitle(jetEtaME_, "Jet #eta", "events");
227 
228  histname = "jetPhi";
229  histtitle = "Jet phi";
230  bookME(ibooker, jetPhiME_, histname, histtitle, phi_binning_.nbins, phi_binning_.xmin, phi_binning_.xmax);
231  setMETitle(jetPhiME_, "Jet #phi", "events / 0.1 rad");
232 
233  histname = "jetPt";
234  histtitle = "Jet Pt";
235  bookME(ibooker, jetPtME_, histname, histtitle, jetptBinning_);
236  setMETitle(jetPtME_, "jet Pt[GeV]", "events");
237 
238  histname = "NJets";
239  histtitle = "number of Jets";
240  bookME(ibooker, nJetsME_, histname, histtitle, nJets_binning.nbins, nJets_binning.xmin, nJets_binning.xmax);
241  setMETitle(nJetsME_, "number of Jets", "events");
242 
243  //check the flag
244  if (!enableFullMonitoring_) {
245  return;
246  }
247 
248  histname = "jetEta_1";
249  histtitle = "leading Jet eta";
250  bookME(ibooker, etaj1ME_, histname, histtitle, eta_binning.nbins, eta_binning.xmin, eta_binning.xmax);
251  setMETitle(etaj1ME_, "Jet_1 #eta", "events");
252 
253  histname = "jetEta_2";
254  histtitle = "subleading Jet eta";
255  bookME(ibooker, etaj2ME_, histname, histtitle, eta_binning.nbins, eta_binning.xmin, eta_binning.xmax);
256  setMETitle(etaj2ME_, "Jet_2 #eta", "events");
257 
258  histname = "jetPhi_1";
259  histtitle = "leading Jet phi";
260  bookME(ibooker, phij1ME_, histname, histtitle, phi_binning_.nbins, phi_binning_.xmin, phi_binning_.xmax);
261  setMETitle(phij1ME_, "Jet_1 #phi", "events / 0.1 rad");
262 
263  histname = "jetPhi_2";
264  histtitle = "subleading Jet phi";
265  bookME(ibooker, phij2ME_, histname, histtitle, phi_binning_.nbins, phi_binning_.xmin, phi_binning_.xmax);
266  setMETitle(phij2ME_, "Jet_2 #phi", "events / 0.1 rad");
267 
268  histname = "jetPt_1";
269  histtitle = "leading Jet Pt";
270  bookME(ibooker, jetpt1ME_, histname, histtitle, jetptBinning_);
271  setMETitle(jetpt1ME_, "Pt_1 [GeV]", "events");
272 
273  histname = "jetPt_2";
274  histtitle = "second leading Jet Pt";
275  bookME(ibooker, jetpt2ME_, histname, histtitle, jetptBinning_);
276  setMETitle(jetpt2ME_, "Pt_2 [GeV]", "events");
277 }
278 
280  // if valid HLT paths are required,
281  // analyze event only if all paths are valid
283  return;
284  }
285 
286  // Filter out events if Trigger Filtering is requested
287  if (den_genTriggerEventFlag_->on() && !den_genTriggerEventFlag_->accept(iEvent, iSetup))
288  return;
289 
291  iEvent.getByToken(metToken_, metHandle);
292  if (!metHandle.isValid()) {
293  if (!warningPrinted4token_[0]) {
294  edm::LogWarning("METMonitor") << "skipping events because the collection " << metInputTag_.label().c_str()
295  << " is not available";
296  warningPrinted4token_[0] = true;
297  }
298  return;
299  }
300  reco::PFMET pfmet = metHandle->front();
301  if (!metSelection_(pfmet))
302  return;
303 
304  const float met = pfmet.pt();
305  const float phi = pfmet.phi();
306 
307  std::vector<reco::PFJet> jets;
309  iEvent.getByToken(jetToken_, jetHandle);
310  if (jetHandle.isValid()) {
311  if (jetHandle->size() < njets_)
312  return;
313  for (auto const& j : *jetHandle) {
314  if (jetSelection_(j)) {
315  jets.push_back(j);
316  }
317  }
318  } else {
319  if (!warningPrinted4token_[1]) {
320  if (jetInputTag_.label().empty())
321  edm::LogWarning("METMonitor") << "JetCollection not set";
322  else
323  edm::LogWarning("METMonitor") << "skipping events because the collection " << jetInputTag_.label().c_str()
324  << " is not available";
325  warningPrinted4token_[1] = true;
326  }
327  // if Handle is not valid, because the InputTag has been mis-configured, then skip the event
328  if (!jetInputTag_.label().empty())
329  return;
330  }
331  const float deltaPhi_met_j1 = !jets.empty() ? fabs(deltaPhi(pfmet.phi(), jets[0].phi())) : -10.0;
332  const float deltaPhi_j1_j2 = jets.size() >= 2 ? fabs(deltaPhi(jets[0].phi(), jets[1].phi())) : -10.0;
333  const int nJetsSel = jets.size();
334  const float Pt_J1 = !jets.empty() ? jets[0].pt() : -10.;
335  const float Pt_J2 = jets.size() >= 2 ? jets[1].pt() : -10.0;
336  const float Phi_J1 = !jets.empty() ? jets[0].phi() : -10.0;
337  const float Phi_J2 = jets.size() >= 2 ? jets[1].phi() : -10.0;
338  const float Eta_J1 = !jets.empty() ? jets[0].p4().eta() : -10.0;
339  const float Eta_J2 = jets.size() >= 2 ? jets[1].p4().eta() : -10.0;
340 
341  std::vector<reco::GsfElectron> electrons;
343  iEvent.getByToken(eleToken_, eleHandle);
344  if (eleHandle.isValid()) {
345  if (eleHandle->size() < nelectrons_)
346  return;
347  for (auto const& e : *eleHandle) {
348  if (eleSelection_(e))
349  electrons.push_back(e);
350  }
351  if (electrons.size() < nelectrons_)
352  return;
353  } else {
354  if (!warningPrinted4token_[2]) {
355  warningPrinted4token_[2] = true;
356  if (eleInputTag_.label().empty())
357  edm::LogWarning("METMonitor") << "GsfElectronCollection not set";
358  else
359  edm::LogWarning("METMonitor") << "skipping events because the collection " << eleInputTag_.label().c_str()
360  << " is not available";
361  }
362  if (!eleInputTag_.label().empty())
363  return;
364  }
365 
368  iEvent.getByToken(vtxToken_, vtxHandle);
369  if (vtxHandle.isValid()) {
370  for (auto const& v : *vtxHandle) {
371  bool isFake = v.isFake();
372 
373  if (!isFake) {
374  vtx = v;
375  break;
376  }
377  }
378  } else {
379  if (!warningPrinted4token_[3]) {
380  warningPrinted4token_[3] = true;
381  if (vtxInputTag_.label().empty())
382  edm::LogWarning("METMonitor") << "VertexCollection is not set";
383  else
384  edm::LogWarning("METMonitor") << "skipping events because the collection " << vtxInputTag_.label().c_str()
385  << " is not available";
386  }
387  if (!vtxInputTag_.label().empty())
388  return;
389  }
390 
391  std::vector<reco::Muon> muons;
393  iEvent.getByToken(muoToken_, muoHandle);
394  if (muoHandle.isValid()) {
395  if (muoHandle->size() < nmuons_)
396  return;
397  for (auto const& m : *muoHandle) {
398  bool pass = m.isGlobalMuon() && m.isPFMuon() && m.globalTrack()->normalizedChi2() < 10. &&
399  m.globalTrack()->hitPattern().numberOfValidMuonHits() > 0 && m.numberOfMatchedStations() > 1 &&
400  fabs(m.muonBestTrack()->dxy(vtx.position())) < 0.2 &&
401  fabs(m.muonBestTrack()->dz(vtx.position())) < 0.5 &&
402  m.innerTrack()->hitPattern().numberOfValidPixelHits() > 0 &&
403  m.innerTrack()->hitPattern().trackerLayersWithMeasurement() > 5;
404  if (muoSelection_(m) && pass)
405  muons.push_back(m);
406  }
407  if (muons.size() < nmuons_)
408  return;
409  } else {
410  if (!warningPrinted4token_[4]) {
411  warningPrinted4token_[4] = true;
412  if (muoInputTag_.label().empty())
413  edm::LogWarning("METMonitor") << "MuonCollection not set";
414  else
415  edm::LogWarning("METMonitor") << "skipping events because the collection " << muoInputTag_.label().c_str()
416  << " is not available";
417  }
418  if (!muoInputTag_.label().empty())
419  return;
420  }
421 
422  // filling histograms (denominator)
426  deltaphimetj1ME_.denominator->Fill(deltaPhi_met_j1);
427  deltaphij1j2ME_.denominator->Fill(deltaPhi_j1_j2);
428 
429  const int ls = iEvent.id().luminosityBlock();
431 
432  nJetsME_.denominator->Fill(nJetsSel);
433  for (auto const& jet : jets) {
434  jetPtME_.denominator->Fill(jet.pt());
435  jetPhiME_.denominator->Fill(jet.phi());
436  jetEtaME_.denominator->Fill(jet.p4().eta());
437  }
438  if (enableFullMonitoring_) { //===check the flag
439  jetpt1ME_.denominator->Fill(Pt_J1);
440  jetpt2ME_.denominator->Fill(Pt_J2);
441  phij1ME_.denominator->Fill(Phi_J1);
442  phij2ME_.denominator->Fill(Phi_J2);
443  etaj1ME_.denominator->Fill(Eta_J1);
444  etaj2ME_.denominator->Fill(Eta_J2);
445  }
446 
447  // applying selection for numerator
448  if (num_genTriggerEventFlag_->on() && !num_genTriggerEventFlag_->accept(iEvent, iSetup))
449  return;
450 
451  // filling histograms (num_genTriggerEventFlag_)
456  deltaphimetj1ME_.numerator->Fill(deltaPhi_met_j1);
457  deltaphij1j2ME_.numerator->Fill(deltaPhi_j1_j2);
458 
459  nJetsME_.numerator->Fill(nJetsSel);
460  for (auto const& jet : jets) {
461  jetPtME_.numerator->Fill(jet.pt());
462  jetPhiME_.numerator->Fill(jet.phi());
463  jetEtaME_.numerator->Fill(jet.p4().eta());
464  }
465  if (enableFullMonitoring_) { //===check the flag
466  jetpt1ME_.numerator->Fill(Pt_J1);
467  jetpt2ME_.numerator->Fill(Pt_J2);
468  phij1ME_.numerator->Fill(Phi_J1);
469  phij2ME_.numerator->Fill(Phi_J2);
470  etaj1ME_.numerator->Fill(Eta_J1);
471  etaj2ME_.numerator->Fill(Eta_J2);
472  }
473 }
474 
477  desc.add<std::string>("FolderName", "HLT/MET");
478  desc.add<bool>("requireValidHLTPaths", true);
479  //========== flag to enable more or less outputs in each trigger =====
480  desc.add<bool>("enableFullMonitoring", false);
481 
482  desc.add<edm::InputTag>("met", edm::InputTag("pfMet"));
483  desc.add<edm::InputTag>("jets", edm::InputTag("ak4PFJetsCHS"));
484  desc.add<edm::InputTag>("electrons", edm::InputTag("gedGsfElectrons"));
485  desc.add<edm::InputTag>("muons", edm::InputTag("muons"));
486  desc.add<edm::InputTag>("vertices", edm::InputTag("offlinePrimaryVertices"));
487  desc.add<std::string>("metSelection", "pt > 0");
488  desc.add<std::string>("jetSelection", "pt > 0");
489  desc.add<std::string>("eleSelection", "pt > 0");
490  desc.add<std::string>("muoSelection", "pt > 0");
491  desc.add<unsigned>("njets", 0);
492  desc.add<unsigned>("nelectrons", 0);
493  desc.add<unsigned>("nmuons", 0);
494 
497 
498  desc.add<edm::ParameterSetDescription>("numGenericTriggerEventPSet", genericTriggerEventPSet);
499  desc.add<edm::ParameterSetDescription>("denGenericTriggerEventPSet", genericTriggerEventPSet);
500 
505  std::vector<double> bins = {0., 20., 40., 60., 80., 90., 100., 110., 120., 130., 140., 150., 160.,
506  170., 180., 190., 200., 220., 240., 260., 280., 300., 350., 400., 450., 1000.};
507  histoPSet.add<std::vector<double> >("metBinning", bins);
508  std::vector<double> bins_ = {
509  0., 20., 40., 60., 80., 90., 100., 110., 120., 130., 140., 150., 160.,
510  170., 180., 190., 200., 220., 240., 260., 280., 300., 350., 400., 450., 1000.}; // Jet pT Binning
511  histoPSet.add<std::vector<double> >("jetptBinning", bins_);
512 
516 
517  desc.add<edm::ParameterSetDescription>("histoPSet", histoPSet);
518 
519  descriptions.add("metMonitoring", desc);
520 }
521 
ObjME jetPtME_
Definition: METMonitor.cc:78
StringCutObjectSelector< reco::PFJet, true > jetSelection_
Definition: METMonitor.cc:85
ObjME jetpt2ME_
Definition: METMonitor.cc:77
unsigned nmuons_
Definition: METMonitor.cc:91
std::unique_ptr< GenericTriggerEventFlag > den_genTriggerEventFlag_
Definition: METMonitor.cc:82
edm::InputTag vtxInputTag_
Definition: METMonitor.cc:51
static void fillHistoLSPSetDescription(edm::ParameterSetDescription &pset)
double pt() const final
transverse momentum
StringCutObjectSelector< reco::GsfElectron, true > eleSelection_
Definition: METMonitor.cc:86
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:36
ObjME phij2ME_
Definition: METMonitor.cc:71
static constexpr int N_ETA
Definition: METMonitor.cc:98
ObjME etaj1ME_
Definition: METMonitor.cc:73
edm::InputTag muoInputTag_
Definition: METMonitor.cc:50
edm::EDGetTokenT< reco::VertexCollection > vtxToken_
Definition: METMonitor.cc:57
Provides a code based selection for trigger and DCS information in order to have no failing filters i...
static void fillHistoPSetDescription(edm::ParameterSetDescription &pset)
std::unique_ptr< GenericTriggerEventFlag > num_genTriggerEventFlag_
Definition: METMonitor.cc:81
std::string const & label() const
Definition: InputTag.h:36
edm::InputTag eleInputTag_
Definition: METMonitor.cc:49
std::unique_ptr< T, impl::DeviceDeleter > unique_ptr
std::vector< Vertex > VertexCollection
Definition: Vertex.h:31
void setMETitle(ObjME &me, const std::string &titleX, const std::string &titleY)
std::vector< GsfElectron > GsfElectronCollection
collection of GsfElectron objects
~METMonitor() override
Definition: METMonitor.cc:151
std::vector< Muon > MuonCollection
collection of Muon objects
Definition: MuonFwd.h:9
std::vector< double > jetptBinning_
Definition: METMonitor.cc:60
unsigned njets_
Definition: METMonitor.cc:89
void Fill(long long x)
ObjME metPhiME_
Definition: METMonitor.cc:67
ObjME deltaphimetj1ME_
Definition: METMonitor.cc:68
static constexpr double MAX_PHI
Definition: METMonitor.cc:93
ObjME metME_variableBinning_
Definition: METMonitor.cc:65
ObjME jetpt1ME_
Definition: METMonitor.cc:76
int iEvent
Definition: GenABIO.cc:224
const bool enableFullMonitoring_
Definition: METMonitor.cc:45
Definition: Muon.py:1
edm::EDGetTokenT< reco::GsfElectronCollection > eleToken_
Definition: METMonitor.cc:55
dqm::reco::MonitorElement MonitorElement
Definition: METMonitor.cc:29
ObjME phij1ME_
Definition: METMonitor.cc:70
MEbinning met_binning_
Definition: METMonitor.cc:61
edm::EDGetTokenT< reco::PFJetCollection > jetToken_
Definition: METMonitor.cc:54
MonitorElement * denominator
static constexpr int MIN_NJETS
Definition: METMonitor.cc:101
MonitorElement * numerator
edm::EDGetTokenT< reco::PFMETCollection > metToken_
Definition: METMonitor.cc:53
static constexpr double MAX_ETA
Definition: METMonitor.cc:97
StringCutObjectSelector< reco::Muon, true > muoSelection_
Definition: METMonitor.cc:87
ObjME nJetsME_
Definition: METMonitor.cc:79
edm::EDGetTokenT< reco::MuonCollection > muoToken_
Definition: METMonitor.cc:56
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
ObjME metME_
Definition: METMonitor.cc:64
ObjME deltaphij1j2ME_
Definition: METMonitor.cc:69
void analyze(edm::Event const &iEvent, edm::EventSetup const &iSetup) override
Definition: METMonitor.cc:279
def ls(path, rec=False)
Definition: eostools.py:349
unsigned nelectrons_
Definition: METMonitor.cc:90
const bool requireValidHLTPaths_
Definition: METMonitor.cc:43
static constexpr MEbinning phi_binning_
Definition: METMonitor.cc:95
static constexpr MEbinning eta_binning
Definition: METMonitor.cc:99
std::vector< double > met_variable_binning_
Definition: METMonitor.cc:59
static constexpr MEbinning nJets_binning
Definition: METMonitor.cc:104
void add(std::string const &label, ParameterSetDescription const &psetDescription)
ObjME jetEtaME_
Definition: METMonitor.cc:75
ObjME etaj2ME_
Definition: METMonitor.cc:74
ObjME jetPhiME_
Definition: METMonitor.cc:72
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)
edm::InputTag metInputTag_
Definition: METMonitor.cc:47
StringCutObjectSelector< reco::MET, true > metSelection_
Definition: METMonitor.cc:84
std::vector< PFJet > PFJetCollection
collection of PFJet objects
fixed size matrix
HLT enums.
MEbinning ls_binning_
Definition: METMonitor.cc:62
edm::InputTag jetInputTag_
Definition: METMonitor.cc:48
METMonitor(const edm::ParameterSet &)
Definition: METMonitor.cc:109
const std::string folderName_
Definition: METMonitor.cc:41
Log< level::Warning, false > LogWarning
std::vector< bool > warningPrinted4token_
Definition: METMonitor.cc:106
static constexpr int MAX_NJETS
Definition: METMonitor.cc:102
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
Definition: METMonitor.cc:160
double phi() const final
momentum azimuthal angle
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
Definition: METMonitor.cc:475
static void fillPSetDescription(edm::ParameterSetDescription &desc)
static constexpr int N_BIN_NJETS
Definition: METMonitor.cc:103
Definition: Run.h:45
dqm::reco::DQMStore DQMStore
Definition: METMonitor.cc:30
static constexpr int N_PHI
Definition: METMonitor.cc:94
bool hltPathsAreValid_
Definition: METMonitor.cc:44
ObjME metVsLS_
Definition: METMonitor.cc:66
Collection of PF MET.