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
< OutputWorker * > 
AllOutputWorkers
 
typedef std::vector< Worker * > AllWorkers
 
typedef std::vector< PathNonTrigPaths
 
typedef std::vector< WorkerInPathPathWorkers
 
enum  State { Ready = 0, Running, Latched }
 
typedef std::vector< PathTrigPaths
 
typedef boost::shared_ptr
< HLTGlobalStatus
TrigResPtr
 
typedef std::vector< std::string > vstring
 
typedef boost::shared_ptr< WorkerWorkerPtr
 
typedef std::vector< Worker * > Workers
 

Public Member Functions

void availablePaths (std::vector< std::string > &oLabelsToFill) const
 adds to oLabelsToFill the labels for all paths in the process More...
 
void beginJob ()
 
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 ()
 
bool endPathsEnabled () const
 
std::vector< ModuleDescription
const * > 
getAllModuleDescriptions () const
 
void getTriggerReport (TriggerReport &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 processOneOccurrence (typename T::MyPrincipal &principal, EventSetup const &eventSetup)
 
void respondToCloseInputFile (FileBlock const &fb)
 
void respondToCloseOutputFiles (FileBlock const &fb)
 
void respondToOpenInputFile (FileBlock const &fb)
 
void respondToOpenOutputFiles (FileBlock const &fb)
 
 Schedule (ParameterSet &proc_pset, service::TriggerNamesService &tns, ProductRegistry &pregistry, ActionTable const &actions, boost::shared_ptr< ActivityRegistry > areg, boost::shared_ptr< ProcessConfiguration > processConfiguration)
 
bool shouldWeCloseOutput () const
 
bool const terminate () const
 Return whether each output module has reached its maximum count. More...
 
std::pair< double, double > timeCpuReal () const
 
int totalEvents () const
 
int totalEventsFailed () const
 
int totalEventsPassed () const
 
void writeLumi (LuminosityBlockPrincipal const &lbp)
 
void writeRun (RunPrincipal const &rp)
 

Private Member Functions

void addToAllWorkers (Worker *w)
 
void fillEndPath (ParameterSet &proc_pset, ProductRegistry &preg, boost::shared_ptr< ProcessConfiguration const > processConfiguration, int bitpos, std::string const &name)
 
void fillTrigPath (ParameterSet &proc_pset, ProductRegistry &preg, boost::shared_ptr< ProcessConfiguration const > processConfiguration, int bitpos, std::string const &name, TrigResPtr)
 
void fillWorkers (ParameterSet &proc_pset, ProductRegistry &preg, boost::shared_ptr< ProcessConfiguration const > processConfiguration, std::string const &name, bool ignoreFilters, PathWorkers &out)
 
void limitOutput (ParameterSet const &proc_pset)
 
void reportSkipped (EventPrincipal const &ep) const
 
void reportSkipped (LuminosityBlockPrincipal const &) const
 
void reportSkipped (RunPrincipal const &) const
 
void resetAll ()
 
template<typename T >
void runEndPaths (typename T::MyPrincipal &, EventSetup const &)
 
template<typename T >
bool runTriggerPaths (typename T::MyPrincipal &, EventSetup const &)
 
void setupOnDemandSystem (EventPrincipal &principal, EventSetup const &es)
 
AllWorkers::const_iterator workersBegin () const
 
AllWorkers::iterator workersBegin ()
 
AllWorkers::const_iterator workersEnd () const
 
AllWorkers::iterator workersEnd ()
 

Private Attributes

ActionTable const * act_table_
 
boost::shared_ptr
< ActivityRegistry
actReg_
 
AllOutputWorkers all_output_workers_
 
AllWorkers all_workers_
 
vstring end_path_name_list_
 
TrigPaths end_paths_
 
TrigResPtr endpath_results_
 
volatile bool endpathsAreActive_
 
TrigResPtr results_
 
WorkerPtr results_inserter_
 
State state_
 
RunStopwatch::StopwatchPointer stopwatch_
 
int total_events_
 
int total_passed_
 
vstring trig_name_list_
 
TrigPaths trig_paths_
 
boost::shared_ptr
< UnscheduledCallProducer
unscheduled_
 
bool wantSummary_
 
WorkerRegistry worker_reg_
 

Detailed Description

Definition at line 93 of file Schedule.h.

Member Typedef Documentation

Definition at line 101 of file Schedule.h.

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

Definition at line 100 of file Schedule.h.

typedef std::vector<Path> edm::Schedule::NonTrigPaths

Definition at line 97 of file Schedule.h.

Definition at line 105 of file Schedule.h.

typedef std::vector<Path> edm::Schedule::TrigPaths

Definition at line 96 of file Schedule.h.

typedef boost::shared_ptr<HLTGlobalStatus> edm::Schedule::TrigResPtr

Definition at line 98 of file Schedule.h.

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

Definition at line 95 of file Schedule.h.

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

Definition at line 99 of file Schedule.h.

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

Definition at line 103 of file Schedule.h.

Member Enumeration Documentation

Enumerator
Ready 
Running 
Latched 

Definition at line 114 of file Schedule.h.

Constructor & Destructor Documentation

edm::Schedule::Schedule ( ParameterSet proc_pset,
service::TriggerNamesService tns,
ProductRegistry pregistry,
ActionTable const &  actions,
boost::shared_ptr< ActivityRegistry areg,
boost::shared_ptr< ProcessConfiguration processConfiguration 
)

Definition at line 140 of file Schedule.cc.

References act_table_, actReg_, addToAllWorkers(), all_output_workers_, all_workers_, end_path_name_list_, endpath_results_, edm::detail::ThreadSafeRegistry< KEY, T, E >::extra(), fillEndPath(), edm::fillProductRegistryTransients(), fillTrigPath(), edm::ParameterSet::getParameter(), edm::ParameterSet::getPSetForUpdate(), edm::ParameterSet::getUntrackedParameter(), edm::ParameterSet::getUntrackedParameterSet(), edm::WorkerRegistry::getWorker(), i, edm::ParameterSet::id(), edm::InEvent, edm::detail::ThreadSafeRegistry< KEY, T, E >::insertMapped(), edm::detail::ThreadSafeRegistry< KEY, T, E >::instance(), limitOutput(), geometryDiff::opts, edm::ProductRegistry::productList(), edm::ParameterSet::registerIt(), results_, results_inserter_, edm::ProductRegistry::setFrozen(), trig_name_list_, unscheduled_, edm::BranchIDListHelper::updateRegistries(), worker_reg_, workersBegin(), and workersEnd().

145  :
146  worker_reg_(areg),
148  actReg_(areg),
149  state_(Ready),
150  trig_name_list_(tns.getTrigPaths()),
151  end_path_name_list_(tns.getEndPaths()),
152  results_(new HLTGlobalStatus(trig_name_list_.size())),
153  endpath_results_(), // delay!
155  all_workers_(),
157  trig_paths_(),
158  end_paths_(),
159  wantSummary_(tns.wantSummary()),
160  total_events_(),
161  total_passed_(),
162  stopwatch_(wantSummary_? new RunStopwatch::StopwatchPointer::element_type : static_cast<RunStopwatch::StopwatchPointer::element_type*> (0)),
163  unscheduled_(new UnscheduledCallProducer),
164  endpathsAreActive_(true) {
165 
166  ParameterSet const& opts = proc_pset.getUntrackedParameterSet("options", ParameterSet());
167  bool hasPath = false;
168 
169  int trig_bitpos = 0;
170  for (vstring::const_iterator i = trig_name_list_.begin(),
171  e = trig_name_list_.end();
172  i != e;
173  ++i) {
174  fillTrigPath(proc_pset, preg, processConfiguration, trig_bitpos, *i, results_);
175  ++trig_bitpos;
176  hasPath = true;
177  }
178 
179  if (hasPath) {
180  // the results inserter stands alone
181  results_inserter_ = makeInserter(proc_pset,
182  preg,
183  actions, actReg_, processConfiguration, results_);
185  }
186 
187  TrigResPtr epptr(new HLTGlobalStatus(end_path_name_list_.size()));
188  endpath_results_ = epptr;
189 
190  // fill normal endpaths
191  vstring::iterator eib(end_path_name_list_.begin()), eie(end_path_name_list_.end());
192  for (int bitpos = 0; eib != eie; ++eib, ++bitpos) {
193  fillEndPath(proc_pset, preg, processConfiguration, bitpos, *eib);
194  }
195 
196  //See if all modules were used
197  std::set<std::string> usedWorkerLabels;
198  for (AllWorkers::iterator itWorker = workersBegin();
199  itWorker != workersEnd();
200  ++itWorker) {
201  usedWorkerLabels.insert((*itWorker)->description().moduleLabel());
202  }
203  std::vector<std::string> modulesInConfig(proc_pset.getParameter<std::vector<std::string> >("@all_modules"));
204  std::set<std::string> modulesInConfigSet(modulesInConfig.begin(), modulesInConfig.end());
205  std::vector<std::string> unusedLabels;
206  set_difference(modulesInConfigSet.begin(), modulesInConfigSet.end(),
207  usedWorkerLabels.begin(), usedWorkerLabels.end(),
208  back_inserter(unusedLabels));
209  //does the configuration say we should allow on demand?
210  bool allowUnscheduled = opts.getUntrackedParameter<bool>("allowUnscheduled", false);
211  std::set<std::string> unscheduledLabels;
212  if (!unusedLabels.empty()) {
213  //Need to
214  // 1) create worker
215  // 2) if it is a WorkerT<EDProducer>, add it to our list
216  // 3) hand list to our delayed reader
217  std::vector<std::string> shouldBeUsedLabels;
218 
219  for (std::vector<std::string>::iterator itLabel = unusedLabels.begin(), itLabelEnd = unusedLabels.end();
220  itLabel != itLabelEnd;
221  ++itLabel) {
222  if (allowUnscheduled) {
223  bool isTracked;
224  ParameterSet* modulePSet(proc_pset.getPSetForUpdate(*itLabel, isTracked));
225  assert(isTracked);
226  assert(modulePSet != 0);
227  WorkerParams params(proc_pset, modulePSet, preg,
228  processConfiguration, *act_table_);
229  Worker* newWorker(worker_reg_.getWorker(params, *itLabel));
230  if (dynamic_cast<WorkerT<EDProducer>*>(newWorker) ||
231  dynamic_cast<WorkerT<EDFilter>*>(newWorker)) {
232  unscheduledLabels.insert(*itLabel);
233  unscheduled_->addWorker(newWorker);
234  //add to list so it gets reset each new event
235  addToAllWorkers(newWorker);
236  } else {
237  //not a producer so should be marked as not used
238  shouldBeUsedLabels.push_back(*itLabel);
239  }
240  } else {
241  //everthing is marked are unused so no 'on demand' allowed
242  shouldBeUsedLabels.push_back(*itLabel);
243  }
244  }
245  if (!shouldBeUsedLabels.empty()) {
246  std::ostringstream unusedStream;
247  unusedStream << "'" << shouldBeUsedLabels.front() << "'";
248  for (std::vector<std::string>::iterator itLabel = shouldBeUsedLabels.begin() + 1,
249  itLabelEnd = shouldBeUsedLabels.end();
250  itLabel != itLabelEnd;
251  ++itLabel) {
252  unusedStream << ",'" << *itLabel << "'";
253  }
254  LogInfo("path")
255  << "The following module labels are not assigned to any path:\n"
256  << unusedStream.str()
257  << "\n";
258  }
259  }
260  if (!unscheduledLabels.empty()) {
261  for (ProductRegistry::ProductList::const_iterator it = preg.productList().begin(),
262  itEnd = preg.productList().end();
263  it != itEnd;
264  ++it) {
265  if (it->second.produced() &&
266  it->second.branchType() == InEvent &&
267  unscheduledLabels.end() != unscheduledLabels.find(it->second.moduleLabel())) {
268  it->second.setOnDemand();
269  }
270  }
271  }
272 
273  proc_pset.registerIt();
274  pset::Registry::instance()->extra().setID(proc_pset.id());
275  processConfiguration->setParameterSetID(proc_pset.id());
276 
277  // This is used for a little sanity-check to make sure no code
278  // modifications alter the number of workers at a later date.
279  size_t all_workers_count = all_workers_.size();
280 
281  for (AllWorkers::iterator i = all_workers_.begin(), e = all_workers_.end();
282  i != e;
283  ++i) {
284 
285  // All the workers should be in all_workers_ by this point. Thus
286  // we can now fill all_output_workers_.
287  OutputWorker* ow = dynamic_cast<OutputWorker*>(*i);
288  if (ow) all_output_workers_.push_back(ow);
289  }
290 
291  // Now that the output workers are filled in, set any output limits.
292  limitOutput(proc_pset);
293 
294  loadMissingDictionaries();
295  preg.setFrozen();
296 
297  // Sanity check: make sure nobody has added a worker after we've
298  // already relied on all_workers_ being full.
299  assert (all_workers_count == all_workers_.size());
300 
301  ProcessConfigurationRegistry::instance()->insertMapped(*processConfiguration);
303  fillProductRegistryTransients(*processConfiguration, preg);
304  } // Schedule::Schedule
State state_
Definition: Schedule.h:268
int i
Definition: DBlmapReader.cc:9
roAction_t actions[nactions]
Definition: GenABIO.cc:200
void limitOutput(ParameterSet const &proc_pset)
Definition: Schedule.cc:307
AllOutputWorkers all_output_workers_
Definition: Schedule.h:277
WorkerPtr results_inserter_
Definition: Schedule.h:275
WorkerRegistry worker_reg_
Definition: Schedule.h:264
TrigPaths trig_paths_
Definition: Schedule.h:278
TrigResPtr endpath_results_
Definition: Schedule.h:273
int total_passed_
Definition: Schedule.h:283
bool insertMapped(value_type const &v)
boost::shared_ptr< HLTGlobalStatus > TrigResPtr
Definition: Schedule.h:98
void fillProductRegistryTransients(std::vector< ProcessConfiguration > const &pcVec, ProductRegistry const &preg, bool okToRegister=false)
void fillEndPath(ParameterSet &proc_pset, ProductRegistry &preg, boost::shared_ptr< ProcessConfiguration const > processConfiguration, int bitpos, std::string const &name)
Definition: Schedule.cc:449
RunStopwatch::StopwatchPointer stopwatch_
Definition: Schedule.h:284
vstring trig_name_list_
Definition: Schedule.h:269
ActionTable const * act_table_
Definition: Schedule.h:265
AllWorkers::const_iterator workersBegin() const
Definition: Schedule.h:217
volatile bool endpathsAreActive_
Definition: Schedule.h:288
TrigResPtr results_
Definition: Schedule.h:272
int total_events_
Definition: Schedule.h:282
TrigPaths end_paths_
Definition: Schedule.h:279
bool wantSummary_
Definition: Schedule.h:281
static void updateRegistries(ProductRegistry const &reg)
Worker * getWorker(WorkerParams const &p, std::string const &moduleLabel)
Retrieve the particular instance of the worker.
static ThreadSafeRegistry * instance()
vstring end_path_name_list_
Definition: Schedule.h:270
AllWorkers::const_iterator workersEnd() const
Definition: Schedule.h:221
void addToAllWorkers(Worker *w)
Definition: Schedule.cc:1025
boost::shared_ptr< ActivityRegistry > actReg_
Definition: Schedule.h:266
AllWorkers all_workers_
Definition: Schedule.h:276
void fillTrigPath(ParameterSet &proc_pset, ProductRegistry &preg, boost::shared_ptr< ProcessConfiguration const > processConfiguration, int bitpos, std::string const &name, TrigResPtr)
Definition: Schedule.cc:425
boost::shared_ptr< UnscheduledCallProducer > unscheduled_
Definition: Schedule.h:286

Member Function Documentation

void edm::Schedule::addToAllWorkers ( Worker w)
private

Definition at line 1025 of file Schedule.cc.

References all_workers_, edm::search_all(), edm::Worker::useStopwatch(), and wantSummary_.

Referenced by fillEndPath(), fillTrigPath(), and Schedule().

1025  {
1026  if (!search_all(all_workers_, w)) {
1027  if (wantSummary_) {
1028  w->useStopwatch();
1029  }
1030  all_workers_.push_back(w);
1031  }
1032  }
bool search_all(ForwardSequence const &s, Datum const &d)
Definition: Algorithms.h:46
bool wantSummary_
Definition: Schedule.h:281
AllWorkers all_workers_
Definition: Schedule.h:276
void edm::Schedule::availablePaths ( std::vector< std::string > &  oLabelsToFill) const

adds to oLabelsToFill the labels for all paths in the process

Definition at line 916 of file Schedule.cc.

References edm::Path::name(), and trig_paths_.

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

916  {
917  oLabelsToFill.reserve(trig_paths_.size());
918  std::transform(trig_paths_.begin(),
919  trig_paths_.end(),
920  std::back_inserter(oLabelsToFill),
921  boost::bind(&Path::name, _1));
922  }
TrigPaths trig_paths_
Definition: Schedule.h:278
std::string const & name() const
Definition: Path.h:48
void edm::Schedule::beginJob ( void  )

Definition at line 869 of file Schedule.cc.

References all_workers_, edm::Worker::beginJob(), and edm::for_all().

869  {
870  for_all(all_workers_, boost::bind(&Worker::beginJob, _1));
871  }
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:16
void beginJob()
Definition: Worker.cc:66
AllWorkers all_workers_
Definition: Schedule.h:276
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 880 of file Schedule.cc.

References all_workers_, edm::Worker::beginJob(), SurfaceDeformationFactory::create(), edm::Worker::description(), newFWLiteAna::found, reco::get(), and edm::ModuleDescription::moduleName().

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

881  {
882  Worker* found = 0;
883  for (AllWorkers::const_iterator it=all_workers_.begin(), itEnd=all_workers_.end();
884  it != itEnd; ++it) {
885  if ((*it)->description().moduleLabel() == iLabel) {
886  found = *it;
887  break;
888  }
889  }
890  if (0 == found) {
891  return false;
892  }
893 
894  std::auto_ptr<Maker> wm(MakerPluginFactory::get()->create(found->description().moduleName()));
895  wm->swapModule(found, iPSet);
896  found->beginJob();
897  return true;
898  }
SurfaceDeformation * create(int type, const std::vector< double > &params)
T get(const Candidate &c)
Definition: component.h:56
AllWorkers all_workers_
Definition: Schedule.h:276
void edm::Schedule::clearCounters ( )

Clear all the counters in the trigger report.

Definition at line 1010 of file Schedule.cc.

References all_workers_, edm::Path::clearCounters(), edm::Worker::clearCounters(), end_paths_, edm::for_all(), total_events_, total_passed_, and trig_paths_.

1010  {
1012  for_all(trig_paths_, boost::bind(&Path::clearCounters, _1));
1013  for_all(end_paths_, boost::bind(&Path::clearCounters, _1));
1014  for_all(all_workers_, boost::bind(&Worker::clearCounters, _1));
1015  }
TrigPaths trig_paths_
Definition: Schedule.h:278
void clearCounters()
Definition: Worker.h:73
int total_passed_
Definition: Schedule.h:283
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:16
int total_events_
Definition: Schedule.h:282
TrigPaths end_paths_
Definition: Schedule.h:279
void clearCounters()
Definition: Path.cc:100
AllWorkers all_workers_
Definition: Schedule.h:276
void edm::Schedule::closeOutputFiles ( )

Definition at line 826 of file Schedule.cc.

References all_output_workers_, edm::OutputWorker::closeFile(), and edm::for_all().

826  {
828  }
AllOutputWorkers all_output_workers_
Definition: Schedule.h:277
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:16
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 942 of file Schedule.cc.

References endpathsAreActive_.

942  {
943  endpathsAreActive_ = active;
944  }
volatile bool endpathsAreActive_
Definition: Schedule.h:288
void edm::Schedule::endJob ( void  )

Definition at line 471 of file Schedule.cc.

References end_paths_, cmsCodeRules.cppFunctionSkipper::exception, cms::Exception::explainSelf(), i, max(), pi, timeCpuReal(), totalEvents(), totalEventsFailed(), totalEventsPassed(), trig_paths_, wantSummary_, cms::Exception::what(), workersBegin(), and workersEnd().

Referenced by edm::EventProcessor::endJob().

471  {
472  bool failure = false;
473  cms::Exception accumulated("endJob");
474  AllWorkers::iterator ai(workersBegin()), ae(workersEnd());
475  for (; ai != ae; ++ai) {
476  try {
477  (*ai)->endJob();
478  }
479  catch (cms::Exception& e) {
480  accumulated << "cms::Exception caught in Schedule::endJob\n"
481  << e.explainSelf();
482  failure = true;
483  }
484  catch (std::exception& e) {
485  accumulated << "Standard library exception caught in Schedule::endJob\n"
486  << e.what();
487  failure = true;
488  }
489  catch (...) {
490  accumulated << "Unknown exception caught in Schedule::endJob\n";
491  failure = true;
492  }
493  }
494  if (failure) {
495  throw accumulated;
496  }
497 
498 
499  if (wantSummary_ == false) return;
500 
501  TrigPaths::const_iterator pi, pe;
502 
503  // The trigger report (pass/fail etc.):
504 
505  LogVerbatim("FwkSummary") << "";
506  LogVerbatim("FwkSummary") << "TrigReport " << "---------- Event Summary ------------";
507  LogVerbatim("FwkSummary") << "TrigReport"
508  << " Events total = " << totalEvents()
509  << " passed = " << totalEventsPassed()
510  << " failed = " << (totalEventsFailed())
511  << "";
512 
513  LogVerbatim("FwkSummary") << "";
514  LogVerbatim("FwkSummary") << "TrigReport " << "---------- Path Summary ------------";
515  LogVerbatim("FwkSummary") << "TrigReport "
516  << std::right << std::setw(10) << "Trig Bit#" << " "
517  << std::right << std::setw(10) << "Run" << " "
518  << std::right << std::setw(10) << "Passed" << " "
519  << std::right << std::setw(10) << "Failed" << " "
520  << std::right << std::setw(10) << "Error" << " "
521  << "Name" << "";
522  pi = trig_paths_.begin();
523  pe = trig_paths_.end();
524  for (; pi != pe; ++pi) {
525  LogVerbatim("FwkSummary") << "TrigReport "
526  << std::right << std::setw(5) << 1
527  << std::right << std::setw(5) << pi->bitPosition() << " "
528  << std::right << std::setw(10) << pi->timesRun() << " "
529  << std::right << std::setw(10) << pi->timesPassed() << " "
530  << std::right << std::setw(10) << pi->timesFailed() << " "
531  << std::right << std::setw(10) << pi->timesExcept() << " "
532  << pi->name() << "";
533  }
534 
535  LogVerbatim("FwkSummary") << "";
536  LogVerbatim("FwkSummary") << "TrigReport " << "-------End-Path Summary ------------";
537  LogVerbatim("FwkSummary") << "TrigReport "
538  << std::right << std::setw(10) << "Trig Bit#" << " "
539  << std::right << std::setw(10) << "Run" << " "
540  << std::right << std::setw(10) << "Passed" << " "
541  << std::right << std::setw(10) << "Failed" << " "
542  << std::right << std::setw(10) << "Error" << " "
543  << "Name" << "";
544  pi = end_paths_.begin();
545  pe = end_paths_.end();
546  for (; pi != pe; ++pi) {
547  LogVerbatim("FwkSummary") << "TrigReport "
548  << std::right << std::setw(5) << 0
549  << std::right << std::setw(5) << pi->bitPosition() << " "
550  << std::right << std::setw(10) << pi->timesRun() << " "
551  << std::right << std::setw(10) << pi->timesPassed() << " "
552  << std::right << std::setw(10) << pi->timesFailed() << " "
553  << std::right << std::setw(10) << pi->timesExcept() << " "
554  << pi->name() << "";
555  }
556 
557  pi = trig_paths_.begin();
558  pe = trig_paths_.end();
559  for (; pi != pe; ++pi) {
560  LogVerbatim("FwkSummary") << "";
561  LogVerbatim("FwkSummary") << "TrigReport " << "---------- Modules in Path: " << pi->name() << " ------------";
562  LogVerbatim("FwkSummary") << "TrigReport "
563  << std::right << std::setw(10) << "Trig Bit#" << " "
564  << std::right << std::setw(10) << "Visited" << " "
565  << std::right << std::setw(10) << "Passed" << " "
566  << std::right << std::setw(10) << "Failed" << " "
567  << std::right << std::setw(10) << "Error" << " "
568  << "Name" << "";
569 
570  for (unsigned int i = 0; i < pi->size(); ++i) {
571  LogVerbatim("FwkSummary") << "TrigReport "
572  << std::right << std::setw(5) << 1
573  << std::right << std::setw(5) << pi->bitPosition() << " "
574  << std::right << std::setw(10) << pi->timesVisited(i) << " "
575  << std::right << std::setw(10) << pi->timesPassed(i) << " "
576  << std::right << std::setw(10) << pi->timesFailed(i) << " "
577  << std::right << std::setw(10) << pi->timesExcept(i) << " "
578  << pi->getWorker(i)->description().moduleLabel() << "";
579  }
580  }
581 
582  pi = end_paths_.begin();
583  pe = end_paths_.end();
584  for (; pi != pe; ++pi) {
585  LogVerbatim("FwkSummary") << "";
586  LogVerbatim("FwkSummary") << "TrigReport " << "------ Modules in End-Path: " << pi->name() << " ------------";
587  LogVerbatim("FwkSummary") << "TrigReport "
588  << std::right << std::setw(10) << "Trig Bit#" << " "
589  << std::right << std::setw(10) << "Visited" << " "
590  << std::right << std::setw(10) << "Passed" << " "
591  << std::right << std::setw(10) << "Failed" << " "
592  << std::right << std::setw(10) << "Error" << " "
593  << "Name" << "";
594 
595  for (unsigned int i = 0; i < pi->size(); ++i) {
596  LogVerbatim("FwkSummary") << "TrigReport "
597  << std::right << std::setw(5) << 0
598  << std::right << std::setw(5) << pi->bitPosition() << " "
599  << std::right << std::setw(10) << pi->timesVisited(i) << " "
600  << std::right << std::setw(10) << pi->timesPassed(i) << " "
601  << std::right << std::setw(10) << pi->timesFailed(i) << " "
602  << std::right << std::setw(10) << pi->timesExcept(i) << " "
603  << pi->getWorker(i)->description().moduleLabel() << "";
604  }
605  }
606 
607  LogVerbatim("FwkSummary") << "";
608  LogVerbatim("FwkSummary") << "TrigReport " << "---------- Module Summary ------------";
609  LogVerbatim("FwkSummary") << "TrigReport "
610  << std::right << std::setw(10) << "Visited" << " "
611  << std::right << std::setw(10) << "Run" << " "
612  << std::right << std::setw(10) << "Passed" << " "
613  << std::right << std::setw(10) << "Failed" << " "
614  << std::right << std::setw(10) << "Error" << " "
615  << "Name" << "";
616  ai = workersBegin();
617  ae = workersEnd();
618  for (; ai != ae; ++ai) {
619  LogVerbatim("FwkSummary") << "TrigReport "
620  << std::right << std::setw(10) << (*ai)->timesVisited() << " "
621  << std::right << std::setw(10) << (*ai)->timesRun() << " "
622  << std::right << std::setw(10) << (*ai)->timesPassed() << " "
623  << std::right << std::setw(10) << (*ai)->timesFailed() << " "
624  << std::right << std::setw(10) << (*ai)->timesExcept() << " "
625  << (*ai)->description().moduleLabel() << "";
626 
627  }
628  LogVerbatim("FwkSummary") << "";
629 
630  // The timing report (CPU and Real Time):
631 
632  LogVerbatim("FwkSummary") << "TimeReport " << "---------- Event Summary ---[sec]----";
633  LogVerbatim("FwkSummary") << "TimeReport"
634  << std::setprecision(6) << std::fixed
635  << " CPU/event = " << timeCpuReal().first/std::max(1, totalEvents())
636  << " Real/event = " << timeCpuReal().second/std::max(1, totalEvents())
637  << "";
638 
639  LogVerbatim("FwkSummary") << "";
640  LogVerbatim("FwkSummary") << "TimeReport " << "---------- Path Summary ---[sec]----";
641  LogVerbatim("FwkSummary") << "TimeReport "
642  << std::right << std::setw(22) << "per event "
643  << std::right << std::setw(22) << "per path-run "
644  << "";
645  LogVerbatim("FwkSummary") << "TimeReport "
646  << std::right << std::setw(10) << "CPU" << " "
647  << std::right << std::setw(10) << "Real" << " "
648  << std::right << std::setw(10) << "CPU" << " "
649  << std::right << std::setw(10) << "Real" << " "
650  << "Name" << "";
651  pi = trig_paths_.begin();
652  pe = trig_paths_.end();
653  for (; pi != pe; ++pi) {
654  LogVerbatim("FwkSummary") << "TimeReport "
655  << std::setprecision(6) << std::fixed
656  << std::right << std::setw(10) << pi->timeCpuReal().first/std::max(1, totalEvents()) << " "
657  << std::right << std::setw(10) << pi->timeCpuReal().second/std::max(1, totalEvents()) << " "
658  << std::right << std::setw(10) << pi->timeCpuReal().first/std::max(1, pi->timesRun()) << " "
659  << std::right << std::setw(10) << pi->timeCpuReal().second/std::max(1, pi->timesRun()) << " "
660  << pi->name() << "";
661  }
662  LogVerbatim("FwkSummary") << "TimeReport "
663  << std::right << std::setw(10) << "CPU" << " "
664  << std::right << std::setw(10) << "Real" << " "
665  << std::right << std::setw(10) << "CPU" << " "
666  << std::right << std::setw(10) << "Real" << " "
667  << "Name" << "";
668  LogVerbatim("FwkSummary") << "TimeReport "
669  << std::right << std::setw(22) << "per event "
670  << std::right << std::setw(22) << "per path-run "
671  << "";
672 
673  LogVerbatim("FwkSummary") << "";
674  LogVerbatim("FwkSummary") << "TimeReport " << "-------End-Path Summary ---[sec]----";
675  LogVerbatim("FwkSummary") << "TimeReport "
676  << std::right << std::setw(22) << "per event "
677  << std::right << std::setw(22) << "per endpath-run "
678  << "";
679  LogVerbatim("FwkSummary") << "TimeReport "
680  << std::right << std::setw(10) << "CPU" << " "
681  << std::right << std::setw(10) << "Real" << " "
682  << std::right << std::setw(10) << "CPU" << " "
683  << std::right << std::setw(10) << "Real" << " "
684  << "Name" << "";
685  pi = end_paths_.begin();
686  pe = end_paths_.end();
687  for (; pi != pe; ++pi) {
688  LogVerbatim("FwkSummary") << "TimeReport "
689  << std::setprecision(6) << std::fixed
690  << std::right << std::setw(10) << pi->timeCpuReal().first/std::max(1, totalEvents()) << " "
691  << std::right << std::setw(10) << pi->timeCpuReal().second/std::max(1, totalEvents()) << " "
692  << std::right << std::setw(10) << pi->timeCpuReal().first/std::max(1, pi->timesRun()) << " "
693  << std::right << std::setw(10) << pi->timeCpuReal().second/std::max(1, pi->timesRun()) << " "
694  << pi->name() << "";
695  }
696  LogVerbatim("FwkSummary") << "TimeReport "
697  << std::right << std::setw(10) << "CPU" << " "
698  << std::right << std::setw(10) << "Real" << " "
699  << std::right << std::setw(10) << "CPU" << " "
700  << std::right << std::setw(10) << "Real" << " "
701  << "Name" << "";
702  LogVerbatim("FwkSummary") << "TimeReport "
703  << std::right << std::setw(22) << "per event "
704  << std::right << std::setw(22) << "per endpath-run "
705  << "";
706 
707  pi = trig_paths_.begin();
708  pe = trig_paths_.end();
709  for (; pi != pe; ++pi) {
710  LogVerbatim("FwkSummary") << "";
711  LogVerbatim("FwkSummary") << "TimeReport " << "---------- Modules in Path: " << pi->name() << " ---[sec]----";
712  LogVerbatim("FwkSummary") << "TimeReport "
713  << std::right << std::setw(22) << "per event "
714  << std::right << std::setw(22) << "per module-visit "
715  << "";
716  LogVerbatim("FwkSummary") << "TimeReport "
717  << std::right << std::setw(10) << "CPU" << " "
718  << std::right << std::setw(10) << "Real" << " "
719  << std::right << std::setw(10) << "CPU" << " "
720  << std::right << std::setw(10) << "Real" << " "
721  << "Name" << "";
722  for (unsigned int i = 0; i < pi->size(); ++i) {
723  LogVerbatim("FwkSummary") << "TimeReport "
724  << std::setprecision(6) << std::fixed
725  << std::right << std::setw(10) << pi->timeCpuReal(i).first/std::max(1, totalEvents()) << " "
726  << std::right << std::setw(10) << pi->timeCpuReal(i).second/std::max(1, totalEvents()) << " "
727  << std::right << std::setw(10) << pi->timeCpuReal(i).first/std::max(1, pi->timesVisited(i)) << " "
728  << std::right << std::setw(10) << pi->timeCpuReal(i).second/std::max(1, pi->timesVisited(i)) << " "
729  << pi->getWorker(i)->description().moduleLabel() << "";
730  }
731  }
732  LogVerbatim("FwkSummary") << "TimeReport "
733  << std::right << std::setw(10) << "CPU" << " "
734  << std::right << std::setw(10) << "Real" << " "
735  << std::right << std::setw(10) << "CPU" << " "
736  << std::right << std::setw(10) << "Real" << " "
737  << "Name" << "";
738  LogVerbatim("FwkSummary") << "TimeReport "
739  << std::right << std::setw(22) << "per event "
740  << std::right << std::setw(22) << "per module-visit "
741  << "";
742 
743  pi = end_paths_.begin();
744  pe = end_paths_.end();
745  for (; pi != pe; ++pi) {
746  LogVerbatim("FwkSummary") << "";
747  LogVerbatim("FwkSummary") << "TimeReport " << "------ Modules in End-Path: " << pi->name() << " ---[sec]----";
748  LogVerbatim("FwkSummary") << "TimeReport "
749  << std::right << std::setw(22) << "per event "
750  << std::right << std::setw(22) << "per module-visit "
751  << "";
752  LogVerbatim("FwkSummary") << "TimeReport "
753  << std::right << std::setw(10) << "CPU" << " "
754  << std::right << std::setw(10) << "Real" << " "
755  << std::right << std::setw(10) << "CPU" << " "
756  << std::right << std::setw(10) << "Real" << " "
757  << "Name" << "";
758  for (unsigned int i = 0; i < pi->size(); ++i) {
759  LogVerbatim("FwkSummary") << "TimeReport "
760  << std::setprecision(6) << std::fixed
761  << std::right << std::setw(10) << pi->timeCpuReal(i).first/std::max(1, totalEvents()) << " "
762  << std::right << std::setw(10) << pi->timeCpuReal(i).second/std::max(1, totalEvents()) << " "
763  << std::right << std::setw(10) << pi->timeCpuReal(i).first/std::max(1, pi->timesVisited(i)) << " "
764  << std::right << std::setw(10) << pi->timeCpuReal(i).second/std::max(1, pi->timesVisited(i)) << " "
765  << pi->getWorker(i)->description().moduleLabel() << "";
766  }
767  }
768  LogVerbatim("FwkSummary") << "TimeReport "
769  << std::right << std::setw(10) << "CPU" << " "
770  << std::right << std::setw(10) << "Real" << " "
771  << std::right << std::setw(10) << "CPU" << " "
772  << std::right << std::setw(10) << "Real" << " "
773  << "Name" << "";
774  LogVerbatim("FwkSummary") << "TimeReport "
775  << std::right << std::setw(22) << "per event "
776  << std::right << std::setw(22) << "per module-visit "
777  << "";
778 
779  LogVerbatim("FwkSummary") << "";
780  LogVerbatim("FwkSummary") << "TimeReport " << "---------- Module Summary ---[sec]----";
781  LogVerbatim("FwkSummary") << "TimeReport "
782  << std::right << std::setw(22) << "per event "
783  << std::right << std::setw(22) << "per module-run "
784  << std::right << std::setw(22) << "per module-visit "
785  << "";
786  LogVerbatim("FwkSummary") << "TimeReport "
787  << std::right << std::setw(10) << "CPU" << " "
788  << std::right << std::setw(10) << "Real" << " "
789  << std::right << std::setw(10) << "CPU" << " "
790  << std::right << std::setw(10) << "Real" << " "
791  << std::right << std::setw(10) << "CPU" << " "
792  << std::right << std::setw(10) << "Real" << " "
793  << "Name" << "";
794  ai = workersBegin();
795  ae = workersEnd();
796  for (; ai != ae; ++ai) {
797  LogVerbatim("FwkSummary") << "TimeReport "
798  << std::setprecision(6) << std::fixed
799  << std::right << std::setw(10) << (*ai)->timeCpuReal().first/std::max(1, totalEvents()) << " "
800  << std::right << std::setw(10) << (*ai)->timeCpuReal().second/std::max(1, totalEvents()) << " "
801  << std::right << std::setw(10) << (*ai)->timeCpuReal().first/std::max(1, (*ai)->timesRun()) << " "
802  << std::right << std::setw(10) << (*ai)->timeCpuReal().second/std::max(1, (*ai)->timesRun()) << " "
803  << std::right << std::setw(10) << (*ai)->timeCpuReal().first/std::max(1, (*ai)->timesVisited()) << " "
804  << std::right << std::setw(10) << (*ai)->timeCpuReal().second/std::max(1, (*ai)->timesVisited()) << " "
805  << (*ai)->description().moduleLabel() << "";
806  }
807  LogVerbatim("FwkSummary") << "TimeReport "
808  << std::right << std::setw(10) << "CPU" << " "
809  << std::right << std::setw(10) << "Real" << " "
810  << std::right << std::setw(10) << "CPU" << " "
811  << std::right << std::setw(10) << "Real" << " "
812  << std::right << std::setw(10) << "CPU" << " "
813  << std::right << std::setw(10) << "Real" << " "
814  << "Name" << "";
815  LogVerbatim("FwkSummary") << "TimeReport "
816  << std::right << std::setw(22) << "per event "
817  << std::right << std::setw(22) << "per module-run "
818  << std::right << std::setw(22) << "per module-visit "
819  << "";
820 
821  LogVerbatim("FwkSummary") << "";
822  LogVerbatim("FwkSummary") << "T---Report end!" << "";
823  LogVerbatim("FwkSummary") << "";
824  }
int i
Definition: DBlmapReader.cc:9
std::pair< double, double > timeCpuReal() const
Definition: Schedule.h:155
virtual std::string explainSelf() const
Definition: Exception.cc:56
TrigPaths trig_paths_
Definition: Schedule.h:278
int totalEventsFailed() const
Definition: Schedule.h:189
int totalEventsPassed() const
Definition: Schedule.h:183
const T & max(const T &a, const T &b)
int totalEvents() const
Definition: Schedule.h:177
AllWorkers::const_iterator workersBegin() const
Definition: Schedule.h:217
TrigPaths end_paths_
Definition: Schedule.h:279
bool wantSummary_
Definition: Schedule.h:281
double pi
AllWorkers::const_iterator workersEnd() const
Definition: Schedule.h:221
bool edm::Schedule::endPathsEnabled ( ) const

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

Definition at line 947 of file Schedule.cc.

References endpathsAreActive_.

947  {
948  return endpathsAreActive_;
949  }
volatile bool endpathsAreActive_
Definition: Schedule.h:288
void edm::Schedule::fillEndPath ( ParameterSet proc_pset,
ProductRegistry preg,
boost::shared_ptr< ProcessConfiguration const >  processConfiguration,
int  bitpos,
std::string const &  name 
)
private

Definition at line 449 of file Schedule.cc.

References act_table_, actReg_, addToAllWorkers(), end_paths_, endpath_results_, fillWorkers(), edm::for_all(), L1TEmulatorMonitor_cff::p, edm::Path::useStopwatch(), and wantSummary_.

Referenced by Schedule().

452  {
453  PathWorkers tmpworkers;
454  fillWorkers(proc_pset, preg, processConfiguration, name, true, tmpworkers);
455  Workers holder;
456 
457  for (PathWorkers::iterator wi(tmpworkers.begin()), we(tmpworkers.end()); wi != we; ++wi) {
458  holder.push_back(wi->getWorker());
459  }
460 
461  if (!tmpworkers.empty()) {
462  Path p(bitpos, name, tmpworkers, endpath_results_, *act_table_, actReg_, true);
463  if (wantSummary_) {
464  p.useStopwatch();
465  }
466  end_paths_.push_back(p);
467  }
468  for_all(holder, boost::bind(&Schedule::addToAllWorkers, this, _1));
469  }
std::vector< WorkerInPath > PathWorkers
Definition: Schedule.h:105
TrigResPtr endpath_results_
Definition: Schedule.h:273
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:16
void fillWorkers(ParameterSet &proc_pset, ProductRegistry &preg, boost::shared_ptr< ProcessConfiguration const > processConfiguration, std::string const &name, bool ignoreFilters, PathWorkers &out)
Definition: Schedule.cc:369
ActionTable const * act_table_
Definition: Schedule.h:265
std::vector< Worker * > Workers
Definition: Schedule.h:103
TrigPaths end_paths_
Definition: Schedule.h:279
bool wantSummary_
Definition: Schedule.h:281
void addToAllWorkers(Worker *w)
Definition: Schedule.cc:1025
boost::shared_ptr< ActivityRegistry > actReg_
Definition: Schedule.h:266
void edm::Schedule::fillTrigPath ( ParameterSet proc_pset,
ProductRegistry preg,
boost::shared_ptr< ProcessConfiguration const >  processConfiguration,
int  bitpos,
std::string const &  name,
TrigResPtr  trptr 
)
private

Definition at line 425 of file Schedule.cc.

References act_table_, actReg_, addToAllWorkers(), fillWorkers(), edm::for_all(), L1TEmulatorMonitor_cff::p, trig_paths_, edm::Path::useStopwatch(), and wantSummary_.

Referenced by Schedule().

428  {
429  PathWorkers tmpworkers;
430  Workers holder;
431  fillWorkers(proc_pset, preg, processConfiguration, name, false, tmpworkers);
432 
433  for (PathWorkers::iterator wi(tmpworkers.begin()),
434  we(tmpworkers.end()); wi != we; ++wi) {
435  holder.push_back(wi->getWorker());
436  }
437 
438  // an empty path will cause an extra bit that is not used
439  if (!tmpworkers.empty()) {
440  Path p(bitpos, name, tmpworkers, trptr, *act_table_, actReg_, false);
441  if (wantSummary_) {
442  p.useStopwatch();
443  }
444  trig_paths_.push_back(p);
445  }
446  for_all(holder, boost::bind(&Schedule::addToAllWorkers, this, _1));
447  }
std::vector< WorkerInPath > PathWorkers
Definition: Schedule.h:105
TrigPaths trig_paths_
Definition: Schedule.h:278
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:16
void fillWorkers(ParameterSet &proc_pset, ProductRegistry &preg, boost::shared_ptr< ProcessConfiguration const > processConfiguration, std::string const &name, bool ignoreFilters, PathWorkers &out)
Definition: Schedule.cc:369
ActionTable const * act_table_
Definition: Schedule.h:265
std::vector< Worker * > Workers
Definition: Schedule.h:103
bool wantSummary_
Definition: Schedule.h:281
void addToAllWorkers(Worker *w)
Definition: Schedule.cc:1025
boost::shared_ptr< ActivityRegistry > actReg_
Definition: Schedule.h:266
void edm::Schedule::fillWorkers ( ParameterSet proc_pset,
ProductRegistry preg,
boost::shared_ptr< ProcessConfiguration const >  processConfiguration,
std::string const &  name,
bool  ignoreFilters,
PathWorkers out 
)
private

Definition at line 369 of file Schedule.cc.

References act_table_, edm::errors::Configuration, edm::Worker::description(), end_path_name_list_, edm::hlt::Exception, edm::ParameterSet::getParameter(), edm::ParameterSet::getPSetForUpdate(), edm::ParameterSet::getUntrackedParameter(), edm::WorkerRegistry::getWorker(), edm::WorkerInPath::Ignore, moduleLabel(), edm::ModuleDescription::moduleName(), mergeVDriftHistosByStation::name, edm::WorkerInPath::Normal, edm::search_all(), edm::WorkerInPath::Veto, and worker_reg_.

Referenced by fillEndPath(), and fillTrigPath().

374  {
375  vstring modnames = proc_pset.getParameter<vstring>(name);
376  vstring::iterator it(modnames.begin()), ie(modnames.end());
377  PathWorkers tmpworkers;
378 
379  for (; it != ie; ++it) {
380 
382  if ((*it)[0] == '!') filterAction = WorkerInPath::Veto;
383  else if ((*it)[0] == '-') filterAction = WorkerInPath::Ignore;
384 
385  std::string moduleLabel = *it;
386  if (filterAction != WorkerInPath::Normal) moduleLabel.erase(0, 1);
387 
388  bool isTracked;
389  ParameterSet* modpset = proc_pset.getPSetForUpdate(moduleLabel, isTracked);
390  if (modpset == 0) {
391  std::string pathType("endpath");
393  pathType = std::string("path");
394  }
396  "The unknown module label \"" << moduleLabel <<
397  "\" appears in " << pathType << " \"" << name <<
398  "\"\n please check spelling or remove that label from the path.";
399  }
400  assert(isTracked);
401 
402  WorkerParams params(proc_pset, modpset, preg, processConfiguration, *act_table_);
403  Worker* worker = worker_reg_.getWorker(params, moduleLabel);
404  if (ignoreFilters && filterAction != WorkerInPath::Ignore && dynamic_cast<WorkerT<EDFilter>*>(worker)) {
405  // We have a filter on an end path, and the filter is not explicitly ignored.
406  // See if the filter is allowed.
407  std::vector<std::string> allowed_filters = proc_pset.getUntrackedParameter<vstring>("@filters_on_endpaths");
408  if (!search_all(allowed_filters, worker->description().moduleName())) {
409  // Filter is not allowed. Ignore the result, and issue a warning.
410  filterAction = WorkerInPath::Ignore;
411  LogWarning("FilterOnEndPath")
412  << "The EDFilter '" << worker->description().moduleName() << "' with module label '" << moduleLabel << "' appears on EndPath '" << name << "'.\n"
413  << "The return value of the filter will be ignored.\n"
414  << "To suppress this warning, either remove the filter from the endpath,\n"
415  << "or explicitly ignore it in the configuration by using cms.ignore().\n";
416  }
417  }
418  WorkerInPath w(worker, filterAction);
419  tmpworkers.push_back(w);
420  }
421 
422  out.swap(tmpworkers);
423  }
WorkerRegistry worker_reg_
Definition: Schedule.h:264
std::vector< WorkerInPath > PathWorkers
Definition: Schedule.h:105
ActionTable const * act_table_
Definition: Schedule.h:265
tuple out
Definition: dbtoconf.py:99
bool search_all(ForwardSequence const &s, Datum const &d)
Definition: Algorithms.h:46
std::vector< std::string > vstring
Worker * getWorker(WorkerParams const &p, std::string const &moduleLabel)
Retrieve the particular instance of the worker.
vstring end_path_name_list_
Definition: Schedule.h:270
const std::string * moduleLabel() const
Definition: HLTadd.h:40
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 901 of file Schedule.cc.

