CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
edm::SubProcess Class Reference

#include <SubProcess.h>

Inheritance diagram for edm::SubProcess:
edm::EDConsumerBase

Public Member Functions

void clearCounters ()
 Clear all the counters in the trigger report. More...
 
void closeOutputFiles ()
 
void deleteLumiFromCache (LuminosityBlockPrincipal &)
 
void deleteRunFromCache (ProcessHistoryID const &parentPhID, int runNumber)
 
void doBeginJob ()
 
void doBeginLuminosityBlockAsync (WaitingTaskHolder iHolder, LuminosityBlockPrincipal const &principal, IOVSyncValue const &ts)
 
void doBeginRunAsync (WaitingTaskHolder iHolder, RunPrincipal const &principal, IOVSyncValue const &ts)
 
void doBeginStream (unsigned int)
 
void doEndJob ()
 
void doEndLuminosityBlockAsync (WaitingTaskHolder iHolder, LuminosityBlockPrincipal const &principal, IOVSyncValue const &ts, bool cleaningUpAfterException)
 
void doEndRunAsync (WaitingTaskHolder iHolder, RunPrincipal const &principal, IOVSyncValue const &ts, bool cleaningUpAfterException)
 
void doEndStream (unsigned int)
 
void doEventAsync (WaitingTaskHolder iHolder, EventPrincipal const &principal)
 
void doStreamBeginLuminosityBlockAsync (WaitingTaskHolder iHolder, unsigned int iID, LuminosityBlockPrincipal const &principal, IOVSyncValue const &ts)
 
void doStreamBeginRunAsync (WaitingTaskHolder iHolder, unsigned int iID, RunPrincipal const &principal, IOVSyncValue const &ts)
 
void doStreamEndLuminosityBlockAsync (WaitingTaskHolder iHolder, unsigned int iID, LuminosityBlockPrincipal const &principal, IOVSyncValue const &ts, bool cleaningUpAfterException)
 
void doStreamEndRunAsync (WaitingTaskHolder iHolder, unsigned int iID, RunPrincipal const &principal, IOVSyncValue const &ts, bool cleaningUpAfterException)
 
void enableEndPaths (bool active)
 
bool endPathsEnabled () const
 Return true if end_paths are active, and false if they are inactive. More...
 
std::vector< ModuleDescription const * > getAllModuleDescriptions () const
 Return a vector allowing const access to all the ModuleDescriptions for this SubProcess. More...
 
void getTriggerReport (TriggerReport &rep) const
 
SelectedProductsForBranchType const & keptProducts () const
 
void openOutputFiles (FileBlock &fb)
 
SubProcessoperator= (SubProcess const &)=delete
 
SubProcessoperator= (SubProcess &&)=default
 
void respondToCloseInputFile (FileBlock const &fb)
 
void respondToOpenInputFile (FileBlock const &fb)
 
void selectProducts (ProductRegistry const &preg, ThinnedAssociationsHelper const &parentThinnedAssociationsHelper, std::map< BranchID, bool > &keepAssociation)
 
bool shouldWeCloseOutput () const
 
 SubProcess (ParameterSet &parameterSet, ParameterSet const &topLevelParameterSet, std::shared_ptr< ProductRegistry const > parentProductRegistry, std::shared_ptr< BranchIDListHelper const > parentBranchIDListHelper, ThinnedAssociationsHelper const &parentThinnedAssociationsHelper, SubProcessParentageHelper const &parentSubProcessParentageHelper, eventsetup::EventSetupsController &esController, ActivityRegistry &parentActReg, ServiceToken const &token, serviceregistry::ServiceLegacy iLegacy, PreallocationConfiguration const &preallocConfig, ProcessContext const *parentProcessContext)
 
 SubProcess (SubProcess const &)=delete
 
 SubProcess (SubProcess &&)=default
 
bool terminate () const
 
int totalEvents () const
 
int totalEventsFailed () const
 
int totalEventsPassed () const
 Return the number of events which have been passed by one or more trigger paths. More...
 
void updateBranchIDListHelper (BranchIDLists const &)
 
void writeLumiAsync (WaitingTaskHolder, LuminosityBlockPrincipal &)
 
void writeRunAsync (WaitingTaskHolder, ProcessHistoryID const &parentPhID, int runNumber, MergeableRunProductMetadata const *)
 
 ~SubProcess () override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Member Functions

void beginJob ()
 
void beginLuminosityBlock (LuminosityBlockPrincipal const &lb, IOVSyncValue const &ts)
 
void beginRun (RunPrincipal const &r, IOVSyncValue const &ts)
 
std::shared_ptr< BranchIDListHelper const > branchIDListHelper () const
 
std::shared_ptr< BranchIDListHelper > & branchIDListHelper ()
 
std::map< BranchID::value_type, BranchID::value_type > const & droppedBranchIDToKeptBranchID ()
 
void endJob ()
 
void endLuminosityBlock (LuminosityBlockPrincipal const &lb, IOVSyncValue const &ts, bool cleaningUpAfterException)
 
void endRun (RunPrincipal const &r, IOVSyncValue const &ts, bool cleaningUpAfterException)
 
void fixBranchIDListsForEDAliases (std::map< BranchID::value_type, BranchID::value_type > const &droppedBranchIDToKeptBranchID)
 
void keepThisBranch (BranchDescription const &desc, std::map< BranchID, BranchDescription const * > &trueBranchIDToKeptBranchDesc, std::set< BranchID > &keptProductsInEvent)
 
void processAsync (WaitingTaskHolder iHolder, EventPrincipal const &e)
 
void propagateProducts (BranchType type, Principal const &parentPrincipal, Principal &principal) const
 
std::shared_ptr< ThinnedAssociationsHelper const > thinnedAssociationsHelper () const
 
std::shared_ptr< ThinnedAssociationsHelperthinnedAssociationsHelper ()
 

Private Attributes

std::unique_ptr< ExceptionToActionTable const > act_table_
 
std::shared_ptr< ActivityRegistryactReg_
 
edm::propagate_const< std::shared_ptr< BranchIDListHelper > > branchIDListHelper_
 
std::map< BranchID::value_type, BranchID::value_typedroppedBranchIDToKeptBranchID_
 
edm::propagate_const< std::shared_ptr< eventsetup::EventSetupProvider > > esp_
 
std::vector< HistoryAppenderhistoryAppenders_
 
unsigned int historyLumiOffset_
 
unsigned int historyRunOffset_
 
std::vector< std::shared_ptr< LuminosityBlockPrincipal > > inUseLumiPrincipals_
 
SelectedProductsForBranchType keptProducts_
 
std::shared_ptr< ProductRegistry const > parentPreg_
 
std::map< ProcessHistoryID, ProcessHistoryIDparentToChildPhID_
 
PathsAndConsumesOfModules pathsAndConsumesOfModules_
 
std::shared_ptr< ProductRegistry const > preg_
 
PrincipalCache principalCache_
 
std::shared_ptr< ProcessConfiguration const > processConfiguration_
 
ProcessContext processContext_
 
std::vector< ProcessHistoryRegistryprocessHistoryRegistries_
 
edm::propagate_const< std::unique_ptr< ParameterSet > > processParameterSet_
 
ProductSelector productSelector_
 
ProductSelectorRules productSelectorRules_
 
edm::propagate_const< std::unique_ptr< Schedule > > schedule_
 
ParameterSetID selector_config_id_
 
detail::TriggerResultsBasedEventSelector selectors_
 
ServiceToken serviceToken_
 
std::vector< SubProcesssubProcesses_
 
edm::propagate_const< std::shared_ptr< SubProcessParentageHelper > > subProcessParentageHelper_
 
edm::propagate_const< std::shared_ptr< ThinnedAssociationsHelper > > thinnedAssociationsHelper_
 
bool wantAllEvents_
 

Additional Inherited Members

- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

Definition at line 44 of file SubProcess.h.

Constructor & Destructor Documentation

edm::SubProcess::SubProcess ( ParameterSet parameterSet,
ParameterSet const &  topLevelParameterSet,
std::shared_ptr< ProductRegistry const >  parentProductRegistry,
std::shared_ptr< BranchIDListHelper const >  parentBranchIDListHelper,
ThinnedAssociationsHelper const &  parentThinnedAssociationsHelper,
SubProcessParentageHelper const &  parentSubProcessParentageHelper,
eventsetup::EventSetupsController esController,
ActivityRegistry parentActReg,
ServiceToken const &  token,
serviceregistry::ServiceLegacy  iLegacy,
PreallocationConfiguration const &  preallocConfig,
ProcessContext const *  parentProcessContext 
)

Definition at line 46 of file SubProcess.cc.

References act_table_, actReg_, branchIDListHelper(), branchIDListHelper_, edm::detail::configureEventSelector(), edm::ActivityRegistry::connectToSubProcess(), edm::EDConsumerBase::consumesCollector(), droppedBranchIDToKeptBranchID_, esp_, edm::ParameterSet::exists(), edm::getAllTriggerNames(), edm::ParameterSet::getUntrackedParameterSet(), historyAppenders_, historyLumiOffset_, historyRunOffset_, edm::PrincipalCache::insert(), inUseLumiPrincipals_, mps_monitormerge::items, edm::eventsetup::EventSetupsController::makeProvider(), Data_TkAlMinBias_Run2018C_PromptReco_v3_cff::maxEvents, eostools::move(), edm::PreallocationConfiguration::numberOfLuminosityBlocks(), edm::PreallocationConfiguration::numberOfStreams(), cmsPerfStripChart::operate(), edm::ParameterSet::popParameterSet(), edm::popSubProcessVParameterSet(), preg_, principalCache_, processConfiguration_, processContext_, processHistoryRegistries_, processParameterSet_, edm::ParameterSet::registerIt(), edm::detail::registerProperSelectionInfo(), schedule_, selector_config_id_, selectors_, selectProducts(), serviceToken_, edm::PrincipalCache::setNumberOfConcurrentPrincipals(), edm::ProcessContext::setParentProcessContext(), edm::ProcessContext::setProcessConfiguration(), edm::PrincipalCache::setProcessHistoryRegistry(), AlCaHLTBitMon_QueryRunRegistry::string, subProcesses_, subProcessParentageHelper_, thinnedAssociationsHelper(), thinnedAssociationsHelper_, updateBranchIDListHelper(), edm::validateTopLevelParameterSets(), and wantAllEvents_.

