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

#include "EventProcessor.h"

Public Types

enum  Status { epSuccess = 0, epSignal = 3 }
 
using StatusCode = Status
 

Public Member Functions

 EventProcessor (EventProcessor const &)=delete
 
EventProcessoroperator= (EventProcessor const &)=delete
 
 EventProcessor (fhicl::ParameterSet const &pset)
 
 ~EventProcessor ()
 
StatusCode runToCompletion ()
 

Private Member Functions

template<Level L>
bool levelsToProcess ()
 
template<Level L>
std::enable_if_t< is_above_most_deeply_nested_level(L)> begin ()
 
template<Level L>
void process ()
 
template<Level L>
void finalize ()
 
template<Level L>
void finalizeContainingLevels ()
 
template<Level L>
void recordOutputModuleClosureRequests ()
 
void markLevelAsProcessed ()
 
Level advanceItemType ()
 
void beginJob ()
 
void endJob ()
 
void openInputFile ()
 
void openSomeOutputFiles ()
 
void openAllOutputFiles ()
 
void closeInputFile ()
 
void closeSomeOutputFiles ()
 
void closeAllOutputFiles ()
 
void closeAllFiles ()
 
void respondToOpenInputFile ()
 
void respondToCloseInputFile ()
 
void respondToOpenOutputFiles ()
 
void respondToCloseOutputFiles ()
 
void readRun ()
 
void beginRun ()
 
void beginRunIfNotDoneAlready ()
 
void setRunAuxiliaryRangeSetID ()
 
void endRun ()
 
void writeRun ()
 
void readSubRun ()
 
void beginSubRun ()
 
void beginSubRunIfNotDoneAlready ()
 
void setSubRunAuxiliaryRangeSetID ()
 
void endSubRun ()
 
void writeSubRun ()
 
void readEvent ()
 
void processEvent ()
 
void writeEvent ()
 
bool shouldWeStop () const
 
void setOutputFileStatus (OutputFileStatus)
 
ServiceDirector initServices_ (fhicl::ParameterSet const &top_pset, ActivityRegistry &areg, ServiceToken &token)
 
void initSchedules_ (fhicl::ParameterSet const &pset)
 
void invokePostBeginJobWorkers_ ()
 
template<typename T >
void process_ (typename T::MyPrincipal &p)
 
void servicesActivate_ (ServiceToken st)
 
void servicesDeactivate_ ()
 
void terminateAbnormally_ ()
 
template<>
void process ()
 

Private Attributes

Level nextLevel_ {Level::ReadyToAdvance}
 
std::vector< LevelactiveLevels_ {highest_level()}
 
detail::ExceptionCollector ec_ {}
 
cet::cpu_timer timer_ {}
 
bool beginRunCalled_ {false}
 
bool beginSubRunCalled_
 
bool finalizeRunEnabled_ {true}
 
bool finalizeSubRunEnabled_ {true}
 
ActionTable act_table_
 
ActivityRegistry actReg_
 
MFStatusUpdater mfStatusUpdater_
 
MasterProductRegistry preg_ {}
 
ProductDescriptions productsToProduce_ {}
 
ProducingServiceSignals psSignals_ {}
 
ServiceToken serviceToken_ {ServiceToken::createInvalid()}
 
tbb::task_scheduler_init tbbManager_ {tbb::task_scheduler_init::deferred}
 
std::unique_ptr< ServiceRegistry::OperateservicesSentry_ {}
 
PathManager pathManager_
 
ServiceDirector serviceDirector_
 
std::unique_ptr< InputSourceinput_ {nullptr}
 
std::unique_ptr< Scheduleschedule_ {nullptr}
 
std::unique_ptr< EndPathExecutorendPathExecutor_ {nullptr}
 
std::unique_ptr< FileBlockfb_ {nullptr}
 
std::unique_ptr< RunPrincipalrunPrincipal_ {nullptr}
 
std::unique_ptr< SubRunPrincipalsubRunPrincipal_ {nullptr}
 
std::unique_ptr< EventPrincipaleventPrincipal_ {nullptr}
 
ProductTables producedProducts_ {ProductTables::invalid()}
 
bool shouldWeStop_ {false}
 
bool const handleEmptyRuns_
 
bool const handleEmptySubRuns_
 

Detailed Description

Definition at line 46 of file EventProcessor.h.

Member Typedef Documentation

Definition at line 57 of file EventProcessor.h.

Member Enumeration Documentation

Enumerator
epSuccess 
epSignal 

Definition at line 52 of file EventProcessor.h.

Constructor & Destructor Documentation

art::EventProcessor::EventProcessor ( EventProcessor const &  )
delete
art::EventProcessor::EventProcessor ( fhicl::ParameterSet const &  pset)
explicit

Definition at line 121 of file EventProcessor.cc.

References act_table_, actReg_, art::ProductMetaData::create_instance(), endPathExecutor_, FDEBUG, art::MasterProductRegistry::finalizeForProcessing(), art::ServiceToken::forceCreation(), fhicl::ParameterSet::get(), art::getReleaseVersion(), handleEmptyRuns_, handleEmptySubRuns_, art::ProcessConfiguration::id(), initSchedules_(), initServices_(), input_, mfStatusUpdater_, pathManager_, preg_, producedProducts_, productsToProduce_, psSignals_, art::ServiceToken::registerProducts(), serviceDirector_, servicesActivate_(), servicesDeactivate_(), and serviceToken_.

122  : act_table_{pset.get<ParameterSet>("services.scheduler")}
123  , actReg_()
127  , handleEmptyRuns_{pset.get<bool>("services.scheduler.handleEmptyRuns", true)}
129  pset.get<bool>("services.scheduler.handleEmptySubRuns", true)}
130 {
133 
134  std::string const& processName{pset.get<std::string>("process_name")};
135  ProcessConfiguration const pc{processName, pset.id(), getReleaseVersion()};
137 
138  // Services
139  // System service FileCatalogMetadata needs to know about the process name.
140  ServiceHandle<art::FileCatalogMetadata> {}
141  ->addMetadataString("process_name", processName);
142 
143  input_ = makeInput(pset, processName, preg_, actReg_);
144  actReg_.sPostSourceConstruction.invoke(input_->moduleDescription());
145 
146  initSchedules_(pset);
148  std::make_unique<EndPathExecutor>(pathManager_, act_table_, actReg_, preg_);
151 
152  producedProducts_ = ProductTables{productsToProduce_};
153  FDEBUG(2) << pset.to_string() << std::endl;
155 }
std::unique_ptr< EndPathExecutor > endPathExecutor_
bool const handleEmptyRuns_
ProducingServiceSignals psSignals_
std::unique_ptr< InputSource > input_
bool const handleEmptySubRuns_
MasterProductRegistry preg_
void servicesActivate_(ServiceToken st)
ServiceToken serviceToken_
void registerProducts(MasterProductRegistry &mpr, ProductDescriptions &productsToProduce, ProducingServiceSignals &signals, ProcessConfiguration const &pc)
Definition: ServiceToken.h:67
ServiceDirector serviceDirector_
GlobalSignal< detail::SignalResponseType::LIFO, void(ModuleDescription const &)> sPostSourceConstruction
PathManager pathManager_
MFStatusUpdater mfStatusUpdater_
std::string const & getReleaseVersion()
void initSchedules_(fhicl::ParameterSet const &pset)
ProductDescriptions productsToProduce_
ProductTables producedProducts_
ActionTable act_table_
ActivityRegistry actReg_
#define FDEBUG(lev)
Definition: DebugMacros.h:26
static void create_instance(MasterProductRegistry const &mpr)
ServiceDirector initServices_(fhicl::ParameterSet const &top_pset, ActivityRegistry &areg, ServiceToken &token)
art::EventProcessor::~EventProcessor ( )

