LArSoft  v07_13_02
Liquid Argon Software toolkit - http://larsoft.org/
art::EndPathExecutor Class Reference

#include "EndPathExecutor.h"

Public Member Functions

 EndPathExecutor (PathManager &pm, ActionTable &actions, ActivityRegistry &areg, MasterProductRegistry &mpr)
 
template<typename T >
void process (typename T::MyPrincipal &principal)
 
void beginJob ()
 
void endJob ()
 
void writeEvent (EventPrincipal &ep)
 
void writeSubRun (SubRunPrincipal &srp)
 
void writeRun (RunPrincipal &rp)
 
void seedRunRangeSet (std::unique_ptr< RangeSetHandler >)
 
void seedSubRunRangeSet (std::unique_ptr< RangeSetHandler >)
 
void setAuxiliaryRangeSetID (SubRunPrincipal &srp)
 
void setAuxiliaryRangeSetID (RunPrincipal &rp)
 
void closeAllOutputFiles ()
 
void openAllOutputFiles (FileBlock &fb)
 
void closeSomeOutputFiles ()
 
void openSomeOutputFiles (FileBlock const &fb)
 
void setOutputFileStatus (OutputFileStatus)
 
void respondToOpenInputFile (FileBlock const &fb)
 
void respondToCloseInputFile (FileBlock const &fb)
 
void respondToOpenOutputFiles (FileBlock const &fb)
 
void respondToCloseOutputFiles (FileBlock const &fb)
 
void recordOutputClosureRequests (Granularity)
 
bool outputsToOpen () const
 
bool outputsToClose () const
 
bool someOutputsOpen () const
 
void incrementInputFileNumber ()
 
bool terminate () const
 
void selectProducts (ProductList const &)
 

Private Types

using OutputWorkers = std::vector< OutputWorker * >
 
using OutputWorkerSet = std::set< OutputWorker * >
 

Private Member Functions

void resetAll ()
 
template<typename T >
void runEndPaths (typename T::MyPrincipal &)
 
template<class F >
void doForAllEnabledWorkers_ (F f)
 
template<class F >
void doForAllEnabledOutputWorkers_ (F f)
 

Private Attributes

PathsInfoendPathInfo_
 
ActionTableact_table_
 
ActivityRegistryactReg_
 
OutputWorkers outputWorkers_
 
OutputWorkerSet outputWorkersToOpen_
 
OutputWorkerSet outputWorkersToClose_ {}
 
std::vector< unsigned char > workersEnabled_
 
std::vector< unsigned char > outputWorkersEnabled_
 
OutputFileStatus fileStatus_ {OutputFileStatus::Closed}
 
std::unique_ptr< RangeSetHandlerrunRangeSetHandler_ {nullptr}
 
std::unique_ptr< RangeSetHandlersubRunRangeSetHandler_ {nullptr}
 

Detailed Description

Definition at line 41 of file EndPathExecutor.h.

Member Typedef Documentation

using art::EndPathExecutor::OutputWorkers = std::vector<OutputWorker*>
private

Definition at line 90 of file EndPathExecutor.h.

Definition at line 91 of file EndPathExecutor.h.

Constructor & Destructor Documentation

art::EndPathExecutor::EndPathExecutor ( PathManager pm,
ActionTable actions,
ActivityRegistry areg,
MasterProductRegistry mpr 
)

Definition at line 26 of file EndPathExecutor.cc.

References act_table_, actReg_, evd::details::begin(), evd::details::end(), art::PathManager::endPathInfo(), endPathInfo_, outputWorkers_, outputWorkersEnabled_, outputWorkersToOpen_, selectProducts(), art::PathsInfo::workers(), and workersEnabled_.

