CMS 3D CMS Logo

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>, ModuleDescription const&, ExceptionToActionTable const* actions);
36 
37  ~WorkerT() override;
38 
39  void setModule(std::shared_ptr<T> iModule) {
40  module_ = iModule;
41  resetModuleDescription(&(module_->moduleDescription()));
42  }
43 
44  Types moduleType() const override;
45 
46  bool wantsGlobalRuns() const final;
48  bool wantsStreamRuns() const final;
50 
53 
54  void updateLookup(BranchType iBranchType, ProductResolverIndexHelper const&) final;
55  void updateLookup(eventsetup::ESRecordsToProxyIndices const&) final;
56  void resolvePutIndicies(
57  BranchType iBranchType,
58  std::unordered_multimap<std::string, std::tuple<TypeID const*, const char*, edm::ProductResolverIndex>> const&
59  iIndicies) final;
60 
61  template <typename D>
63  template <typename D>
65  template <typename D>
68  template <typename D>
71  template <typename D>
74  template <typename D>
77 
78  protected:
79  T& module() { return *module_; }
80  T const& module() const { return *module_; }
81 
82  private:
83  bool implDo(EventPrincipal const& ep, EventSetupImpl const& c, ModuleCallingContext const* mcc) override;
84 
85  void itemsToGetForSelection(std::vector<ProductResolverIndexAndSkipBit>&) const final;
86  bool implNeedToRunSelection() const final;
87 
91  WaitingTaskWithArenaHolder& holder) final;
92 
96  RunPrincipal const& rp,
98  ModuleCallingContext const* mcc) override;
99  bool implDoStreamEnd(StreamID id,
100  RunPrincipal const& rp,
102  ModuleCallingContext const* mcc) override;
106  ModuleCallingContext const* mcc) override;
107  bool implDoStreamBegin(StreamID id,
110  ModuleCallingContext const* mcc) override;
111  bool implDoStreamEnd(StreamID id,
114  ModuleCallingContext const* mcc) override;
117  ModuleCallingContext const* mcc) override;
118  void implBeginJob() override;
119  void implEndJob() override;
120  void implBeginStream(StreamID) override;
121  void implEndStream(StreamID) override;
125  std::string workerType() const override;
126  TaskQueueAdaptor serializeRunModule() override;
127 
129  std::vector<ModuleDescription const*>& modules,
130  ProductRegistry const& preg,
131  std::map<std::string, ModuleDescription const*> const& labelsToDesc) const override {
132  module_->modulesWhoseProductsAreConsumed(modules, preg, labelsToDesc, module_->moduleDescription().processName());
133  }
134 
136  module_->convertCurrentProcessAlias(processName);
137  }
138 
139  std::vector<ConsumesInfo> consumesInfo() const override { return module_->consumesInfo(); }
140 
141  void itemsToGet(BranchType branchType, std::vector<ProductResolverIndexAndSkipBit>& indexes) const override {
142  module_->itemsToGet(branchType, indexes);
143  }
144 
145  void itemsMayGet(BranchType branchType, std::vector<ProductResolverIndexAndSkipBit>& indexes) const override {
146  module_->itemsMayGet(branchType, indexes);
147  }
148 
149  std::vector<ProductResolverIndexAndSkipBit> const& itemsToGetFrom(BranchType iType) const final {
150  return module_->itemsToGetFrom(iType);
151  }
152 
153  std::vector<ProductResolverIndex> const& itemsShouldPutInEvent() const override;
154 
156  ModuleCallingContext const& iModuleCallingContext,
157  Principal const& iPrincipal) const override {
158  module_->preActionBeforeRunEventAsync(iTask, iModuleCallingContext, iPrincipal);
159  }
160 
161  bool hasAcquire() const override { return module_->hasAcquire(); }
162 
163  bool hasAccumulator() const override { return module_->hasAccumulator(); }
164 
166  };
167 
168 } // namespace edm
169 
170 #endif
edm::WorkerT::implDoEnd
bool implDoEnd(RunPrincipal const &rp, EventSetupImpl const &c, ModuleCallingContext const *mcc) override
Definition: WorkerT.cc:362
edm::StreamID
Definition: StreamID.h:30
edm::ProductResolverIndex
unsigned int ProductResolverIndex
Definition: ProductResolverIndex.h:8
edm::WorkerT::globalLuminosityBlocksQueue
SerialTaskQueue * globalLuminosityBlocksQueue() final
Definition: WorkerT.cc:145
edm::WorkerT::updateLookup
void updateLookup(BranchType iBranchType, ProductResolverIndexHelper const &) final
Definition: WorkerT.cc:614
propagate_const.h
edm::EventSetupImpl
Definition: EventSetupImpl.h:44
modules
Definition: ZHLTMatchFilter.cc:17
edm::WorkerT::globalRunsQueue
SerialTaskQueue * globalRunsQueue() final
Definition: WorkerT.cc:141
edm
HLT enums.
Definition: AlignableModifier.h:19
edm::WorkerT::itemsToGetFrom
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom(BranchType iType) const final
Definition: WorkerT.h:149
edm::Worker::resetModuleDescription
void resetModuleDescription(ModuleDescription const *)
Definition: Worker.cc:277
edm::WorkerT::implDoStreamEnd
bool implDoStreamEnd(StreamID id, RunPrincipal const &rp, EventSetupImpl const &c, ModuleCallingContext const *mcc) override
Definition: WorkerT.cc:349
edm::LuminosityBlockPrincipal
Definition: LuminosityBlockPrincipal.h:31
edm::WorkerT::implDoBegin
bool implDoBegin(RunPrincipal const &rp, EventSetupImpl const &c, ModuleCallingContext const *mcc) override
Definition: WorkerT.cc:314
edm::WorkerT::convertCurrentProcessAlias
void convertCurrentProcessAlias(std::string const &processName) override
Definition: WorkerT.h:135
edm::Principal
Definition: Principal.h:57
edm::SerialTaskQueue
Definition: SerialTaskQueue.h:67
edm::WorkerT
Definition: Frameworkfwd.h:54
edm::ProductResolverIndexHelper
Definition: ProductResolverIndexHelper.h:89
edm::WorkerT::callWorkerStreamEnd
void callWorkerStreamEnd(D, StreamID id, RunPrincipal const &rp, EventSetupImpl const &c, ModuleCallingContext const *mcc)
Definition: WorkerT.cc:330
watchdog.const
const
Definition: watchdog.py:83
edm::WorkerT::workerType
std::string workerType() const override
Definition: WorkerT.cc:425
edm::WorkerT::itemsToGet
void itemsToGet(BranchType branchType, std::vector< ProductResolverIndexAndSkipBit > &indexes) const override
Definition: WorkerT.h:141
edm::BranchType
BranchType
Definition: BranchType.h:11
edm::ModuleDescription
Definition: ModuleDescription.h:21
edm::WorkerT::implDoStreamBegin
bool implDoStreamBegin(StreamID id, RunPrincipal const &rp, EventSetupImpl const &c, ModuleCallingContext const *mcc) override
Definition: WorkerT.cc:336
edm::WorkerT::hasAcquire
bool hasAcquire() const override
Definition: WorkerT.h:161
edm::ProductRegistry
Definition: ProductRegistry.h:34
edm::FileBlock
Definition: FileBlock.h:20
edm::WorkerT::setModule
void setModule(std::shared_ptr< T > iModule)
Definition: WorkerT.h:39
edm::WorkerT::implNeedToRunSelection
bool implNeedToRunSelection() const final
Definition: WorkerT.cc:251
edm::WaitingTaskWithArenaHolder
Definition: WaitingTaskWithArenaHolder.h:31
edm::propagate_const
Definition: propagate_const.h:32
edm::WorkerT::wantsStreamLuminosityBlocks
bool wantsStreamLuminosityBlocks() const final
Definition: WorkerT.cc:136
edm::WorkerT::consumesInfo
std::vector< ConsumesInfo > consumesInfo() const override
Definition: WorkerT.h:139
edm::WorkerT::module_
edm::propagate_const< std::shared_ptr< T > > module_
Definition: WorkerT.h:165
edm::EventPrincipal
Definition: EventPrincipal.h:46
edm::WorkerT::callWorkerStreamBegin
void callWorkerStreamBegin(D, StreamID id, RunPrincipal const &rp, EventSetupImpl const &c, ModuleCallingContext const *mcc)
Definition: WorkerT.cc:323
edm::WorkerT::resolvePutIndicies
void resolvePutIndicies(BranchType iBranchType, std::unordered_multimap< std::string, std::tuple< TypeID const *, const char *, edm::ProductResolverIndex >> const &iIndicies) final
Definition: WorkerT.cc:672
edm::WorkerT::ModuleType
T ModuleType
Definition: WorkerT.h:33
edm::WorkerT::wantsGlobalRuns
bool wantsGlobalRuns() const final
Definition: WorkerT.cc:121
edm::WorkerT::moduleType
Types moduleType() const override
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
edm::WorkerT::WorkerType
WorkerT< T > WorkerType
Definition: WorkerT.h:34
edm::WorkerT::implRegisterThinnedAssociations
void implRegisterThinnedAssociations(ProductRegistry const &, ThinnedAssociationsHelper &) override
Definition: WorkerT.cc:476
edm::WorkerT::implEndStream
void implEndStream(StreamID) override
Definition: WorkerT.cc:459
edm::ThinnedAssociationsHelper
Definition: ThinnedAssociationsHelper.h:35
edm::WorkerT::itemsShouldPutInEvent
std::vector< ProductResolverIndex > const & itemsShouldPutInEvent() const override
Definition: WorkerT.cc:680
ESRecordsToProxyIndices
edm::WorkerT::callWorkerBeginStream
void callWorkerBeginStream(D, StreamID)
Definition: WorkerT.cc:441
edm::WorkerT::module
T const & module() const
Definition: WorkerT.h:80
svgfig.template
def template(fileName, svg, replaceme="REPLACEME")
Definition: svgfig.py:521
edm::ExceptionToActionTable
Definition: ExceptionActions.h:16
HltBtagPostValidation_cff.c
c
Definition: HltBtagPostValidation_cff.py:31
module
Definition: vlib.h:198
edm::WorkerT::wantsStreamRuns
bool wantsStreamRuns() const final
Definition: WorkerT.cc:131
edm::WorkerT::itemsToGetForSelection
void itemsToGetForSelection(std::vector< ProductResolverIndexAndSkipBit > &) const final
Definition: WorkerT.cc:262
SimL1EmulatorRepack_CalouGT_cff.processName
processName
Definition: SimL1EmulatorRepack_CalouGT_cff.py:17
Types
Definition: Types.py:1
edm::WorkerT::implBeginJob
void implBeginJob() override
Definition: WorkerT.cc:430
edm::WorkerT::implRespondToOpenInputFile
void implRespondToOpenInputFile(FileBlock const &fb) override
Definition: WorkerT.cc:466
edm::WorkerT::wantsGlobalLuminosityBlocks
bool wantsGlobalLuminosityBlocks() const final
Definition: WorkerT.cc:126
funct::D
DecomposeProduct< arg, typename Div::arg > D
Definition: Factorize.h:141
edm::WaitingTask
Definition: WaitingTask.h:36
WorkerParams.h
edm::TypeID
Definition: TypeID.h:22
edm::WorkerT::implDo
bool implDo(EventPrincipal const &ep, EventSetupImpl const &c, ModuleCallingContext const *mcc) override
Definition: WorkerT.cc:207
std
Definition: JetResolutionObject.h:76
edm::WorkerT::implDoPrePrefetchSelection
bool implDoPrePrefetchSelection(StreamID id, EventPrincipal const &ep, ModuleCallingContext const *mcc) override
Definition: WorkerT.cc:256
Frameworkfwd.h
T
long double T
Definition: Basic3DVectorLD.h:48
edm::WorkerT::serializeRunModule
TaskQueueAdaptor serializeRunModule() override
Definition: WorkerT.cc:482
Worker.h
edm::WorkerT::callWorkerEndStream
void callWorkerEndStream(D, StreamID)
Definition: WorkerT.cc:454
edm::WorkerT::preActionBeforeRunEventAsync
void preActionBeforeRunEventAsync(WaitingTask *iTask, ModuleCallingContext const &iModuleCallingContext, Principal const &iPrincipal) const override
Definition: WorkerT.h:155
edm::WorkerT::implDoAcquire
void implDoAcquire(EventPrincipal const &ep, EventSetupImpl const &c, ModuleCallingContext const *mcc, WaitingTaskWithArenaHolder &holder) final
Definition: WorkerT.cc:213
edm::WorkerT::implBeginStream
void implBeginStream(StreamID) override
Definition: WorkerT.cc:446
edm::WorkerT::hasAccumulator
bool hasAccumulator() const override
Definition: WorkerT.h:163
actions
roAction_t actions[nactions]
Definition: GenABIO.cc:181
genParticles_cff.map
map
Definition: genParticles_cff.py:11
edm::RunPrincipal
Definition: RunPrincipal.h:34
ConsumesInfo.h
edm::WorkerT::itemsMayGet
void itemsMayGet(BranchType branchType, std::vector< ProductResolverIndexAndSkipBit > &indexes) const override
Definition: WorkerT.h:145
edm::WorkerT::implRespondToCloseInputFile
void implRespondToCloseInputFile(FileBlock const &fb) override
Definition: WorkerT.cc:471
edm::WorkerT::WorkerT
WorkerT(std::shared_ptr< T >, ModuleDescription const &, ExceptionToActionTable const *actions)
Definition: WorkerT.cc:112
edm::WorkerT::modulesWhoseProductsAreConsumed
void modulesWhoseProductsAreConsumed(std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc) const override
Definition: WorkerT.h:128
SiStripBadComponentsDQMServiceTemplate_cfg.ep
ep
Definition: SiStripBadComponentsDQMServiceTemplate_cfg.py:86
benchmark_cfg.fb
fb
Definition: benchmark_cfg.py:14
edm::WorkerT::~WorkerT
~WorkerT() override
Definition: WorkerT.cc:118
edm::WorkerT::implEndJob
void implEndJob() override
Definition: WorkerT.cc:435
edm::ModuleCallingContext
Definition: ModuleCallingContext.h:29