CMS 3D CMS Logo

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

#include <SubProcess.h>

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

Public Types

using ProcessBlockType = PrincipalCache::ProcessBlockType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 

Public Member Functions

void clearCounters ()
 Clear all the counters in the trigger report. More...
 
void clearProcessBlockPrincipal (ProcessBlockType)
 
void closeOutputFiles ()
 
void deleteLumiFromCache (LuminosityBlockPrincipal &)
 
void deleteRunFromCache (ProcessHistoryID const &parentPhID, int runNumber)
 
void doBeginJob ()
 
void doBeginLuminosityBlockAsync (WaitingTaskHolder iHolder, LumiTransitionInfo const &iTransitionInfo)
 
template<typename Traits >
void doBeginProcessBlockAsync (WaitingTaskHolder iHolder, ProcessBlockTransitionInfo const &iTransitionInfo, bool cleaningUpAfterException)
 
template<>
void doBeginProcessBlockAsync (WaitingTaskHolder iHolder, ProcessBlockTransitionInfo const &iTransitionInfo, bool cleaningUpAfterException)
 
template<>
void doBeginProcessBlockAsync (WaitingTaskHolder iHolder, ProcessBlockTransitionInfo const &iTransitionInfo, bool)
 
void doBeginRunAsync (WaitingTaskHolder iHolder, RunTransitionInfo const &iTransitionInfo)
 
void doBeginStream (unsigned int)
 
void doEndJob ()
 
void doEndLuminosityBlockAsync (WaitingTaskHolder iHolder, LumiTransitionInfo const &iTransitionInfo, bool cleaningUpAfterException)
 
void doEndProcessBlockAsync (WaitingTaskHolder iHolder, ProcessBlockTransitionInfo const &iTransitionInfo, bool cleaningUpAfterException)
 
void doEndRunAsync (WaitingTaskHolder iHolder, RunTransitionInfo const &iTransitionInfo, bool cleaningUpAfterException)
 
void doEndStream (unsigned int)
 
void doEventAsync (WaitingTaskHolder iHolder, EventPrincipal const &principal, std::vector< std::shared_ptr< const EventSetupImpl >> const *)
 
void doStreamBeginLuminosityBlockAsync (WaitingTaskHolder iHolder, unsigned int iID, LumiTransitionInfo const &)
 
void doStreamBeginRunAsync (WaitingTaskHolder iHolder, unsigned int iID, RunTransitionInfo const &)
 
void doStreamEndLuminosityBlockAsync (WaitingTaskHolder iHolder, unsigned int iID, LumiTransitionInfo const &, bool cleaningUpAfterException)
 
void doStreamEndRunAsync (WaitingTaskHolder iHolder, unsigned int iID, RunTransitionInfo const &, 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
 
std::vector< ModuleProcessNamekeepOnlyConsumedUnscheduledModules (bool deleteModules)
 
SelectedProductsForBranchType const & keptProducts () const
 
void openOutputFiles (FileBlock &fb)
 
SubProcessoperator= (SubProcess &&)=delete
 
SubProcessoperator= (SubProcess const &)=delete
 
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, ProcessBlockHelperBase const &parentProcessBlockHelper, 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 &&)=default
 
 SubProcess (SubProcess const &)=delete
 
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 writeProcessBlockAsync (edm::WaitingTaskHolder task, ProcessBlockType)
 
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 &&)=default
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
std::vector< ESProxyIndex > const & esGetTokenIndicesVector (edm::Transition iTrans) const
 
std::vector< ESRecordIndex > const & esGetTokenRecordIndicesVector (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::array< std::vector< ModuleDescription const * > *, NumBranchTypes > &modulesAll, std::vector< ModuleProcessName > &modulesInPreviousProcesses, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void selectInputProcessBlocks (ProductRegistry const &productRegistry, ProcessBlockHelperBase const &processBlockHelperBase)
 
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 ()
 
std::shared_ptr< BranchIDListHelper > & branchIDListHelper ()
 
std::shared_ptr< BranchIDListHelper const > branchIDListHelper () const
 
std::map< BranchID::value_type, BranchID::value_type > const & droppedBranchIDToKeptBranchID ()
 
void endJob ()
 
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)
 
bool parentProducedProductIsKept (Principal const &parentPrincipal, Principal &principal) const
 
void processAsync (WaitingTaskHolder iHolder, EventPrincipal const &e, std::vector< std::shared_ptr< const EventSetupImpl >> const *)
 
void propagateProducts (BranchType type, Principal const &parentPrincipal, Principal &principal) const
 
std::shared_ptr< ThinnedAssociationsHelperthinnedAssociationsHelper ()
 
std::shared_ptr< ThinnedAssociationsHelper const > thinnedAssociationsHelper () const
 

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_
 
edm::propagate_const< std::shared_ptr< SubProcessBlockHelper > > processBlockHelper_
 
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

- Protected Member Functions inherited from edm::EDConsumerBase
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
template<BranchType B = InEvent>
EDConsumerBaseAdaptor< B > consumes (edm::InputTag tag) noexcept
 
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<Transition Tr = Transition::Event>
constexpr auto esConsumes () noexcept
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<Transition Tr = Transition::Event>
auto esConsumes (ESInputTag tag) noexcept
 
template<Transition Tr = Transition::Event>
ESGetTokenGeneric esConsumes (eventsetup::EventSetupRecordKey const &iRecord, eventsetup::DataKey const &iKey)
 Used with EventSetupRecord::doGet. More...
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 

Detailed Description

Definition at line 52 of file SubProcess.h.

Member Typedef Documentation

◆ ProcessBlockType

Definition at line 134 of file SubProcess.h.

Constructor & Destructor Documentation

◆ SubProcess() [1/3]

