CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
SiStripTrackerMapCreator.cc
Go to the documentation of this file.
9 
12 
15 
19 
20 #include <iostream>
21 
22 //
23 // -- Constructor
24 //
25 /*
26 SiStripTrackerMapCreator::SiStripTrackerMapCreator() {
27  trackerMap_ = 0;
28  if(!edm::Service<TkDetMap>().isAvailable()){
29  edm::LogError("TkHistoMap") <<
30  "\n------------------------------------------"
31  "\nUnAvailable Service TkHistoMap: please insert in the configuration file an instance like"
32  "\n\tprocess.TkDetMap = cms.Service(\"TkDetMap\")"
33  "\n------------------------------------------";
34  }
35  tkDetMap_=edm::Service<TkDetMap>().operator->();
36 }
37 */
38 SiStripTrackerMapCreator::SiStripTrackerMapCreator(const edm::EventSetup& eSetup): meanToMaxFactor_(2.5),eSetup_(eSetup) {
39  trackerMap_ = 0;
42  if(!edm::Service<TkDetMap>().isAvailable()){
43  edm::LogError("TkHistoMap") <<
44  "\n------------------------------------------"
45  "\nUnAvailable Service TkHistoMap: please insert in the configuration file an instance like"
46  "\n\tprocess.TkDetMap = cms.Service(\"TkDetMap\")"
47  "\n------------------------------------------";
48  }
50 }
51 //
52 // -- Destructor
53 //
55  if (trackerMap_) delete trackerMap_;
56 }
57 //
58 // -- Create Geometric and Fed Tracker Map
59 //
61  DQMStore* dqm_store, std::string& map_type) {
62 
63  const SiStripFedCabling* fedcabling = detcabling_->fedCabling();
64 
65  if(!fedcabling) return;
66 
67  if (trackerMap_) delete trackerMap_;
68  trackerMap_ = new TrackerMap(tkmapPset, fedcabling);
69  std::string tmap_title = " Tracker Map from " + map_type;
70  trackerMap_->setTitle(tmap_title);
71 
72  nDet = 0;
73  tkMapMax_ = 0.0;
74  tkMapMin_ = 0.0;
75  meanToMaxFactor_ = 2.5;
76  useSSQuality_ = false;
77  ssqLabel_ = "";
78  stripTopLevelDir_="SiStrip";
79 
80  if (map_type == "QTestAlarm") {
81  setTkMapFromAlarm(dqm_store);
82  /*
83  trackerMap_->fillc_all_blank();
84  const std::vector<uint16_t>& feds = fedcabling->feds();
85  uint32_t detId_save = 0;
86  for(std::vector<unsigned short>::const_iterator ifed = feds.begin();
87  ifed < feds.end(); ifed++){
88  const std::vector<FedChannelConnection> fedChannels = fedcabling->connections( *ifed );
89  for(std::vector<FedChannelConnection>::const_iterator iconn = fedChannels.begin(); iconn < fedChannels.end(); iconn++){
90 
91  uint32_t detId = iconn->detId();
92  if (detId == 0 || detId == 0xFFFFFFFF) continue;
93  if (detId_save != detId) {
94  detId_save = detId;
95  paintTkMapFromAlarm(detId, dqm_store);
96  }
97  }
98  }
99  */
100  } else {
102  setTkMapFromHistogram(dqm_store, map_type);
103  setTkMapRange(map_type);
104  }
106  delete trackerMap_;
107  trackerMap_ = 0;
108 }
109 //
110 // -- Create Tracker Map for Offline process
111 //
113  DQMStore* dqm_store, std::string& map_type){
114 
115  // Determine the strip top level dirctory in the DQM file: it is the path where MechanicalView is minus one directory
116 
117  std::string mdir = "MechanicalView";
118  dqm_store->cd();
119  if (!SiStripUtility::goToDir(dqm_store, mdir)) {
120  edm::LogError("SiStripTopLevelDirNotFound") << "I cannot find the SiStrip top level directory in the DQM file";
121  }
122  else {
123  std::string mechanicalview_dir = dqm_store->pwd();
124  stripTopLevelDir_=mechanicalview_dir.substr(0,mechanicalview_dir.find_last_of("/"));
125  edm::LogInfo("SiStripTopLevelDirFound") << "SiStrip top level directory is " << stripTopLevelDir_;
126  }
127  dqm_store->cd();
128 
129  //
130  const SiStripFedCabling* fedcabling = detcabling_->fedCabling();
131 
132  if(!fedcabling) return;
133 
134  if (trackerMap_) delete trackerMap_;
135  trackerMap_ = new TrackerMap(tkmapPset,fedcabling);
136 
137  meanToMaxFactor_ = tkmapPset.getUntrackedParameter<double>("meanToMaxFact",2.5);
138  useSSQuality_ = tkmapPset.getUntrackedParameter<bool>("useSSQuality",false);
139  ssqLabel_ = tkmapPset.getUntrackedParameter<std::string>("ssqLabel","");
140  bool tkMapPSU = tkmapPset.getUntrackedParameter<bool>("psuMap",false);
141  bool tkMapFED = tkmapPset.getUntrackedParameter<bool>("fedMap",false);
142  std::string namesuffix = tkmapPset.getUntrackedParameter<std::string>("mapSuffix","");
143 
144  std::string tmap_title = " Tracker Map from " + map_type;
145  trackerMap_->setTitle(tmap_title);
146 
147  if (map_type == "QTestAlarm") {
148  setTkMapFromAlarm(dqm_store);
149  }
150  else {
151  setTkMapFromHistogram(dqm_store, map_type);
152  }
153  // if not overwitten by manual configuration min=0 and max= mean value * meanToMaxFactor_
155 
156  // check manual setting
157 
158  if(tkmapPset.exists("mapMax")) tkMapMax_ = tkmapPset.getUntrackedParameter<double>("mapMax");
159  if(tkmapPset.exists("mapMin")) tkMapMin_ = tkmapPset.getUntrackedParameter<double>("mapMin");
160 
161  edm::LogInfo("TkMapToBeSaved") << "Ready to save TkMap " << map_type << namesuffix << " with range set to " << tkMapMin_ << " - " << tkMapMax_;
162 
163  trackerMap_->save(true, tkMapMin_,tkMapMax_, map_type+namesuffix+".svg");
164  trackerMap_->save(true, tkMapMin_,tkMapMax_, map_type+namesuffix+".png",4500,2400);
165 
166  if(tkMapPSU) {
167 
168  edm::LogInfo("PSUMapToBeSaved") << "Ready to save PSU TkMap " << map_type << namesuffix << " with range set to " << tkMapMin_ << " - " << tkMapMax_;
169  trackerMap_->save_as_psutrackermap(true, tkMapMin_,tkMapMax_, map_type+namesuffix+"_psu.svg");
170  trackerMap_->save_as_psutrackermap(true, tkMapMin_,tkMapMax_, map_type+namesuffix+"_psu.png",6000,3200);
171 
172  }
173 
174  if(tkMapFED) {
175 
176  edm::LogInfo("FEDMapToBeSaved") << "Ready to save FED TkMap " << map_type << namesuffix << " with range set to " << tkMapMin_ << " - " << tkMapMax_;
177  // trackerMap_->save_as_fedtrackermap(true, tkMapMin_,tkMapMax_, map_type+"_fed.svg");
178  trackerMap_->save_as_fedtrackermap(true, tkMapMin_,tkMapMax_, map_type+namesuffix+"_fed.png");
179 
180  }
181 
182  delete trackerMap_;
183  trackerMap_ = 0;
184 }
185 //
186 // -- Fill Tracker Map with QTest Alarms and SiStripQuality bad modules
188 
189  nDet = 0;
190  tkMapMax_ = 0.0;
191  tkMapMin_ = 0.0;
192 
194 
196 
198 
199  std::map<unsigned int,std::string>* badmodmap = new std::map<unsigned int,std::string>;
200 
201  // used to avoid multiple checks on the same detid since the loop is done on the FED channels
202  uint32_t detId_save = 0;
203  // example of loop using SiStripDetCabling
204  for(std::map< uint32_t, std::vector<const FedChannelConnection *> >::const_iterator module = detcabling_->getDetCabling().begin();
205  module!=detcabling_->getDetCabling().end();++module) {
206  uint32_t detId = module->first;
207  if (detId == 0 || detId == 0xFFFFFFFF) continue;
208  if (detId_save != detId) {
209  detId_save = detId;
210  bool isBad = useSSQuality_ && ssq->IsModuleBad(detId);
211  paintTkMapFromAlarm(detId, dqm_store,isBad,badmodmap);
212  }
213  else {
214  edm::LogWarning("TwiceTheSameDetId") << "The detid " << detId << " was found already in the loop on SiStripDetCabling";
215  }
216  }
217  //
218  printBadModuleList(badmodmap);
219  delete badmodmap;
220 }
221 //
222 void SiStripTrackerMapCreator::printBadModuleList(std::map<unsigned int,std::string>* badmodmap) {
223 
224  bool tibDone=false,tidSide1Done=false,tidSide2Done=false,tobDone=false,tecSide1Done=false,tecSide2Done=false;
225  unsigned int tibFirst=369120277-1,
226  tidSide1First=402664197-1,tidSide2First=402672389-1,
227  tobFirst=436228134-1,
228  tecSide1First=470044965-1,tecSide2First=470307109-1;
229 
230  int ntib=0,ntids1=0,ntids2=0,ntob=0,ntecs1=0,ntecs2=0;
231 
232  for(std::map<unsigned int,std::string>::const_iterator badmod = badmodmap->begin(); badmod!= badmodmap->end(); ++badmod) {
233  SiStripDetId ssdetid(badmod->first);
234  if(ssdetid.subDetector()==SiStripDetId::TIB) ntib++;
235  if(ssdetid.subDetector()==SiStripDetId::TID) {
236  TIDDetId tiddetid(ssdetid);
237  if(tiddetid.side()==1) ntids1++;
238  if(tiddetid.side()==2) ntids2++;
239  }
240  if(ssdetid.subDetector()==SiStripDetId::TOB) ntob++;
241  if(ssdetid.subDetector()==SiStripDetId::TEC) {
242  TECDetId tecdetid(ssdetid);
243  if(tecdetid.side()==1) ntecs1++;
244  if(tecdetid.side()==2) ntecs2++;
245  }
246  }
247 
248  edm::LogVerbatim("BadModuleList") << "Number of bad modules in total:";
249  edm::LogVerbatim("BadModuleList") << "--------------------------------------------------------------";
250  edm::LogVerbatim("BadModuleList") << "TIB: " << ntib;
251  edm::LogVerbatim("BadModuleList") << "TID/side_1: " << ntids1;
252  edm::LogVerbatim("BadModuleList") << "TID/side_2: " << ntids2;
253  edm::LogVerbatim("BadModuleList") << "TOB: " << ntob;
254  edm::LogVerbatim("BadModuleList") << "TEC/side_1: " << ntecs1;
255  edm::LogVerbatim("BadModuleList") << "TEC/side_2: " << ntecs2;
256  edm::LogVerbatim("BadModuleList") << "-------------------------------";
257  edm::LogVerbatim("BadModuleList") ;
258  edm::LogVerbatim("BadModuleList") << "List of bad modules per partition:";
259  edm::LogVerbatim("BadModuleList") << "----------------------------------";
260 
261  for(std::map<unsigned int,std::string>::const_iterator badmod = badmodmap->begin(); badmod!= badmodmap->end(); ++badmod) {
262  if(!tibDone && badmod->first >= tibFirst) {
263  tibDone = true;
264  edm::LogVerbatim("BadModuleList") ;
265  edm::LogVerbatim("BadModuleList") << "SubDetector TIB";
266  edm::LogVerbatim("BadModuleList") ;
267  }
268  if(!tidSide1Done && badmod->first >= tidSide1First) {
269  tidSide1Done = true;
270  edm::LogVerbatim("BadModuleList") ;
271  edm::LogVerbatim("BadModuleList") << "SubDetector TID/side_1";
272  edm::LogVerbatim("BadModuleList") ;
273  }
274  if(!tidSide2Done && badmod->first >= tidSide2First) {
275  tidSide2Done = true;
276  edm::LogVerbatim("BadModuleList") ;
277  edm::LogVerbatim("BadModuleList") << "SubDetector TID/side_2";
278  edm::LogVerbatim("BadModuleList") ;
279  }
280  if(!tobDone && badmod->first >= tobFirst) {
281  tobDone = true;
282  edm::LogVerbatim("BadModuleList") ;
283  edm::LogVerbatim("BadModuleList") << "SubDetector TOB";
284  edm::LogVerbatim("BadModuleList") ;
285  }
286  if(!tecSide1Done && badmod->first >= tecSide1First) {
287  tecSide1Done = true;
288  edm::LogVerbatim("BadModuleList") ;
289  edm::LogVerbatim("BadModuleList") << "SubDetector TEC/side_1";
290  edm::LogVerbatim("BadModuleList") ;
291  }
292  if(!tecSide2Done && badmod->first >= tecSide2First) {
293  tecSide2Done = true;
294  edm::LogVerbatim("BadModuleList") ;
295  edm::LogVerbatim("BadModuleList") << "SubDetector TEC/side_2";
296  edm::LogVerbatim("BadModuleList") ;
297  }
298  edm::LogVerbatim("BadModuleList") << badmod->second;
299  }
300 }
301 
302 //
303 // -- Paint Tracker Map with QTest Alarms
304 //
305 void SiStripTrackerMapCreator::paintTkMapFromAlarm(uint32_t det_id, DQMStore* dqm_store, bool isBad, std::map<unsigned int,std::string>* badmodmap) {
306 
307  std::ostringstream comment;
308  uint16_t flag = 0;
309  flag = getDetectorFlagAndComment(dqm_store, det_id, comment);
310 
311  int rval, gval, bval;
312  SiStripUtility::getDetectorStatusColor(flag, rval, gval, bval);
313  if(isBad) { rval=255; gval=255; bval = 0; comment << " PCLBadModule ";}
314  trackerMap_->setText(det_id, comment.str());
315  trackerMap_->fillc(det_id, rval, gval, bval);
316  if(badmodmap && (flag!=0 || isBad)) (*badmodmap)[det_id] = comment.str();
317 }
318 
319 //
320 // -- Paint Tracker Map from TkHistoMap Histograms
321 void SiStripTrackerMapCreator::setTkMapFromHistogram(DQMStore* dqm_store, std::string& htype) {
322  dqm_store->cd();
323 
324  std::string mdir = "MechanicalView";
325  if (!SiStripUtility::goToDir(dqm_store, mdir)) return;
326  std::string mechanicalview_dir = dqm_store->pwd();
327 
328  std::vector<std::string> subdet_folder;
329  subdet_folder.push_back("TIB");
330  subdet_folder.push_back("TOB");
331  subdet_folder.push_back("TEC/side_1");
332  subdet_folder.push_back("TEC/side_2");
333  subdet_folder.push_back("TID/side_1");
334  subdet_folder.push_back("TID/side_2");
335 
336  nDet = 0;
337  tkMapMax_ = 0.0;
338  tkMapMin_ = 0.0;
339 
340  for (std::vector<std::string>::const_iterator it = subdet_folder.begin(); it != subdet_folder.end(); it++) {
341  std::string dname = mechanicalview_dir + "/" + (*it);
342  if (!dqm_store->dirExists(dname)) continue;
343  dqm_store->cd(dname);
344  std::vector<std::string> layerVec = dqm_store->getSubdirs();
345  for (std::vector<std::string>::const_iterator iLayer = layerVec.begin(); iLayer != layerVec.end(); iLayer++) {
346  if ((*iLayer).find("BadModuleList") !=std::string::npos) continue;
347  std::vector<MonitorElement*> meVec = dqm_store->getContents((*iLayer));
348  MonitorElement* tkhmap_me = 0;
349  std::string name;
350  for (std::vector<MonitorElement*>::const_iterator itkh = meVec.begin(); itkh != meVec.end(); itkh++) {
351  name = (*itkh)->getName();
352  if (name.find("TkHMap") == std::string::npos) continue;
353  if (htype == "QTestAlarm" ){
354  edm::LogError("ItShouldNotBeHere") << "QTestAlarm map: you should not be here!";
355  tkhmap_me = (*itkh);
356  break;
357  } else if (name.find(htype) != std::string::npos) {
358  tkhmap_me = (*itkh);
359  break;
360  }
361  }
362  if (tkhmap_me != 0) {
363  paintTkMapFromHistogram(dqm_store,tkhmap_me, htype);
364  }
365  }
366  dqm_store->cd(mechanicalview_dir);
367  }
368  dqm_store->cd();
369 }
371 
372  // edm::ESHandle<SiStripQuality> ssq;
373 
374  // if(useSSQuality_) { eSetup_.get<SiStripQualityRcd>().get(ssqLabel_,ssq); }
375 
376  std::string name = me->getName();
377  std::string lname = name.substr(name.find("TkHMap_")+7);
378  lname = lname.substr(lname.find("_T")+1);
379  std::vector<uint32_t> layer_detids;
380  tkDetMap_->getDetsForLayer(tkDetMap_->getLayerNum(lname), layer_detids);
381  for (std::vector<uint32_t>::const_iterator idet = layer_detids.begin(); idet != layer_detids.end(); idet++) {
382  uint32_t det_id= (*idet);
383  if (det_id <= 0) continue;
384  nDet++;
385  const TkLayerMap::XYbin& xyval = tkDetMap_->getXY(det_id);
386  float fval = 0.0;
387  if ( (name.find("NumberOfOfffTrackCluster") != std::string::npos) ||
388  (name.find("NumberOfOnTrackCluster") != std::string::npos) ) {
390  TProfile2D* tp = me->getTProfile2D() ;
391  fval = tp->GetBinEntries(tp->GetBin(xyval.ix, xyval.iy)) * tp->GetBinContent(xyval.ix, xyval.iy);
392  }
393  } else fval = me->getBinContent(xyval.ix, xyval.iy);
394  if (htype == "QTestAlarm") {
395  edm::LogError("ItShouldNotBeHere") << "QTestAlarm map: you should not be here!";
396  /*
397  int rval, gval, bval;
398  std::ostringstream comment;
399  uint32_t flag = 0;
400  flag = getDetectorFlagAndComment(dqm_store, det_id, comment);
401  SiStripUtility::getDetectorStatusColor(flag, rval, gval, bval);
402  if(useSSQuality_ && ssq->IsModuleBad(det_id)) { rval=255; gval=255; bval = 0;}
403  trackerMap_->fillc(det_id, rval, gval, bval);
404  trackerMap_->setText(det_id, comment.str());
405  */
406  } else {
407  if (fval == 0.0) trackerMap_->fillc(det_id,255, 255, 255);
408  else {
409  trackerMap_->fill_current_val(det_id, fval);
410  }
411  tkMapMax_ += fval;
412  }
413  }
414 }
415 //
416 // -- Get Tracker Map Fill Range
417 //
418 void SiStripTrackerMapCreator::setTkMapRange(std::string& map_type) {
419  tkMapMin_ = 0.0;
420  if (tkMapMax_ == 0.0) {
421  if (map_type.find("FractionOfBadChannels") != std::string::npos) tkMapMax_ = 1.0;
422  else if (map_type.find("NumberOfCluster") != std::string::npos) tkMapMax_ = 0.01;
423  else if (map_type.find("NumberOfDigi") != std::string::npos) tkMapMax_ = 0.6;
424  else if (map_type.find("NumberOfOffTrackCluster") != std::string::npos) tkMapMax_ = 100.0;
425  else if (map_type.find("NumberOfOnTrackCluster") != std::string::npos) tkMapMax_ = 50.0;
426  else if (map_type.find("StoNCorrOnTrack") != std::string::npos) tkMapMax_ = 200.0;
427  } else {
428  tkMapMax_ = tkMapMax_/nDet*1.0;
430  }
432 }
434  tkMapMin_ = 0.0;
435  if (tkMapMax_ != 0.0) {
436  tkMapMax_ = tkMapMax_/(nDet*1.0);
438  }
439  // the following line seems to be useless and misleading: in the offline map creation the range is set with the save... methods
440  // trackerMap_->setRange(tkMapMin_, tkMapMax_);
441 }
442 //
443 // -- Get Flag and status Comment
444 //
445 uint16_t SiStripTrackerMapCreator::getDetectorFlagAndComment(DQMStore* dqm_store, uint32_t det_id, std::ostringstream& comment) {
446  // comment << " DetId " << det_id << " : ";
447  comment << "Module " << det_id;
448  uint16_t flag = 0;
449 
450  // get FED channels corresponding to the det_id
451 
452  // if(detcabling_) {
453  comment << " FEDCHs ";
454  std::vector<const FedChannelConnection*> conns = detcabling_->getConnections(det_id);
455  for(unsigned int i=0; i< conns.size() ;++i) {
456  if(conns[i]) {
457  comment << std::setw(3) << conns[i]->fedId() << "/" << std::setw(2) << conns[i]->fedCh()<< " ";
458  }
459  else {
460  comment << " ";
461  }
462  }
463  if(conns.size()==0) { comment << " "; }
464  if(conns.size()==1) { comment << " "; }
465  if(conns.size()==2) { comment << " "; }
466  // }
467 
468  SiStripFolderOrganizer folder_organizer;
469  std::string subdet_folder, badmodule_folder;
470 
471  dqm_store->cd();
472 
473  folder_organizer.setSiStripFolderName(stripTopLevelDir_);
474  folder_organizer.getSubDetFolder(det_id, subdet_folder);
475 
476  LogDebug("SearchBadModule") << det_id << " " << subdet_folder << " " << stripTopLevelDir_;
477 
478  if (dqm_store->dirExists(subdet_folder)){
479  badmodule_folder = subdet_folder + "/BadModuleList";
480  LogDebug("SearchBadModule") << subdet_folder << " exists: " << badmodule_folder;
481  } else {
482  // badmodule_folder = dqm_store->pwd() + "/BadModuleList";
483  edm::LogError("SubDetFolderNotFound") << subdet_folder << " does not exist for detid " << det_id;
484  return flag;
485  }
486  if (!dqm_store->dirExists(badmodule_folder)) {
487  LogDebug("BadModuleFolderNotFound") << badmodule_folder << " does not exist for detid " << det_id;
488  return flag;
489  }
490  std::ostringstream badmodule_path;
491  badmodule_path << badmodule_folder << "/" << det_id;
492  LogDebug("SearchBadModule") << badmodule_folder << " exists: " << badmodule_path;
493 
494  MonitorElement* bad_module_me = dqm_store->get(badmodule_path.str());
495  if (bad_module_me && bad_module_me->kind() == MonitorElement::DQM_KIND_INT) {
496  LogDebug("SearchBadModule") << "Monitor Element found";
497  flag = bad_module_me->getIntValue();
498  std::string message;
499  SiStripUtility::getBadModuleStatus(flag, message);
500  comment << message.c_str();
501  }
502  return flag;
503 }
#define LogDebug(id)
void create(const edm::ParameterSet &tkmapPset, DQMStore *dqm_store, std::string &htype)
T getUntrackedParameter(std::string const &, T const &) const
const std::string & getName(void) const
get name of ME
int i
Definition: DBlmapReader.cc:9
void fillc_all_blank()
Definition: TrackerMap.cc:2504
long int flag
Definition: mlp_lapack.h:47
void setSiStripFolderName(std::string name)
void save_as_psutrackermap(bool print_total=true, float minval=0., float maxval=0., std::string s="psu_svgmap.svg", int width=1500, int height=800)
Definition: TrackerMap.cc:1700
void getSubDetFolder(const uint32_t &detid, std::string &folder_name)
std::vector< std::string > getSubdirs(void) const
Definition: DQMStore.cc:1419
void setTkMapFromHistogram(DQMStore *dqm_store, std::string &htype)
TProfile2D * getTProfile2D(void) const
void cd(void)
go to top directory (ie. root)
Definition: DQMStore.cc:406
edm::ESHandle< SiStripDetCabling > detcabling_
bool exists(std::string const &parameterName) const
checks if a parameter exists
static void getDetectorStatusColor(int status, int &rval, int &gval, int &bval)
void paintTkMapFromHistogram(DQMStore *dqm_store, MonitorElement *me, std::string &map_type)
static void getBadModuleStatus(uint16_t flag, std::string &message)
void setTkMapFromAlarm(DQMStore *dqm_store)
void setTitle(std::string s)
Definition: TrackerMap.h:71
unsigned int side() const
positive or negative id
Definition: TECDetId.h:47
int getLayerNum(std::string &in)
Definition: TkDetMap.cc:759
void fill_all_blank()
Definition: TrackerMap.cc:2512
void getDetsForLayer(int layer, std::vector< uint32_t > &output)
Definition: TkDetMap.cc:677
const edm::EventSetup & eSetup_
void save(bool print_total=true, float minval=0., float maxval=0., std::string s="svgmap.svg", int width=1500, int height=800)
Definition: TrackerMap.cc:632
Kind kind(void) const
Get the type of the monitor element.
MonitorElement * get(const std::string &path) const
get ME from full pathname (e.g. &quot;my/long/dir/my_histo&quot;)
Definition: DQMStore.cc:1468
std::vector< MonitorElement * > getContents(const std::string &path) const
Definition: DQMStore.cc:1497
void fillc(int idmod, int RGBcode)
Definition: TrackerMap.h:48
bool dirExists(const std::string &path) const
true if directory exists
Definition: DQMStore.cc:493
Detector identifier class for the strip tracker.
Definition: SiStripDetId.h:17
unsigned long long int rval
Definition: vlib.h:23
SubDetector subDetector() const
Definition: SiStripDetId.h:114
int64_t getIntValue(void) const
unsigned int side() const
positive or negative id
Definition: TIDDetId.h:45
const T & get() const
Definition: EventSetup.h:55
void printBadModuleList(std::map< unsigned int, std::string > *badmodmap)
Contains cabling info at the device level, including DetId, APV pair numbers, hardware addresses...
void setRange(float min, float max)
Definition: TrackerMap.h:72
void paintTkMapFromAlarm(uint32_t det_id, DQMStore *dqm_store, bool isBad=false, std::map< unsigned int, std::string > *badmodmap=0)
void createForOffline(const edm::ParameterSet &tkmapPset, DQMStore *dqm_store, std::string &htype)
double getBinContent(int binx) const
get content of bin (1-D)
void printonline()
Definition: TrackerMap.cc:2644
SiStripTrackerMapCreator(const edm::EventSetup &eSetup)
const TkLayerMap::XYbin & getXY(uint32_t &)
Definition: TkDetMap.cc:633
void save_as_fedtrackermap(bool print_total=true, float minval=0., float maxval=0., std::string s="fed_svgmap.svg", int width=1500, int height=800)
Definition: TrackerMap.cc:1950
void fill_current_val(int idmod, float current_val)
Definition: TrackerMap.cc:2522
void setText(int idmod, std::string s)
Definition: TrackerMap.cc:2560
static bool goToDir(DQMStore *dqm_store, std::string name)
Definition: vlib.h:209
void setTkMapRange(std::string &map_type)
uint16_t getDetectorFlagAndComment(DQMStore *dqm_store, uint32_t det_id, std::ostringstream &comment)
const std::string & pwd(void) const
Definition: DQMStore.cc:401
#define comment(par)
Definition: vmac.h:162