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  namespace service {
30  class TriggerNamesService;
31  }
32 
33  struct ScheduleItems {
34  ScheduleItems();
35 
37  SubProcess const& om,
38  SubProcessBlockHelper& subProcessBlockHelper,
39  ProcessBlockHelperBase const& parentProcessBlockHelper);
40 
41  ScheduleItems(ScheduleItems const&) = delete; // Disallow copying and moving
42  ScheduleItems& operator=(ScheduleItems const&) = delete; // Disallow copying and moving
43 
44  ServiceToken initServices(std::vector<ParameterSet>& servicePSets,
45  ParameterSet& processPSet,
46  ServiceToken const& iToken,
48  bool associate);
49 
51 
52  std::shared_ptr<CommonParams> initMisc(ParameterSet& parameterSet);
53 
54  std::unique_ptr<Schedule> initSchedule(ParameterSet& parameterSet,
55  bool hasSubprocesses,
56  PreallocationConfiguration const& iAllocConfig,
57  ProcessContext const*,
58  ProcessBlockHelperBase& processBlockHelper);
59 
60  class MadeModules {
61  friend struct ScheduleItems;
62  explicit MadeModules(std::unique_ptr<Schedule> iSched) : m_schedule(std::move(iSched)) {}
63 
64  std::unique_ptr<Schedule> m_schedule;
65 
66  public:
67  MadeModules() = delete;
68  };
69 
72  PreallocationConfiguration const& iAllocConfig,
73  ProcessContext const*);
74  std::unique_ptr<Schedule> finishSchedule(MadeModules,
77  bool hasSubprocesses,
78  PreallocationConfiguration const& iAllocConfig,
79  ProcessContext const*,
80  ProcessBlockHelperBase& processBlockHelper);
81 
82  std::shared_ptr<SignallingProductRegistry const> preg() const { return get_underlying_safe(preg_); }
83  std::shared_ptr<SignallingProductRegistry>& preg() { return get_underlying_safe(preg_); }
84  std::shared_ptr<BranchIDListHelper const> branchIDListHelper() const {
86  }
87  std::shared_ptr<BranchIDListHelper>& branchIDListHelper() { return get_underlying_safe(branchIDListHelper_); }
88  std::shared_ptr<ThinnedAssociationsHelper const> thinnedAssociationsHelper() const {
90  }
91  std::shared_ptr<ThinnedAssociationsHelper>& thinnedAssociationsHelper() {
93  }
94  std::shared_ptr<SubProcessParentageHelper>& subProcessParentageHelper() {
96  }
97  std::shared_ptr<ProcessConfiguration const> processConfiguration() const {
99  }
100  std::shared_ptr<ProcessConfiguration>& processConfiguration() { return get_underlying_safe(processConfiguration_); }
101 
102  std::shared_ptr<ActivityRegistry> actReg_; // We do not use propagate_const because the registry itself is mutable.
107  std::unique_ptr<ExceptionToActionTable const> act_table_;
109  };
110 } // namespace edm
111 #endif
std::shared_ptr< ActivityRegistry > actReg_
std::unique_ptr< Schedule > initSchedule(ParameterSet &parameterSet, bool hasSubprocesses, PreallocationConfiguration const &iAllocConfig, ProcessContext const *, ProcessBlockHelperBase &processBlockHelper)
std::shared_ptr< BranchIDListHelper const > branchIDListHelper() const
Definition: ScheduleItems.h:84
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:83
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:62
std::shared_ptr< ProcessConfiguration const > processConfiguration() const
Definition: ScheduleItems.h:97
edm::propagate_const< std::shared_ptr< BranchIDListHelper > > branchIDListHelper_
std::shared_ptr< SignallingProductRegistry const > preg() const
Definition: ScheduleItems.h:82
std::shared_ptr< CommonParams > initMisc(ParameterSet &parameterSet)
std::shared_ptr< SubProcessParentageHelper > & subProcessParentageHelper()
Definition: ScheduleItems.h:94
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:91
std::unique_ptr< Schedule > m_schedule
Definition: ScheduleItems.h:64
edm::propagate_const< std::shared_ptr< SubProcessParentageHelper > > subProcessParentageHelper_
ServiceToken addCPRandTNS(ParameterSet const &parameterSet, ServiceToken const &token)
MadeModules initModules(ParameterSet &parameterSet, service::TriggerNamesService const &tns, PreallocationConfiguration const &iAllocConfig, ProcessContext const *)
std::shared_ptr< ThinnedAssociationsHelper const > thinnedAssociationsHelper() const
Definition: ScheduleItems.h:88
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:87