edm::SubProcess::SubProcess ( ParameterSet parameterSet,
ParameterSet const &  topLevelParameterSet,
std::shared_ptr< ProductRegistry const >  parentProductRegistry,
std::shared_ptr< BranchIDListHelper const >  parentBranchIDListHelper,
ProcessBlockHelperBase const &  parentProcessBlockHelper,
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 50 of file SubProcess.cc.

63  : EDConsumerBase(),
64  serviceToken_(),
65  parentPreg_(parentProductRegistry),
66  preg_(),
68  act_table_(),
70  historyLumiOffset_(preallocConfig.numberOfStreams()),
71  historyRunOffset_(historyLumiOffset_ + preallocConfig.numberOfLuminosityBlocks()),
72  processHistoryRegistries_(historyRunOffset_ + preallocConfig.numberOfRuns()),
73  historyAppenders_(historyRunOffset_ + preallocConfig.numberOfRuns()),
75  esp_(),
76  schedule_(),
78  subProcesses_(),
80  productSelectorRules_(parameterSet, "outputCommands", "OutputModule"),
82  wantAllEvents_(true) {
83  //Setup the event selection
85 
86  ParameterSet selectevents = parameterSet.getUntrackedParameterSet("SelectEvents", ParameterSet());
87 
88  selectevents.registerIt(); // Just in case this PSet is not registered
90  selectevents, tns->getProcessName(), getAllTriggerNames(), selectors_, consumesCollector());
91  std::map<std::string, std::vector<std::pair<std::string, int>>> outputModulePathPositions;
93  selectevents, "", outputModulePathPositions, parentProductRegistry->anyProductProduced());
94 
95  std::map<BranchID, bool> keepAssociation;
96  selectProducts(*parentProductRegistry, parentThinnedAssociationsHelper, keepAssociation);
97 
98  std::string const maxEvents("maxEvents");
99  std::string const maxLumis("maxLuminosityBlocks");
100 
101  // propagate_const<T> has no reset() function
103  std::unique_ptr<ParameterSet>(parameterSet.popParameterSet(std::string("process")).release());
104 
105  // if this process has a maxEvents or maxLuminosityBlocks parameter set, remove them.
106  if (processParameterSet_->exists(maxEvents)) {
107  processParameterSet_->popParameterSet(maxEvents);
108  }
109  if (processParameterSet_->exists(maxLumis)) {
110  processParameterSet_->popParameterSet(maxLumis);
111  }
112 
113  // if the top level process has a maxEvents or maxLuminosityBlocks parameter set, add them to this process.
114  if (topLevelParameterSet.exists(maxEvents)) {
115  processParameterSet_->addUntrackedParameter<ParameterSet>(
116  maxEvents, topLevelParameterSet.getUntrackedParameterSet(maxEvents));
117  }
118  if (topLevelParameterSet.exists(maxLumis)) {
119  processParameterSet_->addUntrackedParameter<ParameterSet>(
120  maxLumis, topLevelParameterSet.getUntrackedParameterSet(maxLumis));
121  }
122 
123  // If there are subprocesses, pop the subprocess parameter sets out of the process parameter set
124  auto subProcessVParameterSet = popSubProcessVParameterSet(*processParameterSet_);
125  bool hasSubProcesses = subProcessVParameterSet.size() != 0ull;
126 
127  // Validates the parameters in the 'options', 'maxEvents', and 'maxLuminosityBlocks'
128  // top level parameter sets. Default values are also set in here if the
129  // parameters were not explicitly set.
131 
132  processBlockHelper_ = std::make_shared<SubProcessBlockHelper>();
133 
134  ScheduleItems items(*parentProductRegistry, *this, *processBlockHelper_, parentProcessBlockHelper);
135  actReg_ = items.actReg_;
136 
137  //initialize the services
138  ServiceToken iToken;
139 
140  // get any configured services.
141  auto serviceSets = processParameterSet_->popVParameterSet(std::string("services"));
142 
143  ServiceToken newToken = items.initServices(serviceSets, *processParameterSet_, token, iLegacy, false);
144  parentActReg.connectToSubProcess(*items.actReg_);
145  serviceToken_ = items.addCPRandTNS(*processParameterSet_, newToken);
146 
147  //make the services available
149 
150  // intialize miscellaneous items
151  items.initMisc(*processParameterSet_);
152 
153  // intialize the event setup provider
154  esp_ = esController.makeProvider(*processParameterSet_, actReg_.get());
155 
156  branchIDListHelper_ = items.branchIDListHelper();
157  updateBranchIDListHelper(parentBranchIDListHelper->branchIDLists());
158 
159  thinnedAssociationsHelper_ = items.thinnedAssociationsHelper();
160  thinnedAssociationsHelper_->updateFromParentProcess(
161  parentThinnedAssociationsHelper, keepAssociation, droppedBranchIDToKeptBranchID_);
162 
163  // intialize the Schedule
164  schedule_ = items.initSchedule(
165  *processParameterSet_, hasSubProcesses, preallocConfig, &processContext_, *processBlockHelper_);
166 
167  // set the items
168  act_table_ = std::move(items.act_table_);
169  preg_ = items.preg();
170 
171  subProcessParentageHelper_ = items.subProcessParentageHelper();
172  subProcessParentageHelper_->update(parentSubProcessParentageHelper, *parentProductRegistry);
173 
174  //CMS-THREADING this only works since Run/Lumis are synchronous so when principalCache asks for
175  // the reducedProcessHistoryID from a full ProcessHistoryID that registry will not be in use by
176  // another thread. We really need to change how this is done in the PrincipalCache.
178 
179  processConfiguration_ = items.processConfiguration();
181  processContext_.setParentProcessContext(parentProcessContext);
182 
184  for (unsigned int index = 0; index < preallocConfig.numberOfStreams(); ++index) {
185  auto ep = std::make_shared<EventPrincipal>(preg_,
190  index,
191  false /*not primary process*/,
194  }
195  for (unsigned int index = 0; index < preallocConfig.numberOfLuminosityBlocks(); ++index) {
196  auto lbpp = std::make_unique<LuminosityBlockPrincipal>(
199  }
200 
201  {
202  auto pb = std::make_unique<ProcessBlockPrincipal>(preg_, *processConfiguration_, false);
204 
205  auto pbForInput = std::make_unique<ProcessBlockPrincipal>(preg_, *processConfiguration_, false);
207  }
208 
209  inUseLumiPrincipals_.resize(preallocConfig.numberOfLuminosityBlocks());
210 
211  subProcesses_.reserve(subProcessVParameterSet.size());
212  for (auto& subProcessPSet : subProcessVParameterSet) {
213  subProcesses_.emplace_back(subProcessPSet,
214  topLevelParameterSet,
215  preg_,
220  esController,
221  *items.actReg_,
222  newToken,
223  iLegacy,
224  preallocConfig,
225  &processContext_);
226  }
227  }

References act_table_, actReg_, branchIDListHelper(), branchIDListHelper_, edm::detail::configureEventSelector(), edm::ActivityRegistry::connectToSubProcess(), edm::EDConsumerBase::consumesCollector(), droppedBranchIDToKeptBranchID_, SiStripBadComponentsDQMServiceTemplate_cfg::ep, esp_, edm::ParameterSet::exists(), edm::getAllTriggerNames(), edm::ParameterSet::getUntrackedParameterSet(), historyAppenders_, historyLumiOffset_, historyRunOffset_, edm::PrincipalCache::insert(), edm::PrincipalCache::insertForInput(), inUseLumiPrincipals_, mps_monitormerge::items, edm::eventsetup::EventSetupsController::makeProvider(), Data_TkAlMinBias_Run2018C_PromptReco_v3_cff::maxEvents, eostools::move(), edm::PreallocationConfiguration::numberOfLuminosityBlocks(), edm::PreallocationConfiguration::numberOfStreams(), edm::parameterSet(), edm::ParameterSet::popParameterSet(), edm::popSubProcessVParameterSet(), preg_, principalCache_, processBlockHelper_, 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_, unpackBuffers-CaloStage2::token, updateBranchIDListHelper(), edm::validateTopLevelParameterSets(), and wantAllEvents_.

◆ ~SubProcess()

edm::SubProcess::~SubProcess ( )
override

Definition at line 229 of file SubProcess.cc.

229 {}

◆ SubProcess() [2/3]

edm::SubProcess::SubProcess ( SubProcess const &  )
delete

◆ SubProcess() [3/3]

edm::SubProcess::SubProcess ( SubProcess &&  )
default

Member Function Documentation

◆ beginJob()

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

Definition at line 290 of file SubProcess.cc.

290  {
291  // If event selection is being used, the SubProcess class reads TriggerResults
292  // object(s) in the parent process from the event. This next call is needed for
293  // getByToken to work properly. Normally, this is done by the worker, but since
294  // a SubProcess is not a module, it has no worker.
295  updateLookup(InEvent, *parentPreg_->productLookup(InEvent), false);
296 
297  if (!droppedBranchIDToKeptBranchID().empty()) {
299  }
301  actReg_->preBeginJobSignal_(pathsAndConsumesOfModules_, processContext_);
302  schedule_->beginJob(*preg_, esp_->recordsToProxyIndices(), *processBlockHelper_);
303  for_all(subProcesses_, [](auto& subProcess) { subProcess.doBeginJob(); });
304  }

References actReg_, droppedBranchIDToKeptBranchID(), esp_, fixBranchIDListsForEDAliases(), edm::for_all(), edm::InEvent, parentPreg_, pathsAndConsumesOfModules_, preg_, processBlockHelper_, processContext_, schedule_, serviceToken_, subProcesses_, and edm::EDConsumerBase::updateLookup().

Referenced by doBeginJob().

◆ branchIDListHelper() [1/2]

std::shared_ptr<BranchIDListHelper>& edm::SubProcess::branchIDListHelper ( )
inlineprivate

Definition at line 276 of file SubProcess.h.

References branchIDListHelper_, and edm::get_underlying_safe().

◆ branchIDListHelper() [2/2]

std::shared_ptr<BranchIDListHelper const> edm::SubProcess::branchIDListHelper ( ) const
inlineprivate

Definition at line 273 of file SubProcess.h.

273  {
275  }

References branchIDListHelper_, and edm::get_underlying_safe().

Referenced by SubProcess().

◆ clearCounters()

void edm::SubProcess::clearCounters ( )
inline

Clear all the counters in the trigger report.

Definition at line 248 of file SubProcess.h.

248  {
250  schedule_->clearCounters();
251  for_all(subProcesses_, [](auto& subProcess) { subProcess.clearCounters(); });
252  }

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

◆ clearProcessBlockPrincipal()

void edm::SubProcess::clearProcessBlockPrincipal ( ProcessBlockType  processBlockType)

Definition at line 660 of file SubProcess.cc.

660  {
661  ProcessBlockPrincipal& processBlockPrincipal = principalCache_.processBlockPrincipal(processBlockType);
662  processBlockPrincipal.clearPrincipal();
663  for (auto& s : subProcesses_) {
664  s.clearProcessBlockPrincipal(processBlockType);
665  }
666  }

References edm::Principal::clearPrincipal(), principalCache_, edm::PrincipalCache::processBlockPrincipal(), alignCSCRings::s, and subProcesses_.

◆ closeOutputFiles()

void edm::SubProcess::closeOutputFiles ( )
inline

Definition at line 147 of file SubProcess.h.

147  {
149  schedule_->closeOutputFiles();
150  for_all(subProcesses_, [](auto& subProcess) { subProcess.closeOutputFiles(); });
151  }

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

◆ deleteLumiFromCache()

void edm::SubProcess::deleteLumiFromCache ( LuminosityBlockPrincipal principal)

Definition at line 721 of file SubProcess.cc.

721  {
722  //release from list but stay around till end of routine
723  auto lb = std::move(inUseLumiPrincipals_[principal.index()]);
724  for (auto& s : subProcesses_) {
725  s.deleteLumiFromCache(*lb);
726  }
727  lb->clearPrincipal();
728  }

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

◆ deleteRunFromCache()

void edm::SubProcess::deleteRunFromCache ( ProcessHistoryID const &  parentPhID,
int  runNumber 
)

Definition at line 651 of file SubProcess.cc.

651  {
652  std::map<ProcessHistoryID, ProcessHistoryID>::const_iterator it = parentToChildPhID_.find(parentPhID);
653  assert(it != parentToChildPhID_.end());
654  auto const& childPhID = it->second;
655  principalCache_.deleteRun(childPhID, runNumber);
657  [&childPhID, runNumber](auto& subProcess) { subProcess.deleteRunFromCache(childPhID, runNumber); });
658  }

References cms::cuda::assert(), edm::PrincipalCache::deleteRun(), edm::for_all(), parentToChildPhID_, principalCache_, convertSQLiteXML::runNumber, and subProcesses_.

◆ doBeginJob()

void edm::SubProcess::doBeginJob ( )

Definition at line 286 of file SubProcess.cc.

286 { this->beginJob(); }

References beginJob().

◆ doBeginLuminosityBlockAsync()

void edm::SubProcess::doBeginLuminosityBlockAsync ( WaitingTaskHolder  iHolder,
LumiTransitionInfo const &  iTransitionInfo 
)

Definition at line 668 of file SubProcess.cc.

668  {
670 
671  LuminosityBlockPrincipal const& parentPrincipal = iTransitionInfo.principal();
672  auto aux = parentPrincipal.aux();
673  aux.setProcessHistoryID(parentPrincipal.processHistoryID());
675  lbpp->setAux(aux);
676  auto& processHistoryRegistry = processHistoryRegistries_[historyLumiOffset_ + lbpp->index()];
677  inUseLumiPrincipals_[parentPrincipal.index()] = lbpp;
678  processHistoryRegistry.registerProcessHistory(parentPrincipal.processHistory());
679  lbpp->fillLuminosityBlockPrincipal(&parentPrincipal.processHistory(), parentPrincipal.reader());
680  lbpp->setRunPrincipal(principalCache_.runPrincipalPtr());
681  LuminosityBlockPrincipal& lbp = *lbpp;
682  propagateProducts(InLumi, parentPrincipal, lbp);
683 
684  std::vector<std::shared_ptr<const EventSetupImpl>> const* eventSetupImpls = iTransitionInfo.eventSetupImpls();
685  LumiTransitionInfo transitionInfo(lbp, *((*eventSetupImpls)[esp_->subProcessIndex()]), eventSetupImpls);
686  using Traits = OccurrenceTraits<LuminosityBlockPrincipal, BranchActionGlobalBegin>;
687  beginGlobalTransitionAsync<Traits>(std::move(iHolder), *schedule_, transitionInfo, serviceToken_, subProcesses_);
688  }

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

Referenced by edm::subProcessDoGlobalBeginTransitionAsync().

◆ doBeginProcessBlockAsync() [1/3]

template<typename Traits >
void edm::SubProcess::doBeginProcessBlockAsync ( WaitingTaskHolder  iHolder,
ProcessBlockTransitionInfo const &  iTransitionInfo,
bool  cleaningUpAfterException 
)

◆ doBeginProcessBlockAsync() [2/3]

