00001 // $Id: AlgorithmHistory.h,v 1.1 2006/11/09 10:24:04 mato Exp $ 00002 00003 #ifndef GAUDIKERNEL_ALGORITHMHISTORY_H 00004 #define GAUDIKERNEL_ALGORITHMHISTORY_H 00005 00006 // An object of this class carries the history information 00007 // which is specific to a Gaudi algorithm. 00008 00009 #include "GaudiKernel/HistoryObj.h" 00010 00011 #include <iosfwd> 00012 #include <string> 00013 #include <typeinfo> 00014 #include <vector> 00015 00016 class Algorithm; 00017 class Property; 00018 class JobHistory; 00019 00028 class AlgorithmHistory: public HistoryObj { 00029 00030 public: // typedefs 00031 00032 // List of properties. This may change. 00033 typedef std::vector<Property*> PropertyList; 00034 00035 // List of subalgorithm histories. This may change. 00036 typedef std::vector<const AlgorithmHistory*> HistoryList; 00037 00038 private: // data 00039 00040 // Algorithm full type. 00041 std::string m_algorithm_type; 00042 00043 // Algorithm version. 00044 std::string m_algorithm_version; 00045 00046 // Algorithm name. 00047 std::string m_algorithm_name; 00048 00049 // Algorithm 00050 const Algorithm* m_algorithm; 00051 00052 // Properties. 00053 PropertyList m_properties; 00054 00055 // Subalgorithm histories. 00056 HistoryList m_subalgorithm_histories; 00057 00058 // Link to jobHistory 00059 const JobHistory *m_jobHistory; 00060 00061 public: // functions 00062 00063 // Constructor from the algorithm. 00064 explicit AlgorithmHistory(const Algorithm& alg, const JobHistory* job); 00065 00066 // All-fields Constructor for persistency 00067 explicit AlgorithmHistory(const std::string& algVersion, 00068 const std::string& algName, 00069 const std::string& algType, 00070 const PropertyList& props, 00071 const HistoryList& subHists); 00072 // Destructor. 00073 virtual ~AlgorithmHistory(); 00074 00075 // Class IDs 00076 virtual const CLID& clID() const { return classID(); } 00077 static const CLID& classID(); 00078 00079 // Return the algorithm type. 00080 const std::string& algorithm_type() const { return m_algorithm_type; } 00081 00082 // Return the algorithm version. 00083 const std::string& algorithm_version() const { return m_algorithm_version; } 00084 00085 // Return the algorithm name. 00086 const std::string& algorithm_name() const { return m_algorithm_name; } 00087 00088 // The actual algorithm 00089 const Algorithm* algorithm() const { return m_algorithm; } 00090 00091 // Return the algorithm properties. 00092 const PropertyList& properties() const { return m_properties; } 00093 00094 // Return the subalgorithm histories. 00095 const HistoryList& subalgorithm_histories() const 00096 { return m_subalgorithm_histories; } 00097 00098 // Return the jobHistory 00099 const JobHistory* jobHistory() const { return m_jobHistory; } 00100 00101 }; 00102 00103 // Output stream. 00104 std::ostream& operator<<(std::ostream& lhs, const AlgorithmHistory& rhs); 00105 00106 #endif