30  : endPathInfo_{pm.endPathInfo()}
31  , act_table_{&actions}
32  , actReg_{areg}
33  , outputWorkers_{getOutputWorkers(endPathInfo_.workers())}
36  std::end(outputWorkers_)) // seed with all output workers
37  , workersEnabled_(endPathInfo_.workers().size(), true)
39 {
40  mpr.registerProductListUpdatedCallback(
41  [this](auto const& productList) { this->selectProducts(productList); });
42 }
std::vector< unsigned char > workersEnabled_
ActionTable * act_table_
WorkerMap const & workers() const
Definition: PathsInfo.h:81
std::vector< evd::details::RawDigitInfo_t >::const_iterator begin(RawDigitCacheDataClass const &cache)
OutputWorkers outputWorkers_
OutputWorkerSet outputWorkersToOpen_
void selectProducts(ProductList const &)
ActivityRegistry & actReg_
std::vector< unsigned char > outputWorkersEnabled_
std::vector< evd::details::RawDigitInfo_t >::const_iterator end(RawDigitCacheDataClass const &cache)

Member Function Documentation

void art::EndPathExecutor::beginJob ( )

Definition at line 334 of file EndPathExecutor.cc.

References doForAllEnabledWorkers_(), and w.

335 {
336  doForAllEnabledWorkers_([](auto w) { w->beginJob(); });
337 }
void doForAllEnabledWorkers_(F f)
Float_t w
Definition: plot.C:23
void art::EndPathExecutor::closeAllOutputFiles ( )

Definition at line 90 of file EndPathExecutor.cc.

References actReg_, art::OutputWorker::closeFile(), doForAllEnabledOutputWorkers_(), art::Worker::label(), art::OutputWorker::lastClosedFileName(), art::ActivityRegistry::sPostCloseOutputFile, and art::ActivityRegistry::sPreCloseOutputFile.

91 {
92  doForAllEnabledOutputWorkers_([this](OutputWorker* ow) {
93  actReg_.sPreCloseOutputFile.invoke(ow->label());
94  ow->closeFile();
96  OutputFileInfo(ow->label(), ow->lastClosedFileName()));
97  });
98 }
GlobalSignal< detail::SignalResponseType::FIFO, void(std::string const &)> sPreCloseOutputFile
GlobalSignal< detail::SignalResponseType::LIFO, void(OutputFileInfo const &)> sPostCloseOutputFile
ActivityRegistry & actReg_
void doForAllEnabledOutputWorkers_(F f)
void art::EndPathExecutor::closeSomeOutputFiles ( )

Definition at line 269 of file EndPathExecutor.cc.

References actReg_, outputWorkersToClose_, outputWorkersToOpen_, setOutputFileStatus(), art::ActivityRegistry::sPostCloseOutputFile, art::ActivityRegistry::sPreCloseOutputFile, and art::Switching.

270 {
271  auto invoke_sPreCloseOutputFile = [this](auto ow) {
272  actReg_.sPreCloseOutputFile.invoke(ow->label());
273  };
274  auto closeFile = [](auto ow) { ow->closeFile(); };
275  auto invoke_sPostCloseOutputFile = [this](auto ow) {
277  OutputFileInfo{ow->label(), ow->lastClosedFileName()});
278  };
279 
281  cet::for_all(outputWorkersToClose_, invoke_sPreCloseOutputFile);
282  cet::for_all(outputWorkersToClose_, closeFile);
283  cet::for_all(outputWorkersToClose_, invoke_sPostCloseOutputFile);
285 }
void setOutputFileStatus(OutputFileStatus)
OutputWorkerSet outputWorkersToOpen_
GlobalSignal< detail::SignalResponseType::FIFO, void(std::string const &)> sPreCloseOutputFile
GlobalSignal< detail::SignalResponseType::LIFO, void(OutputFileInfo const &)> sPostCloseOutputFile
ActivityRegistry & actReg_
OutputWorkerSet outputWorkersToClose_
template<class F >
void art::EndPathExecutor::doForAllEnabledOutputWorkers_ ( f)
private

Definition at line 170 of file EndPathExecutor.h.

References outputWorkers_, and outputWorkersEnabled_.

Referenced by closeAllOutputFiles(), incrementInputFileNumber(), openAllOutputFiles(), recordOutputClosureRequests(), selectProducts(), setAuxiliaryRangeSetID(), setOutputFileStatus(), writeEvent(), writeRun(), and writeSubRun().

171 {
172  size_t index{0};
173  for (auto ow : outputWorkers_) {
174  if (outputWorkersEnabled_[index++]) {
175  fcn(ow);
176  }
177  }
178 }
OutputWorkers outputWorkers_
std::vector< unsigned char > outputWorkersEnabled_
template<class F >
void art::EndPathExecutor::doForAllEnabledWorkers_ ( f)
private

