File indexing completed on 2024-04-06 12:06:58
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019 #include "CSCMonitorModule.h"
0020
0021
0022
0023
0024
0025 CSCMonitorModule::CSCMonitorModule(const edm::ParameterSet& ps)
0026 : hcrateToken_(esConsumes<CSCCrateMap, CSCCrateMapRcd>()) {
0027 edm::FileInPath fp;
0028
0029 inputTag = ps.getUntrackedParameter<edm::InputTag>("InputObjects", (edm::InputTag)INPUT_TAG_LABEL);
0030 prebookEffParams = ps.getUntrackedParameter<bool>("PREBOOK_EFF_PARAMS", false);
0031 processDcsScalers = ps.getUntrackedParameter<bool>("PROCESS_DCS_SCALERS", true);
0032 edm::ParameterSet params = ps.getUntrackedParameter<edm::ParameterSet>("EventProcessor");
0033 config.load(params);
0034
0035 fp = ps.getParameter<edm::FileInPath>("BOOKING_XML_FILE");
0036 config.setBOOKING_XML_FILE(fp.fullPath());
0037
0038
0039
0040 #ifdef DQMLOCAL
0041 dispatcher = new cscdqm::Dispatcher(&config, const_cast<CSCMonitorModule*>(this));
0042 #endif
0043 #ifdef DQMGLOBAL
0044
0045 dispatcher = new cscdqm::Dispatcher(&config, const_cast<CSCMonitorModule*>(this), inputTag, consumesCollector());
0046 dcstoken = consumes<DcsStatusCollection>(edm::InputTag("scalersRawToDigi"));
0047
0048 #endif
0049
0050 dispatcher->init();
0051
0052 if (ps.exists("MASKEDHW")) {
0053 maskedHW = ps.getUntrackedParameter<std::vector<std::string> >("MASKEDHW");
0054
0055 }
0056 }
0057
0058
0059
0060
0061 CSCMonitorModule::~CSCMonitorModule() {
0062 if (dispatcher)
0063 delete dispatcher;
0064 }
0065
0066
0067
0068
0069
0070
0071
0072
0073
0074
0075
0076
0077
0078
0079
0080
0081
0082
0083
0084
0085
0086
0087 void CSCMonitorModule::analyze(const edm::Event& e, const edm::EventSetup& c) {
0088
0089 edm::ESHandle<CSCCrateMap> hcrate;
0090
0091 hcrate = c.getHandle(hcrateToken_);
0092 pcrate = hcrate.product();
0093
0094 cscdqm::HWStandbyType standby;
0095
0096
0097 if (processDcsScalers) {
0098 edm::Handle<DcsStatusCollection> dcsStatus;
0099 #ifdef DQMLOCAL
0100 if (e.getByToken(dcstoken, dcsStatus)) {
0101 #endif
0102 #ifdef DQMGLOBAL
0103 if (e.getByToken(dcstoken, dcsStatus)) {
0104 #endif
0105 DcsStatusCollection::const_iterator dcsStatusItr = dcsStatus->begin();
0106 for (; dcsStatusItr != dcsStatus->end(); ++dcsStatusItr) {
0107 standby.applyMeP(dcsStatusItr->ready(DcsStatus::CSCp));
0108 standby.applyMeM(dcsStatusItr->ready(DcsStatus::CSCm));
0109 }
0110 }
0111 standby.process = true;
0112 }
0113
0114 dispatcher->processEvent(e, inputTag, standby);
0115 }
0116
0117
0118
0119
0120
0121
0122
0123 void CSCMonitorModule::bookHistograms(DQMStore::IBooker & ib, edm::Run const&, edm::EventSetup const&) {
0124
0125 ibooker = &ib;
0126
0127
0128
0129
0130
0131
0132
0133
0134
0135 dispatcher->book();
0136
0137 if (!maskedHW.empty())
0138 dispatcher->maskHWElements(maskedHW);
0139 if (prebookEffParams) {
0140 dispatcher->updateFractionAndEfficiencyHistos();
0141 }
0142 }
0143
0144
0145
0146
0147
0148
0149 cscdqm::MonitorObject* CSCMonitorModule::bookMonitorObject(const cscdqm::HistoBookRequest& req) {
0150 cscdqm::MonitorObject* me = nullptr;
0151 std::string name = req.hdef->getName();
0152
0153 std::string path = req.folder;
0154 if (!req.hdef->getPath().empty()) {
0155 path = path + req.hdef->getPath() + "/";
0156 }
0157
0158
0159
0160
0161 ibooker->cd();
0162 ibooker->setCurrentFolder(path);
0163
0164 if (req.htype == cscdqm::INT) {
0165 me = new CSCMonitorObject(ibooker->bookInt(name));
0166 me->Fill(req.default_int);
0167 } else if (req.htype == cscdqm::FLOAT) {
0168 if (req.hdef->getId() == cscdqm::h::PAR_REPORT_SUMMARY || req.hdef->getId() == cscdqm::h::PAR_CRT_SUMMARY ||
0169 req.hdef->getId() == cscdqm::h::PAR_DAQ_SUMMARY || req.hdef->getId() == cscdqm::h::PAR_DCS_SUMMARY) {
0170 ibooker->cd();
0171 ibooker->setCurrentFolder(DIR_EVENTINFO);
0172 } else if (cscdqm::Utility::regexMatch("^PAR_DCS_", cscdqm::h::keys[req.hdef->getId()])) {
0173 ibooker->cd();
0174 ibooker->setCurrentFolder(DIR_DCSINFO);
0175 } else if (cscdqm::Utility::regexMatch("^PAR_DAQ_", cscdqm::h::keys[req.hdef->getId()])) {
0176 ibooker->cd();
0177 ibooker->setCurrentFolder(DIR_DAQINFO);
0178 } else if (cscdqm::Utility::regexMatch("^PAR_CRT_", cscdqm::h::keys[req.hdef->getId()])) {
0179 ibooker->cd();
0180 ibooker->setCurrentFolder(DIR_CRTINFO);
0181 }
0182 me = new CSCMonitorObject(ibooker->bookFloat(name));
0183 me->Fill(req.default_float);
0184 } else if (req.htype == cscdqm::STRING) {
0185 me = new CSCMonitorObject(ibooker->bookString(name, req.default_string));
0186 } else if (req.htype == cscdqm::H1D) {
0187 me = new CSCMonitorObject(ibooker->book1D(name, req.title, req.nchX, req.lowX, req.highX));
0188 } else if (req.htype == cscdqm::H2D) {
0189 if (req.hdef->getId() == cscdqm::h::EMU_CSC_STATS_SUMMARY) {
0190 ibooker->cd();
0191 ibooker->setCurrentFolder(DIR_EVENTINFO);
0192 name = "reportSummaryMap";
0193 }
0194 me = new CSCMonitorObject(
0195 ibooker->book2D(name, req.title, req.nchX, req.lowX, req.highX, req.nchY, req.lowY, req.highY));
0196 } else if (req.htype == cscdqm::H3D) {
0197 me = new CSCMonitorObject(ibooker->book3D(
0198 name, req.title, req.nchX, req.lowX, req.highX, req.nchY, req.lowY, req.highY, req.nchZ, req.lowZ, req.highZ));
0199 } else if (req.htype == cscdqm::PROFILE) {
0200 me = new CSCMonitorObject(ibooker->bookProfile(
0201 name, req.title, req.nchX, req.lowX, req.highX, req.nchY, req.lowY, req.highY, req.option.c_str()));
0202 } else if (req.htype == cscdqm::PROFILE2D) {
0203 me = new CSCMonitorObject(ibooker->bookProfile2D(name,
0204 req.title,
0205 req.nchX,
0206 req.lowX,
0207 req.highX,
0208 req.nchY,
0209 req.lowY,
0210 req.highY,
0211 req.nchZ,
0212 req.lowZ,
0213 req.highZ,
0214 req.option.c_str()));
0215 }
0216
0217 return me;
0218 }