File indexing completed on 2025-01-11 03:38:16
0001 #ifndef FWCore_Framework_global_OutputModuleBase_h
0002 #define FWCore_Framework_global_OutputModuleBase_h
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022 #include "FWCore/Framework/interface/OutputModuleCore.h"
0023
0024
0025 namespace edm {
0026
0027 namespace global {
0028
0029 class OutputModuleBase : public core::OutputModuleCore {
0030 public:
0031 template <typename U>
0032 friend class edm::maker::ModuleHolderT;
0033 template <typename T>
0034 friend class ::edm::WorkerT;
0035 template <typename T>
0036 friend class ::edm::OutputModuleCommunicatorT;
0037 typedef OutputModuleBase ModuleType;
0038
0039 explicit OutputModuleBase(ParameterSet const& pset);
0040
0041 OutputModuleBase(OutputModuleBase const&) = delete;
0042 OutputModuleBase& operator=(OutputModuleBase const&) = delete;
0043
0044
0045 bool wantsGlobalRuns() const noexcept { return true; }
0046 bool wantsGlobalLuminosityBlocks() const noexcept { return true; }
0047
0048 virtual bool wantsProcessBlocks() const noexcept = 0;
0049 virtual bool wantsInputProcessBlocks() const noexcept = 0;
0050 virtual bool wantsStreamRuns() const noexcept = 0;
0051 virtual bool wantsStreamLuminosityBlocks() const noexcept = 0;
0052
0053 protected:
0054 void doPreallocate(PreallocationConfiguration const&);
0055
0056 void doBeginJob();
0057
0058 void doBeginStream(StreamID id) { doBeginStream_(id); }
0059 void doEndStream(StreamID id) { doEndStream_(id); }
0060
0061 bool doEvent(EventTransitionInfo const&, ActivityRegistry*, ModuleCallingContext const*);
0062 void doAcquire(EventTransitionInfo const&, ActivityRegistry*, ModuleCallingContext const*, WaitingTaskHolder&&);
0063
0064 void preActionBeforeRunEventAsync(WaitingTaskHolder iTask,
0065 ModuleCallingContext const& iModuleCallingContext,
0066 Principal const& iPrincipal) const noexcept {}
0067
0068 private:
0069 std::string workerType() const { return "WorkerT<edm::global::OutputModuleBase>"; }
0070
0071 virtual void preallocStreams(unsigned int) {}
0072 virtual void preallocate(PreallocationConfiguration const&) {}
0073 virtual void doBeginStream_(StreamID) {}
0074 virtual void doEndStream_(StreamID) {}
0075 virtual void doStreamBeginRun_(StreamID, RunForOutput const&, EventSetup const&) {}
0076 virtual void doStreamEndRun_(StreamID, RunForOutput const&, EventSetup const&) {}
0077 virtual void doStreamEndRunSummary_(StreamID, RunForOutput const&, EventSetup const&) {}
0078 virtual void doStreamBeginLuminosityBlock_(StreamID, LuminosityBlockForOutput const&, EventSetup const&) {}
0079 virtual void doStreamEndLuminosityBlock_(StreamID, LuminosityBlockForOutput const&, EventSetup const&) {}
0080 virtual void doStreamEndLuminosityBlockSummary_(StreamID, LuminosityBlockForOutput const&, EventSetup const&) {}
0081
0082 virtual void doBeginRunSummary_(RunForOutput const&, EventSetup const&) {}
0083 virtual void doEndRunSummary_(RunForOutput const&, EventSetup const&) {}
0084 virtual void doBeginLuminosityBlockSummary_(LuminosityBlockForOutput const&, EventSetup const&) {}
0085 virtual void doEndLuminosityBlockSummary_(LuminosityBlockForOutput const&, EventSetup const&) {}
0086 virtual void doAcquire_(StreamID, EventForOutput const&, WaitingTaskHolder&&) {}
0087
0088 virtual bool hasAcquire() const noexcept { return false; }
0089 };
0090 }
0091 }
0092 #endif