00001
00002
00003
00004
00005
00006
00007 #ifndef AIDA_IFITTER_H
00008 #define AIDA_IFITTER_H 1
00009
00010
00011
00012
00013
00014
00015 #include <string>
00016 #include <vector>
00017
00018 namespace AIDA {
00019
00020 class IBaseHistogram;
00021 class IDataPointSet;
00022 class IFitData;
00023 class IFitParameterSettings;
00024 class IFitResult;
00025 class IFunction;
00026
00039 class IFitter {
00040
00041 public:
00043 virtual ~IFitter() { ; }
00044
00053 virtual IFitResult * fit(IFitData & fitData, IFunction & func) = 0;
00054
00064 virtual IFitResult * fit(IBaseHistogram & hist, IFunction & func) = 0;
00065
00075 virtual IFitResult * fit(IBaseHistogram & hist, std::string model) = 0;
00076
00088 virtual IFitResult * fit(IBaseHistogram & hist, std::string model, std::vector<double> & initialParameters) = 0;
00089
00100 virtual IFitResult * fit(IDataPointSet & dataPointSet, IFunction & f) = 0;
00101
00112 virtual IFitResult * fit(IDataPointSet & dataPointSet, std::string model) = 0;
00113
00126 virtual IFitResult * fit(IDataPointSet & dataPointSet, std::string model, std::vector<double> & initialParameters) = 0;
00127
00129 virtual IFitResult * fit(IFitData & d, std::string model) = 0;
00130
00131 virtual IFitResult * fit(IFitData & d, std::string model, std::vector<double> & initialParameters) = 0;
00132
00141 virtual bool setEngine(std::string name) = 0;
00142
00148 virtual std::string engineName() = 0;
00149
00161 virtual IFitParameterSettings & fitParameterSettings(std::string name) = 0;
00162
00166 virtual const std::vector<std::string> & listParameterSettings() = 0;
00167
00171 virtual void resetParameterSettings() = 0;
00172
00177 virtual bool setConstraint(std::string expr) = 0;
00178
00180 virtual const std::vector<std::string> & constraints() = 0;
00181
00185 virtual void resetConstraints() = 0;
00186
00194 virtual bool setFitMethod(std::string name) = 0;
00195
00201 virtual std::string fitMethodName() = 0;
00202
00209 virtual IDataPointSet * createScan1D(IFitData & d, IFunction & f, std::string par, int npts, double pmin, double pmax) = 0;
00210
00215 virtual IDataPointSet * createContour(IFitData & d, IFitResult & r, std::string par1, std::string par2, int npts, double up) = 0;
00216
00224 virtual void setUseFunctionGradient(bool useGrad) = 0;
00225
00232 virtual bool useFunctionGradient() = 0;
00233
00239
00240
00242
00243
00246
00247
00250
00251 };
00252 };
00253 #endif