CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
SiStripTrackerMapCreator Class Reference

#include <SiStripTrackerMapCreator.h>

Public Member Functions

void create (const edm::ParameterSet &tkmapPset, DQMStore *dqm_store, std::string &htype, const edm::EventSetup &eSetup)
 
void createForOffline (const edm::ParameterSet &tkmapPset, DQMStore *dqm_store, std::string &htype, const edm::EventSetup &eSetup)
 
bool readConfiguration ()
 
 SiStripTrackerMapCreator (const edm::EventSetup &eSetup)
 
 ~SiStripTrackerMapCreator ()
 

Private Member Functions

uint16_t getDetectorFlagAndComment (DQMStore *dqm_store, uint32_t det_id, const TrackerTopology *tTopo, std::ostringstream &comment)
 
void paintTkMapFromAlarm (uint32_t det_id, const TrackerTopology *tTopo, DQMStore *dqm_store, bool isBad=false, std::map< unsigned int, std::string > *badmodmap=0)
 
void paintTkMapFromHistogram (DQMStore *dqm_store, MonitorElement *me, std::string &map_type)
 
void printBadModuleList (std::map< unsigned int, std::string > *badmodmap, const edm::EventSetup &eSetup)
 
void setTkMapFromAlarm (DQMStore *dqm_store, const edm::EventSetup &eSetup)
 
void setTkMapFromHistogram (DQMStore *dqm_store, std::string &htype)
 
void setTkMapRange (std::string &map_type)
 
void setTkMapRangeOffline ()
 

Private Attributes

uint32_t cached_detid
 
int16_t cached_layer
 
TkLayerMap::XYbin cached_XYbin
 
edm::ESHandle< SiStripDetCablingdetcabling_
 
const edm::EventSetupeSetup_
 
float meanToMaxFactor_
 
int nDet
 
std::string ssqLabel_
 
std::string stripTopLevelDir_
 
TkDetMaptkDetMap_
 
float tkMapMax_
 
float tkMapMin_
 
std::string tkMapName_
 
TrackerMaptrackerMap_
 
bool useSSQuality_
 

Detailed Description

Definition at line 23 of file SiStripTrackerMapCreator.h.

Constructor & Destructor Documentation

SiStripTrackerMapCreator::SiStripTrackerMapCreator ( const edm::EventSetup eSetup)

Definition at line 38 of file SiStripTrackerMapCreator.cc.

References cached_detid, cached_layer, detcabling_, eSetup_, edm::EventSetup::get(), cppFunctionSkipper::operator, stripTopLevelDir_, tkDetMap_, and trackerMap_.

38  : meanToMaxFactor_(2.5),eSetup_(eSetup)
39  //, psumap_()
40 {
41  cached_detid=0;
42  cached_layer=0;
43  trackerMap_ = 0;
46  // psumap_.BuildMap("CalibTracker/SiStripDCS/data/StripPSUDetIDMap_FromJan132010.dat",false);
47  if(!edm::Service<TkDetMap>().isAvailable()){
48  edm::LogError("TkHistoMap") <<
49  "\n------------------------------------------"
50  "\nUnAvailable Service TkHistoMap: please insert in the configuration file an instance like"
51  "\n\tprocess.TkDetMap = cms.Service(\"TkDetMap\")"
52  "\n------------------------------------------";
53  }
55 }
edm::ESHandle< SiStripDetCabling > detcabling_
const edm::EventSetup & eSetup_
const T & get() const
Definition: EventSetup.h:55
SiStripTrackerMapCreator::~SiStripTrackerMapCreator ( )

Definition at line 59 of file SiStripTrackerMapCreator.cc.

References trackerMap_.

59  {
60  if (trackerMap_) delete trackerMap_;
61 }

Member Function Documentation

void SiStripTrackerMapCreator::create ( const edm::ParameterSet tkmapPset,
DQMStore dqm_store,
std::string &  htype,
const edm::EventSetup eSetup 
)

Definition at line 65 of file SiStripTrackerMapCreator.cc.

References detcabling_, TrackerMap::fill_all_blank(), meanToMaxFactor_, nDet, TrackerMap::printonline(), TrackerMap::setTitle(), setTkMapFromAlarm(), setTkMapFromHistogram(), setTkMapRange(), ssqLabel_, AlCaHLTBitMon_QueryRunRegistry::string, stripTopLevelDir_, tkMapMax_, tkMapMin_, trackerMap_, and useSSQuality_.

Referenced by SiStripActionExecutor::createTkMap().

