CMS 3D CMS Logo

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

Manage collection of histograms, load histogram definitions from XML file and book histograms by calling MonitorObjectProvider routines. More...

#include <CSCDQM_Collection.h>

Public Types

typedef xercesc::DOMDocument DOMDocument
 
typedef xercesc::DOMElement DOMElement
 
typedef xercesc::DOMNamedNodeMap DOMNamedNodeMap
 
typedef xercesc::DOMNode DOMNode
 
typedef xercesc::DOMNodeList DOMNodeList
 
typedef xercesc::XercesDOMParser XercesDOMParser
 
typedef xercesc::XMLException XMLException
 
typedef xercesc::XMLPlatformUtils XMLPlatformUtils
 
typedef xercesc::XMLString XMLString
 

Public Member Functions

void bookCSCHistos (const HwId crateId, const HwId dmbId) const
 Book Chamber Histograms. More...
 
void bookCSCHistos (const HistoId hid, const HwId crateId, const HwId dmbId, const HwId addId) const
 Book Chamber Histogram with additional identifier (On Demand) More...
 
void bookDDUHistos (const HwId dduId) const
 Book DDU histograms. More...
 
void bookEMUHistos () const
 Book EMU histograms. More...
 
void bookFEDHistos (const HwId fedId) const
 Book FED histograms. More...
 
 Collection (Configuration *const p_config)
 Constructor. More...
 
const bool isOnDemand (const HistoName &name) const
 Check if the histogram is on demand (by histogram name) More...
 
void load ()
 Load XML file and fill definition map(s) More...
 
void printCollection () const
 Print collection of available histograms and their parameters. More...
 

Private Member Functions

void book (const HistoDef &h, const CoHistoProps &p, const std::string &folder) const
 Book histogram. More...
 

Static Private Member Functions

static const bool checkHistoValue (const CoHistoProps &h, const std::string &name, std::string &value)
 Find string histogram value in map. More...
 
static const bool checkHistoValue (const CoHistoProps &h, const std::string &name, int &value)
 get Histogram int value out of the map and return boolean result More...
 
static const bool checkHistoValue (const CoHistoProps &h, const std::string name, double &value)
 get Histogram double value out of the map and return boolean result More...
 
static std::string & getHistoValue (const CoHistoProps &h, const std::string &name, std::string &value, const std::string &def_value="")
 Find string histogram value in map. More...
 
static int & getHistoValue (const CoHistoProps &h, const std::string &name, int &value, const int &def_value=0)
 get Histogram int value out of the map and More...
 
static double & getHistoValue (const CoHistoProps &h, const std::string name, double &value, const int def_value=0.0)
 get Histogram double value out of the map and More...
 
static void getNodeProperties (DOMNode *&node, CoHistoProps &hp)
 Extract and write single histogram properties from XML node to map. More...
 
static const int ParseAxisLabels (const std::string &s, std::map< int, std::string > &labels)
 Parse Axis label string and return values in vector. More...
 

Private Attributes

CoHistoMap collection
 
Configurationconfig
 

Detailed Description

Manage collection of histograms, load histogram definitions from XML file and book histograms by calling MonitorObjectProvider routines.

Definition at line 73 of file CSCDQM_Collection.h.

Member Typedef Documentation

typedef xercesc::DOMDocument cscdqm::Collection::DOMDocument

Definition at line 76 of file CSCDQM_Collection.h.

typedef xercesc::DOMElement cscdqm::Collection::DOMElement

Definition at line 77 of file CSCDQM_Collection.h.

typedef xercesc::DOMNamedNodeMap cscdqm::Collection::DOMNamedNodeMap

Definition at line 80 of file CSCDQM_Collection.h.

typedef xercesc::DOMNode cscdqm::Collection::DOMNode

Definition at line 78 of file CSCDQM_Collection.h.

typedef xercesc::DOMNodeList cscdqm::Collection::DOMNodeList

Definition at line 79 of file CSCDQM_Collection.h.

typedef xercesc::XercesDOMParser cscdqm::Collection::XercesDOMParser

Definition at line 84 of file CSCDQM_Collection.h.

typedef xercesc::XMLException cscdqm::Collection::XMLException

Definition at line 81 of file CSCDQM_Collection.h.

typedef xercesc::XMLPlatformUtils cscdqm::Collection::XMLPlatformUtils

Definition at line 83 of file CSCDQM_Collection.h.

typedef xercesc::XMLString cscdqm::Collection::XMLString

Definition at line 82 of file CSCDQM_Collection.h.

Constructor & Destructor Documentation

cscdqm::Collection::Collection ( Configuration *const  p_config)

Constructor.

Parameters
p_configPointer to Global configuration object

Definition at line 28 of file CSCDQM_Collection.cc.

References config.

28  {
29  config = p_config;
30  }
Configuration * config

Member Function Documentation

void cscdqm::Collection::book ( const HistoDef h,
const CoHistoProps p,
const std::string &  folder 
) const
private

Book histogram.

Parameters
hHistogram definition to book
pMap of Histogram properties
folderfolder to book histograms to
Returns

Check if this histogram is included in booking by filters

Put histogram into cache

Definition at line 418 of file CSCDQM_Collection.cc.

