CMS 3D CMS Logo

HcalOnlineHarvesting.cc
Go to the documentation of this file.
2 
3 using namespace hcaldqm;
4 using namespace hcaldqm::constants;
5 
7  : DQHarvester(ps), _nBad(0), _nTotal(0), _reportSummaryMap(nullptr) {
8  // NOTE: I will leave Run Summary Generators in place
9  // just not triggering on endJob!
10  _vsumgen.resize(nSummary);
11  _vnames.resize(nSummary);
12  _vmarks.resize(nSummary);
13  for (uint32_t i = 0; i < _vmarks.size(); i++)
14  _vmarks[i] = false;
15  _vnames[fRaw] = "RawTask";
16  _vnames[fDigi] = "DigiTask";
17  _vnames[fReco] = "RecHitTask";
18  _vnames[fTP] = "TPTask";
19  _vnames[fPedestal] = "PedestalTask";
20 
21  _vsumgen[fRaw] = new hcaldqm::RawRunSummary("RawRunHarvesting", _vnames[fRaw], ps);
22  _vsumgen[fDigi] = new hcaldqm::DigiRunSummary("DigiRunHarvesting", _vnames[fDigi], ps);
23  _vsumgen[fReco] = new hcaldqm::RecoRunSummary("RecoRunHarvesting", _vnames[fReco], ps);
24  _vsumgen[fTP] = new hcaldqm::TPRunSummary("TPRunHarvesting", _vnames[fTP], ps);
25  _vsumgen[fPedestal] = new hcaldqm::PedestalRunSummary("PedestalRunHarvesting", _vnames[fPedestal], ps);
26 
27  _thresh_bad_bad = ps.getUntrackedParameter("thresh_bad_bad", 0.05);
28 }
29 
30 /* virtual */ void HcalOnlineHarvesting::beginRun(edm::Run const& r, edm::EventSetup const& es) {
31  DQHarvester::beginRun(r, es);
32  for (std::vector<DQClient*>::const_iterator it = _vsumgen.begin(); it != _vsumgen.end(); ++it)
33  (*it)->beginRun(r, es);
34 }
35 
38  edm::LuminosityBlock const&,
39  edm::EventSetup const&) {
40  // DETERMINE WHICH MODULES ARE PRESENT IN DATA
41  if (ig.get(_subsystem + "/" + _vnames[fRaw] + "/EventsTotal") != nullptr)
42  _vmarks[fRaw] = true;
43  if (ig.get(_subsystem + "/" + _vnames[fDigi] + "/EventsTotal") != nullptr)
44  _vmarks[fDigi] = true;
45  if (ig.get(_subsystem + "/" + _vnames[fTP] + "/EventsTotal") != nullptr)
46  _vmarks[fTP] = true;
47  if (ig.get(_subsystem + "/" + _vnames[fReco] + "/EventsTotal") != nullptr)
48  _vmarks[fReco] = true;
49  if (ig.get(_subsystem + "/" + _vnames[fPedestal] + "/EventsTotal") != nullptr)
50  _vmarks[fPedestal] = true;
51 
52  // CREATE SUMMARY REPORT MAP FED vs LS and LOAD MODULE'S SUMMARIES
53  // NOTE: THIS STATEMENTS WILL BE EXECUTED ONLY ONCE!
54  if (!_reportSummaryMap) {
55  ig.setCurrentFolder(_subsystem + "/EventInfo");
57  ib.book2D("reportSummaryMap", "reportSummaryMap", _maxLS, 1, _maxLS + 1, _vFEDs.size(), 0, _vFEDs.size());
58  for (uint32_t i = 0; i < _vFEDs.size(); i++) {
59  char name[5];
60  sprintf(name, "%d", _vFEDs[i]);
61  _reportSummaryMap->setBinLabel(i + 1, name, 2);
62  }
63  // set LS bit to mark Xaxis as LS axis
65 
66  // INITIALIZE ALL THE MODULES
67  for (uint32_t i = 0; i < _vnames.size(); i++)
69  "SummaryvsLS",
73 
74  // LOAD ONLY THOSE MODULES THAT ARE PRESENT IN DATA
75  for (uint32_t i = 0; i < _vmarks.size(); i++) {
76  if (_vmarks[i])
77  _vcSummaryvsLS[i].load(ig, _subsystem);
78  }
79 
80  // Create a map of bad channels and fill
82  "KnownBadChannels",
87  0);
89  for (uintCompactMap::const_iterator it = _xQuality.begin(); it != _xQuality.end(); ++it)
91 
92  ig.setCurrentFolder(_subsystem + "/EventInfo");
93  _runSummary = ib.book2D("runSummary", "runSummary", 1, 0, 1, 1, 0, 1);
94  }
95 
96  int ifed = 0;
98  if (_ptype != fOffline) { // hidefed2crate
99  for (std::vector<uint32_t>::const_iterator it = _vhashFEDs.begin(); it != _vhashFEDs.end(); ++it) {
100  HcalElectronicsId eid(*it);
102  for (uint32_t im = 0; im < _vmarks.size(); im++)
103  if (_vmarks[im]) {
104  int x = _vcSummaryvsLS[im].getBinContent(eid, _currentLS);
106  fSum += flag;
107  }
108  _reportSummaryMap->setBinContent(_currentLS, ifed + 1, int(fSum._state));
109  ifed++;
110  fTotal += fSum;
111  }
112  }
113 
114  // update the Run Summary
115  // ^^^TEMPORARY AT THIS POINT!
116  if (fTotal._state == hcaldqm::flag::fBAD)
117  _nBad++;
118  _nTotal++;
119  if (double(_nBad) / double(_nTotal) >= _thresh_bad_bad)
121  else if (fTotal._state == hcaldqm::flag::fNCDAQ)
123  else
125 
126  // HF TDC TP efficiency
127  if (_vmarks[fTP]) {
128  MonitorElement* meOccupancy_HF_depth = ig.get("Hcal/TPTask/OccupancyDataHF_depth/OccupancyDataHF_depth");
129  MonitorElement* meOccupancyNoTDC_HF_depth =
130  ig.get("Hcal/TPTask/OccupancyEmulHFNoTDC_depth/OccupancyEmulHFNoTDC_depth");
131  MonitorElement* meOccupancy_HF_ieta = ig.get("Hcal/TPTask/OccupancyDataHF_ieta/OccupancyDataHF_ieta");
132  MonitorElement* meOccupancyNoTDC_HF_ieta =
133  ig.get("Hcal/TPTask/OccupancyEmulHFNoTDC_ieta/OccupancyEmulHFNoTDC_ieta");
134 
135  if (meOccupancy_HF_depth && meOccupancyNoTDC_HF_depth && meOccupancy_HF_ieta && meOccupancyNoTDC_HF_ieta) {
136  TH2F* hOccupancy_HF_depth = meOccupancy_HF_depth->getTH2F();
137  TH2F* hOccupancyNoTDC_HF_depth = meOccupancyNoTDC_HF_depth->getTH2F();
138  TH1F* hOccupancy_HF_ieta = meOccupancy_HF_ieta->getTH1F();
139  TH1F* hOccupancyNoTDC_HF_ieta = meOccupancyNoTDC_HF_ieta->getTH1F();
140 
141  TH2F* hEfficiency_HF_depth = (TH2F*)hOccupancy_HF_depth->Clone();
142  hEfficiency_HF_depth->Divide(hOccupancyNoTDC_HF_depth);
143  TH1F* hEfficiency_HF_ieta = (TH1F*)hOccupancy_HF_ieta->Clone();
144  hEfficiency_HF_ieta->Divide(hOccupancyNoTDC_HF_ieta);
145 
146  ib.setCurrentFolder("Hcal/TPTask");
147 
148  MonitorElement* meEfficiency_HF_depth = ib.book2D("TDCCutEfficiency_depth", hEfficiency_HF_depth);
149  meEfficiency_HF_depth->setEfficiencyFlag();
150  MonitorElement* meEfficiency_HF_ieta = ib.book1D("TDCCutEfficiency_ieta", hEfficiency_HF_ieta);
151  meEfficiency_HF_ieta->setEfficiencyFlag();
152 
153  delete hEfficiency_HF_depth;
154  delete hEfficiency_HF_ieta;
155  }
156  }
157 }
158 
159 /*
160  * NO END JOB PROCESSING FOR ONLINE!
161  */
163 
ContainerXXX< uint32_t > _xQuality
Definition: DQHarvester.h:48
T getUntrackedParameter(std::string const &, T const &) const
std::vector< uint32_t > _vhashFEDs
Definition: DQHarvester.h:46
void setBinContent(int binx, double content)
set content of bin (1-D)
std::vector< bool > _vmarks
TH1F * getTH1F() const
HcalOnlineHarvesting(edm::ParameterSet const &)
virtual CompactMap::const_iterator begin()
Definition: ContainerXXX.h:69
#define nullptr
State _state
Definition: Flag.h:62
TH1 * getTH1() const
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)
void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:361
hcaldqm::Container2D _cKnownBadChannels_depth
virtual CompactMap::const_iterator end()
Definition: ContainerXXX.h:70
std::vector< std::string > _vnames
ProcessingType _ptype
Definition: DQModule.h:43
void setEfficiencyFlag()
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
void _dqmEndLuminosityBlock(DQMStore::IBooker &, DQMStore::IGetter &, edm::LuminosityBlock const &, edm::EventSetup const &) override
void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:268
MonitorElement * _reportSummaryMap
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:106
TH2F * getTH2F() const
MonitorElement * get(std::string const &path)
Definition: DQMStore.cc:303
HcalElectronicsMap const * _emap
Definition: DQHarvester.h:35
void beginRun(edm::Run const &, edm::EventSetup const &) override
MonitorElement * book2D(Args &&...args)
Definition: DQMStore.h:109
virtual void initialize(std::string const &folder, hashfunctions::HashType, quantity::Quantity *, quantity::Quantity *, quantity::Quantity *qz=new quantity::ValueQuantity(quantity::fN), int debug=0)
Definition: Container2D.cc:25
void _dqmEndJob(DQMStore::IBooker &, DQMStore::IGetter &) override
std::vector< hcaldqm::DQClient * > _vsumgen
MonitorElement * _runSummary
void fill(HcalDetId const &) override
Definition: Container2D.cc:52
std::string _subsystem
Definition: DQModule.h:48
int const BIT_OFFSET
Definition: Constants.h:269
int const BIT_AXIS_LS
Definition: Constants.h:273
std::vector< int > _vFEDs
Definition: DQHarvester.h:45
std::vector< hcaldqm::ContainerSingle2D > _vcSummaryvsLS
void book(DQMStore::IBooker &, HcalElectronicsMap const *, std::string subsystem="Hcal", std::string aux="") override
Definition: Container2D.cc:558
Readout chain identification for Hcal.
Definition: Run.h:45
ib
Definition: cuy.py:662