CMS 3D CMS Logo

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

#include <Schedule.h>

Public Types

typedef std::vector< edm::propagate_const< std::shared_ptr< OutputModuleCommunicator > > > AllOutputModuleCommunicators
 
typedef std::vector< Worker * > AllWorkers
 
typedef std::vector< std::string > vstring
 
typedef std::vector< Worker * > Workers
 

Public Member Functions

AllWorkers const & allWorkers () const
 returns the collection of pointers to workers More...
 
void availablePaths (std::vector< std::string > &oLabelsToFill) const
 adds to oLabelsToFill the labels for all paths in the process More...
 
void beginJob (ProductRegistry const &, eventsetup::ESRecordsToProxyIndices const &)
 
void beginStream (unsigned int)
 
bool changeModule (std::string const &iLabel, ParameterSet const &iPSet, const ProductRegistry &iRegistry, eventsetup::ESRecordsToProxyIndices const &)
 
void clearCounters ()
 Clear all the counters in the trigger report. More...
 
void closeOutputFiles ()
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
void enableEndPaths (bool active)
 
void endJob (ExceptionCollector &collector)
 
void endPaths (std::vector< std::string > &oLabelsToFill) const
 adds to oLabelsToFill the labels for all end paths in the process More...
 
bool endPathsEnabled () const
 
void endStream (unsigned int)
 
void fillModuleAndConsumesInfo (std::vector< ModuleDescription const * > &allModuleDescriptions, std::vector< std::pair< unsigned int, unsigned int >> &moduleIDToIndex, std::vector< std::vector< ModuleDescription const * >> &modulesWhoseProductsAreConsumedBy, ProductRegistry const &preg) const
 
std::vector< ModuleDescription const * > getAllModuleDescriptions () const
 
void getTriggerReport (TriggerReport &rep) const
 
void getTriggerTimingReport (TriggerTimingReport &rep) const
 
void moduleDescriptionsInEndPath (std::string const &iEndPathLabel, std::vector< ModuleDescription const * > &descriptions, unsigned int hint) const
 
void moduleDescriptionsInPath (std::string const &iPathLabel, std::vector< ModuleDescription const * > &descriptions, unsigned int hint) const
 
void modulesInPath (std::string const &iPathLabel, std::vector< std::string > &oLabelsToFill) const
 adds to oLabelsToFill in execution order the labels of all modules in path iPathLabel More...
 
void openOutputFiles (FileBlock &fb)
 
void processOneEventAsync (WaitingTaskHolder iTask, unsigned int iStreamID, EventTransitionInfo &, ServiceToken const &token)
 
template<typename T >
void processOneGlobalAsync (WaitingTaskHolder iTask, typename T::TransitionInfoType &transitionInfo, ServiceToken const &token, bool cleaningUpAfterException=false)
 
template<typename T >
void processOneStreamAsync (WaitingTaskHolder iTask, unsigned int iStreamID, typename T::TransitionInfoType &transitionInfo, ServiceToken const &token, bool cleaningUpAfterException=false)
 
void respondToCloseInputFile (FileBlock const &fb)
 
void respondToOpenInputFile (FileBlock const &fb)
 
 Schedule (ParameterSet &proc_pset, service::TriggerNamesService const &tns, ProductRegistry &pregistry, BranchIDListHelper &branchIDListHelper, ThinnedAssociationsHelper &thinnedAssociationsHelper, SubProcessParentageHelper const *subProcessParentageHelper, ExceptionToActionTable const &actions, std::shared_ptr< ActivityRegistry > areg, std::shared_ptr< ProcessConfiguration > processConfiguration, bool hasSubprocesses, PreallocationConfiguration const &config, ProcessContext const *processContext)
 
bool shouldWeCloseOutput () const
 
bool terminate () const
 Return whether each output module has reached its maximum count. More...
 
int totalEvents () const
 
int totalEventsFailed () const
 
int totalEventsPassed () const
 
void triggerPaths (std::vector< std::string > &oLabelsToFill) const
 
void writeLumiAsync (WaitingTaskHolder iTask, LuminosityBlockPrincipal const &lbp, ProcessContext const *, ActivityRegistry *)
 
void writeProcessBlockAsync (WaitingTaskHolder iTask, ProcessBlockPrincipal const &, ProcessContext const *, ActivityRegistry *)
 
void writeRunAsync (WaitingTaskHolder iTask, RunPrincipal const &rp, ProcessContext const *, ActivityRegistry *, MergeableRunProductMetadata const *)
 

Private Member Functions

void limitOutput (ParameterSet const &proc_pset, BranchIDLists const &branchIDLists, SubProcessParentageHelper const *subProcessParentageHelper)
 
std::shared_ptr< ModuleRegistry > & moduleRegistry ()
 
std::shared_ptr< ModuleRegistry const > moduleRegistry () const
 
std::shared_ptr< TriggerResultInserter > & resultsInserter ()
 
std::shared_ptr< TriggerResultInserter const > resultsInserter () const
 

Private Attributes

AllOutputModuleCommunicators all_output_communicators_
 
std::vector< std::string > const * endPathNames_
 
volatile bool endpathsAreActive_
 
std::vector< edm::propagate_const< std::shared_ptr< EndPathStatusInserter > > > endPathStatusInserters_
 
edm::propagate_const< std::unique_ptr< GlobalSchedule > > globalSchedule_
 
edm::propagate_const< std::shared_ptr< ModuleRegistry > > moduleRegistry_
 
std::vector< std::string > const * pathNames_
 
std::vector< edm::propagate_const< std::shared_ptr< PathStatusInserter > > > pathStatusInserters_
 
PreallocationConfiguration preallocConfig_
 
edm::propagate_const< std::shared_ptr< TriggerResultInserter > > resultsInserter_
 
std::vector< edm::propagate_const< std::shared_ptr< StreamSchedule > > > streamSchedules_
 
edm::propagate_const< std::unique_ptr< SystemTimeKeeper > > summaryTimeKeeper_
 
bool wantSummary_
 

Detailed Description

Definition at line 121 of file Schedule.h.

Member Typedef Documentation

◆ AllOutputModuleCommunicators

Definition at line 125 of file Schedule.h.

◆ AllWorkers

typedef std::vector<Worker*> edm::Schedule::AllWorkers

Definition at line 124 of file Schedule.h.

◆ vstring

typedef std::vector<std::string> edm::Schedule::vstring

Definition at line 123 of file Schedule.h.

◆ Workers

typedef std::vector<Worker*> edm::Schedule::Workers

Definition at line 127 of file Schedule.h.

Constructor & Destructor Documentation

◆ Schedule()

edm::Schedule::Schedule ( ParameterSet proc_pset,
service::TriggerNamesService const &  tns,
ProductRegistry pregistry,
BranchIDListHelper branchIDListHelper,
ThinnedAssociationsHelper thinnedAssociationsHelper,
SubProcessParentageHelper const *  subProcessParentageHelper,
ExceptionToActionTable const &  actions,
std::shared_ptr< ActivityRegistry areg,
std::shared_ptr< ProcessConfiguration processConfiguration,
bool  hasSubprocesses,
PreallocationConfiguration const &  config,
ProcessContext const *  processContext 
)

Definition at line 657 of file Schedule.cc.