References checkHistoValue(), config, cscdqm::DEF_HISTO_COLOR, edm::hlt::Exception, cscdqm::Configuration::fnBook, cscdqm::Configuration::fnPutHisto, cscdqm::HistoDef::getFullPath(), getHistoValue(), cscdqm::HistoDef::getName(), cscdqm::MonitorObject::getTH1Lock(), cscdqm::H1D, cscdqm::H2D, cscdqm::H3D, HLT_25ns14e33_v1_cff::labels, CommonMethods::lock(), LOG_INFO, cscdqm::Lock::mutex, mergeVDriftHistosByStation::name, cscdqm::Configuration::needBookMO(), NULL, ParseAxisLabels(), cscdqm::HistoDef::processTitle(), cscdqm::PROFILE, cscdqm::PROFILE2D, alignCSCRings::s, cscdqm::MonitorObject::setAxisTitle(), cscdqm::MonitorObject::SetMaximum(), AlCaHLTBitMon_QueryRunRegistry::string, indexGen::title, cscdqm::Utility::tokenize(), cscdqm::LockType::unlock(), findQualityFiles::v, cscdqm::XML_BOOK_HISTO_TITLE, cscdqm::XML_BOOK_HISTO_TYPE, cscdqm::XML_BOOK_ONDEMAND, cscdqm::XML_BOOK_ONDEMAND_FALSE, and cscdqm::XML_BOOK_ONDEMAND_TRUE.

Referenced by bookCSCHistos(), bookDDUHistos(), bookEMUHistos(), and bookFEDHistos().

