CMS 3D CMS Logo

List of all members | Public Types | Static Public Member Functions
TrackingUtility Class Reference

#include <TrackingUtility.h>

Public Types

typedef dqm::harvesting::DQMStore DQMStore
 
typedef dqm::harvesting::MonitorElement MonitorElement
 

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 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::IBooker &ibooker, DQMStore::IGetter &igetter, std::vector< std::string > &m_ids)
 
static void getTopFolderPath (DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter, std::string top_dir, std::string &path)
 
static bool goToDir (DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter, 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 19 of file TrackingUtility.h.

Member Typedef Documentation

◆ DQMStore

Definition at line 21 of file TrackingUtility.h.

◆ MonitorElement

Definition at line 22 of file TrackingUtility.h.

Member Function Documentation

◆ checkME()

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

Definition at line 31 of file TrackingUtility.cc.

References ALPAKA_ACCELERATOR_NAMESPACE::vertexFinder::it, mergeVDriftHistosByStation::name, split(), AlCaHLTBitMon_QueryRunRegistry::string, and contentValuesCheck::values.

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

◆ getBadModuleStatus()

void TrackingUtility::getBadModuleStatus ( uint16_t  flag,
std::string &  message 
)
static

Definition at line 231 of file TrackingUtility.cc.

References RemoveAddSevLevel::flag, and testProducerWithPsetDescEmpty_cfi::x1.

231  {
232  if (flag == 0)
233  message += " No Error";
234  else {
235  // message += " Error from :: ";
236  if (((flag >> 0) & 0x1) > 0)
237  message += " Fed BadChannel : ";
238  if (((flag >> 1) & 0x1) > 0)
239  message += " # of Digi : ";
240  if (((flag >> 2) & 0x1) > 0)
241  message += " # of Clusters :";
242  if (((flag >> 3) & 0x1) > 0)
243  message += " Excluded FED Channel ";
244  if (((flag >> 4) & 0x1) > 0)
245  message += " DCSError ";
246  }
247 }

◆ getMEList() [1/2]

int TrackingUtility::getMEList ( std::string  name,
std::vector< std::string > &  values 
)
static

Definition at line 8 of file TrackingUtility.cc.

References ALPAKA_ACCELERATOR_NAMESPACE::vertexFinder::it, mergeVDriftHistosByStation::name, split(), AlCaHLTBitMon_QueryRunRegistry::string, and contentValuesCheck::values.

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

◆ getMEList() [2/2]

int TrackingUtility::getMEList ( std::string  name,
std::string &  dir_path,
std::vector< std::string > &  me_names 
)
static

Definition at line 21 of file TrackingUtility.cc.

References mergeVDriftHistosByStation::name, split(), AlCaHLTBitMon_QueryRunRegistry::string, and contentValuesCheck::values.

21  {
22  values.clear();
23  dir_path = name.substr(0, (name.find(':')));
24  dir_path += "/";
25  std::string temp_str = name.substr(name.find(':') + 1);
26  split(temp_str, values, ",");
27  return values.size();
28 }
static void split(const std::string &str, std::vector< std::string > &tokens, const std::string &delimiters=" ")

◆ getMEStatus() [1/2]

int TrackingUtility::getMEStatus ( MonitorElement me)
static

Definition at line 120 of file TrackingUtility.cc.

References dqm::qstatus::ERROR, hlt_dqm_clientPB-live_cfg::me, dqm::qstatus::OTHER, mps_update::status, dqm::qstatus::STATUS_OK, and dqm::qstatus::WARNING.

120  {
121  int status = 0;
122  if (me->getQReports().empty()) {
123  status = 0;
124  } else if (me->hasError()) {
126  } else if (me->hasWarning()) {
128  } else if (me->hasOtherReport()) {
130  } else {
132  }
133  return status;
134 }
static const int OTHER
static const int WARNING
static const int STATUS_OK
static const int ERROR

◆ getMEStatus() [2/2]

int TrackingUtility::getMEStatus ( MonitorElement me,
int &  bad_channels 
)
static

Definition at line 157 of file TrackingUtility.cc.

References dqm::qstatus::ERROR, hlt_dqm_clientPB-live_cfg::me, dqm::qstatus::OTHER, mps_update::status, dqm::qstatus::STATUS_OK, and dqm::qstatus::WARNING.

157  {
158  int status = 0;
159  if (me->getQReports().empty()) {
160  status = 0;
161  bad_channels = -1;
162  } else {
163  std::vector<QReport*> qreports = me->getQReports();
164  bad_channels = qreports[0]->getBadChannels().size();
165  if (me->hasError()) {
167  } else if (me->hasWarning()) {
169  } else if (me->hasOtherReport()) {
171  } else {
173  }
174  }
175  return status;
176 }
static const int OTHER
static const int WARNING
static const int STATUS_OK
static const int ERROR

◆ getMEStatusColor() [1/2]

void TrackingUtility::getMEStatusColor ( int  status,
int &  rval,
int &  gval,
int &  bval 
)
static

Definition at line 72 of file TrackingUtility.cc.

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

72  {
74  rval = 0;
75  gval = 255;
76  bval = 0;
77  } else if (status == dqm::qstatus::WARNING) {
78  rval = 255;
79  gval = 255;
80  bval = 0;
81  } else if (status == dqm::qstatus::ERROR) {
82  rval = 255;
83  gval = 0;
84  bval = 0;
85  } else if (status == dqm::qstatus::OTHER) {
86  rval = 255;
87  gval = 150;
88  bval = 0;
89  } else {
90  rval = 0;
91  gval = 0;
92  bval = 255;
93  }
94 }
static const int OTHER
static const int WARNING
static const int STATUS_OK
static const int ERROR

