00001 // $Id: TabulatedProperty.h,v 1.6 2005/12/07 13:19:07 cattanem Exp $ 00002 #ifndef DETDESC_TABULATEDPROPERTY_H 00003 #define DETDESC_TABULATEDPROPERTY_H 1 00005 #include <vector> 00007 #include "DetDesc/ValidDataObject.h" 00009 #include "DetDesc/CLIDTabulatedProperty.h" 00011 class MsgStream ; 00013 00014 00028 class TabulatedProperty: public ValidDataObject 00029 { 00031 public: 00033 typedef std::pair<double,double> Entry; 00034 typedef std::vector<Entry> Table; 00036 public: 00038 TabulatedProperty( const std::string& Name = ""); 00039 virtual ~TabulatedProperty(); 00041 virtual const CLID& clID () const { return TabulatedProperty::classID() ; } 00042 static const CLID& classID () { return CLID_TabulatedProperty ; } 00043 00045 virtual std::ostream& fillStream ( std::ostream& s ) const ; 00047 virtual MsgStream& fillStream ( MsgStream& s ) const ; 00050 inline const std::string& type () const ; 00051 inline TabulatedProperty& setType ( const std::string& T ); 00053 inline const std::string& xAxis() const ; 00054 inline TabulatedProperty& setXAxis( const std::string& T ); 00056 inline const std::string& yAxis() const ; 00057 inline TabulatedProperty& setYAxis( const std::string& T ); 00059 inline Table& table () ; 00060 inline const Table& table () const ; 00062 inline operator Table& () ; 00063 inline operator const Table& () const ; 00065 00072 template< class Func , class Iter> 00073 inline const StatusCode fill( Func func , Iter first , Iter last ); 00076 virtual std::string toXml(const std::string &name = std::string()) const; 00077 00080 virtual void update ( ValidDataObject& obj ); 00081 00082 private: 00084 std::string m_type ; 00086 std::string m_xAxis ; 00088 std::string m_yAxis ; 00090 Table m_table ; 00092 }; 00094 #include "DetDesc/TabulatedProperty.icpp" 00096 00097 #endif // DETDESC_TABULATEDPROPERTY_H 00098 00099 00100 00101 00102 00103 00104 00105 00106 00107 00108 00109