File indexing completed on 2024-04-06 12:07:13
0001 #include "DQM/EcalCommon/interface/EcalDQMonitor.h"
0002
0003 #include "DQM/EcalCommon/interface/EcalDQMCommonUtils.h"
0004
0005 #include "FWCore/Framework/interface/ESHandle.h"
0006 #include "FWCore/Framework/interface/EventSetup.h"
0007 #include "FWCore/Framework/interface/LuminosityBlock.h"
0008 #include "FWCore/Framework/interface/Run.h"
0009 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0010 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
0011
0012 #include "Geometry/EcalMapping/interface/EcalMappingRcd.h"
0013 #include "Geometry/Records/interface/CaloGeometryRecord.h"
0014 #include "Geometry/Records/interface/CaloTopologyRecord.h"
0015 #include "Geometry/Records/interface/IdealGeometryRecord.h"
0016
0017 #include "FWCore/Framework/interface/ConsumesCollector.h"
0018
0019 #include <ctime>
0020 #include <sstream>
0021
0022 namespace ecaldqm {
0023 EcalDQMonitor::EcalDQMonitor(edm::ParameterSet const &_ps)
0024 : workers_(),
0025 moduleName_(_ps.getUntrackedParameter<std::string>("moduleName")),
0026 verbosity_(_ps.getUntrackedParameter<int>("verbosity")) {
0027 std::vector<std::string> workerNames(_ps.getUntrackedParameter<std::vector<std::string>>("workers"));
0028 edm::ParameterSet const &workerParams(_ps.getUntrackedParameterSet("workerParameters"));
0029 edm::ParameterSet const &commonParams(_ps.getUntrackedParameterSet("commonParameters"));
0030
0031 std::for_each(workerNames.begin(), workerNames.end(), [&](std::string const &name) {
0032 if (verbosity_ > 0)
0033 edm::LogInfo("EcalDQM") << moduleName_ << ": Setting up " << name << std::endl;
0034 try {
0035 DQWorker *worker(WorkerFactoryStore::singleton()->getWorker(
0036 name, verbosity_, commonParams, workerParams.getUntrackedParameterSet(name)));
0037 if (worker->onlineMode())
0038 worker->setTime(time(nullptr));
0039 workers_.push_back(worker);
0040 } catch (std::exception &) {
0041 edm::LogError("EcalDQM") << "Worker " << name << " not defined";
0042 throw;
0043 }
0044 });
0045 }
0046
0047 EcalDQMonitor::~EcalDQMonitor() noexcept(false) {
0048 if (verbosity_ > 2)
0049 edm::LogInfo("EcalDQM") << moduleName_ << ": Deleting workers";
0050
0051 executeOnWorkers_([](DQWorker *worker) { delete worker; }, "Dtor");
0052 }
0053
0054
0055 void EcalDQMonitor::fillDescriptions(edm::ParameterSetDescription &_desc) {
0056 _desc.addUntracked<std::string>("moduleName", "Ecal Monitor Module");
0057 _desc.addUntracked<std::vector<std::string>>("workers");
0058 _desc.addUntracked<int>("verbosity", 0);
0059
0060 edm::ParameterSetDescription commonParameters;
0061 commonParameters.addUntracked<bool>("onlineMode", false);
0062 commonParameters.addUntracked<bool>("willConvertToEDM", true);
0063 _desc.addUntracked("commonParameters", commonParameters);
0064 }
0065
0066 void EcalDQMonitor::ecaldqmBeginRun(edm::Run const &_run, edm::EventSetup const &_es) {
0067 executeOnWorkers_(
0068 [&_run, &_es](DQWorker *worker) {
0069 if (worker->onlineMode())
0070 worker->setTime(time(nullptr));
0071 worker->setRunNumber(_run.run());
0072 worker->beginRun(_run, _es);
0073 },
0074 "beginRun");
0075
0076 if (verbosity_ > 0)
0077 edm::LogInfo("EcalDQM") << moduleName_ << "::ecaldqmBeginRun";
0078 }
0079
0080 void EcalDQMonitor::ecaldqmEndRun(edm::Run const &_run, edm::EventSetup const &_es) {
0081 executeOnWorkers_(
0082 [&_run, &_es](DQWorker *worker) {
0083 if (worker->onlineMode())
0084 worker->setTime(time(nullptr));
0085 worker->setRunNumber(_run.run());
0086 worker->endRun(_run, _es);
0087 },
0088 "endRun");
0089
0090 if (verbosity_ > 0)
0091 edm::LogInfo("EcalDQM") << moduleName_ << "::ecaldqmEndRun";
0092 }
0093
0094 void EcalDQMonitor::ecaldqmBeginLuminosityBlock(edm::LuminosityBlock const &_lumi, edm::EventSetup const &_es) const {
0095 executeOnWorkers_(
0096 [&_lumi, &_es](DQWorker *worker) {
0097 if (worker->onlineMode())
0098 worker->setTime(time(nullptr));
0099 worker->setLumiNumber(_lumi.luminosityBlock());
0100 worker->beginLuminosityBlock(_lumi, _es);
0101 },
0102 "beginLumi");
0103
0104 if (verbosity_ > 1)
0105 edm::LogInfo("EcalDQM") << moduleName_ << "::ecaldqmBeginLuminosityBlock";
0106 }
0107
0108 void EcalDQMonitor::ecaldqmEndLuminosityBlock(edm::LuminosityBlock const &_lumi, edm::EventSetup const &_es) {
0109 executeOnWorkers_(
0110 [&_lumi, &_es](DQWorker *worker) {
0111 if (worker->onlineMode())
0112 worker->setTime(time(nullptr));
0113 worker->setLumiNumber(_lumi.luminosityBlock());
0114 worker->endLuminosityBlock(_lumi, _es);
0115 },
0116 "endLumi");
0117
0118 if (verbosity_ > 2)
0119 edm::LogInfo("EcalDQM") << moduleName_ << "::ecaldqmEndLuminosityBlock";
0120 }
0121 }