58  : EDConsumerBase(),
59  serviceToken_(),
60  parentPreg_(parentProductRegistry),
61  preg_(),
63  act_table_(),
65  historyLumiOffset_(preallocConfig.numberOfStreams()),
66  historyRunOffset_(historyLumiOffset_ + preallocConfig.numberOfLuminosityBlocks()),
67  processHistoryRegistries_(historyRunOffset_ + preallocConfig.numberOfRuns()),
68  historyAppenders_(historyRunOffset_ + preallocConfig.numberOfRuns()),
70  esp_(),
71  schedule_(),
73  subProcesses_(),
75  productSelectorRules_(parameterSet, "outputCommands", "OutputModule"),
77  wantAllEvents_(true) {
78  //Setup the event selection
80 
81  ParameterSet selectevents = parameterSet.getUntrackedParameterSet("SelectEvents", ParameterSet());
82 
83  selectevents.registerIt(); // Just in case this PSet is not registered
85  selectevents, tns->getProcessName(), getAllTriggerNames(), selectors_, consumesCollector());
86  std::map<std::string, std::vector<std::pair<std::string, int>>> outputModulePathPositions;
88  selectevents, "", outputModulePathPositions, parentProductRegistry->anyProductProduced());
89 
90  std::map<BranchID, bool> keepAssociation;
91  selectProducts(*parentProductRegistry, parentThinnedAssociationsHelper, keepAssociation);
92 
93  std::string const maxEvents("maxEvents");
94  std::string const maxLumis("maxLuminosityBlocks");
95 
96  // propagate_const<T> has no reset() function
98  std::unique_ptr<ParameterSet>(parameterSet.popParameterSet(std::string("process")).release());
99 
100  // if this process has a maxEvents or maxLuminosityBlocks parameter set, remove them.
101  if (processParameterSet_->exists(maxEvents)) {
102  processParameterSet_->popParameterSet(maxEvents);
103  }
104  if (processParameterSet_->exists(maxLumis)) {
105  processParameterSet_->popParameterSet(maxLumis);
106  }
107 
108  // if the top level process has a maxEvents or maxLuminosityBlocks parameter set, add them to this process.
109  if (topLevelParameterSet.exists(maxEvents)) {
110  processParameterSet_->addUntrackedParameter<ParameterSet>(
111  maxEvents, topLevelParameterSet.getUntrackedParameterSet(maxEvents));
112  }
113  if (topLevelParameterSet.exists(maxLumis)) {
114  processParameterSet_->addUntrackedParameter<ParameterSet>(
115  maxLumis, topLevelParameterSet.getUntrackedParameterSet(maxLumis));
116  }
117 
118  // If there are subprocesses, pop the subprocess parameter sets out of the process parameter set
119  auto subProcessVParameterSet = popSubProcessVParameterSet(*processParameterSet_);
120  bool hasSubProcesses = subProcessVParameterSet.size() != 0ull;
121 
122  // Validates the parameters in the 'options', 'maxEvents', and 'maxLuminosityBlocks'
123  // top level parameter sets. Default values are also set in here if the
124  // parameters were not explicitly set.
126 
127  ScheduleItems items(*parentProductRegistry, *this);
128  actReg_ = items.actReg_;
129 
130  //initialize the services
131  ServiceToken iToken;
132 
133  // get any configured services.
134  auto serviceSets = processParameterSet_->popVParameterSet(std::string("services"));
135 
136  ServiceToken newToken = items.initServices(serviceSets, *processParameterSet_, token, iLegacy, false);
137  parentActReg.connectToSubProcess(*items.actReg_);
138  serviceToken_ = items.addCPRandTNS(*processParameterSet_, newToken);
139 
140  //make the services available
142 
143  // intialize miscellaneous items
144  items.initMisc(*processParameterSet_);
145 
146  // intialize the event setup provider
147  esp_ = esController.makeProvider(*processParameterSet_, actReg_.get());
148 
149  branchIDListHelper_ = items.branchIDListHelper();
150  updateBranchIDListHelper(parentBranchIDListHelper->branchIDLists());
151 
152  thinnedAssociationsHelper_ = items.thinnedAssociationsHelper();
153  thinnedAssociationsHelper_->updateFromParentProcess(
154  parentThinnedAssociationsHelper, keepAssociation, droppedBranchIDToKeptBranchID_);
155 
156  // intialize the Schedule
157  schedule_ = items.initSchedule(*processParameterSet_, hasSubProcesses, preallocConfig, &processContext_);
158 
159  // set the items
160  act_table_ = std::move(items.act_table_);
161  preg_ = items.preg();
162 
163  subProcessParentageHelper_ = items.subProcessParentageHelper();
164  subProcessParentageHelper_->update(parentSubProcessParentageHelper, *parentProductRegistry);
165 
166  //CMS-THREADING this only works since Run/Lumis are synchronous so when principalCache asks for
167  // the reducedProcessHistoryID from a full ProcessHistoryID that registry will not be in use by
168  // another thread. We really need to change how this is done in the PrincipalCache.
170 
171  processConfiguration_ = items.processConfiguration();
173  processContext_.setParentProcessContext(parentProcessContext);
174 
176  for (unsigned int index = 0; index < preallocConfig.numberOfStreams(); ++index) {
177  auto ep = std::make_shared<EventPrincipal>(preg_,
182  index,
183  false /*not primary process*/);
185  }
186  for (unsigned int index = 0; index < preallocConfig.numberOfLuminosityBlocks(); ++index) {
187  auto lbpp = std::make_unique<LuminosityBlockPrincipal>(
190  }
191 
192  inUseLumiPrincipals_.resize(preallocConfig.numberOfLuminosityBlocks());
193 
194  subProcesses_.reserve(subProcessVParameterSet.size());
195  for (auto& subProcessPSet : subProcessVParameterSet) {
196  subProcesses_.emplace_back(subProcessPSet,
197  topLevelParameterSet,
198  preg_,
200  *thinnedAssociationsHelper_,
202  esController,
203  *items.actReg_,
204  newToken,
205  iLegacy,
206  preallocConfig,
207  &processContext_);
208  }
209  }
unsigned int historyRunOffset_
Definition: SubProcess.h:284
unsigned int historyLumiOffset_
Definition: SubProcess.h:283
ParameterSetID selector_config_id_
Definition: SubProcess.h:306
void insert(std::shared_ptr< RunPrincipal > rp)
void setNumberOfConcurrentPrincipals(PreallocationConfiguration const &)
std::shared_ptr< BranchIDListHelper const > branchIDListHelper() const
Definition: SubProcess.h:259
std::vector< ProcessHistoryRegistry > processHistoryRegistries_
Definition: SubProcess.h:285
edm::propagate_const< std::shared_ptr< ThinnedAssociationsHelper > > thinnedAssociationsHelper_
Definition: SubProcess.h:275
std::vector< SubProcess > subProcesses_
Definition: SubProcess.h:293
void updateBranchIDListHelper(BranchIDLists const &)
Definition: SubProcess.cc:634
void setParentProcessContext(ProcessContext const *parentProcessContext)
edm::propagate_const< std::unique_ptr< Schedule > > schedule_
Definition: SubProcess.h:291
void validateTopLevelParameterSets(ParameterSet *processParameterSet)
ServiceToken serviceToken_
Definition: SubProcess.h:271
std::vector< std::shared_ptr< LuminosityBlockPrincipal > > inUseLumiPrincipals_
Definition: SubProcess.h:289
void selectProducts(ProductRegistry const &preg, ThinnedAssociationsHelper const &parentThinnedAssociationsHelper, std::map< BranchID, bool > &keepAssociation)
Definition: SubProcess.cc:250
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
ProductSelectorRules productSelectorRules_
Definition: SubProcess.h:301
edm::propagate_const< std::shared_ptr< eventsetup::EventSetupProvider > > esp_
Definition: SubProcess.h:290
edm::propagate_const< std::unique_ptr< ParameterSet > > processParameterSet_
Definition: SubProcess.h:294
bool configureEventSelector(edm::ParameterSet const &iPSet, std::string const &iProcessName, std::vector< std::string > const &iAllTriggerNames, edm::detail::TriggerResultsBasedEventSelector &oSelector, ConsumesCollector &&iC)
void setProcessConfiguration(ProcessConfiguration const *processConfiguration)
std::unique_ptr< ExceptionToActionTable const > act_table_
Definition: SubProcess.h:277
std::vector< ParameterSet > popSubProcessVParameterSet(ParameterSet &parameterSet)
Definition: SubProcess.cc:648
void setProcessHistoryRegistry(ProcessHistoryRegistry const &phr)
std::map< BranchID::value_type, BranchID::value_type > droppedBranchIDToKeptBranchID_
Definition: SubProcess.h:311
ProductSelector productSelector_
Definition: SubProcess.h:302
detail::TriggerResultsBasedEventSelector selectors_
Definition: SubProcess.h:307
std::map< ProcessHistoryID, ProcessHistoryID > parentToChildPhID_
Definition: SubProcess.h:292
std::shared_ptr< ActivityRegistry > actReg_
Definition: SubProcess.h:270
edm::propagate_const< std::shared_ptr< BranchIDListHelper > > branchIDListHelper_
Definition: SubProcess.h:274
std::vector< HistoryAppender > historyAppenders_
Definition: SubProcess.h:286
std::vector< std::string > const & getAllTriggerNames()
std::shared_ptr< ProductRegistry const > parentPreg_
Definition: SubProcess.h:272
ProcessContext processContext_
Definition: SubProcess.h:279
ParameterSetID registerProperSelectionInfo(edm::ParameterSet const &iInitial, std::string const &iLabel, std::map< std::string, std::vector< std::pair< std::string, int > > > const &outputModulePathPositions, bool anyProductProduced)
std::shared_ptr< ThinnedAssociationsHelper const > thinnedAssociationsHelper() const
Definition: SubProcess.h:263
std::shared_ptr< ProductRegistry const > preg_
Definition: SubProcess.h:273
PrincipalCache principalCache_
Definition: SubProcess.h:287
def move(src, dest)
Definition: eostools.py:511
edm::propagate_const< std::shared_ptr< SubProcessParentageHelper > > subProcessParentageHelper_
Definition: SubProcess.h:276
std::shared_ptr< ProcessConfiguration const > processConfiguration_
Definition: SubProcess.h:278
def operate(timelog, memlog, json_f, num)
edm::SubProcess::~SubProcess ( )
override