Definition at line 157 of file EventProcessor.cc.

References servicesActivate_(), and serviceToken_.

158 {
159  // Services must stay usable until they go out of scope, meaning
160  // that modules may (say) use services in their destructors.
162 }
void servicesActivate_(ServiceToken st)
ServiceToken serviceToken_

Member Function Documentation

art::Level art::EventProcessor::advanceItemType ( )
private

Definition at line 490 of file EventProcessor.cc.

References art::Event, FDEBUG, art::highest_level(), input_, art::InputFile, art::input::IsEvent, art::input::IsFile, art::input::IsInvalid, art::input::IsRun, art::input::IsStop, art::input::IsSubRun, art::errors::LogicError, art::Run, and art::SubRun.

Referenced by levelsToProcess(), and recordOutputModuleClosureRequests().

491 {
492  auto const itemType = input_->nextItemType();
493  FDEBUG(1) << spaces(4) << "*** nextItemType: " << itemType << " ***\n";
494  switch (itemType) {
495  case input::IsStop:
496  return highest_level();
497  case input::IsFile:
498  return Level::InputFile;
499  case input::IsRun:
500  return Level::Run;
501  case input::IsSubRun:
502  return Level::SubRun;
503  case input::IsEvent:
504  return Level::Event;
505  case input::IsInvalid: {
507  << "Invalid next item type presented to the event processor.\n"
508  << "Please contact artists@fnal.gov.";
509  }
510  }
512  << "Unrecognized next item type presented to the event processor.\n"
513  << "Please contact artists@fnal.gov.";
514 }
std::unique_ptr< InputSource > input_
cet::coded_exception< errors::ErrorCodes, ExceptionDetail::translate > Exception
Definition: Exception.h:66
constexpr auto highest_level() noexcept
Definition: Level.h:39
#define FDEBUG(lev)
Definition: DebugMacros.h:26
template<Level L>
std::enable_if_t<is_above_most_deeply_nested_level(L)> art::EventProcessor::begin ( )
private
void art::EventProcessor::beginJob ( )
private

Definition at line 520 of file EventProcessor.cc.

References breakpoints::beginJob(), endPathExecutor_, FDEBUG, input_, invokePostBeginJobWorkers_(), schedule_, and serviceToken_.

Referenced by art::EventProcessor::begin< Level::Job >(), and recordOutputModuleClosureRequests().

521 {
522  FDEBUG(1) << spaces(8) << "beginJob\n";
524  // make the services available
526  // NOTE: This implementation assumes 'Job' means one call the
527  // EventProcessor::run. If it really means once per 'application'
528  // then this code will have to be changed. Also have to deal with
529  // case where have 'run' then new Module added and do 'run' again.
530  // In that case the newly added Module needs its 'beginJob' to be
531  // called.
532  try {
533  input_->doBeginJob();
534  }
535  catch (cet::exception& e) {
536  mf::LogError("BeginJob") << "A cet::exception happened while processing"
537  " the beginJob of the 'source'\n";
538  e << "A cet::exception happened while processing"
539  " the beginJob of the 'source'\n";
540  throw;
541  }
542  catch (std::exception const&) {
543  mf::LogError("BeginJob") << "A std::exception happened while processing"
544  " the beginJob of the 'source'\n";
545  throw;
546  }
547  catch (...) {
548  mf::LogError("BeginJob") << "An unknown exception happened while"
549  " processing the beginJob of the 'source'\n";
550  throw;
551  }
552  schedule_->beginJob();
553  endPathExecutor_->beginJob();
554  actReg_.sPostBeginJob.invoke();
555 
557 }
GlobalSignal< detail::SignalResponseType::FIFO, void()> sPostBeginJob
std::unique_ptr< EndPathExecutor > endPathExecutor_
std::unique_ptr< Schedule > schedule_
std::unique_ptr< InputSource > input_
MaybeLogger_< ELseverityLevel::ELsev_error, false > LogError
ServiceToken serviceToken_
void beginJob()
Definition: Breakpoints.cc:14
ActivityRegistry actReg_
#define FDEBUG(lev)
Definition: DebugMacros.h:26
Float_t e
Definition: plot.C:34
cet::coded_exception< error, detail::translate > exception
Definition: exception.h:33
void art::EventProcessor::beginRun ( )
private

Definition at line 727 of file EventProcessor.cc.

References beginRunCalled_, FDEBUG, finalizeRunEnabled_, and runPrincipal_.

Referenced by beginRunIfNotDoneAlready(), art::EventProcessor::begin< Level::Run >(), and recordOutputModuleClosureRequests().

728 {
729  assert(runPrincipal_);
730  RunID const r{runPrincipal_->id()};
731  if (r.isFlush())
732  return;
733 
734  finalizeRunEnabled_ = true;
735  process_<Begin<Level::Run>>(*runPrincipal_);
736  FDEBUG(1) << spaces(8) << "beginRun....................(" << r << ")\n";
737  beginRunCalled_ = true;
738 }
std::unique_ptr< RunPrincipal > runPrincipal_
#define FDEBUG(lev)
Definition: DebugMacros.h:26
void art::EventProcessor::beginRunIfNotDoneAlready ( )
private

Definition at line 741 of file EventProcessor.cc.

References beginRun(), and beginRunCalled_.

Referenced by art::EventProcessor::begin< Level::SubRun >(), process(), and recordOutputModuleClosureRequests().

742 {
743  if (!beginRunCalled_) {
744  beginRun();
745  }
746 }
void art::EventProcessor::beginSubRun ( )
private

Definition at line 807 of file EventProcessor.cc.

References beginSubRunCalled_, FDEBUG, finalizeSubRunEnabled_, and subRunPrincipal_.

Referenced by beginSubRunIfNotDoneAlready(), art::EventProcessor::begin< Level::SubRun >(), and recordOutputModuleClosureRequests().

