File indexing completed on 2025-06-17 01:30:19
0001 #ifndef FWCore_Framework_ScheduleItems_h
0002 #define FWCore_Framework_ScheduleItems_h
0003
0004 #include "FWCore/Framework/interface/Schedule.h"
0005 #include "FWCore/Common/interface/FWCoreCommonFwd.h"
0006 #include "FWCore/ServiceRegistry/interface/ServiceLegacy.h"
0007 #include "FWCore/ServiceRegistry/interface/ServiceToken.h"
0008 #include "FWCore/Utilities/interface/get_underlying_safe.h"
0009 #include "FWCore/Utilities/interface/propagate_const.h"
0010
0011 #include <memory>
0012 #include <vector>
0013
0014 namespace edm {
0015 class ExceptionToActionTable;
0016 class ActivityRegistry;
0017 class BranchIDListHelper;
0018 class ThinnedAssociationsHelper;
0019 struct CommonParams;
0020 class ParameterSet;
0021 class ProcessConfiguration;
0022 class ProcessContext;
0023 class ProductRegistry;
0024 class SignallingProductRegistryFiller;
0025 class StreamID;
0026 class PreallocationConfiguration;
0027 class ModuleTypeResolverMaker;
0028 namespace service {
0029 class TriggerNamesService;
0030 }
0031
0032 struct ScheduleItems {
0033 ScheduleItems();
0034
0035 ScheduleItems(ScheduleItems const&) = delete;
0036 ScheduleItems& operator=(ScheduleItems const&) = delete;
0037
0038 ServiceToken initServices(std::vector<ParameterSet>& servicePSets,
0039 ParameterSet& processPSet,
0040 ServiceToken const& iToken,
0041 serviceregistry::ServiceLegacy iLegacy);
0042
0043 ServiceToken addTNS(ParameterSet const& parameterSet, ServiceToken const& token);
0044
0045 std::shared_ptr<CommonParams> initMisc(ParameterSet& parameterSet);
0046
0047 std::unique_ptr<Schedule> initSchedule(ParameterSet& parameterSet,
0048 PreallocationConfiguration const& iAllocConfig,
0049 ProcessContext const*,
0050 ModuleTypeResolverMaker const*,
0051 ProcessBlockHelperBase& processBlockHelper);
0052
0053 class MadeModules {
0054 friend struct ScheduleItems;
0055 explicit MadeModules(std::unique_ptr<Schedule> iSched) : m_schedule(std::move(iSched)) {}
0056
0057 std::unique_ptr<Schedule> m_schedule;
0058
0059 public:
0060 MadeModules() = delete;
0061 };
0062
0063 MadeModules initModules(ParameterSet& parameterSet,
0064 service::TriggerNamesService const& tns,
0065 PreallocationConfiguration const& iAllocConfig,
0066 ProcessContext const*,
0067 ModuleTypeResolverMaker const* typeResolverMaker);
0068 std::unique_ptr<Schedule> finishSchedule(MadeModules,
0069 ParameterSet& parameterSet,
0070 service::TriggerNamesService const& tns,
0071 PreallocationConfiguration const& iAllocConfig,
0072 ProcessContext const*,
0073 ProcessBlockHelperBase& processBlockHelper);
0074
0075 std::shared_ptr<SignallingProductRegistryFiller const> preg() const { return get_underlying_safe(preg_); }
0076 std::shared_ptr<SignallingProductRegistryFiller>& preg() { return get_underlying_safe(preg_); }
0077 std::shared_ptr<BranchIDListHelper const> branchIDListHelper() const {
0078 return get_underlying_safe(branchIDListHelper_);
0079 }
0080 std::shared_ptr<BranchIDListHelper>& branchIDListHelper() { return get_underlying_safe(branchIDListHelper_); }
0081 std::shared_ptr<ThinnedAssociationsHelper const> thinnedAssociationsHelper() const {
0082 return get_underlying_safe(thinnedAssociationsHelper_);
0083 }
0084 std::shared_ptr<ThinnedAssociationsHelper>& thinnedAssociationsHelper() {
0085 return get_underlying_safe(thinnedAssociationsHelper_);
0086 }
0087 std::shared_ptr<ProcessConfiguration const> processConfiguration() const {
0088 return get_underlying_safe(processConfiguration_);
0089 }
0090 std::shared_ptr<ProcessConfiguration>& processConfiguration() { return get_underlying_safe(processConfiguration_); }
0091
0092 std::shared_ptr<ActivityRegistry> actReg_;
0093 edm::propagate_const<std::shared_ptr<SignallingProductRegistryFiller>> preg_;
0094 edm::propagate_const<std::shared_ptr<BranchIDListHelper>> branchIDListHelper_;
0095 edm::propagate_const<std::shared_ptr<ThinnedAssociationsHelper>> thinnedAssociationsHelper_;
0096 std::unique_ptr<ExceptionToActionTable const> act_table_;
0097 edm::propagate_const<std::shared_ptr<ProcessConfiguration>> processConfiguration_;
0098 };
0099 }
0100 #endif