CMS 3D CMS Logo

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