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 (ProductRegistry const &)
 
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
 
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, bool cleaningUpAfterException=false)
 
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, BranchIDListHelper &branchIDListHelper, ActionTable const &actions, boost::shared_ptr< ActivityRegistry > areg, boost::shared_ptr< ProcessConfiguration > processConfiguration, const ParameterSet *subProcPSet)
 
bool shouldWeCloseOutput () const
 
bool 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, vstring *labelsOnTriggerPaths)
 
void fillWorkers (ParameterSet &proc_pset, ProductRegistry &preg, boost::shared_ptr< ProcessConfiguration const > processConfiguration, std::string const &name, bool ignoreFilters, PathWorkers &out, vstring *labelsOnPaths)
 
void initializeEarlyDelete (edm::ParameterSet const &opts, edm::ProductRegistry const &preg, edm::ParameterSet const *subProcPSet)
 
void limitOutput (ParameterSet const &proc_pset, BranchIDLists const &branchIDLists)
 
void reduceParameterSet (ParameterSet &proc_pset, vstring &modulesInConfig, std::set< std::string > const &modulesInConfigSet, vstring &labelsOnTriggerPaths, vstring &shouldBeUsedLabels, std::map< std::string, std::vector< std::pair< std::string, int > > > &outputModulePathPositions)
 
void reportSkipped (EventPrincipal const &ep) const
 
void reportSkipped (LuminosityBlockPrincipal const &) const
 
void reportSkipped (RunPrincipal const &) const
 
void resetAll ()
 
void resetEarlyDelete ()
 
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_
 
std::vector< std::pair
< BranchID, unsigned int > > 
earlyDeleteBranchToCount_
 
std::vector< EarlyDeleteHelperearlyDeleteHelpers_
 
std::vector< unsigned int > earlyDeleteHelperToBranchIndicies_
 
vstring empty_trig_path_names_
 
std::vector< int > empty_trig_paths_
 
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 103 of file Schedule.h.

Member Typedef Documentation

Definition at line 111 of file Schedule.h.

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

Definition at line 110 of file Schedule.h.

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

Definition at line 107 of file Schedule.h.

Definition at line 115 of file Schedule.h.

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

Definition at line 106 of file Schedule.h.

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

Definition at line 108 of file Schedule.h.

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

Definition at line 105 of file Schedule.h.

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

Definition at line 109 of file Schedule.h.

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

Definition at line 113 of file Schedule.h.

Member Enumeration Documentation

Enumerator
Ready 
Running 
Latched 

Definition at line 126 of file Schedule.h.

Constructor & Destructor Documentation

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

Definition at line 281 of file Schedule.cc.

References act_table_, actReg_, addToAllWorkers(), all_output_workers_, all_workers_, edm::ProductRegistry::anyProductProduced(), edm::BranchIDListHelper::branchIDLists(), alignCSCRings::e, 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, initializeEarlyDelete(), edm::detail::ThreadSafeRegistry< KEY, T, E >::insertMapped(), edm::detail::ThreadSafeRegistry< KEY, T, E >::instance(), edm::Worker::kFilter, edm::Worker::kProducer, limitOutput(), edm::loadMissingDictionaries(), geometryDiff::opts, edm::ProductRegistry::productList(), reduceParameterSet(), edm::ParameterSet::registerIt(), results_, results_inserter_, edm::ProductRegistry::setFrozen(), trig_name_list_, unscheduled_, edm::BranchIDListHelper::updateRegistries(), worker_reg_, workersBegin(), and workersEnd().

288  :
289  worker_reg_(areg),
291  actReg_(areg),
292  state_(Ready),
293  trig_name_list_(tns.getTrigPaths()),
294  end_path_name_list_(tns.getEndPaths()),
295  results_(new HLTGlobalStatus(trig_name_list_.size())),
296  endpath_results_(), // delay!
298  all_workers_(),
300  trig_paths_(),
301  end_paths_(),
302  wantSummary_(tns.wantSummary()),
303  total_events_(),
304  total_passed_(),
305  stopwatch_(wantSummary_? new RunStopwatch::StopwatchPointer::element_type : static_cast<RunStopwatch::StopwatchPointer::element_type*> (nullptr)),
306  unscheduled_(new UnscheduledCallProducer),
307  endpathsAreActive_(true) {
308 
309  ParameterSet const& opts = proc_pset.getUntrackedParameterSet("options", ParameterSet());
310  bool hasPath = false;
311 
312  int trig_bitpos = 0;
313  vstring labelsOnTriggerPaths;
314  for (vstring::const_iterator i = trig_name_list_.begin(),
315  e = trig_name_list_.end();
316  i != e;
317  ++i) {
318  fillTrigPath(proc_pset, preg, processConfiguration, trig_bitpos, *i, results_, &labelsOnTriggerPaths);
319  ++trig_bitpos;
320  hasPath = true;
321  }
322 
323  if (hasPath) {
324  // the results inserter stands alone
325  results_inserter_ = makeInserter(proc_pset,
326  preg,
327  actions, actReg_, processConfiguration, results_);
329  }
330 
331  TrigResPtr epptr(new HLTGlobalStatus(end_path_name_list_.size()));
332  endpath_results_ = epptr;
333 
334  // fill normal endpaths
335  vstring::iterator eib(end_path_name_list_.begin()), eie(end_path_name_list_.end());
336  for (int bitpos = 0; eib != eie; ++eib, ++bitpos) {
337  fillEndPath(proc_pset, preg, processConfiguration, bitpos, *eib);
338  }
339 
340  //See if all modules were used
341  std::set<std::string> usedWorkerLabels;
342  for (AllWorkers::iterator itWorker = workersBegin();
343  itWorker != workersEnd();
344  ++itWorker) {
345  usedWorkerLabels.insert((*itWorker)->description().moduleLabel());
346  }
347  std::vector<std::string> modulesInConfig(proc_pset.getParameter<std::vector<std::string> >("@all_modules"));
348  std::set<std::string> modulesInConfigSet(modulesInConfig.begin(), modulesInConfig.end());
349  std::vector<std::string> unusedLabels;
350  set_difference(modulesInConfigSet.begin(), modulesInConfigSet.end(),
351  usedWorkerLabels.begin(), usedWorkerLabels.end(),
352  back_inserter(unusedLabels));
353  //does the configuration say we should allow on demand?
354  bool allowUnscheduled = opts.getUntrackedParameter<bool>("allowUnscheduled", false);
355  std::set<std::string> unscheduledLabels;
356  std::vector<std::string> shouldBeUsedLabels;
357  if (!unusedLabels.empty()) {
358  //Need to
359  // 1) create worker
360  // 2) if it is a WorkerT<EDProducer>, add it to our list
361  // 3) hand list to our delayed reader
362 
363  for (std::vector<std::string>::iterator itLabel = unusedLabels.begin(), itLabelEnd = unusedLabels.end();
364  itLabel != itLabelEnd;
365  ++itLabel) {
366  if (allowUnscheduled) {
367  bool isTracked;
368  ParameterSet* modulePSet(proc_pset.getPSetForUpdate(*itLabel, isTracked));
369  assert(isTracked);
370  assert(modulePSet != 0);
371  WorkerParams params(proc_pset, modulePSet, preg,
372  processConfiguration, *act_table_);
373  Worker* newWorker(worker_reg_.getWorker(params, *itLabel));
374  if (newWorker->moduleType() == Worker::kProducer ||
375  newWorker->moduleType() == Worker::kFilter) {
376  unscheduledLabels.insert(*itLabel);
377  unscheduled_->addWorker(newWorker);
378  //add to list so it gets reset each new event
379  addToAllWorkers(newWorker);
380  } else {
381  //not a producer so should be marked as not used
382  shouldBeUsedLabels.push_back(*itLabel);
383  }
384  } else {
385  //everthing is marked are unused so no 'on demand' allowed
386  shouldBeUsedLabels.push_back(*itLabel);
387  }
388  }
389  if (!shouldBeUsedLabels.empty()) {
390  std::ostringstream unusedStream;
391  unusedStream << "'" << shouldBeUsedLabels.front() << "'";
392  for (std::vector<std::string>::iterator itLabel = shouldBeUsedLabels.begin() + 1,
393  itLabelEnd = shouldBeUsedLabels.end();
394  itLabel != itLabelEnd;
395  ++itLabel) {
396  unusedStream << ",'" << *itLabel << "'";
397  }
398  LogInfo("path")
399  << "The following module labels are not assigned to any path:\n"
400  << unusedStream.str()
401  << "\n";
402  }
403  }
404  if (!unscheduledLabels.empty()) {
405  for (ProductRegistry::ProductList::const_iterator it = preg.productList().begin(),
406  itEnd = preg.productList().end();
407  it != itEnd;
408  ++it) {
409  if (it->second.produced() &&
410  it->second.branchType() == InEvent &&
411  unscheduledLabels.end() != unscheduledLabels.find(it->second.moduleLabel())) {
412  it->second.setOnDemand();
413  }
414  }
415  }
416 
417  std::map<std::string, std::vector<std::pair<std::string, int> > > outputModulePathPositions;
418  reduceParameterSet(proc_pset, modulesInConfig, modulesInConfigSet, labelsOnTriggerPaths, shouldBeUsedLabels, outputModulePathPositions);
419 
420  processEDAliases(proc_pset, processConfiguration->processName(), preg);
421 
422  proc_pset.registerIt();
423  pset::Registry::instance()->extra().setID(proc_pset.id());
424  processConfiguration->setParameterSetID(proc_pset.id());
425 
426  initializeEarlyDelete(opts,preg,subProcPSet);
427 
428  // This is used for a little sanity-check to make sure no code
429  // modifications alter the number of workers at a later date.
430  size_t all_workers_count = all_workers_.size();
431 
432  for (AllWorkers::iterator i = all_workers_.begin(), e = all_workers_.end();
433  i != e;
434  ++i) {
435 
436  // All the workers should be in all_workers_ by this point. Thus
437  // we can now fill all_output_workers_.
438  OutputWorker* ow = dynamic_cast<OutputWorker*>(*i);
439  if (ow) {
440  all_output_workers_.push_back(ow);
441  }
442  }
443  // Now that the output workers are filled in, set any output limits or information.
444  limitOutput(proc_pset, branchIDListHelper.branchIDLists());
445 
447 
448  preg.setFrozen();
449 
450  for (AllOutputWorkers::iterator i = all_output_workers_.begin(), e = all_output_workers_.end();
451  i != e; ++i) {
452  (*i)->setEventSelectionInfo(outputModulePathPositions, preg.anyProductProduced());
453  (*i)->selectProducts(preg);
454  }
455 
456  // Sanity check: make sure nobody has added a worker after we've
457  // already relied on all_workers_ being full.
458  assert (all_workers_count == all_workers_.size());
459 
460  ProcessConfigurationRegistry::instance()->insertMapped(*processConfiguration);
461  branchIDListHelper.updateRegistries(preg);
462  fillProductRegistryTransients(*processConfiguration, preg);
463  } // Schedule::Schedule
State state_
Definition: Schedule.h:296
void initializeEarlyDelete(edm::ParameterSet const &opts, edm::ProductRegistry const &preg, edm::ParameterSet const *subProcPSet)
Definition: Schedule.cc:466
int i
Definition: DBlmapReader.cc:9
roAction_t actions[nactions]
Definition: GenABIO.cc:200
AllOutputWorkers all_output_workers_
Definition: Schedule.h:305
WorkerPtr results_inserter_
Definition: Schedule.h:303
vector< string > vstring
Definition: ExoticaDQM.cc:75
WorkerRegistry worker_reg_
Definition: Schedule.h:292
static ThreadSafeRegistry * instance()
TrigPaths trig_paths_
Definition: Schedule.h:306
TrigResPtr endpath_results_
Definition: Schedule.h:301
int total_passed_
Definition: Schedule.h:328
bool insertMapped(value_type const &v)
boost::shared_ptr< HLTGlobalStatus > TrigResPtr
Definition: Schedule.h:108
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:878
RunStopwatch::StopwatchPointer stopwatch_
Definition: Schedule.h:329
void limitOutput(ParameterSet const &proc_pset, BranchIDLists const &branchIDLists)
Definition: Schedule.cc:734
void reduceParameterSet(ParameterSet &proc_pset, vstring &modulesInConfig, std::set< std::string > const &modulesInConfigSet, vstring &labelsOnTriggerPaths, vstring &shouldBeUsedLabels, std::map< std::string, std::vector< std::pair< std::string, int > > > &outputModulePathPositions)
Definition: Schedule.cc:616
vstring trig_name_list_
Definition: Schedule.h:297
ActionTable const * act_table_
Definition: Schedule.h:293
AllWorkers::const_iterator workersBegin() const
Definition: Schedule.h:231
volatile bool endpathsAreActive_
Definition: Schedule.h:333
TrigResPtr results_
Definition: Schedule.h:300
int total_events_
Definition: Schedule.h:327
void loadMissingDictionaries()
TrigPaths end_paths_
Definition: Schedule.h:307
bool wantSummary_
Definition: Schedule.h:326
void fillTrigPath(ParameterSet &proc_pset, ProductRegistry &preg, boost::shared_ptr< ProcessConfiguration const > processConfiguration, int bitpos, std::string const &name, TrigResPtr, vstring *labelsOnTriggerPaths)
Definition: Schedule.cc:850
Worker * getWorker(WorkerParams const &p, std::string const &moduleLabel)
Retrieve the particular instance of the worker.
vstring end_path_name_list_
Definition: Schedule.h:298
AllWorkers::const_iterator workersEnd() const
Definition: Schedule.h:235
void addToAllWorkers(Worker *w)
Definition: Schedule.cc:1482
boost::shared_ptr< ActivityRegistry > actReg_
Definition: Schedule.h:294
AllWorkers all_workers_
Definition: Schedule.h:304
boost::shared_ptr< UnscheduledCallProducer > unscheduled_
Definition: Schedule.h:331