808 {
809  assert(subRunPrincipal_);
810  SubRunID const sr{subRunPrincipal_->id()};
811  if (sr.isFlush())
812  return;
813 
814  finalizeSubRunEnabled_ = true;
815  process_<Begin<Level::SubRun>>(*subRunPrincipal_);
816  FDEBUG(1) << spaces(8) << "beginSubRun.................(" << sr << ")\n";
817  beginSubRunCalled_ = true;
818 }
std::unique_ptr< SubRunPrincipal > subRunPrincipal_
#define FDEBUG(lev)
Definition: DebugMacros.h:26
void art::EventProcessor::beginSubRunIfNotDoneAlready ( )
private

Definition at line 821 of file EventProcessor.cc.

References beginSubRun(), and beginSubRunCalled_.

Referenced by process(), and recordOutputModuleClosureRequests().

822 {
823  if (!beginSubRunCalled_) {
824  beginSubRun();
825  }
826 }
void art::EventProcessor::closeAllFiles ( )
private
void art::EventProcessor::closeAllOutputFiles ( )
private

Definition at line 630 of file EventProcessor.cc.

References endPathExecutor_, FDEBUG, and respondToCloseOutputFiles().

Referenced by closeAllFiles(), and recordOutputModuleClosureRequests().

631 {
632  if (!endPathExecutor_->someOutputsOpen())
633  return;
634 
636  endPathExecutor_->closeAllOutputFiles();
637  FDEBUG(1) << spaces(8) << "closeAllOutputFiles\n";
638 }
std::unique_ptr< EndPathExecutor > endPathExecutor_
#define FDEBUG(lev)
Definition: DebugMacros.h:26
void art::EventProcessor::closeInputFile ( )
private

Definition at line 603 of file EventProcessor.cc.

References closeSomeOutputFiles(), endPathExecutor_, FDEBUG, input_, art::Granularity::InputFile, and respondToCloseInputFile().

Referenced by closeAllFiles(), art::EventProcessor::finalize< Level::InputFile >(), and recordOutputModuleClosureRequests().

604 {
605  endPathExecutor_->incrementInputFileNumber();
606  // Output-file closing on input-file boundaries are tricky since
607  // input files must outlive the output files, which often have data
608  // copied forward from the input files. That's why the
609  // recordOutputClosureRequests call is made here instead of in a
610  // specialization of recordOutputModuleClosureRequests<>.
611  endPathExecutor_->recordOutputClosureRequests(Granularity::InputFile);
612  if (endPathExecutor_->outputsToClose()) {
614  }
616  actReg_.sPreCloseFile.invoke();
617  input_->closeFile();
618  actReg_.sPostCloseFile.invoke();
619  FDEBUG(1) << spaces(8) << "closeInputFile\n";
620 }
std::unique_ptr< EndPathExecutor > endPathExecutor_
GlobalSignal< detail::SignalResponseType::FIFO, void()> sPreCloseFile
std::unique_ptr< InputSource > input_
ActivityRegistry actReg_
#define FDEBUG(lev)
Definition: DebugMacros.h:26
GlobalSignal< detail::SignalResponseType::LIFO, void()> sPostCloseFile
void art::EventProcessor::closeSomeOutputFiles ( )
private

Definition at line 659 of file EventProcessor.cc.

References endPathExecutor_, FDEBUG, and respondToCloseOutputFiles().

Referenced by closeInputFile(), levelsToProcess(), and recordOutputModuleClosureRequests().

660 {
661  // Precondition: there are SOME output files that have been
662  // flagged as needing to close. Otherwise,
663  // 'respondtoCloseOutputFiles' will be needlessly
664  // called.
665  assert(endPathExecutor_->outputsToClose());
667  endPathExecutor_->closeSomeOutputFiles();
668  FDEBUG(1) << spaces(8) << "closeSomeOutputFiles\n";
669 }
std::unique_ptr< EndPathExecutor > endPathExecutor_
#define FDEBUG(lev)
Definition: DebugMacros.h:26
void art::EventProcessor::endJob ( )
private

Definition at line 560 of file EventProcessor.cc.

References art::detail::ExceptionCollector::call(), ec_, endPathExecutor_, FDEBUG, input_, pathManager_, schedule_, serviceToken_, timer_, and art::detail::writeSummary().

Referenced by art::EventProcessor::finalize< Level::Job >(), and recordOutputModuleClosureRequests().

561 {
562  FDEBUG(1) << spaces(8) << "endJob\n";
563  // Make the services available
565  ec_.call([this] { schedule_->endJob(); });
566  ec_.call([this] { endPathExecutor_->endJob(); });
567  ec_.call([this] { input_->doEndJob(); });
568  ec_.call([this] { actReg_.sPostEndJob.invoke(); });
569  ec_.call([this] {
571  pathManager_,
572  ServiceHandle<TriggerNamesService const> {}->wantSummary(),
573  timer_);
574  });
575 }
std::unique_ptr< EndPathExecutor > endPathExecutor_
GlobalSignal< detail::SignalResponseType::LIFO, void()> sPostEndJob
std::unique_ptr< Schedule > schedule_
std::unique_ptr< InputSource > input_
ServiceToken serviceToken_
cet::cpu_timer timer_
void writeSummary(PathManager &pm, bool wantSummary, cet::cpu_timer const &timer)
Definition: writeSummary.cc:55
PathManager pathManager_
ActivityRegistry actReg_
#define FDEBUG(lev)
Definition: DebugMacros.h:26
detail::ExceptionCollector ec_
void art::EventProcessor::endRun ( )
private

Definition at line 758 of file EventProcessor.cc.

References beginRunCalled_, FDEBUG, and runPrincipal_.

Referenced by art::EventProcessor::finalize< Level::Run >(), and recordOutputModuleClosureRequests().

759 {
760  assert(runPrincipal_);
761  // Precondition: The RunID does not correspond to a flush ID. --
762  // N.B. The flush flag is not explicitly checked here since endRun
763  // is only called from finalizeRun, which is where the check
764  // happens.
765  RunID const run{runPrincipal_->id()};
766  assert(!run.isFlush());
767  process_<End<Level::Run>>(*runPrincipal_);
768  FDEBUG(1) << spaces(8) << "endRun......................(" << run << ")\n";
769  beginRunCalled_ = false;
770 }
std::unique_ptr< RunPrincipal > runPrincipal_
#define FDEBUG(lev)
Definition: DebugMacros.h:26
void art::EventProcessor::endSubRun ( )
private

Definition at line 838 of file EventProcessor.cc.

References beginSubRunCalled_, FDEBUG, and subRunPrincipal_.

Referenced by art::EventProcessor::finalize< Level::SubRun >(), and recordOutputModuleClosureRequests().