67  {
68 
69  const SiStripFedCabling* fedcabling = detcabling_->fedCabling();
70 
71  if(!fedcabling) return;
72 
73  if (trackerMap_) delete trackerMap_;
74  trackerMap_ = new TrackerMap(tkmapPset, fedcabling);
75  std::string tmap_title = " Tracker Map from " + map_type;
76  trackerMap_->setTitle(tmap_title);
77 
78  nDet = 0;
79  tkMapMax_ = 0.0;
80  tkMapMin_ = 0.0;
81  meanToMaxFactor_ = 2.5;
82  useSSQuality_ = false;
83  ssqLabel_ = "";
84  stripTopLevelDir_="SiStrip";
85 
86  if (map_type == "QTestAlarm") {
87  setTkMapFromAlarm(dqm_store, eSetup);
88  /*
89  trackerMap_->fillc_all_blank();
90  const std::vector<uint16_t>& feds = fedcabling->feds();
91  uint32_t detId_save = 0;
92  for(std::vector<unsigned short>::const_iterator ifed = feds.begin();
93  ifed < feds.end(); ifed++){
94  const std::vector<FedChannelConnection> fedChannels = fedcabling->connections( *ifed );
95  for(std::vector<FedChannelConnection>::const_iterator iconn = fedChannels.begin(); iconn < fedChannels.end(); iconn++){
96 
97  uint32_t detId = iconn->detId();
98  if (detId == 0 || detId == 0xFFFFFFFF) continue;
99  if (detId_save != detId) {
100  detId_save = detId;
101  paintTkMapFromAlarm(detId, dqm_store);
102  }
103  }
104  }
105  */
106  } else {
108  setTkMapFromHistogram(dqm_store, map_type);
109  setTkMapRange(map_type);
110  }
112  delete trackerMap_;
113  trackerMap_ = 0;
114 }
void setTkMapFromHistogram(DQMStore *dqm_store, std::string &htype)
edm::ESHandle< SiStripDetCabling > detcabling_
void setTitle(std::string s)
Definition: TrackerMap.h:126
void fill_all_blank()
Definition: TrackerMap.cc:2739
void setTkMapFromAlarm(DQMStore *dqm_store, const edm::EventSetup &eSetup)
Contains cabling info at the device level, including DetId, APV pair numbers, hardware addresses...
void printonline()
Definition: TrackerMap.cc:2877
void setTkMapRange(std::string &map_type)
void SiStripTrackerMapCreator::createForOffline ( const edm::ParameterSet tkmapPset,
DQMStore dqm_store,
std::string &  htype,
const edm::EventSetup eSetup 
)

Definition at line 118 of file SiStripTrackerMapCreator.cc.

References DQMStore::cd(), detcabling_, edm::ParameterSet::exists(), edm::ParameterSet::getUntrackedParameter(), SiStripUtility::goToDir(), meanToMaxFactor_, DQMStore::pwd(), TrackerMap::save(), TrackerMap::save_as_fedtrackermap(), TrackerMap::save_as_psutrackermap(), TrackerMap::setTitle(), setTkMapFromAlarm(), setTkMapFromHistogram(), setTkMapRangeOffline(), ssqLabel_, AlCaHLTBitMon_QueryRunRegistry::string, stripTopLevelDir_, tkMapMax_, tkMapMin_, trackerMap_, and useSSQuality_.

Referenced by SiStripActionExecutor::createOfflineTkMap().