◆ getMEStatusColor() [2/2]

void TrackingUtility::getMEStatusColor ( int  status,
int &  icol,
std::string &  tag 
)
static

Definition at line 98 of file TrackingUtility.cc.

References dqm::qstatus::ERROR, dqm::qstatus::OTHER, mps_update::status, dqm::qstatus::STATUS_OK, makeGlobalPositionRcd_cfg::tag, and dqm::qstatus::WARNING.

98  {
100  tag = "Ok";
101  icol = 3;
102  } else if (status == dqm::qstatus::WARNING) {
103  tag = "Warning";
104  icol = 5;
105  } else if (status == dqm::qstatus::ERROR) {
106  tag = "Error";
107  icol = 2;
108  } else if (status == dqm::qstatus::OTHER) {
109  tag = "Other";
110  icol = 1;
111  } else {
112  tag = " ";
113  icol = 1;
114  }
115 }
static const int OTHER
static const int WARNING
static const int STATUS_OK
static const int ERROR

◆ getMEValue()

void TrackingUtility::getMEValue ( MonitorElement me,
std::string &  val 
)
static

Definition at line 180 of file TrackingUtility.cc.

References MonitorElementData::INT, hlt_dqm_clientPB-live_cfg::me, MonitorElementData::REAL, to_string(), and heppy_batch::val.

180  {
181  val = "";
182  if (me) {
183  if (me->kind() == MonitorElement::Kind::REAL) {
184  val = std::to_string(me->getFloatValue());
185  } else if (me->kind() == MonitorElement::Kind::INT) {
186  val = std::to_string(me->getIntValue());
187  }
188  }
189 }
static std::string to_string(const XMLCh *ch)

◆ getModuleFolderList()

void TrackingUtility::getModuleFolderList ( DQMStore::IBooker ibooker,
DQMStore::IGetter igetter,
std::vector< std::string > &  m_ids 
)
static

Definition at line 138 of file TrackingUtility.cc.

References dqm::implementation::NavigatorBase::cd(), dqm::implementation::IGetter::getSubdirs(), dqm::implementation::NavigatorBase::goUp(), ALPAKA_ACCELERATOR_NAMESPACE::vertexFinder::it, dqm::implementation::NavigatorBase::pwd(), AlCaHLTBitMon_QueryRunRegistry::string, and compareTotals::subdirs.

140  {
141  std::string currDir = ibooker.pwd();
142  if (currDir.find("module_") != std::string::npos) {
143  // std::string mId = currDir.substr(currDir.find("module_")+7, 9);
144  mfolders.push_back(currDir);
145  } else {
146  std::vector<std::string> subdirs = igetter.getSubdirs();
147  for (std::vector<std::string>::const_iterator it = subdirs.begin(); it != subdirs.end(); it++) {
148  ibooker.cd(*it);
149  getModuleFolderList(ibooker, igetter, mfolders);
150  ibooker.goUp();
151  }
152  }
153 }
static void getModuleFolderList(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter, std::vector< std::string > &m_ids)
virtual std::string pwd()
Definition: DQMStore.cc:20
virtual DQM_DEPRECATED std::vector< std::string > getSubdirs() const
Definition: DQMStore.cc:739