418  {
419 
420  MonitorObject* me = NULL;
421  std::string name = h.getName(), type, title, s;
422 
424  if (!config->needBookMO(h.getFullPath())) {
425  LOG_INFO << "MOFilter excluded " << name << " from booking";
426  config->fnPutHisto(h, me);
427  return;
428  }
429 
430  int i1, i2, i3;
431  double d1, d2, d3, d4, d5, d6;
432  bool ondemand = (getHistoValue(p, XML_BOOK_ONDEMAND, s, XML_BOOK_ONDEMAND_FALSE) == XML_BOOK_ONDEMAND_TRUE ? true : false);
433 
434  if (!checkHistoValue(p, XML_BOOK_HISTO_TYPE, type)) { throw Exception("Histogram does not have type!"); }
436 
437  if (ondemand) {
438  title = h.processTitle(title);
439  }
440 
441  if (type == "h1") {
442  me = config->fnBook(
443  HistoBookRequest(h, H1D, type, folder, title,
444  getHistoValue(p, "XBins", i1, 1),
445  getHistoValue(p, "XMin", d1, 0),
446  getHistoValue(p, "XMax", d2, 1)));
447  } else
448  if(type == "h2") {
449  me = config->fnBook(
450  HistoBookRequest(h, H2D, type, folder, title,
451  getHistoValue(p, "XBins", i1, 1),
452  getHistoValue(p, "XMin", d1, 0),
453  getHistoValue(p, "XMax", d2, 1),
454  getHistoValue(p, "YBins", i2, 1),
455  getHistoValue(p, "YMin", d3, 0),
456  getHistoValue(p, "YMax", d4, 1)));
457  } else
458  if(type == "h3") {
459  me = config->fnBook(
460  HistoBookRequest(h, H3D, type, folder, title,
461  getHistoValue(p, "XBins", i1, 1),
462  getHistoValue(p, "XMin", d1, 0),
463  getHistoValue(p, "XMax", d2, 1),
464  getHistoValue(p, "YBins", i2, 1),
465  getHistoValue(p, "YMin", d3, 0),
466  getHistoValue(p, "YMax", d4, 1),
467  getHistoValue(p, "ZBins", i3, 1),
468  getHistoValue(p, "ZMin", d5, 0),
469  getHistoValue(p, "ZMax", d6, 1)));
470  } else
471  if(type == "hp") {
472  me = config->fnBook(
473  HistoBookRequest(h, PROFILE, type, folder, title,
474  getHistoValue(p, "XBins", i1, 1),
475  getHistoValue(p, "XMin", d1, 0),
476  getHistoValue(p, "XMax", d2, 1)));
477  /*
478  HistoBookRequest(h, PROFILE, type, folder, title,
479  getHistoValue(p, "XBins", i1, 1),
480  getHistoValue(p, "XMin", d1, 0),
481  getHistoValue(p, "XMax", d2, 1),
482  getHistoValue(p, "YBins", i2, 1),
483  getHistoValue(p, "YMin", d3, 0),
484  getHistoValue(p, "YMax", d4, 1)));
485  */
486  } else
487  if(type == "hp2") {
488  me = config->fnBook(
489  HistoBookRequest(h, PROFILE2D, type, folder, title,
490  getHistoValue(p, "XBins", i1, 1),
491  getHistoValue(p, "XMin", d1, 0),
492  getHistoValue(p, "XMax", d2, 1),
493  getHistoValue(p, "YBins", i2, 1),
494  getHistoValue(p, "YMin", d3, 0),
495  getHistoValue(p, "YMax", d4, 1),
496  getHistoValue(p, "ZBins", i3, 1),
497  getHistoValue(p, "ZMin", d5, 0),
498  getHistoValue(p, "ZMax", d6, 1)));
499  } else {
500  throw Exception("Can not book histogram with type: " + type);
501  }
502 
503  if(me != NULL) {
504 
505  LockType lock(me->mutex);
506  TH1 *th = me->getTH1Lock();
507 
508  if(checkHistoValue(p, "XTitle", s)) {
509  if (ondemand) {
510  s = h.processTitle(s);
511  }
512  me->setAxisTitle(s, 1);
513  }
514 
515  if(checkHistoValue(p, "YTitle", s)) {
516  if (ondemand) {
517  s = h.processTitle(s);
518  }
519  me->setAxisTitle(s, 2);
520  }
521 
522  if(checkHistoValue(p, "ZTitle", s)) {
523  if (ondemand) {
524  s = h.processTitle(s);
525  }
526  me->setAxisTitle(s, 3);
527  }
528 
529  if(checkHistoValue(p, "SetOption", s)) th->SetOption(s.c_str());
530  if(checkHistoValue(p, "SetStats", i1)) th->SetStats(i1);
531  th->SetFillColor(getHistoValue(p, "SetFillColor", i1, DEF_HISTO_COLOR));
532  if(checkHistoValue(p, "SetXLabels", s)) {
533  std::map<int, std::string> labels;
534  ParseAxisLabels(s, labels);
535  th->GetXaxis()->SetNoAlphanumeric(); // For ROOT6 to prevent getting zero means values
536  for (std::map<int, std::string>::iterator l_itr = labels.begin(); l_itr != labels.end(); ++l_itr) {
537  th->GetXaxis()->SetBinLabel(l_itr->first, l_itr->second.c_str());
538  }
539  }
540  if(checkHistoValue(p, "SetYLabels", s)) {
541  std::map<int, std::string> labels;
542  ParseAxisLabels(s, labels);
543  th->GetYaxis()->SetNoAlphanumeric(); // For ROOT6 to prevent getting zero means values
544  for (std::map<int, std::string>::iterator l_itr = labels.begin(); l_itr != labels.end(); ++l_itr) {
545  th->GetYaxis()->SetBinLabel(l_itr->first, l_itr->second.c_str());
546  }
547  }
548  if(checkHistoValue(p, "LabelOption", s)) {
549  std::vector<std::string> v;
550  if(2 == Utility::tokenize(s, v, ",")) {
551  th->LabelsOption(v[0].c_str(), v[1].c_str());
552  }
553  }
554  if(checkHistoValue(p, "SetLabelSize", s)) {
555  std::vector<std::string> v;
556  if(2 == Utility::tokenize(s, v, ",")) {
557  th->SetLabelSize((double) atof(v[0].c_str()), v[1].c_str());
558  }
559  }
560  if(checkHistoValue(p, "SetTitleOffset", s)) {
561  std::vector<std::string> v;
562  if(2 == Utility::tokenize(s, v, ",")) {
563  th->SetTitleOffset((double) atof(v[0].c_str()), v[1].c_str());
564  }
565  }
566  if(checkHistoValue(p, "SetMinimum", d1)) th->SetMinimum(d1);
567  if(checkHistoValue(p, "SetMaximum", d1)) me->SetMaximum(d1);
568  if(checkHistoValue(p, "SetNdivisionsX", i1)) {
569  th->SetNdivisions(i1, "X");
570  th->GetXaxis()->CenterLabels(true);
571  }
572  if(checkHistoValue(p, "SetNdivisionsY", i1)) {
573  th->SetNdivisions(i1, "Y");
574  th->GetYaxis()->CenterLabels(true);
575  }
576  if(checkHistoValue(p, "SetTickLengthX", d1)) th->SetTickLength(d1, "X");
577  if(checkHistoValue(p, "SetTickLengthY", d1)) th->SetTickLength(d1, "Y");
578  if(checkHistoValue(p, "SetLabelSizeX", d1)) th->SetLabelSize(d1, "X");
579  if(checkHistoValue(p, "SetLabelSizeY", d1)) th->SetLabelSize(d1, "Y");
580  if(checkHistoValue(p, "SetLabelSizeZ", d1)) th->SetLabelSize(d1, "Z");
581  if(checkHistoValue(p, "SetErrorOption", s)) reinterpret_cast<TProfile*>(th)->SetErrorOption(s.c_str());
582 
583  lock.unlock();
584 
585  }
586 
587  LOG_DEBUG << "[Collection::book] booked " << h.getFullPath() << " (" << me << ")";
588 
590  config->fnPutHisto(h, me);
591 
592  }
type
Definition: HCALResponse.h:21
static const char XML_BOOK_ONDEMAND_FALSE[]
static const char XML_BOOK_HISTO_TYPE[]
#define LOG_INFO
Definition: CSCDQM_Logger.h:43
static const char XML_BOOK_ONDEMAND[]
#define NULL
Definition: scimark2.h:8
Configuration * config
static std::string & getHistoValue(const CoHistoProps &h, const std::string &name, std::string &value, const std::string &def_value="")
Find string histogram value in map.
const bool needBookMO(const std::string name) const
Check if MO is not excluded by MO Filter.
static const bool checkHistoValue(const CoHistoProps &h, const std::string &name, std::string &value)
Find string histogram value in map.
boost::function< MonitorObject *(const HistoBookRequest &) > fnBook
static const char XML_BOOK_ONDEMAND_TRUE[]
static const int DEF_HISTO_COLOR
boost::function< void(const HistoDef &histoT, MonitorObject *&) > fnPutHisto
static const char XML_BOOK_HISTO_TITLE[]
static const int ParseAxisLabels(const std::string &s, std::map< int, std::string > &labels)
Parse Axis label string and return values in vector.
static int tokenize(const std::string &str, std::vector< std::string > &tokens, const std::string &delimiters=" ")
Break string into tokens.
void cscdqm::Collection::bookCSCHistos ( const HwId  crateId,
const HwId  dmbId 
) const

