CMS 3D CMS Logo

L1TEventInfoClient.cc
Go to the documentation of this file.
1 
13 // this class header
15 
16 // system include files
17 #include <cstdio>
18 #include <sstream>
19 #include <fstream>
20 #include <iostream>
21 #include <iomanip>
22 
23 #include <cmath>
24 #include <memory>
25 
26 #include <vector>
27 #include <string>
28 
29 // user include files
35 
39 
40 #include <TH2F.h>
41 #include "TROOT.h"
42 
43 // constructor
45  m_verbose(parSet.getUntrackedParameter<bool>("verbose", false)),
46  m_monitorDir(parSet.getUntrackedParameter<std::string>("monitorDir", "")),
47  m_runInEventLoop(parSet.getUntrackedParameter<bool>("runInEventLoop", false)),
48  m_runInEndLumi(parSet.getUntrackedParameter<bool>("runInEndLumi", false)),
49  m_runInEndRun(parSet.getUntrackedParameter<bool>("runInEndRun", false)),
50  m_runInEndJob(parSet.getUntrackedParameter<bool>("runInEndJob", false)),
51  m_l1Systems(parSet.getParameter<std::vector<edm::ParameterSet> >("L1Systems")),
52  m_l1Objects(parSet.getParameter<std::vector<edm::ParameterSet> >("L1Objects")),
53  m_disableL1Systems(parSet.getParameter<std::vector<std::string> >("DisableL1Systems")),
54  m_disableL1Objects(parSet.getParameter<std::vector<std::string> >("DisableL1Objects")),
55  m_nrL1Systems(0),
56  m_nrL1Objects(0),
57  m_totalNrQtSummaryEnabled(0) {
58 
59  initialize();
60 }
61 
62 // destructor
64 
65  //empty
66 
67 }
68 
70 
71  if (m_verbose) {
72  std::cout << "\nMonitor directory = " << m_monitorDir
73  << std::endl;
74  }
75 
76  // L1 systems
77 
78  m_nrL1Systems = m_l1Systems.size();
79 
83 
84  // on average five quality test per system - just a best guess
88 
89  int indexSys = 0;
90 
91  int totalNrQualityTests = 0;
92 
93  for (std::vector<edm::ParameterSet>::const_iterator itSystem =
94  m_l1Systems.begin(); itSystem != m_l1Systems.end(); ++itSystem) {
95 
96  m_systemLabel.push_back(itSystem->getParameter<std::string>(
97  "SystemLabel"));
98 
99  m_systemLabelExt.push_back(itSystem->getParameter<std::string>(
100  "HwValLabel"));
101 
102  m_systemDisable.push_back(itSystem->getParameter<unsigned int>(
103  "SystemDisable"));
104  // check the additional disable flag from m_disableL1Systems
105  for (std::vector<std::string>::const_iterator itSys =
106  m_disableL1Systems.begin(); itSys != m_disableL1Systems.end(); ++itSys) {
107 
108  if (*itSys == m_systemLabel[indexSys]) {
109  m_systemDisable[indexSys] = 1;
110 
111  }
112  }
113 
114  std::vector < edm::ParameterSet > qTests = itSystem->getParameter<
115  std::vector<edm::ParameterSet> > ("QualityTests");
116  size_t qtPerSystem = qTests.size();
117 
118  std::vector < std::string > qtNames;
119  qtNames.reserve(qtPerSystem);
120 
121  std::vector < std::string > qtFullPathHists;
122  qtFullPathHists.reserve(qtPerSystem);
123 
124  std::vector<unsigned int> qtSumEnabled;
125  qtSumEnabled.reserve(qtPerSystem);
126 
127  for (std::vector<edm::ParameterSet>::const_iterator itQT =
128  qTests.begin(); itQT != qTests.end(); ++itQT) {
129 
130  totalNrQualityTests++;
131 
132  qtNames.push_back(
133  itQT->getParameter<std::string> ("QualityTestName"));
134 
135  qtFullPathHists.push_back(
136  itQT->getParameter<std::string> ("QualityTestHist"));
137 
138  unsigned int qtEnabled = itQT->getParameter<unsigned int> (
139  "QualityTestSummaryEnabled");
140 
141  qtSumEnabled.push_back(qtEnabled);
142 
143  if (qtEnabled) {
145  }
146  }
147 
148  m_systemQualityTestName.push_back(qtNames);
149  m_systemQualityTestHist.push_back(qtFullPathHists);
150  m_systemQtSummaryEnabled.push_back(qtSumEnabled);
151 
152  indexSys++;
153 
154  }
155 
156  // L1 objects
157 
158  //
159  m_nrL1Objects = m_l1Objects.size();
160 
161  m_objectLabel.reserve(m_nrL1Objects);
163 
164  // on average five quality test per object - just a best guess
168 
169  int indexObj = 0;
170 
171  for (std::vector<edm::ParameterSet>::const_iterator itObject =
172  m_l1Objects.begin(); itObject != m_l1Objects.end(); ++itObject) {
173 
174  m_objectLabel.push_back(itObject->getParameter<std::string>(
175  "ObjectLabel"));
176 
177  m_objectDisable.push_back(itObject->getParameter<unsigned int>(
178  "ObjectDisable"));
179  // check the additional disable flag from m_disableL1Objects
180  for (std::vector<std::string>::const_iterator itObj =
181  m_disableL1Objects.begin(); itObj != m_disableL1Objects.end(); ++itObj) {
182 
183  if (*itObj == m_objectLabel[indexObj]) {
184  m_objectDisable[indexObj] = 1;
185 
186  }
187  }
188 
189  std::vector < edm::ParameterSet > qTests = itObject->getParameter<
190  std::vector<edm::ParameterSet> > ("QualityTests");
191  size_t qtPerObject = qTests.size();
192 
193  std::vector < std::string > qtNames;
194  qtNames.reserve(qtPerObject);
195 
196  std::vector < std::string > qtFullPathHists;
197  qtFullPathHists.reserve(qtPerObject);
198 
199  std::vector<unsigned int> qtSumEnabled;
200  qtSumEnabled.reserve(qtPerObject);
201 
202  for (std::vector<edm::ParameterSet>::const_iterator itQT =
203  qTests.begin(); itQT != qTests.end(); ++itQT) {
204 
205  totalNrQualityTests++;
206 
207  qtNames.push_back(
208  itQT->getParameter<std::string> ("QualityTestName"));
209 
210  qtFullPathHists.push_back(
211  itQT->getParameter<std::string> ("QualityTestHist"));
212 
213  unsigned int qtEnabled = itQT->getParameter<unsigned int> (
214  "QualityTestSummaryEnabled");
215 
216  qtSumEnabled.push_back(qtEnabled);
217 
218  if (qtEnabled) {
220  }
221  }
222 
223  m_objectQualityTestName.push_back(qtNames);
224  m_objectQualityTestHist.push_back(qtFullPathHists);
225  m_objectQtSummaryEnabled.push_back(qtSumEnabled);
226 
227  indexObj++;
228 
229  }
230 
232  m_meReportSummaryContent.reserve(totalNrQualityTests);
233 
234 }
235 
237 
238 
239  if (m_runInEndLumi) {
240 
241  book(ibooker, igetter);
242  readQtResults(ibooker, igetter);
243 
244  if (m_verbose) {
245 
246  std::cout << "\n L1TEventInfoClient::endLuminosityBlock\n"
247  << std::endl;
248  dumpContentMonitorElements(ibooker, igetter);
249  }
250 
251  }
252 }
253 
254 
256 
257  book(ibooker, igetter);
258 
259  readQtResults(ibooker, igetter);
260 
261  if (m_verbose) {
262 
263  std::cout << "\n L1TEventInfoClient::endRun\n" << std::endl;
264  dumpContentMonitorElements(ibooker, igetter);
265  }
266 }
267 
269 
270  std::cout << "\nSummary report " << std::endl;
271 
272  // summary content
273 
275 
276  std::cout
277  << "\nSummary content per system and object as filled in histogram\n "
278  << m_meReportSummaryMap->getName() << std::endl;
279 
280  if (!me) {
281 
282  std::cout << "\nNo histogram " << m_meReportSummaryMap->getName()
283  << "\nNo summary content per system and object as filled in histogram.\n "
284  << std::endl;
285  return;
286 
287  }
288 
289  TH2F* hist = me->getTH2F();
290 
291  const int nBinsX = hist->GetNbinsX();
292  const int nBinsY = hist->GetNbinsY();
293  std::cout << nBinsX << " " << nBinsY;
294 
295  std::vector<std::vector<int> > meReportSummaryMap(nBinsX, std::vector<int>(
296  nBinsY));
297 
298 // for (int iBinX = 0; iBinX < nBinsX; iBinX++) {
299 // for (int iBinY = 0; iBinY < nBinsY; iBinY++) {
300 // meReportSummaryMap[iBinX][iBinY]
301 // = static_cast<int>(me->GetBinContent(iBinX + 1, iBinY + 1));
302 // }
303 // }
304 
305  std::cout << "\nL1 systems: " << m_nrL1Systems << " systems included\n"
306  << "\n Summary content size: " << (m_summaryContent.size())
307  << std::endl;
308 
309  for (unsigned int iSys = 0; iSys < m_nrL1Systems; ++iSys) {
310 
311  std::cout << std::setw(10) << m_systemLabel[iSys] << std::setw(10)
312  << m_systemLabelExt[iSys] << " \t" << m_systemDisable[iSys]
313  << " \t" << std::setw(25) << " m_summaryContent["
314  << std::setw(2) << iSys << "] = " << meReportSummaryMap[0][iSys]
315  << std::endl;
316  }
317 
318  std::cout << "\n L1 trigger objects: " << m_nrL1Objects
319  << " objects included\n" << std::endl;
320 
321  for (unsigned int iMon = m_nrL1Systems; iMon < m_nrL1Systems
322  + m_nrL1Objects; ++iMon) {
323 
324  std::cout << std::setw(20) << m_objectLabel[iMon - m_nrL1Systems]
325  << " \t" << m_objectDisable[iMon - m_nrL1Systems] << " \t"
326  << std::setw(25) << " m_summaryContent[" << std::setw(2)
327  << iMon << "] = \t" << m_summaryContent[iMon] << std::endl;
328  }
329 
330  std::cout << std::endl;
331 
332  // quality tests
333 
334  std::cout << "\nQuality test results as filled in " << "\n "
335  << m_monitorDir << "/EventInfo/reportSummaryContents\n"
336  << "\n Total number of quality tests: "
337  << (m_meReportSummaryContent.size()) << "\n" << std::endl;
338 
339  for (std::vector<MonitorElement*>::const_iterator itME =
340  m_meReportSummaryContent.begin(); itME
341  != m_meReportSummaryContent.end(); ++itME) {
342 
343  std::cout << std::setw(50) << (*itME)->getName() << " \t"
344  << std::setw(25) << (*itME)->getFloatValue() << std::endl;
345 
346  }
347 
348  std::cout << std::endl;
349 
350 }
351 
352 
353 
355 
356  std::string dirEventInfo = m_monitorDir + "/EventInfo";
357 
358  ibooker.setCurrentFolder(dirEventInfo);
359 
360  // remove m_meReportSummary if it exists
361  if ((m_meReportSummary = igetter.get(dirEventInfo + "/reportSummary"))) {
363  }
364 
365  // ...and book it again
366  m_meReportSummary = ibooker.bookFloat("reportSummary");
367 
368  // initialize reportSummary to 1
369 
370  if (m_meReportSummary) {
372  }
373 
374  // define float histograms for reportSummaryContents (one histogram per quality test),
375  // initialize them to zero
376  // initialize also m_summaryContent to dqm::qstatus::DISABLED
377 
378  ibooker.setCurrentFolder(dirEventInfo + "/reportSummaryContents");
379  // general counters:
380  // iAllQTest: all quality tests for all systems and objects
381  // iAllMon: all monitored systems and objects
382  int iAllQTest = 0;
383  int iAllMon = 0;
384 
385  for (unsigned int iMon = 0; iMon < m_nrL1Systems; ++iMon) {
386 
388 
389  const std::vector<std::string>& sysQtName =
391 
392  for (std::vector<std::string>::const_iterator itQtName =
393  sysQtName.begin(); itQtName != sysQtName.end(); ++itQtName) {
394 
395  const std::string hStr = m_monitorDir + "_L1Sys_" +m_systemLabel[iMon] + "_" + (*itQtName);
396 
397  m_meReportSummaryContent.push_back(ibooker.bookFloat(hStr));
398  m_meReportSummaryContent[iAllQTest]->Fill(0.);
399 
400  iAllQTest++;
401  }
402 
403  iAllMon++;
404  }
405 
406 
407  for (unsigned int iMon = 0; iMon < m_nrL1Objects; ++iMon) {
408 
410 
411  const std::vector<std::string>& objQtName =
413 
414  for (std::vector<std::string>::const_iterator itQtName =
415  objQtName.begin(); itQtName != objQtName.end(); ++itQtName) {
416 
417  const std::string hStr = m_monitorDir + "_L1Obj_" + m_objectLabel[iMon] + "_" + (*itQtName);
418 
419  m_meReportSummaryContent.push_back(ibooker.bookFloat(hStr));
420  m_meReportSummaryContent[iAllQTest]->Fill(0.);
421 
422  iAllQTest++;
423  }
424 
425  iAllMon++;
426 
427  }
428 
429  ibooker.setCurrentFolder(dirEventInfo);
430 
431  if ((m_meReportSummaryMap = igetter.get(dirEventInfo + "/reportSummaryMap"))) {
433  }
434 
435  // define a histogram with two bins on X and maximum of m_nrL1Systems, m_nrL1Objects on Y
436 
437  int nBinsY = std::max(m_nrL1Systems, m_nrL1Objects);
438 
439  m_meReportSummaryMap = ibooker.book2D("reportSummaryMap",
440  "reportSummaryMap", 2, 1, 3, nBinsY, 1, nBinsY + 1);
441 
442  if (m_monitorDir == "L1TEMU") {
444  "L1TEMU: L1 Emulator vs Data Report Summary Map");
445 
446  } else if (m_monitorDir == "L1T") {
448  "L1T: L1 Trigger Data Report Summary Map");
449  } else {
450  // do nothing
451  }
452 
455 
456  m_meReportSummaryMap->setBinLabel(1, "L1 systems", 1);
457  m_meReportSummaryMap->setBinLabel(2, "L1 objects", 1);
458 
459  for (int iBin = 0; iBin < nBinsY; ++iBin) {
460 
461  m_meReportSummaryMap->setBinLabel(iBin + 1, " ", 2);
462  }
463 
464 }
465 
466 
468 
469  // initialize summary content, summary sum and ReportSummaryContent float histograms
470  // for all L1 systems and L1 objects
471 
472  for (std::vector<int>::iterator it = m_summaryContent.begin(); it
473  != m_summaryContent.end(); ++it) {
474 
475  (*it) = dqm::qstatus::DISABLED;
476 
477  }
478 
479  m_summarySum = 0.;
480 
481  for (std::vector<MonitorElement*>::iterator itME =
482  m_meReportSummaryContent.begin(); itME
483  != m_meReportSummaryContent.end(); ++itME) {
484 
485  (*itME)->Fill(0.);
486 
487  }
488 
489 
490  // general counters:
491  // iAllQTest: all quality tests for all systems and objects
492  // iAllMon: all monitored systems and objects
493  int iAllQTest = 0;
494  int iAllMon = 0;
495 
496 
497  // quality tests for all L1 systems
498 
499  for (unsigned int iSys = 0; iSys < m_nrL1Systems; ++iSys) {
500 
501  // get the reports for each quality test
502 
503  const std::vector<std::string>& sysQtName =
505  const std::vector<std::string>& sysQtHist =
507  const std::vector<unsigned int>& sysQtSummaryEnabled =
509 
510  // pro system counter for quality tests
511  int iSysQTest = 0;
512 
513  for (std::vector<std::string>::const_iterator itQtName =
514  sysQtName.begin(); itQtName != sysQtName.end(); ++itQtName) {
515 
516  // get results, status and message
517 
518  MonitorElement* qHist = igetter.get(sysQtHist[iSysQTest]);
519 
520  if (qHist) {
521  const std::vector<QReport*> qtVec = qHist->getQReports();
522 
523  if (m_verbose) {
524 
525  std::cout << "\nNumber of quality tests "
526  << " for histogram " << sysQtHist[iSysQTest]
527  << ": " << qtVec.size() << "\n" << std::endl;
528  }
529 
530  const QReport* sysQReport = qHist->getQReport(*itQtName);
531  if (sysQReport) {
532  const float sysQtResult = sysQReport->getQTresult();
533  const int sysQtStatus = sysQReport->getStatus();
534  const std::string& sysQtMessage = sysQReport->getMessage();
535 
536  if (m_verbose) {
537  std::cout << "\n" << (*itQtName) << " quality test:"
538  << "\n result: " << sysQtResult
539  << "\n status: " << sysQtStatus
540  << "\n message: " << sysQtMessage << "\n"
541  << "\nFilling m_meReportSummaryContent["
542  << iAllQTest << "] with value "
543  << sysQtResult << "\n" << std::endl;
544  }
545 
546  m_meReportSummaryContent[iAllQTest]->Fill(sysQtResult);
547 
548  // for the summary map, keep the highest status value ("ERROR") of all tests
549  // which are considered for the summary plot
550  if (sysQtSummaryEnabled[iSysQTest]) {
551 
552  if (sysQtStatus > m_summaryContent[iAllMon]) {
553  m_summaryContent[iAllMon] = sysQtStatus;
554  }
555 
556  m_summarySum += sysQtResult;
557  }
558 
559 
560  } else {
561 
562  // for the summary map, if the test was not found but it is assumed to be
563  // considered for the summary plot, set it to dqm::qstatus::INVALID
564 
565  int sysQtStatus = dqm::qstatus::INVALID;
566 
567  if (sysQtSummaryEnabled[iSysQTest]) {
568 
569  if (sysQtStatus > m_summaryContent[iAllMon]) {
570  m_summaryContent[iAllMon] = sysQtStatus;
571  }
572  }
573 
574  m_meReportSummaryContent[iAllQTest]->Fill(0.);
575 
576  if (m_verbose) {
577 
578  std::cout << "\n" << (*itQtName)
579  << " quality test not found\n" << std::endl;
580  }
581  }
582 
583  } else {
584  // for the summary map, if the histogram was not found but it is assumed
585  // to have a test be considered for the summary plot, set it to dqm::qstatus::INVALID
586 
587  int sysQtStatus = dqm::qstatus::INVALID;
588 
589  if (sysQtSummaryEnabled[iSysQTest]) {
590 
591  if (sysQtStatus > m_summaryContent[iAllMon]) {
592  m_summaryContent[iAllMon] = sysQtStatus;
593  }
594  }
595 
596  m_meReportSummaryContent[iAllQTest]->Fill(0.);
597 
598  if (m_verbose) {
599 
600  std::cout << "\nHistogram " << sysQtHist[iSysQTest]
601  << " not found\n" << std::endl;
602  }
603 
604  }
605 
606  // increase counters for quality tests
607  iSysQTest++;
608  iAllQTest++;
609 
610  }
611 
612  iAllMon++;
613 
614  }
615 
616  // quality tests for all L1 objects
617 
618  for (unsigned int iObj = 0; iObj < m_nrL1Objects; ++iObj) {
619 
620  // get the reports for each quality test
621 
622  const std::vector<std::string>& objQtName =
624  const std::vector<std::string>& objQtHist =
626  const std::vector<unsigned int>& objQtSummaryEnabled =
628 
629  // pro object counter for quality tests
630  int iObjQTest = 0;
631 
632  for (std::vector<std::string>::const_iterator itQtName =
633  objQtName.begin(); itQtName != objQtName.end(); ++itQtName) {
634 
635  // get results, status and message
636 
637  MonitorElement* qHist = igetter.get(objQtHist[iObjQTest]);
638 
639  if (qHist) {
640  const std::vector<QReport*> qtVec = qHist->getQReports();
641 
642  if (m_verbose) {
643 
644  std::cout << "\nNumber of quality tests "
645  << " for histogram " << objQtHist[iObjQTest]
646  << ": " << qtVec.size() << "\n" << std::endl;
647  }
648 
649  const QReport* objQReport = qHist->getQReport(*itQtName);
650  if (objQReport) {
651  const float objQtResult = objQReport->getQTresult();
652  const int objQtStatus = objQReport->getStatus();
653  const std::string& objQtMessage = objQReport->getMessage();
654 
655  if (m_verbose) {
656  std::cout << "\n" << (*itQtName) << " quality test:"
657  << "\n result: " << objQtResult
658  << "\n status: " << objQtStatus
659  << "\n message: " << objQtMessage << "\n"
660  << "\nFilling m_meReportSummaryContent["
661  << iAllQTest << "] with value "
662  << objQtResult << "\n" << std::endl;
663  }
664 
665  m_meReportSummaryContent[iAllQTest]->Fill(objQtResult);
666 
667  // for the summary map, keep the highest status value ("ERROR") of all tests
668  // which are considered for the summary plot
669  if (objQtSummaryEnabled[iObjQTest]) {
670 
671  if (objQtStatus > m_summaryContent[iAllMon]) {
672  m_summaryContent[iAllMon] = objQtStatus;
673  }
674 
675  m_summarySum += objQtResult;
676  }
677 
678  } else {
679 
680  // for the summary map, if the test was not found but it is assumed to be
681  // considered for the summary plot, set it to dqm::qstatus::INVALID
682 
683  int objQtStatus = dqm::qstatus::INVALID;
684 
685  if (objQtSummaryEnabled[iObjQTest]) {
686 
687  if (objQtStatus > m_summaryContent[iAllMon]) {
688  m_summaryContent[iAllMon] = objQtStatus;
689  }
690  }
691 
692  m_meReportSummaryContent[iAllQTest]->Fill(0.);
693 
694  if (m_verbose) {
695 
696  std::cout << "\n" << (*itQtName)
697  << " quality test not found\n" << std::endl;
698  }
699 
700  }
701 
702  } else {
703  // for the summary map, if the histogram was not found but it is assumed
704  // to have a test be considered for the summary plot, set it to dqm::qstatus::INVALID
705 
706  int objQtStatus = dqm::qstatus::INVALID;
707 
708  if (objQtSummaryEnabled[iObjQTest]) {
709 
710  if (objQtStatus > m_summaryContent[iAllMon]) {
711  m_summaryContent[iAllMon] = objQtStatus;
712  }
713  }
714 
715  m_meReportSummaryContent[iAllQTest]->Fill(0.);
716 
717  if (m_verbose) {
718  std::cout << "\nHistogram " << objQtHist[iObjQTest]
719  << " not found\n" << std::endl;
720  }
721 
722  }
723 
724  // increase counters for quality tests
725  iObjQTest++;
726  iAllQTest++;
727  }
728 
729  iAllMon++;
730 
731  }
732 
733 
734 
735  // reportSummary value
737  if (m_meReportSummary) {
739  }
740 
741  // fill the ReportSummaryMap for L1 systems (bin 1 on X)
742  for (unsigned int iSys = 0; iSys < m_nrL1Systems; ++iSys) {
743 
744  double summCont = static_cast<double>(m_summaryContent[iSys]);
745  m_meReportSummaryMap->setBinContent(1, iSys + 1, summCont);
746  }
747 
748  // fill the ReportSummaryMap for L1 objects (bin 2 on X)
749  for (unsigned int iMon = m_nrL1Systems; iMon < m_nrL1Systems
750  + m_nrL1Objects; ++iMon) {
751 
752  double summCont = static_cast<double>(m_summaryContent[iMon]);
753  m_meReportSummaryMap->setBinContent(2, iMon - m_nrL1Systems + 1, summCont);
754 
755  }
756 
757 }
758 
759 
760 
std::vector< std::vector< std::string > > m_objectQualityTestHist
std::vector< std::vector< std::string > > m_systemQualityTestName
const QReport * getQReport(const std::string &qtname) const
get QReport corresponding to <qtname> (null pointer if QReport does not exist)
void setBinContent(int binx, double content)
set content of bin (1-D)
void initialize()
private methods
std::vector< edm::ParameterSet > m_l1Objects
std::vector< int > m_objectDisable
std::vector< edm::ParameterSet > m_l1Systems
L1TEventInfoClient(const edm::ParameterSet &)
Constructor.
std::vector< std::string > m_systemLabel
MonitorElement * get(const std::string &path)
Definition: DQMStore.cc:307
void dqmEndJob(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter) override
end job
std::vector< std::string > m_systemLabelExt
void book(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter)
book histograms
MonitorElement * m_meReportSummaryMap
report summary map
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)
const std::string & getName() const
get name of ME
std::vector< std::vector< std::string > > m_systemQualityTestHist
std::vector< std::vector< unsigned int > > m_objectQtSummaryEnabled
void readQtResults(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter)
read quality test results
void Fill(long long x)
std::vector< MonitorElement * > m_meReportSummaryContent
monitor elements to report content for all quality tests
Float_t m_reportSummary
summary report
static const int INVALID
MonitorElement * m_meReportSummary
a summary report
std::vector< std::vector< unsigned int > > m_systemQtSummaryEnabled
static const int DISABLED
~L1TEventInfoClient() override
Destructor.
const std::string & getMessage() const
get message attached to test
Definition: QReport.h:24
TH2F * getTH2F() const
void setTitle(const std::string &title)
set (ie. change) histogram/profile title
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:279
MonitorElement * book2D(Args &&...args)
Definition: DQMStore.h:136
std::vector< int > m_systemDisable
std::vector< std::string > m_objectLabel
std::vector< std::string > m_disableL1Objects
std::vector< QReport * > getQReports() const
get map of QReports
std::vector< std::string > m_disableL1Systems
int getStatus() const
get test status (see Core/interface/QTestStatus.h)
Definition: QReport.h:16
std::vector< std::vector< std::string > > m_objectQualityTestName
size_t m_nrL1Objects
number of L1 trigger objects
void dqmEndLuminosityBlock(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter, const edm::LuminosityBlock &, const edm::EventSetup &) override
HLT enums.
size_t m_nrL1Systems
number of L1 trigger systems
float getQTresult() const
get test result i.e. prob value
Definition: QReport.h:20
MonitorElement * bookFloat(Args &&...args)
Definition: DQMStore.h:112
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:310
std::vector< int > m_summaryContent
void dumpContentMonitorElements(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter)
dump the content of the monitoring elements defined in this module
bool m_verbose
input parameters