669  : //Only create a resultsInserter if there is a trigger path
670  resultsInserter_{tns.getTrigPaths().empty()
671  ? std::shared_ptr<TriggerResultInserter>{}
672  : makeInserter(proc_pset, prealloc, preg, actions, areg, processConfiguration)},
673  moduleRegistry_(new ModuleRegistry()),
675  preallocConfig_(prealloc),
676  pathNames_(&tns.getTrigPaths()),
677  endPathNames_(&tns.getEndPaths()),
678  wantSummary_(tns.wantSummary()),
679  endpathsAreActive_(true) {
680  makePathStatusInserters(pathStatusInserters_,
681  *pathNames_,
682  prealloc,
683  preg,
684  areg,
685  processConfiguration,
686  std::string("PathStatusInserter"));
687 
688  makePathStatusInserters(endPathStatusInserters_,
689  *endPathNames_,
690  prealloc,
691  preg,
692  areg,
693  processConfiguration,
694  std::string("EndPathStatusInserter"));
695 
696  assert(0 < prealloc.numberOfStreams());
697  streamSchedules_.reserve(prealloc.numberOfStreams());
698  for (unsigned int i = 0; i < prealloc.numberOfStreams(); ++i) {
699  streamSchedules_.emplace_back(make_shared_noexcept_false<StreamSchedule>(resultsInserter(),
702  moduleRegistry(),
703  proc_pset,
704  tns,
705  prealloc,
706  preg,
707  branchIDListHelper,
708  actions,
709  areg,
710  processConfiguration,
711  !hasSubprocesses,
712  StreamID{i},
713  processContext));
714  }
715 
716  //TriggerResults are injected automatically by StreamSchedules and are
717  // unknown to the ModuleRegistry
718  const std::string kTriggerResults("TriggerResults");
719  std::vector<std::string> modulesToUse;
720  modulesToUse.reserve(streamSchedules_[0]->allWorkers().size());
721  for (auto const& worker : streamSchedules_[0]->allWorkers()) {
722  if (worker->description().moduleLabel() != kTriggerResults) {
723  modulesToUse.push_back(worker->description().moduleLabel());
724  }
725  }
726  //The unscheduled modules are at the end of the list, but we want them at the front
727  unsigned int const nUnscheduledModules = streamSchedules_[0]->numberOfUnscheduledModules();
728  if (nUnscheduledModules > 0) {
729  std::vector<std::string> temp;
730  temp.reserve(modulesToUse.size());
731  auto itBeginUnscheduled = modulesToUse.begin() + modulesToUse.size() - nUnscheduledModules;
732  std::copy(itBeginUnscheduled, modulesToUse.end(), std::back_inserter(temp));
733  std::copy(modulesToUse.begin(), itBeginUnscheduled, std::back_inserter(temp));
734  temp.swap(modulesToUse);
735  }
736 
737  // propagate_const<T> has no reset() function
738  globalSchedule_ = std::make_unique<GlobalSchedule>(resultsInserter(),
741  moduleRegistry(),
742  modulesToUse,
743  proc_pset,
744  preg,
745  prealloc,
746  actions,
747  areg,
748  processConfiguration,
749  processContext);
750 
751  //TriggerResults is not in the top level ParameterSet so the call to
752  // reduceParameterSet would fail to find it. Just remove it up front.
753  std::set<std::string> usedModuleLabels;
754  for (auto const& worker : allWorkers()) {
755  if (worker->description().moduleLabel() != kTriggerResults) {
756  usedModuleLabels.insert(worker->description().moduleLabel());
757  }
758  }
759  std::vector<std::string> modulesInConfig(proc_pset.getParameter<std::vector<std::string>>("@all_modules"));
760  std::map<std::string, std::vector<std::pair<std::string, int>>> outputModulePathPositions;
761  reduceParameterSet(proc_pset, tns.getEndPaths(), modulesInConfig, usedModuleLabels, outputModulePathPositions);
762  processEDAliases(proc_pset, processConfiguration->processName(), preg);
763 
764  // At this point all BranchDescriptions are created. Mark now the
765  // ones of unscheduled workers to be on-demand.
766  if (nUnscheduledModules > 0) {
767  std::set<std::string> unscheduledModules(modulesToUse.begin(), modulesToUse.begin() + nUnscheduledModules);
768  preg.setUnscheduledProducts(unscheduledModules);
769  }
770 
771  processSwitchProducers(proc_pset, processConfiguration->processName(), preg);
772  proc_pset.registerIt();
773  processConfiguration->setParameterSetID(proc_pset.id());
774  processConfiguration->setProcessConfigurationID();
775 
776  // This is used for a little sanity-check to make sure no code
777  // modifications alter the number of workers at a later date.
778  size_t all_workers_count = allWorkers().size();
779 
780  moduleRegistry_->forAllModuleHolders([this](maker::ModuleHolder* iHolder) {
781  auto comm = iHolder->createOutputModuleCommunicator();
782  if (comm) {
783  all_output_communicators_.emplace_back(std::shared_ptr<OutputModuleCommunicator>{comm.release()});
784  }
785  });
786  // Now that the output workers are filled in, set any output limits or information.
787  limitOutput(proc_pset, branchIDListHelper.branchIDLists(), subProcessParentageHelper);
788 
789  // Sanity check: make sure nobody has added a worker after we've
790  // already relied on the WorkerManager being full.
791  assert(all_workers_count == allWorkers().size());
792 
793  branchIDListHelper.updateFromRegistry(preg);
794 
795  for (auto const& worker : streamSchedules_[0]->allWorkers()) {
796  worker->registerThinnedAssociations(preg, thinnedAssociationsHelper);
797  }
798 
799  // The output modules consume products in kept branches.
800  // So we must set this up before freezing.
801  for (auto& c : all_output_communicators_) {
802  c->selectProducts(preg, thinnedAssociationsHelper);
803  }
804 
805  for (auto& product : preg.productListUpdator()) {
806  setIsMergeable(product.second);
807  }
808 
809  {
810  // We now get a collection of types that may be consumed.
811  std::set<TypeID> productTypesConsumed;
812  std::set<TypeID> elementTypesConsumed;
813  // Loop over all modules
814  for (auto const& worker : allWorkers()) {
815  for (auto const& consumesInfo : worker->consumesInfo()) {
816  if (consumesInfo.kindOfType() == PRODUCT_TYPE) {
817  productTypesConsumed.emplace(consumesInfo.type());
818  } else {
819  elementTypesConsumed.emplace(consumesInfo.type());
820  }
821  }
822  }
823  // The SubProcess class is not a module, yet it may consume.
824  if (hasSubprocesses) {
825  productTypesConsumed.emplace(typeid(TriggerResults));
826  }
827  // The RandomNumberGeneratorService is not a module, yet it consumes.
828  { RngEDConsumer rngConsumer = RngEDConsumer(productTypesConsumed); }
829  preg.setFrozen(productTypesConsumed, elementTypesConsumed, processConfiguration->processName());
830  }
831 
832  for (auto& c : all_output_communicators_) {
833  c->setEventSelectionInfo(outputModulePathPositions, preg.anyProductProduced());
834  }
835 
836  if (wantSummary_) {
837  std::vector<const ModuleDescription*> modDesc;
838  const auto& workers = allWorkers();
839  modDesc.reserve(workers.size());
840 
841  std::transform(workers.begin(),
842  workers.end(),
843  std::back_inserter(modDesc),
844  [](const Worker* iWorker) -> const ModuleDescription* { return iWorker->descPtr(); });
845 
846  // propagate_const<T> has no reset() function
847  summaryTimeKeeper_ = std::make_unique<SystemTimeKeeper>(prealloc.numberOfStreams(), modDesc, tns, processContext);
848  auto timeKeeperPtr = summaryTimeKeeper_.get();
849 
850  areg->watchPreModuleEvent(timeKeeperPtr, &SystemTimeKeeper::startModuleEvent);
851  areg->watchPostModuleEvent(timeKeeperPtr, &SystemTimeKeeper::stopModuleEvent);
852  areg->watchPreModuleEventAcquire(timeKeeperPtr, &SystemTimeKeeper::restartModuleEvent);
853  areg->watchPostModuleEventAcquire(timeKeeperPtr, &SystemTimeKeeper::stopModuleEvent);
854  areg->watchPreModuleEventDelayedGet(timeKeeperPtr, &SystemTimeKeeper::pauseModuleEvent);
855  areg->watchPostModuleEventDelayedGet(timeKeeperPtr, &SystemTimeKeeper::restartModuleEvent);
856 
857  areg->watchPreSourceEvent(timeKeeperPtr, &SystemTimeKeeper::startEvent);
858  areg->watchPostEvent(timeKeeperPtr, &SystemTimeKeeper::stopEvent);
859 
860  areg->watchPrePathEvent(timeKeeperPtr, &SystemTimeKeeper::startPath);
861  areg->watchPostPathEvent(timeKeeperPtr, &SystemTimeKeeper::stopPath);
862 
863  areg->watchPostBeginJob(timeKeeperPtr, &SystemTimeKeeper::startProcessingLoop);
864  areg->watchPreEndJob(timeKeeperPtr, &SystemTimeKeeper::stopProcessingLoop);
865  //areg->preModuleEventSignal_.connect([timeKeeperPtr](StreamContext const& iContext, ModuleCallingContext const& iMod) {
866  //timeKeeperPtr->startModuleEvent(iContext,iMod);
867  //});
868  }
869 
870  } // Schedule::Schedule

References actions, and edm::service::TriggerNamesService::getTrigPaths().

Member Function Documentation

◆ allWorkers()

Schedule::AllWorkers const & edm::Schedule::allWorkers ( ) const

◆ availablePaths()

void edm::Schedule::availablePaths ( std::vector< std::string > &  oLabelsToFill) const

adds to oLabelsToFill the labels for all paths in the process

Definition at line 1446 of file Schedule.cc.

1446  {
1447  streamSchedules_[0]->availablePaths(oLabelsToFill);
1448  }

References streamSchedules_.

Referenced by edm::ScheduleInfo::availablePaths().

◆ beginJob()

void edm::Schedule::beginJob ( ProductRegistry const &  iRegistry,
eventsetup::ESRecordsToProxyIndices const &  iESIndices 
)

Definition at line 1356 of file Schedule.cc.

1356  {
1357  globalSchedule_->beginJob(iRegistry, iESIndices);
1358  }

References globalSchedule_.

◆ beginStream()

void edm::Schedule::beginStream ( unsigned int  iStreamID)

Definition at line 1360 of file Schedule.cc.

1360  {
1361  assert(iStreamID < streamSchedules_.size());
1362  streamSchedules_[iStreamID]->beginStream();
1363  }

References cms::cuda::assert(), and streamSchedules_.

◆ changeModule()

bool edm::Schedule::changeModule ( std::string const &  iLabel,
ParameterSet const &  iPSet,
const ProductRegistry iRegistry,
eventsetup::ESRecordsToProxyIndices const &  iIndices 
)

clone the type of module with label iLabel but configure with iPSet. Returns true if successful.

Definition at line 1378 of file Schedule.cc.