839 {
840  assert(subRunPrincipal_);
841  // Precondition: The SubRunID does not correspond to a flush ID.
842  // Note: the flush flag is not explicitly checked here since
843  // endSubRun is only called from finalizeSubRun, which is where the
844  // check happens.
845  SubRunID const sr{subRunPrincipal_->id()};
846  assert(!sr.isFlush());
847  process_<End<Level::SubRun>>(*subRunPrincipal_);
848  FDEBUG(1) << spaces(8) << "endSubRun...................(" << sr << ")\n";
849  beginSubRunCalled_ = false;
850 }
std::unique_ptr< SubRunPrincipal > subRunPrincipal_
#define FDEBUG(lev)
Definition: DebugMacros.h:26
template<Level L>
void art::EventProcessor::finalize ( )
private
template<Level L>
void art::EventProcessor::finalizeContainingLevels ( )
inlineprivate

Definition at line 92 of file EventProcessor.h.

93  {}
void art::EventProcessor::initSchedules_ ( fhicl::ParameterSet const &  pset)
private

Definition at line 193 of file EventProcessor.cc.

References act_table_, actReg_, art::ScheduleID::first(), fhicl::ParameterSet::get(), pathManager_, preg_, productsToProduce_, schedule_, and tbbManager_.

Referenced by EventProcessor().

194 {
195  // Initialize TBB with desired number of threads.
196  auto const num_threads = pset.get<int>("services.scheduler.num_threads");
197  tbbManager_.initialize(num_threads);
198  mf::LogInfo("MTdiagnostics")
199  << "TBB has been configured to use a maximum of "
200  << tbb::this_task_arena::max_concurrency() << " threads.";
201  schedule_ =
202  std::make_unique<Schedule>(ScheduleID::first(),
203  pathManager_,
204  pset,
205  *ServiceHandle<TriggerNamesService const>{},
206  preg_,
208  act_table_,
209  actReg_);
210 }
MaybeLogger_< ELseverityLevel::ELsev_info, false > LogInfo
std::unique_ptr< Schedule > schedule_
static ScheduleID first()
Definition: ScheduleID.h:82
MasterProductRegistry preg_
PathManager pathManager_
tbb::task_scheduler_init tbbManager_
ProductDescriptions productsToProduce_
ActionTable act_table_
ActivityRegistry actReg_
art::ServiceDirector art::EventProcessor::initServices_ ( fhicl::ParameterSet const &  top_pset,
ActivityRegistry areg,
ServiceToken token 
)
private

Definition at line 165 of file EventProcessor.cc.

References fhicl::ParameterSet::erase(), fhicl::ParameterSet::get(), pathManager_, and art::PathManager::triggerPathNames().

Referenced by EventProcessor().

168 {
169  auto services = top_pset.get<ParameterSet>("services", {});
170 
171  // Save and non-standard service configs, "floating_point_control"
172  // to prevent ServiceDirector trying to make one itself.
173  auto const fpc_pset =
174  services.get<ParameterSet>("floating_point_control", {});
175  services.erase("floating_point_control");
176 
177  // Remove non-standard non-service config, "message."
178  services.erase("message");
179 
180  // Create the service director and all user-configured services.
181  ServiceDirector director{std::move(services), areg, token};
182 
183  // Services requiring special construction.
184  director.addSystemService<CurrentModule>(areg);
185  director.addSystemService<TriggerNamesService>(
186  top_pset, pathManager_.triggerPathNames());
187  director.addSystemService<FloatingPointControl>(fpc_pset, areg);
188  director.addSystemService<ScheduleContext>();
189  return director;
190 }
vstring const & triggerPathNames() const
Definition: PathManager.h:91
T get(std::string const &key) const
Definition: ParameterSet.h:231
PathManager pathManager_
bool erase(std::string const &key)
void art::EventProcessor::invokePostBeginJobWorkers_ ( )
private

Definition at line 213 of file EventProcessor.cc.

References art::PathManager::endPathInfo(), art::ScheduleID::first(), input_, pathManager_, art::PathManager::triggerPathsInfo(), and art::PathsInfo::workers().

Referenced by beginJob().

214 {
215  // Need to convert multiple lists of workers into a long list that
216  // the postBeginJobWorkers callbacks can understand.
217  std::vector<Worker*> allWorkers;
218  allWorkers.reserve(
220  pathManager_.endPathInfo().workers().size());
221  auto workerStripper = [&allWorkers](WorkerMap::value_type const& val) {
222  allWorkers.emplace_back(val.second.get());
223  };
225  workerStripper);
226  cet::for_all(pathManager_.endPathInfo().workers(), workerStripper);
227  actReg_.sPostBeginJobWorkers.invoke(input_.get(), allWorkers);
228 }
std::unique_ptr< InputSource > input_
static ScheduleID first()
Definition: ScheduleID.h:82
GlobalSignal< detail::SignalResponseType::LIFO, void(InputSource *, std::vector< Worker * > const &)> sPostBeginJobWorkers
WorkerMap const & workers() const
Definition: PathsInfo.h:81
PathManager pathManager_
PathsInfo & endPathInfo()
Definition: PathManager.cc:132
PathsInfo & triggerPathsInfo(ScheduleID sID)
Definition: PathManager.cc:143
ActivityRegistry actReg_
template<art::Level L>
bool art::EventProcessor::levelsToProcess ( )
private

Definition at line 235 of file EventProcessor.cc.

References activeLevels_, advanceItemType(), closeSomeOutputFiles(), endPathExecutor_, art::highest_level(), art::errors::LogicError, nextLevel_, art::ReadyToAdvance, setOutputFileStatus(), and art::Switching.

236 {
239  // Consider reading right here?
240  }
241 
242  if (nextLevel_ == L) {
243  activeLevels_.push_back(nextLevel_);
245  if (endPathExecutor_->outputsToClose()) {
247  finalizeContainingLevels<L>();
249  }
250  return true;
251  } else if (nextLevel_ < L) {
252  return false;
253  } else if (nextLevel_ == highest_level()) {
254  return false;
255  }
256 
257  throw Exception{errors::LogicError} << "Incorrect level hierarchy.";
258 }
std::unique_ptr< EndPathExecutor > endPathExecutor_
void setOutputFileStatus(OutputFileStatus)
cet::coded_exception< errors::ErrorCodes, ExceptionDetail::translate > Exception
Definition: Exception.h:66
constexpr auto highest_level() noexcept
Definition: Level.h:39
std::vector< Level > activeLevels_
void art::EventProcessor::markLevelAsProcessed ( )
private

Definition at line 483 of file EventProcessor.cc.

References activeLevels_.

Referenced by process(), and recordOutputModuleClosureRequests().

484 {
485  assert(!activeLevels_.empty());
486  activeLevels_.pop_back();
487 }
std::vector< Level > activeLevels_
void art::EventProcessor::openAllOutputFiles ( )
private

Definition at line 623 of file EventProcessor.cc.

References endPathExecutor_, fb_, and FDEBUG.

Referenced by recordOutputModuleClosureRequests().

624 {
625  endPathExecutor_->openAllOutputFiles(*fb_);
626  FDEBUG(1) << spaces(8) << "openAllOutputFiles\n";
627 }
std::unique_ptr< EndPathExecutor > endPathExecutor_
std::unique_ptr< FileBlock > fb_
#define FDEBUG(lev)
Definition: DebugMacros.h:26
void art::EventProcessor::openInputFile ( )
private

