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 {
34  namespace stream {
35 
36  template<typename T, typename M, typename B>
37  class ProducingModuleAdaptor : public B
38  {
39 
40  public:
42  m_pset(&iPSet)
43  {
44  m_runs.resize(1);
45  m_lumis.resize(1);
46  m_runSummaries.resize(1);
47  m_lumiSummaries.resize(1);
48  typename T::GlobalCache const* dummy=nullptr;
49  m_global.reset( impl::makeGlobal<T>(iPSet,dummy).release());
50  }
52  }
53 
54  static void fillDescriptions(ConfigurationDescriptions& descriptions) {
55  T::fillDescriptions(descriptions);
56  }
57  static void prevalidate(ConfigurationDescriptions& descriptions) {
58  T::prevalidate(descriptions);
59  }
60 
61 
62  private:
72 
73  void setupStreamModules() override final {
74  this->createStreamModules([this] () -> M* {
75  auto tmp = impl::makeStreamModule<T>(*m_pset,m_global.get());
76  MyGlobal::set(tmp,m_global.get());
77  return tmp;
78  });
79  m_pset= nullptr;
80  }
81 
82  void doEndJob() override final {
84  }
85  void setupRun(M* iProd, RunIndex iIndex) override final {
86  MyGlobalRun::set(iProd, m_runs[iIndex].get());
87  }
88  void streamEndRunSummary(M* iProd,
89  edm::Run const& iRun,
90  edm::EventSetup const& iES) override final {
91  auto s = m_runSummaries[iRun.index()].get();
92  std::lock_guard<decltype(m_runSummaryLock)> guard(m_runSummaryLock);
94  }
95 
96  void setupLuminosityBlock(M* iProd, LuminosityBlockIndex iIndex) override final
97  {
98  MyGlobalLuminosityBlock::set(iProd, m_lumis[iIndex].get());
99  }
101  edm::LuminosityBlock const& iLumi,
102  edm::EventSetup const& iES) override final {
103  auto s = m_lumiSummaries[iLumi.index()].get();
104  std::lock_guard<decltype(m_lumiSummaryLock)> guard(m_lumiSummaryLock);
106  }
107 
108  void doBeginRun(RunPrincipal const& rp,
109  EventSetup const& c,
110  ModuleCallingContext const* mcc) override final {
112  Run r(rp, this->moduleDescription(), mcc);
113  r.setConsumer(this->consumer());
114  Run const& cnstR = r;
115  RunIndex ri = rp.index();
116  MyGlobalRun::beginRun(cnstR,c,m_global.get(),m_runs[ri]);
117  typename T::RunContext rc(m_runs[ri].get(),m_global.get());
119  if(T::HasAbility::kBeginRunProducer) {
121  this->commit(r);
122  }
123  }
124  }
125  void doEndRun(RunPrincipal const& rp,
126  EventSetup const& c,
127  ModuleCallingContext const* mcc) override final
128  {
130 
131  Run r(rp, this->moduleDescription(), mcc);
132  r.setConsumer(this->consumer());
133 
134  RunIndex ri = rp.index();
135  typename T::RunContext rc(m_runs[ri].get(),m_global.get());
136  if(T::HasAbility::kEndRunProducer) {
137  MyEndRunProduce::produce(r,c,&rc,m_runSummaries[ri].get());
138  this->commit(r);
139  }
141  MyGlobalRun::endRun(r,c,&rc);
142  }
143  }
144 
146  ModuleCallingContext const* mcc) override final
147  {
148  if(T::HasAbility::kLuminosityBlockCache or T::HasAbility::kLuminosityBlockSummaryCache or T::HasAbility::kBeginLuminosityBlockProducer) {
149  LuminosityBlock lb(lbp, this->moduleDescription(), mcc);
150  lb.setConsumer(this->consumer());
151  LuminosityBlock const& cnstLb = lb;
152  LuminosityBlockIndex li = lbp.index();
153  RunIndex ri = lbp.runPrincipal().index();
154  typename T::RunContext rc(m_runs[ri].get(),m_global.get());
156  typename T::LuminosityBlockContext lc(m_lumis[li].get(),m_runs[ri].get(),m_global.get());
158  if(T::HasAbility::kBeginLuminosityBlockProducer) {
160  this->commit(lb);
161  }
162  }
163 
164  }
166  EventSetup const& c,
167  ModuleCallingContext const* mcc) override final {
168  if(T::HasAbility::kLuminosityBlockCache or T::HasAbility::kLuminosityBlockSummaryCache or T::HasAbility::kEndLuminosityBlockProducer) {
169 
170  LuminosityBlock lb(lbp, this->moduleDescription(), mcc);
171  lb.setConsumer(this->consumer());
172 
173  LuminosityBlockIndex li = lbp.index();
174  RunIndex ri = lbp.runPrincipal().index();
175  typename T::LuminosityBlockContext lc(m_lumis[li].get(),m_runs[ri].get(),m_global.get());
176  if(T::HasAbility::kEndLuminosityBlockProducer) {
178  this->commit(lb);
179  }
182  }
183  }
184 
185  ProducingModuleAdaptor(const ProducingModuleAdaptor&) = delete; // stop default
186 
187  const ProducingModuleAdaptor& operator=(const ProducingModuleAdaptor&) = delete; // stop default
188 
189  // ---------- member data --------------------------------
198  };
199  }
200 }
201 
202 #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:71
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:59
static void set(B *iProd, typename T::RunCache const *iCache)
Definition: callAbilities.h:67
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
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:41
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:37
Definition: Run.h:42