template<>
void edm::SubProcess::doBeginProcessBlockAsync ( WaitingTaskHolder  iHolder,
ProcessBlockTransitionInfo const &  iTransitionInfo,
bool  cleaningUpAfterException 
)

Definition at line 473 of file SubProcess.cc.

474  {
476 
477  ProcessBlockPrincipal& processBlockPrincipal = principalCache_.inputProcessBlockPrincipal();
478  ProcessBlockPrincipal const& parentPrincipal = iTransitionInfo.principal();
479  processBlockPrincipal.fillProcessBlockPrincipal(parentPrincipal.processName(), parentPrincipal.reader());
480  propagateProducts(InProcess, parentPrincipal, processBlockPrincipal);
481 
482  ProcessBlockTransitionInfo transitionInfo(processBlockPrincipal);
483  using Traits = OccurrenceTraits<ProcessBlockPrincipal, BranchActionProcessBlockInput>;
484  beginGlobalTransitionAsync<Traits>(
485  std::move(iHolder), *schedule_, transitionInfo, serviceToken_, subProcesses_, cleaningUpAfterException);
486  }

References edm::ProcessBlockPrincipal::fillProcessBlockPrincipal(), edm::InProcess, eostools::move(), edm::ProcessBlockPrincipal::processName(), and edm::Principal::reader().

◆ doBeginProcessBlockAsync() [3/3]

template<>
void edm::SubProcess::doBeginProcessBlockAsync ( WaitingTaskHolder  iHolder,
ProcessBlockTransitionInfo const &  iTransitionInfo,
bool   
)

Definition at line 489 of file SubProcess.cc.

490  {
492 
493  ProcessBlockPrincipal& processBlockPrincipal = principalCache_.processBlockPrincipal();
494  ProcessBlockPrincipal const& parentPrincipal = iTransitionInfo.principal();
495  processBlockPrincipal.fillProcessBlockPrincipal(processConfiguration_->processName());
496  propagateProducts(InProcess, parentPrincipal, processBlockPrincipal);
497 
498  ProcessBlockTransitionInfo transitionInfo(processBlockPrincipal);
499  using Traits = OccurrenceTraits<ProcessBlockPrincipal, BranchActionGlobalBegin>;
500  beginGlobalTransitionAsync<Traits>(std::move(iHolder), *schedule_, transitionInfo, serviceToken_, subProcesses_);
501  }

References edm::ProcessBlockPrincipal::fillProcessBlockPrincipal(), edm::InProcess, and eostools::move().

◆ doBeginRunAsync()

void edm::SubProcess::doBeginRunAsync ( WaitingTaskHolder  iHolder,
RunTransitionInfo const &  iTransitionInfo 
)

Definition at line 562 of file SubProcess.cc.

562  {
564 
565  RunPrincipal const& parentPrincipal = iTransitionInfo.principal();
566  auto aux = std::make_shared<RunAuxiliary>(parentPrincipal.aux());
567  aux->setProcessHistoryID(parentPrincipal.processHistoryID());
568  auto rpp = std::make_shared<RunPrincipal>(aux,
569  preg_,
571  &(historyAppenders_[historyRunOffset_ + parentPrincipal.index()]),
572  parentPrincipal.index(),
573  false);
574  auto& processHistoryRegistry = processHistoryRegistries_[historyRunOffset_ + parentPrincipal.index()];
575  processHistoryRegistry.registerProcessHistory(parentPrincipal.processHistory());
576  rpp->fillRunPrincipal(processHistoryRegistry, parentPrincipal.reader());
577  principalCache_.insert(rpp);
578 
579  ProcessHistoryID const& parentInputReducedPHID = parentPrincipal.reducedProcessHistoryID();
580  ProcessHistoryID const& inputReducedPHID = rpp->reducedProcessHistoryID();
581 
582  parentToChildPhID_.insert(std::make_pair(parentInputReducedPHID, inputReducedPHID));
583 
584  RunPrincipal& rp = *principalCache_.runPrincipalPtr();
585  propagateProducts(InRun, parentPrincipal, rp);
586 
587  RunTransitionInfo transitionInfo(rp, esp_->eventSetupImpl());
588  using Traits = OccurrenceTraits<RunPrincipal, BranchActionGlobalBegin>;
589  beginGlobalTransitionAsync<Traits>(std::move(iHolder), *schedule_, transitionInfo, serviceToken_, subProcesses_);
590  }

References printConversionInfo::aux, edm::RunPrincipal::aux(), esp_, historyAppenders_, historyRunOffset_, edm::RunPrincipal::index(), edm::InRun, edm::PrincipalCache::insert(), eostools::move(), parentToChildPhID_, preg_, edm::RunTransitionInfo::principal(), 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().

◆ doBeginStream()

void edm::SubProcess::doBeginStream ( unsigned int  iID)

Definition at line 730 of file SubProcess.cc.

730  {
732  schedule_->beginStream(iID);
733  for_all(subProcesses_, [iID](auto& subProcess) { subProcess.doBeginStream(iID); });
734  }

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

◆ doEndJob()

void edm::SubProcess::doEndJob ( )

Definition at line 288 of file SubProcess.cc.

288 { endJob(); }

References endJob().

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

◆ doEndLuminosityBlockAsync()

void edm::SubProcess::doEndLuminosityBlockAsync ( WaitingTaskHolder  iHolder,
LumiTransitionInfo const &  iTransitionInfo,
bool  cleaningUpAfterException 
)

Definition at line 690 of file SubProcess.cc.

692  {
693  LuminosityBlockPrincipal const& parentPrincipal = iTransitionInfo.principal();
694  LuminosityBlockPrincipal& lbp = *inUseLumiPrincipals_[parentPrincipal.index()];
695  propagateProducts(InLumi, parentPrincipal, lbp);
696 
697  std::vector<std::shared_ptr<const EventSetupImpl>> const* eventSetupImpls = iTransitionInfo.eventSetupImpls();
698  LumiTransitionInfo transitionInfo(lbp, *((*eventSetupImpls)[esp_->subProcessIndex()]), eventSetupImpls);
699  using Traits = OccurrenceTraits<LuminosityBlockPrincipal, BranchActionGlobalEnd>;
700  endGlobalTransitionAsync<Traits>(
701  std::move(iHolder), *schedule_, transitionInfo, serviceToken_, subProcesses_, cleaningUpAfterException);
702  }

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

Referenced by edm::subProcessDoGlobalEndTransitionAsync().

◆ doEndProcessBlockAsync()

void edm::SubProcess::doEndProcessBlockAsync ( WaitingTaskHolder  iHolder,
ProcessBlockTransitionInfo const &  iTransitionInfo,
bool  cleaningUpAfterException 
)

Definition at line 503 of file SubProcess.cc.

505  {
506  ProcessBlockPrincipal& processBlockPrincipal = principalCache_.processBlockPrincipal();
507  ProcessBlockPrincipal const& parentPrincipal = iTransitionInfo.principal();
508  propagateProducts(InProcess, parentPrincipal, processBlockPrincipal);
509 
510  ProcessBlockTransitionInfo transitionInfo(processBlockPrincipal);
511 
512  if (parentProducedProductIsKept(parentPrincipal, processBlockPrincipal)) {
513  auto& taskGroup = *iHolder.group();
514  auto runEndProcessBlock =
515  make_waiting_task([this, iWait = std::move(iHolder), info = transitionInfo, cleaningUpAfterException](
516  std::exception_ptr const* iPtr) mutable {
517  ProcessBlockPrincipal& inputProcessBlockPrincipal = principalCache_.inputProcessBlockPrincipal();
518  inputProcessBlockPrincipal.clearPrincipal();
519  for (auto& s : subProcesses_) {
520  s.clearProcessBlockPrincipal(ProcessBlockType::Input);
521  }
522  if (iPtr) {
523  iWait.doneWaiting(*iPtr);
524  } else {
525  using Traits = OccurrenceTraits<ProcessBlockPrincipal, BranchActionGlobalEnd>;
526  endGlobalTransitionAsync<Traits>(
527  std::move(iWait), *schedule_, info, serviceToken_, subProcesses_, cleaningUpAfterException);
528  }
529  });
530  WaitingTaskHolder holder(taskGroup, runEndProcessBlock);
531 
532  auto runWriteProcessBlock =
533  make_waiting_task([this, iWait = std::move(holder)](std::exception_ptr const* iPtr) mutable {
534  if (iPtr) {
535  iWait.doneWaiting(*iPtr);
536  } else {
538  }
539  });
540  WaitingTaskHolder writeHolder(taskGroup, runWriteProcessBlock);
541 
542  ProcessBlockPrincipal& inputProcessBlockPrincipal = principalCache_.inputProcessBlockPrincipal();
543  inputProcessBlockPrincipal.fillProcessBlockPrincipal(parentPrincipal.processName(), parentPrincipal.reader());
544  propagateProducts(InProcess, parentPrincipal, inputProcessBlockPrincipal);
545  ProcessBlockTransitionInfo inputTransitionInfo(inputProcessBlockPrincipal);
546 
547  using TraitsInput = OccurrenceTraits<ProcessBlockPrincipal, BranchActionProcessBlockInput>;
548  beginGlobalTransitionAsync<TraitsInput>(std::move(writeHolder),
549  *schedule_,
550  inputTransitionInfo,
553  cleaningUpAfterException);
554 
555  } else {
556  using Traits = OccurrenceTraits<ProcessBlockPrincipal, BranchActionGlobalEnd>;
557  endGlobalTransitionAsync<Traits>(
558  std::move(iHolder), *schedule_, transitionInfo, serviceToken_, subProcesses_, cleaningUpAfterException);
559  }
560  }

References edm::Principal::clearPrincipal(), edm::ProcessBlockPrincipal::fillProcessBlockPrincipal(), edm::WaitingTaskHolder::group(), info(), edm::InProcess, edm::PrincipalCache::Input, edm::PrincipalCache::inputProcessBlockPrincipal(), edm::make_waiting_task(), eostools::move(), parentProducedProductIsKept(), edm::ProcessBlockTransitionInfo::principal(), principalCache_, edm::PrincipalCache::processBlockPrincipal(), edm::ProcessBlockPrincipal::processName(), propagateProducts(), edm::Principal::reader(), alignCSCRings::s, schedule_, serviceToken_, subProcesses_, and writeProcessBlockAsync().

Referenced by edm::subProcessDoGlobalEndTransitionAsync().

◆ doEndRunAsync()

void edm::SubProcess::doEndRunAsync ( WaitingTaskHolder  iHolder,
RunTransitionInfo const &  iTransitionInfo,
bool  cleaningUpAfterException 
)