120  {
121 
122  // Determine the strip top level dirctory in the DQM file: it is the path where MechanicalView is minus one directory
123 
124  std::string mdir = "MechanicalView";
125  dqm_store->cd();
126  if (!SiStripUtility::goToDir(dqm_store, mdir)) {
127  edm::LogError("SiStripTopLevelDirNotFound") << "I cannot find the SiStrip top level directory in the DQM file";
128  }
129  else {
130  std::string mechanicalview_dir = dqm_store->pwd();
131  stripTopLevelDir_=mechanicalview_dir.substr(0,mechanicalview_dir.find_last_of("/"));
132  edm::LogInfo("SiStripTopLevelDirFound") << "SiStrip top level directory is " << stripTopLevelDir_;
133  }
134  dqm_store->cd();
135 
136  //
137  const SiStripFedCabling* fedcabling = detcabling_->fedCabling();
138 
139  if(!fedcabling) return;
140 
141  if (trackerMap_) delete trackerMap_;
142  trackerMap_ = new TrackerMap(tkmapPset,fedcabling);
143 
144  meanToMaxFactor_ = tkmapPset.getUntrackedParameter<double>("meanToMaxFact",2.5);
145  useSSQuality_ = tkmapPset.getUntrackedParameter<bool>("useSSQuality",false);
146  ssqLabel_ = tkmapPset.getUntrackedParameter<std::string>("ssqLabel","");
147  bool tkMapPSU = tkmapPset.getUntrackedParameter<bool>("psuMap",false);
148  bool tkMapFED = tkmapPset.getUntrackedParameter<bool>("fedMap",false);
149  std::string namesuffix = tkmapPset.getUntrackedParameter<std::string>("mapSuffix","");
150 
151  std::string tmap_title = " Tracker Map from " + map_type;
152  trackerMap_->setTitle(tmap_title);
153 
154  if (map_type == "QTestAlarm") {
155  setTkMapFromAlarm(dqm_store, eSetup);
156  }
157  else {
158  setTkMapFromHistogram(dqm_store, map_type);
159  }
160  // if not overwitten by manual configuration min=0 and max= mean value * meanToMaxFactor_
162 
163  // check manual setting
164 
165  if(tkmapPset.exists("mapMax")) tkMapMax_ = tkmapPset.getUntrackedParameter<double>("mapMax");
166  if(tkmapPset.exists("mapMin")) tkMapMin_ = tkmapPset.getUntrackedParameter<double>("mapMin");
167 
168  edm::LogInfo("TkMapToBeSaved") << "Ready to save TkMap " << map_type << namesuffix << " with range set to " << tkMapMin_ << " - " << tkMapMax_;
169 
170  trackerMap_->save(true, tkMapMin_,tkMapMax_, map_type+namesuffix+".svg");
171  trackerMap_->save(true, tkMapMin_,tkMapMax_, map_type+namesuffix+".png",4500,2400);
172 
173  if(tkMapPSU) {
174 
175  edm::LogInfo("PSUMapToBeSaved") << "Ready to save PSU TkMap " << map_type << namesuffix << " with range set to " << tkMapMin_ << " - " << tkMapMax_;
176  // trackerMap_->save_as_psutrackermap(true, tkMapMin_,tkMapMax_, map_type+namesuffix+"_psu.svg");
177  trackerMap_->save_as_psutrackermap(true, tkMapMin_,tkMapMax_, map_type+namesuffix+"_psu.png");
178 
179  }
180 
181  if(tkMapFED) {
182 
183  edm::LogInfo("FEDMapToBeSaved") << "Ready to save FED TkMap " << map_type << namesuffix << " with range set to " << tkMapMin_ << " - " << tkMapMax_;
184  // trackerMap_->save_as_fedtrackermap(true, tkMapMin_,tkMapMax_, map_type+"_fed.svg");
185  trackerMap_->save_as_fedtrackermap(true, tkMapMin_,tkMapMax_, map_type+namesuffix+"_fed.png");
186 
187  }
188 
189  delete trackerMap_;
190  trackerMap_ = 0;
191 }
T getUntrackedParameter(std::string const &, T const &) const
void setTkMapFromHistogram(DQMStore *dqm_store, std::string &htype)
void cd(void)
go to top directory (ie. root)
Definition: DQMStore.cc:654
edm::ESHandle< SiStripDetCabling > detcabling_
bool exists(std::string const &parameterName) const
checks if a parameter exists
void setTitle(std::string s)
Definition: TrackerMap.h:126
void setTkMapFromAlarm(DQMStore *dqm_store, const edm::EventSetup &eSetup)
void save_as_psutrackermap(bool print_total=true, float minval=0., float maxval=0., std::string s="psu_svgmap.svg", int width=YPSUOFFSET+(YPSURSIZE+YPSUOFFSET)*NUMPSURACK_INROW+300, int height=XPSUOFFSET+(XPSURSIZE+XPSUOFFSET)*NUMPSURACK_INCOLUMN+300)
Definition: TrackerMap.cc:1843
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:698
Contains cabling info at the device level, including DetId, APV pair numbers, hardware addresses...
void save_as_fedtrackermap(bool print_total=true, float minval=0., float maxval=0., std::string s="fed_svgmap.svg", int width=YFEDOFFSET+(YFEDCSIZE+YFEDOFFSET)*NUMFEDCRATE_INROW+300, int height=XFEDOFFSET+(XFEDCSIZE+XFEDOFFSET)*NUMFEDCRATE_INCOLUMN+300)
Definition: TrackerMap.cc:2125
static bool goToDir(DQMStore *dqm_store, std::string name)
const std::string & pwd(void) const
Definition: DQMStore.cc:649
uint16_t SiStripTrackerMapCreator::getDetectorFlagAndComment ( DQMStore dqm_store,
uint32_t  det_id,
const TrackerTopology tTopo,
std::ostringstream &  comment 
)
private

Definition at line 462 of file SiStripTrackerMapCreator.cc.

References DQMStore::cd(), detcabling_, DQMStore::dirExists(), MonitorElement::DQM_KIND_INT, archive::flag, DQMStore::get(), SiStripUtility::getBadModuleStatus(), MonitorElement::getIntValue(), SiStripFolderOrganizer::getSubDetFolder(), i, MonitorElement::kind(), LogDebug, python.rootplot.argparse::message, SiStripFolderOrganizer::setSiStripFolderName(), AlCaHLTBitMon_QueryRunRegistry::string, and stripTopLevelDir_.

Referenced by paintTkMapFromAlarm().