1381  {
1382  Worker* found = nullptr;
1383  for (auto const& worker : allWorkers()) {
1384  if (worker->description().moduleLabel() == iLabel) {
1385  found = worker;
1386  break;
1387  }
1388  }
1389  if (nullptr == found) {
1390  return false;
1391  }
1392 
1393  auto newMod = moduleRegistry_->replaceModule(iLabel, iPSet, preallocConfig_);
1394 
1395  globalSchedule_->replaceModule(newMod, iLabel);
1396 
1397  for (auto& s : streamSchedules_) {
1398  s->replaceModule(newMod, iLabel);
1399  }
1400 
1401  {
1402  //Need to updateLookup in order to make getByToken work
1403  auto const processBlockLookup = iRegistry.productLookup(InProcess);
1404  auto const runLookup = iRegistry.productLookup(InRun);
1405  auto const lumiLookup = iRegistry.productLookup(InLumi);
1406  auto const eventLookup = iRegistry.productLookup(InEvent);
1407  found->updateLookup(InProcess, *runLookup);
1408  found->updateLookup(InRun, *runLookup);
1409  found->updateLookup(InLumi, *lumiLookup);
1410  found->updateLookup(InEvent, *eventLookup);
1411  found->updateLookup(iIndices);
1412 
1413  auto const& processName = newMod->moduleDescription().processName();
1414  auto const& processBlockModuleToIndicies = processBlockLookup->indiciesForModulesInProcess(processName);
1415  auto const& runModuleToIndicies = runLookup->indiciesForModulesInProcess(processName);
1416  auto const& lumiModuleToIndicies = lumiLookup->indiciesForModulesInProcess(processName);
1417  auto const& eventModuleToIndicies = eventLookup->indiciesForModulesInProcess(processName);
1418  found->resolvePutIndicies(InProcess, processBlockModuleToIndicies);
1419  found->resolvePutIndicies(InRun, runModuleToIndicies);
1420  found->resolvePutIndicies(InLumi, lumiModuleToIndicies);
1421  found->resolvePutIndicies(InEvent, eventModuleToIndicies);
1422  }
1423 
1424  return true;
1425  }

References allWorkers(), newFWLiteAna::found, globalSchedule_, edm::InEvent, edm::InLumi, edm::InProcess, edm::InRun, moduleRegistry_, preallocConfig_, SimL1EmulatorRepack_CalouGT_cff::processName, edm::ProductRegistry::productLookup(), alignCSCRings::s, and streamSchedules_.

◆ clearCounters()

void edm::Schedule::clearCounters ( )

Clear all the counters in the trigger report.

Definition at line 1558 of file Schedule.cc.

1558  {
1559  for (auto& s : streamSchedules_) {
1560  s->clearCounters();
1561  }
1562  }

References alignCSCRings::s, and streamSchedules_.

◆ closeOutputFiles()

void edm::Schedule::closeOutputFiles ( )

Definition at line 1211 of file Schedule.cc.

1211  {
1212  using std::placeholders::_1;
1214  }

References all_output_communicators_, edm::OutputModuleCommunicator::closeFile(), and edm::for_all().

◆ convertCurrentProcessAlias()

void edm::Schedule::convertCurrentProcessAlias ( std::string const &  processName)

Convert "@currentProcess" in InputTag process names to the actual current process name.

Definition at line 1440 of file Schedule.cc.

1440  {
1441  for (auto const& worker : allWorkers()) {
1442  worker->convertCurrentProcessAlias(processName);
1443  }
1444  }

References allWorkers(), and SimL1EmulatorRepack_CalouGT_cff::processName.

◆ enableEndPaths()

void edm::Schedule::enableEndPaths ( bool  active)

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

Definition at line 1508 of file Schedule.cc.

1508  {
1509  endpathsAreActive_ = active;
1510  for (auto& s : streamSchedules_) {
1511  s->enableEndPaths(active);
1512  }
1513  }

References endpathsAreActive_, alignCSCRings::s, and streamSchedules_.

◆ endJob()

void edm::Schedule::endJob ( ExceptionCollector collector)

Definition at line 928 of file Schedule.cc.

