CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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
< std::shared_ptr
< OutputModuleCommunicator > > 
AllOutputModuleCommunicators
 
typedef std::vector< Worker * > AllWorkers
 
typedef std::vector< std::string > vstring
 
typedef std::shared_ptr< WorkerWorkerPtr
 
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 &)
 
void beginStream (unsigned int)
 
bool changeModule (std::string const &iLabel, ParameterSet const &iPSet, const ProductRegistry &iRegistry)
 
void clearCounters ()
 Clear all the counters in the trigger report. More...
 
void closeOutputFiles ()
 
void enableEndPaths (bool active)
 
void endJob (ExceptionCollector &collector)
 
bool endPathsEnabled () const
 
void endStream (unsigned int)
 
std::vector< ModuleDescription
const * > 
getAllModuleDescriptions () const
 
void getTriggerReport (TriggerReport &rep) const
 
void getTriggerTimingReport (TriggerTimingReport &rep) 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 openNewOutputFilesIfNeeded ()
 
void openOutputFiles (FileBlock &fb)
 
void postForkReacquireResources (unsigned int iChildIndex, unsigned int iNumberOfChildren)
 
void preForkReleaseResources ()
 
template<typename T >
void processOneEvent (unsigned int iStreamID, typename T::MyPrincipal &principal, EventSetup const &eventSetup, bool cleaningUpAfterException=false)
 
template<typename T >
void processOneGlobal (typename T::MyPrincipal &principal, EventSetup const &eventSetup, bool cleaningUpAfterException=false)
 
template<typename T >
void processOneStream (unsigned int iStreamID, typename T::MyPrincipal &principal, EventSetup const &eventSetup, bool cleaningUpAfterException=false)
 
void respondToCloseInputFile (FileBlock const &fb)
 