Definition at line 211 of file SubProcess.cc.

211 {}
edm::SubProcess::SubProcess ( SubProcess const &  )
delete
edm::SubProcess::SubProcess ( SubProcess &&  )
default

Member Function Documentation

void edm::SubProcess::beginJob ( void  )
private

Definition at line 217 of file SubProcess.cc.

References actReg_, edm::checkForModuleDependencyCorrectness(), droppedBranchIDToKeptBranchID(), esp_, fixBranchIDListsForEDAliases(), edm::for_all(), edm::InEvent, edm::PathsAndConsumesOfModules::initialize(), cmsPerfStripChart::operate(), parentPreg_, pathsAndConsumesOfModules_, preg_, processConfiguration_, processContext_, schedule_, serviceToken_, subProcesses_, and edm::EDConsumerBase::updateLookup().

Referenced by doBeginJob().

217  {
218  // If event selection is being used, the SubProcess class reads TriggerResults
219  // object(s) in the parent process from the event. This next call is needed for
220  // getByToken to work properly. Normally, this is done by the worker, but since
221  // a SubProcess is not a module, it has no worker.
222  updateLookup(InEvent, *parentPreg_->productLookup(InEvent), false);
223 
224  if (!droppedBranchIDToKeptBranchID().empty()) {
226  }
228  schedule_->convertCurrentProcessAlias(processConfiguration_->processName());
230  //NOTE: this may throw
232  actReg_->preBeginJobSignal_(pathsAndConsumesOfModules_, processContext_);
233  schedule_->beginJob(*preg_, esp_->recordsToProxyIndices());
234  for_all(subProcesses_, [](auto& subProcess) { subProcess.doBeginJob(); });
235  }
std::vector< SubProcess > subProcesses_
Definition: SubProcess.h:293
void updateLookup(BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
PathsAndConsumesOfModules pathsAndConsumesOfModules_
Definition: SubProcess.h:280
std::map< BranchID::value_type, BranchID::value_type > const & droppedBranchIDToKeptBranchID()
Definition: SubProcess.h:255
edm::propagate_const< std::unique_ptr< Schedule > > schedule_
Definition: SubProcess.h:291
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:14
void initialize(Schedule const *, std::shared_ptr< ProductRegistry const >)
ServiceToken serviceToken_
Definition: SubProcess.h:271
edm::propagate_const< std::shared_ptr< eventsetup::EventSetupProvider > > esp_
Definition: SubProcess.h:290
void checkForModuleDependencyCorrectness(edm::PathsAndConsumesOfModulesBase const &iPnC, bool iPrintDependencies)
std::shared_ptr< ActivityRegistry > actReg_
Definition: SubProcess.h:270
std::shared_ptr< ProductRegistry const > parentPreg_
Definition: SubProcess.h:272
void fixBranchIDListsForEDAliases(std::map< BranchID::value_type, BranchID::value_type > const &droppedBranchIDToKeptBranchID)
Definition: SubProcess.cc:311
ProcessContext processContext_
Definition: SubProcess.h:279
std::shared_ptr< ProductRegistry const > preg_
Definition: SubProcess.h:273
std::shared_ptr< ProcessConfiguration const > processConfiguration_
Definition: SubProcess.h:278
def operate(timelog, memlog, json_f, num)
void edm::SubProcess::beginLuminosityBlock ( LuminosityBlockPrincipal const &  lb,
IOVSyncValue const &  ts 
)
private
void edm::SubProcess::beginRun ( RunPrincipal const &  r,
IOVSyncValue const &  ts 
)
private
std::shared_ptr<BranchIDListHelper const> edm::SubProcess::branchIDListHelper ( ) const
inlineprivate

Definition at line 259 of file SubProcess.h.

References edm::get_underlying_safe().

Referenced by SubProcess().

259  {
261  }
std::shared_ptr< T > & get_underlying_safe(propagate_const< std::shared_ptr< T >> &iP)
edm::propagate_const< std::shared_ptr< BranchIDListHelper > > branchIDListHelper_
Definition: SubProcess.h:274
std::shared_ptr<BranchIDListHelper>& edm::SubProcess::branchIDListHelper ( )
inlineprivate

Definition at line 262 of file SubProcess.h.

References edm::get_underlying_safe().

std::shared_ptr< T > & get_underlying_safe(propagate_const< std::shared_ptr< T >> &iP)
edm::propagate_const< std::shared_ptr< BranchIDListHelper > > branchIDListHelper_
Definition: SubProcess.h:274
void edm::SubProcess::clearCounters ( )
inline

Clear all the counters in the trigger report.

Definition at line 233 of file SubProcess.h.

References bk::beginJob(), MillePedeFileConverter_cfg::e, Ecal2004TBTDCRanges_v1_cff::endRun, edm::for_all(), cmsPerfStripChart::operate(), and alignCSCRings::r.

233  {
235  schedule_->clearCounters();
236  for_all(subProcesses_, [](auto& subProcess) { subProcess.clearCounters(); });
237  }
std::vector< SubProcess > subProcesses_
Definition: SubProcess.h:293
edm::propagate_const< std::unique_ptr< Schedule > > schedule_
Definition: SubProcess.h:291
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:14
ServiceToken serviceToken_
Definition: SubProcess.h:271
def operate(timelog, memlog, json_f, num)
void edm::SubProcess::closeOutputFiles ( )
inline

Definition at line 132 of file SubProcess.h.

References edm::for_all(), and cmsPerfStripChart::operate().

132  {
134  schedule_->closeOutputFiles();
135  for_all(subProcesses_, [](auto& subProcess) { subProcess.closeOutputFiles(); });
136  }
std::vector< SubProcess > subProcesses_
Definition: SubProcess.h:293
edm::propagate_const< std::unique_ptr< Schedule > > schedule_
Definition: SubProcess.h:291
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:14
ServiceToken serviceToken_
Definition: SubProcess.h:271
def operate(timelog, memlog, json_f, num)
void edm::SubProcess::deleteLumiFromCache ( LuminosityBlockPrincipal principal)

Definition at line 536 of file SubProcess.cc.

References edm::LuminosityBlockPrincipal::index(), inUseLumiPrincipals_, eostools::move(), alignCSCRings::s, and subProcesses_.

536  {
537  //release from list but stay around till end of routine
538  auto lb = std::move(inUseLumiPrincipals_[principal.index()]);
539  for (auto& s : subProcesses_) {
540  s.deleteLumiFromCache(*lb);
541  }
542  lb->clearPrincipal();
543  }
std::vector< SubProcess > subProcesses_
Definition: SubProcess.h:293
def principal(options)
std::vector< std::shared_ptr< LuminosityBlockPrincipal > > inUseLumiPrincipals_
Definition: SubProcess.h:289
def move(src, dest)
Definition: eostools.py:511
void edm::SubProcess::deleteRunFromCache ( ProcessHistoryID const &  parentPhID,
int  runNumber 
)

Definition at line 471 of file SubProcess.cc.

References edm::PrincipalCache::deleteRun(), edm::for_all(), parentToChildPhID_, principalCache_, and subProcesses_.

471  {
472  std::map<ProcessHistoryID, ProcessHistoryID>::const_iterator it = parentToChildPhID_.find(parentPhID);
473  assert(it != parentToChildPhID_.end());
474  auto const& childPhID = it->second;
475  principalCache_.deleteRun(childPhID, runNumber);
477  [&childPhID, runNumber](auto& subProcess) { subProcess.deleteRunFromCache(childPhID, runNumber); });
478  }
std::vector< SubProcess > subProcesses_
Definition: SubProcess.h:293
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:14
std::map< ProcessHistoryID, ProcessHistoryID > parentToChildPhID_
Definition: SubProcess.h:292
void deleteRun(ProcessHistoryID const &phid, RunNumber_t run)
PrincipalCache principalCache_
Definition: SubProcess.h:287
void edm::SubProcess::doBeginJob ( )

Definition at line 213 of file SubProcess.cc.

References beginJob().

213 { this->beginJob(); }
void edm::SubProcess::doBeginLuminosityBlockAsync ( WaitingTaskHolder  iHolder,
LuminosityBlockPrincipal const &  principal,
IOVSyncValue const &  ts 
)

Definition at line 480 of file SubProcess.cc.

References printConversionInfo::aux, edm::LuminosityBlockPrincipal::aux(), esp_, edm::PrincipalCache::getAvailableLumiPrincipalPtr(), historyLumiOffset_, edm::LuminosityBlockPrincipal::index(), edm::InLumi, inUseLumiPrincipals_, eostools::move(), cmsPerfStripChart::operate(), principalCache_, edm::Principal::processHistory(), edm::Principal::processHistoryID(), processHistoryRegistries_, propagateProducts(), edm::Principal::reader(), edm::PrincipalCache::runPrincipalPtr(), schedule_, serviceToken_, and subProcesses_.

Referenced by edm::subProcessDoGlobalBeginTransitionAsync().