Book Chamber Histograms.

Parameters
crateIdCSC Crate Id
dmbIdCSC DMB Id
Returns

Definition at line 365 of file CSCDQM_Collection.cc.

References book(), checkHistoValue(), collection, config, cscdqm::HistoDef::getHistoIdByName(), getHistoValue(), i, j, relval_steps::k, alignCSCRings::s, AlCaHLTBitMon_QueryRunRegistry::string, cscdqm::XML_BOOK_NAME_FROM, cscdqm::XML_BOOK_NAME_TO, cscdqm::XML_BOOK_ONDEMAND, and cscdqm::XML_BOOK_ONDEMAND_FALSE.

Referenced by cscdqm::Dispatcher::book(), and cscdqm::Dispatcher::getHisto().

365  {
366  CoHistoMap::const_iterator i = collection.find("CSC");
367  if (i != collection.end()) {
368  const CoHisto hs = i->second;
369  for (CoHisto::const_iterator j = hs.begin(); j != hs.end(); j++) {
370  std::string s = "";
371  HistoId hid = 0;
372  if (HistoDef::getHistoIdByName(j->first, hid)) {
374  CSCHistoDef hdef(hid, crateId, dmbId);
375  book(hdef, j->second, config->getFOLDER_CSC());
376  } else {
377  int from = 0, to = 0;
378  if (checkHistoValue(j->second, XML_BOOK_NAME_FROM, from) && checkHistoValue(j->second, XML_BOOK_NAME_TO, to)) {
379  for (int k = from; k <= to; k++) {
380  CSCHistoDef hdef(hid, crateId, dmbId, k);
381  book(hdef, j->second, config->getFOLDER_CSC());
382  }
383  }
384  }
385  }
386  }
387  }
388  }
static const bool getHistoIdByName(const std::string &p_name, HistoId &p_id)
Get Histogram ID by name.
int i
Definition: DBlmapReader.cc:9
static const char XML_BOOK_ONDEMAND_FALSE[]
static const char XML_BOOK_NAME_FROM[]
static const char XML_BOOK_NAME_TO[]
static const char XML_BOOK_ONDEMAND[]
unsigned int HistoId
Configuration * config
static std::string & getHistoValue(const CoHistoProps &h, const std::string &name, std::string &value, const std::string &def_value="")
Find string histogram value in map.
int j
Definition: DBlmapReader.cc:9
static const bool checkHistoValue(const CoHistoProps &h, const std::string &name, std::string &value)
Find string histogram value in map.
std::map< std::string, CoHistoProps > CoHisto
void book(const HistoDef &h, const CoHistoProps &p, const std::string &folder) const
Book histogram.
void cscdqm::Collection::bookCSCHistos ( const HistoId  hid,
const HwId  crateId,
const HwId  dmbId,
const HwId  addId 
) const

Book Chamber Histogram with additional identifier (On Demand)

Parameters
hidHistogram Identifier
crateIdCSC Crate Id
dmbIdCSC DMB Id
addIdCSC Additional identifier, ex. Layer Id, ALCT Id, etc.
Returns

Definition at line 400 of file CSCDQM_Collection.cc.

References book(), collection, config, i, j, and cscdqm::h::names.

400  {
401  CoHistoMap::const_iterator i = collection.find("CSC");
402  if (i != collection.end()) {
403  CoHisto::const_iterator j = i->second.find(h::names[hid]);
404  if (j != i->second.end()) {
405  CSCHistoDef hdef(hid, crateId, dmbId, addId);
406  book(hdef, j->second, config->getFOLDER_CSC());
407  }
408  }
409  }
int i
Definition: DBlmapReader.cc:9
static const HistoName names[]
Configuration * config
int j
Definition: DBlmapReader.cc:9
void book(const HistoDef &h, const CoHistoProps &p, const std::string &folder) const
Book histogram.
void cscdqm::Collection::bookDDUHistos ( const HwId  dduId) const

Book DDU histograms.

Parameters
dduIdDDU Id
Returns

Definition at line 342 of file CSCDQM_Collection.cc.

References book(), collection, config, cscdqm::HistoDef::getHistoIdByName(), getHistoValue(), i, j, alignCSCRings::s, AlCaHLTBitMon_QueryRunRegistry::string, cscdqm::XML_BOOK_ONDEMAND, and cscdqm::XML_BOOK_ONDEMAND_FALSE.

Referenced by cscdqm::Dispatcher::book(), and cscdqm::Dispatcher::getHisto().

