CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
SubProcess.h
Go to the documentation of this file.
1 #ifndef FwCore_Framework_SubProcess_h
2 #define FWCore_Framework_SubProcess_h
3 
12 
13 #include "boost/scoped_ptr.hpp"
14 #include "boost/shared_ptr.hpp"
15 
16 #include <map>
17 #include <memory>
18 
19 namespace edm {
20  class EDLooperBase;
21  class HistoryAppender;
22  class IOVSyncValue;
23  class ParameterSet;
24  class ProductRegistry;
25  namespace eventsetup {
27  }
28  class SubProcess : public OutputModule {
29  public:
30  SubProcess(ParameterSet& parameterSet,
31  ParameterSet const& topLevelParameterSet,
32  boost::shared_ptr<ProductRegistry const> parentProductRegistry,
34  ActivityRegistry& parentActReg,
35  ServiceToken const& token,
37 
38  virtual ~SubProcess();
39 
47 
48  void doEvent(EventPrincipal const& principal, IOVSyncValue const& ts);
49 
50  void doBeginRun(RunPrincipal const& principal, IOVSyncValue const& ts);
51 
52  void doEndRun(RunPrincipal const& principal, IOVSyncValue const& ts, bool cleaningUpAfterException);
53 
54  void doBeginLuminosityBlock(LuminosityBlockPrincipal const& principal, IOVSyncValue const& ts);
55 
56  void doEndLuminosityBlock(LuminosityBlockPrincipal const& principal, IOVSyncValue const& ts, bool cleaningUpAfterException);
57 
58  // Write the luminosity block
59  void writeLumi(ProcessHistoryID const& parentPhID, int runNumber, int lumiNumber);
60 
61  void deleteLumiFromCache(ProcessHistoryID const& parentPhID, int runNumber, int lumiNumber);
62 
63  // Write the run
64  void writeRun(ProcessHistoryID const& parentPhID, int runNumber);
65 
66  void deleteRunFromCache(ProcessHistoryID const& parentPhID, int runNumber);
67 
68  // Call closeFile() on all OutputModules.
71  schedule_->closeOutputFiles();
72  if(subProcess_.get()) subProcess_->closeOutputFiles();
73  }
74 
75  // Call openNewFileIfNeeded() on all OutputModules
78  schedule_->openNewOutputFilesIfNeeded();
79  if(subProcess_.get()) subProcess_->openNewOutputFilesIfNeeded();
80  }
81 
82  // Call openFiles() on all OutputModules
85  schedule_->openOutputFiles(fb);
86  if(subProcess_.get()) subProcess_->openOutputFiles(fb);
87  }
88 
89  // Call respondToOpenInputFile() on all Modules
92  schedule_->respondToOpenInputFile(fb);
93  if(subProcess_.get()) subProcess_->respondToOpenInputFile(fb);
94  }
95 
96  // Call respondToCloseInputFile() on all Modules
99  schedule_->respondToCloseInputFile(fb);
100  if(subProcess_.get()) subProcess_->respondToCloseInputFile(fb);
101  }
102 
103  // Call respondToOpenOutputFiles() on all Modules
106  schedule_->respondToOpenOutputFiles(fb);
107  if(subProcess_.get()) subProcess_->respondToOpenOutputFiles(fb);
108  }
109 
110  // Call respondToCloseOutputFiles() on all Modules
113  schedule_->respondToCloseOutputFiles(fb);
114  if(subProcess_.get()) subProcess_->respondToCloseOutputFiles(fb);
115  }
116 
117  // Call shouldWeCloseFile() on all OutputModules.
118  bool shouldWeCloseOutput() const {
120  return schedule_->shouldWeCloseOutput() || (subProcess_.get() ? subProcess_->shouldWeCloseOutput() : false);
121  }
122 
125  schedule_->preForkReleaseResources();
126  if(subProcess_.get()) subProcess_->preForkReleaseResources();
127  }
128 
129  void postForkReacquireResources(unsigned int iChildIndex, unsigned int iNumberOfChildren) {
131  schedule_->postForkReacquireResources(iChildIndex, iNumberOfChildren);
132  if(subProcess_.get()) subProcess_->postForkReacquireResources(iChildIndex, iNumberOfChildren);
133  }
134 
136 
140  std::vector<ModuleDescription const*> getAllModuleDescriptions() const;
141 
145  int totalEvents() const {
146  return schedule_->totalEvents();
147  }
148 
150  int totalEventsPassed() const {
152  return schedule_->totalEventsPassed();
153  }
154 
157  int totalEventsFailed() const {
159  return schedule_->totalEventsFailed();
160  }
161 
164  void enableEndPaths(bool active) {
166  schedule_->enableEndPaths(active);
167  if(subProcess_.get()) subProcess_->enableEndPaths(active);
168  }
169 
171  bool endPathsEnabled() const {
173  return schedule_->endPathsEnabled();
174  }
175 
178  void getTriggerReport(TriggerReport& rep) const {
180  schedule_->getTriggerReport(rep);
181  }
182 
185  bool terminate() const {
187  return subProcess_.get() ? subProcess_->terminate() : schedule_->terminate();
188  }
189 
191  void clearCounters() {
193  schedule_->clearCounters();
194  if(subProcess_.get()) subProcess_->clearCounters();
195  }
196 
197  private:
198  struct ESInfo {
201  EventSetup const& es_;
202  };
203 
204  virtual void beginJob();
205  virtual void endJob();
206  virtual void write(EventPrincipal const& e);
207  virtual void beginRun(RunPrincipal const& r);
208  virtual void endRun(RunPrincipal const& r);
209  virtual void beginLuminosityBlock(LuminosityBlockPrincipal const& lb);
210  virtual void endLuminosityBlock(LuminosityBlockPrincipal const& lb);
211  virtual void writeRun(RunPrincipal const&) { throw 0; }
212  virtual void writeLuminosityBlock(LuminosityBlockPrincipal const&) { throw 0; }
213 
214  void propagateProducts(BranchType type, Principal const& parentPrincipal, Principal& principal) const;
215 
217  boost::shared_ptr<ProductRegistry const> parentPreg_;
218  boost::shared_ptr<SignallingProductRegistry> preg_;
219  boost::shared_ptr<ActionTable const> act_table_;
220  boost::shared_ptr<ProcessConfiguration> processConfiguration_;
222  boost::shared_ptr<eventsetup::EventSetupProvider> esp_;
223  std::auto_ptr<Schedule> schedule_;
224  std::map<ProcessHistoryID, ProcessHistoryID> parentToChildPhID_;
225  boost::scoped_ptr<HistoryAppender> historyAppender_;
226  std::auto_ptr<ESInfo> esInfo_;
227  std::auto_ptr<SubProcess> subProcess_;
229  std::unique_ptr<ParameterSet> processParameterSet_;
230  };
231 
232  // free function
233  std::auto_ptr<ParameterSet> popSubProcessParameterSet(ParameterSet& parameterSet);
234 }
235 #endif
boost::shared_ptr< SignallingProductRegistry > preg_
Definition: SubProcess.h:218
type
Definition: HCALResponse.h:22
boost::shared_ptr< ProductRegistry const > parentPreg_
Definition: SubProcess.h:217
void enableEndPaths(bool active)
Definition: SubProcess.h:164
void respondToOpenInputFile(FileBlock const &fb)
Definition: SubProcess.h:90
void doBeginRun(RunPrincipal const &principal, IOVSyncValue const &ts)
Definition: SubProcess.cc:204
void writeLumi(ProcessHistoryID const &parentPhID, int runNumber, int lumiNumber)
Definition: SubProcess.cc:312
int totalEventsFailed() const
Definition: SubProcess.h:157
bool doEndLuminosityBlock(LuminosityBlockPrincipal const &lbp, EventSetup const &c, CurrentProcessingContext const *cpc)
int totalEvents() const
Definition: SubProcess.h:145
std::auto_ptr< ParameterSet > popSubProcessParameterSet(ParameterSet &parameterSet)
Definition: SubProcess.cc:361
IOVSyncValue const & ts_
Definition: SubProcess.h:200
boost::shared_ptr< eventsetup::EventSetupProvider > esp_
Definition: SubProcess.h:222
virtual ~SubProcess()
Definition: SubProcess.cc:123
virtual void writeLuminosityBlock(LuminosityBlockPrincipal const &)
Definition: SubProcess.h:212
virtual void endLuminosityBlock(LuminosityBlockPrincipal const &lb)
Definition: SubProcess.cc:303
virtual void beginLuminosityBlock(LuminosityBlockPrincipal const &lb)
Definition: SubProcess.cc:279
virtual void beginRun(RunPrincipal const &r)
Definition: SubProcess.cc:213
SubProcess(ParameterSet &parameterSet, ParameterSet const &topLevelParameterSet, boost::shared_ptr< ProductRegistry const > parentProductRegistry, eventsetup::EventSetupsController &esController, ActivityRegistry &parentActReg, ServiceToken const &token, serviceregistry::ServiceLegacy iLegacy)
Definition: SubProcess.cc:31
bool terminate() const
Definition: SubProcess.h:185
void openOutputFiles(FileBlock &fb)
Definition: SubProcess.h:83
void postForkReacquireResources(unsigned int iChildIndex, unsigned int iNumberOfChildren)
Definition: SubProcess.h:129
void doBeginLuminosityBlock(LuminosityBlockPrincipal const &principal, IOVSyncValue const &ts)
Definition: SubProcess.cc:270
int totalEventsPassed() const
Return the number of events which have been passed by one or more trigger paths.
Definition: SubProcess.h:150
bool endPathsEnabled() const
Return true if end_paths are active, and false if they are inactive.
Definition: SubProcess.h:171
BranchType
Definition: BranchType.h:11
void openNewOutputFilesIfNeeded()
Definition: SubProcess.h:76
ServiceToken serviceToken_
Definition: SubProcess.h:216
void deleteRunFromCache(ProcessHistoryID const &parentPhID, int runNumber)
Definition: SubProcess.cc:262
bool shouldWeCloseOutput() const
Definition: SubProcess.h:118
bool cleaningUpAfterException_
Definition: SubProcess.h:228
bool doEvent(EventPrincipal const &ep, EventSetup const &c, CurrentProcessingContext const *cpc)
boost::scoped_ptr< HistoryAppender > historyAppender_
Definition: SubProcess.h:225
void closeOutputFiles()
Definition: SubProcess.h:69
std::vector< ModuleDescription const * > getAllModuleDescriptions() const
Return a vector allowing const access to all the ModuleDescriptions for this SubProcess.
virtual void write(EventPrincipal const &e)
Definition: SubProcess.cc:179
void respondToOpenOutputFiles(FileBlock const &fb)
Definition: SubProcess.h:104
void preForkReleaseResources()
Definition: SubProcess.h:123
ESInfo(IOVSyncValue const &ts, eventsetup::EventSetupProvider &esp)
Definition: SubProcess.cc:164
std::auto_ptr< ESInfo > esInfo_
Definition: SubProcess.h:226
virtual void writeRun(RunPrincipal const &)
Definition: SubProcess.h:211
void doEndRun(RunPrincipal const &principal, IOVSyncValue const &ts, bool cleaningUpAfterException)
Definition: SubProcess.cc:234
boost::shared_ptr< ActionTable const > act_table_
Definition: SubProcess.h:219
std::auto_ptr< Schedule > schedule_
Definition: SubProcess.h:223
virtual void endJob()
Definition: SubProcess.cc:154
std::map< ProcessHistoryID, ProcessHistoryID > parentToChildPhID_
Definition: SubProcess.h:224
void respondToCloseInputFile(FileBlock const &fb)
Definition: SubProcess.h:97
void deleteLumiFromCache(ProcessHistoryID const &parentPhID, int runNumber, int lumiNumber)
Definition: SubProcess.cc:321
void respondToCloseOutputFiles(FileBlock const &fb)
Definition: SubProcess.h:111
void getTriggerReport(TriggerReport &rep) const
Definition: SubProcess.h:178
bool doBeginLuminosityBlock(LuminosityBlockPrincipal const &lbp, EventSetup const &c, CurrentProcessingContext const *cpc)
std::unique_ptr< ParameterSet > processParameterSet_
Definition: SubProcess.h:229
void propagateProducts(BranchType type, Principal const &parentPrincipal, Principal &principal) const
Definition: SubProcess.cc:329
virtual void endRun(RunPrincipal const &r)
Definition: SubProcess.cc:244
boost::shared_ptr< ProcessConfiguration > processConfiguration_
Definition: SubProcess.h:220
void writeRun(ProcessHistoryID const &parentPhID, int runNumber)
Definition: SubProcess.cc:253
EventSetup const & es_
Definition: SubProcess.h:201
bool doEndRun(RunPrincipal const &rp, EventSetup const &c, CurrentProcessingContext const *cpc)
bool doBeginRun(RunPrincipal const &rp, EventSetup const &c, CurrentProcessingContext const *cpc)
std::auto_ptr< SubProcess > subProcess_
Definition: SubProcess.h:227
void clearCounters()
Clear all the counters in the trigger report.
Definition: SubProcess.h:191
virtual void beginJob()
Definition: SubProcess.cc:126
PrincipalCache principalCache_
Definition: SubProcess.h:221
void doEndLuminosityBlock(LuminosityBlockPrincipal const &principal, IOVSyncValue const &ts, bool cleaningUpAfterException)
Definition: SubProcess.cc:293
void doEvent(EventPrincipal const &principal, IOVSyncValue const &ts)
Definition: SubProcess.cc:170