Definition at line 158 of file EndPathExecutor.h.

References endPathInfo_, art::PathsInfo::workers(), and workersEnabled_.

Referenced by beginJob(), endJob(), resetAll(), respondToCloseInputFile(), respondToCloseOutputFiles(), respondToOpenInputFile(), and respondToOpenOutputFiles().

159 {
160  size_t index{0};
161  for (auto const& val : endPathInfo_.workers()) {
162  if (workersEnabled_[index++]) {
163  fcn(val.second.get());
164  }
165  }
166 }
std::vector< unsigned char > workersEnabled_
WorkerMap const & workers() const
Definition: PathsInfo.h:81
void art::EndPathExecutor::endJob ( )

Definition at line 61 of file EndPathExecutor.cc.

References doForAllEnabledWorkers_(), e, art::Worker::endJob(), art::errors::EndJobFailure, and w.

62 {
63  bool failure{false};
65  doForAllEnabledWorkers_([&failure, &error](Worker* w) {
66  try {
67  w->endJob();
68  }
69  catch (cet::exception& e) {
70  error << "cet::exception caught in Schedule::endJob\n"
71  << e.explain_self();
72  failure = true;
73  }
74  catch (std::exception& e) {
75  error << "Standard library exception caught in Schedule::endJob\n"
76  << e.what();
77  failure = true;
78  }
79  catch (...) {
80  error << "Unknown exception caught in Schedule::endJob\n";
81  failure = true;
82  }
83  });
84  if (failure) {
85  throw error;
86  }
87 }
void doForAllEnabledWorkers_(F f)
cet::coded_exception< errors::ErrorCodes, ExceptionDetail::translate > Exception
Definition: Exception.h:66
Float_t e
Definition: plot.C:34
Float_t w
Definition: plot.C:23
cet::coded_exception< error, detail::translate > exception
Definition: exception.h:33
void art::EndPathExecutor::incrementInputFileNumber ( )

Definition at line 242 of file EndPathExecutor.cc.

References doForAllEnabledOutputWorkers_().

243 {
245  [](auto ow) { ow->incrementInputFileNumber(); });
246 }
void doForAllEnabledOutputWorkers_(F f)
void art::EndPathExecutor::openAllOutputFiles ( FileBlock fb)

Definition at line 101 of file EndPathExecutor.cc.

References actReg_, doForAllEnabledOutputWorkers_(), art::Worker::label(), art::OutputWorker::openFile(), and art::ActivityRegistry::sPostOpenOutputFile.

102 {
103  doForAllEnabledOutputWorkers_([this, &fb](OutputWorker* ow) {
104  ow->openFile(fb);
105  actReg_.sPostOpenOutputFile.invoke(ow->label());
106  });
107 }
GlobalSignal< detail::SignalResponseType::LIFO, void(std::string const &)> sPostOpenOutputFile
TFile fb("Li6.root")
ActivityRegistry & actReg_
void doForAllEnabledOutputWorkers_(F f)
void art::EndPathExecutor::openSomeOutputFiles ( FileBlock const &  fb)

Definition at line 295 of file EndPathExecutor.cc.

References actReg_, fb(), art::Open, outputWorkersToOpen_, setOutputFileStatus(), and art::ActivityRegistry::sPostOpenOutputFile.

296 {
297  auto openFile = [&fb](auto ow) { ow->openFile(fb); };
298  auto invoke_sPostOpenOutputFile = [this](auto ow) {
299  actReg_.sPostOpenOutputFile.invoke(ow->label());
300  };
301 
302  cet::for_all(outputWorkersToOpen_, openFile);
303  cet::for_all(outputWorkersToOpen_, invoke_sPostOpenOutputFile);
305 
306  outputWorkersToOpen_.clear();
307 }
GlobalSignal< detail::SignalResponseType::LIFO, void(std::string const &)> sPostOpenOutputFile
void setOutputFileStatus(OutputFileStatus)
TFile fb("Li6.root")
OutputWorkerSet outputWorkersToOpen_
ActivityRegistry & actReg_
bool art::EndPathExecutor::outputsToClose ( ) const

