The Gaudi Framework  v29r0 (ff2e7097)
IAlgorithm.h
Go to the documentation of this file.
1 #ifndef GAUDIKERNEL_IALGORITHM_H
2 #define GAUDIKERNEL_IALGORITHM_H
3 
4 // Include files
7 #include <string>
8 
9 class IAlgTool;
10 class AlgResourcePool;
11 class EventContext;
12 
13 namespace Gaudi
14 {
15  class StringKey;
16 }
17 
28 class GAUDI_API IAlgorithm : virtual public extend_interfaces<INamedInterface, IStateful>
29 {
30 public:
32 
35 
38  virtual const std::string& version() const = 0;
39 
42  virtual const std::string& type() const = 0;
43  virtual void setType( const std::string& ) = 0;
44 
47  virtual const Gaudi::StringKey& nameKey() const = 0;
48 
51  virtual unsigned int index() const = 0;
52 
55  virtual bool isClonable() const { return false; }
56 
60  virtual unsigned int cardinality() const = 0;
61 
64  virtual const std::vector<std::string>& neededResources() const = 0;
65 
69  virtual StatusCode execute() = 0;
70 
72  virtual bool isInitialized() const = 0;
74  virtual bool isFinalized() const = 0;
76  virtual bool isExecuted() const = 0;
77 
83  virtual StatusCode sysInitialize() = 0;
84 
90  virtual StatusCode sysStart() = 0;
91 
97  virtual StatusCode sysReinitialize() = 0;
98 
104  virtual StatusCode sysRestart() = 0;
105 
107 #define GAUDI_SYSEXECUTE_WITHCONTEXT 1
108 
110  virtual StatusCode sysExecute( const EventContext& ) = 0;
111 
115  virtual StatusCode sysStop() = 0;
116 
120  virtual StatusCode sysFinalize() = 0;
121 
127  virtual StatusCode sysBeginRun() = 0;
128 
134  virtual StatusCode sysEndRun() = 0;
135 
137  [[deprecated( "resetExecuted should be triggered globally via the AlgExecStateSvc, not individually for each "
138  "Algorithm" )]] virtual void
139  resetExecuted() = 0;
140 
143  virtual StatusCode beginRun() = 0;
146  virtual StatusCode endRun() = 0;
147 
148  // ---- Function useful for dealing with sub-algorithms
150  virtual void setExecuted( bool state ) const = 0;
151 
153  virtual bool isEnabled() const = 0;
154 
156  virtual bool isSequence() const = 0;
157 
159  virtual bool filterPassed() const = 0;
160 
162  virtual void setFilterPassed( bool state ) const = 0;
163 
165  virtual std::ostream& toControlFlowExpression( std::ostream& os ) const = 0;
166 
168  virtual const EventContext& getContext() const = 0;
169 
171  virtual void setIndex( const unsigned int& idx ) = 0;
172 };
173 
174 #endif // GAUDIKERNEL_IALGORITHM_H
virtual bool isClonable() const
Specify if the algorithm is clonable.
Definition: IAlgorithm.h:55
StatusCode execute() override final
The AlgResourcePool is a concrete implementation of the IAlgResourcePool interface.
This class represents an entry point to all the event specific data.
Definition: EventContext.h:24
The helper class to represent the efficient "key" for access.
Definition: StringKey.h:35
STL class.
friend AlgResourcePool
Definition: IAlgorithm.h:31
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:28
#define DeclareInterfaceID(iface, major, minor)
Macro to declare the interface ID when using the new mechanism of extending and implementing interfac...
Definition: IInterface.h:13
Base class to be used to extend an interface.
The IAlgorithm is the interface implemented by the Algorithm base class.
Definition: IAlgorithm.h:28
The interface implemented by the AlgTool base class.
Definition: IAlgTool.h:23
#define GAUDI_API
Definition: Kernel.h:110
STL class.
Helper functions to set/get the application return code.
Definition: __init__.py:1