Go to the documentation of this file.00001 #ifndef FWCore_Framework_EDAnalyzer_h
00002 #define FWCore_Framework_EDAnalyzer_h
00003
00004 #include "FWCore/Framework/interface/Frameworkfwd.h"
00005 #include "DataFormats/Provenance/interface/ModuleDescription.h"
00006 #include "FWCore/ParameterSet/interface/ParameterSetfwd.h"
00007
00008 #include <string>
00009
00010
00011
00012 namespace edm {
00013
00014 class EDAnalyzer {
00015 public:
00016 template <typename T> friend class WorkerT;
00017 typedef EDAnalyzer ModuleType;
00018 typedef WorkerT<EDAnalyzer> WorkerType;
00019
00020 EDAnalyzer() : moduleDescription_(), current_context_(0) {}
00021 virtual ~EDAnalyzer();
00022
00023 std::string workerType() const {return "WorkerT<EDAnalyzer>";}
00024
00025 static void fillDescriptions(ConfigurationDescriptions& descriptions);
00026 static const std::string& baseType();
00027 static void prevalidate(ConfigurationDescriptions& );
00028
00029
00030
00031 protected:
00032
00033
00034 CurrentProcessingContext const* currentContext() const;
00035
00036 private:
00037 bool doEvent(EventPrincipal const& ep, EventSetup const& c,
00038 CurrentProcessingContext const* cpc);
00039 void doBeginJob();
00040 void doEndJob();
00041 bool doBeginRun(RunPrincipal const& rp, EventSetup const& c,
00042 CurrentProcessingContext const* cpc);
00043 bool doEndRun(RunPrincipal const& rp, EventSetup const& c,
00044 CurrentProcessingContext const* cpc);
00045 bool doBeginLuminosityBlock(LuminosityBlockPrincipal const& lbp, EventSetup const& c,
00046 CurrentProcessingContext const* cpc);
00047 bool doEndLuminosityBlock(LuminosityBlockPrincipal const& 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 doPreForkReleaseResources();
00054 void doPostForkReacquireResources(unsigned int iChildIndex, unsigned int iNumberOfChildren);
00055 void registerAnyProducts(EDAnalyzer const*, ProductRegistry const*) {}
00056
00057 virtual void analyze(Event const&, EventSetup const&) = 0;
00058 virtual void beginJob(){}
00059 virtual void endJob(){}
00060 virtual void beginRun(Run const&, EventSetup const&){}
00061 virtual void endRun(Run const&, EventSetup const&){}
00062 virtual void beginLuminosityBlock(LuminosityBlock const&, EventSetup const&){}
00063 virtual void endLuminosityBlock(LuminosityBlock const&, EventSetup const&){}
00064 virtual void respondToOpenInputFile(FileBlock const&) {}
00065 virtual void respondToCloseInputFile(FileBlock const&) {}
00066 virtual void respondToOpenOutputFiles(FileBlock const&) {}
00067 virtual void respondToCloseOutputFiles(FileBlock const&) {}
00068 virtual void preForkReleaseResources() {}
00069 virtual void postForkReacquireResources(unsigned int , unsigned int ) {}
00070
00071 void setModuleDescription(ModuleDescription const& md) {
00072 moduleDescription_ = md;
00073 }
00074 ModuleDescription moduleDescription_;
00075
00076 CurrentProcessingContext const* current_context_;
00077 };
00078 }
00079
00080 #endif