342  {
343  CoHistoMap::const_iterator i = collection.find("DDU");
344  if (i != collection.end()) {
345  const CoHisto hs = i->second;
346  for (CoHisto::const_iterator j = hs.begin(); j != hs.end(); j++) {
347  std::string s = "";
349  HistoId hid = 0;
350  if (HistoDef::getHistoIdByName(j->first, hid)) {
351  DDUHistoDef hdef(hid, dduId);
352  book(hdef, j->second, config->getFOLDER_DDU());
353  }
354  }
355  }
356  }
357  }
static const bool getHistoIdByName(const std::string &p_name, HistoId &p_id)
Get Histogram ID by name.
int i
Definition: DBlmapReader.cc:9
static const char XML_BOOK_ONDEMAND_FALSE[]
static const char XML_BOOK_ONDEMAND[]
unsigned int HistoId
Configuration * config
static std::string & getHistoValue(const CoHistoProps &h, const std::string &name, std::string &value, const std::string &def_value="")
Find string histogram value in map.
int j
Definition: DBlmapReader.cc:9
std::map< std::string, CoHistoProps > CoHisto
void book(const HistoDef &h, const CoHistoProps &p, const std::string &folder) const
Book histogram.
void cscdqm::Collection::bookEMUHistos ( ) const

Book EMU histograms.

Returns

Definition at line 298 of file CSCDQM_Collection.cc.

References book(), collection, config, cscdqm::HistoDef::getHistoIdByName(), getHistoValue(), i, j, alignCSCRings::s, AlCaHLTBitMon_QueryRunRegistry::string, cscdqm::XML_BOOK_ONDEMAND, and cscdqm::XML_BOOK_ONDEMAND_FALSE.

Referenced by cscdqm::Dispatcher::book().

298  {
299  CoHistoMap::const_iterator i = collection.find("EMU");
300  if (i != collection.end()) {
301  const CoHisto hs = i->second;
302  for (CoHisto::const_iterator j = hs.begin(); j != hs.end(); j++) {
303  std::string s = "";
305  HistoId hid = 0;
306  if (HistoDef::getHistoIdByName(j->first, hid)) {
307  EMUHistoDef hdef(hid);
308  book(hdef, j->second, config->getFOLDER_EMU());
309  }
310  }
311  }
312  }
313  }
static const bool getHistoIdByName(const std::string &p_name, HistoId &p_id)
Get Histogram ID by name.
int i
Definition: DBlmapReader.cc:9
static const char XML_BOOK_ONDEMAND_FALSE[]
static const char XML_BOOK_ONDEMAND[]
unsigned int HistoId
Configuration * config
static std::string & getHistoValue(const CoHistoProps &h, const std::string &name, std::string &value, const std::string &def_value="")
Find string histogram value in map.
int j
Definition: DBlmapReader.cc:9
std::map< std::string, CoHistoProps > CoHisto
void book(const HistoDef &h, const CoHistoProps &p, const std::string &folder) const
Book histogram.
void cscdqm::Collection::bookFEDHistos ( const HwId  fedId) const

Book FED histograms.

Parameters
fedIdFED Id
Returns

Definition at line 320 of file CSCDQM_Collection.cc.

References book(), collection, config, cscdqm::HistoDef::getHistoIdByName(), getHistoValue(), i, j, alignCSCRings::s, AlCaHLTBitMon_QueryRunRegistry::string, cscdqm::XML_BOOK_ONDEMAND, and cscdqm::XML_BOOK_ONDEMAND_FALSE.

Referenced by cscdqm::Dispatcher::book(), and cscdqm::Dispatcher::getHisto().

320  {
321  CoHistoMap::const_iterator i = collection.find("FED");
322  if (i != collection.end()) {
323  const CoHisto hs = i->second;
324  for (CoHisto::const_iterator j = hs.begin(); j != hs.end(); j++) {
325  std::string s = "";
327  HistoId hid = 0;
328  if (HistoDef::getHistoIdByName(j->first, hid)) {
329  FEDHistoDef hdef(hid, fedId);
330  book(hdef, j->second, config->getFOLDER_FED());
331  }
332  }
333  }
334  }
335  }
static const bool getHistoIdByName(const std::string &p_name, HistoId &p_id)
Get Histogram ID by name.
int i
Definition: DBlmapReader.cc:9
static const char XML_BOOK_ONDEMAND_FALSE[]
static const char XML_BOOK_ONDEMAND[]
unsigned int HistoId
Configuration * config
static std::string & getHistoValue(const CoHistoProps &h, const std::string &name, std::string &value, const std::string &def_value="")
Find string histogram value in map.
int j
Definition: DBlmapReader.cc:9
std::map< std::string, CoHistoProps > CoHisto
void book(const HistoDef &h, const CoHistoProps &p, const std::string &folder) const
Book histogram.
const bool cscdqm::Collection::checkHistoValue ( const CoHistoProps h,
const std::string &  name,
std::string &  value 
)
staticprivate

Find string histogram value in map.

Parameters
hHistogram map
nameparameter name
valuehandler for parameter value
Returns
true if parameter found and filled, false - otherwise

Definition at line 176 of file CSCDQM_Collection.cc.

References i.

Referenced by book(), bookCSCHistos(), and getHistoValue().

176  {
177  CoHistoProps::const_iterator i = h.find(name);
178  if(i == h.end()) {
179  return false;
180  }
181  value = i->second;
182  return true;
183  }
int i
Definition: DBlmapReader.cc:9
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
Definition: Activities.doc:4
const bool cscdqm::Collection::checkHistoValue ( const CoHistoProps h,
const std::string &  name,
int &  value 
)
staticprivate

