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)
 
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 956 of file Schedule.cc.

References globalSchedule_.

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

956  {
957  return globalSchedule_->allWorkers();
958  }
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 961 of file Schedule.cc.

References streamSchedules_.

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

961  {
962  streamSchedules_[0]->availablePaths(oLabelsToFill);
963  }
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:1227
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 
)

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_, moduleRegistry_, preallocConfig_, and streamSchedules_.

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

921  {
922  Worker* found = nullptr;
923  for (auto const& worker : allWorkers()) {
924  if (worker->description().moduleLabel() == iLabel) {
925  found = worker;
926  break;
927  }
928  }
929  if (nullptr == found) {
930  return false;
931  }
932 
933  auto newMod = moduleRegistry_->replaceModule(iLabel,iPSet,preallocConfig_);
934 
935  globalSchedule_->replaceModule(newMod,iLabel);
936 
937  for(auto s: streamSchedules_) {
938  s->replaceModule(newMod,iLabel);
939  }
940  return true;
941  }
AllWorkers const & allWorkers() const
returns the collection of pointers to workers
Definition: Schedule.cc:956
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 1227 of file Schedule.cc.

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

Referenced by beginJob().

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

References streamSchedules_.

1033  {
1034  for(auto const& s: streamSchedules_) {
1035  s->clearCounters();
1036  }
1037  }
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 972 of file Schedule.cc.

References endpathsAreActive_, and streamSchedules_.

972  {
973  endpathsAreActive_ = active;
974  for(auto const & s : streamSchedules_) {
975  s->enableEndPaths(active);
976  }
977  }
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:1005
void getTriggerReport(TriggerReport &rep) const
Definition: Schedule.cc:985
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:995
bool edm::Schedule::endPathsEnabled ( ) const

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

Definition at line 980 of file Schedule.cc.

References endpathsAreActive_.

980  {
981  return endpathsAreActive_;
982  }
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 944 of file Schedule.cc.

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

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

944  {
945  std::vector<ModuleDescription const*> result;
946  result.reserve(allWorkers().size());
947 
948  for (auto const& worker : allWorkers()) {
949  ModuleDescription const* p = worker->descPtr();
950  result.push_back(p);
951  }
952  return result;
953  }
AllWorkers const & allWorkers() const
returns the collection of pointers to workers
Definition: Schedule.cc:956
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 985 of file Schedule.cc.

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

Referenced by endJob().

985  {
986  rep.eventSummary.totalEvents = 0;
987  rep.eventSummary.totalEventsPassed = 0;
988  rep.eventSummary.totalEventsFailed = 0;
989  for(auto& s: streamSchedules_) {
990  s->getTriggerReport(rep);
991  }
992  }
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 995 of file Schedule.cc.

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

Referenced by endJob().

995  {
996  rep.eventSummary.totalEvents = 0;
997  rep.eventSummary.cpuTime = 0.;
998  rep.eventSummary.realTime = 0.;
999  for(auto& s: streamSchedules_) {
1000  s->getTriggerTimingReport(rep);
1001  }
1002  }
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 966 of file Schedule.cc.

References streamSchedules_.

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

967  {
968  streamSchedules_[0]->modulesInPath(iPathLabel,oLabelsToFill);
969  }
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:956
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:956
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:956
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:956
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 1005 of file Schedule.cc.

References streamSchedules_.

Referenced by endJob().

1005  {
1006  int returnValue = 0;
1007  for(auto& s: streamSchedules_) {
1008  returnValue += s->totalEvents();
1009  }
1010  return returnValue;
1011  }
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 1023 of file Schedule.cc.

References streamSchedules_.

1023  {
1024  int returnValue = 0;
1025  for(auto& s: streamSchedules_) {
1026  returnValue += s->totalEventsFailed();
1027  }
1028  return returnValue;
1029  }
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 1014 of file Schedule.cc.

References streamSchedules_.

1014  {
1015  int returnValue = 0;
1016  for(auto& s: streamSchedules_) {
1017  returnValue += s->totalEventsPassed();
1018  }
1019  return returnValue;
1020  }
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().