Definition at line 255 of file EndPathExecutor.cc.

References outputWorkersToClose_.

256 {
257  return !outputWorkersToClose_.empty();
258 }
OutputWorkerSet outputWorkersToClose_
bool art::EndPathExecutor::outputsToOpen ( ) const

Definition at line 249 of file EndPathExecutor.cc.

References outputWorkersToOpen_.

250 {
251  return !outputWorkersToOpen_.empty();
252 }
OutputWorkerSet outputWorkersToOpen_
template<typename T >
void art::EndPathExecutor::process ( typename T::MyPrincipal &  principal)

Definition at line 118 of file EndPathExecutor.h.

References act_table_, art::PathsInfo::addEvent(), art::PathsInfo::addPass(), endPathInfo_, art::Event, art::errors::EventProcessorFailure, art::ActionTable::find(), art::actions::IgnoreCompletely, art::PathsInfo::pathPtrs(), resetAll(), and art::actions::Rethrow.

119 {
120  this->resetAll();
121 
122  if (T::level == Level::Event) {
124  }
125  try {
126  if (!endPathInfo_.pathPtrs().empty()) {
127  endPathInfo_.pathPtrs().front()->process<T>(ep);
128  }
129  }
130  catch (cet::exception& ex) {
131  actions::ActionCodes const action{T::level == Level::Event ?
132  act_table_->find(ex.root_cause()) :
134  switch (action) {
136  mf::LogWarning(ex.category())
137  << "exception being ignored for current event:\n"
138  << cet::trim_right_copy(ex.what(), " \n");
139  break;
140  }
141  default: {
142  throw art::Exception(errors::EventProcessorFailure, "EndPathExecutor:")
143  << "an exception occurred during current event processing\n"
144  << ex;
145  }
146  }
147  }
148  catch (...) {
149  mf::LogError("PassingThrough")
150  << "an exception occurred during current event processing\n";
151  throw;
152  }
154 }
ActionTable * act_table_
actions::ActionCodes find(std::string const &category) const
Definition: Actions.cc:87
void addPass()
Definition: PathsInfo.h:75
MaybeLogger_< ELseverityLevel::ELsev_error, false > LogError
void addEvent()
Definition: PathsInfo.h:69
cet::coded_exception< errors::ErrorCodes, ExceptionDetail::translate > Exception
Definition: Exception.h:66
MaybeLogger_< ELseverityLevel::ELsev_warning, false > LogWarning
PathPtrs const & pathPtrs() const
Definition: PathsInfo.h:87
cet::coded_exception< error, detail::translate > exception
Definition: exception.h:33
void art::EndPathExecutor::recordOutputClosureRequests ( Granularity  b)

Definition at line 212 of file EndPathExecutor.cc.

References doForAllEnabledOutputWorkers_(), and outputWorkersToClose_.

213 {
214  doForAllEnabledOutputWorkers_([this, b](auto ow) {
215  // We need to support the following case:
216  //
217  // fileProperties: {
218  // maxEvents: 10
219  // maxRuns: 1
220  // granularity: Event
221  // }
222  //
223  // If a request to close is made on a run boundary, but the
224  // granularity is still Event, then the file should close. For
225  // that reason, the comparison is 'granularity > b' instead of
226  // 'granularity != b'.
227 
228  auto const granularity = ow->fileGranularity();
229  if (granularity > b || !ow->requestsToCloseFile())
230  return;
231 
232  // Technical note: although the outputWorkersToClose_ container
233  // is "moved from" in closeSomeOutputFiles, it is safe to call
234  // 'insert' vis-a-vis the [lib.types.movedfrom] section of the
235  // standard. There are no preconditions for std::set::insert,
236  // so no state-checking is required.
237  outputWorkersToClose_.insert(ow);
238  });
239 }
void doForAllEnabledOutputWorkers_(F f)
OutputWorkerSet outputWorkersToClose_
void art::EndPathExecutor::resetAll ( )
private

Definition at line 340 of file EndPathExecutor.cc.

References doForAllEnabledWorkers_(), and w.

Referenced by process().

