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 
393 
394 }
395 
397 
398  m_nrEvRun = 0;
399 
400  std::vector<L1GtObject> l1Obj;
401  //const edm::EventSetup& evSetup;
402 
403  // define standard sets of histograms
404 
405  //
406  l1Obj.clear();
407  l1Obj.push_back(Mu);
408  int nrMonElements = 5;
409 
410  for (int iBxInEvent = 0; iBxInEvent < m_nrBxInEventGmt; ++iBxInEvent) {
411 
413 
414  int bxInEvent = iBxInEvent + (m_nrBxInEventGct + 1) / 2 - m_nrBxInEventGct;
415  int bxInEventHex = (bxInEvent+ 16) % 16;
416 
417  std::stringstream ss;
418  std::string bxInEventHexString;
419  ss << std::uppercase << std::hex << bxInEventHex;
420  ss >> bxInEventHexString;
421 
422  ibooker.setCurrentFolder(m_dirName + "/BxInEvent_" + bxInEventHexString);
423 
424  (m_meAnalysisL1ExtraMuon.at(iBxInEvent))->bookhistograms(evSetup, ibooker, "L1_Mu", l1Obj);
425 
426  }
427 
428  //
429  l1Obj.clear();
430  l1Obj.push_back(IsoEG);
431  nrMonElements = 4;
432 
433  for (int iBxInEvent = 0; iBxInEvent < m_nrBxInEventGct; ++iBxInEvent) {
434 
436 
437  int bxInEvent = iBxInEvent + (m_nrBxInEventGct + 1) / 2 - m_nrBxInEventGct;
438  int bxInEventHex = (bxInEvent+ 16) % 16;
439 
440  std::stringstream ss;
441  std::string bxInEventHexString;
442  ss << std::uppercase << std::hex << bxInEventHex;
443  ss >> bxInEventHexString;
444 
445  ibooker.setCurrentFolder(m_dirName + "/BxInEvent_" + bxInEventHexString);
446 
447  (m_meAnalysisL1ExtraIsoEG.at(iBxInEvent))->bookhistograms(evSetup, ibooker, "L1_IsoEG", l1Obj);
448  }
449 
450  //
451  l1Obj.clear();
452  l1Obj.push_back(NoIsoEG);
453  nrMonElements = 4;
454 
455  for (int iBxInEvent = 0; iBxInEvent < m_nrBxInEventGct; ++iBxInEvent) {
456 
458 
459  int bxInEvent = iBxInEvent + (m_nrBxInEventGct + 1) / 2 - m_nrBxInEventGct;
460  int bxInEventHex = (bxInEvent+ 16) % 16;
461 
462  std::stringstream ss;
463  std::string bxInEventHexString;
464  ss << std::uppercase << std::hex << bxInEventHex;
465  ss >> bxInEventHexString;
466 
467  //if (m_dbe) {
468  ibooker.setCurrentFolder(m_dirName + "/BxInEvent_" + bxInEventHexString);
469  //}
470 
471  (m_meAnalysisL1ExtraNoIsoEG.at(iBxInEvent))->bookhistograms(evSetup, ibooker, "L1_NoIsoEG", l1Obj);
472  }
473 
474  //
475  l1Obj.clear();
476  l1Obj.push_back(CenJet);
477  nrMonElements = 4;
478 
479  for (int iBxInEvent = 0; iBxInEvent < m_nrBxInEventGct; ++iBxInEvent) {
480 
482 
483  int bxInEvent = iBxInEvent + (m_nrBxInEventGct + 1) / 2 - m_nrBxInEventGct;
484  int bxInEventHex = (bxInEvent+ 16) % 16;
485 
486  std::stringstream ss;
487  std::string bxInEventHexString;
488  ss << std::uppercase << std::hex << bxInEventHex;
489  ss >> bxInEventHexString;
490 
491  ibooker.setCurrentFolder(m_dirName + "/BxInEvent_" + bxInEventHexString);
492 
493  (m_meAnalysisL1ExtraCenJet.at(iBxInEvent))->bookhistograms(evSetup, ibooker, "L1_CenJet", l1Obj);
494  }
495 
496  //
497  l1Obj.clear();
498  l1Obj.push_back(ForJet);
499 
500  for (int iBxInEvent = 0; iBxInEvent < m_nrBxInEventGct; ++iBxInEvent) {
501 
503 
504  int bxInEvent = iBxInEvent + (m_nrBxInEventGct + 1) / 2 - m_nrBxInEventGct;
505  int bxInEventHex = (bxInEvent+ 16) % 16;
506 
507  std::stringstream ss;
508  std::string bxInEventHexString;
509  ss << std::uppercase << std::hex << bxInEventHex;
510  ss >> bxInEventHexString;
511 
512  ibooker.setCurrentFolder(m_dirName + "/BxInEvent_" + bxInEventHexString);
513 
514  (m_meAnalysisL1ExtraForJet.at(iBxInEvent))->bookhistograms(evSetup, ibooker, "L1_ForJet", l1Obj);
515  }
516 
517  //
518  l1Obj.clear();
519  l1Obj.push_back(TauJet);
520 
521  for (int iBxInEvent = 0; iBxInEvent < m_nrBxInEventGct; ++iBxInEvent) {
522 
524 
525  int bxInEvent = iBxInEvent + (m_nrBxInEventGct + 1) / 2 - m_nrBxInEventGct;
526  int bxInEventHex = (bxInEvent+ 16) % 16;
527 
528  std::stringstream ss;
529  std::string bxInEventHexString;
530  ss << std::uppercase << std::hex << bxInEventHex;
531  ss >> bxInEventHexString;
532 
533  ibooker.setCurrentFolder(m_dirName + "/BxInEvent_" + bxInEventHexString);
534 
535  (m_meAnalysisL1ExtraTauJet.at(iBxInEvent))->bookhistograms(evSetup, ibooker, "L1_TauJet", l1Obj);
536  }
537 
538  if (m_stage1_layer2_ == true) {
539 
540  l1Obj.clear();
541  l1Obj.push_back(TauJet);
542  nrMonElements = 4;
543 
544  for (int iBxInEvent = 0; iBxInEvent < m_nrBxInEventGct; ++iBxInEvent) {
545 
547 
548  int bxInEvent = iBxInEvent + (m_nrBxInEventGct + 1) / 2 - m_nrBxInEventGct;
549  int bxInEventHex = (bxInEvent+ 16) % 16;
550 
551  std::stringstream ss;
552  std::string bxInEventHexString;
553  ss << std::uppercase << std::hex << bxInEventHex;
554  ss >> bxInEventHexString;
555 
556  ibooker.setCurrentFolder(m_dirName + "/BxInEvent_" + bxInEventHexString);
557 
558  (m_meAnalysisL1ExtraIsoTauJet.at(iBxInEvent))->bookhistograms(evSetup, ibooker, "L1_IsoTauJet", l1Obj);
559  }
560  }
561 
562  //
563  l1Obj.clear();
564  l1Obj.push_back(ETT);
565  nrMonElements = 1;
566 
567  bool bookPhi = false;
568  bool bookEta = false;
569 
570  for (int iBxInEvent = 0; iBxInEvent < m_nrBxInEventGct; ++iBxInEvent) {
571 
573 
574  int bxInEvent = iBxInEvent + (m_nrBxInEventGct + 1) / 2 - m_nrBxInEventGct;
575  int bxInEventHex = (bxInEvent+ 16) % 16;
576 
577  std::stringstream ss;
578  std::string bxInEventHexString;
579  ss << std::uppercase << std::hex << bxInEventHex;
580  ss >> bxInEventHexString;
581 
582  ibooker.setCurrentFolder(m_dirName + "/BxInEvent_" + bxInEventHexString);
583 
584  (m_meAnalysisL1ExtraETT.at(iBxInEvent))->bookhistograms(evSetup, ibooker, "L1_ETT", l1Obj, bookPhi, bookEta);
585  }
586 
587  //
588  l1Obj.clear();
589  l1Obj.push_back(ETM);
590  nrMonElements = 2;
591 
592  bookPhi = true;
593  bookEta = false;
594 
595  for (int iBxInEvent = 0; iBxInEvent < m_nrBxInEventGct; ++iBxInEvent) {
597  int bxInEvent = iBxInEvent + (m_nrBxInEventGct + 1) / 2 - m_nrBxInEventGct;
598  int bxInEventHex = (bxInEvent+ 16) % 16;
599 
600  std::stringstream ss;
601  std::string bxInEventHexString;
602  ss << std::uppercase << std::hex << bxInEventHex;
603  ss >> bxInEventHexString;
604 
605  ibooker.setCurrentFolder(m_dirName + "/BxInEvent_" + bxInEventHexString);
606 
607  (m_meAnalysisL1ExtraETM.at(iBxInEvent))->bookhistograms(evSetup, ibooker, "L1_ETM", l1Obj, bookPhi, bookEta);
608  }
609 
610  //
611  l1Obj.clear();
612  l1Obj.push_back(HTT);
613  nrMonElements = 1;
614 
615  bookPhi = false;
616  bookEta = false;
617 
618  for (int iBxInEvent = 0; iBxInEvent < m_nrBxInEventGct; ++iBxInEvent) {
619 
621  int bxInEvent = iBxInEvent + (m_nrBxInEventGct + 1) / 2 - m_nrBxInEventGct;
622  int bxInEventHex = (bxInEvent+ 16) % 16;
623 
624  std::stringstream ss;
625  std::string bxInEventHexString;
626  ss << std::uppercase << std::hex << bxInEventHex;
627  ss >> bxInEventHexString;
628 
629  ibooker.setCurrentFolder(m_dirName + "/BxInEvent_" + bxInEventHexString);
630 
631  (m_meAnalysisL1ExtraHTT.at(iBxInEvent))->bookhistograms(evSetup, ibooker, "L1_HTT", l1Obj, bookPhi, bookEta);
632  }
633 
634  //
635  l1Obj.clear();
636  l1Obj.push_back(HTM);
637  nrMonElements = 2;
638 
639  bookPhi = true;
640  bookEta = false;
641 
642  for (int iBxInEvent = 0; iBxInEvent < m_nrBxInEventGct; ++iBxInEvent) {
643 
645  int bxInEvent = iBxInEvent + (m_nrBxInEventGct + 1) / 2 - m_nrBxInEventGct;
646  int bxInEventHex = (bxInEvent+ 16) % 16;
647 
648  std::stringstream ss;
649  std::string bxInEventHexString;
650  ss << std::uppercase << std::hex << bxInEventHex;
651  ss >> bxInEventHexString;
652 
653  ibooker.setCurrentFolder(m_dirName + "/BxInEvent_" + bxInEventHexString);
654 
655  if (m_stage1_layer2_ == false){
656  (m_meAnalysisL1ExtraHTM.at(iBxInEvent))->bookhistograms(evSetup, ibooker, "L1_HTM", l1Obj, bookPhi, bookEta);
657  } else {
658  (m_meAnalysisL1ExtraHTM.at(iBxInEvent))->bookhistograms(evSetup, ibooker, "L1_HTMHTT", l1Obj, bookPhi, bookEta);
659  }
660  }
661 
662  //
663  l1Obj.clear();
664  l1Obj.push_back(HfBitCounts);
665  nrMonElements = 1;
666 
667  bookPhi = false;
668  bookEta = false;
669 
670  for (int iBxInEvent = 0; iBxInEvent < m_nrBxInEventGct; ++iBxInEvent) {
671 
674  int bxInEvent = iBxInEvent + (m_nrBxInEventGct + 1) / 2 - m_nrBxInEventGct;
675  int bxInEventHex = (bxInEvent+ 16) % 16;
676 
677  std::stringstream ss;
678  std::string bxInEventHexString;
679  ss << std::uppercase << std::hex << bxInEventHex;
680  ss >> bxInEventHexString;
681 
682  ibooker.setCurrentFolder(m_dirName + "/BxInEvent_" + bxInEventHexString);
683 
684  (m_meAnalysisL1ExtraHfBitCounts.at(iBxInEvent))->bookhistograms(evSetup, ibooker, "L1_HfBitCounts", l1Obj, bookPhi, bookEta);
685  }
686 
687  //
688  l1Obj.clear();
689  l1Obj.push_back(HfRingEtSums);
690  nrMonElements = 1;
691 
692  bookPhi = false;
693  bookEta = false;
694 
695  for (int iBxInEvent = 0; iBxInEvent < m_nrBxInEventGct; ++iBxInEvent) {
696 
699  evSetup, nrMonElements));
700  int bxInEvent = iBxInEvent + (m_nrBxInEventGct + 1) / 2
701  - m_nrBxInEventGct;
702  int bxInEventHex = (bxInEvent+ 16) % 16;
703 
704  std::stringstream ss;
705  std::string bxInEventHexString;
706  ss << std::uppercase << std::hex << bxInEventHex;
707  ss >> bxInEventHexString;
708 
709  ibooker.setCurrentFolder(m_dirName + "/BxInEvent_" + bxInEventHexString);
710 
711  if (m_stage1_layer2_ == false) {
712  (m_meAnalysisL1ExtraHfRingEtSums.at(iBxInEvent))->bookhistograms(evSetup, ibooker, "L1_HfRingEtSums", l1Obj, bookPhi, bookEta);
713  }
714  if (m_stage1_layer2_ == true) {
715  (m_meAnalysisL1ExtraHfRingEtSums.at(iBxInEvent))->bookhistograms(evSetup, ibooker, "L1_IsoTau_replace_Hf", l1Obj, bookPhi, bookEta);
716  }
717  }
718 
719 }
720 
721 
722 //
723 void L1ExtraDQM::analyze(const edm::Event& iEvent, const edm::EventSetup& evSetup) {
724 
725  ++m_nrEvJob;
726  ++m_nrEvRun;
727  //
728  m_retrieveL1Extra.retrieveL1ExtraObjects(iEvent, evSetup);
729  //
730  analyzeL1ExtraMuon(iEvent, evSetup);
731  analyzeL1ExtraIsoEG(iEvent, evSetup);
732  analyzeL1ExtraNoIsoEG(iEvent, evSetup);
733  analyzeL1ExtraCenJet(iEvent, evSetup);
734  analyzeL1ExtraForJet(iEvent, evSetup);
735  analyzeL1ExtraTauJet(iEvent, evSetup);
736  analyzeL1ExtraETT(iEvent, evSetup);
737  analyzeL1ExtraETM(iEvent, evSetup);
738  analyzeL1ExtraHTT(iEvent, evSetup);
739  analyzeL1ExtraHTM(iEvent, evSetup);
740  analyzeL1ExtraHfBitCounts(iEvent, evSetup);
741  analyzeL1ExtraHfRingEtSums(iEvent, evSetup);
742 
743  if (m_stage1_layer2_ == true){
744  analyzeL1ExtraIsoTauJet(iEvent, evSetup);
745  }
746 }
747 
748 
749 void L1ExtraDQM::endRun(const edm::Run& run, const edm::EventSetup& evSetup) {
750 
751  // delete if event setup has changed only FIXME
752 
753  for (std::vector<L1ExtraMonElement<l1extra::L1MuonParticleCollection>*>::iterator
754  iterME = m_meAnalysisL1ExtraMuon.begin(); iterME
755  != m_meAnalysisL1ExtraMuon.end(); ++iterME) {
756 
757  delete *iterME;
758 
759  }
760  m_meAnalysisL1ExtraMuon.clear();
761 
762 
763  for (std::vector<L1ExtraMonElement<l1extra::L1EmParticleCollection>*>::iterator
764  iterME = m_meAnalysisL1ExtraIsoEG.begin(); iterME
765  != m_meAnalysisL1ExtraIsoEG.end(); ++iterME) {
766 
767  delete *iterME;
768 
769  }
770  m_meAnalysisL1ExtraIsoEG.clear();
771 
772 
773  for (std::vector<L1ExtraMonElement<l1extra::L1EmParticleCollection>*>::iterator
774  iterME = m_meAnalysisL1ExtraNoIsoEG.begin(); iterME
775  != m_meAnalysisL1ExtraNoIsoEG.end(); ++iterME) {
776 
777  delete *iterME;
778 
779  }
781 
782 
783  for (std::vector<L1ExtraMonElement<l1extra::L1JetParticleCollection>*>::iterator
784  iterME = m_meAnalysisL1ExtraCenJet.begin(); iterME
785  != m_meAnalysisL1ExtraCenJet.end(); ++iterME) {
786 
787  delete *iterME;
788 
789  }
791 
792  for (std::vector<L1ExtraMonElement<l1extra::L1JetParticleCollection>*>::iterator
793  iterME = m_meAnalysisL1ExtraForJet.begin(); iterME
794  != m_meAnalysisL1ExtraForJet.end(); ++iterME) {
795 
796  delete *iterME;
797 
798  }
800 
801  for (std::vector<L1ExtraMonElement<l1extra::L1JetParticleCollection>*>::iterator
802  iterME = m_meAnalysisL1ExtraTauJet.begin(); iterME
803  != m_meAnalysisL1ExtraTauJet.end(); ++iterME) {
804 
805  delete *iterME;
806 
807  }
809 
810 
811  for (std::vector<L1ExtraMonElement<l1extra::L1EtMissParticleCollection>*>::iterator
812  iterME = m_meAnalysisL1ExtraETT.begin(); iterME
813  != m_meAnalysisL1ExtraETT.end(); ++iterME) {
814 
815  delete *iterME;
816 
817  }
818  m_meAnalysisL1ExtraETT.clear();
819 
820  for (std::vector<L1ExtraMonElement<l1extra::L1EtMissParticleCollection>*>::iterator
821  iterME = m_meAnalysisL1ExtraETM.begin(); iterME
822  != m_meAnalysisL1ExtraETM.end(); ++iterME) {
823 
824  delete *iterME;
825 
826  }
827  m_meAnalysisL1ExtraETM.clear();
828 
829  for (std::vector<L1ExtraMonElement<l1extra::L1EtMissParticleCollection>*>::iterator
830  iterME = m_meAnalysisL1ExtraHTT.begin(); iterME
831  != m_meAnalysisL1ExtraHTT.end(); ++iterME) {
832 
833  delete *iterME;
834 
835  }
836  m_meAnalysisL1ExtraHTT.clear();
837 
838  for (std::vector<L1ExtraMonElement<l1extra::L1EtMissParticleCollection>*>::iterator
839  iterME = m_meAnalysisL1ExtraHTM.begin(); iterME
840  != m_meAnalysisL1ExtraHTM.end(); ++iterME) {
841 
842  delete *iterME;
843 
844  }
845  m_meAnalysisL1ExtraHTM.clear();
846 
847 
848  for (std::vector<L1ExtraMonElement<l1extra::L1HFRingsCollection>*>::iterator
849  iterME = m_meAnalysisL1ExtraHfBitCounts.begin(); iterME
850  != m_meAnalysisL1ExtraHfBitCounts.end(); ++iterME) {
851 
852  delete *iterME;
853 
854  }
856 
857  for (std::vector<L1ExtraMonElement<l1extra::L1HFRingsCollection>*>::iterator
858  iterME = m_meAnalysisL1ExtraHfRingEtSums.begin(); iterME
859  != m_meAnalysisL1ExtraHfRingEtSums.end(); ++iterME) {
860 
861  delete *iterME;
862 
863  }
865 
866  LogDebug("L1ExtraDQM") << "\n\n endRun: " << run.id()
867  << "\n Number of events analyzed in this run: " << m_nrEvRun
868  << "\n Total number of events analyzed in this job: " << m_nrEvJob
869  << "\n" << std::endl;
870 
871 }
872 
873 // constructor L1ExtraMonElement
874 template<class CollectionType>
876  m_indexNrObjects(-1),
877  m_indexPt(-1),
878  m_indexEt(-1),
879  m_indexPhi(-1),
880  m_indexEta(-1),
881  m_indexEtTotal(-1),
882  m_indexCharge(-1),
883  m_indexHfBitCounts(-1),
884  m_indexHfRingEtSums(-1) {
885 
886  m_monElement.reserve(nrElements);
887 
888 }
889 
890 // destructor L1ExtraMonElement
891 template<class CollectionType>
893 
894  //empty
895 
896 }
897 
898 
899 template<class CollectionType>
901  const edm::EventSetup& evSetup, DQMStore::IBooker &ibooker,
902  const std::string& l1ExtraObject,
903  const std::vector<L1GtObject>& l1GtObj, const bool bookPhi,
904  const bool bookEta) {
905 
906  // FIXME
907  L1GtObject gtObj = l1GtObj.at(0);
908 
909  //
910  std::string histName;
911  std::string histTitle;
914 
915  std::string quantity = "";
916 
917  int indexHistogram = -1;
918 
919  if (gtObj == HfBitCounts) {
920 
921  L1GetHistLimits l1GetHistLimits(evSetup);
922  const L1GetHistLimits::L1HistLimits& histLimits = l1GetHistLimits.l1HistLimits(gtObj, quantity);
923 
924  const int histNrBins = histLimits.nrBins;
925  const double histMinValue = histLimits.lowerBinValue;
926  const double histMaxValue = histLimits.upperBinValue;
927 
928  indexHistogram++;
929  m_indexHfBitCounts = indexHistogram;
930 
931  for (int iCount = 0; iCount < l1extra::L1HFRings::kNumRings; ++iCount) {
932 
933  histName = l1ExtraObject + "_Count_" + std::to_string(iCount);
934  histTitle = l1ExtraObject + ": count " + std::to_string(iCount);
935  xAxisTitle = l1ExtraObject;
936  yAxisTitle = "Entries";
937 
938  m_monElement.push_back(ibooker.book1D(histName, histTitle, histNrBins, histMinValue, histMaxValue));
939  m_monElement[m_indexHfBitCounts + iCount]->setAxisTitle(xAxisTitle, 1);
940  m_monElement[m_indexHfBitCounts + iCount]->setAxisTitle(yAxisTitle, 2);
941 
942  }
943 
944  return;
945 
946  }
947 
948  // number of objects per event
949  if ((gtObj == Mu) || (gtObj == IsoEG) || (gtObj == NoIsoEG) || (gtObj == CenJet) || (gtObj == ForJet) || (gtObj == TauJet)) {
950 
951  quantity = "NrObjects";
952 
953  L1GetHistLimits l1GetHistLimits(evSetup);
954  const L1GetHistLimits::L1HistLimits& histLimits = l1GetHistLimits.l1HistLimits(gtObj, quantity);
955 
956  const int histNrBins = histLimits.nrBins;
957  const double histMinValue = histLimits.lowerBinValue;
958  const double histMaxValue = histLimits.upperBinValue;
959 
960  histName = l1ExtraObject + "_NrObjectsPerEvent";
961  histTitle = l1ExtraObject + ": number of objects per event";
962  xAxisTitle = "Nr_" + l1ExtraObject;
963  yAxisTitle = "Entries";
964 
965  m_monElement.push_back(ibooker.book1D(histName, histTitle, histNrBins, histMinValue, histMaxValue));
966  indexHistogram++;
967 
968  m_monElement[indexHistogram]->setAxisTitle(xAxisTitle, 1);
969  m_monElement[indexHistogram]->setAxisTitle(yAxisTitle, 2);
970  m_indexNrObjects = indexHistogram;
971 
972  }
973 
974  // transverse momentum (energy) PT (ET) [GeV]
975 
976 
977  quantity = "ET";
978  std::string quantityLongName = " transverse energy ";
979 
980  if (gtObj == Mu) {
981  quantity = "PT";
982  quantityLongName = " transverse momentum ";
983  }
984 
985  L1GetHistLimits l1GetHistLimits(evSetup);
986  const L1GetHistLimits::L1HistLimits& histLimits = l1GetHistLimits.l1HistLimits(gtObj, quantity);
987 
988  const int histNrBinsET = histLimits.nrBins;
989  const double histMinValueET = histLimits.lowerBinValue;
990  const double histMaxValueET = histLimits.upperBinValue;
991  const std::vector<float>& binThresholdsET = histLimits.binThresholds;
992 
993  float* binThresholdsETf;
994  size_t sizeBinThresholdsET = binThresholdsET.size();
995  binThresholdsETf = new float[sizeBinThresholdsET];
996  copy(binThresholdsET.begin(), binThresholdsET.end(), binThresholdsETf);
997 
998  LogDebug("L1ExtraDQM") << "\n PT/ET histogram for " << l1ExtraObject
999  << "\n histNrBinsET = " << histNrBinsET << "\n histMinValueET = "
1000  << histMinValueET << "\n histMaxValueET = " << histMaxValueET
1001  << "\n Last bin value represents the upper limit of the histogram"
1002  << std::endl;
1003  for (size_t iBin = 0; iBin < sizeBinThresholdsET; ++iBin) {
1004  LogTrace("L1ExtraDQM") << "Bin " << iBin << ": " << quantity << " = "
1005  << binThresholdsETf[iBin] << " GeV" << std::endl;
1006 
1007  }
1008 
1009  histName = l1ExtraObject + "_" + quantity;
1010  histTitle = l1ExtraObject + ":" + quantityLongName + quantity + " [GeV]";
1011  xAxisTitle = l1ExtraObject + "_" + quantity + " [GeV]";
1012  yAxisTitle = "Entries";
1013 
1014  if (gtObj == HfRingEtSums) {
1015 
1016  indexHistogram++;
1017  m_indexHfRingEtSums = indexHistogram;
1018 
1019  for (int iCount = 0; iCount < l1extra::L1HFRings::kNumRings; ++iCount) {
1020 
1021  histName = l1ExtraObject + "_Count_" + std::to_string(iCount);
1022  histTitle = l1ExtraObject + ": count " + std::to_string(iCount);
1023  xAxisTitle = l1ExtraObject;
1024  yAxisTitle = "Entries";
1025 
1026  m_monElement.push_back(ibooker.book1D(histName, histTitle, histNrBinsET, binThresholdsETf));
1027 
1028  m_monElement[m_indexHfRingEtSums + iCount]->setAxisTitle(xAxisTitle, 1);
1029  m_monElement[m_indexHfRingEtSums + iCount]->setAxisTitle(yAxisTitle, 2);
1030 
1031  }
1032 
1033  } else {
1034 
1035  m_monElement.push_back(ibooker.book1D(histName, histTitle, histNrBinsET, binThresholdsETf));
1036  indexHistogram++;
1037 
1038  m_monElement[indexHistogram]->setAxisTitle(xAxisTitle, 1);
1039  m_monElement[indexHistogram]->setAxisTitle(yAxisTitle, 2);
1040  m_indexPt = indexHistogram;
1041  m_indexEt = indexHistogram;
1042  m_indexEtTotal = indexHistogram;
1043  }
1044 
1045 
1046  delete[] binThresholdsETf;
1047 
1048  //
1049 
1050  if (bookPhi) {
1051 
1052  quantity = "phi";
1053 
1054  // get limits and binning from L1Extra
1055  L1GetHistLimits l1GetHistLimits(evSetup);
1056  const L1GetHistLimits::L1HistLimits& histLimits = l1GetHistLimits.l1HistLimits(gtObj, quantity);
1057 
1058  const int histNrBinsPhi = histLimits.nrBins;
1059  const double histMinValuePhi = histLimits.lowerBinValue;
1060  const double histMaxValuePhi = histLimits.upperBinValue;
1061  const std::vector<float>& binThresholdsPhi = histLimits.binThresholds;
1062 
1063  float* binThresholdsPhif;
1064  size_t sizeBinThresholdsPhi = binThresholdsPhi.size();
1065  binThresholdsPhif = new float[sizeBinThresholdsPhi];
1066  copy(binThresholdsPhi.begin(), binThresholdsPhi.end(), binThresholdsPhif);
1067 
1068  LogDebug("L1ExtraDQM") << "\n phi histogram for " << l1ExtraObject
1069  << "\n histNrBinsPhi = " << histNrBinsPhi
1070  << "\n histMinValuePhi = " << histMinValuePhi
1071  << "\n histMaxValuePhi = " << histMaxValuePhi
1072  << "\n Last bin value represents the upper limit of the histogram"
1073  << std::endl;
1074  for (size_t iBin = 0; iBin < sizeBinThresholdsPhi; ++iBin) {
1075  LogTrace("L1ExtraDQM") << "Bin " << iBin << ": phi = " << binThresholdsPhif[iBin] << " deg" << std::endl;
1076 
1077  }
1078 
1079  histName = l1ExtraObject + "_phi";
1080  histTitle = l1ExtraObject + ": phi distribution ";
1081  xAxisTitle = l1ExtraObject + "_phi [deg]";
1082  yAxisTitle = "Entries";
1083 
1084  m_monElement.push_back(ibooker.book1D(histName, histTitle, histNrBinsPhi, histMinValuePhi, histMaxValuePhi));
1085  indexHistogram++;
1086 
1087  m_monElement[indexHistogram]->setAxisTitle(xAxisTitle, 1);
1088  m_monElement[indexHistogram]->setAxisTitle(yAxisTitle, 2);
1089  m_indexPhi = indexHistogram;
1090 
1091  delete[] binThresholdsPhif;
1092  }
1093 
1094  //
1095 
1096 
1097  if (bookEta) {
1098 
1099  quantity = "eta";
1100 
1101  // get limits and binning from L1Extra
1102  L1GetHistLimits l1GetHistLimits(evSetup);
1103  const L1GetHistLimits::L1HistLimits& histLimits = l1GetHistLimits.l1HistLimits(gtObj, quantity);
1104 
1105  const int histNrBinsEta = histLimits.nrBins;
1106  const double histMinValueEta = histLimits.lowerBinValue;
1107  const double histMaxValueEta = histLimits.upperBinValue;
1108  const std::vector<float>& binThresholdsEta = histLimits.binThresholds;
1109 
1110  //
1111  float* binThresholdsEtaf;
1112  size_t sizeBinThresholdsEta = binThresholdsEta.size();
1113  binThresholdsEtaf = new float[sizeBinThresholdsEta];
1114  copy(binThresholdsEta.begin(), binThresholdsEta.end(), binThresholdsEtaf);
1115 
1116  LogDebug("L1ExtraDQM") << "\n eta histogram for " << l1ExtraObject
1117  << "\n histNrBinsEta = " << histNrBinsEta
1118  << "\n histMinValueEta = " << histMinValueEta
1119  << "\n histMaxValueEta = " << histMaxValueEta
1120  << "\n Last bin value represents the upper limit of the histogram"
1121  << std::endl;
1122  for (size_t iBin = 0; iBin < sizeBinThresholdsEta; ++iBin) {
1123  LogTrace("L1ExtraDQM") << "Bin " << iBin << ": eta = " << binThresholdsEtaf[iBin] << std::endl;
1124 
1125  }
1126 
1127  histName = l1ExtraObject + "_eta";
1128  histTitle = l1ExtraObject + ": eta distribution ";
1129  xAxisTitle = l1ExtraObject + "_eta";
1130  yAxisTitle = "Entries";
1131 
1132  m_monElement.push_back(ibooker.book1D(histName, histTitle, histNrBinsEta, binThresholdsEtaf));
1133  indexHistogram++;
1134 
1135  m_monElement[indexHistogram]->setAxisTitle(xAxisTitle, 1);
1136  m_monElement[indexHistogram]->setAxisTitle(yAxisTitle, 2);
1137  m_indexEta = indexHistogram;
1138 
1139  delete[] binThresholdsEtaf;
1140 
1141  }
1142 
1143 }
1144 
1145 template<class CollectionType>
1147  const CollectionType* collType, const bool validColl,
1148  const bool isL1Coll, const int bxInEvent) {
1149 
1150  if (validColl && isL1Coll) {
1151  size_t collSize = 0;
1152  for (CIterColl iterColl = collType->begin(); iterColl
1153  != collType->end(); ++iterColl) {
1154 
1155  if (iterColl->bx() == bxInEvent) {
1156  collSize++;
1157  }
1158  }
1159  m_monElement[m_indexNrObjects]->Fill(collSize);
1160  } else {
1161  size_t collSize = collType->size();
1162  m_monElement[m_indexNrObjects]->Fill(collSize);
1163  }
1164 }
1165 
1166 template<class CollectionType>
1168  const CollectionType* collType, const bool validColl,
1169  const bool bookPhi, const bool bookEta, const bool isL1Coll, const int bxInEvent) {
1170 
1171  if (validColl) {
1172  for (CIterColl iterColl = collType->begin(); iterColl
1173  != collType->end(); ++iterColl) {
1174 
1175  if (isL1Coll && (iterColl->bx() != bxInEvent)) {
1176  continue;
1177  }
1178 
1179  m_monElement[m_indexPt]->Fill(iterColl->pt());
1180 
1181  if (bookPhi) {
1182  // add a very small quantity to get off the bin edge
1183  m_monElement[m_indexPhi]->Fill(rad2deg(iterColl->phi()) + 1.e-6);
1184  }
1185 
1186  if (bookEta) {
1187  m_monElement[m_indexEta]->Fill(iterColl->eta());
1188  }
1189 
1190  }
1191  }
1192 }
1193 
1194 template<class CollectionType>
1196  const CollectionType* collType, const bool validColl,
1197  const bool bookPhi, const bool bookEta, const bool isL1Coll, const int bxInEvent) {
1198 
1199  if (validColl) {
1200  for (CIterColl iterColl = collType->begin(); iterColl
1201  != collType->end(); ++iterColl) {
1202 
1203  if (isL1Coll && (iterColl->bx() != bxInEvent)) {
1204  continue;
1205  }
1206 
1207  m_monElement[m_indexEt]->Fill(iterColl->et());
1208 
1209  if (bookPhi) {
1210  // add a very small quantity to get off the bin edge
1211  m_monElement[m_indexPhi]->Fill(rad2deg(iterColl->phi()) + 1.e-6);
1212  }
1213 
1214  if (bookEta) {
1215  m_monElement[m_indexEta]->Fill(iterColl->eta());
1216  }
1217 
1218  }
1219  }
1220 }
1221 
1222 template<class CollectionType>
1224  const CollectionType* collType, const bool validColl, const bool isL1Coll, const int bxInEvent) {
1225 
1226  if (validColl) {
1227  for (CIterColl iterColl = collType->begin(); iterColl
1228  != collType->end(); ++iterColl) {
1229 
1230  if (isL1Coll && (iterColl->bx() != bxInEvent)) {
1231  continue;
1232  }
1233 
1234  m_monElement[m_indexEtTotal]->Fill(iterColl->etTotal());
1235  }
1236  }
1237 
1238 }
1239 
1240 template<class CollectionType>
1242  const CollectionType* collType, const bool validColl, const bool isL1Coll, const int bxInEvent) {
1243 
1244  if (validColl) {
1245  for (CIterColl iterColl = collType->begin(); iterColl
1246  != collType->end(); ++iterColl) {
1247 
1248  if (isL1Coll && (iterColl->bx() != bxInEvent)) {
1249  continue;
1250  }
1251 
1252  m_monElement[m_indexCharge]->Fill(iterColl->charge());
1253  }
1254  }
1255 
1256 }
1257 
1258 template<class CollectionType>
1260  const CollectionType* collType, const bool validColl,
1261  const int countIndex, const bool isL1Coll, const int bxInEvent) {
1262 
1263  if (validColl) {
1264  for (CIterColl iterColl = collType->begin(); iterColl
1265  != collType->end(); ++iterColl) {
1266 
1267  if (isL1Coll && (iterColl->bx() != bxInEvent)) {
1268  continue;
1269  }
1270 
1271  m_monElement[m_indexHfBitCounts + countIndex]->Fill(
1272  iterColl->hfBitCount(
1273  (l1extra::L1HFRings::HFRingLabels) countIndex));
1274  }
1275  }
1276 
1277 }
1278 
1279 template<class CollectionType>
1281  const CollectionType* collType, const bool validColl,
1282  const int countIndex, const bool isL1Coll, const int bxInEvent) {
1283 
1284  if (validColl) {
1285  for (CIterColl iterColl = collType->begin(); iterColl
1286  != collType->end(); ++iterColl) {
1287 
1288  if (isL1Coll && (iterColl->bx() != bxInEvent)) {
1289  continue;
1290  }
1291 
1292  m_monElement[m_indexHfRingEtSums + countIndex]->Fill(
1293  iterColl->hfEtSum(
1294  (l1extra::L1HFRings::HFRingLabels) countIndex));
1295  }
1296  }
1297 
1298 }
#define LogDebug(id)
int m_nrBxInEventGmt
number of bunch crosses in event to be monitored
Definition: L1ExtraDQM.h:187
std::vector< L1ExtraMonElement< l1extra::L1EtMissParticleCollection > * > m_meAnalysisL1ExtraHTM
Definition: L1ExtraDQM.h:232
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:183
edm::EDGetTokenT< l1extra::L1JetParticleCollection > m_tagL1ExtraIsoTauJetTok
Definition: L1ExtraDQM.h:202
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:1146
Definition: L1GtObject.h:39
def copy(args, dbName)
const bool validL1ExtraHTM() const
int m_nrEvJob
Definition: L1ExtraDQM.h:196
std::vector< L1ExtraMonElement< l1extra::L1EtMissParticleCollection > * > m_meAnalysisL1ExtraETM
Definition: L1ExtraDQM.h:226
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:519
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:1280
Definition: L1GtObject.h:36
std::vector< L1ExtraMonElement< l1extra::L1JetParticleCollection > * > m_meAnalysisL1ExtraTauJet
Definition: L1ExtraDQM.h:218
std::vector< L1ExtraMonElement< l1extra::L1JetParticleCollection > * > m_meAnalysisL1ExtraForJet
Definition: L1ExtraDQM.h:216
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:206
std::vector< L1ExtraMonElement< l1extra::L1EtMissParticleCollection > * > m_meAnalysisL1ExtraHTT
Definition: L1ExtraDQM.h:229
const bool validL1ExtraETT() const
std::vector< L1ExtraMonElement< l1extra::L1EmParticleCollection > * > m_meAnalysisL1ExtraIsoEG
Definition: L1ExtraDQM.h:209
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:238
bool m_stage1_layer2_
Definition: L1ExtraDQM.h:184
std::vector< L1ExtraMonElement< l1extra::L1EmParticleCollection > * > m_meAnalysisL1ExtraNoIsoEG
Definition: L1ExtraDQM.h:211
void analyze(const edm::Event &, const edm::EventSetup &) override
Definition: L1ExtraDQM.cc:723
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:900
void beginLuminosityBlock(const edm::LuminosityBlock &, const edm::EventSetup &) override
Definition: L1ExtraDQM.cc:392
const l1extra::L1EmParticleCollection * l1ExtraIsoEG() const
void bookHistograms(DQMStore::IBooker &ibooker, edm::Run const &, edm::EventSetup const &) override
Definition: L1ExtraDQM.cc:396
const bool validL1ExtraHfBitCounts() const
L1ExtraMonElement(const edm::EventSetup &, const int)
Definition: L1ExtraDQM.cc:875
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:220
#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:1167
const l1extra::L1HFRingsCollection * l1ExtraHfRingEtSums() const
std::vector< L1ExtraMonElement< l1extra::L1JetParticleCollection > * > m_meAnalysisL1ExtraCenJet
Definition: L1ExtraDQM.h:214
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:1259
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:279
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:188
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:180
std::vector< L1ExtraMonElement< l1extra::L1EtMissParticleCollection > * > m_meAnalysisL1ExtraETT
Definition: L1ExtraDQM.h:223
std::vector< L1ExtraMonElement< l1extra::L1HFRingsCollection > * > m_meAnalysisL1ExtraHfBitCounts
Definition: L1ExtraDQM.h:235
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:1241
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:1195
const l1extra::L1EtMissParticleCollection * l1ExtraETT() const
const l1extra::L1EtMissParticleCollection * l1ExtraHTT() const
void endRun(const edm::Run &run, const edm::EventSetup &evSetup) override
Definition: L1ExtraDQM.cc:749
const bool validL1ExtraETM() const
int m_nrEvRun
Definition: L1ExtraDQM.h:197
std::vector< MonitorElement * > m_monElement
Definition: L1ExtraDQM.h:140
void retrieveL1ExtraObjects(const edm::Event &, const edm::EventSetup &)
Definition: Run.h:43
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:1223