463  {
464  // comment << " DetId " << det_id << " : ";
465  comment << "Module " << det_id;
466  uint16_t flag = 0;
467 
468  // get FED channels corresponding to the det_id
469 
470  // if(detcabling_) {
471  comment << " FEDCHs ";
472  std::vector<const FedChannelConnection*> conns = detcabling_->getConnections(det_id);
473  for(unsigned int i=0; i< conns.size() ;++i) {
474  if(conns[i]) {
475  comment << std::setw(3) << conns[i]->fedId() << "/" << std::setw(2) << conns[i]->fedCh()<< " ";
476  }
477  else {
478  comment << " ";
479  }
480  }
481  if(conns.size()==0) { comment << " "; }
482  if(conns.size()==1) { comment << " "; }
483  if(conns.size()==2) { comment << " "; }
484  // }
485 
486  // get PSU channel corresponding to the det_id
487  /*
488  comment << " PSU: ";
489  comment << psumap_.getPSUName(det_id);
490  */
491  //
492 
493  SiStripFolderOrganizer folder_organizer;
494  std::string subdet_folder, badmodule_folder;
495 
496  dqm_store->cd();
497 
498  folder_organizer.setSiStripFolderName(stripTopLevelDir_);
499  folder_organizer.getSubDetFolder(det_id, tTopo, subdet_folder);
500 
501  LogDebug("SearchBadModule") << det_id << " " << subdet_folder << " " << stripTopLevelDir_;
502 
503  if (dqm_store->dirExists(subdet_folder)){
504  badmodule_folder = subdet_folder + "/BadModuleList";
505  LogDebug("SearchBadModule") << subdet_folder << " exists: " << badmodule_folder;
506  } else {
507  // badmodule_folder = dqm_store->pwd() + "/BadModuleList";
508  edm::LogError("SubDetFolderNotFound") << subdet_folder << " does not exist for detid " << det_id;
509  return flag;
510  }
511  if (!dqm_store->dirExists(badmodule_folder)) {
512  LogDebug("BadModuleFolderNotFound") << badmodule_folder << " does not exist for detid " << det_id;
513  return flag;
514  }
515  std::ostringstream badmodule_path;
516  badmodule_path << badmodule_folder << "/" << det_id;
517  LogDebug("SearchBadModule") << badmodule_folder << " exists: " << badmodule_path;
518 
519  MonitorElement* bad_module_me = dqm_store->get(badmodule_path.str());
520  if (bad_module_me && bad_module_me->kind() == MonitorElement::DQM_KIND_INT) {
521  LogDebug("SearchBadModule") << "Monitor Element found";
522  flag = bad_module_me->getIntValue();
524  SiStripUtility::getBadModuleStatus(flag, message);
525  comment << message.c_str();
526  }
527  return flag;
528 }
#define LogDebug(id)
int i
Definition: DBlmapReader.cc:9
void setSiStripFolderName(std::string name)
void getSubDetFolder(const uint32_t &detid, const TrackerTopology *tTopo, std::string &folder_name)
void cd(void)
go to top directory (ie. root)
Definition: DQMStore.cc:654
edm::ESHandle< SiStripDetCabling > detcabling_
static void getBadModuleStatus(uint16_t flag, std::string &message)
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:1718
bool dirExists(const std::string &path) const
true if directory exists
Definition: DQMStore.cc:742
int64_t getIntValue(void) const
#define comment(par)
Definition: vmac.h:161
void SiStripTrackerMapCreator::paintTkMapFromAlarm ( uint32_t  det_id,
const TrackerTopology tTopo,
DQMStore dqm_store,
bool  isBad = false,
std::map< unsigned int, std::string > *  badmodmap = 0 
)
private

Definition at line 322 of file SiStripTrackerMapCreator.cc.

References comment, TrackerMap::fillc(), archive::flag, getDetectorFlagAndComment(), SiStripUtility::getDetectorStatusColor(), TrackerMap::setText(), and trackerMap_.

Referenced by setTkMapFromAlarm().

323  {
324  std::ostringstream comment;
325  uint16_t flag = 0;
326  flag = getDetectorFlagAndComment(dqm_store, det_id, tTopo, comment);
327 
328  int rval, gval, bval;
329  SiStripUtility::getDetectorStatusColor(flag, rval, gval, bval);
330  if(isBad) { rval=255; gval=255; bval = 0; comment << " PCLBadModule ";}
331  trackerMap_->setText(det_id, comment.str());
332  trackerMap_->fillc(det_id, rval, gval, bval);
333  if(badmodmap && (flag!=0 || isBad)) (*badmodmap)[det_id] = comment.str();
334 }
static void getDetectorStatusColor(int status, int &rval, int &gval, int &bval)
uint16_t getDetectorFlagAndComment(DQMStore *dqm_store, uint32_t det_id, const TrackerTopology *tTopo, std::ostringstream &comment)
void fillc(int idmod, int RGBcode)
Definition: TrackerMap.h:103
unsigned long long int rval
Definition: vlib.h:22
void setText(int idmod, std::string s)
Definition: TrackerMap.cc:2787
#define comment(par)
Definition: vmac.h:161
void SiStripTrackerMapCreator::paintTkMapFromHistogram ( DQMStore dqm_store,
MonitorElement me,
std::string &  map_type 
)
private

Definition at line 387 of file SiStripTrackerMapCreator.cc.