Definition at line 581 of file EventProcessor.cc.

References fb_, FDEBUG, input_, art::errors::LogicError, and respondToOpenInputFile().

Referenced by art::EventProcessor::begin< Level::InputFile >(), and recordOutputModuleClosureRequests().

582 {
583  actReg_.sPreOpenFile.invoke();
584  FDEBUG(1) << spaces(8) << "openInputFile\n";
585  fb_ = input_->readFile();
586  if (!fb_) {
588  << "Source readFile() did not return a valid FileBlock: FileBlock "
589  << "should be valid or readFile() should throw.\n";
590  }
591  actReg_.sPostOpenFile.invoke(fb_->fileName());
593 }
GlobalSignal< detail::SignalResponseType::FIFO, void()> sPreOpenFile
std::unique_ptr< InputSource > input_
cet::coded_exception< errors::ErrorCodes, ExceptionDetail::translate > Exception
Definition: Exception.h:66
std::unique_ptr< FileBlock > fb_
GlobalSignal< detail::SignalResponseType::LIFO, void(std::string const &)> sPostOpenFile
ActivityRegistry actReg_
#define FDEBUG(lev)
Definition: DebugMacros.h:26
void art::EventProcessor::openSomeOutputFiles ( )
private

Definition at line 641 of file EventProcessor.cc.

References endPathExecutor_, fb_, FDEBUG, and respondToOpenOutputFiles().

Referenced by art::EventProcessor::finalize< Level::Event >(), art::EventProcessor::finalize< Level::Run >(), art::EventProcessor::finalize< Level::SubRun >(), and recordOutputModuleClosureRequests().

642 {
643  if (!endPathExecutor_->outputsToOpen())
644  return;
645 
646  endPathExecutor_->openSomeOutputFiles(*fb_);
647  FDEBUG(1) << spaces(8) << "openSomeOutputFiles\n";
649 }
std::unique_ptr< EndPathExecutor > endPathExecutor_
std::unique_ptr< FileBlock > fb_
#define FDEBUG(lev)
Definition: DebugMacros.h:26
EventProcessor& art::EventProcessor::operator= ( EventProcessor const &  )
delete
template<art::Level L>
void art::EventProcessor::process ( )
private

Definition at line 439 of file EventProcessor.cc.

References art::detail::ExceptionCollector::call(), ec_, art::detail::ExceptionCollector::empty(), markLevelAsProcessed(), and art::shutdown_flag.

440 {
441  if (shutdown_flag > 0 || !ec_.empty()) {
442  return;
443  }
444 
445  ec_.call([this] { begin<L>(); });
446 
447  while (shutdown_flag == 0 && ec_.empty() &&
448  levelsToProcess<level_down(L)>()) {
449  ec_.call([this] {
450  process<level_down(L)>();
452  });
453  }
454  ec_.call([this] {
455  finalize<L>();
456  recordOutputModuleClosureRequests<L>();
457  });
458 }
std::atomic< int > shutdown_flag
detail::ExceptionCollector ec_
template<>
void art::EventProcessor::process ( )
private

Definition at line 413 of file EventProcessor.cc.

References beginRunIfNotDoneAlready(), beginSubRunIfNotDoneAlready(), ec_, art::detail::ExceptionCollector::empty(), eventPrincipal_, art::highest_level(), nextLevel_, processEvent(), readEvent(), shouldWeStop(), and art::shutdown_flag.

414  {
415  if (shutdown_flag > 0 || !ec_.empty()) {
416  return;
417  }
418 
421  readEvent();
422 
423  assert(eventPrincipal_);
424  if (eventPrincipal_->id().isFlush())
425  return;
426  processEvent();
427 
428  if (shouldWeStop()) {
429  nextLevel_ = highest_level(); // FIXME: maybe go somewhere else?
430  }
431  finalize<most_deeply_nested_level()>();
432  recordOutputModuleClosureRequests<most_deeply_nested_level()>();
433  }
std::atomic< int > shutdown_flag
bool shouldWeStop() const
constexpr auto highest_level() noexcept
Definition: Level.h:39
std::unique_ptr< EventPrincipal > eventPrincipal_
void beginSubRunIfNotDoneAlready()
detail::ExceptionCollector ec_
template<typename T >
void art::EventProcessor::process_ ( typename T::MyPrincipal &  p)
private

Definition at line 203 of file EventProcessor.h.

References act_table_, actReg_, endPathExecutor_, art::Event, art::errors::EventProcessorFailure, art::ActionTable::find(), art::actions::IgnoreCompletely, art::actions::Rethrow, and schedule_.

203  {
204  T::preScheduleSignal(actReg_, p);
205  schedule_->process<T>(p);
206  endPathExecutor_->process<T>(p);
207  T::postScheduleSignal(actReg_, p);
208 }
209 catch (cet::exception const& ex) {
210  actions::ActionCodes const action{T::level == Level::Event ?
211  act_table_.find(ex.root_cause()) :
213  switch (action) {
215  mf::LogWarning(ex.category())
216  << "exception being ignored for current event:\n"
217  << cet::trim_right_copy(ex.what(), " \n");
218  break;
219  }
220  default: {
221  throw art::Exception{
223  "EventProcessor: an exception occurred during current event processing",
224  ex};
225  }
226  }
227 }
228 catch (...) {
229  mf::LogError("PassingThrough")
230  << "an exception occurred during current event processing\n";
231  throw;
232 }
std::unique_ptr< EndPathExecutor > endPathExecutor_
actions::ActionCodes find(std::string const &category) const
Definition: Actions.cc:87
std::unique_ptr< Schedule > schedule_
MaybeLogger_< ELseverityLevel::ELsev_error, false > LogError
cet::coded_exception< errors::ErrorCodes, ExceptionDetail::translate > Exception
Definition: Exception.h:66
MaybeLogger_< ELseverityLevel::ELsev_warning, false > LogWarning
ActionTable act_table_
ActivityRegistry actReg_
cet::coded_exception< error, detail::translate > exception
Definition: exception.h:33
void art::EventProcessor::processEvent ( )
private

Definition at line 886 of file EventProcessor.cc.

References eventPrincipal_, and FDEBUG.

Referenced by process(), and recordOutputModuleClosureRequests().

887 {
888  assert(eventPrincipal_);
889  EventID const& id{eventPrincipal_->id()};
890  // Precondition: The EventID does not correspond to a flush ID.
891  assert(!id.isFlush());
892  process_<Do<Level::Event>>(*eventPrincipal_);
893  FDEBUG(1) << spaces(8) << "processEvent................(" << id << ")\n";
894 }
#define FDEBUG(lev)
Definition: DebugMacros.h:26
std::unique_ptr< EventPrincipal > eventPrincipal_
void art::EventProcessor::readEvent ( )
private

Definition at line 867 of file EventProcessor.cc.