References all_workers_, i, L1TEmulatorMonitor_cff::p, query::result, workersBegin(), and workersEnd().

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

901  {
902  AllWorkers::const_iterator i(workersBegin());
903  AllWorkers::const_iterator e(workersEnd());
904 
905  std::vector<ModuleDescription const*> result;
906  result.reserve(all_workers_.size());
907 
908  for (; i != e; ++i) {
909  ModuleDescription const* p = (*i)->descPtr();
910  result.push_back(p);
911  }
912  return result;
913  }
int i
Definition: DBlmapReader.cc:9
tuple result
Definition: query.py:137
AllWorkers::const_iterator workersBegin() const
Definition: Schedule.h:217
AllWorkers::const_iterator workersEnd() const
Definition: Schedule.h:221
AllWorkers all_workers_
Definition: Schedule.h:276
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 999 of file Schedule.cc.

References all_workers_, end_paths_, edm::TriggerReport::endPathSummaries, edm::TriggerReport::eventSummary, edm::fillPathSummary(), edm::fillWorkerSummary(), edm::EventSummary::totalEvents, totalEvents(), edm::EventSummary::totalEventsFailed, totalEventsFailed(), edm::EventSummary::totalEventsPassed, totalEventsPassed(), trig_paths_, edm::TriggerReport::trigPathSummaries, and edm::TriggerReport::workerSummaries.

999  {
1000  rep.eventSummary.totalEvents = totalEvents();
1001  rep.eventSummary.totalEventsPassed = totalEventsPassed();
1002  rep.eventSummary.totalEventsFailed = totalEventsFailed();
1003 
1004  fill_summary(trig_paths_, rep.trigPathSummaries, &fillPathSummary);
1005  fill_summary(end_paths_, rep.endPathSummaries, &fillPathSummary);
1006  fill_summary(all_workers_, rep.workerSummaries, &fillWorkerSummary);
1007  }
void fillWorkerSummary(Worker const *pw, WorkerSummary &sum)
Definition: Schedule.cc:994
TrigPaths trig_paths_
Definition: Schedule.h:278
int totalEventsFailed() const
Definition: Schedule.h:189
int totalEventsPassed() const
Definition: Schedule.h:183
int totalEvents() const
Definition: Schedule.h:177
TrigPaths end_paths_
Definition: Schedule.h:279
void fillPathSummary(Path const &path, PathSummary &sum)
Definition: Schedule.cc:967
AllWorkers all_workers_
Definition: Schedule.h:276
void edm::Schedule::limitOutput ( ParameterSet const &  proc_pset)
private

Definition at line 307 of file Schedule.cc.

References all_output_workers_, edm::errors::Configuration, edm::ParameterSet::empty(), edm::hlt::Exception, edm::ParameterSet::getParameterNamesForType(), edm::ParameterSet::getParameterSetNames(), edm::ParameterSet::getUntrackedParameter(), edm::ParameterSet::getUntrackedParameterSet(), edm::OutputModuleDescription::maxEvents_, moduleLabel(), convertSQLitetoXML_cfg::output, and edm::search_all().

Referenced by Schedule().

307  {
308  std::string const output("output");
309 
310  ParameterSet const& maxEventsPSet = proc_pset.getUntrackedParameterSet("maxEvents", ParameterSet());
311  int maxEventSpecs = 0;
312  int maxEventsOut = -1;
313  ParameterSet const* vMaxEventsOut = 0;
314  std::vector<std::string> intNamesE = maxEventsPSet.getParameterNamesForType<int>(false);
315  if (search_all(intNamesE, output)) {
316  maxEventsOut = maxEventsPSet.getUntrackedParameter<int>(output);
317  ++maxEventSpecs;
318  }
319  std::vector<std::string> psetNamesE;
320  maxEventsPSet.getParameterSetNames(psetNamesE, false);
321  if (search_all(psetNamesE, output)) {
322  vMaxEventsOut = &maxEventsPSet.getUntrackedParameterSet(output);
323  ++maxEventSpecs;
324  }
325 
326  if (maxEventSpecs > 1) {
328  "\nAt most, one form of 'output' may appear in the 'maxEvents' parameter set";
329  }
330 
331  if (maxEventSpecs == 0) {
332  return;
333  }
334 
335  for (AllOutputWorkers::const_iterator it = all_output_workers_.begin(), itEnd = all_output_workers_.end();
336  it != itEnd; ++it) {
337  OutputModuleDescription desc(maxEventsOut);
338  if (vMaxEventsOut != 0 && !vMaxEventsOut->empty()) {
339  std::string moduleLabel = (*it)->description().moduleLabel();
340  try {
341  desc.maxEvents_ = vMaxEventsOut->getUntrackedParameter<int>(moduleLabel);
342  } catch (Exception const&) {
344  "\nNo entry in 'maxEvents' for output module label '" << moduleLabel << "'.\n";
345  }
346  }
347  (*it)->configure(desc);
348  }
349  }
AllOutputWorkers all_output_workers_
Definition: Schedule.h:277
bool search_all(ForwardSequence const &s, Datum const &d)
Definition: Algorithms.h:46
const std::string * moduleLabel() const
Definition: HLTadd.h:40
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 925 of file Schedule.cc.

References i, edm::Path::name(), and trig_paths_.

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

926  {
927  TrigPaths::const_iterator itFound =
928  std::find_if (trig_paths_.begin(),
929  trig_paths_.end(),
930  boost::bind(std::equal_to<std::string>(),
931  iPathLabel,
932  boost::bind(&Path::name, _1)));
933  if (itFound!=trig_paths_.end()) {
934  oLabelsToFill.reserve(itFound->size());
935  for (size_t i = 0; i < itFound->size(); ++i) {
936  oLabelsToFill.push_back(itFound->getWorker(i)->description().moduleLabel());
937  }
938  }
939  }
int i
Definition: DBlmapReader.cc:9
TrigPaths trig_paths_
Definition: Schedule.h:278
std::string const & name() const
Definition: Path.h:48
void edm::Schedule::openNewOutputFilesIfNeeded ( )

Definition at line 830 of file Schedule.cc.

References all_output_workers_, edm::for_all(), and edm::OutputWorker::openNewFileIfNeeded().

830  {
832  }
AllOutputWorkers all_output_workers_
Definition: Schedule.h:277
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:16
void openNewFileIfNeeded()
Definition: OutputWorker.cc:32
void edm::Schedule::openOutputFiles ( FileBlock fb)

Definition at line 834 of file Schedule.cc.

References all_output_workers_, edm::for_all(), and edm::OutputWorker::openFile().

834  {
835  for_all(all_output_workers_, boost::bind(&OutputWorker::openFile, _1, boost::cref(fb)));
836  }
AllOutputWorkers all_output_workers_
Definition: Schedule.h:277
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:16
void openFile(FileBlock const &fb)
Definition: OutputWorker.cc:37
void edm::Schedule::postForkReacquireResources ( unsigned int  iChildIndex,
unsigned int  iNumberOfChildren 
)

Definition at line 876 of file Schedule.cc.

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

876  {
877  for_all(all_workers_, boost::bind(&Worker::postForkReacquireResources, _1, iChildIndex, iNumberOfChildren));
878  }
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:59
AllWorkers all_workers_
Definition: Schedule.h:276
void edm::Schedule::preForkReleaseResources ( )

Definition at line 873 of file Schedule.cc.

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

873  {
875  }
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:16
void preForkReleaseResources()
Definition: Worker.h:58
AllWorkers all_workers_
Definition: Schedule.h:276
template<typename T >
void edm::Schedule::processOneOccurrence ( typename T::MyPrincipal &  principal,
EventSetup const &  eventSetup 
)

Definition at line 357 of file Schedule.h.

References act_table_, alignmentValidation::action, cms::Exception::category(), endpathsAreActive_, edm::actions::FailModule, edm::actions::FailPath, edm::ActionTable::find(), edm::actions::IgnoreCompletely, Latched, Ready, resetAll(), results_inserter_, edm::actions::Rethrow, cms::Exception::rootCause(), Running, setupOnDemandSystem(), edm::actions::SkipEvent, state_, stopwatch_, total_events_, total_passed_, unscheduled_, and cms::Exception::what().

357  {
358  this->resetAll();
359  state_ = Running;
360 
361  // A RunStopwatch, but only if we are processing an event.
362  RunStopwatch stopwatch(T::isEvent_ ? stopwatch_ : RunStopwatch::StopwatchPointer());
363 
364  if (T::isEvent_) {
365  ++total_events_;
366  setupOnDemandSystem(dynamic_cast<EventPrincipal&>(ep), es);
367  }
368  try {
369  try {
370  //make sure the unscheduled items see this transition [Event will be a no-op]
371  unscheduled_->runNow<T>(ep, es);
372  if (runTriggerPaths<T>(ep, es)) {
373  if (T::isEvent_) ++total_passed_;
374  }
375  state_ = Latched;
376  }
377  catch(cms::Exception& e) {
379  assert (action != actions::IgnoreCompletely);
380  assert (action != actions::FailPath);
381  assert (action != actions::FailModule);
382  if (action == actions::SkipEvent) {
383  LogWarning(e.category())
384  << "an exception occurred and all paths for the event are being skipped: \n"
385  << e.what();
386  } else {
387  throw;
388  }
389  }
390 
391  try {
392  CPUTimer timer;
393  if (results_inserter_.get()) results_inserter_->doWork<T>(ep, es, 0, &timer);
394  }
395  catch (cms::Exception& e) {
396  e << "EventProcessingStopped\n";
397  e << "Attempt to insert TriggerResults into event failed.\n";
398  throw;
399  }
400 
401  if (endpathsAreActive_) runEndPaths<T>(ep, es);
402  }
403  catch(cms::Exception& e) {
404  actions::ActionCodes action = (T::isEvent_ ? act_table_->find(e.rootCause()) : actions::Rethrow);
405  assert (action != actions::SkipEvent);
406  assert (action != actions::FailPath);
407  assert (action != actions::FailModule);
408  switch(action) {
410  LogWarning(e.category())
411  << "exception being ignored for current event:\n"
412  << e.what();
413  break;
414  }
415  default: {
416  state_ = Ready;
417  e << "EventProcessingStopped\n";
418  e << "an exception occurred during current event processing\n";
419  throw;
420  }
421  }
422  }
423  catch(...) {
424  LogError("PassingThrough")
425  << "an exception occurred during current event processing\n";
426  state_ = Ready;
427  throw;
428  }
429 
430  // next thing probably is not needed, the product insertion code clears it
431  state_ = Ready;
432 
433  }
State state_
Definition: Schedule.h:268
virtual char const * what() const
Definition: Exception.cc:97
WorkerPtr results_inserter_
Definition: Schedule.h:275
std::string rootCause() const
Definition: Exception.cc:78
int total_passed_
Definition: Schedule.h:283
void resetAll()
Definition: Schedule.cc:1018
RunStopwatch::StopwatchPointer stopwatch_
Definition: Schedule.h:284
boost::shared_ptr< CPUTimer > StopwatchPointer
Definition: RunStopwatch.h:23
ActionTable const * act_table_
Definition: Schedule.h:265
volatile bool endpathsAreActive_
Definition: Schedule.h:288
int total_events_
Definition: Schedule.h:282
actions::ActionCodes find(const std::string &category) const
Definition: Actions.cc:95
long double T
void setupOnDemandSystem(EventPrincipal &principal, EventSetup const &es)
Definition: Schedule.cc:1035
boost::shared_ptr< UnscheduledCallProducer > unscheduled_
Definition: Schedule.h:286
std::string category() const
Definition: Exception.cc:74
void edm::Schedule::reportSkipped ( EventPrincipal const &  ep) const
inlineprivate

Definition at line 350 of file Schedule.h.

References edm::EventID::event(), edm::EventPrincipal::id(), and edm::EventID::run().

350  {
351  Service<JobReport> reportSvc;
352  reportSvc->reportSkippedEvent(ep.id().run(), ep.id().event());
353  }
void edm::Schedule::reportSkipped ( LuminosityBlockPrincipal const &  ) const
inlineprivate

Definition at line 244 of file Schedule.h.

244 {}
void edm::Schedule::reportSkipped ( RunPrincipal const &  ) const
inlineprivate

Definition at line 245 of file Schedule.h.

245 {}
void edm::Schedule::resetAll ( )
private

Definition at line 1018 of file Schedule.cc.

References all_workers_, endpath_results_, edm::for_all(), edm::Worker::reset(), and results_.

Referenced by processOneOccurrence().

1018  {
1019  for_all(all_workers_, boost::bind(&Worker::reset, _1));
1020  results_->reset();
1021  endpath_results_->reset();
1022  }
TrigResPtr endpath_results_
Definition: Schedule.h:273
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:16
void reset()
Definition: Worker.h:61
TrigResPtr results_
Definition: Schedule.h:272
AllWorkers all_workers_
Definition: Schedule.h:276
void edm::Schedule::respondToCloseInputFile ( FileBlock const &  fb)

Definition at line 857 of file Schedule.cc.

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

857  {
858  for_all(all_workers_, boost::bind(&Worker::respondToCloseInputFile, _1, boost::cref(fb)));
859  }
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:16
void respondToCloseInputFile(FileBlock const &fb)
Definition: Worker.h:54
AllWorkers all_workers_
Definition: Schedule.h:276
void edm::Schedule::respondToCloseOutputFiles ( FileBlock const &  fb)

Definition at line 865 of file Schedule.cc.

References all_workers_, edm::for_all(), and edm::Worker::respondToCloseOutputFiles().

865  {
866  for_all(all_workers_, boost::bind(&Worker::respondToCloseOutputFiles, _1, boost::cref(fb)));
867  }
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:16
void respondToCloseOutputFiles(FileBlock const &fb)
Definition: Worker.h:56
AllWorkers all_workers_
Definition: Schedule.h:276
void edm::Schedule::respondToOpenInputFile ( FileBlock const &  fb)

Definition at line 853 of file Schedule.cc.

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

853  {
854  for_all(all_workers_, boost::bind(&Worker::respondToOpenInputFile, _1, boost::cref(fb)));
855  }
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:16
void respondToOpenInputFile(FileBlock const &fb)
Definition: Worker.h:53
AllWorkers all_workers_
Definition: Schedule.h:276
void edm::Schedule::respondToOpenOutputFiles ( FileBlock const &  fb)

Definition at line 861 of file Schedule.cc.

References all_workers_, edm::for_all(), and edm::Worker::respondToOpenOutputFiles().

861  {
862  for_all(all_workers_, boost::bind(&Worker::respondToOpenOutputFiles, _1, boost::cref(fb)));
863  }
void respondToOpenOutputFiles(FileBlock const &fb)
Definition: Worker.h:55
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:16
AllWorkers all_workers_
Definition: Schedule.h:276
template<typename T >
void edm::Schedule::runEndPaths ( typename T::MyPrincipal &  ep,
EventSetup const &  es 
)
private

Definition at line 444 of file Schedule.h.

References end_paths_, and edm::for_all().

444  {
445  // Note there is no state-checking safety controlling the
446  // activation/deactivation of endpaths.
447  for_all(end_paths_, ProcessOneOccurrence<T>(ep, es));
448 
449  // We could get rid of the functor ProcessOneOccurrence if we used
450  // boost::lambda, but the use of lambda with member functions
451  // which take multiple arguments, by both non-const and const
452  // reference, seems much more obscure...
453  //
454  // using namespace boost::lambda;
455  // for_all(end_paths_,
456  // bind(&Path::processOneOccurrence,
457  // boost::lambda::_1, // qualification to avoid ambiguity
458  // var(ep), // pass by reference (not copy)
459  // constant_ref(es))); // pass by const-reference (not copy)
460  }
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:16
TrigPaths end_paths_
Definition: Schedule.h:279
template<typename T >
bool edm::Schedule::runTriggerPaths ( typename T::MyPrincipal &  ep,
EventSetup const &  es 
)
private

Definition at line 437 of file Schedule.h.

References edm::for_all(), results_, and trig_paths_.

437  {
438  for_all(trig_paths_, ProcessOneOccurrence<T>(ep, es));
439  return results_->accept();
440  }
TrigPaths trig_paths_
Definition: Schedule.h:278
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:16
TrigResPtr results_
Definition: Schedule.h:272
void edm::Schedule::setupOnDemandSystem ( EventPrincipal principal,
EventSetup const &  es 
)
private

Definition at line 1035 of file Schedule.cc.

References edm::EventPrincipal::setUnscheduledHandler(), and unscheduled_.

Referenced by processOneOccurrence().

1035  {
1036  // NOTE: who owns the productdescrption? Just copied by value
1037  unscheduled_->setEventSetup(es);
1038  ep.setUnscheduledHandler(unscheduled_);
1039  }
boost::shared_ptr< UnscheduledCallProducer > unscheduled_
Definition: Schedule.h:286
bool edm::Schedule::shouldWeCloseOutput ( ) const

Definition at line 846 of file Schedule.cc.

References all_output_workers_, and edm::OutputWorker::shouldWeCloseFile().

846  {
847  // Return true iff at least one output module returns true.
848  return (std::find_if (all_output_workers_.begin(), all_output_workers_.end(),
849  boost::bind(&OutputWorker::shouldWeCloseFile, _1))
850  != all_output_workers_.end());
851  }
AllOutputWorkers all_output_workers_
Definition: Schedule.h:277
bool shouldWeCloseFile() const
Definition: OutputWorker.cc:27
bool const edm::Schedule::terminate ( void  ) const

Return whether each output module has reached its maximum count.

Definition at line 351 of file Schedule.cc.

References all_output_workers_.

351  {
352  if (all_output_workers_.empty()) {
353  return false;
354  }
355  for (AllOutputWorkers::const_iterator it = all_output_workers_.begin(),
356  itEnd = all_output_workers_.end();
357  it != itEnd; ++it) {
358  if (!(*it)->limitReached()) {
359  // Found an output module that has not reached output event count.
360  return false;
361  }
362  }
363  LogInfo("SuccessfulTermination")
364  << "The job is terminating successfully because each output module\n"
365  << "has reached its configured limit.\n";
366  return true;
367  }
AllOutputWorkers all_output_workers_
Definition: Schedule.h:277
std::pair<double, double> edm::Schedule::timeCpuReal ( ) const
inline

Definition at line 155 of file Schedule.h.

References stopwatch_.

Referenced by endJob().

155  {
156  return std::pair<double, double>(stopwatch_->cpuTime(), stopwatch_->realTime());
157  }
RunStopwatch::StopwatchPointer stopwatch_
Definition: Schedule.h:284
int edm::Schedule::totalEvents ( ) const
inline

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

References total_events_.

Referenced by endJob(), getTriggerReport(), and totalEventsFailed().

177  {
178  return total_events_;
179  }
int total_events_
Definition: Schedule.h:282
int edm::Schedule::totalEventsFailed ( ) const
inline

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

Definition at line 189 of file Schedule.h.

References totalEvents(), and totalEventsPassed().

Referenced by endJob(), and getTriggerReport().

189  {
190  return totalEvents() - totalEventsPassed();
191  }
int totalEventsPassed() const
Definition: Schedule.h:183
int totalEvents() const
Definition: Schedule.h:177
int edm::Schedule::totalEventsPassed ( ) const
inline

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

Definition at line 183 of file Schedule.h.

References total_passed_.

Referenced by endJob(), getTriggerReport(), and totalEventsFailed().

183  {
184  return total_passed_;
185  }
int total_passed_
Definition: Schedule.h:283
AllWorkers::const_iterator edm::Schedule::workersBegin ( ) const
inlineprivate

Definition at line 217 of file Schedule.h.

References all_workers_.

Referenced by endJob(), getAllModuleDescriptions(), and Schedule().

217  {
218  return all_workers_.begin();
219  }
AllWorkers all_workers_
Definition: Schedule.h:276
AllWorkers::iterator edm::Schedule::workersBegin ( )
inlineprivate

Definition at line 225 of file Schedule.h.

References all_workers_.

225  {
226  return all_workers_.begin();
227  }
AllWorkers all_workers_
Definition: Schedule.h:276
AllWorkers::const_iterator edm::Schedule::workersEnd ( ) const
inlineprivate

Definition at line 221 of file Schedule.h.

References all_workers_.

Referenced by endJob(), getAllModuleDescriptions(), and Schedule().

221  {
222  return all_workers_.end();
223  }
AllWorkers all_workers_
Definition: Schedule.h:276
AllWorkers::iterator edm::Schedule::workersEnd ( )
inlineprivate

Definition at line 229 of file Schedule.h.

References all_workers_.

229  {
230  return all_workers_.end();
231  }
AllWorkers all_workers_
Definition: Schedule.h:276
void edm::Schedule::writeLumi ( LuminosityBlockPrincipal const &  lbp)

Definition at line 842 of file Schedule.cc.

References all_output_workers_, edm::for_all(), and edm::OutputWorker::writeLumi().

842  {
843  for_all(all_output_workers_, boost::bind(&OutputWorker::writeLumi, _1, boost::cref(lbp)));
844  }
AllOutputWorkers all_output_workers_
Definition: Schedule.h:277
void writeLumi(LuminosityBlockPrincipal const &lbp)
Definition: OutputWorker.cc:47
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:16
void edm::Schedule::writeRun ( RunPrincipal const &  rp)

Definition at line 838 of file Schedule.cc.

References all_output_workers_, edm::for_all(), and edm::OutputWorker::writeRun().

838  {
839  for_all(all_output_workers_, boost::bind(&OutputWorker::writeRun, _1, boost::cref(rp)));
840  }
AllOutputWorkers all_output_workers_
Definition: Schedule.h:277
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:16
void writeRun(RunPrincipal const &rp)
Definition: OutputWorker.cc:42

Member Data Documentation

ActionTable const* edm::Schedule::act_table_
private

Definition at line 265 of file Schedule.h.

Referenced by fillEndPath(), fillTrigPath(), fillWorkers(), processOneOccurrence(), and Schedule().

boost::shared_ptr<ActivityRegistry> edm::Schedule::actReg_
private

Definition at line 266 of file Schedule.h.

Referenced by fillEndPath(), fillTrigPath(), and Schedule().

AllOutputWorkers edm::Schedule::all_output_workers_
private
AllWorkers edm::Schedule::all_workers_
private
vstring edm::Schedule::end_path_name_list_
private

Definition at line 270 of file Schedule.h.

Referenced by fillWorkers(), and Schedule().

TrigPaths edm::Schedule::end_paths_
private

Definition at line 279 of file Schedule.h.

Referenced by clearCounters(), endJob(), fillEndPath(), getTriggerReport(), and runEndPaths().

TrigResPtr edm::Schedule::endpath_results_
private

Definition at line 273 of file Schedule.h.

Referenced by fillEndPath(), resetAll(), and Schedule().

volatile bool edm::Schedule::endpathsAreActive_
private

Definition at line 288 of file Schedule.h.

Referenced by enableEndPaths(), endPathsEnabled(), and processOneOccurrence().

TrigResPtr edm::Schedule::results_
private

Definition at line 272 of file Schedule.h.

Referenced by resetAll(), runTriggerPaths(), and Schedule().

WorkerPtr edm::Schedule::results_inserter_
private

Definition at line 275 of file Schedule.h.

Referenced by processOneOccurrence(), and Schedule().

State edm::Schedule::state_
private

Definition at line 268 of file Schedule.h.

Referenced by processOneOccurrence().

RunStopwatch::StopwatchPointer edm::Schedule::stopwatch_
private

Definition at line 284 of file Schedule.h.

Referenced by processOneOccurrence(), and timeCpuReal().

int edm::Schedule::total_events_
private

Definition at line 282 of file Schedule.h.

Referenced by clearCounters(), processOneOccurrence(), and totalEvents().

int edm::Schedule::total_passed_
private

Definition at line 283 of file Schedule.h.

Referenced by clearCounters(), processOneOccurrence(), and totalEventsPassed().

vstring edm::Schedule::trig_name_list_
private

Definition at line 269 of file Schedule.h.

Referenced by Schedule().

TrigPaths edm::Schedule::trig_paths_
private
boost::shared_ptr<UnscheduledCallProducer> edm::Schedule::unscheduled_
private

Definition at line 286 of file Schedule.h.

Referenced by processOneOccurrence(), Schedule(), and setupOnDemandSystem().

bool edm::Schedule::wantSummary_
private

Definition at line 281 of file Schedule.h.

Referenced by addToAllWorkers(), endJob(), fillEndPath(), and fillTrigPath().

WorkerRegistry edm::Schedule::worker_reg_
private

Definition at line 264 of file Schedule.h.

Referenced by fillWorkers(), and Schedule().