From 150f1946494e91b07f27cd904c45b6d2345d5911 Mon Sep 17 00:00:00 2001 From: Marcel Andre Schneider <marcel.andre.schneider@cern.ch> Date: Wed, 15 Jul 2020 13:38:35 +0200 Subject: [PATCH] Use GetterOfProducts. consumesMany seems to not catch everything. --- .../Components/plugins/DQMFileSaver.cc | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/DQMServices/Components/plugins/DQMFileSaver.cc b/DQMServices/Components/plugins/DQMFileSaver.cc index 11803cf31dd8c..2390368cf2bb9 100644 --- a/DQMServices/Components/plugins/DQMFileSaver.cc +++ b/DQMServices/Components/plugins/DQMFileSaver.cc @@ -5,6 +5,9 @@ #include "FWCore/Framework/interface/Event.h" #include "FWCore/Framework/interface/Run.h" #include "FWCore/Framework/interface/LuminosityBlock.h" +#include "FWCore/Framework/interface/GetterOfProducts.h" +#include "FWCore/Framework/interface/ProcessMatch.h" +#include "FWCore/Framework/interface/LuminosityBlock.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" #include "FWCore/Version/interface/GetReleaseVersion.h" #include "FWCore/ServiceRegistry/interface/Service.h" @@ -60,6 +63,11 @@ class DQMFileSaver : public edm::one::EDAnalyzer<edm::one::WatchRuns, edm::Watch // needed only for the harvesting step when saving in the endJob int irun_; + + // We want to consume all DQMTokens for runs and jobs. But consumesMany is + // confused by the labels, so we sue these getters. + edm::GetterOfProducts<DQMToken> jobmegetter_; + edm::GetterOfProducts<DQMToken> runmegetter_; }; //-------------------------------------------------------- @@ -146,9 +154,15 @@ DQMFileSaver::DQMFileSaver(const edm::ParameterSet &ps) fileBaseName_(""), dbe_(&*edm::Service<DQMStore>()), nrun_(0), - irun_(0) { - consumesMany<DQMToken, edm::InRun>(); - consumesMany<DQMToken, edm::InProcess>(); + irun_(0), + // Abuse ProcessMatch as a "match all". + jobmegetter_(edm::GetterOfProducts<DQMToken>(edm::ProcessMatch("*"), this, edm::InProcess)), + runmegetter_(edm::GetterOfProducts<DQMToken>(edm::ProcessMatch("*"), this, edm::InRun)) { + callWhenNewProductsRegistered([this](edm::BranchDescription const &bd) { + this->jobmegetter_(bd); + this->runmegetter_(bd); + }); + workflow_ = ps.getUntrackedParameter<std::string>("workflow", workflow_); if (workflow_.empty() || workflow_[0] != '/' || *workflow_.rbegin() == '/' || std::count(workflow_.begin(), workflow_.end(), '/') != 3 ||