References eventPrincipal_, FDEBUG, art::ProductTables::get(), art::InEvent, input_, art::Consumer::non_module_context(), producedProducts_, psSignals_, art::ProducingServiceSignals::sPostReadEvent, and subRunPrincipal_.

Referenced by process(), and recordOutputModuleClosureRequests().

868 {
869  assert(subRunPrincipal_);
870  assert(subRunPrincipal_->id().isValid());
871  {
872  actReg_.sPreSourceEvent.invoke();
873  eventPrincipal_ = input_->readEvent(subRunPrincipal_.get());
874  assert(eventPrincipal_);
876  }
877  eventPrincipal_->setProducedProducts(producedProducts_.get(InEvent));
878  Event const e{
879  *eventPrincipal_, ModuleDescription{}, Consumer::non_module_context()};
880  actReg_.sPostSourceEvent.invoke(e);
881  FDEBUG(1) << spaces(8) << "readEvent...................("
882  << eventPrincipal_->id() << ")\n";
883 }
ProducingServiceSignals psSignals_
std::unique_ptr< InputSource > input_
static cet::exempt_ptr< Consumer > non_module_context()
Definition: Consumer.cc:76
std::unique_ptr< SubRunPrincipal > subRunPrincipal_
GlobalSignal< detail::SignalResponseType::FIFO, void()> sPreSourceEvent
GlobalSignal< detail::SignalResponseType::LIFO, void(Event const &)> sPostSourceEvent
auto const & get(BranchType const bt) const
Definition: ProductTables.h:42
ProductTables producedProducts_
ActivityRegistry actReg_
#define FDEBUG(lev)
Definition: DebugMacros.h:26
std::unique_ptr< EventPrincipal > eventPrincipal_
Float_t e
Definition: plot.C:34
GlobalSignal< detail::SignalResponseType::LIFO, void(EventPrincipal &)> sPostReadEvent
void art::EventProcessor::readRun ( )
private

Definition at line 707 of file EventProcessor.cc.

References endPathExecutor_, FDEBUG, art::ProductTables::get(), input_, art::InRun, art::Consumer::non_module_context(), producedProducts_, psSignals_, runPrincipal_, and art::ProducingServiceSignals::sPostReadRun.

Referenced by art::EventProcessor::begin< Level::Run >(), and recordOutputModuleClosureRequests().

708 {
709  {
710  actReg_.sPreSourceRun.invoke();
711  runPrincipal_ = input_->readRun();
712  // Seeding the RangeSet is necessary here in case
713  // 'sPostReadRun.invoke()' throws.
714  endPathExecutor_->seedRunRangeSet(input_->runRangeSetHandler());
715  assert(runPrincipal_);
717  }
718  runPrincipal_->setProducedProducts(producedProducts_.get(InRun));
719  Run const r{
720  *runPrincipal_, ModuleDescription{}, Consumer::non_module_context()};
721  actReg_.sPostSourceRun.invoke(r);
722  FDEBUG(1) << spaces(8) << "readRun.....................("
723  << runPrincipal_->id() << ")\n";
724 }
std::unique_ptr< EndPathExecutor > endPathExecutor_
GlobalSignal< detail::SignalResponseType::LIFO, void(Run const &)> sPostSourceRun
ProducingServiceSignals psSignals_
std::unique_ptr< InputSource > input_
static cet::exempt_ptr< Consumer > non_module_context()
Definition: Consumer.cc:76
auto const & get(BranchType const bt) const
Definition: ProductTables.h:42
std::unique_ptr< RunPrincipal > runPrincipal_
ProductTables producedProducts_
ActivityRegistry actReg_
#define FDEBUG(lev)
Definition: DebugMacros.h:26
GlobalSignal< detail::SignalResponseType::FIFO, void()> sPreSourceRun
GlobalSignal< detail::SignalResponseType::LIFO, void(RunPrincipal &)> sPostReadRun
void art::EventProcessor::readSubRun ( )
private

Definition at line 787 of file EventProcessor.cc.

References endPathExecutor_, FDEBUG, art::ProductTables::get(), input_, art::InSubRun, art::Consumer::non_module_context(), producedProducts_, psSignals_, runPrincipal_, art::ProducingServiceSignals::sPostReadSubRun, and subRunPrincipal_.

Referenced by art::EventProcessor::begin< Level::SubRun >(), and recordOutputModuleClosureRequests().

788 {
789  {
790  actReg_.sPreSourceSubRun.invoke();
791  subRunPrincipal_ = input_->readSubRun(runPrincipal_.get());
792  // Seeding the RangeSet is necessary here in case
793  // 'sPostSubRun.invoke()' throws.
794  endPathExecutor_->seedSubRunRangeSet(input_->subRunRangeSetHandler());
795  assert(subRunPrincipal_);
797  }
798  subRunPrincipal_->setProducedProducts(producedProducts_.get(InSubRun));
799  SubRun const sr{
800  *subRunPrincipal_, ModuleDescription{}, Consumer::non_module_context()};
801  actReg_.sPostSourceSubRun.invoke(sr);
802  FDEBUG(1) << spaces(8) << "readSubRun..................("
803  << subRunPrincipal_->id() << ")\n";
804 }
std::unique_ptr< EndPathExecutor > endPathExecutor_
ProducingServiceSignals psSignals_
std::unique_ptr< InputSource > input_
static cet::exempt_ptr< Consumer > non_module_context()
Definition: Consumer.cc:76
GlobalSignal< detail::SignalResponseType::FIFO, void()> sPreSourceSubRun
GlobalSignal< detail::SignalResponseType::LIFO, void(SubRunPrincipal &)> sPostReadSubRun
std::unique_ptr< SubRunPrincipal > subRunPrincipal_
auto const & get(BranchType const bt) const
Definition: ProductTables.h:42
std::unique_ptr< RunPrincipal > runPrincipal_
ProductTables producedProducts_
ActivityRegistry actReg_
#define FDEBUG(lev)
Definition: DebugMacros.h:26
GlobalSignal< detail::SignalResponseType::LIFO, void(SubRun const &)> sPostSourceSubRun
void art::EventProcessor::respondToCloseInputFile ( )
private

Definition at line 680 of file EventProcessor.cc.

References endPathExecutor_, fb_, FDEBUG, and schedule_.

Referenced by closeInputFile(), and recordOutputModuleClosureRequests().

681 {
682  schedule_->respondToCloseInputFile(*fb_);
683  endPathExecutor_->respondToCloseInputFile(*fb_);
684  FDEBUG(1) << spaces(8) << "respondToCloseInputFile\n";
685 }
std::unique_ptr< EndPathExecutor > endPathExecutor_
std::unique_ptr< Schedule > schedule_
std::unique_ptr< FileBlock > fb_
#define FDEBUG(lev)
Definition: DebugMacros.h:26
void art::EventProcessor::respondToCloseOutputFiles ( )
private

Definition at line 696 of file EventProcessor.cc.