◆ getTopFolderPath()

void TrackingUtility::getTopFolderPath ( DQMStore::IBooker ibooker,
DQMStore::IGetter igetter,
std::string  top_dir,
std::string &  path 
)
static

Definition at line 251 of file TrackingUtility.cc.

References dqm::implementation::NavigatorBase::cd(), dqm::implementation::IGetter::dirExists(), goToDir(), EnsembleCalibrationLA_cfg::path, dqm::implementation::NavigatorBase::pwd(), and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by TrackingQualityChecker::bookGlobalStatus(), TrackingQualityChecker::bookLSStatus(), TrackingCertificationInfo::bookTrackingCertificationMEs(), TrackingCertificationInfo::bookTrackingCertificationMEsAtLumi(), TrackingCertificationInfo::fillTrackingCertificationMEs(), and TrackingCertificationInfo::fillTrackingCertificationMEsAtLumi().

254  {
255  path = "";
256  ibooker.cd();
257  if (igetter.dirExists(top_dir)) {
258  ibooker.cd(top_dir);
259  path = ibooker.pwd();
260  } else {
261  if (TrackingUtility::goToDir(ibooker, igetter, top_dir)) {
262  std::string tdir = "TrackParameters";
263  if (TrackingUtility::goToDir(ibooker, igetter, tdir)) {
264  path = ibooker.pwd();
265  path = path.substr(0, path.find(tdir) - 1);
266  }
267  }
268  }
269 }
virtual std::string pwd()
Definition: DQMStore.cc:20
virtual bool dirExists(std::string const &path) const
Definition: DQMStore.cc:769
static bool goToDir(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter, std::string name)

◆ goToDir()

bool TrackingUtility::goToDir ( DQMStore::IBooker ibooker,
DQMStore::IGetter igetter,
std::string  name 
)
static

Definition at line 193 of file TrackingUtility.cc.

References dqm::implementation::NavigatorBase::cd(), TrackerOfflineValidation_Dqm_cff::dirName, alignmentValidation::fname, dqm::implementation::IGetter::getSubdirs(), dqm::implementation::NavigatorBase::goUp(), mergeVDriftHistosByStation::name, dqm::implementation::NavigatorBase::pwd(), and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by TrackingQualityChecker::fillTrackingStatus(), TrackingQualityChecker::fillTrackingStatusAtLumi(), and getTopFolderPath().

193  {
194  std::string currDir = ibooker.pwd();
195  std::string dirName = currDir.substr(currDir.find_last_of('/') + 1);
196  if (dirName.find(name) == 0) {
197  return true;
198  }
199  std::vector<std::string> subDirVec = igetter.getSubdirs();
200  for (std::vector<std::string>::const_iterator ic = subDirVec.begin(); ic != subDirVec.end(); ic++) {
201  const std::string& fname = (*ic);
202  if ((fname.find("Reference") != std::string::npos) || (fname.find("AlCaReco") != std::string::npos) ||
203  (fname.find("HLT") != std::string::npos))
204  continue;
205  igetter.cd(fname);
206  if (!goToDir(ibooker, igetter, name))
207  ibooker.goUp();
208  else
209  return true;
210  }
211  return false;
212 }
virtual std::string pwd()
Definition: DQMStore.cc:20
static bool goToDir(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter, std::string name)
string fname
main script
virtual DQM_DEPRECATED std::vector< std::string > getSubdirs() const
Definition: DQMStore.cc:739

◆ setBadModuleFlag()

void TrackingUtility::setBadModuleFlag ( std::string &  hname,
uint16_t &  flg 
)
static

Definition at line 216 of file TrackingUtility.cc.

216  {
217  if (hname.find("FractionOfBadChannels") != std::string::npos)
218  flg |= (1 << 0);
219  else if (hname.find("NumberOfDigi") != std::string::npos)
220  flg |= (1 << 1);
221  else if (hname.find("NumberOfCluster") != std::string::npos)
222  flg |= (1 << 2);
223  else if (hname.find("ExcludedFedChannel") != std::string::npos)
224  flg |= (1 << 3);
225  else if (hname.find("DCSError") != std::string::npos)
226  flg |= (1 << 4);
227 }

◆ split()

void TrackingUtility::split ( const std::string &  str,
std::vector< std::string > &  tokens,
const std::string &  delimiters = " " 
)
static

Definition at line 51 of file TrackingUtility.cc.

References str.

Referenced by checkME(), and getMEList().

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