00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef INTERFACE_IFITTER_H
00016 #define INTERFACE_IFITTER_H 1
00017
00018 #include <iostream>
00019 #include <string>
00020
00021 namespace Anaphe
00022 {
00023
00024 class IVector;
00025 class IVectorManager;
00026
00027
00039 class IFitParameter {
00040
00041
00042 public:
00043 virtual double value() const = 0;
00044 virtual double error() const = 0;
00045
00046 #ifdef AIDA_DONT_USE_STD
00047 virtual string nameId() const = 0;
00048 #else
00049 virtual std::string nameId() const = 0;
00050 #endif
00051
00052 virtual double start() const = 0;
00053 virtual double step() const = 0;
00054 virtual double upperBound() const = 0;
00055 virtual double lowerBound() const = 0;
00056 virtual bool isBound() const = 0;
00057 virtual bool isFixed() const = 0;
00058
00059
00060 public:
00061 virtual void setStart(double start) = 0;
00062 virtual void setStep(double step) = 0;
00063 virtual void setBounds(double lo, double up) = 0;
00064 virtual void release() = 0;
00065
00070 virtual double noUpperBound() const = 0;
00071
00076 virtual double noLowerBound() const = 0;
00077
00078
00079
00080
00081
00082 public:
00083 virtual ~IFitParameter() { ; }
00084 };
00085
00086
00097 class IFitter {
00098
00099 public:
00100
00109 virtual void setModel(const char *) = 0;
00110
00114 virtual void setData(const IVector *) = 0;
00115
00123 virtual bool chiSquareFit() = 0;
00124
00131 virtual bool setParameter(const char *nameId, double start, double step=1.0) = 0;
00132
00137 virtual IFitParameter* fitParameter(const char *nameId) = 0;
00138
00143 virtual bool includePoint(int i) = 0;
00144
00149 virtual bool excludePoint(int i) = 0;
00150
00155 virtual bool includeRange(int iMin, int iMax) = 0;
00156
00161 virtual bool excludeRange(int iMin, int iMax) = 0;
00162
00166 virtual void includeAll() = 0;
00167
00172 virtual void excludeAll() = 0;
00173
00174 #ifdef AIDA_DONT_USE_STD
00175 virtual void printParameters( ostream &os = cout) = 0;
00176 virtual void printResult ( ostream &os = cout) = 0;
00177 #else
00178 virtual void printParameters(std::ostream &os = std::cout) = 0;
00179 virtual void printResult (std::ostream &os = std::cout) = 0;
00180 #endif
00181
00182 public:
00187 virtual IVector * fittedVector(IVectorManager*) = 0;
00188
00189 public:
00190 virtual ~IFitter() { ; }
00191 };
00192
00193
00194 extern "C" {
00195 IFitter * createIFitter();
00196 }
00197
00198 }
00199
00200 #endif