File indexing completed on 2023-03-17 11:02:07
0001 #ifndef FWCore_Framework_TransitionInfoTypes_h
0002 #define FWCore_Framework_TransitionInfoTypes_h
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016 #include <memory>
0017 #include <vector>
0018
0019 namespace edm {
0020 class EventPrincipal;
0021 class EventSetupImpl;
0022 class LuminosityBlockPrincipal;
0023 class ProcessBlockPrincipal;
0024 class RunPrincipal;
0025
0026 class EventTransitionInfo {
0027 public:
0028 EventTransitionInfo() {}
0029
0030 EventTransitionInfo(EventPrincipal& iPrincipal, EventSetupImpl const& iEventSetupImpl)
0031 : eventPrincipal_(&iPrincipal), eventSetupImpl_(&iEventSetupImpl) {}
0032
0033 EventPrincipal& principal() { return *eventPrincipal_; }
0034 EventPrincipal const& principal() const { return *eventPrincipal_; }
0035 EventSetupImpl const& eventSetupImpl() const { return *eventSetupImpl_; }
0036
0037 private:
0038 EventPrincipal* eventPrincipal_ = nullptr;
0039 EventSetupImpl const* eventSetupImpl_ = nullptr;
0040 };
0041
0042 class LumiTransitionInfo {
0043 public:
0044 LumiTransitionInfo() {}
0045
0046 LumiTransitionInfo(LuminosityBlockPrincipal& iPrincipal,
0047 EventSetupImpl const& iEventSetupImpl,
0048 std::vector<std::shared_ptr<const EventSetupImpl>> const* iEventSetupImpls = nullptr)
0049 : luminosityBlockPrincipal_(&iPrincipal),
0050 eventSetupImpl_(&iEventSetupImpl),
0051 eventSetupImpls_(iEventSetupImpls) {}
0052
0053 LuminosityBlockPrincipal& principal() { return *luminosityBlockPrincipal_; }
0054 LuminosityBlockPrincipal const& principal() const { return *luminosityBlockPrincipal_; }
0055 EventSetupImpl const& eventSetupImpl() const { return *eventSetupImpl_; }
0056 std::vector<std::shared_ptr<const EventSetupImpl>> const* eventSetupImpls() const { return eventSetupImpls_; }
0057
0058 private:
0059 LuminosityBlockPrincipal* luminosityBlockPrincipal_ = nullptr;
0060 EventSetupImpl const* eventSetupImpl_ = nullptr;
0061
0062
0063
0064
0065 std::vector<std::shared_ptr<const EventSetupImpl>> const* eventSetupImpls_ = nullptr;
0066 };
0067
0068 class RunTransitionInfo {
0069 public:
0070 RunTransitionInfo() {}
0071
0072 RunTransitionInfo(RunPrincipal& iPrincipal,
0073 EventSetupImpl const& iEventSetupImpl,
0074 std::vector<std::shared_ptr<const EventSetupImpl>> const* iEventSetupImpls = nullptr)
0075 : runPrincipal_(&iPrincipal), eventSetupImpl_(&iEventSetupImpl), eventSetupImpls_(iEventSetupImpls) {}
0076
0077 RunPrincipal& principal() { return *runPrincipal_; }
0078 RunPrincipal const& principal() const { return *runPrincipal_; }
0079 EventSetupImpl const& eventSetupImpl() const { return *eventSetupImpl_; }
0080 std::vector<std::shared_ptr<const EventSetupImpl>> const* eventSetupImpls() const { return eventSetupImpls_; }
0081
0082 private:
0083 RunPrincipal* runPrincipal_ = nullptr;
0084 EventSetupImpl const* eventSetupImpl_ = nullptr;
0085
0086
0087
0088
0089 std::vector<std::shared_ptr<const EventSetupImpl>> const* eventSetupImpls_ = nullptr;
0090 };
0091
0092 class ProcessBlockTransitionInfo {
0093 public:
0094 ProcessBlockTransitionInfo() {}
0095
0096 ProcessBlockTransitionInfo(ProcessBlockPrincipal& iPrincipal) : processBlockPrincipal_(&iPrincipal) {}
0097
0098 ProcessBlockPrincipal& principal() { return *processBlockPrincipal_; }
0099 ProcessBlockPrincipal const& principal() const { return *processBlockPrincipal_; }
0100
0101 private:
0102 ProcessBlockPrincipal* processBlockPrincipal_ = nullptr;
0103 };
0104
0105 };
0106
0107 #endif