get Histogram int value out of the map and return boolean result

Parameters
hHistogram map
nameparameter name
valuehandler for parameter value
Returns
true if parameter found and filled, false - otherwise

Definition at line 192 of file CSCDQM_Collection.cc.

References i, and relativeConstraints::value.

192  {
193  CoHistoProps::const_iterator i = h.find(name);
194  if(i == h.end()) {
195  return false;
196  }
197  if(EOF == std::sscanf(i->second.c_str(), "%d", &value)) {
198  return false;
199  }
200  return true;
201  }
int i
Definition: DBlmapReader.cc:9
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
Definition: Activities.doc:4
const bool cscdqm::Collection::checkHistoValue ( const CoHistoProps h,
const std::string  name,
double &  value 
)
staticprivate

get Histogram double value out of the map and return boolean result

Parameters
hHistogram map
nameparameter name
valuehandler for parameter value
Returns
true if parameter found and filled, false - otherwise

Definition at line 211 of file CSCDQM_Collection.cc.

References i, and relativeConstraints::value.

211  {
212  CoHistoProps::const_iterator i = h.find(name);
213  if(i == h.end()) {
214  return false;
215  }
216  if(EOF == std::sscanf(i->second.c_str(), "%lf", &value)) {
217  return false;
218  }
219  return true;
220  }
int i
Definition: DBlmapReader.cc:9
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
Definition: Activities.doc:4
std::string & cscdqm::Collection::getHistoValue ( const CoHistoProps h,
const std::string &  name,
std::string &  value,
const std::string &  def_value = "" 
)
staticprivate

Find string histogram value in map.

Parameters
hHistogram map
nameparameter name
valuehandler for parameter value
def_valuedefault value if parameter not found
Returns
pointer to value

Definition at line 230 of file CSCDQM_Collection.cc.

References checkHistoValue(), and relativeConstraints::value.

Referenced by book(), bookCSCHistos(), bookDDUHistos(), bookEMUHistos(), bookFEDHistos(), and isOnDemand().

230  {
231  if (!checkHistoValue(h, name, value)) {
232  value = def_value;
233  }
234  return value;
235  }
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
Definition: Activities.doc:4
static const bool checkHistoValue(const CoHistoProps &h, const std::string &name, std::string &value)
Find string histogram value in map.
int & cscdqm::Collection::getHistoValue ( const CoHistoProps h,
const std::string &  name,
int &  value,
const int &  def_value = 0 
)
staticprivate

get Histogram int value out of the map and

Parameters
hHistogram map
nameparameter name
valuehandler for parameter value
def_valuedefault value if parameter not found
Returns
pointer to value

Definition at line 245 of file CSCDQM_Collection.cc.

References checkHistoValue(), and relativeConstraints::value.

245  {
246  if (!checkHistoValue(h, name, value)) {
247  value = def_value;
248  }
249  return value;
250  }
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
Definition: Activities.doc:4
static const bool checkHistoValue(const CoHistoProps &h, const std::string &name, std::string &value)
Find string histogram value in map.
double & cscdqm::Collection::getHistoValue ( const CoHistoProps h,
const std::string  name,
double &  value,
const int  def_value = 0.0 
)
staticprivate

get Histogram double value out of the map and

Parameters
hHistogram map
nameparameter name
valuehandler for parameter value
def_valuedefault value if parameter not found
Returns
pointer to value

Definition at line 260 of file CSCDQM_Collection.cc.

References checkHistoValue(), and relativeConstraints::value.

260  {
261  if (!checkHistoValue(h, name, value)) {
262  value = def_value;
263  }
264  return value;
265  }
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
Definition: Activities.doc:4
static const bool checkHistoValue(const CoHistoProps &h, const std::string &name, std::string &value)
Find string histogram value in map.
void cscdqm::Collection::getNodeProperties ( DOMNode *&  node,
CoHistoProps p 
)
staticprivate

Extract and write single histogram properties from XML node to map.

Parameters
nodeXML node
pList of properties to fill
Returns

Definition at line 149 of file CSCDQM_Collection.cc.

References asciidump::attributes, i, j, mergeVDriftHistosByStation::name, AlCaHLTBitMon_QueryRunRegistry::string, and relativeConstraints::value.

Referenced by load().

149  {
150  DOMNodeList *props = node->getChildNodes();
151  for(uint32_t j = 0; j < props->getLength(); j++) {
152  DOMNode* node = props->item(j);
153  if (node->getNodeType() != DOMNode::ELEMENT_NODE) { continue; }
154  std::string name = XMLString::transcode(node->getNodeName());
155  std::string value = XMLString::transcode(node->getTextContent());
156  DOMNamedNodeMap* attributes = node->getAttributes();
157  if (attributes) {
158  for (uint32_t i = 0; i < attributes->getLength(); i++) {
159  DOMNode* attribute = attributes->item(i);
160  std::string aname = XMLString::transcode(attribute->getNodeName());
161  std::string avalue = XMLString::transcode(attribute->getNodeValue());
162  p[name + "_" + aname] = avalue;
163  }
164  }
165  p[name] = value;
166  }
167  }
int i
Definition: DBlmapReader.cc:9
tuple node
Definition: Node.py:50
list attributes
Definition: asciidump.py:415
xercesc::DOMNode DOMNode
int j
Definition: DBlmapReader.cc:9
xercesc::DOMNodeList DOMNodeList
xercesc::DOMNamedNodeMap DOMNamedNodeMap
const bool cscdqm::Collection::isOnDemand ( const HistoName name) const