Member Function Documentation

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

Definition at line 1482 of file Schedule.cc.

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

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

1482  {
1483  if (!search_all(all_workers_, w)) {
1484  if (wantSummary_) {
1485  w->useStopwatch();
1486  }
1487  all_workers_.push_back(w);
1488  }
1489  }
bool search_all(ForwardSequence const &s, Datum const &d)
Definition: Algorithms.h:46
bool wantSummary_
Definition: Schedule.h:326
T w() const
AllWorkers all_workers_
Definition: Schedule.h:304
void edm::Schedule::availablePaths ( std::vector< std::string > &  oLabelsToFill) const

adds to oLabelsToFill the labels for all paths in the process

Definition at line 1373 of file Schedule.cc.

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

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

1373  {
1374  oLabelsToFill.reserve(trig_paths_.size());
1375  std::transform(trig_paths_.begin(),
1376  trig_paths_.end(),
1377  std::back_inserter(oLabelsToFill),
1378  boost::bind(&Path::name, _1));
1379  }
TrigPaths trig_paths_
Definition: Schedule.h:306
std::string const & name() const
Definition: Path.h:58
void edm::Schedule::beginJob ( ProductRegistry const &  iRegistry)

Definition at line 1316 of file Schedule.cc.

References all_workers_, edm::Worker::beginJob(), edm::for_all(), edm::InEvent, edm::InLumi, edm::InRun, edm::loadMissingDictionaries(), and edm::ProductRegistry::productLookup().

1316  {
1317  auto const runLookup = iRegistry.productLookup(InRun);
1318  auto const lumiLookup = iRegistry.productLookup(InLumi);
1319  auto const eventLookup = iRegistry.productLookup(InEvent);
1320  for(auto & worker: all_workers_) {
1321  worker->updateLookup(InRun,*runLookup);
1322  worker->updateLookup(InLumi,*lumiLookup);
1323  worker->updateLookup(InEvent,*eventLookup);
1324  }
1325 
1326  for_all(all_workers_, boost::bind(&Worker::beginJob, _1));
1328  }
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:16
void loadMissingDictionaries()
void beginJob()
Definition: Worker.cc:72
AllWorkers all_workers_
Definition: Schedule.h:304
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 1337 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().

1338  {
1339  Worker* found = 0;
1340  for (AllWorkers::const_iterator it=all_workers_.begin(), itEnd=all_workers_.end();
1341  it != itEnd; ++it) {
1342  if ((*it)->description().moduleLabel() == iLabel) {
1343  found = *it;
1344  break;
1345  }
1346  }
1347  if (0 == found) {
1348  return false;
1349  }
1350 
1351  std::auto_ptr<Maker> wm(MakerPluginFactory::get()->create(found->description().moduleName()));
1352  wm->swapModule(found, iPSet);
1353  found->beginJob();
1354  return true;
1355  }
SurfaceDeformation * create(int type, const std::vector< double > &params)
T get(const Candidate &c)
Definition: component.h:56
AllWorkers all_workers_
Definition: Schedule.h:304
void edm::Schedule::clearCounters ( )

Clear all the counters in the trigger report.

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

1467  {
1469  for_all(trig_paths_, boost::bind(&Path::clearCounters, _1));
1470  for_all(end_paths_, boost::bind(&Path::clearCounters, _1));
1471  for_all(all_workers_, boost::bind(&Worker::clearCounters, _1));
1472  }
TrigPaths trig_paths_
Definition: Schedule.h:306
void clearCounters()
Definition: Worker.h:96
int total_passed_
Definition: Schedule.h:328
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:16
int total_events_
Definition: Schedule.h:327
TrigPaths end_paths_
Definition: Schedule.h:307
void clearCounters()
Definition: Path.cc:143
AllWorkers all_workers_
Definition: Schedule.h:304
void edm::Schedule::closeOutputFiles ( )

Definition at line 1273 of file Schedule.cc.

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

1273  {
1275  }
AllOutputWorkers all_output_workers_
Definition: Schedule.h:305
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 1399 of file Schedule.cc.

References endpathsAreActive_.

1399  {
1400  endpathsAreActive_ = active;
1401  }
volatile bool endpathsAreActive_
Definition: Schedule.h:333
void edm::Schedule::endJob ( ExceptionCollector collector)

Definition at line 900 of file Schedule.cc.

References edm::ExceptionCollector::addException(), edm::convertException::badAllocToEDM(), trackerHits::c, edm::convertException::charPtrToEDM(), alignCSCRings::e, empty_trig_path_names_, empty_trig_paths_, end_paths_, cppFunctionSkipper::exception, i, max(), pi, edm::convertException::stdToEDM(), AlCaHLTBitMon_QueryRunRegistry::string, edm::convertException::stringToEDM(), timeCpuReal(), totalEvents(), totalEventsFailed(), totalEventsPassed(), trig_paths_, edm::convertException::unknownToEDM(), wantSummary_, workersBegin(), and workersEnd().