482  {
484 
485  auto aux = principal.aux();
486  aux.setProcessHistoryID(principal.processHistoryID());
488  lbpp->setAux(aux);
489  auto& processHistoryRegistry = processHistoryRegistries_[historyLumiOffset_ + lbpp->index()];
490  inUseLumiPrincipals_[principal.index()] = lbpp;
491  processHistoryRegistry.registerProcessHistory(principal.processHistory());
492  lbpp->fillLuminosityBlockPrincipal(processHistoryRegistry, principal.reader());
493  lbpp->setRunPrincipal(principalCache_.runPrincipalPtr());
494  LuminosityBlockPrincipal& lbp = *lbpp;
496  typedef OccurrenceTraits<LuminosityBlockPrincipal, BranchActionGlobalBegin> Traits;
497  beginGlobalTransitionAsync<Traits>(
498  std::move(iHolder), *schedule_, lbp, ts, esp_->eventSetup(), serviceToken_, subProcesses_);
499  }
unsigned int historyLumiOffset_
Definition: SubProcess.h:283
std::vector< ProcessHistoryRegistry > processHistoryRegistries_
Definition: SubProcess.h:285
std::vector< SubProcess > subProcesses_
Definition: SubProcess.h:293
edm::propagate_const< std::unique_ptr< Schedule > > schedule_
Definition: SubProcess.h:291
ServiceToken serviceToken_
Definition: SubProcess.h:271
def principal(options)
std::vector< std::shared_ptr< LuminosityBlockPrincipal > > inUseLumiPrincipals_
Definition: SubProcess.h:289
edm::propagate_const< std::shared_ptr< eventsetup::EventSetupProvider > > esp_
Definition: SubProcess.h:290
std::shared_ptr< RunPrincipal > const & runPrincipalPtr(ProcessHistoryID const &phid, RunNumber_t run) const
void propagateProducts(BranchType type, Principal const &parentPrincipal, Principal &principal) const
Definition: SubProcess.cc:618
std::shared_ptr< LuminosityBlockPrincipal > getAvailableLumiPrincipalPtr()
PrincipalCache principalCache_
Definition: SubProcess.h:287
def move(src, dest)
Definition: eostools.py:511
def operate(timelog, memlog, json_f, num)
void edm::SubProcess::doBeginRunAsync ( WaitingTaskHolder  iHolder,
RunPrincipal const &  principal,
IOVSyncValue const &  ts 
)

Definition at line 398 of file SubProcess.cc.

References printConversionInfo::aux, edm::RunPrincipal::aux(), esp_, historyAppenders_, historyRunOffset_, edm::RunPrincipal::index(), edm::InRun, edm::PrincipalCache::insert(), eostools::move(), cmsPerfStripChart::operate(), parentToChildPhID_, preg_, principalCache_, processConfiguration_, edm::Principal::processHistory(), edm::Principal::processHistoryID(), processHistoryRegistries_, propagateProducts(), edm::Principal::reader(), edm::RunPrincipal::reducedProcessHistoryID(), edm::PrincipalCache::runPrincipalPtr(), schedule_, serviceToken_, and subProcesses_.

Referenced by edm::subProcessDoGlobalBeginTransitionAsync().

398  {
400 
401  auto aux = std::make_shared<RunAuxiliary>(principal.aux());
402  aux->setProcessHistoryID(principal.processHistoryID());
403  auto rpp = std::make_shared<RunPrincipal>(aux,
404  preg_,
407  principal.index(),
408  false);
409  auto& processHistoryRegistry = processHistoryRegistries_[historyRunOffset_ + principal.index()];
410  processHistoryRegistry.registerProcessHistory(principal.processHistory());
411  rpp->fillRunPrincipal(processHistoryRegistry, principal.reader());
412  principalCache_.insert(rpp);
413 
414  ProcessHistoryID const& parentInputReducedPHID = principal.reducedProcessHistoryID();
415  ProcessHistoryID const& inputReducedPHID = rpp->reducedProcessHistoryID();
416 
417  parentToChildPhID_.insert(std::make_pair(parentInputReducedPHID, inputReducedPHID));
418 
419  RunPrincipal& rp = *principalCache_.runPrincipalPtr();
421  typedef OccurrenceTraits<RunPrincipal, BranchActionGlobalBegin> Traits;
422  beginGlobalTransitionAsync<Traits>(
423  std::move(iHolder), *schedule_, rp, ts, esp_->eventSetup(), serviceToken_, subProcesses_);
424  }
unsigned int historyRunOffset_
Definition: SubProcess.h:284
void insert(std::shared_ptr< RunPrincipal > rp)
std::vector< ProcessHistoryRegistry > processHistoryRegistries_
Definition: SubProcess.h:285
std::vector< SubProcess > subProcesses_
Definition: SubProcess.h:293
edm::propagate_const< std::unique_ptr< Schedule > > schedule_
Definition: SubProcess.h:291
ServiceToken serviceToken_
Definition: SubProcess.h:271
def principal(options)
edm::propagate_const< std::shared_ptr< eventsetup::EventSetupProvider > > esp_
Definition: SubProcess.h:290
Hash< ProcessHistoryType > ProcessHistoryID
std::map< ProcessHistoryID, ProcessHistoryID > parentToChildPhID_
Definition: SubProcess.h:292
std::shared_ptr< RunPrincipal > const & runPrincipalPtr(ProcessHistoryID const &phid, RunNumber_t run) const
std::vector< HistoryAppender > historyAppenders_
Definition: SubProcess.h:286
void propagateProducts(BranchType type, Principal const &parentPrincipal, Principal &principal) const
Definition: SubProcess.cc:618
std::shared_ptr< ProductRegistry const > preg_
Definition: SubProcess.h:273
PrincipalCache principalCache_
Definition: SubProcess.h:287
def move(src, dest)
Definition: eostools.py:511
std::shared_ptr< ProcessConfiguration const > processConfiguration_
Definition: SubProcess.h:278
def operate(timelog, memlog, json_f, num)
void edm::SubProcess::doBeginStream ( unsigned int  iID)

Definition at line 545 of file SubProcess.cc.

References edm::for_all(), cmsPerfStripChart::operate(), schedule_, serviceToken_, and subProcesses_.

545  {
547  schedule_->beginStream(iID);
548  for_all(subProcesses_, [iID](auto& subProcess) { subProcess.doBeginStream(iID); });
549  }
std::vector< SubProcess > subProcesses_
Definition: SubProcess.h:293
edm::propagate_const< std::unique_ptr< Schedule > > schedule_
Definition: SubProcess.h:291
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:14
ServiceToken serviceToken_
Definition: SubProcess.h:271
def operate(timelog, memlog, json_f, num)
void edm::SubProcess::doEndJob ( )

Definition at line 215 of file SubProcess.cc.

References endJob().

Referenced by edm::EventProcessor::endJob().

215 { endJob(); }
void edm::SubProcess::doEndLuminosityBlockAsync ( WaitingTaskHolder  iHolder,
LuminosityBlockPrincipal const &  principal,
IOVSyncValue const &  ts,
bool  cleaningUpAfterException 
)

Definition at line 501 of file SubProcess.cc.

References esp_, edm::LuminosityBlockPrincipal::index(), edm::InLumi, inUseLumiPrincipals_, eostools::move(), propagateProducts(), schedule_, serviceToken_, and subProcesses_.

Referenced by edm::subProcessDoGlobalEndTransitionAsync().

504  {
505  LuminosityBlockPrincipal& lbp = *inUseLumiPrincipals_[principal.index()];
507  typedef OccurrenceTraits<LuminosityBlockPrincipal, BranchActionGlobalEnd> Traits;
508  endGlobalTransitionAsync<Traits>(std::move(iHolder),
509  *schedule_,
510  lbp,
511  ts,
512  esp_->eventSetup(),
515  cleaningUpAfterException);
516  }
std::vector< SubProcess > subProcesses_
Definition: SubProcess.h:293
edm::propagate_const< std::unique_ptr< Schedule > > schedule_
Definition: SubProcess.h:291
ServiceToken serviceToken_
Definition: SubProcess.h:271
def principal(options)
std::vector< std::shared_ptr< LuminosityBlockPrincipal > > inUseLumiPrincipals_
Definition: SubProcess.h:289
edm::propagate_const< std::shared_ptr< eventsetup::EventSetupProvider > > esp_
Definition: SubProcess.h:290
void propagateProducts(BranchType type, Principal const &parentPrincipal, Principal &principal) const
Definition: SubProcess.cc:618
def move(src, dest)
Definition: eostools.py:511
void edm::SubProcess::doEndRunAsync ( WaitingTaskHolder  iHolder,
RunPrincipal const &  principal,
IOVSyncValue const &  ts,
bool  cleaningUpAfterException 
)

Definition at line 426 of file SubProcess.cc.

References esp_, edm::InRun, eostools::move(), principalCache_, propagateProducts(), edm::PrincipalCache::runPrincipalPtr(), schedule_, serviceToken_, and subProcesses_.

Referenced by edm::subProcessDoGlobalEndTransitionAsync().

429  {
430  RunPrincipal& rp = *principalCache_.runPrincipalPtr();
432  typedef OccurrenceTraits<RunPrincipal, BranchActionGlobalEnd> Traits;
433  endGlobalTransitionAsync<Traits>(std::move(iHolder),
434  *schedule_,
435  rp,
436  ts,
437  esp_->eventSetup(),
440  cleaningUpAfterException);
441  }
std::vector< SubProcess > subProcesses_
Definition: SubProcess.h:293
edm::propagate_const< std::unique_ptr< Schedule > > schedule_
Definition: SubProcess.h:291
ServiceToken serviceToken_
Definition: SubProcess.h:271
def principal(options)
edm::propagate_const< std::shared_ptr< eventsetup::EventSetupProvider > > esp_
Definition: SubProcess.h:290
std::shared_ptr< RunPrincipal > const & runPrincipalPtr(ProcessHistoryID const &phid, RunNumber_t run) const
void propagateProducts(BranchType type, Principal const &parentPrincipal, Principal &principal) const
Definition: SubProcess.cc:618
PrincipalCache principalCache_
Definition: SubProcess.h:287
def move(src, dest)
Definition: eostools.py:511
void edm::SubProcess::doEndStream ( unsigned int  iID)

Definition at line 551 of file SubProcess.cc.

References edm::for_all(), cmsPerfStripChart::operate(), schedule_, serviceToken_, and subProcesses_.

551  {
553  schedule_->endStream(iID);
554  for_all(subProcesses_, [iID](auto& subProcess) { subProcess.doEndStream(iID); });
555  }
std::vector< SubProcess > subProcesses_
Definition: SubProcess.h:293
edm::propagate_const< std::unique_ptr< Schedule > > schedule_
Definition: SubProcess.h:291
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:14
ServiceToken serviceToken_
Definition: SubProcess.h:271
def operate(timelog, memlog, json_f, num)
void edm::SubProcess::doEventAsync ( WaitingTaskHolder  iHolder,
EventPrincipal const &  principal 
)

Definition at line 329 of file SubProcess.cc.

References MillePedeFileConverter_cfg::e, eostools::move(), cmsPerfStripChart::operate(), processAsync(), selectors_, serviceToken_, edm::OccurrenceForOutput::setConsumer(), wantAllEvents_, and edm::detail::TriggerResultsBasedEventSelector::wantEvent().