References cached_detid, cached_layer, cached_XYbin, MonitorElement::DQM_KIND_TPROFILE2D, TrackerMap::fill_current_val(), TrackerMap::fillc(), MonitorElement::getBinContent(), TkDetMap::getDetsForLayer(), TkDetMap::getLayerNum(), MonitorElement::getName(), MonitorElement::getTProfile2D(), TkDetMap::getXY(), TkLayerMap::XYbin::ix, TkLayerMap::XYbin::iy, MonitorElement::kind(), mergeVDriftHistosByStation::name, nDet, AlCaHLTBitMon_QueryRunRegistry::string, tkDetMap_, tkMapMax_, and trackerMap_.

Referenced by setTkMapFromHistogram().

387  {
388 
389  // edm::ESHandle<SiStripQuality> ssq;
390 
391  // if(useSSQuality_) { eSetup_.get<SiStripQualityRcd>().get(ssqLabel_,ssq); }
392 
393  std::string name = me->getName();
394  std::string lname = name.substr(name.find("TkHMap_")+7);
395  lname = lname.substr(lname.find("_T")+1);
396  std::vector<uint32_t> layer_detids;
397  tkDetMap_->getDetsForLayer(tkDetMap_->getLayerNum(lname), layer_detids);
398  for (std::vector<uint32_t>::const_iterator idet = layer_detids.begin(); idet != layer_detids.end(); idet++) {
399  uint32_t det_id= (*idet);
400  if (det_id <= 0) continue;
401  nDet++;
403  float fval = 0.0;
404  if ( (name.find("NumberOfOfffTrackCluster") != std::string::npos) ||
405  (name.find("NumberOfOnTrackCluster") != std::string::npos) ) {
407  TProfile2D* tp = me->getTProfile2D() ;
408  fval = tp->GetBinEntries(tp->GetBin(xyval.ix, xyval.iy)) * tp->GetBinContent(xyval.ix, xyval.iy);
409  }
410  } else fval = me->getBinContent(xyval.ix, xyval.iy);
411  if (htype == "QTestAlarm") {
412  edm::LogError("ItShouldNotBeHere") << "QTestAlarm map: you should not be here!";
413  /*
414  int rval, gval, bval;
415  std::ostringstream comment;
416  uint32_t flag = 0;
417  flag = getDetectorFlagAndComment(dqm_store, det_id, comment);
418  SiStripUtility::getDetectorStatusColor(flag, rval, gval, bval);
419  if(useSSQuality_ && ssq->IsModuleBad(det_id)) { rval=255; gval=255; bval = 0;}
420  trackerMap_->fillc(det_id, rval, gval, bval);
421  trackerMap_->setText(det_id, comment.str());
422  */
423  } else {
424  if (fval == 0.0) trackerMap_->fillc(det_id,255, 255, 255);
425  else {
426  trackerMap_->fill_current_val(det_id, fval);
427  }
428  tkMapMax_ += fval;
429  }
430  }
431 }
int getLayerNum(const std::string &in) const
Definition: TkDetMap.cc:777
const std::string & getName(void) const
get name of ME
TProfile2D * getTProfile2D(void) const
Kind kind(void) const
Get the type of the monitor element.
void getDetsForLayer(int layer, std::vector< uint32_t > &output) const
Definition: TkDetMap.cc:695
void fillc(int idmod, int RGBcode)
Definition: TrackerMap.h:103
double getBinContent(int binx) const
get content of bin (1-D)
void fill_current_val(int idmod, float current_val)
Definition: TrackerMap.cc:2749
const TkLayerMap::XYbin & getXY(uint32_t &, uint32_t &cached_detid, int16_t &cached_layer, TkLayerMap::XYbin &cached_XYbin) const
Definition: TkDetMap.cc:652
void SiStripTrackerMapCreator::printBadModuleList ( std::map< unsigned int, std::string > *  badmodmap,
const edm::EventSetup eSetup 
)
private

Definition at line 234 of file SiStripTrackerMapCreator.cc.

References edm::EventSetup::get(), edm::ESHandle< class >::product(), SiStripDetId::subDetector(), SiStripDetId::TEC, TrackerTopology::tecSide(), SiStripDetId::TIB, SiStripDetId::TID, TrackerTopology::tidSide(), and SiStripDetId::TOB.

Referenced by setTkMapFromAlarm().

