CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
L1ExtraDQM.cc
Go to the documentation of this file.
1 
15 // this class header
17 
18 // system include files
19 #include <iostream>
20 #include <iomanip>
21 #include <memory>
22 #include <string>
23 
24 // constructor
26  : //
27  m_retrieveL1Extra(paramSet.getParameter<edm::ParameterSet>("L1ExtraInputTags"), consumesCollector()),
28  L1ExtraIsoTauJetSource(paramSet.getParameter<edm::InputTag>("L1ExtraIsoTauJetSource_")),
29  m_dirName(paramSet.getParameter<std::string>("DirName")),
30  m_stage1_layer2_(paramSet.getParameter<bool>("stage1_layer2_")),
31  //
32  m_nrBxInEventGmt(paramSet.getParameter<int>("NrBxInEventGmt")),
33  m_nrBxInEventGct(paramSet.getParameter<int>("NrBxInEventGct")),
34  //
35  m_resetModule(true),
36  m_currentRun(-99),
37  //
38  m_nrEvJob(0),
39  m_nrEvRun(0),
40  //
41  m_histTokens(consumesCollector(), true) {
42  //
43  if ((m_nrBxInEventGmt > 0) && ((m_nrBxInEventGmt % 2) == 0)) {
45 
46  edm::LogInfo("L1ExtraDQM") << "\nWARNING: Number of bunch crossing to be monitored for GMT rounded to: "
47  << m_nrBxInEventGmt << "\n The number must be an odd number!\n"
48  << std::endl;
49  }
50 
51  if ((m_nrBxInEventGct > 0) && ((m_nrBxInEventGct % 2) == 0)) {
53 
54  edm::LogInfo("L1ExtraDQM") << "\nWARNING: Number of bunch crossing to be monitored for GCT rounded to: "
55  << m_nrBxInEventGct << "\n The number must be an odd number!\n"
56  << std::endl;
57  }
58 
59  if (m_stage1_layer2_ == true) {
61  consumes<l1extra::L1JetParticleCollection>(paramSet.getParameter<edm::InputTag>("L1ExtraIsoTauJetSource_"));
62  }
63  //
70  if (m_stage1_layer2_ == true) {
72  }
79 }
80 
81 // destructor
83  // empty
84 }
85 
87  bool bookEta = true;
88  bool bookPhi = true;
89 
90  bool isL1Coll = true;
91 
92  for (int iBxInEvent = 0; iBxInEvent < m_nrBxInEventGmt; ++iBxInEvent) {
93  int bxInEvent = iBxInEvent + (m_nrBxInEventGmt + 1) / 2 - m_nrBxInEventGmt;
94 
95  (m_meAnalysisL1ExtraMuon.at(iBxInEvent))
96  ->fillNrObjects(m_retrieveL1Extra.l1ExtraMuon(), m_retrieveL1Extra.validL1ExtraMuon(), isL1Coll, bxInEvent);
97  (m_meAnalysisL1ExtraMuon.at(iBxInEvent))
98  ->fillPtPhiEta(m_retrieveL1Extra.l1ExtraMuon(),
100  bookPhi,
101  bookEta,
102  isL1Coll,
103  bxInEvent);
104  }
105 }
106 
108  bool bookEta = true;
109  bool bookPhi = true;
110 
111  bool isL1Coll = true;
112 
113  for (int iBxInEvent = 0; iBxInEvent < m_nrBxInEventGct; ++iBxInEvent) {
114  int bxInEvent = iBxInEvent + (m_nrBxInEventGct + 1) / 2 - m_nrBxInEventGct;
115 
116  (m_meAnalysisL1ExtraIsoEG.at(iBxInEvent))
117  ->fillNrObjects(m_retrieveL1Extra.l1ExtraIsoEG(), m_retrieveL1Extra.validL1ExtraIsoEG(), isL1Coll, bxInEvent);
118  (m_meAnalysisL1ExtraIsoEG.at(iBxInEvent))
119  ->fillPtPhiEta(m_retrieveL1Extra.l1ExtraIsoEG(),
121  bookPhi,
122  bookEta,
123  isL1Coll,
124  bxInEvent);
125  }
126 }
127 
129  bool bookEta = true;
130  bool bookPhi = true;
131 
132  bool isL1Coll = true;
133 
134  for (int iBxInEvent = 0; iBxInEvent < m_nrBxInEventGct; ++iBxInEvent) {
135  int bxInEvent = iBxInEvent + (m_nrBxInEventGct + 1) / 2 - m_nrBxInEventGct;
136 
137  (m_meAnalysisL1ExtraNoIsoEG.at(iBxInEvent))
138  ->fillNrObjects(
140  (m_meAnalysisL1ExtraNoIsoEG.at(iBxInEvent))
141  ->fillPtPhiEta(m_retrieveL1Extra.l1ExtraNoIsoEG(),
143  bookPhi,
144  bookEta,
145  isL1Coll,
146  bxInEvent);
147  }
148 }
149 
151  bool bookEta = true;
152  bool bookPhi = true;
153 
154  bool isL1Coll = true;
155 
156  for (int iBxInEvent = 0; iBxInEvent < m_nrBxInEventGct; ++iBxInEvent) {
157  int bxInEvent = iBxInEvent + (m_nrBxInEventGct + 1) / 2 - m_nrBxInEventGct;
158 
159  (m_meAnalysisL1ExtraCenJet.at(iBxInEvent))
160  ->fillNrObjects(m_retrieveL1Extra.l1ExtraCenJet(), m_retrieveL1Extra.validL1ExtraCenJet(), isL1Coll, bxInEvent);
161  (m_meAnalysisL1ExtraCenJet.at(iBxInEvent))
162  ->fillEtPhiEta(m_retrieveL1Extra.l1ExtraCenJet(),
164  bookPhi,
165  bookEta,
166  isL1Coll,
167  bxInEvent);
168  }
169 }
170 
172  bool bookPhi = true;
173  bool bookEta = true;
174 
175  bool isL1Coll = true;
176 
177  for (int iBxInEvent = 0; iBxInEvent < m_nrBxInEventGct; ++iBxInEvent) {
178  int bxInEvent = iBxInEvent + (m_nrBxInEventGct + 1) / 2 - m_nrBxInEventGct;
179 
180  (m_meAnalysisL1ExtraForJet.at(iBxInEvent))
181  ->fillNrObjects(m_retrieveL1Extra.l1ExtraForJet(), m_retrieveL1Extra.validL1ExtraForJet(), isL1Coll, bxInEvent);
182  (m_meAnalysisL1ExtraForJet.at(iBxInEvent))
183  ->fillEtPhiEta(m_retrieveL1Extra.l1ExtraForJet(),
185  bookPhi,
186  bookEta,
187  isL1Coll,
188  bxInEvent);
189  }
190 }
191 
193  bool bookPhi = true;
194  bool bookEta = true;
195 
196  bool isL1Coll = true;
197 
198  for (int iBxInEvent = 0; iBxInEvent < m_nrBxInEventGct; ++iBxInEvent) {
199  int bxInEvent = iBxInEvent + (m_nrBxInEventGct + 1) / 2 - m_nrBxInEventGct;
200 
201  (m_meAnalysisL1ExtraTauJet.at(iBxInEvent))
202  ->fillNrObjects(m_retrieveL1Extra.l1ExtraTauJet(), m_retrieveL1Extra.validL1ExtraTauJet(), isL1Coll, bxInEvent);
203  (m_meAnalysisL1ExtraTauJet.at(iBxInEvent))
204  ->fillEtPhiEta(m_retrieveL1Extra.l1ExtraTauJet(),
206  bookPhi,
207  bookEta,
208  isL1Coll,
209  bxInEvent);
210  }
211 }
212 
214  bool bookPhi = true;
215  bool bookEta = true;
216 
217  bool isL1Coll = true;
218 
219  bool m_validL1ExtraIsoTauJet;
220 
222  iEvent.getByToken(m_tagL1ExtraIsoTauJetTok, collL1ExtraIsoTauJet);
223 
224  const l1extra::L1JetParticleCollection* m_l1ExtraIsoTauJet;
225 
226  if (collL1ExtraIsoTauJet.isValid()) {
227  m_validL1ExtraIsoTauJet = true;
228  m_l1ExtraIsoTauJet = collL1ExtraIsoTauJet.product();
229  } else {
230  LogDebug("L1RetrieveL1Extra") << "\n l1extra::L1JetParticleCollection with input tag \n "
231  << "m_tagL1ExtraIsoTauJet"
232  << "\n not found in the event.\n"
233  << "\n Return pointer 0 and false validity tag." << std::endl;
234 
235  m_validL1ExtraIsoTauJet = false;
236  m_l1ExtraIsoTauJet = nullptr;
237  }
238 
239  for (int iBxInEvent = 0; iBxInEvent < m_nrBxInEventGct; ++iBxInEvent) {
240  int bxInEvent = iBxInEvent + (m_nrBxInEventGct + 1) / 2 - m_nrBxInEventGct;
241  (m_meAnalysisL1ExtraIsoTauJet.at(iBxInEvent))
242  ->fillNrObjects(m_l1ExtraIsoTauJet, m_validL1ExtraIsoTauJet, isL1Coll, bxInEvent);
243  (m_meAnalysisL1ExtraIsoTauJet.at(iBxInEvent))
244  ->fillEtPhiEta(m_l1ExtraIsoTauJet, m_validL1ExtraIsoTauJet, bookPhi, bookEta, isL1Coll, bxInEvent);
245  }
246 }
247 
249  bool isL1Coll = true;
250 
251  for (int iBxInEvent = 0; iBxInEvent < m_nrBxInEventGct; ++iBxInEvent) {
252  int bxInEvent = iBxInEvent + (m_nrBxInEventGct + 1) / 2 - m_nrBxInEventGct;
253 
254  (m_meAnalysisL1ExtraETT.at(iBxInEvent))
255  ->fillEtTotal(m_retrieveL1Extra.l1ExtraETT(), m_retrieveL1Extra.validL1ExtraETT(), isL1Coll, bxInEvent);
256  }
257 }
258 
260  bool bookPhi = true;
261  bool bookEta = false;
262 
263  bool isL1Coll = true;
264 
265  for (int iBxInEvent = 0; iBxInEvent < m_nrBxInEventGct; ++iBxInEvent) {
266  int bxInEvent = iBxInEvent + (m_nrBxInEventGct + 1) / 2 - m_nrBxInEventGct;
267 
268  (m_meAnalysisL1ExtraETM.at(iBxInEvent))
269  ->fillEtPhiEta(
270  m_retrieveL1Extra.l1ExtraETM(), m_retrieveL1Extra.validL1ExtraETM(), bookPhi, bookEta, isL1Coll, bxInEvent);
271  }
272 }
273 
275  bool isL1Coll = true;
276 
277  for (int iBxInEvent = 0; iBxInEvent < m_nrBxInEventGct; ++iBxInEvent) {
278  int bxInEvent = iBxInEvent + (m_nrBxInEventGct + 1) / 2 - m_nrBxInEventGct;
279 
280  (m_meAnalysisL1ExtraHTT.at(iBxInEvent))
281  ->fillEtTotal(m_retrieveL1Extra.l1ExtraHTT(), m_retrieveL1Extra.validL1ExtraHTT(), isL1Coll, bxInEvent);
282  }
283 }
284 
286  bool bookPhi = true;
287  bool bookEta = false;
288 
289  bool isL1Coll = true;
290 
291  for (int iBxInEvent = 0; iBxInEvent < m_nrBxInEventGct; ++iBxInEvent) {
292  int bxInEvent = iBxInEvent + (m_nrBxInEventGct + 1) / 2 - m_nrBxInEventGct;
293 
294  (m_meAnalysisL1ExtraHTM.at(iBxInEvent))
295  ->fillEtPhiEta(
296  m_retrieveL1Extra.l1ExtraHTM(), m_retrieveL1Extra.validL1ExtraHTM(), bookPhi, bookEta, isL1Coll, bxInEvent);
297  }
298 }
299 
301  bool isL1Coll = true;
302 
303  for (int iBxInEvent = 0; iBxInEvent < m_nrBxInEventGct; ++iBxInEvent) {
304  int bxInEvent = iBxInEvent + (m_nrBxInEventGct + 1) / 2 - m_nrBxInEventGct;
305 
306  for (int iCount = 0; iCount < l1extra::L1HFRings::kNumRings; ++iCount) {
307  (m_meAnalysisL1ExtraHfBitCounts.at(iBxInEvent))
308  ->fillHfBitCounts(m_retrieveL1Extra.l1ExtraHfBitCounts(),
310  iCount,
311  isL1Coll,
312  bxInEvent);
313  }
314  }
315 }
316 
318  bool isL1Coll = true;
319 
320  for (int iBxInEvent = 0; iBxInEvent < m_nrBxInEventGct; ++iBxInEvent) {
321  int bxInEvent = iBxInEvent + (m_nrBxInEventGct + 1) / 2 - m_nrBxInEventGct;
322 
323  for (int iCount = 0; iCount < l1extra::L1HFRings::kNumRings; ++iCount) {
324  (m_meAnalysisL1ExtraHfRingEtSums.at(iBxInEvent))
325  ->fillHfRingEtSums(m_retrieveL1Extra.l1ExtraHfRingEtSums(),
327  iCount,
328  isL1Coll,
329  bxInEvent);
330  }
331  }
332 }
333 
334 void L1ExtraDQM::dqmBeginRun(edm::Run const& iRun, edm::EventSetup const& evSetup) {}
335 
337  m_nrEvRun = 0;
338 
339  std::vector<L1GtObject> l1Obj;
340  //const edm::EventSetup& evSetup;
341 
342  // define standard sets of histograms
343 
344  //
345  l1Obj.clear();
346  l1Obj.push_back(Mu);
347  int nrMonElements = 5;
348 
349  for (int iBxInEvent = 0; iBxInEvent < m_nrBxInEventGmt; ++iBxInEvent) {
350  m_meAnalysisL1ExtraMuon.push_back(
352 
353  int bxInEvent = iBxInEvent + (m_nrBxInEventGct + 1) / 2 - m_nrBxInEventGct;
354  int bxInEventHex = (bxInEvent + 16) % 16;
355 
356  std::stringstream ss;
357  std::string bxInEventHexString;
358  ss << std::uppercase << std::hex << bxInEventHex;
359  ss >> bxInEventHexString;
360 
361  ibooker.setCurrentFolder(m_dirName + "/BxInEvent_" + bxInEventHexString);
362 
363  (m_meAnalysisL1ExtraMuon.at(iBxInEvent))->bookhistograms(evSetup, ibooker, "L1_Mu", l1Obj);
364  }
365 
366  //
367  l1Obj.clear();
368  l1Obj.push_back(IsoEG);
369  nrMonElements = 4;
370 
371  for (int iBxInEvent = 0; iBxInEvent < m_nrBxInEventGct; ++iBxInEvent) {
372  m_meAnalysisL1ExtraIsoEG.push_back(
374 
375  int bxInEvent = iBxInEvent + (m_nrBxInEventGct + 1) / 2 - m_nrBxInEventGct;
376  int bxInEventHex = (bxInEvent + 16) % 16;
377 
378  std::stringstream ss;
379  std::string bxInEventHexString;
380  ss << std::uppercase << std::hex << bxInEventHex;
381  ss >> bxInEventHexString;
382 
383  ibooker.setCurrentFolder(m_dirName + "/BxInEvent_" + bxInEventHexString);
384 
385  (m_meAnalysisL1ExtraIsoEG.at(iBxInEvent))->bookhistograms(evSetup, ibooker, "L1_IsoEG", l1Obj);
386  }
387 
388  //
389  l1Obj.clear();
390  l1Obj.push_back(NoIsoEG);
391  nrMonElements = 4;
392 
393  for (int iBxInEvent = 0; iBxInEvent < m_nrBxInEventGct; ++iBxInEvent) {
394  m_meAnalysisL1ExtraNoIsoEG.push_back(
396 
397  int bxInEvent = iBxInEvent + (m_nrBxInEventGct + 1) / 2 - m_nrBxInEventGct;
398  int bxInEventHex = (bxInEvent + 16) % 16;
399 
400  std::stringstream ss;
401  std::string bxInEventHexString;
402  ss << std::uppercase << std::hex << bxInEventHex;
403  ss >> bxInEventHexString;
404 
405  //if (m_dbe) {
406  ibooker.setCurrentFolder(m_dirName + "/BxInEvent_" + bxInEventHexString);
407  //}
408 
409  (m_meAnalysisL1ExtraNoIsoEG.at(iBxInEvent))->bookhistograms(evSetup, ibooker, "L1_NoIsoEG", l1Obj);
410  }
411 
412  //
413  l1Obj.clear();
414  l1Obj.push_back(CenJet);
415  nrMonElements = 4;
416 
417  for (int iBxInEvent = 0; iBxInEvent < m_nrBxInEventGct; ++iBxInEvent) {
418  m_meAnalysisL1ExtraCenJet.push_back(
420 
421  int bxInEvent = iBxInEvent + (m_nrBxInEventGct + 1) / 2 - m_nrBxInEventGct;
422  int bxInEventHex = (bxInEvent + 16) % 16;
423 
424  std::stringstream ss;
425  std::string bxInEventHexString;
426  ss << std::uppercase << std::hex << bxInEventHex;
427  ss >> bxInEventHexString;
428 
429  ibooker.setCurrentFolder(m_dirName + "/BxInEvent_" + bxInEventHexString);
430 
431  (m_meAnalysisL1ExtraCenJet.at(iBxInEvent))->bookhistograms(evSetup, ibooker, "L1_CenJet", l1Obj);
432  }
433 
434  //
435  l1Obj.clear();
436  l1Obj.push_back(ForJet);
437 
438  for (int iBxInEvent = 0; iBxInEvent < m_nrBxInEventGct; ++iBxInEvent) {
439  m_meAnalysisL1ExtraForJet.push_back(
441 
442  int bxInEvent = iBxInEvent + (m_nrBxInEventGct + 1) / 2 - m_nrBxInEventGct;
443  int bxInEventHex = (bxInEvent + 16) % 16;
444 
445  std::stringstream ss;
446  std::string bxInEventHexString;
447  ss << std::uppercase << std::hex << bxInEventHex;
448  ss >> bxInEventHexString;
449 
450  ibooker.setCurrentFolder(m_dirName + "/BxInEvent_" + bxInEventHexString);
451 
452  (m_meAnalysisL1ExtraForJet.at(iBxInEvent))->bookhistograms(evSetup, ibooker, "L1_ForJet", l1Obj);
453  }
454 
455  //
456  l1Obj.clear();
457  l1Obj.push_back(TauJet);
458 
459  for (int iBxInEvent = 0; iBxInEvent < m_nrBxInEventGct; ++iBxInEvent) {
460  m_meAnalysisL1ExtraTauJet.push_back(
462 
463  int bxInEvent = iBxInEvent + (m_nrBxInEventGct + 1) / 2 - m_nrBxInEventGct;
464  int bxInEventHex = (bxInEvent + 16) % 16;
465 
466  std::stringstream ss;
467  std::string bxInEventHexString;
468  ss << std::uppercase << std::hex << bxInEventHex;
469  ss >> bxInEventHexString;
470 
471  ibooker.setCurrentFolder(m_dirName + "/BxInEvent_" + bxInEventHexString);
472 
473  (m_meAnalysisL1ExtraTauJet.at(iBxInEvent))->bookhistograms(evSetup, ibooker, "L1_TauJet", l1Obj);
474  }
475 
476  if (m_stage1_layer2_ == true) {
477  l1Obj.clear();
478  l1Obj.push_back(TauJet);
479  nrMonElements = 4;
480 
481  for (int iBxInEvent = 0; iBxInEvent < m_nrBxInEventGct; ++iBxInEvent) {
484 
485  int bxInEvent = iBxInEvent + (m_nrBxInEventGct + 1) / 2 - m_nrBxInEventGct;
486  int bxInEventHex = (bxInEvent + 16) % 16;
487 
488  std::stringstream ss;
489  std::string bxInEventHexString;
490  ss << std::uppercase << std::hex << bxInEventHex;
491  ss >> bxInEventHexString;
492 
493  ibooker.setCurrentFolder(m_dirName + "/BxInEvent_" + bxInEventHexString);
494 
495  (m_meAnalysisL1ExtraIsoTauJet.at(iBxInEvent))->bookhistograms(evSetup, ibooker, "L1_IsoTauJet", l1Obj);
496  }
497  }
498 
499  //
500  l1Obj.clear();
501  l1Obj.push_back(ETT);
502  nrMonElements = 1;
503 
504  bool bookPhi = false;
505  bool bookEta = false;
506 
507  for (int iBxInEvent = 0; iBxInEvent < m_nrBxInEventGct; ++iBxInEvent) {
508  m_meAnalysisL1ExtraETT.push_back(
510 
511  int bxInEvent = iBxInEvent + (m_nrBxInEventGct + 1) / 2 - m_nrBxInEventGct;
512  int bxInEventHex = (bxInEvent + 16) % 16;
513 
514  std::stringstream ss;
515  std::string bxInEventHexString;
516  ss << std::uppercase << std::hex << bxInEventHex;
517  ss >> bxInEventHexString;
518 
519  ibooker.setCurrentFolder(m_dirName + "/BxInEvent_" + bxInEventHexString);
520 
521  (m_meAnalysisL1ExtraETT.at(iBxInEvent))->bookhistograms(evSetup, ibooker, "L1_ETT", l1Obj, bookPhi, bookEta);
522  }
523 
524  //
525  l1Obj.clear();
526  l1Obj.push_back(ETM);
527  nrMonElements = 2;
528 
529  bookPhi = true;
530  bookEta = false;
531 
532  for (int iBxInEvent = 0; iBxInEvent < m_nrBxInEventGct; ++iBxInEvent) {
533  m_meAnalysisL1ExtraETM.push_back(
535  int bxInEvent = iBxInEvent + (m_nrBxInEventGct + 1) / 2 - m_nrBxInEventGct;
536  int bxInEventHex = (bxInEvent + 16) % 16;
537 
538  std::stringstream ss;
539  std::string bxInEventHexString;
540  ss << std::uppercase << std::hex << bxInEventHex;
541  ss >> bxInEventHexString;
542 
543  ibooker.setCurrentFolder(m_dirName + "/BxInEvent_" + bxInEventHexString);
544 
545  (m_meAnalysisL1ExtraETM.at(iBxInEvent))->bookhistograms(evSetup, ibooker, "L1_ETM", l1Obj, bookPhi, bookEta);
546  }
547 
548  //
549  l1Obj.clear();
550  l1Obj.push_back(HTT);
551  nrMonElements = 1;
552 
553  bookPhi = false;
554  bookEta = false;
555 
556  for (int iBxInEvent = 0; iBxInEvent < m_nrBxInEventGct; ++iBxInEvent) {
557  m_meAnalysisL1ExtraHTT.push_back(
559  int bxInEvent = iBxInEvent + (m_nrBxInEventGct + 1) / 2 - m_nrBxInEventGct;
560  int bxInEventHex = (bxInEvent + 16) % 16;
561 
562  std::stringstream ss;
563  std::string bxInEventHexString;
564  ss << std::uppercase << std::hex << bxInEventHex;
565  ss >> bxInEventHexString;
566 
567  ibooker.setCurrentFolder(m_dirName + "/BxInEvent_" + bxInEventHexString);
568 
569  (m_meAnalysisL1ExtraHTT.at(iBxInEvent))->bookhistograms(evSetup, ibooker, "L1_HTT", l1Obj, bookPhi, bookEta);
570  }
571 
572  //
573  l1Obj.clear();
574  l1Obj.push_back(HTM);
575  nrMonElements = 2;
576 
577  bookPhi = true;
578  bookEta = false;
579 
580  for (int iBxInEvent = 0; iBxInEvent < m_nrBxInEventGct; ++iBxInEvent) {
581  m_meAnalysisL1ExtraHTM.push_back(
583  int bxInEvent = iBxInEvent + (m_nrBxInEventGct + 1) / 2 - m_nrBxInEventGct;
584  int bxInEventHex = (bxInEvent + 16) % 16;
585 
586  std::stringstream ss;
587  std::string bxInEventHexString;
588  ss << std::uppercase << std::hex << bxInEventHex;
589  ss >> bxInEventHexString;
590 
591  ibooker.setCurrentFolder(m_dirName + "/BxInEvent_" + bxInEventHexString);
592 
593  if (m_stage1_layer2_ == false) {
594  (m_meAnalysisL1ExtraHTM.at(iBxInEvent))->bookhistograms(evSetup, ibooker, "L1_HTM", l1Obj, bookPhi, bookEta);
595  } else {
596  (m_meAnalysisL1ExtraHTM.at(iBxInEvent))->bookhistograms(evSetup, ibooker, "L1_HTMHTT", l1Obj, bookPhi, bookEta);
597  }
598  }
599 
600  //
601  l1Obj.clear();
602  l1Obj.push_back(HfBitCounts);
603  nrMonElements = 1;
604 
605  bookPhi = false;
606  bookEta = false;
607 
608  for (int iBxInEvent = 0; iBxInEvent < m_nrBxInEventGct; ++iBxInEvent) {
611  int bxInEvent = iBxInEvent + (m_nrBxInEventGct + 1) / 2 - m_nrBxInEventGct;
612  int bxInEventHex = (bxInEvent + 16) % 16;
613 
614  std::stringstream ss;
615  std::string bxInEventHexString;
616  ss << std::uppercase << std::hex << bxInEventHex;
617  ss >> bxInEventHexString;
618 
619  ibooker.setCurrentFolder(m_dirName + "/BxInEvent_" + bxInEventHexString);
620 
621  (m_meAnalysisL1ExtraHfBitCounts.at(iBxInEvent))
622  ->bookhistograms(evSetup, ibooker, "L1_HfBitCounts", l1Obj, bookPhi, bookEta);
623  }
624 
625  //
626  l1Obj.clear();
627  l1Obj.push_back(HfRingEtSums);
628  nrMonElements = 1;
629 
630  bookPhi = false;
631  bookEta = false;
632 
633  for (int iBxInEvent = 0; iBxInEvent < m_nrBxInEventGct; ++iBxInEvent) {
636  int bxInEvent = iBxInEvent + (m_nrBxInEventGct + 1) / 2 - m_nrBxInEventGct;
637  int bxInEventHex = (bxInEvent + 16) % 16;
638 
639  std::stringstream ss;
640  std::string bxInEventHexString;
641  ss << std::uppercase << std::hex << bxInEventHex;
642  ss >> bxInEventHexString;
643 
644  ibooker.setCurrentFolder(m_dirName + "/BxInEvent_" + bxInEventHexString);
645 
646  if (m_stage1_layer2_ == false) {
647  (m_meAnalysisL1ExtraHfRingEtSums.at(iBxInEvent))
648  ->bookhistograms(evSetup, ibooker, "L1_HfRingEtSums", l1Obj, bookPhi, bookEta);
649  }
650  if (m_stage1_layer2_ == true) {
651  (m_meAnalysisL1ExtraHfRingEtSums.at(iBxInEvent))
652  ->bookhistograms(evSetup, ibooker, "L1_IsoTau_replace_Hf", l1Obj, bookPhi, bookEta);
653  }
654  }
655 }
656 
657 //
658 void L1ExtraDQM::analyze(const edm::Event& iEvent, const edm::EventSetup& evSetup) {
659  ++m_nrEvJob;
660  ++m_nrEvRun;
661  //
662  m_retrieveL1Extra.retrieveL1ExtraObjects(iEvent, evSetup);
663  //
664  analyzeL1ExtraMuon(iEvent, evSetup);
665  analyzeL1ExtraIsoEG(iEvent, evSetup);
666  analyzeL1ExtraNoIsoEG(iEvent, evSetup);
667  analyzeL1ExtraCenJet(iEvent, evSetup);
668  analyzeL1ExtraForJet(iEvent, evSetup);
669  analyzeL1ExtraTauJet(iEvent, evSetup);
670  analyzeL1ExtraETT(iEvent, evSetup);
671  analyzeL1ExtraETM(iEvent, evSetup);
672  analyzeL1ExtraHTT(iEvent, evSetup);
673  analyzeL1ExtraHTM(iEvent, evSetup);
674  analyzeL1ExtraHfBitCounts(iEvent, evSetup);
675  analyzeL1ExtraHfRingEtSums(iEvent, evSetup);
676 
677  if (m_stage1_layer2_ == true) {
678  analyzeL1ExtraIsoTauJet(iEvent, evSetup);
679  }
680 }
681 
682 void L1ExtraDQM::dqmEndRun(const edm::Run& run, const edm::EventSetup& evSetup) {
683  // delete if event setup has changed only FIXME
684 
686  m_meAnalysisL1ExtraMuon.begin();
687  iterME != m_meAnalysisL1ExtraMuon.end();
688  ++iterME) {
689  delete *iterME;
690  }
691  m_meAnalysisL1ExtraMuon.clear();
692 
694  m_meAnalysisL1ExtraIsoEG.begin();
695  iterME != m_meAnalysisL1ExtraIsoEG.end();
696  ++iterME) {
697  delete *iterME;
698  }
699  m_meAnalysisL1ExtraIsoEG.clear();
700 
703  iterME != m_meAnalysisL1ExtraNoIsoEG.end();
704  ++iterME) {
705  delete *iterME;
706  }
708 
711  iterME != m_meAnalysisL1ExtraCenJet.end();
712  ++iterME) {
713  delete *iterME;
714  }
716 
719  iterME != m_meAnalysisL1ExtraForJet.end();
720  ++iterME) {
721  delete *iterME;
722  }
724 
727  iterME != m_meAnalysisL1ExtraTauJet.end();
728  ++iterME) {
729  delete *iterME;
730  }
732 
734  m_meAnalysisL1ExtraETT.begin();
735  iterME != m_meAnalysisL1ExtraETT.end();
736  ++iterME) {
737  delete *iterME;
738  }
739  m_meAnalysisL1ExtraETT.clear();
740 
742  m_meAnalysisL1ExtraETM.begin();
743  iterME != m_meAnalysisL1ExtraETM.end();
744  ++iterME) {
745  delete *iterME;
746  }
747  m_meAnalysisL1ExtraETM.clear();
748 
750  m_meAnalysisL1ExtraHTT.begin();
751  iterME != m_meAnalysisL1ExtraHTT.end();
752  ++iterME) {
753  delete *iterME;
754  }
755  m_meAnalysisL1ExtraHTT.clear();
756 
758  m_meAnalysisL1ExtraHTM.begin();
759  iterME != m_meAnalysisL1ExtraHTM.end();
760  ++iterME) {
761  delete *iterME;
762  }
763  m_meAnalysisL1ExtraHTM.clear();
764 
767  iterME != m_meAnalysisL1ExtraHfBitCounts.end();
768  ++iterME) {
769  delete *iterME;
770  }
772 
775  iterME != m_meAnalysisL1ExtraHfRingEtSums.end();
776  ++iterME) {
777  delete *iterME;
778  }
780 
781  LogDebug("L1ExtraDQM") << "\n\n endRun: " << run.id()
782  << "\n Number of events analyzed in this run: " << m_nrEvRun
783  << "\n Total number of events analyzed in this job: " << m_nrEvJob << "\n"
784  << std::endl;
785 }
786 
787 // constructor L1ExtraMonElement
788 template <class CollectionType>
790  const int nrElements)
791  : m_tokens(tokens),
792  m_indexNrObjects(-1),
793  m_indexPt(-1),
794  m_indexEt(-1),
795  m_indexPhi(-1),
796  m_indexEta(-1),
797  m_indexEtTotal(-1),
798  m_indexCharge(-1),
799  m_indexHfBitCounts(-1),
800  m_indexHfRingEtSums(-1) {
801  m_monElement.reserve(nrElements);
802 }
803 
804 // destructor L1ExtraMonElement
805 template <class CollectionType>
807  //empty
808 }
809 
810 template <class CollectionType>
812  DQMStore::IBooker& ibooker,
813  const std::string& l1ExtraObject,
814  const std::vector<L1GtObject>& l1GtObj,
815  const bool bookPhi,
816  const bool bookEta) {
817  // FIXME
818  L1GtObject gtObj = l1GtObj.at(0);
819 
820  //
821  std::string histName;
822  std::string histTitle;
823  std::string xAxisTitle;
824  std::string yAxisTitle;
825 
826  std::string quantity = "";
827 
828  int indexHistogram = -1;
829 
830  if (gtObj == HfBitCounts) {
831  L1GetHistLimits l1GetHistLimits(m_tokens, evSetup);
832  const L1GetHistLimits::L1HistLimits& histLimits = l1GetHistLimits.l1HistLimits(gtObj, quantity);
833 
834  const int histNrBins = histLimits.nrBins;
835  const double histMinValue = histLimits.lowerBinValue;
836  const double histMaxValue = histLimits.upperBinValue;
837 
838  indexHistogram++;
839  m_indexHfBitCounts = indexHistogram;
840 
841  for (int iCount = 0; iCount < l1extra::L1HFRings::kNumRings; ++iCount) {
842  histName = l1ExtraObject + "_Count_" + std::to_string(iCount);
843  histTitle = l1ExtraObject + ": count " + std::to_string(iCount);
844  xAxisTitle = l1ExtraObject;
845  yAxisTitle = "Entries";
846 
847  m_monElement.push_back(ibooker.book1D(histName, histTitle, histNrBins, histMinValue, histMaxValue));
848  m_monElement[m_indexHfBitCounts + iCount]->setAxisTitle(xAxisTitle, 1);
849  m_monElement[m_indexHfBitCounts + iCount]->setAxisTitle(yAxisTitle, 2);
850  }
851 
852  return;
853  }
854 
855  // number of objects per event
856  if ((gtObj == Mu) || (gtObj == IsoEG) || (gtObj == NoIsoEG) || (gtObj == CenJet) || (gtObj == ForJet) ||
857  (gtObj == TauJet)) {
858  quantity = "NrObjects";
859 
860  L1GetHistLimits l1GetHistLimits(m_tokens, evSetup);
861  const L1GetHistLimits::L1HistLimits& histLimits = l1GetHistLimits.l1HistLimits(gtObj, quantity);
862 
863  const int histNrBins = histLimits.nrBins;
864  const double histMinValue = histLimits.lowerBinValue;
865  const double histMaxValue = histLimits.upperBinValue;
866 
867  histName = l1ExtraObject + "_NrObjectsPerEvent";
868  histTitle = l1ExtraObject + ": number of objects per event";
869  xAxisTitle = "Nr_" + l1ExtraObject;
870  yAxisTitle = "Entries";
871 
872  m_monElement.push_back(ibooker.book1D(histName, histTitle, histNrBins, histMinValue, histMaxValue));
873  indexHistogram++;
874 
875  m_monElement[indexHistogram]->setAxisTitle(xAxisTitle, 1);
876  m_monElement[indexHistogram]->setAxisTitle(yAxisTitle, 2);
877  m_indexNrObjects = indexHistogram;
878  }
879 
880  // transverse momentum (energy) PT (ET) [GeV]
881 
882  quantity = "ET";
883  std::string quantityLongName = " transverse energy ";
884 
885  if (gtObj == Mu) {
886  quantity = "PT";
887  quantityLongName = " transverse momentum ";
888  }
889 
890  L1GetHistLimits l1GetHistLimits(m_tokens, evSetup);
891  const L1GetHistLimits::L1HistLimits& histLimits = l1GetHistLimits.l1HistLimits(gtObj, quantity);
892 
893  const int histNrBinsET = histLimits.nrBins;
894  const double histMinValueET = histLimits.lowerBinValue;
895  const double histMaxValueET = histLimits.upperBinValue;
896  const std::vector<float>& binThresholdsET = histLimits.binThresholds;
897 
898  float* binThresholdsETf;
899  size_t sizeBinThresholdsET = binThresholdsET.size();
900  binThresholdsETf = new float[sizeBinThresholdsET];
901  copy(binThresholdsET.begin(), binThresholdsET.end(), binThresholdsETf);
902 
903  LogDebug("L1ExtraDQM") << "\n PT/ET histogram for " << l1ExtraObject << "\n histNrBinsET = " << histNrBinsET
904  << "\n histMinValueET = " << histMinValueET << "\n histMaxValueET = " << histMaxValueET
905  << "\n Last bin value represents the upper limit of the histogram" << std::endl;
906  for (size_t iBin = 0; iBin < sizeBinThresholdsET; ++iBin) {
907  LogTrace("L1ExtraDQM") << "Bin " << iBin << ": " << quantity << " = " << binThresholdsETf[iBin] << " GeV"
908  << std::endl;
909  }
910 
911  histName = l1ExtraObject + "_" + quantity;
912  histTitle = l1ExtraObject + ":" + quantityLongName + quantity + " [GeV]";
913  xAxisTitle = l1ExtraObject + "_" + quantity + " [GeV]";
914  yAxisTitle = "Entries";
915 
916  if (gtObj == HfRingEtSums) {
917  indexHistogram++;
918  m_indexHfRingEtSums = indexHistogram;
919 
920  for (int iCount = 0; iCount < l1extra::L1HFRings::kNumRings; ++iCount) {
921  histName = l1ExtraObject + "_Count_" + std::to_string(iCount);
922  histTitle = l1ExtraObject + ": count " + std::to_string(iCount);
923  xAxisTitle = l1ExtraObject;
924  yAxisTitle = "Entries";
925 
926  m_monElement.push_back(ibooker.book1D(histName, histTitle, histNrBinsET, binThresholdsETf));
927 
928  m_monElement[m_indexHfRingEtSums + iCount]->setAxisTitle(xAxisTitle, 1);
929  m_monElement[m_indexHfRingEtSums + iCount]->setAxisTitle(yAxisTitle, 2);
930  }
931 
932  } else {
933  m_monElement.push_back(ibooker.book1D(histName, histTitle, histNrBinsET, binThresholdsETf));
934  indexHistogram++;
935 
936  m_monElement[indexHistogram]->setAxisTitle(xAxisTitle, 1);
937  m_monElement[indexHistogram]->setAxisTitle(yAxisTitle, 2);
938  m_indexPt = indexHistogram;
939  m_indexEt = indexHistogram;
940  m_indexEtTotal = indexHistogram;
941  }
942 
943  delete[] binThresholdsETf;
944 
945  //
946 
947  if (bookPhi) {
948  quantity = "phi";
949 
950  // get limits and binning from L1Extra
951  L1GetHistLimits l1GetHistLimits(m_tokens, evSetup);
952  const L1GetHistLimits::L1HistLimits& histLimits = l1GetHistLimits.l1HistLimits(gtObj, quantity);
953 
954  const int histNrBinsPhi = histLimits.nrBins;
955  const double histMinValuePhi = histLimits.lowerBinValue;
956  const double histMaxValuePhi = histLimits.upperBinValue;
957  const std::vector<float>& binThresholdsPhi = histLimits.binThresholds;
958 
959  float* binThresholdsPhif;
960  size_t sizeBinThresholdsPhi = binThresholdsPhi.size();
961  binThresholdsPhif = new float[sizeBinThresholdsPhi];
962  copy(binThresholdsPhi.begin(), binThresholdsPhi.end(), binThresholdsPhif);
963 
964  LogDebug("L1ExtraDQM") << "\n phi histogram for " << l1ExtraObject << "\n histNrBinsPhi = " << histNrBinsPhi
965  << "\n histMinValuePhi = " << histMinValuePhi << "\n histMaxValuePhi = " << histMaxValuePhi
966  << "\n Last bin value represents the upper limit of the histogram" << std::endl;
967  for (size_t iBin = 0; iBin < sizeBinThresholdsPhi; ++iBin) {
968  LogTrace("L1ExtraDQM") << "Bin " << iBin << ": phi = " << binThresholdsPhif[iBin] << " deg" << std::endl;
969  }
970 
971  histName = l1ExtraObject + "_phi";
972  histTitle = l1ExtraObject + ": phi distribution ";
973  xAxisTitle = l1ExtraObject + "_phi [deg]";
974  yAxisTitle = "Entries";
975 
976  m_monElement.push_back(ibooker.book1D(histName, histTitle, histNrBinsPhi, histMinValuePhi, histMaxValuePhi));
977  indexHistogram++;
978 
979  m_monElement[indexHistogram]->setAxisTitle(xAxisTitle, 1);
980  m_monElement[indexHistogram]->setAxisTitle(yAxisTitle, 2);
981  m_indexPhi = indexHistogram;
982 
983  delete[] binThresholdsPhif;
984  }
985 
986  //
987 
988  if (bookEta) {
989  quantity = "eta";
990 
991  // get limits and binning from L1Extra
992  L1GetHistLimits l1GetHistLimits(m_tokens, evSetup);
993  const L1GetHistLimits::L1HistLimits& histLimits = l1GetHistLimits.l1HistLimits(gtObj, quantity);
994 
995  const int histNrBinsEta = histLimits.nrBins;
996  const double histMinValueEta = histLimits.lowerBinValue;
997  const double histMaxValueEta = histLimits.upperBinValue;
998  const std::vector<float>& binThresholdsEta = histLimits.binThresholds;
999 
1000  //
1001  float* binThresholdsEtaf;
1002  size_t sizeBinThresholdsEta = binThresholdsEta.size();
1003  binThresholdsEtaf = new float[sizeBinThresholdsEta];
1004  copy(binThresholdsEta.begin(), binThresholdsEta.end(), binThresholdsEtaf);
1005 
1006  LogDebug("L1ExtraDQM") << "\n eta histogram for " << l1ExtraObject << "\n histNrBinsEta = " << histNrBinsEta
1007  << "\n histMinValueEta = " << histMinValueEta << "\n histMaxValueEta = " << histMaxValueEta
1008  << "\n Last bin value represents the upper limit of the histogram" << std::endl;
1009  for (size_t iBin = 0; iBin < sizeBinThresholdsEta; ++iBin) {
1010  LogTrace("L1ExtraDQM") << "Bin " << iBin << ": eta = " << binThresholdsEtaf[iBin] << std::endl;
1011  }
1012 
1013  histName = l1ExtraObject + "_eta";
1014  histTitle = l1ExtraObject + ": eta distribution ";
1015  xAxisTitle = l1ExtraObject + "_eta";
1016  yAxisTitle = "Entries";
1017 
1018  m_monElement.push_back(ibooker.book1D(histName, histTitle, histNrBinsEta, binThresholdsEtaf));
1019  indexHistogram++;
1020 
1021  m_monElement[indexHistogram]->setAxisTitle(xAxisTitle, 1);
1022  m_monElement[indexHistogram]->setAxisTitle(yAxisTitle, 2);
1023  m_indexEta = indexHistogram;
1024 
1025  delete[] binThresholdsEtaf;
1026  }
1027 }
1028 
1029 template <class CollectionType>
1031  const bool validColl,
1032  const bool isL1Coll,
1033  const int bxInEvent) {
1034  if (validColl && isL1Coll) {
1035  size_t collSize = 0;
1036  for (CIterColl iterColl = collType->begin(); iterColl != collType->end(); ++iterColl) {
1037  if (iterColl->bx() == bxInEvent) {
1038  collSize++;
1039  }
1040  }
1041  m_monElement[m_indexNrObjects]->Fill(collSize);
1042  } else {
1043  size_t collSize = collType->size();
1044  m_monElement[m_indexNrObjects]->Fill(collSize);
1045  }
1046 }
1047 
1048 template <class CollectionType>
1050  const bool validColl,
1051  const bool bookPhi,
1052  const bool bookEta,
1053  const bool isL1Coll,
1054  const int bxInEvent) {
1055  if (validColl) {
1056  for (CIterColl iterColl = collType->begin(); iterColl != collType->end(); ++iterColl) {
1057  if (isL1Coll && (iterColl->bx() != bxInEvent)) {
1058  continue;
1059  }
1060 
1061  m_monElement[m_indexPt]->Fill(iterColl->pt());
1062 
1063  if (bookPhi) {
1064  // add a very small quantity to get off the bin edge
1065  m_monElement[m_indexPhi]->Fill(rad2deg(iterColl->phi()) + 1.e-6);
1066  }
1067 
1068  if (bookEta) {
1069  m_monElement[m_indexEta]->Fill(iterColl->eta());
1070  }
1071  }
1072  }
1073 }
1074 
1075 template <class CollectionType>
1077  const bool validColl,
1078  const bool bookPhi,
1079  const bool bookEta,
1080  const bool isL1Coll,
1081  const int bxInEvent) {
1082  if (validColl) {
1083  for (CIterColl iterColl = collType->begin(); iterColl != collType->end(); ++iterColl) {
1084  if (isL1Coll && (iterColl->bx() != bxInEvent)) {
1085  continue;
1086  }
1087 
1088  m_monElement[m_indexEt]->Fill(iterColl->et());
1089 
1090  if (bookPhi) {
1091  // add a very small quantity to get off the bin edge
1092  m_monElement[m_indexPhi]->Fill(rad2deg(iterColl->phi()) + 1.e-6);
1093  }
1094 
1095  if (bookEta) {
1096  m_monElement[m_indexEta]->Fill(iterColl->eta());
1097  }
1098  }
1099  }
1100 }
1101 
1102 template <class CollectionType>
1104  const bool validColl,
1105  const bool isL1Coll,
1106  const int bxInEvent) {
1107  if (validColl) {
1108  for (CIterColl iterColl = collType->begin(); iterColl != collType->end(); ++iterColl) {
1109  if (isL1Coll && (iterColl->bx() != bxInEvent)) {
1110  continue;
1111  }
1112 
1113  m_monElement[m_indexEtTotal]->Fill(iterColl->etTotal());
1114  }
1115  }
1116 }
1117 
1118 template <class CollectionType>
1120  const bool validColl,
1121  const bool isL1Coll,
1122  const int bxInEvent) {
1123  if (validColl) {
1124  for (CIterColl iterColl = collType->begin(); iterColl != collType->end(); ++iterColl) {
1125  if (isL1Coll && (iterColl->bx() != bxInEvent)) {
1126  continue;
1127  }
1128 
1129  m_monElement[m_indexCharge]->Fill(iterColl->charge());
1130  }
1131  }
1132 }
1133 
1134 template <class CollectionType>
1136  const bool validColl,
1137  const int countIndex,
1138  const bool isL1Coll,
1139  const int bxInEvent) {
1140  if (validColl) {
1141  for (CIterColl iterColl = collType->begin(); iterColl != collType->end(); ++iterColl) {
1142  if (isL1Coll && (iterColl->bx() != bxInEvent)) {
1143  continue;
1144  }
1145 
1146  m_monElement[m_indexHfBitCounts + countIndex]->Fill(
1147  iterColl->hfBitCount((l1extra::L1HFRings::HFRingLabels)countIndex));
1148  }
1149  }
1150 }
1151 
1152 template <class CollectionType>
1154  const bool validColl,
1155  const int countIndex,
1156  const bool isL1Coll,
1157  const int bxInEvent) {
1158  if (validColl) {
1159  for (CIterColl iterColl = collType->begin(); iterColl != collType->end(); ++iterColl) {
1160  if (isL1Coll && (iterColl->bx() != bxInEvent)) {
1161  continue;
1162  }
1163 
1164  m_monElement[m_indexHfRingEtSums + countIndex]->Fill(
1165  iterColl->hfEtSum((l1extra::L1HFRings::HFRingLabels)countIndex));
1166  }
1167  }
1168 }
int m_nrBxInEventGmt
number of bunch crosses in event to be monitored
Definition: L1ExtraDQM.h:183
std::vector< L1ExtraMonElement< l1extra::L1EtMissParticleCollection > * > m_meAnalysisL1ExtraHTM
Definition: L1ExtraDQM.h:217
const l1extra::L1MuonParticleCollection * l1ExtraMuon() const
return retrieved L1Extra collections
std::string m_dirName
directory name for L1Extra plots
Definition: L1ExtraDQM.h:179
edm::EDGetTokenT< l1extra::L1JetParticleCollection > m_tagL1ExtraIsoTauJetTok
Definition: L1ExtraDQM.h:196
RunID const & id() const
Definition: RunBase.h:39
void fillNrObjects(const CollectionType *collType, const bool validColl, const bool isL1Coll, const int bxInEvent)
number of objects
Definition: L1ExtraDQM.cc:1030
Definition: L1GtObject.h:38
const bool validL1ExtraHTM() const
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:32
int m_nrEvJob
Definition: L1ExtraDQM.h:192
std::vector< L1ExtraMonElement< l1extra::L1EtMissParticleCollection > * > m_meAnalysisL1ExtraETM
Definition: L1ExtraDQM.h:213
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:539
void fillHfRingEtSums(const CollectionType *collType, const bool validColl, const int countIndex, const bool isL1Coll, const int bxInEvent)
fill energy sums in HFRings collections
Definition: L1ExtraDQM.cc:1153
Definition: L1GtObject.h:35
std::vector< L1ExtraMonElement< l1extra::L1JetParticleCollection > * > m_meAnalysisL1ExtraTauJet
Definition: L1ExtraDQM.h:208
std::vector< L1ExtraMonElement< l1extra::L1JetParticleCollection > * > m_meAnalysisL1ExtraForJet
Definition: L1ExtraDQM.h:207
const bool validL1ExtraForJet() const
void analyzeL1ExtraETT(const edm::Event &, const edm::EventSetup &)
Definition: L1ExtraDQM.cc:248
void analyzeL1ExtraIsoEG(const edm::Event &, const edm::EventSetup &)
Definition: L1ExtraDQM.cc:107
const bool validL1ExtraHTT() const
void analyzeL1ExtraETM(const edm::Event &, const edm::EventSetup &)
Definition: L1ExtraDQM.cc:259
CollectionType::const_iterator CIterColl
Definition: L1ExtraDQM.h:90
const l1extra::L1EmParticleCollection * l1ExtraNoIsoEG() const
const bool validL1ExtraMuon() const
validity for retrieval of L1Extra products (false: product not found)
#define LogTrace(id)
void analyzeL1ExtraCenJet(const edm::Event &, const edm::EventSetup &)
Definition: L1ExtraDQM.cc:150
Definition: L1GtObject.h:37
void dqmBeginRun(const edm::Run &, const edm::EventSetup &) override
Definition: L1ExtraDQM.cc:334
~L1ExtraDQM() override
Definition: L1ExtraDQM.cc:82
const bool validL1ExtraIsoEG() const
void analyzeL1ExtraForJet(const edm::Event &, const edm::EventSetup &)
Definition: L1ExtraDQM.cc:171
std::vector< L1ExtraMonElement< l1extra::L1MuonParticleCollection > * > m_meAnalysisL1ExtraMuon
pointers to L1ExtraMonElement for each sub-analysis
Definition: L1ExtraDQM.h:201
std::vector< L1ExtraMonElement< l1extra::L1EtMissParticleCollection > * > m_meAnalysisL1ExtraHTT
Definition: L1ExtraDQM.h:215
const bool validL1ExtraETT() const
std::vector< L1ExtraMonElement< l1extra::L1EmParticleCollection > * > m_meAnalysisL1ExtraIsoEG
Definition: L1ExtraDQM.h:203
int iEvent
Definition: GenABIO.cc:224
void analyzeL1ExtraTauJet(const edm::Event &, const edm::EventSetup &)
Definition: L1ExtraDQM.cc:192
void analyzeL1ExtraIsoTauJet(const edm::Event &, const edm::EventSetup &)
Definition: L1ExtraDQM.cc:213
void analyzeL1ExtraMuon(const edm::Event &, const edm::EventSetup &)
Definition: L1ExtraDQM.cc:86
std::vector< L1ExtraMonElement< l1extra::L1HFRingsCollection > * > m_meAnalysisL1ExtraHfRingEtSums
Definition: L1ExtraDQM.h:221
bool m_stage1_layer2_
Definition: L1ExtraDQM.h:180
std::vector< L1ExtraMonElement< l1extra::L1EmParticleCollection > * > m_meAnalysisL1ExtraNoIsoEG
Definition: L1ExtraDQM.h:204
void analyze(const edm::Event &, const edm::EventSetup &) override
Definition: L1ExtraDQM.cc:658
void analyzeL1ExtraHTM(const edm::Event &, const edm::EventSetup &)
Definition: L1ExtraDQM.cc:285
void bookhistograms(const edm::EventSetup &evSetup, DQMStore::IBooker &ibooker, const std::string &l1ExtraObject, const std::vector< L1GtObject > &l1GtObj, const bool bookPhi=true, const bool bookEta=true)
Definition: L1ExtraDQM.cc:811
const l1extra::L1EmParticleCollection * l1ExtraIsoEG() const
void bookHistograms(DQMStore::IBooker &ibooker, edm::Run const &, edm::EventSetup const &) override
Definition: L1ExtraDQM.cc:336
const bool validL1ExtraHfBitCounts() const
const bool validL1ExtraCenJet() const
const bool validL1ExtraTauJet() const
bool isValid() const
Definition: HandleBase.h:70
std::vector< L1ExtraMonElement< l1extra::L1JetParticleCollection > * > m_meAnalysisL1ExtraIsoTauJet
Definition: L1ExtraDQM.h:209
std::vector< L1JetParticle > L1JetParticleCollection
void fillPtPhiEta(const CollectionType *collType, const bool validColl, const bool bookPhi, const bool bookEta, const bool isL1Coll, const int bxInEvent)
PT, eta, phi.
Definition: L1ExtraDQM.cc:1049
const l1extra::L1HFRingsCollection * l1ExtraHfRingEtSums() const
std::vector< L1ExtraMonElement< l1extra::L1JetParticleCollection > * > m_meAnalysisL1ExtraCenJet
Definition: L1ExtraDQM.h:206
const l1extra::L1EtMissParticleCollection * l1ExtraHTM() const
Log< level::Info, false > LogInfo
std::vector< float > binThresholds
void fillHfBitCounts(const CollectionType *collType, const bool validColl, const int countIndex, const bool isL1Coll, const int bxInEvent)
fill bit counts in HFRings collections
Definition: L1ExtraDQM.cc:1135
const l1extra::L1JetParticleCollection * l1ExtraTauJet() const
const double rad2deg(const double &)
convert phi from rad (-pi, pi] to deg (0, 360)
const l1extra::L1JetParticleCollection * l1ExtraCenJet() const
Definition: L1GtObject.h:29
T const * product() const
Definition: Handle.h:70
const l1extra::L1EtMissParticleCollection * l1ExtraETM() const
L1ExtraDQM(const edm::ParameterSet &)
Definition: L1ExtraDQM.cc:25
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
const l1extra::L1JetParticleCollection * l1ExtraForJet() const
L1ExtraMonElement(const L1GetHistLimits::Tokens &, const int)
Definition: L1ExtraDQM.cc:789
void dqmEndRun(const edm::Run &run, const edm::EventSetup &evSetup) override
Definition: L1ExtraDQM.cc:682
void analyzeL1ExtraHTT(const edm::Event &, const edm::EventSetup &)
Definition: L1ExtraDQM.cc:274
int m_nrBxInEventGct
Definition: L1ExtraDQM.h:184
void analyzeL1ExtraHfRingEtSums(const edm::Event &, const edm::EventSetup &)
Definition: L1ExtraDQM.cc:317
const bool validL1ExtraHfRingEtSums() const
Definition: L1GtObject.h:36
L1RetrieveL1Extra m_retrieveL1Extra
input parameters
Definition: L1ExtraDQM.h:176
std::vector< L1ExtraMonElement< l1extra::L1EtMissParticleCollection > * > m_meAnalysisL1ExtraETT
Definition: L1ExtraDQM.h:211
std::vector< L1ExtraMonElement< l1extra::L1HFRingsCollection > * > m_meAnalysisL1ExtraHfBitCounts
Definition: L1ExtraDQM.h:219
const bool validL1ExtraNoIsoEG() const
void analyzeL1ExtraNoIsoEG(const edm::Event &, const edm::EventSetup &)
Definition: L1ExtraDQM.cc:128
void analyzeL1ExtraHfBitCounts(const edm::Event &, const edm::EventSetup &)
Definition: L1ExtraDQM.cc:300
void fillCharge(const CollectionType *collType, const bool validColl, const bool isL1Coll, const int bxInEvent)
fill charge
Definition: L1ExtraDQM.cc:1119
void fillEtPhiEta(const CollectionType *collType, const bool validColl, const bool bookPhi, const bool bookEta, const bool isL1Coll, const int bxInEvent)
ET, eta, phi.
Definition: L1ExtraDQM.cc:1076
const l1extra::L1EtMissParticleCollection * l1ExtraETT() const
const l1extra::L1EtMissParticleCollection * l1ExtraHTT() const
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98
const bool validL1ExtraETM() const
int m_nrEvRun
Definition: L1ExtraDQM.h:193
std::vector< MonitorElement * > m_monElement
Definition: L1ExtraDQM.h:140
void retrieveL1ExtraObjects(const edm::Event &, const edm::EventSetup &)
Definition: Run.h:45
const l1extra::L1HFRingsCollection * l1ExtraHfBitCounts() const
#define LogDebug(id)
const L1HistLimits & l1HistLimits(const L1GtObject &l1GtObject, const std::string &quantity)
void fillEtTotal(const CollectionType *collType, const bool validColl, const bool isL1Coll, const int bxInEvent)
fill ET total in energy sums
Definition: L1ExtraDQM.cc:1103
L1GetHistLimits::Tokens m_histTokens
Definition: L1ExtraDQM.h:198