CMS 3D CMS Logo

ScheduleItems.cc
Go to the documentation of this file.
2 
23 
24 #include <memory>
25 
26 #include <set>
27 
28 namespace edm {
30  : actReg_(std::make_shared<ActivityRegistry>()),
31  preg_(std::make_shared<SignallingProductRegistry>()),
32  branchIDListHelper_(std::make_shared<BranchIDListHelper>()),
33  thinnedAssociationsHelper_(std::make_shared<ThinnedAssociationsHelper>()),
34  subProcessParentageHelper_(),
35  act_table_(),
36  processConfiguration_() {}
37 
39  SubProcess const& om,
40  SubProcessBlockHelper& subProcessBlockHelper,
41  ProcessBlockHelperBase const& parentProcessBlockHelper)
42  : actReg_(std::make_shared<ActivityRegistry>()),
43  preg_(std::make_shared<SignallingProductRegistry>(preg)),
44  branchIDListHelper_(std::make_shared<BranchIDListHelper>()),
45  thinnedAssociationsHelper_(std::make_shared<ThinnedAssociationsHelper>()),
46  subProcessParentageHelper_(std::make_shared<SubProcessParentageHelper>()),
47  act_table_(),
48  processConfiguration_() {
49  for (auto& item : preg_->productListUpdator()) {
50  BranchDescription& prod = item.second;
51  prod.setOnDemand(false);
52  prod.setProduced(false);
53  }
54 
55  // Mark dropped branches as dropped in the product registry.
56  std::set<BranchID> keptBranches;
57  SelectedProducts const& keptVectorP = om.keptProducts()[InProcess];
58  for (auto const& item : keptVectorP) {
59  BranchDescription const& desc = *item.first;
60  keptBranches.insert(desc.branchID());
61  }
62  SelectedProducts const& keptVectorR = om.keptProducts()[InRun];
63  for (auto const& item : keptVectorR) {
64  BranchDescription const& desc = *item.first;
65  keptBranches.insert(desc.branchID());
66  }
67  SelectedProducts const& keptVectorL = om.keptProducts()[InLumi];
68  for (auto const& item : keptVectorL) {
69  BranchDescription const& desc = *item.first;
70  keptBranches.insert(desc.branchID());
71  }
72  SelectedProducts const& keptVectorE = om.keptProducts()[InEvent];
73  for (auto const& item : keptVectorE) {
74  BranchDescription const& desc = *item.first;
75  keptBranches.insert(desc.branchID());
76  }
77  for (auto& item : preg_->productListUpdator()) {
78  BranchDescription& prod = item.second;
79  if (keptBranches.find(prod.branchID()) == keptBranches.end()) {
80  prod.setDropped(true);
81  }
82  }
83  subProcessBlockHelper.updateFromParentProcess(parentProcessBlockHelper, *preg_);
84  }
85 
86  ServiceToken ScheduleItems::initServices(std::vector<ParameterSet>& pServiceSets,
88  ServiceToken const& iToken,
90  bool associate) {
91  //create the services
92  ServiceToken token(ServiceRegistry::createSet(pServiceSets, iToken, iLegacy, associate));
93 
94  //see if any of the Services have to have their PSets stored
95  for (auto const& item : pServiceSets) {
96  if (item.exists("@save_config")) {
97  parameterSet.addParameter(item.getParameter<std::string>("@service_type"), item);
98  }
99  }
100  // Copy slots that hold all the registered callback functions like
101  // PostBeginJob into an ActivityRegistry
102  token.copySlotsTo(*actReg_);
103  return token;
104  }
105 
107  //add the ProductRegistry as a service ONLY for the construction phase
109  auto reg = std::make_shared<w_CPR>(std::make_unique<ConstProductRegistry>(*preg_));
111 
112  // the next thing is ugly: pull out the trigger path pset and
113  // create a service and extra token for it
114 
115  typedef service::TriggerNamesService TNS;
117 
118  auto tnsptr = std::make_shared<w_TNS>(std::make_unique<TNS>(parameterSet));
119 
121  }
122 
123  std::shared_ptr<CommonParams> ScheduleItems::initMisc(ParameterSet& parameterSet) {
124  act_table_ = std::make_unique<ExceptionToActionTable>(parameterSet);
126  processConfiguration_ = std::make_shared<ProcessConfiguration>(
127  processName, getReleaseVersion(), getPassID()); // propagate_const<T> has no reset() function
128  auto common = std::make_shared<CommonParams>(
130  parameterSet.getUntrackedParameterSet("maxLuminosityBlocks").getUntrackedParameter<int>("input"),
131  parameterSet.getUntrackedParameterSet("maxSecondsUntilRampdown").getUntrackedParameter<int>("input"));
132  return common;
133  }
134 
136  bool hasSubprocesses,
138  ProcessContext const* processContext,
139  ProcessBlockHelperBase& processBlockHelper) {
140  return std::make_unique<Schedule>(parameterSet,
141  ServiceRegistry::instance().get<service::TriggerNamesService>(),
142  *preg_,
144  processBlockHelper,
147  *act_table_,
148  actReg_,
150  hasSubprocesses,
151  config,
152  processContext);
153  }
154 } // namespace edm
ConstProductRegistry.h
ThinnedAssociationsHelper.h
edm::ScheduleItems::processConfiguration
std::shared_ptr< ProcessConfiguration const > processConfiguration() const
Definition: ScheduleItems.h:72
edm::SubProcessParentageHelper
Definition: SubProcessParentageHelper.h:21
ServiceRegistry.h
edm::SubProcess
Definition: SubProcess.h:52
BranchType.h
SubProcessBlockHelper.h
edm::ScheduleItems::processConfiguration_
edm::propagate_const< std::shared_ptr< ProcessConfiguration > > processConfiguration_
Definition: ScheduleItems.h:83
edm::ParameterSet::getUntrackedParameterSet
ParameterSet getUntrackedParameterSet(std::string const &name, ParameterSet const &defaultValue) const
Definition: ParameterSet.cc:2136
edm::SubProcess::keptProducts
SelectedProductsForBranchType const & keptProducts() const
Definition: SubProcess.h:80
BranchIDListHelper.h
TriggerNamesService.h
edm
HLT enums.
Definition: AlignableModifier.h:19
edm::ProcessContext
Definition: ProcessContext.h:27
BranchID.h
edm::ScheduleItems::thinnedAssociationsHelper_
edm::propagate_const< std::shared_ptr< ThinnedAssociationsHelper > > thinnedAssociationsHelper_
Definition: ScheduleItems.h:80
edm::ServiceRegistry::createSet
static ServiceToken createSet(std::vector< ParameterSet > &)
Definition: ServiceRegistry.cc:75
SignallingProductRegistry.h
edm::ParameterSet::getUntrackedParameter
T getUntrackedParameter(std::string const &, T const &) const
edm::getPassID
std::string getPassID()
Definition: GetPassID.h:7
edm::ScheduleItems::preg_
edm::propagate_const< std::shared_ptr< SignallingProductRegistry > > preg_
Definition: ScheduleItems.h:78
edm::ScheduleItems::initMisc
std::shared_ptr< CommonParams > initMisc(ParameterSet &parameterSet)
Definition: ScheduleItems.cc:123
edm::ScheduleItems::branchIDListHelper_
edm::propagate_const< std::shared_ptr< BranchIDListHelper > > branchIDListHelper_
Definition: ScheduleItems.h:79
edm::InRun
Definition: BranchType.h:11
edm::ScheduleItems::addCPRandTNS
ServiceToken addCPRandTNS(ParameterSet const &parameterSet, ServiceToken const &token)
Definition: ScheduleItems.cc:106
edm::SelectedProducts
std::vector< std::pair< BranchDescription const *, EDGetToken > > SelectedProducts
Definition: SelectedProducts.h:11
edm::ProductRegistry
Definition: ProductRegistry.h:37
ActivityRegistry.h
edm::parameterSet
ParameterSet const & parameterSet(StableProvenance const &provenance, ProcessHistory const &history)
Definition: Provenance.cc:11
config
Definition: config.py:1
edm::ServiceToken
Definition: ServiceToken.h:42
edm::InProcess
Definition: BranchType.h:11
edm::SubProcessBlockHelper::updateFromParentProcess
void updateFromParentProcess(ProcessBlockHelperBase const &parentProcessBlockHelper, ProductRegistry const &)
Definition: SubProcessBlockHelper.cc:45
submitPVResolutionJobs.config
config
parse the configuration file
Definition: submitPVResolutionJobs.py:281
edm::ScheduleItems::act_table_
std::unique_ptr< ExceptionToActionTable const > act_table_
Definition: ScheduleItems.h:82
SubProcessParentageHelper.h
dumpMFGeometry_cfg.prod
prod
Definition: dumpMFGeometry_cfg.py:24
edm::ActivityRegistry
Definition: ActivityRegistry.h:134
edm::ScheduleItems::actReg_
std::shared_ptr< ActivityRegistry > actReg_
Definition: ScheduleItems.h:77
CommonParams.h
edm::ScheduleItems::initServices
ServiceToken initServices(std::vector< ParameterSet > &servicePSets, ParameterSet &processPSet, ServiceToken const &iToken, serviceregistry::ServiceLegacy iLegacy, bool associate)
Definition: ScheduleItems.cc:86
edm::ScheduleItems::ScheduleItems
ScheduleItems()
Definition: ScheduleItems.cc:29
edm::InEvent
Definition: BranchType.h:11
edm::ThinnedAssociationsHelper
Definition: ThinnedAssociationsHelper.h:37
BranchDescription.h
edm::ProcessBlockHelperBase
Definition: ProcessBlockHelperBase.h:18
edm::ParameterSet
Definition: ParameterSet.h:47
GetReleaseVersion.h
edm::InLumi
Definition: BranchType.h:11
edm::serviceregistry::kOverlapIsError
Definition: ServiceLegacy.h:29
edm::ParameterSet::addParameter
void addParameter(std::string const &name, T const &value)
Definition: ParameterSet.h:135
edm::BranchIDListHelper
Definition: BranchIDListHelper.h:15
Schedule.h
edm::ScheduleItems::subProcessParentageHelper_
edm::propagate_const< std::shared_ptr< SubProcessParentageHelper > > subProcessParentageHelper_
Definition: ScheduleItems.h:81
GetPassID.h
ExceptionActions.h
B2GTnPMonitor_cfi.item
item
Definition: B2GTnPMonitor_cfi.py:147
edm::ServiceRegistry::instance
static ServiceRegistry & instance()
Definition: ServiceRegistry.cc:90
AlCaHLTBitMon_QueryRunRegistry.string
string string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
SubProcess.h
SimL1EmulatorRepack_CalouGT_cff.processName
processName
Definition: SimL1EmulatorRepack_CalouGT_cff.py:17
edm::service::TriggerNamesService
Definition: TriggerNamesService.h:42
ScheduleItems.h
edm::PreallocationConfiguration
Definition: PreallocationConfiguration.h:27
submitPVResolutionJobs.desc
string desc
Definition: submitPVResolutionJobs.py:251
std
Definition: JetResolutionObject.h:76
edm::ScheduleItems::initSchedule
std::unique_ptr< Schedule > initSchedule(ParameterSet &parameterSet, bool hasSubprocesses, PreallocationConfiguration const &iAllocConfig, ProcessContext const *, ProcessBlockHelperBase &processBlockHelper)
Definition: ScheduleItems.cc:135
edm::ServiceRegistry::createContaining
static ServiceToken createContaining(std::unique_ptr< T > iService)
create a service token that holds the service defined by iService
Definition: ServiceRegistry.h:99
edm::SubProcessBlockHelper
Definition: SubProcessBlockHelper.h:17
edm::getReleaseVersion
std::string getReleaseVersion()
Definition: GetReleaseVersion.cc:7
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
edm::BranchDescription
Definition: BranchDescription.h:32
ParameterSet.h
trackingPlots.common
common
Definition: trackingPlots.py:205
SelectedProducts.h
edm::serviceregistry::ServiceLegacy
ServiceLegacy
Definition: ServiceLegacy.h:29
edm::SignallingProductRegistry
Definition: SignallingProductRegistry.h:32
common
Definition: common.py:1
edm::serviceregistry::ServiceWrapper
Definition: ServiceRegistry.h:35
unpackBuffers-CaloStage2.token
token
Definition: unpackBuffers-CaloStage2.py:316