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, 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 110 of file Schedule.h.

Member Typedef Documentation

Definition at line 115 of file Schedule.h.

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

Definition at line 114 of file Schedule.h.

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

Definition at line 112 of file Schedule.h.

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

Definition at line 113 of file Schedule.h.

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

Definition at line 117 of file Schedule.h.

Constructor & Destructor Documentation

edm::Schedule::Schedule ( ParameterSet proc_pset,
service::TriggerNamesService tns,
ProductRegistry pregistry,
BranchIDListHelper branchIDListHelper,
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 357 of file Schedule.cc.

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

Member Function Documentation

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

returns the collection of pointers to workers

Definition at line 1008 of file Schedule.cc.

References globalSchedule_.

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

1008  {
1009  return globalSchedule_->allWorkers();
1010  }
std::unique_ptr< GlobalSchedule > globalSchedule_
Definition: Schedule.h:248
void edm::Schedule::availablePaths ( std::vector< std::string > &  oLabelsToFill) const

adds to oLabelsToFill the labels for all paths in the process

Definition at line 1013 of file Schedule.cc.

References streamSchedules_.

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

1013  {
1014  streamSchedules_[0]->availablePaths(oLabelsToFill);
1015  }
std::vector< std::shared_ptr< StreamSchedule > > streamSchedules_
Definition: Schedule.h:246
void edm::Schedule::beginJob ( ProductRegistry const &  iRegistry)

Definition at line 935 of file Schedule.cc.

References checkForCorrectness(), and globalSchedule_.

935  {
937 
938  globalSchedule_->beginJob(iRegistry);
939  }
void checkForCorrectness() const
Check that the schedule is actually runable.
Definition: Schedule.cc:1277
std::unique_ptr< GlobalSchedule > globalSchedule_
Definition: Schedule.h:248
void edm::Schedule::beginStream ( unsigned int  iStreamID)

Definition at line 941 of file Schedule.cc.

References streamSchedules_.

941  {
942  assert(iStreamID<streamSchedules_.size());
943  streamSchedules_[iStreamID]->beginStream();
944  }
std::vector< std::shared_ptr< StreamSchedule > > streamSchedules_
Definition: Schedule.h:246
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 960 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().

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

Check that the schedule is actually runable.

Definition at line 1277 of file Schedule.cc.

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

Referenced by beginJob().

1278  {
1279  //Need to lookup names to ids quickly
1280  std::map<std::string,unsigned int> moduleNamesToIndex;
1281  for(auto worker: allWorkers()) {
1282  moduleNamesToIndex.insert( std::make_pair(worker->description().moduleLabel(),
1283  worker->description().id()));
1284  }
1285 
1286  //If a module to module dependency comes from a path, remember which path
1287  EdgeToPathMap edgeToPathMap;
1288 
1289  //determine the path dependencies
1290  std::vector<std::string> pathNames;
1291  {
1292  streamSchedules_[0]->availablePaths(pathNames);
1293 
1294  std::vector<std::string> moduleNames;
1295  std::vector<std::string> reducedModuleNames;
1296  unsigned int pathIndex=0;
1297  for(auto const& path: pathNames) {
1298  moduleNames.clear();
1299  reducedModuleNames.clear();
1300  std::set<std::string> alreadySeenNames;
1301 
1302  streamSchedules_[0]->modulesInPath(path,moduleNames);
1303  std::string lastModuleName;
1304  unsigned int lastModuleIndex;
1305  for(auto const& name: moduleNames) {
1306  auto found = alreadySeenNames.insert(name);
1307  if(found.second) {
1308  //first time for this path
1309  unsigned int moduleIndex = moduleNamesToIndex[name];
1310  if(not lastModuleName.empty() ) {
1311  edgeToPathMap[std::make_pair(moduleIndex,lastModuleIndex)].push_back(pathIndex);
1312  }
1313  lastModuleName = name;
1314  lastModuleIndex = moduleIndex;
1315  }
1316  }
1317  ++pathIndex;
1318  }
1319  }
1320  {
1321  std::vector<const char*> dependentModules;
1322  //determine the data dependencies
1323  for(auto const& worker: allWorkers()) {
1324  dependentModules.clear();
1325  //NOTE: what about aliases?
1326  worker->modulesDependentUpon(dependentModules);
1327  auto found = moduleNamesToIndex.find(worker->description().moduleLabel());
1328  if (found == moduleNamesToIndex.end()) {
1329  //The module was from a previous process
1330  continue;
1331  }
1332  unsigned int moduleIndex = found->second;
1333  for(auto name: dependentModules) {
1334  edgeToPathMap[std::make_pair(moduleIndex, moduleNamesToIndex[name])].push_back(std::numeric_limits<unsigned int>::max());
1335  }
1336  }
1337  }
1338  //Now use boost graph library to find cycles in the dependencies
1339  std::vector<SimpleEdge> outList;
1340  outList.reserve(edgeToPathMap.size());
1341  for(auto const& edgeInfo: edgeToPathMap) {
1342  outList.push_back(edgeInfo.first);
1343  }
1344 
1345  Graph g(outList.begin(),outList.end(), moduleNamesToIndex.size());
1346 
1347  cycle_detector detector(edgeToPathMap,pathNames,moduleNamesToIndex);
1348  boost::depth_first_search(g,boost::visitor(detector));
1349  }
AllWorkers const & allWorkers() const
returns the collection of pointers to workers
Definition: Schedule.cc:1008
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.
const T & max(const T &a, const T &b)
std::vector< std::shared_ptr< StreamSchedule > > streamSchedules_
Definition: Schedule.h:246
void edm::Schedule::clearCounters ( )

Clear all the counters in the trigger report.

Definition at line 1083 of file Schedule.cc.

References streamSchedules_.

1083  {
1084  for(auto const& s: streamSchedules_) {
1085  s->clearCounters();
1086  }
1087  }
std::vector< std::shared_ptr< StreamSchedule > > streamSchedules_
Definition: Schedule.h:246
void edm::Schedule::closeOutputFiles ( )

Definition at line 892 of file Schedule.cc.

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

892  {
893  using std::placeholders::_1;
895  }
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:16
AllOutputModuleCommunicators all_output_communicators_
Definition: Schedule.h:250
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 1024 of file Schedule.cc.

References endpathsAreActive_, and streamSchedules_.

1024  {
1025  endpathsAreActive_ = active;
1026  for(auto const & s : streamSchedules_) {
1027  s->enableEndPaths(active);
1028  }
1029  }
std::vector< std::shared_ptr< StreamSchedule > > streamSchedules_
Definition: Schedule.h:246
volatile bool endpathsAreActive_
Definition: Schedule.h:257
void edm::Schedule::endJob ( ExceptionCollector collector)

Definition at line 544 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(), 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.

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

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

Definition at line 1032 of file Schedule.cc.

References endpathsAreActive_.

1032  {
1033  return endpathsAreActive_;
1034  }
volatile bool endpathsAreActive_
Definition: Schedule.h:257
void edm::Schedule::endStream ( unsigned int  iStreamID)

Definition at line 946 of file Schedule.cc.

References streamSchedules_.

946  {
947  assert(iStreamID<streamSchedules_.size());
948  streamSchedules_[iStreamID]->endStream();
949  }
std::vector< std::shared_ptr< StreamSchedule > > streamSchedules_
Definition: Schedule.h:246
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 996 of file Schedule.cc.

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

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

996  {
997  std::vector<ModuleDescription const*> result;
998  result.reserve(allWorkers().size());
999 
1000  for (auto const& worker : allWorkers()) {
1001  ModuleDescription const* p = worker->descPtr();
1002  result.push_back(p);
1003  }
1004  return result;
1005  }
AllWorkers const & allWorkers() const
returns the collection of pointers to workers
Definition: Schedule.cc:1008
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 1037 of file Schedule.cc.

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

Referenced by endJob().

1037  {
1038  rep.eventSummary.totalEvents = 0;
1039  rep.eventSummary.totalEventsPassed = 0;
1040  rep.eventSummary.totalEventsFailed = 0;
1041  for(auto& s: streamSchedules_) {
1042  s->getTriggerReport(rep);
1043  }
1044  }
string rep
Definition: cuy.py:1188
std::vector< std::shared_ptr< StreamSchedule > > streamSchedules_
Definition: Schedule.h:246
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 1047 of file Schedule.cc.

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

Referenced by endJob().

1047  {
1048  rep.eventSummary.totalEvents = 0;
1049  rep.eventSummary.cpuTime = 0.;
1050  rep.eventSummary.realTime = 0.;
1051  summaryTimeKeeper_->fillTriggerTimingReport(rep);
1052  }
string rep
Definition: cuy.py:1188
std::unique_ptr< SystemTimeKeeper > summaryTimeKeeper_
Definition: Schedule.h:253
void edm::Schedule::limitOutput ( ParameterSet const &  proc_pset,
BranchIDLists const &  branchIDLists 
)
private

Definition at line 489 of file Schedule.cc.

References all_output_communicators_, trackerHits::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.

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

References streamSchedules_.

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

1019  {
1020  streamSchedules_[0]->modulesInPath(iPathLabel,oLabelsToFill);
1021  }
std::vector< std::shared_ptr< StreamSchedule > > streamSchedules_
Definition: Schedule.h:246
void edm::Schedule::openNewOutputFilesIfNeeded ( )

Definition at line 897 of file Schedule.cc.

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

897  {
898  using std::placeholders::_1;
900  }
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:250
void edm::Schedule::openOutputFiles ( FileBlock fb)

Definition at line 902 of file Schedule.cc.

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

902  {
903  using std::placeholders::_1;
905  }
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:250
void edm::Schedule::postForkReacquireResources ( unsigned int  iChildIndex,
unsigned int  iNumberOfChildren 
)

Definition at line 955 of file Schedule.cc.

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

955  {
956  using std::placeholders::_1;
957  for_all(allWorkers(), std::bind(&Worker::postForkReacquireResources, _1, iChildIndex, iNumberOfChildren));
958  }
AllWorkers const & allWorkers() const
returns the collection of pointers to workers
Definition: Schedule.cc:1008
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:86
void edm::Schedule::preForkReleaseResources ( )

Definition at line 951 of file Schedule.cc.

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

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

Definition at line 262 of file Schedule.h.

References streamSchedules_.

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

Definition at line 280 of file Schedule.h.

References globalSchedule_.

282  {
283  globalSchedule_->processOneGlobal<T>(ep,es,cleaningUpAfterException);
284  }
std::unique_ptr< GlobalSchedule > globalSchedule_
Definition: Schedule.h:248
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 271 of file Schedule.h.

References streamSchedules_.

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

Definition at line 930 of file Schedule.cc.

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

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

Definition at line 925 of file Schedule.cc.

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

925  {
926  using std::placeholders::_1;
927  for_all(allWorkers(), std::bind(&Worker::respondToOpenInputFile, _1, std::cref(fb)));
928  }
AllWorkers const & allWorkers() const
returns the collection of pointers to workers
Definition: Schedule.cc:1008
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:16
void respondToOpenInputFile(FileBlock const &fb)
Definition: Worker.h:82
bool edm::Schedule::shouldWeCloseOutput ( ) const

Definition at line 917 of file Schedule.cc.

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

917  {
918  using std::placeholders::_1;
919  // Return true iff at least one output module returns true.
920  return (std::find_if (all_output_communicators_.begin(), all_output_communicators_.end(),
922  != all_output_communicators_.end());
923  }
virtual bool shouldWeCloseFile() const =0
AllOutputModuleCommunicators all_output_communicators_
Definition: Schedule.h:250
bool edm::Schedule::terminate ( void  ) const

Return whether each output module has reached its maximum count.

Definition at line 528 of file Schedule.cc.

References all_output_communicators_, and trackerHits::c.

528  {
529  if (all_output_communicators_.empty()) {
530  return false;
531  }
532  for (auto c : all_output_communicators_) {
533  if (!c->limitReached()) {
534  // Found an output module that has not reached output event count.
535  return false;
536  }
537  }
538  LogInfo("SuccessfulTermination")
539  << "The job is terminating successfully because each output module\n"
540  << "has reached its configured limit.\n";
541  return true;
542  }
AllOutputModuleCommunicators all_output_communicators_
Definition: Schedule.h:250
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 1055 of file Schedule.cc.

References streamSchedules_.

Referenced by endJob().

1055  {
1056  int returnValue = 0;
1057  for(auto& s: streamSchedules_) {
1058  returnValue += s->totalEvents();
1059  }
1060  return returnValue;
1061  }
std::vector< std::shared_ptr< StreamSchedule > > streamSchedules_
Definition: Schedule.h:246
int edm::Schedule::totalEventsFailed ( ) const

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

Definition at line 1073 of file Schedule.cc.

References streamSchedules_.

1073  {
1074  int returnValue = 0;
1075  for(auto& s: streamSchedules_) {
1076  returnValue += s->totalEventsFailed();
1077  }
1078  return returnValue;
1079  }
std::vector< std::shared_ptr< StreamSchedule > > streamSchedules_
Definition: Schedule.h:246
int edm::Schedule::totalEventsPassed ( ) const

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

Definition at line 1064 of file Schedule.cc.

References streamSchedules_.

1064  {
1065  int returnValue = 0;
1066  for(auto& s: streamSchedules_) {
1067  returnValue += s->totalEventsPassed();
1068  }
1069  return returnValue;
1070  }
std::vector< std::shared_ptr< StreamSchedule > > streamSchedules_
Definition: Schedule.h:246
void edm::Schedule::writeLumi ( LuminosityBlockPrincipal const &  lbp,
ProcessContext const *  processContext 
)

Definition at line 912 of file Schedule.cc.

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

912  {
913  using std::placeholders::_1;
914  for_all(all_output_communicators_, std::bind(&OutputModuleCommunicator::writeLumi, _1, std::cref(lbp), processContext));
915  }
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:250
void edm::Schedule::writeRun ( RunPrincipal const &  rp,
ProcessContext const *  processContext 
)

Definition at line 907 of file Schedule.cc.

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

907  {
908  using std::placeholders::_1;
909  for_all(all_output_communicators_, std::bind(&OutputModuleCommunicator::writeRun, _1, std::cref(rp), processContext));
910  }
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:250

Member Data Documentation

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

Definition at line 257 of file Schedule.h.

Referenced by enableEndPaths(), and endPathsEnabled().

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

Definition at line 248 of file Schedule.h.

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

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

Definition at line 245 of file Schedule.h.

Referenced by changeModule().

PreallocationConfiguration edm::Schedule::preallocConfig_
private

Definition at line 251 of file Schedule.h.

Referenced by changeModule().

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

Definition at line 244 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 253 of file Schedule.h.

Referenced by getTriggerTimingReport().

bool edm::Schedule::wantSummary_
private

Definition at line 255 of file Schedule.h.

Referenced by endJob().