CMS 3D CMS Logo

SiStripTrackerMapCreator.cc
Go to the documentation of this file.
8 
10 
13 
19 
20 #include <iostream>
21 
23  const TkDetMap* tkDetMap,
24  const TrackerTopology* tTopo)
25  : detCabling_(detCabling), tkDetMap_(tkDetMap), tTopo_(tTopo) {}
26 
27 //
28 // -- Create Geometric and Fed Tracker Map
29 //
31  DQMStore& dqm_store,
32  std::string const& map_type) {
33  const SiStripFedCabling* fedcabling = detCabling_->fedCabling();
34 
35  if (!fedcabling)
36  return;
37 
38  trackerMap_ = std::make_unique<TrackerMap>(tkmapPset, fedcabling, tTopo_);
39  std::string tmap_title = " Tracker Map from " + map_type;
40  trackerMap_->setTitle(tmap_title);
41 
42  nDet_ = 0;
43  tkMapMax_ = 0.0;
44  tkMapMin_ = 0.0;
45  meanToMaxFactor_ = 2.5;
46  stripTopLevelDir_ = "SiStrip";
47 
48  if (map_type == "QTestAlarm") {
49  setTkMapFromAlarm(dqm_store, nullptr);
50  } else {
51  trackerMap_->fill_all_blank();
52  setTkMapFromHistogram(dqm_store, map_type);
53  setTkMapRange(map_type);
54  }
55  trackerMap_->printonline();
56  trackerMap_.reset();
57 }
58 
60  DQMStore& dqm_store,
61  std::string& map_type,
62  const SiStripQuality* stripQuality) {
63  // Determine the strip top level dirctory in the DQM file: it is the
64  // path where MechanicalView is minus one directory
65  std::string const mdir{"MechanicalView"};
66  dqm_store.cd();
67  if (!SiStripUtility::goToDir(dqm_store, mdir)) {
68  edm::LogError("SiStripTopLevelDirNotFound") << "I cannot find the SiStrip top level directory in the DQM file";
69  } else {
70  const std::string& mechanicalview_dir = dqm_store.pwd();
71  stripTopLevelDir_ = mechanicalview_dir.substr(0, mechanicalview_dir.find_last_of('/'));
72  edm::LogInfo("SiStripTopLevelDirFound") << "SiStrip top level directory is " << stripTopLevelDir_;
73  }
74  dqm_store.cd();
75 
76  //
77  const SiStripFedCabling* fedcabling = detCabling_->fedCabling();
78 
79  if (!fedcabling)
80  return;
81 
82  trackerMap_ = std::make_unique<TrackerMap>(tkmapPset, fedcabling, tTopo_);
83 
84  meanToMaxFactor_ = tkmapPset.getUntrackedParameter<double>("meanToMaxFact", 2.5);
85  bool tkMapPSU = tkmapPset.getUntrackedParameter<bool>("psuMap", false);
86  bool tkMapFED = tkmapPset.getUntrackedParameter<bool>("fedMap", false);
87  std::string namesuffix = tkmapPset.getUntrackedParameter<std::string>("mapSuffix", "");
88 
89  // std::string tmap_title = " Tracker Map from " + map_type;
90  unsigned int runNumber_ = tkmapPset.getUntrackedParameter<unsigned int>("RunNumber", 1);
91  std::stringstream ss;
92  ss << runNumber_;
93  sRunNumber = ss.str();
94  std::cout << sRunNumber << "\n\n\n\n\n\n";
95  std::string tmap_title;
96  if (runNumber_ > 0) {
97  tmap_title = " Run: " + sRunNumber + ", Tracker Map from " + map_type;
98  } else {
99  tmap_title = " Tracker Map from " + map_type;
100  }
101  trackerMap_->setTitle(tmap_title);
102 
103  if (tkmapPset.exists("TopModules"))
104  topModules_ = tkmapPset.getUntrackedParameter<bool>("TopModules");
105  else
106  topModules_ = false;
107 
108  if (tkmapPset.exists("numberTopModules"))
109  numTopModules_ = tkmapPset.getUntrackedParameter<uint32_t>("numberTopModules");
110  else
111  numTopModules_ = 20;
112 
113  if (tkmapPset.exists("topModLabel"))
114  topModLabel_ = tkmapPset.getUntrackedParameter<int32_t>("topModLabel");
115  else
116  topModLabel_ = " top Modules " + map_type;
117 
118  if (map_type == "QTestAlarm") {
119  setTkMapFromAlarm(dqm_store, stripQuality);
120  } else {
121  setTkMapFromHistogram(dqm_store, map_type);
122  }
123  // if not overwitten by manual configuration min=0 and max= mean value * meanToMaxFactor_
125 
126  // check manual setting
127 
128  if (tkmapPset.exists("mapMax"))
129  tkMapMax_ = tkmapPset.getUntrackedParameter<double>("mapMax");
130  if (tkmapPset.exists("mapMin"))
131  tkMapMin_ = tkmapPset.getUntrackedParameter<double>("mapMin");
132 
133  if (map_type == "ResidualsMean") {
134  ResidualsRMS_ = false;
135  setTkMapFromHistogram(dqm_store, map_type);
136  edm::LogInfo("TkMapToBeSaved") << "Ready to save TkMap " << map_type << namesuffix << " with range set to "
137  << tkMapMin_ << " - " << tkMapMax_;
138  trackerMap_->save(true, 0.0000000001, 0.005, map_type + namesuffix + ".svg");
139  trackerMap_->save(true, 0.0000000001, 0.005, map_type + namesuffix + ".png", 4500, 2400);
140  ResidualsRMS_ = true;
141  map_type = "ResidualsRMS";
142  if (runNumber_ > 0) {
143  tmap_title = " Run: " + sRunNumber + ", Tracker Map from " + map_type;
144  } else {
145  tmap_title = " Tracker Map from " + map_type;
146  }
147  trackerMap_->setTitle(tmap_title);
148  setTkMapFromHistogram(dqm_store, map_type);
149  edm::LogInfo("TkMapToBeSaved") << "Ready to save TkMap " << map_type << namesuffix
150  << " with range set to 0.0 - 1.0";
151  trackerMap_->save(true, 0.0, 1.0, map_type + namesuffix + ".svg");
152  trackerMap_->save(true, 0.0, 1.0, map_type + namesuffix + ".png", 4500, 2400);
153  } else {
154  edm::LogInfo("TkMapToBeSaved") << "Ready to save TkMap " << map_type << namesuffix << " with range set to "
155  << tkMapMin_ << " - " << tkMapMax_;
156  trackerMap_->save(true, tkMapMin_, tkMapMax_, map_type + namesuffix + ".svg");
157  trackerMap_->save(true, tkMapMin_, tkMapMax_, map_type + namesuffix + ".png", 4500, 2400);
158  }
159 
160  if (tkMapPSU) {
161  edm::LogInfo("PSUMapToBeSaved") << "Ready to save PSU TkMap " << map_type << namesuffix << " with range set to "
162  << tkMapMin_ << " - " << tkMapMax_;
163  trackerMap_->save_as_psutrackermap(true, tkMapMin_, tkMapMax_, map_type + namesuffix + "_psu.png");
164  }
165 
166  if (tkMapFED) {
167  edm::LogInfo("FEDMapToBeSaved") << "Ready to save FED TkMap " << map_type << namesuffix << " with range set to "
168  << tkMapMin_ << " - " << tkMapMax_;
169  trackerMap_->save_as_fedtrackermap(true, tkMapMin_, tkMapMax_, map_type + namesuffix + "_fed.png");
170  }
171  trackerMap_.reset();
172 }
173 
174 //
175 // -- Fill Tracker Map with QTest Alarms and SiStripQuality bad modules
176 //
178  nDet_ = 0;
179  tkMapMax_ = 0.0;
180  tkMapMin_ = 0.0;
181 
182  trackerMap_->fillc_all_blank();
183 
184  std::map<unsigned int, std::string> badmodmap;
185 
186  // used to avoid multiple checks on the same detid since the loop is done on the FED channels
187  uint32_t detId_save = 0;
188  // example of loop using SiStripDetCabling
189  for (auto const& module : detCabling_->getDetCabling()) {
190  uint32_t detId = module.first;
191  if (detId == 0 || detId == 0xFFFFFFFF)
192  continue;
193  if (detId_save != detId) {
194  detId_save = detId;
195  bool isBad = stripQuality && stripQuality->IsModuleBad(detId);
196  paintTkMapFromAlarm(detId, dqm_store, isBad, badmodmap);
197  } else {
198  edm::LogWarning("TwiceTheSameDetId")
199  << "The detid " << detId << " was found already in the loop on SiStripDetCabling";
200  }
201  }
202  printBadModuleList(badmodmap);
203 }
204 //
205 //
206 // -- Paint Tracker Map with QTest Alarms
207 //
209  DQMStore& dqm_store,
210  bool const isBad,
211  std::map<unsigned int, std::string>& badmodmap) {
212  std::ostringstream comment;
213  uint16_t flag = 0;
214  flag = getDetectorFlagAndComment(&dqm_store, det_id, comment);
215 
216  int rval, gval, bval;
217  SiStripUtility::getDetectorStatusColor(flag, rval, gval, bval);
218  if (isBad) {
219  rval = 255;
220  gval = 255;
221  bval = 0;
222  comment << " PCLBadModule ";
223  }
224  trackerMap_->setText(det_id, comment.str());
225  trackerMap_->fillc(det_id, rval, gval, bval);
226 
227  if (flag != 0 || isBad) {
228  uint lay = tTopo_->layer(SiStripDetId(det_id));
229  std::string layer = " Layer " + std::to_string(lay);
230  badmodmap[det_id] = comment.str() + layer;
231  }
232 
233  detFlag_[det_id] = flag;
234 }
235 
236 //
237 // -- Paint Tracker Map from TkHistoMap Histograms
239  dqm_store.cd();
240 
241  std::string const mdir{"MechanicalView"};
242  if (!SiStripUtility::goToDir(dqm_store, mdir))
243  return;
244  std::string mechanicalview_dir = dqm_store.pwd();
245 
246  std::vector<std::string> subdet_folder;
247  subdet_folder.push_back("TIB");
248  subdet_folder.push_back("TOB");
249  subdet_folder.push_back("TEC/MINUS");
250  subdet_folder.push_back("TEC/PLUS");
251  subdet_folder.push_back("TID/MINUS");
252  subdet_folder.push_back("TID/PLUS");
253 
254  nDet_ = 0;
255  tkMapMax_ = 0.0;
256  tkMapMin_ = 0.0;
257 
258  auto topNmodVec = topModules_ ? new std::vector<std::pair<float, uint32_t>>{} : nullptr;
259  for (auto const& sd : subdet_folder) {
260  std::string dname = mechanicalview_dir + "/" + sd;
261  if (!dqm_store.dirExists(dname))
262  continue;
263  dqm_store.cd(dname);
264  std::vector<std::string> layerVec = dqm_store.getSubdirs();
265  for (auto const& layer : layerVec) {
266  if (layer.find("BadModuleList") != std::string::npos)
267  continue;
268  std::vector<MonitorElement*> meVec = dqm_store.getContents(layer);
269  MonitorElement* tkhmap_me{nullptr};
271  for (auto tkh : meVec) {
272  name = tkh->getName();
273  if (name.find("TkHMap") == std::string::npos)
274  continue;
275  if (htype == "QTestAlarm") {
276  edm::LogError("ItShouldNotBeHere") << "QTestAlarm map: you should not be here!";
277  tkhmap_me = tkh;
278  break;
279  } else if (name.find(htype) != std::string::npos) {
280  tkhmap_me = tkh;
281  break;
282  }
283  }
284  if (tkhmap_me != nullptr) {
285  paintTkMapFromHistogram(tkhmap_me, htype, topNmodVec);
286  }
287  }
288  dqm_store.cd(mechanicalview_dir);
289  }
290  dqm_store.cd();
291  if (topNmodVec)
292  printTopModules(*topNmodVec);
293 }
294 
296  std::string const& htype,
297  std::vector<std::pair<float, uint32_t>>* topNmodVec) {
298  const std::string& name = me->getName();
299  std::string lname = name.substr(name.find("TkHMap_") + 7);
300  lname = lname.substr(lname.find("_T") + 1);
301  for (DetId det_id : tkDetMap_->getDetsForLayer(TkDetMap::getLayerNum(lname))) {
302  if (det_id.rawId() <= 0)
303  continue;
304  nDet_++;
306  float fval = 0.0;
307  if (name.find("Residuals") != std::string::npos) {
308  if (ResidualsRMS_ == true) {
309  if (me->kind() == MonitorElement::Kind::TPROFILE2D) {
310  TProfile2D* tp = me->getTProfile2D();
311  float fval_prov =
312  tp->GetBinError(xyval.ix, xyval.iy) * sqrt(tp->GetBinEntries(tp->GetBin(xyval.ix, xyval.iy)));
313  fval = fval_prov;
314  }
315  } else {
316  float fval_prov = me->getBinContent(xyval.ix, xyval.iy);
317  fval = std::abs(fval_prov);
318  }
319  } else
320  fval = me->getBinContent(xyval.ix, xyval.iy);
321  if (htype == "QTestAlarm") {
322  edm::LogError("ItShouldNotBeHere") << "QTestAlarm map: you should not be here!";
323  } else {
324  if (fval == 0.0)
325  trackerMap_->fillc(det_id, 255, 255, 255);
326  else {
327  trackerMap_->fill_current_val(det_id, fval);
328  if (topNmodVec) {
329  topNmodVec->emplace_back(fval, det_id);
330  }
331  }
332  tkMapMax_ += fval;
333  }
334  }
335 }
336 //
337 // -- Get Flag and status Comment
338 //
340  uint32_t const det_id,
341  std::ostringstream& comment) {
342  comment << "Module " << det_id;
343  uint16_t flag = 0;
344 
345  // get FED channels corresponding to the det_id
346 
347  comment << " FEDCHs ";
348  constexpr std::size_t indent_width{7ull};
349  std::vector<const FedChannelConnection*> conns = detCabling_->getConnections(det_id);
350  for (auto const conn : conns) {
351  if (conn) {
352  comment << std::setw(3) << conn->fedId() << "/" << std::setw(2) << conn->fedCh() << " ";
353  } else {
354  comment << std::string(indent_width, ' ');
355  }
356  }
357  if (conns.empty()) {
358  comment << std::string(indent_width * 3, ' ');
359  } else if (conns.size() == 1) {
360  comment << std::string(indent_width * 2, ' ');
361  } else if (conns.size() == 2) {
362  comment << std::string(indent_width, ' ');
363  }
364 
365  if (!dqm_store)
366  return flag;
367 
368  SiStripFolderOrganizer folder_organizer;
369  std::string subdet_folder, badmodule_folder;
370 
371  dqm_store->cd();
372 
373  folder_organizer.setSiStripFolderName(stripTopLevelDir_);
374  folder_organizer.getSubDetFolder(det_id, tTopo_, subdet_folder);
375 
376  LogDebug("SearchBadModule") << det_id << " " << subdet_folder << " " << stripTopLevelDir_;
377 
378  if (dqm_store->dirExists(subdet_folder)) {
379  badmodule_folder = subdet_folder + "/BadModuleList";
380  LogDebug("SearchBadModule") << subdet_folder << " exists: " << badmodule_folder;
381  } else {
382  edm::LogError("SubDetFolderNotFound") << subdet_folder << " does not exist for detid " << det_id;
383  return flag;
384  }
385  if (!dqm_store->dirExists(badmodule_folder)) {
386  LogDebug("BadModuleFolderNotFound") << badmodule_folder << " does not exist for detid " << det_id;
387  return flag;
388  }
389  std::ostringstream badmodule_path;
390  badmodule_path << badmodule_folder << "/" << det_id;
391  LogDebug("SearchBadModule") << badmodule_folder << " exists: " << badmodule_path.str();
392 
393  auto const* bad_module_me = dqm_store->get(badmodule_path.str());
394  if (bad_module_me && bad_module_me->kind() == MonitorElement::Kind::INT) {
395  LogDebug("SearchBadModule") << "Monitor Element found";
396  flag = bad_module_me->getIntValue();
397  std::string message;
399  comment << message.c_str();
400  }
401  return flag;
402 }
403 //
404 // -- create branches for root file with tracker map values by detId and fill it
405 //
406 void SiStripTrackerMapCreator::createInfoFile(std::vector<std::string> const& map_names,
407  TTree* tkinfo_tree,
408  DQMStore& dqm_store,
409  const GeometricDet* geomDet) {
410  std::map<std::string, float> tkhmap_value;
411  int qtalarm_flag = 0;
412  uint32_t det_id = 0;
413 
414  if (!tkinfo_tree) {
415  edm::LogError("SiStripTrackerMapCreator::createInfoFile") << "Tree not found!";
416  } else {
417  tkinfo_tree->Branch("DetId", &det_id, "DetId/i");
418  for (auto const& mapname : map_names) {
419  if (mapname == "QTestAlarm") {
420  qtalarm_flag = 0;
421  tkinfo_tree->Branch(mapname.c_str(), &qtalarm_flag, std::string(mapname + "/I").c_str());
422  } else {
423  tkhmap_value[mapname] = -1.0;
424  tkinfo_tree->Branch(mapname.c_str(), &tkhmap_value[mapname], std::string(mapname + "/F").c_str());
425  }
426  }
427 
428  std::string dirname = "";
429 
430  std::string mdir = "MechanicalView";
431  dqm_store.cd();
432  if (!SiStripUtility::goToDir(dqm_store, mdir)) {
433  edm::LogError("SiStripTrackerMapCreator::createInfoFile")
434  << "I cannot find the SiStrip top level directory in the DQM file";
435  } else {
436  const std::string& mechanicalview_dir = dqm_store.pwd();
437  dirname = mechanicalview_dir.substr(0, mechanicalview_dir.find_last_of('/'));
438  edm::LogInfo("SiStripTrackerMapCreator::createInfoFile") << "SiStrip top level directory is " << dirname;
439  }
440  dqm_store.cd();
441 
442  std::vector<TkHistoMap> tkHMaps;
443 
444  uint32_t nHists = map_names.size();
445 
446  for (uint32_t ih = 0; ih < nHists; ++ih) {
447  tkHMaps.emplace_back(tkDetMap_);
448  if (map_names.at(ih) != "QTestAlarm") {
449  std::string tkhmap_name = "TkHMap_" + map_names.at(ih);
450  tkHMaps.at(ih).loadTkHistoMap(dirname, tkhmap_name, true);
451  }
452  }
453 
454  const auto detidList = TrackerGeometryUtils::getSiStripDetIds(*geomDet);
455  for (auto const id : detidList) {
456  det_id = id;
457  for (uint32_t ih = 0; ih < nHists; ++ih) {
458  if (map_names.at(ih) == "QTestAlarm") {
459  qtalarm_flag = getDetectorFlag(id);
460  } else {
461  tkhmap_value[map_names.at(ih)] = tkHMaps.at(ih).getValue(id);
462  }
463  }
464  if (!tkinfo_tree) {
465  edm::LogError("SiStripTrackerMapCreator::createInfoFile") << "Tree not found!";
466  } else {
467  tkinfo_tree->Fill();
468  }
469  }
470  }
471 }
472 
473 // DQMStore-explicit usages
474 
475 void SiStripTrackerMapCreator::printBadModuleList(std::map<unsigned int, std::string> const& badmodmap) {
476  // Retrieve tracker topology from geometry
477  bool tibDone = false, tidSide1Done = false, tidSide2Done = false, tobDone = false, tecSide1Done = false,
478  tecSide2Done = false;
479  constexpr unsigned int tibFirst = 369120277 - 1, tidSide1First = 402664197 - 1, tidSide2First = 402672389 - 1,
480  tobFirst = 436228134 - 1, tecSide1First = 470044965 - 1, tecSide2First = 470307109 - 1;
481 
482  int ntib = 0, ntids1 = 0, ntids2 = 0, ntob = 0, ntecs1 = 0, ntecs2 = 0;
483 
484  for (auto const& badmod : badmodmap) {
485  SiStripDetId ssdetid(badmod.first);
486  if (ssdetid.subDetector() == SiStripDetId::TIB)
487  ntib++;
488  if (ssdetid.subDetector() == SiStripDetId::TID) {
489  if (tTopo_->tidSide(ssdetid) == 1)
490  ntids1++;
491  if (tTopo_->tidSide(ssdetid) == 2)
492  ntids2++;
493  }
494  if (ssdetid.subDetector() == SiStripDetId::TOB)
495  ntob++;
496  if (ssdetid.subDetector() == SiStripDetId::TEC) {
497  if (tTopo_->tecSide(ssdetid) == 1)
498  ntecs1++;
499  if (tTopo_->tecSide(ssdetid) == 2)
500  ntecs2++;
501  }
502  }
503 
504  edm::LogVerbatim("BadModuleList") << "Run: " << sRunNumber << ", Number of bad modules in total:";
505  edm::LogVerbatim("BadModuleList") << "--------------------------------------------------------------";
506  edm::LogVerbatim("BadModuleList") << "TIB: " << ntib;
507  edm::LogVerbatim("BadModuleList") << "TID/MINUS: " << ntids1;
508  edm::LogVerbatim("BadModuleList") << "TID/PLUS: " << ntids2;
509  edm::LogVerbatim("BadModuleList") << "TOB: " << ntob;
510  edm::LogVerbatim("BadModuleList") << "TEC/MINUS: " << ntecs1;
511  edm::LogVerbatim("BadModuleList") << "TEC/PLUS: " << ntecs2;
512  edm::LogVerbatim("BadModuleList") << "-------------------------------";
513  edm::LogVerbatim("BadModuleList");
514  edm::LogVerbatim("BadModuleList") << "List of bad modules per partition:";
515  edm::LogVerbatim("BadModuleList") << "----------------------------------";
516 
517  for (auto const& badmod : badmodmap) {
518  if (!tibDone && badmod.first >= tibFirst) {
519  tibDone = true;
520  edm::LogVerbatim("BadModuleList");
521  edm::LogVerbatim("BadModuleList") << "SubDetector TIB";
522  edm::LogVerbatim("BadModuleList");
523  }
524  if (!tidSide1Done && badmod.first >= tidSide1First) {
525  tidSide1Done = true;
526  edm::LogVerbatim("BadModuleList");
527  edm::LogVerbatim("BadModuleList") << "SubDetector TID/MINUS";
528  edm::LogVerbatim("BadModuleList");
529  }
530  if (!tidSide2Done && badmod.first >= tidSide2First) {
531  tidSide2Done = true;
532  edm::LogVerbatim("BadModuleList");
533  edm::LogVerbatim("BadModuleList") << "SubDetector TID/PLUS";
534  edm::LogVerbatim("BadModuleList");
535  }
536  if (!tobDone && badmod.first >= tobFirst) {
537  tobDone = true;
538  edm::LogVerbatim("BadModuleList");
539  edm::LogVerbatim("BadModuleList") << "SubDetector TOB";
540  edm::LogVerbatim("BadModuleList");
541  }
542  if (!tecSide1Done && badmod.first >= tecSide1First) {
543  tecSide1Done = true;
544  edm::LogVerbatim("BadModuleList");
545  edm::LogVerbatim("BadModuleList") << "SubDetector TEC/MINUS";
546  edm::LogVerbatim("BadModuleList");
547  }
548  if (!tecSide2Done && badmod.first >= tecSide2First) {
549  tecSide2Done = true;
550  edm::LogVerbatim("BadModuleList");
551  edm::LogVerbatim("BadModuleList") << "SubDetector TEC/PLUS";
552  edm::LogVerbatim("BadModuleList");
553  }
554  edm::LogVerbatim("BadModuleList") << badmod.second;
555  }
556 }
557 
558 void SiStripTrackerMapCreator::printTopModules(std::vector<std::pair<float, uint32_t>>& topNmodVec) {
559  if (topNmodVec.empty())
560  return;
561 
562  std::sort(topNmodVec.rbegin(), topNmodVec.rend());
563  if (topNmodVec.size() > numTopModules_)
564  topNmodVec.resize(numTopModules_);
565 
566  edm::LogVerbatim("TopModules") << topModLabel_;
567  edm::LogVerbatim("TopModules") << "------------------------------------------------------";
568 
569  for (auto const& aPair : topNmodVec) {
570  uint32_t det_id = aPair.second;
571  std::ostringstream comment;
573  SiStripDetId ssdetid(aPair.second);
574  if (ssdetid.subDetector() == SiStripDetId::TIB)
575  subdetector = "TIB ";
576  if (ssdetid.subDetector() == SiStripDetId::TID) {
577  if (tTopo_->tidSide(ssdetid) == 1)
578  subdetector = "TID/MINUS ";
579  if (tTopo_->tidSide(ssdetid) == 2)
580  subdetector = "TID/PLUS ";
581  }
582  if (ssdetid.subDetector() == SiStripDetId::TOB)
583  subdetector = "TOB ";
584  if (ssdetid.subDetector() == SiStripDetId::TEC) {
585  if (tTopo_->tecSide(ssdetid) == 1)
586  subdetector = "TEC/MINUS ";
587  if (tTopo_->tecSide(ssdetid) == 2)
588  subdetector = "TEC/PLUS ";
589  }
590  uint16_t flag = getDetectorFlagAndComment(nullptr, det_id, comment);
591  if (flag == 0)
592  edm::LogVerbatim("TopModules") << subdetector << comment.str() << " value: " << aPair.first;
593  }
594  edm::LogVerbatim("TopModules") << "------------------------------------------------------";
595 }
596 
597 //
598 // -- Get Tracker Map Fill Range
599 //
601  tkMapMin_ = 0.0;
602  if (tkMapMax_ == 0.0) {
603  if (map_type.find("FractionOfBadChannels") != std::string::npos)
604  tkMapMax_ = 1.0;
605  else if (map_type.find("NumberOfCluster") != std::string::npos)
606  tkMapMax_ = 0.01;
607  else if (map_type.find("NumberOfDigi") != std::string::npos)
608  tkMapMax_ = 0.6;
609  else if (map_type.find("NumberOfOffTrackCluster") != std::string::npos)
610  tkMapMax_ = 100.0;
611  else if (map_type.find("NumberOfOnTrackCluster") != std::string::npos)
612  tkMapMax_ = 50.0;
613  else if (map_type.find("StoNCorrOnTrack") != std::string::npos)
614  tkMapMax_ = 200.0;
615  } else {
616  tkMapMax_ = tkMapMax_ / nDet_ * 1.0;
618  }
619  trackerMap_->setRange(tkMapMin_, tkMapMax_);
620 }
621 
623  tkMapMin_ = 0.0;
624  if (tkMapMax_ != 0.0) {
625  tkMapMax_ = tkMapMax_ / (nDet_ * 1.0);
627  }
628 }
SiStripTrackerMapCreator::nDet_
int nDet_
Definition: SiStripTrackerMapCreator.h:70
SiStripTrackerMapCreator::tkMapMax_
float tkMapMax_
Definition: SiStripTrackerMapCreator.h:66
SiStripTrackerMapCreator::stripTopLevelDir_
std::string stripTopLevelDir_
Definition: SiStripTrackerMapCreator.h:64
dqm::implementation::IGetter::getContents
virtual std::vector< dqm::harvesting::MonitorElement * > getContents(std::string const &path) const
Definition: DQMStore.cc:593
MessageLogger.h
SiStripFolderOrganizer.h
MonitorElementData::Kind::INT
SiStripDetCabling::getDetCabling
const std::map< uint32_t, std::vector< const FedChannelConnection * > > & getDetCabling() const
Definition: SiStripDetCabling.h:33
SiStripTrackerMapCreator::SiStripTrackerMapCreator
SiStripTrackerMapCreator(const SiStripDetCabling *detCabling, const TkDetMap *tkDetMap, const TrackerTopology *tTopo)
Definition: SiStripTrackerMapCreator.cc:22
SiStripTrackerMapCreator.h
TrackerTopology
Definition: TrackerTopology.h:16
SiStripQuality::IsModuleBad
bool IsModuleBad(const uint32_t &detid) const
Definition: SiStripQuality.cc:599
TkLayerMap::XYbin::ix
int16_t ix
Definition: TkDetMap.h:15
gather_cfg.cout
cout
Definition: gather_cfg.py:144
SiStripTrackerMapCreator::tkMapMin_
float tkMapMin_
Definition: SiStripTrackerMapCreator.h:67
SiStripCommissioningClient_cfg.conn
conn
Definition: SiStripCommissioningClient_cfg.py:5
TkDetMap::getXY
const TkLayerMap::XYbin & getXY(DetId detid, DetId &cached_detid, int16_t &cached_layer, TkLayerMap::XYbin &cached_XYbin) const
Definition: TkDetMap.cc:548
DQMStore.h
TrackerTopology::layer
unsigned int layer(const DetId &id) const
Definition: TrackerTopology.cc:47
dqm::implementation::IGetter::getSubdirs
virtual DQM_DEPRECATED std::vector< std::string > getSubdirs() const
Definition: DQMStore.cc:678
SiStripTrackerMapCreator::cachedDetId_
DetId cachedDetId_
Definition: SiStripTrackerMapCreator.h:74
SiStripDetId.h
SiStripTrackerMapCreator::ResidualsRMS_
bool ResidualsRMS_
Definition: SiStripTrackerMapCreator.h:69
dqm::legacy::MonitorElement
Definition: MonitorElement.h:462
edm::ParameterSet::getUntrackedParameter
T getUntrackedParameter(std::string const &, T const &) const
SiStripDetCabling::fedCabling
const SiStripFedCabling * fedCabling() const
Definition: SiStripDetCabling.h:86
TkLayerMap::XYbin::iy
int16_t iy
Definition: TkDetMap.h:15
edm::LogInfo
Log< level::Info, false > LogInfo
Definition: MessageLogger.h:125
SiStripFedCabling
Contains cabling info at the device level, including DetId, APV pair numbers, hardware addresses,...
Definition: SiStripFedCabling.h:25
parallelization.uint
uint
Definition: parallelization.py:124
SiStripTrackerMapCreator::printBadModuleList
void printBadModuleList(std::map< unsigned int, std::string > const &badmodmap)
Definition: SiStripTrackerMapCreator.cc:475
TrackerGeometryUtils::getSiStripDetIds
std::vector< uint32_t > getSiStripDetIds(const GeometricDet &geomDet)
Definition: utils.cc:5
edm::LogWarning
Log< level::Warning, false > LogWarning
Definition: MessageLogger.h:122
SiStripUtility.h
TkDetMap::getLayerNum
static int getLayerNum(const std::string &in)
Definition: TkDetMap.cc:311
SiStripTrackerMapCreator::createInfoFile
void createInfoFile(std::vector< std::string > const &map_names, TTree *tkinfo_tree, DQMStore &dqm_store, const GeometricDet *geomDet)
Definition: SiStripTrackerMapCreator.cc:406
SiStripTrackerMapCreator::create
void create(edm::ParameterSet const &tkmapPset, DQMStore &dqm_store, std::string const &htype)
Definition: SiStripTrackerMapCreator.cc:30
BTVHLTOfflineSource_cfi.dirname
dirname
Definition: BTVHLTOfflineSource_cfi.py:7
contentValuesCheck.ss
ss
Definition: contentValuesCheck.py:33
DetId
Definition: DetId.h:17
SiStripTrackerMapCreator::tTopo_
const TrackerTopology * tTopo_
Definition: SiStripTrackerMapCreator.h:73
SiStripUtility::getDetectorStatusColor
static void getDetectorStatusColor(int status, int &rval, int &gval, int &bval)
Definition: SiStripUtility.cc:122
TrackerTopology.h
TrackerTopologyRcd.h
dqm::legacy::DQMStore
Definition: DQMStore.h:727
SiStripConfigParser.h
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
SiStripUtility::getBadModuleStatus
static void getBadModuleStatus(uint16_t flag, std::string &message)
Definition: SiStripUtility.cc:343
SiStripDetCabling
Definition: SiStripDetCabling.h:21
GeometricDet
Definition: GeometricDet.h:31
SiStripTrackerMapCreator::paintTkMapFromAlarm
void paintTkMapFromAlarm(uint32_t det_id, DQMStore &dqm_store, bool isBad, std::map< unsigned int, std::string > &badmodmap)
Definition: SiStripTrackerMapCreator.cc:208
TkDetMap
Definition: TkDetMap.h:175
SiStripDetId::TEC
static constexpr auto TEC
Definition: SiStripDetId.h:40
cmsswSequenceInfo.tp
tp
Definition: cmsswSequenceInfo.py:17
TkHistoMap.h
phase1PixelTopology::layer
constexpr std::array< uint8_t, layerIndexSize > layer
Definition: phase1PixelTopology.h:99
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
dqm::implementation::DQMStore::pwd
std::string pwd() override
Definition: DQMStore.h:567
SiStripTrackerMapCreator::sRunNumber
std::string sRunNumber
Definition: SiStripTrackerMapCreator.h:62
edm::ParameterSet::exists
bool exists(std::string const &parameterName) const
checks if a parameter exists
Definition: ParameterSet.cc:681
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:233
edm::ParameterSet
Definition: ParameterSet.h:47
SiStripFolderOrganizer::getSubDetFolder
void getSubDetFolder(const uint32_t &detid, const TrackerTopology *tTopo, std::string &folder_name)
Definition: SiStripFolderOrganizer.cc:406
SiStripTrackerMapCreator::cachedXYbin_
TkLayerMap::XYbin cachedXYbin_
Definition: SiStripTrackerMapCreator.h:77
jetUpdater_cfi.sort
sort
Definition: jetUpdater_cfi.py:29
SiStripUtility::goToDir
static bool goToDir(DQMStore &dqm_store, std::string const &name)
Definition: SiStripUtility.cc:252
TkDetMap::getDetsForLayer
std::vector< DetId > getDetsForLayer(int layer) const
Definition: TkDetMap.h:196
SiStripTrackerMapCreator::meanToMaxFactor_
float meanToMaxFactor_
Definition: SiStripTrackerMapCreator.h:68
TrackerTopology::tidSide
unsigned int tidSide(const DetId &id) const
Definition: TrackerTopology.h:190
SiStripTrackerMapCreator::getDetectorFlag
uint16_t getDetectorFlag(uint32_t const det_id)
Definition: SiStripTrackerMapCreator.h:55
SiStripFolderOrganizer::setSiStripFolderName
void setSiStripFolderName(std::string name)
Definition: SiStripFolderOrganizer.cc:41
trackerHitRTTI::vector
Definition: trackerHitRTTI.h:21
SiStripDetId::TOB
static constexpr auto TOB
Definition: SiStripDetId.h:39
utils.h
edm::LogError
Log< level::Error, false > LogError
Definition: MessageLogger.h:123
SiStripTrackerMapCreator::setTkMapFromHistogram
void setTkMapFromHistogram(DQMStore &dqm_store, std::string const &htype)
Definition: SiStripTrackerMapCreator.cc:238
SiStripTrackerMapCreator::tkDetMap_
TkDetMap const * tkDetMap_
Definition: SiStripTrackerMapCreator.h:72
SiStripDetId::TID
static constexpr auto TID
Definition: SiStripDetId.h:38
SiStripTrackerMapCreator::setTkMapFromAlarm
void setTkMapFromAlarm(DQMStore &dqm_store, const SiStripQuality *stripQuality)
Definition: SiStripTrackerMapCreator.cc:177
SiStripTrackerMapCreator::numTopModules_
uint32_t numTopModules_
Definition: SiStripTrackerMapCreator.h:79
SiStripTrackerMapCreator::cachedLayer_
int16_t cachedLayer_
Definition: SiStripTrackerMapCreator.h:75
MonitorElementData::Kind::TPROFILE2D
SiStripTrackerMapCreator::getDetectorFlagAndComment
uint16_t getDetectorFlagAndComment(DQMStore *dqm_store, uint32_t det_id, std::ostringstream &comment)
Definition: SiStripTrackerMapCreator.cc:339
SiStripTrackerMapCreator::paintTkMapFromHistogram
void paintTkMapFromHistogram(MonitorElement const *me, std::string const &map_type, std::vector< std::pair< float, uint32_t >> *topNmodVec)
Definition: SiStripTrackerMapCreator.cc:295
edm::LogVerbatim
Log< level::Info, true > LogVerbatim
Definition: MessageLogger.h:128
triggerObjects_cff.id
id
Definition: triggerObjects_cff.py:29
SiStripTrackerMapCreator::detCabling_
const SiStripDetCabling * detCabling_
Definition: SiStripTrackerMapCreator.h:71
SiStripDetId::subDetector
SubDetector subDetector() const
Definition: SiStripDetId.h:105
SiStripFolderOrganizer
Definition: SiStripFolderOrganizer.h:27
SiStripQuality.h
SiStripTrackerMapCreator::trackerMap_
std::unique_ptr< TrackerMap > trackerMap_
Definition: SiStripTrackerMapCreator.h:61
SiStripQualityRcd.h
dqm::implementation::IGetter::get
virtual MonitorElement * get(std::string const &fullpath) const
Definition: DQMStore.cc:651
SiStripDetId::TIB
static constexpr auto TIB
Definition: SiStripDetId.h:37
SiStripTrackerMapCreator::createForOffline
void createForOffline(edm::ParameterSet const &tkmapPset, DQMStore &dqm_store, std::string &htype, const SiStripQuality *)
Definition: SiStripTrackerMapCreator.cc:59
Skims_PA_cff.name
name
Definition: Skims_PA_cff.py:17
TkDetMap.h
RefreshWebPage.dname
dname
Definition: RefreshWebPage.py:56
sd
double sd
Definition: CascadeWrapper.h:113
SiStripTrackerMapCreator::setTkMapRange
void setTkMapRange(std::string const &map_type)
Definition: SiStripTrackerMapCreator.cc:600
SiStripTrackerMapCreator::topModules_
bool topModules_
Definition: SiStripTrackerMapCreator.h:78
SiStripDetCablingRcd.h
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
SiStripDetId
Detector identifier class for the strip tracker.
Definition: SiStripDetId.h:18
SiStripTrackerMapCreator::printTopModules
void printTopModules(std::vector< std::pair< float, uint32_t >> &topNmodVec)
Definition: SiStripTrackerMapCreator.cc:558
hlt_dqm_clientPB-live_cfg.me
me
Definition: hlt_dqm_clientPB-live_cfg.py:61
TkLayerMap::XYbin
Definition: TkDetMap.h:12
SiStripTrackerMapCreator::topModLabel_
std::string topModLabel_
Definition: SiStripTrackerMapCreator.h:80
SiStripTrackerMapCreator::detFlag_
std::map< uint32_t, uint16_t > detFlag_
Definition: SiStripTrackerMapCreator.h:76
sistrip::runNumber_
static const char runNumber_[]
Definition: ConstantsForDqm.h:33
SiStripDetCabling::getConnections
const std::vector< const FedChannelConnection * > & getConnections(uint32_t det_id) const
Definition: SiStripDetCabling.cc:161
dqm::implementation::IGetter::dirExists
virtual bool dirExists(std::string const &path) const
Definition: DQMStore.cc:708
SiStripTrackerMapCreator::setTkMapRangeOffline
void setTkMapRangeOffline()
Definition: SiStripTrackerMapCreator.cc:622
dqm::implementation::DQMStore::cd
void cd() override
Definition: DQMStore.h:564
RemoveAddSevLevel.flag
flag
Definition: RemoveAddSevLevel.py:116
SiStripQuality
Definition: SiStripQuality.h:32
TrackerTopology::tecSide
unsigned int tecSide(const DetId &id) const
Definition: TrackerTopology.h:184
subdetector
TString subdetector
Definition: trackSplitPlot.h:54