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 "CSCOfflineClient.h"
0020
0021
0022
0023
0024
0025 CSCOfflineClient::CSCOfflineClient(const edm::ParameterSet& ps) {
0026 edm::ParameterSet params = ps.getUntrackedParameter<edm::ParameterSet>("EventProcessor");
0027 config.load(params);
0028
0029 dispatcher = new cscdqm::Dispatcher(&config, const_cast<CSCOfflineClient*>(this));
0030 dispatcher->init();
0031
0032 if (ps.exists("MASKEDHW")) {
0033 maskedHW = ps.getUntrackedParameter<std::vector<std::string> >("MASKEDHW");
0034
0035 }
0036 }
0037
0038
0039
0040
0041 CSCOfflineClient::~CSCOfflineClient() {
0042 if (dispatcher)
0043 delete dispatcher;
0044 }
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059
0060
0061
0062
0063
0064
0065
0066
0067
0068
0069
0070
0071
0072
0073
0074
0075
0076
0077
0078
0079
0080
0081
0082
0083
0084
0085
0086
0087
0088 void CSCOfflineClient::dqmEndJob(DQMStore::IBooker& ib, DQMStore::IGetter& igetter) {
0089 ibooker = &ib;
0090 dispatcher->book();
0091 if (!maskedHW.empty())
0092 dispatcher->maskHWElements(maskedHW);
0093
0094
0095
0096
0097 ibooker->setCurrentFolder(config.getFOLDER_EMU());
0098 std::vector<std::string> me_names = igetter.getMEs();
0099 for (std::vector<std::string>::iterator iter = me_names.begin(); iter != me_names.end(); iter++) {
0100 std::string me_name = *iter;
0101 MonitorElement* me = igetter.get(config.getFOLDER_EMU() + me_name);
0102 cscdqm::HistoId id;
0103 if (me && cscdqm::HistoDef::getHistoIdByName(me_name, id)) {
0104 const cscdqm::EMUHistoDef def(id);
0105 cscdqm::MonitorObject* mo = new CSCMonitorObject(me);
0106 config.fnPutHisto(def, mo);
0107 }
0108 }
0109
0110
0111
0112
0113
0114 {
0115 std::string name = DIR_EVENTINFO;
0116 name += "reportSummaryMap";
0117 MonitorElement* me = igetter.get(name);
0118 if (me) {
0119 const cscdqm::EMUHistoDef def(cscdqm::h::EMU_CSC_STATS_SUMMARY);
0120 cscdqm::MonitorObject* mo = new CSCMonitorObject(me);
0121 config.fnPutHisto(def, mo);
0122 }
0123 }
0124
0125 config.incNEvents();
0126 dispatcher->updateFractionAndEfficiencyHistos();
0127 }
0128
0129
0130
0131
0132
0133
0134 cscdqm::MonitorObject* CSCOfflineClient::bookMonitorObject(const cscdqm::HistoBookRequest& req) {
0135 cscdqm::MonitorObject* me = nullptr;
0136 std::string name = req.hdef->getName();
0137
0138 std::string path = req.folder;
0139 if (!req.hdef->getPath().empty()) {
0140 path = path + req.hdef->getPath() + "/";
0141 }
0142
0143 ibooker->cd();
0144 ibooker->setCurrentFolder(path);
0145
0146 if (req.htype == cscdqm::INT) {
0147 me = new CSCMonitorObject(ibooker->bookInt(name));
0148 me->Fill(req.default_int);
0149 } else if (req.htype == cscdqm::FLOAT) {
0150 if (req.hdef->getId() == cscdqm::h::PAR_REPORT_SUMMARY) {
0151 ibooker->cd();
0152 ibooker->setCurrentFolder(DIR_EVENTINFO);
0153 } else if (cscdqm::Utility::regexMatch("^PAR_DCS_", cscdqm::h::keys[req.hdef->getId()])) {
0154 ibooker->cd();
0155 ibooker->setCurrentFolder(DIR_DCSINFO);
0156 } else if (cscdqm::Utility::regexMatch("^PAR_DAQ_", cscdqm::h::keys[req.hdef->getId()])) {
0157 ibooker->cd();
0158 ibooker->setCurrentFolder(DIR_DAQINFO);
0159 } else if (cscdqm::Utility::regexMatch("^PAR_CRT_", cscdqm::h::keys[req.hdef->getId()])) {
0160 ibooker->cd();
0161 ibooker->setCurrentFolder(DIR_CRTINFO);
0162 }
0163 me = new CSCMonitorObject(ibooker->bookFloat(name));
0164 me->Fill(req.default_float);
0165 } else if (req.htype == cscdqm::STRING) {
0166 me = new CSCMonitorObject(ibooker->bookString(name, req.default_string));
0167 }
0168
0169 return me;
0170 }