CMS 3D CMS Logo

EDProducer.h
Go to the documentation of this file.
1 #ifndef FWCore_Framework_EDProducer_h
2 #define FWCore_Framework_EDProducer_h
3 
4 /*----------------------------------------------------------------------
5 
6 EDProducer: The base class of "modules" whose main purpose is to insert new
7 EDProducts into an Event.
8 
9 
10 ----------------------------------------------------------------------*/
11 
18 
19 #include <string>
20 #include <vector>
21 
22 namespace edm {
23 
24  class ModuleCallingContext;
25  class PreallocationConfiguration;
26  class ActivityRegistry;
27  class ProductRegistry;
28  class ThinnedAssociationsHelper;
29  class WaitingTask;
30 
31  namespace maker {
32  template <typename T>
33  class ModuleHolderT;
34  }
35 
36  class EDProducer : public ProducerBase, public EDConsumerBase {
37  public:
38  template <typename T>
39  friend class maker::ModuleHolderT;
40  template <typename T>
41  friend class WorkerT;
43 
44  EDProducer();
45  ~EDProducer() override;
46 
47  static void fillDescriptions(ConfigurationDescriptions& descriptions);
48  static void prevalidate(ConfigurationDescriptions& descriptions);
49  static const std::string& baseType();
50 
51  // Warning: the returned moduleDescription will be invalid during construction
53 
54  static bool wantsGlobalRuns() { return true; }
55  static bool wantsGlobalLuminosityBlocks() { return true; }
56  static bool wantsStreamRuns() { return false; }
57  static bool wantsStreamLuminosityBlocks() { return false; };
58 
61 
62  private:
63  bool doEvent(EventPrincipal const& ep,
64  EventSetupImpl const& c,
65  ActivityRegistry* act,
66  ModuleCallingContext const* mcc);
67  //Needed by WorkerT but not supported
69  ModuleCallingContext const& iModuleCallingContext,
70  Principal const& iPrincipal) const {}
71 
73  void doBeginJob();
74  void doEndJob();
75  void doBeginRun(RunPrincipal const& rp, EventSetupImpl const& c, ModuleCallingContext const* mcc);
76  void doEndRun(RunPrincipal const& rp, EventSetupImpl const& c, ModuleCallingContext const* mcc);
78  EventSetupImpl const& c,
79  ModuleCallingContext const* mcc);
81  EventSetupImpl const& c,
82  ModuleCallingContext const* mcc);
88  }
89 
90  std::string workerType() const { return "WorkerT<EDProducer>"; }
91 
93 
94  virtual void produce(Event&, EventSetup const&) = 0;
95  virtual void beginJob() {}
96  virtual void endJob() {}
97 
98  virtual void beginRun(Run const& /* iR */, EventSetup const& /* iE */) {}
99  virtual void endRun(Run const& /* iR */, EventSetup const& /* iE */) {}
100  virtual void beginLuminosityBlock(LuminosityBlock const& /* iL */, EventSetup const& /* iE */) {}
101  virtual void endLuminosityBlock(LuminosityBlock const& /* iL */, EventSetup const& /* iE */) {}
102  virtual void respondToOpenInputFile(FileBlock const&) {}
103  virtual void respondToCloseInputFile(FileBlock const&) {}
104 
105  bool hasAcquire() const { return false; }
106  bool hasAccumulator() const { return false; }
107 
110  std::vector<BranchID> previousParentage_;
115  };
116 } // namespace edm
117 
118 #endif
edm::SharedResourcesAcquirer
Definition: SharedResourcesAcquirer.h:34
edm::EDProducer::globalLuminosityBlocksQueue
SerialTaskQueue * globalLuminosityBlocksQueue()
Definition: EDProducer.h:60
edm::EDProducer::wantsStreamRuns
static bool wantsStreamRuns()
Definition: EDProducer.h:56
edm::EDProducer::doPreallocate
void doPreallocate(PreallocationConfiguration const &)
Definition: EDProducer.h:72
ActivityRegistry
edm::EventSetupImpl
Definition: EventSetupImpl.h:44
edm::LuminosityBlock
Definition: LuminosityBlock.h:50
edm::Run
Definition: Run.h:45
edm
HLT enums.
Definition: AlignableModifier.h:19
edm::EDProducer::ModuleType
EDProducer ModuleType
Definition: EDProducer.h:42
edm::LuminosityBlockPrincipal
Definition: LuminosityBlockPrincipal.h:31
edm::Principal
Definition: Principal.h:57
edm::EDProducer::previousParentage_
std::vector< BranchID > previousParentage_
Definition: EDProducer.h:110
edm::EDProducer::setModuleDescription
void setModuleDescription(ModuleDescription const &md)
Definition: EDProducer.h:108
edm::SerialTaskQueue
Definition: SerialTaskQueue.h:67
edm::EDProducer::wantsStreamLuminosityBlocks
static bool wantsStreamLuminosityBlocks()
Definition: EDProducer.h:57
edm::WorkerT
Definition: Frameworkfwd.h:54
edm::EDProducer::doEndRun
void doEndRun(RunPrincipal const &rp, EventSetupImpl const &c, ModuleCallingContext const *mcc)
Definition: EDProducer.cc:59
edm::EDProducer::doBeginLuminosityBlock
void doBeginLuminosityBlock(LuminosityBlockPrincipal const &lbp, EventSetupImpl const &c, ModuleCallingContext const *mcc)
Definition: EDProducer.cc:68
edm::EDProducer::~EDProducer
~EDProducer() override
Definition: EDProducer.cc:24
edm::ModuleDescription
Definition: ModuleDescription.h:21
edm::EDProducer::hasAccumulator
bool hasAccumulator() const
Definition: EDProducer.h:106
edm::ProductRegistry
Definition: ProductRegistry.h:34
ModuleDescription.h
edm::EDProducer::doBeginRun
void doBeginRun(RunPrincipal const &rp, EventSetupImpl const &c, ModuleCallingContext const *mcc)
Definition: EDProducer.cc:49
edm::FileBlock
Definition: FileBlock.h:20
edm::EDProducer::preActionBeforeRunEventAsync
void preActionBeforeRunEventAsync(WaitingTask *iTask, ModuleCallingContext const &iModuleCallingContext, Principal const &iPrincipal) const
Definition: EDProducer.h:68
SharedResourcesAcquirer.h
edm::EDProducer::previousParentageId_
ParentageID previousParentageId_
Definition: EDProducer.h:114
edm::EDProducer::wantsGlobalLuminosityBlocks
static bool wantsGlobalLuminosityBlocks()
Definition: EDProducer.h:55
edm::EDProducer::doRegisterThinnedAssociations
void doRegisterThinnedAssociations(ProductRegistry const &, ThinnedAssociationsHelper &)
Definition: EDProducer.h:85
edm::EDConsumerBase
Definition: EDConsumerBase.h:62
edm::EDProducer::baseType
static const std::string & baseType()
Definition: EDProducer.cc:110
edm::EDProducer::luminosityBlockQueue_
SerialTaskQueue luminosityBlockQueue_
Definition: EDProducer.h:113
edm::EDProducer::doEndJob
void doEndJob()
Definition: EDProducer.cc:47
edm::EventPrincipal
Definition: EventPrincipal.h:46
WaitingTask
edm::EDProducer::respondToCloseInputFile
virtual void respondToCloseInputFile(FileBlock const &)
Definition: EDProducer.h:103
edm::EDProducer::doBeginJob
void doBeginJob()
Definition: EDProducer.cc:41
edm::EDProducer::hasAcquire
bool hasAcquire() const
Definition: EDProducer.h:105
edm::ActivityRegistry
Definition: ActivityRegistry.h:132
edm::EDProducer::beginJob
virtual void beginJob()
Definition: EDProducer.h:95
edm::Hash< ParentageType >
edm::maker::ModuleHolderT
Definition: EDAnalyzer.h:26
ProducerBase.h
edm::ConfigurationDescriptions
Definition: ConfigurationDescriptions.h:28
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
edm::EDProducer::prevalidate
static void prevalidate(ConfigurationDescriptions &descriptions)
Definition: EDProducer.cc:106
edm::EDProducer::registerProductsAndCallbacks
void registerProductsAndCallbacks(EDProducer *module, ProductRegistry *reg)
Definition: EDProducer.h:86
edm::ThinnedAssociationsHelper
Definition: ThinnedAssociationsHelper.h:35
EDConsumerBase.h
edm::EDProducer::workerType
std::string workerType() const
Definition: EDProducer.h:90
edm::EDProducer::runQueue_
SerialTaskQueue runQueue_
Definition: EDProducer.h:112
edm::EDProducer::wantsGlobalRuns
static bool wantsGlobalRuns()
Definition: EDProducer.h:54
edm::EDProducer::fillDescriptions
static void fillDescriptions(ConfigurationDescriptions &descriptions)
Definition: EDProducer.cc:100
edm::EDProducer::beginLuminosityBlock
virtual void beginLuminosityBlock(LuminosityBlock const &, EventSetup const &)
Definition: EDProducer.h:100
edm::EventSetup
Definition: EventSetup.h:57
HltBtagPostValidation_cff.c
c
Definition: HltBtagPostValidation_cff.py:31
edm::EDProducer::endLuminosityBlock
virtual void endLuminosityBlock(LuminosityBlock const &, EventSetup const &)
Definition: EDProducer.h:101
module
Definition: vlib.h:198
edm::EDProducer::EDProducer
EDProducer()
Definition: EDProducer.cc:20
edm::EDProducer::endRun
virtual void endRun(Run const &, EventSetup const &)
Definition: EDProducer.h:99
edm::EDProducer::doEndLuminosityBlock
void doEndLuminosityBlock(LuminosityBlockPrincipal const &lbp, EventSetupImpl const &c, ModuleCallingContext const *mcc)
Definition: EDProducer.cc:82
edm::PreallocationConfiguration
Definition: PreallocationConfiguration.h:27
edm::EDProducer::doRespondToOpenInputFile
void doRespondToOpenInputFile(FileBlock const &fb)
Definition: EDProducer.cc:96
edm::WaitingTask
Definition: WaitingTask.h:36
edm::EDProducer::doEvent
bool doEvent(EventPrincipal const &ep, EventSetupImpl const &c, ActivityRegistry *act, ModuleCallingContext const *mcc)
Definition: EDProducer.cc:26
Frameworkfwd.h
edm::EDProducer::moduleDescription_
ModuleDescription moduleDescription_
Definition: EDProducer.h:109
ParameterSetfwd.h
edm::EDProducer::moduleDescription
ModuleDescription const & moduleDescription() const
Definition: EDProducer.h:52
edm::EDProducer
Definition: EDProducer.h:36
edm::EDProducer::sharedResourcesAcquirer
SharedResourcesAcquirer & sharedResourcesAcquirer()
Definition: EDProducer.h:92
edm::EDProducer::respondToOpenInputFile
virtual void respondToOpenInputFile(FileBlock const &)
Definition: EDProducer.h:102
edm::EDProducer::beginRun
virtual void beginRun(Run const &, EventSetup const &)
Definition: EDProducer.h:98
edm::RunPrincipal
Definition: RunPrincipal.h:34
edm::ProducerBase
Definition: ProducerBase.h:65
edm::ProducerBase::registerProducts
void registerProducts(ProducerBase *, ProductRegistry *, ModuleDescription const &)
Definition: ProducerBase.cc:57
edm::EDProducer::resourceAcquirer_
SharedResourcesAcquirer resourceAcquirer_
Definition: EDProducer.h:111
edm::Event
Definition: Event.h:73
edm::EDProducer::globalRunsQueue
SerialTaskQueue * globalRunsQueue()
Definition: EDProducer.h:59
edm::EDProducer::produce
virtual void produce(Event &, EventSetup const &)=0
SiStripBadComponentsDQMServiceTemplate_cfg.ep
ep
Definition: SiStripBadComponentsDQMServiceTemplate_cfg.py:86
edm::EDProducer::endJob
virtual void endJob()
Definition: EDProducer.h:96
benchmark_cfg.fb
fb
Definition: benchmark_cfg.py:14
edm::ModuleCallingContext
Definition: ModuleCallingContext.h:29
edm::EDProducer::doRespondToCloseInputFile
void doRespondToCloseInputFile(FileBlock const &fb)
Definition: EDProducer.cc:98