341 {
342  doForAllEnabledWorkers_([](auto w) { w->reset(); });
343 }
void doForAllEnabledWorkers_(F f)
Float_t w
Definition: plot.C:23
void art::EndPathExecutor::respondToCloseInputFile ( FileBlock const &  fb)

Definition at line 316 of file EndPathExecutor.cc.

References doForAllEnabledWorkers_(), and w.

317 {
318  doForAllEnabledWorkers_([&fb](auto w) { w->respondToCloseInputFile(fb); });
319 }
void doForAllEnabledWorkers_(F f)
TFile fb("Li6.root")
Float_t w
Definition: plot.C:23
void art::EndPathExecutor::respondToCloseOutputFiles ( FileBlock const &  fb)

Definition at line 328 of file EndPathExecutor.cc.

References doForAllEnabledWorkers_(), and w.

329 {
330  doForAllEnabledWorkers_([&fb](auto w) { w->respondToCloseOutputFiles(fb); });
331 }
void doForAllEnabledWorkers_(F f)
TFile fb("Li6.root")
Float_t w
Definition: plot.C:23
void art::EndPathExecutor::respondToOpenInputFile ( FileBlock const &  fb)

Definition at line 310 of file EndPathExecutor.cc.

References doForAllEnabledWorkers_(), and w.

311 {
312  doForAllEnabledWorkers_([&fb](auto w) { w->respondToOpenInputFile(fb); });
313 }
void doForAllEnabledWorkers_(F f)
TFile fb("Li6.root")
Float_t w
Definition: plot.C:23
void art::EndPathExecutor::respondToOpenOutputFiles ( FileBlock const &  fb)

Definition at line 322 of file EndPathExecutor.cc.

References doForAllEnabledWorkers_(), and w.

323 {
324  doForAllEnabledWorkers_([&fb](auto w) { w->respondToOpenOutputFiles(fb); });
325 }
void doForAllEnabledWorkers_(F f)
TFile fb("Li6.root")
Float_t w
Definition: plot.C:23
template<typename T >
void art::EndPathExecutor::runEndPaths ( typename T::MyPrincipal &  )
private
void art::EndPathExecutor::seedRunRangeSet ( std::unique_ptr< RangeSetHandler rsh)

Definition at line 143 of file EndPathExecutor.cc.

References runRangeSetHandler_.

144 {
145  runRangeSetHandler_ = std::move(rsh);
146 }
std::unique_ptr< RangeSetHandler > runRangeSetHandler_
void art::EndPathExecutor::seedSubRunRangeSet ( std::unique_ptr< RangeSetHandler rsh)

Definition at line 149 of file EndPathExecutor.cc.

References subRunRangeSetHandler_.

150 {
151  subRunRangeSetHandler_ = std::move(rsh);
152 }
std::unique_ptr< RangeSetHandler > subRunRangeSetHandler_
void art::EndPathExecutor::selectProducts ( ProductList const &  productList)

Definition at line 205 of file EndPathExecutor.cc.

References doForAllEnabledOutputWorkers_(), and w.

Referenced by EndPathExecutor().

206 {
208  [&productList](auto w) { w->selectProducts(productList); });
209 }
void doForAllEnabledOutputWorkers_(F f)
Float_t w
Definition: plot.C:23
void art::EndPathExecutor::setAuxiliaryRangeSetID ( SubRunPrincipal srp)

Definition at line 155 of file EndPathExecutor.cc.

References doForAllEnabledOutputWorkers_(), fileStatus_, runRangeSetHandler_, subRunRangeSetHandler_, art::Switching, art::SubRunPrincipal::updateSeenRanges(), and w.