329  {
331  /* BEGIN relevant bits from OutputModule::doEvent */
332  if (!wantAllEvents_) {
333  EventForOutput e(ep, ModuleDescription(), nullptr);
334  e.setConsumer(this);
335  if (!selectors_.wantEvent(e)) {
336  return;
337  }
338  }
339  processAsync(std::move(iHolder), ep);
340  /* END relevant bits from OutputModule::doEvent */
341  }
ServiceToken serviceToken_
Definition: SubProcess.h:271
void processAsync(WaitingTaskHolder iHolder, EventPrincipal const &e)
Definition: SubProcess.cc:343
detail::TriggerResultsBasedEventSelector selectors_
Definition: SubProcess.h:307
def move(src, dest)
Definition: eostools.py:511
def operate(timelog, memlog, json_f, num)
void edm::SubProcess::doStreamBeginLuminosityBlockAsync ( WaitingTaskHolder  iHolder,
unsigned int  iID,
LuminosityBlockPrincipal const &  principal,
IOVSyncValue const &  ts 
)

Definition at line 588 of file SubProcess.cc.

References esp_, triggerObjects_cff::id, edm::LuminosityBlockPrincipal::index(), inUseLumiPrincipals_, eostools::move(), schedule_, serviceToken_, and subProcesses_.

Referenced by edm::subProcessDoStreamBeginTransitionAsync().

591  {
592  typedef OccurrenceTraits<LuminosityBlockPrincipal, BranchActionStreamBegin> Traits;
593 
594  LuminosityBlockPrincipal& lbp = *inUseLumiPrincipals_[principal.index()];
595 
596  beginStreamTransitionAsync<Traits>(
597  std::move(iHolder), *schedule_, id, lbp, ts, esp_->eventSetup(), serviceToken_, subProcesses_);
598  }
std::vector< SubProcess > subProcesses_
Definition: SubProcess.h:293
edm::propagate_const< std::unique_ptr< Schedule > > schedule_
Definition: SubProcess.h:291
ServiceToken serviceToken_
Definition: SubProcess.h:271
def principal(options)
std::vector< std::shared_ptr< LuminosityBlockPrincipal > > inUseLumiPrincipals_
Definition: SubProcess.h:289
edm::propagate_const< std::shared_ptr< eventsetup::EventSetupProvider > > esp_
Definition: SubProcess.h:290
def move(src, dest)
Definition: eostools.py:511
void edm::SubProcess::doStreamBeginRunAsync ( WaitingTaskHolder  iHolder,
unsigned int  iID,
RunPrincipal const &  principal,
IOVSyncValue const &  ts 
)

Definition at line 557 of file SubProcess.cc.

References esp_, triggerObjects_cff::id, eostools::move(), principalCache_, edm::PrincipalCache::runPrincipalPtr(), schedule_, serviceToken_, and subProcesses_.

Referenced by edm::subProcessDoStreamBeginTransitionAsync().

560  {
561  typedef OccurrenceTraits<RunPrincipal, BranchActionStreamBegin> Traits;
562 
563  RunPrincipal& rp = *principalCache_.runPrincipalPtr();
564 
565  beginStreamTransitionAsync<Traits>(
566  std::move(iHolder), *schedule_, id, rp, ts, esp_->eventSetup(), serviceToken_, subProcesses_);
567  }
std::vector< SubProcess > subProcesses_
Definition: SubProcess.h:293
edm::propagate_const< std::unique_ptr< Schedule > > schedule_
Definition: SubProcess.h:291
ServiceToken serviceToken_
Definition: SubProcess.h:271
edm::propagate_const< std::shared_ptr< eventsetup::EventSetupProvider > > esp_
Definition: SubProcess.h:290
std::shared_ptr< RunPrincipal > const & runPrincipalPtr(ProcessHistoryID const &phid, RunNumber_t run) const
PrincipalCache principalCache_
Definition: SubProcess.h:287
def move(src, dest)
Definition: eostools.py:511
void edm::SubProcess::doStreamEndLuminosityBlockAsync ( WaitingTaskHolder  iHolder,
unsigned int  iID,
LuminosityBlockPrincipal const &  principal,
IOVSyncValue const &  ts,
bool  cleaningUpAfterException 
)

Definition at line 600 of file SubProcess.cc.

References esp_, triggerObjects_cff::id, edm::LuminosityBlockPrincipal::index(), inUseLumiPrincipals_, eostools::move(), schedule_, serviceToken_, and subProcesses_.

Referenced by edm::subProcessDoStreamEndTransitionAsync().

604  {
605  LuminosityBlockPrincipal& lbp = *inUseLumiPrincipals_[principal.index()];
606  typedef OccurrenceTraits<LuminosityBlockPrincipal, BranchActionStreamEnd> Traits;
607  endStreamTransitionAsync<Traits>(std::move(iHolder),
608  *schedule_,
609  id,
610  lbp,
611  ts,
612  esp_->eventSetup(),
615  cleaningUpAfterException);
616  }
std::vector< SubProcess > subProcesses_
Definition: SubProcess.h:293
edm::propagate_const< std::unique_ptr< Schedule > > schedule_
Definition: SubProcess.h:291
ServiceToken serviceToken_
Definition: SubProcess.h:271
def principal(options)
std::vector< std::shared_ptr< LuminosityBlockPrincipal > > inUseLumiPrincipals_
Definition: SubProcess.h:289
edm::propagate_const< std::shared_ptr< eventsetup::EventSetupProvider > > esp_
Definition: SubProcess.h:290
def move(src, dest)
Definition: eostools.py:511
void edm::SubProcess::doStreamEndRunAsync ( WaitingTaskHolder  iHolder,
unsigned int  iID,
RunPrincipal const &  principal,
IOVSyncValue const &  ts,
bool  cleaningUpAfterException 
)

Definition at line 569 of file SubProcess.cc.

References esp_, triggerObjects_cff::id, eostools::move(), principalCache_, edm::PrincipalCache::runPrincipalPtr(), schedule_, serviceToken_, and subProcesses_.

Referenced by edm::subProcessDoStreamEndTransitionAsync().

573  {
574  RunPrincipal& rp = *principalCache_.runPrincipalPtr();
575  typedef OccurrenceTraits<RunPrincipal, BranchActionStreamEnd> Traits;
576 
577  endStreamTransitionAsync<Traits>(std::move(iHolder),
578  *schedule_,
579  id,
580  rp,
581  ts,
582  esp_->eventSetup(),
585  cleaningUpAfterException);
586  }
std::vector< SubProcess > subProcesses_
Definition: SubProcess.h:293
edm::propagate_const< std::unique_ptr< Schedule > > schedule_
Definition: SubProcess.h:291
ServiceToken serviceToken_
Definition: SubProcess.h:271
edm::propagate_const< std::shared_ptr< eventsetup::EventSetupProvider > > esp_
Definition: SubProcess.h:290
std::shared_ptr< RunPrincipal > const & runPrincipalPtr(ProcessHistoryID const &phid, RunNumber_t run) const
PrincipalCache principalCache_
Definition: SubProcess.h:287
def move(src, dest)
Definition: eostools.py:511
std::map<BranchID::value_type, BranchID::value_type> const& edm::SubProcess::droppedBranchIDToKeptBranchID ( )
inlineprivate

Definition at line 255 of file SubProcess.h.

Referenced by beginJob().

255  {
257  }
std::map< BranchID::value_type, BranchID::value_type > droppedBranchIDToKeptBranchID_
Definition: SubProcess.h:311
void edm::SubProcess::enableEndPaths ( bool  active)
inline

Turn end_paths "off" if "active" is false; Turn end_paths "on" if "active" is true.

Definition at line 198 of file SubProcess.h.

References edm::for_all(), and cmsPerfStripChart::operate().

198  {
200  schedule_->enableEndPaths(active);
201  for_all(subProcesses_, [active](auto& subProcess) { subProcess.enableEndPaths(active); });
202  }
std::vector< SubProcess > subProcesses_
Definition: SubProcess.h:293
edm::propagate_const< std::unique_ptr< Schedule > > schedule_
Definition: SubProcess.h:291
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:14
ServiceToken serviceToken_
Definition: SubProcess.h:271
def operate(timelog, memlog, json_f, num)
void edm::SubProcess::endJob ( void  )
private

Definition at line 237 of file SubProcess.cc.

References EnergyCorrector::c, edm::ExceptionCollector::call(), edm::ExceptionCollector::hasThrown(), cmsPerfStripChart::operate(), edm::ExceptionCollector::rethrow(), schedule_, serviceToken_, and subProcesses_.

Referenced by doEndJob().

237  {
239  ExceptionCollector c(
240  "Multiple exceptions were thrown while executing endJob. An exception message follows for each.");
241  schedule_->endJob(c);
242  for (auto& subProcess : subProcesses_) {
243  c.call([&subProcess]() { subProcess.doEndJob(); });
244  }
245  if (c.hasThrown()) {
246  c.rethrow();
247  }
248  }
std::vector< SubProcess > subProcesses_
Definition: SubProcess.h:293
edm::propagate_const< std::unique_ptr< Schedule > > schedule_
Definition: SubProcess.h:291
ServiceToken serviceToken_
Definition: SubProcess.h:271
def operate(timelog, memlog, json_f, num)
void edm::SubProcess::endLuminosityBlock ( LuminosityBlockPrincipal const &  lb,
IOVSyncValue const &  ts,
bool  cleaningUpAfterException 
)
private
bool edm::SubProcess::endPathsEnabled ( ) const
inline

Return true if end_paths are active, and false if they are inactive.

Definition at line 205 of file SubProcess.h.

References cmsPerfStripChart::operate().

205  {
207  return schedule_->endPathsEnabled();
208  }
edm::propagate_const< std::unique_ptr< Schedule > > schedule_
Definition: SubProcess.h:291
ServiceToken serviceToken_
Definition: SubProcess.h:271
def operate(timelog, memlog, json_f, num)
void edm::SubProcess::endRun ( RunPrincipal const &  r,
IOVSyncValue const &  ts,
bool  cleaningUpAfterException 
)
private
void edm::SubProcess::fixBranchIDListsForEDAliases ( std::map< BranchID::value_type, BranchID::value_type > const &  droppedBranchIDToKeptBranchID)
private