928  {
929  globalSchedule_->endJob(collector);
930  if (collector.hasThrown()) {
931  return;
932  }
933 
934  if (wantSummary_ == false)
935  return;
936  {
937  TriggerReport tr;
938  getTriggerReport(tr);
939 
940  // The trigger report (pass/fail etc.):
941 
942  LogFwkVerbatim("FwkSummary") << "";
943  if (streamSchedules_[0]->context().processContext()->isSubProcess()) {
944  LogFwkVerbatim("FwkSummary") << "TrigReport Process: "
945  << streamSchedules_[0]->context().processContext()->processName();
946  }
947  LogFwkVerbatim("FwkSummary") << "TrigReport "
948  << "---------- Event Summary ------------";
949  if (!tr.trigPathSummaries.empty()) {
950  LogFwkVerbatim("FwkSummary") << "TrigReport"
951  << " Events total = " << tr.eventSummary.totalEvents
952  << " passed = " << tr.eventSummary.totalEventsPassed
953  << " failed = " << tr.eventSummary.totalEventsFailed << "";
954  } else {
955  LogFwkVerbatim("FwkSummary") << "TrigReport"
956  << " Events total = " << tr.eventSummary.totalEvents
957  << " passed = " << tr.eventSummary.totalEvents << " failed = 0";
958  }
959 
960  LogFwkVerbatim("FwkSummary") << "";
961  LogFwkVerbatim("FwkSummary") << "TrigReport "
962  << "---------- Path Summary ------------";
963  LogFwkVerbatim("FwkSummary") << "TrigReport " << std::right << std::setw(10) << "Trig Bit#"
964  << " " << std::right << std::setw(10) << "Executed"
965  << " " << std::right << std::setw(10) << "Passed"
966  << " " << std::right << std::setw(10) << "Failed"
967  << " " << std::right << std::setw(10) << "Error"
968  << " "
969  << "Name"
970  << "";
971  for (auto const& p : tr.trigPathSummaries) {
972  LogFwkVerbatim("FwkSummary") << "TrigReport " << std::right << std::setw(5) << 1 << std::right << std::setw(5)
973  << p.bitPosition << " " << std::right << std::setw(10) << p.timesRun << " "
974  << std::right << std::setw(10) << p.timesPassed << " " << std::right
975  << std::setw(10) << p.timesFailed << " " << std::right << std::setw(10)
976  << p.timesExcept << " " << p.name << "";
977  }
978 
979  /*
980  std::vector<int>::const_iterator epi = empty_trig_paths_.begin();
981  std::vector<int>::const_iterator epe = empty_trig_paths_.end();
982  std::vector<std::string>::const_iterator epn = empty_trig_path_names_.begin();
983  for (; epi != epe; ++epi, ++epn) {
984 
985  LogFwkVerbatim("FwkSummary") << "TrigReport "
986  << std::right << std::setw(5) << 1
987  << std::right << std::setw(5) << *epi << " "
988  << std::right << std::setw(10) << totalEvents() << " "
989  << std::right << std::setw(10) << totalEvents() << " "
990  << std::right << std::setw(10) << 0 << " "
991  << std::right << std::setw(10) << 0 << " "
992  << *epn << "";
993  }
994  */
995 
996  LogFwkVerbatim("FwkSummary") << "";
997  LogFwkVerbatim("FwkSummary") << "TrigReport "
998  << "-------End-Path Summary ------------";
999  LogFwkVerbatim("FwkSummary") << "TrigReport " << std::right << std::setw(10) << "Trig Bit#"
1000  << " " << std::right << std::setw(10) << "Executed"
1001  << " " << std::right << std::setw(10) << "Passed"
1002  << " " << std::right << std::setw(10) << "Failed"
1003  << " " << std::right << std::setw(10) << "Error"
1004  << " "
1005  << "Name"
1006  << "";
1007  for (auto const& p : tr.endPathSummaries) {
1008  LogFwkVerbatim("FwkSummary") << "TrigReport " << std::right << std::setw(5) << 0 << std::right << std::setw(5)
1009  << p.bitPosition << " " << std::right << std::setw(10) << p.timesRun << " "
1010  << std::right << std::setw(10) << p.timesPassed << " " << std::right
1011  << std::setw(10) << p.timesFailed << " " << std::right << std::setw(10)
1012  << p.timesExcept << " " << p.name << "";
1013  }
1014 
1015  for (auto const& p : tr.trigPathSummaries) {
1016  LogFwkVerbatim("FwkSummary") << "";
1017  LogFwkVerbatim("FwkSummary") << "TrigReport "
1018  << "---------- Modules in Path: " << p.name << " ------------";
1019  LogFwkVerbatim("FwkSummary") << "TrigReport " << std::right << std::setw(10) << "Trig Bit#"
1020  << " " << std::right << std::setw(10) << "Visited"
1021  << " " << std::right << std::setw(10) << "Passed"
1022  << " " << std::right << std::setw(10) << "Failed"
1023  << " " << std::right << std::setw(10) << "Error"
1024  << " "
1025  << "Name"
1026  << "";
1027 
1028  unsigned int bitpos = 0;
1029  for (auto const& mod : p.moduleInPathSummaries) {
1030  LogFwkVerbatim("FwkSummary") << "TrigReport " << std::right << std::setw(5) << 1 << std::right << std::setw(5)
1031  << bitpos << " " << std::right << std::setw(10) << mod.timesVisited << " "
1032  << std::right << std::setw(10) << mod.timesPassed << " " << std::right
1033  << std::setw(10) << mod.timesFailed << " " << std::right << std::setw(10)
1034  << mod.timesExcept << " " << mod.moduleLabel << "";
1035  ++bitpos;
1036  }
1037  }
1038 
1039  for (auto const& p : tr.endPathSummaries) {
1040  LogFwkVerbatim("FwkSummary") << "";
1041  LogFwkVerbatim("FwkSummary") << "TrigReport "
1042  << "------ Modules in End-Path: " << p.name << " ------------";
1043  LogFwkVerbatim("FwkSummary") << "TrigReport " << std::right << std::setw(10) << "Trig Bit#"
1044  << " " << std::right << std::setw(10) << "Visited"
1045  << " " << std::right << std::setw(10) << "Passed"
1046  << " " << std::right << std::setw(10) << "Failed"
1047  << " " << std::right << std::setw(10) << "Error"
1048  << " "
1049  << "Name"
1050  << "";
1051 
1052  unsigned int bitpos = 0;
1053  for (auto const& mod : p.moduleInPathSummaries) {
1054  LogFwkVerbatim("FwkSummary") << "TrigReport " << std::right << std::setw(5) << 0 << std::right << std::setw(5)
1055  << bitpos << " " << std::right << std::setw(10) << mod.timesVisited << " "
1056  << std::right << std::setw(10) << mod.timesPassed << " " << std::right
1057  << std::setw(10) << mod.timesFailed << " " << std::right << std::setw(10)
1058  << mod.timesExcept << " " << mod.moduleLabel << "";
1059  ++bitpos;
1060  }
1061  }
1062 
1063  LogFwkVerbatim("FwkSummary") << "";
1064  LogFwkVerbatim("FwkSummary") << "TrigReport "
1065  << "---------- Module Summary ------------";
1066  LogFwkVerbatim("FwkSummary") << "TrigReport " << std::right << std::setw(10) << "Visited"
1067  << " " << std::right << std::setw(10) << "Executed"
1068  << " " << std::right << std::setw(10) << "Passed"
1069  << " " << std::right << std::setw(10) << "Failed"
1070  << " " << std::right << std::setw(10) << "Error"
1071  << " "
1072  << "Name"
1073  << "";
1074  for (auto const& worker : tr.workerSummaries) {
1075  LogFwkVerbatim("FwkSummary") << "TrigReport " << std::right << std::setw(10) << worker.timesVisited << " "
1076  << std::right << std::setw(10) << worker.timesRun << " " << std::right
1077  << std::setw(10) << worker.timesPassed << " " << std::right << std::setw(10)
1078  << worker.timesFailed << " " << std::right << std::setw(10) << worker.timesExcept
1079  << " " << worker.moduleLabel << "";
1080  }
1081  LogFwkVerbatim("FwkSummary") << "";
1082  }
1083  // The timing report (CPU and Real Time):
1084  TriggerTimingReport tr;
1086 
1087  const int totalEvents = std::max(1, tr.eventSummary.totalEvents);
1088 
1089  LogFwkVerbatim("FwkSummary") << "TimeReport "
1090  << "---------- Event Summary ---[sec]----";
1091  LogFwkVerbatim("FwkSummary") << "TimeReport" << std::setprecision(6) << std::fixed
1092  << " event loop CPU/event = " << tr.eventSummary.cpuTime / totalEvents;
1093  LogFwkVerbatim("FwkSummary") << "TimeReport" << std::setprecision(6) << std::fixed
1094  << " event loop Real/event = " << tr.eventSummary.realTime / totalEvents;
1095  LogFwkVerbatim("FwkSummary") << "TimeReport" << std::setprecision(6) << std::fixed
1096  << " sum Streams Real/event = " << tr.eventSummary.sumStreamRealTime / totalEvents;
1097  LogFwkVerbatim("FwkSummary") << "TimeReport" << std::setprecision(6) << std::fixed
1098  << " efficiency CPU/Real/thread = "
1099  << tr.eventSummary.cpuTime / tr.eventSummary.realTime /
1101 
1102  constexpr int kColumn1Size = 10;
1103  constexpr int kColumn2Size = 12;
1104  constexpr int kColumn3Size = 12;
1105  LogFwkVerbatim("FwkSummary") << "";
1106  LogFwkVerbatim("FwkSummary") << "TimeReport "
1107  << "---------- Path Summary ---[Real sec]----";
1108  LogFwkVerbatim("FwkSummary") << "TimeReport " << std::right << std::setw(kColumn1Size) << "per event"
1109  << " " << std::right << std::setw(kColumn2Size) << "per exec"
1110  << " Name";
1111  for (auto const& p : tr.trigPathSummaries) {
1112  const int timesRun = std::max(1, p.timesRun);
1113  LogFwkVerbatim("FwkSummary") << "TimeReport " << std::setprecision(6) << std::fixed << std::right
1114  << std::setw(kColumn1Size) << p.realTime / totalEvents << " " << std::right
1115  << std::setw(kColumn2Size) << p.realTime / timesRun << " " << p.name << "";
1116  }
1117  LogFwkVerbatim("FwkSummary") << "TimeReport " << std::right << std::setw(kColumn1Size) << "per event"
1118  << " " << std::right << std::setw(kColumn2Size) << "per exec"
1119  << " Name"
1120  << "";
1121 
1122  LogFwkVerbatim("FwkSummary") << "";
1123  LogFwkVerbatim("FwkSummary") << "TimeReport "
1124  << "-------End-Path Summary ---[Real sec]----";
1125  LogFwkVerbatim("FwkSummary") << "TimeReport " << std::right << std::setw(kColumn1Size) << "per event"
1126  << " " << std::right << std::setw(kColumn2Size) << "per exec"
1127  << " Name"
1128  << "";
1129  for (auto const& p : tr.endPathSummaries) {
1130  const int timesRun = std::max(1, p.timesRun);
1131 
1132  LogFwkVerbatim("FwkSummary") << "TimeReport " << std::setprecision(6) << std::fixed << std::right
1133  << std::setw(kColumn1Size) << p.realTime / totalEvents << " " << std::right
1134  << std::setw(kColumn2Size) << p.realTime / timesRun << " " << p.name << "";
1135  }
1136  LogFwkVerbatim("FwkSummary") << "TimeReport " << std::right << std::setw(kColumn1Size) << "per event"
1137  << " " << std::right << std::setw(kColumn2Size) << "per exec"
1138  << " Name"
1139  << "";
1140 
1141  for (auto const& p : tr.trigPathSummaries) {
1142  LogFwkVerbatim("FwkSummary") << "";
1143  LogFwkVerbatim("FwkSummary") << "TimeReport "
1144  << "---------- Modules in Path: " << p.name << " ---[Real sec]----";
1145  LogFwkVerbatim("FwkSummary") << "TimeReport " << std::right << std::setw(kColumn1Size) << "per event"
1146  << " " << std::right << std::setw(kColumn2Size) << "per visit"
1147  << " Name"
1148  << "";
1149  for (auto const& mod : p.moduleInPathSummaries) {
1150  LogFwkVerbatim("FwkSummary") << "TimeReport " << std::setprecision(6) << std::fixed << std::right
1151  << std::setw(kColumn1Size) << mod.realTime / totalEvents << " " << std::right
1152  << std::setw(kColumn2Size) << mod.realTime / std::max(1, mod.timesVisited) << " "
1153  << mod.moduleLabel << "";
1154  }
1155  }
1156  if (not tr.trigPathSummaries.empty()) {
1157  LogFwkVerbatim("FwkSummary") << "TimeReport " << std::right << std::setw(kColumn1Size) << "per event"
1158  << " " << std::right << std::setw(kColumn2Size) << "per visit"
1159  << " Name"
1160  << "";
1161  }
1162  for (auto const& p : tr.endPathSummaries) {
1163  LogFwkVerbatim("FwkSummary") << "";
1164  LogFwkVerbatim("FwkSummary") << "TimeReport "
1165  << "------ Modules in End-Path: " << p.name << " ---[Real sec]----";
1166  LogFwkVerbatim("FwkSummary") << "TimeReport " << std::right << std::setw(kColumn1Size) << "per event"
1167  << " " << std::right << std::setw(kColumn2Size) << "per visit"
1168  << " Name"
1169  << "";
1170  for (auto const& mod : p.moduleInPathSummaries) {
1171  LogFwkVerbatim("FwkSummary") << "TimeReport " << std::setprecision(6) << std::fixed << std::right
1172  << std::setw(kColumn1Size) << mod.realTime / totalEvents << " " << std::right
1173  << std::setw(kColumn2Size) << mod.realTime / std::max(1, mod.timesVisited) << " "
1174  << mod.moduleLabel << "";
1175  }
1176  }
1177  if (not tr.endPathSummaries.empty()) {
1178  LogFwkVerbatim("FwkSummary") << "TimeReport " << std::right << std::setw(kColumn1Size) << "per event"
1179  << " " << std::right << std::setw(kColumn2Size) << "per visit"
1180  << " Name"
1181  << "";
1182  }
1183  LogFwkVerbatim("FwkSummary") << "";
1184  LogFwkVerbatim("FwkSummary") << "TimeReport "
1185  << "---------- Module Summary ---[Real sec]----";
1186  LogFwkVerbatim("FwkSummary") << "TimeReport " << std::right << std::setw(kColumn1Size) << "per event"
1187  << " " << std::right << std::setw(kColumn2Size) << "per exec"
1188  << " " << std::right << std::setw(kColumn3Size) << "per visit"
1189  << " Name"
1190  << "";
1191  for (auto const& worker : tr.workerSummaries) {
1192  LogFwkVerbatim("FwkSummary") << "TimeReport " << std::setprecision(6) << std::fixed << std::right
1193  << std::setw(kColumn1Size) << worker.realTime / totalEvents << " " << std::right
1194  << std::setw(kColumn2Size) << worker.realTime / std::max(1, worker.timesRun) << " "
1195  << std::right << std::setw(kColumn3Size)
1196  << worker.realTime / std::max(1, worker.timesVisited) << " " << worker.moduleLabel
1197  << "";
1198  }
1199  LogFwkVerbatim("FwkSummary") << "TimeReport " << std::right << std::setw(kColumn1Size) << "per event"
1200  << " " << std::right << std::setw(kColumn2Size) << "per exec"
1201  << " " << std::right << std::setw(kColumn3Size) << "per visit"
1202  << " Name"
1203  << "";
1204 
1205  LogFwkVerbatim("FwkSummary") << "";
1206  LogFwkVerbatim("FwkSummary") << "T---Report end!"
1207  << "";
1208  LogFwkVerbatim("FwkSummary") << "";
1209  }

