CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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(NULL)
8 {
9 
10  // NOTE: I will leave Run Summary Generators in place
11  // just not triggering on endJob!
12  _vsumgen.resize(nSummary);
13  _vnames.resize(nSummary);
14  _vmarks.resize(nSummary);
15  for (uint32_t i=0; i<_vmarks.size(); i++)
16  _vmarks[i]=false;
17  _vnames[fRaw]="RawTask";
18  _vnames[fDigi]="DigiTask";
19  _vnames[fReco]="RecHitTask";
20  _vnames[fTP]="TPTask";
21  _vnames[fPedestal]="PedestalTask";
22 
23  _vsumgen[fRaw] = new hcaldqm::RawRunSummary("RawRunHarvesting",
24  _vnames[fRaw], ps);
25  _vsumgen[fDigi] = new hcaldqm::DigiRunSummary("DigiRunHarvesting",
26  _vnames[fDigi],ps);
27  _vsumgen[fReco] = new hcaldqm::RecoRunSummary("RecoRunHarvesting",
28  _vnames[fReco], ps);
29  _vsumgen[fTP] = new hcaldqm::TPRunSummary("TPRunHarvesting",
30  _vnames[fTP], ps);
31  _vsumgen[fPedestal] = new hcaldqm::PedestalRunSummary("PedestalRunHarvesting",
32  _vnames[fPedestal], ps);
33 
34  _thresh_bad_bad = ps.getUntrackedParameter("thresh_bad_bad", 0.05);
35 }
36 
37 /* virtual */ void HcalOnlineHarvesting::beginRun(
38  edm::Run const& r, edm::EventSetup const& es)
39 {
40  DQHarvester::beginRun(r,es);
41  for (std::vector<DQClient*>::const_iterator it=_vsumgen.begin();
42  it!=_vsumgen.end(); ++it)
43  (*it)->beginRun(r,es);
44 }
45 
49  edm::EventSetup const&)
50 {
51  // DETERMINE WHICH MODULES ARE PRESENT IN DATA
52  if (ig.get(_subsystem+"/"+_vnames[fRaw]+"/EventsTotal")!=NULL)
53  _vmarks[fRaw]=true;
54  if (ig.get(_subsystem+"/"+_vnames[fDigi]+"/EventsTotal")!=NULL)
55  _vmarks[fDigi]=true;
56  if (ig.get(_subsystem+"/"+_vnames[fTP]+"/EventsTotal")!=NULL)
57  _vmarks[fTP]=true;
58  if (ig.get(_subsystem+"/"+_vnames[fReco]+"/EventsTotal")!=NULL)
59  _vmarks[fReco]=true;
60  if (ig.get(_subsystem+"/"+_vnames[fPedestal]+"/EventsTotal")!=NULL)
61  _vmarks[fPedestal]=true;
62 
63  // CREATE SUMMARY REPORT MAP FED vs LS and LOAD MODULE'S SUMMARIES
64  // NOTE: THIS STATEMENTS WILL BE EXECUTED ONLY ONCE!
65  if (!_reportSummaryMap)
66  {
67  ig.setCurrentFolder(_subsystem+"/EventInfo");
68  _reportSummaryMap = ib.book2D("reportSummaryMap", "reportSummaryMap",
69  _maxLS, 1, _maxLS+1, _vFEDs.size(), 0, _vFEDs.size());
70  for (uint32_t i=0; i<_vFEDs.size(); i++)
71  {
72  char name[5];
73  sprintf(name, "%d", _vFEDs[i]);
74  _reportSummaryMap->setBinLabel(i+1, name, 2);
75  }
76  // set LS bit to mark Xaxis as LS axis
78 
79  // INITIALIZE ALL THE MODULES
80  for (uint32_t i=0; i<_vnames.size(); i++)
82  "SummaryvsLS",
86 
87  // LOAD ONLY THOSE MODULES THAT ARE PRESENT IN DATA
88  for (uint32_t i=0; i<_vmarks.size(); i++)
89  {
90  if (_vmarks[i])
91  _vcSummaryvsLS[i].load(ig, _subsystem);
92  }
93 
94  // Create a map of bad channels and fill
95  _cKnownBadChannels_depth.initialize("RunInfo", "KnownBadChannels",
101  for (uintCompactMap::const_iterator it=_xQuality.begin();
102  it!=_xQuality.end(); ++it)
104 
105  ig.setCurrentFolder(_subsystem+"/EventInfo");
106  _runSummary = ib.book2D("runSummary", "runSummary",
107  1, 0, 1, 1, 0, 1);
108  }
109 
110  int ifed=0;
111  hcaldqm::flag::Flag fTotal("Status", hcaldqm::flag::fNCDAQ);
112  for (std::vector<uint32_t>::const_iterator it=_vhashFEDs.begin();
113  it!=_vhashFEDs.end(); ++it)
114  {
115  HcalElectronicsId eid(*it);
117  for (uint32_t im=0; im<_vmarks.size(); im++)
118  if (_vmarks[im])
119  {
120  int x = _vcSummaryvsLS[im].getBinContent(eid, _currentLS);
121  hcaldqm::flag::Flag flag("Status", (hcaldqm::flag::State)x);
122  fSum+=flag;
123  }
124  _reportSummaryMap->setBinContent(_currentLS, ifed+1, int(fSum._state));
125  ifed++;
126  fTotal+=fSum;
127  }
128 
129  // update the Run Summary
130  // ^^^TEMPORARY AT THIS POINT!
131  if (fTotal._state==hcaldqm::flag::fBAD) _nBad++;
132  _nTotal++;
133  if (double(_nBad)/double(_nTotal)>=_thresh_bad_bad)
135  else if (fTotal._state==hcaldqm::flag::fNCDAQ)
137  else
139 }
140 
141 /*
142  * NO END JOB PROCESSING FOR ONLINE!
143  */
145  DQMStore::IGetter& ig)
146 {}
147 
ContainerXXX< uint32_t > _xQuality
Definition: DQHarvester.h:41
T getUntrackedParameter(std::string const &, T const &) const
std::vector< uint32_t > _vhashFEDs
Definition: DQHarvester.h:39
int i
Definition: DBlmapReader.cc:9
void setBinContent(int binx, double content)
set content of bin (1-D)
int ib
Definition: cuy.py:660
std::vector< bool > _vmarks
HcalOnlineHarvesting(edm::ParameterSet const &)
MonitorElement * get(const std::string &path)
Definition: DQMStore.cc:304
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:17
virtual CompactMap::const_iterator begin()
Definition: ContainerXXX.h:75
State _state
Definition: Flag.h:79
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)
#define NULL
Definition: scimark2.h:8
hcaldqm::Container2D _cKnownBadChannels_depth
virtual void beginRun(edm::Run const &, edm::EventSetup const &)
virtual void _dqmEndLuminosityBlock(DQMStore::IBooker &, DQMStore::IGetter &, edm::LuminosityBlock const &, edm::EventSetup const &)
virtual CompactMap::const_iterator end()
Definition: ContainerXXX.h:77
std::vector< std::string > _vnames
virtual void fill(HcalDetId const &)
Definition: Container2D.cc:59
T x() const
Cartesian x coordinate.
MonitorElement * _reportSummaryMap
std::vector< hcaldqm::DQClient * > _vsumgen
virtual void initialize(std::string const &folder, hashfunctions::HashType, Quantity *, Quantity *, Quantity *qz=new ValueQuantity(quantity::fN), int debug=0)
Definition: Container2D.cc:32
TH1 * getTH1(void) const
HcalElectronicsMap const * _emap
Definition: DQHarvester.h:32
virtual void book(DQMStore::IBooker &, HcalElectronicsMap const *, std::string subsystem="Hcal", std::string aux="")
Definition: Container2D.cc:895
MonitorElement * book2D(Args &&...args)
Definition: DQMStore.h:133
virtual void _dqmEndJob(DQMStore::IBooker &, DQMStore::IGetter &)
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:346
MonitorElement * _runSummary
std::string _subsystem
Definition: DQModule.h:64
int const BIT_OFFSET
Definition: Constants.h:263
int const BIT_AXIS_LS
Definition: Constants.h:267
std::vector< int > _vFEDs
Definition: DQHarvester.h:38
std::vector< hcaldqm::ContainerSingle2D > _vcSummaryvsLS
Readout chain identification for Hcal.
Definition: Run.h:43