CMS 3D CMS Logo

ProducingModuleAdaptor.h
Go to the documentation of this file.
1 #ifndef FWCore_Framework_stream_ProducingModuleAdaptor_h
2 #define FWCore_Framework_stream_ProducingModuleAdaptor_h
3 // -*- C++ -*-
4 //
5 // Package: FWCore/Framework
6 // Class : ProducingModuleAdaptor
7 //
16 //
17 // Original Author: Chris Jones
18 // Created: Fri, 02 Aug 2013 18:09:18 GMT
19 //
20 
21 // system include files
22 
23 // user include files
31 // forward declarations
32 
33 namespace edm {
35  namespace stream {
36 
37  template<typename T, typename M, typename B>
38  class ProducingModuleAdaptor : public B
39  {
40 
41  public:
43  m_pset(&iPSet)
44  {
45  m_runs.resize(1);
46  m_lumis.resize(1);
47  m_runSummaries.resize(1);
48  m_lumiSummaries.resize(1);
49  typename T::GlobalCache const* dummy=nullptr;
50  m_global.reset( impl::makeGlobal<T>(iPSet,dummy).release());
51  }
53  }
54 
55  static void fillDescriptions(ConfigurationDescriptions& descriptions) {
56  T::fillDescriptions(descriptions);
57  }
58  static void prevalidate(ConfigurationDescriptions& descriptions) {
59  T::prevalidate(descriptions);
60  }
61 
62 
63  private:
73 
74  void setupStreamModules() override final {
75  this->createStreamModules([this] () -> M* {
76  auto tmp = impl::makeStreamModule<T>(*m_pset,m_global.get());
77  MyGlobal::set(tmp,m_global.get());
78  return tmp;
79  });
80  m_pset= nullptr;
81  }
82 
83  void doEndJob() override final {
85  }
86  void setupRun(M* iProd, RunIndex iIndex) override final {
87  MyGlobalRun::set(iProd, m_runs[iIndex].get());
88  }
89  void streamEndRunSummary(M* iProd,
90  edm::Run const& iRun,
91  edm::EventSetup const& iES) override final {
92  auto s = m_runSummaries[iRun.index()].get();
93  std::lock_guard<decltype(m_runSummaryLock)> guard(m_runSummaryLock);
95  }
96 
97  void setupLuminosityBlock(M* iProd, LuminosityBlockIndex iIndex) override final
98  {
99  MyGlobalLuminosityBlock::set(iProd, m_lumis[iIndex].get());
100  }
102  edm::LuminosityBlock const& iLumi,
103  edm::EventSetup const& iES) override final {
104  auto s = m_lumiSummaries[iLumi.index()].get();
105  std::lock_guard<decltype(m_lumiSummaryLock)> guard(m_lumiSummaryLock);
107  }
108 
109  void doBeginRun(RunPrincipal const& rp,
110  EventSetup const& c,
111  ModuleCallingContext const* mcc) override final {
113  Run r(rp, this->moduleDescription(), mcc);
114  r.setConsumer(this->consumer());
115  Run const& cnstR = r;
116  RunIndex ri = rp.index();
117  MyGlobalRun::beginRun(cnstR,c,m_global.get(),m_runs[ri]);
118  typename T::RunContext rc(m_runs[ri].get(),m_global.get());
120  if(T::HasAbility::kBeginRunProducer) {
122  this->commit(r);
123  }
124  }
125  }
126  void doEndRun(RunPrincipal const& rp,
127  EventSetup const& c,
128  ModuleCallingContext const* mcc) override final
129  {
131 
132  Run r(rp, this->moduleDescription(), mcc);
133  r.setConsumer(this->consumer());
134 
135  RunIndex ri = rp.index();
136  typename T::RunContext rc(m_runs[ri].get(),m_global.get());
137  if(T::HasAbility::kEndRunProducer) {
138  MyEndRunProduce::produce(r,c,&rc,m_runSummaries[ri].get());
139  this->commit(r);
140  }
142  MyGlobalRun::endRun(r,c,&rc);
143  }
144  }
145 
147  ModuleCallingContext const* mcc) override final
148  {
149  if(T::HasAbility::kLuminosityBlockCache or T::HasAbility::kLuminosityBlockSummaryCache or T::HasAbility::kBeginLuminosityBlockProducer) {
150  LuminosityBlock lb(lbp, this->moduleDescription(), mcc);
151  lb.setConsumer(this->consumer());
152  LuminosityBlock const& cnstLb = lb;
153  LuminosityBlockIndex li = lbp.index();
154  RunIndex ri = lbp.runPrincipal().index();
155  typename T::RunContext rc(m_runs[ri].get(),m_global.get());
157  typename T::LuminosityBlockContext lc(m_lumis[li].get(),m_runs[ri].get(),m_global.get());
159  if(T::HasAbility::kBeginLuminosityBlockProducer) {
161  this->commit(lb);
162  }
163  }
164 
165  }
167  EventSetup const& c,
168  ModuleCallingContext const* mcc) override final {
169  if(T::HasAbility::kLuminosityBlockCache or T::HasAbility::kLuminosityBlockSummaryCache or T::HasAbility::kEndLuminosityBlockProducer) {
170 
171  LuminosityBlock lb(lbp, this->moduleDescription(), mcc);
172  lb.setConsumer(this->consumer());
173 
174  LuminosityBlockIndex li = lbp.index();
175  RunIndex ri = lbp.runPrincipal().index();
176  typename T::LuminosityBlockContext lc(m_lumis[li].get(),m_runs[ri].get(),m_global.get());
177  if(T::HasAbility::kEndLuminosityBlockProducer) {
179  this->commit(lb);
180  }
183  }
184  }
185 
186  ProducingModuleAdaptor(const ProducingModuleAdaptor&) = delete; // stop default
187 
188  const ProducingModuleAdaptor& operator=(const ProducingModuleAdaptor&) = delete; // stop default
189 
190  // ---------- member data --------------------------------
199  };
200  }
201 }
202 
203 #endif
static void endLuminosityBlock(edm::LuminosityBlock const &Lumi, edm::EventSetup const &iES, typename T::LuminosityBlockContext const *iContext)
static void beginRun(edm::Run const &iRun, edm::EventSetup const &iES, typename T::RunContext const *iRC, std::shared_ptr< typename T::RunSummaryCache > &oCache)
void doEndRun(RunPrincipal const &rp, EventSetup const &c, ModuleCallingContext const *mcc) override final
void setConsumer(EDConsumerBase const *iConsumer)
static void endRun(edm::Run const &iRun, edm::EventSetup const &iES, typename T::RunContext const *iContext)
Definition: callAbilities.h:72
void streamEndLuminosityBlockSummary(M *iProd, edm::LuminosityBlock const &iLumi, edm::EventSetup const &iES) override final
impl::choose_unique_ptr< typename T::GlobalCache >::type m_global
static void produce(edm::LuminosityBlock &Lumi, edm::EventSetup const &iES, typename T::LuminosityBlockContext const *iRC)
static void produce(edm::LuminosityBlock &, edm::EventSetup const &, typename T::LuminosityBlockContext const *, typename T::LuminosityBlockSummaryCache const *)
void setupRun(M *iProd, RunIndex iIndex) override final
impl::choose_mutex< typename T::LuminosityBlockSummaryCache >::type m_lumiSummaryLock
static void prevalidate(ConfigurationDescriptions &descriptions)
static void streamEndRunSummary(B *iProd, edm::Run const &iRun, edm::EventSetup const &iES, typename T::RunSummaryCache *iCache)
const ProducingModuleAdaptor & operator=(const ProducingModuleAdaptor &)=delete
static void beginRun(edm::Run const &iRun, edm::EventSetup const &iES, typename T::GlobalCache const *iGC, std::shared_ptr< typename T::RunCache const > &oCache)
Definition: callAbilities.h:60
static void set(B *iProd, typename T::RunCache const *iCache)
Definition: callAbilities.h:68
void streamEndRunSummary(M *iProd, edm::Run const &iRun, edm::EventSetup const &iES) override final
impl::choose_mutex< typename T::RunSummaryCache >::type m_runSummaryLock
void doBeginRun(RunPrincipal const &rp, EventSetup const &c, ModuleCallingContext const *mcc) override final
static void beginLuminosityBlock(edm::LuminosityBlock const &Lumi, edm::EventSetup const &iES, typename T::LuminosityBlockContext const *iRC, std::shared_ptr< typename T::LuminosityBlockSummaryCache > &oCache)
static void produce(edm::Run &iRun, edm::EventSetup const &iES, typename T::RunContext const *iRC)
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
impl::choose_shared_vec< typename T::RunSummaryCache >::type m_runSummaries
void doBeginLuminosityBlock(LuminosityBlockPrincipal const &lbp, EventSetup const &c, ModuleCallingContext const *mcc) override final
static const std::string B
impl::choose_shared_vec< typename T::LuminosityBlockSummaryCache >::type m_lumiSummaries
static void set(B *iProd, typename T::LuminosityBlockCache const *iCache)
void doEndLuminosityBlock(LuminosityBlockPrincipal const &lbp, EventSetup const &c, ModuleCallingContext const *mcc) override final
CallGlobalLuminosityBlockSummary< T > MyGlobalLuminosityBlockSummary
static void endJob(typename T::GlobalCache *iCache)
Definition: callAbilities.h:42
static void streamEndLuminosityBlockSummary(B *iProd, edm::LuminosityBlock const &iLumi, edm::EventSetup const &iES, typename T::LuminosityBlockSummaryCache *iCache)
void setupLuminosityBlock(M *iProd, LuminosityBlockIndex iIndex) override final
CallEndLuminosityBlockProduce< T > MyEndLuminosityBlockProduce
static void globalEndRun(edm::Run const &iRun, edm::EventSetup const &iES, typename T::RunContext const *iContext, typename T::RunSummaryCache *iCache)
CallGlobalLuminosityBlock< T > MyGlobalLuminosityBlock
impl::choose_shared_vec< typename T::RunCache const >::type m_runs
std::vector< std::vector< double > > tmp
Definition: MVATrainer.cc:100
HLT enums.
ProducingModuleAdaptor(edm::ParameterSet const &iPSet)
CallBeginRunProduce< T > MyBeginRunProduce
CallGlobalRunSummary< T > MyGlobalRunSummary
static void fillDescriptions(ConfigurationDescriptions &descriptions)
static void produce(edm::Run &, edm::EventSetup const &, typename T::RunContext const *, typename T::RunSummaryCache const *)
impl::choose_shared_vec< typename T::LuminosityBlockCache const >::type m_lumis
std::vector< std::shared_ptr< T > > type
Definition: dummy_helpers.h:64
CallBeginLuminosityBlockProduce< T > MyBeginLuminosityBlockProduce
static void globalEndLuminosityBlock(edm::LuminosityBlock const &Lumi, edm::EventSetup const &iES, typename T::LuminosityBlockContext const *iContext, typename T::LuminosityBlockSummaryCache *iCache)
static void beginLuminosityBlock(edm::LuminosityBlock const &Lumi, edm::EventSetup const &iES, typename T::RunContext const *iRC, std::shared_ptr< typename T::LuminosityBlockCache const > &oCache)
void setConsumer(EDConsumerBase const *iConsumer)
Definition: Run.h:49
static void set(B *iProd, typename T::GlobalCache const *iCache)
Definition: callAbilities.h:38
Definition: Run.h:42