Definition at line 311 of file SubProcess.cc.

References branchIDListHelper_, edm::for_all(), and subProcesses_.

Referenced by beginJob().

312  {
313  // Check for branches dropped while an EDAlias was kept.
314  // Replace BranchID of each dropped branch with that of the kept alias.
315  for (BranchIDList& branchIDList : branchIDListHelper_->mutableBranchIDLists()) {
316  for (BranchID::value_type& branchID : branchIDList) {
317  std::map<BranchID::value_type, BranchID::value_type>::const_iterator iter =
318  droppedBranchIDToKeptBranchID.find(branchID);
319  if (iter != droppedBranchIDToKeptBranchID.end()) {
320  branchID = iter->second;
321  }
322  }
323  }
324  for_all(subProcesses_, [&droppedBranchIDToKeptBranchID](auto& subProcess) {
325  subProcess.fixBranchIDListsForEDAliases(droppedBranchIDToKeptBranchID);
326  });
327  }
std::vector< SubProcess > subProcesses_
Definition: SubProcess.h:293
std::map< BranchID::value_type, BranchID::value_type > const & droppedBranchIDToKeptBranchID()
Definition: SubProcess.h:255
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:14
unsigned int value_type
Definition: BranchID.h:16
edm::propagate_const< std::shared_ptr< BranchIDListHelper > > branchIDListHelper_
Definition: SubProcess.h:274
std::vector< BranchID::value_type > BranchIDList
Definition: BranchIDList.h:18
std::vector<ModuleDescription const*> edm::SubProcess::getAllModuleDescriptions ( ) const

Return a vector allowing const access to all the ModuleDescriptions for this SubProcess.

*** N.B. *** Ownership of the ModuleDescriptions is not *** passed to the caller. Do not call delete on these *** pointers!

void edm::SubProcess::getTriggerReport ( TriggerReport rep) const
inline

Return the trigger report information on paths, modules-in-path, modules-in-endpath, and modules.

Definition at line 212 of file SubProcess.h.

References cmsPerfStripChart::operate().

212  {
214  schedule_->getTriggerReport(rep);
215  }
edm::propagate_const< std::unique_ptr< Schedule > > schedule_
Definition: SubProcess.h:291
ServiceToken serviceToken_
Definition: SubProcess.h:271
rep
Definition: cuy.py:1190
def operate(timelog, memlog, json_f, num)
void edm::SubProcess::keepThisBranch ( BranchDescription const &  desc,
std::map< BranchID, BranchDescription const * > &  trueBranchIDToKeptBranchDesc,
std::set< BranchID > &  keptProductsInEvent 
)
private

Definition at line 292 of file SubProcess.cc.

References edm::BranchDescription::branchID(), edm::BranchDescription::branchType(), edm::ProductSelector::checkForDuplicateKeptBranch(), edm::EDConsumerBase::consumes(), edm::InEvent, keptProducts_, edm::BranchDescription::moduleLabel(), edm::BranchDescription::originalBranchID(), edm::BranchDescription::processName(), edm::BranchDescription::produced(), edm::PRODUCT_TYPE, edm::BranchDescription::productInstanceName(), and edm::BranchDescription::unwrappedTypeID().

Referenced by selectProducts().

294  {
295  ProductSelector::checkForDuplicateKeptBranch(desc, trueBranchIDToKeptBranchDesc);
296 
297  if (desc.branchType() == InEvent) {
298  if (desc.produced()) {
299  keptProductsInEvent.insert(desc.originalBranchID());
300  } else {
301  keptProductsInEvent.insert(desc.branchID());
302  }
303  }
304  EDGetToken token = consumes(TypeToGet{desc.unwrappedTypeID(), PRODUCT_TYPE},
305  InputTag{desc.moduleLabel(), desc.productInstanceName(), desc.processName()});
306 
307  // Now put it in the list of selected branches.
308  keptProducts_[desc.branchType()].push_back(std::make_pair(&desc, token));
309  }
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
SelectedProductsForBranchType keptProducts_
Definition: SubProcess.h:300
static void checkForDuplicateKeptBranch(BranchDescription const &desc, std::map< BranchID, BranchDescription const * > &trueBranchIDToKeptBranchDesc)
SelectedProductsForBranchType const& edm::SubProcess::keptProducts ( ) const
inline

Definition at line 71 of file SubProcess.h.

References cmsRelvalreport::principal(), and convertSQLiteXML::runNumber.

Referenced by propagateProducts(), and edm::ScheduleItems::ScheduleItems().

71 { return keptProducts_; }
SelectedProductsForBranchType keptProducts_
Definition: SubProcess.h:300
void edm::SubProcess::openOutputFiles ( FileBlock fb)
inline

Definition at line 139 of file SubProcess.h.

References benchmark_cfg::fb, edm::for_all(), and cmsPerfStripChart::operate().

139  {
141  schedule_->openOutputFiles(fb);
142  for_all(subProcesses_, [&fb](auto& subProcess) { subProcess.openOutputFiles(fb); });
143  }
std::vector< SubProcess > subProcesses_
Definition: SubProcess.h:293
edm::propagate_const< std::unique_ptr< Schedule > > schedule_
Definition: SubProcess.h:291
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:14
ServiceToken serviceToken_
Definition: SubProcess.h:271
def operate(timelog, memlog, json_f, num)
SubProcess& edm::SubProcess::operator= ( SubProcess const &  )
delete
SubProcess& edm::SubProcess::operator= ( SubProcess &&  )
default
void edm::SubProcess::processAsync ( WaitingTaskHolder  iHolder,
EventPrincipal const &  e 
)
private

Definition at line 343 of file SubProcess.cc.

References edm::ProductRegistry::anyProductProduced(), printConversionInfo::aux, edm::EventPrincipal::aux(), branchIDListHelper_, edm::EventPrincipal::branchListIndexes(), edm::EventPrincipal::clearEventPrincipal(), edm::WaitingTaskHolder::doneWaiting(), esp_, edm::PrincipalCache::eventPrincipal(), edm::EventPrincipal::eventSelectionIDs(), edm::EventPrincipal::fillEventPrincipal(), edm::LuminosityBlockPrincipal::index(), edm::InEvent, inUseLumiPrincipals_, edm::EventPrincipal::luminosityBlockPrincipal(), edm::make_waiting_task(), eostools::move(), principalCache_, edm::Principal::processHistory(), edm::Principal::processHistoryID(), processHistoryRegistries_, edm::EventPrincipal::productProvenanceRetrieverPtr(), edm::Principal::productRegistry(), propagateProducts(), edm::Principal::reader(), groupFilesInBlocks::reverse, schedule_, selector_config_id_, serviceToken_, edm::EventPrincipal::setLuminosityBlockPrincipal(), edm::EventPrincipal::streamID(), subProcesses_, edm::StreamID::value(), and wantAllEvents_.

Referenced by doEventAsync().

343  {
344  EventAuxiliary aux(principal.aux());
345  aux.setProcessHistoryID(principal.processHistoryID());
346 
347  EventSelectionIDVector esids{principal.eventSelectionIDs()};
348  if (principal.productRegistry().anyProductProduced() || !wantAllEvents_) {
349  esids.push_back(selector_config_id_);
350  }
351 
352  EventPrincipal& ep = principalCache_.eventPrincipal(principal.streamID().value());
353  auto& processHistoryRegistry = processHistoryRegistries_[principal.streamID().value()];
354  processHistoryRegistry.registerProcessHistory(principal.processHistory());
355  BranchListIndexes bli(principal.branchListIndexes());
356  branchIDListHelper_->fixBranchListIndexes(bli);
357  bool deepCopyRetriever = false;
358  ep.fillEventPrincipal(
359  aux,
360  processHistoryRegistry,
361  std::move(esids),
362  std::move(bli),
363  *(principal.productProvenanceRetrieverPtr()), //NOTE: this transfers the per product provenance
364  principal.reader(),
365  deepCopyRetriever);
366  ep.setLuminosityBlockPrincipal(inUseLumiPrincipals_[principal.luminosityBlockPrincipal().index()].get());
368 
369  WaitingTaskHolder finalizeEventTask(
370  make_waiting_task(tbb::task::allocate_root(), [&ep, iHolder](std::exception_ptr const* iPtr) mutable {
371  ep.clearEventPrincipal();
372  if (iPtr) {
373  iHolder.doneWaiting(*iPtr);
374  } else {
375  iHolder.doneWaiting(std::exception_ptr());
376  }
377  }));
378  WaitingTaskHolder afterProcessTask;
379  if (subProcesses_.empty()) {
380  afterProcessTask = std::move(finalizeEventTask);
381  } else {
382  afterProcessTask = WaitingTaskHolder(make_waiting_task(
383  tbb::task::allocate_root(), [this, &ep, finalizeEventTask](std::exception_ptr const* iPtr) mutable {
384  if (not iPtr) {
385  for (auto& subProcess : boost::adaptors::reverse(subProcesses_)) {
386  subProcess.doEventAsync(finalizeEventTask, ep);
387  }
388  } else {
389  finalizeEventTask.doneWaiting(*iPtr);
390  }
391  }));
392  }
393 
394  schedule_->processOneEventAsync(
395  std::move(afterProcessTask), ep.streamID().value(), ep, esp_->eventSetup(), serviceToken_);
396  }
ParameterSetID selector_config_id_
Definition: SubProcess.h:306
std::vector< ProcessHistoryRegistry > processHistoryRegistries_
Definition: SubProcess.h:285
std::vector< SubProcess > subProcesses_
Definition: SubProcess.h:293
edm::propagate_const< std::unique_ptr< Schedule > > schedule_
Definition: SubProcess.h:291
std::vector< EventSelectionID > EventSelectionIDVector
ServiceToken serviceToken_
Definition: SubProcess.h:271
def principal(options)
std::vector< BranchListIndex > BranchListIndexes
std::vector< std::shared_ptr< LuminosityBlockPrincipal > > inUseLumiPrincipals_
Definition: SubProcess.h:289
edm::propagate_const< std::shared_ptr< eventsetup::EventSetupProvider > > esp_
Definition: SubProcess.h:290
EventPrincipal & eventPrincipal(unsigned int iStreamIndex) const
FunctorWaitingTask< F > * make_waiting_task(ALLOC &&iAlloc, F f)
Definition: WaitingTask.h:87
edm::propagate_const< std::shared_ptr< BranchIDListHelper > > branchIDListHelper_
Definition: SubProcess.h:274
void propagateProducts(BranchType type, Principal const &parentPrincipal, Principal &principal) const
Definition: SubProcess.cc:618
PrincipalCache principalCache_
Definition: SubProcess.h:287
def move(src, dest)
Definition: eostools.py:511
void edm::SubProcess::propagateProducts ( BranchType  type,
Principal const &  parentPrincipal,
Principal principal 
) const
private