234  {
235 
236  //Retrieve tracker topology from geometry
237  edm::ESHandle<TrackerTopology> tTopoHandle;
238  eSetup.get<IdealGeometryRecord>().get(tTopoHandle);
239  const TrackerTopology* const tTopo = tTopoHandle.product();
240 
241  bool tibDone=false,tidSide1Done=false,tidSide2Done=false,tobDone=false,tecSide1Done=false,tecSide2Done=false;
242  unsigned int tibFirst=369120277-1,
243  tidSide1First=402664197-1,tidSide2First=402672389-1,
244  tobFirst=436228134-1,
245  tecSide1First=470044965-1,tecSide2First=470307109-1;
246 
247  int ntib=0,ntids1=0,ntids2=0,ntob=0,ntecs1=0,ntecs2=0;
248 
249  for(std::map<unsigned int,std::string>::const_iterator badmod = badmodmap->begin(); badmod!= badmodmap->end(); ++badmod) {
250  SiStripDetId ssdetid(badmod->first);
251  if(ssdetid.subDetector()==SiStripDetId::TIB) ntib++;
252  if(ssdetid.subDetector()==SiStripDetId::TID) {
253 
254  if(tTopo->tidSide(ssdetid)==1) ntids1++;
255  if(tTopo->tidSide(ssdetid)==2) ntids2++;
256  }
257  if(ssdetid.subDetector()==SiStripDetId::TOB) ntob++;
258  if(ssdetid.subDetector()==SiStripDetId::TEC) {
259 
260  if(tTopo->tecSide(ssdetid)==1) ntecs1++;
261  if(tTopo->tecSide(ssdetid)==2) ntecs2++;
262  }
263  }
264 
265  edm::LogVerbatim("BadModuleList") << "Number of bad modules in total:";
266  edm::LogVerbatim("BadModuleList") << "--------------------------------------------------------------";
267  edm::LogVerbatim("BadModuleList") << "TIB: " << ntib;
268  edm::LogVerbatim("BadModuleList") << "TID/MINUS: " << ntids1;
269  edm::LogVerbatim("BadModuleList") << "TID/PLUS: " << ntids2;
270  edm::LogVerbatim("BadModuleList") << "TOB: " << ntob;
271  edm::LogVerbatim("BadModuleList") << "TEC/MINUS: " << ntecs1;
272  edm::LogVerbatim("BadModuleList") << "TEC/PLUS: " << ntecs2;
273  edm::LogVerbatim("BadModuleList") << "-------------------------------";
274  edm::LogVerbatim("BadModuleList") ;
275  edm::LogVerbatim("BadModuleList") << "List of bad modules per partition:";
276  edm::LogVerbatim("BadModuleList") << "----------------------------------";
277 
278  for(std::map<unsigned int,std::string>::const_iterator badmod = badmodmap->begin(); badmod!= badmodmap->end(); ++badmod) {
279  if(!tibDone && badmod->first >= tibFirst) {
280  tibDone = true;
281  edm::LogVerbatim("BadModuleList") ;
282  edm::LogVerbatim("BadModuleList") << "SubDetector TIB";
283  edm::LogVerbatim("BadModuleList") ;
284  }
285  if(!tidSide1Done && badmod->first >= tidSide1First) {
286  tidSide1Done = true;
287  edm::LogVerbatim("BadModuleList") ;
288  edm::LogVerbatim("BadModuleList") << "SubDetector TID/MINUS";
289  edm::LogVerbatim("BadModuleList") ;
290  }
291  if(!tidSide2Done && badmod->first >= tidSide2First) {
292  tidSide2Done = true;
293  edm::LogVerbatim("BadModuleList") ;
294  edm::LogVerbatim("BadModuleList") << "SubDetector TID/PLUS";
295  edm::LogVerbatim("BadModuleList") ;
296  }
297  if(!tobDone && badmod->first >= tobFirst) {
298  tobDone = true;
299  edm::LogVerbatim("BadModuleList") ;
300  edm::LogVerbatim("BadModuleList") << "SubDetector TOB";
301  edm::LogVerbatim("BadModuleList") ;
302  }
303  if(!tecSide1Done && badmod->first >= tecSide1First) {
304  tecSide1Done = true;
305  edm::LogVerbatim("BadModuleList") ;
306  edm::LogVerbatim("BadModuleList") << "SubDetector TEC/MINUS";
307  edm::LogVerbatim("BadModuleList") ;
308  }
309  if(!tecSide2Done && badmod->first >= tecSide2First) {
310  tecSide2Done = true;
311  edm::LogVerbatim("BadModuleList") ;
312  edm::LogVerbatim("BadModuleList") << "SubDetector TEC/PLUS";
313  edm::LogVerbatim("BadModuleList") ;
314  }
315  edm::LogVerbatim("BadModuleList") << badmod->second;
316  }
317 }
unsigned int tidSide(const DetId &id) const
Detector identifier class for the strip tracker.
Definition: SiStripDetId.h:17
const T & get() const
Definition: EventSetup.h:55
T const * product() const
Definition: ESHandle.h:86
unsigned int tecSide(const DetId &id) const
bool SiStripTrackerMapCreator::readConfiguration ( )
void SiStripTrackerMapCreator::setTkMapFromAlarm ( DQMStore dqm_store,
const edm::EventSetup eSetup 
)
private

Definition at line 194 of file SiStripTrackerMapCreator.cc.

References detcabling_, eSetup_, TrackerMap::fillc_all_blank(), edm::EventSetup::get(), python.multivaluedict::map(), python.rootplot.argparse::module, nDet, paintTkMapFromAlarm(), printBadModuleList(), edm::ESHandle< class >::product(), ssqLabel_, tkMapMax_, tkMapMin_, trackerMap_, and useSSQuality_.

Referenced by create(), and createForOffline().

194  {
195 
196  //Retrieve tracker topology from geometry
197  edm::ESHandle<TrackerTopology> tTopoHandle;
198  eSetup.get<IdealGeometryRecord>().get(tTopoHandle);
199  const TrackerTopology* const tTopo = tTopoHandle.product();
200 
201  nDet = 0;
202  tkMapMax_ = 0.0;
203  tkMapMin_ = 0.0;
204 
206 
208 
210 
211  std::map<unsigned int,std::string>* badmodmap = new std::map<unsigned int,std::string>;
212 
213  // used to avoid multiple checks on the same detid since the loop is done on the FED channels
214  uint32_t detId_save = 0;
215  // example of loop using SiStripDetCabling
216  for(std::map< uint32_t, std::vector<const FedChannelConnection *> >::const_iterator module = detcabling_->getDetCabling().begin();
217  module!=detcabling_->getDetCabling().end();++module) {
218  uint32_t detId = module->first;
219  if (detId == 0 || detId == 0xFFFFFFFF) continue;
220  if (detId_save != detId) {
221  detId_save = detId;
222  bool isBad = useSSQuality_ && ssq->IsModuleBad(detId);
223  paintTkMapFromAlarm(detId, tTopo, dqm_store,isBad,badmodmap);
224  }
225  else {
226  edm::LogWarning("TwiceTheSameDetId") << "The detid " << detId << " was found already in the loop on SiStripDetCabling";
227  }
228  }
229  //
230  printBadModuleList(badmodmap, eSetup);
231  delete badmodmap;
232 }
void fillc_all_blank()
Definition: TrackerMap.cc:2731
edm::ESHandle< SiStripDetCabling > detcabling_
void printBadModuleList(std::map< unsigned int, std::string > *badmodmap, const edm::EventSetup &eSetup)
void paintTkMapFromAlarm(uint32_t det_id, const TrackerTopology *tTopo, DQMStore *dqm_store, bool isBad=false, std::map< unsigned int, std::string > *badmodmap=0)
const edm::EventSetup & eSetup_
const T & get() const
Definition: EventSetup.h:55
T const * product() const
Definition: ESHandle.h:86
Definition: vlib.h:208
void SiStripTrackerMapCreator::setTkMapFromHistogram ( DQMStore dqm_store,
std::string &  htype 
)
private

Definition at line 338 of file SiStripTrackerMapCreator.cc.

References DQMStore::cd(), DQMStore::dirExists(), RefreshWebPage::dname, DQMStore::getContents(), DQMStore::getSubdirs(), SiStripUtility::goToDir(), mergeVDriftHistosByStation::name, nDet, paintTkMapFromHistogram(), DQMStore::pwd(), AlCaHLTBitMon_QueryRunRegistry::string, tkMapMax_, and tkMapMin_.

Referenced by create(), and createForOffline().

338  {
339  dqm_store->cd();
340 
341  std::string mdir = "MechanicalView";
342  if (!SiStripUtility::goToDir(dqm_store, mdir)) return;
343  std::string mechanicalview_dir = dqm_store->pwd();
344 
345  std::vector<std::string> subdet_folder;
346  subdet_folder.push_back("TIB");
347  subdet_folder.push_back("TOB");
348  subdet_folder.push_back("TEC/MINUS");
349  subdet_folder.push_back("TEC/PLUS");
350  subdet_folder.push_back("TID/MINUS");
351  subdet_folder.push_back("TID/PLUS");
352 
353  nDet = 0;
354  tkMapMax_ = 0.0;
355  tkMapMin_ = 0.0;
356 
357  for (std::vector<std::string>::const_iterator it = subdet_folder.begin(); it != subdet_folder.end(); it++) {
358  std::string dname = mechanicalview_dir + "/" + (*it);
359  if (!dqm_store->dirExists(dname)) continue;
360  dqm_store->cd(dname);
361  std::vector<std::string> layerVec = dqm_store->getSubdirs();
362  for (std::vector<std::string>::const_iterator iLayer = layerVec.begin(); iLayer != layerVec.end(); iLayer++) {
363  if ((*iLayer).find("BadModuleList") !=std::string::npos) continue;
364  std::vector<MonitorElement*> meVec = dqm_store->getContents((*iLayer));
365  MonitorElement* tkhmap_me = 0;
367  for (std::vector<MonitorElement*>::const_iterator itkh = meVec.begin(); itkh != meVec.end(); itkh++) {
368  name = (*itkh)->getName();
369  if (name.find("TkHMap") == std::string::npos) continue;
370  if (htype == "QTestAlarm" ){
371  edm::LogError("ItShouldNotBeHere") << "QTestAlarm map: you should not be here!";
372  tkhmap_me = (*itkh);
373  break;
374  } else if (name.find(htype) != std::string::npos) {
375  tkhmap_me = (*itkh);
376  break;
377  }
378  }
379  if (tkhmap_me != 0) {
380  paintTkMapFromHistogram(dqm_store,tkhmap_me, htype);
381  }
382  }
383  dqm_store->cd(mechanicalview_dir);
384  }
385  dqm_store->cd();
386 }
std::vector< std::string > getSubdirs(void) const
Definition: DQMStore.cc:1669
void cd(void)
go to top directory (ie. root)
Definition: DQMStore.cc:654
void paintTkMapFromHistogram(DQMStore *dqm_store, MonitorElement *me, std::string &map_type)
std::vector< MonitorElement * > getContents(const std::string &path) const
Definition: DQMStore.cc:1747
bool dirExists(const std::string &path) const
true if directory exists
Definition: DQMStore.cc:742
static bool goToDir(DQMStore *dqm_store, std::string name)
const std::string & pwd(void) const
Definition: DQMStore.cc:649
void SiStripTrackerMapCreator::setTkMapRange ( std::string &  map_type)
private

