Go to the documentation of this file.
25 m_algStates.resize( slots );
26 m_eventStatus.resize( slots );
28 if ( msgLevel(
MSG::DEBUG ) ) debug() <<
"resizing state containers to : " << slots <<
endmsg;
33 for (
const auto&
alg : m_preInitAlgs ) addAlg(
alg );
36 std::ostringstream ost;
73 if (
ctx.usesSubSlot() ) {
75 std::scoped_lock lock(
m_mut );
82 if (
ctx.subSlot() >= subSlots.size() ) subSlots.resize(
ctx.subSlot() + 1 );
85 return subSlots[
ctx.subSlot()].try_emplace( k ).first->second;
89 assert(
static_cast<size_t>( k ) <
m_algStates.at(
ctx.slot() ).size() );
100 if (
ctx.usesSubSlot() ) {
102 std::scoped_lock lock(
m_mut );
109 if (
ctx.subSlot() >= subSlots.size() ) {
113 return subSlots[
ctx.subSlot()].at( k );
190 const size_t slotID =
ctx.valid() ?
ctx.slot() : 0;
191 ost <<
" [slot: " << slotID <<
", incident: " <<
m_eventStatus.at( slotID ) <<
"]:\n\n";
194 [](
size_t m,
const auto& as ) {
return std::max(
m, as.length() ); } );
195 for (
size_t k = 0;
const auto& e : algState )
212 for (
auto& it : subSlot ) it.second.reset();
unsigned int incrementErrorCount(const IAlgorithm *iAlg) override
void setFilterPassed(bool f=true)
GAUDI_API const EventContext & currentContext()
void dump(std::ostream &ost, const EventContext &ctx) const override
std::vector< EventStatus::Status > m_eventStatus
AlgExecStateInternal & getInternalState(const EventContext &ctx, AlgExecStateRef::AlgKey k)
const StatusCode & execStatus() const
void setState(AlgExecStateRef::State s)
std::vector< Gaudi::StringKey > m_preInitAlgs
const StatusCode & execStatus(const EventContext &, AlgExecStateRef::AlgKey) const override
AlgExecStateRef::AlgKey addAlg(const Gaudi::StringKey &) override
const EventStatus::Status & eventStatus(const EventContext &ctx) const override
MSG::Level msgLevel() const
get the cached level (originally extracted from the embedded MsgStream)
bool filterPassed() const
A service that keeps track of the execution state of Algorithm.
static GAUDI_API std::size_t numConcurrentEvents()
number of Concurrent Events (for MT)
static GAUDI_API bool concurrent()
serial operation, or some form of concurrency
std::vector< std::vector< AlgStatesWithSubSlot > > m_algSubSlotStates
void updateEventStatus(const bool &b, const EventContext &ctx) override
AttribStringParser::Iterator begin(const AttribStringParser &parser)
unsigned int algErrorCount(const IAlgorithm *iAlg) const override
bool filterPassed(const EventContext &, AlgExecStateRef::AlgKey) const override
std::vector< std::string > m_algNames
void setExecStatus(const StatusCode &sc=StatusCode::SUCCESS)
void setState(const EventContext &, AlgExecStateRef::AlgKey, AlgExecStateRef::State) override
void setEventStatus(const EventStatus::Status &sc, const EventContext &ctx) override
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
void reset(const EventContext &ctx) override
std::once_flag m_initFlag
std::unordered_map< AlgExecStateRef::AlgKey, std::atomic< unsigned int > > m_errorCount
AlgExecStateRef::State state() const
std::unordered_map< Gaudi::StringKey, AlgExecStateRef::AlgKey, Gaudi::StringKeyHash, std::equal_to<> > m_algNameToIndex
#define DECLARE_COMPONENT(type)
const std::string & algName(AlgExecStateRef::AlgKey) const override
AlgExecStateRef::AlgKey algKey(const std::string &algName) const
constexpr static const auto FAILURE
void accumulate(Counter &counter, const Container &container, Fun f=Identity{})
A helper function for accumulating data from a container into a counter This is internally using buff...
std::vector< AlgStates > m_algStates
void resetErrorCount() override
internal state of an algorithm
AlgExecStateRef::State state(const EventContext &, AlgExecStateRef::AlgKey) const override
void setFilterPassed(const EventContext &, AlgExecStateRef::AlgKey, bool) override
void setExecStatus(const EventContext &, AlgExecStateRef::AlgKey, const StatusCode &) override