900  {
901  bool failure = false;
902  AllWorkers::iterator ai(workersBegin()), ae(workersEnd());
903  for (; ai != ae; ++ai) {
904  try {
905  try {
906  (*ai)->endJob();
907  }
908  catch (cms::Exception& e) { throw; }
909  catch (std::bad_alloc& bda) { convertException::badAllocToEDM(); }
910  catch (std::exception& e) { convertException::stdToEDM(e); }
912  catch (char const* c) { convertException::charPtrToEDM(c); }
913  catch (...) { convertException::unknownToEDM(); }
914  }
915  catch (cms::Exception const& ex) {
916  collector.addException(ex);
917  failure = true;
918  }
919  }
920  if (failure) {
921  return;
922  }
923 
924  if (wantSummary_ == false) return;
925 
926  TrigPaths::const_iterator pi, pe;
927 
928  // The trigger report (pass/fail etc.):
929 
930  LogVerbatim("FwkSummary") << "";
931  LogVerbatim("FwkSummary") << "TrigReport " << "---------- Event Summary ------------";
932  if(!trig_paths_.empty()) {
933  LogVerbatim("FwkSummary") << "TrigReport"
934  << " Events total = " << totalEvents()
935  << " passed = " << totalEventsPassed()
936  << " failed = " << (totalEventsFailed())
937  << "";
938  } else {
939  LogVerbatim("FwkSummary") << "TrigReport"
940  << " Events total = " << totalEvents()
941  << " passed = " << totalEvents()
942  << " failed = 0";
943  }
944 
945  LogVerbatim("FwkSummary") << "";
946  LogVerbatim("FwkSummary") << "TrigReport " << "---------- Path Summary ------------";
947  LogVerbatim("FwkSummary") << "TrigReport "
948  << std::right << std::setw(10) << "Trig Bit#" << " "
949  << std::right << std::setw(10) << "Run" << " "
950  << std::right << std::setw(10) << "Passed" << " "
951  << std::right << std::setw(10) << "Failed" << " "
952  << std::right << std::setw(10) << "Error" << " "
953  << "Name" << "";
954  pi = trig_paths_.begin();
955  pe = trig_paths_.end();
956  for (; pi != pe; ++pi) {
957  LogVerbatim("FwkSummary") << "TrigReport "
958  << std::right << std::setw(5) << 1
959  << std::right << std::setw(5) << pi->bitPosition() << " "
960  << std::right << std::setw(10) << pi->timesRun() << " "
961  << std::right << std::setw(10) << pi->timesPassed() << " "
962  << std::right << std::setw(10) << pi->timesFailed() << " "
963  << std::right << std::setw(10) << pi->timesExcept() << " "
964  << pi->name() << "";
965  }
966 
967  std::vector<int>::const_iterator epi = empty_trig_paths_.begin();
968  std::vector<int>::const_iterator epe = empty_trig_paths_.end();
969  std::vector<std::string>::const_iterator epn = empty_trig_path_names_.begin();
970  for (; epi != epe; ++epi, ++epn) {
971 
972  LogVerbatim("FwkSummary") << "TrigReport "
973  << std::right << std::setw(5) << 1
974  << std::right << std::setw(5) << *epi << " "
975  << std::right << std::setw(10) << totalEvents() << " "
976  << std::right << std::setw(10) << totalEvents() << " "
977  << std::right << std::setw(10) << 0 << " "
978  << std::right << std::setw(10) << 0 << " "
979  << *epn << "";
980  }
981 
982  LogVerbatim("FwkSummary") << "";
983  LogVerbatim("FwkSummary") << "TrigReport " << "-------End-Path Summary ------------";
984  LogVerbatim("FwkSummary") << "TrigReport "
985  << std::right << std::setw(10) << "Trig Bit#" << " "
986  << std::right << std::setw(10) << "Run" << " "
987  << std::right << std::setw(10) << "Passed" << " "
988  << std::right << std::setw(10) << "Failed" << " "
989  << std::right << std::setw(10) << "Error" << " "
990  << "Name" << "";
991  pi = end_paths_.begin();
992  pe = end_paths_.end();
993  for (; pi != pe; ++pi) {
994  LogVerbatim("FwkSummary") << "TrigReport "
995  << std::right << std::setw(5) << 0
996  << std::right << std::setw(5) << pi->bitPosition() << " "
997  << std::right << std::setw(10) << pi->timesRun() << " "
998  << std::right << std::setw(10) << pi->timesPassed() << " "
999  << std::right << std::setw(10) << pi->timesFailed() << " "
1000  << std::right << std::setw(10) << pi->timesExcept() << " "
1001  << pi->name() << "";
1002  }
1003 
1004  pi = trig_paths_.begin();
1005  pe = trig_paths_.end();
1006  for (; pi != pe; ++pi) {
1007  LogVerbatim("FwkSummary") << "";
1008  LogVerbatim("FwkSummary") << "TrigReport " << "---------- Modules in Path: " << pi->name() << " ------------";
1009  LogVerbatim("FwkSummary") << "TrigReport "
1010  << std::right << std::setw(10) << "Trig Bit#" << " "
1011  << std::right << std::setw(10) << "Visited" << " "
1012  << std::right << std::setw(10) << "Passed" << " "
1013  << std::right << std::setw(10) << "Failed" << " "
1014  << std::right << std::setw(10) << "Error" << " "
1015  << "Name" << "";
1016 
1017  for (unsigned int i = 0; i < pi->size(); ++i) {
1018  LogVerbatim("FwkSummary") << "TrigReport "
1019  << std::right << std::setw(5) << 1
1020  << std::right << std::setw(5) << pi->bitPosition() << " "
1021  << std::right << std::setw(10) << pi->timesVisited(i) << " "
1022  << std::right << std::setw(10) << pi->timesPassed(i) << " "
1023  << std::right << std::setw(10) << pi->timesFailed(i) << " "
1024  << std::right << std::setw(10) << pi->timesExcept(i) << " "
1025  << pi->getWorker(i)->description().moduleLabel() << "";
1026  }
1027  }
1028 
1029  pi = end_paths_.begin();
1030  pe = end_paths_.end();
1031  for (; pi != pe; ++pi) {
1032  LogVerbatim("FwkSummary") << "";
1033  LogVerbatim("FwkSummary") << "TrigReport " << "------ Modules in End-Path: " << pi->name() << " ------------";
1034  LogVerbatim("FwkSummary") << "TrigReport "
1035  << std::right << std::setw(10) << "Trig Bit#" << " "
1036  << std::right << std::setw(10) << "Visited" << " "
1037  << std::right << std::setw(10) << "Passed" << " "
1038  << std::right << std::setw(10) << "Failed" << " "
1039  << std::right << std::setw(10) << "Error" << " "
1040  << "Name" << "";
1041 
1042  for (unsigned int i = 0; i < pi->size(); ++i) {
1043  LogVerbatim("FwkSummary") << "TrigReport "
1044  << std::right << std::setw(5) << 0
1045  << std::right << std::setw(5) << pi->bitPosition() << " "
1046  << std::right << std::setw(10) << pi->timesVisited(i) << " "
1047  << std::right << std::setw(10) << pi->timesPassed(i) << " "
1048  << std::right << std::setw(10) << pi->timesFailed(i) << " "
1049  << std::right << std::setw(10) << pi->timesExcept(i) << " "
1050  << pi->getWorker(i)->description().moduleLabel() << "";
1051  }
1052  }
1053 
1054  LogVerbatim("FwkSummary") << "";
1055  LogVerbatim("FwkSummary") << "TrigReport " << "---------- Module Summary ------------";
1056  LogVerbatim("FwkSummary") << "TrigReport "
1057  << std::right << std::setw(10) << "Visited" << " "
1058  << std::right << std::setw(10) << "Run" << " "
1059  << std::right << std::setw(10) << "Passed" << " "
1060  << std::right << std::setw(10) << "Failed" << " "
1061  << std::right << std::setw(10) << "Error" << " "
1062  << "Name" << "";
1063  ai = workersBegin();
1064  ae = workersEnd();
1065  for (; ai != ae; ++ai) {
1066  LogVerbatim("FwkSummary") << "TrigReport "
1067  << std::right << std::setw(10) << (*ai)->timesVisited() << " "
1068  << std::right << std::setw(10) << (*ai)->timesRun() << " "
1069  << std::right << std::setw(10) << (*ai)->timesPassed() << " "
1070  << std::right << std::setw(10) << (*ai)->timesFailed() << " "
1071  << std::right << std::setw(10) << (*ai)->timesExcept() << " "
1072  << (*ai)->description().moduleLabel() << "";
1073 
1074  }
1075  LogVerbatim("FwkSummary") << "";
1076 
1077  // The timing report (CPU and Real Time):
1078 
1079  LogVerbatim("FwkSummary") << "TimeReport " << "---------- Event Summary ---[sec]----";
1080  LogVerbatim("FwkSummary") << "TimeReport"
1081  << std::setprecision(6) << std::fixed
1082  << " CPU/event = " << timeCpuReal().first/std::max(1, totalEvents())
1083  << " Real/event = " << timeCpuReal().second/std::max(1, totalEvents())
1084  << "";
1085 
1086  LogVerbatim("FwkSummary") << "";
1087  LogVerbatim("FwkSummary") << "TimeReport " << "---------- Path Summary ---[sec]----";
1088  LogVerbatim("FwkSummary") << "TimeReport "
1089  << std::right << std::setw(22) << "per event "
1090  << std::right << std::setw(22) << "per path-run "
1091  << "";
1092  LogVerbatim("FwkSummary") << "TimeReport "
1093  << std::right << std::setw(10) << "CPU" << " "
1094  << std::right << std::setw(10) << "Real" << " "
1095  << std::right << std::setw(10) << "CPU" << " "
1096  << std::right << std::setw(10) << "Real" << " "
1097  << "Name" << "";
1098  pi = trig_paths_.begin();
1099  pe = trig_paths_.end();
1100  for (; pi != pe; ++pi) {
1101  LogVerbatim("FwkSummary") << "TimeReport "
1102  << std::setprecision(6) << std::fixed
1103  << std::right << std::setw(10) << pi->timeCpuReal().first/std::max(1, totalEvents()) << " "
1104  << std::right << std::setw(10) << pi->timeCpuReal().second/std::max(1, totalEvents()) << " "
1105  << std::right << std::setw(10) << pi->timeCpuReal().first/std::max(1, pi->timesRun()) << " "
1106  << std::right << std::setw(10) << pi->timeCpuReal().second/std::max(1, pi->timesRun()) << " "
1107  << pi->name() << "";
1108  }
1109  LogVerbatim("FwkSummary") << "TimeReport "
1110  << std::right << std::setw(10) << "CPU" << " "
1111  << std::right << std::setw(10) << "Real" << " "
1112  << std::right << std::setw(10) << "CPU" << " "
1113  << std::right << std::setw(10) << "Real" << " "
1114  << "Name" << "";
1115  LogVerbatim("FwkSummary") << "TimeReport "
1116  << std::right << std::setw(22) << "per event "
1117  << std::right << std::setw(22) << "per path-run "
1118  << "";
1119 
1120  LogVerbatim("FwkSummary") << "";
1121  LogVerbatim("FwkSummary") << "TimeReport " << "-------End-Path Summary ---[sec]----";
1122  LogVerbatim("FwkSummary") << "TimeReport "
1123  << std::right << std::setw(22) << "per event "
1124  << std::right << std::setw(22) << "per endpath-run "
1125  << "";
1126  LogVerbatim("FwkSummary") << "TimeReport "
1127  << std::right << std::setw(10) << "CPU" << " "
1128  << std::right << std::setw(10) << "Real" << " "
1129  << std::right << std::setw(10) << "CPU" << " "
1130  << std::right << std::setw(10) << "Real" << " "
1131  << "Name" << "";
1132  pi = end_paths_.begin();
1133  pe = end_paths_.end();
1134  for (; pi != pe; ++pi) {
1135  LogVerbatim("FwkSummary") << "TimeReport "
1136  << std::setprecision(6) << std::fixed
1137  << std::right << std::setw(10) << pi->timeCpuReal().first/std::max(1, totalEvents()) << " "
1138  << std::right << std::setw(10) << pi->timeCpuReal().second/std::max(1, totalEvents()) << " "
1139  << std::right << std::setw(10) << pi->timeCpuReal().first/std::max(1, pi->timesRun()) << " "
1140  << std::right << std::setw(10) << pi->timeCpuReal().second/std::max(1, pi->timesRun()) << " "
1141  << pi->name() << "";
1142  }
1143  LogVerbatim("FwkSummary") << "TimeReport "
1144  << std::right << std::setw(10) << "CPU" << " "
1145  << std::right << std::setw(10) << "Real" << " "
1146  << std::right << std::setw(10) << "CPU" << " "
1147  << std::right << std::setw(10) << "Real" << " "
1148  << "Name" << "";
1149  LogVerbatim("FwkSummary") << "TimeReport "
1150  << std::right << std::setw(22) << "per event "
1151  << std::right << std::setw(22) << "per endpath-run "
1152  << "";
1153 
1154  pi = trig_paths_.begin();
1155  pe = trig_paths_.end();
1156  for (; pi != pe; ++pi) {
1157  LogVerbatim("FwkSummary") << "";
1158  LogVerbatim("FwkSummary") << "TimeReport " << "---------- Modules in Path: " << pi->name() << " ---[sec]----";
1159  LogVerbatim("FwkSummary") << "TimeReport "
1160  << std::right << std::setw(22) << "per event "
1161  << std::right << std::setw(22) << "per module-visit "
1162  << "";
1163  LogVerbatim("FwkSummary") << "TimeReport "
1164  << std::right << std::setw(10) << "CPU" << " "
1165  << std::right << std::setw(10) << "Real" << " "
1166  << std::right << std::setw(10) << "CPU" << " "
1167  << std::right << std::setw(10) << "Real" << " "
1168  << "Name" << "";
1169  for (unsigned int i = 0; i < pi->size(); ++i) {
1170  LogVerbatim("FwkSummary") << "TimeReport "
1171  << std::setprecision(6) << std::fixed
1172  << std::right << std::setw(10) << pi->timeCpuReal(i).first/std::max(1, totalEvents()) << " "
1173  << std::right << std::setw(10) << pi->timeCpuReal(i).second/std::max(1, totalEvents()) << " "
1174  << std::right << std::setw(10) << pi->timeCpuReal(i).first/std::max(1, pi->timesVisited(i)) << " "
1175  << std::right << std::setw(10) << pi->timeCpuReal(i).second/std::max(1, pi->timesVisited(i)) << " "
1176  << pi->getWorker(i)->description().moduleLabel() << "";
1177  }
1178  }
1179  LogVerbatim("FwkSummary") << "TimeReport "
1180  << std::right << std::setw(10) << "CPU" << " "
1181  << std::right << std::setw(10) << "Real" << " "
1182  << std::right << std::setw(10) << "CPU" << " "
1183  << std::right << std::setw(10) << "Real" << " "
1184  << "Name" << "";
1185  LogVerbatim("FwkSummary") << "TimeReport "
1186  << std::right << std::setw(22) << "per event "
1187  << std::right << std::setw(22) << "per module-visit "
1188  << "";
1189 
1190  pi = end_paths_.begin();
1191  pe = end_paths_.end();
1192  for (; pi != pe; ++pi) {
1193  LogVerbatim("FwkSummary") << "";
1194  LogVerbatim("FwkSummary") << "TimeReport " << "------ Modules in End-Path: " << pi->name() << " ---[sec]----";
1195  LogVerbatim("FwkSummary") << "TimeReport "
1196  << std::right << std::setw(22) << "per event "
1197  << std::right << std::setw(22) << "per module-visit "
1198  << "";
1199  LogVerbatim("FwkSummary") << "TimeReport "
1200  << std::right << std::setw(10) << "CPU" << " "
1201  << std::right << std::setw(10) << "Real" << " "
1202  << std::right << std::setw(10) << "CPU" << " "
1203  << std::right << std::setw(10) << "Real" << " "
1204  << "Name" << "";
1205  for (unsigned int i = 0; i < pi->size(); ++i) {
1206  LogVerbatim("FwkSummary") << "TimeReport "
1207  << std::setprecision(6) << std::fixed
1208  << std::right << std::setw(10) << pi->timeCpuReal(i).first/std::max(1, totalEvents()) << " "
1209  << std::right << std::setw(10) << pi->timeCpuReal(i).second/std::max(1, totalEvents()) << " "
1210  << std::right << std::setw(10) << pi->timeCpuReal(i).first/std::max(1, pi->timesVisited(i)) << " "
1211  << std::right << std::setw(10) << pi->timeCpuReal(i).second/std::max(1, pi->timesVisited(i)) << " "
1212  << pi->getWorker(i)->description().moduleLabel() << "";
1213  }
1214  }
1215  LogVerbatim("FwkSummary") << "TimeReport "
1216  << std::right << std::setw(10) << "CPU" << " "
1217  << std::right << std::setw(10) << "Real" << " "
1218  << std::right << std::setw(10) << "CPU" << " "
1219  << std::right << std::setw(10) << "Real" << " "
1220  << "Name" << "";
1221  LogVerbatim("FwkSummary") << "TimeReport "
1222  << std::right << std::setw(22) << "per event "
1223  << std::right << std::setw(22) << "per module-visit "
1224  << "";
1225 
1226  LogVerbatim("FwkSummary") << "";
1227  LogVerbatim("FwkSummary") << "TimeReport " << "---------- Module Summary ---[sec]----";
1228  LogVerbatim("FwkSummary") << "TimeReport "
1229  << std::right << std::setw(22) << "per event "
1230  << std::right << std::setw(22) << "per module-run "
1231  << std::right << std::setw(22) << "per module-visit "
1232  << "";
1233  LogVerbatim("FwkSummary") << "TimeReport "
1234  << std::right << std::setw(10) << "CPU" << " "
1235  << std::right << std::setw(10) << "Real" << " "
1236  << std::right << std::setw(10) << "CPU" << " "
1237  << std::right << std::setw(10) << "Real" << " "
1238  << std::right << std::setw(10) << "CPU" << " "
1239  << std::right << std::setw(10) << "Real" << " "
1240  << "Name" << "";
1241  ai = workersBegin();
1242  ae = workersEnd();
1243  for (; ai != ae; ++ai) {
1244  LogVerbatim("FwkSummary") << "TimeReport "
1245  << std::setprecision(6) << std::fixed
1246  << std::right << std::setw(10) << (*ai)->timeCpuReal().first/std::max(1, totalEvents()) << " "
1247  << std::right << std::setw(10) << (*ai)->timeCpuReal().second/std::max(1, totalEvents()) << " "
1248  << std::right << std::setw(10) << (*ai)->timeCpuReal().first/std::max(1, (*ai)->timesRun()) << " "
1249  << std::right << std::setw(10) << (*ai)->timeCpuReal().second/std::max(1, (*ai)->timesRun()) << " "
1250  << std::right << std::setw(10) << (*ai)->timeCpuReal().first/std::max(1, (*ai)->timesVisited()) << " "
1251  << std::right << std::setw(10) << (*ai)->timeCpuReal().second/std::max(1, (*ai)->timesVisited()) << " "
1252  << (*ai)->description().moduleLabel() << "";
1253  }
1254  LogVerbatim("FwkSummary") << "TimeReport "
1255  << std::right << std::setw(10) << "CPU" << " "
1256  << std::right << std::setw(10) << "Real" << " "
1257  << std::right << std::setw(10) << "CPU" << " "
1258  << std::right << std::setw(10) << "Real" << " "
1259  << std::right << std::setw(10) << "CPU" << " "
1260  << std::right << std::setw(10) << "Real" << " "
1261  << "Name" << "";
1262  LogVerbatim("FwkSummary") << "TimeReport "
1263  << std::right << std::setw(22) << "per event "
1264  << std::right << std::setw(22) << "per module-run "
1265  << std::right << std::setw(22) << "per module-visit "
1266  << "";
1267 
1268  LogVerbatim("FwkSummary") << "";
1269  LogVerbatim("FwkSummary") << "T---Report end!" << "";
1270  LogVerbatim("FwkSummary") << "";
1271  }
int i
Definition: DBlmapReader.cc:9
std::pair< double, double > timeCpuReal() const
Definition: Schedule.h:169
TrigPaths trig_paths_
Definition: Schedule.h:306
int totalEventsFailed() const
Definition: Schedule.h:203
int totalEventsPassed() const
Definition: Schedule.h:197
const T & max(const T &a, const T &b)
int totalEvents() const
Definition: Schedule.h:191
void stdToEDM(std::exception const &e)
std::vector< int > empty_trig_paths_
Definition: Schedule.h:308
AllWorkers::const_iterator workersBegin() const
Definition: Schedule.h:231
void charPtrToEDM(char const *c)
void stringToEDM(std::string &s)
vstring empty_trig_path_names_
Definition: Schedule.h:309
TrigPaths end_paths_
Definition: Schedule.h:307
bool wantSummary_
Definition: Schedule.h:326
double pi
AllWorkers::const_iterator workersEnd() const
Definition: Schedule.h:235
bool edm::Schedule::endPathsEnabled ( ) const

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

