00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef ANAPHE_AIDA_FITTER_FML_AIDA_FITDATAITERATOR
00031 #define ANAPHE_AIDA_FITTER_FML_AIDA_FITDATAITERATOR 1
00032
00033 #include "IDevFitDataIteratorFMLBase.h"
00034 #include "FML/DataVector.h"
00035 #include "FML/DataVectorIterator.h"
00036
00037 #include <memory>
00038 #include <vector>
00039
00040 namespace Anaphe {
00041 namespace AIDA_Function_FML {
00042 class AIDA_RangeSet;
00043 }
00044 }
00045
00046
00047 namespace Anaphe {
00048 namespace AIDA_Fitter_FML {
00049
00050
00051 class AIDA_FitDataIterator : virtual public IDevFitDataIteratorFMLBase {
00052
00053 public:
00054
00055 virtual ~AIDA_FitDataIterator();
00056
00057 private:
00058
00059 AIDA_FitDataIterator(const AIDA_FitDataIterator &);
00060 AIDA_FitDataIterator & operator = (const AIDA_FitDataIterator &);
00061
00062 public:
00063
00065 void start();
00066 bool next();
00067 int entries() const;
00068 const std::vector<double> & vars() const;
00069 double value() const;
00070 double error() const;
00071 double minusError() const;
00072
00074 Anaphe::FML::IFMLDataIterator & getIFMLDataIterator();
00075
00076
00077
00078 virtual void fillData(const std::vector<Anaphe::AIDA_Function_FML::AIDA_RangeSet * > & ranges);
00079
00080 protected:
00081
00082
00083 AIDA_FitDataIterator();
00084
00087 void setVector(std::auto_ptr<FML::DataVector> vptr);
00088
00089
00090 private:
00091
00092 std::auto_ptr<FML::DataVector> m_vector;
00093 std::auto_ptr<FML::DataVectorIterator> m_it;
00094
00095 };
00096
00097 }
00098 }
00099 #endif