00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef LWH_DataPoint_H
00010 #define LWH_DataPoint_H
00011
00012
00013
00014
00015
00016 #include <limits>
00017 #include <cmath>
00018 #include <algorithm>
00019 #include "AIDataPoint.h"
00020 #include "Measurement.h"
00021
00022 namespace LWH {
00023
00024 using namespace AIDA;
00025
00031 class DataPoint: public IDataPoint {
00032
00033 public:
00034
00038 DataPoint(int dim = 2)
00039 : m(dim) {}
00040
00044 DataPoint(const DataPoint & d)
00045 : IDataPoint(d), m(d.m) {}
00046
00050 DataPoint(const IDataPoint & id)
00051 : m(id.dimension()) {
00052 for ( int i = 0, N = m.size(); i < N; ++i )
00053 m[i] = Measurement(id.coordinate(i)->value(),
00054 id.coordinate(i)->errorPlus(),
00055 id.coordinate(i)->errorMinus());
00056 }
00057
00061 virtual ~DataPoint() {}
00062
00068 int dimension() const {
00069 return m.size();
00070 }
00071
00077 IMeasurement * coordinate(int coord) {
00078 return &(m[coord]);
00079 }
00080
00086 const IMeasurement * coordinate(int coord) const {
00087 return &(m[coord]);
00088 }
00089
00090 private:
00091
00095 std::vector<Measurement> m;
00096
00097 };
00098
00099 }
00100
00101 #endif