void respondToOpenInputFile (FileBlock const &fb)
 
 Schedule (ParameterSet &proc_pset, service::TriggerNamesService &tns, ProductRegistry &pregistry, BranchIDListHelper &branchIDListHelper, ThinnedAssociationsHelper &thinnedAssociationsHelper, ExceptionToActionTable const &actions, std::shared_ptr< ActivityRegistry > areg, std::shared_ptr< ProcessConfiguration > processConfiguration, const ParameterSet *subProcPSet, 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 writeLumi (LuminosityBlockPrincipal const &lbp, ProcessContext const *)
 
void writeRun (RunPrincipal const &rp, ProcessContext const *)
 

Private Member Functions

void checkForCorrectness () const
 Check that the schedule is actually runable. More...
 
void limitOutput (ParameterSet const &proc_pset, BranchIDLists const &branchIDLists)
 

Private Attributes

AllOutputModuleCommunicators all_output_communicators_
 
volatile bool endpathsAreActive_
 
std::unique_ptr< GlobalScheduleglobalSchedule_
 
std::shared_ptr< ModuleRegistrymoduleRegistry_
 
PreallocationConfiguration preallocConfig_
 
std::shared_ptr
< TriggerResultInserter
resultsInserter_
 
std::vector< std::shared_ptr
< StreamSchedule > > 
streamSchedules_
 
std::unique_ptr< SystemTimeKeepersummaryTimeKeeper_
 
bool wantSummary_
 

Detailed Description

Definition at line 111 of file Schedule.h.

Member Typedef Documentation

Definition at line 116 of file Schedule.h.

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

Definition at line 115 of file Schedule.h.

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

Definition at line 113 of file Schedule.h.

typedef std::shared_ptr<Worker> edm::Schedule::WorkerPtr

Definition at line 114 of file Schedule.h.

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

Definition at line 118 of file Schedule.h.

Constructor & Destructor Documentation

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

Definition at line 358 of file Schedule.cc.

368  :
369  //Only create a resultsInserter if there is a trigger path
370  resultsInserter_{tns.getTrigPaths().empty()? std::shared_ptr<TriggerResultInserter>{} :makeInserter(proc_pset,prealloc,preg,actions,areg,processConfiguration)},
processConfiguration
Definition: Schedule.cc:370
actions
Definition: Schedule.cc:370
std::shared_ptr< TriggerResultInserter > resultsInserter_
Definition: Schedule.h:246
areg
Definition: Schedule.cc:370
preg
Definition: Schedule.cc:370
prealloc
Definition: Schedule.cc:370

Member Function Documentation

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

returns the collection of pointers to workers

Definition at line 1015 of file Schedule.cc.

References globalSchedule_.

Referenced by changeModule(), checkForCorrectness(), getAllModuleDescriptions(), postForkReacquireResources(), preForkReleaseResources(), respondToCloseInputFile(), and respondToOpenInputFile().

1015  {
1016  return globalSchedule_->allWorkers();
1017  }
std::unique_ptr< GlobalSchedule > globalSchedule_
Definition: Schedule.h:250
void edm::Schedule::availablePaths ( std::vector< std::string > &  oLabelsToFill) const

adds to oLabelsToFill the labels for all paths in the process

Definition at line 1020 of file Schedule.cc.

References streamSchedules_.

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

1020  {
1021  streamSchedules_[0]->availablePaths(oLabelsToFill);
1022  }
std::vector< std::shared_ptr< StreamSchedule > > streamSchedules_
Definition: Schedule.h:248
void edm::Schedule::beginJob ( ProductRegistry const &  iRegistry)

Definition at line 942 of file Schedule.cc.

References checkForCorrectness(), and globalSchedule_.

942  {
944 
945  globalSchedule_->beginJob(iRegistry);
946  }
void checkForCorrectness() const
Check that the schedule is actually runable.
Definition: Schedule.cc:1284
std::unique_ptr< GlobalSchedule > globalSchedule_
Definition: Schedule.h:250
void edm::Schedule::beginStream ( unsigned int  iStreamID)

Definition at line 948 of file Schedule.cc.

References streamSchedules_.

948  {
949  assert(iStreamID<streamSchedules_.size());
950  streamSchedules_[iStreamID]->beginStream();
951  }
std::vector< std::shared_ptr< StreamSchedule > > streamSchedules_
Definition: Schedule.h:248
bool edm::Schedule::changeModule ( std::string const &  iLabel,
ParameterSet const &  iPSet,
const ProductRegistry iRegistry 
)

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

Definition at line 967 of file Schedule.cc.

References allWorkers(), newFWLiteAna::found, globalSchedule_, edm::InEvent, edm::InLumi, edm::InRun, moduleRegistry_, preallocConfig_, edm::ProductRegistry::productLookup(), streamSchedules_, and edm::Worker::updateLookup().

Referenced by edm::ModuleChanger::changeModule().

969  {
970  Worker* found = nullptr;
971  for (auto const& worker : allWorkers()) {
972  if (worker->description().moduleLabel() == iLabel) {
973  found = worker;
974  break;
975  }
976  }
977  if (nullptr == found) {
978  return false;
979  }
980 
981  auto newMod = moduleRegistry_->replaceModule(iLabel,iPSet,preallocConfig_);
982 
983  globalSchedule_->replaceModule(newMod,iLabel);
984 
985  for(auto s: streamSchedules_) {
986  s->replaceModule(newMod,iLabel);
987  }
988 
989  {
990  //Need to updateLookup in order to make getByToken work
991  auto const runLookup = iRegistry.productLookup(InRun);
992  auto const lumiLookup = iRegistry.productLookup(InLumi);
993  auto const eventLookup = iRegistry.productLookup(InEvent);
994  found->updateLookup(InRun,*runLookup);
995  found->updateLookup(InLumi,*lumiLookup);
996  found->updateLookup(InEvent,*eventLookup);
997  }
998 
999  return true;
1000  }
AllWorkers const & allWorkers() const
returns the collection of pointers to workers
Definition: Schedule.cc:1015
std::shared_ptr< ModuleRegistry > moduleRegistry_
Definition: Schedule.h:247
std::vector< std::shared_ptr< StreamSchedule > > streamSchedules_
Definition: Schedule.h:248
PreallocationConfiguration preallocConfig_
Definition: Schedule.h:253
std::unique_ptr< GlobalSchedule > globalSchedule_
Definition: Schedule.h:250
void edm::Schedule::checkForCorrectness ( ) const
private

Check that the schedule is actually runable.

Definition at line 1284 of file Schedule.cc.

References allWorkers(), newFWLiteAna::found, g, bookConverter::max, mergeVDriftHistosByStation::name, cmsHarvester::path, streamSchedules_, and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by beginJob().

1285  {
1286  //Need to lookup names to ids quickly
1287  std::map<std::string,unsigned int> moduleNamesToIndex;
1288  for(auto worker: allWorkers()) {
1289  moduleNamesToIndex.insert( std::make_pair(worker->description().moduleLabel(),
1290  worker->description().id()));
1291  }
1292 
1293  //If a module to module dependency comes from a path, remember which path
1294  EdgeToPathMap edgeToPathMap;
1295 
1296  //determine the path dependencies
1297  std::vector<std::string> pathNames;
1298  {
1299  streamSchedules_[0]->availablePaths(pathNames);
1300 
1301  std::vector<std::string> moduleNames;
1302  std::vector<std::string> reducedModuleNames;
1303  unsigned int pathIndex=0;
1304  for(auto const& path: pathNames) {
1305  moduleNames.clear();
1306  reducedModuleNames.clear();
1307  std::set<std::string> alreadySeenNames;
1308 
1309  streamSchedules_[0]->modulesInPath(path,moduleNames);
1310  std::string lastModuleName;
1311  unsigned int lastModuleIndex;
1312  for(auto const& name: moduleNames) {
1313  auto found = alreadySeenNames.insert(name);
1314  if(found.second) {
1315  //first time for this path
1316  unsigned int moduleIndex = moduleNamesToIndex[name];
1317  if(not lastModuleName.empty() ) {
1318  edgeToPathMap[std::make_pair(moduleIndex,lastModuleIndex)].push_back(pathIndex);
1319  }
1320  lastModuleName = name;
1321  lastModuleIndex = moduleIndex;
1322  }
1323  }
1324  ++pathIndex;
1325  }
1326  }
1327  {
1328  std::vector<const char*> dependentModules;
1329  //determine the data dependencies
1330  for(auto const& worker: allWorkers()) {
1331  dependentModules.clear();
1332  //NOTE: what about aliases?
1333  worker->modulesDependentUpon(dependentModules);
1334  auto found = moduleNamesToIndex.find(worker->description().moduleLabel());
1335  if (found == moduleNamesToIndex.end()) {
1336  //The module was from a previous process
1337  continue;
1338  }
1339  unsigned int moduleIndex = found->second;
1340  for(auto name: dependentModules) {
1341  edgeToPathMap[std::make_pair(moduleIndex, moduleNamesToIndex[name])].push_back(std::numeric_limits<unsigned int>::max());
1342  }
1343  }
1344  }
1345  //Now use boost graph library to find cycles in the dependencies
1346  std::vector<SimpleEdge> outList;
1347  outList.reserve(edgeToPathMap.size());
1348  for(auto const& edgeInfo: edgeToPathMap) {
1349  outList.push_back(edgeInfo.first);
1350  }
1351 
1352  Graph g(outList.begin(),outList.end(), moduleNamesToIndex.size());
1353 
1354  cycle_detector detector(edgeToPathMap,pathNames,moduleNamesToIndex);
1355  boost::depth_first_search(g,boost::visitor(detector));
1356  }
AllWorkers const & allWorkers() const
returns the collection of pointers to workers
Definition: Schedule.cc:1015
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e g
Definition: Activities.doc:4
tuple path
else: Piece not in the list, fine.
std::vector< std::shared_ptr< StreamSchedule > > streamSchedules_
Definition: Schedule.h:248
void edm::Schedule::clearCounters ( )

Clear all the counters in the trigger report.

Definition at line 1090 of file Schedule.cc.

References streamSchedules_.

1090  {
1091  for(auto const& s: streamSchedules_) {
1092  s->clearCounters();
1093  }
1094  }
std::vector< std::shared_ptr< StreamSchedule > > streamSchedules_
Definition: Schedule.h:248
void edm::Schedule::closeOutputFiles ( )

Definition at line 899 of file Schedule.cc.

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

899  {
900  using std::placeholders::_1;
902  }
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:16
AllOutputModuleCommunicators all_output_communicators_
Definition: Schedule.h:252
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 1031 of file Schedule.cc.

References endpathsAreActive_, and streamSchedules_.

1031  {
1032  endpathsAreActive_ = active;
1033  for(auto const & s : streamSchedules_) {
1034  s->enableEndPaths(active);
1035  }
1036  }
std::vector< std::shared_ptr< StreamSchedule > > streamSchedules_
Definition: Schedule.h:248
volatile bool endpathsAreActive_
Definition: Schedule.h:259
void edm::Schedule::endJob ( ExceptionCollector collector)

Definition at line 551 of file Schedule.cc.

References edm::EventTimingSummary::cpuTime, edm::TriggerTimingReport::endPathSummaries, edm::TriggerReport::endPathSummaries, edm::TriggerTimingReport::eventSummary, edm::TriggerReport::eventSummary, getTriggerReport(), getTriggerTimingReport(), globalSchedule_, edm::ExceptionCollector::hasThrown(), bookConverter::max, mod(), AlCaHLTBitMon_ParallelJobs::p, edm::EventTimingSummary::realTime, 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.

551  {
552  globalSchedule_->endJob(collector);
553  if (collector.hasThrown()) {
554  return;
555  }
556 
557  if (wantSummary_ == false) return;
558  {
559  TriggerReport tr;
560  getTriggerReport(tr);
561 
562  // The trigger report (pass/fail etc.):
563 
564  LogVerbatim("FwkSummary") << "";
565  LogVerbatim("FwkSummary") << "TrigReport " << "---------- Event Summary ------------";
566  if(!tr.trigPathSummaries.empty()) {
567  LogVerbatim("FwkSummary") << "TrigReport"
568  << " Events total = " << tr.eventSummary.totalEvents
569  << " passed = " << tr.eventSummary.totalEventsPassed
570  << " failed = " << tr.eventSummary.totalEventsFailed
571  << "";
572  } else {
573  LogVerbatim("FwkSummary") << "TrigReport"
574  << " Events total = " << tr.eventSummary.totalEvents
575  << " passed = " << tr.eventSummary.totalEvents
576  << " failed = 0";
577  }
578 
579  LogVerbatim("FwkSummary") << "";
580  LogVerbatim("FwkSummary") << "TrigReport " << "---------- Path Summary ------------";
581  LogVerbatim("FwkSummary") << "TrigReport "
582  << std::right << std::setw(10) << "Trig Bit#" << " "
583  << std::right << std::setw(10) << "Run" << " "
584  << std::right << std::setw(10) << "Passed" << " "
585  << std::right << std::setw(10) << "Failed" << " "
586  << std::right << std::setw(10) << "Error" << " "
587  << "Name" << "";
588  for (auto const& p: tr.trigPathSummaries) {
589  LogVerbatim("FwkSummary") << "TrigReport "
590  << std::right << std::setw(5) << 1
591  << std::right << std::setw(5) << p.bitPosition << " "
592  << std::right << std::setw(10) << p.timesRun << " "
593  << std::right << std::setw(10) << p.timesPassed << " "
594  << std::right << std::setw(10) << p.timesFailed << " "
595  << std::right << std::setw(10) << p.timesExcept << " "
596  << p.name << "";
597  }
598 
599  /*
600  std::vector<int>::const_iterator epi = empty_trig_paths_.begin();
601  std::vector<int>::const_iterator epe = empty_trig_paths_.end();
602  std::vector<std::string>::const_iterator epn = empty_trig_path_names_.begin();
603  for (; epi != epe; ++epi, ++epn) {
604 
605  LogVerbatim("FwkSummary") << "TrigReport "
606  << std::right << std::setw(5) << 1
607  << std::right << std::setw(5) << *epi << " "
608  << std::right << std::setw(10) << totalEvents() << " "
609  << std::right << std::setw(10) << totalEvents() << " "
610  << std::right << std::setw(10) << 0 << " "
611  << std::right << std::setw(10) << 0 << " "
612  << *epn << "";
613  }
614  */
615 
616  LogVerbatim("FwkSummary") << "";
617  LogVerbatim("FwkSummary") << "TrigReport " << "-------End-Path Summary ------------";
618  LogVerbatim("FwkSummary") << "TrigReport "
619  << std::right << std::setw(10) << "Trig Bit#" << " "
620  << std::right << std::setw(10) << "Run" << " "
621  << std::right << std::setw(10) << "Passed" << " "
622  << std::right << std::setw(10) << "Failed" << " "
623  << std::right << std::setw(10) << "Error" << " "
624  << "Name" << "";
625  for (auto const& p: tr.endPathSummaries) {
626  LogVerbatim("FwkSummary") << "TrigReport "
627  << std::right << std::setw(5) << 0
628  << std::right << std::setw(5) << p.bitPosition << " "
629  << std::right << std::setw(10) << p.timesRun << " "
630  << std::right << std::setw(10) << p.timesPassed << " "
631  << std::right << std::setw(10) << p.timesFailed << " "
632  << std::right << std::setw(10) << p.timesExcept << " "
633  << p.name << "";
634  }
635 
636  for (auto const& p: tr.trigPathSummaries) {
637  LogVerbatim("FwkSummary") << "";
638  LogVerbatim("FwkSummary") << "TrigReport " << "---------- Modules in Path: " << p.name << " ------------";
639  LogVerbatim("FwkSummary") << "TrigReport "
640  << std::right << std::setw(10) << "Trig Bit#" << " "
641  << std::right << std::setw(10) << "Visited" << " "
642  << std::right << std::setw(10) << "Passed" << " "
643  << std::right << std::setw(10) << "Failed" << " "
644  << std::right << std::setw(10) << "Error" << " "
645  << "Name" << "";
646 
647  unsigned int bitpos = 0;
648  for (auto const& mod: p.moduleInPathSummaries) {
649  LogVerbatim("FwkSummary") << "TrigReport "
650  << std::right << std::setw(5) << 1
651  << std::right << std::setw(5) << bitpos << " "
652  << std::right << std::setw(10) << mod.timesVisited << " "
653  << std::right << std::setw(10) << mod.timesPassed << " "
654  << std::right << std::setw(10) << mod.timesFailed << " "
655  << std::right << std::setw(10) << mod.timesExcept << " "
656  << mod.moduleLabel << "";
657  ++bitpos;
658  }
659  }
660 
661  for (auto const& p: tr.endPathSummaries) {
662  LogVerbatim("FwkSummary") << "";
663  LogVerbatim("FwkSummary") << "TrigReport " << "------ Modules in End-Path: " << p.name << " ------------";
664  LogVerbatim("FwkSummary") << "TrigReport "
665  << std::right << std::setw(10) << "Trig Bit#" << " "
666  << std::right << std::setw(10) << "Visited" << " "
667  << std::right << std::setw(10) << "Passed" << " "
668  << std::right << std::setw(10) << "Failed" << " "
669  << std::right << std::setw(10) << "Error" << " "
670  << "Name" << "";
671 
672  unsigned int bitpos=0;
673  for (auto const& mod: p.moduleInPathSummaries) {
674  LogVerbatim("FwkSummary") << "TrigReport "
675  << std::right << std::setw(5) << 0
676  << std::right << std::setw(5) << bitpos << " "
677  << std::right << std::setw(10) << mod.timesVisited << " "
678  << std::right << std::setw(10) << mod.timesPassed << " "
679  << std::right << std::setw(10) << mod.timesFailed << " "
680  << std::right << std::setw(10) << mod.timesExcept << " "
681  << mod.moduleLabel << "";
682  ++bitpos;
683  }
684  }
685 
686  LogVerbatim("FwkSummary") << "";
687  LogVerbatim("FwkSummary") << "TrigReport " << "---------- Module Summary ------------";
688  LogVerbatim("FwkSummary") << "TrigReport "
689  << std::right << std::setw(10) << "Visited" << " "
690  << std::right << std::setw(10) << "Run" << " "
691  << std::right << std::setw(10) << "Passed" << " "
692  << std::right << std::setw(10) << "Failed" << " "
693  << std::right << std::setw(10) << "Error" << " "
694  << "Name" << "";
695  for (auto const& worker : tr.workerSummaries) {
696  LogVerbatim("FwkSummary") << "TrigReport "
697  << std::right << std::setw(10) << worker.timesVisited << " "
698  << std::right << std::setw(10) << worker.timesRun << " "
699  << std::right << std::setw(10) << worker.timesPassed << " "
700  << std::right << std::setw(10) << worker.timesFailed << " "
701  << std::right << std::setw(10) << worker.timesExcept << " "
702  << worker.moduleLabel << "";
703  }
704  LogVerbatim("FwkSummary") << "";
705  }
706  // The timing report (CPU and Real Time):
707  TriggerTimingReport tr;
709 
710  const int totalEvents = std::max(1, tr.eventSummary.totalEvents);
711 
712  LogVerbatim("FwkSummary") << "TimeReport " << "---------- Event Summary ---[sec]----";
713  LogVerbatim("FwkSummary") << "TimeReport"
714  << std::setprecision(6) << std::fixed
715  << " CPU/event = " << tr.eventSummary.cpuTime/totalEvents
716  << " Real/event = " << tr.eventSummary.realTime/totalEvents
717  << "";
718 
719  LogVerbatim("FwkSummary") << "";
720  LogVerbatim("FwkSummary") << "TimeReport " << "---------- Path Summary ---[sec]----";
721  LogVerbatim("FwkSummary") << "TimeReport "
722  << std::right << std::setw(22) << "per event "
723  << std::right << std::setw(22) << "per path-run "
724  << "";
725  LogVerbatim("FwkSummary") << "TimeReport "
726  << std::right << std::setw(10) << "CPU" << " "
727  << std::right << std::setw(10) << "Real" << " "
728  << std::right << std::setw(10) << "CPU" << " "
729  << std::right << std::setw(10) << "Real" << " "
730  << "Name" << "";
731  for (auto const& p: tr.trigPathSummaries) {
732  const int timesRun = std::max(1, p.timesRun);
733  LogVerbatim("FwkSummary") << "TimeReport "
734  << std::setprecision(6) << std::fixed
735  << std::right << std::setw(10) << p.cpuTime/totalEvents << " "
736  << std::right << std::setw(10) << p.realTime/totalEvents << " "
737  << std::right << std::setw(10) << p.cpuTime/timesRun << " "
738  << std::right << std::setw(10) << p.realTime/timesRun << " "
739  << p.name << "";
740  }
741  LogVerbatim("FwkSummary") << "TimeReport "
742  << std::right << std::setw(10) << "CPU" << " "
743  << std::right << std::setw(10) << "Real" << " "
744  << std::right << std::setw(10) << "CPU" << " "
745  << std::right << std::setw(10) << "Real" << " "
746  << "Name" << "";
747  LogVerbatim("FwkSummary") << "TimeReport "
748  << std::right << std::setw(22) << "per event "
749  << std::right << std::setw(22) << "per path-run "
750  << "";
751 
752  LogVerbatim("FwkSummary") << "";
753  LogVerbatim("FwkSummary") << "TimeReport " << "-------End-Path Summary ---[sec]----";
754  LogVerbatim("FwkSummary") << "TimeReport "
755  << std::right << std::setw(22) << "per event "
756  << std::right << std::setw(22) << "per endpath-run "
757  << "";
758  LogVerbatim("FwkSummary") << "TimeReport "
759  << std::right << std::setw(10) << "CPU" << " "
760  << std::right << std::setw(10) << "Real" << " "
761  << std::right << std::setw(10) << "CPU" << " "
762  << std::right << std::setw(10) << "Real" << " "
763  << "Name" << "";
764  for (auto const& p: tr.endPathSummaries) {
765  const int timesRun = std::max(1, p.timesRun);
766 
767  LogVerbatim("FwkSummary") << "TimeReport "
768  << std::setprecision(6) << std::fixed
769  << std::right << std::setw(10) << p.cpuTime/totalEvents << " "
770  << std::right << std::setw(10) << p.realTime/totalEvents << " "
771  << std::right << std::setw(10) << p.cpuTime/timesRun << " "
772  << std::right << std::setw(10) << p.realTime/timesRun << " "
773  << p.name << "";
774  }
775  LogVerbatim("FwkSummary") << "TimeReport "
776  << std::right << std::setw(10) << "CPU" << " "
777  << std::right << std::setw(10) << "Real" << " "
778  << std::right << std::setw(10) << "CPU" << " "
779  << std::right << std::setw(10) << "Real" << " "
780  << "Name" << "";
781  LogVerbatim("FwkSummary") << "TimeReport "
782  << std::right << std::setw(22) << "per event "
783  << std::right << std::setw(22) << "per endpath-run "
784  << "";
785 
786  for (auto const& p: tr.trigPathSummaries) {
787  LogVerbatim("FwkSummary") << "";
788  LogVerbatim("FwkSummary") << "TimeReport " << "---------- Modules in Path: " << p.name << " ---[sec]----";
789  LogVerbatim("FwkSummary") << "TimeReport "
790  << std::right << std::setw(22) << "per event "
791  << std::right << std::setw(22) << "per module-visit "
792  << "";
793  LogVerbatim("FwkSummary") << "TimeReport "
794  << std::right << std::setw(10) << "CPU" << " "
795  << std::right << std::setw(10) << "Real" << " "
796  << std::right << std::setw(10) << "CPU" << " "
797  << std::right << std::setw(10) << "Real" << " "
798  << "Name" << "";
799  for (auto const& mod: p.moduleInPathSummaries) {
800  LogVerbatim("FwkSummary") << "TimeReport "
801  << std::setprecision(6) << std::fixed
802  << std::right << std::setw(10) << mod.cpuTime/totalEvents << " "
803  << std::right << std::setw(10) << mod.realTime/totalEvents << " "
804  << std::right << std::setw(10) << mod.cpuTime/std::max(1, mod.timesVisited) << " "
805  << std::right << std::setw(10) << mod.realTime/std::max(1, mod.timesVisited) << " "
806  << mod.moduleLabel << "";
807  }
808  }
809  LogVerbatim("FwkSummary") << "TimeReport "
810  << std::right << std::setw(10) << "CPU" << " "
811  << std::right << std::setw(10) << "Real" << " "
812  << std::right << std::setw(10) << "CPU" << " "
813  << std::right << std::setw(10) << "Real" << " "
814  << "Name" << "";
815  LogVerbatim("FwkSummary") << "TimeReport "
816  << std::right << std::setw(22) << "per event "
817  << std::right << std::setw(22) << "per module-visit "
818  << "";
819 
820  for (auto const& p: tr.endPathSummaries) {
821  LogVerbatim("FwkSummary") << "";
822  LogVerbatim("FwkSummary") << "TimeReport " << "------ Modules in End-Path: " << p.name << " ---[sec]----";
823  LogVerbatim("FwkSummary") << "TimeReport "
824  << std::right << std::setw(22) << "per event "
825  << std::right << std::setw(22) << "per module-visit "
826  << "";
827  LogVerbatim("FwkSummary") << "TimeReport "
828  << std::right << std::setw(10) << "CPU" << " "
829  << std::right << std::setw(10) << "Real" << " "
830  << std::right << std::setw(10) << "CPU" << " "
831  << std::right << std::setw(10) << "Real" << " "
832  << "Name" << "";
833  for (auto const& mod: p.moduleInPathSummaries) {
834  LogVerbatim("FwkSummary") << "TimeReport "
835  << std::setprecision(6) << std::fixed
836  << std::right << std::setw(10) << mod.cpuTime/totalEvents << " "
837  << std::right << std::setw(10) << mod.realTime/totalEvents << " "
838  << std::right << std::setw(10) << mod.cpuTime/std::max(1, mod.timesVisited) << " "
839  << std::right << std::setw(10) << mod.realTime/std::max(1, mod.timesVisited) << " "
840  << mod.moduleLabel << "";
841  }
842  }
843  LogVerbatim("FwkSummary") << "TimeReport "
844  << std::right << std::setw(10) << "CPU" << " "
845  << std::right << std::setw(10) << "Real" << " "
846  << std::right << std::setw(10) << "CPU" << " "
847  << std::right << std::setw(10) << "Real" << " "
848  << "Name" << "";
849  LogVerbatim("FwkSummary") << "TimeReport "
850  << std::right << std::setw(22) << "per event "
851  << std::right << std::setw(22) << "per module-visit "
852  << "";
853 
854  LogVerbatim("FwkSummary") << "";
855  LogVerbatim("FwkSummary") << "TimeReport " << "---------- Module Summary ---[sec]----";
856  LogVerbatim("FwkSummary") << "TimeReport "
857  << std::right << std::setw(22) << "per event "
858  << std::right << std::setw(22) << "per module-run "
859  << std::right << std::setw(22) << "per module-visit "
860  << "";
861  LogVerbatim("FwkSummary") << "TimeReport "
862  << std::right << std::setw(10) << "CPU" << " "
863  << std::right << std::setw(10) << "Real" << " "
864  << std::right << std::setw(10) << "CPU" << " "
865  << std::right << std::setw(10) << "Real" << " "
866  << std::right << std::setw(10) << "CPU" << " "
867  << std::right << std::setw(10) << "Real" << " "
868  << "Name" << "";
869  for (auto const& worker : tr.workerSummaries) {
870  LogVerbatim("FwkSummary") << "TimeReport "
871  << std::setprecision(6) << std::fixed
872  << std::right << std::setw(10) << worker.cpuTime/totalEvents << " "
873  << std::right << std::setw(10) << worker.realTime/totalEvents << " "
874  << std::right << std::setw(10) << worker.cpuTime/std::max(1, worker.timesRun) << " "
875  << std::right << std::setw(10) << worker.realTime/std::max(1, worker.timesRun) << " "
876  << std::right << std::setw(10) << worker.cpuTime/std::max(1, worker.timesVisited) << " "
877  << std::right << std::setw(10) << worker.realTime/std::max(1, worker.timesVisited) << " "
878  << worker.moduleLabel << "";
879  }
880  LogVerbatim("FwkSummary") << "TimeReport "
881  << std::right << std::setw(10) << "CPU" << " "
882  << std::right << std::setw(10) << "Real" << " "
883  << std::right << std::setw(10) << "CPU" << " "
884  << std::right << std::setw(10) << "Real" << " "
885  << std::right << std::setw(10) << "CPU" << " "
886  << std::right << std::setw(10) << "Real" << " "
887  << "Name" << "";
888  LogVerbatim("FwkSummary") << "TimeReport "
889  << std::right << std::setw(22) << "per event "
890  << std::right << std::setw(22) << "per module-run "
891  << std::right << std::setw(22) << "per module-visit "
892  << "";
893 
894  LogVerbatim("FwkSummary") << "";
895  LogVerbatim("FwkSummary") << "T---Report end!" << "";
896  LogVerbatim("FwkSummary") << "";
897  }
int totalEvents() const
Definition: Schedule.cc:1062
void getTriggerReport(TriggerReport &rep) const
Definition: Schedule.cc:1044
bool wantSummary_
Definition: Schedule.h:257
std::unique_ptr< GlobalSchedule > globalSchedule_
Definition: Schedule.h:250
T mod(const T &a, const T &b)
Definition: ecalDccMap.h:4
void getTriggerTimingReport(TriggerTimingReport &rep) const
Definition: Schedule.cc:1054
bool edm::Schedule::endPathsEnabled ( ) const

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

Definition at line 1039 of file Schedule.cc.

References endpathsAreActive_.

1039  {
1040  return endpathsAreActive_;
1041  }
volatile bool endpathsAreActive_
Definition: Schedule.h:259
void edm::Schedule::endStream ( unsigned int  iStreamID)

Definition at line 953 of file Schedule.cc.

References streamSchedules_.

953  {
954  assert(iStreamID<streamSchedules_.size());
955  streamSchedules_[iStreamID]->endStream();
956  }
std::vector< std::shared_ptr< StreamSchedule > > streamSchedules_
Definition: Schedule.h:248
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 1003 of file Schedule.cc.

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

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

1003  {
1004  std::vector<ModuleDescription const*> result;
1005  result.reserve(allWorkers().size());
1006 
1007  for (auto const& worker : allWorkers()) {
1008  ModuleDescription const* p = worker->descPtr();
1009  result.push_back(p);
1010  }
1011  return result;
1012  }
AllWorkers const & allWorkers() const
returns the collection of pointers to workers
Definition: Schedule.cc:1015
tuple result
Definition: query.py:137
tuple size
Write out results.
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 1044 of file Schedule.cc.

References edm::TriggerReport::eventSummary, streamSchedules_, edm::EventSummary::totalEvents, edm::EventSummary::totalEventsFailed, and edm::EventSummary::totalEventsPassed.

Referenced by endJob().

1044  {
1045  rep.eventSummary.totalEvents = 0;
1046  rep.eventSummary.totalEventsPassed = 0;
1047  rep.eventSummary.totalEventsFailed = 0;
1048  for(auto& s: streamSchedules_) {
1049  s->getTriggerReport(rep);
1050  }
1051  }
string rep
Definition: cuy.py:1188
std::vector< std::shared_ptr< StreamSchedule > > streamSchedules_
Definition: Schedule.h:248
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 1054 of file Schedule.cc.

References edm::EventTimingSummary::cpuTime, edm::TriggerTimingReport::eventSummary, edm::EventTimingSummary::realTime, summaryTimeKeeper_, and edm::EventTimingSummary::totalEvents.

Referenced by endJob().

1054  {
1055  rep.eventSummary.totalEvents = 0;
1056  rep.eventSummary.cpuTime = 0.;
1057  rep.eventSummary.realTime = 0.;
1058  summaryTimeKeeper_->fillTriggerTimingReport(rep);
1059  }
string rep
Definition: cuy.py:1188
std::unique_ptr< SystemTimeKeeper > summaryTimeKeeper_
Definition: Schedule.h:255
void edm::Schedule::limitOutput ( ParameterSet const &  proc_pset,
BranchIDLists const &  branchIDLists 
)
private

Definition at line 496 of file Schedule.cc.

References all_output_communicators_, EnergyCorrector::c, edm::errors::Configuration, edm::ParameterSet::empty(), edm::hlt::Exception, edm::ParameterSet::getParameterNamesForType(), edm::ParameterSet::getParameterSetNames(), edm::ParameterSet::getUntrackedParameter(), edm::ParameterSet::getUntrackedParameterSet(), edm::OutputModuleDescription::maxEvents_, convertSQLitetoXML_cfg::output, edm::search_all(), and AlCaHLTBitMon_QueryRunRegistry::string.

496  {
497  std::string const output("output");
498 
499  ParameterSet const& maxEventsPSet = proc_pset.getUntrackedParameterSet("maxEvents", ParameterSet());
500  int maxEventSpecs = 0;
501  int maxEventsOut = -1;
502  ParameterSet const* vMaxEventsOut = 0;
503  std::vector<std::string> intNamesE = maxEventsPSet.getParameterNamesForType<int>(false);
504  if (search_all(intNamesE, output)) {
505  maxEventsOut = maxEventsPSet.getUntrackedParameter<int>(output);
506  ++maxEventSpecs;
507  }
508  std::vector<std::string> psetNamesE;
509  maxEventsPSet.getParameterSetNames(psetNamesE, false);
510  if (search_all(psetNamesE, output)) {
511  vMaxEventsOut = &maxEventsPSet.getUntrackedParameterSet(output);
512  ++maxEventSpecs;
513  }
514 
515  if (maxEventSpecs > 1) {
517  "\nAt most, one form of 'output' may appear in the 'maxEvents' parameter set";
518  }
519 
520  for (auto c : all_output_communicators_) {
521  OutputModuleDescription desc(branchIDLists, maxEventsOut);
522  if (vMaxEventsOut != 0 && !vMaxEventsOut->empty()) {
523  std::string const& moduleLabel = c->description().moduleLabel();
524  try {
525  desc.maxEvents_ = vMaxEventsOut->getUntrackedParameter<int>(moduleLabel);
526  } catch (Exception const&) {
528  "\nNo entry in 'maxEvents' for output module label '" << moduleLabel << "'.\n";
529  }
530  }
531  c->configure(desc);
532  }
533  }
bool search_all(ForwardSequence const &s, Datum const &d)
Definition: Algorithms.h:46
AllOutputModuleCommunicators all_output_communicators_
Definition: Schedule.h:252
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 1025 of file Schedule.cc.

References streamSchedules_.

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

1026  {
1027  streamSchedules_[0]->modulesInPath(iPathLabel,oLabelsToFill);
1028  }
std::vector< std::shared_ptr< StreamSchedule > > streamSchedules_
Definition: Schedule.h:248
void edm::Schedule::openNewOutputFilesIfNeeded ( )

Definition at line 904 of file Schedule.cc.

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

904  {
905  using std::placeholders::_1;
907  }
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:16
virtual void openNewFileIfNeeded()=0
AllOutputModuleCommunicators all_output_communicators_
Definition: Schedule.h:252
void edm::Schedule::openOutputFiles ( FileBlock fb)

Definition at line 909 of file Schedule.cc.

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

909  {
910  using std::placeholders::_1;
912  }
virtual void openFile(FileBlock const &fb)=0
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:16
AllOutputModuleCommunicators all_output_communicators_
Definition: Schedule.h:252
void edm::Schedule::postForkReacquireResources ( unsigned int  iChildIndex,
unsigned int  iNumberOfChildren 
)

Definition at line 962 of file Schedule.cc.

References allWorkers(), edm::for_all(), and edm::Worker::postForkReacquireResources().

962  {
963  using std::placeholders::_1;
964  for_all(allWorkers(), std::bind(&Worker::postForkReacquireResources, _1, iChildIndex, iNumberOfChildren));
965  }
AllWorkers const & allWorkers() const
returns the collection of pointers to workers
Definition: Schedule.cc:1015
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:16
void postForkReacquireResources(unsigned int iChildIndex, unsigned int iNumberOfChildren)
Definition: Worker.h:88
void edm::Schedule::preForkReleaseResources ( )

Definition at line 958 of file Schedule.cc.

References allWorkers(), edm::for_all(), and edm::Worker::preForkReleaseResources().

958  {
959  using std::placeholders::_1;
961  }
AllWorkers const & allWorkers() const
returns the collection of pointers to workers
Definition: Schedule.cc:1015
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:16
void preForkReleaseResources()
Definition: Worker.h:87
template<typename T >
void edm::Schedule::processOneEvent ( unsigned int  iStreamID,
typename T::MyPrincipal &  principal,
EventSetup const &  eventSetup,
bool  cleaningUpAfterException = false 
)

Definition at line 264 of file Schedule.h.

References streamSchedules_.

267  {
268  assert(iStreamID<streamSchedules_.size());
269  streamSchedules_[iStreamID]->processOneEvent<T>(ep,es,cleaningUpAfterException);
270  }
std::vector< std::shared_ptr< StreamSchedule > > streamSchedules_
Definition: Schedule.h:248
long double T
template<typename T >
void edm::Schedule::processOneGlobal ( typename T::MyPrincipal &  principal,
EventSetup const &  eventSetup,
bool  cleaningUpAfterException = false 
)

Definition at line 282 of file Schedule.h.

References globalSchedule_.

284  {
285  globalSchedule_->processOneGlobal<T>(ep,es,cleaningUpAfterException);
286  }
std::unique_ptr< GlobalSchedule > globalSchedule_
Definition: Schedule.h:250
long double T
template<typename T >
void edm::Schedule::processOneStream ( unsigned int  iStreamID,
typename T::MyPrincipal &  principal,
EventSetup const &  eventSetup,
bool  cleaningUpAfterException = false 
)

Definition at line 273 of file Schedule.h.

References streamSchedules_.

276  {
277  assert(iStreamID<streamSchedules_.size());
278  streamSchedules_[iStreamID]->processOneStream<T>(ep,es,cleaningUpAfterException);
279  }
std::vector< std::shared_ptr< StreamSchedule > > streamSchedules_
Definition: Schedule.h:248
long double T
void edm::Schedule::respondToCloseInputFile ( FileBlock const &  fb)

Definition at line 937 of file Schedule.cc.

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

937  {
938  using std::placeholders::_1;
939  for_all(allWorkers(), std::bind(&Worker::respondToCloseInputFile, _1, std::cref(fb)));
940  }
AllWorkers const & allWorkers() const
returns the collection of pointers to workers
Definition: Schedule.cc:1015
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:16
void respondToCloseInputFile(FileBlock const &fb)
Definition: Worker.h:85
void edm::Schedule::respondToOpenInputFile ( FileBlock const &  fb)

Definition at line 932 of file Schedule.cc.

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

932  {
933  using std::placeholders::_1;
934  for_all(allWorkers(), std::bind(&Worker::respondToOpenInputFile, _1, std::cref(fb)));
935  }
AllWorkers const & allWorkers() const
returns the collection of pointers to workers
Definition: Schedule.cc:1015
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:16
void respondToOpenInputFile(FileBlock const &fb)
Definition: Worker.h:84
bool edm::Schedule::shouldWeCloseOutput ( ) const

Definition at line 924 of file Schedule.cc.

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

924  {
925  using std::placeholders::_1;
926  // Return true iff at least one output module returns true.
927  return (std::find_if (all_output_communicators_.begin(), all_output_communicators_.end(),
929  != all_output_communicators_.end());
930  }
virtual bool shouldWeCloseFile() const =0
AllOutputModuleCommunicators all_output_communicators_
Definition: Schedule.h:252
bool edm::Schedule::terminate ( void  ) const

Return whether each output module has reached its maximum count.

Definition at line 535 of file Schedule.cc.

References all_output_communicators_, and EnergyCorrector::c.

535  {
536  if (all_output_communicators_.empty()) {
537  return false;
538  }
539  for (auto c : all_output_communicators_) {
540  if (!c->limitReached()) {
541  // Found an output module that has not reached output event count.
542  return false;
543  }
544  }
545  LogInfo("SuccessfulTermination")
546  << "The job is terminating successfully because each output module\n"
547  << "has reached its configured limit.\n";
548  return true;
549  }
AllOutputModuleCommunicators all_output_communicators_
Definition: Schedule.h:252
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 1062 of file Schedule.cc.

References streamSchedules_.

Referenced by endJob().

1062  {
1063  int returnValue = 0;
1064  for(auto& s: streamSchedules_) {
1065  returnValue += s->totalEvents();
1066  }
1067  return returnValue;
1068  }
std::vector< std::shared_ptr< StreamSchedule > > streamSchedules_
Definition: Schedule.h:248
int edm::Schedule::totalEventsFailed ( ) const

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

Definition at line 1080 of file Schedule.cc.

References streamSchedules_.

1080  {
1081  int returnValue = 0;
1082  for(auto& s: streamSchedules_) {
1083  returnValue += s->totalEventsFailed();
1084  }
1085  return returnValue;
1086  }
std::vector< std::shared_ptr< StreamSchedule > > streamSchedules_
Definition: Schedule.h:248
int edm::Schedule::totalEventsPassed ( ) const

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

Definition at line 1071 of file Schedule.cc.

References streamSchedules_.

1071  {
1072  int returnValue = 0;
1073  for(auto& s: streamSchedules_) {
1074  returnValue += s->totalEventsPassed();
1075  }
1076  return returnValue;
1077  }
std::vector< std::shared_ptr< StreamSchedule > > streamSchedules_
Definition: Schedule.h:248
void edm::Schedule::writeLumi ( LuminosityBlockPrincipal const &  lbp,
ProcessContext const *  processContext 
)

Definition at line 919 of file Schedule.cc.

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

919  {
920  using std::placeholders::_1;
921  for_all(all_output_communicators_, std::bind(&OutputModuleCommunicator::writeLumi, _1, std::cref(lbp), processContext));
922  }
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:16
virtual void writeLumi(LuminosityBlockPrincipal const &lbp, ProcessContext const *)=0
AllOutputModuleCommunicators all_output_communicators_
Definition: Schedule.h:252
void edm::Schedule::writeRun ( RunPrincipal const &  rp,
ProcessContext const *  processContext 
)

Definition at line 914 of file Schedule.cc.

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

914  {
915  using std::placeholders::_1;
916  for_all(all_output_communicators_, std::bind(&OutputModuleCommunicator::writeRun, _1, std::cref(rp), processContext));
917  }
virtual void writeRun(RunPrincipal const &rp, ProcessContext const *)=0
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:16
AllOutputModuleCommunicators all_output_communicators_
Definition: Schedule.h:252

Member Data Documentation

AllOutputModuleCommunicators edm::Schedule::all_output_communicators_
private
volatile bool edm::Schedule::endpathsAreActive_
private

Definition at line 259 of file Schedule.h.

Referenced by enableEndPaths(), and endPathsEnabled().

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

Definition at line 250 of file Schedule.h.

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

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

Definition at line 247 of file Schedule.h.

Referenced by changeModule().

PreallocationConfiguration edm::Schedule::preallocConfig_
private

Definition at line 253 of file Schedule.h.

Referenced by changeModule().

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

Definition at line 246 of file Schedule.h.

std::vector<std::shared_ptr<StreamSchedule> > edm::Schedule::streamSchedules_
private
std::unique_ptr<SystemTimeKeeper> edm::Schedule::summaryTimeKeeper_
private

Definition at line 255 of file Schedule.h.

Referenced by getTriggerTimingReport().

bool edm::Schedule::wantSummary_
private

Definition at line 257 of file Schedule.h.

Referenced by endJob().