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 
37 
38 #include <TH2F.h>
39 #include "TROOT.h"
40 
41 // constructor
43  : m_verbose(parSet.getUntrackedParameter<bool>("verbose", false)),
44  m_monitorDir(parSet.getUntrackedParameter<std::string>("monitorDir", "")),
45  m_runInEventLoop(parSet.getUntrackedParameter<bool>("runInEventLoop", false)),
46  m_runInEndLumi(parSet.getUntrackedParameter<bool>("runInEndLumi", false)),
47  m_runInEndRun(parSet.getUntrackedParameter<bool>("runInEndRun", false)),
48  m_runInEndJob(parSet.getUntrackedParameter<bool>("runInEndJob", false)),
49  m_l1Systems(parSet.getParameter<std::vector<edm::ParameterSet> >("L1Systems")),
50  m_l1Objects(parSet.getParameter<std::vector<edm::ParameterSet> >("L1Objects")),
51  m_disableL1Systems(parSet.getParameter<std::vector<std::string> >("DisableL1Systems")),
52  m_disableL1Objects(parSet.getParameter<std::vector<std::string> >("DisableL1Objects")),
53  m_nrL1Systems(0),
54  m_nrL1Objects(0),
55  m_totalNrQtSummaryEnabled(0) {
56  initialize();
57 }
58 
59 // destructor
61  //empty
62 }
63 
65  if (m_verbose) {
66  std::cout << "\nMonitor directory = " << m_monitorDir << std::endl;
67  }
68 
69  // L1 systems
70 
71  m_nrL1Systems = m_l1Systems.size();
72 
76 
77  // on average five quality test per system - just a best guess
81 
82  int indexSys = 0;
83 
84  int totalNrQualityTests = 0;
85 
86  for (std::vector<edm::ParameterSet>::const_iterator itSystem = m_l1Systems.begin(); itSystem != m_l1Systems.end();
87  ++itSystem) {
88  m_systemLabel.push_back(itSystem->getParameter<std::string>("SystemLabel"));
89 
90  m_systemLabelExt.push_back(itSystem->getParameter<std::string>("HwValLabel"));
91 
92  m_systemDisable.push_back(itSystem->getParameter<unsigned int>("SystemDisable"));
93  // check the additional disable flag from m_disableL1Systems
94  for (std::vector<std::string>::const_iterator itSys = m_disableL1Systems.begin(); itSys != m_disableL1Systems.end();
95  ++itSys) {
96  if (*itSys == m_systemLabel[indexSys]) {
97  m_systemDisable[indexSys] = 1;
98  }
99  }
100 
101  std::vector<edm::ParameterSet> qTests = itSystem->getParameter<std::vector<edm::ParameterSet> >("QualityTests");
102  size_t qtPerSystem = qTests.size();
103 
104  std::vector<std::string> qtNames;
105  qtNames.reserve(qtPerSystem);
106 
107  std::vector<std::string> qtFullPathHists;
108  qtFullPathHists.reserve(qtPerSystem);
109 
110  std::vector<unsigned int> qtSumEnabled;
111  qtSumEnabled.reserve(qtPerSystem);
112 
113  for (std::vector<edm::ParameterSet>::const_iterator itQT = qTests.begin(); itQT != qTests.end(); ++itQT) {
114  totalNrQualityTests++;
115 
116  qtNames.push_back(itQT->getParameter<std::string>("QualityTestName"));
117 
118  qtFullPathHists.push_back(itQT->getParameter<std::string>("QualityTestHist"));
119 
120  unsigned int qtEnabled = itQT->getParameter<unsigned int>("QualityTestSummaryEnabled");
121 
122  qtSumEnabled.push_back(qtEnabled);
123 
124  if (qtEnabled) {
126  }
127  }
128 
129  m_systemQualityTestName.push_back(qtNames);
130  m_systemQualityTestHist.push_back(qtFullPathHists);
131  m_systemQtSummaryEnabled.push_back(qtSumEnabled);
132 
133  indexSys++;
134  }
135 
136  // L1 objects
137 
138  //
139  m_nrL1Objects = m_l1Objects.size();
140 
141  m_objectLabel.reserve(m_nrL1Objects);
143 
144  // on average five quality test per object - just a best guess
148 
149  int indexObj = 0;
150 
151  for (std::vector<edm::ParameterSet>::const_iterator itObject = m_l1Objects.begin(); itObject != m_l1Objects.end();
152  ++itObject) {
153  m_objectLabel.push_back(itObject->getParameter<std::string>("ObjectLabel"));
154 
155  m_objectDisable.push_back(itObject->getParameter<unsigned int>("ObjectDisable"));
156  // check the additional disable flag from m_disableL1Objects
157  for (std::vector<std::string>::const_iterator itObj = m_disableL1Objects.begin(); itObj != m_disableL1Objects.end();
158  ++itObj) {
159  if (*itObj == m_objectLabel[indexObj]) {
160  m_objectDisable[indexObj] = 1;
161  }
162  }
163 
164  std::vector<edm::ParameterSet> qTests = itObject->getParameter<std::vector<edm::ParameterSet> >("QualityTests");
165  size_t qtPerObject = qTests.size();
166 
167  std::vector<std::string> qtNames;
168  qtNames.reserve(qtPerObject);
169 
170  std::vector<std::string> qtFullPathHists;
171  qtFullPathHists.reserve(qtPerObject);
172 
173  std::vector<unsigned int> qtSumEnabled;
174  qtSumEnabled.reserve(qtPerObject);
175 
176  for (std::vector<edm::ParameterSet>::const_iterator itQT = qTests.begin(); itQT != qTests.end(); ++itQT) {
177  totalNrQualityTests++;
178 
179  qtNames.push_back(itQT->getParameter<std::string>("QualityTestName"));
180 
181  qtFullPathHists.push_back(itQT->getParameter<std::string>("QualityTestHist"));
182 
183  unsigned int qtEnabled = itQT->getParameter<unsigned int>("QualityTestSummaryEnabled");
184 
185  qtSumEnabled.push_back(qtEnabled);
186 
187  if (qtEnabled) {
189  }
190  }
191 
192  m_objectQualityTestName.push_back(qtNames);
193  m_objectQualityTestHist.push_back(qtFullPathHists);
194  m_objectQtSummaryEnabled.push_back(qtSumEnabled);
195 
196  indexObj++;
197  }
198 
200  m_meReportSummaryContent.reserve(totalNrQualityTests);
201 }
202 
204  DQMStore::IGetter& igetter,
205  const edm::LuminosityBlock& lumiSeg,
206  const edm::EventSetup& evSetup) {
207  if (m_runInEndLumi) {
208  book(ibooker, igetter);
209  readQtResults(ibooker, igetter);
210 
211  if (m_verbose) {
212  std::cout << "\n L1TEventInfoClient::endLuminosityBlock\n" << std::endl;
213  dumpContentMonitorElements(ibooker, igetter);
214  }
215  }
216 }
217 
219  book(ibooker, igetter);
220 
221  readQtResults(ibooker, igetter);
222 
223  if (m_verbose) {
224  std::cout << "\n L1TEventInfoClient::endRun\n" << std::endl;
225  dumpContentMonitorElements(ibooker, igetter);
226  }
227 }
228 
230  std::cout << "\nSummary report " << std::endl;
231 
232  // summary content
233 
235 
236  std::cout << "\nSummary content per system and object as filled in histogram\n " << m_meReportSummaryMap->getName()
237  << std::endl;
238 
239  if (!me) {
240  std::cout << "\nNo histogram " << m_meReportSummaryMap->getName()
241  << "\nNo summary content per system and object as filled in histogram.\n " << std::endl;
242  return;
243  }
244 
245  TH2F* hist = me->getTH2F();
246 
247  const int nBinsX = hist->GetNbinsX();
248  const int nBinsY = hist->GetNbinsY();
249  std::cout << nBinsX << " " << nBinsY;
250 
251  std::vector<std::vector<int> > meReportSummaryMap(nBinsX, std::vector<int>(nBinsY));
252 
253  // for (int iBinX = 0; iBinX < nBinsX; iBinX++) {
254  // for (int iBinY = 0; iBinY < nBinsY; iBinY++) {
255  // meReportSummaryMap[iBinX][iBinY]
256  // = static_cast<int>(me->GetBinContent(iBinX + 1, iBinY + 1));
257  // }
258  // }
259 
260  std::cout << "\nL1 systems: " << m_nrL1Systems << " systems included\n"
261  << "\n Summary content size: " << (m_summaryContent.size()) << std::endl;
262 
263  for (unsigned int iSys = 0; iSys < m_nrL1Systems; ++iSys) {
264  std::cout << std::setw(10) << m_systemLabel[iSys] << std::setw(10) << m_systemLabelExt[iSys] << " \t"
265  << m_systemDisable[iSys] << " \t" << std::setw(25) << " m_summaryContent[" << std::setw(2) << iSys
266  << "] = " << meReportSummaryMap[0][iSys] << std::endl;
267  }
268 
269  std::cout << "\n L1 trigger objects: " << m_nrL1Objects << " objects included\n" << std::endl;
270 
271  for (unsigned int iMon = m_nrL1Systems; iMon < m_nrL1Systems + m_nrL1Objects; ++iMon) {
272  std::cout << std::setw(20) << m_objectLabel[iMon - m_nrL1Systems] << " \t" << m_objectDisable[iMon - m_nrL1Systems]
273  << " \t" << std::setw(25) << " m_summaryContent[" << std::setw(2) << iMon << "] = \t"
274  << m_summaryContent[iMon] << std::endl;
275  }
276 
277  std::cout << std::endl;
278 
279  // quality tests
280 
281  std::cout << "\nQuality test results as filled in "
282  << "\n " << m_monitorDir << "/EventInfo/reportSummaryContents\n"
283  << "\n Total number of quality tests: " << (m_meReportSummaryContent.size()) << "\n"
284  << std::endl;
285 
286  for (std::vector<MonitorElement*>::const_iterator itME = m_meReportSummaryContent.begin();
287  itME != m_meReportSummaryContent.end();
288  ++itME) {
289  std::cout << std::setw(50) << (*itME)->getName() << " \t" << std::setw(25) << (*itME)->getFloatValue() << std::endl;
290  }
291 
292  std::cout << std::endl;
293 }
294 
296  std::string dirEventInfo = m_monitorDir + "/EventInfo";
297 
298  ibooker.setCurrentFolder(dirEventInfo);
299 
300  // ...and book it again
301  m_meReportSummary = ibooker.bookFloat("reportSummary");
302 
303  // initialize reportSummary to 1
304 
305  if (m_meReportSummary) {
307  }
308 
309  // define float histograms for reportSummaryContents (one histogram per quality test),
310  // initialize them to zero
311  // initialize also m_summaryContent to dqm::qstatus::DISABLED
312 
313  ibooker.setCurrentFolder(dirEventInfo + "/reportSummaryContents");
314  // general counters:
315  // iAllQTest: all quality tests for all systems and objects
316  int iAllQTest = 0;
317 
318  for (unsigned int iMon = 0; iMon < m_nrL1Systems; ++iMon) {
320 
321  const std::vector<std::string>& sysQtName = m_systemQualityTestName[iMon];
322 
323  for (std::vector<std::string>::const_iterator itQtName = sysQtName.begin(); itQtName != sysQtName.end();
324  ++itQtName) {
325  const std::string hStr = m_monitorDir + "_L1Sys_" + m_systemLabel[iMon] + "_" + (*itQtName);
326 
327  m_meReportSummaryContent.push_back(ibooker.bookFloat(hStr));
328  m_meReportSummaryContent[iAllQTest]->Fill(0.);
329 
330  iAllQTest++;
331  }
332  }
333 
334  for (unsigned int iMon = 0; iMon < m_nrL1Objects; ++iMon) {
336 
337  const std::vector<std::string>& objQtName = m_objectQualityTestName[iMon];
338 
339  for (std::vector<std::string>::const_iterator itQtName = objQtName.begin(); itQtName != objQtName.end();
340  ++itQtName) {
341  const std::string hStr = m_monitorDir + "_L1Obj_" + m_objectLabel[iMon] + "_" + (*itQtName);
342 
343  m_meReportSummaryContent.push_back(ibooker.bookFloat(hStr));
344  m_meReportSummaryContent[iAllQTest]->Fill(0.);
345 
346  iAllQTest++;
347  }
348  }
349 
350  ibooker.setCurrentFolder(dirEventInfo);
351 
352  // define a histogram with two bins on X and maximum of m_nrL1Systems, m_nrL1Objects on Y
353 
354  int nBinsY = std::max(m_nrL1Systems, m_nrL1Objects);
355 
356  m_meReportSummaryMap = ibooker.book2D("reportSummaryMap", "reportSummaryMap", 2, 1, 3, nBinsY, 1, nBinsY + 1);
357 
358  if (m_monitorDir == "L1TEMU") {
359  m_meReportSummaryMap->setTitle("L1TEMU: L1 Emulator vs Data Report Summary Map");
360 
361  } else if (m_monitorDir == "L1T") {
362  m_meReportSummaryMap->setTitle("L1T: L1 Trigger Data Report Summary Map");
363  } else {
364  // do nothing
365  }
366 
369 
370  m_meReportSummaryMap->setBinLabel(1, "L1 systems", 1);
371  m_meReportSummaryMap->setBinLabel(2, "L1 objects", 1);
372 
373  for (int iBin = 0; iBin < nBinsY; ++iBin) {
374  m_meReportSummaryMap->setBinLabel(iBin + 1, " ", 2);
375  }
376 }
377 
379  // initialize summary content, summary sum and ReportSummaryContent float histograms
380  // for all L1 systems and L1 objects
381 
382  for (std::vector<int>::iterator it = m_summaryContent.begin(); it != m_summaryContent.end(); ++it) {
383  (*it) = dqm::qstatus::DISABLED;
384  }
385 
386  m_summarySum = 0.;
387 
388  for (std::vector<MonitorElement*>::iterator itME = m_meReportSummaryContent.begin();
389  itME != m_meReportSummaryContent.end();
390  ++itME) {
391  (*itME)->Fill(0.);
392  }
393 
394  // general counters:
395  // iAllQTest: all quality tests for all systems and objects
396  // iAllMon: all monitored systems and objects
397  int iAllQTest = 0;
398  int iAllMon = 0;
399 
400  // quality tests for all L1 systems
401 
402  for (unsigned int iSys = 0; iSys < m_nrL1Systems; ++iSys) {
403  // get the reports for each quality test
404 
405  const std::vector<std::string>& sysQtName = m_systemQualityTestName[iSys];
406  const std::vector<std::string>& sysQtHist = m_systemQualityTestHist[iSys];
407  const std::vector<unsigned int>& sysQtSummaryEnabled = m_systemQtSummaryEnabled[iSys];
408 
409  // pro system counter for quality tests
410  int iSysQTest = 0;
411 
412  for (std::vector<std::string>::const_iterator itQtName = sysQtName.begin(); itQtName != sysQtName.end();
413  ++itQtName) {
414  // get results, status and message
415 
416  MonitorElement* qHist = igetter.get(sysQtHist[iSysQTest]);
417 
418  if (qHist) {
419  const std::vector<QReport*> qtVec = qHist->getQReports();
420 
421  if (m_verbose) {
422  std::cout << "\nNumber of quality tests "
423  << " for histogram " << sysQtHist[iSysQTest] << ": " << qtVec.size() << "\n"
424  << std::endl;
425  }
426 
427  const QReport* sysQReport = qHist->getQReport(*itQtName);
428  if (sysQReport) {
429  const float sysQtResult = sysQReport->getQTresult();
430  const int sysQtStatus = sysQReport->getStatus();
431  const std::string& sysQtMessage = sysQReport->getMessage();
432 
433  if (m_verbose) {
434  std::cout << "\n"
435  << (*itQtName) << " quality test:"
436  << "\n result: " << sysQtResult << "\n status: " << sysQtStatus
437  << "\n message: " << sysQtMessage << "\n"
438  << "\nFilling m_meReportSummaryContent[" << iAllQTest << "] with value " << sysQtResult << "\n"
439  << std::endl;
440  }
441 
442  m_meReportSummaryContent[iAllQTest]->Fill(sysQtResult);
443 
444  // for the summary map, keep the highest status value ("ERROR") of all tests
445  // which are considered for the summary plot
446  if (sysQtSummaryEnabled[iSysQTest]) {
447  if (sysQtStatus > m_summaryContent[iAllMon]) {
448  m_summaryContent[iAllMon] = sysQtStatus;
449  }
450 
451  m_summarySum += sysQtResult;
452  }
453 
454  } else {
455  // for the summary map, if the test was not found but it is assumed to be
456  // considered for the summary plot, set it to dqm::qstatus::INVALID
457 
458  int sysQtStatus = dqm::qstatus::INVALID;
459 
460  if (sysQtSummaryEnabled[iSysQTest]) {
461  if (sysQtStatus > m_summaryContent[iAllMon]) {
462  m_summaryContent[iAllMon] = sysQtStatus;
463  }
464  }
465 
466  m_meReportSummaryContent[iAllQTest]->Fill(0.);
467 
468  if (m_verbose) {
469  std::cout << "\n" << (*itQtName) << " quality test not found\n" << std::endl;
470  }
471  }
472 
473  } else {
474  // for the summary map, if the histogram was not found but it is assumed
475  // to have a test be considered for the summary plot, set it to dqm::qstatus::INVALID
476 
477  int sysQtStatus = dqm::qstatus::INVALID;
478 
479  if (sysQtSummaryEnabled[iSysQTest]) {
480  if (sysQtStatus > m_summaryContent[iAllMon]) {
481  m_summaryContent[iAllMon] = sysQtStatus;
482  }
483  }
484 
485  m_meReportSummaryContent[iAllQTest]->Fill(0.);
486 
487  if (m_verbose) {
488  std::cout << "\nHistogram " << sysQtHist[iSysQTest] << " not found\n" << std::endl;
489  }
490  }
491 
492  // increase counters for quality tests
493  iSysQTest++;
494  iAllQTest++;
495  }
496 
497  iAllMon++;
498  }
499 
500  // quality tests for all L1 objects
501 
502  for (unsigned int iObj = 0; iObj < m_nrL1Objects; ++iObj) {
503  // get the reports for each quality test
504 
505  const std::vector<std::string>& objQtName = m_objectQualityTestName[iObj];
506  const std::vector<std::string>& objQtHist = m_objectQualityTestHist[iObj];
507  const std::vector<unsigned int>& objQtSummaryEnabled = m_objectQtSummaryEnabled[iObj];
508 
509  // pro object counter for quality tests
510  int iObjQTest = 0;
511 
512  for (std::vector<std::string>::const_iterator itQtName = objQtName.begin(); itQtName != objQtName.end();
513  ++itQtName) {
514  // get results, status and message
515 
516  MonitorElement* qHist = igetter.get(objQtHist[iObjQTest]);
517 
518  if (qHist) {
519  const std::vector<QReport*> qtVec = qHist->getQReports();
520 
521  if (m_verbose) {
522  std::cout << "\nNumber of quality tests "
523  << " for histogram " << objQtHist[iObjQTest] << ": " << qtVec.size() << "\n"
524  << std::endl;
525  }
526 
527  const QReport* objQReport = qHist->getQReport(*itQtName);
528  if (objQReport) {
529  const float objQtResult = objQReport->getQTresult();
530  const int objQtStatus = objQReport->getStatus();
531  const std::string& objQtMessage = objQReport->getMessage();
532 
533  if (m_verbose) {
534  std::cout << "\n"
535  << (*itQtName) << " quality test:"
536  << "\n result: " << objQtResult << "\n status: " << objQtStatus
537  << "\n message: " << objQtMessage << "\n"
538  << "\nFilling m_meReportSummaryContent[" << iAllQTest << "] with value " << objQtResult << "\n"
539  << std::endl;
540  }
541 
542  m_meReportSummaryContent[iAllQTest]->Fill(objQtResult);
543 
544  // for the summary map, keep the highest status value ("ERROR") of all tests
545  // which are considered for the summary plot
546  if (objQtSummaryEnabled[iObjQTest]) {
547  if (objQtStatus > m_summaryContent[iAllMon]) {
548  m_summaryContent[iAllMon] = objQtStatus;
549  }
550 
551  m_summarySum += objQtResult;
552  }
553 
554  } else {
555  // for the summary map, if the test was not found but it is assumed to be
556  // considered for the summary plot, set it to dqm::qstatus::INVALID
557 
558  int objQtStatus = dqm::qstatus::INVALID;
559 
560  if (objQtSummaryEnabled[iObjQTest]) {
561  if (objQtStatus > m_summaryContent[iAllMon]) {
562  m_summaryContent[iAllMon] = objQtStatus;
563  }
564  }
565 
566  m_meReportSummaryContent[iAllQTest]->Fill(0.);
567 
568  if (m_verbose) {
569  std::cout << "\n" << (*itQtName) << " quality test not found\n" << std::endl;
570  }
571  }
572 
573  } else {
574  // for the summary map, if the histogram was not found but it is assumed
575  // to have a test be considered for the summary plot, set it to dqm::qstatus::INVALID
576 
577  int objQtStatus = dqm::qstatus::INVALID;
578 
579  if (objQtSummaryEnabled[iObjQTest]) {
580  if (objQtStatus > m_summaryContent[iAllMon]) {
581  m_summaryContent[iAllMon] = objQtStatus;
582  }
583  }
584 
585  m_meReportSummaryContent[iAllQTest]->Fill(0.);
586 
587  if (m_verbose) {
588  std::cout << "\nHistogram " << objQtHist[iObjQTest] << " not found\n" << std::endl;
589  }
590  }
591 
592  // increase counters for quality tests
593  iObjQTest++;
594  iAllQTest++;
595  }
596 
597  iAllMon++;
598  }
599 
600  // reportSummary value
602  if (m_meReportSummary) {
604  }
605 
606  // fill the ReportSummaryMap for L1 systems (bin 1 on X)
607  for (unsigned int iSys = 0; iSys < m_nrL1Systems; ++iSys) {
608  double summCont = static_cast<double>(m_summaryContent[iSys]);
609  m_meReportSummaryMap->setBinContent(1, iSys + 1, summCont);
610  }
611 
612  // fill the ReportSummaryMap for L1 objects (bin 2 on X)
613  for (unsigned int iMon = m_nrL1Systems; iMon < m_nrL1Systems + m_nrL1Objects; ++iMon) {
614  double summCont = static_cast<double>(m_summaryContent[iMon]);
615  m_meReportSummaryMap->setBinContent(2, iMon - m_nrL1Systems + 1, summCont);
616  }
617 }
std::vector< std::vector< std::string > > m_objectQualityTestHist
std::vector< std::vector< std::string > > m_systemQualityTestName
virtual void setTitle(const std::string &title)
set (ie. change) histogram/profile title
MonitorElement * bookFloat(TString const &name, FUNC onbooking=NOOP())
Definition: DQMStore.h:80
void initialize()
private methods
std::vector< edm::ParameterSet > m_l1Objects
std::vector< int > m_objectDisable
std::vector< edm::ParameterSet > m_l1Systems
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:36
L1TEventInfoClient(const edm::ParameterSet &)
Constructor.
std::vector< std::string > m_systemLabel
float getQTresult() const
get test result i.e. prob value
std::vector< MonitorElementData::QReport * > getQReports() const
get map of QReports
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
std::vector< std::vector< std::string > > m_systemQualityTestHist
std::vector< std::vector< unsigned int > > m_objectQtSummaryEnabled
std::vector< MonitorElement * > m_meReportSummaryContent
monitor elements to report content for all quality tests
void readQtResults(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter)
read quality test results
void Fill(long long x)
Float_t m_reportSummary
summary report
static const int INVALID
MonitorElement * m_meReportSummary
a summary report
const MonitorElementData::QReport * getQReport(const std::string &qtname) const
get QReport corresponding to <qtname> (null pointer if QReport does not exist)
std::vector< std::vector< unsigned int > > m_systemQtSummaryEnabled
static const int DISABLED
~L1TEventInfoClient() override
Destructor.
virtual 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 & getMessage() const
get message attached to test
virtual void setBinContent(int binx, double content)
set content of bin (1-D)
std::vector< int > m_systemDisable
std::vector< std::string > m_objectLabel
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
Definition: DQMStore.h:212
std::vector< std::string > m_disableL1Objects
virtual MonitorElement * get(std::string const &fullpath) const
Definition: DQMStore.cc:712
std::vector< std::string > m_disableL1Systems
std::vector< std::vector< std::string > > m_objectQualityTestName
size_t m_nrL1Objects
number of L1 trigger objects
const std::string & getName() const
get name of ME
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
int getStatus() const
get test status
std::vector< int > m_summaryContent
void dumpContentMonitorElements(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter)
dump the content of the monitoring elements defined in this module
virtual void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
bool m_verbose
input parameters