CMS 3D CMS Logo

oneDQMEDAnalyzer.h
Go to the documentation of this file.
1 #ifndef DQMServices_Core_oneDQMEDAnalyzer_h
2 #define DQMServices_Core_oneDQMEDAnalyzer_h
3 
12 
15 
16 /*
17 A one::DQMEDAnalyzer<*> should be used in the case where a module must file DQM histograms and must be an
18 edm::one module.
19 
20 Inheriting from one::DQMEDAnalyzer<> gives access to Run transitions.
21 
22 Inheriting from one::DQMEDAnalyzer<edm::one::WatchLuminosityBlocks> gives access to Run and LuminosityBlock transitions but can only be used with Run based MonitorElements.
23 
24 Inheriting from one::DQMEDAnalyzer<one::DQMLuminosityBlockElements> give access to Run and LuminosityBlock transitions and filling LuminosityBlock based MonitorElements.
25 */
26 
27 namespace one {
28 
30 
31 namespace dqmimplementation {
32 template <typename... T>
33 class DQMRunEDProducer : public edm::one::EDProducer<edm::Accumulator,
34  edm::EndRunProducer,
35  edm::one::WatchRuns, T...>
36 {
37 public:
39  runToken_{this-> template produces<DQMToken,edm::Transition::EndRun>("endRun")}
40  {}
41  ~DQMRunEDProducer() override = default;
44 
45  void beginRun(edm::Run const& run, edm::EventSetup const& setup) final {
46  dqmBeginRun(run, setup);
47  edm::Service<DQMStore>()->bookTransaction(
48  [this, &run, &setup](DQMStore::IBooker & booker)
49  {
50  booker.cd();
51  this->bookHistograms(booker, run, setup);
52  },
53  run.run(),
54  this->moduleDescription().id());
55  }
56 
57  void endRun(edm::Run const& run, edm::EventSetup const& setup) override {}
58  void endRunProduce(edm::Run& run, edm::EventSetup const& setup) override {
59  edm::Service<DQMStore>()->cloneRunHistograms(
60  run.run(),
61  this->moduleDescription().id());
62 
63  run.emplace<DQMToken>(runToken_);
64  }
65 
66  virtual void dqmBeginRun(edm::Run const&, edm::EventSetup const&) {}
67  virtual void bookHistograms(DQMStore::IBooker &i, edm::Run const&, edm::EventSetup const&) = 0;
68 
69  virtual void analyze(edm::Event const&, edm::EventSetup const&) {}
70  void accumulate(edm::Event const& ev, edm::EventSetup const& es) final {
71  analyze(ev,es);
72  }
73 private:
75 
76 };
77 
78 class DQMLumisEDProducer : public DQMRunEDProducer<edm::EndLuminosityBlockProducer,
79  edm::one::WatchLuminosityBlocks>
80 
81 {
82 public:
84  ~DQMLumisEDProducer() override = default;
85  DQMLumisEDProducer(DQMLumisEDProducer const&) = delete;
87 
88  void beginLuminosityBlock(edm::LuminosityBlock const& lumi, edm::EventSetup const& setup) override;
89 
90  void endLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) override;
91 
92  void endLuminosityBlockProduce(edm::LuminosityBlock & lumi, edm::EventSetup const& setup) final;
93 
94 
95  virtual void dqmBeginLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&);
96  //virtual void bookLumiHistograms(DQMStore::IBooker &i, edm::LuminosityBlock const&, edm::EventSetup const&) = 0;
97 
98  private:
100 };
101 
102 template <typename... T> class DQMBaseClass;
103 
104 template<> class DQMBaseClass<> : public DQMRunEDProducer<> {};
106 template<> class DQMBaseClass<edm::one::WatchLuminosityBlocks> : public DQMRunEDProducer<edm::one::WatchLuminosityBlocks> {};
107 template<typename T> class DQMBaseClass<edm::LuminosityBlockCache<T>> : public DQMRunEDProducer<edm::LuminosityBlockCache<T>>{};
108 }
109 
110 template <typename... T>
112 {
113 public:
114  DQMEDAnalyzer() = default;
115  ~DQMEDAnalyzer() override = default;
116  DQMEDAnalyzer(DQMEDAnalyzer<T...> const&) = delete;
117  DQMEDAnalyzer(DQMEDAnalyzer<T...> &&) = delete;
118 };
119 }
120 #endif // DQMServices_Core_DQMEDAnalyzer_h
RunNumber_t run() const
Definition: RunBase.h:40
void emplace(EDPutTokenT< PROD > token, Args &&...args)
puts a new product
Definition: Run.h:262
edm::EDPutTokenT< DQMToken > runToken_
def setup(process, global_tag, zero_tesla=False)
Definition: GeneralSetup.py:2
virtual example_stream void bookHistograms(DQMStore::IBooker &,@example_stream edm::Run const &,@example_stream edm::EventSetup const &) override
bool ev
void beginRun(edm::Run const &run, edm::EventSetup const &setup) final
virtual void analyze(edm::Event const &, edm::EventSetup const &)
void accumulate(edm::Event const &ev, edm::EventSetup const &es) final
virtual void dqmBeginRun(edm::Run const &, edm::EventSetup const &)
HLT enums.
one::DQMEDAnalyzer< one::DQMLuminosityBlockElements > DQMEDAnalyzer
Definition: DQMEDAnalyzer.h:6
edm::EDPutTokenT< DQMToken > lumiToken_
long double T
void endRunProduce(edm::Run &run, edm::EventSetup const &setup) override
virtual example_stream void analyze(const edm::Event &, const edm::EventSetup &) override
void endRun(edm::Run const &run, edm::EventSetup const &setup) override
Definition: Run.h:44