Definition at line 592 of file SubProcess.cc.

594  {
595  RunPrincipal const& parentPrincipal = iTransitionInfo.principal();
596  RunPrincipal& rp = *principalCache_.runPrincipalPtr();
597  propagateProducts(InRun, parentPrincipal, rp);
598 
599  RunTransitionInfo transitionInfo(rp, esp_->eventSetupImpl());
600  using Traits = OccurrenceTraits<RunPrincipal, BranchActionGlobalEnd>;
601  endGlobalTransitionAsync<Traits>(
602  std::move(iHolder), *schedule_, transitionInfo, serviceToken_, subProcesses_, cleaningUpAfterException);
603  }

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

Referenced by edm::subProcessDoGlobalEndTransitionAsync().

◆ doEndStream()

void edm::SubProcess::doEndStream ( unsigned int  iID)

Definition at line 736 of file SubProcess.cc.

736  {
738  schedule_->endStream(iID);
739  for_all(subProcesses_, [iID](auto& subProcess) { subProcess.doEndStream(iID); });
740  }

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

◆ doEventAsync()

void edm::SubProcess::doEventAsync ( WaitingTaskHolder  iHolder,
EventPrincipal const &  principal,
std::vector< std::shared_ptr< const EventSetupImpl >> const *  iEventSetupImpls 
)

Definition at line 398 of file SubProcess.cc.

400  {
402  /* BEGIN relevant bits from OutputModule::doEvent */
403  if (!wantAllEvents_) {
404  EventForOutput e(ep, ModuleDescription(), nullptr);
405  e.setConsumer(this);
406  if (!selectors_.wantEvent(e)) {
407  return;
408  }
409  }
410  processAsync(std::move(iHolder), ep, iEventSetupImpls);
411  /* END relevant bits from OutputModule::doEvent */
412  }

References MillePedeFileConverter_cfg::e, SiStripBadComponentsDQMServiceTemplate_cfg::ep, eostools::move(), processAsync(), selectors_, serviceToken_, wantAllEvents_, and edm::detail::TriggerResultsBasedEventSelector::wantEvent().

◆ doStreamBeginLuminosityBlockAsync()

void edm::SubProcess::doStreamBeginLuminosityBlockAsync ( WaitingTaskHolder  iHolder,
unsigned int  iID,
LumiTransitionInfo const &  iTransitionInfo 
)

Definition at line 764 of file SubProcess.cc.

766  {
767  using Traits = OccurrenceTraits<LuminosityBlockPrincipal, BranchActionStreamBegin>;
768 
769  LuminosityBlockPrincipal& lbp = *inUseLumiPrincipals_[iTransitionInfo.principal().index()];
770  std::vector<std::shared_ptr<const EventSetupImpl>> const* eventSetupImpls = iTransitionInfo.eventSetupImpls();
771  LumiTransitionInfo transitionInfo(lbp, *((*eventSetupImpls)[esp_->subProcessIndex()]), eventSetupImpls);
772  beginStreamTransitionAsync<Traits>(
773  std::move(iHolder), *schedule_, id, transitionInfo, serviceToken_, subProcesses_);
774  }

References esp_, edm::LumiTransitionInfo::eventSetupImpls(), edm::LuminosityBlockPrincipal::index(), inUseLumiPrincipals_, eostools::move(), edm::LumiTransitionInfo::principal(), schedule_, serviceToken_, and subProcesses_.

Referenced by edm::subProcessDoStreamBeginTransitionAsync().

◆ doStreamBeginRunAsync()

void edm::SubProcess::doStreamBeginRunAsync ( WaitingTaskHolder  iHolder,
unsigned int  iID,
RunTransitionInfo const &   
)

Definition at line 742 of file SubProcess.cc.

742  {
743  using Traits = OccurrenceTraits<RunPrincipal, BranchActionStreamBegin>;
744 
745  RunPrincipal& rp = *principalCache_.runPrincipalPtr();
746 
747  RunTransitionInfo transitionInfo(rp, esp_->eventSetupImpl());
748  beginStreamTransitionAsync<Traits>(
749  std::move(iHolder), *schedule_, id, transitionInfo, serviceToken_, subProcesses_);
750  }

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

Referenced by edm::subProcessDoStreamBeginTransitionAsync().

◆ doStreamEndLuminosityBlockAsync()

void edm::SubProcess::doStreamEndLuminosityBlockAsync ( WaitingTaskHolder  iHolder,
unsigned int  iID,
LumiTransitionInfo const &  iTransitionInfo,
bool  cleaningUpAfterException 
)

Definition at line 776 of file SubProcess.cc.

779  {
780  LuminosityBlockPrincipal& lbp = *inUseLumiPrincipals_[iTransitionInfo.principal().index()];
781  using Traits = OccurrenceTraits<LuminosityBlockPrincipal, BranchActionStreamEnd>;
782  std::vector<std::shared_ptr<const EventSetupImpl>> const* eventSetupImpls = iTransitionInfo.eventSetupImpls();
783  LumiTransitionInfo transitionInfo(lbp, *((*eventSetupImpls)[esp_->subProcessIndex()]), eventSetupImpls);
784  endStreamTransitionAsync<Traits>(
785  std::move(iHolder), *schedule_, id, transitionInfo, serviceToken_, subProcesses_, cleaningUpAfterException);
786  }

References esp_, edm::LumiTransitionInfo::eventSetupImpls(), edm::LuminosityBlockPrincipal::index(), inUseLumiPrincipals_, eostools::move(), edm::LumiTransitionInfo::principal(), schedule_, serviceToken_, and subProcesses_.

Referenced by edm::subProcessDoStreamEndTransitionAsync().

◆ doStreamEndRunAsync()

void edm::SubProcess::doStreamEndRunAsync ( WaitingTaskHolder  iHolder,
unsigned int  iID,
RunTransitionInfo const &  ,
bool  cleaningUpAfterException 
)

Definition at line 752 of file SubProcess.cc.

755  {
756  RunPrincipal& rp = *principalCache_.runPrincipalPtr();
757  using Traits = OccurrenceTraits<RunPrincipal, BranchActionStreamEnd>;
758 
759  RunTransitionInfo transitionInfo(rp, esp_->eventSetupImpl());
760  endStreamTransitionAsync<Traits>(
761  std::move(iHolder), *schedule_, id, transitionInfo, serviceToken_, subProcesses_, cleaningUpAfterException);
762  }

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

Referenced by edm::subProcessDoStreamEndTransitionAsync().

◆ droppedBranchIDToKeptBranchID()

std::map<BranchID::value_type, BranchID::value_type> const& edm::SubProcess::droppedBranchIDToKeptBranchID ( )
inlineprivate

Definition at line 269 of file SubProcess.h.

269  {
271  }

References droppedBranchIDToKeptBranchID_.

Referenced by beginJob(), and fixBranchIDListsForEDAliases().

◆ enableEndPaths()

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 213 of file SubProcess.h.

213  {
215  schedule_->enableEndPaths(active);
216  for_all(subProcesses_, [active](auto& subProcess) { subProcess.enableEndPaths(active); });
217  }

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

◆ endJob()

void edm::SubProcess::endJob ( void  )
private

Definition at line 306 of file SubProcess.cc.

306  {
308  ExceptionCollector c(
309  "Multiple exceptions were thrown while executing endJob. An exception message follows for each.");
310  schedule_->endJob(c);
311  for (auto& subProcess : subProcesses_) {
312  c.call([&subProcess]() { subProcess.doEndJob(); });
313  }
314  if (c.hasThrown()) {
315  c.rethrow();
316  }
317  }

References c, schedule_, serviceToken_, and subProcesses_.

Referenced by doEndJob().

◆ endPathsEnabled()

bool edm::SubProcess::endPathsEnabled ( ) const
inline

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

Definition at line 220 of file SubProcess.h.

220  {
222  return schedule_->endPathsEnabled();
223  }

References schedule_, and serviceToken_.

◆ fixBranchIDListsForEDAliases()

void edm::SubProcess::fixBranchIDListsForEDAliases ( std::map< BranchID::value_type, BranchID::value_type > const &  droppedBranchIDToKeptBranchID)
private

Definition at line 380 of file SubProcess.cc.

381  {
382  // Check for branches dropped while an EDAlias was kept.
383  // Replace BranchID of each dropped branch with that of the kept alias.
384  for (BranchIDList& branchIDList : branchIDListHelper_->mutableBranchIDLists()) {
385  for (BranchID::value_type& branchID : branchIDList) {
386  std::map<BranchID::value_type, BranchID::value_type>::const_iterator iter =
387  droppedBranchIDToKeptBranchID.find(branchID);
388  if (iter != droppedBranchIDToKeptBranchID.end()) {
389  branchID = iter->second;
390  }
391  }
392  }
393  for_all(subProcesses_, [&droppedBranchIDToKeptBranchID](auto& subProcess) {
394  subProcess.fixBranchIDListsForEDAliases(droppedBranchIDToKeptBranchID);
395  });
396  }

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

Referenced by beginJob().

◆ getAllModuleDescriptions()

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!

◆ getTriggerReport()

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 227 of file SubProcess.h.

227  {
229  schedule_->getTriggerReport(rep);
230  }

References cuy::rep, schedule_, and serviceToken_.

◆ keepOnlyConsumedUnscheduledModules()

std::vector< ModuleProcessName > edm::SubProcess::keepOnlyConsumedUnscheduledModules ( bool  deleteModules)

Definition at line 231 of file SubProcess.cc.