References edm::EventTimingSummary::cpuTime, edm::TriggerTimingReport::endPathSummaries, edm::TriggerReport::endPathSummaries, edm::TriggerTimingReport::eventSummary, edm::TriggerReport::eventSummary, alignBH_cfg::fixed, getTriggerReport(), getTriggerTimingReport(), globalSchedule_, edm::ExceptionCollector::hasThrown(), SiStripPI::max, mod(), edm::PreallocationConfiguration::numberOfThreads(), AlCaHLTBitMon_ParallelJobs::p, preallocConfig_, edm::EventTimingSummary::realTime, streamSchedules_, edm::EventTimingSummary::sumStreamRealTime, edm::EventTimingSummary::totalEvents, edm::EventSummary::totalEvents, totalEvents(), edm::EventSummary::totalEventsFailed, edm::EventSummary::totalEventsPassed, edm::TriggerTimingReport::trigPathSummaries, edm::TriggerReport::trigPathSummaries, wantSummary_, edm::TriggerTimingReport::workerSummaries, and edm::TriggerReport::workerSummaries.

◆ endPaths()

void edm::Schedule::endPaths ( std::vector< std::string > &  oLabelsToFill) const

adds to oLabelsToFill the labels for all end paths in the process

Definition at line 1452 of file Schedule.cc.

1452 { oLabelsToFill = *endPathNames_; }

References endPathNames_.

◆ endPathsEnabled()

bool edm::Schedule::endPathsEnabled ( ) const

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

Definition at line 1515 of file Schedule.cc.

1515 { return endpathsAreActive_; }

References endpathsAreActive_.

◆ endStream()

void edm::Schedule::endStream ( unsigned int  iStreamID)

Definition at line 1365 of file Schedule.cc.

1365  {
1366  assert(iStreamID < streamSchedules_.size());
1367  streamSchedules_[iStreamID]->endStream();
1368  }

References cms::cuda::assert(), and streamSchedules_.

◆ fillModuleAndConsumesInfo()

void edm::Schedule::fillModuleAndConsumesInfo ( std::vector< ModuleDescription const * > &  allModuleDescriptions,
std::vector< std::pair< unsigned int, unsigned int >> &  moduleIDToIndex,
std::vector< std::vector< ModuleDescription const * >> &  modulesWhoseProductsAreConsumedBy,
ProductRegistry const &  preg 
) const

Definition at line 1470 of file Schedule.cc.

1474  {
1475  allModuleDescriptions.clear();
1476  moduleIDToIndex.clear();
1477  modulesWhoseProductsAreConsumedBy.clear();
1478 
1479  allModuleDescriptions.reserve(allWorkers().size());
1480  moduleIDToIndex.reserve(allWorkers().size());
1481  modulesWhoseProductsAreConsumedBy.resize(allWorkers().size());
1482 
1483  std::map<std::string, ModuleDescription const*> labelToDesc;
1484  unsigned int i = 0;
1485  for (auto const& worker : allWorkers()) {
1486  ModuleDescription const* p = worker->descPtr();
1487  allModuleDescriptions.push_back(p);
1488  moduleIDToIndex.push_back(std::pair<unsigned int, unsigned int>(p->id(), i));
1489  labelToDesc[p->moduleLabel()] = p;
1490  ++i;
1491  }
1492  sort_all(moduleIDToIndex);
1493 
1494  i = 0;
1495  for (auto const& worker : allWorkers()) {
1496  std::vector<ModuleDescription const*>& modules = modulesWhoseProductsAreConsumedBy.at(i);
1497  try {
1498  worker->modulesWhoseProductsAreConsumed(modules, preg, labelToDesc);
1499  } catch (cms::Exception& ex) {
1500  ex.addContext("Calling Worker::modulesWhoseProductsAreConsumed() for module " +
1501  worker->description().moduleLabel());
1502  throw;
1503  }
1504  ++i;
1505  }
1506  }

References cms::Exception::addContext(), allWorkers(), mps_fire::i, AlCaHLTBitMon_ParallelJobs::p, findQualityFiles::size, and edm::sort_all().

◆ getAllModuleDescriptions()

std::vector< ModuleDescription const * > edm::Schedule::getAllModuleDescriptions ( ) const

Return a vector allowing const access to all the ModuleDescriptions for this Schedule. *** N.B. *** Ownership of the ModuleDescriptions is not *** passed to the caller. Do not call delete on these *** pointers!

Definition at line 1427 of file Schedule.cc.

1427  {
1428  std::vector<ModuleDescription const*> result;
1429  result.reserve(allWorkers().size());
1430 
1431  for (auto const& worker : allWorkers()) {
1432  ModuleDescription const* p = worker->descPtr();
1433  result.push_back(p);
1434  }
1435  return result;
1436  }

References allWorkers(), AlCaHLTBitMon_ParallelJobs::p, mps_fire::result, and findQualityFiles::size.

Referenced by edm::ScheduleInfo::availableModuleLabels(), and edm::ScheduleInfo::parametersForModule().

◆ getTriggerReport()

void edm::Schedule::getTriggerReport ( TriggerReport rep) const

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

Definition at line 1517 of file Schedule.cc.

1517  {
1518  rep.eventSummary.totalEvents = 0;
1519  rep.eventSummary.totalEventsPassed = 0;
1520  rep.eventSummary.totalEventsFailed = 0;
1521  for (auto& s : streamSchedules_) {
1522  s->getTriggerReport(rep);
1523  }
1524  sort_all(rep.workerSummaries);
1525  }

References cuy::rep, alignCSCRings::s, edm::sort_all(), and streamSchedules_.

Referenced by endJob().

◆ getTriggerTimingReport()

void edm::Schedule::getTriggerTimingReport ( TriggerTimingReport rep) const

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

Definition at line 1527 of file Schedule.cc.

1527  {
1528  rep.eventSummary.totalEvents = 0;
1529  rep.eventSummary.cpuTime = 0.;
1530  rep.eventSummary.realTime = 0.;
1531  summaryTimeKeeper_->fillTriggerTimingReport(rep);
1532  }

References cuy::rep, and summaryTimeKeeper_.

Referenced by endJob().

◆ limitOutput()

void edm::Schedule::limitOutput ( ParameterSet const &  proc_pset,
BranchIDLists const &  branchIDLists,
SubProcessParentageHelper const *  subProcessParentageHelper 
)
private

Definition at line 872 of file Schedule.cc.

874  {
875  std::string const output("output");
876 
877  ParameterSet const& maxEventsPSet = proc_pset.getUntrackedParameterSet("maxEvents");
878  int maxEventSpecs = 0;
879  int maxEventsOut = -1;
880  ParameterSet const* vMaxEventsOut = nullptr;
881  std::vector<std::string> intNamesE = maxEventsPSet.getParameterNamesForType<int>(false);
882  if (search_all(intNamesE, output)) {
883  maxEventsOut = maxEventsPSet.getUntrackedParameter<int>(output);
884  ++maxEventSpecs;
885  }
886  std::vector<std::string> psetNamesE;
887  maxEventsPSet.getParameterSetNames(psetNamesE, false);
888  if (search_all(psetNamesE, output)) {
889  vMaxEventsOut = &maxEventsPSet.getUntrackedParameterSet(output);
890  ++maxEventSpecs;
891  }
892 
893  if (maxEventSpecs > 1) {
895  << "\nAt most, one form of 'output' may appear in the 'maxEvents' parameter set";
896  }
897 
898  for (auto& c : all_output_communicators_) {
899  OutputModuleDescription desc(branchIDLists, maxEventsOut, subProcessParentageHelper);
900  if (vMaxEventsOut != nullptr && !vMaxEventsOut->empty()) {
901  std::string const& moduleLabel = c->description().moduleLabel();
902  try {
903  desc.maxEvents_ = vMaxEventsOut->getUntrackedParameter<int>(moduleLabel);
904  } catch (Exception const&) {
906  << "\nNo entry in 'maxEvents' for output module label '" << moduleLabel << "'.\n";
907  }
908  }
909  c->configure(desc);
910  }
911  }

References all_output_communicators_, HltBtagPostValidation_cff::c, edm::errors::Configuration, submitPVResolutionJobs::desc, edm::ParameterSet::empty(), Exception, edm::ParameterSet::getParameterNamesForType(), edm::ParameterSet::getParameterSetNames(), edm::ParameterSet::getUntrackedParameter(), edm::ParameterSet::getUntrackedParameterSet(), HerwigMaxPtPartonFilter_cfi::moduleLabel, convertSQLitetoXML_cfg::output, edm::search_all(), and AlCaHLTBitMon_QueryRunRegistry::string.

◆ moduleDescriptionsInEndPath()

void edm::Schedule::moduleDescriptionsInEndPath ( std::string const &  iEndPathLabel,
std::vector< ModuleDescription const * > &  descriptions,
unsigned int  hint 
) const

