CMS 3D CMS Logo

HTMonitor.cc
Go to the documentation of this file.
3 
5 
7 
8 // -----------------------------
9 // constructors and destructor
10 // -----------------------------
11 
13  : folderName_(iConfig.getParameter<std::string>("FolderName")),
14  metInputTag_(iConfig.getParameter<edm::InputTag>("met")),
15  jetInputTag_(iConfig.getParameter<edm::InputTag>("jets")),
16  eleInputTag_(iConfig.getParameter<edm::InputTag>("electrons")),
17  muoInputTag_(iConfig.getParameter<edm::InputTag>("muons")),
18  vtxInputTag_(iConfig.getParameter<edm::InputTag>("vertices")),
19  metToken_(consumes<reco::PFMETCollection>(metInputTag_)),
20  jetToken_(mayConsume<reco::JetView>(jetInputTag_)),
21  eleToken_(mayConsume<reco::GsfElectronCollection>(eleInputTag_)),
22  muoToken_(mayConsume<reco::MuonCollection>(muoInputTag_)),
23  vtxToken_(mayConsume<reco::VertexCollection>(vtxInputTag_)),
24  ht_variable_binning_(
25  iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<std::vector<double> >("htBinning")),
26  ht_binning_(
27  getHistoPSet(iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<edm::ParameterSet>("htPSet"))),
28  ls_binning_(
29  getHistoPSet(iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<edm::ParameterSet>("lsPSet"))),
30  num_genTriggerEventFlag_(new GenericTriggerEventFlag(
31  iConfig.getParameter<edm::ParameterSet>("numGenericTriggerEventPSet"), consumesCollector(), *this)),
32  den_genTriggerEventFlag_(new GenericTriggerEventFlag(
33  iConfig.getParameter<edm::ParameterSet>("denGenericTriggerEventPSet"), consumesCollector(), *this)),
34  metSelection_(iConfig.getParameter<std::string>("metSelection")),
35  jetSelection_(iConfig.getParameter<std::string>("jetSelection")),
36  eleSelection_(iConfig.getParameter<std::string>("eleSelection")),
37  muoSelection_(iConfig.getParameter<std::string>("muoSelection")),
38  jetSelection_HT_(iConfig.getParameter<std::string>("jetSelection_HT")),
39  njets_(iConfig.getParameter<unsigned>("njets")),
40  nelectrons_(iConfig.getParameter<unsigned>("nelectrons")),
41  nmuons_(iConfig.getParameter<unsigned>("nmuons")),
42  dEtaCut_(iConfig.getParameter<double>("dEtaCut")) {
43  /* mia: THIS CODE SHOULD BE DELETED !!!! */
44  string quantity = iConfig.getParameter<std::string>("quantity");
45  if (quantity == "HT") {
46  quantity_ = HT;
47  } else if (quantity == "Mjj") {
48  quantity_ = MJJ;
49  } else if (quantity == "softdrop") {
51  } else {
52  throw cms::Exception("quantity not defined")
53  << "the quantity '" << quantity << "' is undefined. Please check your config!" << std::endl;
54  }
55 
56  // this vector has to be alligned to the the number of Tokens accessed by this module
57  warningPrinted4token_.push_back(false); // PFMETCollection
58  warningPrinted4token_.push_back(false); // JetCollection
59  warningPrinted4token_.push_back(false); // GsfElectronCollection
60  warningPrinted4token_.push_back(false); // MuonCollection
61  warningPrinted4token_.push_back(false); // VertexCollection
62 }
63 
64 HTMonitor::~HTMonitor() = default;
65 
68  pset.getParameter<unsigned>("nbins"),
69  pset.getParameter<double>("xmin"),
70  pset.getParameter<double>("xmax"),
71  };
72 }
73 
75  return HTMonitor::MEHTbinning{pset.getParameter<unsigned>("nbins"), 0., double(pset.getParameter<unsigned>("nbins"))};
76 }
77 
78 void HTMonitor::setHTitle(HTME& me, const std::string& titleX, const std::string& titleY) {
79  me.numerator->setAxisTitle(titleX, 1);
80  me.numerator->setAxisTitle(titleY, 2);
81  me.denominator->setAxisTitle(titleX, 1);
82  me.denominator->setAxisTitle(titleY, 2);
83 }
84 
86  HTME& me,
87  const std::string& histname,
88  const std::string& histtitle,
89  int nbins,
90  double min,
91  double max) {
92  me.numerator = ibooker.book1D(histname + "_numerator", histtitle + " (numerator)", nbins, min, max);
93  me.denominator = ibooker.book1D(histname + "_denominator", histtitle + " (denominator)", nbins, min, max);
94 }
96  HTME& me,
97  const std::string& histname,
98  const std::string& histtitle,
99  const std::vector<double>& binning) {
100  int nbins = binning.size() - 1;
101  std::vector<float> fbinning(binning.begin(), binning.end());
102  float* arr = &fbinning[0];
103  me.numerator = ibooker.book1D(histname + "_numerator", histtitle + " (numerator)", nbins, arr);
104  me.denominator = ibooker.book1D(histname + "_denominator", histtitle + " (denominator)", nbins, arr);
105 }
107  HTME& me,
108  const std::string& histname,
109  const std::string& histtitle,
110  int nbinsX,
111  double xmin,
112  double xmax,
113  double ymin,
114  double ymax) {
115  me.numerator =
116  ibooker.bookProfile(histname + "_numerator", histtitle + " (numerator)", nbinsX, xmin, xmax, ymin, ymax);
117  me.denominator =
118  ibooker.bookProfile(histname + "_denominator", histtitle + " (denominator)", nbinsX, xmin, xmax, ymin, ymax);
119 }
121  HTME& me,
122  const std::string& histname,
123  const std::string& histtitle,
124  int nbinsX,
125  double xmin,
126  double xmax,
127  int nbinsY,
128  double ymin,
129  double ymax) {
130  me.numerator =
131  ibooker.book2D(histname + "_numerator", histtitle + " (numerator)", nbinsX, xmin, xmax, nbinsY, ymin, ymax);
132  me.denominator =
133  ibooker.book2D(histname + "_denominator", histtitle + " (denominator)", nbinsX, xmin, xmax, nbinsY, ymin, ymax);
134 }
136  HTME& me,
137  const std::string& histname,
138  const std::string& histtitle,
139  const std::vector<double>& binningX,
140  const std::vector<double>& binningY) {
141  int nbinsX = binningX.size() - 1;
142  std::vector<float> fbinningX(binningX.begin(), binningX.end());
143  float* arrX = &fbinningX[0];
144  int nbinsY = binningY.size() - 1;
145  std::vector<float> fbinningY(binningY.begin(), binningY.end());
146  float* arrY = &fbinningY[0];
147 
148  me.numerator = ibooker.book2D(histname + "_numerator", histtitle + " (numerator)", nbinsX, arrX, nbinsY, arrY);
149  me.denominator = ibooker.book2D(histname + "_denominator", histtitle + " (denominator)", nbinsX, arrX, nbinsY, arrY);
150 }
151 
152 void HTMonitor::bookHistograms(DQMStore::IBooker& ibooker, edm::Run const& iRun, edm::EventSetup const& iSetup) {
153  std::string histname, histtitle;
154 
155  std::string currentFolder = folderName_;
156  ibooker.setCurrentFolder(currentFolder);
157 
158  switch (quantity_) {
159  case HT: {
160  histname = "ht_variable";
161  histtitle = "HT";
162  bookME(ibooker, qME_variableBinning_, histname, histtitle, ht_variable_binning_);
163  setHTitle(qME_variableBinning_, "HT [GeV]", "events / [GeV]");
164 
165  histname = "htVsLS";
166  histtitle = "HT vs LS";
167  bookME(ibooker,
168  htVsLS_,
169  histname,
170  histtitle,
175  ht_binning_.xmax);
176  setHTitle(htVsLS_, "LS", "HT [GeV]");
177 
178  histname = "deltaphi_metjet1";
179  histtitle = "DPHI_METJ1";
180  bookME(ibooker, deltaphimetj1ME_, histname, histtitle, phi_binning_.nbins, phi_binning_.xmin, phi_binning_.xmax);
181  setHTitle(deltaphimetj1ME_, "delta phi (met, j1)", "events / 0.1 rad");
182 
183  histname = "deltaphi_jet1jet2";
184  histtitle = "DPHI_J1J2";
185  bookME(ibooker, deltaphij1j2ME_, histname, histtitle, phi_binning_.nbins, phi_binning_.xmin, phi_binning_.xmax);
186  setHTitle(deltaphij1j2ME_, "delta phi (j1, j2)", "events / 0.1 rad");
187  break;
188  }
189 
190  case MJJ: {
191  histname = "mjj_variable";
192  histtitle = "Mjj";
193  bookME(ibooker, qME_variableBinning_, histname, histtitle, ht_variable_binning_);
194  setHTitle(qME_variableBinning_, "Mjj [GeV]", "events / [GeV]");
195  break;
196  }
197 
198  case SOFTDROP: {
199  histname = "softdrop_variable";
200  histtitle = "softdropmass";
201  bookME(ibooker, qME_variableBinning_, histname, histtitle, ht_variable_binning_);
202  setHTitle(qME_variableBinning_, "leading jet softdropmass [GeV]", "events / [GeV]");
203  break;
204  }
205  }
206 
207  // Initialize the GenericTriggerEventFlag
209  num_genTriggerEventFlag_->initRun(iRun, iSetup);
211  den_genTriggerEventFlag_->initRun(iRun, iSetup);
212 }
213 
219  // Filter out events if Trigger Filtering is requested
220  if (den_genTriggerEventFlag_->on() && !den_genTriggerEventFlag_->accept(iEvent, iSetup))
221  return;
222 
224  iEvent.getByToken(metToken_, metHandle);
225  if (!metHandle.isValid()) {
226  if (!warningPrinted4token_[0]) {
227  edm::LogWarning("HTMonitor") << "skipping events because the collection " << metInputTag_.label().c_str()
228  << " is not available";
229  warningPrinted4token_[0] = true;
230  }
231  return;
232  }
233  reco::PFMET pfmet = metHandle->front();
234  if (!metSelection_(pfmet))
235  return;
236 
237  edm::Handle<reco::JetView> jetHandle; //add a configurable jet collection & jet pt selection
238  iEvent.getByToken(jetToken_, jetHandle);
239  if (!jetHandle.isValid()) {
240  if (!warningPrinted4token_[1]) {
241  edm::LogWarning("HTMonitor") << "skipping events because the collection " << jetInputTag_.label().c_str()
242  << " is not available";
243  warningPrinted4token_[1] = true;
244  }
245  return;
246  }
247  std::vector<reco::Jet> jets;
248  if (jetHandle->size() < njets_)
249  return;
250  for (auto const& j : *jetHandle) {
251  if (jetSelection_(j)) {
252  jets.push_back(j);
253  }
254  }
255 
256  if (jets.size() < njets_)
257  return;
258 
259  float deltaPhi_met_j1 = 10.0;
260  float deltaPhi_j1_j2 = 10.0;
261 
262  if (!jets.empty())
263  deltaPhi_met_j1 = fabs(deltaPhi(pfmet.phi(), jets[0].phi()));
264  if (jets.size() >= 2)
265  deltaPhi_j1_j2 = fabs(deltaPhi(jets[0].phi(), jets[1].phi()));
266 
267  std::vector<reco::GsfElectron> electrons;
269  iEvent.getByToken(eleToken_, eleHandle);
270  if (eleHandle.isValid()) {
271  if (eleHandle->size() < nelectrons_)
272  return;
273  for (auto const& e : *eleHandle) {
274  if (eleSelection_(e))
275  electrons.push_back(e);
276  }
277  if (electrons.size() < nelectrons_)
278  return;
279  } else {
280  if (!warningPrinted4token_[2]) {
281  warningPrinted4token_[2] = true;
282  if (eleInputTag_.label().empty())
283  edm::LogWarning("HTMonitor") << "GsfElectronCollection not set";
284  else
285  edm::LogWarning("HTMonitor") << "skipping events because the collection " << eleInputTag_.label().c_str()
286  << " is not available";
287  }
288  if (!eleInputTag_.label().empty())
289  return;
290  }
291 
294  iEvent.getByToken(vtxToken_, vtxHandle);
295  if (vtxHandle.isValid()) {
296  for (auto const& v : *vtxHandle) {
297  bool isFake = v.isFake();
298 
299  if (!isFake) {
300  vtx = v;
301  break;
302  }
303  }
304  } else {
305  if (!warningPrinted4token_[3]) {
306  warningPrinted4token_[3] = true;
307  if (vtxInputTag_.label().empty())
308  edm::LogWarning("HTMonitor") << "VertexCollection not set";
309  else
310  edm::LogWarning("HTMonitor") << "skipping events because the collection " << vtxInputTag_.label().c_str()
311  << " is not available";
312  }
313  if (!vtxInputTag_.label().empty())
314  return;
315  }
316 
317  std::vector<reco::Muon> muons;
319  iEvent.getByToken(muoToken_, muoHandle);
320  if (muoHandle.isValid()) {
321  if (muoHandle->size() < nmuons_)
322  return;
323  for (auto const& m : *muoHandle) {
324  if (muoSelection_(m) && m.isGlobalMuon() && m.isPFMuon() && m.globalTrack()->normalizedChi2() < 10. &&
325  m.globalTrack()->hitPattern().numberOfValidMuonHits() > 0 && m.numberOfMatchedStations() > 1 &&
326  fabs(m.muonBestTrack()->dxy(vtx.position())) < 0.2 && fabs(m.muonBestTrack()->dz(vtx.position())) < 0.5 &&
327  m.innerTrack()->hitPattern().numberOfValidPixelHits() > 0 &&
328  m.innerTrack()->hitPattern().trackerLayersWithMeasurement() > 5)
329  muons.push_back(m);
330  }
331  if (muons.size() < nmuons_)
332  return;
333  } else {
334  if (!warningPrinted4token_[4]) {
335  warningPrinted4token_[4] = true;
336  if (muoInputTag_.label().empty())
337  edm::LogWarning("HTMonitor") << "MuonCollection not set";
338  else
339  edm::LogWarning("HTMonitor") << "skipping events because the collection " << muoInputTag_.label().c_str()
340  << " is not available";
341  }
342  if (!muoInputTag_.label().empty())
343  return;
344  }
345 
346  // fill histograms
347  switch (quantity_) {
348  case HT: {
349  float ht = 0.0;
350  for (auto const& j : *jetHandle) {
351  if (jetSelection_HT_(j))
352  ht += j.pt();
353  }
354 
355  // filling histograms (denominator)
357 
358  deltaphimetj1ME_.denominator->Fill(deltaPhi_met_j1);
359  deltaphij1j2ME_.denominator->Fill(deltaPhi_j1_j2);
360 
361  int ls = iEvent.id().luminosityBlock();
362  htVsLS_.denominator->Fill(ls, ht);
363 
364  // applying selection for numerator
365  if (num_genTriggerEventFlag_->on() && !num_genTriggerEventFlag_->accept(iEvent, iSetup))
366  return;
367 
368  // filling histograms (num_genTriggerEventFlag_)
370 
371  htVsLS_.numerator->Fill(ls, ht);
372  deltaphimetj1ME_.numerator->Fill(deltaPhi_met_j1);
373  deltaphij1j2ME_.numerator->Fill(deltaPhi_j1_j2);
374  break;
375  }
376 
377  case MJJ: {
378  if (jets.size() < 2)
379  return;
380 
381  // deltaEta cut
382  if (fabs(jets[0].p4().Eta() - jets[1].p4().Eta()) >= dEtaCut_)
383  return;
384  float mjj = (jets[0].p4() + jets[1].p4()).M();
385 
387 
388  // applying selection for numerator
389  if (num_genTriggerEventFlag_->on() && !num_genTriggerEventFlag_->accept(iEvent, iSetup))
390  return;
391 
393  break;
394  }
395 
396  case SOFTDROP: {
397  if (jets.size() < 2)
398  return;
399 
400  // deltaEta cut
401  if (fabs(jets[0].p4().Eta() - jets[1].p4().Eta()) >= dEtaCut_)
402  return;
403 
404  float softdrop = jets[0].p4().M();
405 
407 
408  // applying selection for numerator
409  if (num_genTriggerEventFlag_->on() && !num_genTriggerEventFlag_->accept(iEvent, iSetup))
410  return;
411 
413  break;
414  }
415  }
416 }
417 
419  pset.add<unsigned int>("nbins");
420  pset.add<double>("xmin");
421  pset.add<double>("xmax");
422 }
423 
425  pset.add<unsigned int>("nbins", 2500);
426  pset.add<double>("xmin", 0.);
427  pset.add<double>("xmax", 2500.);
428 }
429 
432  desc.add<std::string>("FolderName", "HLT/HT");
433  desc.add<std::string>("quantity", "HT");
434 
435  desc.add<edm::InputTag>("met", edm::InputTag("pfMet"));
436  desc.add<edm::InputTag>("jets", edm::InputTag("ak4PFJetsCHS"));
437  desc.add<edm::InputTag>("electrons", edm::InputTag("gedGsfElectrons"));
438  desc.add<edm::InputTag>("muons", edm::InputTag("muons"));
439  desc.add<edm::InputTag>("vertices", edm::InputTag("offlinePrimaryVertices"));
440  desc.add<std::string>("metSelection", "pt > 0");
441  desc.add<std::string>("jetSelection", "pt > 0");
442  desc.add<std::string>("eleSelection", "pt > 0");
443  desc.add<std::string>("muoSelection", "pt > 0");
444  desc.add<std::string>("jetSelection_HT", "pt > 30 && eta < 2.5");
445  desc.add<unsigned>("njets", 0);
446  desc.add<unsigned>("nelectrons", 0);
447  desc.add<unsigned>("nmuons", 0);
448  desc.add<double>("dEtaCut", 1.3);
449 
451  genericTriggerEventPSet.add<bool>("andOr");
452  genericTriggerEventPSet.add<edm::InputTag>("dcsInputTag", edm::InputTag("scalersRawToDigi"));
453  genericTriggerEventPSet.add<std::vector<int> >("dcsPartitions", {});
454  genericTriggerEventPSet.add<bool>("andOrDcs", false);
455  genericTriggerEventPSet.add<bool>("errorReplyDcs", true);
456  genericTriggerEventPSet.add<std::string>("dbLabel", "");
457  genericTriggerEventPSet.add<bool>("andOrHlt", true);
458  genericTriggerEventPSet.add<edm::InputTag>("hltInputTag", edm::InputTag("TriggerResults::HLT"));
459  genericTriggerEventPSet.add<std::vector<std::string> >("hltPaths", {});
460  genericTriggerEventPSet.add<std::string>("hltDBKey", "");
461  genericTriggerEventPSet.add<bool>("errorReplyHlt", false);
462  genericTriggerEventPSet.add<unsigned int>("verbosityLevel", 1);
463 
464  desc.add<edm::ParameterSetDescription>("numGenericTriggerEventPSet", genericTriggerEventPSet);
465  desc.add<edm::ParameterSetDescription>("denGenericTriggerEventPSet", genericTriggerEventPSet);
466 
469  fillHistoPSetDescription(htPSet);
470  histoPSet.add<edm::ParameterSetDescription>("htPSet", htPSet);
471  std::vector<double> bins = {0., 20., 40., 60., 80., 90., 100., 110., 120., 130., 140.,
472  150., 160., 170., 180., 190., 200., 220., 240., 260., 280., 300.,
473  350., 400., 450., 500., 550., 600., 650., 700., 750., 800., 850.,
474  900., 950., 1000., 1050., 1100., 1200., 1300., 1400., 1500., 2000., 2500.};
475  histoPSet.add<std::vector<double> >("htBinning", bins);
476 
479  histoPSet.add<edm::ParameterSetDescription>("lsPSet", lsPSet);
480 
481  desc.add<edm::ParameterSetDescription>("histoPSet", histoPSet);
482 
483  descriptions.add("htMonitoring", desc);
484 }
485 
486 // Define this as a plug-in
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX)
Definition: DQMStore.cc:239
T getParameter(std::string const &) const
edm::EDGetTokenT< reco::MuonCollection > muoToken_
Definition: HTMonitor.h:129
StringCutObjectSelector< reco::Jet, true > jetSelection_
Definition: HTMonitor.h:145
double dEtaCut_
Definition: HTMonitor.h:152
MonitorElement * denominator
Definition: HTMonitor.h:60
quant quantity_
Definition: HTMonitor.h:118
void setHTitle(HTME &me, const std::string &titleX, const std::string &titleY)
Definition: HTMonitor.cc:78
void bookME(DQMStore::IBooker &, HTME &me, const std::string &histname, const std::string &histtitle, int nbins, double xmin, double xmax)
Definition: HTMonitor.cc:85
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:525
HTME qME_variableBinning_
Definition: HTMonitor.h:136
void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:418
edm::InputTag muoInputTag_
Definition: HTMonitor.h:123
~HTMonitor() override
size_type size() const
std::vector< double > ht_variable_binning_
Definition: HTMonitor.h:132
std::vector< Vertex > VertexCollection
collection of Vertex objects
Definition: VertexFwd.h:9
unsigned njets_
Definition: HTMonitor.h:149
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.h:130
static MEHTbinning getHistoPSet(const edm::ParameterSet &pset)
Definition: HTMonitor.cc:66
edm::View< Jet > JetView
edm references
Definition: JetCollection.h:11
edm::InputTag jetInputTag_
Definition: HTMonitor.h:121
LuminosityBlockNumber_t luminosityBlock() const
Definition: EventID.h:39
const Point & position() const
position
Definition: Vertex.h:113
std::vector< GsfElectron > GsfElectronCollection
collection of GsfElectron objects
std::unique_ptr< GenericTriggerEventFlag > den_genTriggerEventFlag_
Definition: HTMonitor.h:142
std::vector< Muon > MuonCollection
collection of Muon objects
Definition: MuonFwd.h:9
void Fill(long long x)
std::vector< bool > warningPrinted4token_
Definition: HTMonitor.h:158
Definition: HTMonitor.h:44
int iEvent
Definition: GenABIO.cc:224
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
edm::InputTag eleInputTag_
Definition: HTMonitor.h:122
StringCutObjectSelector< reco::Muon, true > muoSelection_
Definition: HTMonitor.h:147
double p4[4]
Definition: TauolaWrapper.h:92
MonitorElement * bookProfile(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, char const *option="s")
Definition: DQMStore.cc:333
static void fillHistoLSPSetDescription(edm::ParameterSetDescription &pset)
Definition: HTMonitor.cc:424
MonitorElement * numerator
Definition: HTMonitor.h:59
HTMonitor(const edm::ParameterSet &)
Definition: HTMonitor.cc:12
T min(T a, T b)
Definition: MathUtil.h:58
static void fillHistoPSetDescription(edm::ParameterSetDescription &pset)
Definition: HTMonitor.cc:418
ParameterDescriptionBase * add(U const &iLabel, T const &value)
bool isValid() const
Definition: HandleBase.h:70
MEHTbinning ht_binning_
Definition: HTMonitor.h:133
edm::EDGetTokenT< reco::GsfElectronCollection > eleToken_
Definition: HTMonitor.h:128
MEHTbinning ls_binning_
Definition: HTMonitor.h:134
StringCutObjectSelector< reco::MET, true > metSelection_
Definition: HTMonitor.h:144
def ls(path, rec=False)
Definition: eostools.py:349
edm::InputTag vtxInputTag_
Definition: HTMonitor.h:124
edm::InputTag metInputTag_
Definition: HTMonitor.h:120
StringCutObjectSelector< reco::GsfElectron, true > eleSelection_
Definition: HTMonitor.h:146
unsigned nelectrons_
Definition: HTMonitor.h:150
edm::EDGetTokenT< reco::JetView > jetToken_
Definition: HTMonitor.h:127
void add(std::string const &label, ParameterSetDescription const &psetDescription)
void analyze(edm::Event const &iEvent, edm::EventSetup const &iSetup) override
Definition: HTMonitor.cc:218
std::string folderName_
Definition: HTMonitor.h:116
std::string const & label() const
Definition: InputTag.h:36
HTME deltaphimetj1ME_
Definition: HTMonitor.h:138
edm::EventID id() const
Definition: EventBase.h:59
fixed size matrix
HLT enums.
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
Definition: HTMonitor.cc:430
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
Definition: DQMStore.cc:266
static MEHTbinning getHistoLSPSet(const edm::ParameterSet &pset)
Definition: HTMonitor.cc:74
HTME deltaphij1j2ME_
Definition: HTMonitor.h:139
Definition: HTMonitor.h:44
edm::EDGetTokenT< reco::PFMETCollection > metToken_
Definition: HTMonitor.h:126
Definition: HT.h:21
HTME htVsLS_
Definition: HTMonitor.h:137
double phi() const final
momentum azimuthal angle
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
Definition: HTMonitor.cc:152
unsigned nmuons_
Definition: HTMonitor.h:151
static MEHTbinning phi_binning_
Definition: HTMonitor.h:156
StringCutObjectSelector< reco::Jet, true > jetSelection_HT_
Definition: HTMonitor.h:148
Definition: Run.h:45
virtual void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
Collection of PF MET.
std::unique_ptr< GenericTriggerEventFlag > num_genTriggerEventFlag_
Definition: HTMonitor.h:141