231  {
232  schedule_->convertCurrentProcessAlias(processConfiguration_->processName());
234 
235  // Note: all these may throw
237 
238  // Consumes information from the child SubProcesses
239  std::vector<ModuleProcessName> consumedByChildren;
240  for_all(subProcesses_, [&consumedByChildren, deleteModules](auto& subProcess) {
241  auto c = subProcess.keepOnlyConsumedUnscheduledModules(deleteModules);
242  if (consumedByChildren.empty()) {
243  std::swap(consumedByChildren, c);
244  } else if (not c.empty()) {
245  std::vector<ModuleProcessName> tmp;
246  tmp.reserve(consumedByChildren.size() + c.size());
247  std::merge(consumedByChildren.begin(), consumedByChildren.end(), c.begin(), c.end(), std::back_inserter(tmp));
248  std::swap(consumedByChildren, tmp);
249  }
250  });
251 
252  // Non-consumed unscheduled modules in this SubProcess, take into account of the consumes from child SubProcesses
253  if (deleteModules) {
254  if (auto const unusedModules = nonConsumedUnscheduledModules(pathsAndConsumesOfModules_, consumedByChildren);
255  not unusedModules.empty()) {
257 
258  edm::LogInfo("DeleteModules").log([&unusedModules, this](auto& l) {
259  l << "Following modules are not in any Path or EndPath, nor is their output consumed by any other module, "
260  "and "
261  "therefore they are deleted from SubProcess "
262  << processConfiguration_->processName() << " before beginJob transition.";
263  for (auto const& description : unusedModules) {
264  l << "\n " << description->moduleLabel();
265  }
266  });
267  for (auto const& description : unusedModules) {
268  schedule_->deleteModule(description->moduleLabel(), actReg_.get());
269  }
270  }
271  }
272 
273  // Products possibly consumed from the parent (Sub)Process
274  for (auto const& description : pathsAndConsumesOfModules_.allModules()) {
275  for (auto const& dep :
277  auto it = std::lower_bound(consumedByChildren.begin(),
278  consumedByChildren.end(),
279  ModuleProcessName{dep.moduleLabel(), dep.processName()});
280  consumedByChildren.emplace(it, dep.moduleLabel(), dep.processName());
281  }
282  }
283  return consumedByChildren;
284  }

References actReg_, edm::PathsAndConsumesOfModulesBase::allModules(), c, edm::checkForModuleDependencyCorrectness(), edmLumisInFiles::description, edm::for_all(), edm::PathsAndConsumesOfModules::initialize(), cmsLHEtoEOSManager::l, pfDeepBoostedJetPreprocessParams_cfi::lower_bound, MatrixUtil::merge(), edm::ModuleProcessName::moduleLabel(), edm::PathsAndConsumesOfModules::modulesInPreviousProcessesWhoseProductsAreConsumedBy(), edm::nonConsumedUnscheduledModules(), pathsAndConsumesOfModules_, preg_, processConfiguration_, edm::PathsAndConsumesOfModules::removeModules(), schedule_, subProcesses_, std::swap(), and createJobs::tmp.

◆ keepThisBranch()

void edm::SubProcess::keepThisBranch ( BranchDescription const &  desc,
std::map< BranchID, BranchDescription const * > &  trueBranchIDToKeptBranchDesc,
std::set< BranchID > &  keptProductsInEvent 
)
private

Definition at line 361 of file SubProcess.cc.

363  {
364  ProductSelector::checkForDuplicateKeptBranch(desc, trueBranchIDToKeptBranchDesc);
365 
366  if (desc.branchType() == InEvent) {
367  if (desc.produced()) {
368  keptProductsInEvent.insert(desc.originalBranchID());
369  } else {
370  keptProductsInEvent.insert(desc.branchID());
371  }
372  }
373  EDGetToken token = consumes(TypeToGet{desc.unwrappedTypeID(), PRODUCT_TYPE},
374  InputTag{desc.moduleLabel(), desc.productInstanceName(), desc.processName()});
375 
376  // Now put it in the list of selected branches.
377  keptProducts_[desc.branchType()].push_back(std::make_pair(&desc, token));
378  }

References edm::ProductSelector::checkForDuplicateKeptBranch(), edm::EDConsumerBase::consumes(), submitPVResolutionJobs::desc, edm::InEvent, keptProducts_, edm::PRODUCT_TYPE, and unpackBuffers-CaloStage2::token.

Referenced by selectProducts().

◆ keptProducts()

SelectedProductsForBranchType const& edm::SubProcess::keptProducts ( ) const
inline

Definition at line 80 of file SubProcess.h.

80 { return keptProducts_; }

References keptProducts_.

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

◆ openOutputFiles()

void edm::SubProcess::openOutputFiles ( FileBlock fb)
inline

Definition at line 154 of file SubProcess.h.

154  {
156  schedule_->openOutputFiles(fb);
157  for_all(subProcesses_, [&fb](auto& subProcess) { subProcess.openOutputFiles(fb); });
158  }

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

◆ operator=() [1/2]

SubProcess& edm::SubProcess::operator= ( SubProcess &&  )
delete

◆ operator=() [2/2]

SubProcess& edm::SubProcess::operator= ( SubProcess const &  )
delete

◆ parentProducedProductIsKept()

bool edm::SubProcess::parentProducedProductIsKept ( Principal const &  parentPrincipal,
Principal principal 
) const
private

Definition at line 803 of file SubProcess.cc.

803  {
804  SelectedProducts const& keptVector = keptProducts()[InProcess];
805  for (auto const& item : keptVector) {
806  BranchDescription const& desc = *item.first;
807  assert(desc.branchType() == InProcess);
808  ProductResolverBase const* parentProductResolver = parentPrincipal.getProductResolver(desc.branchID());
809  if (parentProductResolver != nullptr) {
810  ProductResolverBase* productResolver = principal.getModifiableProductResolver(desc.branchID());
811  if (productResolver != nullptr) {
812  if (parentProductResolver->branchDescription().produced()) {
813  return true;
814  }
815  }
816  }
817  }
818  return false;
819  }

References cms::cuda::assert(), submitPVResolutionJobs::desc, edm::Principal::getModifiableProductResolver(), edm::Principal::getProductResolver(), edm::InProcess, B2GTnPMonitor_cfi::item, and keptProducts().

Referenced by doEndProcessBlockAsync().

◆ processAsync()

void edm::SubProcess::processAsync ( WaitingTaskHolder  iHolder,
EventPrincipal const &  e,
std::vector< std::shared_ptr< const EventSetupImpl >> const *  iEventSetupImpls 
)
private

Definition at line 414 of file SubProcess.cc.

416  {
417  EventAuxiliary aux(principal.aux());
418  aux.setProcessHistoryID(principal.processHistoryID());
419 
420  EventSelectionIDVector esids{principal.eventSelectionIDs()};
421  if (principal.productRegistry().anyProductProduced() || !wantAllEvents_) {
422  esids.push_back(selector_config_id_);
423  }
424 
425  EventPrincipal& ep = principalCache_.eventPrincipal(principal.streamID().value());
426  auto& processHistoryRegistry = processHistoryRegistries_[principal.streamID().value()];
427  processHistoryRegistry.registerProcessHistory(principal.processHistory());
428  BranchListIndexes bli(principal.branchListIndexes());
429  branchIDListHelper_->fixBranchListIndexes(bli);
430  bool deepCopyRetriever = false;
431  ep.fillEventPrincipal(
432  aux,
433  &principal.processHistory(),
434  std::move(esids),
435  std::move(bli),
436  principal.eventToProcessBlockIndexes(),
437  *(principal.productProvenanceRetrieverPtr()), //NOTE: this transfers the per product provenance
438  principal.reader(),
439  deepCopyRetriever);
440  ep.setLuminosityBlockPrincipal(inUseLumiPrincipals_[principal.luminosityBlockPrincipal().index()].get());
441  propagateProducts(InEvent, principal, ep);
442 
443  WaitingTaskHolder finalizeEventTask(*iHolder.group(),
444  make_waiting_task([&ep, iHolder](std::exception_ptr const* iPtr) mutable {
445  ep.clearEventPrincipal();
446  if (iPtr) {
447  iHolder.doneWaiting(*iPtr);
448  } else {
449  iHolder.doneWaiting(std::exception_ptr());
450  }
451  }));
452  WaitingTaskHolder afterProcessTask;
453  if (subProcesses_.empty()) {
454  afterProcessTask = std::move(finalizeEventTask);
455  } else {
456  afterProcessTask = WaitingTaskHolder(
457  *iHolder.group(),
458  make_waiting_task([this, &ep, finalizeEventTask, iEventSetupImpls](std::exception_ptr const* iPtr) mutable {
459  if (not iPtr) {
460  for (auto& subProcess : boost::adaptors::reverse(subProcesses_)) {
461  subProcess.doEventAsync(finalizeEventTask, ep, iEventSetupImpls);
462  }
463  } else {
464  finalizeEventTask.doneWaiting(*iPtr);
465  }
466  }));
467  }
468  EventTransitionInfo info(ep, *((*iEventSetupImpls)[esp_->subProcessIndex()]));
469  schedule_->processOneEventAsync(std::move(afterProcessTask), ep.streamID().value(), info, serviceToken_);
470  }

References edm::ProductRegistry::anyProductProduced(), printConversionInfo::aux, edm::EventPrincipal::aux(), branchIDListHelper_, edm::EventPrincipal::branchListIndexes(), edm::WaitingTaskHolder::doneWaiting(), SiStripBadComponentsDQMServiceTemplate_cfg::ep, esp_, edm::PrincipalCache::eventPrincipal(), edm::EventPrincipal::eventSelectionIDs(), edm::EventPrincipal::eventToProcessBlockIndexes(), edm::WaitingTaskHolder::group(), edm::LuminosityBlockPrincipal::index(), edm::InEvent, info(), 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::streamID(), subProcesses_, edm::StreamID::value(), and wantAllEvents_.

Referenced by doEventAsync().

◆ propagateProducts()

void edm::SubProcess::propagateProducts ( BranchType  type,
Principal const &  parentPrincipal,
Principal principal 
) const
private

Definition at line 788 of file SubProcess.cc.

788  {
789  SelectedProducts const& keptVector = keptProducts()[type];
790  for (auto const& item : keptVector) {
791  BranchDescription const& desc = *item.first;
792  ProductResolverBase const* parentProductResolver = parentPrincipal.getProductResolver(desc.branchID());
793  if (parentProductResolver != nullptr) {
794  ProductResolverBase* productResolver = principal.getModifiableProductResolver(desc.branchID());
795  if (productResolver != nullptr) {
796  //Propagate the per event(run)(lumi)(processBlock) data for this product to the subprocess.
797  productResolver->connectTo(*parentProductResolver, &parentPrincipal);
798  }
799  }
800  }
801  }

References edm::ProductResolverBase::connectTo(), submitPVResolutionJobs::desc, edm::Principal::getModifiableProductResolver(), edm::Principal::getProductResolver(), B2GTnPMonitor_cfi::item, and keptProducts().

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

◆ respondToCloseInputFile()

void edm::SubProcess::respondToCloseInputFile ( FileBlock const &  fb)
inline

Definition at line 166 of file SubProcess.h.

166  {
168  schedule_->respondToCloseInputFile(fb);
169  for_all(subProcesses_, [&fb](auto& subProcess) { subProcess.respondToCloseInputFile(fb); });
170  }

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

