17#include <fmt/format.h>
20#include <unordered_map>
48 switch ( s.state() ) {
49 case AlgExecStateRef::State::None:
51 case AlgExecStateRef::State::Executing:
54 return ost <<
"d f: " << s.filterPassed() <<
" sc: " << s.execStatus();
64 using AlgStates = std::vector<AlgExecStateInternal>;
68 using extends::extends;
71 return { *
this, ctx,
algKey( iAlg->name() ) };
77 return { *
this, ctx,
algKey( iAlg->name() ) };
118 std::unordered_map<Gaudi::StringKey, AlgExecStateRef::AlgKey, Gaudi::StringKeyHash, std::equal_to<>>
m_algNameToIndex;
126 std::unordered_map<AlgExecStateRef::AlgKey, std::atomic<unsigned int>>
m_errorCount;
wrapper on an Algorithm state, const version.
wrapper on an Algorithm state.
AlgExecState::State State
internal state of an algorithm
void setState(AlgExecStateRef::State s)
void setFilterPassed(bool f=true)
bool filterPassed() const
const StatusCode & execStatus() const
AlgExecStateRef::State state() const
void setState(AlgExecStateRef::State s, const StatusCode &sc)
AlgExecStateRef::State m_state
friend std::ostream & operator<<(std::ostream &ost, const AlgExecStateInternal &s)
void setExecStatus(const StatusCode &sc=StatusCode::SUCCESS)
A service that keeps track of the execution state of Algorithm.
void reset(const EventContext &ctx) override
void dump(std::ostream &ost, const EventContext &ctx) const override
std::vector< std::string > m_algNames
std::vector< EventStatus::Status > m_eventStatus
AlgExecStateRef::AlgKey addAlg(const Gaudi::StringKey &) override
unsigned int incrementErrorCount(const IAlgorithm *iAlg) override
AlgExecStateRef algExecState(const IAlgorithm *iAlg, const EventContext &ctx) override
AlgExecStateRefConst algExecState(const IAlgorithm *iAlg, const EventContext &ctx) const override
void setFilterPassed(const EventContext &, AlgExecStateRef::AlgKey, bool) override
void updateEventStatus(const bool &b, const EventContext &ctx) override
AlgExecStateInternal & getInternalState(const EventContext &ctx, AlgExecStateRef::AlgKey k)
AlgExecStateRefConst algExecState(const std::string &algName, const EventContext &ctx) const override
const StatusCode & execStatus(const EventContext &, AlgExecStateRef::AlgKey) const override
void setState(const EventContext &, AlgExecStateRef::AlgKey, AlgExecStateRef::State) override
std::unordered_map< AlgExecStateRef::AlgKey, std::atomic< unsigned int > > m_errorCount
unsigned int algErrorCount(const IAlgorithm *iAlg) const override
std::vector< std::vector< AlgStatesWithSubSlot > > m_algSubSlotStates
void setEventStatus(const EventStatus::Status &sc, const EventContext &ctx) override
AlgExecStateRef algExecState(const std::string &algName, const EventContext &ctx) override
const EventStatus::Status & eventStatus(const EventContext &ctx) const override
std::vector< Gaudi::StringKey > m_preInitAlgs
std::unordered_map< AlgExecStateRef::AlgKey, AlgExecStateInternal > AlgStatesWithSubSlot
bool filterPassed(const EventContext &, AlgExecStateRef::AlgKey) const override
std::once_flag m_initFlag
std::vector< AlgStates > m_algStates
std::unordered_map< Gaudi::StringKey, AlgExecStateRef::AlgKey, Gaudi::StringKeyHash, std::equal_to<> > m_algNameToIndex
const std::string & algName(AlgExecStateRef::AlgKey) const override
AlgExecStateRef::AlgKey algKey(const std::string &algName) const
void setExecStatus(const EventContext &, AlgExecStateRef::AlgKey, const StatusCode &) override
AlgExecStateRef::State state(const EventContext &, AlgExecStateRef::AlgKey) const override
void resetErrorCount() override
std::vector< AlgExecStateInternal > AlgStates
This class represents an entry point to all the event specific data.
Helper class for efficient "key" access for strings.
virtual AlgExecStateRef::AlgKey addAlg(const Gaudi::StringKey &algName)=0
adds a new algorithm to the service
The IAlgorithm is the interface implemented by the Algorithm base class.
This class is used for returning status codes from appropriate routines.
constexpr static const auto SUCCESS
constexpr static const auto FAILURE
Base class used to extend a class implementing other interfaces.