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
< boost::shared_ptr
< OutputModuleCommunicator > > 
AllOutputModuleCommunicators
 
typedef std::vector< Worker * > AllWorkers
 
typedef std::vector< std::string > vstring
 
typedef boost::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, boost::shared_ptr< ActivityRegistry > areg, boost::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_
 
boost::shared_ptr< ModuleRegistrymoduleRegistry_
 
PreallocationConfiguration preallocConfig_
 
std::shared_ptr
< TriggerResultInserter
resultsInserter_
 
std::vector< std::shared_ptr
< StreamSchedule > > 
streamSchedules_
 
bool wantSummary_
 

Detailed Description

Definition at line 109 of file Schedule.h.

Member Typedef Documentation

Definition at line 114 of file Schedule.h.

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

Definition at line 113 of file Schedule.h.

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

Definition at line 111 of file Schedule.h.

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

Definition at line 112 of file Schedule.h.

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

Definition at line 116 of file Schedule.h.

Constructor & Destructor Documentation

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

Definition at line 358 of file Schedule.cc.

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

Member Function Documentation

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

returns the collection of pointers to workers

Definition at line 968 of file Schedule.cc.

References globalSchedule_.

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

968  {
969  return globalSchedule_->allWorkers();
970  }
std::unique_ptr< GlobalSchedule > globalSchedule_
Definition: Schedule.h:247
void edm::Schedule::availablePaths ( std::vector< std::string > &  oLabelsToFill) const

adds to oLabelsToFill the labels for all paths in the process

Definition at line 973 of file Schedule.cc.

References streamSchedules_.

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

973  {
974  streamSchedules_[0]->availablePaths(oLabelsToFill);
975  }
std::vector< std::shared_ptr< StreamSchedule > > streamSchedules_
Definition: Schedule.h:245
void edm::Schedule::beginJob ( ProductRegistry const &  iRegistry)

Definition at line 897 of file Schedule.cc.

References checkForCorrectness(), and globalSchedule_.

897  {
899 
900  globalSchedule_->beginJob(iRegistry);
901  }
void checkForCorrectness() const
Check that the schedule is actually runable.
Definition: Schedule.cc:1239
std::unique_ptr< GlobalSchedule > globalSchedule_
Definition: Schedule.h:247
void edm::Schedule::beginStream ( unsigned int  iStreamID)

Definition at line 903 of file Schedule.cc.

References streamSchedules_.

903  {
904  assert(iStreamID<streamSchedules_.size());
905  streamSchedules_[iStreamID]->beginStream();
906  }
std::vector< std::shared_ptr< StreamSchedule > > streamSchedules_
Definition: Schedule.h:245
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 920 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().

922  {
923  Worker* found = nullptr;
924  for (auto const& worker : allWorkers()) {
925  if (worker->description().moduleLabel() == iLabel) {
926  found = worker;
927  break;
928  }
929  }
930  if (nullptr == found) {
931  return false;
932  }
933 
934  auto newMod = moduleRegistry_->replaceModule(iLabel,iPSet,preallocConfig_);
935 
936  globalSchedule_->replaceModule(newMod,iLabel);
937 
938  for(auto s: streamSchedules_) {
939  s->replaceModule(newMod,iLabel);
940  }
941 
942  {
943  //Need to updateLookup in order to make getByToken work
944  auto const runLookup = iRegistry.productLookup(InRun);
945  auto const lumiLookup = iRegistry.productLookup(InLumi);
946  auto const eventLookup = iRegistry.productLookup(InEvent);
947  found->updateLookup(InRun,*runLookup);
948  found->updateLookup(InLumi,*lumiLookup);
949  found->updateLookup(InEvent,*eventLookup);
950  }
951 
952  return true;
953  }
AllWorkers const & allWorkers() const
returns the collection of pointers to workers
Definition: Schedule.cc:968
boost::shared_ptr< ModuleRegistry > moduleRegistry_
Definition: Schedule.h:244
std::vector< std::shared_ptr< StreamSchedule > > streamSchedules_
Definition: Schedule.h:245
PreallocationConfiguration preallocConfig_
Definition: Schedule.h:250
std::unique_ptr< GlobalSchedule > globalSchedule_
Definition: Schedule.h:247
void edm::Schedule::checkForCorrectness ( ) const
private

Check that the schedule is actually runable.

Definition at line 1239 of file Schedule.cc.

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

Referenced by beginJob().