◆ respondToOpenInputFile()

void edm::SubProcess::respondToOpenInputFile ( FileBlock const &  fb)

Definition at line 828 of file SubProcess.cc.

828  {
830  schedule_->respondToOpenInputFile(fb);
831  for_all(subProcesses_, [&fb](auto& subProcess) { subProcess.respondToOpenInputFile(fb); });
832  }

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

◆ selectProducts()

void edm::SubProcess::selectProducts ( ProductRegistry const &  preg,
ThinnedAssociationsHelper const &  parentThinnedAssociationsHelper,
std::map< BranchID, bool > &  keepAssociation 
)

Definition at line 319 of file SubProcess.cc.

321  {
323  return;
324  productSelector_.initialize(productSelectorRules_, preg.allBranchDescriptions());
325 
326  // TODO: See if we can collapse keptProducts_ and productSelector_ into a
327  // single object. See the notes in the header for ProductSelector
328  // for more information.
329 
330  std::map<BranchID, BranchDescription const*> trueBranchIDToKeptBranchDesc;
331  std::vector<BranchDescription const*> associationDescriptions;
332  std::set<BranchID> keptProductsInEvent;
333 
334  for (auto const& it : preg.productList()) {
335  BranchDescription const& desc = it.second;
336  if (desc.transient()) {
337  // if the class of the branch is marked transient, output nothing
338  } else if (!desc.present() && !desc.produced()) {
339  // else if the branch containing the product has been previously dropped,
340  // output nothing
341  } else if (desc.unwrappedType() == typeid(ThinnedAssociation)) {
342  associationDescriptions.push_back(&desc);
343  } else if (productSelector_.selected(desc)) {
344  keepThisBranch(desc, trueBranchIDToKeptBranchDesc, keptProductsInEvent);
345  }
346  }
347 
348  parentThinnedAssociationsHelper.selectAssociationProducts(
349  associationDescriptions, keptProductsInEvent, keepAssociation);
350 
351  for (auto association : associationDescriptions) {
352  if (keepAssociation[association->branchID()]) {
353  keepThisBranch(*association, trueBranchIDToKeptBranchDesc, keptProductsInEvent);
354  }
355  }
356 
357  // Now fill in a mapping needed in the case that a branch was dropped while its EDAlias was kept.
358  ProductSelector::fillDroppedToKept(preg, trueBranchIDToKeptBranchDesc, droppedBranchIDToKeptBranchID_);
359  }

References edm::ProductRegistry::allBranchDescriptions(), submitPVResolutionJobs::desc, droppedBranchIDToKeptBranchID_, edm::ProductSelector::fillDroppedToKept(), edm::ProductSelector::initialize(), edm::ProductSelector::initialized(), keepThisBranch(), edm::ProductRegistry::productList(), productSelector_, productSelectorRules_, edm::ThinnedAssociationsHelper::selectAssociationProducts(), and edm::ProductSelector::selected().

Referenced by SubProcess().

◆ shouldWeCloseOutput()

bool edm::SubProcess::shouldWeCloseOutput ( ) const
inline

Definition at line 173 of file SubProcess.h.

173  {
175  if (schedule_->shouldWeCloseOutput()) {
176  return true;
177  }
178  for (auto const& subProcess : subProcesses_) {
179  if (subProcess.shouldWeCloseOutput()) {
180  return true;
181  }
182  }
183  return false;
184  }

References schedule_, serviceToken_, and subProcesses_.

◆ terminate()

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 234 of file SubProcess.h.

234  {
236  if (schedule_->terminate()) {
237  return true;
238  }
239  for (auto const& subProcess : subProcesses_) {
240  if (subProcess.terminate()) {
241  return true;
242  }
243  }
244  return false;
245  }

References schedule_, serviceToken_, and subProcesses_.

◆ thinnedAssociationsHelper() [1/2]

std::shared_ptr<ThinnedAssociationsHelper> edm::SubProcess::thinnedAssociationsHelper ( )
inlineprivate

Definition at line 280 of file SubProcess.h.

280  {
282  }

References edm::get_underlying_safe(), and thinnedAssociationsHelper_.

◆ thinnedAssociationsHelper() [2/2]

std::shared_ptr<ThinnedAssociationsHelper const> edm::SubProcess::thinnedAssociationsHelper ( ) const
inlineprivate

Definition at line 277 of file SubProcess.h.

277  {
279  }

References edm::get_underlying_safe(), and thinnedAssociationsHelper_.

Referenced by SubProcess().

◆ totalEvents()

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 196 of file SubProcess.h.

196 { return schedule_->totalEvents(); }

References schedule_.

◆ totalEventsFailed()

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 206 of file SubProcess.h.

206  {
208  return schedule_->totalEventsFailed();
209  }

References schedule_, and serviceToken_.

◆ totalEventsPassed()

int edm::SubProcess::totalEventsPassed ( ) const
inline

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

Definition at line 199 of file SubProcess.h.

199  {
201  return schedule_->totalEventsPassed();
202  }

References schedule_, and serviceToken_.

◆ updateBranchIDListHelper()

void edm::SubProcess::updateBranchIDListHelper ( BranchIDLists const &  branchIDLists)

Definition at line 821 of file SubProcess.cc.

821  {
822  branchIDListHelper_->updateFromParent(branchIDLists);
824  [this](auto& subProcess) { subProcess.updateBranchIDListHelper(branchIDListHelper_->branchIDLists()); });
825  }

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

Referenced by SubProcess().

◆ writeLumiAsync()

void edm::SubProcess::writeLumiAsync ( WaitingTaskHolder  task,
LuminosityBlockPrincipal principal 
)

Definition at line 704 of file SubProcess.cc.

704  {
706 
707  auto l = inUseLumiPrincipals_[principal.index()];
708  auto subTasks = edm::make_waiting_task([this, l, task](std::exception_ptr const* iExcept) mutable {
709  if (iExcept) {
710  task.doneWaiting(*iExcept);
711  } else {
712  ServiceRegistry::Operate operateWriteLumi(serviceToken_);
713  for (auto& s : subProcesses_) {
714  s.writeLumiAsync(task, *l);
715  }
716  }
717  });
718  schedule_->writeLumiAsync(WaitingTaskHolder(*task.group(), subTasks), *l, &processContext_, actReg_.get());
719  }

References actReg_, edm::LuminosityBlockPrincipal::index(), inUseLumiPrincipals_, cmsLHEtoEOSManager::l, edm::make_waiting_task(), processContext_, alignCSCRings::s, schedule_, serviceToken_, subProcesses_, and TrackValidation_cff::task.

◆ writeProcessBlockAsync()

void edm::SubProcess::writeProcessBlockAsync ( edm::WaitingTaskHolder  task,
ProcessBlockType  processBlockType 
)

Definition at line 605 of file SubProcess.cc.

605  {
607 
608  auto subTasks = edm::make_waiting_task([this, task, processBlockType](std::exception_ptr const* iExcept) mutable {
609  if (iExcept) {
610  task.doneWaiting(*iExcept);
611  } else {
613  for (auto& s : subProcesses_) {
614  s.writeProcessBlockAsync(task, processBlockType);
615  }
616  }
617  });
618  schedule_->writeProcessBlockAsync(WaitingTaskHolder(*task.group(), subTasks),
619  principalCache_.processBlockPrincipal(processBlockType),
621  actReg_.get());
622  }

References actReg_, edm::make_waiting_task(), principalCache_, edm::PrincipalCache::processBlockPrincipal(), processContext_, alignCSCRings::s, schedule_, serviceToken_, subProcesses_, and TrackValidation_cff::task.

Referenced by doEndProcessBlockAsync().

◆ writeRunAsync()

void edm::SubProcess::writeRunAsync ( edm::WaitingTaskHolder  task,
ProcessHistoryID const &  parentPhID,
int  runNumber,
MergeableRunProductMetadata const *  mergeableRunProductMetadata 
)

Definition at line 624 of file SubProcess.cc.

627  {
629  std::map<ProcessHistoryID, ProcessHistoryID>::const_iterator it = parentToChildPhID_.find(parentPhID);
630  assert(it != parentToChildPhID_.end());
631  auto const& childPhID = it->second;
632 
633  auto subTasks = edm::make_waiting_task(
634  [this, childPhID, runNumber, task, mergeableRunProductMetadata](std::exception_ptr const* iExcept) mutable {
635  if (iExcept) {
636  task.doneWaiting(*iExcept);
637  } else {
638  ServiceRegistry::Operate operateWriteRun(serviceToken_);
639  for (auto& s : subProcesses_) {
640  s.writeRunAsync(task, childPhID, runNumber, mergeableRunProductMetadata);
641  }
642  }
643  });
644  schedule_->writeRunAsync(WaitingTaskHolder(*task.group(), subTasks),
647  actReg_.get(),
648  mergeableRunProductMetadata);
649  }

References actReg_, cms::cuda::assert(), edm::make_waiting_task(), parentToChildPhID_, principalCache_, processContext_, convertSQLiteXML::runNumber, edm::PrincipalCache::runPrincipal(), alignCSCRings::s, schedule_, serviceToken_, subProcesses_, and TrackValidation_cff::task.

Member Data Documentation

◆ act_table_

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

Definition at line 292 of file SubProcess.h.

Referenced by SubProcess().

◆ actReg_

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

◆ branchIDListHelper_

edm::propagate_const<std::shared_ptr<BranchIDListHelper> > edm::SubProcess::branchIDListHelper_
private

◆ droppedBranchIDToKeptBranchID_

std::map<BranchID::value_type, BranchID::value_type> edm::SubProcess::droppedBranchIDToKeptBranchID_
private

Definition at line 326 of file SubProcess.h.

Referenced by droppedBranchIDToKeptBranchID(), selectProducts(), and SubProcess().

◆ esp_

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

◆ historyAppenders_

std::vector<HistoryAppender> edm::SubProcess::historyAppenders_
private

Definition at line 301 of file SubProcess.h.

Referenced by doBeginRunAsync(), and SubProcess().

◆ historyLumiOffset_

unsigned int edm::SubProcess::historyLumiOffset_
private

Definition at line 298 of file SubProcess.h.

Referenced by doBeginLuminosityBlockAsync(), and SubProcess().

◆ historyRunOffset_

unsigned int edm::SubProcess::historyRunOffset_
private

Definition at line 299 of file SubProcess.h.

Referenced by doBeginRunAsync(), and SubProcess().

