CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
CSCOfflineClient.cc
Go to the documentation of this file.
1 /*
2  * =====================================================================================
3  *
4  * Filename: CSCOfflineClient.cc
5  *
6  * Description: CSC Offline Client
7  *
8  * Version: 1.0
9  * Created: 08/20/2009 02:31:12 PM
10  * Revision: none
11  * Compiler: gcc
12  *
13  * Author: Valdas Rapsevicius (VR), valdas.rapsevicius@cern.ch
14  * Company: CERN, CH
15  *
16  * =====================================================================================
17  */
18 
19 #include "CSCOfflineClient.h"
20 
27  config.load(params);
28 
29  dispatcher = new cscdqm::Dispatcher(&config, const_cast<CSCOfflineClient*>(this));
30  dispatcher->init();
31 
32  if (ps.exists("MASKEDHW")) {
33  maskedHW = ps.getUntrackedParameter<std::vector<std::string> >("MASKEDHW");
34  // dispatcher->maskHWElements(maskedHW);
35  }
36 }
37 
42  if (dispatcher)
43  delete dispatcher;
44 }
45 
46 /*** No longer triggered for DQMEDHarvester ***/
47 /*
48 void CSCOfflineClient::endRun(const edm::Run& r, const edm::EventSetup& c) {
49 
50  // *
51  // * Putting histograms to internal cache: EMU stuff
52  // * /
53  dbe->setCurrentFolder(config.getFOLDER_EMU());
54  std::vector<std::string> me_names = dbe->getMEs();
55  for (std::vector<std::string>::iterator iter = me_names.begin(); iter != me_names.end(); iter++) {
56  std::string me_name = *iter;
57  MonitorElement* me = dbe->get(config.getFOLDER_EMU() + me_name);
58  cscdqm::HistoId id;
59  if (me && cscdqm::HistoDef::getHistoIdByName(me_name, id)) {
60  const cscdqm::EMUHistoDef def(id);
61  cscdqm::MonitorObject* mo = new CSCMonitorObject(me);
62  config.fnPutHisto(def, mo);
63  }
64  }
65 
66  // *
67  // * Putting histograms to internal cache: EventInfo
68  // * /
69 
70  {
71  std::string name = DIR_EVENTINFO;
72  name += "reportSummaryMap";
73  MonitorElement* me = dbe->get(name);
74  if (me) {
75  const cscdqm::EMUHistoDef def(cscdqm::h::EMU_CSC_STATS_SUMMARY);
76  cscdqm::MonitorObject* mo = new CSCMonitorObject(me);
77  config.fnPutHisto(def, mo);
78  }
79  }
80 
81  config.incNEvents();
82  dispatcher->updateFractionAndEfficiencyHistos();
83 
84 }
85 */
86 
87 // void CSCOfflineClient::bookHistograms(DQMStore::IBooker & ib, edm::Run const &, edm::EventSetup const &)
89  ibooker = &ib;
90  dispatcher->book();
91  if (!maskedHW.empty())
93 
94  /*
95  * Putting histograms to internal cache: EMU stuff
96  */
97  ibooker->setCurrentFolder(config.getFOLDER_EMU());
98  std::vector<std::string> me_names = igetter.getMEs();
99  for (std::vector<std::string>::iterator iter = me_names.begin(); iter != me_names.end(); iter++) {
100  std::string me_name = *iter;
101  MonitorElement* me = igetter.get(config.getFOLDER_EMU() + me_name);
103  if (me && cscdqm::HistoDef::getHistoIdByName(me_name, id)) {
104  const cscdqm::EMUHistoDef def(id);
106  config.fnPutHisto(def, mo);
107  }
108  }
109 
110  /*
111  * Putting histograms to internal cache: EventInfo
112  */
113 
114  {
116  name += "reportSummaryMap";
117  MonitorElement* me = igetter.get(name);
118  if (me) {
121  config.fnPutHisto(def, mo);
122  }
123  }
124 
125  config.incNEvents();
127 }
128 
135  cscdqm::MonitorObject* me = nullptr;
136  std::string name = req.hdef->getName();
137 
138  std::string path = req.folder;
139  if (!req.hdef->getPath().empty()) {
140  path = path + req.hdef->getPath() + "/";
141  }
142 
143  ibooker->cd();
144  ibooker->setCurrentFolder(path);
145 
146  if (req.htype == cscdqm::INT) {
147  me = new CSCMonitorObject(ibooker->bookInt(name));
148  me->Fill(req.default_int);
149  } else if (req.htype == cscdqm::FLOAT) {
150  if (req.hdef->getId() == cscdqm::h::PAR_REPORT_SUMMARY) {
151  ibooker->cd();
153  } else if (cscdqm::Utility::regexMatch("^PAR_DCS_", cscdqm::h::keys[req.hdef->getId()])) {
154  ibooker->cd();
156  } else if (cscdqm::Utility::regexMatch("^PAR_DAQ_", cscdqm::h::keys[req.hdef->getId()])) {
157  ibooker->cd();
159  } else if (cscdqm::Utility::regexMatch("^PAR_CRT_", cscdqm::h::keys[req.hdef->getId()])) {
160  ibooker->cd();
162  }
163  me = new CSCMonitorObject(ibooker->bookFloat(name));
164  me->Fill(req.default_float);
165  } else if (req.htype == cscdqm::STRING) {
166  me = new CSCMonitorObject(ibooker->bookString(name, req.default_string));
167  }
168 
169  return me;
170 }
void init()
Initialize Dispatcher: book histograms, init processor, etc.
static const bool getHistoIdByName(const std::string &p_name, HistoId &p_id)
Get Histogram ID by name.
T getUntrackedParameter(std::string const &, T const &) const
int def(FILE *, FILE *, int)
MonitorElement * bookFloat(TString const &name, FUNC onbooking=NOOP())
Definition: DQMStore.h:80
void dqmEndJob(DQMStore::IBooker &, DQMStore::IGetter &) override
int ib
Definition: cuy.py:661
uint16_t *__restrict__ id
~CSCOfflineClient() override
Destructor.
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:32
std::function< void(const HistoDef &histoT, MonitorObject *&)> fnPutHisto
static const char DIR_DAQINFO[]
cscdqm::MonitorObject implementation used in CSCMonitorModuleCmn
void updateFractionAndEfficiencyHistos()
On demand update fraction and efficiency MOs.
virtual void Fill(float x)=0
Monitoring Object interface used to cover Root object and provide common interface to EventProcessor ...
cscdqm::MonitorObject * bookMonitorObject(const cscdqm::HistoBookRequest &p_req) override
Book Monitor Object on Request.
bool exists(std::string const &parameterName) const
checks if a parameter exists
DQMStore::IBooker * ibooker
static bool regexMatch(const std::string &expression, const std::string &message)
Match RegExp expression string against string message and return result.
CSCDQM Framework frontend and Histogram Cache controller.
MonitorElement * bookString(TString const &name, TString const &value, FUNC onbooking=NOOP())
Definition: DQMStore.h:87
unsigned int maskHWElements(std::vector< std::string > &tokens)
Mask HW elements from the efficiency calculations. Can be applied on runtime!
unsigned int HistoId
const HistoId getId() const
Get Histogram ID.
cscdqm::Dispatcher * dispatcher
static const char DIR_DCSINFO[]
virtual MonitorElement * get(std::string const &fullpath) const
Definition: DQMStore.cc:673
EMU Level Histogram Definition.
static const char DIR_EVENTINFO[]
virtual const std::string getPath() const
Get path part of the histogram (used only for DDUs and CSCs)
static const char DIR_CRTINFO[]
MonitorElement * bookInt(TString const &name, FUNC onbooking=NOOP())
Definition: DQMStore.h:73
virtual std::vector< std::string > getMEs() const
Definition: DQMStore.cc:720
cscdqm::Configuration config
virtual const std::string getName() const
Get processed histogram name. It can include additional parameter in formated name. This Name is being constructed from raw name and additional parameter.
CSCOfflineClient(const edm::ParameterSet &ps)
Constructor.
static const HistoName keys[]
std::vector< std::string > maskedHW