1240  {
1241  //Need to lookup names to ids quickly
1242  std::map<std::string,unsigned int> moduleNamesToIndex;
1243  for(auto worker: allWorkers()) {
1244  moduleNamesToIndex.insert( std::make_pair(worker->description().moduleLabel(),
1245  worker->description().id()));
1246  }
1247 
1248  //If a module to module dependency comes from a path, remember which path
1249  EdgeToPathMap edgeToPathMap;
1250 
1251  //determine the path dependencies
1252  std::vector<std::string> pathNames;
1253  {
1254  streamSchedules_[0]->availablePaths(pathNames);
1255 
1256  std::vector<std::string> moduleNames;
1257  std::vector<std::string> reducedModuleNames;
1258  unsigned int pathIndex=0;
1259  for(auto const& path: pathNames) {
1260  moduleNames.clear();
1261  reducedModuleNames.clear();
1262  std::set<std::string> alreadySeenNames;
1263 
1264  streamSchedules_[0]->modulesInPath(path,moduleNames);
1265  std::string lastModuleName;
1266  unsigned int lastModuleIndex;
1267  for(auto const& name: moduleNames) {
1268  auto found = alreadySeenNames.insert(name);
1269  if(found.second) {
1270  //first time for this path
1271  unsigned int moduleIndex = moduleNamesToIndex[name];
1272  if(not lastModuleName.empty() ) {
1273  edgeToPathMap[std::make_pair(moduleIndex,lastModuleIndex)].push_back(pathIndex);
1274  }
1275  lastModuleName = name;
1276  lastModuleIndex = moduleIndex;
1277  }
1278  }
1279  ++pathIndex;
1280  }
1281  }
1282  {
1283  std::vector<const char*> dependentModules;
1284  //determine the data dependencies
1285  for(auto const& worker: allWorkers()) {
1286  dependentModules.clear();
1287  //NOTE: what about aliases?
1288  worker->modulesDependentUpon(dependentModules);
1289  auto found = moduleNamesToIndex.find(worker->description().moduleLabel());
1290  if (found == moduleNamesToIndex.end()) {
1291  //The module was from a previous process
1292  continue;
1293  }
1294  unsigned int moduleIndex = found->second;
1295  for(auto name: dependentModules) {
1296  edgeToPathMap[std::make_pair(moduleIndex, moduleNamesToIndex[name])].push_back(std::numeric_limits<unsigned int>::max());
1297  }
1298  }
1299  }
1300  //Now use boost graph library to find cycles in the dependencies
1301  std::vector<SimpleEdge> outList;
1302  outList.reserve(edgeToPathMap.size());
1303  for(auto const& edgeInfo: edgeToPathMap) {
1304  outList.push_back(edgeInfo.first);
1305  }
1306 
1307  Graph g(outList.begin(),outList.end(), moduleNamesToIndex.size());
1308 
1309  cycle_detector detector(edgeToPathMap,pathNames,moduleNamesToIndex);
1310  boost::depth_first_search(g,boost::visitor(detector));
1311  }
AllWorkers const & allWorkers() const
returns the collection of pointers to workers
Definition: Schedule.cc:968
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:245
void edm::Schedule::clearCounters ( )

Clear all the counters in the trigger report.

Definition at line 1045 of file Schedule.cc.

References streamSchedules_.

1045  {
1046  for(auto const& s: streamSchedules_) {
1047  s->clearCounters();
1048  }
1049  }
std::vector< std::shared_ptr< StreamSchedule > > streamSchedules_
Definition: Schedule.h:245
void edm::Schedule::closeOutputFiles ( )

Definition at line 862 of file Schedule.cc.

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

862  {
864  }
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:16
AllOutputModuleCommunicators all_output_communicators_
Definition: Schedule.h:249
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 984 of file Schedule.cc.

References endpathsAreActive_, and streamSchedules_.

984  {
985  endpathsAreActive_ = active;
986  for(auto const & s : streamSchedules_) {
987  s->enableEndPaths(active);
988  }
989  }
std::vector< std::shared_ptr< StreamSchedule > > streamSchedules_
Definition: Schedule.h:245
volatile bool endpathsAreActive_
Definition: Schedule.h:255
void edm::Schedule::endJob ( ExceptionCollector collector)

Definition at line 514 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.

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

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

Definition at line 992 of file Schedule.cc.

References endpathsAreActive_.

992  {
993  return endpathsAreActive_;
994  }
volatile bool endpathsAreActive_
Definition: Schedule.h:255
void edm::Schedule::endStream ( unsigned int  iStreamID)

Definition at line 908 of file Schedule.cc.

References streamSchedules_.

908  {
909  assert(iStreamID<streamSchedules_.size());
910  streamSchedules_[iStreamID]->endStream();
911  }
std::vector< std::shared_ptr< StreamSchedule > > streamSchedules_
Definition: Schedule.h:245
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 956 of file Schedule.cc.

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

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

956  {
957  std::vector<ModuleDescription const*> result;
958  result.reserve(allWorkers().size());
959 
960  for (auto const& worker : allWorkers()) {
961  ModuleDescription const* p = worker->descPtr();
962  result.push_back(p);
963  }
964  return result;
965  }
AllWorkers const & allWorkers() const
returns the collection of pointers to workers
Definition: Schedule.cc:968
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 997 of file Schedule.cc.

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

Referenced by endJob().

997  {
998  rep.eventSummary.totalEvents = 0;
999  rep.eventSummary.totalEventsPassed = 0;
1000  rep.eventSummary.totalEventsFailed = 0;
1001  for(auto& s: streamSchedules_) {
1002  s->getTriggerReport(rep);
1003  }
1004  }
string rep
Definition: cuy.py:1188
std::vector< std::shared_ptr< StreamSchedule > > streamSchedules_
Definition: Schedule.h:245
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 1007 of file Schedule.cc.

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

Referenced by endJob().

1007  {
1008  rep.eventSummary.totalEvents = 0;
1009  rep.eventSummary.cpuTime = 0.;
1010  rep.eventSummary.realTime = 0.;
1011  for(auto& s: streamSchedules_) {
1012  s->getTriggerTimingReport(rep);
1013  }
1014  }
string rep
Definition: cuy.py:1188
std::vector< std::shared_ptr< StreamSchedule > > streamSchedules_
Definition: Schedule.h:245
void edm::Schedule::limitOutput ( ParameterSet const &  proc_pset,
BranchIDLists const &  branchIDLists 
)
private

Definition at line 459 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.

459  {
460  std::string const output("output");
461 
462  ParameterSet const& maxEventsPSet = proc_pset.getUntrackedParameterSet("maxEvents", ParameterSet());
463  int maxEventSpecs = 0;
464  int maxEventsOut = -1;
465  ParameterSet const* vMaxEventsOut = 0;
466  std::vector<std::string> intNamesE = maxEventsPSet.getParameterNamesForType<int>(false);
467  if (search_all(intNamesE, output)) {
468  maxEventsOut = maxEventsPSet.getUntrackedParameter<int>(output);
469  ++maxEventSpecs;
470  }
471  std::vector<std::string> psetNamesE;
472  maxEventsPSet.getParameterSetNames(psetNamesE, false);
473  if (search_all(psetNamesE, output)) {
474  vMaxEventsOut = &maxEventsPSet.getUntrackedParameterSet(output);
475  ++maxEventSpecs;
476  }
477 
478  if (maxEventSpecs > 1) {
480  "\nAt most, one form of 'output' may appear in the 'maxEvents' parameter set";
481  }
482 
483  for (auto c : all_output_communicators_) {
484  OutputModuleDescription desc(branchIDLists, maxEventsOut);
485  if (vMaxEventsOut != 0 && !vMaxEventsOut->empty()) {
486  std::string const& moduleLabel = c->description().moduleLabel();
487  try {
488  desc.maxEvents_ = vMaxEventsOut->getUntrackedParameter<int>(moduleLabel);
489  } catch (Exception const&) {
491  "\nNo entry in 'maxEvents' for output module label '" << moduleLabel << "'.\n";
492  }
493  }
494  c->configure(desc);
495  }
496  }
bool search_all(ForwardSequence const &s, Datum const &d)
Definition: Algorithms.h:46
AllOutputModuleCommunicators all_output_communicators_
Definition: Schedule.h:249
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 978 of file Schedule.cc.

References streamSchedules_.

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

979  {
980  streamSchedules_[0]->modulesInPath(iPathLabel,oLabelsToFill);
981  }
std::vector< std::shared_ptr< StreamSchedule > > streamSchedules_
Definition: Schedule.h:245
void edm::Schedule::openNewOutputFilesIfNeeded ( )

Definition at line 866 of file Schedule.cc.

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

866  {
868  }
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:249
void edm::Schedule::openOutputFiles ( FileBlock fb)

Definition at line 870 of file Schedule.cc.

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

870  {
872  }
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:249
void edm::Schedule::postForkReacquireResources ( unsigned int  iChildIndex,
unsigned int  iNumberOfChildren 
)

Definition at line 916 of file Schedule.cc.

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

916  {
917  for_all(allWorkers(), boost::bind(&Worker::postForkReacquireResources, _1, iChildIndex, iNumberOfChildren));
918  }
AllWorkers const & allWorkers() const
returns the collection of pointers to workers
Definition: Schedule.cc:968
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:90
void edm::Schedule::preForkReleaseResources ( )

Definition at line 913 of file Schedule.cc.

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

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

Definition at line 260 of file Schedule.h.

References streamSchedules_.

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

Definition at line 278 of file Schedule.h.

References globalSchedule_.

280  {
281  globalSchedule_->processOneGlobal<T>(ep,es,cleaningUpAfterException);
282  }
std::unique_ptr< GlobalSchedule > globalSchedule_
Definition: Schedule.h:247
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 269 of file Schedule.h.

References streamSchedules_.

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

Definition at line 893 of file Schedule.cc.

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

893  {
894  for_all(allWorkers(), boost::bind(&Worker::respondToCloseInputFile, _1, boost::cref(fb)));
895  }
AllWorkers const & allWorkers() const
returns the collection of pointers to workers
Definition: Schedule.cc:968
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:16
void respondToCloseInputFile(FileBlock const &fb)
Definition: Worker.h:87
void edm::Schedule::respondToOpenInputFile ( FileBlock const &  fb)

Definition at line 889 of file Schedule.cc.

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

889  {
890  for_all(allWorkers(), boost::bind(&Worker::respondToOpenInputFile, _1, boost::cref(fb)));
891  }
AllWorkers const & allWorkers() const
returns the collection of pointers to workers
Definition: Schedule.cc:968
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:16
void respondToOpenInputFile(FileBlock const &fb)
Definition: Worker.h:86
bool edm::Schedule::shouldWeCloseOutput ( ) const

Definition at line 882 of file Schedule.cc.

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

882  {
883  // Return true iff at least one output module returns true.
884  return (std::find_if (all_output_communicators_.begin(), all_output_communicators_.end(),
886  != all_output_communicators_.end());
887  }
virtual bool shouldWeCloseFile() const =0
AllOutputModuleCommunicators all_output_communicators_
Definition: Schedule.h:249
bool edm::Schedule::terminate ( void  ) const

Return whether each output module has reached its maximum count.

Definition at line 498 of file Schedule.cc.

References all_output_communicators_, and trackerHits::c.

498  {
499  if (all_output_communicators_.empty()) {
500  return false;
501  }
502  for (auto c : all_output_communicators_) {
503  if (!c->limitReached()) {
504  // Found an output module that has not reached output event count.
505  return false;
506  }
507  }
508  LogInfo("SuccessfulTermination")
509  << "The job is terminating successfully because each output module\n"
510  << "has reached its configured limit.\n";
511  return true;
512  }
AllOutputModuleCommunicators all_output_communicators_
Definition: Schedule.h:249
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 1017 of file Schedule.cc.

References streamSchedules_.

Referenced by endJob().

1017  {
1018  int returnValue = 0;
1019  for(auto& s: streamSchedules_) {
1020  returnValue += s->totalEvents();
1021  }
1022  return returnValue;
1023  }
std::vector< std::shared_ptr< StreamSchedule > > streamSchedules_
Definition: Schedule.h:245
int edm::Schedule::totalEventsFailed ( ) const

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

Definition at line 1035 of file Schedule.cc.

References streamSchedules_.

1035  {
1036  int returnValue = 0;
1037  for(auto& s: streamSchedules_) {
1038  returnValue += s->totalEventsFailed();
1039  }
1040  return returnValue;
1041  }
std::vector< std::shared_ptr< StreamSchedule > > streamSchedules_
Definition: Schedule.h:245
int edm::Schedule::totalEventsPassed ( ) const

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

Definition at line 1026 of file Schedule.cc.

References streamSchedules_.

1026  {
1027  int returnValue = 0;
1028  for(auto& s: streamSchedules_) {
1029  returnValue += s->totalEventsPassed();
1030  }
1031  return returnValue;
1032  }
std::vector< std::shared_ptr< StreamSchedule > > streamSchedules_
Definition: Schedule.h:245
void edm::Schedule::writeLumi ( LuminosityBlockPrincipal const &  lbp,
ProcessContext const *  processContext 
)

Definition at line 878 of file Schedule.cc.

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

878  {
879  for_all(all_output_communicators_, boost::bind(&OutputModuleCommunicator::writeLumi, _1, boost::cref(lbp), processContext));
880  }
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:249
void edm::Schedule::writeRun ( RunPrincipal const &  rp,
ProcessContext const *  processContext 
)

Definition at line 874 of file Schedule.cc.

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

874  {
875  for_all(all_output_communicators_, boost::bind(&OutputModuleCommunicator::writeRun, _1, boost::cref(rp), processContext));
876  }
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:249

Member Data Documentation

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

Definition at line 255 of file Schedule.h.

Referenced by enableEndPaths(), and endPathsEnabled().

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

Definition at line 247 of file Schedule.h.

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

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

Definition at line 244 of file Schedule.h.

Referenced by changeModule().

PreallocationConfiguration edm::Schedule::preallocConfig_
private

Definition at line 250 of file Schedule.h.

Referenced by changeModule().

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

Definition at line 243 of file Schedule.h.

std::vector<std::shared_ptr<StreamSchedule> > edm::Schedule::streamSchedules_
private
bool edm::Schedule::wantSummary_
private

Definition at line 253 of file Schedule.h.

Referenced by endJob().