CMS 3D CMS Logo

EDProducer.h

Go to the documentation of this file.
00001 #ifndef FWCore_Framework_EDProducer_h
00002 #define FWCore_Framework_EDProducer_h
00003 
00004 /*----------------------------------------------------------------------
00005   
00006 EDProducer: The base class of "modules" whose main purpose is to insert new
00007 EDProducts into an Event.
00008 
00009 $Id: EDProducer.h,v 1.24 2008/06/24 23:25:11 wmtan Exp $
00010 
00011 ----------------------------------------------------------------------*/
00012 
00013 #include "FWCore/Framework/interface/ProducerBase.h"
00014 #include "FWCore/Framework/interface/Frameworkfwd.h"
00015 #include "FWCore/Framework/src/WorkerT.h"
00016 #include "DataFormats/Provenance/interface/ModuleDescription.h"
00017 #include "FWCore/ParameterSet/interface/ParameterSetfwd.h"
00018 
00019 namespace edm {
00020   class EDProducer : public ProducerBase {
00021   public:
00022     template <typename T> friend class WorkerT;
00023     typedef EDProducer ModuleType;
00024     typedef WorkerT<EDProducer> WorkerType;
00025 
00026     EDProducer ();
00027     virtual ~EDProducer();
00028 
00029     static void fillDescription(edm::ParameterSetDescription&);
00030     
00031   protected:
00032     // The returned pointer will be null unless the this is currently
00033     // executing its event loop function ('produce').
00034     CurrentProcessingContext const* currentContext() const;
00035 
00036   private:
00037     bool doEvent(EventPrincipal& ep, EventSetup const& c,
00038                    CurrentProcessingContext const* cpcp);
00039     void doBeginJob(EventSetup const&);
00040     void doEndJob();
00041     bool doBeginRun(RunPrincipal & rp, EventSetup const& c,
00042                    CurrentProcessingContext const* cpc);
00043     bool doEndRun(RunPrincipal & rp, EventSetup const& c,
00044                    CurrentProcessingContext const* cpc);
00045     bool doBeginLuminosityBlock(LuminosityBlockPrincipal & lbp, EventSetup const& c,
00046                    CurrentProcessingContext const* cpc);
00047     bool doEndLuminosityBlock(LuminosityBlockPrincipal & lbp, EventSetup const& c,
00048                    CurrentProcessingContext const* cpc);
00049     void doRespondToOpenInputFile(FileBlock const& fb);
00050     void doRespondToCloseInputFile(FileBlock const& fb);
00051     void doRespondToOpenOutputFiles(FileBlock const& fb);
00052     void doRespondToCloseOutputFiles(FileBlock const& fb);
00053     void registerAnyProducts(boost::shared_ptr<EDProducer>& module, ProductRegistry *reg) {
00054       registerProducts(module, reg, moduleDescription_);
00055     }
00056 
00057     std::string workerType() const {return "WorkerT<EDProducer>";}
00058 
00059     virtual void produce(Event &, EventSetup const&) = 0;
00060     virtual void beginJob(EventSetup const&){}
00061     virtual void endJob(){}
00062     virtual void beginRun(Run &, EventSetup const&){}
00063     virtual void endRun(Run &, EventSetup const&){}
00064     virtual void beginLuminosityBlock(LuminosityBlock &, EventSetup const&){}
00065     virtual void endLuminosityBlock(LuminosityBlock &, EventSetup const&){}
00066     virtual void respondToOpenInputFile(FileBlock const& fb) {}
00067     virtual void respondToCloseInputFile(FileBlock const& fb) {}
00068     virtual void respondToOpenOutputFiles(FileBlock const& fb) {}
00069     virtual void respondToCloseOutputFiles(FileBlock const& fb) {}
00070 
00071     void setModuleDescription(ModuleDescription const& md) {
00072       moduleDescription_ = md;
00073     }
00074     ModuleDescription moduleDescription_;
00075     CurrentProcessingContext const* current_context_;
00076   };
00077 }
00078 
00079 #endif

Generated on Tue Jun 9 17:35:28 2009 for CMSSW by  doxygen 1.5.4