Definition at line 1404 of file Schedule.cc.

References endpathsAreActive_.

1404  {
1405  return endpathsAreActive_;
1406  }
volatile bool endpathsAreActive_
Definition: Schedule.h:333
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 878 of file Schedule.cc.

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

Referenced by Schedule().

881  {
882  PathWorkers tmpworkers;
883  fillWorkers(proc_pset, preg, processConfiguration, name, true, tmpworkers, 0);
884  Workers holder;
885 
886  for (PathWorkers::iterator wi(tmpworkers.begin()), we(tmpworkers.end()); wi != we; ++wi) {
887  holder.push_back(wi->getWorker());
888  }
889 
890  if (!tmpworkers.empty()) {
891  Path p(bitpos, name, tmpworkers, endpath_results_, *act_table_, actReg_, true);
892  if (wantSummary_) {
893  p.useStopwatch();
894  }
895  end_paths_.push_back(p);
896  }
897  for_all(holder, boost::bind(&Schedule::addToAllWorkers, this, _1));
898  }
std::vector< WorkerInPath > PathWorkers
Definition: Schedule.h:115
TrigResPtr endpath_results_
Definition: Schedule.h:301
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:16
ActionTable const * act_table_
Definition: Schedule.h:293
std::vector< Worker * > Workers
Definition: Schedule.h:113
TrigPaths end_paths_
Definition: Schedule.h:307
bool wantSummary_
Definition: Schedule.h:326
void fillWorkers(ParameterSet &proc_pset, ProductRegistry &preg, boost::shared_ptr< ProcessConfiguration const > processConfiguration, std::string const &name, bool ignoreFilters, PathWorkers &out, vstring *labelsOnPaths)
Definition: Schedule.cc:792
void addToAllWorkers(Worker *w)
Definition: Schedule.cc:1482
boost::shared_ptr< ActivityRegistry > actReg_
Definition: Schedule.h:294
void edm::Schedule::fillTrigPath ( ParameterSet proc_pset,
ProductRegistry preg,
boost::shared_ptr< ProcessConfiguration const >  processConfiguration,
int  bitpos,
std::string const &  name,
TrigResPtr  trptr,
vstring labelsOnTriggerPaths 
)
private

Definition at line 850 of file Schedule.cc.

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

Referenced by Schedule().

