CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
WorkerT.h
Go to the documentation of this file.
1 #ifndef FWCore_Framework_WorkerT_h
2 #define FWCore_Framework_WorkerT_h
3 
4 /*----------------------------------------------------------------------
5 
6 WorkerT: Code common to all workers.
7 
8 ----------------------------------------------------------------------*/
9 
15 
16 #include <map>
17 #include <memory>
18 #include <string>
19 #include <vector>
20 
21 namespace edm {
22 
23  class ModuleCallingContext;
24  class ModuleDescription;
25  class ProductResolverIndexAndSkipBit;
26  class ProductRegistry;
27  class ThinnedAssociationsHelper;
28  class WaitingTaskWithArenaHolder;
29 
30  template<typename T>
31  class WorkerT : public Worker {
32  public:
33  typedef T ModuleType;
35  WorkerT(std::shared_ptr<T>,
36  ModuleDescription const&,
38 
39  ~WorkerT() override;
40 
41  void setModule( std::shared_ptr<T> iModule) {
42  module_ = iModule;
43  resetModuleDescription(&(module_->moduleDescription()));
44  }
45 
46  Types moduleType() const override;
47 
48  bool wantsGlobalRuns() const final;
49  bool wantsGlobalLuminosityBlocks() const final;
50  bool wantsStreamRuns() const final;
51  bool wantsStreamLuminosityBlocks() const final;
52 
53 
54  void updateLookup(BranchType iBranchType,
55  ProductResolverIndexHelper const&) override;
56  void resolvePutIndicies(BranchType iBranchType,
57  std::unordered_multimap<std::string, std::tuple<TypeID const*, const char*, edm::ProductResolverIndex>> const& iIndicies) override;
58 
59  template<typename D>
61  template<typename D>
63  template<typename D>
64  void callWorkerStreamBegin(D, StreamID id, RunPrincipal const& rp,
65  EventSetup const& c,
66  ModuleCallingContext const* mcc);
67  template<typename D>
68  void callWorkerStreamEnd(D, StreamID id, RunPrincipal const& rp,
69  EventSetup const& c,
70  ModuleCallingContext const* mcc);
71  template<typename D>
73  EventSetup const& c,
74  ModuleCallingContext const* mcc);
75  template<typename D>
77  EventSetup const& c,
78  ModuleCallingContext const* mcc);
79 
80  protected:
81  T& module() {return *module_;}
82  T const& module() const {return *module_;}
83 
84  private:
85  bool implDo(EventPrincipal const& ep, EventSetup const& c,
86  ModuleCallingContext const* mcc) override;
87 
88  void itemsToGetForSelection(std::vector<ProductResolverIndexAndSkipBit>&) const final;
89  bool implNeedToRunSelection() const final;
90 
91  void implDoAcquire(EventPrincipal const& ep, EventSetup const& c,
92  ModuleCallingContext const* mcc,
93  WaitingTaskWithArenaHolder& holder) final;
94 
96  EventPrincipal const& ep,
97  ModuleCallingContext const* mcc) override;
98  bool implDoBegin(RunPrincipal const& rp, EventSetup const& c,
99  ModuleCallingContext const* mcc) override;
100  bool implDoStreamBegin(StreamID id, RunPrincipal const& rp, EventSetup const& c,
101  ModuleCallingContext const* mcc) override;
102  bool implDoStreamEnd(StreamID id, RunPrincipal const& rp, EventSetup const& c,
103  ModuleCallingContext const* mcc) override;
104  bool implDoEnd(RunPrincipal const& rp, EventSetup const& c,
105  ModuleCallingContext const* mcc) override;
106  bool implDoBegin(LuminosityBlockPrincipal const& lbp, EventSetup const& c,
107  ModuleCallingContext const* mcc) override;
108  bool implDoStreamBegin(StreamID id, LuminosityBlockPrincipal const& lbp, EventSetup const& c,
109  ModuleCallingContext const* mcc) override;
110  bool implDoStreamEnd(StreamID id, LuminosityBlockPrincipal const& lbp, EventSetup const& c,
111  ModuleCallingContext const* mcc) override;
112  bool implDoEnd(LuminosityBlockPrincipal const& lbp, EventSetup const& c,
113  ModuleCallingContext const* mcc) override;
114  void implBeginJob() override;
115  void implEndJob() override;
116  void implBeginStream(StreamID) override;
117  void implEndStream(StreamID) override;
118  void implRespondToOpenInputFile(FileBlock const& fb) override;
119  void implRespondToCloseInputFile(FileBlock const& fb) override;
121  std::string workerType() const override;
123 
124 
125  void modulesWhoseProductsAreConsumed(std::vector<ModuleDescription const*>& modules,
126  ProductRegistry const& preg,
127  std::map<std::string, ModuleDescription const*> const& labelsToDesc) const override {
128  module_->modulesWhoseProductsAreConsumed(modules, preg, labelsToDesc, module_->moduleDescription().processName());
129  }
130 
132  module_->convertCurrentProcessAlias(processName);
133  }
134 
135  std::vector<ConsumesInfo> consumesInfo() const override {
136  return module_->consumesInfo();
137  }
138 
139  void itemsToGet(BranchType branchType, std::vector<ProductResolverIndexAndSkipBit>& indexes) const override {
140  module_->itemsToGet(branchType, indexes);
141  }
142 
143  void itemsMayGet(BranchType branchType, std::vector<ProductResolverIndexAndSkipBit>& indexes) const override {
144  module_->itemsMayGet(branchType, indexes);
145  }
146 
147  std::vector<ProductResolverIndexAndSkipBit> const& itemsToGetFrom(BranchType iType) const final { return module_->itemsToGetFrom(iType); }
148 
149  std::vector<ProductResolverIndex> const& itemsShouldPutInEvent() const override;
150 
151  void preActionBeforeRunEventAsync(WaitingTask* iTask, ModuleCallingContext const& iModuleCallingContext, Principal const& iPrincipal) const override {
152  module_->preActionBeforeRunEventAsync(iTask,iModuleCallingContext,iPrincipal);
153  }
154 
155  bool hasAcquire() const override {
156  return module_->hasAcquire();
157  }
158 
160  };
161 
162 }
163 
164 #endif
bool implDoStreamEnd(StreamID id, RunPrincipal const &rp, EventSetup const &c, ModuleCallingContext const *mcc) override
Definition: WorkerT.cc:341
bool wantsStreamLuminosityBlocks() const final
Definition: WorkerT.cc:147
void resetModuleDescription(ModuleDescription const *)
Definition: Worker.cc:285
std::vector< ConsumesInfo > consumesInfo() const override
Definition: WorkerT.h:135
roAction_t actions[nactions]
Definition: GenABIO.cc:187
void callWorkerStreamEnd(D, StreamID id, RunPrincipal const &rp, EventSetup const &c, ModuleCallingContext const *mcc)
Definition: WorkerT.cc:319
void convertCurrentProcessAlias(std::string const &processName) override
Definition: WorkerT.h:131
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom(BranchType iType) const final
Definition: WorkerT.h:147
void implEndJob() override
Definition: WorkerT.cc:438
bool wantsGlobalRuns() const final
Definition: WorkerT.cc:132
void updateLookup(BranchType iBranchType, ProductResolverIndexHelper const &) override
Definition: WorkerT.cc:570
void itemsMayGet(BranchType branchType, std::vector< ProductResolverIndexAndSkipBit > &indexes) const override
Definition: WorkerT.h:143
T & module()
Definition: WorkerT.h:81
void setModule(std::shared_ptr< T > iModule)
Definition: WorkerT.h:41
bool implDoStreamBegin(StreamID id, RunPrincipal const &rp, EventSetup const &c, ModuleCallingContext const *mcc) override
Definition: WorkerT.cc:329
T const & module() const
Definition: WorkerT.h:82
bool implDo(EventPrincipal const &ep, EventSetup const &c, ModuleCallingContext const *mcc) override
Definition: WorkerT.cc:154
BranchType
Definition: BranchType.h:11
Types moduleType() const override
edm::propagate_const< std::shared_ptr< T > > module_
Definition: WorkerT.h:159
void implRespondToOpenInputFile(FileBlock const &fb) override
Definition: WorkerT.cc:477
bool implDoPrePrefetchSelection(StreamID id, EventPrincipal const &ep, ModuleCallingContext const *mcc) override
Definition: WorkerT.cc:211
void preActionBeforeRunEventAsync(WaitingTask *iTask, ModuleCallingContext const &iModuleCallingContext, Principal const &iPrincipal) const override
Definition: WorkerT.h:151
bool wantsGlobalLuminosityBlocks() const final
Definition: WorkerT.cc:137
void callWorkerEndStream(D, StreamID)
Definition: WorkerT.cc:460
bool hasAcquire() const override
Definition: WorkerT.h:155
void implBeginStream(StreamID) override
Definition: WorkerT.cc:451
Definition: Types.py:1
void modulesWhoseProductsAreConsumed(std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc) const override
Definition: WorkerT.h:125
TaskQueueAdaptor serializeRunModule() override
Definition: WorkerT.cc:498
void resolvePutIndicies(BranchType iBranchType, std::unordered_multimap< std::string, std::tuple< TypeID const *, const char *, edm::ProductResolverIndex >> const &iIndicies) override
Definition: WorkerT.cc:626
void callWorkerStreamBegin(D, StreamID id, RunPrincipal const &rp, EventSetup const &c, ModuleCallingContext const *mcc)
Definition: WorkerT.cc:310
bool implDoBegin(RunPrincipal const &rp, EventSetup const &c, ModuleCallingContext const *mcc) override
Definition: WorkerT.cc:302
~WorkerT() override
Definition: WorkerT.cc:127
T ModuleType
Definition: WorkerT.h:33
WorkerT< T > WorkerType
Definition: WorkerT.h:34
std::vector< ProductResolverIndex > const & itemsShouldPutInEvent() const override
Definition: WorkerT.cc:635
DecomposeProduct< arg, typename Div::arg > D
Definition: Factorize.h:151
bool implNeedToRunSelection() const final
Definition: WorkerT.cc:206
void implEndStream(StreamID) override
Definition: WorkerT.cc:467
void implBeginJob() override
Definition: WorkerT.cc:431
void implRespondToCloseInputFile(FileBlock const &fb) override
Definition: WorkerT.cc:484
void callWorkerBeginStream(D, StreamID)
Definition: WorkerT.cc:444
void implDoAcquire(EventPrincipal const &ep, EventSetup const &c, ModuleCallingContext const *mcc, WaitingTaskWithArenaHolder &holder) final
Definition: WorkerT.cc:162
HLT enums.
void itemsToGetForSelection(std::vector< ProductResolverIndexAndSkipBit > &) const final
Definition: WorkerT.cc:219
void implRegisterThinnedAssociations(ProductRegistry const &, ThinnedAssociationsHelper &) override
Definition: WorkerT.cc:491
bool implDoEnd(RunPrincipal const &rp, EventSetup const &c, ModuleCallingContext const *mcc) override
Definition: WorkerT.cc:353
bool wantsStreamRuns() const final
Definition: WorkerT.cc:142
long double T
std::string workerType() const override
Definition: WorkerT.cc:424
WorkerT(std::shared_ptr< T >, ModuleDescription const &, ExceptionToActionTable const *actions)
Definition: WorkerT.cc:120
void itemsToGet(BranchType branchType, std::vector< ProductResolverIndexAndSkipBit > &indexes) const override
Definition: WorkerT.h:139
def branchType(schema, name)
Definition: revisionDML.py:112