00001 #include "AIDA_DataPoint.h" 00002 #include "AIDA_Measurement.h" 00003 00004 Anaphe::AIDA_DataPointSet_native::AIDA_DataPoint::AIDA_DataPoint( int dimension ): 00005 m_dimension( dimension ), 00006 m_measurements( 0 ) 00007 { 00008 if ( m_dimension < 0 ) m_dimension = 0; 00009 if ( m_dimension > 0 ) { 00010 m_measurements = new AIDA::IMeasurement*[ m_dimension ]; 00011 for ( int iMeasurement = 0; iMeasurement < m_dimension; ++iMeasurement ) { 00012 m_measurements[ iMeasurement ] = new Anaphe::AIDA_DataPointSet_native::AIDA_Measurement; 00013 } 00014 } 00015 } 00016 00017 00018 Anaphe::AIDA_DataPointSet_native::AIDA_DataPoint::AIDA_DataPoint( const Anaphe::AIDA_DataPointSet_native::AIDA_DataPoint& dp ): 00019 m_dimension( dp.dimension() ), 00020 m_measurements( 0 ) 00021 { 00022 if ( m_dimension > 0 ) { 00023 m_measurements = new AIDA::IMeasurement*[ m_dimension ]; 00024 for ( int iMeasurement = 0; iMeasurement < m_dimension; ++iMeasurement ) { 00025 m_measurements[ iMeasurement ] = new Anaphe::AIDA_DataPointSet_native::AIDA_Measurement; 00026 } 00027 } 00028 00029 for ( int j = 0; j < m_dimension; ++j ) { 00030 this->coordinate( j )->setValue( dp.coordinate( j )->value() ); 00031 this->coordinate( j )->setErrorPlus( dp.coordinate( j )->errorPlus() ); 00032 this->coordinate( j )->setErrorMinus( dp.coordinate( j )->errorMinus() ); 00033 } 00034 } 00035 00036 00037 Anaphe::AIDA_DataPointSet_native::AIDA_DataPoint::AIDA_DataPoint( const AIDA::IDataPoint& dp ): 00038 m_dimension( dp.dimension() ), 00039 m_measurements( 0 ) 00040 { 00041 if ( m_dimension > 0 ) { 00042 m_measurements = new AIDA::IMeasurement*[ m_dimension ]; 00043 for ( int iMeasurement = 0; iMeasurement < m_dimension; ++iMeasurement ) { 00044 m_measurements[ iMeasurement ] = new Anaphe::AIDA_DataPointSet_native::AIDA_Measurement; 00045 } 00046 } 00047 00048 for ( int j = 0; j < m_dimension; ++j ) { 00049 this->coordinate( j )->setValue( dp.coordinate( j )->value() ); 00050 this->coordinate( j )->setErrorPlus( dp.coordinate( j )->errorPlus() ); 00051 this->coordinate( j )->setErrorMinus( dp.coordinate( j )->errorMinus() ); 00052 } 00053 } 00054 00055 00056 Anaphe::AIDA_DataPointSet_native::AIDA_DataPoint& 00057 Anaphe::AIDA_DataPointSet_native::AIDA_DataPoint::operator=( const AIDA_DataPoint& dp ) 00058 { 00059 if ( dp.dimension() != m_dimension ) return *this; 00060 for ( int j = 0; j < m_dimension; ++j ) { 00061 this->coordinate( j )->setValue( dp.coordinate( j )->value() ); 00062 this->coordinate( j )->setErrorPlus( dp.coordinate( j )->errorPlus() ); 00063 this->coordinate( j )->setErrorMinus( dp.coordinate( j )->errorMinus() ); 00064 } 00065 return *this; 00066 } 00067 00068 00069 AIDA::IDataPoint& 00070 Anaphe::AIDA_DataPointSet_native::AIDA_DataPoint::operator=( const AIDA::IDataPoint& dp ) 00071 { 00072 if ( dp.dimension() != m_dimension ) return *this; 00073 for ( int j = 0; j < m_dimension; ++j ) { 00074 this->coordinate( j )->setValue( dp.coordinate( j )->value() ); 00075 this->coordinate( j )->setErrorPlus( dp.coordinate( j )->errorPlus() ); 00076 this->coordinate( j )->setErrorMinus( dp.coordinate( j )->errorMinus() ); 00077 } 00078 return *this; 00079 } 00080 00081 00082 Anaphe::AIDA_DataPointSet_native::AIDA_DataPoint::~AIDA_DataPoint() 00083 { 00084 if ( m_dimension > 0 ) { 00085 for ( int iMeasurement = 0; iMeasurement < m_dimension; ++iMeasurement ) { 00086 delete m_measurements[ iMeasurement ]; 00087 } 00088 delete [] m_measurements; 00089 } 00090 } 00091 00092 00093 AIDA::IMeasurement* 00094 Anaphe::AIDA_DataPointSet_native::AIDA_DataPoint::coordinate( int c ) 00095 { 00096 if ( c < 0 || c >= m_dimension ) return 0; 00097 return ( m_measurements[ c ] ); 00098 } 00099 00100 const AIDA::IMeasurement* 00101 Anaphe::AIDA_DataPointSet_native::AIDA_DataPoint::coordinate( int c ) const 00102 { 00103 if ( c < 0 || c >= m_dimension ) return 0; 00104 return ( m_measurements[ c ] ); 00105 }