854  {
855  PathWorkers tmpworkers;
856  Workers holder;
857  fillWorkers(proc_pset, preg, processConfiguration, name, false, tmpworkers, labelsOnTriggerPaths);
858 
859  for (PathWorkers::iterator wi(tmpworkers.begin()),
860  we(tmpworkers.end()); wi != we; ++wi) {
861  holder.push_back(wi->getWorker());
862  }
863 
864  // an empty path will cause an extra bit that is not used
865  if (!tmpworkers.empty()) {
866  Path p(bitpos, name, tmpworkers, trptr, *act_table_, actReg_, false);
867  if (wantSummary_) {
868  p.useStopwatch();
869  }
870  trig_paths_.push_back(p);
871  } else {
872  empty_trig_paths_.push_back(bitpos);
873  empty_trig_path_names_.push_back(name);
874  }
875  for_all(holder, boost::bind(&Schedule::addToAllWorkers, this, _1));
876  }
std::vector< WorkerInPath > PathWorkers
Definition: Schedule.h:115
TrigPaths trig_paths_
Definition: Schedule.h:306
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:16
std::vector< int > empty_trig_paths_
Definition: Schedule.h:308
ActionTable const * act_table_
Definition: Schedule.h:293
std::vector< Worker * > Workers
Definition: Schedule.h:113
vstring empty_trig_path_names_
Definition: Schedule.h:309
bool wantSummary_
Definition: Schedule.h:326
void fillWorkers(ParameterSet &proc_pset, ProductRegistry &preg, boost::shared_ptr< ProcessConfiguration const > processConfiguration, std::string const &name, bool ignoreFilters, PathWorkers &out, vstring *labelsOnPaths)
Definition: Schedule.cc:792
void addToAllWorkers(Worker *w)
Definition: Schedule.cc:1482
boost::shared_ptr< ActivityRegistry > actReg_
Definition: Schedule.h:294
void edm::Schedule::fillWorkers ( ParameterSet proc_pset,
ProductRegistry preg,
boost::shared_ptr< ProcessConfiguration const >  processConfiguration,
std::string const &  name,
bool  ignoreFilters,
PathWorkers out,
vstring labelsOnPaths 
)
private

Definition at line 792 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, edm::Worker::kFilter, edm::ModuleDescription::moduleName(), edm::Worker::moduleType(), mergeVDriftHistosByStation::name, edm::WorkerInPath::Normal, edm::search_all(), AlCaHLTBitMon_QueryRunRegistry::string, edm::WorkerInPath::Veto, and worker_reg_.

Referenced by fillEndPath(), and fillTrigPath().

798  {
799  vstring modnames = proc_pset.getParameter<vstring>(name);
800  vstring::iterator it(modnames.begin()), ie(modnames.end());
801  PathWorkers tmpworkers;
802 
803  for (; it != ie; ++it) {
804 
805  if (labelsOnPaths) labelsOnPaths->push_back(*it);
806 
808  if ((*it)[0] == '!') filterAction = WorkerInPath::Veto;
809  else if ((*it)[0] == '-') filterAction = WorkerInPath::Ignore;
810 
811  std::string moduleLabel = *it;
812  if (filterAction != WorkerInPath::Normal) moduleLabel.erase(0, 1);
813 
814  bool isTracked;
815  ParameterSet* modpset = proc_pset.getPSetForUpdate(moduleLabel, isTracked);
816  if (modpset == 0) {
817  std::string pathType("endpath");
819  pathType = std::string("path");
820  }
822  "The unknown module label \"" << moduleLabel <<
823  "\" appears in " << pathType << " \"" << name <<
824  "\"\n please check spelling or remove that label from the path.";
825  }
826  assert(isTracked);
827 
828  WorkerParams params(proc_pset, modpset, preg, processConfiguration, *act_table_);
829  Worker* worker = worker_reg_.getWorker(params, moduleLabel);
830  if (ignoreFilters && filterAction != WorkerInPath::Ignore && worker->moduleType()==Worker::kFilter) {
831  // We have a filter on an end path, and the filter is not explicitly ignored.
832  // See if the filter is allowed.
833  std::vector<std::string> allowed_filters = proc_pset.getUntrackedParameter<vstring>("@filters_on_endpaths");
834  if (!search_all(allowed_filters, worker->description().moduleName())) {
835  // Filter is not allowed. Ignore the result, and issue a warning.
836  filterAction = WorkerInPath::Ignore;
837  LogWarning("FilterOnEndPath")
838  << "The EDFilter '" << worker->description().moduleName() << "' with module label '" << moduleLabel << "' appears on EndPath '" << name << "'.\n"
839  << "The return value of the filter will be ignored.\n"
840  << "To suppress this warning, either remove the filter from the endpath,\n"
841  << "or explicitly ignore it in the configuration by using cms.ignore().\n";
842  }
843  }
844  tmpworkers.emplace_back(worker, filterAction);
845  }
846 
847  out.swap(tmpworkers);
848  }
vector< string > vstring
Definition: ExoticaDQM.cc:75
WorkerRegistry worker_reg_
Definition: Schedule.h:292
std::vector< WorkerInPath > PathWorkers
Definition: Schedule.h:115
ActionTable const * act_table_
Definition: Schedule.h:293
tuple out
Definition: dbtoconf.py:99
bool search_all(ForwardSequence const &s, Datum const &d)
Definition: Algorithms.h:46
Worker * getWorker(WorkerParams const &p, std::string const &moduleLabel)
Retrieve the particular instance of the worker.
vstring end_path_name_list_
Definition: Schedule.h:298
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 1358 of file Schedule.cc.

References all_workers_, alignCSCRings::e, i, AlCaHLTBitMon_ParallelJobs::p, query::result, workersBegin(), and workersEnd().

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

1358  {
1359  AllWorkers::const_iterator i(workersBegin());
1360  AllWorkers::const_iterator e(workersEnd());
1361 
1362  std::vector<ModuleDescription const*> result;
1363  result.reserve(all_workers_.size());
1364 
1365  for (; i != e; ++i) {
1366  ModuleDescription const* p = (*i)->descPtr();
1367  result.push_back(p);
1368  }
1369  return result;
1370  }
int i
Definition: DBlmapReader.cc:9
tuple result
Definition: query.py:137
AllWorkers::const_iterator workersBegin() const
Definition: Schedule.h:231
AllWorkers::const_iterator workersEnd() const
Definition: Schedule.h:235
AllWorkers all_workers_
Definition: Schedule.h:304
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 1456 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.

1456  {
1457  rep.eventSummary.totalEvents = totalEvents();
1458  rep.eventSummary.totalEventsPassed = totalEventsPassed();
1459  rep.eventSummary.totalEventsFailed = totalEventsFailed();
1460 
1461  fill_summary(trig_paths_, rep.trigPathSummaries, &fillPathSummary);
1462  fill_summary(end_paths_, rep.endPathSummaries, &fillPathSummary);
1463  fill_summary(all_workers_, rep.workerSummaries, &fillWorkerSummary);
1464  }
string rep
Definition: cuy.py:1188
void fillWorkerSummary(Worker const *pw, WorkerSummary &sum)
Definition: Schedule.cc:1451
TrigPaths trig_paths_
Definition: Schedule.h:306
int totalEventsFailed() const
Definition: Schedule.h:203
int totalEventsPassed() const
Definition: Schedule.h:197
int totalEvents() const
Definition: Schedule.h:191
TrigPaths end_paths_
Definition: Schedule.h:307
void fillPathSummary(Path const &path, PathSummary &sum)
Definition: Schedule.cc:1424
AllWorkers all_workers_
Definition: Schedule.h:304
void edm::Schedule::initializeEarlyDelete ( edm::ParameterSet const &  opts,
edm::ProductRegistry const &  preg,
edm::ParameterSet const *  subProcPSet 
)
private

Definition at line 466 of file Schedule.cc.

References all_workers_, delta, alignCSCRings::e, earlyDeleteBranchToCount_, earlyDeleteHelpers_, earlyDeleteHelperToBranchIndicies_, end_paths_, newFWLiteAna::found, edm::detail::ThreadSafeRegistry< KEY, T, E >::getMapped(), i, getHLTprescales::index, edm::InEvent, edm::detail::ThreadSafeRegistry< KEY, T, E >::instance(), edm::OutputWorker::keptProducts(), prof2calltree::l, n, AlCaHLTBitMon_ParallelJobs::p, resetEarlyDelete(), AlCaHLTBitMon_QueryRunRegistry::string, and trig_paths_.

Referenced by Schedule().