Definition at line 618 of file SubProcess.cc.

References edm::BranchDescription::branchID(), edm::ProductResolverBase::connectTo(), edm::Principal::getModifiableProductResolver(), edm::Principal::getProductResolver(), and keptProducts().

Referenced by doBeginLuminosityBlockAsync(), doBeginRunAsync(), doEndLuminosityBlockAsync(), doEndRunAsync(), and processAsync().

618  {
619  SelectedProducts const& keptVector = keptProducts()[type];
620  for (auto const& item : keptVector) {
621  BranchDescription const& desc = *item.first;
622  ProductResolverBase const* parentProductResolver = parentPrincipal.getProductResolver(desc.branchID());
623  if (parentProductResolver != nullptr) {
624  ProductResolverBase* productResolver = principal.getModifiableProductResolver(desc.branchID());
625  if (productResolver != nullptr) {
626  //Propagate the per event(run)(lumi) data for this product to the subprocess.
627  //First, the product itself.
628  productResolver->connectTo(*parentProductResolver, &parentPrincipal);
629  }
630  }
631  }
632  }
type
Definition: HCALResponse.h:21
SelectedProductsForBranchType const & keptProducts() const
Definition: SubProcess.h:71
std::vector< std::pair< BranchDescription const *, EDGetToken > > SelectedProducts
def principal(options)
void edm::SubProcess::respondToCloseInputFile ( FileBlock const &  fb)
inline

Definition at line 151 of file SubProcess.h.

References edm::for_all(), and cmsPerfStripChart::operate().

151  {
153  schedule_->respondToCloseInputFile(fb);
154  for_all(subProcesses_, [&fb](auto& subProcess) { subProcess.respondToCloseInputFile(fb); });
155  }
std::vector< SubProcess > subProcesses_
Definition: SubProcess.h:293
edm::propagate_const< std::unique_ptr< Schedule > > schedule_
Definition: SubProcess.h:291
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:14
ServiceToken serviceToken_
Definition: SubProcess.h:271
def operate(timelog, memlog, json_f, num)
void edm::SubProcess::respondToOpenInputFile ( FileBlock const &  fb)

Definition at line 641 of file SubProcess.cc.

References edm::for_all(), cmsPerfStripChart::operate(), schedule_, serviceToken_, and subProcesses_.

641  {
643  schedule_->respondToOpenInputFile(fb);
644  for_all(subProcesses_, [&fb](auto& subProcess) { subProcess.respondToOpenInputFile(fb); });
645  }
std::vector< SubProcess > subProcesses_
Definition: SubProcess.h:293
edm::propagate_const< std::unique_ptr< Schedule > > schedule_
Definition: SubProcess.h:291
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:14
ServiceToken serviceToken_
Definition: SubProcess.h:271
def operate(timelog, memlog, json_f, num)
void edm::SubProcess::selectProducts ( ProductRegistry const &  preg,
ThinnedAssociationsHelper const &  parentThinnedAssociationsHelper,
std::map< BranchID, bool > &  keepAssociation 
)

Definition at line 250 of file SubProcess.cc.

References edm::ProductRegistry::allBranchDescriptions(), TrackValidation_cff::association, droppedBranchIDToKeptBranchID_, edm::ProductSelector::fillDroppedToKept(), edm::ProductSelector::initialize(), edm::ProductSelector::initialized(), keepThisBranch(), edm::BranchDescription::present(), edm::BranchDescription::produced(), edm::ProductRegistry::productList(), productSelector_, productSelectorRules_, edm::ThinnedAssociationsHelper::selectAssociationProducts(), edm::ProductSelector::selected(), edm::BranchDescription::transient(), and edm::BranchDescription::unwrappedType().

Referenced by SubProcess().

252  {
254  return;
255  productSelector_.initialize(productSelectorRules_, preg.allBranchDescriptions());
256 
257  // TODO: See if we can collapse keptProducts_ and productSelector_ into a
258  // single object. See the notes in the header for ProductSelector
259  // for more information.
260 
261  std::map<BranchID, BranchDescription const*> trueBranchIDToKeptBranchDesc;
262  std::vector<BranchDescription const*> associationDescriptions;
263  std::set<BranchID> keptProductsInEvent;
264 
265  for (auto const& it : preg.productList()) {
266  BranchDescription const& desc = it.second;
267  if (desc.transient()) {
268  // if the class of the branch is marked transient, output nothing
269  } else if (!desc.present() && !desc.produced()) {
270  // else if the branch containing the product has been previously dropped,
271  // output nothing
272  } else if (desc.unwrappedType() == typeid(ThinnedAssociation)) {
273  associationDescriptions.push_back(&desc);
274  } else if (productSelector_.selected(desc)) {
275  keepThisBranch(desc, trueBranchIDToKeptBranchDesc, keptProductsInEvent);
276  }
277  }
278 
279  parentThinnedAssociationsHelper.selectAssociationProducts(
280  associationDescriptions, keptProductsInEvent, keepAssociation);
281 
282  for (auto association : associationDescriptions) {
283  if (keepAssociation[association->branchID()]) {
284  keepThisBranch(*association, trueBranchIDToKeptBranchDesc, keptProductsInEvent);
285  }
286  }
287 
288  // Now fill in a mapping needed in the case that a branch was dropped while its EDAlias was kept.
289  ProductSelector::fillDroppedToKept(preg, trueBranchIDToKeptBranchDesc, droppedBranchIDToKeptBranchID_);
290  }
bool selected(BranchDescription const &desc) const
static void fillDroppedToKept(ProductRegistry const &preg, std::map< BranchID, BranchDescription const * > const &trueBranchIDToKeptBranchDesc, std::map< BranchID::value_type, BranchID::value_type > &droppedBranchIDToKeptBranchID_)
ProductSelectorRules productSelectorRules_
Definition: SubProcess.h:301
void keepThisBranch(BranchDescription const &desc, std::map< BranchID, BranchDescription const * > &trueBranchIDToKeptBranchDesc, std::set< BranchID > &keptProductsInEvent)
Definition: SubProcess.cc:292
std::map< BranchID::value_type, BranchID::value_type > droppedBranchIDToKeptBranchID_
Definition: SubProcess.h:311
ProductSelector productSelector_
Definition: SubProcess.h:302
bool initialized() const
void initialize(ProductSelectorRules const &rules, std::vector< BranchDescription const * > const &branchDescriptions)
bool edm::SubProcess::shouldWeCloseOutput ( ) const
inline

Definition at line 158 of file SubProcess.h.

References cmsPerfStripChart::operate().

158  {
160  if (schedule_->shouldWeCloseOutput()) {
161  return true;
162  }
163  for (auto const& subProcess : subProcesses_) {
164  if (subProcess.shouldWeCloseOutput()) {
165  return true;
166  }
167  }
168  return false;
169  }
std::vector< SubProcess > subProcesses_
Definition: SubProcess.h:293
edm::propagate_const< std::unique_ptr< Schedule > > schedule_
Definition: SubProcess.h:291
ServiceToken serviceToken_
Definition: SubProcess.h:271
def operate(timelog, memlog, json_f, num)
bool edm::SubProcess::terminate ( void  ) const
inline

Return whether each output module has reached its maximum count. If there is a subprocess, get this information from the subprocess.

Definition at line 219 of file SubProcess.h.

References cmsPerfStripChart::operate().

219  {
221  if (schedule_->terminate()) {
222  return true;
223  }
224  for (auto const& subProcess : subProcesses_) {
225  if (subProcess.terminate()) {
226  return true;
227  }
228  }
229  return false;
230  }
std::vector< SubProcess > subProcesses_
Definition: SubProcess.h:293
edm::propagate_const< std::unique_ptr< Schedule > > schedule_
Definition: SubProcess.h:291
ServiceToken serviceToken_
Definition: SubProcess.h:271
def operate(timelog, memlog, json_f, num)
std::shared_ptr<ThinnedAssociationsHelper const> edm::SubProcess::thinnedAssociationsHelper ( ) const
inlineprivate

Definition at line 263 of file SubProcess.h.

References edm::get_underlying_safe().

Referenced by SubProcess().

263  {
265  }
edm::propagate_const< std::shared_ptr< ThinnedAssociationsHelper > > thinnedAssociationsHelper_
Definition: SubProcess.h:275
std::shared_ptr< T > & get_underlying_safe(propagate_const< std::shared_ptr< T >> &iP)
std::shared_ptr<ThinnedAssociationsHelper> edm::SubProcess::thinnedAssociationsHelper ( )
inlineprivate

Definition at line 266 of file SubProcess.h.

References edm::get_underlying_safe().

266  {
268  }
edm::propagate_const< std::shared_ptr< ThinnedAssociationsHelper > > thinnedAssociationsHelper_
Definition: SubProcess.h:275
std::shared_ptr< T > & get_underlying_safe(propagate_const< std::shared_ptr< T >> &iP)
int edm::SubProcess::totalEvents ( ) const
inline

Return the number of events this SubProcess has tried to process (inclues both successes and failures, including failures due to exceptions during processing).

Definition at line 181 of file SubProcess.h.

181 { return schedule_->totalEvents(); }
edm::propagate_const< std::unique_ptr< Schedule > > schedule_
Definition: SubProcess.h:291
int edm::SubProcess::totalEventsFailed ( ) const
inline

