CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
EDAnalyzerAdaptor.h
Go to the documentation of this file.
1 #ifndef FWCore_Framework_stream_EDAnalyzerAdaptor_h
2 #define FWCore_Framework_stream_EDAnalyzerAdaptor_h
3 // -*- C++ -*-
4 //
5 // Package: FWCore/Framework
6 // Class : EDAnalyzerAdaptor
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
33 
34 // forward declarations
35 
36 namespace edm {
37  namespace stream {
38 
39  template<typename ABase, typename ModType> struct BaseToAdaptor;
40 
41  template<typename T> class EDAnalyzerAdaptor;
42  template<typename ModType> struct BaseToAdaptor<EDAnalyzerAdaptorBase,ModType> {
44  };
45 
46  template<typename T>
48  {
49 
50  public:
52  m_pset(&iPSet)
53  {
54  m_runs.resize(1);
55  m_lumis.resize(1);
56  m_runSummaries.resize(1);
57  m_lumiSummaries.resize(1);
58  typename T::GlobalCache const* dummy=nullptr;
59  m_global.reset( impl::makeGlobal<T>(iPSet,dummy).release());
60  }
62  }
63 
64  static void fillDescriptions(ConfigurationDescriptions& descriptions) {
65  T::fillDescriptions(descriptions);
66  }
67  static void prevalidate(ConfigurationDescriptions& descriptions) {
68  T::prevalidate(descriptions);
69  }
70 
71 
72  private:
78 
79  void setupStreamModules() override final {
80  this->createStreamModules([this] () -> EDAnalyzerBase* {
81  auto tmp = impl::makeStreamModule<T>(*m_pset,m_global.get());
82  MyGlobal::set(tmp,m_global.get());
83  return tmp;
84  });
85  m_pset= nullptr;
86  }
87 
88  void doEndJob() override final {
90  }
91  void setupRun(EDAnalyzerBase* iProd, RunIndex iIndex) override final {
92  MyGlobalRun::set(iProd, m_runs[iIndex].get());
93  }
95  edm::Run const& iRun,
96  edm::EventSetup const& iES) override final {
97  auto s = m_runSummaries[iRun.index()].get();
99  }
100 
101  void setupLuminosityBlock(EDAnalyzerBase* iProd, LuminosityBlockIndex iIndex) override final
102  {
103  MyGlobalLuminosityBlock::set(iProd, m_lumis[iIndex].get());
104  }
106  edm::LuminosityBlock const& iLumi,
107  edm::EventSetup const& iES) override final {
108  auto s = m_lumiSummaries[iLumi.index()].get();
110  }
111 
112  void doBeginRun(RunPrincipal const& rp,
113  EventSetup const& c,
114  ModuleCallingContext const* mcc) override final {
116  Run r(rp, moduleDescription(), mcc);
117  r.setConsumer(consumer());
118  Run const& cnstR = r;
119  RunIndex ri = rp.index();
120  MyGlobalRun::beginRun(cnstR,c,m_global.get(),m_runs[ri]);
121  typename T::RunContext rc(m_runs[ri].get(),m_global.get());
123  }
124  }
125  void doEndRun(RunPrincipal const& rp,
126  EventSetup const& c,
127  ModuleCallingContext const* mcc) override final
128  {
130 
131  Run r(rp, moduleDescription(), mcc);
132  r.setConsumer(consumer());
133 
134  RunIndex ri = rp.index();
135  typename T::RunContext rc(m_runs[ri].get(),m_global.get());
137  MyGlobalRun::endRun(r,c,&rc);
138  }
139  }
140 
142  EventSetup const& c,
143  ModuleCallingContext const* mcc) override final
144  {
146  LuminosityBlock lb(lbp, moduleDescription(), mcc);
147  lb.setConsumer(consumer());
148  LuminosityBlock const& cnstLb = lb;
149  LuminosityBlockIndex li = lbp.index();
150  RunIndex ri = lbp.runPrincipal().index();
151  typename T::RunContext rc(m_runs[ri].get(),m_global.get());
153  typename T::LuminosityBlockContext lc(m_lumis[li].get(),m_runs[ri].get(),m_global.get());
155  }
156 
157  }
159  EventSetup const& c,
160  ModuleCallingContext const* mcc) override final {
162 
163  LuminosityBlock lb(lbp, moduleDescription(), mcc);
164  lb.setConsumer(consumer());
165 
166  LuminosityBlockIndex li = lbp.index();
167  RunIndex ri = lbp.runPrincipal().index();
168  typename T::LuminosityBlockContext lc(m_lumis[li].get(),m_runs[ri].get(),m_global.get());
171  }
172  }
173 
174  EDAnalyzerAdaptor(const EDAnalyzerAdaptor&); // stop default
175 
176  const EDAnalyzerAdaptor& operator=(const EDAnalyzerAdaptor&); // stop default
177 
178  // ---------- member data --------------------------------
185  };
186  }
187 
188  template<>
190  {
192  public:
193  template<typename ModType>
194  static std::unique_ptr<Base> makeModule(ParameterSet const& pset) {
195  typedef typename stream::BaseToAdaptor<Base,ModType>::Type Adaptor;
196  auto module = std::make_unique<Adaptor>(pset);
197  return std::unique_ptr<Base>(module.release());
198  }
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)
impl::choose_shared_vec< typename T::RunCache const >::type m_runs
static void fillDescriptions(ConfigurationDescriptions &descriptions)
void setConsumer(EDConsumerBase const *iConsumer)
void doEndRun(RunPrincipal const &rp, EventSetup const &c, ModuleCallingContext const *mcc) overridefinal
static void endRun(edm::Run const &iRun, edm::EventSetup const &iES, typename T::RunContext const *iContext)
Definition: callAbilities.h:71
void doBeginLuminosityBlock(LuminosityBlockPrincipal const &lbp, EventSetup const &c, ModuleCallingContext const *mcc) overridefinal
void setupRun(EDAnalyzerBase *iProd, RunIndex iIndex) overridefinal
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::EventIDconst &, edm::Timestampconst & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
static std::unique_ptr< Base > makeModule(ParameterSet const &pset)
const EDConsumerBase * consumer() const
void streamEndLuminosityBlockSummary(EDAnalyzerBase *iProd, edm::LuminosityBlock const &iLumi, edm::EventSetup const &iES) overridefinal
static void streamEndRunSummary(B *iProd, edm::Run const &iRun, edm::EventSetup const &iES, typename T::RunSummaryCache *iCache)
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
impl::choose_unique_ptr< typename T::GlobalCache >::type m_global
static void beginLuminosityBlock(edm::LuminosityBlock const &Lumi, edm::EventSetup const &iES, typename T::LuminosityBlockContext const *iRC, std::shared_ptr< typename T::LuminosityBlockSummaryCache > &oCache)
impl::choose_shared_vec< typename T::RunSummaryCache >::type m_runSummaries
CallGlobalLuminosityBlock< T > MyGlobalLuminosityBlock
impl::choose_shared_vec< typename T::LuminosityBlockSummaryCache >::type m_lumiSummaries
EDAnalyzerAdaptor(edm::ParameterSet const &iPSet)
void setupLuminosityBlock(EDAnalyzerBase *iProd, LuminosityBlockIndex iIndex) overridefinal
static void set(B *iProd, typename T::LuminosityBlockCache const *iCache)
const ModuleDescription & moduleDescription() const
void doBeginRun(RunPrincipal const &rp, EventSetup const &c, ModuleCallingContext const *mcc) overridefinal
impl::choose_shared_vec< typename T::LuminosityBlockCache const >::type m_lumis
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)
CallGlobalLuminosityBlockSummary< T > MyGlobalLuminosityBlockSummary
static void globalEndRun(edm::Run const &iRun, edm::EventSetup const &iES, typename T::RunContext const *iContext, typename T::RunSummaryCache *iCache)
void streamEndRunSummary(EDAnalyzerBase *iProd, edm::Run const &iRun, edm::EventSetup const &iES) overridefinal
std::vector< std::vector< double > > tmp
Definition: MVATrainer.cc:100
std::vector< std::shared_ptr< T > > type
Definition: dummy_helpers.h:56
void setupStreamModules() overridefinal
const EDAnalyzerAdaptor & operator=(const EDAnalyzerAdaptor &)
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
CallGlobalRunSummary< T > MyGlobalRunSummary
Definition: vlib.h:208
static void set(B *iProd, typename T::GlobalCache const *iCache)
Definition: callAbilities.h:37
Definition: Run.h:42
void doEndLuminosityBlock(LuminosityBlockPrincipal const &lbp, EventSetup const &c, ModuleCallingContext const *mcc) overridefinal
static void prevalidate(ConfigurationDescriptions &descriptions)