CMS 3D CMS Logo

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