CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
Schedule.h
Go to the documentation of this file.
1 #ifndef FWCore_Framework_Schedule_h
2 #define FWCore_Framework_Schedule_h
3 
4 /*
5  Author: Jim Kowalkowski 28-01-06
6 
7  A class for creating a schedule based on paths in the configuration file.
8  The schedule is maintained as a sequence of paths.
9  After construction, events can be fed to the object and passed through
10  all the modules in the schedule. All accounting about processing
11  of events by modules and paths is contained here or in object held
12  by containment.
13 
14  The trigger results producer and product are generated and managed here.
15  This class also manages endpaths and calls to endjob and beginjob.
16  Endpaths are just treated as a simple list of modules that need to
17  do processing of the event and do not participate in trigger path
18  activities.
19 
20  This class requires the high-level process pset. It uses @process_name.
21  If the high-level pset contains an "options" pset, then the
22  following optional parameter can be present:
23  bool wantSummary = true/false # default false
24 
25  wantSummary indicates whether or not the pass/fail/error stats
26  for modules and paths should be printed at the end-of-job.
27 
28  A TriggerResults object will always be inserted into the event
29  for any schedule. The producer of the TriggerResults EDProduct
30  is always the first module in the endpath. The TriggerResultInserter
31  is given a fixed label of "TriggerResults".
32 
33  Processing of an event happens by pushing the event through the Paths.
34  The scheduler performs the reset() on each of the workers independent
35  of the Path objects.
36 
37  ------------------------
38 
39  About Paths:
40  Paths fit into two categories:
41  1) trigger paths that contribute directly to saved trigger bits
42  2) end paths
43  The Schedule holds these paths in two data structures:
44  1) main path list
45  2) end path list
46 
47  Trigger path processing always precedes endpath processing.
48  The order of the paths from the input configuration is
49  preserved in the main paths list.
50 
51  ------------------------
52 
53  The Schedule uses the TriggerNamesService to get the names of the
54  trigger paths and end paths. When a TriggerResults object is created
55  the results are stored in the same order as the trigger names from
56  TriggerNamesService.
57 
58 */
59 
81 
82 #include "boost/shared_ptr.hpp"
83 
84 #include <map>
85 #include <memory>
86 #include <set>
87 #include <string>
88 #include <vector>
89 #include <sstream>
90 
91 namespace edm {
92  namespace service {
93  class TriggerNamesService;
94  }
95  class ActivityRegistry;
96  class EventSetup;
97  class ExceptionCollector;
98  class OutputWorker;
99  class RunStopwatch;
100  class UnscheduledCallProducer;
101  class WorkerInPath;
102  class Schedule {
103  public:
104  typedef std::vector<std::string> vstring;
105  typedef std::vector<Path> TrigPaths;
106  typedef std::vector<Path> NonTrigPaths;
107  typedef boost::shared_ptr<HLTGlobalStatus> TrigResPtr;
108  typedef boost::shared_ptr<Worker> WorkerPtr;
109  typedef std::vector<Worker*> AllWorkers;
110  typedef std::vector<OutputWorker*> AllOutputWorkers;
111 
112  typedef std::vector<Worker*> Workers;
113 
114  typedef std::vector<WorkerInPath> PathWorkers;
115 
116  Schedule(ParameterSet& proc_pset,
118  ProductRegistry& pregistry,
119  ActionTable const& actions,
120  boost::shared_ptr<ActivityRegistry> areg,
121  boost::shared_ptr<ProcessConfiguration> processConfiguration,
122  const ParameterSet* subProcPSet);
123 
124  enum State { Ready = 0, Running, Latched };
125 
126  template <typename T>
127  void processOneOccurrence(typename T::MyPrincipal& principal,
128  EventSetup const& eventSetup,
129  bool cleaningUpAfterException = false);
130 
131  void beginJob();
132  void endJob(ExceptionCollector & collector);
133 
134  // Write the luminosity block
135  void writeLumi(LuminosityBlockPrincipal const& lbp);
136 
137  // Write the run
138  void writeRun(RunPrincipal const& rp);
139 
140  // Call closeFile() on all OutputModules.
141  void closeOutputFiles();
142 
143  // Call openNewFileIfNeeded() on all OutputModules
145 
146  // Call openFiles() on all OutputModules
148 
149  // Call respondToOpenInputFile() on all Modules
150  void respondToOpenInputFile(FileBlock const& fb);
151 
152  // Call respondToCloseInputFile() on all Modules
153  void respondToCloseInputFile(FileBlock const& fb);
154 
155  // Call respondToOpenOutputFiles() on all Modules
157 
158  // Call respondToCloseOutputFiles() on all Modules
160 
161  // Call shouldWeCloseFile() on all OutputModules.
162  bool shouldWeCloseOutput() const;
163 
165  void postForkReacquireResources(unsigned int iChildIndex, unsigned int iNumberOfChildren);
166 
167  std::pair<double, double> timeCpuReal() const {
168  return std::pair<double, double>(stopwatch_->cpuTime(), stopwatch_->realTime());
169  }
170 
173 
177  std::vector<ModuleDescription const*> getAllModuleDescriptions() const;
178 
180  void availablePaths(std::vector<std::string>& oLabelsToFill) const;
181 
183  void modulesInPath(std::string const& iPathLabel,
184  std::vector<std::string>& oLabelsToFill) const;
185 
189  int totalEvents() const {
190  return total_events_;
191  }
192 
195  int totalEventsPassed() const {
196  return total_passed_;
197  }
198 
201  int totalEventsFailed() const {
202  return totalEvents() - totalEventsPassed();
203  }
204 
207  void enableEndPaths(bool active);
208 
211  bool endPathsEnabled() const;
212 
215  void getTriggerReport(TriggerReport& rep) const;
216 
218  bool terminate() const;
219 
221  void clearCounters();
222 
225  bool changeModule(std::string const& iLabel, ParameterSet const& iPSet);
226 
227  private:
228 
229  AllWorkers::const_iterator workersBegin() const {
230  return all_workers_.begin();
231  }
232 
233  AllWorkers::const_iterator workersEnd() const {
234  return all_workers_.end();
235  }
236 
237  AllWorkers::iterator workersBegin() {
238  return all_workers_.begin();
239  }
240 
241  AllWorkers::iterator workersEnd() {
242  return all_workers_.end();
243  }
244 
245  void resetAll();
246 
247  template <typename T>
248  bool runTriggerPaths(typename T::MyPrincipal&, EventSetup const&);
249 
250  template <typename T>
251  void runEndPaths(typename T::MyPrincipal&, EventSetup const&);
252 
254 
255  void reportSkipped(EventPrincipal const& ep) const;
257  void reportSkipped(RunPrincipal const&) const {}
258 
259  void reduceParameterSet(ParameterSet& proc_pset,
260  vstring& modulesInConfig,
261  std::set<std::string> const& modulesInConfigSet,
262  vstring& labelsOnTriggerPaths,
263  vstring& shouldBeUsedLabels,
264  std::map<std::string, std::vector<std::pair<std::string, int> > >& outputModulePathPositions);
265 
266  void fillWorkers(ParameterSet& proc_pset,
267  ProductRegistry& preg,
268  boost::shared_ptr<ProcessConfiguration const> processConfiguration,
269  std::string const& name, bool ignoreFilters, PathWorkers& out,
270  vstring* labelsOnPaths);
271  void fillTrigPath(ParameterSet& proc_pset,
272  ProductRegistry& preg,
273  boost::shared_ptr<ProcessConfiguration const> processConfiguration,
274  int bitpos, std::string const& name, TrigResPtr,
275  vstring* labelsOnTriggerPaths);
276  void fillEndPath(ParameterSet& proc_pset,
277  ProductRegistry& preg,
278  boost::shared_ptr<ProcessConfiguration const> processConfiguration,
279  int bitpos, std::string const& name);
280 
281  void limitOutput(ParameterSet const& proc_pset);
282 
283  void addToAllWorkers(Worker* w);
284 
285  void resetEarlyDelete();
287  edm::ProductRegistry const& preg,
288  edm::ParameterSet const* subProcPSet);
289 
292  boost::shared_ptr<ActivityRegistry> actReg_;
293 
297 
300 
306 
307  //For each branch that has been marked for early deletion
308  // keep track of how many modules are left that read this data but have
309  // not yet been run in this event
310  std::vector<std::pair<BranchID,unsigned int>> earlyDeleteBranchToCount_;
311  //NOTE the following is effectively internal data for each EarlyDeleteHelper
312  // but putting it into one vector makes for better allocation as well as
313  // faster iteration when used to reset the earlyDeleteBranchToCount_
314  // Each EarlyDeleteHelper hold a begin and end range into this vector. The values
315  // of this vector correspond to indexes into earlyDeleteBranchToCount_ so
316  // tell which EarlyDeleteHelper is associated with which BranchIDs.
317  std::vector<unsigned int> earlyDeleteHelperToBranchIndicies_;
318  //There is one EarlyDeleteHelper per Module which are reading data that
319  // has been marked for early deletion
320  std::vector<EarlyDeleteHelper> earlyDeleteHelpers_;
321 
326 
327  boost::shared_ptr<UnscheduledCallProducer> unscheduled_;
328 
329  volatile bool endpathsAreActive_;
330  };
331 
332  // -----------------------------
333  // ProcessOneOccurrence is a functor that has bound a specific
334  // Principal and Event Setup, and can be called with a Path, to
335  // execute Path::processOneOccurrence for that event
336 
337  template <typename T>
339  public:
340  typedef void result_type;
341  ProcessOneOccurrence(typename T::MyPrincipal& principal, EventSetup const& setup) :
342  ep(principal), es(setup) {};
343 
345 
346  private:
347  typename T::MyPrincipal& ep;
348  EventSetup const& es;
349  };
350 
352  public:
354  void addWorker(Worker* aWorker) {
355  assert(0 != aWorker);
356  labelToWorkers_[aWorker->description().moduleLabel()] = aWorker;
357  }
358 
359  template <typename T>
360  void runNow(typename T::MyPrincipal& p, EventSetup const& es) {
361  //do nothing for event since we will run when requested
362  if(!T::isEvent_) {
363  for(std::map<std::string, Worker*>::iterator it = labelToWorkers_.begin(), itEnd=labelToWorkers_.end();
364  it != itEnd;
365  ++it) {
366  CPUTimer timer;
367  try {
368  it->second->doWork<T>(p, es, 0, &timer);
369  }
370  catch (cms::Exception & ex) {
371  std::ostringstream ost;
372  if (T::isEvent_) {
373  ost << "Calling event method";
374  }
375  else if (T::begin_ && T::branchType_ == InRun) {
376  ost << "Calling beginRun";
377  }
378  else if (T::begin_ && T::branchType_ == InLumi) {
379  ost << "Calling beginLuminosityBlock";
380  }
381  else if (!T::begin_ && T::branchType_ == InLumi) {
382  ost << "Calling endLuminosityBlock";
383  }
384  else if (!T::begin_ && T::branchType_ == InRun) {
385  ost << "Calling endRun";
386  }
387  else {
388  // It should be impossible to get here ...
389  ost << "Calling unknown function";
390  }
391  ost << " for unscheduled module " << it->second->description().moduleName()
392  << "/'" << it->second->description().moduleLabel() << "'";
393  ex.addContext(ost.str());
394  ost.str("");
395  ost << "Processing " << p.id();
396  ex.addContext(ost.str());
397  throw;
398  }
399  }
400  }
401  }
402 
403  private:
404  virtual bool tryToFillImpl(std::string const& moduleLabel,
406  EventSetup const& eventSetup,
407  CurrentProcessingContext const* iContext) {
408  std::map<std::string, Worker*>::const_iterator itFound =
409  labelToWorkers_.find(moduleLabel);
410  if(itFound != labelToWorkers_.end()) {
411  CPUTimer timer;
412  try {
413  itFound->second->doWork<OccurrenceTraits<EventPrincipal, BranchActionBegin> >(event, eventSetup, iContext, &timer);
414  }
415  catch (cms::Exception & ex) {
416  std::ostringstream ost;
417  ost << "Calling produce method for unscheduled module "
418  << itFound->second->description().moduleName() << "/'"
419  << itFound->second->description().moduleLabel() << "'";
420  ex.addContext(ost.str());
421  throw;
422  }
423  return true;
424  }
425  return false;
426  }
427  std::map<std::string, Worker*> labelToWorkers_;
428  };
429 
430  void
431  inline
433  Service<JobReport> reportSvc;
434  reportSvc->reportSkippedEvent(ep.id().run(), ep.id().event());
435  }
436 
437  template <typename T>
438  void
439  Schedule::processOneOccurrence(typename T::MyPrincipal& ep,
440  EventSetup const& es,
441  bool cleaningUpAfterException) {
442  this->resetAll();
443  state_ = Running;
444 
445  // A RunStopwatch, but only if we are processing an event.
446  RunStopwatch stopwatch(T::isEvent_ ? stopwatch_ : RunStopwatch::StopwatchPointer());
447 
448  if (T::isEvent_) {
449  ++total_events_;
450  setupOnDemandSystem(dynamic_cast<EventPrincipal&>(ep), es);
451  }
452  try {
453  try {
454  try {
455  //make sure the unscheduled items see this transition [Event will be a no-op]
456  unscheduled_->runNow<T>(ep, es);
457  if (runTriggerPaths<T>(ep, es)) {
458  if (T::isEvent_) ++total_passed_;
459  }
460  state_ = Latched;
461  }
462  catch(cms::Exception& e) {
464  assert (action != actions::IgnoreCompletely);
465  assert (action != actions::FailPath);
466  if (action == actions::SkipEvent) {
467  edm::printCmsExceptionWarning("SkipEvent", e);
468  } else {
469  throw;
470  }
471  }
472 
473  try {
474  CPUTimer timer;
475  if (results_inserter_.get()) results_inserter_->doWork<T>(ep, es, 0, &timer);
476  }
477  catch (cms::Exception & ex) {
478  if (T::isEvent_) {
479  ex.addContext("Calling produce method for module TriggerResultInserter");
480  }
481  std::ostringstream ost;
482  ost << "Processing " << ep.id();
483  ex.addContext(ost.str());
484  throw;
485  }
486 
487  if (endpathsAreActive_) runEndPaths<T>(ep, es);
488  if(T::isEvent_) resetEarlyDelete();
489  }
490  catch (cms::Exception& e) { throw; }
491  catch(std::bad_alloc& bda) { convertException::badAllocToEDM(); }
492  catch (std::exception& e) { convertException::stdToEDM(e); }
493  catch(std::string& s) { convertException::stringToEDM(s); }
494  catch(char const* c) { convertException::charPtrToEDM(c); }
495  catch (...) { convertException::unknownToEDM(); }
496  }
497  catch(cms::Exception& ex) {
498  if (ex.context().empty()) {
499  addContextAndPrintException("Calling function Schedule::processOneOccurrence", ex, cleaningUpAfterException);
500  } else {
501  addContextAndPrintException("", ex, cleaningUpAfterException);
502  }
503  state_ = Ready;
504  throw;
505  }
506  // next thing probably is not needed, the product insertion code clears it
507  state_ = Ready;
508  }
509 
510  template <typename T>
511  bool
512  Schedule::runTriggerPaths(typename T::MyPrincipal& ep, EventSetup const& es) {
514  return results_->accept();
515  }
516 
517  template <typename T>
518  void
519  Schedule::runEndPaths(typename T::MyPrincipal& ep, EventSetup const& es) {
520  // Note there is no state-checking safety controlling the
521  // activation/deactivation of endpaths.
523 
524  // We could get rid of the functor ProcessOneOccurrence if we used
525  // boost::lambda, but the use of lambda with member functions
526  // which take multiple arguments, by both non-const and const
527  // reference, seems much more obscure...
528  //
529  // using namespace boost::lambda;
530  // for_all(end_paths_,
531  // bind(&Path::processOneOccurrence,
532  // boost::lambda::_1, // qualification to avoid ambiguity
533  // var(ep), // pass by reference (not copy)
534  // constant_ref(es))); // pass by const-reference (not copy)
535  }
536 }
537 
538 #endif
RunNumber_t run() const
Definition: EventID.h:42
State state_
Definition: Schedule.h:294
std::vector< Path > NonTrigPaths
Definition: Schedule.h:106
EventNumber_t event() const
Definition: EventID.h:44
void initializeEarlyDelete(edm::ParameterSet const &opts, edm::ProductRegistry const &preg, edm::ParameterSet const *subProcPSet)
Definition: Schedule.cc:331
std::pair< double, double > timeCpuReal() const
Definition: Schedule.h:167
ModuleDescription const & description() const
Definition: Worker.h:73
roAction_t actions[nactions]
Definition: GenABIO.cc:200
void availablePaths(std::vector< std::string > &oLabelsToFill) const
adds to oLabelsToFill the labels for all paths in the process
Definition: Schedule.cc:1209
void limitOutput(ParameterSet const &proc_pset)
Definition: Schedule.cc:599
AllOutputWorkers all_output_workers_
Definition: Schedule.h:303
WorkerPtr results_inserter_
Definition: Schedule.h:301
bool endPathsEnabled() const
Definition: Schedule.cc:1240
void respondToCloseInputFile(FileBlock const &fb)
Definition: Schedule.cc:1149
std::vector< OutputWorker * > AllOutputWorkers
Definition: Schedule.h:110
void resetEarlyDelete()
Definition: Schedule.cc:1335
std::vector< std::string > vstring
Definition: Schedule.cc:147
bool changeModule(std::string const &iLabel, ParameterSet const &iPSet)
Definition: Schedule.cc:1173
void writeLumi(LuminosityBlockPrincipal const &lbp)
Definition: Schedule.cc:1134
std::vector< Worker * > AllWorkers
Definition: Schedule.h:109
std::vector< EarlyDeleteHelper > earlyDeleteHelpers_
Definition: Schedule.h:320
WorkerRegistry worker_reg_
Definition: Schedule.h:290
std::vector< WorkerInPath > PathWorkers
Definition: Schedule.h:114
void reportSkipped(LuminosityBlockPrincipal const &) const
Definition: Schedule.h:256
EventID const & id() const
TrigPaths trig_paths_
Definition: Schedule.h:304
void enableEndPaths(bool active)
Definition: Schedule.cc:1235
void addContextAndPrintException(char const *context, cms::Exception &ex, bool disablePrint)
std::string const & category() const
Definition: Exception.cc:183
TrigResPtr endpath_results_
Definition: Schedule.h:299
int total_passed_
Definition: Schedule.h:324
std::string const & moduleLabel() const
boost::shared_ptr< HLTGlobalStatus > TrigResPtr
Definition: Schedule.h:107
int totalEventsFailed() const
Definition: Schedule.h:201
void resetAll()
Definition: Schedule.cc:1311
void fillEndPath(ParameterSet &proc_pset, ProductRegistry &preg, boost::shared_ptr< ProcessConfiguration const > processConfiguration, int bitpos, std::string const &name)
Definition: Schedule.cc:745
RunStopwatch::StopwatchPointer stopwatch_
Definition: Schedule.h:325
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
Definition: Algorithms.h:16
void runEndPaths(typename T::MyPrincipal &, EventSetup const &)
Definition: Schedule.h:519
void addWorker(Worker *aWorker)
Definition: Schedule.h:354
int totalEventsPassed() const
Definition: Schedule.h:195
void operator()(Path &p)
Definition: Schedule.h:344
void processOneOccurrence(typename T::MyPrincipal &, EventSetup const &)
Definition: Path.h:157
boost::shared_ptr< CPUTimer > StopwatchPointer
Definition: RunStopwatch.h:23
void runNow(typename T::MyPrincipal &p, EventSetup const &es)
Definition: Schedule.h:360
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:481
int totalEvents() const
Definition: Schedule.h:189
void stdToEDM(std::exception const &e)
AllWorkers::iterator workersBegin()
Definition: Schedule.h:237
Definition: Path.h:39
void clearCounters()
Clear all the counters in the trigger report.
Definition: Schedule.cc:1303
T::MyPrincipal & ep
Definition: Schedule.h:347
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)
bool runTriggerPaths(typename T::MyPrincipal &, EventSetup const &)
Definition: Schedule.h:512
void respondToCloseOutputFiles(FileBlock const &fb)
Definition: Schedule.cc:1157
std::vector< std::string > vstring
Definition: Schedule.h:104
bool terminate() const
Return whether each output module has reached its maximum count.
Definition: Schedule.cc:643
void respondToOpenInputFile(FileBlock const &fb)
Definition: Schedule.cc:1145
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
vstring trig_name_list_
Definition: Schedule.h:295
virtual bool tryToFillImpl(std::string const &moduleLabel, EventPrincipal &event, EventSetup const &eventSetup, CurrentProcessingContext const *iContext)
Definition: Schedule.h:404
EventSetup const & es
Definition: Schedule.h:348
ActionTable const * act_table_
Definition: Schedule.h:291
std::vector< Worker * > Workers
Definition: Schedule.h:112
AllWorkers::const_iterator workersBegin() const
Definition: Schedule.h:229
void getTriggerReport(TriggerReport &rep) const
Definition: Schedule.cc:1292
tuple out
Definition: dbtoconf.py:99
Schedule(ParameterSet &proc_pset, service::TriggerNamesService &tns, ProductRegistry &pregistry, ActionTable const &actions, boost::shared_ptr< ActivityRegistry > areg, boost::shared_ptr< ProcessConfiguration > processConfiguration, const ParameterSet *subProcPSet)
Definition: Schedule.cc:151
boost::shared_ptr< Worker > WorkerPtr
Definition: Schedule.h:108
void respondToOpenOutputFiles(FileBlock const &fb)
Definition: Schedule.cc:1153
void charPtrToEDM(char const *c)
void stringToEDM(std::string &s)
volatile bool endpathsAreActive_
Definition: Schedule.h:329
TrigResPtr results_
Definition: Schedule.h:298
void reportSkipped(RunPrincipal const &) const
Definition: Schedule.h:257
void addContext(std::string const &context)
Definition: Exception.cc:227
int total_events_
Definition: Schedule.h:323
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 ...
Definition: Schedule.cc:1218
TrigPaths end_paths_
Definition: Schedule.h:305
void reportSkipped(EventPrincipal const &ep) const
Definition: Schedule.h:432
bool wantSummary_
Definition: Schedule.h:322
void postForkReacquireResources(unsigned int iChildIndex, unsigned int iNumberOfChildren)
Definition: Schedule.cc:1169
author Stefano ARGIRO author Bill Tanenbaum
std::vector< unsigned int > earlyDeleteHelperToBranchIndicies_
Definition: Schedule.h:317
std::vector< ModuleDescription const * > getAllModuleDescriptions() const
Definition: Schedule.cc:1194
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:720
void processOneOccurrence(typename T::MyPrincipal &principal, EventSetup const &eventSetup, bool cleaningUpAfterException=false)
Definition: Schedule.h:439
actions::ActionCodes find(const std::string &category) const
Definition: Actions.cc:93
std::vector< Path > TrigPaths
Definition: Schedule.h:105
void openNewOutputFilesIfNeeded()
Definition: Schedule.cc:1122
void preForkReleaseResources()
Definition: Schedule.cc:1166
void openOutputFiles(FileBlock &fb)
Definition: Schedule.cc:1126
void writeRun(RunPrincipal const &rp)
Definition: Schedule.cc:1130
ProcessOneOccurrence(typename T::MyPrincipal &principal, EventSetup const &setup)
Definition: Schedule.h:341
long double T
std::vector< std::pair< BranchID, unsigned int > > earlyDeleteBranchToCount_
Definition: Schedule.h:310
void endJob(ExceptionCollector &collector)
Definition: Schedule.cc:767
AllWorkers::iterator workersEnd()
Definition: Schedule.h:241
bool shouldWeCloseOutput() const
Definition: Schedule.cc:1138
void setupOnDemandSystem(EventPrincipal &principal, EventSetup const &es)
Definition: Schedule.cc:1328
void beginJob()
Definition: Schedule.cc:1161
std::map< std::string, Worker * > labelToWorkers_
Definition: Schedule.h:427
void setup(std::vector< TH2F > &depth, std::string name, std::string units="")
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:661
vstring end_path_name_list_
Definition: Schedule.h:296
void closeOutputFiles()
Definition: Schedule.cc:1118
T w() const
AllWorkers::const_iterator workersEnd() const
Definition: Schedule.h:233
void addToAllWorkers(Worker *w)
Definition: Schedule.cc:1318
boost::shared_ptr< ActivityRegistry > actReg_
Definition: Schedule.h:292
AllWorkers all_workers_
Definition: Schedule.h:302
boost::shared_ptr< UnscheduledCallProducer > unscheduled_
Definition: Schedule.h:327