CMS 3D CMS Logo

MESetEcal.cc
Go to the documentation of this file.
2 
5 
6 #include <limits>
7 #include <sstream>
8 
9 namespace ecaldqm {
11  binning::ObjectType _otype,
12  binning::BinningType _btype,
14  unsigned _logicalDimensions,
15  binning::AxisSpecs const *_xaxis /* = 0*/,
16  binning::AxisSpecs const *_yaxis /* = 0*/,
17  binning::AxisSpecs const *_zaxis /* = 0*/)
18  : MESet(_fullPath, _otype, _btype, _kind),
19  logicalDimensions_(_logicalDimensions),
20  xaxis_(_xaxis ? new binning::AxisSpecs(*_xaxis) : nullptr),
21  yaxis_(_yaxis ? new binning::AxisSpecs(*_yaxis) : nullptr),
22  zaxis_(_zaxis ? new binning::AxisSpecs(*_zaxis) : nullptr) {
23  if (btype_ == binning::kUser && ((logicalDimensions_ > 0 && !xaxis_) || (logicalDimensions_ > 1 && !yaxis_)))
24  throw_("Need axis specifications");
25  }
26 
28  : MESet(_orig),
29  logicalDimensions_(_orig.logicalDimensions_),
30  xaxis_(_orig.xaxis_ ? new binning::AxisSpecs(*_orig.xaxis_) : nullptr),
31  yaxis_(_orig.yaxis_ ? new binning::AxisSpecs(*_orig.yaxis_) : nullptr),
32  zaxis_(_orig.zaxis_ ? new binning::AxisSpecs(*_orig.zaxis_) : nullptr) {}
33 
35  delete xaxis_;
36  delete yaxis_;
37  delete zaxis_;
38  }
39 
41  delete xaxis_;
42  delete yaxis_;
43  delete zaxis_;
44  xaxis_ = nullptr;
45  yaxis_ = nullptr;
46  zaxis_ = nullptr;
47 
48  MESetEcal const *pRhs(dynamic_cast<MESetEcal const *>(&_rhs));
49  if (pRhs) {
51  if (pRhs->xaxis_)
52  xaxis_ = new binning::AxisSpecs(*pRhs->xaxis_);
53  if (pRhs->yaxis_)
54  yaxis_ = new binning::AxisSpecs(*pRhs->yaxis_);
55  if (pRhs->zaxis_)
56  zaxis_ = new binning::AxisSpecs(*pRhs->zaxis_);
57  }
58  return MESet::operator=(_rhs);
59  }
60 
61  MESet *MESetEcal::clone(std::string const &_path /* = ""*/) const {
63  if (!_path.empty())
64  path_ = _path;
65  MESet *copy(new MESetEcal(*this));
66  path_ = path;
67  return copy;
68  }
69 
71  using namespace std;
72 
73  auto oldscope = MonitorElementData::Scope::RUN;
74  if (lumiFlag_)
75  oldscope = _ibooker.setScope(MonitorElementData::Scope::LUMI);
76 
77  clear();
78 
79  vector<string> mePaths(generatePaths());
80 
81  for (unsigned iME(0); iME < mePaths.size(); iME++) {
82  string &path(mePaths[iME]);
83  if (path.find('%') != string::npos)
84  throw_("book() called with incompletely formed path [" + path + "]");
85 
86  binning::ObjectType actualObject(binning::getObject(otype_, iME));
87 
89 
90  bool isHistogram(logicalDimensions_ > 0);
91  bool isMap(logicalDimensions_ > 1);
92 
93  if (isHistogram) {
94  if (xaxis_)
95  xaxis = *xaxis_;
96  if (yaxis_)
97  yaxis = *yaxis_;
98  if (zaxis_)
99  zaxis = *zaxis_;
100 
101  if (xaxis.nbins == 0) { // uses preset
102  binning::AxisSpecs xdef(binning::getBinning(actualObject, btype_, isMap, 1, iME));
103  if (xaxis.labels || !xaxis.title.empty()) { // PSet specifies title / label only
104  std::string *labels(xaxis.labels);
105  std::string title(xaxis.title);
106  xaxis = xdef;
107  delete[] xaxis.labels;
108  xaxis.labels = labels;
109  xaxis.title = title;
110  } else
111  xaxis = xdef;
112  }
113 
114  if (isMap && yaxis.nbins == 0) {
115  binning::AxisSpecs ydef(binning::getBinning(actualObject, btype_, isMap, 2, iME));
116  if (yaxis.labels || !yaxis.title.empty()) { // PSet specifies title / label only
117  std::string *labels(yaxis.labels);
118  std::string title(yaxis.title);
119  yaxis = ydef;
120  delete[] yaxis.labels;
121  yaxis.labels = labels;
122  yaxis.title = title;
123  } else
124  yaxis = ydef;
125  }
126 
127  if (yaxis.high - yaxis.low < 1.e-10) {
130  }
131 
132  if (zaxis.high - zaxis.low < 1.e-10) {
135  }
136  }
137 
138  size_t slashPos(path.find_last_of('/'));
139  string name(path.substr(slashPos + 1));
140  _ibooker.cd();
141  _ibooker.setCurrentFolder(path.substr(0, slashPos));
142 
143  MonitorElement *me(nullptr);
144 
145  switch (kind_) {
147  me = _ibooker.bookFloat(name);
148 
149  break;
150 
152  if (xaxis.edges)
153  me = _ibooker.book1D(name, name, xaxis.nbins, xaxis.edges);
154  else
155  me = _ibooker.book1D(name, name, xaxis.nbins, xaxis.low, xaxis.high);
156 
157  break;
158 
160  if (xaxis.edges) {
161  // DQMStore bookProfile interface uses double* for bin edges
162  double *edges(new double[xaxis.nbins + 1]);
163  std::copy(xaxis.edges, xaxis.edges + xaxis.nbins + 1, edges);
164  me = _ibooker.bookProfile(name, name, xaxis.nbins, edges, yaxis.low, yaxis.high, "");
165  delete[] edges;
166  } else
167  me = _ibooker.bookProfile(name, name, xaxis.nbins, xaxis.low, xaxis.high, yaxis.low, yaxis.high, "");
168 
169  break;
170 
172  if (xaxis.edges || yaxis.edges) {
174  for (int iSpec(0); iSpec < 2; iSpec++) {
175  if (!specs[iSpec]->edges) {
176  specs[iSpec]->edges = new float[specs[iSpec]->nbins + 1];
177  int nbins(specs[iSpec]->nbins);
178  double low(specs[iSpec]->low), high(specs[iSpec]->high);
179  for (int i(0); i < nbins + 1; i++)
180  specs[iSpec]->edges[i] = low + (high - low) / nbins * i;
181  }
182  }
183  me = _ibooker.book2D(name, name, xaxis.nbins, xaxis.edges, yaxis.nbins, yaxis.edges);
184  } else
185  me = _ibooker.book2D(name, name, xaxis.nbins, xaxis.low, xaxis.high, yaxis.nbins, yaxis.low, yaxis.high);
186 
187  break;
188 
190  if (zaxis.edges) {
191  zaxis.low = zaxis.edges[0];
192  zaxis.high = zaxis.edges[zaxis.nbins];
193  }
194  if (xaxis.edges || yaxis.edges)
195  throw_("Variable bin size for 2D profile not implemented");
196  me = _ibooker.bookProfile2D(name,
197  name,
198  xaxis.nbins,
199  xaxis.low,
200  xaxis.high,
201  yaxis.nbins,
202  yaxis.low,
203  yaxis.high,
204  zaxis.low,
205  zaxis.high,
206  "");
207 
208  break;
209 
210  default:
211  break;
212  }
213 
214  if (!me)
215  throw_("ME could not be booked");
216 
217  if (isHistogram) {
218  me->setAxisTitle(xaxis.title, 1);
219  me->setAxisTitle(yaxis.title, 2);
220  if (isMap)
221  me->setAxisTitle(zaxis.title, 3);
222 
223  if (xaxis.labels) {
224  for (int iBin(1); iBin <= xaxis.nbins; ++iBin)
225  me->setBinLabel(iBin, xaxis.labels[iBin - 1], 1);
226  }
227  if (yaxis.labels) {
228  for (int iBin(1); iBin <= yaxis.nbins; ++iBin)
229  me->setBinLabel(iBin, yaxis.labels[iBin - 1], 2);
230  }
231  if (zaxis.labels) {
232  for (int iBin(1); iBin <= zaxis.nbins; ++iBin)
233  me->setBinLabel(iBin, zaxis.labels[iBin - 1], 3);
234  }
235 
236  /* FIX: In ROOT 6.0.12 bit 20 is used by ROOT (bit 19 was already in use
237  in 6.0.x). Talking with the ROOT team, users should never use SetBit for
238  their own purpose since those bits are reserved for ROOT internally. See
239  https://github.com/cms-sw/cmssw/issues/21423 for some alternative ways of
240  attaching additional information to a TH1
241 
242  // For plot tagging in RenderPlugin; default values are 1 for both
243  // bits 19 - 23 are free in TH1::fBits
244  // can only pack object + logical dimensions into 5 bits (4 bits for
245  object, 1 bit for dim (1 -> dim >= 2))
246  me->getTH1()->SetBit(uint32_t(actualObject + 1) << 20);
247  if(isMap) me->getTH1()->SetBit(0x1 << 19);
248  */
249 
250  // The render plugin requires some metadata in order to set the correct
251  // rendering for each plot. The original solution was to use bits number
252  // 19 to 23 in TH1::fBits, but these were meant for ROOT's internal usage
253  // and eventually started breaking things, see:
254  // https://github.com/cms-sw/cmssw/issues/21423 The current solution is to
255  // use the UniqueID field in the parent TObject, which is expected to work
256  // if there is no TRef pointing to the TObject.
257 
258  // To check that indeed there is no such TRef, one can use
259  // TestBit(kIsReferenced), e.g. std::cout << "Need to set unique ID at
260  // path = " << path << "; for this path, TestBit(kIsReferenced) is: " <<
261  // (me->getTH1()->TestBit(kIsReferenced)? "true": "false") << std::endl;
262  // // should always output false for the solution to work
263 
264  // Originally, bit 19 in TH1::fBits was set to isMap, while bits 20-23
265  // contained (actualObject+1). The idea is to make sure that both these
266  // variables are easily recoverable in the render plugin, as in this
267  // solution, where isMap is the last bit.
268  me->getTH1()->SetUniqueID(uint32_t(2 * (actualObject + 1) + (isMap ? 1 : 0)));
269  }
270 
271  mes_.push_back(me);
272  }
273 
274  if (lumiFlag_)
275  _ibooker.setScope(oldscope);
276 
277  active_ = true;
278  }
279 
280  bool MESetEcal::retrieve(DQMStore::IGetter &_igetter, std::string *_failedPath /* = 0*/) const {
281  clear();
282 
283  std::vector<std::string> mePaths(generatePaths());
284  if (mePaths.empty()) {
285  if (_failedPath)
286  _failedPath->clear();
287  return false;
288  }
289 
290  for (unsigned iME(0); iME < mePaths.size(); iME++) {
291  std::string &path(mePaths[iME]);
292  if (path.find('%') != std::string::npos)
293  throw_("retrieve() called with incompletely formed path [" + path + "]");
294 
295  MonitorElement *me(_igetter.get(path));
296  if (me)
297  mes_.push_back(me);
298  else {
299  clear();
300  if (_failedPath)
301  *_failedPath = path;
302  return false;
303  }
304  }
305 
306  active_ = true;
307  return true;
308  }
309 
310  void MESetEcal::fill(DetId const &_id, double _x /* = 1.*/, double _wy /* = 1.*/, double _w /* = 1.*/) {
311  if (!active_)
312  return;
313 
314  unsigned iME(binning::findPlotIndex(otype_, _id));
315  checkME_(iME);
316 
317  fill_(iME, _x, _wy, _w);
318  }
319 
320  void MESetEcal::fill(EcalElectronicsId const &_id, double _x /* = 1.*/, double _wy /* = 1.*/, double _w /* = 1.*/) {
321  if (!active_)
322  return;
323 
324  unsigned iME(binning::findPlotIndex(otype_, _id));
325  checkME_(iME);
326 
327  fill_(iME, _x, _wy, _w);
328  }
329 
330  void MESetEcal::fill(int _dcctccid, double _x /* = 1.*/, double _wy /* = 1.*/, double _w /* = 1.*/) {
331  if (!active_)
332  return;
333 
334  unsigned iME(binning::findPlotIndex(otype_, _dcctccid, btype_));
335  checkME_(iME);
336 
337  fill_(iME, _x, _wy, _w);
338  }
339 
340  void MESetEcal::fill(double _x, double _wy /* = 1.*/, double _w /* = 1.*/) {
341  if (!active_)
342  return;
343 
344  if (mes_.size() != 1)
345  return;
346 
347  fill_(0, _x, _wy, _w);
348  }
349 
350  void MESetEcal::setBinContent(DetId const &_id, int _bin, double _content) {
351  if (!active_)
352  return;
353 
354  unsigned iME(binning::findPlotIndex(otype_, _id));
355  checkME_(iME);
356 
357  mes_[iME]->setBinContent(_bin, _content);
358  }
359 
360  void MESetEcal::setBinContent(EcalElectronicsId const &_id, int _bin, double _content) {
361  if (!active_)
362  return;
363 
364  unsigned iME(binning::findPlotIndex(otype_, _id));
365  checkME_(iME);
366 
367  mes_[iME]->setBinContent(_bin, _content);
368  }
369 
370  void MESetEcal::setBinContent(int _dcctccid, int _bin, double _content) {
371  if (!active_)
372  return;
373 
374  unsigned iME(binning::findPlotIndex(otype_, _dcctccid, btype_));
375  checkME_(iME);
376 
377  mes_[iME]->setBinContent(_bin, _content);
378  }
379 
380  void MESetEcal::setBinError(DetId const &_id, int _bin, double _error) {
381  if (!active_)
382  return;
383 
384  unsigned iME(binning::findPlotIndex(otype_, _id));
385  checkME_(iME);
386 
387  mes_[iME]->setBinError(_bin, _error);
388  }
389 
390  void MESetEcal::setBinError(EcalElectronicsId const &_id, int _bin, double _error) {
391  if (!active_)
392  return;
393 
394  unsigned iME(binning::findPlotIndex(otype_, _id));
395  checkME_(iME);
396 
397  mes_[iME]->setBinError(_bin, _error);
398  }
399 
400  void MESetEcal::setBinError(int _dcctccid, int _bin, double _error) {
401  if (!active_)
402  return;
403 
404  unsigned iME(binning::findPlotIndex(otype_, _dcctccid, btype_));
405  checkME_(iME);
406 
407  mes_[iME]->setBinError(_bin, _error);
408  }
409 
410  void MESetEcal::setBinEntries(DetId const &_id, int _bin, double _entries) {
411  if (!active_)
412  return;
414  return;
415 
416  unsigned iME(binning::findPlotIndex(otype_, _id));
417  checkME_(iME);
418 
419  mes_[iME]->setBinEntries(_bin, _entries);
420  }
421 
422  void MESetEcal::setBinEntries(EcalElectronicsId const &_id, int _bin, double _entries) {
423  if (!active_)
424  return;
426  return;
427 
428  unsigned iME(binning::findPlotIndex(otype_, _id));
429  checkME_(iME);
430 
431  mes_[iME]->setBinEntries(_bin, _entries);
432  }
433 
434  void MESetEcal::setBinEntries(int _dcctccid, int _bin, double _entries) {
435  if (!active_)
436  return;
438  return;
439 
440  unsigned iME(binning::findPlotIndex(otype_, _dcctccid, btype_));
441  checkME_(iME);
442 
443  mes_[iME]->setBinEntries(_bin, _entries);
444  }
445 
446  double MESetEcal::getBinContent(DetId const &_id, int _bin) const {
447  if (!active_)
448  return 0.;
449 
450  unsigned iME(binning::findPlotIndex(otype_, _id));
451  checkME_(iME);
452 
453  return mes_[iME]->getBinContent(_bin);
454  }
455 
456  double MESetEcal::getBinContent(EcalElectronicsId const &_id, int _bin) const {
457  if (!active_)
458  return 0.;
459 
460  unsigned iME(binning::findPlotIndex(otype_, _id));
461  checkME_(iME);
462 
463  return mes_[iME]->getBinContent(_bin);
464  }
465 
466  double MESetEcal::getBinContent(int _dcctccid, int _bin) const {
467  if (!active_)
468  return 0.;
469 
470  unsigned iME(binning::findPlotIndex(otype_, _dcctccid, btype_));
471  checkME_(iME);
472 
473  return mes_[iME]->getBinContent(_bin);
474  }
475 
476  double MESetEcal::getBinError(DetId const &_id, int _bin) const {
477  if (!active_)
478  return 0.;
479 
480  unsigned iME(binning::findPlotIndex(otype_, _id));
481  checkME_(iME);
482 
483  return mes_[iME]->getBinError(_bin);
484  }
485 
486  double MESetEcal::getBinError(EcalElectronicsId const &_id, int _bin) const {
487  if (!active_)
488  return 0.;
489 
490  unsigned iME(binning::findPlotIndex(otype_, _id));
491  checkME_(iME);
492 
493  return mes_[iME]->getBinError(_bin);
494  }
495 
496  double MESetEcal::getBinError(int _dcctccid, int _bin) const {
497  if (!active_)
498  return 0.;
499 
500  unsigned iME(binning::findPlotIndex(otype_, _dcctccid, btype_));
501  checkME_(iME);
502 
503  return mes_[iME]->getBinError(_bin);
504  }
505 
506  double MESetEcal::getBinEntries(DetId const &_id, int _bin) const {
507  if (!active_)
508  return 0.;
510  return 0.;
511 
512  unsigned iME(binning::findPlotIndex(otype_, _id));
513  checkME_(iME);
514 
515  return mes_[iME]->getBinEntries(_bin);
516  }
517 
518  double MESetEcal::getBinEntries(EcalElectronicsId const &_id, int _bin) const {
519  if (!active_)
520  return 0.;
522  return 0.;
523 
524  unsigned iME(binning::findPlotIndex(otype_, _id));
525  checkME_(iME);
526 
527  return mes_[iME]->getBinEntries(_bin);
528  }
529 
530  double MESetEcal::getBinEntries(int _dcctccid, int _bin) const {
531  if (!active_)
532  return 0.;
534  return 0.;
535 
536  unsigned iME(binning::findPlotIndex(otype_, _dcctccid, btype_));
537  checkME_(iME);
538 
539  return mes_[iME]->getBinEntries(_bin);
540  }
541 
542  int MESetEcal::findBin(DetId const &_id, double _x, double _y /* = 0.*/) const {
543  if (!active_)
544  return -1;
545 
546  unsigned iME(binning::findPlotIndex(otype_, _id));
547  checkME_(iME);
548 
549  return mes_[iME]->getTH1()->FindBin(_x, _y);
550  }
551 
552  int MESetEcal::findBin(EcalElectronicsId const &_id, double _x, double _y /* = 0.*/) const {
553  if (!active_)
554  return -1;
555 
556  unsigned iME(binning::findPlotIndex(otype_, _id));
557  checkME_(iME);
558 
559  return mes_[iME]->getTH1()->FindBin(_x, _y);
560  }
561 
562  int MESetEcal::findBin(int _dcctccid, double _x, double _y /* = 0.*/) const {
563  if (!active_)
564  return -1;
565 
566  unsigned iME(binning::findPlotIndex(otype_, _dcctccid, btype_));
567  checkME_(iME);
568 
569  return mes_[iME]->getTH1()->FindBin(_x, _y);
570  }
571 
573  return (xaxis_ && xaxis_->edges) || (yaxis_ && yaxis_->edges) || (zaxis_ && zaxis_->edges);
574  }
575 
576  std::vector<std::string> MESetEcal::generatePaths() const {
577  using namespace std;
578 
579  vector<string> paths(0);
580 
581  unsigned nME(binning::getNObjects(otype_));
582 
583  for (unsigned iME(0); iME < nME; iME++) {
585 
586  string path(path_);
587  map<string, string> replacements;
588 
589  switch (obj) {
590  case binning::kEB:
591  case binning::kEBMEM:
592  replacements["subdet"] = "EcalBarrel";
593  replacements["prefix"] = "EB";
594  replacements["suffix"] = "";
595  replacements["subdetshort"] = "EB";
596  replacements["subdetshortsig"] = "EB";
597  replacements["supercrystal"] = "trigger tower";
598  break;
599  case binning::kEE:
600  case binning::kEEMEM:
601  replacements["subdet"] = "EcalEndcap";
602  replacements["prefix"] = "EE";
603  replacements["subdetshort"] = "EE";
604  replacements["subdetshortsig"] = "EE";
605  replacements["supercrystal"] = "super crystal";
606  break;
607  case binning::kEEm:
608  replacements["subdet"] = "EcalEndcap";
609  replacements["prefix"] = "EE";
610  replacements["suffix"] = " EE -";
611  replacements["subdetshort"] = "EE";
612  replacements["subdetshortsig"] = "EEM";
613  replacements["supercrystal"] = "super crystal";
614  break;
615  case binning::kEEp:
616  replacements["subdet"] = "EcalEndcap";
617  replacements["prefix"] = "EE";
618  replacements["suffix"] = " EE +";
619  replacements["subdetshort"] = "EE";
620  replacements["subdetshortsig"] = "EEP";
621  replacements["supercrystal"] = "super crystal";
622  break;
623  case binning::kSM:
624  if (iME <= kEEmHigh || iME >= kEEpLow) {
625  replacements["subdet"] = "EcalEndcap";
626  replacements["prefix"] = "EE";
627  replacements["supercrystal"] = "super crystal";
628  } else {
629  replacements["subdet"] = "EcalBarrel";
630  replacements["prefix"] = "EB";
631  replacements["supercrystal"] = "trigger tower";
632  }
633  replacements["sm"] = binning::channelName(iME + 1);
634  break;
635  case binning::kEBSM:
636  replacements["subdet"] = "EcalBarrel";
637  replacements["prefix"] = "EB";
638  replacements["sm"] = binning::channelName(iME + kEBmLow + 1);
639  replacements["supercrystal"] = "trigger tower";
640  break;
641  case binning::kEESM:
642  replacements["subdet"] = "EcalEndcap";
643  replacements["prefix"] = "EE";
644  replacements["sm"] = binning::channelName(iME <= kEEmHigh ? iME + 1 : iME + 37);
645  replacements["supercrystal"] = "super crystal";
646  break;
647  case binning::kSMMEM: {
648  unsigned iDCC(memDCCId(iME) - 1);
649  // dccId(unsigned) skips DCCs without MEM
650  if (iDCC <= kEEmHigh || iDCC >= kEEpLow) {
651  replacements["subdet"] = "EcalEndcap";
652  replacements["prefix"] = "EE";
653  } else {
654  replacements["subdet"] = "EcalBarrel";
655  replacements["prefix"] = "EB";
656  }
657  replacements["sm"] = binning::channelName(iDCC + 1);
658  } break;
659  case binning::kEBSMMEM: {
660  unsigned iDCC(memDCCId(iME + 4) - 1);
661  replacements["subdet"] = "EcalBarrel";
662  replacements["prefix"] = "EB";
663  replacements["sm"] = binning::channelName(iDCC + 1);
664  } break;
665  case binning::kEESMMEM: {
666  unsigned iDCC(memDCCId(iME < 4 ? iME : iME + 36) - 1);
667  replacements["subdet"] = "EcalEndcap";
668  replacements["prefix"] = "EE";
669  replacements["sm"] = binning::channelName(iDCC + 1);
670  }
671  default:
672  break;
673  }
674 
675  paths.push_back(formPath(replacements));
676  }
677 
678  return paths;
679  }
680 } // namespace ecaldqm
SummaryClient_cfi.labels
labels
Definition: SummaryClient_cfi.py:61
ecaldqm::MESet::throw_
void throw_(std::string const &_message) const
Definition: MESet.h:121
runGCPTkAlMap.title
string title
Definition: runGCPTkAlMap.py:94
mps_fire.i
i
Definition: mps_fire.py:428
ecaldqm
Definition: DQWorker.h:24
ecaldqm::MESet::fill_
virtual void fill_(unsigned, int, double)
Definition: MESet.cc:246
dqm::implementation::IBooker::bookFloat
MonitorElement * bookFloat(TString const &name, FUNC onbooking=NOOP())
Definition: DQMStore.h:80
ecaldqm::MESetEcal::getBinEntries
double getBinEntries(DetId const &, int) const override
Definition: MESetEcal.cc:506
dqm::implementation::IBooker::setScope
virtual MonitorElementData::Scope setScope(MonitorElementData::Scope newscope)
Definition: DQMStore.cc:46
filterCSVwithJSON.copy
copy
Definition: filterCSVwithJSON.py:36
ecaldqm::MESetEcal::setBinContent
void setBinContent(DetId const &, int, double) override
Definition: MESetEcal.cc:350
ecaldqm::MESetEcal::logicalDimensions_
unsigned logicalDimensions_
Definition: MESetEcal.h:73
MonitorElementData::Kind::TH1F
ecaldqm::MESet::operator=
virtual MESet & operator=(MESet const &)
Definition: MESet.cc:64
dqm::implementation::IBooker::bookProfile2D
MonitorElement * bookProfile2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, double lowZ, double highZ, char const *option="s", FUNC onbooking=NOOP())
Definition: DQMStore.h:399
ecaldqm::MESetEcal
Definition: MESetEcal.h:15
ecaldqm::binning::kEEp
Definition: MESetBinningUtils.h:21
ecaldqm::binning::kEB
Definition: MESetBinningUtils.h:18
HistogramManager_cfi.specs
specs
Definition: HistogramManager_cfi.py:80
ecaldqm::MESetEcal::getBinError
double getBinError(DetId const &, int) const override
Definition: MESetEcal.cc:476
dqm::implementation::NavigatorBase::setCurrentFolder
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:32
ecaldqm::binning::AxisSpecs::edges
float * edges
Definition: MESetBinningUtils.h:75
dqm::legacy::MonitorElement
Definition: MonitorElement.h:461
ecaldqm::binning::kEBMEM
Definition: MESetBinningUtils.h:30
TimingClient_cfi.yaxis
yaxis
Definition: TimingClient_cfi.py:52
ecaldqm::MESetEcal::isVariableBinning
bool isVariableBinning() const override
Definition: MESetEcal.cc:572
ecaldqm::binning::kEE
Definition: MESetBinningUtils.h:19
ecaldqm::MESetEcal::fill
void fill(DetId const &, double=1., double=1., double=1.) override
Definition: MESetEcal.cc:310
LaserClient_cfi.zaxis
zaxis
Definition: LaserClient_cfi.py:91
MonitorElementData::Kind::TH2F
DetId
Definition: DetId.h:17
ecaldqm::binning::getNObjects
unsigned getNObjects(ObjectType)
Definition: MESetBinningUtils.cc:512
ecaldqm::MESetEcal::operator=
MESet & operator=(MESet const &) override
Definition: MESetEcal.cc:40
dqm::implementation::NavigatorBase::cd
virtual void cd()
Definition: DQMStore.cc:29
dqm::implementation::IBooker::bookProfile
MonitorElement * bookProfile(TString const &name, TString const &title, int nchX, double lowX, double highX, int, double lowY, double highY, char const *option="s", FUNC onbooking=NOOP())
Definition: DQMStore.h:322
LaserClient_cfi.nbins
nbins
Definition: LaserClient_cfi.py:51
MESetEcal.h
ecaldqm::MESetEcal::getBinContent
double getBinContent(DetId const &, int) const override
Definition: MESetEcal.cc:446
ecaldqm::binning::getObject
ObjectType getObject(ObjectType, unsigned)
Definition: MESetBinningUtils.cc:467
ecaldqm::MESet::otype_
binning::ObjectType otype_
Definition: MESet.h:126
ecaldqm::kEEmHigh
Definition: EcalDQMCommonUtils.h:82
ecaldqm::memDCCId
unsigned memDCCId(unsigned)
Definition: EcalDQMCommonUtils.cc:40
EcalElectronicsId
Ecal readout channel identification [32:20] Unused (so far) [19:13] DCC id [12:6] tower [5:3] strip [...
Definition: EcalElectronicsId.h:18
ecaldqm::MESet::active_
bool active_
Definition: MESet.h:133
getGTfromDQMFile.obj
obj
Definition: getGTfromDQMFile.py:32
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
ecaldqm::binning::getBinning
AxisSpecs getBinning(ObjectType, BinningType, bool, int, unsigned)
Definition: MESetBinningUtils.cc:14
listHistos.binning
binning
Definition: listHistos.py:43
ecaldqm::binning::ObjectType
ObjectType
Definition: MESetBinningUtils.h:17
SiStripPI::max
Definition: SiStripPayloadInspectorHelper.h:169
ecaldqm::MESetEcal::findBin
virtual int findBin(DetId const &, double, double=0.) const
Definition: MESetEcal.cc:542
ecaldqm::MESetEcal::book
void book(DQMStore::IBooker &) override
Definition: MESetEcal.cc:70
ecaldqm::MESet::btype_
binning::BinningType btype_
Definition: MESet.h:127
MonitorElementData::Kind
Kind
Definition: MonitorElementCollection.h:129
ecaldqm::binning::kEBSM
Definition: MESetBinningUtils.h:23
ecaldqm::binning::kEESM
Definition: MESetBinningUtils.h:24
ecaldqm::MESet::path_
std::string path_
Definition: MESet.h:125
ecaldqm::MESetEcal::retrieve
bool retrieve(DQMStore::IGetter &, std::string *=nullptr) const override
Definition: MESetEcal.cc:280
ecaldqm::MESetEcal::xaxis_
const binning::AxisSpecs * xaxis_
Definition: MESetEcal.h:74
ecaldqm::binning::findPlotIndex
unsigned findPlotIndex(ObjectType, DetId const &)
Definition: MESetBinningUtils.cc:299
ecaldqm::kEBmLow
Definition: EcalDQMCommonUtils.h:85
ecaldqm::binning::AxisSpecs
Definition: MESetBinningUtils.h:72
SelectiveReadoutTask_cfi.edges
edges
Definition: SelectiveReadoutTask_cfi.py:107
ecaldqm::binning::kUser
Definition: MESetBinningUtils.h:50
ecaldqm::MESet::mes_
std::vector< MonitorElement * > mes_
Definition: MESet.h:123
LaserClient_cfi.high
high
Definition: LaserClient_cfi.py:50
std
Definition: JetResolutionObject.h:76
ecaldqm::MESetEcal::generatePaths
std::vector< std::string > generatePaths() const
Definition: MESetEcal.cc:576
MonitorElementData::Kind::TPROFILE2D
ecaldqm::MESet::clear
virtual void clear() const
Definition: MESet.cc:84
ecaldqm::binning::channelName
std::string channelName(uint32_t, BinningType _btype=kDCC)
Definition: MESetBinningUtils.cc:591
dqm::implementation::IGetter
Definition: DQMStore.h:484
ecaldqm::MESet::checkME_
virtual void checkME_(unsigned _iME) const
Definition: MESet.h:113
ecaldqm::MESetEcal::zaxis_
const binning::AxisSpecs * zaxis_
Definition: MESetEcal.h:76
dqm::implementation::IBooker::book2D
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:177
ecaldqm::kEEpLow
Definition: EcalDQMCommonUtils.h:83
ecaldqm::MESet::formPath
std::string formPath(PathReplacements const &) const
Definition: MESet.cc:150
ecaldqm::MESetEcal::clone
MESet * clone(std::string const &="") const override
Definition: MESetEcal.cc:61
MESetUtils.h
dqm::implementation::IGetter::get
virtual MonitorElement * get(std::string const &fullpath) const
Definition: DQMStore.cc:651
Skims_PA_cff.name
name
Definition: Skims_PA_cff.py:17
Skims_PA_cff.paths
paths
Definition: Skims_PA_cff.py:18
dqm::implementation::IBooker
Definition: DQMStore.h:43
ecaldqm::binning::kEBSMMEM
Definition: MESetBinningUtils.h:26
castor_dqm_sourceclient_file_cfg.path
path
Definition: castor_dqm_sourceclient_file_cfg.py:37
ecaldqm::MESetEcal::yaxis_
const binning::AxisSpecs * yaxis_
Definition: MESetEcal.h:75
LaserClient_cfi.xaxis
xaxis
Definition: LaserClient_cfi.py:49
ecaldqm::binning::kEEMEM
Definition: MESetBinningUtils.h:31
ecaldqm::MESetEcal::~MESetEcal
~MESetEcal() override
Definition: MESetEcal.cc:34
ecaldqm::binning::BinningType
BinningType
Definition: MESetBinningUtils.h:40
hlt_dqm_clientPB-live_cfg.me
me
Definition: hlt_dqm_clientPB-live_cfg.py:61
ecaldqm::MESetEcal::setBinEntries
void setBinEntries(DetId const &, int, double) override
Definition: MESetEcal.cc:410
ecaldqm::MESet::kind_
MonitorElement::Kind kind_
Definition: MESet.h:128
ecaldqm::binning::kSM
Definition: MESetBinningUtils.h:22
ecaldqm::binning::kSMMEM
Definition: MESetBinningUtils.h:25
btvTracks_cfi._content
_content
Definition: btvTracks_cfi.py:5
ecaldqm::binning::kEEm
Definition: MESetBinningUtils.h:20
MonitorElementData::Kind::TPROFILE
LaserClient_cfi.low
low
Definition: LaserClient_cfi.py:52
ecaldqm::MESetEcal::setBinError
void setBinError(DetId const &, int, double) override
Definition: MESetEcal.cc:380
MonitorElementData::Kind::REAL
ecaldqm::binning::kEESMMEM
Definition: MESetBinningUtils.h:27
ecaldqm::MESetEcal::MESetEcal
MESetEcal(std::string const &, binning::ObjectType, binning::BinningType, MonitorElement::Kind, unsigned, binning::AxisSpecs const *=nullptr, binning::AxisSpecs const *=nullptr, binning::AxisSpecs const *=nullptr)
Definition: MESetEcal.cc:10
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
EcalDQMCommonUtils.h
ecaldqm::MESet::lumiFlag_
bool lumiFlag_
Definition: MESet.h:129
ecaldqm::MESet
Definition: MESet.h:27