File indexing completed on 2024-04-06 12:12:00
0001 #ifndef FWCore_Framework_stream_EDAnalyzerBase_h
0002 #define FWCore_Framework_stream_EDAnalyzerBase_h
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024 #include "FWCore/Framework/interface/EDConsumerBase.h"
0025 #include "FWCore/Framework/interface/Frameworkfwd.h"
0026 #include "FWCore/Framework/interface/stream/EDAnalyzerAdaptor.h"
0027 #include "DataFormats/Provenance/interface/ModuleDescription.h"
0028 #include "FWCore/ParameterSet/interface/ParameterSetfwd.h"
0029
0030
0031 namespace edm {
0032 namespace stream {
0033 class EDAnalyzerAdaptorBase;
0034
0035 class EDAnalyzerBase : public edm::EDConsumerBase {
0036
0037 friend class EDAnalyzerAdaptorBase;
0038
0039 public:
0040 typedef EDAnalyzerAdaptorBase ModuleType;
0041
0042 EDAnalyzerBase();
0043 EDAnalyzerBase(const EDAnalyzerBase&) = delete;
0044 const EDAnalyzerBase& operator=(const EDAnalyzerBase&) = delete;
0045 ~EDAnalyzerBase() override;
0046
0047 static void fillDescriptions(ConfigurationDescriptions& descriptions);
0048 static void prevalidate(ConfigurationDescriptions& descriptions);
0049 static const std::string& baseType();
0050
0051
0052 ModuleDescription const& moduleDescription() const { return *moduleDescriptionPtr_; }
0053
0054 void callWhenNewProductsRegistered(std::function<void(BranchDescription const&)> const& func);
0055
0056 private:
0057 void registerProductsAndCallbacks(EDAnalyzerBase const*, ProductRegistry* reg);
0058
0059 virtual void beginStream(StreamID) {}
0060 virtual void beginRun(edm::Run const&, edm::EventSetup const&) {}
0061 virtual void beginLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) {}
0062 virtual void analyze(Event const&, EventSetup const&) = 0;
0063 virtual void endLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) {}
0064 virtual void endRun(edm::Run const&, edm::EventSetup const&) {}
0065 virtual void endStream() {}
0066
0067 void setModuleDescriptionPtr(ModuleDescription const* iDesc) { moduleDescriptionPtr_ = iDesc; }
0068
0069 std::function<void(BranchDescription const&)> callWhenNewProductsRegistered_;
0070 ModuleDescription const* moduleDescriptionPtr_;
0071 };
0072
0073 }
0074 }
0075
0076 #endif