Check if the histogram is on demand (by histogram name)

Parameters
namename of the histogram
Returns
true if this histogram is on demand, false - otherwise

Definition at line 599 of file CSCDQM_Collection.cc.

References collection, getHistoValue(), i, j, alignCSCRings::s, AlCaHLTBitMon_QueryRunRegistry::string, cscdqm::XML_BOOK_ONDEMAND, cscdqm::XML_BOOK_ONDEMAND_FALSE, and cscdqm::XML_BOOK_ONDEMAND_TRUE.

Referenced by cscdqm::Dispatcher::getHisto().

599  {
600  CoHistoMap::const_iterator i = collection.find("CSC");
601  if (i != collection.end()) {
602  CoHisto hs = i->second;
603  CoHisto::const_iterator j = hs.find(name);
604  if (j != hs.end()) {
605  std::string s;
607  }
608  }
609  return false;
610  }
int i
Definition: DBlmapReader.cc:9
static const char XML_BOOK_ONDEMAND_FALSE[]
static const char XML_BOOK_ONDEMAND[]
static std::string & getHistoValue(const CoHistoProps &h, const std::string &name, std::string &value, const std::string &def_value="")
Find string histogram value in map.
int j
Definition: DBlmapReader.cc:9
static const char XML_BOOK_ONDEMAND_TRUE[]
std::map< std::string, CoHistoProps > CoHisto
void cscdqm::Collection::load ( )

Load XML file and fill definition map(s)

Returns

Load histogram definition

Load histogram

Definition at line 37 of file CSCDQM_Collection.cc.

References collection, config, asciidump::doc, alignCSCRings::e, edm::hlt::Exception, getNodeProperties(), h, AnalysisDataFormats_SUSYBSMObjects::hp, i, LOG_INFO, python.rootplot.argparse::message, mergeVDriftHistosByStation::name, python.Node::node, geometryXMLtoCSV::parser, prof2calltree::prefix, cscdqm::Utility::regexMatch(), cscdqm::REGEXP_ONDEMAND(), AlCaHLTBitMon_QueryRunRegistry::string, cms::concurrency::xercesInitialize(), cms::concurrency::xercesTerminate(), cscdqm::XML_BOOK_DEFINITION, cscdqm::XML_BOOK_DEFINITION_ID, cscdqm::XML_BOOK_DEFINITION_REF, cscdqm::XML_BOOK_HISTO_NAME, cscdqm::XML_BOOK_HISTO_PREFIX, cscdqm::XML_BOOK_HISTOGRAM, cscdqm::XML_BOOK_ONDEMAND, cscdqm::XML_BOOK_ONDEMAND_FALSE, and cscdqm::XML_BOOK_ONDEMAND_TRUE.

Referenced by cscdqm::Dispatcher::init().