467  {
468  //for now, if have a subProcess, don't allow early delete
469  // In the future we should use the SubProcess's 'keep list' to decide what can be kept
470  if(subProcPSet) return;
471 
472  //see if 'canDeleteEarly' was set and if so setup the list with those products actually
473  // registered for this job
474  std::multimap<std::string,Worker*> branchToReadingWorker;
475  initializeBranchToReadingWorker(opts,preg,branchToReadingWorker);
476 
477  //If no delete early items have been specified we don't have to do anything
478  if(branchToReadingWorker.size()==0) {
479  return;
480  }
481  const std::vector<std::string> kEmpty;
482  std::map<Worker*,unsigned int> reserveSizeForWorker;
483  unsigned int upperLimitOnReadingWorker =0;
484  unsigned int upperLimitOnIndicies = 0;
485  unsigned int nUniqueBranchesToDelete=branchToReadingWorker.size();
486  for (AllWorkers::iterator i = all_workers_.begin(), e = all_workers_.end();
487  i != e;
488  ++i) {
489  OutputWorker* ow = dynamic_cast<OutputWorker*>(*i);
490  if (ow) {
491  if(branchToReadingWorker.size()>0) {
492  //If an OutputModule needs a product, we can't delete it early
493  // so we should remove it from our list
494  SelectionsArray const&kept = ow->keptProducts();
495  for( auto const& item: kept[InEvent]) {
496  auto found = branchToReadingWorker.equal_range(item->branchName());
497  if(found.first !=found.second) {
498  --nUniqueBranchesToDelete;
499  branchToReadingWorker.erase(found.first,found.second);
500  }
501  }
502  }
503  } else {
504  if(branchToReadingWorker.size()>0) {
505  //determine if this module could read a branch we want to delete early
506  auto pset = pset::Registry::instance()->getMapped((*i)->description().parameterSetID());
507  if(0!=pset) {
508  auto branches = pset->getUntrackedParameter<std::vector<std::string>>("mightGet",kEmpty);
509  if(not branches.empty()) {
510  ++upperLimitOnReadingWorker;
511  }
512  for(auto const& branch:branches){
513  auto found = branchToReadingWorker.equal_range(branch);
514  if(found.first != found.second) {
515  ++upperLimitOnIndicies;
516  ++reserveSizeForWorker[*i];
517  if(nullptr == found.first->second) {
518  found.first->second = *i;
519  } else {
520  branchToReadingWorker.insert(make_pair(found.first->first,*i));
521  }
522  }
523  }
524  }
525  }
526  }
527  }
528  {
529  auto it = branchToReadingWorker.begin();
530  std::vector<std::string> unusedBranches;
531  while(it !=branchToReadingWorker.end()) {
532  if(it->second == nullptr) {
533  unusedBranches.push_back(it->first);
534  //erasing the object invalidates the iterator so must advance it first
535  auto temp = it;
536  ++it;
537  branchToReadingWorker.erase(temp);
538  } else {
539  ++it;
540  }
541  }
542  if(not unusedBranches.empty()) {
543  LogWarning l("UnusedProductsForCanDeleteEarly");
544  l<<"The following products in the 'canDeleteEarly' list are not used in this job and will be ignored.\n"
545  " If possible, remove the producer from the job or add the product to the producer's own 'mightGet' list.";
546  for(auto const& n:unusedBranches){
547  l<<"\n "<<n;
548  }
549  }
550  }
551  if(0!=branchToReadingWorker.size()) {
552  earlyDeleteHelpers_.reserve(upperLimitOnReadingWorker);
553  earlyDeleteHelperToBranchIndicies_.resize(upperLimitOnIndicies,0);
554  earlyDeleteBranchToCount_.reserve(nUniqueBranchesToDelete);
555  std::map<const Worker*,EarlyDeleteHelper*> alreadySeenWorkers;
556  std::string lastBranchName;
557  size_t nextOpenIndex = 0;
558  unsigned int* beginAddress = &(earlyDeleteHelperToBranchIndicies_.front());
559  for(auto& branchAndWorker:branchToReadingWorker) {
560  if(lastBranchName != branchAndWorker.first) {
561  //have to put back the period we removed earlier in order to get the proper name
562  BranchID bid(branchAndWorker.first+".");
563  earlyDeleteBranchToCount_.emplace_back(std::make_pair(bid,0U));
564  lastBranchName = branchAndWorker.first;
565  }
566  auto found = alreadySeenWorkers.find(branchAndWorker.second);
567  if(alreadySeenWorkers.end() == found) {
568  //NOTE: we will set aside enough space in earlyDeleteHelperToBranchIndicies_ to accommodate
569  // all the branches that might be read by this worker. However, initially we will only tell the
570  // EarlyDeleteHelper about the first one. As additional branches are added via 'appendIndex' the
571  // EarlyDeleteHelper will automatically advance its internal end pointer.
572  size_t index = nextOpenIndex;
573  size_t nIndices = reserveSizeForWorker[branchAndWorker.second];
575  earlyDeleteHelpers_.emplace_back(EarlyDeleteHelper(beginAddress+index,
576  beginAddress+index+1,
578  branchAndWorker.second->setEarlyDeleteHelper(&(earlyDeleteHelpers_.back()));
579  alreadySeenWorkers.insert(std::make_pair(branchAndWorker.second,&(earlyDeleteHelpers_.back())));
580  nextOpenIndex +=nIndices;
581  } else {
582  found->second->appendIndex(earlyDeleteBranchToCount_.size()-1);
583  }
584  }
585 
586  //Now we can compactify the earlyDeleteHelperToBranchIndicies_ since we may have over estimated the
587  // space needed for each module
588  auto itLast = earlyDeleteHelpers_.begin();
589  for(auto it = earlyDeleteHelpers_.begin()+1;it != earlyDeleteHelpers_.end();++it) {
590  if(itLast->end() != it->begin()) {
591  //figure the offset for next Worker since it hasn't been moved yet so it has the original address
592  unsigned int delta = it->begin()- itLast->end();
593  it->shiftIndexPointers(delta);
594 
596  (itLast->end()-beginAddress),
598  (it->begin()-beginAddress));
599  }
600  itLast = it;
601  }
602  earlyDeleteHelperToBranchIndicies_.erase(earlyDeleteHelperToBranchIndicies_.begin()+(itLast->end()-beginAddress),
604 
605  //now tell the paths about the deleters
606  for(auto& p : trig_paths_) {
607  p.setEarlyDeleteHelpers(alreadySeenWorkers);
608  }
609  for(auto& p : end_paths_) {
610  p.setEarlyDeleteHelpers(alreadySeenWorkers);
611  }
613  }
614  }
dbl * delta
Definition: mlp_gen.cc:36
int i
Definition: DBlmapReader.cc:9
void resetEarlyDelete()
Definition: Schedule.cc:1499
std::vector< EarlyDeleteHelper > earlyDeleteHelpers_
Definition: Schedule.h:324
static ThreadSafeRegistry * instance()
TrigPaths trig_paths_
Definition: Schedule.h:306
bool getMapped(key_type const &k, value_type &result) const
boost::array< Selections, NumBranchTypes > SelectionsArray
Definition: Selections.h:12
TrigPaths end_paths_
Definition: Schedule.h:307
std::vector< unsigned int > earlyDeleteHelperToBranchIndicies_
Definition: Schedule.h:321
std::vector< std::pair< BranchID, unsigned int > > earlyDeleteBranchToCount_
Definition: Schedule.h:314
AllWorkers all_workers_
Definition: Schedule.h:304
void edm::Schedule::limitOutput ( ParameterSet const &  proc_pset,
BranchIDLists const &  branchIDLists 
)
private

Definition at line 734 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_, convertSQLitetoXML_cfg::output, edm::search_all(), and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by Schedule().

734  {
735  std::string const output("output");
736 
737  ParameterSet const& maxEventsPSet = proc_pset.getUntrackedParameterSet("maxEvents", ParameterSet());
738  int maxEventSpecs = 0;
739  int maxEventsOut = -1;
740  ParameterSet const* vMaxEventsOut = 0;
741  std::vector<std::string> intNamesE = maxEventsPSet.getParameterNamesForType<int>(false);
742  if (search_all(intNamesE, output)) {
743  maxEventsOut = maxEventsPSet.getUntrackedParameter<int>(output);
744  ++maxEventSpecs;
745  }
746  std::vector<std::string> psetNamesE;
747  maxEventsPSet.getParameterSetNames(psetNamesE, false);
748  if (search_all(psetNamesE, output)) {
749  vMaxEventsOut = &maxEventsPSet.getUntrackedParameterSet(output);
750  ++maxEventSpecs;
751  }
752 
753  if (maxEventSpecs > 1) {
755  "\nAt most, one form of 'output' may appear in the 'maxEvents' parameter set";
756  }
757 
758  for (AllOutputWorkers::const_iterator it = all_output_workers_.begin(), itEnd = all_output_workers_.end();
759  it != itEnd; ++it) {
760  OutputModuleDescription desc(branchIDLists, maxEventsOut);
761  if (vMaxEventsOut != 0 && !vMaxEventsOut->empty()) {
762  std::string moduleLabel = (*it)->description().moduleLabel();
763  try {
764  desc.maxEvents_ = vMaxEventsOut->getUntrackedParameter<int>(moduleLabel);
765  } catch (Exception const&) {
767  "\nNo entry in 'maxEvents' for output module label '" << moduleLabel << "'.\n";
768  }
769  }
770  (*it)->configure(desc);
771  }
772  }
AllOutputWorkers all_output_workers_
Definition: Schedule.h:305
bool search_all(ForwardSequence const &s, Datum const &d)
Definition: Algorithms.h:46
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 1382 of file Schedule.cc.

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

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

1383  {
1384  TrigPaths::const_iterator itFound =
1385  std::find_if (trig_paths_.begin(),
1386  trig_paths_.end(),
1387  boost::bind(std::equal_to<std::string>(),
1388  iPathLabel,
1389  boost::bind(&Path::name, _1)));
1390  if (itFound!=trig_paths_.end()) {
1391  oLabelsToFill.reserve(itFound->size());
1392  for (size_t i = 0; i < itFound->size(); ++i) {
1393  oLabelsToFill.push_back(itFound->getWorker(i)->description().moduleLabel());
1394  }
1395  }
1396  }
int i
Definition: DBlmapReader.cc:9
TrigPaths trig_paths_
Definition: Schedule.h:306
std::string const & name() const
Definition: Path.h:58
void edm::Schedule::openNewOutputFilesIfNeeded ( )

Definition at line 1277 of file Schedule.cc.

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

1277  {
1279  }
AllOutputWorkers all_output_workers_
Definition: Schedule.h:305
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 1281 of file Schedule.cc.

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

1281  {
1282  for_all(all_output_workers_, boost::bind(&OutputWorker::openFile, _1, boost::cref(fb)));
1283  }
AllOutputWorkers all_output_workers_
Definition: Schedule.h:305
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 1333 of file Schedule.cc.

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

1333  {
1334  for_all(all_workers_, boost::bind(&Worker::postForkReacquireResources, _1, iChildIndex, iNumberOfChildren));
1335  }
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:70
AllWorkers all_workers_
Definition: Schedule.h:304
void edm::Schedule::preForkReleaseResources ( )

Definition at line 1330 of file Schedule.cc.

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

1330  {
1332  }
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:16
void preForkReleaseResources()
Definition: Worker.h:69
AllWorkers all_workers_
Definition: Schedule.h:304
template<typename T >
void edm::Schedule::processOneOccurrence ( typename T::MyPrincipal &  principal,
EventSetup const &  eventSetup,
bool  cleaningUpAfterException = false 
)

Definition at line 364 of file Schedule.h.

References act_table_, alignCSCRings::action, cms::Exception::addContext(), edm::addContextAndPrintException(), edm::convertException::badAllocToEDM(), trackerHits::c, cms::Exception::category(), edm::convertException::charPtrToEDM(), cms::Exception::context(), alignCSCRings::e, empty_trig_paths_, endpathsAreActive_, cppFunctionSkipper::exception, edm::actions::FailPath, edm::ActionTable::find(), edm::actions::IgnoreCompletely, Latched, edm::hlt::Pass, edm::printCmsExceptionWarning(), Ready, resetAll(), resetEarlyDelete(), results_, results_inserter_, edm::actions::Rethrow, Running, alignCSCRings::s, setupOnDemandSystem(), edm::actions::SkipEvent, state_, edm::convertException::stdToEDM(), stopwatch_, AlCaHLTBitMon_QueryRunRegistry::string, edm::convertException::stringToEDM(), total_events_, total_passed_, edm::convertException::unknownToEDM(), and unscheduled_.

366  {
367  this->resetAll();
368  for (int empty_trig_path : empty_trig_paths_) {
369  results_->at(empty_trig_path) = HLTPathStatus(hlt::Pass, 0);
370  }
371  state_ = Running;
372 
373  // A RunStopwatch, but only if we are processing an event.
374  RunStopwatch stopwatch(T::isEvent_ ? stopwatch_ : RunStopwatch::StopwatchPointer());
375 
376  if (T::isEvent_) {
377  ++total_events_;
378  setupOnDemandSystem(dynamic_cast<EventPrincipal&>(ep), es);
379  }
380  try {
381  try {
382  try {
383  //make sure the unscheduled items see this transition [Event will be a no-op]
384  unscheduled_->runNow<T>(ep, es);
385  if (runTriggerPaths<T>(ep, es)) {
386  if (T::isEvent_) ++total_passed_;
387  }
388  state_ = Latched;
389  }
390  catch(cms::Exception& e) {
392  assert (action != actions::IgnoreCompletely);
393  assert (action != actions::FailPath);
394  if (action == actions::SkipEvent) {
395  edm::printCmsExceptionWarning("SkipEvent", e);
396  } else {
397  throw;
398  }
399  }
400 
401  try {
402  CPUTimer timer;
403  if (results_inserter_.get()) results_inserter_->doWork<T>(ep, es, nullptr, &timer);
404  }
405  catch (cms::Exception & ex) {
406  if (T::isEvent_) {
407  ex.addContext("Calling produce method for module TriggerResultInserter");
408  }
409  std::ostringstream ost;
410  ost << "Processing " << ep.id();
411  ex.addContext(ost.str());
412  throw;
413  }
414 
415  if (endpathsAreActive_) runEndPaths<T>(ep, es);
416  if(T::isEvent_) resetEarlyDelete();
417  }
418  catch (cms::Exception& e) { throw; }
419  catch(std::bad_alloc& bda) { convertException::badAllocToEDM(); }
420  catch (std::exception& e) { convertException::stdToEDM(e); }
422  catch(char const* c) { convertException::charPtrToEDM(c); }
423  catch (...) { convertException::unknownToEDM(); }
424  }
425  catch(cms::Exception& ex) {
426  if (ex.context().empty()) {
427  addContextAndPrintException("Calling function Schedule::processOneOccurrence", ex, cleaningUpAfterException);
428  } else {
429  addContextAndPrintException("", ex, cleaningUpAfterException);
430  }
431  state_ = Ready;
432  throw;
433  }
434  // next thing probably is not needed, the product insertion code clears it
435  state_ = Ready;
436  }
State state_
Definition: Schedule.h:296
WorkerPtr results_inserter_
Definition: Schedule.h:303
void resetEarlyDelete()
Definition: Schedule.cc:1499
void addContextAndPrintException(char const *context, cms::Exception &ex, bool disablePrint)
std::string const & category() const
Definition: Exception.cc:183
int total_passed_
Definition: Schedule.h:328
void resetAll()
Definition: Schedule.cc:1475
RunStopwatch::StopwatchPointer stopwatch_
Definition: Schedule.h:329
boost::shared_ptr< CPUTimer > StopwatchPointer
Definition: RunStopwatch.h:23
accept
Definition: HLTenums.h:22
void stdToEDM(std::exception const &e)
std::vector< int > empty_trig_paths_
Definition: Schedule.h:308
std::list< std::string > const & context() const
Definition: Exception.cc:191
void printCmsExceptionWarning(char const *behavior, cms::Exception const &e, edm::JobReport *jobRep=0, int rc=-1)
ActionTable const * act_table_
Definition: Schedule.h:293
void charPtrToEDM(char const *c)
void stringToEDM(std::string &s)
volatile bool endpathsAreActive_
Definition: Schedule.h:333
TrigResPtr results_
Definition: Schedule.h:300
void addContext(std::string const &context)
Definition: Exception.cc:227
int total_events_
Definition: Schedule.h:327
actions::ActionCodes find(const std::string &category) const
Definition: Actions.cc:93
long double T
void setupOnDemandSystem(EventPrincipal &principal, EventSetup const &es)
Definition: Schedule.cc:1492
boost::shared_ptr< UnscheduledCallProducer > unscheduled_
Definition: Schedule.h:331
void edm::Schedule::reduceParameterSet ( ParameterSet proc_pset,
vstring modulesInConfig,
std::set< std::string > const &  modulesInConfigSet,
vstring labelsOnTriggerPaths,
vstring shouldBeUsedLabels,
std::map< std::string, std::vector< std::pair< std::string, int > > > &  outputModulePathPositions 
)
private

Definition at line 616 of file Schedule.cc.

References edm::ParameterSet::addParameter(), alignCSCRings::e, end_path_name_list_, edm::ParameterSet::eraseOrSetUntrackedParameterSet(), edm::ParameterSet::eraseSimpleParameter(), edm::for_all(), edm::ParameterSet::getParameter(), edm::ParameterSet::getParameterSet(), i, reco_calib_source_client_cfg::labels, edm::sort_all(), and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by Schedule().

621  {
622 
623  // Before calculating the ParameterSetID of the top level ParameterSet or
624  // saving it in the registry drop from the top level ParameterSet all
625  // OutputModules and EDAnalyzers not on trigger paths. If unscheduled
626  // production is not enabled also drop all the EDFilters and EDProducers
627  // that are not scheduled. Drop the ParameterSet used to configure the module
628  // itself. Also drop the other traces of these labels in the top level
629  // ParameterSet: Remove that labels from @all_modules and from all the
630  // end paths. If this makes any end paths empty, then remove the end path
631  // name from @end_paths, and @paths.
632 
633  // First make a list of labels to drop
634  vstring labelsToBeDropped;
635  vstring outputModuleLabels;
636  std::string edmType;
637  std::string const moduleEdmType("@module_edm_type");
638  std::string const outputModule("OutputModule");
639  std::string const edAnalyzer("EDAnalyzer");
640  std::string const edFilter("EDFilter");
641  std::string const edProducer("EDProducer");
642  sort_all(labelsOnTriggerPaths);
643  vstring::const_iterator iLabelsOnTriggerPaths = labelsOnTriggerPaths.begin();
644  vstring::const_iterator endLabelsOnTriggerPaths = labelsOnTriggerPaths.end();
645  sort_all(shouldBeUsedLabels);
646  vstring::const_iterator iShouldBeUsedLabels = shouldBeUsedLabels.begin();
647  vstring::const_iterator endShouldBeUsedLabels = shouldBeUsedLabels.end();
648 
649  for (std::set<std::string>::const_iterator i = modulesInConfigSet.begin(),
650  e = modulesInConfigSet.end(); i != e; ++i) {
651  edmType = proc_pset.getParameterSet(*i).getParameter<std::string>(moduleEdmType);
652  if (edmType == outputModule) {
653  labelsToBeDropped.push_back(*i);
654  outputModuleLabels.push_back(*i);
655  }
656  else if (edmType == edAnalyzer) {
657  while (iLabelsOnTriggerPaths != endLabelsOnTriggerPaths &&
658  *iLabelsOnTriggerPaths < *i) {
659  ++iLabelsOnTriggerPaths;
660  }
661  if (iLabelsOnTriggerPaths == endLabelsOnTriggerPaths ||
662  *iLabelsOnTriggerPaths != *i) {
663  labelsToBeDropped.push_back(*i);
664  }
665  }
666  else if (edmType == edFilter || edmType == edProducer) {
667  while (iShouldBeUsedLabels != endShouldBeUsedLabels &&
668  *iShouldBeUsedLabels < *i) {
669  ++iShouldBeUsedLabels;
670  }
671  if (iShouldBeUsedLabels != endShouldBeUsedLabels &&
672  *iShouldBeUsedLabels == *i) {
673  labelsToBeDropped.push_back(*i);
674  }
675  }
676  }
677 
678  // drop the parameter sets used to configure the modules
679  for_all(labelsToBeDropped, boost::bind(&ParameterSet::eraseOrSetUntrackedParameterSet, boost::ref(proc_pset), _1));
680 
681  // drop the labels from @all_modules
682  vstring::iterator endAfterRemove = std::remove_if(modulesInConfig.begin(), modulesInConfig.end(), boost::bind(binary_search_string, boost::ref(labelsToBeDropped), _1));
683  modulesInConfig.erase(endAfterRemove, modulesInConfig.end());
684  proc_pset.addParameter<vstring>(std::string("@all_modules"), modulesInConfig);
685 
686  // drop the labels from all end paths
687  vstring endPathsToBeDropped;
688  vstring labels;
689  for (vstring::iterator iEndPath = end_path_name_list_.begin(), endEndPath = end_path_name_list_.end();
690  iEndPath != endEndPath;
691  ++iEndPath) {
692  labels = proc_pset.getParameter<vstring>(*iEndPath);
693  vstring::iterator iSave = labels.begin();
694  vstring::iterator iBegin = labels.begin();
695 
696  for (vstring::iterator iLabel = labels.begin(), iEnd = labels.end();
697  iLabel != iEnd; ++iLabel) {
698  if (binary_search_string(labelsToBeDropped, *iLabel)) {
699  if (binary_search_string(outputModuleLabels, *iLabel)) {
700  outputModulePathPositions[*iLabel].emplace_back(*iEndPath, iSave - iBegin);
701  }
702  } else {
703  if (iSave != iLabel) {
704  iSave->swap(*iLabel);
705  }
706  ++iSave;
707  }
708  }
709  labels.erase(iSave, labels.end());
710  if (labels.empty()) {
711  // remove empty end paths and save their names
712  proc_pset.eraseSimpleParameter(*iEndPath);
713  endPathsToBeDropped.push_back(*iEndPath);
714  } else {
715  proc_pset.addParameter<vstring>(*iEndPath, labels);
716  }
717  }
718  sort_all(endPathsToBeDropped);
719 
720  // remove empty end paths from @paths
721  vstring scheduledPaths = proc_pset.getParameter<vstring>("@paths");
722  endAfterRemove = std::remove_if(scheduledPaths.begin(), scheduledPaths.end(), boost::bind(binary_search_string, boost::ref(endPathsToBeDropped), _1));
723  scheduledPaths.erase(endAfterRemove, scheduledPaths.end());
724  proc_pset.addParameter<vstring>(std::string("@paths"), scheduledPaths);
725 
726  // remove empty end paths from @end_paths
727  vstring scheduledEndPaths = proc_pset.getParameter<vstring>("@end_paths");
728  endAfterRemove = std::remove_if(scheduledEndPaths.begin(), scheduledEndPaths.end(), boost::bind(binary_search_string, boost::ref(endPathsToBeDropped), _1));
729  scheduledEndPaths.erase(endAfterRemove, scheduledEndPaths.end());
730  proc_pset.addParameter<vstring>(std::string("@end_paths"), scheduledEndPaths);
731  }
int i
Definition: DBlmapReader.cc:9
vector< string > vstring
Definition: ExoticaDQM.cc:75
void eraseOrSetUntrackedParameterSet(std::string const &name)
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:16
void sort_all(RandomAccessSequence &s)
wrappers for std::sort
Definition: Algorithms.h:120
vstring end_path_name_list_
Definition: Schedule.h:298
void edm::Schedule::reportSkipped ( EventPrincipal const &  ep) const
inlineprivate

Definition at line 357 of file Schedule.h.

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

357  {
358  Service<JobReport> reportSvc;
359  reportSvc->reportSkippedEvent(ep.id().run(), ep.id().event());
360  }
void edm::Schedule::reportSkipped ( LuminosityBlockPrincipal const &  ) const
inlineprivate

Definition at line 258 of file Schedule.h.

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

Definition at line 259 of file Schedule.h.

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

Definition at line 1475 of file Schedule.cc.

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

Referenced by processOneOccurrence().

1475  {
1476  for_all(all_workers_, boost::bind(&Worker::reset, _1));
1477  results_->reset();
1478  endpath_results_->reset();
1479  }
TrigResPtr endpath_results_
Definition: Schedule.h:301
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:16
void reset()
Definition: Worker.h:72
TrigResPtr results_
Definition: Schedule.h:300
AllWorkers all_workers_
Definition: Schedule.h:304
void edm::Schedule::resetEarlyDelete ( )
private

Definition at line 1499 of file Schedule.cc.

References prof2calltree::count, earlyDeleteBranchToCount_, earlyDeleteHelpers_, earlyDeleteHelperToBranchIndicies_, and getHLTprescales::index.

Referenced by initializeEarlyDelete(), and processOneOccurrence().

1499  {
1500  //must be sure we have cleared the count first
1501  for(auto& count:earlyDeleteBranchToCount_) {
1502  count.second = 0;
1503  }
1504  //now reset based on how many helpers use that branch
1506  ++(earlyDeleteBranchToCount_[index].second);
1507  }
1508  for(auto& helper: earlyDeleteHelpers_) {
1509  helper.reset();
1510  }
1511  }
std::vector< EarlyDeleteHelper > earlyDeleteHelpers_
Definition: Schedule.h:324
std::vector< unsigned int > earlyDeleteHelperToBranchIndicies_
Definition: Schedule.h:321
std::vector< std::pair< BranchID, unsigned int > > earlyDeleteBranchToCount_
Definition: Schedule.h:314
void edm::Schedule::respondToCloseInputFile ( FileBlock const &  fb)

Definition at line 1304 of file Schedule.cc.

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

1304  {
1305  for_all(all_workers_, boost::bind(&Worker::respondToCloseInputFile, _1, boost::cref(fb)));
1306  }
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:16
void respondToCloseInputFile(FileBlock const &fb)
Definition: Worker.h:65
AllWorkers all_workers_
Definition: Schedule.h:304
void edm::Schedule::respondToCloseOutputFiles ( FileBlock const &  fb)

Definition at line 1312 of file Schedule.cc.

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

1312  {
1313  for_all(all_workers_, boost::bind(&Worker::respondToCloseOutputFiles, _1, boost::cref(fb)));
1314  }
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:16
void respondToCloseOutputFiles(FileBlock const &fb)
Definition: Worker.h:67
AllWorkers all_workers_
Definition: Schedule.h:304
void edm::Schedule::respondToOpenInputFile ( FileBlock const &  fb)

Definition at line 1300 of file Schedule.cc.

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

1300  {
1301  for_all(all_workers_, boost::bind(&Worker::respondToOpenInputFile, _1, boost::cref(fb)));
1302  }
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:16
void respondToOpenInputFile(FileBlock const &fb)
Definition: Worker.h:64
AllWorkers all_workers_
Definition: Schedule.h:304
void edm::Schedule::respondToOpenOutputFiles ( FileBlock const &  fb)

Definition at line 1308 of file Schedule.cc.

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

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

Definition at line 447 of file Schedule.h.

References end_paths_, and edm::for_all().

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

Definition at line 440 of file Schedule.h.

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

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

Definition at line 1492 of file Schedule.cc.

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

Referenced by processOneOccurrence().

1492  {
1493  // NOTE: who owns the productdescrption? Just copied by value
1494  unscheduled_->setEventSetup(es);
1495  ep.setUnscheduledHandler(unscheduled_);
1496  }
boost::shared_ptr< UnscheduledCallProducer > unscheduled_
Definition: Schedule.h:331
bool edm::Schedule::shouldWeCloseOutput ( ) const

Definition at line 1293 of file Schedule.cc.

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

1293  {
1294  // Return true iff at least one output module returns true.
1295  return (std::find_if (all_output_workers_.begin(), all_output_workers_.end(),
1296  boost::bind(&OutputWorker::shouldWeCloseFile, _1))
1297  != all_output_workers_.end());
1298  }
AllOutputWorkers all_output_workers_
Definition: Schedule.h:305
bool shouldWeCloseFile() const
Definition: OutputWorker.cc:27
bool edm::Schedule::terminate ( void  ) const

Return whether each output module has reached its maximum count.

Definition at line 774 of file Schedule.cc.

References all_output_workers_.

774  {
775  if (all_output_workers_.empty()) {
776  return false;
777  }
778  for (AllOutputWorkers::const_iterator it = all_output_workers_.begin(),
779  itEnd = all_output_workers_.end();
780  it != itEnd; ++it) {
781  if (!(*it)->limitReached()) {
782  // Found an output module that has not reached output event count.
783  return false;
784  }
785  }
786  LogInfo("SuccessfulTermination")
787  << "The job is terminating successfully because each output module\n"
788  << "has reached its configured limit.\n";
789  return true;
790  }
AllOutputWorkers all_output_workers_
Definition: Schedule.h:305
std::pair<double, double> edm::Schedule::timeCpuReal ( ) const
inline

Definition at line 169 of file Schedule.h.

References stopwatch_.

Referenced by endJob().

169  {
170  return std::pair<double, double>(stopwatch_->cpuTime(), stopwatch_->realTime());
171  }
RunStopwatch::StopwatchPointer stopwatch_
Definition: Schedule.h:329
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 191 of file Schedule.h.

References total_events_.

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

191  {
192  return total_events_;
193  }
int total_events_
Definition: Schedule.h:327
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 203 of file Schedule.h.

References totalEvents(), and totalEventsPassed().

Referenced by endJob(), and getTriggerReport().

203  {
204  return totalEvents() - totalEventsPassed();
205  }
int totalEventsPassed() const
Definition: Schedule.h:197
int totalEvents() const
Definition: Schedule.h:191
int edm::Schedule::totalEventsPassed ( ) const
inline

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

Definition at line 197 of file Schedule.h.

References total_passed_.

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

197  {
198  return total_passed_;
199  }
int total_passed_
Definition: Schedule.h:328
AllWorkers::const_iterator edm::Schedule::workersBegin ( ) const
inlineprivate

Definition at line 231 of file Schedule.h.

References all_workers_.

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

231  {
232  return all_workers_.begin();
233  }
AllWorkers all_workers_
Definition: Schedule.h:304
AllWorkers::iterator edm::Schedule::workersBegin ( )
inlineprivate

Definition at line 239 of file Schedule.h.

References all_workers_.

239  {
240  return all_workers_.begin();
241  }
AllWorkers all_workers_
Definition: Schedule.h:304
AllWorkers::const_iterator edm::Schedule::workersEnd ( ) const
inlineprivate

Definition at line 235 of file Schedule.h.

References all_workers_.

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

235  {
236  return all_workers_.end();
237  }
AllWorkers all_workers_
Definition: Schedule.h:304
AllWorkers::iterator edm::Schedule::workersEnd ( )
inlineprivate

Definition at line 243 of file Schedule.h.

References all_workers_.

243  {
244  return all_workers_.end();
245  }
AllWorkers all_workers_
Definition: Schedule.h:304
void edm::Schedule::writeLumi ( LuminosityBlockPrincipal const &  lbp)

Definition at line 1289 of file Schedule.cc.

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

1289  {
1290  for_all(all_output_workers_, boost::bind(&OutputWorker::writeLumi, _1, boost::cref(lbp)));
1291  }
AllOutputWorkers all_output_workers_
Definition: Schedule.h:305
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 1285 of file Schedule.cc.

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

1285  {
1286  for_all(all_output_workers_, boost::bind(&OutputWorker::writeRun, _1, boost::cref(rp)));
1287  }
AllOutputWorkers all_output_workers_
Definition: Schedule.h:305
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 293 of file Schedule.h.

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

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

Definition at line 294 of file Schedule.h.

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

AllOutputWorkers edm::Schedule::all_output_workers_
private
AllWorkers edm::Schedule::all_workers_
private
std::vector<std::pair<BranchID,unsigned int> > edm::Schedule::earlyDeleteBranchToCount_
private

Definition at line 314 of file Schedule.h.

Referenced by initializeEarlyDelete(), and resetEarlyDelete().

std::vector<EarlyDeleteHelper> edm::Schedule::earlyDeleteHelpers_
private

Definition at line 324 of file Schedule.h.

Referenced by initializeEarlyDelete(), and resetEarlyDelete().

std::vector<unsigned int> edm::Schedule::earlyDeleteHelperToBranchIndicies_
private

Definition at line 321 of file Schedule.h.

Referenced by initializeEarlyDelete(), and resetEarlyDelete().

vstring edm::Schedule::empty_trig_path_names_
private

Definition at line 309 of file Schedule.h.

Referenced by endJob(), and fillTrigPath().

std::vector<int> edm::Schedule::empty_trig_paths_
private

Definition at line 308 of file Schedule.h.

Referenced by endJob(), fillTrigPath(), and processOneOccurrence().

vstring edm::Schedule::end_path_name_list_
private

Definition at line 298 of file Schedule.h.

Referenced by fillWorkers(), reduceParameterSet(), and Schedule().

TrigPaths edm::Schedule::end_paths_
private
TrigResPtr edm::Schedule::endpath_results_
private

Definition at line 301 of file Schedule.h.

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

volatile bool edm::Schedule::endpathsAreActive_
private

Definition at line 333 of file Schedule.h.

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

TrigResPtr edm::Schedule::results_
private

Definition at line 300 of file Schedule.h.

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

WorkerPtr edm::Schedule::results_inserter_
private

Definition at line 303 of file Schedule.h.

Referenced by processOneOccurrence(), and Schedule().

State edm::Schedule::state_
private

Definition at line 296 of file Schedule.h.

Referenced by processOneOccurrence().

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

Definition at line 329 of file Schedule.h.

Referenced by processOneOccurrence(), and timeCpuReal().

int edm::Schedule::total_events_
private

Definition at line 327 of file Schedule.h.

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

int edm::Schedule::total_passed_
private

Definition at line 328 of file Schedule.h.

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

vstring edm::Schedule::trig_name_list_
private

Definition at line 297 of file Schedule.h.

Referenced by Schedule().

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

Definition at line 331 of file Schedule.h.

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

bool edm::Schedule::wantSummary_
private

Definition at line 326 of file Schedule.h.

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

WorkerRegistry edm::Schedule::worker_reg_
private

Definition at line 292 of file Schedule.h.

Referenced by fillWorkers(), and Schedule().