12 #ifndef ROOT_TVirtualFitter
13 #define ROOT_TVirtualFitter
29 class TVirtualFitter :
public TNamed {
45 TMethodCall *fMethodCall;
46 void (*fFCN)(Int_t &npar, Double_t *gin, Double_t &f, Double_t *u, Int_t flag);
55 TVirtualFitter(
const TVirtualFitter& tvf);
56 TVirtualFitter& operator=(
const TVirtualFitter& tvf);
60 virtual ~TVirtualFitter();
61 virtual Double_t Chisquare(Int_t npar, Double_t *params)
const = 0;
63 virtual void Clear(Option_t *option=
"") = 0;
64 virtual Int_t ExecuteCommand(
const char *command, Double_t *args, Int_t nargs) = 0;
65 virtual void FixParameter(Int_t ipar) = 0;
66 virtual void GetConfidenceIntervals(Int_t n, Int_t ndim,
const Double_t *x, Double_t *ci, Double_t cl=0.95);
67 virtual void GetConfidenceIntervals(TObject *obj, Double_t cl=0.95);
68 virtual Double_t *GetCovarianceMatrix()
const = 0;
69 virtual Double_t GetCovarianceMatrixElement(Int_t i, Int_t j)
const = 0;
70 virtual Int_t GetErrors(Int_t ipar,Double_t &eplus, Double_t &eminus, Double_t &eparab, Double_t &globcc)
const = 0;
71 typedef void (* FCNFunc_t )(Int_t &npar, Double_t *gin, Double_t &f, Double_t *u, Int_t flag);
72 virtual FCNFunc_t GetFCN() {
return fFCN; }
73 virtual Foption_t GetFitOption()
const {
return fOption;}
74 TMethodCall *GetMethodCall()
const {
return fMethodCall;}
75 virtual Int_t GetNumberTotalParameters()
const = 0;
76 virtual Int_t GetNumberFreeParameters()
const = 0;
77 virtual TObject *GetObjectFit()
const {
return fObjectFit;}
78 virtual Double_t GetParError(Int_t ipar)
const = 0;
79 virtual Double_t GetParameter(Int_t ipar)
const = 0;
80 virtual Int_t GetParameter(Int_t ipar,
char *name,Double_t &value,Double_t &verr,Double_t &vlow, Double_t &vhigh)
const = 0;
81 virtual const char *GetParName(Int_t ipar)
const = 0;
82 virtual Int_t GetStats(Double_t &amin, Double_t &edm, Double_t &errdef, Int_t &nvpar, Int_t &nparx)
const = 0;
83 virtual Double_t GetSumLog(Int_t i) = 0;
84 virtual TObject *GetUserFunc()
const {
return fUserFunc;}
85 virtual Int_t GetXfirst()
const {
return fXfirst;}
86 virtual Int_t GetXlast()
const {
return fXlast;}
87 virtual Int_t GetYfirst()
const {
return fYfirst;}
88 virtual Int_t GetYlast()
const {
return fYlast;}
89 virtual Int_t GetZfirst()
const {
return fZfirst;}
90 virtual Int_t GetZlast()
const {
return fZlast;}
91 virtual Bool_t IsFixed(Int_t ipar)
const = 0;
92 virtual void PrintResults(Int_t level, Double_t amin)
const = 0;
93 virtual void ReleaseParameter(Int_t ipar) = 0;
94 virtual Double_t *SetCache(Int_t npoints, Int_t psize);
95 virtual void SetFCN(
void (*fcn)(Int_t &, Double_t *, Double_t &f, Double_t *, Int_t));
96 virtual void SetFitMethod(
const char *name) = 0;
97 virtual void SetFitOption(Foption_t option) {fOption = option;}
98 virtual void SetObjectFit(TObject *obj) {fObjectFit = obj;}
99 virtual Int_t SetParameter(Int_t ipar,
const char *parname,Double_t value,Double_t verr,Double_t vlow, Double_t vhigh) = 0;
100 virtual void SetUserFunc(TObject *userfunc) {fUserFunc = userfunc;}
101 virtual void SetXfirst(Int_t first) {fXfirst = first;}
102 virtual void SetXlast (Int_t last) {fXlast = last;}
103 virtual void SetYfirst(Int_t first) {fYfirst = first;}
104 virtual void SetYlast (Int_t last) {fYlast = last;}
105 virtual void SetZfirst(Int_t first) {fZfirst = first;}
106 virtual void SetZlast (Int_t last) {fZlast = last;}
108 static TVirtualFitter *GetFitter();
109 static TVirtualFitter *Fitter(TObject *obj, Int_t maxpar = 25);
110 static const char *GetDefaultFitter();
111 static Int_t GetMaxIterations();
112 static Double_t GetErrorDef();
113 static Double_t GetPrecision();
114 static void SetDefaultFitter(
const char* name =
"");
115 static void SetFitter(TVirtualFitter *fitter, Int_t maxpar = 25);
116 static void SetMaxIterations(Int_t niter=5000);
117 static void SetErrorDef(Double_t errdef=1);
118 static void SetPrecision(Double_t prec=1e-6);
120 ClassDef(TVirtualFitter,0)