adds the ModuleDescriptions into the vector for the modules scheduled in path iEndPathLabel hint is a performance optimization if you might know the position of the module in the path

Definition at line 1464 of file Schedule.cc.

1466  {
1467  streamSchedules_[0]->moduleDescriptionsInEndPath(iEndPathLabel, descriptions, hint);
1468  }

References streamSchedules_.

◆ moduleDescriptionsInPath()

void edm::Schedule::moduleDescriptionsInPath ( std::string const &  iPathLabel,
std::vector< ModuleDescription const * > &  descriptions,
unsigned int  hint 
) const

adds the ModuleDescriptions into the vector for the modules scheduled in path iPathLabel hint is a performance optimization if you might know the position of the module in the path

Definition at line 1458 of file Schedule.cc.

1460  {
1461  streamSchedules_[0]->moduleDescriptionsInPath(iPathLabel, descriptions, hint);
1462  }

References streamSchedules_.

◆ moduleRegistry() [1/2]

std::shared_ptr<ModuleRegistry>& edm::Schedule::moduleRegistry ( )
inlineprivate

Definition at line 296 of file Schedule.h.

References edm::get_underlying_safe(), and moduleRegistry_.

◆ moduleRegistry() [2/2]

std::shared_ptr<ModuleRegistry const> edm::Schedule::moduleRegistry ( ) const
inlineprivate

Definition at line 295 of file Schedule.h.

References edm::get_underlying_safe(), and moduleRegistry_.

◆ modulesInPath()

void edm::Schedule::modulesInPath ( std::string const &  iPathLabel,
std::vector< std::string > &  oLabelsToFill 
) const

adds to oLabelsToFill in execution order the labels of all modules in path iPathLabel

Definition at line 1454 of file Schedule.cc.

1454  {
1455  streamSchedules_[0]->modulesInPath(iPathLabel, oLabelsToFill);
1456  }

References streamSchedules_.

Referenced by edm::ScheduleInfo::modulesInPath().

◆ openOutputFiles()

void edm::Schedule::openOutputFiles ( FileBlock fb)

Definition at line 1216 of file Schedule.cc.

1216  {
1217  using std::placeholders::_1;
1219  }

References all_output_communicators_, benchmark_cfg::fb, edm::for_all(), and edm::OutputModuleCommunicator::openFile().

◆ processOneEventAsync()

void edm::Schedule::processOneEventAsync ( WaitingTaskHolder  iTask,
unsigned int  iStreamID,
EventTransitionInfo info,
ServiceToken const &  token 
)

Definition at line 1370 of file Schedule.cc.

1373  {
1374  assert(iStreamID < streamSchedules_.size());
1375  streamSchedules_[iStreamID]->processOneEventAsync(std::move(iTask), info, token, pathStatusInserters_);
1376  }

References cms::cuda::assert(), info(), eostools::move(), pathStatusInserters_, streamSchedules_, and unpackBuffers-CaloStage2::token.

◆ processOneGlobalAsync()

template<typename T >
void edm::Schedule::processOneGlobalAsync ( WaitingTaskHolder  iTask,
typename T::TransitionInfoType &  transitionInfo,
ServiceToken const &  token,
bool  cleaningUpAfterException = false 
)

Definition at line 330 of file Schedule.h.

333  {
334  globalSchedule_->processOneGlobalAsync<T>(iTaskHolder, transitionInfo, token, cleaningUpAfterException);
335  }

References globalSchedule_, and unpackBuffers-CaloStage2::token.

Referenced by edm::beginGlobalTransitionAsync(), and edm::endGlobalTransitionAsync().

◆ processOneStreamAsync()

template<typename T >
void edm::Schedule::processOneStreamAsync ( WaitingTaskHolder  iTask,
unsigned int  iStreamID,
typename T::TransitionInfoType &  transitionInfo,
ServiceToken const &  token,
bool  cleaningUpAfterException = false 
)

Definition at line 319 of file Schedule.h.

323  {
324  assert(iStreamID < streamSchedules_.size());
325  streamSchedules_[iStreamID]->processOneStreamAsync<T>(
326  std::move(iTaskHolder), transitionInfo, token, cleaningUpAfterException);
327  }

References cms::cuda::assert(), eostools::move(), streamSchedules_, and unpackBuffers-CaloStage2::token.

Referenced by edm::beginStreamTransitionAsync(), and edm::endStreamTransitionAsync().

◆ respondToCloseInputFile()

void edm::Schedule::respondToCloseInputFile ( FileBlock const &  fb)

Definition at line 1351 of file Schedule.cc.

1351  {
1352  using std::placeholders::_1;
1353  for_all(allWorkers(), std::bind(&Worker::respondToCloseInputFile, _1, std::cref(fb)));
1354  }

References allWorkers(), benchmark_cfg::fb, edm::for_all(), and edm::Worker::respondToCloseInputFile().

◆ respondToOpenInputFile()

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

Definition at line 1346 of file Schedule.cc.

1346  {
1347  using std::placeholders::_1;
1348  for_all(allWorkers(), std::bind(&Worker::respondToOpenInputFile, _1, std::cref(fb)));
1349  }

References allWorkers(), benchmark_cfg::fb, edm::for_all(), and edm::Worker::respondToOpenInputFile().

◆ resultsInserter() [1/2]

std::shared_ptr<TriggerResultInserter>& edm::Schedule::resultsInserter ( )
inlineprivate

Definition at line 294 of file Schedule.h.

References edm::get_underlying_safe(), and resultsInserter_.

◆ resultsInserter() [2/2]

std::shared_ptr<TriggerResultInserter const> edm::Schedule::resultsInserter ( ) const
inlineprivate

Definition at line 291 of file Schedule.h.

291  {
293  }

References edm::get_underlying_safe(), and resultsInserter_.

◆ shouldWeCloseOutput()

bool edm::Schedule::shouldWeCloseOutput ( ) const

Definition at line 1337 of file Schedule.cc.

