00001 // $Id: IAlgorithm.h,v 1.12 2008/10/17 13:06:04 marcocle Exp $ 00002 #ifndef GAUDIKERNEL_IALGORITHM_H 00003 #define GAUDIKERNEL_IALGORITHM_H 00004 00005 // Include files 00006 #include "GaudiKernel/INamedInterface.h" 00007 #include "GaudiKernel/StateMachine.h" 00008 #include <string> 00009 00010 // Declaration of the interface ID ( interface id, major version, minor version) 00011 static const InterfaceID IID_IAlgorithm("IAlgorithm", 3 , 2); 00012 00022 class IAlgorithm : virtual public INamedInterface { 00023 public: 00025 static const InterfaceID& interfaceID() { return IID_IAlgorithm; } 00026 00029 virtual const std::string& version() const = 0; 00030 00034 virtual StatusCode execute() = 0; 00035 00037 virtual bool isInitialized() const = 0; 00039 virtual bool isFinalized() const = 0; 00041 virtual bool isExecuted() const = 0; 00042 00043 // --- Methods from IStateful --- 00046 virtual StatusCode configure() = 0; 00047 00050 virtual StatusCode initialize() = 0; 00051 00054 virtual StatusCode start() = 0; 00055 00058 virtual StatusCode stop() = 0; 00059 00062 virtual StatusCode finalize() = 0; 00063 00066 virtual StatusCode terminate() = 0; 00067 00070 virtual StatusCode reinitialize() = 0; 00071 00074 virtual StatusCode restart() = 0; 00075 00078 virtual Gaudi::StateMachine::State FSMState() const = 0; 00079 00085 virtual StatusCode sysInitialize() = 0; 00086 00092 virtual StatusCode sysStart() = 0; 00093 00099 virtual StatusCode sysReinitialize() = 0; 00100 00106 virtual StatusCode sysRestart() = 0; 00107 00109 virtual StatusCode sysExecute() = 0; 00110 00114 virtual StatusCode sysStop() = 0; 00115 00119 virtual StatusCode sysFinalize() = 0; 00120 00126 virtual StatusCode sysBeginRun( ) = 0; 00127 00133 virtual StatusCode sysEndRun( ) = 0; 00134 00136 virtual void resetExecuted( ) = 0; 00137 00140 virtual StatusCode beginRun() = 0; 00143 virtual StatusCode endRun() = 0; 00144 00145 00146 // ---- Function useful for dealing with sub-algorithms 00148 virtual void setExecuted( bool state ) = 0; 00149 00151 virtual bool isEnabled( ) const = 0; 00152 00154 virtual bool filterPassed( ) const = 0; 00155 00157 virtual void setFilterPassed( bool state ) = 0; 00158 00159 }; 00160 00161 #endif // GAUDIKERNEL_IALGORITHM_H