CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
MESetEcal.cc
Go to the documentation of this file.
2 
5 
6 #include <limits>
7 #include <sstream>
8 
9 namespace ecaldqm
10 {
11  MESetEcal::MESetEcal(std::string const& _fullPath, binning::ObjectType _otype, binning::BinningType _btype, MonitorElement::Kind _kind, unsigned _logicalDimensions, binning::AxisSpecs const* _xaxis/* = 0*/, binning::AxisSpecs const* _yaxis/* = 0*/, binning::AxisSpecs const* _zaxis/* = 0*/) :
12  MESet(_fullPath, _otype, _btype, _kind),
13  logicalDimensions_(_logicalDimensions),
14  xaxis_(_xaxis ? new binning::AxisSpecs(*_xaxis) : 0),
15  yaxis_(_yaxis ? new binning::AxisSpecs(*_yaxis) : 0),
16  zaxis_(_zaxis ? new binning::AxisSpecs(*_zaxis) : 0)
17  {
18  if(btype_ == binning::kUser && ((logicalDimensions_ > 0 && !xaxis_) || (logicalDimensions_ > 1 && !yaxis_)))
19  throw_("Need axis specifications");
20  }
21 
23  MESet(_orig),
24  logicalDimensions_(_orig.logicalDimensions_),
25  xaxis_(_orig.xaxis_ ? new binning::AxisSpecs(*_orig.xaxis_) : 0),
26  yaxis_(_orig.yaxis_ ? new binning::AxisSpecs(*_orig.yaxis_) : 0),
27  zaxis_(_orig.zaxis_ ? new binning::AxisSpecs(*_orig.zaxis_) : 0)
28  {
29  }
30 
32  {
33  delete xaxis_;
34  delete yaxis_;
35  delete zaxis_;
36  }
37 
38  MESet&
40  {
41  delete xaxis_;
42  delete yaxis_;
43  delete zaxis_;
44  xaxis_ = 0;
45  yaxis_ = 0;
46  zaxis_ = 0;
47 
48  MESetEcal const* pRhs(dynamic_cast<MESetEcal const*>(&_rhs));
49  if(pRhs){
51  if(pRhs->xaxis_) xaxis_ = new binning::AxisSpecs(*pRhs->xaxis_);
52  if(pRhs->yaxis_) yaxis_ = new binning::AxisSpecs(*pRhs->yaxis_);
53  if(pRhs->zaxis_) zaxis_ = new binning::AxisSpecs(*pRhs->zaxis_);
54  }
55  return MESet::operator=(_rhs);
56  }
57 
58  MESet*
59  MESetEcal::clone(std::string const& _path/* = ""*/) const
60  {
62  if(_path != "") path_ = _path;
63  MESet* copy(new MESetEcal(*this));
64  path_ = path;
65  return copy;
66  }
67 
68  void
70  {
71  doBook_(_dqmStore);
72  }
73 
74  void
76  {
77  doBook_(_ibooker);
78  }
79 
80  bool
81  MESetEcal::retrieve(DQMStore const& _store, std::string* _failedPath/* = 0*/) const
82  {
83  clear();
84 
85  std::vector<std::string> mePaths(generatePaths());
86  if(mePaths.size() == 0){
87  if(_failedPath) _failedPath->clear();
88  return false;
89  }
90 
91  for(unsigned iME(0); iME < mePaths.size(); iME++){
92  std::string& path(mePaths[iME]);
93  if(path.find('%') != std::string::npos)
94  throw_("retrieve() called with incompletely formed path [" + path + "]");
95 
96  MonitorElement* me(_store.get(path));
97  if(me) mes_.push_back(me);
98  else{
99  clear();
100  if(_failedPath) *_failedPath = path;
101  return false;
102  }
103  }
104 
105  active_ = true;
106  return true;
107  }
108 
109  void
110  MESetEcal::fill(DetId const& _id, double _x/* = 1.*/, double _wy/* = 1.*/, double _w/* = 1.*/)
111  {
112  if(!active_) return;
113 
114  unsigned iME(binning::findPlotIndex(otype_, _id));
115  checkME_(iME);
116 
117  fill_(iME, _x, _wy, _w);
118  }
119 
120  void
121  MESetEcal::fill(EcalElectronicsId const& _id, double _x/* = 1.*/, double _wy/* = 1.*/, double _w/* = 1.*/)
122  {
123  if(!active_) return;
124 
125  unsigned iME(binning::findPlotIndex(otype_, _id));
126  checkME_(iME);
127 
128  fill_(iME, _x, _wy, _w);
129  }
130 
131  void
132  MESetEcal::fill(int _dcctccid, double _x/* = 1.*/, double _wy/* = 1.*/, double _w/* = 1.*/)
133  {
134  if(!active_) return;
135 
136  unsigned iME(binning::findPlotIndex(otype_, _dcctccid, btype_));
137  checkME_(iME);
138 
139  fill_(iME, _x, _wy, _w);
140  }
141 
142  void
143  MESetEcal::fill(double _x, double _wy/* = 1.*/, double _w/* = 1.*/)
144  {
145  if(!active_) return;
146 
147  if(mes_.size() != 1) return;
148 
149  fill_(0, _x, _wy, _w);
150  }
151 
152  void
153  MESetEcal::setBinContent(DetId const& _id, int _bin, double _content)
154  {
155  if(!active_) return;
156 
157  unsigned iME(binning::findPlotIndex(otype_, _id));
158  checkME_(iME);
159 
160  mes_[iME]->setBinContent(_bin, _content);
161  }
162 
163  void
164  MESetEcal::setBinContent(EcalElectronicsId const& _id, int _bin, double _content)
165  {
166  if(!active_) return;
167 
168  unsigned iME(binning::findPlotIndex(otype_, _id));
169  checkME_(iME);
170 
171  mes_[iME]->setBinContent(_bin, _content);
172  }
173 
174  void
175  MESetEcal::setBinContent(int _dcctccid, int _bin, double _content)
176  {
177  if(!active_) return;
178 
179  unsigned iME(binning::findPlotIndex(otype_, _dcctccid, btype_));
180  checkME_(iME);
181 
182  mes_[iME]->setBinContent(_bin, _content);
183  }
184 
185  void
186  MESetEcal::setBinError(DetId const& _id, int _bin, double _error)
187  {
188  if(!active_) return;
189 
190  unsigned iME(binning::findPlotIndex(otype_, _id));
191  checkME_(iME);
192 
193  mes_[iME]->setBinError(_bin, _error);
194  }
195 
196  void
197  MESetEcal::setBinError(EcalElectronicsId const& _id, int _bin, double _error)
198  {
199  if(!active_) return;
200 
201  unsigned iME(binning::findPlotIndex(otype_, _id));
202  checkME_(iME);
203 
204  mes_[iME]->setBinError(_bin, _error);
205  }
206 
207  void
208  MESetEcal::setBinError(int _dcctccid, int _bin, double _error)
209  {
210  if(!active_) return;
211 
212  unsigned iME(binning::findPlotIndex(otype_, _dcctccid, btype_));
213  checkME_(iME);
214 
215  mes_[iME]->setBinError(_bin, _error);
216  }
217 
218  void
219  MESetEcal::setBinEntries(DetId const& _id, int _bin, double _entries)
220  {
221  if(!active_) return;
223 
224  unsigned iME(binning::findPlotIndex(otype_, _id));
225  checkME_(iME);
226 
227  mes_[iME]->setBinEntries(_bin, _entries);
228  }
229 
230  void
231  MESetEcal::setBinEntries(EcalElectronicsId const& _id, int _bin, double _entries)
232  {
233  if(!active_) return;
235 
236  unsigned iME(binning::findPlotIndex(otype_, _id));
237  checkME_(iME);
238 
239  mes_[iME]->setBinEntries(_bin, _entries);
240  }
241 
242  void
243  MESetEcal::setBinEntries(int _dcctccid, int _bin, double _entries)
244  {
245  if(!active_) return;
247 
248  unsigned iME(binning::findPlotIndex(otype_, _dcctccid, btype_));
249  checkME_(iME);
250 
251  mes_[iME]->setBinEntries(_bin, _entries);
252  }
253 
254  double
255  MESetEcal::getBinContent(DetId const& _id, int _bin) const
256  {
257  if(!active_) return 0.;
258 
259  unsigned iME(binning::findPlotIndex(otype_, _id));
260  checkME_(iME);
261 
262  return mes_[iME]->getBinContent(_bin);
263  }
264 
265  double
266  MESetEcal::getBinContent(EcalElectronicsId const& _id, int _bin) const
267  {
268  if(!active_) return 0.;
269 
270  unsigned iME(binning::findPlotIndex(otype_, _id));
271  checkME_(iME);
272 
273  return mes_[iME]->getBinContent(_bin);
274  }
275 
276  double
277  MESetEcal::getBinContent(int _dcctccid, int _bin) const
278  {
279  if(!active_) return 0.;
280 
281  unsigned iME(binning::findPlotIndex(otype_, _dcctccid, btype_));
282  checkME_(iME);
283 
284  return mes_[iME]->getBinContent(_bin);
285  }
286 
287  double
288  MESetEcal::getBinError(DetId const& _id, int _bin) const
289  {
290  if(!active_) return 0.;
291 
292  unsigned iME(binning::findPlotIndex(otype_, _id));
293  checkME_(iME);
294 
295  return mes_[iME]->getBinError(_bin);
296  }
297 
298  double
299  MESetEcal::getBinError(EcalElectronicsId const& _id, int _bin) const
300  {
301  if(!active_) return 0.;
302 
303  unsigned iME(binning::findPlotIndex(otype_, _id));
304  checkME_(iME);
305 
306  return mes_[iME]->getBinError(_bin);
307  }
308 
309  double
310  MESetEcal::getBinError(int _dcctccid, int _bin) const
311  {
312  if(!active_) return 0.;
313 
314  unsigned iME(binning::findPlotIndex(otype_, _dcctccid, btype_));
315  checkME_(iME);
316 
317  return mes_[iME]->getBinError(_bin);
318  }
319 
320  double
321  MESetEcal::getBinEntries(DetId const& _id, int _bin) const
322  {
323  if(!active_) return 0.;
325 
326  unsigned iME(binning::findPlotIndex(otype_, _id));
327  checkME_(iME);
328 
329  return mes_[iME]->getBinEntries(_bin);
330  }
331 
332  double
333  MESetEcal::getBinEntries(EcalElectronicsId const& _id, int _bin) const
334  {
335  if(!active_) return 0.;
337 
338  unsigned iME(binning::findPlotIndex(otype_, _id));
339  checkME_(iME);
340 
341  return mes_[iME]->getBinEntries(_bin);
342  }
343 
344  double
345  MESetEcal::getBinEntries(int _dcctccid, int _bin) const
346  {
347  if(!active_) return 0.;
349 
350  unsigned iME(binning::findPlotIndex(otype_, _dcctccid, btype_));
351  checkME_(iME);
352 
353  return mes_[iME]->getBinEntries(_bin);
354  }
355 
356  int
357  MESetEcal::findBin(DetId const& _id, double _x, double _y/* = 0.*/) const
358  {
359  if(!active_) return -1;
360 
361  unsigned iME(binning::findPlotIndex(otype_, _id));
362  checkME_(iME);
363 
364  return mes_[iME]->getTH1()->FindBin(_x, _y);
365  }
366 
367  int
368  MESetEcal::findBin(EcalElectronicsId const& _id, double _x, double _y/* = 0.*/) const
369  {
370  if(!active_) return -1;
371 
372  unsigned iME(binning::findPlotIndex(otype_, _id));
373  checkME_(iME);
374 
375  return mes_[iME]->getTH1()->FindBin(_x, _y);
376  }
377 
378  int
379  MESetEcal::findBin(int _dcctccid, double _x, double _y/* = 0.*/) const
380  {
381  if(!active_) return -1;
382 
383  unsigned iME(binning::findPlotIndex(otype_, _dcctccid, btype_));
384  checkME_(iME);
385 
386  return mes_[iME]->getTH1()->FindBin(_x, _y);
387  }
388 
389  bool
391  {
392  return (xaxis_ && xaxis_->edges) || (yaxis_ && yaxis_->edges) || (zaxis_ && zaxis_->edges);
393  }
394 
395  std::vector<std::string>
397  {
398  using namespace std;
399 
400  vector<string> paths(0);
401 
402  unsigned nME(binning::getNObjects(otype_));
403 
404  for(unsigned iME(0); iME < nME; iME++) {
406 
407  string path(path_);
408  map<string, string> replacements;
409 
410  switch(obj){
411  case binning::kEB:
412  case binning::kEBMEM:
413  replacements["subdet"] = "EcalBarrel";
414  replacements["prefix"] = "EB";
415  replacements["suffix"] = "";
416  replacements["subdetshort"] = "EB";
417  replacements["subdetshortsig"] = "EB";
418  replacements["supercrystal"] = "trigger tower";
419  break;
420  case binning::kEE:
421  case binning::kEEMEM:
422  replacements["subdet"] = "EcalEndcap";
423  replacements["prefix"] = "EE";
424  replacements["subdetshort"] = "EE";
425  replacements["subdetshortsig"] = "EE";
426  replacements["supercrystal"] = "super crystal";
427  break;
428  case binning::kEEm:
429  replacements["subdet"] = "EcalEndcap";
430  replacements["prefix"] = "EE";
431  replacements["suffix"] = " EE -";
432  replacements["subdetshort"] = "EE";
433  replacements["subdetshortsig"] = "EEM";
434  replacements["supercrystal"] = "super crystal";
435  break;
436  case binning::kEEp:
437  replacements["subdet"] = "EcalEndcap";
438  replacements["prefix"] = "EE";
439  replacements["suffix"] = " EE +";
440  replacements["subdetshort"] = "EE";
441  replacements["subdetshortsig"] = "EEP";
442  replacements["supercrystal"] = "super crystal";
443  break;
444  case binning::kSM:
445  if(iME <= kEEmHigh || iME >= kEEpLow){
446  replacements["subdet"] = "EcalEndcap";
447  replacements["prefix"] = "EE";
448  replacements["supercrystal"] = "super crystal";
449  }
450  else{
451  replacements["subdet"] = "EcalBarrel";
452  replacements["prefix"] = "EB";
453  replacements["supercrystal"] = "trigger tower";
454  }
455  replacements["sm"] = binning::channelName(iME + 1);
456  break;
457  case binning::kEBSM:
458  replacements["subdet"] = "EcalBarrel";
459  replacements["prefix"] = "EB";
460  replacements["sm"] = binning::channelName(iME + kEBmLow + 1);
461  replacements["supercrystal"] = "trigger tower";
462  break;
463  case binning::kEESM:
464  replacements["subdet"] = "EcalEndcap";
465  replacements["prefix"] = "EE";
466  replacements["sm"] = binning::channelName(iME <= kEEmHigh ? iME + 1 : iME + 37);
467  replacements["supercrystal"] = "super crystal";
468  break;
469  case binning::kSMMEM:
470  {
471  unsigned iDCC(memDCCId(iME) - 1);
472  //dccId(unsigned) skips DCCs without MEM
473  if(iDCC <= kEEmHigh || iDCC >= kEEpLow){
474  replacements["subdet"] = "EcalEndcap";
475  replacements["prefix"] = "EE";
476  }
477  else{
478  replacements["subdet"] = "EcalBarrel";
479  replacements["prefix"] = "EB";
480  }
481  replacements["sm"] = binning::channelName(iDCC + 1);
482  }
483  break;
484  case binning::kEBSMMEM:
485  {
486  unsigned iDCC(memDCCId(iME + 4) - 1);
487  replacements["subdet"] = "EcalBarrel";
488  replacements["prefix"] = "EB";
489  replacements["sm"] = binning::channelName(iDCC + 1);
490  }
491  break;
492  case binning::kEESMMEM:
493  {
494  unsigned iDCC(memDCCId(iME < 4 ? iME : iME + 36) - 1);
495  replacements["subdet"] = "EcalEndcap";
496  replacements["prefix"] = "EE";
497  replacements["sm"] = binning::channelName(iDCC + 1);
498  }
499  default:
500  break;
501  }
502 
503  paths.push_back(formPath(replacements));
504  }
505 
506  return paths;
507  }
508 
509  template<class Bookable>
510  void
511  MESetEcal::doBook_(Bookable& _booker)
512  {
513  using namespace std;
514 
515  clear();
516 
517  vector<string> mePaths(generatePaths());
518 
519  for(unsigned iME(0); iME < mePaths.size(); iME++){
520  string& path(mePaths[iME]);
521  if(path.find('%') != string::npos)
522  throw_("book() called with incompletely formed path [" + path + "]");
523 
524  binning::ObjectType actualObject(binning::getObject(otype_, iME));
525 
526  binning::AxisSpecs xaxis, yaxis, zaxis;
527 
528  bool isHistogram(logicalDimensions_ > 0);
529  bool isMap(logicalDimensions_ > 1);
530 
531  if(isHistogram){
532 
533  if(xaxis_) xaxis = *xaxis_;
534  if(yaxis_) yaxis = *yaxis_;
535  if(zaxis_) zaxis = *zaxis_;
536 
537  if(xaxis.nbins == 0){ // uses preset
538  binning::AxisSpecs xdef(binning::getBinning(actualObject, btype_, isMap, 1, iME));
539  if(xaxis.labels || xaxis.title != ""){ // PSet specifies title / label only
540  std::string* labels(xaxis.labels);
541  std::string title(xaxis.title);
542  xaxis = xdef;
543  delete [] xaxis.labels;
544  xaxis.labels = labels;
545  xaxis.title = title;
546  }
547  else
548  xaxis = xdef;
549  }
550 
551  if(isMap && yaxis.nbins == 0){
552  binning::AxisSpecs ydef(binning::getBinning(actualObject, btype_, isMap, 2, iME));
553  if(yaxis.labels || yaxis.title != ""){ // PSet specifies title / label only
554  std::string* labels(yaxis.labels);
555  std::string title(yaxis.title);
556  yaxis = ydef;
557  delete [] yaxis.labels;
558  yaxis.labels = labels;
559  yaxis.title = title;
560  }
561  else
562  yaxis = ydef;
563  }
564 
565  if(yaxis.high - yaxis.low < 1.e-10){
566  yaxis.low = -numeric_limits<double>::max();
568  }
569 
570  if(zaxis.high - zaxis.low < 1.e-10){
571  zaxis.low = -numeric_limits<double>::max();
573  }
574  }
575 
576  size_t slashPos(path.find_last_of('/'));
577  string name(path.substr(slashPos + 1));
578  _booker.cd();
579  _booker.setCurrentFolder(path.substr(0, slashPos));
580 
581  MonitorElement* me(0);
582 
583  switch(kind_) {
585  me = _booker.bookFloat(name);
586 
587  break;
588 
590  if(xaxis.edges){
591  float* edges(new float[xaxis.nbins + 1]);
592  for(int i(0); i < xaxis.nbins + 1; i++)
593  edges[i] = xaxis.edges[i];
594  me = _booker.book1D(name, name, xaxis.nbins, edges);
595  delete [] edges;
596  }
597  else
598  me = _booker.book1D(name, name, xaxis.nbins, xaxis.low, xaxis.high);
599 
600  break;
601 
603  if(xaxis.edges) {
604  me = _booker.bookProfile(name, name, xaxis.nbins, xaxis.edges, yaxis.low, yaxis.high, "");
605  }
606  else
607  me = _booker.bookProfile(name, name, xaxis.nbins, xaxis.low, xaxis.high, yaxis.low, yaxis.high, "");
608 
609  break;
610 
612  if(xaxis.edges || yaxis.edges) {
613  binning::AxisSpecs* specs[] = {&xaxis, &yaxis};
614  float* edges[] = {new float[xaxis.nbins + 1], new float[yaxis.nbins + 1]};
615  for(int iSpec(0); iSpec < 2; iSpec++){
616  if(specs[iSpec]->edges){
617  for(int i(0); i < specs[iSpec]->nbins + 1; i++)
618  edges[iSpec][i] = specs[iSpec]->edges[i];
619  }
620  else{
621  int nbins(specs[iSpec]->nbins);
622  double low(specs[iSpec]->low), high(specs[iSpec]->high);
623  for(int i(0); i < nbins + 1; i++)
624  edges[iSpec][i] = low + (high - low) / nbins * i;
625  }
626  }
627  me = _booker.book2D(name, name, xaxis.nbins, edges[0], yaxis.nbins, edges[1]);
628  for(int iSpec(0); iSpec < 2; iSpec++)
629  delete [] edges[iSpec];
630  }
631  else
632  me = _booker.book2D(name, name, xaxis.nbins, xaxis.low, xaxis.high, yaxis.nbins, yaxis.low, yaxis.high);
633 
634  break;
635 
637  if(zaxis.edges) {
638  zaxis.low = zaxis.edges[0];
639  zaxis.high = zaxis.edges[zaxis.nbins];
640  }
641  if(xaxis.edges || yaxis.edges)
642  throw_("Variable bin size for 2D profile not implemented");
643  me = _booker.bookProfile2D(name, name, xaxis.nbins, xaxis.low, xaxis.high, yaxis.nbins, yaxis.low, yaxis.high, zaxis.low, zaxis.high, "");
644 
645  break;
646 
647  default :
648  break;
649  }
650 
651  if(!me)
652  throw_("ME could not be booked");
653 
654  if(isHistogram){
655  me->setAxisTitle(xaxis.title, 1);
656  me->setAxisTitle(yaxis.title, 2);
657  if(isMap) me->setAxisTitle(zaxis.title, 3);
658 
659  if(xaxis.labels){
660  for(int iBin(1); iBin <= xaxis.nbins; ++iBin)
661  me->setBinLabel(iBin, xaxis.labels[iBin - 1], 1);
662  }
663  if(yaxis.labels){
664  for(int iBin(1); iBin <= yaxis.nbins; ++iBin)
665  me->setBinLabel(iBin, yaxis.labels[iBin - 1], 2);
666  }
667  if(zaxis.labels){
668  for(int iBin(1); iBin <= zaxis.nbins; ++iBin)
669  me->setBinLabel(iBin, zaxis.labels[iBin - 1], 3);
670  }
671 
672  // For plot tagging in RenderPlugin; default values are 1 for both
673  // bits 19 - 23 are free in TH1::fBits
674  // can only pack object + logical dimensions into 5 bits (4 bits for object, 1 bit for dim (1 -> dim >= 2))
675  me->getTH1()->SetBit(uint32_t(actualObject + 1) << 20);
676  if(isMap) me->getTH1()->SetBit(0x1 << 19);
677  }
678 
679  if(lumiFlag_) me->setLumiFlag();
680 
681  mes_.push_back(me);
682  }
683 
684  active_ = true;
685  }
686 }
MonitorElement::Kind kind_
Definition: MESet.h:135
int i
Definition: DBlmapReader.cc:9
double getBinError(DetId const &, int) const override
Definition: MESetEcal.cc:288
MESet & operator=(MESet const &) override
Definition: MESetEcal.cc:39
virtual void clear() const
Definition: MESet.cc:93
virtual void checkME_(unsigned _iME) const
Definition: MESet.h:116
void fill(DetId const &, double=1., double=1., double=1.) override
Definition: MESetEcal.cc:110
Ecal readout channel identification [32:20] Unused (so far) [19:13] DCC id [12:6] tower [5:3] strip [...
unsigned getNObjects(ObjectType)
void book(DQMStore &) override
Definition: MESetEcal.cc:69
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)
double getBinEntries(DetId const &, int) const override
Definition: MESetEcal.cc:321
void doBook_(Bookable &)
Definition: MESetEcal.cc:511
bool retrieve(DQMStore const &, std::string *=0) const override
Definition: MESetEcal.cc:81
ObjectType getObject(ObjectType, unsigned)
dictionary edges
MESet * clone(std::string const &="") const override
Definition: MESetEcal.cc:59
AxisSpecs getBinning(ObjectType, BinningType, bool, int, unsigned)
std::vector< MonitorElement * > mes_
Definition: MESet.h:130
bool isVariableBinning() const override
Definition: MESetEcal.cc:390
void setBinEntries(DetId const &, int, double) override
Definition: MESetEcal.cc:219
double getBinContent(DetId const &, int) const override
Definition: MESetEcal.cc:255
const T & max(const T &a, const T &b)
void throw_(std::string const &_message) const
Definition: MESet.h:125
TH1 * getTH1(void) const
MonitorElement * get(const std::string &path) const
get ME from full pathname (e.g. &quot;my/long/dir/my_histo&quot;)
Definition: DQMStore.cc:1679
bool lumiFlag_
Definition: MESet.h:136
std::string channelName(uint32_t, BinningType _btype=kDCC)
virtual void fill_(unsigned, int, double)
Definition: MESet.cc:278
std::string formPath(PathReplacements const &) const
Definition: MESet.cc:163
unsigned memDCCId(unsigned)
Definition: DetId.h:18
MESetEcal(std::string const &, binning::ObjectType, binning::BinningType, MonitorElement::Kind, unsigned, binning::AxisSpecs const *=0, binning::AxisSpecs const *=0, binning::AxisSpecs const *=0)
Definition: MESetEcal.cc:11
unsigned findPlotIndex(ObjectType, DetId const &)
virtual int findBin(DetId const &, double, double=0.) const
Definition: MESetEcal.cc:357
binning::AxisSpecs const * zaxis_
Definition: MESetEcal.h:71
bool active_
Definition: MESet.h:139
void setBinContent(DetId const &, int, double) override
Definition: MESetEcal.cc:153
binning::ObjectType otype_
Definition: MESet.h:133
binning::AxisSpecs const * xaxis_
Definition: MESetEcal.h:69
std::vector< std::string > generatePaths() const
Definition: MESetEcal.cc:396
virtual MESet & operator=(MESet const &)
Definition: MESet.cc:70
void setBinError(DetId const &, int, double) override
Definition: MESetEcal.cc:186
void setLumiFlag(void)
this ME is meant to be stored for each luminosity section
binning::AxisSpecs const * yaxis_
Definition: MESetEcal.h:70
binning::BinningType btype_
Definition: MESet.h:134
std::string path_
Definition: MESet.h:132
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
unsigned logicalDimensions_
Definition: MESetEcal.h:68