References endPathExecutor_, fb_, FDEBUG, and schedule_.

Referenced by closeAllOutputFiles(), closeSomeOutputFiles(), and recordOutputModuleClosureRequests().

697 {
698  schedule_->respondToCloseOutputFiles(*fb_);
699  endPathExecutor_->respondToCloseOutputFiles(*fb_);
700  FDEBUG(1) << spaces(8) << "respondToCloseOutputFiles\n";
701 }
std::unique_ptr< EndPathExecutor > endPathExecutor_
std::unique_ptr< Schedule > schedule_
std::unique_ptr< FileBlock > fb_
#define FDEBUG(lev)
Definition: DebugMacros.h:26
void art::EventProcessor::respondToOpenInputFile ( )
private

Definition at line 672 of file EventProcessor.cc.

References endPathExecutor_, fb_, FDEBUG, and schedule_.

Referenced by openInputFile(), and recordOutputModuleClosureRequests().

673 {
674  schedule_->respondToOpenInputFile(*fb_);
675  endPathExecutor_->respondToOpenInputFile(*fb_);
676  FDEBUG(1) << spaces(8) << "respondToOpenInputFile\n";
677 }
std::unique_ptr< EndPathExecutor > endPathExecutor_
std::unique_ptr< Schedule > schedule_
std::unique_ptr< FileBlock > fb_
#define FDEBUG(lev)
Definition: DebugMacros.h:26
void art::EventProcessor::respondToOpenOutputFiles ( )
private

Definition at line 688 of file EventProcessor.cc.

References endPathExecutor_, fb_, FDEBUG, and schedule_.

Referenced by openSomeOutputFiles(), and recordOutputModuleClosureRequests().

689 {
690  schedule_->respondToOpenOutputFiles(*fb_);
691  endPathExecutor_->respondToOpenOutputFiles(*fb_);
692  FDEBUG(1) << spaces(8) << "respondToOpenOutputFiles\n";
693 }
std::unique_ptr< EndPathExecutor > endPathExecutor_
std::unique_ptr< Schedule > schedule_
std::unique_ptr< FileBlock > fb_
#define FDEBUG(lev)
Definition: DebugMacros.h:26
art::EventProcessor::StatusCode art::EventProcessor::runToCompletion ( )

Definition at line 461 of file EventProcessor.cc.

References art::detail::ExceptionCollector::call(), ec_, art::detail::ExceptionCollector::empty(), epSignal, epSuccess, art::detail::ExceptionCollector::rethrow(), serviceToken_, art::shutdown_flag, and terminateAbnormally_().

462 {
463  StatusCode returnCode{epSuccess};
464  // Make the services available
466 
467  ec_.call([this, &returnCode] {
468  process<highest_level()>();
469  if (art::shutdown_flag > 0) {
470  returnCode = epSignal;
471  }
472  });
473 
474  if (!ec_.empty()) {
476  ec_.rethrow();
477  }
478 
479  return returnCode;
480 }
std::atomic< int > shutdown_flag
ServiceToken serviceToken_
detail::ExceptionCollector ec_
void art::EventProcessor::servicesActivate_ ( ServiceToken  st)
private

Definition at line 919 of file EventProcessor.cc.

References servicesSentry_.

Referenced by EventProcessor(), and ~EventProcessor().

920 {
921  servicesSentry_ = std::make_unique<ServiceRegistry::Operate>(st);
922 }
std::unique_ptr< ServiceRegistry::Operate > servicesSentry_
void art::EventProcessor::servicesDeactivate_ ( )
private

Definition at line 925 of file EventProcessor.cc.

References servicesSentry_.

Referenced by EventProcessor().

926 {
927  servicesSentry_.reset();
928 }
std::unique_ptr< ServiceRegistry::Operate > servicesSentry_
void art::EventProcessor::setOutputFileStatus ( OutputFileStatus  ofs)
private

Definition at line 652 of file EventProcessor.cc.

References endPathExecutor_, and FDEBUG.

Referenced by levelsToProcess(), and recordOutputModuleClosureRequests().

653 {
654  endPathExecutor_->setOutputFileStatus(ofs);
655  FDEBUG(1) << spaces(8) << "setOutputFileStatus\n";
656 }
std::unique_ptr< EndPathExecutor > endPathExecutor_
#define FDEBUG(lev)
Definition: DebugMacros.h:26
void art::EventProcessor::setRunAuxiliaryRangeSetID ( )
private

Definition at line 749 of file EventProcessor.cc.

References endPathExecutor_, FDEBUG, and runPrincipal_.

Referenced by art::EventProcessor::finalize< Level::Run >(), and recordOutputModuleClosureRequests().

750 {
751  assert(runPrincipal_);
752  endPathExecutor_->setAuxiliaryRangeSetID(*runPrincipal_);
753  FDEBUG(1) << spaces(8) << "setRunAuxiliaryRangeSetID...("
754  << runPrincipal_->id() << ")\n";
755 }
std::unique_ptr< EndPathExecutor > endPathExecutor_
std::unique_ptr< RunPrincipal > runPrincipal_
#define FDEBUG(lev)
Definition: DebugMacros.h:26
void art::EventProcessor::setSubRunAuxiliaryRangeSetID ( )
private

Definition at line 829 of file EventProcessor.cc.

References endPathExecutor_, FDEBUG, and subRunPrincipal_.

Referenced by art::EventProcessor::finalize< Level::SubRun >(), and recordOutputModuleClosureRequests().

830 {
831  assert(subRunPrincipal_);
832  endPathExecutor_->setAuxiliaryRangeSetID(*subRunPrincipal_);
833  FDEBUG(1) << spaces(8) << "setSubRunAuxiliaryRangeSetID("
834  << subRunPrincipal_->id() << ")\n";
835 }
std::unique_ptr< EndPathExecutor > endPathExecutor_
std::unique_ptr< SubRunPrincipal > subRunPrincipal_
#define FDEBUG(lev)
Definition: DebugMacros.h:26
bool art::EventProcessor::shouldWeStop ( ) const
private

Definition at line 909 of file EventProcessor.cc.

References endPathExecutor_, FDEBUG, and shouldWeStop_.

Referenced by process(), and recordOutputModuleClosureRequests().

910 {
911  FDEBUG(1) << spaces(8) << "shouldWeStop\n";
912  if (shouldWeStop_) {
913  return true;
914  }
915  return endPathExecutor_->terminate();
916 }
std::unique_ptr< EndPathExecutor > endPathExecutor_
#define FDEBUG(lev)
Definition: DebugMacros.h:26
void art::EventProcessor::terminateAbnormally_ ( )
private

Definition at line 931 of file EventProcessor.cc.

Referenced by runToCompletion().

931  {
932  if (ServiceRegistry::isAvailable<RandomNumberGenerator>()) {
933  ServiceHandle<RandomNumberGenerator> {}
934  ->saveToFile_();
935  }
936 }
937 catch (...) {
938 }
void art::EventProcessor::writeEvent ( )
private

