CMS 3D CMS Logo

List of all members | Static Public Member Functions
SiStripUtility Class Reference

#include <SiStripUtility.h>

Static Public Member Functions

static bool checkME (std::string element, std::string name, std::string &full_path)
 
static void getBadModuleStatus (uint16_t flag, std::string &message)
 
static void getDetectorStatusColor (int status, int &rval, int &gval, int &bval)
 
static int getMEList (std::string name, std::vector< std::string > &values)
 
static int getMEList (std::string name, std::string &dir_path, std::vector< std::string > &me_names)
 
static int getMEStatus (MonitorElement *me)
 
static int getMEStatus (MonitorElement *me, int &bad_channels)
 
static void getMEStatusColor (int status, int &rval, int &gval, int &bval)
 
static void getMEStatusColor (int status, int &icol, std::string &tag)
 
static void getMEValue (MonitorElement *me, std::string &val)
 
static void getModuleFolderList (DQMStore *dqm_store, std::vector< std::string > &m_ids)
 
static void getSubDetectorTag (uint32_t det_id, std::string &subdet_tag, const TrackerTopology *tTopo)
 
static void getTopFolderPath (DQMStore *dqm_store, std::string top_dir, std::string &path)
 
static bool goToDir (DQMStore *dqm_store, std::string name)
 
static void setBadModuleFlag (std::string &hname, uint16_t &flg)
 
static void split (const std::string &str, std::vector< std::string > &tokens, const std::string &delimiters=" ")
 

Detailed Description

Definition at line 20 of file SiStripUtility.h.

Member Function Documentation

bool SiStripUtility::checkME ( std::string  element,
std::string  name,
std::string &  full_path 
)
static

Definition at line 34 of file SiStripUtility.cc.

References split(), AlCaHLTBitMon_QueryRunRegistry::string, and MuonErrorMatrixValues_cff::values.

34  {
35  if (name.find(name) == std::string::npos) return false;
36  std::string prefix_str = name.substr(0,(name.find(":")));
37  prefix_str += "/";
38  std::string temp_str = name.substr(name.find(":")+1);
39  std::vector<std::string> values;
40  split(temp_str, values, ",");
41  for (std::vector<std::string>::iterator it = values.begin();
42  it != values.end(); it++) {
43  if ((*it).find(me_name) != std::string::npos) {
44  full_path = prefix_str + (*it);
45  return true;
46  }
47  }
48  return false;
49 }
static void split(const std::string &str, std::vector< std::string > &tokens, const std::string &delimiters=" ")
void SiStripUtility::getBadModuleStatus ( uint16_t  flag,
std::string &  message 
)
static

Definition at line 291 of file SiStripUtility.cc.

References globals_cff::x1.

Referenced by SiStripTrackerMapCreator::getDetectorFlagAndComment(), and SiStripActionExecutor::printFaultyModuleList().

291  {
292  if (flag == 0) message += " No Error";
293  else {
294  // message += " Error from :: ";
295  if (((flag >> 0) & 0x1) > 0) message += " Fed BadChannel : ";
296  if (((flag >> 1) & 0x1) > 0) message += " # of Digi : ";
297  if (((flag >> 2) & 0x1) > 0) message += " # of Clusters :";
298  if (((flag >> 3) & 0x1) > 0) message += " Excluded FED Channel ";
299  if (((flag >> 4) & 0x1) > 0) message += " DCSError ";
300  }
301 }
void SiStripUtility::getDetectorStatusColor ( int  status,
int &  rval,
int &  gval,
int &  bval 
)
static

Definition at line 112 of file SiStripUtility.cc.

References globals_cff::x1.

Referenced by SiStripTrackerMapCreator::paintTkMapFromAlarm().

112  {
113  // No Error
114  if (status == 0) {
115  rval = 0; gval = 255;bval = 0;
116  return;
117  }
118  // Error detected in FED Channel
119  if (((status >> 0) & 0x1) > 0) {
120  rval = 150; gval = 0; bval = 0;
121  return;
122  }
123  // Excluded FED Channel
124  if (((status >> 3) & 0x1) > 0) {
125  rval = 100; gval = 100; bval = 255;
126  return;
127  }
128  // DCS Error
129  if (((status >> 4) & 0x1) > 0) {
130  rval = 200; gval = 20; bval = 255;
131  return;
132  }
133  // Digi and Cluster Problem
134  if (((status >> 1) & 0x1) > 0) {
135  rval = 255; bval = 0;
136  if (((status >> 2) & 0x1) > 0) gval = 0;
137  else gval = 100;
138  } else {
139  rval = 251; gval = 0; bval = 100;
140  }
141 }
unsigned long long int rval
Definition: vlib.h:22
int SiStripUtility::getMEList ( std::string  name,
std::vector< std::string > &  values 
)
static

Definition at line 11 of file SiStripUtility.cc.

References split(), and AlCaHLTBitMon_QueryRunRegistry::string.

11  {
12  values.clear();
13  std::string prefix_str = name.substr(0,(name.find(":")));
14  prefix_str += "/";
15  std::string temp_str = name.substr(name.find(":")+1);
16  split(temp_str, values, ",");
17  for (std::vector<std::string>::iterator it = values.begin();
18  it != values.end(); it++) (*it).insert(0,prefix_str);
19  return values.size();
20 }
static void split(const std::string &str, std::vector< std::string > &tokens, const std::string &delimiters=" ")
int SiStripUtility::getMEList ( std::string  name,
std::string &  dir_path,
std::vector< std::string > &  me_names 
)
static

Definition at line 24 of file SiStripUtility.cc.

References split(), and AlCaHLTBitMon_QueryRunRegistry::string.

24  {
25  values.clear();
26  dir_path = name.substr(0,(name.find(":")));
27  dir_path += "/";
28  std::string temp_str = name.substr(name.find(":")+1);
29  split(temp_str, values, ",");
30  return values.size();
31 }
static void split(const std::string &str, std::vector< std::string > &tokens, const std::string &delimiters=" ")
int SiStripUtility::getMEStatus ( MonitorElement me)
static

Definition at line 146 of file SiStripUtility.cc.

References dqm::qstatus::ERROR, MonitorElement::getQReports(), MonitorElement::hasError(), MonitorElement::hasOtherReport(), MonitorElement::hasWarning(), dqm::qstatus::OTHER, mps_update::status, dqm::qstatus::STATUS_OK, and dqm::qstatus::WARNING.

Referenced by SiStripQualityChecker::fillSubDetStatus(), and SiStripHistoPlotter::makePlot().

146  {
147  int status = 0;
148  if (me->getQReports().empty()) {
149  status = 0;
150  } else if (me->hasError()) {
151  status = dqm::qstatus::ERROR;
152  } else if (me->hasWarning()) {
153  status = dqm::qstatus::WARNING;
154  } else if (me->hasOtherReport()) {
155  status = dqm::qstatus::OTHER;
156  } else {
157  status = dqm::qstatus::STATUS_OK;
158  }
159  return status;
160 }
static const int OTHER
static const int WARNING
bool hasError() const
true if at least of one of the quality tests returned an error
bool hasOtherReport() const
true if at least of one of the tests returned some other (non-ok) status
bool hasWarning() const
true if at least of one of the quality tests returned a warning
std::vector< QReport * > getQReports() const
get map of QReports
static const int STATUS_OK
static const int ERROR
int SiStripUtility::getMEStatus ( MonitorElement me,
int &  bad_channels 
)
static

Definition at line 182 of file SiStripUtility.cc.

References dqm::qstatus::ERROR, MonitorElement::getQReports(), MonitorElement::hasError(), MonitorElement::hasOtherReport(), MonitorElement::hasWarning(), dqm::qstatus::OTHER, mps_update::status, dqm::qstatus::STATUS_OK, and dqm::qstatus::WARNING.

182  {
183  int status = 0;
184  if (me->getQReports().empty()) {
185  status = 0;
186  bad_channels = -1;
187  } else {
188  std::vector<QReport *> qreports = me->getQReports();
189  bad_channels =qreports[0]->getBadChannels().size();
190  if (me->hasError()) {
191  status = dqm::qstatus::ERROR;
192  } else if (me->hasWarning()) {
193  status = dqm::qstatus::WARNING;
194  } else if (me->hasOtherReport()) {
195  status = dqm::qstatus::OTHER;
196  } else {
197  status = dqm::qstatus::STATUS_OK;
198  }
199  }
200  return status;
201 }
static const int OTHER
static const int WARNING
bool hasError() const
true if at least of one of the quality tests returned an error
bool hasOtherReport() const
true if at least of one of the tests returned some other (non-ok) status
bool hasWarning() const
true if at least of one of the quality tests returned a warning
std::vector< QReport * > getQReports() const
get map of QReports
static const int STATUS_OK
static const int ERROR
void SiStripUtility::getMEStatusColor ( int  status,
int &  rval,
int &  gval,
int &  bval 
)
static

Definition at line 75 of file SiStripUtility.cc.

References dqm::qstatus::ERROR, dqm::qstatus::OTHER, dqm::qstatus::STATUS_OK, and dqm::qstatus::WARNING.

Referenced by SiStripHistoPlotter::makePlot().

75  {
77  rval = 0; gval = 255; bval = 0;
78  } else if (status == dqm::qstatus::WARNING) {
79  rval = 255; gval = 255; bval = 0;
80  } else if (status == dqm::qstatus::ERROR) {
81  rval = 255; gval = 0; bval = 0;
82  } else if (status == dqm::qstatus::OTHER) {
83  rval = 255; gval = 150; bval = 0;
84  } else {
85  rval = 0; gval = 0; bval = 255;
86  }
87 }
static const int OTHER
static const int WARNING
unsigned long long int rval
Definition: vlib.h:22
static const int STATUS_OK
static const int ERROR
void SiStripUtility::getMEStatusColor ( int  status,
int &  icol,
std::string &  tag 
)
static

Definition at line 91 of file SiStripUtility.cc.

References dqm::qstatus::ERROR, dqm::qstatus::OTHER, dqm::qstatus::STATUS_OK, and dqm::qstatus::WARNING.

91  {
93  tag = "Ok";
94  icol = 3;
95  } else if (status == dqm::qstatus::WARNING) {
96  tag = "Warning";
97  icol = 5;
98  } else if (status == dqm::qstatus::ERROR) {
99  tag = "Error";
100  icol = 2;
101  } else if (status == dqm::qstatus::OTHER) {
102  tag = "Other";
103  icol = 1;
104  } else {
105  tag = " ";
106  icol = 1;
107  }
108 }
static const int OTHER
static const int WARNING
static const int STATUS_OK
static const int ERROR
void SiStripUtility::getMEValue ( MonitorElement me,
std::string &  val 
)
static
void SiStripUtility::getModuleFolderList ( DQMStore dqm_store,
std::vector< std::string > &  m_ids 
)
static

Definition at line 164 of file SiStripUtility.cc.

References DQMStore::cd(), DQMStore::getSubdirs(), DQMStore::goUp(), DQMStore::pwd(), and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by SiStripActionExecutor::printFaultyModuleList().

164  {
165  std::string currDir = dqm_store->pwd();
166  if (currDir.find("module_") != std::string::npos) {
167  // std::string mId = currDir.substr(currDir.find("module_")+7, 9);
168  mfolders.push_back(currDir);
169  } else {
170  std::vector<std::string> subdirs = dqm_store->getSubdirs();
171  for (std::vector<std::string>::const_iterator it = subdirs.begin();
172  it != subdirs.end(); it++) {
173  dqm_store->cd(*it);
174  getModuleFolderList(dqm_store, mfolders);
175  dqm_store->goUp();
176  }
177  }
178 }
const std::string & pwd() const
Definition: DQMStore.cc:560
std::vector< std::string > getSubdirs() const
Definition: DQMStore.cc:1606
void cd()
go to top directory (ie. root)
Definition: DQMStore.cc:565
void goUp()
equivalent to "cd .."
Definition: DQMStore.cc:599
static void getModuleFolderList(DQMStore *dqm_store, std::vector< std::string > &m_ids)
void SiStripUtility::getSubDetectorTag ( uint32_t  det_id,
std::string &  subdet_tag,
const TrackerTopology tTopo 
)
static

Definition at line 240 of file SiStripUtility.cc.

References DetId::subdetId(), StripSubdetector::TEC, TrackerTopology::tecSide(), StripSubdetector::TIB, StripSubdetector::TID, TrackerTopology::tidSide(), and StripSubdetector::TOB.

Referenced by SiStripDcsInfo::readCabling(), SiStripDaqInfo::readFedIds(), and SiStripDcsInfo::readStatus().

240  {
241  StripSubdetector subdet(det_id);
242  subdet_tag = "";
243  switch (subdet.subdetId())
244  {
246  {
247  subdet_tag = "TIB";
248  break;
249  }
251  {
252 
253  if (tTopo->tidSide(det_id) == 2) {
254  subdet_tag = "TIDF";
255  } else if (tTopo->tidSide(det_id) == 1) {
256  subdet_tag = "TIDB";
257  }
258  break;
259  }
261  {
262  subdet_tag = "TOB";
263  break;
264  }
266  {
267 
268  if (tTopo->tecSide(det_id) == 2) {
269  subdet_tag = "TECF";
270  } else if (tTopo->tecSide(det_id) == 1) {
271  subdet_tag = "TECB";
272  }
273  break;
274  }
275  }
276 }
unsigned int tidSide(const DetId &id) const
const std::string subdet_tag("SubDet")
unsigned int tecSide(const DetId &id) const
void SiStripUtility::getTopFolderPath ( DQMStore dqm_store,
std::string  top_dir,
std::string &  path 
)
static

Definition at line 305 of file SiStripUtility.cc.

References DQMStore::cd(), DQMStore::dirExists(), goToDir(), DQMStore::pwd(), and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by SiStripCertificationInfo::bookSiStripCertificationMEs(), SiStripQualityChecker::bookStatus(), SiStripDaqInfo::bookStatus(), SiStripDcsInfo::bookStatus(), and SiStripCertificationInfo::fillSiStripCertificationMEsAtLumi().

305  {
306 
307  path = "";
308  dqm_store->cd();
309  if (dqm_store->dirExists(top_dir)) {
310  dqm_store->cd(top_dir);
311  path = dqm_store->pwd();
312  } else {
313  if (SiStripUtility::goToDir(dqm_store, top_dir)) {
314  std::string mdir = "MechanicalView";
315  if (SiStripUtility::goToDir(dqm_store, mdir)) {
316  path = dqm_store->pwd();
317  path = path.substr(0, path.find(mdir)-1);
318  }
319  }
320  }
321 }
const std::string & pwd() const
Definition: DQMStore.cc:560
bool dirExists(const std::string &path) const
true if directory exists
Definition: DQMStore.cc:653
void cd()
go to top directory (ie. root)
Definition: DQMStore.cc:565
static bool goToDir(DQMStore *dqm_store, std::string name)
bool SiStripUtility::goToDir ( DQMStore dqm_store,
std::string  name 
)
static

Definition at line 215 of file SiStripUtility.cc.

References DQMStore::cd(), TrackerOfflineValidation_Dqm_cff::dirName, alignmentValidation::fname, DQMStore::getSubdirs(), DQMStore::goUp(), DQMStore::pwd(), and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by SiStripDcsInfo::addBadModules(), SiStripTrackerMapCreator::createForOffline(), SiStripTrackerMapCreator::createInfoFile(), SiStripActionExecutor::createSummaryOffline(), SiStripQualityChecker::fillDetectorStatus(), SiStripQualityChecker::fillDetectorStatusAtLumi(), SiStripQualityChecker::fillFaultyModuleStatus(), SiStripCertificationInfo::fillSiStripCertificationMEs(), SiStripDaqInfo::findExcludedModule(), getTopFolderPath(), SiStripActionExecutor::printFaultyModuleList(), and SiStripTrackerMapCreator::setTkMapFromHistogram().

215  {
216  std::string currDir = dqm_store->pwd();
217  std::string dirName = currDir.substr(currDir.find_last_of("/")+1);
218  if (dirName.find(name) == 0) {
219  return true;
220  }
221  std::vector<std::string> subDirVec = dqm_store->getSubdirs();
222  for (std::vector<std::string>::const_iterator ic = subDirVec.begin();
223  ic != subDirVec.end(); ic++) {
224  std::string fname = (*ic);
225  if (
226  (fname.find("Reference") != std::string::npos) ||
227  (fname.find("AlCaReco") != std::string::npos) ||
228  (fname.find("HLT") != std::string::npos) ||
229  (fname.find("IsolatedBunches") != std::string::npos)
230  ) continue;
231  dqm_store->cd(fname);
232  if (!goToDir(dqm_store, name)) dqm_store->goUp();
233  else return true;
234  }
235  return false;
236 }
const std::string & pwd() const
Definition: DQMStore.cc:560
std::vector< std::string > getSubdirs() const
Definition: DQMStore.cc:1606
void cd()
go to top directory (ie. root)
Definition: DQMStore.cc:565
string fname
main script
void goUp()
equivalent to "cd .."
Definition: DQMStore.cc:599
static bool goToDir(DQMStore *dqm_store, std::string name)
void SiStripUtility::setBadModuleFlag ( std::string &  hname,
uint16_t &  flg 
)
static

Definition at line 280 of file SiStripUtility.cc.

Referenced by SiStripDcsInfo::addBadModules(), SiStripDaqInfo::findExcludedModule(), and SiStripQualityChecker::getModuleStatus().

280  {
281 
282  if (hname.find("FractionOfBadChannels") != std::string::npos) flg |= (1<<0);
283  else if (hname.find("NumberOfDigi") != std::string::npos) flg |= (1<<1);
284  else if (hname.find("NumberOfCluster") != std::string::npos) flg |= (1<<2);
285  else if (hname.find("ExcludedFedChannel") != std::string::npos) flg |= (1<<3);
286  else if (hname.find("DCSError") != std::string::npos) flg |= (1<<4);
287 }
void SiStripUtility::split ( const std::string &  str,
std::vector< std::string > &  tokens,
const std::string &  delimiters = " " 
)
static

Definition at line 54 of file SiStripUtility.cc.

Referenced by checkME(), getMEList(), and SiStripHistoPlotter::makeCondDBPlots().

54  {
55  // Skip delimiters at beginning.
56  std::string::size_type lastPos = str.find_first_not_of(delimiters, 0);
57 
58  // Find first "non-delimiter".
59  std::string::size_type pos = str.find_first_of(delimiters, lastPos);
60 
61  while (std::string::npos != pos || std::string::npos != lastPos) {
62  // Found a token, add it to the std::vector.
63  tokens.push_back(str.substr(lastPos, pos - lastPos));
64 
65  // Skip delimiters. Note the "not_of"
66  lastPos = str.find_first_not_of(delimiters, pos);
67 
68  // Find next "non-delimiter"
69  pos = str.find_first_of(delimiters, lastPos);
70  }
71 }
uint16_t size_type