37  {
38 
39  LOG_INFO << "Reading histograms from " << config->getBOOKING_XML_FILE();
40 
41  if (config->getBOOKING_XML_FILE().empty()) {
42  return;
43  }
44 
45  try {
46 
48 
49  {
50 
52 
53  parser.setValidationScheme(XercesDOMParser::Val_Always);
54  parser.setDoNamespaces(true);
55  parser.setDoSchema(true);
56  parser.setExitOnFirstFatalError(true);
57  parser.setValidationConstraintFatal(true);
58  XMLFileErrorHandler eh;
59  parser.setErrorHandler(&eh);
60 
61  parser.parse(config->getBOOKING_XML_FILE().c_str());
62  DOMDocument *doc = parser.getDocument();
63  DOMNode *docNode = (DOMNode*) doc->getDocumentElement();
64 
65  DOMNodeList *itemList = docNode->getChildNodes();
66 
67  CoHisto definitions;
68  for (uint32_t i = 0; i < itemList->getLength(); i++) {
69 
70  DOMNode* node = itemList->item(i);
71  if (node->getNodeType() != DOMNode::ELEMENT_NODE) { continue; }
72 
73  std::string nodeName = XMLString::transcode(node->getNodeName());
74 
78  if (nodeName.compare(XML_BOOK_DEFINITION) == 0) {
79 
80  CoHistoProps dp;
81  getNodeProperties(node, dp);
82 
83  DOMElement* el = dynamic_cast<DOMElement*>(node);
84  std::string id(XMLString::transcode(el->getAttribute(XMLString::transcode(XML_BOOK_DEFINITION_ID))));
85  definitions.insert(make_pair(id, dp));
86 
87  } else
88 
92  if (nodeName.compare(XML_BOOK_HISTOGRAM) == 0) {
93 
95 
96  DOMElement* el = dynamic_cast<DOMElement*>(node);
97  if (el->hasAttribute(XMLString::transcode(XML_BOOK_DEFINITION_REF))) {
98  std::string id(XMLString::transcode(el->getAttribute(XMLString::transcode(XML_BOOK_DEFINITION_REF))));
99  CoHistoProps d = definitions[id];
100  for (CoHistoProps::iterator it = d.begin(); it != d.end(); it++) {
101  hp[it->first] = it->second;
102  }
103  }
104 
105  getNodeProperties(node, hp);
106 
109 
110  // Check if this histogram is an ON DEMAND histogram?
112 
113  LOG_DEBUG << "[Collection::load] loading " << prefix << "::" << name << " XML_BOOK_ONDEMAND = " << hp[XML_BOOK_ONDEMAND];
114 
115  CoHistoMap::iterator it = collection.find(prefix);
116  if (it == collection.end()) {
117  CoHisto h;
118  h[name] = hp;
119  collection[prefix] = h;
120  } else {
121  it->second.insert(make_pair(name, hp));
122  }
123 
124  }
125  }
126 
127  }
128 
130 
131  } catch (XMLException& e) {
132  char* message = XMLString::transcode(e.getMessage());
133  throw Exception(message);
134  }
135 
136  for (CoHistoMap::const_iterator i = collection.begin(); i != collection.end(); i++) {
137  LOG_INFO << i->second.size() << " " << i->first << " histograms defined";
138  }
139 
140  }
int i
Definition: DBlmapReader.cc:9
static const char XML_BOOK_DEFINITION_ID[]
static const char XML_BOOK_ONDEMAND_FALSE[]
#define LOG_INFO
Definition: CSCDQM_Logger.h:43
void xercesTerminate()
Definition: Xerces.cc:22
static const char XML_BOOK_ONDEMAND[]
static const char XML_BOOK_DEFINITION_REF[]
static const char XML_BOOK_HISTOGRAM[]
xercesc::DOMDocument DOMDocument
static bool regexMatch(const std::string &expression, const std::string &message)
Match RegExp expression string against string message and return result.
void xercesInitialize()
Definition: Xerces.cc:17
tuple node
Definition: Node.py:50
static const char XML_BOOK_HISTO_PREFIX[]
susybsm::HSCParticleRefProd hp
Definition: classes.h:27
Configuration * config
static void getNodeProperties(DOMNode *&node, CoHistoProps &hp)
Extract and write single histogram properties from XML node to map.
xercesc::DOMNode DOMNode
xercesc::DOMElement DOMElement
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
Definition: Activities.doc:4
tuple doc
Definition: asciidump.py:381
xercesc::DOMNodeList DOMNodeList
static const char XML_BOOK_ONDEMAND_TRUE[]
xercesc::XercesDOMParser XercesDOMParser
std::map< std::string, CoHistoProps > CoHisto
static const char XML_BOOK_DEFINITION[]
static const TPRegexp REGEXP_ONDEMAND("^.*%d.*$")
static const char XML_BOOK_HISTO_NAME[]
std::map< std::string, std::string > CoHistoProps
xercesc::XMLException XMLException
const int cscdqm::Collection::ParseAxisLabels ( const std::string &  s,
std::map< int, std::string > &  labels 
)
staticprivate

Parse Axis label string and return values in vector.

Parameters
ssource string to parse
labelspointer to result vector
Returns
number of labels found

Definition at line 273 of file CSCDQM_Collection.cc.

References diffTwoXMLs::label, NULL, alignCSCRings::s, AlCaHLTBitMon_QueryRunRegistry::string, and tmp.

Referenced by book().

273  {
274  std::string tmp = s;
275  std::string::size_type pos = tmp.find("|");
276  char* stopstring = NULL;
277 
278  while (pos != std::string::npos) {
279  std::string label_pair = tmp.substr(0, pos);
280  tmp.replace(0, pos + 1, "");
281  if (label_pair.find("=") != std::string::npos) {
282  int nbin = strtol(label_pair.substr(0, label_pair.find("=")).c_str(), &stopstring, 10);
283  std::string label = label_pair.substr(label_pair.find("=") + 1, label_pair.length());
284  while (label.find("\'") != std::string::npos) {
285  label.erase(label.find("\'"), 1);
286  }
287  labels[nbin] = label;
288  }
289  pos = tmp.find("|");
290  }
291  return labels.size();
292  }
#define NULL
Definition: scimark2.h:8
uint16_t size_type
std::vector< std::vector< double > > tmp
Definition: MVATrainer.cc:100
void cscdqm::Collection::printCollection ( ) const

Print collection of available histograms and their parameters.

Returns

Definition at line 616 of file CSCDQM_Collection.cc.

References collection, and LOG_INFO.

616  {
617 
618  std::ostringstream buffer;
619  for(CoHistoMap::const_iterator hdmi = collection.begin(); hdmi != collection.end(); hdmi++) {
620  buffer << hdmi->first << " [" << std::endl;
621  for(CoHisto::const_iterator hdi = hdmi->second.begin(); hdi != hdmi->second.end(); hdi++) {
622  buffer << " " << hdi->first << " [" << std::endl;
623  for(CoHistoProps::const_iterator hi = hdi->second.begin(); hi != hdi->second.end(); hi++) {
624  buffer << " " << hi->first << " = " << hi->second << std::endl;
625  }
626  buffer << " ]" << std::endl;
627  }
628  buffer << " ]" << std::endl;
629  }
630  LOG_INFO << buffer.str();
631  }
#define LOG_INFO
Definition: CSCDQM_Logger.h:43

Member Data Documentation

CoHistoMap cscdqm::Collection::collection
private
Configuration* cscdqm::Collection::config
private