Definition at line 435 of file SiStripTrackerMapCreator.cc.

References meanToMaxFactor_, nDet, TrackerMap::setRange(), tkMapMax_, tkMapMin_, and trackerMap_.

Referenced by create().

435  {
436  tkMapMin_ = 0.0;
437  if (tkMapMax_ == 0.0) {
438  if (map_type.find("FractionOfBadChannels") != std::string::npos) tkMapMax_ = 1.0;
439  else if (map_type.find("NumberOfCluster") != std::string::npos) tkMapMax_ = 0.01;
440  else if (map_type.find("NumberOfDigi") != std::string::npos) tkMapMax_ = 0.6;
441  else if (map_type.find("NumberOfOffTrackCluster") != std::string::npos) tkMapMax_ = 100.0;
442  else if (map_type.find("NumberOfOnTrackCluster") != std::string::npos) tkMapMax_ = 50.0;
443  else if (map_type.find("StoNCorrOnTrack") != std::string::npos) tkMapMax_ = 200.0;
444  } else {
445  tkMapMax_ = tkMapMax_/nDet*1.0;
447  }
449 }
void setRange(float min, float max)
Definition: TrackerMap.cc:670
void SiStripTrackerMapCreator::setTkMapRangeOffline ( )
private

Definition at line 450 of file SiStripTrackerMapCreator.cc.

References meanToMaxFactor_, nDet, tkMapMax_, and tkMapMin_.

Referenced by createForOffline().

450  {
451  tkMapMin_ = 0.0;
452  if (tkMapMax_ != 0.0) {
453  tkMapMax_ = tkMapMax_/(nDet*1.0);
455  }
456  // the following line seems to be useless and misleading: in the offline map creation the range is set with the save... methods
457  // trackerMap_->setRange(tkMapMin_, tkMapMax_);
458 }

Member Data Documentation

uint32_t SiStripTrackerMapCreator::cached_detid
private

Definition at line 64 of file SiStripTrackerMapCreator.h.

Referenced by paintTkMapFromHistogram(), and SiStripTrackerMapCreator().

int16_t SiStripTrackerMapCreator::cached_layer
private

Definition at line 65 of file SiStripTrackerMapCreator.h.

Referenced by paintTkMapFromHistogram(), and SiStripTrackerMapCreator().

TkLayerMap::XYbin SiStripTrackerMapCreator::cached_XYbin
private

Definition at line 66 of file SiStripTrackerMapCreator.h.

Referenced by paintTkMapFromHistogram().

edm::ESHandle< SiStripDetCabling > SiStripTrackerMapCreator::detcabling_
private
const edm::EventSetup& SiStripTrackerMapCreator::eSetup_
private

Definition at line 61 of file SiStripTrackerMapCreator.h.

Referenced by setTkMapFromAlarm(), and SiStripTrackerMapCreator().

float SiStripTrackerMapCreator::meanToMaxFactor_
private
int SiStripTrackerMapCreator::nDet
private
std::string SiStripTrackerMapCreator::ssqLabel_
private

Definition at line 58 of file SiStripTrackerMapCreator.h.

Referenced by create(), createForOffline(), and setTkMapFromAlarm().

std::string SiStripTrackerMapCreator::stripTopLevelDir_
private
TkDetMap* SiStripTrackerMapCreator::tkDetMap_
private

Definition at line 60 of file SiStripTrackerMapCreator.h.

Referenced by paintTkMapFromHistogram(), and SiStripTrackerMapCreator().

float SiStripTrackerMapCreator::tkMapMax_
private
float SiStripTrackerMapCreator::tkMapMin_
private
std::string SiStripTrackerMapCreator::tkMapName_
private

Definition at line 51 of file SiStripTrackerMapCreator.h.

TrackerMap* SiStripTrackerMapCreator::trackerMap_
private
bool SiStripTrackerMapCreator::useSSQuality_
private

Definition at line 57 of file SiStripTrackerMapCreator.h.

Referenced by create(), createForOffline(), and setTkMapFromAlarm().