CMS 3D CMS Logo

L1TEMTFEventInfoClient.cc
Go to the documentation of this file.
1 
13 // this class header
15 
16 // constructor
18  m_verbose(parSet.getUntrackedParameter<bool>("verbose", false)),
19  m_monitorDir(parSet.getUntrackedParameter<std::string>("monitorDir", "")),
20  m_histDir(parSet.getUntrackedParameter<std::string>("histDir", "")),
21  m_runInEventLoop(parSet.getUntrackedParameter<bool>("runInEventLoop", false)),
22  m_runInEndLumi(parSet.getUntrackedParameter<bool>("runInEndLumi", false)),
23  m_runInEndRun(parSet.getUntrackedParameter<bool>("runInEndRun", false)),
24  m_runInEndJob(parSet.getUntrackedParameter<bool>("runInEndJob", false)),
25  m_trackObjects(parSet.getParameter<std::vector<edm::ParameterSet> >("TrackObjects")),
26  m_hitObjects(parSet.getParameter<std::vector<edm::ParameterSet> >("HitObjects")),
27  m_disableTrackObjects(parSet.getParameter<std::vector<std::string> >("DisableTrackObjects")),
28  m_disableHitObjects(parSet.getParameter<std::vector<std::string> >("DisableHitObjects")),
29  m_noisyStrip(parSet.getParameter<std::vector<edm::ParameterSet> >("NoisyStrip")),
30  m_deadStrip(parSet.getParameter<std::vector<edm::ParameterSet> >("DeadStrip")),
31  m_disableNoisyStrip(parSet.getParameter<std::vector<std::string> >("DisableNoisyStrip")),
32  m_disableDeadStrip(parSet.getParameter<std::vector<std::string> >("DisableDeadStrip")),
33  m_nrTrackObjects(0),
34  m_nrHitObjects(0),
35  m_nrNoisyStrip(0),
36  m_nrDeadStrip(0),
37  m_totalNrQtSummaryEnabled(0) {
38 
39  initialize();
40 }
41 
42 // destructor
44  //empty
45 }
46 
48 
49  if (m_verbose) std::cout << "\nMonitor directory = " << m_monitorDir << std::endl;
50 
51  // L1 systems
52 
54 
56  // m_trackLabelExt.reserve(m_nrTrackObjects); // Not needed? - AWB 05.12.16
58 
59  // on average five quality test per system - just a best guess
60  m_trackQualityTestName.reserve(5*m_nrTrackObjects); // Not needed? - AWB 05.12.16
61  m_trackQualityTestHist.reserve(5*m_nrTrackObjects); // Not needed? - AWB 05.12.16
62  m_trackQtSummaryEnabled.reserve(5*m_nrTrackObjects); // Not needed? - AWB 05.12.16
63 
64  int indexSys = 0;
65 
66  int totalNrQualityTests = 0;
67 
68  for (const auto & itTrack : m_trackObjects) {
69 
70  m_trackLabel.push_back(itTrack.getParameter<std::string>(
71  "SystemLabel"));
72 
73  // m_trackLabelExt.push_back(itTrack.getParameter<std::string>( // Not needed? - AWB 05.12.16
74  // "HwValLabel"));
75 
76  m_trackDisable.push_back(itTrack.getParameter<unsigned int>(
77  "SystemDisable"));
78  // check the additional disable flag from m_disableTrackObjects
79  for (const auto & itSys : m_disableTrackObjects) {
80 
81  if (itSys == m_trackLabel[indexSys]) {
82  m_trackDisable[indexSys] = 1;
83 
84  }
85  }
86 
87  std::vector < edm::ParameterSet > qTests = itTrack.getParameter<
88  std::vector<edm::ParameterSet> > ("QualityTests");
89  size_t qtPerSystem = qTests.size();
90 
91  std::vector < std::string > qtNames;
92  qtNames.reserve(qtPerSystem);
93 
94  std::vector < std::string > qtFullPathHists;
95  qtFullPathHists.reserve(qtPerSystem);
96 
97  std::vector<unsigned int> qtSumEnabled;
98  qtSumEnabled.reserve(qtPerSystem);
99 
100  if (m_verbose) std::cout << "\nLooping over track quality tests" << std::endl;
101  for (const auto & itQT : qTests) {
102 
103  totalNrQualityTests++;
104 
105  qtNames.push_back(
106  itQT.getParameter<std::string> ("QualityTestName"));
107 
108  // qtFullPathHists.push_back( m_histDir + "/" + itQT.getParameter<std::string> ("QualityTestHist"));
109  qtFullPathHists.push_back( itQT.getParameter<std::string> ("QualityTestHist"));
110  if (m_verbose) std::cout << qtFullPathHists.back() << std::endl;
111 
112  unsigned int qtEnabled = itQT.getParameter<unsigned int> (
113  "QualityTestSummaryEnabled");
114 
115  qtSumEnabled.push_back(qtEnabled);
116 
117  if (qtEnabled) {
119  }
120  }
121 
122  m_trackQualityTestName.push_back(qtNames);
123  m_trackQualityTestHist.push_back(qtFullPathHists);
124  m_trackQtSummaryEnabled.push_back(qtSumEnabled);
125 
126  indexSys++;
127 
128  }
129 
130  // L1 objects
131 
132  //
133  m_nrHitObjects = m_hitObjects.size();
134 
135  m_hitLabel.reserve(m_nrHitObjects);
136  m_hitDisable.reserve(m_nrHitObjects);
137 
138  // on average five quality test per object - just a best guess
142 
143  int indexObj = 0;
144 
145  for (const auto & itObject : m_hitObjects) {
146 
147  m_hitLabel.push_back(itObject.getParameter<std::string>(
148  "HitLabel"));
149 
150  m_hitDisable.push_back(itObject.getParameter<unsigned int>(
151  "HitDisable"));
152  // check the additional disable flag from m_disableHitObjects
153  for (const auto & itObj : m_disableHitObjects) {
154 
155  if (itObj == m_hitLabel[indexObj]) {
156  m_hitDisable[indexObj] = 1;
157 
158  }
159  }
160 
161  std::vector < edm::ParameterSet > qTests = itObject.getParameter<
162  std::vector<edm::ParameterSet> > ("QualityTests");
163  size_t qtPerObject = qTests.size();
164 
165  std::vector < std::string > qtNames;
166  qtNames.reserve(qtPerObject);
167 
168  std::vector < std::string > qtFullPathHists;
169  qtFullPathHists.reserve(qtPerObject);
170 
171  std::vector<unsigned int> qtSumEnabled;
172  qtSumEnabled.reserve(qtPerObject);
173 
174  if (m_verbose) std::cout << "\nLooping over hit quality tests" << std::endl;
175  for (const auto & itQT : qTests) {
176 
177  totalNrQualityTests++;
178 
179  qtNames.push_back(
180  itQT.getParameter<std::string> ("QualityTestName"));
181 
182  // qtFullPathHists.push_back( m_histDir + "/" + itQT.getParameter<std::string> ("QualityTestHist") );
183  qtFullPathHists.push_back( itQT.getParameter<std::string> ("QualityTestHist") );
184  if (m_verbose) std::cout << qtFullPathHists.back() << std::endl;
185 
186  unsigned int qtEnabled = itQT.getParameter<unsigned int> (
187  "QualityTestSummaryEnabled");
188 
189  qtSumEnabled.push_back(qtEnabled);
190 
191  if (qtEnabled) {
193  }
194  }
195 
196  m_hitQualityTestName.push_back(qtNames);
197  m_hitQualityTestHist.push_back(qtFullPathHists);
198  m_hitQtSummaryEnabled.push_back(qtSumEnabled);
199 
200  indexObj++;
201 
202  }
203 
204 
205  // L1 Strip Noisy=========================================================================================
206 
207  m_nrNoisyStrip = m_noisyStrip.size();
208 
209  m_noisyLabel.reserve(m_nrNoisyStrip);
211 
212  // on average 20 quality tests per system
213  m_noisyQualityTestName.reserve(20*m_nrNoisyStrip); // Not needed? - AWB 05.12.16
214  m_noisyQualityTestHist.reserve(20*m_nrNoisyStrip); // Not needed? - AWB 05.12.16
215  m_noisyQtSummaryEnabled.reserve(20*m_nrNoisyStrip); // Not needed? - AWB 05.12.16
216 
217  int indexNois = 0;
218 
219  for (const auto & itNoisy : m_noisyStrip) {
220 
221  m_noisyLabel.push_back(itNoisy.getParameter<std::string>(
222  "NoisyLabel"));
223 
224  m_noisyDisable.push_back(itNoisy.getParameter<unsigned int>(
225  "NoisyDisable"));
226  // check the additional disable flag from m_disableNoisyObjects
227  for (const auto & itNois : m_disableNoisyStrip) {
228 
229  if (itNois == m_noisyLabel[indexNois]) {
230  m_noisyDisable[indexNois] = 1;
231  }
232  }
233 
234  std::vector < edm::ParameterSet > qTests = itNoisy.getParameter<
235  std::vector<edm::ParameterSet> > ("QualityTests");
236  size_t qtPerNoisy = qTests.size();
237 
238  std::vector < std::string > qtNames;
239  qtNames.reserve(qtPerNoisy);
240 
241  std::vector < std::string > qtFullPathHists;
242  qtFullPathHists.reserve(qtPerNoisy);
243 
244  std::vector<unsigned int> qtSumEnabled;
245  qtSumEnabled.reserve(qtPerNoisy);
246 
247  if (m_verbose) std::cout << "\nLooping over noisy quality tests" << std::endl;
248  for (const auto & itQT : qTests) {
249 
250  totalNrQualityTests++;
251 
252  qtNames.push_back(
253  itQT.getParameter<std::string> ("QualityTestName"));
254 
255  qtFullPathHists.push_back( itQT.getParameter<std::string> ("QualityTestHist"));
256  if (m_verbose) std::cout << qtFullPathHists.back() << std::endl;
257 
258  unsigned int qtEnabled = itQT.getParameter<unsigned int> (
259  "QualityTestSummaryEnabled");
260 
261  qtSumEnabled.push_back(qtEnabled);
262 
263  if (qtEnabled) {
265  }
266  }
267 
268  m_noisyQualityTestName.push_back(qtNames);
269  m_noisyQualityTestHist.push_back(qtFullPathHists);
270  m_noisyQtSummaryEnabled.push_back(qtSumEnabled);
271 
272  indexNois++;
273  }
274 
275  // L1 Strip Dead=========================================================================================
276 
277  m_nrDeadStrip = m_deadStrip.size();
278 
279  m_deadLabel.reserve(m_nrDeadStrip);
280  m_deadDisable.reserve(m_nrDeadStrip);
281 
282  // on average 20 quality tests per system
283  m_deadQualityTestName.reserve(20*m_nrDeadStrip); // Not needed? - AWB 05.12.16
284  m_deadQualityTestHist.reserve(20*m_nrDeadStrip); // Not needed? - AWB 05.12.16
285  m_deadQtSummaryEnabled.reserve(20*m_nrDeadStrip); // Not needed? - AWB 05.12.16
286 
287  int indexDed = 0;
288 
289  for (const auto & itDead : m_deadStrip) {
290 
291  m_deadLabel.push_back(itDead.getParameter<std::string>(
292  "DeadLabel"));
293 
294  m_deadDisable.push_back(itDead.getParameter<unsigned int>(
295  "DeadDisable"));
296  // check the additional disable flag from m_disableDeadObjects
297  for (const auto & itDed : m_disableDeadStrip) {
298 
299  if (itDed == m_deadLabel[indexDed]) {
300  m_deadDisable[indexDed] = 1;
301  }
302  }
303 
304  std::vector < edm::ParameterSet > qTests = itDead.getParameter<
305  std::vector<edm::ParameterSet> > ("QualityTests");
306  size_t qtPerDead = qTests.size();
307 
308  std::vector < std::string > qtNames;
309  qtNames.reserve(qtPerDead);
310 
311  std::vector < std::string > qtFullPathHists;
312  qtFullPathHists.reserve(qtPerDead);
313 
314  std::vector<unsigned int> qtSumEnabled;
315  qtSumEnabled.reserve(qtPerDead);
316 
317  if (m_verbose) std::cout << "\nLooping over dead quality tests" << std::endl;
318  for (const auto & itQT : qTests) {
319 
320  totalNrQualityTests++;
321 
322  qtNames.push_back(
323  itQT.getParameter<std::string> ("QualityTestName"));
324 
325  qtFullPathHists.push_back( itQT.getParameter<std::string> ("QualityTestHist"));
326  if (m_verbose) std::cout << qtFullPathHists.back() << std::endl;
327 
328  unsigned int qtEnabled = itQT.getParameter<unsigned int> (
329  "QualityTestSummaryEnabled");
330 
331  qtSumEnabled.push_back(qtEnabled);
332 
333  if (qtEnabled) {
335  }
336  }
337 
338  m_deadQualityTestName.push_back(qtNames);
339  m_deadQualityTestHist.push_back(qtFullPathHists);
340  m_deadQtSummaryEnabled.push_back(qtSumEnabled);
341 
342  indexDed++;
343  }
344 
346  m_meReportSummaryContent.reserve(totalNrQualityTests);
347 
348 }
349 
351 
352  if (m_verbose) std::cout << "\nInside void L1TEMTFEventInfoClient::dqmEndLuminosityBlock" << std::endl;
353  if (m_runInEndLumi) {
354 
355  book(ibooker, igetter);
356  readQtResults(ibooker, igetter);
357 
358  if (m_verbose) {
359  std::cout << "\n L1TEMTFEventInfoClient::endLuminosityBlock\n" << std::endl;
360  dumpContentMonitorElements(ibooker, igetter);
361  }
362 
363  }
364 }
365 
366 
368 
369  if (m_verbose) std::cout << "\nInside void L1TEMTFEventInfoClient::dqmEndJob" << std::endl;
370  book(ibooker, igetter);
371 
372  readQtResults(ibooker, igetter);
373 
374  if (m_verbose) {
375  std::cout << "\n L1TEMTFEventInfoClient::endRun\n" << std::endl;
376  dumpContentMonitorElements(ibooker, igetter);
377  }
378 }
379 
381 
382  if (m_verbose) std::cout << "\nSummary report " << std::endl;
383 
384  // summary content
385 
387 
388  if (m_verbose) std::cout << "\nSummary content per system and object as filled in histogram\n "
389  << m_meReportSummaryMap->getName() << std::endl;
390 
391  if (!me) {
392 
393  if (m_verbose) std::cout << "\nNo histogram " << m_meReportSummaryMap->getName()
394  << "\nNo summary content per system and object as filled in histogram.\n " << std::endl;
395  return;
396  }
397 
398  TH2F* hist = me->getTH2F();
399 
400  const int nBinsX = hist->GetNbinsX();
401  const int nBinsY = hist->GetNbinsY();
402  if (m_verbose) std::cout << nBinsX << " " << nBinsY;
403 
404  std::vector<std::vector<int> > meReportSummaryMap(nBinsX, std::vector<int>(
405  nBinsY));
406 
407 // for (int iBinX = 0; iBinX < nBinsX; iBinX++) {
408 // for (int iBinY = 0; iBinY < nBinsY; iBinY++) {
409 // meReportSummaryMap[iBinX][iBinY]
410 // = static_cast<int>(me->GetBinContent(iBinX + 1, iBinY + 1));
411 // }
412 // }
413 
414  if (m_verbose) std::cout << "\nL1 systems: " << m_nrTrackObjects << " systems included\n"
415  << "\n Summary content size: " << (m_summaryContent.size()) << std::endl;
416 
417  for (unsigned int iTrackObj = 0; iTrackObj < m_nrTrackObjects; ++iTrackObj) {
418 
419  if (m_verbose) std::cout << std::setw(10) << m_trackLabel[iTrackObj] << std::setw(10)
420  // << m_trackLabelExt[iTrackObj] << " \t" << m_trackDisable[iTrackObj]
421  << m_trackDisable[iTrackObj]
422  << " \t" << std::setw(25) << " m_summaryContent["
423  << std::setw(2) << iTrackObj << "] = " << meReportSummaryMap[0][iTrackObj] << std::endl;
424  }
425 
426  if (m_verbose) std::cout << "\n L1 trigger objects: " << m_nrHitObjects
427  << " objects included\n" << std::endl;
428 
429  for (unsigned int iMon = m_nrTrackObjects; iMon < m_nrTrackObjects
430  + m_nrHitObjects; ++iMon) {
431 
432  if (m_verbose) std::cout << std::setw(20) << m_hitLabel[iMon - m_nrTrackObjects]
433  << " \t" << m_hitDisable[iMon - m_nrTrackObjects] << " \t"
434  << std::setw(25) << " m_summaryContent[" << std::setw(2)
435  << iMon << "] = \t" << m_summaryContent[iMon] << std::endl;
436  }
437 
438  if (m_verbose) std::cout << std::endl;
439 
440  // quality tests
441 
442  if (m_verbose) std::cout << "\nQuality test results as filled in " << "\n "
443  << m_monitorDir << "/EventInfo/reportSummaryContents\n"
444  << "\n Total number of quality tests: "
445  << (m_meReportSummaryContent.size()) << "\n" << std::endl;
446 
447  for (const auto itME : m_meReportSummaryContent) {
448  if (m_verbose) std::cout << std::setw(50) << itME->getName() << " \t"
449  << std::setw(25) << itME->getFloatValue() << std::endl;
450  }
451 
452  if (m_verbose) std::cout << std::endl;
453 
454 }
455 
456 
457 
459 
460  if (m_verbose) std::cout << "\nInside void L1TEMTFEventInfoClient::book" << std::endl;
461  std::string dirEventInfo = m_monitorDir + "/EventInfo";
462  if (m_verbose) std::cout << dirEventInfo << std::endl;
463 
464  ibooker.setCurrentFolder(dirEventInfo);
465  if (m_verbose) std::cout << "Ran ibooker.setCurrentFolder(dirEventInfo;" << std::endl;
466 
467  // remove m_meReportSummary if it exists
468  if ((m_meReportSummary = igetter.get(dirEventInfo + "/reportSummary"))) {
469  if (m_verbose) std::cout << "Removing m_meReportSummary" << std::endl;
471  if (m_verbose) std::cout << "Ran igetter.removeElement(m_meReportSummary->getName());" << std::endl;
472  }
473 
474  // ...and book it again
475  m_meReportSummary = ibooker.bookFloat("reportSummary");
476  if (m_verbose) std::cout << "Ran m_meReportSummary = ibooker.bookFloat" << std::endl;
477 
478  // initialize reportSummary to 1
479 
480  if (m_meReportSummary) {
481  if (m_verbose) std::cout << "Initializing reportSummary to 1" << std::endl;
483  if (m_verbose) std::cout << "Ran m_meReportSummary->Fill(1);" << std::endl;
484  }
485 
486  // define float histograms for reportSummaryContents (one histogram per quality test),
487  // initialize them to zero
488  // initialize also m_summaryContent to dqm::qstatus::DISABLED
489 
490  ibooker.setCurrentFolder(dirEventInfo + "/reportSummaryContents");
491  if (m_verbose) std::cout << "Ran ibooker.setCurrentFolder(dirEventInfo" << std::endl;
492  // general counters:
493  // iAllQTest: all quality tests for all systems and objects
494  // iAllMon: all monitored systems and objects
495  int iAllQTest = 0;
496  int iAllMon = 0;
497 
498  if (m_verbose) std::cout << "m_nrTrackObjects = " << m_nrTrackObjects << std::endl;
499  for (unsigned int iMon = 0; iMon < m_nrTrackObjects; ++iMon) {
500  if (m_verbose) std::cout << " * iMon = " << iMon << std::endl;
501 
503  if (m_verbose) std::cout << "Ran m_summaryContent.push_back(dqm::qstatus::DISABLED);" << std::endl;
504 
505  const std::vector<std::string>& trackObjQtName = m_trackQualityTestName[iMon];
506  if (m_verbose) std::cout << "Ran const std::vector<std::string>& trackObjQtName = m_trackQualityTestName[iMon];" << std::endl;
507 
508  for (const auto & itQtName : trackObjQtName) {
509 
510  if (m_verbose) std::cout << " - m_monitorDir = " << m_monitorDir << ", m_trackLabel[iMon] = " << m_trackLabel[iMon]
511  << ", (itQtName) = " << (itQtName) << std::endl;
512 
513  // Avoid error in ibooker.bookFloat(hStr))
514  std::string m_mon_mod = m_monitorDir;
515  std::replace( m_mon_mod.begin(), m_mon_mod.end(), '/', '_' );
516 
517  const std::string hStr = m_mon_mod + "_L1Sys_" +m_trackLabel[iMon] + "_" + (itQtName);
518  if (m_verbose) std::cout << " - " << hStr << std::endl;
519 
520  m_meReportSummaryContent.push_back(ibooker.bookFloat(hStr));
521  if (m_verbose) std::cout << " - Ran m_meReportSummaryContent.push_back(ibooker.bookFloat(hStr));" << std::endl;
522  m_meReportSummaryContent[iAllQTest]->Fill(0.);
523  if (m_verbose) std::cout << " - Ran m_meReportSummaryContent[iAllQTest]->Fill(0.);" << std::endl;
524 
525  iAllQTest++;
526  }
527 
528  iAllMon++;
529  }
530 
531 
532  for (unsigned int iMon = 0; iMon < m_nrHitObjects; ++iMon) {
533  if (m_verbose) std::cout << " * iMon = " << iMon << std::endl;
534 
536 
537  const std::vector<std::string>& objQtName =
538  m_hitQualityTestName[iMon];
539 
540  for (const auto & itQtName : objQtName) {
541 
542  // Avoid error in ibooker.bookFloat(hStr))
543  std::string m_mon_mod = m_monitorDir;
544  std::replace( m_mon_mod.begin(), m_mon_mod.end(), '/', '_' );
545 
546  const std::string hStr = m_mon_mod + "_L1Obj_" + m_hitLabel[iMon] + "_" + (itQtName);
547  if (m_verbose) std::cout << " - " << hStr << std::endl;
548 
549  m_meReportSummaryContent.push_back(ibooker.bookFloat(hStr));
550  if (m_verbose) std::cout << " - Ran m_meReportSummaryContent.push_back(ibooker.bookFloat(hStr));" << std::endl;
551  m_meReportSummaryContent[iAllQTest]->Fill(0.);
552  if (m_verbose) std::cout << " - Ran m_meReportSummaryContent[iAllQTest]->Fill(0.);" << std::endl;
553 
554  iAllQTest++;
555  }
556 
557  iAllMon++;
558 
559  }
560 
561  // for Noisy Strips ====================================================================
562  for (unsigned int iMon = 0; iMon < m_nrNoisyStrip; ++iMon) {
563 
565 
566  const std::vector<std::string>& objQtName =
568 
569  for (const auto & itQtName : objQtName) {
570 
571  // Avoid error in ibooker.bookFloat(hStr))
572  std::string m_mon_mod = m_monitorDir;
573  std::replace( m_mon_mod.begin(), m_mon_mod.end(), '/', '_' );
574 
575  const std::string hStr = m_mon_mod + "_L1Obj_" + m_noisyLabel[iMon] + "_" + (itQtName);
576  if (m_verbose) std::cout << " - " << hStr << std::endl;
577 
578  m_meReportSummaryContent.push_back(ibooker.bookFloat(hStr));
579  m_meReportSummaryContent[iAllQTest]->Fill(0.);
580 
581  iAllQTest++;
582  }
583  iAllMon++;
584  }
585  // for Dead Strips ====================================================================
586  for (unsigned int iMon = 0; iMon < m_nrDeadStrip; ++iMon) {
587 
589 
590  const std::vector<std::string>& objQtName =
591  m_deadQualityTestName[iMon];
592 
593  for (const auto & itQtName : objQtName) {
594 
595  // Avoid error in ibooker.bookFloat(hStr))
596  std::string m_mon_mod = m_monitorDir;
597  std::replace( m_mon_mod.begin(), m_mon_mod.end(), '/', '_' );
598 
599  const std::string hStr = m_mon_mod + "_L1Obj_" + m_deadLabel[iMon] + "_" + (itQtName);
600  if (m_verbose) std::cout << " - " << hStr << std::endl;
601 
602  m_meReportSummaryContent.push_back(ibooker.bookFloat(hStr));
603  m_meReportSummaryContent[iAllQTest]->Fill(0.);
604 
605  iAllQTest++;
606  }
607  iAllMon++;
608  }
609 
610  if (m_verbose) std::cout << "Setting current folder to " << dirEventInfo << std::endl;
611  ibooker.setCurrentFolder(dirEventInfo);
612  if (m_verbose) std::cout << "Ran ibooker.setCurrentFolder(dirEventInfo);" << std::endl;
613 
614  // Should this be a "==" ? - AWB 03.12.16
615  if ((m_meReportSummaryMap = igetter.get(dirEventInfo + "/reportSummaryMap"))) {
617  }
618 
619  // define a histogram with two bins on X and maximum of m_nrTrackObjects, m_nrHitObjects on Y
620  int nBinsY = std::max(m_nrTrackObjects, m_nrHitObjects);
621  int nBinsYStrip = std::max(m_nrNoisyStrip, m_nrDeadStrip);
622 
623  m_meReportSummaryMap = ibooker.book2D("reportSummaryMap_EMTF",
624  "reportSummaryMap_EMTF", 2, 1, 3, nBinsY, 1, nBinsY + 1);
625  m_meReportSummaryMap_chamberStrip = ibooker.book2D("reportSummaryMap_chamberStrip",
626  "reportSummaryMap_chamberStrip", 2, 1, 3, nBinsYStrip, 1, nBinsYStrip + 1);
627 
628  if (m_monitorDir == "L1TEMU") {
630  "L1TEMU: L1 Emulator vs Data Report Summary Map");
631 
632  } else if (m_monitorDir == "L1T") {
634  "L1T: L1 Trigger Data Report Summary Map");
635  } else if (m_monitorDir == "L1T2016") {
637  "L1T2016: L1 Trigger Data Report Summary Map");
638  } else {
639  // do nothing
640  }
641 
644 
645  m_meReportSummaryMap->setBinLabel(1, "Noisy Check", 1);
646  m_meReportSummaryMap->setBinLabel(2, "Dead Check", 1);
647 
648  m_meReportSummaryMap_chamberStrip->setBinLabel(1, "Noisy Check", 1);
649  m_meReportSummaryMap_chamberStrip->setBinLabel(2, "Dead Check", 1);
650 
651 // for (int iBin = 0; iBin < nBinsY; ++iBin) {
652 // m_meReportSummaryMap->setBinLabel(iBin + 1, " ", 2); }
653 
654  m_meReportSummaryMap->setBinLabel(1, "Hit BX", 2);
655  m_meReportSummaryMap->setBinLabel(2, "Track BX", 2);
656  //m_meReportSummaryMap->setBinLabel(3, "Track Phi", 2);
657 
658  const std::vector<std::string> suffix_name = {"-4/2", "-4/1", "-3/2", "-3/1", "-2/2", "-2/1",
659  "-1/3", "-1/2", "-1/1b", "-1/1a",
660  "+1/1a", "+1/1b", "+1/2", "+1/3",
661  "+2/1", "+2/2", "+3/1", "+3/2", "+4/1", "+4/2"};
662  for (int iBin = 0; iBin < nBinsYStrip; ++iBin) {
663  m_meReportSummaryMap_chamberStrip->setBinLabel(iBin + 1, "ChamberStrip " + suffix_name[iBin], 2);
664  }
665 }
666 
667 
669 
670  // initialize summary content, summary sum and ReportSummaryContent float histograms
671  // for all L1 systems and L1 objects
672 
673  if (m_verbose) std::cout << "\nInside L1TEMTFEventInfoClient::readQtResults" << std::endl; // Extra printout - AWB 03.12.16
674 
675  for (std::vector<int>::iterator it = m_summaryContent.begin();
676  it != m_summaryContent.end(); ++it) {
677  (*it) = dqm::qstatus::DISABLED;
678  }
679 
680  m_summarySum = 0.;
681 
682  for (const auto & itME : m_meReportSummaryContent) {
683  itME->Fill(0.);
684  }
685 
686  // general counters:
687  // iAllQTest: all quality tests for all systems and objects
688  // iAllMon: all monitored systems and objects
689  int iAllQTest = 0;
690  int iAllMon = 0;
691 
692  // quality tests for all L1 systems
693 
694  for (unsigned int iTrackObj = 0; iTrackObj < m_nrTrackObjects; ++iTrackObj) {
695 
696  // get the reports for each quality test
697 
698  const std::vector<std::string>& trackObjQtName =
699  m_trackQualityTestName[iTrackObj];
700  const std::vector<std::string>& trackObjQtHist =
701  m_trackQualityTestHist[iTrackObj];
702  const std::vector<unsigned int>& trackObjQtSummaryEnabled =
703  m_trackQtSummaryEnabled[iTrackObj];
704 
705  // pro system counter for quality tests
706  int iTrackObjQTest = 0;
707 
708  for (const auto & itQtName : trackObjQtName) {
709 
710  // get results, status and message
711 
712  if (m_verbose) std::cout << " itQtName = " << (itQtName) << std::endl; // Extra printout - AWB 03.12.16
713 
714  MonitorElement* qHist = igetter.get(trackObjQtHist[iTrackObjQTest]);
715 
716  if (qHist) {
717  const std::vector<QReport*> qtVec = qHist->getQReports();
718 
719  // if (m_verbose) {
720  if (true) { // Force printout - AWB 03.12.16
721 
722  if (m_verbose) std::cout << " - Number of quality tests"
723  // if (m_verbose) std::cout << "\nNumber of quality tests"
724  << " for histogram " << trackObjQtHist[iTrackObjQTest]
725  << ": " << qtVec.size() << "\n" << std::endl;
726  }
727 
728  const QReport* sysQReport = qHist->getQReport(itQtName);
729  if (sysQReport) {
730  const float trackObjQtResult = sysQReport->getQTresult();
731  const int trackObjQtStatus = sysQReport->getStatus();
732  const std::string& trackObjQtMessage = sysQReport->getMessage();
733 
734  if (m_verbose) {
735  std::cout << "\n" << (itQtName) << " quality test:"
736  << "\n result: " << trackObjQtResult
737  << "\n status: " << trackObjQtStatus
738  << "\n message: " << trackObjQtMessage << "\n"
739  << "\nFilling m_meReportSummaryContent["
740  << iAllQTest << "] with value "
741  << trackObjQtResult << "\n" << std::endl;
742  }
743 
744  m_meReportSummaryContent[iAllQTest]->Fill(trackObjQtResult);
745 
746  // for the summary map, keep the highest status value ("ERROR") of all tests
747  // which are considered for the summary plot
748  if (trackObjQtSummaryEnabled[iTrackObjQTest]) {
749 
750  if (trackObjQtStatus > m_summaryContent[iAllMon]) {
751  m_summaryContent[iAllMon] = trackObjQtStatus;
752  }
753 
754  m_summarySum += trackObjQtResult;
755  }
756 
757 
758  } else {
759 
760  // for the summary map, if the test was not found but it is assumed to be
761  // considered for the summary plot, set it to dqm::qstatus::INVALID
762 
763  int trackObjQtStatus = dqm::qstatus::INVALID;
764 
765  if (trackObjQtSummaryEnabled[iTrackObjQTest]) {
766 
767  if (trackObjQtStatus > m_summaryContent[iAllMon]) {
768  m_summaryContent[iAllMon] = trackObjQtStatus;
769  }
770  }
771 
772  m_meReportSummaryContent[iAllQTest]->Fill(0.);
773 
774  if (m_verbose) std::cout << "\n" << (itQtName)
775  << " quality test not found\n" << std::endl;
776  }
777 
778  } else {
779  // for the summary map, if the histogram was not found but it is assumed
780  // to have a test be considered for the summary plot, set it to dqm::qstatus::INVALID
781 
782  int trackObjQtStatus = dqm::qstatus::INVALID;
783 
784  if (trackObjQtSummaryEnabled[iTrackObjQTest]) {
785 
786  if (trackObjQtStatus > m_summaryContent[iAllMon]) {
787  m_summaryContent[iAllMon] = trackObjQtStatus;
788  }
789  }
790 
791  m_meReportSummaryContent[iAllQTest]->Fill(0.);
792 
793  if (m_verbose) std::cout << "\nHistogram " << trackObjQtHist[iTrackObjQTest]
794  << " not found\n" << std::endl;
795  }
796 
797  // increase counters for quality tests
798  iTrackObjQTest++;
799  iAllQTest++;
800 
801  }
802 
803  iAllMon++;
804 
805  }
806 
807  // quality tests for all L1 objects
808 
809  for (unsigned int iHitObj = 0; iHitObj < m_nrHitObjects; ++iHitObj) {
810 
811  // get the reports for each quality test
812 
813  const std::vector<std::string>& hitObjQtName =
814  m_hitQualityTestName[iHitObj];
815  const std::vector<std::string>& hitObjQtHist =
816  m_hitQualityTestHist[iHitObj];
817  const std::vector<unsigned int>& hitObjQtSummaryEnabled =
818  m_hitQtSummaryEnabled[iHitObj];
819 
820  // pro object counter for quality tests
821  int iHitObjQTest = 0;
822 
823  for (const auto & itQtName : hitObjQtName) {
824 
825  // get results, status and message
826 
827  MonitorElement* qHist = igetter.get(hitObjQtHist[iHitObjQTest]);
828 
829  if (qHist) {
830  const std::vector<QReport*> qtVec = qHist->getQReports();
831 
832  if (m_verbose) std::cout << "\nNumber of quality tests "
833  << " for histogram " << hitObjQtHist[iHitObjQTest]
834  << ": " << qtVec.size() << "\n" << std::endl;
835 
836  const QReport* objQReport = qHist->getQReport(itQtName);
837  if (objQReport) {
838  const float hitObjQtResult = objQReport->getQTresult();
839  const int hitObjQtStatus = objQReport->getStatus();
840  const std::string& hitObjQtMessage = objQReport->getMessage();
841 
842  if (m_verbose) {
843  std::cout << "\n" << (itQtName) << " quality test:"
844  << "\n result: " << hitObjQtResult
845  << "\n status: " << hitObjQtStatus
846  << "\n message: " << hitObjQtMessage << "\n"
847  << "\nFilling m_meReportSummaryContent["
848  << iAllQTest << "] with value "
849  << hitObjQtResult << "\n" << std::endl;
850  }
851 
852  m_meReportSummaryContent[iAllQTest]->Fill(hitObjQtResult);
853 
854  // for the summary map, keep the highest status value ("ERROR") of all tests
855  // which are considered for the summary plot
856  if (hitObjQtSummaryEnabled[iHitObjQTest]) {
857 
858  if (hitObjQtStatus > m_summaryContent[iAllMon]) {
859  m_summaryContent[iAllMon] = hitObjQtStatus;
860  }
861 
862  m_summarySum += hitObjQtResult;
863  }
864 
865  } else {
866 
867  // for the summary map, if the test was not found but it is assumed to be
868  // considered for the summary plot, set it to dqm::qstatus::INVALID
869 
870  int hitObjQtStatus = dqm::qstatus::INVALID;
871 
872  if (hitObjQtSummaryEnabled[iHitObjQTest]) {
873 
874  if (hitObjQtStatus > m_summaryContent[iAllMon]) {
875  m_summaryContent[iAllMon] = hitObjQtStatus;
876  }
877  }
878 
879  m_meReportSummaryContent[iAllQTest]->Fill(0.);
880 
881  if (m_verbose) std::cout << "\n" << (itQtName)
882  << " quality test not found\n" << std::endl;
883  }
884 
885  } else {
886  // for the summary map, if the histogram was not found but it is assumed
887  // to have a test be considered for the summary plot, set it to dqm::qstatus::INVALID
888 
889  int hitObjQtStatus = dqm::qstatus::INVALID;
890 
891  if (hitObjQtSummaryEnabled[iHitObjQTest]) {
892 
893  if (hitObjQtStatus > m_summaryContent[iAllMon]) {
894  m_summaryContent[iAllMon] = hitObjQtStatus;
895  }
896  }
897 
898  m_meReportSummaryContent[iAllQTest]->Fill(0.);
899 
900  if (m_verbose) std::cout << "\nHistogram " << hitObjQtHist[iHitObjQTest]
901  << " not found\n" << std::endl;
902  }
903  // increase counters for quality tests
904  iHitObjQTest++;
905  iAllQTest++;
906  }
907  iAllMon++;
908  }
909 
910  // quality tests for all L1 Noisy Strip =================================================================
911 
912  for (unsigned int iNoisyStrp = 0; iNoisyStrp < m_nrNoisyStrip; ++iNoisyStrp) {
913 
914  // get the reports for each quality test
915  const std::vector<std::string>& noisyStrpQtName =
916  m_noisyQualityTestName[iNoisyStrp];
917  const std::vector<std::string>& noisyStrpQtHist =
918  m_noisyQualityTestHist[iNoisyStrp];
919  const std::vector<unsigned int>& noisyStrpQtSummaryEnabled =
920  m_noisyQtSummaryEnabled[iNoisyStrp];
921 
922  // pro object counter for quality tests
923  int iNoisyStrpQTest = 0;
924 
925  for (const auto & itQtName : noisyStrpQtName) {
926 
927  // get results, status and message
928  MonitorElement* qHist = igetter.get(noisyStrpQtHist[iNoisyStrpQTest]);
929 
930  if (qHist) {
931  const std::vector<QReport*> qtVec = qHist->getQReports();
932 
933  if (m_verbose) std::cout << "\nNumber of quality tests "
934  << " for histogram " << noisyStrpQtHist[iNoisyStrpQTest]
935  << ": " << qtVec.size() << "\n" << std::endl;
936 
937  const QReport* objQReport = qHist->getQReport(itQtName);
938  if (objQReport) {
939  const float noisyStrpQtResult = objQReport->getQTresult();
940  const int noisyStrpQtStatus = objQReport->getStatus();
941  const std::string& noisyStrpQtMessage = objQReport->getMessage();
942 
943  if (m_verbose) {
944  std::cout << "\n" << (itQtName) << " quality test:"
945  << "\n result: " << noisyStrpQtResult
946  << "\n status: " << noisyStrpQtStatus
947  << "\n message: " << noisyStrpQtMessage << "\n"
948  << "\nFilling m_meReportSummaryContent["
949  << iAllQTest << "] with value "
950  << noisyStrpQtResult << "\n" << std::endl;
951  }
952 
953  m_meReportSummaryContent[iAllQTest]->Fill(noisyStrpQtResult);
954 
955  // for the summary map, keep the highest status value ("ERROR") of all tests
956  // which are considered for the summary plot
957  if (noisyStrpQtSummaryEnabled[iNoisyStrpQTest]) {
958 
959  if (noisyStrpQtStatus > m_summaryContent[iAllMon]) {
960  m_summaryContent[iAllMon] = noisyStrpQtStatus;
961  }
962  m_summarySum += noisyStrpQtResult;
963  }
964 
965  } else {
966 
967  // for the summary map, if the test was not found but it is assumed to be
968  // considered for the summary plot, set it to dqm::qstatus::INVALID
969 
970  int noisyStrpQtStatus = dqm::qstatus::INVALID;
971 
972  if (noisyStrpQtSummaryEnabled[iNoisyStrpQTest]) {
973 
974  if (noisyStrpQtStatus > m_summaryContent[iAllMon]) {
975  m_summaryContent[iAllMon] = noisyStrpQtStatus;
976  }
977  }
978 
979  m_meReportSummaryContent[iAllQTest]->Fill(0.);
980 
981  if (m_verbose) std::cout << "\n" << (itQtName)
982  << " quality test not found\n" << std::endl;
983  }
984 
985  } else {
986  // for the summary map, if the histogram was not found but it is assumed
987  // to have a test be considered for the summary plot, set it to dqm::qstatus::INVALID
988 
989  int noisyStrpQtStatus = dqm::qstatus::INVALID;
990 
991  if (noisyStrpQtSummaryEnabled[iNoisyStrpQTest]) {
992 
993  if (noisyStrpQtStatus > m_summaryContent[iAllMon]) {
994  m_summaryContent[iAllMon] = noisyStrpQtStatus;
995  }
996  }
997 
998  m_meReportSummaryContent[iAllQTest]->Fill(0.);
999 
1000  if (m_verbose) std::cout << "\nHistogram " << noisyStrpQtHist[iNoisyStrpQTest]
1001  << " not found\n" << std::endl;
1002  }
1003  // increase counters for quality tests
1004  iNoisyStrpQTest++;
1005  iAllQTest++;
1006  }
1007  iAllMon++;
1008  }
1009  // quality tests for all L1 Dead Strip =================================================================
1010 
1011  for (unsigned int iDeadStrp = 0; iDeadStrp < m_nrDeadStrip; ++iDeadStrp) {
1012 
1013  // get the reports for each quality test
1014  const std::vector<std::string>& deadStrpQtName =
1015  m_deadQualityTestName[iDeadStrp];
1016  const std::vector<std::string>& deadStrpQtHist =
1017  m_deadQualityTestHist[iDeadStrp];
1018  const std::vector<unsigned int>& deadStrpQtSummaryEnabled =
1019  m_deadQtSummaryEnabled[iDeadStrp];
1020 
1021  // pro object counter for quality tests
1022  int iDeadStrpQTest = 0;
1023 
1024  for (const auto & itQtName : deadStrpQtName) {
1025 
1026  // get results, status and message
1027 
1028  MonitorElement* qHist = igetter.get(deadStrpQtHist[iDeadStrpQTest]);
1029 
1030  if (qHist) {
1031  const std::vector<QReport*> qtVec = qHist->getQReports();
1032 
1033  if (m_verbose) std::cout << "\nNumber of quality tests "
1034  << " for histogram " << deadStrpQtHist[iDeadStrpQTest]
1035  << ": " << qtVec.size() << "\n" << std::endl;
1036 
1037  const QReport* objQReport = qHist->getQReport(itQtName);
1038  if (objQReport) {
1039  const float deadStrpQtResult = objQReport->getQTresult();
1040  const int deadStrpQtStatus = objQReport->getStatus();
1041  const std::string& deadStrpQtMessage = objQReport->getMessage();
1042 
1043  if (m_verbose) {
1044  std::cout << "\n" << (itQtName) << " quality test:"
1045  << "\n result: " << deadStrpQtResult
1046  << "\n status: " << deadStrpQtStatus
1047  << "\n message: " << deadStrpQtMessage << "\n"
1048  << "\nFilling m_meReportSummaryContent["
1049  << iAllQTest << "] with value "
1050  << deadStrpQtResult << "\n" << std::endl;
1051  }
1052 
1053  m_meReportSummaryContent[iAllQTest]->Fill(deadStrpQtResult);
1054 
1055  // for the summary map, keep the highest status value ("ERROR") of all tests
1056  // which are considered for the summary plot
1057  if (deadStrpQtSummaryEnabled[iDeadStrpQTest]) {
1058 
1059  if (deadStrpQtStatus > m_summaryContent[iAllMon]) {
1060  m_summaryContent[iAllMon] = deadStrpQtStatus;
1061  }
1062  m_summarySum += deadStrpQtResult;
1063  }
1064 
1065  } else {
1066 
1067  // for the summary map, if the test was not found but it is assumed to be
1068  // considered for the summary plot, set it to dqm::qstatus::INVALID
1069 
1070  int deadStrpQtStatus = dqm::qstatus::INVALID;
1071 
1072  if (deadStrpQtSummaryEnabled[iDeadStrpQTest]) {
1073 
1074  if (deadStrpQtStatus > m_summaryContent[iAllMon]) {
1075  m_summaryContent[iAllMon] = deadStrpQtStatus;
1076  }
1077  }
1078 
1079  m_meReportSummaryContent[iAllQTest]->Fill(0.);
1080 
1081  if (m_verbose) std::cout << "\n" << (itQtName)
1082  << " quality test not found\n" << std::endl;
1083  }
1084 
1085  } else {
1086  // for the summary map, if the histogram was not found but it is assumed
1087  // to have a test be considered for the summary plot, set it to dqm::qstatus::INVALID
1088 
1089  int deadStrpQtStatus = dqm::qstatus::INVALID;
1090 
1091  if (deadStrpQtSummaryEnabled[iDeadStrpQTest]) {
1092 
1093  if (deadStrpQtStatus > m_summaryContent[iAllMon]) {
1094  m_summaryContent[iAllMon] = deadStrpQtStatus;
1095  }
1096  }
1097 
1098  m_meReportSummaryContent[iAllQTest]->Fill(0.);
1099 
1100  if (m_verbose) std::cout << "\nHistogram " << deadStrpQtHist[iDeadStrpQTest]
1101  << " not found\n" << std::endl;
1102  }
1103 
1104  // increase counters for quality tests
1105  iDeadStrpQTest++;
1106  iAllQTest++;
1107  }
1108  iAllMon++;
1109  }
1110 
1111  // reportSummary value
1113  if (m_meReportSummary) {
1115  }
1116 
1117  // fill the ReportSummaryMap for L1 systems (bin 1 on X)
1118  for (unsigned int iTrackObj = 0; iTrackObj < m_nrTrackObjects; ++iTrackObj) {
1119 
1120  double summCont = static_cast<double>(m_summaryContent[iTrackObj]);
1121  m_meReportSummaryMap->setBinContent(1, iTrackObj + 1, summCont);
1122  }
1123  // fill the ReportSummaryMap for L1 objects (bin 2 on X)
1124  for (unsigned int iMon = m_nrTrackObjects; iMon < m_nrTrackObjects
1125  + m_nrHitObjects; ++iMon) {
1126 
1127  double summCont = static_cast<double>(m_summaryContent[iMon]);
1128  m_meReportSummaryMap->setBinContent(2, iMon - m_nrTrackObjects + 1, summCont);
1129 
1130  }
1131 
1132  // fill the ReportSummaryMap_chamberStrip for L1 Noisy Strip (bin 1 on X)
1133  for (unsigned int iNoisyStrp = m_nrTrackObjects + m_nrHitObjects; iNoisyStrp < m_nrTrackObjects + m_nrHitObjects + m_nrNoisyStrip; ++iNoisyStrp) {
1134  double summCont = static_cast<double>(m_summaryContent[iNoisyStrp]);
1135  m_meReportSummaryMap_chamberStrip->setBinContent(1, iNoisyStrp - m_nrTrackObjects - m_nrHitObjects + 1, summCont);
1136  }
1137  // fill the ReportSummaryMap_chamberStrip for L1 objects (bin 2 on X)
1138  for (unsigned int iDeadStrp = m_nrTrackObjects + m_nrHitObjects + m_nrNoisyStrip; iDeadStrp < m_nrTrackObjects + m_nrHitObjects + m_nrNoisyStrip + m_nrDeadStrip; ++iDeadStrp) {
1139  double summCont = static_cast<double>(m_summaryContent[iDeadStrp]);
1140  m_meReportSummaryMap_chamberStrip->setBinContent(2, iDeadStrp - m_nrTrackObjects - m_nrHitObjects - m_nrNoisyStrip + 1, summCont);
1141  }
1142 
1143 }
void readQtResults(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter)
read quality test results
std::vector< std::vector< std::string > > m_trackQualityTestName
const QReport * getQReport(const std::string &qtname) const
get QReport corresponding to <qtname> (null pointer if QReport does not exist)
std::vector< std::string > m_disableDeadStrip
void setBinContent(int binx, double content)
set content of bin (1-D)
std::vector< edm::ParameterSet > m_deadStrip
void book(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter)
book histograms
std::vector< std::string > m_disableTrackObjects
std::vector< MonitorElement * > m_meReportSummaryContent
monitor elements to report content for all quality tests
bool m_verbose
input parameters
std::vector< std::string > m_noisyLabel
size_t m_nrHitObjects
number of L1 trigger objects
std::vector< std::vector< std::string > > m_deadQualityTestHist
std::vector< std::vector< unsigned int > > m_deadQtSummaryEnabled
std::vector< int > m_deadDisable
void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
def replace(string, replacements)
const std::string & getName() const
get name of ME
std::vector< std::string > m_deadLabel
void dqmEndJob(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter) override
end job
std::vector< std::vector< std::string > > m_hitQualityTestName
void initialize()
private methods
void Fill(long long x)
virtual ~L1TEMTFEventInfoClient()
Destructor.
std::vector< edm::ParameterSet > m_hitObjects
MonitorElement * m_meReportSummary
a summary report
std::vector< std::vector< std::string > > m_noisyQualityTestName
static const int INVALID
void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:268
std::vector< std::vector< unsigned int > > m_trackQtSummaryEnabled
std::vector< std::vector< std::string > > m_trackQualityTestHist
std::vector< std::vector< std::string > > m_hitQualityTestHist
static const int DISABLED
size_t m_nrDeadStrip
number of L1 trigger dead strips
const std::string & getMessage() const
get message attached to test
Definition: QReport.h:24
std::vector< std::vector< unsigned int > > m_hitQtSummaryEnabled
void dumpContentMonitorElements(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter)
dump the content of the monitoring elements defined in this module
TH2F * getTH2F() const
MonitorElement * get(std::string const &path)
Definition: DQMStore.cc:303
std::vector< std::string > m_disableHitObjects
void setTitle(const std::string &title)
set (ie. change) histogram/profile title
MonitorElement * m_meReportSummaryMap_chamberStrip
std::vector< std::string > m_trackLabel
std::vector< int > m_trackDisable
MonitorElement * book2D(Args &&...args)
Definition: DQMStore.h:109
std::vector< std::vector< std::string > > m_noisyQualityTestHist
MonitorElement * m_meReportSummaryMap
report summary map
std::vector< std::vector< std::string > > m_deadQualityTestName
std::vector< std::string > m_hitLabel
std::vector< QReport * > getQReports() const
get map of QReports
void dqmEndLuminosityBlock(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter, const edm::LuminosityBlock &, const edm::EventSetup &)
int getStatus() const
get test status (see Core/interface/QTestStatus.h)
Definition: QReport.h:16
L1TEMTFEventInfoClient(const edm::ParameterSet &)
Constructor.
std::vector< edm::ParameterSet > m_trackObjects
HLT enums.
Float_t m_reportSummary
summary report
std::vector< std::string > m_disableNoisyStrip
std::vector< int > m_noisyDisable
std::vector< int > m_summaryContent
std::vector< std::vector< unsigned int > > m_noisyQtSummaryEnabled
float getQTresult() const
get test result i.e. prob value
Definition: QReport.h:20
MonitorElement * bookFloat(Args &&...args)
Definition: DQMStore.h:105
size_t m_nrTrackObjects
number of L1 trigger systems
std::vector< int > m_hitDisable
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
void removeElement(Args &&...args)
Definition: DQMStore.h:199
size_t m_nrNoisyStrip
number of L1 trigger noisy strips
std::vector< edm::ParameterSet > m_noisyStrip