CMS 3D CMS Logo

SubProcess.cc
Go to the documentation of this file.
2 
40 
41 #include "boost/range/adaptor/reversed.hpp"
42 
43 #include <cassert>
44 #include <string>
45 
46 namespace edm {
47 
49  ParameterSet const& topLevelParameterSet,
50  std::shared_ptr<ProductRegistry const> parentProductRegistry,
51  std::shared_ptr<BranchIDListHelper const> parentBranchIDListHelper,
52  ThinnedAssociationsHelper const& parentThinnedAssociationsHelper,
53  SubProcessParentageHelper const& parentSubProcessParentageHelper,
55  ActivityRegistry& parentActReg,
56  ServiceToken const& token,
58  PreallocationConfiguration const& preallocConfig,
59  ProcessContext const* parentProcessContext)
60  : EDConsumerBase(),
61  serviceToken_(),
62  parentPreg_(parentProductRegistry),
63  preg_(),
64  branchIDListHelper_(),
65  act_table_(),
66  processConfiguration_(),
67  historyLumiOffset_(preallocConfig.numberOfStreams()),
68  historyRunOffset_(historyLumiOffset_ + preallocConfig.numberOfLuminosityBlocks()),
69  processHistoryRegistries_(historyRunOffset_ + preallocConfig.numberOfRuns()),
70  historyAppenders_(historyRunOffset_ + preallocConfig.numberOfRuns()),
71  principalCache_(),
72  esp_(),
73  schedule_(),
74  parentToChildPhID_(),
75  subProcesses_(),
76  processParameterSet_(),
77  productSelectorRules_(parameterSet, "outputCommands", "OutputModule"),
78  productSelector_(),
79  wantAllEvents_(true) {
80  //Setup the event selection
82 
83  ParameterSet selectevents = parameterSet.getUntrackedParameterSet("SelectEvents", ParameterSet());
84 
85  selectevents.registerIt(); // Just in case this PSet is not registered
87  selectevents, tns->getProcessName(), getAllTriggerNames(), selectors_, consumesCollector());
88  std::map<std::string, std::vector<std::pair<std::string, int>>> outputModulePathPositions;
90  selectevents, "", outputModulePathPositions, parentProductRegistry->anyProductProduced());
91 
92  std::map<BranchID, bool> keepAssociation;
93  selectProducts(*parentProductRegistry, parentThinnedAssociationsHelper, keepAssociation);
94 
95  std::string const maxEvents("maxEvents");
96  std::string const maxLumis("maxLuminosityBlocks");
97 
98  // propagate_const<T> has no reset() function
100  std::unique_ptr<ParameterSet>(parameterSet.popParameterSet(std::string("process")).release());
101 
102  // if this process has a maxEvents or maxLuminosityBlocks parameter set, remove them.
103  if (processParameterSet_->exists(maxEvents)) {
104  processParameterSet_->popParameterSet(maxEvents);
105  }
106  if (processParameterSet_->exists(maxLumis)) {
107  processParameterSet_->popParameterSet(maxLumis);
108  }
109 
110  // if the top level process has a maxEvents or maxLuminosityBlocks parameter set, add them to this process.
111  if (topLevelParameterSet.exists(maxEvents)) {
112  processParameterSet_->addUntrackedParameter<ParameterSet>(
113  maxEvents, topLevelParameterSet.getUntrackedParameterSet(maxEvents));
114  }
115  if (topLevelParameterSet.exists(maxLumis)) {
116  processParameterSet_->addUntrackedParameter<ParameterSet>(
117  maxLumis, topLevelParameterSet.getUntrackedParameterSet(maxLumis));
118  }
119 
120  // If there are subprocesses, pop the subprocess parameter sets out of the process parameter set
121  auto subProcessVParameterSet = popSubProcessVParameterSet(*processParameterSet_);
122  bool hasSubProcesses = subProcessVParameterSet.size() != 0ull;
123 
124  // Validates the parameters in the 'options', 'maxEvents', and 'maxLuminosityBlocks'
125  // top level parameter sets. Default values are also set in here if the
126  // parameters were not explicitly set.
128 
129  ScheduleItems items(*parentProductRegistry, *this);
130  actReg_ = items.actReg_;
131 
132  //initialize the services
133  ServiceToken iToken;
134 
135  // get any configured services.
136  auto serviceSets = processParameterSet_->popVParameterSet(std::string("services"));
137 
138  ServiceToken newToken = items.initServices(serviceSets, *processParameterSet_, token, iLegacy, false);
139  parentActReg.connectToSubProcess(*items.actReg_);
140  serviceToken_ = items.addCPRandTNS(*processParameterSet_, newToken);
141 
142  //make the services available
144 
145  // intialize miscellaneous items
146  items.initMisc(*processParameterSet_);
147 
148  // intialize the event setup provider
149  esp_ = esController.makeProvider(*processParameterSet_, actReg_.get());
150 
151  branchIDListHelper_ = items.branchIDListHelper();
152  updateBranchIDListHelper(parentBranchIDListHelper->branchIDLists());
153 
154  thinnedAssociationsHelper_ = items.thinnedAssociationsHelper();
155  thinnedAssociationsHelper_->updateFromParentProcess(
156  parentThinnedAssociationsHelper, keepAssociation, droppedBranchIDToKeptBranchID_);
157 
158  // intialize the Schedule
159  schedule_ = items.initSchedule(*processParameterSet_, hasSubProcesses, preallocConfig, &processContext_);
160 
161  // set the items
162  act_table_ = std::move(items.act_table_);
163  preg_ = items.preg();
164 
165  subProcessParentageHelper_ = items.subProcessParentageHelper();
166  subProcessParentageHelper_->update(parentSubProcessParentageHelper, *parentProductRegistry);
167 
168  //CMS-THREADING this only works since Run/Lumis are synchronous so when principalCache asks for
169  // the reducedProcessHistoryID from a full ProcessHistoryID that registry will not be in use by
170  // another thread. We really need to change how this is done in the PrincipalCache.
172 
173  processConfiguration_ = items.processConfiguration();
175  processContext_.setParentProcessContext(parentProcessContext);
176 
178  for (unsigned int index = 0; index < preallocConfig.numberOfStreams(); ++index) {
179  auto ep = std::make_shared<EventPrincipal>(preg_,
184  index,
185  false /*not primary process*/);
187  }
188  for (unsigned int index = 0; index < preallocConfig.numberOfLuminosityBlocks(); ++index) {
189  auto lbpp = std::make_unique<LuminosityBlockPrincipal>(
192  }
193 
194  {
195  auto pb = std::make_unique<ProcessBlockPrincipal>(preg_, *processConfiguration_, false);
197 
198  auto pbForInput = std::make_unique<ProcessBlockPrincipal>(preg_, *processConfiguration_, false);
200  }
201 
202  inUseLumiPrincipals_.resize(preallocConfig.numberOfLuminosityBlocks());
203 
204  subProcesses_.reserve(subProcessVParameterSet.size());
205  for (auto& subProcessPSet : subProcessVParameterSet) {
206  subProcesses_.emplace_back(subProcessPSet,
207  topLevelParameterSet,
208  preg_,
212  esController,
213  *items.actReg_,
214  newToken,
215  iLegacy,
216  preallocConfig,
217  &processContext_);
218  }
219  }
220 
222 
223  void SubProcess::doBeginJob() { this->beginJob(); }
224 
226 
228  // If event selection is being used, the SubProcess class reads TriggerResults
229  // object(s) in the parent process from the event. This next call is needed for
230  // getByToken to work properly. Normally, this is done by the worker, but since
231  // a SubProcess is not a module, it has no worker.
232  updateLookup(InEvent, *parentPreg_->productLookup(InEvent), false);
233 
234  if (!droppedBranchIDToKeptBranchID().empty()) {
236  }
238  schedule_->convertCurrentProcessAlias(processConfiguration_->processName());
240  //NOTE: this may throw
242  actReg_->preBeginJobSignal_(pathsAndConsumesOfModules_, processContext_);
243  schedule_->beginJob(*preg_, esp_->recordsToProxyIndices());
244  for_all(subProcesses_, [](auto& subProcess) { subProcess.doBeginJob(); });
245  }
246 
250  "Multiple exceptions were thrown while executing endJob. An exception message follows for each.");
251  schedule_->endJob(c);
252  for (auto& subProcess : subProcesses_) {
253  c.call([&subProcess]() { subProcess.doEndJob(); });
254  }
255  if (c.hasThrown()) {
256  c.rethrow();
257  }
258  }
259 
261  ThinnedAssociationsHelper const& parentThinnedAssociationsHelper,
262  std::map<BranchID, bool>& keepAssociation) {
264  return;
266 
267  // TODO: See if we can collapse keptProducts_ and productSelector_ into a
268  // single object. See the notes in the header for ProductSelector
269  // for more information.
270 
271  std::map<BranchID, BranchDescription const*> trueBranchIDToKeptBranchDesc;
272  std::vector<BranchDescription const*> associationDescriptions;
273  std::set<BranchID> keptProductsInEvent;
274 
275  for (auto const& it : preg.productList()) {
276  BranchDescription const& desc = it.second;
277  if (desc.transient()) {
278  // if the class of the branch is marked transient, output nothing
279  } else if (!desc.present() && !desc.produced()) {
280  // else if the branch containing the product has been previously dropped,
281  // output nothing
282  } else if (desc.unwrappedType() == typeid(ThinnedAssociation)) {
283  associationDescriptions.push_back(&desc);
284  } else if (productSelector_.selected(desc)) {
285  keepThisBranch(desc, trueBranchIDToKeptBranchDesc, keptProductsInEvent);
286  }
287  }
288 
289  parentThinnedAssociationsHelper.selectAssociationProducts(
290  associationDescriptions, keptProductsInEvent, keepAssociation);
291 
292  for (auto association : associationDescriptions) {
293  if (keepAssociation[association->branchID()]) {
294  keepThisBranch(*association, trueBranchIDToKeptBranchDesc, keptProductsInEvent);
295  }
296  }
297 
298  // Now fill in a mapping needed in the case that a branch was dropped while its EDAlias was kept.
299  ProductSelector::fillDroppedToKept(preg, trueBranchIDToKeptBranchDesc, droppedBranchIDToKeptBranchID_);
300  }
301 
303  std::map<BranchID, BranchDescription const*>& trueBranchIDToKeptBranchDesc,
304  std::set<BranchID>& keptProductsInEvent) {
305  ProductSelector::checkForDuplicateKeptBranch(desc, trueBranchIDToKeptBranchDesc);
306 
307  if (desc.branchType() == InEvent) {
308  if (desc.produced()) {
309  keptProductsInEvent.insert(desc.originalBranchID());
310  } else {
311  keptProductsInEvent.insert(desc.branchID());
312  }
313  }
314  EDGetToken token = consumes(TypeToGet{desc.unwrappedTypeID(), PRODUCT_TYPE},
315  InputTag{desc.moduleLabel(), desc.productInstanceName(), desc.processName()});
316 
317  // Now put it in the list of selected branches.
318  keptProducts_[desc.branchType()].push_back(std::make_pair(&desc, token));
319  }
320 
322  std::map<BranchID::value_type, BranchID::value_type> const& droppedBranchIDToKeptBranchID) {
323  // Check for branches dropped while an EDAlias was kept.
324  // Replace BranchID of each dropped branch with that of the kept alias.
325  for (BranchIDList& branchIDList : branchIDListHelper_->mutableBranchIDLists()) {
326  for (BranchID::value_type& branchID : branchIDList) {
327  std::map<BranchID::value_type, BranchID::value_type>::const_iterator iter =
328  droppedBranchIDToKeptBranchID.find(branchID);
329  if (iter != droppedBranchIDToKeptBranchID.end()) {
330  branchID = iter->second;
331  }
332  }
333  }
334  for_all(subProcesses_, [&droppedBranchIDToKeptBranchID](auto& subProcess) {
335  subProcess.fixBranchIDListsForEDAliases(droppedBranchIDToKeptBranchID);
336  });
337  }
338 
340  EventPrincipal const& ep,
341  std::vector<std::shared_ptr<const EventSetupImpl>> const* iEventSetupImpls) {
343  /* BEGIN relevant bits from OutputModule::doEvent */
344  if (!wantAllEvents_) {
345  EventForOutput e(ep, ModuleDescription(), nullptr);
346  e.setConsumer(this);
347  if (!selectors_.wantEvent(e)) {
348  return;
349  }
350  }
351  processAsync(std::move(iHolder), ep, iEventSetupImpls);
352  /* END relevant bits from OutputModule::doEvent */
353  }
354 
356  EventPrincipal const& principal,
357  std::vector<std::shared_ptr<const EventSetupImpl>> const* iEventSetupImpls) {
358  EventAuxiliary aux(principal.aux());
359  aux.setProcessHistoryID(principal.processHistoryID());
360 
361  EventSelectionIDVector esids{principal.eventSelectionIDs()};
362  if (principal.productRegistry().anyProductProduced() || !wantAllEvents_) {
363  esids.push_back(selector_config_id_);
364  }
365 
367  auto& processHistoryRegistry = processHistoryRegistries_[principal.streamID().value()];
368  processHistoryRegistry.registerProcessHistory(principal.processHistory());
369  BranchListIndexes bli(principal.branchListIndexes());
370  branchIDListHelper_->fixBranchListIndexes(bli);
371  bool deepCopyRetriever = false;
372  ep.fillEventPrincipal(
373  aux,
374  &principal.processHistory(),
375  std::move(esids),
376  std::move(bli),
377  *(principal.productProvenanceRetrieverPtr()), //NOTE: this transfers the per product provenance
378  principal.reader(),
379  deepCopyRetriever);
380  ep.setLuminosityBlockPrincipal(inUseLumiPrincipals_[principal.luminosityBlockPrincipal().index()].get());
381  propagateProducts(InEvent, principal, ep);
382 
383  WaitingTaskHolder finalizeEventTask(
384  make_waiting_task(tbb::task::allocate_root(), [&ep, iHolder](std::exception_ptr const* iPtr) mutable {
385  ep.clearEventPrincipal();
386  if (iPtr) {
387  iHolder.doneWaiting(*iPtr);
388  } else {
389  iHolder.doneWaiting(std::exception_ptr());
390  }
391  }));
392  WaitingTaskHolder afterProcessTask;
393  if (subProcesses_.empty()) {
394  afterProcessTask = std::move(finalizeEventTask);
395  } else {
396  afterProcessTask = WaitingTaskHolder(
397  make_waiting_task(tbb::task::allocate_root(),
398  [this, &ep, finalizeEventTask, iEventSetupImpls](std::exception_ptr const* iPtr) mutable {
399  if (not iPtr) {
400  for (auto& subProcess : boost::adaptors::reverse(subProcesses_)) {
401  subProcess.doEventAsync(finalizeEventTask, ep, iEventSetupImpls);
402  }
403  } else {
404  finalizeEventTask.doneWaiting(*iPtr);
405  }
406  }));
407  }
408  EventTransitionInfo info(ep, *((*iEventSetupImpls)[esp_->subProcessIndex()]));
409  schedule_->processOneEventAsync(std::move(afterProcessTask), ep.streamID().value(), info, serviceToken_);
410  }
411 
412  template <>
413  void SubProcess::doBeginProcessBlockAsync<OccurrenceTraits<ProcessBlockPrincipal, BranchActionProcessBlockInput>>(
414  WaitingTaskHolder iHolder, ProcessBlockTransitionInfo const& iTransitionInfo) {
415  ServiceRegistry::Operate operate(serviceToken_);
416 
417  ProcessBlockPrincipal& processBlockPrincipal = principalCache_.inputProcessBlockPrincipal();
418  ProcessBlockPrincipal const& parentPrincipal = iTransitionInfo.principal();
419  processBlockPrincipal.fillProcessBlockPrincipal(parentPrincipal.processName(), parentPrincipal.reader());
420  propagateProducts(InProcess, parentPrincipal, processBlockPrincipal);
421 
422  ProcessBlockTransitionInfo transitionInfo(processBlockPrincipal);
424  beginGlobalTransitionAsync<Traits>(std::move(iHolder), *schedule_, transitionInfo, serviceToken_, subProcesses_);
425  }
426 
427  template <>
428  void SubProcess::doBeginProcessBlockAsync<OccurrenceTraits<ProcessBlockPrincipal, BranchActionGlobalBegin>>(
429  WaitingTaskHolder iHolder, ProcessBlockTransitionInfo const& iTransitionInfo) {
430  ServiceRegistry::Operate operate(serviceToken_);
431 
432  ProcessBlockPrincipal& processBlockPrincipal = principalCache_.processBlockPrincipal();
433  ProcessBlockPrincipal const& parentPrincipal = iTransitionInfo.principal();
434  processBlockPrincipal.fillProcessBlockPrincipal(processConfiguration_->processName());
435  propagateProducts(InProcess, parentPrincipal, processBlockPrincipal);
436 
437  ProcessBlockTransitionInfo transitionInfo(processBlockPrincipal);
439  beginGlobalTransitionAsync<Traits>(std::move(iHolder), *schedule_, transitionInfo, serviceToken_, subProcesses_);
440  }
441 
443  ProcessBlockTransitionInfo const& iTransitionInfo,
444  bool cleaningUpAfterException) {
446  ProcessBlockPrincipal const& parentPrincipal = iTransitionInfo.principal();
447  propagateProducts(InProcess, parentPrincipal, processBlockPrincipal);
448 
449  ProcessBlockTransitionInfo transitionInfo(processBlockPrincipal);
451  endGlobalTransitionAsync<Traits>(
452  std::move(iHolder), *schedule_, transitionInfo, serviceToken_, subProcesses_, cleaningUpAfterException);
453  }
454 
455  void SubProcess::doBeginRunAsync(WaitingTaskHolder iHolder, RunTransitionInfo const& iTransitionInfo) {
457 
458  RunPrincipal const& parentPrincipal = iTransitionInfo.principal();
459  auto aux = std::make_shared<RunAuxiliary>(parentPrincipal.aux());
460  aux->setProcessHistoryID(parentPrincipal.processHistoryID());
461  auto rpp = std::make_shared<RunPrincipal>(aux,
462  preg_,
464  &(historyAppenders_[historyRunOffset_ + parentPrincipal.index()]),
465  parentPrincipal.index(),
466  false);
467  auto& processHistoryRegistry = processHistoryRegistries_[historyRunOffset_ + parentPrincipal.index()];
468  processHistoryRegistry.registerProcessHistory(parentPrincipal.processHistory());
469  rpp->fillRunPrincipal(processHistoryRegistry, parentPrincipal.reader());
470  principalCache_.insert(rpp);
471 
472  ProcessHistoryID const& parentInputReducedPHID = parentPrincipal.reducedProcessHistoryID();
473  ProcessHistoryID const& inputReducedPHID = rpp->reducedProcessHistoryID();
474 
475  parentToChildPhID_.insert(std::make_pair(parentInputReducedPHID, inputReducedPHID));
476 
478  propagateProducts(InRun, parentPrincipal, rp);
479 
480  RunTransitionInfo transitionInfo(rp, esp_->eventSetupImpl());
482  beginGlobalTransitionAsync<Traits>(std::move(iHolder), *schedule_, transitionInfo, serviceToken_, subProcesses_);
483  }
484 
486  RunTransitionInfo const& iTransitionInfo,
487  bool cleaningUpAfterException) {
488  RunPrincipal const& parentPrincipal = iTransitionInfo.principal();
490  propagateProducts(InRun, parentPrincipal, rp);
491 
492  RunTransitionInfo transitionInfo(rp, esp_->eventSetupImpl());
494  endGlobalTransitionAsync<Traits>(
495  std::move(iHolder), *schedule_, transitionInfo, serviceToken_, subProcesses_, cleaningUpAfterException);
496  }
497 
500 
501  auto subTasks = edm::make_waiting_task(tbb::task::allocate_root(),
502  [this, task, processBlockType](std::exception_ptr const* iExcept) mutable {
503  if (iExcept) {
504  task.doneWaiting(*iExcept);
505  } else {
507  for (auto& s : subProcesses_) {
508  s.writeProcessBlockAsync(task, processBlockType);
509  }
510  }
511  });
512  schedule_->writeProcessBlockAsync(WaitingTaskHolder(subTasks),
513  principalCache_.processBlockPrincipal(processBlockType),
515  actReg_.get());
516  }
517 
519  ProcessHistoryID const& parentPhID,
520  int runNumber,
521  MergeableRunProductMetadata const* mergeableRunProductMetadata) {
523  std::map<ProcessHistoryID, ProcessHistoryID>::const_iterator it = parentToChildPhID_.find(parentPhID);
524  assert(it != parentToChildPhID_.end());
525  auto const& childPhID = it->second;
526 
527  auto subTasks = edm::make_waiting_task(
528  tbb::task::allocate_root(),
529  [this, childPhID, runNumber, task, mergeableRunProductMetadata](std::exception_ptr const* iExcept) mutable {
530  if (iExcept) {
531  task.doneWaiting(*iExcept);
532  } else {
533  ServiceRegistry::Operate operateWriteRun(serviceToken_);
534  for (auto& s : subProcesses_) {
535  s.writeRunAsync(task, childPhID, runNumber, mergeableRunProductMetadata);
536  }
537  }
538  });
539  schedule_->writeRunAsync(WaitingTaskHolder(subTasks),
542  actReg_.get(),
543  mergeableRunProductMetadata);
544  }
545 
547  std::map<ProcessHistoryID, ProcessHistoryID>::const_iterator it = parentToChildPhID_.find(parentPhID);
548  assert(it != parentToChildPhID_.end());
549  auto const& childPhID = it->second;
550  principalCache_.deleteRun(childPhID, runNumber);
552  [&childPhID, runNumber](auto& subProcess) { subProcess.deleteRunFromCache(childPhID, runNumber); });
553  }
554 
556  ProcessBlockPrincipal& processBlockPrincipal = principalCache_.processBlockPrincipal(processBlockType);
557  processBlockPrincipal.clearPrincipal();
558  for (auto& s : subProcesses_) {
559  s.clearProcessBlockPrincipal(processBlockType);
560  }
561  }
562 
565 
566  LuminosityBlockPrincipal const& parentPrincipal = iTransitionInfo.principal();
567  auto aux = parentPrincipal.aux();
568  aux.setProcessHistoryID(parentPrincipal.processHistoryID());
570  lbpp->setAux(aux);
571  auto& processHistoryRegistry = processHistoryRegistries_[historyLumiOffset_ + lbpp->index()];
572  inUseLumiPrincipals_[parentPrincipal.index()] = lbpp;
573  processHistoryRegistry.registerProcessHistory(parentPrincipal.processHistory());
574  lbpp->fillLuminosityBlockPrincipal(&parentPrincipal.processHistory(), parentPrincipal.reader());
575  lbpp->setRunPrincipal(principalCache_.runPrincipalPtr());
576  LuminosityBlockPrincipal& lbp = *lbpp;
577  propagateProducts(InLumi, parentPrincipal, lbp);
578 
579  std::vector<std::shared_ptr<const EventSetupImpl>> const* eventSetupImpls = iTransitionInfo.eventSetupImpls();
580  LumiTransitionInfo transitionInfo(lbp, *((*eventSetupImpls)[esp_->subProcessIndex()]), eventSetupImpls);
582  beginGlobalTransitionAsync<Traits>(std::move(iHolder), *schedule_, transitionInfo, serviceToken_, subProcesses_);
583  }
584 
586  LumiTransitionInfo const& iTransitionInfo,
587  bool cleaningUpAfterException) {
588  LuminosityBlockPrincipal const& parentPrincipal = iTransitionInfo.principal();
589  LuminosityBlockPrincipal& lbp = *inUseLumiPrincipals_[parentPrincipal.index()];
590  propagateProducts(InLumi, parentPrincipal, lbp);
591 
592  std::vector<std::shared_ptr<const EventSetupImpl>> const* eventSetupImpls = iTransitionInfo.eventSetupImpls();
593  LumiTransitionInfo transitionInfo(lbp, *((*eventSetupImpls)[esp_->subProcessIndex()]), eventSetupImpls);
595  endGlobalTransitionAsync<Traits>(
596  std::move(iHolder), *schedule_, transitionInfo, serviceToken_, subProcesses_, cleaningUpAfterException);
597  }
598 
601 
602  auto l = inUseLumiPrincipals_[principal.index()];
603  auto subTasks =
604  edm::make_waiting_task(tbb::task::allocate_root(), [this, l, task](std::exception_ptr const* iExcept) mutable {
605  if (iExcept) {
606  task.doneWaiting(*iExcept);
607  } else {
608  ServiceRegistry::Operate operateWriteLumi(serviceToken_);
609  for (auto& s : subProcesses_) {
610  s.writeLumiAsync(task, *l);
611  }
612  }
613  });
614  schedule_->writeLumiAsync(WaitingTaskHolder(subTasks), *l, &processContext_, actReg_.get());
615  }
616 
618  //release from list but stay around till end of routine
619  auto lb = std::move(inUseLumiPrincipals_[principal.index()]);
620  for (auto& s : subProcesses_) {
621  s.deleteLumiFromCache(*lb);
622  }
623  lb->clearPrincipal();
624  }
625 
626  void SubProcess::doBeginStream(unsigned int iID) {
628  schedule_->beginStream(iID);
629  for_all(subProcesses_, [iID](auto& subProcess) { subProcess.doBeginStream(iID); });
630  }
631 
632  void SubProcess::doEndStream(unsigned int iID) {
634  schedule_->endStream(iID);
635  for_all(subProcesses_, [iID](auto& subProcess) { subProcess.doEndStream(iID); });
636  }
637 
640 
642 
643  RunTransitionInfo transitionInfo(rp, esp_->eventSetupImpl());
644  beginStreamTransitionAsync<Traits>(
645  std::move(iHolder), *schedule_, id, transitionInfo, serviceToken_, subProcesses_);
646  }
647 
649  unsigned int id,
650  RunTransitionInfo const&,
651  bool cleaningUpAfterException) {
654 
655  RunTransitionInfo transitionInfo(rp, esp_->eventSetupImpl());
656  endStreamTransitionAsync<Traits>(
657  std::move(iHolder), *schedule_, id, transitionInfo, serviceToken_, subProcesses_, cleaningUpAfterException);
658  }
659 
661  unsigned int id,
662  LumiTransitionInfo const& iTransitionInfo) {
664 
665  LuminosityBlockPrincipal& lbp = *inUseLumiPrincipals_[iTransitionInfo.principal().index()];
666  std::vector<std::shared_ptr<const EventSetupImpl>> const* eventSetupImpls = iTransitionInfo.eventSetupImpls();
667  LumiTransitionInfo transitionInfo(lbp, *((*eventSetupImpls)[esp_->subProcessIndex()]), eventSetupImpls);
668  beginStreamTransitionAsync<Traits>(
669  std::move(iHolder), *schedule_, id, transitionInfo, serviceToken_, subProcesses_);
670  }
671 
673  unsigned int id,
674  LumiTransitionInfo const& iTransitionInfo,
675  bool cleaningUpAfterException) {
676  LuminosityBlockPrincipal& lbp = *inUseLumiPrincipals_[iTransitionInfo.principal().index()];
678  std::vector<std::shared_ptr<const EventSetupImpl>> const* eventSetupImpls = iTransitionInfo.eventSetupImpls();
679  LumiTransitionInfo transitionInfo(lbp, *((*eventSetupImpls)[esp_->subProcessIndex()]), eventSetupImpls);
680  endStreamTransitionAsync<Traits>(
681  std::move(iHolder), *schedule_, id, transitionInfo, serviceToken_, subProcesses_, cleaningUpAfterException);
682  }
683 
684  void SubProcess::propagateProducts(BranchType type, Principal const& parentPrincipal, Principal& principal) const {
685  SelectedProducts const& keptVector = keptProducts()[type];
686  for (auto const& item : keptVector) {
687  BranchDescription const& desc = *item.first;
688  ProductResolverBase const* parentProductResolver = parentPrincipal.getProductResolver(desc.branchID());
689  if (parentProductResolver != nullptr) {
690  ProductResolverBase* productResolver = principal.getModifiableProductResolver(desc.branchID());
691  if (productResolver != nullptr) {
692  //Propagate the per event(run)(lumi)(processBlock) data for this product to the subprocess.
693  productResolver->connectTo(*parentProductResolver, &parentPrincipal);
694  }
695  }
696  }
697  }
698 
700  branchIDListHelper_->updateFromParent(branchIDLists);
702  [this](auto& subProcess) { subProcess.updateBranchIDListHelper(branchIDListHelper_->branchIDLists()); });
703  }
704 
705  // Call respondToOpenInputFile() on all Modules
708  schedule_->respondToOpenInputFile(fb);
709  for_all(subProcesses_, [&fb](auto& subProcess) { subProcess.respondToOpenInputFile(fb); });
710  }
711 
712  // free function
714  std::vector<std::string> subProcesses =
715  parameterSet.getUntrackedParameter<std::vector<std::string>>("@all_subprocesses");
716  if (!subProcesses.empty()) {
717  return parameterSet.popVParameterSet("subProcesses");
718  }
719  return {};
720  }
721 } // namespace edm
edm::SubProcess::beginJob
void beginJob()
Definition: SubProcess.cc:227
edm::ParameterSet::registerIt
ParameterSet const & registerIt()
Definition: ParameterSet.cc:113
edm::EventTransitionInfo
Definition: TransitionInfoTypes.h:26
edm::SubProcess::respondToOpenInputFile
void respondToOpenInputFile(FileBlock const &fb)
Definition: SubProcess.cc:706
ThinnedAssociationsHelper.h
IllegalParameters.h
edm::ProcessBlockTransitionInfo::principal
ProcessBlockPrincipal & principal()
Definition: TransitionInfoTypes.h:86
edm::SubProcess::processConfiguration_
std::shared_ptr< ProcessConfiguration const > processConfiguration_
Definition: SubProcess.h:282
ProcessHistoryID.h
edm::EventPrincipal::aux
EventAuxiliary const & aux() const
Definition: EventPrincipal.h:104
ProductResolverBase.h
edm::OccurrenceTraits< LuminosityBlockPrincipal, BranchActionGlobalEnd >
Definition: OccurrenceTraits.h:356
edm::eventsetup::EventSetupsController::makeProvider
std::shared_ptr< EventSetupProvider > makeProvider(ParameterSet &, ActivityRegistry *, ParameterSet const *eventSetupPset=nullptr)
Definition: EventSetupsController.cc:42
edm::SubProcess::historyRunOffset_
unsigned int historyRunOffset_
Definition: SubProcess.h:288
edm::SubProcess::historyLumiOffset_
unsigned int historyLumiOffset_
Definition: SubProcess.h:287
edm::SubProcess::selector_config_id_
ParameterSetID selector_config_id_
Definition: SubProcess.h:310
edm::SubProcessParentageHelper
Definition: SubProcessParentageHelper.h:21
edm::EventPrincipal::luminosityBlockPrincipal
LuminosityBlockPrincipal const & luminosityBlockPrincipal() const
Definition: EventPrincipal.h:81
edm::popSubProcessVParameterSet
std::vector< ParameterSet > popSubProcessVParameterSet(ParameterSet &parameterSet)
Definition: SubProcess.cc:713
edm::getAllTriggerNames
std::vector< std::string > const & getAllTriggerNames()
Definition: getAllTriggerNames.cc:22
edm::OccurrenceTraits< ProcessBlockPrincipal, BranchActionGlobalBegin >
Definition: OccurrenceTraits.h:397
edm::ProcessBlockTransitionInfo
Definition: TransitionInfoTypes.h:80
edm::SubProcess::processHistoryRegistries_
std::vector< ProcessHistoryRegistry > processHistoryRegistries_
Definition: SubProcess.h:289
edm::PRODUCT_TYPE
Definition: ProductKindOfType.h:5
edm::SubProcess::clearProcessBlockPrincipal
void clearProcessBlockPrincipal(ProcessBlockType)
Definition: SubProcess.cc:555
edm::SubProcess::branchIDListHelper
std::shared_ptr< BranchIDListHelper const > branchIDListHelper() const
Definition: SubProcess.h:263
edm::ParameterSet::getUntrackedParameterSet
ParameterSet getUntrackedParameterSet(std::string const &name, ParameterSet const &defaultValue) const
Definition: ParameterSet.cc:2136
edm::LumiTransitionInfo
Definition: TransitionInfoTypes.h:42
edm::SubProcess::keptProducts
SelectedProductsForBranchType const & keptProducts() const
Definition: SubProcess.h:77
edm::validateTopLevelParameterSets
void validateTopLevelParameterSets(ParameterSet *processParameterSet)
Definition: validateTopLevelParameterSets.cc:89
BranchIDListHelper.h
TriggerNamesService.h
WaitingTaskHolder.h
edm::OccurrenceTraits< RunPrincipal, BranchActionGlobalBegin >
Definition: OccurrenceTraits.h:71
edm::SubProcess::pathsAndConsumesOfModules_
PathsAndConsumesOfModules pathsAndConsumesOfModules_
Definition: SubProcess.h:284
edm::SubProcess::doStreamEndRunAsync
void doStreamEndRunAsync(WaitingTaskHolder iHolder, unsigned int iID, RunTransitionInfo const &, bool cleaningUpAfterException)
Definition: SubProcess.cc:648
edm
HLT enums.
Definition: AlignableModifier.h:19
edm::ProcessContext
Definition: ProcessContext.h:27
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:699
hgcal::association
std::tuple< layerClusterToCaloParticle, caloParticleToLayerCluster > association
Definition: LayerClusterAssociatorByEnergyScoreImpl.h:44
edm::LuminosityBlockPrincipal
Definition: LuminosityBlockPrincipal.h:31
edm::BranchListIndexes
std::vector< BranchListIndex > BranchListIndexes
Definition: BranchListIndex.h:18
edm::ThinnedAssociation
Definition: ThinnedAssociation.h:15
edm::SubProcess::thinnedAssociationsHelper_
edm::propagate_const< std::shared_ptr< ThinnedAssociationsHelper > > thinnedAssociationsHelper_
Definition: SubProcess.h:279
edm::ScheduleItems
Definition: ScheduleItems.h:28
edm::SubProcess::subProcesses_
std::vector< SubProcess > subProcesses_
Definition: SubProcess.h:297
cms::cuda::assert
assert(be >=bs)
edm::SubProcess::doEndStream
void doEndStream(unsigned int)
Definition: SubProcess.cc:632
edm::OccurrenceTraits< LuminosityBlockPrincipal, BranchActionStreamBegin >
Definition: OccurrenceTraits.h:274
edm::Principal
Definition: Principal.h:57
edm::EDConsumerBase::consumesCollector
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
Definition: EDConsumerBase.cc:46
edm::ProductSelector::selected
bool selected(BranchDescription const &desc) const
Definition: ProductSelector.cc:55
info
static const TGPicture * info(bool iBackgroundIsBlack)
Definition: FWCollectionSummaryWidget.cc:153
ProcessBlockPrincipal.h
SignallingProductRegistry.h
ProcessHistoryRegistry.h
edm::ParameterSet::getUntrackedParameter
T getUntrackedParameter(std::string const &, T const &) const
edm::StreamID::value
unsigned int value() const
Definition: StreamID.h:43
edm::ProcessBlockPrincipal::processName
std::string const & processName() const
Definition: ProcessBlockPrincipal.h:30
PreallocationConfiguration.h
ESRecordsToProxyIndices.h
ProductRegistry.h
EventSetupsController.h
EventForOutput.h
edm::Principal::processHistory
ProcessHistory const & processHistory() const
Definition: Principal.h:141
edm::SubProcess::doEndProcessBlockAsync
void doEndProcessBlockAsync(WaitingTaskHolder iHolder, ProcessBlockTransitionInfo const &iTransitionInfo, bool cleaningUpAfterException)
Definition: SubProcess.cc:442
edm::WaitingTaskHolder::doneWaiting
void doneWaiting(std::exception_ptr iExcept)
Definition: WaitingTaskHolder.h:75
edm::RunTransitionInfo
Definition: TransitionInfoTypes.h:64
edm::RunPrincipal::aux
RunAuxiliary const & aux() const
Definition: RunPrincipal.h:59
getAllTriggerNames.h
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::doBeginJob
void doBeginJob()
Definition: SubProcess.cc:223
edm::ProcessBlockPrincipal
Definition: ProcessBlockPrincipal.h:22
edm::OccurrenceTraits< ProcessBlockPrincipal, BranchActionGlobalEnd >
Definition: OccurrenceTraits.h:471
edm::SubProcess::processAsync
void processAsync(WaitingTaskHolder iHolder, EventPrincipal const &e, std::vector< std::shared_ptr< const EventSetupImpl >> const *)
Definition: SubProcess.cc:355
edm::PathsAndConsumesOfModules::initialize
void initialize(Schedule const *, std::shared_ptr< ProductRegistry const >)
Definition: PathsAndConsumesOfModules.cc:14
edm::BranchType
BranchType
Definition: BranchType.h:11
edm::ModuleDescription
Definition: ModuleDescription.h:21
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::EventPrincipal::productProvenanceRetrieverPtr
ProductProvenanceRetriever const * productProvenanceRetrieverPtr() const
Definition: EventPrincipal.h:114
edm::SelectedProducts
std::vector< std::pair< BranchDescription const *, EDGetToken > > SelectedProducts
Definition: SelectedProducts.h:11
edm::OccurrenceTraits< RunPrincipal, BranchActionStreamBegin >
Definition: OccurrenceTraits.h:112
edm::for_all
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:14
edm::LuminosityBlockPrincipal::aux
LuminosityBlockAuxiliary const & aux() const
Definition: LuminosityBlockPrincipal.h:64
edm::ProductRegistry
Definition: ProductRegistry.h:37
ActivityRegistry.h
edm::EventPrincipal::branchListIndexes
BranchListIndexes const & branchListIndexes() const
Definition: EventPrincipal.cc:361
edm::FileBlock
Definition: FileBlock.h:20
edm::SubProcess::wantAllEvents_
bool wantAllEvents_
Definition: SubProcess.h:309
edm::PreallocationConfiguration::numberOfLuminosityBlocks
unsigned int numberOfLuminosityBlocks() const
Definition: PreallocationConfiguration.h:36
edm::ServiceToken
Definition: ServiceToken.h:40
edm::InProcess
Definition: BranchType.h:11
edm::EDConsumerBase
Definition: EDConsumerBase.h:70
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:259
edm::SubProcess::deleteRunFromCache
void deleteRunFromCache(ProcessHistoryID const &parentPhID, int runNumber)
Definition: SubProcess.cc:546
edm::SubProcess::schedule_
edm::propagate_const< std::unique_ptr< Schedule > > schedule_
Definition: SubProcess.h:295
edm::EventPrincipal
Definition: EventPrincipal.h:46
edm::SubProcess::inUseLumiPrincipals_
std::vector< std::shared_ptr< LuminosityBlockPrincipal > > inUseLumiPrincipals_
Definition: SubProcess.h:293
OutputModuleDescription.h
edm::OccurrenceTraits< RunPrincipal, BranchActionGlobalEnd >
Definition: OccurrenceTraits.h:192
edm::SubProcess::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: SubProcess.cc:48
edm::ProductSelector::initialized
bool initialized() const
Definition: ProductSelector.h:38
edm::ExceptionCollector
Definition: ExceptionCollector.h:33
edm::Principal::processHistoryID
ProcessHistoryID const & processHistoryID() const
Definition: Principal.h:143
edm::BranchIDList
std::vector< BranchID::value_type > BranchIDList
Definition: BranchIDList.h:18
EventPrincipal.h
edm::SubProcess::thinnedAssociationsHelper
std::shared_ptr< ThinnedAssociationsHelper const > thinnedAssociationsHelper() const
Definition: SubProcess.h:267
edm::SubProcess::selectProducts
void selectProducts(ProductRegistry const &preg, ThinnedAssociationsHelper const &parentThinnedAssociationsHelper, std::map< BranchID, bool > &keepAssociation)
Definition: SubProcess.cc:260
SubProcessParentageHelper.h
edm::ProductSelector::checkForDuplicateKeptBranch
static void checkForDuplicateKeptBranch(BranchDescription const &desc, std::map< BranchID, BranchDescription const * > &trueBranchIDToKeptBranchDesc)
Definition: ProductSelector.cc:71
edm::Principal::reader
DelayedReader * reader() const
Definition: Principal.h:187
TrackValidation_cff.task
task
Definition: TrackValidation_cff.py:252
edm::ActivityRegistry
Definition: ActivityRegistry.h:133
edm::ThinnedAssociationsHelper::selectAssociationProducts
void selectAssociationProducts(std::vector< BranchDescription const * > const &associationDescriptions, std::set< BranchID > const &keptProductsInEvent, std::map< BranchID, bool > &keepAssociation) const
Definition: ThinnedAssociationsHelper.cc:189
edm::MergeableRunProductMetadata
Definition: MergeableRunProductMetadata.h:52
edm::SubProcess::doEventAsync
void doEventAsync(WaitingTaskHolder iHolder, EventPrincipal const &principal, std::vector< std::shared_ptr< const EventSetupImpl >> const *)
Definition: SubProcess.cc:339
edm::checkForModuleDependencyCorrectness
void checkForModuleDependencyCorrectness(edm::PathsAndConsumesOfModulesBase const &iPnC, bool iPrintDependencies)
Definition: PathsAndConsumesOfModules.cc:130
edm::Principal::getProductResolver
ConstProductResolverPtr getProductResolver(BranchID const &oid) const
Definition: Principal.cc:545
edm::Hash
Definition: Hash.h:43
edm::SubProcess::serviceToken_
ServiceToken serviceToken_
Definition: SubProcess.h:275
edm::ActivityRegistry::connectToSubProcess
void connectToSubProcess(ActivityRegistry &iOther)
Definition: ActivityRegistry.cc:296
edm::SubProcess::esp_
edm::propagate_const< std::shared_ptr< eventsetup::EventSetupProvider > > esp_
Definition: SubProcess.h:294
edm::InEvent
Definition: BranchType.h:11
edm::OccurrenceTraits< RunPrincipal, BranchActionStreamEnd >
Definition: OccurrenceTraits.h:152
ExceptionCollector.h
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::SubProcess::doBeginLuminosityBlockAsync
void doBeginLuminosityBlockAsync(WaitingTaskHolder iHolder, LumiTransitionInfo const &iTransitionInfo)
Definition: SubProcess.cc:563
edm::make_waiting_task
FunctorWaitingTask< F > * make_waiting_task(ALLOC &&iAlloc, F f)
Definition: WaitingTask.h:87
edm::BranchIDLists
std::vector< BranchIDList > BranchIDLists
Definition: BranchIDList.h:19
edm::BranchID::value_type
unsigned int value_type
Definition: BranchID.h:16
edm::Principal::productRegistry
ProductRegistry const & productRegistry() const
Definition: Principal.h:147
edm::SubProcess::~SubProcess
~SubProcess() override
Definition: SubProcess.cc:221
edm::EventAuxiliary
Definition: EventAuxiliary.h:14
edm::SubProcess::propagateProducts
void propagateProducts(BranchType type, Principal const &parentPrincipal, Principal &principal) const
Definition: SubProcess.cc:684
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
streamTransitionAsync.h
edm::RunPrincipal::index
RunIndex index() const
Definition: RunPrincipal.h:57
edm::SubProcess::keptProducts_
SelectedProductsForBranchType keptProducts_
Definition: SubProcess.h:304
edm::SubProcess::doEndJob
void doEndJob()
Definition: SubProcess.cc:225
HistoryAppender.h
edm::ParameterSet::exists
bool exists(std::string const &parameterName) const
checks if a parameter exists
Definition: ParameterSet.cc:681
funct::true
true
Definition: Factorize.h:173
LuminosityBlockAuxiliary.h
edm::ThinnedAssociationsHelper
Definition: ThinnedAssociationsHelper.h:37
edm::SubProcess::deleteLumiFromCache
void deleteLumiFromCache(LuminosityBlockPrincipal &)
Definition: SubProcess.cc:617
edm::SubProcess::productSelectorRules_
ProductSelectorRules productSelectorRules_
Definition: SubProcess.h:305
edm::ParameterSet
Definition: ParameterSet.h:47
edm::OccurrenceTraits< ProcessBlockPrincipal, BranchActionProcessBlockInput >
Definition: OccurrenceTraits.h:434
edm::ProcessContext::setParentProcessContext
void setParentProcessContext(ProcessContext const *parentProcessContext)
Definition: ProcessContext.cc:23
edm::detail::TriggerResultsBasedEventSelector::wantEvent
bool wantEvent(EventForOutput const &e)
Definition: TriggerResultsBasedEventSelector.cc:148
edm::OccurrenceTraits< LuminosityBlockPrincipal, BranchActionGlobalBegin >
Definition: OccurrenceTraits.h:233
edm::WaitingTaskHolder
Definition: WaitingTaskHolder.h:30
edm::InLumi
Definition: BranchType.h:11
edm::Principal::getModifiableProductResolver
ProductResolverBase * getModifiableProductResolver(BranchID const &oid)
Definition: Principal.h:154
type
type
Definition: SiPixelVCal_PayloadInspector.cc:37
edm::SubProcess::processParameterSet_
edm::propagate_const< std::unique_ptr< ParameterSet > > processParameterSet_
Definition: SubProcess.h:298
edm::SubProcess::act_table_
std::unique_ptr< ExceptionToActionTable const > act_table_
Definition: SubProcess.h:281
gainCalibHelper::gainCalibPI::type
type
Definition: SiPixelGainCalibHelper.h:39
RunPrincipal.h
edm::SubProcess::keepThisBranch
void keepThisBranch(BranchDescription const &desc, std::map< BranchID, BranchDescription const * > &trueBranchIDToKeptBranchDesc, std::set< BranchID > &keptProductsInEvent)
Definition: SubProcess.cc:302
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:315
printConversionInfo.aux
aux
Definition: printConversionInfo.py:19
edm::EDConsumerBase::updateLookup
void updateLookup(BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
Definition: EDConsumerBase.cc:111
edm::Service
Definition: Service.h:30
edm::SubProcess::writeRunAsync
void writeRunAsync(WaitingTaskHolder, ProcessHistoryID const &parentPhID, int runNumber, MergeableRunProductMetadata const *)
Definition: SubProcess.cc:518
edm::EventPrincipal::eventSelectionIDs
EventSelectionIDVector const & eventSelectionIDs() const
Definition: EventPrincipal.cc:359
edm::LumiTransitionInfo::principal
LuminosityBlockPrincipal & principal()
Definition: TransitionInfoTypes.h:53
edm::SubProcess::selectors_
detail::TriggerResultsBasedEventSelector selectors_
Definition: SubProcess.h:311
edm::SubProcess::doStreamBeginLuminosityBlockAsync
void doStreamBeginLuminosityBlockAsync(WaitingTaskHolder iHolder, unsigned int iID, LumiTransitionInfo const &)
Definition: SubProcess.cc:660
trackerHitRTTI::vector
Definition: trackerHitRTTI.h:21
edm::RunPrincipal::reducedProcessHistoryID
ProcessHistoryID const & reducedProcessHistoryID() const
Definition: RunPrincipal.h:63
edm::ParameterSet::popVParameterSet
std::vector< ParameterSet > popVParameterSet(std::string const &name)
Definition: ParameterSet.cc:150
edm::PrincipalCache::insertForInput
void insertForInput(std::unique_ptr< ProcessBlockPrincipal >)
Definition: PrincipalCache.cc:98
edm::ProductRegistry::allBranchDescriptions
std::vector< BranchDescription const * > allBranchDescriptions() const
Definition: ProductRegistry.cc:199
B2GTnPMonitor_cfi.item
item
Definition: B2GTnPMonitor_cfi.py:147
edm::EventPrincipal::streamID
StreamID streamID() const
Definition: EventPrincipal.h:106
HltBtagPostValidation_cff.c
c
Definition: HltBtagPostValidation_cff.py:31
edm::SubProcess::actReg_
std::shared_ptr< ActivityRegistry > actReg_
Definition: SubProcess.h:274
edm::EDGetToken
Definition: EDGetToken.h:35
edm::eventsetup::EventSetupsController
Definition: EventSetupsController.h:79
edm::Principal::clearPrincipal
void clearPrincipal()
Definition: Principal.cc:373
edm::SubProcess::writeProcessBlockAsync
void writeProcessBlockAsync(edm::WaitingTaskHolder task, ProcessBlockType)
Definition: SubProcess.cc:498
LuminosityBlockPrincipal.h
WaitingTask.h
SubProcess.h
cmsLHEtoEOSManager.l
l
Definition: cmsLHEtoEOSManager.py:204
edm::PrincipalCache::ProcessBlockType
ProcessBlockType
Definition: PrincipalCache.h:57
edm::LumiTransitionInfo::eventSetupImpls
std::vector< std::shared_ptr< const EventSetupImpl > > const * eventSetupImpls() const
Definition: TransitionInfoTypes.h:56
FileBlock.h
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:15
edm::SubProcess::productSelector_
ProductSelector productSelector_
Definition: SubProcess.h:306
ScheduleItems.h
edm::EventForOutput
Definition: EventForOutput.h:50
OccurrenceTraits.h
edm::PreallocationConfiguration
Definition: PreallocationConfiguration.h:27
submitPVResolutionJobs.desc
string desc
Definition: submitPVResolutionJobs.py:251
edm::SubProcess::doStreamBeginRunAsync
void doStreamBeginRunAsync(WaitingTaskHolder iHolder, unsigned int iID, RunTransitionInfo const &)
Definition: SubProcess.cc:638
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::ProductRegistry::productList
ProductList const & productList() const
Definition: ProductRegistry.h:76
edm::SubProcess::endJob
void endJob()
Definition: SubProcess.cc:247
edm::SubProcess::parentToChildPhID_
std::map< ProcessHistoryID, ProcessHistoryID > parentToChildPhID_
Definition: SubProcess.h:296
edm::SubProcess::doBeginStream
void doBeginStream(unsigned int)
Definition: SubProcess.cc:626
edm::SubProcess::parentPreg_
std::shared_ptr< ProductRegistry const > parentPreg_
Definition: SubProcess.h:276
edm::SubProcess::doEndRunAsync
void doEndRunAsync(WaitingTaskHolder iHolder, RunTransitionInfo const &iTransitionInfo, bool cleaningUpAfterException)
Definition: SubProcess.cc:485
edm::SubProcess::doBeginRunAsync
void doBeginRunAsync(WaitingTaskHolder iHolder, RunTransitionInfo const &iTransitionInfo)
Definition: SubProcess.cc:455
edm::SubProcess::fixBranchIDListsForEDAliases
void fixBranchIDListsForEDAliases(std::map< BranchID::value_type, BranchID::value_type > const &droppedBranchIDToKeptBranchID)
Definition: SubProcess.cc:321
edm::ProductResolverBase
Definition: ProductResolverBase.h:34
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:278
RunAuxiliary.h
edm::parameterSet
ParameterSet const & parameterSet(Provenance const &provenance, ProcessHistory const &history)
Definition: Provenance.cc:11
Data_TkAlMinBias_Run2018C_PromptReco_v3_cff.maxEvents
maxEvents
Definition: Data_TkAlMinBias_Run2018C_PromptReco_v3_cff.py:3
edm::SubProcess::historyAppenders_
std::vector< HistoryAppender > historyAppenders_
Definition: SubProcess.h:290
ThinnedAssociation.h
edm::OccurrenceTraits< LuminosityBlockPrincipal, BranchActionStreamEnd >
Definition: OccurrenceTraits.h:314
edm::PreallocationConfiguration::numberOfStreams
unsigned int numberOfStreams() const
Definition: PreallocationConfiguration.h:35
edm::ProductResolverBase::connectTo
virtual void connectTo(ProductResolverBase const &, Principal const *)=0
AlignmentPI::index
index
Definition: AlignmentPayloadInspectorHelper.h:46
edm::PrincipalCache::processBlockPrincipal
ProcessBlockPrincipal & processBlockPrincipal() const
Definition: PrincipalCache.h:54
edm::BranchDescription
Definition: BranchDescription.h:32
visualization-live-secondInstance_cfg.numberOfStreams
numberOfStreams
Definition: visualization-live-secondInstance_cfg.py:89
globalTransitionAsync.h
validateTopLevelParameterSets.h
TransitionInfoTypes.h
ParameterSet.h
edm::SubProcess::writeLumiAsync
void writeLumiAsync(WaitingTaskHolder, LuminosityBlockPrincipal &)
Definition: SubProcess.cc:599
edm::LuminosityBlockPrincipal::index
LuminosityBlockIndex index() const
Definition: LuminosityBlockPrincipal.h:51
edm::EDConsumerBase::consumes
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
Definition: EDConsumerBase.h:153
edm::SubProcess::processContext_
ProcessContext processContext_
Definition: SubProcess.h:283
edm::RunPrincipal
Definition: RunPrincipal.h:34
edm::ProductRegistry::anyProductProduced
bool anyProductProduced() const
Definition: ProductRegistry.h:122
edm::PrincipalCache::eventPrincipal
EventPrincipal & eventPrincipal(unsigned int iStreamIndex) const
Definition: PrincipalCache.h:70
edm::TypeToGet
Definition: TypeToGet.h:32
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:280
edm::EventSelectionIDVector
std::vector< EventSelectionID > EventSelectionIDVector
Definition: EventSelectionID.h:16
edm::ServiceRegistry::Operate
Definition: ServiceRegistry.h:40
SiStripBadComponentsDQMServiceTemplate_cfg.ep
ep
Definition: SiStripBadComponentsDQMServiceTemplate_cfg.py:86
edm::InputTag
Definition: InputTag.h:15
edm::SubProcess::doStreamEndLuminosityBlockAsync
void doStreamEndLuminosityBlockAsync(WaitingTaskHolder iHolder, unsigned int iID, LumiTransitionInfo const &, bool cleaningUpAfterException)
Definition: SubProcess.cc:672
edm::RunTransitionInfo::principal
RunPrincipal & principal()
Definition: TransitionInfoTypes.h:71
benchmark_cfg.fb
fb
Definition: benchmark_cfg.py:14
EventSelectionID.h
edm::serviceregistry::ServiceLegacy
ServiceLegacy
Definition: ServiceLegacy.h:29
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37
edm::SubProcess::doEndLuminosityBlockAsync
void doEndLuminosityBlockAsync(WaitingTaskHolder iHolder, LumiTransitionInfo const &iTransitionInfo, bool cleaningUpAfterException)
Definition: SubProcess.cc:585
edm::PrincipalCache::setNumberOfConcurrentPrincipals
void setNumberOfConcurrentPrincipals(PreallocationConfiguration const &)
Definition: PrincipalCache.cc:17
edm::SubProcess::preg_
std::shared_ptr< ProductRegistry const > preg_
Definition: SubProcess.h:277
unpackBuffers-CaloStage2.token
token
Definition: unpackBuffers-CaloStage2.py:318
edm::SubProcess::principalCache_
PrincipalCache principalCache_
Definition: SubProcess.h:291