CMS 3D CMS Logo

L1EmulatorErrorFlagClient.cc
Go to the documentation of this file.
2 
9 #include "TRandom.h"
10 #include <TF1.h>
11 #include <cstdio>
12 #include <sstream>
13 #include <cmath>
14 #include <TProfile.h>
15 #include <TProfile2D.h>
16 #include <memory>
17 #include <iostream>
18 #include <vector>
19 #include <iomanip>
20 #include <string>
21 #include <fstream>
22 #include "TROOT.h"
23 
25  : m_verbose(parSet.getUntrackedParameter<bool>("verbose", false)),
26  m_l1Systems(parSet.getParameter<std::vector<edm::ParameterSet> >("L1Systems")),
27  m_nrL1Systems(0) {
28  initialize();
29 }
30 
32  //empty
33 }
34 
36  m_nrL1Systems = m_l1Systems.size();
37 
40  m_systemMask.reserve(m_nrL1Systems);
43 
44  int indexSys = 0;
45 
46  for (std::vector<edm::ParameterSet>::const_iterator itSystem = m_l1Systems.begin(); itSystem != m_l1Systems.end();
47  ++itSystem) {
48  m_systemLabel.push_back(itSystem->getParameter<std::string>("SystemLabel"));
49 
50  m_systemLabelExt.push_back(itSystem->getParameter<std::string>("HwValLabel"));
51 
52  m_systemMask.push_back(itSystem->getParameter<unsigned int>("SystemMask"));
53 
54  m_systemFolder.push_back(itSystem->getParameter<std::string>("SystemFolder"));
55 
56  indexSys++;
57  }
58 
59  // [SYS]ErrorFlag histogram
60  for (unsigned int iSys = 0; iSys < m_nrL1Systems; ++iSys) {
61  if (m_systemFolder[iSys].empty()) {
62  m_systemErrorFlag.push_back("L1TEMU/" + m_systemLabel[iSys] + "/" + m_systemLabelExt[iSys] + "ErrorFlag");
63  } else {
64  m_systemErrorFlag.push_back(m_systemFolder[iSys] + "/" + m_systemLabelExt[iSys] + "ErrorFlag");
65  }
66  }
67 
69 }
70 
72  ibooker.setCurrentFolder("L1TEMU/EventInfo");
73 
74  // define a histogram
76  ibooker.book1D("L1SummaryErrorFlagMap", "L1SummaryErrorFlagMap", m_nrL1Systems, 1, m_nrL1Systems + 1);
77 
78  m_meSummaryErrorFlagMap->setAxisTitle("Agreement fraction", 2);
79 
80  for (unsigned int iSys = 0; iSys < m_nrL1Systems; ++iSys) {
82  }
83 }
84 
86  DQMStore::IGetter& igetter,
87  const edm::LuminosityBlock& lumiSeg,
88  const edm::EventSetup& evSetup) {
89  // reset the summary content values
90  for (unsigned int iMon = 0; iMon < m_nrL1Systems; ++iMon) {
91  m_summaryContent[iMon] = 0.;
92  }
93 
94  // for masked systems and objects, set the summary content to -1
95 
96  for (unsigned int iMon = 0; iMon < m_nrL1Systems; ++iMon) {
97  if (m_systemMask[iMon] != 0) {
98  m_summaryContent[iMon] = -1;
99  }
100  }
101 
102  // then fill content for unmasked systems
103 
104  for (unsigned int iSys = 0; iSys < m_nrL1Systems; ++iSys) {
105  float percAgree = -1.;
106 
107  if (m_systemMask[iSys] == 0) {
108  percAgree = setSummary(igetter, iSys);
109 
110  if ((percAgree == -1) && m_verbose) {
111  std::cout << "\nWarning: ErrorFlag histogram for system " << m_systemLabel[iSys] << " empty!" << std::endl;
112  }
113  }
114 
115  m_summaryContent[iSys] = percAgree;
116  }
117 
118  int numUnMaskedSystems = 0;
119  for (unsigned int iMon = 0; iMon < m_nrL1Systems; iMon++) {
120  if (m_summaryContent[iMon] != -1) {
121  numUnMaskedSystems++;
122  }
123  }
124 
125  // fill the SummaryErrorFlagMap histogram for L1 systems
126  // (bin 0 - underflow, bin iSys + 1 overflow)
127  for (unsigned int iSys = 0; iSys < m_nrL1Systems; ++iSys) {
129  }
130 
131  if (m_verbose) {
132  std::cout << "\nSummary report L1EmulatorErrorFlagClient" << std::endl;
133 
134  std::cout << "\nL1 systems: " << m_nrL1Systems << " systems included\n" << std::endl;
135 
136  for (unsigned int iSys = 0; iSys < m_nrL1Systems; ++iSys) {
137  std::cout << std::setw(10) << m_systemLabel[iSys] << std::setw(10) << m_systemLabelExt[iSys] << " \t"
138  << m_systemMask[iSys] << " \t" << std::setw(25) << " m_summaryContent[" << std::setw(2) << iSys
139  << "] = " << m_summaryContent[iSys] << std::endl;
140  }
141  }
142 }
143 
144 // set subsystem agreement value in summary map
145 Float_t L1EmulatorErrorFlagClient::setSummary(DQMStore::IGetter& igetter, const unsigned int& iMon) const {
146  MonitorElement* QHist = igetter.get(m_systemErrorFlag[iMon]);
147 
148  int ntot = 0;
149  for (int i = 0; i < QHist->getNbinsX(); i++) {
150  ntot += QHist->getBinContent(i + 1);
151  }
152 
153  bool isEmpty = (ntot == 0);
154 
155  //errflag bins: agree, loc agree, loc disagree, data only, emul only
156 
157  return isEmpty ? -1. : ((QHist->getBinContent(1)) / (ntot));
158 }
L1EmulatorErrorFlagClient::dqmEndLuminosityBlock
void dqmEndLuminosityBlock(DQMStore::IBooker &, DQMStore::IGetter &, edm::LuminosityBlock const &, edm::EventSetup const &) override
Definition: L1EmulatorErrorFlagClient.cc:85
L1EmulatorErrorFlagClient::m_verbose
bool m_verbose
input parameters
Definition: L1EmulatorErrorFlagClient.h:36
electrons_cff.bool
bool
Definition: electrons_cff.py:372
mps_fire.i
i
Definition: mps_fire.py:355
MessageLogger.h
funct::false
false
Definition: Factorize.h:34
ESHandle.h
edm::LuminosityBlock
Definition: LuminosityBlock.h:50
L1EmulatorErrorFlagClient::m_systemFolder
std::vector< std::string > m_systemFolder
Definition: L1EmulatorErrorFlagClient.h:57
edm
HLT enums.
Definition: AlignableModifier.h:19
L1EmulatorErrorFlagClient::initialize
void initialize()
private methods
Definition: L1EmulatorErrorFlagClient.cc:35
gather_cfg.cout
cout
Definition: gather_cfg.py:144
dqm::implementation::NavigatorBase::setCurrentFolder
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:32
L1EmulatorErrorFlagClient::dqmEndJob
void dqmEndJob(DQMStore::IBooker &, DQMStore::IGetter &) override
Definition: L1EmulatorErrorFlagClient.cc:71
L1EmulatorErrorFlagClient::m_systemMask
std::vector< int > m_systemMask
Definition: L1EmulatorErrorFlagClient.h:56
DQMStore.h
dqm::legacy::MonitorElement
Definition: MonitorElement.h:461
L1EmulatorErrorFlagClient::m_l1Systems
std::vector< edm::ParameterSet > m_l1Systems
Definition: L1EmulatorErrorFlagClient.h:37
L1EmulatorErrorFlagClient::m_summaryContent
std::vector< Float_t > m_summaryContent
summary report
Definition: L1EmulatorErrorFlagClient.h:63
L1EmulatorErrorFlagClient::m_nrL1Systems
size_t m_nrL1Systems
number of L1 trigger systems
Definition: L1EmulatorErrorFlagClient.h:52
L1EmulatorErrorFlagClient::m_meSummaryErrorFlagMap
MonitorElement * m_meSummaryErrorFlagMap
Definition: L1EmulatorErrorFlagClient.h:64
L1EmulatorErrorFlagClient::setSummary
Float_t setSummary(DQMStore::IGetter &igetter, const unsigned int &) const
Definition: L1EmulatorErrorFlagClient.cc:145
L1EmulatorErrorFlagClient::m_systemLabelExt
std::vector< std::string > m_systemLabelExt
Definition: L1EmulatorErrorFlagClient.h:55
Service.h
L1EmulatorErrorFlagClient.h
L1EmulatorErrorFlagClient::m_systemErrorFlag
std::vector< std::string > m_systemErrorFlag
Definition: L1EmulatorErrorFlagClient.h:59
L1EmulatorErrorFlagClient::m_systemLabel
std::vector< std::string > m_systemLabel
Definition: L1EmulatorErrorFlagClient.h:54
L1EmulatorErrorFlagClient::L1EmulatorErrorFlagClient
L1EmulatorErrorFlagClient(const edm::ParameterSet &)
Constructor.
Definition: L1EmulatorErrorFlagClient.cc:24
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
edm::ParameterSet
Definition: ParameterSet.h:36
L1EmulatorErrorFlagClient::~L1EmulatorErrorFlagClient
~L1EmulatorErrorFlagClient() override
Destructor.
Definition: L1EmulatorErrorFlagClient.cc:31
ParameterSet
Definition: Functions.h:16
dqm::impl::MonitorElement::setBinLabel
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)
Definition: MonitorElement.cc:771
edm::EventSetup
Definition: EventSetup.h:57
dqm::impl::MonitorElement::setBinContent
virtual void setBinContent(int binx, double content)
set content of bin (1-D)
Definition: MonitorElement.cc:691
std
Definition: JetResolutionObject.h:76
dqm::implementation::IGetter
Definition: DQMStore.h:484
relativeConstraints.empty
bool empty
Definition: relativeConstraints.py:46
dqm::impl::MonitorElement::getNbinsX
virtual int getNbinsX() const
get # of bins in X-axis
Definition: MonitorElement.cc:574
dqm::implementation::IGetter::get
virtual MonitorElement * get(std::string const &fullpath) const
Definition: DQMStore.cc:651
EventSetup.h
dqm::implementation::IBooker
Definition: DQMStore.h:43
ParameterSet.h
dqm::impl::MonitorElement::setAxisTitle
virtual void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
Definition: MonitorElement.cc:800
dqm::impl::MonitorElement::getBinContent
virtual double getBinContent(int binx) const
get content of bin (1-D)
Definition: MonitorElement.cc:592
dqm::implementation::IBooker::book1D
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98