156 {
157  assert(subRunRangeSetHandler_);
158  assert(runRangeSetHandler_);
159  // Ranges are split/flushed only for a RangeSetHandler whose dynamic
160  // type is 'ClosedRangeSetHandler'. The implementations for the
161  // 'OpenRangeSetHandler' are nops.
162  //
163  // Consider the following range-sets
164  // SubRun RangeSet: { Run 1 : SubRun 1 : Events [1,7) } <-- Current iterator
165  // of handler Run RangeSet: { Run 1 : SubRun 0 : Events [5,11)
166  // SubRun 1 : Events [1,7) <-- Current iterator
167  // of handler SubRun 1 : Events [9,15) }
169  // For a range split just before SubRun 1, Event 6, the range sets
170  // should become:
171  //
172  // SubRun RangeSet: { Run 1 : SubRun 1 : Events [1,6)
173  // SubRun 1 : Events [6,7) } <-- Updated
174  // iterator of handler
175  // Run RangeSet: { Run 1 : SubRun 0 : Events [5,11)
176  // SubRun 1 : Events [1,6)
177  // SubRun 1 : Events [6,7) <-- Updated
178  // iterator of handler SubRun 1 : Events [9,15)
179  // }
180  subRunRangeSetHandler_->maybeSplitRange();
181  runRangeSetHandler_->maybeSplitRange();
182  } else {
183  subRunRangeSetHandler_->flushRanges();
184  }
185  auto const& ranges = subRunRangeSetHandler_->seenRanges();
186  srp.updateSeenRanges(ranges);
188  [&ranges](auto w) { w->setSubRunAuxiliaryRangeSetID(ranges); });
189 }
std::unique_ptr< RangeSetHandler > subRunRangeSetHandler_
void doForAllEnabledOutputWorkers_(F f)
OutputFileStatus fileStatus_
Float_t w
Definition: plot.C:23
std::unique_ptr< RangeSetHandler > runRangeSetHandler_
void art::EndPathExecutor::setAuxiliaryRangeSetID ( RunPrincipal rp)

Definition at line 192 of file EndPathExecutor.cc.

References doForAllEnabledOutputWorkers_(), fileStatus_, runRangeSetHandler_, art::Switching, art::RunPrincipal::updateSeenRanges(), and w.

193 {
194  assert(runRangeSetHandler_);
196  runRangeSetHandler_->flushRanges();
197  }
198  auto const& ranges = runRangeSetHandler_->seenRanges();
199  rp.updateSeenRanges(ranges);
201  [&ranges](auto w) { w->setRunAuxiliaryRangeSetID(ranges); });
202 }
void doForAllEnabledOutputWorkers_(F f)
OutputFileStatus fileStatus_
Float_t w
Definition: plot.C:23
std::unique_ptr< RangeSetHandler > runRangeSetHandler_
void art::EndPathExecutor::setOutputFileStatus ( OutputFileStatus  ofs)

Definition at line 288 of file EndPathExecutor.cc.

References doForAllEnabledOutputWorkers_(), and fileStatus_.

Referenced by closeSomeOutputFiles(), and openSomeOutputFiles().

289 {
290  doForAllEnabledOutputWorkers_([ofs](auto ow) { ow->setFileStatus(ofs); });
291  fileStatus_ = ofs;
292 }
void doForAllEnabledOutputWorkers_(F f)
OutputFileStatus fileStatus_
bool art::EndPathExecutor::someOutputsOpen ( ) const

Definition at line 261 of file EndPathExecutor.cc.

References outputWorkers_.

262 {
263  return std::any_of(outputWorkers_.cbegin(),
264  outputWorkers_.cend(),
265  [](auto ow) { return ow->fileIsOpen(); });
266 }
OutputWorkers outputWorkers_
bool art::EndPathExecutor::terminate ( ) const

Definition at line 45 of file EndPathExecutor.cc.

References outputWorkers_, and w.

46 {
47  bool const rc = !outputWorkers_.empty() && // Necessary because std::all_of()
48  // returns true if range is empty.
49  std::all_of(outputWorkers_.cbegin(),
50  outputWorkers_.cend(),
51  [](auto& w) { return w->limitReached(); });
52  if (rc) {
53  mf::LogInfo("SuccessfulTermination")
54  << "The job is terminating successfully because each output module\n"
55  << "has reached its configured limit.\n";
56  }
57  return rc;
58 }
MaybeLogger_< ELseverityLevel::ELsev_info, false > LogInfo
OutputWorkers outputWorkers_
Float_t w
Definition: plot.C:23
void art::EndPathExecutor::writeEvent ( EventPrincipal ep)

Definition at line 128 of file EndPathExecutor.cc.

References actReg_, doForAllEnabledOutputWorkers_(), art::EventPrincipal::id(), art::EventPrincipal::isLastInSubRun(), runRangeSetHandler_, art::ActivityRegistry::sPostWriteEvent, art::ActivityRegistry::sPreWriteEvent, subRunRangeSetHandler_, and w.