◆ inUseLumiPrincipals_

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

◆ keptProducts_

SelectedProductsForBranchType edm::SubProcess::keptProducts_
private

Definition at line 315 of file SubProcess.h.

Referenced by keepThisBranch(), and keptProducts().

◆ parentPreg_

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

Definition at line 286 of file SubProcess.h.

Referenced by beginJob().

◆ parentToChildPhID_

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

Definition at line 307 of file SubProcess.h.

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

◆ pathsAndConsumesOfModules_

PathsAndConsumesOfModules edm::SubProcess::pathsAndConsumesOfModules_
private

Definition at line 295 of file SubProcess.h.

Referenced by beginJob(), and keepOnlyConsumedUnscheduledModules().

◆ preg_

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

◆ principalCache_

PrincipalCache edm::SubProcess::principalCache_
private

◆ processBlockHelper_

edm::propagate_const<std::shared_ptr<SubProcessBlockHelper> > edm::SubProcess::processBlockHelper_
private

Definition at line 289 of file SubProcess.h.

Referenced by beginJob(), and SubProcess().

◆ processConfiguration_

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

Definition at line 293 of file SubProcess.h.

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

◆ processContext_

ProcessContext edm::SubProcess::processContext_
private

◆ processHistoryRegistries_

std::vector<ProcessHistoryRegistry> edm::SubProcess::processHistoryRegistries_
private

◆ processParameterSet_

edm::propagate_const<std::unique_ptr<ParameterSet> > edm::SubProcess::processParameterSet_
private

Definition at line 309 of file SubProcess.h.

Referenced by SubProcess().

◆ productSelector_

ProductSelector edm::SubProcess::productSelector_
private

Definition at line 317 of file SubProcess.h.

Referenced by selectProducts().

◆ productSelectorRules_

ProductSelectorRules edm::SubProcess::productSelectorRules_
private

Definition at line 316 of file SubProcess.h.

Referenced by selectProducts().

◆ schedule_

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

◆ selector_config_id_

ParameterSetID edm::SubProcess::selector_config_id_
private

Definition at line 321 of file SubProcess.h.

Referenced by processAsync(), and SubProcess().

◆ selectors_

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

Definition at line 322 of file SubProcess.h.

Referenced by doEventAsync(), and SubProcess().

◆ serviceToken_

ServiceToken edm::SubProcess::serviceToken_
private

◆ subProcesses_

std::vector<SubProcess> edm::SubProcess::subProcesses_
private

◆ subProcessParentageHelper_

edm::propagate_const<std::shared_ptr<SubProcessParentageHelper> > edm::SubProcess::subProcessParentageHelper_
private

Definition at line 291 of file SubProcess.h.

Referenced by SubProcess().

◆ thinnedAssociationsHelper_

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

Definition at line 290 of file SubProcess.h.

Referenced by SubProcess(), and thinnedAssociationsHelper().

◆ wantAllEvents_

bool edm::SubProcess::wantAllEvents_
private

Definition at line 320 of file SubProcess.h.

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

edm::SubProcess::beginJob
void beginJob()
Definition: SubProcess.cc:290
edm::SubProcess::processConfiguration_
std::shared_ptr< ProcessConfiguration const > processConfiguration_
Definition: SubProcess.h:293
edm::SubProcess::historyRunOffset_
unsigned int historyRunOffset_
Definition: SubProcess.h:299
TypeToGet
edm::SubProcess::historyLumiOffset_
unsigned int historyLumiOffset_
Definition: SubProcess.h:298
edm::SubProcess::selector_config_id_
ParameterSetID selector_config_id_
Definition: SubProcess.h:321
edm::popSubProcessVParameterSet
std::vector< ParameterSet > popSubProcessVParameterSet(ParameterSet &parameterSet)
Definition: SubProcess.cc:835
edm::getAllTriggerNames
std::vector< std::string > const & getAllTriggerNames()
Definition: getAllTriggerNames.cc:22
edm::SubProcess::parentProducedProductIsKept
bool parentProducedProductIsKept(Principal const &parentPrincipal, Principal &principal) const
Definition: SubProcess.cc:803
edm::SubProcess::processHistoryRegistries_
std::vector< ProcessHistoryRegistry > processHistoryRegistries_
Definition: SubProcess.h:300
edm::PRODUCT_TYPE
Definition: ProductKindOfType.h:5
edm::PathsAndConsumesOfModules::modulesInPreviousProcessesWhoseProductsAreConsumedBy
std::vector< ModuleProcessName > const & modulesInPreviousProcessesWhoseProductsAreConsumedBy(unsigned int moduleID) const
Definition: PathsAndConsumesOfModules.cc:90
edm::SubProcess::branchIDListHelper
std::shared_ptr< BranchIDListHelper const > branchIDListHelper() const
Definition: SubProcess.h:273
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
edm::validateTopLevelParameterSets
void validateTopLevelParameterSets(ParameterSet *processParameterSet)
Definition: validateTopLevelParameterSets.cc:115
edm::SubProcess::pathsAndConsumesOfModules_
PathsAndConsumesOfModules pathsAndConsumesOfModules_
Definition: SubProcess.h:295
edmLumisInFiles.description
description
Definition: edmLumisInFiles.py:11
edm::PrincipalCache::setProcessHistoryRegistry
void setProcessHistoryRegistry(ProcessHistoryRegistry const &phr)
Definition: PrincipalCache.h:87
edm::ProductSelector::initialize
void initialize(ProductSelectorRules const &rules, std::vector< BranchDescription const * > const &branchDescriptions)
Definition: ProductSelector.cc:20
edm::SubProcess::updateBranchIDListHelper
void updateBranchIDListHelper(BranchIDLists const &)
Definition: SubProcess.cc:821
HLT_FULL_cff.InputTag
InputTag
Definition: HLT_FULL_cff.py:89301
edm::BranchListIndexes
std::vector< BranchListIndex > BranchListIndexes
Definition: BranchListIndex.h:18
edm::SubProcess::thinnedAssociationsHelper_
edm::propagate_const< std::shared_ptr< ThinnedAssociationsHelper > > thinnedAssociationsHelper_
Definition: SubProcess.h:290
edm::SubProcess::subProcesses_
std::vector< SubProcess > subProcesses_
Definition: SubProcess.h:308
cms::cuda::assert
assert(be >=bs)
edm::SubProcess::processBlockHelper_
edm::propagate_const< std::shared_ptr< SubProcessBlockHelper > > processBlockHelper_
Definition: SubProcess.h:289
edm::EDConsumerBase::consumesCollector
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
Definition: EDConsumerBase.cc:47
edm::ProductSelector::selected
bool selected(BranchDescription const &desc) const
Definition: ProductSelector.cc:55
info
static const TGPicture * info(bool iBackgroundIsBlack)
Definition: FWCollectionSummaryWidget.cc:153
edm::get_underlying_safe
constexpr std::shared_ptr< T > & get_underlying_safe(propagate_const< std::shared_ptr< T >> &iP)
Definition: get_underlying_safe.h:41
edm::LogInfo
Log< level::Info, false > LogInfo
Definition: MessageLogger.h:125
createJobs.tmp
tmp
align.sh
Definition: createJobs.py:716
edm::PrincipalCache::runPrincipalPtr
std::shared_ptr< RunPrincipal > const & runPrincipalPtr(ProcessHistoryID const &phid, RunNumber_t run) const
Definition: PrincipalCache.cc:28
edm::InRun
Definition: BranchType.h:11
edm::SubProcess::processAsync
void processAsync(WaitingTaskHolder iHolder, EventPrincipal const &e, std::vector< std::shared_ptr< const EventSetupImpl >> const *)
Definition: SubProcess.cc:414
edm::PathsAndConsumesOfModules::initialize
void initialize(Schedule const *, std::shared_ptr< ProductRegistry const >)
Definition: PathsAndConsumesOfModules.cc:16
mps_monitormerge.items
list items
Definition: mps_monitormerge.py:29
groupFilesInBlocks.reverse
reverse
Definition: groupFilesInBlocks.py:131
convertSQLiteXML.runNumber
runNumber
Definition: convertSQLiteXML.py:91
edm::SelectedProducts
std::vector< std::pair< BranchDescription const *, EDGetToken > > SelectedProducts
Definition: SelectedProducts.h:11
edm::for_all
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:14
edm::parameterSet
ParameterSet const & parameterSet(StableProvenance const &provenance, ProcessHistory const &history)
Definition: Provenance.cc:11
edm::SubProcess::wantAllEvents_
bool wantAllEvents_
Definition: SubProcess.h:320
edm::InProcess
Definition: BranchType.h:11
edm::PrincipalCache::runPrincipal
RunPrincipal & runPrincipal(ProcessHistoryID const &phid, RunNumber_t run) const
Definition: PrincipalCache.cc:21
edm::ParameterSet::popParameterSet
std::unique_ptr< ParameterSet > popParameterSet(std::string const &name)
Definition: ParameterSet.cc:121
edm::ProcessContext::setProcessConfiguration
void setProcessConfiguration(ProcessConfiguration const *processConfiguration)
Definition: ProcessContext.cc:19
alignCSCRings.s
s
Definition: alignCSCRings.py:92
edm::SubProcess::droppedBranchIDToKeptBranchID
std::map< BranchID::value_type, BranchID::value_type > const & droppedBranchIDToKeptBranchID()
Definition: SubProcess.h:269
edm::SubProcess::schedule_
edm::propagate_const< std::unique_ptr< Schedule > > schedule_
Definition: SubProcess.h:306
edm::SubProcess::inUseLumiPrincipals_
std::vector< std::shared_ptr< LuminosityBlockPrincipal > > inUseLumiPrincipals_
Definition: SubProcess.h:304
edm::ProductSelector::initialized
bool initialized() const
Definition: ProductSelector.h:38
std::swap
void swap(edm::DataFrameContainer &lhs, edm::DataFrameContainer &rhs)
Definition: DataFrameContainer.h:209
edm::BranchIDList
std::vector< BranchID::value_type > BranchIDList
Definition: BranchIDList.h:18
edm::SubProcess::thinnedAssociationsHelper
std::shared_ptr< ThinnedAssociationsHelper const > thinnedAssociationsHelper() const
Definition: SubProcess.h:277
edm::SubProcess::selectProducts
void selectProducts(ProductRegistry const &preg, ThinnedAssociationsHelper const &parentThinnedAssociationsHelper, std::map< BranchID, bool > &keepAssociation)
Definition: SubProcess.cc:319
edm::ProductSelector::checkForDuplicateKeptBranch
static void checkForDuplicateKeptBranch(BranchDescription const &desc, std::map< BranchID, BranchDescription const * > &trueBranchIDToKeptBranchDesc)
Definition: ProductSelector.cc:71
TrackValidation_cff.task
task
Definition: TrackValidation_cff.py:253
Service
edm::checkForModuleDependencyCorrectness
void checkForModuleDependencyCorrectness(edm::PathsAndConsumesOfModulesBase const &iPnC, bool iPrintDependencies)
Definition: PathsAndConsumesOfModules.cc:269
WaitingTaskHolder
edm::SubProcess::serviceToken_
ServiceToken serviceToken_
Definition: SubProcess.h:285
edm::SubProcess::esp_
edm::propagate_const< std::shared_ptr< eventsetup::EventSetupProvider > > esp_
Definition: SubProcess.h:305
edm::InEvent
Definition: BranchType.h:11
edm::ProductSelector::fillDroppedToKept
static void fillDroppedToKept(ProductRegistry const &preg, std::map< BranchID, BranchDescription const * > const &trueBranchIDToKeptBranchDesc, std::map< BranchID::value_type, BranchID::value_type > &droppedBranchIDToKeptBranchID_)
Definition: ProductSelector.cc:99
edm::BranchID::value_type
unsigned int value_type
Definition: BranchID.h:16
edm::SubProcess::propagateProducts
void propagateProducts(BranchType type, Principal const &parentPrincipal, Principal &principal) const
Definition: SubProcess.cc:788
edm::SubProcess::keptProducts_
SelectedProductsForBranchType keptProducts_
Definition: SubProcess.h:315
pfDeepBoostedJetPreprocessParams_cfi.lower_bound
lower_bound
Definition: pfDeepBoostedJetPreprocessParams_cfi.py:15
edm::ServiceRegistry::Operate
friend class Operate
Definition: ServiceRegistry.h:54
edm::SubProcess::productSelectorRules_
ProductSelectorRules productSelectorRules_
Definition: SubProcess.h:316
edm::ProcessContext::setParentProcessContext
void setParentProcessContext(ProcessContext const *parentProcessContext)
Definition: ProcessContext.cc:23
edm::make_waiting_task
FunctorWaitingTask< F > * make_waiting_task(F f)
Definition: WaitingTask.h:101
edm::detail::TriggerResultsBasedEventSelector::wantEvent
bool wantEvent(EventForOutput const &e)
Definition: TriggerResultsBasedEventSelector.cc:148
ParameterSet
Definition: Functions.h:16
edm::InLumi
Definition: BranchType.h:11
edm::SubProcess::processParameterSet_
edm::propagate_const< std::unique_ptr< ParameterSet > > processParameterSet_
Definition: SubProcess.h:309
edm::SubProcess::act_table_
std::unique_ptr< ExceptionToActionTable const > act_table_
Definition: SubProcess.h:292
gainCalibHelper::gainCalibPI::type
type
Definition: SiPixelGainCalibHelper.h:40
edm::SubProcess::keepThisBranch
void keepThisBranch(BranchDescription const &desc, std::map< BranchID, BranchDescription const * > &trueBranchIDToKeptBranchDesc, std::set< BranchID > &keptProductsInEvent)
Definition: SubProcess.cc:361
edm::PrincipalCache::deleteRun
void deleteRun(ProcessHistoryID const &phid, RunNumber_t run)
Definition: PrincipalCache.cc:110
edm::SubProcess::droppedBranchIDToKeptBranchID_
std::map< BranchID::value_type, BranchID::value_type > droppedBranchIDToKeptBranchID_
Definition: SubProcess.h:326
printConversionInfo.aux
aux
Definition: printConversionInfo.py:19
edm::EDConsumerBase::updateLookup
void updateLookup(BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
Definition: EDConsumerBase.cc:112
edm::EDConsumerBase::EDConsumerBase
EDConsumerBase()
Definition: EDConsumerBase.cc:39
edm::SubProcess::selectors_
detail::TriggerResultsBasedEventSelector selectors_
Definition: SubProcess.h:322
cuy.rep
rep
Definition: cuy.py:1189
edm::PrincipalCache::insertForInput
void insertForInput(std::unique_ptr< ProcessBlockPrincipal >)
Definition: PrincipalCache.cc:98
B2GTnPMonitor_cfi.item
item
Definition: B2GTnPMonitor_cfi.py:147
edm::SubProcess::actReg_
std::shared_ptr< ActivityRegistry > actReg_
Definition: SubProcess.h:284
ServiceToken
edm::Principal::clearPrincipal
void clearPrincipal()
Definition: Principal.cc:382
edm::SubProcess::writeProcessBlockAsync
void writeProcessBlockAsync(edm::WaitingTaskHolder task, ProcessBlockType)
Definition: SubProcess.cc:605
AlCaHLTBitMon_QueryRunRegistry.string
string string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
cmsLHEtoEOSManager.l
l
Definition: cmsLHEtoEOSManager.py:204
edm::PrincipalCache::inputProcessBlockPrincipal
ProcessBlockPrincipal & inputProcessBlockPrincipal() const
Definition: PrincipalCache.h:55
edm::detail::configureEventSelector
bool configureEventSelector(edm::ParameterSet const &iPSet, std::string const &iProcessName, std::vector< std::string > const &iAllTriggerNames, edm::detail::TriggerResultsBasedEventSelector &oSelector, ConsumesCollector &&iC)
Definition: TriggerResultsBasedEventSelector.cc:80
edm::ProcessBlockPrincipal::fillProcessBlockPrincipal
void fillProcessBlockPrincipal(std::string const &processName, DelayedReader *reader=nullptr)
Definition: ProcessBlockPrincipal.cc:16
edm::SubProcess::productSelector_
ProductSelector productSelector_
Definition: SubProcess.h:317
EDGetToken
submitPVResolutionJobs.desc
string desc
Definition: submitPVResolutionJobs.py:251
edm::PrincipalCache::ProcessBlockType::Input
eostools.move
def move(src, dest)
Definition: eostools.py:511
edm::detail::registerProperSelectionInfo
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)
Definition: TriggerResultsBasedEventSelector.cc:163
edm::SubProcess::endJob
void endJob()
Definition: SubProcess.cc:306
edm::SubProcess::parentToChildPhID_
std::map< ProcessHistoryID, ProcessHistoryID > parentToChildPhID_
Definition: SubProcess.h:307
edm::ProcessHistoryID
Hash< ProcessHistoryType > ProcessHistoryID
Definition: ProcessHistoryID.h:8
edm::nonConsumedUnscheduledModules
std::vector< ModuleDescription const * > nonConsumedUnscheduledModules(edm::PathsAndConsumesOfModulesBase const &iPnC, std::vector< ModuleProcessName > &consumedByChildren)
Definition: PathsAndConsumesOfModules.cc:165
edm::SubProcess::parentPreg_
std::shared_ptr< ProductRegistry const > parentPreg_
Definition: SubProcess.h:286
edm::PathsAndConsumesOfModules::removeModules
void removeModules(std::vector< ModuleDescription const * > const &modules)
Definition: PathsAndConsumesOfModules.cc:53
edm::SubProcess::fixBranchIDListsForEDAliases
void fixBranchIDListsForEDAliases(std::map< BranchID::value_type, BranchID::value_type > const &droppedBranchIDToKeptBranchID)
Definition: SubProcess.cc:380
edm::PrincipalCache::getAvailableLumiPrincipalPtr
std::shared_ptr< LuminosityBlockPrincipal > getAvailableLumiPrincipalPtr()
Definition: PrincipalCache.cc:50
edm::SubProcess::branchIDListHelper_
edm::propagate_const< std::shared_ptr< BranchIDListHelper > > branchIDListHelper_
Definition: SubProcess.h:288
Data_TkAlMinBias_Run2018C_PromptReco_v3_cff.maxEvents
maxEvents
Definition: Data_TkAlMinBias_Run2018C_PromptReco_v3_cff.py:3
hgcal::association
std::tuple< layerClusterToCaloParticle, caloParticleToLayerCluster > association
Definition: LCToCPAssociatorByEnergyScoreImpl.h:44
edm::SubProcess::historyAppenders_
std::vector< HistoryAppender > historyAppenders_
Definition: SubProcess.h:301
AlignmentPI::index
index
Definition: AlignmentPayloadInspectorHelper.h:46
edm::PrincipalCache::processBlockPrincipal
ProcessBlockPrincipal & processBlockPrincipal() const
Definition: PrincipalCache.h:54
edm::EDConsumerBase::consumes
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
Definition: EDConsumerBase.h:159
edm::SubProcess::processContext_
ProcessContext processContext_
Definition: SubProcess.h:294
edm::PrincipalCache::eventPrincipal
EventPrincipal & eventPrincipal(unsigned int iStreamIndex) const
Definition: PrincipalCache.h:70
c
auto & c
Definition: CAHitNtupletGeneratorKernelsImpl.h:56
edm::PrincipalCache::insert
void insert(std::unique_ptr< ProcessBlockPrincipal >)
Definition: PrincipalCache.cc:96
edm::SubProcess::subProcessParentageHelper_
edm::propagate_const< std::shared_ptr< SubProcessParentageHelper > > subProcessParentageHelper_
Definition: SubProcess.h:291
edm::EventSelectionIDVector
std::vector< EventSelectionID > EventSelectionIDVector
Definition: EventSelectionID.h:16
MatrixUtil.merge
def merge(dictlist, TELL=False)
Definition: MatrixUtil.py:201
edm::PathsAndConsumesOfModulesBase::allModules
std::vector< ModuleDescription const * > const & allModules() const
Definition: PathsAndConsumesOfModulesBase.h:42
SiStripBadComponentsDQMServiceTemplate_cfg.ep
ep
Definition: SiStripBadComponentsDQMServiceTemplate_cfg.py:86
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37
edm::PrincipalCache::setNumberOfConcurrentPrincipals
void setNumberOfConcurrentPrincipals(PreallocationConfiguration const &)
Definition: PrincipalCache.cc:17
edm::SubProcess::preg_
std::shared_ptr< ProductRegistry const > preg_
Definition: SubProcess.h:287
unpackBuffers-CaloStage2.token
token
Definition: unpackBuffers-CaloStage2.py:316
edm::SubProcess::principalCache_
PrincipalCache principalCache_
Definition: SubProcess.h:302