The Gaudi Framework  v29r0 (ff2e7097)
AlgExecStateSvc.h
Go to the documentation of this file.
1 #ifndef GAUDICORESVC_ALGEXECSTATESVC_H
2 #define GAUDICORESVC_ALGEXECSTATESVC_H 1
3 
6 #include "GaudiKernel/Service.h"
7 
8 #include <map>
9 #include <mutex>
10 #include <vector>
11 
16 class AlgExecStateSvc : public extends<Service, IAlgExecStateSvc>
17 {
18 public:
21 
24 
25  virtual StatusCode initialize() override final;
26  virtual StatusCode finalize() override final;
27 
29 
30  const AlgExecState& algExecState( const Gaudi::StringKey& algName, const EventContext& ctx ) const override;
31  const AlgExecState& algExecState( IAlgorithm* iAlg, const EventContext& ctx ) const override;
32  AlgExecState& algExecState( IAlgorithm* iAlg, const EventContext& ctx ) override;
33  const AlgStateMap_t& algExecStates( const EventContext& ctx ) const override;
34 
35  void reset( const EventContext& ctx ) override;
36 
37  void addAlg( IAlgorithm* iAlg ) override;
38  void addAlg( const Gaudi::StringKey& algName ) override;
39 
40  const EventStatus::Status& eventStatus( const EventContext& ctx ) const override;
41 
42  void setEventStatus( const EventStatus::Status& sc, const EventContext& ctx ) override;
43 
44  void updateEventStatus( const bool& b, const EventContext& ctx ) override;
45 
46  unsigned int algErrorCount( const IAlgorithm* iAlg ) const override;
47  void resetErrorCount( const IAlgorithm* iAlg ) override;
48  unsigned int incrementErrorCount( const IAlgorithm* iAlg ) override;
49 
50  void dump( std::ostringstream& ost, const EventContext& ctx ) const override;
51 
52 private:
53  std::string trans( const EventStatus::Status& sc ) const;
54 
55  // one vector entry per event slot
56  // typedef std::map<Gaudi::StringKey, AlgExecState> AlgStateMap_t;
58  AlgStates_t m_algStates;
59 
62 
64  AlgErrorMap_t m_errorCount;
65 
66  void init();
67  void checkInit() const;
69  bool m_isInit;
70 
72 };
73 
74 #endif
void resetErrorCount(const IAlgorithm *iAlg) override
A service that keeps track of the execution state of Algorithm *.
The ISvcLocator is the interface implemented by the Service Factory in the Application Manager to loc...
Definition: ISvcLocator.h:25
IAlgExecStateSvc::AlgStateMap_t AlgStateMap_t
virtual StatusCode finalize() override final
const std::string & name() const override
Retrieve name of the service.
Definition: Service.cpp:289
std::map< Gaudi::StringKey, std::atomic< unsigned int > > AlgErrorMap_t
const AlgExecState & algExecState(const Gaudi::StringKey &algName, const EventContext &ctx) const override
AlgStates_t m_algStates
void dump(std::ostringstream &ost, const EventContext &ctx) const override
void updateEventStatus(const bool &b, const EventContext &ctx) override
std::once_flag m_initFlag
This class represents an entry point to all the event specific data.
Definition: EventContext.h:24
STL class.
The helper class to represent the efficient "key" for access.
Definition: StringKey.h:35
STL class.
void checkInit() const
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:28
AlgErrorMap_t m_errorCount
unsigned int incrementErrorCount(const IAlgorithm *iAlg) override
std::vector< Gaudi::StringKey > m_preInitAlgs
std::string trans(const EventStatus::Status &sc) const
unsigned int algErrorCount(const IAlgorithm *iAlg) const override
The IAlgorithm is the interface implemented by the Algorithm base class.
Definition: IAlgorithm.h:28
const AlgStateMap_t & algExecStates(const EventContext &ctx) const override
std::mutex m_mut
void reset(const EventContext &ctx) override
Base class used to extend a class implementing other interfaces.
Definition: extends.h:10
const EventStatus::Status & eventStatus(const EventContext &ctx) const override
~AlgExecStateSvc()
Destructor.
AlgExecStateSvc(const std::string &name, ISvcLocator *svc)
Constructor.
virtual StatusCode initialize() override final
std::vector< EventStatus::Status > m_eventStatus
void setEventStatus(const EventStatus::Status &sc, const EventContext &ctx) override
std::vector< AlgStateMap_t > AlgStates_t
void addAlg(IAlgorithm *iAlg) override