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 
17 
18 #include <string>
19 #include <vector>
20 
21 namespace edm {
22  class EDProducer : public ProducerBase, public EDConsumerBase {
23  public:
24  template <typename T> friend class WorkerT;
27 
28  EDProducer ();
29  virtual ~EDProducer();
30 
31  static void fillDescriptions(ConfigurationDescriptions& descriptions);
32  static void prevalidate(ConfigurationDescriptions& descriptions);
33  static const std::string& baseType();
34 
35  protected:
36  // The returned pointer will be null unless the this is currently
37  // executing its event loop function ('produce').
39 
40  private:
41  bool doEvent(EventPrincipal& ep, EventSetup const& c,
42  CurrentProcessingContext const* cpcp);
43  void doBeginJob();
44  void doEndJob();
45  void doBeginRun(RunPrincipal& rp, EventSetup const& c,
46  CurrentProcessingContext const* cpc);
47  void doEndRun(RunPrincipal& rp, EventSetup const& c,
48  CurrentProcessingContext const* cpc);
50  CurrentProcessingContext const* cpc);
52  CurrentProcessingContext const* cpc);
58  void doPostForkReacquireResources(unsigned int iChildIndex, unsigned int iNumberOfChildren);
61  }
62 
63  std::string workerType() const {return "WorkerT<EDProducer>";}
64 
65  virtual void produce(Event&, EventSetup const&) = 0;
66  virtual void beginJob() {}
67  virtual void endJob(){}
68 
69  virtual void beginRun(Run const&iR, EventSetup const&iE){}
70  virtual void endRun(Run const& iR, EventSetup const& iE){}
71  virtual void beginLuminosityBlock(LuminosityBlock const& iL, EventSetup const& iE){}
72  virtual void endLuminosityBlock(LuminosityBlock const& iL, EventSetup const& iE){}
73  virtual void respondToOpenInputFile(FileBlock const&) {}
74  virtual void respondToCloseInputFile(FileBlock const&) {}
75  virtual void respondToOpenOutputFiles(FileBlock const&) {}
76  virtual void respondToCloseOutputFiles(FileBlock const&) {}
77  virtual void preForkReleaseResources() {}
78  virtual void postForkReacquireResources(unsigned int /*iChildIndex*/, unsigned int /*iNumberOfChildren*/) {}
79 
81  moduleDescription_ = md;
82  }
85  std::vector<BranchID> previousParentage_;
87  };
88 }
89 
90 #endif
virtual void endJob()
Definition: EDProducer.h:67
bool doEvent(EventPrincipal &ep, EventSetup const &c, CurrentProcessingContext const *cpcp)
Definition: EDProducer.cc:27
virtual void postForkReacquireResources(unsigned int, unsigned int)
Definition: EDProducer.h:78
void doBeginLuminosityBlock(LuminosityBlockPrincipal &lbp, EventSetup const &c, CurrentProcessingContext const *cpc)
Definition: EDProducer.cc:70
EDProducer ModuleType
Definition: EDProducer.h:25
virtual void endRun(Run const &iR, EventSetup const &iE)
Definition: EDProducer.h:70
static const std::string & baseType()
Definition: EDProducer.cc:141
void registerProducts(ProducerBase *, ProductRegistry *, ModuleDescription const &)
Definition: ProducerBase.cc:60
void doPostForkReacquireResources(unsigned int iChildIndex, unsigned int iNumberOfChildren)
Definition: EDProducer.cc:117
virtual void respondToCloseInputFile(FileBlock const &)
Definition: EDProducer.h:74
virtual void beginJob()
Definition: EDProducer.h:66
ParentageID previousParentageId_
Definition: EDProducer.h:86
void doBeginRun(RunPrincipal &rp, EventSetup const &c, CurrentProcessingContext const *cpc)
Definition: EDProducer.cc:48
std::vector< BranchID > previousParentage_
Definition: EDProducer.h:85
void setModuleDescription(ModuleDescription const &md)
Definition: EDProducer.h:80
virtual void beginRun(Run const &iR, EventSetup const &iE)
Definition: EDProducer.h:69
void doBeginJob()
Definition: EDProducer.cc:38
virtual void preForkReleaseResources()
Definition: EDProducer.h:77
void registerProductsAndCallbacks(EDProducer *module, ProductRegistry *reg)
Definition: EDProducer.h:59
virtual void respondToCloseOutputFiles(FileBlock const &)
Definition: EDProducer.h:76
void doPreForkReleaseResources()
Definition: EDProducer.cc:112
void doEndLuminosityBlock(LuminosityBlockPrincipal &lbp, EventSetup const &c, CurrentProcessingContext const *cpc)
Definition: EDProducer.cc:81
void doRespondToOpenOutputFiles(FileBlock const &fb)
Definition: EDProducer.cc:102
static void prevalidate(ConfigurationDescriptions &descriptions)
Definition: EDProducer.cc:134
void doRespondToCloseOutputFiles(FileBlock const &fb)
Definition: EDProducer.cc:107
CurrentProcessingContext const * currentContext() const
Definition: EDProducer.cc:122
ModuleDescription moduleDescription_
Definition: EDProducer.h:83
std::string workerType() const
Definition: EDProducer.h:63
void doEndRun(RunPrincipal &rp, EventSetup const &c, CurrentProcessingContext const *cpc)
Definition: EDProducer.cc:59
static void fillDescriptions(ConfigurationDescriptions &descriptions)
Definition: EDProducer.cc:127
void doRespondToOpenInputFile(FileBlock const &fb)
Definition: EDProducer.cc:92
CurrentProcessingContext const * current_context_
Definition: EDProducer.h:84
virtual void respondToOpenOutputFiles(FileBlock const &)
Definition: EDProducer.h:75
WorkerT< EDProducer > WorkerType
Definition: EDProducer.h:26
virtual void respondToOpenInputFile(FileBlock const &)
Definition: EDProducer.h:73
Definition: vlib.h:209
virtual void beginLuminosityBlock(LuminosityBlock const &iL, EventSetup const &iE)
Definition: EDProducer.h:71
virtual void endLuminosityBlock(LuminosityBlock const &iL, EventSetup const &iE)
Definition: EDProducer.h:72
void doRespondToCloseInputFile(FileBlock const &fb)
Definition: EDProducer.cc:97
Definition: Run.h:36
virtual ~EDProducer()
Definition: EDProducer.cc:24
virtual void produce(Event &, EventSetup const &)=0