From 9c1687e5e266d3887a118ef2596b365da80b4dca Mon Sep 17 00:00:00 2001 From: Tanmay Mudholkar Date: Wed, 7 Oct 2020 03:11:57 +0200 Subject: [PATCH 1/4] Change DQMOneLumiEDAnalyzer to DQMOneEDAnalyzer to allow concurrent processing of lumisections. --- DQM/EcalCommon/interface/EcalDQMonitor.h | 8 +++++--- DQM/EcalCommon/src/EcalDQMonitor.cc | 2 +- DQM/EcalMonitorTasks/interface/EcalDQMonitorTask.h | 6 +++--- DQM/EcalMonitorTasks/plugins/EcalDQMonitorTask.cc | 7 ++++--- 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/DQM/EcalCommon/interface/EcalDQMonitor.h b/DQM/EcalCommon/interface/EcalDQMonitor.h index c434cc314a2a6..d014edad453f0 100644 --- a/DQM/EcalCommon/interface/EcalDQMonitor.h +++ b/DQM/EcalCommon/interface/EcalDQMonitor.h @@ -17,6 +17,8 @@ namespace edm { } // namespace edm namespace ecaldqm { + struct NoCache {}; + class EcalDQMonitor { public: EcalDQMonitor(edm::ParameterSet const &); @@ -28,14 +30,14 @@ namespace ecaldqm { void ecaldqmGetSetupObjects(edm::EventSetup const &); void ecaldqmBeginRun(edm::Run const &, edm::EventSetup const &); void ecaldqmEndRun(edm::Run const &, edm::EventSetup const &); - void ecaldqmBeginLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &); + void ecaldqmBeginLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &) const; void ecaldqmEndLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &); template void executeOnWorkers_(FuncOnWorker, std::string const &, std::string const & = "", - int = 1); // loop over workers and capture exceptions + int = 1) const; // loop over workers and capture exceptions std::vector workers_; std::string const moduleName_; @@ -46,7 +48,7 @@ namespace ecaldqm { void EcalDQMonitor::executeOnWorkers_(FuncOnWorker _func, std::string const &_context, std::string const &_message /* = ""*/, - int _verbThreshold /* = 1*/) { + int _verbThreshold /* = 1*/) const { std::for_each(workers_.begin(), workers_.end(), [&](DQWorker *worker) { if (verbosity_ > _verbThreshold && !_message.empty()) edm::LogInfo("EcalDQM") << moduleName_ << ": " << _message << " @ " << worker->getName(); diff --git a/DQM/EcalCommon/src/EcalDQMonitor.cc b/DQM/EcalCommon/src/EcalDQMonitor.cc index 86f19334cd83d..13d28f1f64c74 100644 --- a/DQM/EcalCommon/src/EcalDQMonitor.cc +++ b/DQM/EcalCommon/src/EcalDQMonitor.cc @@ -112,7 +112,7 @@ namespace ecaldqm { edm::LogInfo("EcalDQM") << moduleName_ << "::ecaldqmEndRun"; } - void EcalDQMonitor::ecaldqmBeginLuminosityBlock(edm::LuminosityBlock const &_lumi, edm::EventSetup const &_es) { + void EcalDQMonitor::ecaldqmBeginLuminosityBlock(edm::LuminosityBlock const &_lumi, edm::EventSetup const &_es) const { executeOnWorkers_( [&_lumi, &_es](DQWorker *worker) { if (worker->onlineMode()) diff --git a/DQM/EcalMonitorTasks/interface/EcalDQMonitorTask.h b/DQM/EcalMonitorTasks/interface/EcalDQMonitorTask.h index 88e8e0d9e71e0..a7ffd5ce9ab4b 100644 --- a/DQM/EcalMonitorTasks/interface/EcalDQMonitorTask.h +++ b/DQM/EcalMonitorTasks/interface/EcalDQMonitorTask.h @@ -15,7 +15,7 @@ namespace edm { class ParameterSetDescription; } // namespace edm -class EcalDQMonitorTask : public DQMOneLumiEDAnalyzer<>, public ecaldqm::EcalDQMonitor { +class EcalDQMonitorTask : public DQMOneEDAnalyzer>, public ecaldqm::EcalDQMonitor { public: EcalDQMonitorTask(edm::ParameterSet const&); ~EcalDQMonitorTask() override {} @@ -27,8 +27,8 @@ class EcalDQMonitorTask : public DQMOneLumiEDAnalyzer<>, public ecaldqm::EcalDQM private: void dqmEndRun(edm::Run const&, edm::EventSetup const&) override; - void dqmBeginLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) override; - void dqmEndLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) override; + std::shared_ptr globalBeginLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) const override; + void globalEndLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) override; void analyze(edm::Event const&, edm::EventSetup const&) override; typedef void (EcalDQMonitorTask::*Processor)(edm::Event const&, diff --git a/DQM/EcalMonitorTasks/plugins/EcalDQMonitorTask.cc b/DQM/EcalMonitorTasks/plugins/EcalDQMonitorTask.cc index 1ec17dbfd5cd6..9bc87b2c92a60 100644 --- a/DQM/EcalMonitorTasks/plugins/EcalDQMonitorTask.cc +++ b/DQM/EcalMonitorTasks/plugins/EcalDQMonitorTask.cc @@ -25,7 +25,7 @@ #include EcalDQMonitorTask::EcalDQMonitorTask(edm::ParameterSet const& _ps) - : DQMOneLumiEDAnalyzer(), + : DQMOneEDAnalyzer >(), ecaldqm::EcalDQMonitor(_ps), schedule_(), allowMissingCollections_(_ps.getUntrackedParameter("allowMissingCollections")), @@ -119,11 +119,12 @@ void EcalDQMonitorTask::dqmEndRun(edm::Run const& _run, edm::EventSetup const& _ executeOnWorkers_([](ecaldqm::DQWorker* worker) { worker->releaseMEs(); }, "releaseMEs", "releasing histograms"); } -void EcalDQMonitorTask::dqmBeginLuminosityBlock(edm::LuminosityBlock const& _lumi, edm::EventSetup const& _es) { +std::shared_ptr EcalDQMonitorTask::globalBeginLuminosityBlock(edm::LuminosityBlock const& _lumi, edm::EventSetup const& _es) const { ecaldqmBeginLuminosityBlock(_lumi, _es); + return nullptr; } -void EcalDQMonitorTask::dqmEndLuminosityBlock(edm::LuminosityBlock const& _lumi, edm::EventSetup const& _es) { +void EcalDQMonitorTask::globalEndLuminosityBlock(edm::LuminosityBlock const& _lumi, edm::EventSetup const& _es) { ecaldqmEndLuminosityBlock(_lumi, _es); if (lastResetTime_ != 0 && (time(nullptr) - lastResetTime_) / 3600. > resetInterval_) { From 8930cfd1cab2924a69527ead784c34a78033148b Mon Sep 17 00:00:00 2001 From: Tanmay Mudholkar Date: Wed, 7 Oct 2020 06:25:34 +0200 Subject: [PATCH 2/4] Fixed code formatting issues. --- DQM/EcalMonitorTasks/interface/EcalDQMonitorTask.h | 12 +++++++----- DQM/EcalMonitorTasks/plugins/EcalDQMonitorTask.cc | 3 ++- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/DQM/EcalMonitorTasks/interface/EcalDQMonitorTask.h b/DQM/EcalMonitorTasks/interface/EcalDQMonitorTask.h index a7ffd5ce9ab4b..eba669fdbeee0 100644 --- a/DQM/EcalMonitorTasks/interface/EcalDQMonitorTask.h +++ b/DQM/EcalMonitorTasks/interface/EcalDQMonitorTask.h @@ -15,7 +15,8 @@ namespace edm { class ParameterSetDescription; } // namespace edm -class EcalDQMonitorTask : public DQMOneEDAnalyzer>, public ecaldqm::EcalDQMonitor { +class EcalDQMonitorTask : public DQMOneEDAnalyzer>, + public ecaldqm::EcalDQMonitor { public: EcalDQMonitorTask(edm::ParameterSet const&); ~EcalDQMonitorTask() override {} @@ -27,7 +28,8 @@ class EcalDQMonitorTask : public DQMOneEDAnalyzer globalBeginLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) const override; + std::shared_ptr globalBeginLuminosityBlock(edm::LuminosityBlock const&, + edm::EventSetup const&) const override; void globalEndLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) override; void analyze(edm::Event const&, edm::EventSetup const&) override; @@ -42,9 +44,9 @@ class EcalDQMonitorTask : public DQMOneEDAnalyzer > schedule_; // schedule of collections to run - bool allowMissingCollections_; // when true, skip missing collections silently + edm::EDGetToken collectionTokens_[ecaldqm::nCollections]; // list of EDGetTokens + std::vector> schedule_; // schedule of collections to run + bool allowMissingCollections_; // when true, skip missing collections silently int processedEvents_; /* TASK TIME PROFILING */ diff --git a/DQM/EcalMonitorTasks/plugins/EcalDQMonitorTask.cc b/DQM/EcalMonitorTasks/plugins/EcalDQMonitorTask.cc index 9bc87b2c92a60..79868b8a0f42c 100644 --- a/DQM/EcalMonitorTasks/plugins/EcalDQMonitorTask.cc +++ b/DQM/EcalMonitorTasks/plugins/EcalDQMonitorTask.cc @@ -119,7 +119,8 @@ void EcalDQMonitorTask::dqmEndRun(edm::Run const& _run, edm::EventSetup const& _ executeOnWorkers_([](ecaldqm::DQWorker* worker) { worker->releaseMEs(); }, "releaseMEs", "releasing histograms"); } -std::shared_ptr EcalDQMonitorTask::globalBeginLuminosityBlock(edm::LuminosityBlock const& _lumi, edm::EventSetup const& _es) const { +std::shared_ptr EcalDQMonitorTask::globalBeginLuminosityBlock(edm::LuminosityBlock const& _lumi, + edm::EventSetup const& _es) const { ecaldqmBeginLuminosityBlock(_lumi, _es); return nullptr; } From ed129d8f97e6ba52d6936cbb5c58f5c8165e8f5e Mon Sep 17 00:00:00 2001 From: Tanmay Mudholkar Date: Thu, 15 Oct 2020 01:29:31 +0200 Subject: [PATCH 3/4] Fixes to allow concurrent processing online (and pass unit test). --- DQM/EcalCommon/interface/EcalDQMonitor.h | 7 +++-- DQM/EcalMonitorTasks/interface/ClusterTask.h | 2 +- DQM/EcalMonitorTasks/interface/DQWorkerTask.h | 2 +- .../interface/EcalDQMonitorTask.h | 6 ++-- DQM/EcalMonitorTasks/interface/EnergyTask.h | 3 +- .../interface/IntegrityTask.h | 2 +- DQM/EcalMonitorTasks/interface/LaserTask.h | 2 +- DQM/EcalMonitorTasks/interface/LedTask.h | 2 +- .../interface/OccupancyTask.h | 2 +- .../interface/PresampleTask.h | 2 +- DQM/EcalMonitorTasks/interface/RawDataTask.h | 3 +- .../interface/SelectiveReadoutTask.h | 2 +- DQM/EcalMonitorTasks/interface/TimingTask.h | 3 +- DQM/EcalMonitorTasks/interface/TrigPrimTask.h | 4 +-- .../plugins/EcalDQMonitorTask.cc | 26 +++++++++++++---- DQM/EcalMonitorTasks/src/ClusterTask.cc | 2 +- DQM/EcalMonitorTasks/src/EnergyTask.cc | 7 +++-- DQM/EcalMonitorTasks/src/IntegrityTask.cc | 12 +++++--- DQM/EcalMonitorTasks/src/LaserTask.cc | 2 +- DQM/EcalMonitorTasks/src/LedTask.cc | 2 +- DQM/EcalMonitorTasks/src/OccupancyTask.cc | 14 ++++++---- DQM/EcalMonitorTasks/src/PresampleTask.cc | 19 ++++++++----- DQM/EcalMonitorTasks/src/RawDataTask.cc | 14 ++++------ .../src/SelectiveReadoutTask.cc | 2 +- DQM/EcalMonitorTasks/src/TimingTask.cc | 16 ++++------- DQM/EcalMonitorTasks/src/TrigPrimTask.cc | 28 +++++++++---------- 26 files changed, 102 insertions(+), 84 deletions(-) diff --git a/DQM/EcalCommon/interface/EcalDQMonitor.h b/DQM/EcalCommon/interface/EcalDQMonitor.h index d014edad453f0..0bb3cbde3b3d8 100644 --- a/DQM/EcalCommon/interface/EcalDQMonitor.h +++ b/DQM/EcalCommon/interface/EcalDQMonitor.h @@ -17,7 +17,10 @@ namespace edm { } // namespace edm namespace ecaldqm { - struct NoCache {}; + struct EcalLSCache { + std::map ByLumiPlotsResetSwitches; + bool lhcStatusSet_; + }; class EcalDQMonitor { public: @@ -41,7 +44,7 @@ namespace ecaldqm { std::vector workers_; std::string const moduleName_; - int const verbosity_; + const int verbosity_; }; template diff --git a/DQM/EcalMonitorTasks/interface/ClusterTask.h b/DQM/EcalMonitorTasks/interface/ClusterTask.h index 9783f072d107b..f7f2ccd017666 100644 --- a/DQM/EcalMonitorTasks/interface/ClusterTask.h +++ b/DQM/EcalMonitorTasks/interface/ClusterTask.h @@ -26,7 +26,7 @@ namespace ecaldqm { void addDependencies(DependencySet&) override; - void beginEvent(edm::Event const&, edm::EventSetup const&) override; + void beginEvent(edm::Event const&, edm::EventSetup const&, bool const&, bool&) override; void endEvent(edm::Event const&, edm::EventSetup const&) override; bool analyze(void const*, Collections) override; diff --git a/DQM/EcalMonitorTasks/interface/DQWorkerTask.h b/DQM/EcalMonitorTasks/interface/DQWorkerTask.h index 17eeb697205e5..baee9090c5468 100644 --- a/DQM/EcalMonitorTasks/interface/DQWorkerTask.h +++ b/DQM/EcalMonitorTasks/interface/DQWorkerTask.h @@ -77,7 +77,7 @@ namespace ecaldqm { static void fillDescriptions(edm::ParameterSetDescription&); - virtual void beginEvent(edm::Event const&, edm::EventSetup const&) {} + virtual void beginEvent(edm::Event const&, edm::EventSetup const&, bool const&, bool&) {} virtual void endEvent(edm::Event const&, edm::EventSetup const&) {} virtual bool filterRunType(short const*) { return true; }; diff --git a/DQM/EcalMonitorTasks/interface/EcalDQMonitorTask.h b/DQM/EcalMonitorTasks/interface/EcalDQMonitorTask.h index eba669fdbeee0..8420e4d6e97f2 100644 --- a/DQM/EcalMonitorTasks/interface/EcalDQMonitorTask.h +++ b/DQM/EcalMonitorTasks/interface/EcalDQMonitorTask.h @@ -15,7 +15,7 @@ namespace edm { class ParameterSetDescription; } // namespace edm -class EcalDQMonitorTask : public DQMOneEDAnalyzer>, +class EcalDQMonitorTask : public DQMOneEDAnalyzer>, public ecaldqm::EcalDQMonitor { public: EcalDQMonitorTask(edm::ParameterSet const&); @@ -28,8 +28,8 @@ class EcalDQMonitorTask : public DQMOneEDAnalyzer globalBeginLuminosityBlock(edm::LuminosityBlock const&, - edm::EventSetup const&) const override; + std::shared_ptr globalBeginLuminosityBlock(edm::LuminosityBlock const&, + edm::EventSetup const&) const override; void globalEndLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) override; void analyze(edm::Event const&, edm::EventSetup const&) override; diff --git a/DQM/EcalMonitorTasks/interface/EnergyTask.h b/DQM/EcalMonitorTasks/interface/EnergyTask.h index 65db3519a0fe1..79cdd54ac6028 100644 --- a/DQM/EcalMonitorTasks/interface/EnergyTask.h +++ b/DQM/EcalMonitorTasks/interface/EnergyTask.h @@ -14,8 +14,7 @@ namespace ecaldqm { bool filterRunType(short const*) override; - void beginLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) override; - + void beginEvent(edm::Event const&, edm::EventSetup const&, bool const&, bool&) override; bool analyze(void const*, Collections) override; void runOnRecHits(EcalRecHitCollection const&); diff --git a/DQM/EcalMonitorTasks/interface/IntegrityTask.h b/DQM/EcalMonitorTasks/interface/IntegrityTask.h index 12ea52085dff8..aa92ba2509469 100644 --- a/DQM/EcalMonitorTasks/interface/IntegrityTask.h +++ b/DQM/EcalMonitorTasks/interface/IntegrityTask.h @@ -15,7 +15,7 @@ namespace ecaldqm { IntegrityTask(); ~IntegrityTask() override {} - void beginLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) override; + void beginEvent(edm::Event const&, edm::EventSetup const&, bool const&, bool&) override; bool analyze(void const*, Collections) override; diff --git a/DQM/EcalMonitorTasks/interface/LaserTask.h b/DQM/EcalMonitorTasks/interface/LaserTask.h index cc92ad773ae1c..17ee4a7c8de33 100644 --- a/DQM/EcalMonitorTasks/interface/LaserTask.h +++ b/DQM/EcalMonitorTasks/interface/LaserTask.h @@ -22,7 +22,7 @@ namespace ecaldqm { void beginRun(edm::Run const&, edm::EventSetup const&) override; void beginLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) override; - void beginEvent(edm::Event const&, edm::EventSetup const&) override; + void beginEvent(edm::Event const&, edm::EventSetup const&, bool const&, bool&) override; bool analyze(void const*, Collections) override; diff --git a/DQM/EcalMonitorTasks/interface/LedTask.h b/DQM/EcalMonitorTasks/interface/LedTask.h index 6b7a33b5b7e6c..5535b62bd4d71 100644 --- a/DQM/EcalMonitorTasks/interface/LedTask.h +++ b/DQM/EcalMonitorTasks/interface/LedTask.h @@ -22,7 +22,7 @@ namespace ecaldqm { void beginRun(edm::Run const&, edm::EventSetup const&) override; void beginLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) override; - void beginEvent(edm::Event const&, edm::EventSetup const&) override; + void beginEvent(edm::Event const&, edm::EventSetup const&, bool const&, bool&) override; bool analyze(void const*, Collections) override; diff --git a/DQM/EcalMonitorTasks/interface/OccupancyTask.h b/DQM/EcalMonitorTasks/interface/OccupancyTask.h index 2ab22d558bd44..5f28e6173d041 100644 --- a/DQM/EcalMonitorTasks/interface/OccupancyTask.h +++ b/DQM/EcalMonitorTasks/interface/OccupancyTask.h @@ -15,7 +15,7 @@ namespace ecaldqm { bool filterRunType(short const*) override; - void beginLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) override; + void beginEvent(edm::Event const&, edm::EventSetup const&, bool const&, bool&) override; bool analyze(void const*, Collections) override; diff --git a/DQM/EcalMonitorTasks/interface/PresampleTask.h b/DQM/EcalMonitorTasks/interface/PresampleTask.h index e4bce5d61b7d3..cf65593ab3f0c 100644 --- a/DQM/EcalMonitorTasks/interface/PresampleTask.h +++ b/DQM/EcalMonitorTasks/interface/PresampleTask.h @@ -14,13 +14,13 @@ namespace ecaldqm { bool filterRunType(short const*) override; + void beginEvent(edm::Event const&, edm::EventSetup const&, bool const&, bool&) override; bool analyze(void const*, Collections) override; template void runOnDigis(DigiCollection const&); private: - void beginLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) override; void setParams(edm::ParameterSet const&) override; bool doPulseMaxCheck_; diff --git a/DQM/EcalMonitorTasks/interface/RawDataTask.h b/DQM/EcalMonitorTasks/interface/RawDataTask.h index 5892550bd2d39..e62eaf70d24fe 100644 --- a/DQM/EcalMonitorTasks/interface/RawDataTask.h +++ b/DQM/EcalMonitorTasks/interface/RawDataTask.h @@ -17,8 +17,7 @@ namespace ecaldqm { void addDependencies(DependencySet&) override; void beginRun(edm::Run const&, edm::EventSetup const&) override; - void beginLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) override; - void beginEvent(edm::Event const&, edm::EventSetup const&) override; + void beginEvent(edm::Event const&, edm::EventSetup const&, bool const&, bool&) override; bool analyze(void const*, Collections) override; diff --git a/DQM/EcalMonitorTasks/interface/SelectiveReadoutTask.h b/DQM/EcalMonitorTasks/interface/SelectiveReadoutTask.h index 7adaa8505b118..dae6c5bd77da9 100644 --- a/DQM/EcalMonitorTasks/interface/SelectiveReadoutTask.h +++ b/DQM/EcalMonitorTasks/interface/SelectiveReadoutTask.h @@ -23,7 +23,7 @@ namespace ecaldqm { void addDependencies(DependencySet&) override; void beginRun(edm::Run const&, edm::EventSetup const&) override; - void beginEvent(edm::Event const&, edm::EventSetup const&) override; + void beginEvent(edm::Event const&, edm::EventSetup const&, bool const&, bool&) override; bool analyze(void const*, Collections) override; diff --git a/DQM/EcalMonitorTasks/interface/TimingTask.h b/DQM/EcalMonitorTasks/interface/TimingTask.h index fd3d73e6f9f4b..e0fa74d96034c 100644 --- a/DQM/EcalMonitorTasks/interface/TimingTask.h +++ b/DQM/EcalMonitorTasks/interface/TimingTask.h @@ -20,8 +20,7 @@ namespace ecaldqm { void runOnUncalibRecHits(EcalUncalibratedRecHitCollection const&); private: - void beginLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) override; - void beginEvent(edm::Event const&, edm::EventSetup const&) override; + void beginEvent(edm::Event const&, edm::EventSetup const&, bool const&, bool&) override; void setParams(edm::ParameterSet const&) override; std::vector bxBinEdges_; diff --git a/DQM/EcalMonitorTasks/interface/TrigPrimTask.h b/DQM/EcalMonitorTasks/interface/TrigPrimTask.h index e546b08d774c5..d23cf75195227 100644 --- a/DQM/EcalMonitorTasks/interface/TrigPrimTask.h +++ b/DQM/EcalMonitorTasks/interface/TrigPrimTask.h @@ -24,8 +24,7 @@ namespace ecaldqm { void addDependencies(DependencySet&) override; void beginRun(edm::Run const&, edm::EventSetup const&) override; - void beginLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) override; - void beginEvent(edm::Event const&, edm::EventSetup const&) override; + void beginEvent(edm::Event const&, edm::EventSetup const&, bool const&, bool&) override; bool analyze(void const*, Collections) override; @@ -60,7 +59,6 @@ namespace ecaldqm { edm::InputTag lhcStatusInfoCollectionTag_; edm::EDGetTokenT lhcStatusInfoRecordToken_; - bool lhcStatusSet_; }; inline bool TrigPrimTask::analyze(void const* _p, Collections _collection) { diff --git a/DQM/EcalMonitorTasks/plugins/EcalDQMonitorTask.cc b/DQM/EcalMonitorTasks/plugins/EcalDQMonitorTask.cc index 79868b8a0f42c..be91d9afd06af 100644 --- a/DQM/EcalMonitorTasks/plugins/EcalDQMonitorTask.cc +++ b/DQM/EcalMonitorTasks/plugins/EcalDQMonitorTask.cc @@ -25,7 +25,7 @@ #include EcalDQMonitorTask::EcalDQMonitorTask(edm::ParameterSet const& _ps) - : DQMOneEDAnalyzer >(), + : DQMOneEDAnalyzer>(), ecaldqm::EcalDQMonitor(_ps), schedule_(), allowMissingCollections_(_ps.getUntrackedParameter("allowMissingCollections")), @@ -119,10 +119,19 @@ void EcalDQMonitorTask::dqmEndRun(edm::Run const& _run, edm::EventSetup const& _ executeOnWorkers_([](ecaldqm::DQWorker* worker) { worker->releaseMEs(); }, "releaseMEs", "releasing histograms"); } -std::shared_ptr EcalDQMonitorTask::globalBeginLuminosityBlock(edm::LuminosityBlock const& _lumi, - edm::EventSetup const& _es) const { +std::shared_ptr EcalDQMonitorTask::globalBeginLuminosityBlock(edm::LuminosityBlock const& _lumi, + edm::EventSetup const& _es) const { + std::shared_ptr tmpCache = std::make_shared(); + executeOnWorkers_( + [&tmpCache](ecaldqm::DQWorker* worker) { (tmpCache->ByLumiPlotsResetSwitches)[worker->getName()] = true; }, + "globalBeginLuminosityBlock"); + if (this->verbosity_ > 2) + edm::LogInfo("EcalDQM") << "Set LS cache."; + + // Reset lhcStatusSet_ to false at the beginning of each LS; when LHC status is set in some event this variable will be set to tru + tmpCache->lhcStatusSet_ = false; ecaldqmBeginLuminosityBlock(_lumi, _es); - return nullptr; + return tmpCache; } void EcalDQMonitorTask::globalEndLuminosityBlock(edm::LuminosityBlock const& _lumi, edm::EventSetup const& _es) { @@ -187,13 +196,18 @@ void EcalDQMonitorTask::analyze(edm::Event const& _evt, edm::EventSetup const& _ ++processedEvents_; // start event processing + auto lumiCache = luminosityBlockCache(_evt.getLuminosityBlock().index()); executeOnWorkers_( - [&_evt, &_es, &enabledTasks](ecaldqm::DQWorker* worker) { + [&_evt, &_es, &enabledTasks, &lumiCache](ecaldqm::DQWorker* worker) { if (enabledTasks.find(worker) != enabledTasks.end()) { if (worker->onlineMode()) worker->setTime(time(nullptr)); worker->setEventNumber(_evt.id().event()); - static_cast(worker)->beginEvent(_evt, _es); + bool ByLumiResetSwitch = (lumiCache->ByLumiPlotsResetSwitches).at(worker->getName()); + bool lhcStatusSet = lumiCache->lhcStatusSet_; + static_cast(worker)->beginEvent(_evt, _es, ByLumiResetSwitch, lhcStatusSet); + (lumiCache->ByLumiPlotsResetSwitches)[worker->getName()] = false; + lumiCache->lhcStatusSet_ = lhcStatusSet; } }, "beginEvent"); diff --git a/DQM/EcalMonitorTasks/src/ClusterTask.cc b/DQM/EcalMonitorTasks/src/ClusterTask.cc index e6b3e73435393..3e3e38110b316 100644 --- a/DQM/EcalMonitorTasks/src/ClusterTask.cc +++ b/DQM/EcalMonitorTasks/src/ClusterTask.cc @@ -74,7 +74,7 @@ namespace ecaldqm { _dependencies.push_back(Dependency(kEESuperCluster, kEERecHit)); } - void ClusterTask::beginEvent(edm::Event const& _evt, edm::EventSetup const& _es) { + void ClusterTask::beginEvent(edm::Event const& _evt, edm::EventSetup const& _es, bool const&, bool&) { if (!doExtra_) return; diff --git a/DQM/EcalMonitorTasks/src/EnergyTask.cc b/DQM/EcalMonitorTasks/src/EnergyTask.cc index 7c3ed6d8e03e0..8171b9a662d15 100644 --- a/DQM/EcalMonitorTasks/src/EnergyTask.cc +++ b/DQM/EcalMonitorTasks/src/EnergyTask.cc @@ -26,9 +26,10 @@ namespace ecaldqm { return false; } - void EnergyTask::beginLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) { - // Reset by LS plots at beginning of every LS - MEs_.at("HitMapAllByLumi").reset(); + void EnergyTask::beginEvent(edm::Event const& _evt, edm::EventSetup const& _es, bool const& ByLumiResetSwitch, bool&) { + if (ByLumiResetSwitch) { + MEs_.at("HitMapAllByLumi").reset(); + } } void EnergyTask::runOnRecHits(EcalRecHitCollection const& _hits) { diff --git a/DQM/EcalMonitorTasks/src/IntegrityTask.cc b/DQM/EcalMonitorTasks/src/IntegrityTask.cc index a634a17fb127c..80257f02b9c70 100644 --- a/DQM/EcalMonitorTasks/src/IntegrityTask.cc +++ b/DQM/EcalMonitorTasks/src/IntegrityTask.cc @@ -6,10 +6,14 @@ namespace ecaldqm { IntegrityTask::IntegrityTask() : DQWorkerTask() {} - void IntegrityTask::beginLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) { - // Reset by LS plots at beginning of every LS - MEs_.at("MapByLumi").reset(); - MEs_.at("ByLumi").reset(); + void IntegrityTask::beginEvent(edm::Event const& _evt, + edm::EventSetup const& _es, + bool const& ByLumiResetSwitch, + bool&) { + if (ByLumiResetSwitch) { + MEs_.at("MapByLumi").reset(); + MEs_.at("ByLumi").reset(); + } } template diff --git a/DQM/EcalMonitorTasks/src/LaserTask.cc b/DQM/EcalMonitorTasks/src/LaserTask.cc index e73a097bbeb86..a6abcfaec086a 100644 --- a/DQM/EcalMonitorTasks/src/LaserTask.cc +++ b/DQM/EcalMonitorTasks/src/LaserTask.cc @@ -60,7 +60,7 @@ namespace ecaldqm { emptyLS_ = -1; } - void LaserTask::beginEvent(edm::Event const& _evt, edm::EventSetup const&) { pnAmp_.clear(); } + void LaserTask::beginEvent(edm::Event const& _evt, edm::EventSetup const&, bool const&, bool&) { pnAmp_.clear(); } void LaserTask::runOnRawData(EcalRawDataCollection const& _rawData) { MESet& meCalibStatus(MEs_.at("CalibStatus")); diff --git a/DQM/EcalMonitorTasks/src/LedTask.cc b/DQM/EcalMonitorTasks/src/LedTask.cc index 3f354fa71504e..98c06f270b938 100644 --- a/DQM/EcalMonitorTasks/src/LedTask.cc +++ b/DQM/EcalMonitorTasks/src/LedTask.cc @@ -61,7 +61,7 @@ namespace ecaldqm { emptyLS_ = -1; } - void LedTask::beginEvent(edm::Event const&, edm::EventSetup const&) { pnAmp_.clear(); } + void LedTask::beginEvent(edm::Event const&, edm::EventSetup const&, bool const&, bool&) { pnAmp_.clear(); } void LedTask::runOnRawData(EcalRawDataCollection const& _rawData) { MESet& meCalibStatus(MEs_.at("CalibStatus")); diff --git a/DQM/EcalMonitorTasks/src/OccupancyTask.cc b/DQM/EcalMonitorTasks/src/OccupancyTask.cc index aedc914de1d19..23a7fd608be0a 100644 --- a/DQM/EcalMonitorTasks/src/OccupancyTask.cc +++ b/DQM/EcalMonitorTasks/src/OccupancyTask.cc @@ -25,11 +25,15 @@ namespace ecaldqm { return false; } - void OccupancyTask::beginLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) { - // Reset by LS plots at beginning of every LS - MEs_.at("DigiAllByLumi").reset(); - MEs_.at("TPDigiThrAllByLumi").reset(); - MEs_.at("RecHitThrAllByLumi").reset(); + void OccupancyTask::beginEvent(edm::Event const& _evt, + edm::EventSetup const& _es, + bool const& ByLumiResetSwitch, + bool&) { + if (ByLumiResetSwitch) { + MEs_.at("DigiAllByLumi").reset(); + MEs_.at("TPDigiThrAllByLumi").reset(); + MEs_.at("RecHitThrAllByLumi").reset(); + } } void OccupancyTask::runOnRawData(EcalRawDataCollection const& _dcchs) { diff --git a/DQM/EcalMonitorTasks/src/PresampleTask.cc b/DQM/EcalMonitorTasks/src/PresampleTask.cc index 5ce6dfea7e069..ff0ff2a642ca2 100644 --- a/DQM/EcalMonitorTasks/src/PresampleTask.cc +++ b/DQM/EcalMonitorTasks/src/PresampleTask.cc @@ -28,13 +28,18 @@ namespace ecaldqm { return false; } - void PresampleTask::beginLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) { - // Fill separate MEs with only 10 LSs worth of stats - // Used to correctly fill Presample Trend plots: - // 1 pt:10 LS in Trend plots - mePedestalByLS = &MEs_.at("PedestalByLS"); - if (timestamp_.iLumi % 10 == 0) - mePedestalByLS->reset(); + void PresampleTask::beginEvent(edm::Event const& _evt, + edm::EventSetup const& _es, + bool const& ByLumiResetSwitch, + bool&) { + if (ByLumiResetSwitch) { + // Fill separate MEs with only 10 LSs worth of stats + // Used to correctly fill Presample Trend plots: + // 1 pt:10 LS in Trend plots + mePedestalByLS = &MEs_.at("PedestalByLS"); + if (timestamp_.iLumi % 10 == 0) + mePedestalByLS->reset(); + } } template diff --git a/DQM/EcalMonitorTasks/src/RawDataTask.cc b/DQM/EcalMonitorTasks/src/RawDataTask.cc index d372d8e3700b2..92a4fa6d9dffa 100644 --- a/DQM/EcalMonitorTasks/src/RawDataTask.cc +++ b/DQM/EcalMonitorTasks/src/RawDataTask.cc @@ -20,19 +20,17 @@ namespace ecaldqm { void RawDataTask::beginRun(edm::Run const& _run, edm::EventSetup const&) { runNumber_ = _run.run(); } - void RawDataTask::beginLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) { - // Reset by LS plots at beginning of every LS - MEs_.at("DesyncByLumi").reset(); - MEs_.at("FEByLumi").reset(); - MEs_.at("FEStatusErrMapByLumi").reset(); - } - - void RawDataTask::beginEvent(edm::Event const& _evt, edm::EventSetup const&) { + void RawDataTask::beginEvent(edm::Event const& _evt, edm::EventSetup const&, bool const& ByLumiResetSwitch, bool&) { orbit_ = _evt.orbitNumber() & 0xffffffff; bx_ = _evt.bunchCrossing() & 0xfff; triggerType_ = _evt.experimentType() & 0xf; l1A_ = 0; feL1Offset_ = _evt.isRealData() ? 1 : 0; + if (ByLumiResetSwitch) { + MEs_.at("DesyncByLumi").reset(); + MEs_.at("FEByLumi").reset(); + MEs_.at("FEStatusErrMapByLumi").reset(); + } } void RawDataTask::runOnSource(FEDRawDataCollection const& _fedRaw) { diff --git a/DQM/EcalMonitorTasks/src/SelectiveReadoutTask.cc b/DQM/EcalMonitorTasks/src/SelectiveReadoutTask.cc index 132e92c810f85..d53ed47e5b67a 100644 --- a/DQM/EcalMonitorTasks/src/SelectiveReadoutTask.cc +++ b/DQM/EcalMonitorTasks/src/SelectiveReadoutTask.cc @@ -59,7 +59,7 @@ namespace ecaldqm { } } - void SelectiveReadoutTask::beginEvent(edm::Event const&, edm::EventSetup const&) { + void SelectiveReadoutTask::beginEvent(edm::Event const&, edm::EventSetup const&, bool const&, bool&) { flags_.assign(nRU, -1); suppressed_.clear(); } diff --git a/DQM/EcalMonitorTasks/src/TimingTask.cc b/DQM/EcalMonitorTasks/src/TimingTask.cc index 8840ed345cf26..55d329bd8accc 100644 --- a/DQM/EcalMonitorTasks/src/TimingTask.cc +++ b/DQM/EcalMonitorTasks/src/TimingTask.cc @@ -47,19 +47,15 @@ namespace ecaldqm { return false; } - void TimingTask::beginLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) { - // Fill separate MEs with only 10 LSs worth of stats - // Used to correctly fill Presample Trend plots: - // 1 pt:10 LS in Trend plots - meTimeMapByLS = &MEs_.at("TimeMapByLS"); - if (timestamp_.iLumi % 10 == 0) - meTimeMapByLS->reset(); - } - - void TimingTask::beginEvent(edm::Event const& _evt, edm::EventSetup const& _es) { + void TimingTask::beginEvent(edm::Event const& _evt, edm::EventSetup const& _es, bool const& ByLumiResetSwitch, bool&) { using namespace std; std::vector::iterator pBin = std::upper_bound(bxBinEdges_.begin(), bxBinEdges_.end(), _evt.bunchCrossing()); bxBin_ = static_cast(pBin - bxBinEdges_.begin()) - 0.5; + if (ByLumiResetSwitch) { + meTimeMapByLS = &MEs_.at("TimeMapByLS"); + if (timestamp_.iLumi % 10 == 0) + meTimeMapByLS->reset(); + } } void TimingTask::runOnRecHits(EcalRecHitCollection const& _hits, Collections _collection) { diff --git a/DQM/EcalMonitorTasks/src/TrigPrimTask.cc b/DQM/EcalMonitorTasks/src/TrigPrimTask.cc index 71717336b28c0..cbfea87b9d335 100644 --- a/DQM/EcalMonitorTasks/src/TrigPrimTask.cc +++ b/DQM/EcalMonitorTasks/src/TrigPrimTask.cc @@ -24,8 +24,7 @@ namespace ecaldqm { bxBinEdges_{{1, 271, 541, 892, 1162, 1432, 1783, 2053, 2323, 2674, 2944, 3214, 3446, 3490, 3491, 3565}}, bxBin_(0.), towerReadouts_(), - lhcStatusInfoCollectionTag_(), - lhcStatusSet_(false) {} + lhcStatusInfoCollectionTag_() {} void TrigPrimTask::setParams(edm::ParameterSet const& _params) { runOnEmul_ = _params.getUntrackedParameter("runOnEmul"); @@ -54,32 +53,31 @@ namespace ecaldqm { _es.get().get(StripStatusRcd); } - void TrigPrimTask::beginLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) { - // Reset by LS plots at beginning of every LS - MEs_.at("EtSummaryByLumi").reset(); - MEs_.at("TTFlags4ByLumi").reset(); - MEs_.at("LHCStatusByLumi").reset(-1); - - // Reset lhcStatusSet_ to false at the beginning of each LS; when LHC status is set in some event this variable will be set to true - lhcStatusSet_ = false; - } - - void TrigPrimTask::beginEvent(edm::Event const& _evt, edm::EventSetup const& _es) { + void TrigPrimTask::beginEvent(edm::Event const& _evt, + edm::EventSetup const& _es, + bool const& ByLumiResetSwitch, + bool& lhcStatusSet) { using namespace std; towerReadouts_.clear(); - if (!lhcStatusSet_) { + if (!lhcStatusSet) { // Update LHC status once each LS MESet& meLHCStatusByLumi(static_cast(MEs_.at("LHCStatusByLumi"))); edm::Handle tcdsData; _evt.getByToken(lhcStatusInfoRecordToken_, tcdsData); if (tcdsData.isValid()) { meLHCStatusByLumi.fill(double(tcdsData->getBST().getBeamMode())); - lhcStatusSet_ = true; + lhcStatusSet = true; } } + if (ByLumiResetSwitch) { + MEs_.at("EtSummaryByLumi").reset(); + MEs_.at("TTFlags4ByLumi").reset(); + MEs_.at("LHCStatusByLumi").reset(-1); + } + realTps_ = nullptr; // HLTCaloBit_ = false; From 5a3a782acb675bc6fbae09273be3c6a4c3d369aa Mon Sep 17 00:00:00 2001 From: Tanmay Mudholkar Date: Fri, 16 Oct 2020 21:47:43 +0200 Subject: [PATCH 4/4] Fixed bug in plot that stores LHC status. --- DQM/EcalMonitorTasks/src/TrigPrimTask.cc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/DQM/EcalMonitorTasks/src/TrigPrimTask.cc b/DQM/EcalMonitorTasks/src/TrigPrimTask.cc index cbfea87b9d335..c53c9e485e7a4 100644 --- a/DQM/EcalMonitorTasks/src/TrigPrimTask.cc +++ b/DQM/EcalMonitorTasks/src/TrigPrimTask.cc @@ -61,6 +61,12 @@ namespace ecaldqm { towerReadouts_.clear(); + if (ByLumiResetSwitch) { + MEs_.at("EtSummaryByLumi").reset(); + MEs_.at("TTFlags4ByLumi").reset(); + MEs_.at("LHCStatusByLumi").reset(-1); + } + if (!lhcStatusSet) { // Update LHC status once each LS MESet& meLHCStatusByLumi(static_cast(MEs_.at("LHCStatusByLumi"))); @@ -72,12 +78,6 @@ namespace ecaldqm { } } - if (ByLumiResetSwitch) { - MEs_.at("EtSummaryByLumi").reset(); - MEs_.at("TTFlags4ByLumi").reset(); - MEs_.at("LHCStatusByLumi").reset(-1); - } - realTps_ = nullptr; // HLTCaloBit_ = false;