CMS 3D CMS Logo

TrackingCertificationInfo.cc
Go to the documentation of this file.
4 
9 
13 
15 
16 //Run Info
20 
21 #include <iomanip>
22 #include <cstdio>
23 #include <string>
24 #include <sstream>
25 #include <cmath>
26 //
27 // -- Contructor
28 //
30  : pSet_(pSet),
31  trackingCertificationBooked_(false),
32  trackingLSCertificationBooked_(false),
33  nFEDConnected_(0),
34  allPixelFEDConnected_(true),
35  m_cacheID_(0),
36  runInfoToken_(esConsumes<RunInfo, RunInfoRcd, edm::Transition::BeginRun>()),
37  detCablingToken_(esConsumes<SiStripDetCabling, SiStripDetCablingRcd, edm::Transition::BeginRun>()) {
38  // Create MessageSender
39  edm::LogInfo("TrackingCertificationInfo") << "TrackingCertificationInfo::Deleting TrackingCertificationInfo ";
40 
41  verbose_ = pSet_.getUntrackedParameter<bool>("verbose", false);
42  TopFolderName_ = pSet_.getUntrackedParameter<std::string>("TopFolderName", "Tracking");
43  if (verbose_)
44  edm::LogInfo("TrackingCertificationInfo") << "TopFolderName_: " << TopFolderName_ << std::endl;
45 
46  TrackingMEs tracking_mes;
47  // load variables for Global certification
48 
49  checkPixelFEDs_ = pSet_.getParameter<bool>("checkPixelFEDs");
50  if (checkPixelFEDs_) {
51  std::string QTname = "pixel";
52  tracking_mes.TrackingFlag = nullptr;
53  TrackingMEsMap.insert(std::pair<std::string, TrackingMEs>(QTname, tracking_mes));
54  }
55 
56  std::vector<edm::ParameterSet> TrackingGlobalQualityMEs =
57  pSet_.getParameter<std::vector<edm::ParameterSet> >("TrackingGlobalQualityPSets");
58  for (const auto& meQTset : TrackingGlobalQualityMEs) {
59  std::string QTname = meQTset.getParameter<std::string>("QT");
60  tracking_mes.TrackingFlag = nullptr;
61 
62  if (verbose_)
63  edm::LogInfo("TrackingCertificationInfo") << " inserting " << QTname << " in TrackingMEsMap" << std::endl;
64  TrackingMEsMap.insert(std::pair<std::string, TrackingMEs>(QTname, tracking_mes));
65  }
66 
67  TrackingLSMEs tracking_ls_mes;
68  // load variables for LS certification
69  std::vector<edm::ParameterSet> TrackingLSQualityMEs =
70  pSet_.getParameter<std::vector<edm::ParameterSet> >("TrackingLSQualityMEs");
71  for (const auto& meQTset : TrackingLSQualityMEs) {
72  std::string QTname = meQTset.getParameter<std::string>("QT");
73  tracking_ls_mes.TrackingFlag = nullptr;
74 
75  if (verbose_)
76  edm::LogInfo("TrackingCertificationInfo") << " inserting " << QTname << " in TrackingMEsMap" << std::endl;
77  TrackingLSMEsMap.insert(std::pair<std::string, TrackingLSMEs>(QTname, tracking_ls_mes));
78  }
79 
80  // define sub-detectors which affect the quality
81  SubDetFolder.push_back("SiStrip");
82  SubDetFolder.push_back("Pixel");
83 }
84 
86  edm::LogInfo("TrackingCertificationInfo") << "Deleting TrackingCertificationInfo ";
87 }
88 //
89 // -- Begin Job
90 //
92 //
93 // -- Begin Run
94 //
96  edm::LogInfo("TrackingCertificationInfo") << "beginRun starting .." << std::endl;
97 
99 
100  unsigned long long cacheID = eSetup.get<SiStripDetCablingRcd>().cacheIdentifier();
101  if (m_cacheID_ != cacheID) {
102  m_cacheID_ = cacheID;
103  }
104 
105  nFEDConnected_ = 0;
106  int nPixelFEDConnected_ = 0;
107  const int siStripFedIdMin = FEDNumbering::MINSiStripFEDID;
108  const int siStripFedIdMax = FEDNumbering::MAXSiStripFEDID;
109  const int siPixelFedIdMin = FEDNumbering::MINSiPixelFEDID;
110  const int siPixelFedIdMax = FEDNumbering::MAXSiPixelFEDID;
111  const int siPixelFeds = (siPixelFedIdMax - siPixelFedIdMin + 1);
112 
113  edm::ESHandle<RunInfo> runInfoRec = eSetup.getHandle(runInfoToken_);
114  if (runInfoRec.isValid()) {
115  sumFED_ = runInfoRec.product();
116  if (sumFED_ != nullptr) {
117  std::vector<int> FedsInIds = sumFED_->m_fed_in;
118  for (auto fedID : FedsInIds) {
119  if (fedID >= siPixelFedIdMin && fedID <= siPixelFedIdMax) {
120  ++nFEDConnected_;
121  ++nPixelFEDConnected_;
122  } else if (fedID >= siStripFedIdMin && fedID <= siStripFedIdMax)
123  ++nFEDConnected_;
124  }
125  LogDebug("TrackingDcsInfo") << " TrackingDcsInfo :: Connected FEDs " << nFEDConnected_;
126  }
127  }
128 
129  allPixelFEDConnected_ = (nPixelFEDConnected_ == siPixelFeds);
130 }
131 
132 //
133 // -- Book MEs for Tracking Certification fractions
134 //
136  if (verbose_)
137  edm::LogInfo("TrackingCertificationInfo")
138  << "bookTrackingCertificationMEs starting .. trackingCertificationBooked_: " << trackingCertificationBooked_
139  << std::endl;
140 
142  ibooker_.cd();
143  std::string tracking_dir = "";
144  TrackingUtility::getTopFolderPath(ibooker_, igetter_, TopFolderName_, tracking_dir);
145 
146  if (!tracking_dir.empty())
147  ibooker_.setCurrentFolder(tracking_dir + "/EventInfo");
148  else
149  ibooker_.setCurrentFolder(TopFolderName_ + "/EventInfo");
150 
151  TrackingCertification = ibooker_.bookFloat("CertificationSummary");
152 
153  std::string hname, htitle;
154  hname = "CertificationReportMap";
155  htitle = "Tracking Certification Summary Map";
156  size_t nQT = TrackingMEsMap.size();
157  TrackingCertificationSummaryMap = ibooker_.book2D(hname, htitle, nQT, 0.5, float(nQT) + 0.5, 1, 0.5, 1.5);
158  TrackingCertificationSummaryMap->setAxisTitle("Track Quality Type", 1);
160  size_t ibin = 0;
161  for (const auto& meQTset : TrackingMEsMap) {
162  TrackingCertificationSummaryMap->setBinLabel(ibin + 1, meQTset.first);
163  ibin++;
164  }
165 
166  if (!tracking_dir.empty())
167  ibooker_.setCurrentFolder(TopFolderName_ + "/EventInfo/CertificationContents");
168  else
169  ibooker_.setCurrentFolder(TopFolderName_ + "/EventInfo/CertificationContents");
170 
171  for (std::map<std::string, TrackingMEs>::iterator it = TrackingMEsMap.begin(); it != TrackingMEsMap.end(); it++) {
172  std::string meQTname = it->first;
173  if (verbose_)
174  edm::LogInfo("TrackingCertificationInfo") << "bookStatus meQTname: " << meQTname << std::endl;
175  it->second.TrackingFlag = ibooker_.bookFloat("Track" + meQTname);
176  if (verbose_)
177  edm::LogInfo("TrackingCertificationInfo")
178  << "bookStatus " << it->first << " exists ? " << it->second.TrackingFlag << std::endl;
179  }
180 
182  ibooker_.cd();
183  }
184 
185  if (verbose_)
186  edm::LogInfo("TrackingCertificationInfo")
187  << "bookStatus trackingCertificationBooked_: " << trackingCertificationBooked_ << std::endl;
188 }
189 
190 //
191 // -- Book MEs for Tracking Certification per LS
192 //
194  DQMStore::IGetter& igetter_) {
195  if (verbose_)
196  edm::LogInfo("TrackingCertificationInfo")
197  << "bookTrackingCertificationMEs starting .. trackingCertificationBooked_: " << trackingCertificationBooked_
198  << std::endl;
199 
201  ibooker_.cd();
202  std::string tracking_dir = "";
203  TrackingUtility::getTopFolderPath(ibooker_, igetter_, TopFolderName_, tracking_dir);
204 
205  if (!tracking_dir.empty())
206  ibooker_.setCurrentFolder(tracking_dir + "/EventInfo");
207  else
208  ibooker_.setCurrentFolder(TopFolderName_ + "/EventInfo");
209 
210  TrackingLSCertification = ibooker_.bookFloat("CertificationSummary");
211 
212  if (!tracking_dir.empty())
213  ibooker_.setCurrentFolder(TopFolderName_ + "/EventInfo/CertificationContents");
214  else
215  ibooker_.setCurrentFolder(TopFolderName_ + "/EventInfo/CertificationContents");
216 
217  for (std::map<std::string, TrackingLSMEs>::iterator it = TrackingLSMEsMap.begin(); it != TrackingLSMEsMap.end();
218  it++) {
219  std::string meQTname = it->first;
220  if (verbose_)
221  edm::LogInfo("TrackingCertificationInfo") << "bookStatus meQTname: " << meQTname << std::endl;
222  it->second.TrackingFlag = ibooker_.bookFloat("Track" + meQTname);
223  if (verbose_)
224  edm::LogInfo("TrackingCertificationInfo")
225  << "bookStatus " << it->first << " exists ? " << it->second.TrackingFlag << std::endl;
226  }
227 
229  ibooker_.cd();
230  }
231 
232  if (verbose_)
233  edm::LogInfo("TrackingCertificationInfo")
234  << "[TrackingCertificationInfo::bookStatus] trackingCertificationBooked_: " << trackingCertificationBooked_
235  << std::endl;
236 }
237 //
238 
239 //
240 // -- End Luminosity Block
241 //
243  DQMStore::IGetter& igetter_,
244  edm::LuminosityBlock const& lumiSeg,
245  edm::EventSetup const& eSetup) {
246  edm::LogInfo("TrackingCertificationInfo") << "endLuminosityBlock";
247  bookTrackingCertificationMEsAtLumi(ibooker_, igetter_);
248  fillDummyTrackingCertificationAtLumi(ibooker_, igetter_);
249 
250  if (nFEDConnected_ > 0)
251  fillTrackingCertificationMEsAtLumi(ibooker_, igetter_);
252  else
253  fillDummyTrackingCertificationAtLumi(ibooker_, igetter_);
254 }
255 
256 //
257 // -- End of Run
258 //
260  edm::LogInfo("TrackingCertificationInfo") << "dqmEndJob" << std::endl;
261 
262  bookTrackingCertificationMEs(ibooker_, igetter_);
263  fillDummyTrackingCertification(ibooker_, igetter_);
264 
265  if (nFEDConnected_ > 0)
266  fillTrackingCertificationMEs(ibooker_, igetter_);
267  else
268  fillDummyTrackingCertification(ibooker_, igetter_);
269 
270  edm::LogInfo("TrackingCertificationInfo") << "[TrackingCertificationInfo::endRun] DONE" << std::endl;
271 }
272 //
273 // --Fill Tracking Certification
274 //
277  edm::LogError("TrackingCertificationInfo") << "fillTrackingCertificationMEs : MEs missing " << std::endl;
278  return;
279  }
280 
281  ibooker_.cd();
282  std::string tracking_dir = "";
283  TrackingUtility::getTopFolderPath(ibooker_, igetter_, TopFolderName_, tracking_dir);
284  if (verbose_)
285  edm::LogInfo("TrackingCertificationInfo")
286  << "fillTrackingCertificationMEs tracking_dir: " << tracking_dir << std::endl;
287  std::vector<MonitorElement*> all_mes = igetter_.getContents(tracking_dir + "/EventInfo/reportSummaryContents");
288  float fval = 1.0;
289 
290  if (verbose_)
291  edm::LogInfo("TrackingCertificationInfo") << "all_mes: " << all_mes.size() << std::endl;
292 
293  if (checkPixelFEDs_) {
294  float val = 1.;
296  val = 0.;
297  int xbin = 0;
298  for (std::map<std::string, TrackingMEs>::const_iterator it = TrackingMEsMap.begin(); it != TrackingMEsMap.end();
299  it++) {
300  std::string type = it->first;
301  if (type == "pixel") {
302  it->second.TrackingFlag->Fill(val);
304  if (verbose_)
305  edm::LogInfo("TrackingCertificationInfo")
306  << "fillTrackingCertificationMEs xbin: " << xbin << " val: " << val << std::endl;
307  th2d->SetBinContent(xbin + 1, 1, val);
308  }
309  xbin++;
310  }
311  fval = fminf(fval, val);
312  }
313 
314  int xbin = (checkPixelFEDs_ ? 1 : 0);
315  for (std::vector<MonitorElement*>::const_iterator ime = all_mes.begin(); ime != all_mes.end(); ime++) {
316  MonitorElement* me = (*ime);
317  if (!me)
318  continue;
319  if (verbose_)
320  edm::LogInfo("TrackingCertificationInfo") << "fillTrackingCertificationMEs me: " << me->getName() << std::endl;
321  if (me->kind() == MonitorElement::Kind::REAL) {
322  const std::string& name = me->getName();
323  float val = me->getFloatValue();
324 
325  for (std::map<std::string, TrackingMEs>::const_iterator it = TrackingMEsMap.begin(); it != TrackingMEsMap.end();
326  it++) {
327  if (verbose_)
328  edm::LogInfo("TrackingCertificationInfo")
329  << "fillTrackingCertificationMEs ME: " << it->first << " [" << it->second.TrackingFlag->getFullname()
330  << "] flag: " << it->second.TrackingFlag->getFloatValue() << std::endl;
331 
332  std::string type = it->first;
333  if (name.find(type) != std::string::npos) {
334  if (verbose_)
335  edm::LogInfo("TrackingCertificationInfo")
336  << "fillTrackingCertificationMEs type: " << type << " <---> name: " << name << std::endl;
337  it->second.TrackingFlag->Fill(val);
338  if (verbose_)
339  edm::LogInfo("TrackingCertificationInfo")
340  << "fillTrackingCertificationMEs xbin: " << xbin << " val: " << val << std::endl;
342  th2d->SetBinContent(xbin + 1, 1, val);
343  xbin++;
344  break;
345  }
346  if (verbose_)
347  edm::LogInfo("TrackingCertificationInfo")
348  << "[TrackingCertificationInfo::fillTrackingCertificationMEs] ME: " << it->first << " ["
349  << it->second.TrackingFlag->getFullname() << "] flag: " << it->second.TrackingFlag->getFloatValue()
350  << std::endl;
351  }
352  fval = fminf(fval, val);
353  }
354  }
355  if (verbose_)
356  edm::LogInfo("TrackingCertificationInfo")
357  << "fillTrackingCertificationMEs TrackingCertification: " << fval << std::endl;
359 }
360 
361 //
362 // --Reset Tracking Certification
363 //
365  DQMStore::IGetter& igetter_) {
367  bookTrackingCertificationMEs(ibooker_, igetter_);
369  for (std::map<std::string, TrackingMEs>::const_iterator it = TrackingMEsMap.begin(); it != TrackingMEsMap.end();
370  it++) {
371  it->second.TrackingFlag->Reset();
372  }
373 }
374 
375 //
376 // --Reset Tracking Certification per LS
377 //
379  DQMStore::IGetter& igetter_) {
381  bookTrackingCertificationMEsAtLumi(ibooker_, igetter_);
383  for (std::map<std::string, TrackingLSMEs>::const_iterator it = TrackingLSMEsMap.begin(); it != TrackingLSMEsMap.end();
384  it++) {
385  it->second.TrackingFlag->Reset();
386  }
387 }
388 
389 //
390 // -- Fill Dummy Tracking Certification
391 //
393  DQMStore::IGetter& igetter_) {
394  resetTrackingCertificationMEs(ibooker_, igetter_);
397  for (std::map<std::string, TrackingMEs>::const_iterator it = TrackingMEsMap.begin(); it != TrackingMEsMap.end();
398  it++) {
399  it->second.TrackingFlag->Fill(-1.0);
400  }
401 
402  for (int xbin = 1; xbin < TrackingCertificationSummaryMap->getNbinsX() + 1; xbin++)
403  for (int ybin = 1; ybin < TrackingCertificationSummaryMap->getNbinsY() + 1; ybin++)
404  TrackingCertificationSummaryMap->Fill(xbin, ybin, -1);
405  }
406 }
407 
408 //
409 // -- Fill Dummy Tracking Certification per LS
410 //
412  DQMStore::IGetter& igetter_) {
413  resetTrackingCertificationMEsAtLumi(ibooker_, igetter_);
416  for (std::map<std::string, TrackingLSMEs>::const_iterator it = TrackingLSMEsMap.begin();
417  it != TrackingLSMEsMap.end();
418  it++) {
419  it->second.TrackingFlag->Fill(-1.0);
420  }
421  }
422 }
423 
424 //
425 // --Fill Tracking Certification per LS
426 //
428  DQMStore::IGetter& igetter_) {
429  if (verbose_)
430  edm::LogInfo("TrackingCertificationInfo") << "fillTrackingCertificationMEsAtLumi starting .." << std::endl;
432  return;
433  }
434  resetTrackingCertificationMEsAtLumi(ibooker_, igetter_);
435 
436  ibooker_.cd();
437  std::string tracking_dir = "";
438  TrackingUtility::getTopFolderPath(ibooker_, igetter_, TopFolderName_, tracking_dir);
439  if (verbose_)
440  edm::LogInfo("TrackingCertificationInfo")
441  << "fillTrackingCertificationMEsAtLumi tracking_dir: " << tracking_dir << std::endl;
442 
443  if (verbose_)
444  edm::LogInfo("TrackingCertificationInfo")
445  << "fillTrackingCertificationMEsAtLumi tracking_dir: " << tracking_dir << std::endl;
446  std::vector<MonitorElement*> all_mes = igetter_.getContents(tracking_dir + "/EventInfo/reportSummaryContents");
447 
448  if (verbose_)
449  edm::LogInfo("TrackingCertificationInfo") << "all_mes: " << all_mes.size() << std::endl;
450 
451  for (std::vector<MonitorElement*>::const_iterator ime = all_mes.begin(); ime != all_mes.end(); ime++) {
452  MonitorElement* me = (*ime);
453  if (!me)
454  continue;
455  if (verbose_)
456  edm::LogInfo("TrackingCertificationInfo")
457  << "fillTrackingCertificationMEsAtLumi me: " << me->getName() << std::endl;
458  if (me->kind() == MonitorElement::Kind::REAL) {
459  const std::string& name = me->getName();
460  float val = me->getFloatValue();
461  if (verbose_)
462  edm::LogInfo("TrackingCertificationInfo") << "fillTrackingCertificationMEsAtLumi val: " << val << std::endl;
463 
464  for (std::map<std::string, TrackingLSMEs>::const_iterator it = TrackingLSMEsMap.begin();
465  it != TrackingLSMEsMap.end();
466  it++) {
467  if (verbose_)
468  edm::LogInfo("TrackingCertificationInfo")
469  << "fillTrackingCertificationMEsAtLumi ME: " << it->first << " ["
470  << it->second.TrackingFlag->getFullname() << "] flag: " << it->second.TrackingFlag->getFloatValue()
471  << std::endl;
472 
473  std::string type = it->first;
474  if (verbose_)
475  edm::LogInfo("TrackingCertificationInfo") << "fillTrackingCertificationMEsAtLumi type: " << type << std::endl;
476  if (name.find(type) != std::string::npos) {
477  if (verbose_)
478  edm::LogInfo("TrackingCertificationInfo")
479  << "fillTrackingCertificationMEsAtLumi type: " << type << " <---> name: " << name << std::endl;
480  it->second.TrackingFlag->Fill(val);
481  break;
482  }
483  if (verbose_)
484  edm::LogInfo("TrackingCertificationInfo")
485  << "fillTrackingCertificationMEsAtLumi ME: " << it->first << " ["
486  << it->second.TrackingFlag->getFullname() << "] flag: " << it->second.TrackingFlag->getFloatValue()
487  << std::endl;
488  }
489  }
490  }
491 
492  float global_dqm_flag = 1.0;
493  std::string full_path = tracking_dir + "/EventInfo/reportSummary";
494  MonitorElement* me_dqm = igetter_.get(full_path);
495  if (me_dqm && me_dqm->kind() == MonitorElement::Kind::REAL)
496  global_dqm_flag = me_dqm->getFloatValue();
497  if (verbose_)
498  edm::LogInfo("TrackingCertificationInfo")
499  << "fillTrackingCertificationMEsAtLumi global_dqm_flag: " << global_dqm_flag << std::endl;
500 
502  TrackingLSCertification->Fill(global_dqm_flag);
503 }
std::map< std::string, TrackingLSMEs > TrackingLSMEsMap
ESGetTokenH3DDVariant esConsumes(std::string const &Record, edm::ConsumesCollector &)
Definition: DeDxTools.cc:283
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
void dqmEndJob(DQMStore::IBooker &ibooker_, DQMStore::IGetter &igetter_) override
EndJob.
MonitorElement * bookFloat(TString const &name, FUNC onbooking=NOOP())
Definition: DQMStore.h:80
edm::ESGetToken< RunInfo, RunInfoRcd > runInfoToken_
T const & getData(const ESGetToken< T, R > &iToken) const noexcept(false)
Definition: EventSetup.h:119
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:36
void beginRun(edm::Run const &run, edm::EventSetup const &eSetup) override
Begin Run.
void fillDummyTrackingCertification(DQMStore::IBooker &ibooker_, DQMStore::IGetter &igetter_)
~TrackingCertificationInfo() override
Destructor.
void resetTrackingCertificationMEs(DQMStore::IBooker &ibooker_, DQMStore::IGetter &igetter_)
void beginJob() override
BeginJob.
std::map< std::string, TrackingMEs > TrackingMEsMap
Kind kind() const
Get the type of the monitor element.
void fillTrackingCertificationMEs(DQMStore::IBooker &ibooker_, DQMStore::IGetter &igetter_)
TrackingCertificationInfo(const edm::ParameterSet &ps)
Constructor.
Log< level::Error, false > LogError
std::vector< std::string > SubDetFolder
void bookTrackingCertificationMEs(DQMStore::IBooker &ibooker_, DQMStore::IGetter &igetter_)
T getUntrackedParameter(std::string const &, T const &) const
void Fill(long long x)
virtual TH2F * getTH2F() const
virtual void Reset()
Remove all data from the ME, keept the empty histogram with all its settings.
T const * product() const
Definition: ESHandle.h:86
MonitorElement * TrackingCertificationSummaryMap
void fillDummyTrackingCertificationAtLumi(DQMStore::IBooker &ibooker_, DQMStore::IGetter &igetter_)
virtual double getFloatValue() const
std::vector< int > m_fed_in
Definition: RunInfo.h:25
void fillTrackingCertificationMEsAtLumi(DQMStore::IBooker &ibooker_, DQMStore::IGetter &igetter_)
T get() const
Definition: EventSetup.h:79
Transition
Definition: Transition.h:12
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
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)
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
Definition: EventSetup.h:130
virtual int getNbinsY() const
get # of bins in Y-axis
bool isValid() const
Definition: ESHandle.h:44
Log< level::Info, false > LogInfo
void resetTrackingCertificationMEsAtLumi(DQMStore::IBooker &ibooker_, DQMStore::IGetter &igetter_)
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:212
virtual MonitorElement * get(std::string const &fullpath) const
Definition: DQMStore.cc:712
edm::ESGetToken< SiStripDetCabling, SiStripDetCablingRcd > detCablingToken_
const SiStripDetCabling * detCabling_
HLT enums.
virtual int getNbinsX() const
get # of bins in X-axis
static void getTopFolderPath(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter, std::string top_dir, std::string &path)
void dqmEndLuminosityBlock(DQMStore::IBooker &ibooker_, DQMStore::IGetter &igetter_, edm::LuminosityBlock const &lumiSeg, edm::EventSetup const &iSetup) override
End Of Luminosity.
Definition: Run.h:45
void bookTrackingCertificationMEsAtLumi(DQMStore::IBooker &ibooker_, DQMStore::IGetter &igetter_)
virtual std::vector< dqm::harvesting::MonitorElement * > getContents(std::string const &path) const
Definition: DQMStore.cc:625
#define LogDebug(id)
virtual void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)