CMS 3D CMS Logo

ScheduleItems.h
Go to the documentation of this file.
1 #ifndef FWCore_Framework_ScheduleItems_h
2 #define FWCore_Framework_ScheduleItems_h
3 
10 
11 #include <memory>
12 #include <vector>
13 
14 namespace edm {
15  class ExceptionToActionTable;
16  class ActivityRegistry;
17  class BranchIDListHelper;
18  class ThinnedAssociationsHelper;
19  struct CommonParams;
20  class SubProcess;
21  class ParameterSet;
22  class ProcessConfiguration;
23  class ProcessContext;
24  class ProductRegistry;
26  class StreamID;
27  class PreallocationConfiguration;
28  class SubProcessParentageHelper;
29  class ModuleTypeResolverMaker;
30  namespace service {
31  class TriggerNamesService;
32  }
33 
34  struct ScheduleItems {
35  ScheduleItems();
36 
38  SubProcess const& om,
39  SubProcessBlockHelper& subProcessBlockHelper,
40  ProcessBlockHelperBase const& parentProcessBlockHelper);
41 
42  ScheduleItems(ScheduleItems const&) = delete; // Disallow copying and moving
43  ScheduleItems& operator=(ScheduleItems const&) = delete; // Disallow copying and moving
44 
45  ServiceToken initServices(std::vector<ParameterSet>& servicePSets,
46  ParameterSet& processPSet,
47  ServiceToken const& iToken,
49  bool associate);
50 
52 
53  std::shared_ptr<CommonParams> initMisc(ParameterSet& parameterSet);
54 
55  std::unique_ptr<Schedule> initSchedule(ParameterSet& parameterSet,
56  bool hasSubprocesses,
57  PreallocationConfiguration const& iAllocConfig,
58  ProcessContext const*,
60  ProcessBlockHelperBase& processBlockHelper);
61 
62  class MadeModules {
63  friend struct ScheduleItems;
64  explicit MadeModules(std::unique_ptr<Schedule> iSched) : m_schedule(std::move(iSched)) {}
65 
66  std::unique_ptr<Schedule> m_schedule;
67 
68  public:
69  MadeModules() = delete;
70  };
71 
74  PreallocationConfiguration const& iAllocConfig,
75  ProcessContext const*,
76  ModuleTypeResolverMaker const* typeResolverMaker);
77  std::unique_ptr<Schedule> finishSchedule(MadeModules,
80  bool hasSubprocesses,
81  PreallocationConfiguration const& iAllocConfig,
82  ProcessContext const*,
83  ProcessBlockHelperBase& processBlockHelper);
84 
85  std::shared_ptr<SignallingProductRegistry const> preg() const { return get_underlying_safe(preg_); }
86  std::shared_ptr<SignallingProductRegistry>& preg() { return get_underlying_safe(preg_); }
87  std::shared_ptr<BranchIDListHelper const> branchIDListHelper() const {
89  }
90  std::shared_ptr<BranchIDListHelper>& branchIDListHelper() { return get_underlying_safe(branchIDListHelper_); }
91  std::shared_ptr<ThinnedAssociationsHelper const> thinnedAssociationsHelper() const {
93  }
94  std::shared_ptr<ThinnedAssociationsHelper>& thinnedAssociationsHelper() {
96  }
97  std::shared_ptr<SubProcessParentageHelper>& subProcessParentageHelper() {
99  }
100  std::shared_ptr<ProcessConfiguration const> processConfiguration() const {
102  }
103  std::shared_ptr<ProcessConfiguration>& processConfiguration() { return get_underlying_safe(processConfiguration_); }
104 
105  std::shared_ptr<ActivityRegistry> actReg_; // We do not use propagate_const because the registry itself is mutable.
110  std::unique_ptr<ExceptionToActionTable const> act_table_;
112  };
113 } // namespace edm
114 #endif
std::shared_ptr< ActivityRegistry > actReg_
std::shared_ptr< BranchIDListHelper const > branchIDListHelper() const
Definition: ScheduleItems.h:87
std::unique_ptr< Schedule > initSchedule(ParameterSet &parameterSet, bool hasSubprocesses, PreallocationConfiguration const &iAllocConfig, ProcessContext const *, ModuleTypeResolverMaker const *, ProcessBlockHelperBase &processBlockHelper)
std::unique_ptr< ExceptionToActionTable const > act_table_
edm::propagate_const< std::shared_ptr< SignallingProductRegistry > > preg_
edm::propagate_const< std::shared_ptr< ThinnedAssociationsHelper > > thinnedAssociationsHelper_
ScheduleItems & operator=(ScheduleItems const &)=delete
std::shared_ptr< SignallingProductRegistry > & preg()
Definition: ScheduleItems.h:86
constexpr std::shared_ptr< T > & get_underlying_safe(propagate_const< std::shared_ptr< T >> &iP)
ParameterSet const & parameterSet(StableProvenance const &provenance, ProcessHistory const &history)
Definition: Provenance.cc:11
MadeModules(std::unique_ptr< Schedule > iSched)
Definition: ScheduleItems.h:64
MadeModules initModules(ParameterSet &parameterSet, service::TriggerNamesService const &tns, PreallocationConfiguration const &iAllocConfig, ProcessContext const *, ModuleTypeResolverMaker const *typeResolverMaker)
std::shared_ptr< ProcessConfiguration const > processConfiguration() const
edm::propagate_const< std::shared_ptr< BranchIDListHelper > > branchIDListHelper_
std::shared_ptr< SignallingProductRegistry const > preg() const
Definition: ScheduleItems.h:85
std::shared_ptr< CommonParams > initMisc(ParameterSet &parameterSet)
std::shared_ptr< SubProcessParentageHelper > & subProcessParentageHelper()
Definition: ScheduleItems.h:97
std::shared_ptr< ProcessConfiguration > & processConfiguration()
edm::propagate_const< std::shared_ptr< ProcessConfiguration > > processConfiguration_
ServiceToken initServices(std::vector< ParameterSet > &servicePSets, ParameterSet &processPSet, ServiceToken const &iToken, serviceregistry::ServiceLegacy iLegacy, bool associate)
std::shared_ptr< ThinnedAssociationsHelper > & thinnedAssociationsHelper()
Definition: ScheduleItems.h:94
std::unique_ptr< Schedule > m_schedule
Definition: ScheduleItems.h:66
edm::propagate_const< std::shared_ptr< SubProcessParentageHelper > > subProcessParentageHelper_
ServiceToken addCPRandTNS(ParameterSet const &parameterSet, ServiceToken const &token)
std::shared_ptr< ThinnedAssociationsHelper const > thinnedAssociationsHelper() const
Definition: ScheduleItems.h:91
HLT enums.
def move(src, dest)
Definition: eostools.py:511
std::unique_ptr< Schedule > finishSchedule(MadeModules, ParameterSet &parameterSet, service::TriggerNamesService const &tns, bool hasSubprocesses, PreallocationConfiguration const &iAllocConfig, ProcessContext const *, ProcessBlockHelperBase &processBlockHelper)
std::shared_ptr< BranchIDListHelper > & branchIDListHelper()
Definition: ScheduleItems.h:90