CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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 
30  namespace maker {
31  template<typename T> class ModuleHolderT;
32  }
33 
34  class EDProducer : public ProducerBase, public EDConsumerBase {
35  public:
36  template <typename T> friend class maker::ModuleHolderT;
37  template <typename T> friend class WorkerT;
39 
40  EDProducer ();
41  virtual ~EDProducer();
42 
43  static void fillDescriptions(ConfigurationDescriptions& descriptions);
44  static void prevalidate(ConfigurationDescriptions& descriptions);
45  static const std::string& baseType();
46 
47  // Warning: the returned moduleDescription will be invalid during construction
49 
50  private:
51  bool doEvent(EventPrincipal const& ep, EventSetup const& c,
52  ActivityRegistry* act,
53  ModuleCallingContext const* mcc);
55  void doBeginJob();
56  void doEndJob();
57  void doBeginRun(RunPrincipal const& rp, EventSetup const& c,
58  ModuleCallingContext const* mcc);
59  void doEndRun(RunPrincipal const& rp, EventSetup const& c,
60  ModuleCallingContext const* mcc);
62  ModuleCallingContext const* mcc);
64  ModuleCallingContext const* mcc);
68  void doPostForkReacquireResources(unsigned int iChildIndex, unsigned int iNumberOfChildren);
73  }
74 
75  std::string workerType() const {return "WorkerT<EDProducer>";}
76 
78  return resourceAcquirer_;
79  }
80 
81  virtual void produce(Event&, EventSetup const&) = 0;
82  virtual void beginJob() {}
83  virtual void endJob(){}
84 
85  virtual void beginRun(Run const& /* iR */, EventSetup const& /* iE */){}
86  virtual void endRun(Run const& /* iR */, EventSetup const& /* iE */){}
87  virtual void beginLuminosityBlock(LuminosityBlock const& /* iL */, EventSetup const& /* iE */){}
88  virtual void endLuminosityBlock(LuminosityBlock const& /* iL */, EventSetup const& /* iE */){}
89  virtual void respondToOpenInputFile(FileBlock const&) {}
90  virtual void respondToCloseInputFile(FileBlock const&) {}
91  virtual void preForkReleaseResources() {}
92  virtual void postForkReacquireResources(unsigned int /*iChildIndex*/, unsigned int /*iNumberOfChildren*/) {}
93 
95  moduleDescription_ = md;
96  }
98  std::vector<BranchID> previousParentage_;
101  };
102 }
103 
104 #endif
virtual void endJob()
Definition: EDProducer.h:83
virtual void beginRun(Run const &, EventSetup const &)
Definition: EDProducer.h:85
virtual void postForkReacquireResources(unsigned int, unsigned int)
Definition: EDProducer.h:92
void doPreallocate(PreallocationConfiguration const &)
Definition: EDProducer.h:54
void doEndRun(RunPrincipal const &rp, EventSetup const &c, ModuleCallingContext const *mcc)
Definition: EDProducer.cc:66
void doEndLuminosityBlock(LuminosityBlockPrincipal const &lbp, EventSetup const &c, ModuleCallingContext const *mcc)
Definition: EDProducer.cc:86
EDProducer ModuleType
Definition: EDProducer.h:38
static const std::string & baseType()
Definition: EDProducer.cc:130
void registerProducts(ProducerBase *, ProductRegistry *, ModuleDescription const &)
Definition: ProducerBase.cc:60
void doPostForkReacquireResources(unsigned int iChildIndex, unsigned int iNumberOfChildren)
Definition: EDProducer.cc:111
virtual void respondToCloseInputFile(FileBlock const &)
Definition: EDProducer.h:90
virtual void beginJob()
Definition: EDProducer.h:82
ParentageID previousParentageId_
Definition: EDProducer.h:100
void doRegisterThinnedAssociations(ProductRegistry const &, ThinnedAssociationsHelper &)
Definition: EDProducer.h:69
ModuleDescription const & moduleDescription() const
Definition: EDProducer.h:48
std::vector< BranchID > previousParentage_
Definition: EDProducer.h:98
bool doEvent(EventPrincipal const &ep, EventSetup const &c, ActivityRegistry *act, ModuleCallingContext const *mcc)
Definition: EDProducer.cc:31
void setModuleDescription(ModuleDescription const &md)
Definition: EDProducer.h:94
void doBeginJob()
Definition: EDProducer.cc:44
virtual void preForkReleaseResources()
Definition: EDProducer.h:91
void registerProductsAndCallbacks(EDProducer *module, ProductRegistry *reg)
Definition: EDProducer.h:71
void doPreForkReleaseResources()
Definition: EDProducer.cc:106
virtual void endLuminosityBlock(LuminosityBlock const &, EventSetup const &)
Definition: EDProducer.h:88
void doBeginLuminosityBlock(LuminosityBlockPrincipal const &lbp, EventSetup const &c, ModuleCallingContext const *mcc)
Definition: EDProducer.cc:76
static void prevalidate(ConfigurationDescriptions &descriptions)
Definition: EDProducer.cc:123
ModuleDescription moduleDescription_
Definition: EDProducer.h:97
std::string workerType() const
Definition: EDProducer.h:75
static void fillDescriptions(ConfigurationDescriptions &descriptions)
Definition: EDProducer.cc:116
virtual void endRun(Run const &, EventSetup const &)
Definition: EDProducer.h:86
virtual void beginLuminosityBlock(LuminosityBlock const &, EventSetup const &)
Definition: EDProducer.h:87
void doRespondToOpenInputFile(FileBlock const &fb)
Definition: EDProducer.cc:96
void doBeginRun(RunPrincipal const &rp, EventSetup const &c, ModuleCallingContext const *mcc)
Definition: EDProducer.cc:56
SharedResourcesAcquirer resourceAcquirer_
Definition: EDProducer.h:99
SharedResourcesAcquirer & sharedResourcesAcquirer()
Definition: EDProducer.h:77
virtual void respondToOpenInputFile(FileBlock const &)
Definition: EDProducer.h:89
Definition: vlib.h:208
void doRespondToCloseInputFile(FileBlock const &fb)
Definition: EDProducer.cc:101
Definition: Run.h:42
virtual ~EDProducer()
Definition: EDProducer.cc:28
virtual void produce(Event &, EventSetup const &)=0