1337  {
1338  using std::placeholders::_1;
1339  // Return true iff at least one output module returns true.
1340  return (std::find_if(all_output_communicators_.begin(),
1344  }

References all_output_communicators_, and edm::OutputModuleCommunicator::shouldWeCloseFile().

◆ terminate()

bool edm::Schedule::terminate ( void  ) const

Return whether each output module has reached its maximum count.

Definition at line 913 of file Schedule.cc.

913  {
914  if (all_output_communicators_.empty()) {
915  return false;
916  }
917  for (auto& c : all_output_communicators_) {
918  if (!c->limitReached()) {
919  // Found an output module that has not reached output event count.
920  return false;
921  }
922  }
923  LogInfo("SuccessfulTermination") << "The job is terminating successfully because each output module\n"
924  << "has reached its configured limit.\n";
925  return true;
926  }

References all_output_communicators_, and HltBtagPostValidation_cff::c.

◆ totalEvents()

int edm::Schedule::totalEvents ( ) const

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

Definition at line 1534 of file Schedule.cc.

1534  {
1535  int returnValue = 0;
1536  for (auto& s : streamSchedules_) {
1537  returnValue += s->totalEvents();
1538  }
1539  return returnValue;
1540  }

References alignCSCRings::s, and streamSchedules_.

Referenced by endJob().

◆ totalEventsFailed()

int edm::Schedule::totalEventsFailed ( ) const

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

Definition at line 1550 of file Schedule.cc.

1550  {
1551  int returnValue = 0;
1552  for (auto& s : streamSchedules_) {
1553  returnValue += s->totalEventsFailed();
1554  }
1555  return returnValue;
1556  }

References alignCSCRings::s, and streamSchedules_.

◆ totalEventsPassed()

int edm::Schedule::totalEventsPassed ( ) const

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

Definition at line 1542 of file Schedule.cc.

1542  {
1543  int returnValue = 0;
1544  for (auto& s : streamSchedules_) {
1545  returnValue += s->totalEventsPassed();
1546  }
1547  return returnValue;
1548  }

References alignCSCRings::s, and streamSchedules_.

◆ triggerPaths()

void edm::Schedule::triggerPaths ( std::vector< std::string > &  oLabelsToFill) const

Adds to oLabelsToFill the labels for all trigger paths in the process. This is different from availablePaths because it includes the empty paths to match the entries in TriggerResults exactly.

Definition at line 1450 of file Schedule.cc.

1450 { oLabelsToFill = *pathNames_; }

References pathNames_.

◆ writeLumiAsync()

void edm::Schedule::writeLumiAsync ( WaitingTaskHolder  iTask,
LuminosityBlockPrincipal const &  lbp,
ProcessContext const *  processContext,
ActivityRegistry activityRegistry 
)

Definition at line 1299 of file Schedule.cc.

1302  {
1304  GlobalContext globalContext(GlobalContext::Transition::kWriteLuminosityBlock,
1305  lbp.id(),
1306  lbp.runPrincipal().index(),
1307  lbp.index(),
1308  lbp.beginTime(),
1309  processContext);
1310 
1311  auto t =
1312  make_waiting_task(tbb::task::allocate_root(),
1313  [task, activityRegistry, globalContext, token](std::exception_ptr const* iExcept) mutable {
1314  // Propagating the exception would be nontrivial, and signal actions are not supposed to throw exceptions
1315  CMS_SA_ALLOW try {
1316  //services can depend on other services
1318 
1319  activityRegistry->postGlobalWriteLumiSignal_(globalContext);
1320  } catch (...) {
1321  }
1322  std::exception_ptr ptr;
1323  if (iExcept) {
1324  ptr = *iExcept;
1325  }
1326  task.doneWaiting(ptr);
1327  });
1328  // Propagating the exception would be nontrivial, and signal actions are not supposed to throw exceptions
1329  CMS_SA_ALLOW try { activityRegistry->preGlobalWriteLumiSignal_(globalContext); } catch (...) {
1330  }
1331  WaitingTaskHolder tHolder(t);
1332  for (auto& c : all_output_communicators_) {
1333  c->writeLumiAsync(tHolder, lbp, processContext, activityRegistry);
1334  }
1335  }

References all_output_communicators_, edm::LuminosityBlockPrincipal::beginTime(), HltBtagPostValidation_cff::c, CMS_SA_ALLOW, edm::LuminosityBlockPrincipal::id(), edm::LuminosityBlockPrincipal::index(), edm::RunPrincipal::index(), edm::ServiceRegistry::instance(), edm::GlobalContext::kWriteLuminosityBlock, edm::make_waiting_task(), edm::ActivityRegistry::postGlobalWriteLumiSignal_, edm::ActivityRegistry::preGlobalWriteLumiSignal_, edm::ServiceRegistry::presentToken(), edm::LuminosityBlockPrincipal::runPrincipal(), submitPVValidationJobs::t, TrackValidation_cff::task, and unpackBuffers-CaloStage2::token.

◆ writeProcessBlockAsync()

void edm::Schedule::writeProcessBlockAsync ( WaitingTaskHolder  iTask,
ProcessBlockPrincipal const &  pbp,
ProcessContext const *  processContext,
ActivityRegistry activityRegistry 
)

Definition at line 1260 of file Schedule.cc.

1263  {
1265  GlobalContext globalContext(GlobalContext::Transition::kWriteProcessBlock,
1266  LuminosityBlockID(),
1270  processContext);
1271 
1272  auto t =
1273  make_waiting_task(tbb::task::allocate_root(),
1274  [task, activityRegistry, globalContext, token](std::exception_ptr const* iExcept) mutable {
1275  // Propagating the exception would be nontrivial, and signal actions are not supposed to throw exceptions
1276  CMS_SA_ALLOW try {
1277  //services can depend on other services
1279 
1280  activityRegistry->postWriteProcessBlockSignal_(globalContext);
1281  } catch (...) {
1282  }
1283  std::exception_ptr ptr;
1284  if (iExcept) {
1285  ptr = *iExcept;
1286  }
1287  task.doneWaiting(ptr);
1288  });
1289  // Propagating the exception would be nontrivial, and signal actions are not supposed to throw exceptions
1290  CMS_SA_ALLOW try { activityRegistry->preWriteProcessBlockSignal_(globalContext); } catch (...) {
1291  }
1292  WaitingTaskHolder tHolder(t);
1293 
1294  for (auto& c : all_output_communicators_) {
1295  c->writeProcessBlockAsync(tHolder, pbp, processContext, activityRegistry);
1296  }
1297  }

References all_output_communicators_, HltBtagPostValidation_cff::c, CMS_SA_ALLOW, edm::ServiceRegistry::instance(), edm::LuminosityBlockIndex::invalidLuminosityBlockIndex(), edm::RunIndex::invalidRunIndex(), edm::Timestamp::invalidTimestamp(), edm::GlobalContext::kWriteProcessBlock, edm::make_waiting_task(), edm::ActivityRegistry::postWriteProcessBlockSignal_, edm::ServiceRegistry::presentToken(), edm::ActivityRegistry::preWriteProcessBlockSignal_, submitPVValidationJobs::t, TrackValidation_cff::task, and unpackBuffers-CaloStage2::token.

◆ writeRunAsync()

void edm::Schedule::writeRunAsync ( WaitingTaskHolder  iTask,
RunPrincipal const &  rp,
ProcessContext const *  processContext,
ActivityRegistry activityRegistry,
MergeableRunProductMetadata const *  mergeableRunProductMetadata 
)

Definition at line 1221 of file Schedule.cc.

1225  {
1227  GlobalContext globalContext(GlobalContext::Transition::kWriteRun,
1228  LuminosityBlockID(rp.run(), 0),
1229  rp.index(),
1231  rp.endTime(),
1232  processContext);
1233  auto t =
1234  make_waiting_task(tbb::task::allocate_root(),
1235  [task, activityRegistry, globalContext, token](std::exception_ptr const* iExcept) mutable {
1236  // Propagating the exception would be nontrivial, and signal actions are not supposed to throw exceptions
1237  CMS_SA_ALLOW try {
1238  //services can depend on other services
1240 
1241  activityRegistry->postGlobalWriteRunSignal_(globalContext);
1242  } catch (...) {
1243  }
1244  std::exception_ptr ptr;
1245  if (iExcept) {
1246  ptr = *iExcept;
1247  }
1248  task.doneWaiting(ptr);
1249  });
1250  // Propagating the exception would be nontrivial, and signal actions are not supposed to throw exceptions
1251  CMS_SA_ALLOW try { activityRegistry->preGlobalWriteRunSignal_(globalContext); } catch (...) {
1252  }
1253  WaitingTaskHolder tHolder(t);
1254 
1255  for (auto& c : all_output_communicators_) {
1256  c->writeRunAsync(tHolder, rp, processContext, activityRegistry, mergeableRunProductMetadata);
1257  }
1258  }

References all_output_communicators_, HltBtagPostValidation_cff::c, CMS_SA_ALLOW, edm::RunPrincipal::endTime(), edm::RunPrincipal::index(), edm::ServiceRegistry::instance(), edm::LuminosityBlockIndex::invalidLuminosityBlockIndex(), edm::GlobalContext::kWriteRun, edm::make_waiting_task(), edm::ActivityRegistry::postGlobalWriteRunSignal_, edm::ActivityRegistry::preGlobalWriteRunSignal_, edm::ServiceRegistry::presentToken(), edm::RunPrincipal::run(), submitPVValidationJobs::t, TrackValidation_cff::task, and unpackBuffers-CaloStage2::token.

Member Data Documentation

◆ all_output_communicators_

AllOutputModuleCommunicators edm::Schedule::all_output_communicators_
private

◆ endPathNames_

std::vector<std::string> const* edm::Schedule::endPathNames_
private

Definition at line 312 of file Schedule.h.

Referenced by endPaths().

◆ endpathsAreActive_

volatile bool edm::Schedule::endpathsAreActive_
private

Definition at line 315 of file Schedule.h.

Referenced by enableEndPaths(), and endPathsEnabled().

◆ endPathStatusInserters_

std::vector<edm::propagate_const<std::shared_ptr<EndPathStatusInserter> > > edm::Schedule::endPathStatusInserters_
private

Definition at line 300 of file Schedule.h.

◆ globalSchedule_

edm::propagate_const<std::unique_ptr<GlobalSchedule> > edm::Schedule::globalSchedule_
private

Definition at line 304 of file Schedule.h.

Referenced by allWorkers(), beginJob(), changeModule(), endJob(), and processOneGlobalAsync().

◆ moduleRegistry_

edm::propagate_const<std::shared_ptr<ModuleRegistry> > edm::Schedule::moduleRegistry_
private

Definition at line 301 of file Schedule.h.

Referenced by changeModule(), and moduleRegistry().

◆ pathNames_

std::vector<std::string> const* edm::Schedule::pathNames_
private

Definition at line 311 of file Schedule.h.

Referenced by triggerPaths().

◆ pathStatusInserters_

std::vector<edm::propagate_const<std::shared_ptr<PathStatusInserter> > > edm::Schedule::pathStatusInserters_
private

Definition at line 299 of file Schedule.h.

Referenced by processOneEventAsync().

◆ preallocConfig_

PreallocationConfiguration edm::Schedule::preallocConfig_
private

Definition at line 307 of file Schedule.h.

Referenced by changeModule(), and endJob().

◆ resultsInserter_

edm::propagate_const<std::shared_ptr<TriggerResultInserter> > edm::Schedule::resultsInserter_
private

Definition at line 298 of file Schedule.h.

Referenced by resultsInserter().

◆ streamSchedules_

std::vector<edm::propagate_const<std::shared_ptr<StreamSchedule> > > edm::Schedule::streamSchedules_
private

◆ summaryTimeKeeper_

edm::propagate_const<std::unique_ptr<SystemTimeKeeper> > edm::Schedule::summaryTimeKeeper_
private

Definition at line 309 of file Schedule.h.

Referenced by getTriggerTimingReport().

◆ wantSummary_

bool edm::Schedule::wantSummary_
private

Definition at line 313 of file Schedule.h.

Referenced by endJob().

alignBH_cfg.fixed
fixed
Definition: alignBH_cfg.py:54
mps_fire.i
i
Definition: mps_fire.py:428
edm::Schedule::limitOutput
void limitOutput(ParameterSet const &proc_pset, BranchIDLists const &branchIDLists, SubProcessParentageHelper const *subProcessParentageHelper)
Definition: Schedule.cc:872
edm::Schedule::pathNames_
std::vector< std::string > const * pathNames_
Definition: Schedule.h:311
edm::LogFwkVerbatim
Log< level::FwkInfo, true > LogFwkVerbatim
Definition: MessageLogger.h:129
cms::Exception::addContext
void addContext(std::string const &context)
Definition: Exception.cc:165
edm::PRODUCT_TYPE
Definition: ProductKindOfType.h:5
filterCSVwithJSON.copy
copy
Definition: filterCSVwithJSON.py:36
edm::Schedule::moduleRegistry
std::shared_ptr< ModuleRegistry const > moduleRegistry() const
Definition: Schedule.h:295
edm::setIsMergeable
void setIsMergeable(BranchDescription &)
Definition: setIsMergeable.cc:15
edm::sort_all
void sort_all(RandomAccessSequence &s)
wrappers for std::sort
Definition: Algorithms.h:92
convertSQLitetoXML_cfg.output
output
Definition: convertSQLitetoXML_cfg.py:72
edm::PreallocationConfiguration::numberOfThreads
unsigned int numberOfThreads() const
Definition: PreallocationConfiguration.h:34
modules
Definition: ZHLTMatchFilter.cc:17
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
mod
T mod(const T &a, const T &b)
Definition: ecalDccMap.h:4
edm::GlobalContext::Transition::kWriteProcessBlock
cms::cuda::assert
assert(be >=bs)
edm::Worker::respondToOpenInputFile
void respondToOpenInputFile(FileBlock const &fb)
Definition: Worker.h:173
info
static const TGPicture * info(bool iBackgroundIsBlack)
Definition: FWCollectionSummaryWidget.cc:153
edm::SystemTimeKeeper::startProcessingLoop
void startProcessingLoop()
Definition: SystemTimeKeeper.cc:193
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::Schedule::endPathStatusInserters_
std::vector< edm::propagate_const< std::shared_ptr< EndPathStatusInserter > > > endPathStatusInserters_
Definition: Schedule.h:300
edm::LogInfo
Log< level::Info, false > LogInfo
Definition: MessageLogger.h:125
edm::Schedule::totalEvents
int totalEvents() const
Definition: Schedule.cc:1534
edm::SystemTimeKeeper::stopProcessingLoop
void stopProcessingLoop()
Definition: SystemTimeKeeper.cc:195
newFWLiteAna.found
found
Definition: newFWLiteAna.py:118
groupFilesInBlocks.temp
list temp
Definition: groupFilesInBlocks.py:142
edm::InRun
Definition: BranchType.h:11
CMS_SA_ALLOW
#define CMS_SA_ALLOW
Definition: thread_safety_macros.h:5
edm::Schedule::wantSummary_
bool wantSummary_
Definition: Schedule.h:313
edm::SystemTimeKeeper::startModuleEvent
void startModuleEvent(StreamContext const &, ModuleCallingContext const &)
Definition: SystemTimeKeeper.cc:153
edm::for_all
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:14
edm::InProcess
Definition: BranchType.h:11
alignCSCRings.s
s
Definition: alignCSCRings.py:92
edm::SystemTimeKeeper::startEvent
void startEvent(StreamID)
Definition: SystemTimeKeeper.cc:124
TrackValidation_cff.task
task
Definition: TrackValidation_cff.py:252
WaitingTaskHolder
HcalDetIdTransform::transform
unsigned transform(const HcalDetId &id, unsigned transformCode)
Definition: HcalDetIdTransform.cc:7
edm::InEvent
Definition: BranchType.h:11
edm::make_waiting_task
FunctorWaitingTask< F > * make_waiting_task(ALLOC &&iAlloc, F f)
Definition: WaitingTask.h:87
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
edm::Schedule::getTriggerReport
void getTriggerReport(TriggerReport &rep) const
Definition: Schedule.cc:1517
edm::OutputModuleCommunicator::shouldWeCloseFile
virtual bool shouldWeCloseFile() const =0
edm::GlobalContext::Transition::kWriteLuminosityBlock
edm::ServiceRegistry::Operate
friend class Operate
Definition: ServiceRegistry.h:54
edm::Schedule::streamSchedules_
std::vector< edm::propagate_const< std::shared_ptr< StreamSchedule > > > streamSchedules_
Definition: Schedule.h:302
edm::LuminosityBlockIndex::invalidLuminosityBlockIndex
static LuminosityBlockIndex invalidLuminosityBlockIndex()
Definition: LuminosityBlockIndex.cc:9
ParameterSet
Definition: Functions.h:16
edm::InLumi
Definition: BranchType.h:11
SiStripPI::max
Definition: SiStripPayloadInspectorHelper.h:169
edm::OutputModuleCommunicator::openFile
virtual void openFile(FileBlock const &fb)=0
edm::Schedule::pathStatusInserters_
std::vector< edm::propagate_const< std::shared_ptr< PathStatusInserter > > > pathStatusInserters_
Definition: Schedule.h:299
edm::ServiceRegistry::presentToken
ServiceToken presentToken() const
Definition: ServiceRegistry.cc:63
Exception
edm::Schedule::endpathsAreActive_
volatile bool endpathsAreActive_
Definition: Schedule.h:315
cuy.rep
rep
Definition: cuy.py:1190
edm::SystemTimeKeeper::stopPath
void stopPath(StreamContext const &, PathContext const &, HLTPathStatus const &)
Definition: SystemTimeKeeper.cc:140
edm::GlobalContext::Transition::kWriteRun
edm::Worker::respondToCloseInputFile
void respondToCloseInputFile(FileBlock const &fb)
Definition: Worker.h:174
edm::SystemTimeKeeper::stopModuleEvent
void stopModuleEvent(StreamContext const &, ModuleCallingContext const &)
Definition: SystemTimeKeeper.cc:160
HltBtagPostValidation_cff.c
c
Definition: HltBtagPostValidation_cff.py:31
edm::Schedule::all_output_communicators_
AllOutputModuleCommunicators all_output_communicators_
Definition: Schedule.h:306
edm::ServiceRegistry::instance
static ServiceRegistry & instance()
Definition: ServiceRegistry.cc:90
edm::RunIndex::invalidRunIndex
static RunIndex invalidRunIndex()
Definition: RunIndex.cc:9
SimL1EmulatorRepack_CalouGT_cff.processName
processName
Definition: SimL1EmulatorRepack_CalouGT_cff.py:17
edm::Schedule::endPathNames_
std::vector< std::string > const * endPathNames_
Definition: Schedule.h:312
edm::Timestamp::invalidTimestamp
static Timestamp invalidTimestamp()
Definition: Timestamp.h:82
submitPVResolutionJobs.desc
string desc
Definition: submitPVResolutionJobs.py:251
eostools.move
def move(src, dest)
Definition: eostools.py:511
edm::Schedule::allWorkers
AllWorkers const & allWorkers() const
returns the collection of pointers to workers
Definition: Schedule.cc:1438
edm::SystemTimeKeeper::startPath
void startPath(StreamContext const &, PathContext const &)
Definition: SystemTimeKeeper.cc:133
edm::Schedule::resultsInserter
std::shared_ptr< TriggerResultInserter const > resultsInserter() const
Definition: Schedule.h:291
edm::Schedule::summaryTimeKeeper_
edm::propagate_const< std::unique_ptr< SystemTimeKeeper > > summaryTimeKeeper_
Definition: Schedule.h:309
T
long double T
Definition: Basic3DVectorLD.h:48
Exception
Definition: hltDiff.cc:246
edm::SystemTimeKeeper::pauseModuleEvent
void pauseModuleEvent(StreamContext const &, ModuleCallingContext const &)
Definition: SystemTimeKeeper.cc:173
edm::OutputModuleCommunicator::closeFile
virtual void closeFile()=0
edm::Schedule::globalSchedule_
edm::propagate_const< std::unique_ptr< GlobalSchedule > > globalSchedule_
Definition: Schedule.h:304
actions
roAction_t actions[nactions]
Definition: GenABIO.cc:181
mps_fire.result
result
Definition: mps_fire.py:311
edm::search_all
bool search_all(ForwardSequence const &s, Datum const &d)
Definition: Algorithms.h:36
cms::Exception
Definition: Exception.h:70
edm::Schedule::moduleRegistry_
edm::propagate_const< std::shared_ptr< ModuleRegistry > > moduleRegistry_
Definition: Schedule.h:301
HerwigMaxPtPartonFilter_cfi.moduleLabel
moduleLabel
Definition: HerwigMaxPtPartonFilter_cfi.py:4
edm::SystemTimeKeeper::stopEvent
void stopEvent(StreamContext const &)
Definition: SystemTimeKeeper.cc:129
HLTObjectsMonitor_cfi.TriggerResults
TriggerResults
Definition: HLTObjectsMonitor_cfi.py:9
submitPVValidationJobs.t
string t
Definition: submitPVValidationJobs.py:644
edm::errors::Configuration
Definition: EDMException.h:36
EcalCalibMonitorClient_cfi.workers
workers
Definition: EcalCalibMonitorClient_cfi.py:19
edm::SystemTimeKeeper::restartModuleEvent
void restartModuleEvent(StreamContext const &, ModuleCallingContext const &)
Definition: SystemTimeKeeper.cc:186
edm::Schedule::preallocConfig_
PreallocationConfiguration preallocConfig_
Definition: Schedule.h:307
edm::Schedule::getTriggerTimingReport
void getTriggerTimingReport(TriggerTimingReport &rep) const
Definition: Schedule.cc:1527
benchmark_cfg.fb
fb
Definition: benchmark_cfg.py:14
edm::Schedule::resultsInserter_
edm::propagate_const< std::shared_ptr< TriggerResultInserter > > resultsInserter_
Definition: Schedule.h:298
findQualityFiles.size
size
Write out results.
Definition: findQualityFiles.py:443
unpackBuffers-CaloStage2.token
token
Definition: unpackBuffers-CaloStage2.py:318