Return the number of events that have not passed any trigger. (N.B. totalEventsFailed() + totalEventsPassed() == totalEvents()

Definition at line 191 of file SubProcess.h.

References cmsPerfStripChart::operate().

191  {
193  return schedule_->totalEventsFailed();
194  }
edm::propagate_const< std::unique_ptr< Schedule > > schedule_
Definition: SubProcess.h:291
ServiceToken serviceToken_
Definition: SubProcess.h:271
def operate(timelog, memlog, json_f, num)
int edm::SubProcess::totalEventsPassed ( ) const
inline

Return the number of events which have been passed by one or more trigger paths.

Definition at line 184 of file SubProcess.h.

References cmsPerfStripChart::operate().

184  {
186  return schedule_->totalEventsPassed();
187  }
edm::propagate_const< std::unique_ptr< Schedule > > schedule_
Definition: SubProcess.h:291
ServiceToken serviceToken_
Definition: SubProcess.h:271
def operate(timelog, memlog, json_f, num)
void edm::SubProcess::updateBranchIDListHelper ( BranchIDLists const &  branchIDLists)

Definition at line 634 of file SubProcess.cc.

References branchIDListHelper_, edm::for_all(), and subProcesses_.

Referenced by SubProcess().

634  {
635  branchIDListHelper_->updateFromParent(branchIDLists);
637  [this](auto& subProcess) { subProcess.updateBranchIDListHelper(branchIDListHelper_->branchIDLists()); });
638  }
std::vector< SubProcess > subProcesses_
Definition: SubProcess.h:293
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:14
edm::propagate_const< std::shared_ptr< BranchIDListHelper > > branchIDListHelper_
Definition: SubProcess.h:274
void edm::SubProcess::writeLumiAsync ( WaitingTaskHolder  task,
LuminosityBlockPrincipal principal 
)

Definition at line 518 of file SubProcess.cc.

References actReg_, edm::WaitingTaskHolder::doneWaiting(), edm::LuminosityBlockPrincipal::index(), inUseLumiPrincipals_, checklumidiff::l, edm::make_waiting_task(), cmsPerfStripChart::operate(), processContext_, alignCSCRings::s, schedule_, serviceToken_, and subProcesses_.

518  {
520 
521  auto l = inUseLumiPrincipals_[principal.index()];
522  auto subTasks =
523  edm::make_waiting_task(tbb::task::allocate_root(), [this, l, task](std::exception_ptr const* iExcept) mutable {
524  if (iExcept) {
525  task.doneWaiting(*iExcept);
526  } else {
528  for (auto& s : subProcesses_) {
529  s.writeLumiAsync(task, *l);
530  }
531  }
532  });
533  schedule_->writeLumiAsync(WaitingTaskHolder(subTasks), *l, &processContext_, actReg_.get());
534  }
std::vector< SubProcess > subProcesses_
Definition: SubProcess.h:293
edm::propagate_const< std::unique_ptr< Schedule > > schedule_
Definition: SubProcess.h:291
ServiceToken serviceToken_
Definition: SubProcess.h:271
def principal(options)
std::vector< std::shared_ptr< LuminosityBlockPrincipal > > inUseLumiPrincipals_
Definition: SubProcess.h:289
FunctorWaitingTask< F > * make_waiting_task(ALLOC &&iAlloc, F f)
Definition: WaitingTask.h:87
std::shared_ptr< ActivityRegistry > actReg_
Definition: SubProcess.h:270
ProcessContext processContext_
Definition: SubProcess.h:279
def operate(timelog, memlog, json_f, num)
void edm::SubProcess::writeRunAsync ( edm::WaitingTaskHolder  task,
ProcessHistoryID const &  parentPhID,
int  runNumber,
MergeableRunProductMetadata const *  mergeableRunProductMetadata 
)

Definition at line 443 of file SubProcess.cc.

References actReg_, edm::WaitingTaskHolder::doneWaiting(), edm::make_waiting_task(), cmsPerfStripChart::operate(), parentToChildPhID_, principalCache_, processContext_, edm::PrincipalCache::runPrincipal(), alignCSCRings::s, schedule_, serviceToken_, and subProcesses_.

446  {
448  std::map<ProcessHistoryID, ProcessHistoryID>::const_iterator it = parentToChildPhID_.find(parentPhID);
449  assert(it != parentToChildPhID_.end());
450  auto const& childPhID = it->second;
451 
452  auto subTasks = edm::make_waiting_task(
453  tbb::task::allocate_root(),
454  [this, childPhID, runNumber, task, mergeableRunProductMetadata](std::exception_ptr const* iExcept) mutable {
455  if (iExcept) {
456  task.doneWaiting(*iExcept);
457  } else {
459  for (auto& s : subProcesses_) {
460  s.writeRunAsync(task, childPhID, runNumber, mergeableRunProductMetadata);
461  }
462  }
463  });
464  schedule_->writeRunAsync(WaitingTaskHolder(subTasks),
467  actReg_.get(),
468  mergeableRunProductMetadata);
469  }
std::vector< SubProcess > subProcesses_
Definition: SubProcess.h:293
edm::propagate_const< std::unique_ptr< Schedule > > schedule_
Definition: SubProcess.h:291
ServiceToken serviceToken_
Definition: SubProcess.h:271
void doneWaiting(std::exception_ptr iExcept)
std::map< ProcessHistoryID, ProcessHistoryID > parentToChildPhID_
Definition: SubProcess.h:292
FunctorWaitingTask< F > * make_waiting_task(ALLOC &&iAlloc, F f)
Definition: WaitingTask.h:87
std::shared_ptr< ActivityRegistry > actReg_
Definition: SubProcess.h:270
ProcessContext processContext_
Definition: SubProcess.h:279
PrincipalCache principalCache_
Definition: SubProcess.h:287
RunPrincipal & runPrincipal(ProcessHistoryID const &phid, RunNumber_t run) const
def operate(timelog, memlog, json_f, num)

Member Data Documentation

std::unique_ptr<ExceptionToActionTable const> edm::SubProcess::act_table_
private

Definition at line 277 of file SubProcess.h.

Referenced by SubProcess().

std::shared_ptr<ActivityRegistry> edm::SubProcess::actReg_
private

Definition at line 270 of file SubProcess.h.

Referenced by beginJob(), SubProcess(), writeLumiAsync(), and writeRunAsync().

edm::propagate_const<std::shared_ptr<BranchIDListHelper> > edm::SubProcess::branchIDListHelper_
private
std::map<BranchID::value_type, BranchID::value_type> edm::SubProcess::droppedBranchIDToKeptBranchID_
private

Definition at line 311 of file SubProcess.h.

Referenced by selectProducts(), and SubProcess().

edm::propagate_const<std::shared_ptr<eventsetup::EventSetupProvider> > edm::SubProcess::esp_
private
std::vector<HistoryAppender> edm::SubProcess::historyAppenders_
private

Definition at line 286 of file SubProcess.h.

Referenced by doBeginRunAsync(), and SubProcess().

unsigned int edm::SubProcess::historyLumiOffset_
private

Definition at line 283 of file SubProcess.h.

Referenced by doBeginLuminosityBlockAsync(), and SubProcess().

unsigned int edm::SubProcess::historyRunOffset_
private

Definition at line 284 of file SubProcess.h.

Referenced by doBeginRunAsync(), and SubProcess().

std::vector<std::shared_ptr<LuminosityBlockPrincipal> > edm::SubProcess::inUseLumiPrincipals_
private
SelectedProductsForBranchType edm::SubProcess::keptProducts_
private

Definition at line 300 of file SubProcess.h.

Referenced by keepThisBranch().

std::shared_ptr<ProductRegistry const> edm::SubProcess::parentPreg_
private

Definition at line 272 of file SubProcess.h.

Referenced by beginJob().

std::map<ProcessHistoryID, ProcessHistoryID> edm::SubProcess::parentToChildPhID_
private

Definition at line 292 of file SubProcess.h.

Referenced by deleteRunFromCache(), doBeginRunAsync(), and writeRunAsync().

PathsAndConsumesOfModules edm::SubProcess::pathsAndConsumesOfModules_
private

Definition at line 280 of file SubProcess.h.

Referenced by beginJob().

std::shared_ptr<ProductRegistry const> edm::SubProcess::preg_
private

Definition at line 273 of file SubProcess.h.

Referenced by beginJob(), doBeginRunAsync(), and SubProcess().

PrincipalCache edm::SubProcess::principalCache_
private
std::shared_ptr<ProcessConfiguration const> edm::SubProcess::processConfiguration_
private

Definition at line 278 of file SubProcess.h.

Referenced by beginJob(), doBeginRunAsync(), and SubProcess().

ProcessContext edm::SubProcess::processContext_
private

Definition at line 279 of file SubProcess.h.

Referenced by beginJob(), SubProcess(), writeLumiAsync(), and writeRunAsync().

std::vector<ProcessHistoryRegistry> edm::SubProcess::processHistoryRegistries_
private
edm::propagate_const<std::unique_ptr<ParameterSet> > edm::SubProcess::processParameterSet_
private

Definition at line 294 of file SubProcess.h.

Referenced by SubProcess().

ProductSelector edm::SubProcess::productSelector_
private

Definition at line 302 of file SubProcess.h.

Referenced by selectProducts().

ProductSelectorRules edm::SubProcess::productSelectorRules_
private

Definition at line 301 of file SubProcess.h.

Referenced by selectProducts().

edm::propagate_const<std::unique_ptr<Schedule> > edm::SubProcess::schedule_
private
ParameterSetID edm::SubProcess::selector_config_id_
private

Definition at line 306 of file SubProcess.h.

Referenced by processAsync(), and SubProcess().

detail::TriggerResultsBasedEventSelector edm::SubProcess::selectors_
mutableprivate

Definition at line 307 of file SubProcess.h.

Referenced by doEventAsync(), and SubProcess().

ServiceToken edm::SubProcess::serviceToken_
private
std::vector<SubProcess> edm::SubProcess::subProcesses_
private
edm::propagate_const<std::shared_ptr<SubProcessParentageHelper> > edm::SubProcess::subProcessParentageHelper_
private

Definition at line 276 of file SubProcess.h.

Referenced by SubProcess().

edm::propagate_const<std::shared_ptr<ThinnedAssociationsHelper> > edm::SubProcess::thinnedAssociationsHelper_
private

Definition at line 275 of file SubProcess.h.

Referenced by SubProcess().

bool edm::SubProcess::wantAllEvents_
private

Definition at line 305 of file SubProcess.h.

Referenced by doEventAsync(), processAsync(), and SubProcess().