Definition at line 897 of file EventProcessor.cc.

References endPathExecutor_, eventPrincipal_, and FDEBUG.

Referenced by art::EventProcessor::finalize< Level::Event >(), and recordOutputModuleClosureRequests().

898 {
899  assert(eventPrincipal_);
900  EventID const& id{eventPrincipal_->id()};
901  // Precondition: The EventID does not correspond to a flush ID.
902  assert(!id.isFlush());
903  endPathExecutor_->writeEvent(*eventPrincipal_);
904  FDEBUG(1) << spaces(8) << "writeEvent..................(" << id << ")\n";
905  eventPrincipal_.reset();
906 }
std::unique_ptr< EndPathExecutor > endPathExecutor_
#define FDEBUG(lev)
Definition: DebugMacros.h:26
std::unique_ptr< EventPrincipal > eventPrincipal_
void art::EventProcessor::writeRun ( )
private

Definition at line 773 of file EventProcessor.cc.

References endPathExecutor_, FDEBUG, and runPrincipal_.

Referenced by art::EventProcessor::finalize< Level::Run >(), and recordOutputModuleClosureRequests().

774 {
775  assert(runPrincipal_);
776  // Precondition: The RunID does not correspond to a flush ID.
777  RunID const r{runPrincipal_->id()};
778  assert(!r.isFlush());
779  endPathExecutor_->writeRun(*runPrincipal_);
780  FDEBUG(1) << spaces(8) << "writeRun....................(" << r << ")\n";
781 }
std::unique_ptr< EndPathExecutor > endPathExecutor_
std::unique_ptr< RunPrincipal > runPrincipal_
#define FDEBUG(lev)
Definition: DebugMacros.h:26
void art::EventProcessor::writeSubRun ( )
private

Definition at line 853 of file EventProcessor.cc.

References endPathExecutor_, FDEBUG, and subRunPrincipal_.

Referenced by art::EventProcessor::finalize< Level::SubRun >(), and recordOutputModuleClosureRequests().

854 {
855  assert(subRunPrincipal_);
856  // Precondition: The SubRunID does not correspond to a flush ID.
857  SubRunID const& sr{subRunPrincipal_->id()};
858  assert(!sr.isFlush());
859  endPathExecutor_->writeSubRun(*subRunPrincipal_);
860  FDEBUG(1) << spaces(8) << "writeSubRun.................(" << sr << ")\n";
861 }
std::unique_ptr< EndPathExecutor > endPathExecutor_
std::unique_ptr< SubRunPrincipal > subRunPrincipal_
#define FDEBUG(lev)
Definition: DebugMacros.h:26

Member Data Documentation

ActionTable art::EventProcessor::act_table_
private

Definition at line 174 of file EventProcessor.h.

Referenced by EventProcessor(), initSchedules_(), and process_().

std::vector<Level> art::EventProcessor::activeLevels_ {highest_level()}
private

Definition at line 143 of file EventProcessor.h.

Referenced by levelsToProcess(), and markLevelAsProcessed().

ActivityRegistry art::EventProcessor::actReg_
private

Definition at line 175 of file EventProcessor.h.

Referenced by EventProcessor(), initSchedules_(), and process_().

bool art::EventProcessor::beginRunCalled_ {false}
private
bool art::EventProcessor::beginSubRunCalled_
private
Initial value:
{
false}

Definition at line 148 of file EventProcessor.h.

Referenced by beginSubRun(), beginSubRunIfNotDoneAlready(), endSubRun(), and art::EventProcessor::finalize< Level::SubRun >().

detail::ExceptionCollector art::EventProcessor::ec_ {}
private

Definition at line 144 of file EventProcessor.h.

Referenced by endJob(), process(), and runToCompletion().

std::unique_ptr<EventPrincipal> art::EventProcessor::eventPrincipal_ {nullptr}
private
std::unique_ptr<FileBlock> art::EventProcessor::fb_ {nullptr}
private
bool art::EventProcessor::finalizeRunEnabled_ {true}
private
bool art::EventProcessor::finalizeSubRunEnabled_ {true}
private
bool const art::EventProcessor::handleEmptyRuns_
private

Definition at line 195 of file EventProcessor.h.

Referenced by EventProcessor(), and art::EventProcessor::begin< Level::Run >().

bool const art::EventProcessor::handleEmptySubRuns_
private
std::unique_ptr<InputSource> art::EventProcessor::input_ {nullptr}
private
MFStatusUpdater art::EventProcessor::mfStatusUpdater_
private

Definition at line 176 of file EventProcessor.h.

Referenced by EventProcessor().

Level art::EventProcessor::nextLevel_ {Level::ReadyToAdvance}
private
PathManager art::EventProcessor::pathManager_
private
MasterProductRegistry art::EventProcessor::preg_ {}
private

Definition at line 177 of file EventProcessor.h.

Referenced by EventProcessor(), and initSchedules_().

ProductTables art::EventProcessor::producedProducts_ {ProductTables::invalid()}
private

Definition at line 193 of file EventProcessor.h.

Referenced by EventProcessor(), readEvent(), readRun(), and readSubRun().

ProductDescriptions art::EventProcessor::productsToProduce_ {}
private

Definition at line 178 of file EventProcessor.h.

Referenced by EventProcessor(), and initSchedules_().

ProducingServiceSignals art::EventProcessor::psSignals_ {}
private

Definition at line 179 of file EventProcessor.h.

Referenced by EventProcessor(), readEvent(), readRun(), and readSubRun().

std::unique_ptr<RunPrincipal> art::EventProcessor::runPrincipal_ {nullptr}
private
std::unique_ptr<Schedule> art::EventProcessor::schedule_ {nullptr}
private
ServiceDirector art::EventProcessor::serviceDirector_
private

Definition at line 184 of file EventProcessor.h.

Referenced by EventProcessor().

std::unique_ptr<ServiceRegistry::Operate> art::EventProcessor::servicesSentry_ {}
private

Definition at line 182 of file EventProcessor.h.

Referenced by servicesActivate_(), and servicesDeactivate_().

ServiceToken art::EventProcessor::serviceToken_ {ServiceToken::createInvalid()}
private

Definition at line 180 of file EventProcessor.h.

Referenced by beginJob(), endJob(), EventProcessor(), runToCompletion(), and ~EventProcessor().

bool art::EventProcessor::shouldWeStop_ {false}
private

Definition at line 194 of file EventProcessor.h.

Referenced by shouldWeStop().

std::unique_ptr<SubRunPrincipal> art::EventProcessor::subRunPrincipal_ {nullptr}
private
tbb::task_scheduler_init art::EventProcessor::tbbManager_ {tbb::task_scheduler_init::deferred}
private

Definition at line 181 of file EventProcessor.h.

Referenced by initSchedules_().

cet::cpu_timer art::EventProcessor::timer_ {}
private

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