File indexing completed on 2024-06-07 02:29:28
0001 #ifndef DQWorkerClient_H
0002 #define DQWorkerClient_H
0003
0004 #include <utility>
0005
0006 #include "DQM/EcalCommon/interface/DQWorker.h"
0007 #include "FWCore/Framework/interface/ConsumesCollector.h"
0008
0009 class DetId;
0010 namespace edm {
0011 class ConsumesCollector;
0012 }
0013
0014 namespace ecaldqm {
0015 class StatusManager;
0016
0017 class DQWorkerClient : public DQWorker {
0018 public:
0019 enum ProcessType { kLumi, kJob, nProcessType };
0020
0021 DQWorkerClient();
0022 ~DQWorkerClient() override {}
0023
0024 static void fillDescriptions(edm::ParameterSetDescription&);
0025
0026 void endLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) override;
0027 void resetPerLumi();
0028
0029 void bookMEs(DQMStore::IBooker&) override;
0030 void releaseMEs() override;
0031
0032 void releaseSource();
0033 bool retrieveSource(DQMStore::IGetter&, ProcessType);
0034
0035 bool runsOn(ProcessType _type) const { return _type == kJob || hasLumiPlots_; }
0036 virtual void resetMEs();
0037 virtual void producePlots(ProcessType) = 0;
0038
0039
0040 virtual void setTokens(edm::ConsumesCollector&) {}
0041
0042 void setStatusManager(StatusManager const& _manager) { statusManager_ = &_manager; }
0043
0044 static constexpr int kBad = 0, kGood = 1, kUnknown = 2, kMBad = 3, kMGood = 4, kMUnknown = 5;
0045
0046 protected:
0047 void setME(edm::ParameterSet const& _ps) final;
0048 void setSource(edm::ParameterSet const&) override;
0049
0050 bool using_(std::string const& _name, ProcessType _type = kJob) const {
0051 MESetCollection::const_iterator itr(sources_.find(_name));
0052 if (itr == sources_.end())
0053 return false;
0054 if (_type == kJob)
0055 return true;
0056 else
0057 return itr->second->getLumiFlag();
0058 }
0059
0060 void towerAverage_(MESet&, MESet const&, float);
0061
0062 MESetCollection sources_;
0063 std::set<std::string> qualitySummaries_;
0064
0065 bool hasLumiPlots_;
0066
0067 StatusManager const* statusManager_;
0068 };
0069 }
0070 #endif