129 {
130  doForAllEnabledOutputWorkers_([this, &ep](auto w) {
131  auto const& md = w->description();
132  actReg_.sPreWriteEvent.invoke(md);
133  w->writeEvent(ep);
134  actReg_.sPostWriteEvent.invoke(md);
135  });
136  auto const& eid = ep.id();
137  bool const lastInSubRun{ep.isLastInSubRun()};
138  runRangeSetHandler_->update(eid, lastInSubRun);
139  subRunRangeSetHandler_->update(eid, lastInSubRun);
140 }
GlobalSignal< detail::SignalResponseType::FIFO, void(ModuleDescription const &)> sPreWriteEvent
GlobalSignal< detail::SignalResponseType::LIFO, void(ModuleDescription const &)> sPostWriteEvent
std::unique_ptr< RangeSetHandler > subRunRangeSetHandler_
ActivityRegistry & actReg_
void doForAllEnabledOutputWorkers_(F f)
Float_t w
Definition: plot.C:23
std::unique_ptr< RangeSetHandler > runRangeSetHandler_
void art::EndPathExecutor::writeRun ( RunPrincipal rp)

Definition at line 110 of file EndPathExecutor.cc.

References doForAllEnabledOutputWorkers_(), fileStatus_, runRangeSetHandler_, art::Switching, and w.

111 {
112  doForAllEnabledOutputWorkers_([&rp](auto w) { w->writeRun(rp); });
114  runRangeSetHandler_->rebase();
115  }
116 }
void doForAllEnabledOutputWorkers_(F f)
OutputFileStatus fileStatus_
Float_t w
Definition: plot.C:23
std::unique_ptr< RangeSetHandler > runRangeSetHandler_
void art::EndPathExecutor::writeSubRun ( SubRunPrincipal srp)

Definition at line 119 of file EndPathExecutor.cc.

References doForAllEnabledOutputWorkers_(), fileStatus_, subRunRangeSetHandler_, art::Switching, and w.

120 {
121  doForAllEnabledOutputWorkers_([&srp](auto w) { w->writeSubRun(srp); });
123  subRunRangeSetHandler_->rebase();
124  }
125 }
std::unique_ptr< RangeSetHandler > subRunRangeSetHandler_
void doForAllEnabledOutputWorkers_(F f)
OutputFileStatus fileStatus_
Float_t w
Definition: plot.C:23

Member Data Documentation

ActionTable* art::EndPathExecutor::act_table_
private

Definition at line 104 of file EndPathExecutor.h.

Referenced by EndPathExecutor(), and process().

ActivityRegistry& art::EndPathExecutor::actReg_
private
PathsInfo& art::EndPathExecutor::endPathInfo_
private

Definition at line 103 of file EndPathExecutor.h.

Referenced by doForAllEnabledWorkers_(), EndPathExecutor(), and process().

OutputFileStatus art::EndPathExecutor::fileStatus_ {OutputFileStatus::Closed}
private
OutputWorkers art::EndPathExecutor::outputWorkers_
private
std::vector<unsigned char> art::EndPathExecutor::outputWorkersEnabled_
private

Definition at line 110 of file EndPathExecutor.h.

Referenced by doForAllEnabledOutputWorkers_(), and EndPathExecutor().

OutputWorkerSet art::EndPathExecutor::outputWorkersToClose_ {}
private
OutputWorkerSet art::EndPathExecutor::outputWorkersToOpen_
private
std::unique_ptr<RangeSetHandler> art::EndPathExecutor::runRangeSetHandler_ {nullptr}
private

Definition at line 112 of file EndPathExecutor.h.

Referenced by seedRunRangeSet(), setAuxiliaryRangeSetID(), writeEvent(), and writeRun().

std::unique_ptr<RangeSetHandler> art::EndPathExecutor::subRunRangeSetHandler_ {nullptr}
private
std::vector<unsigned char> art::EndPathExecutor::workersEnabled_
private

Definition at line 109 of file EndPathExecutor.h.

Referenced by doForAllEnabledWorkers_(), and EndPathExecutor().


The documentation for this class was generated from the following files: