TVirtualFitter.h

Go to the documentation of this file.
00001 // @(#)root/mathcore:$Id: TVirtualFitter.h 25927 2008-10-22 23:42:01Z rdm $
00002 // Author: Rene Brun   31/08/99
00003 
00004 /*************************************************************************
00005  * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers.               *
00006  * All rights reserved.                                                  *
00007  *                                                                       *
00008  * For the licensing terms see $ROOTSYS/LICENSE.                         *
00009  * For the list of contributors see $ROOTSYS/README/CREDITS.             *
00010  *************************************************************************/
00011 
00012 #ifndef ROOT_TVirtualFitter
00013 #define ROOT_TVirtualFitter
00014 
00015 //////////////////////////////////////////////////////////////////////////
00016 //                                                                      //
00017 // TVirtualFitter                                                       //
00018 //                                                                      //
00019 // Abstract base class for fitting                                      //
00020 //                                                                      //
00021 //////////////////////////////////////////////////////////////////////////
00022 
00023 
00024 #ifndef ROOT_TNamed
00025 #include "TNamed.h"
00026 #endif
00027 #ifndef ROOT_TMethodCall
00028 #include "TMethodCall.h"
00029 #endif
00030 #include "Foption.h"
00031 
00032 
00033 class TVirtualFitter : public TNamed {
00034 
00035 protected:
00036    Foption_t              fOption;     //struct with the fit options
00037    Int_t                  fXfirst;     //first bin on X axis
00038    Int_t                  fXlast;      //last  bin on X axis
00039    Int_t                  fYfirst;     //first bin on Y axis
00040    Int_t                  fYlast;      //last  bin on Y axis
00041    Int_t                  fZfirst;     //first bin on Z axis
00042    Int_t                  fZlast;      //last  bin on Z axis
00043    Int_t                  fNpoints;    //Number of points to fit
00044    Int_t                  fPointSize;  //Number of words per point in the cache
00045    Int_t                  fCacheSize;  //Size of the fCache array
00046    Double_t              *fCache;      //[fCacheSize] array of points data (fNpoints*fPointSize < fCacheSize words)
00047    TObject               *fObjectFit;  //pointer to object being fitted
00048    TObject               *fUserFunc;   //pointer to user theoretical function (a TF1*)
00049    TMethodCall           *fMethodCall; //Pointer to MethodCall in case of interpreted function
00050    void                 (*fFCN)(Int_t &npar, Double_t *gin, Double_t &f, Double_t *u, Int_t flag);
00051 
00052    static TVirtualFitter *fgFitter;    //Current fitter (default TFitter)
00053    static Int_t           fgMaxpar;    //Maximum number of fit parameters for current fitter
00054    static Int_t           fgMaxiter;   //Maximum number of iterations
00055    static Double_t        fgErrorDef;  //Error definition (default=1)
00056    static Double_t        fgPrecision; //maximum precision
00057    static TString         fgDefault;   //name of the default fitter ("Minuit","Fumili",etc)
00058 
00059    TVirtualFitter(const TVirtualFitter& tvf);
00060    TVirtualFitter& operator=(const TVirtualFitter& tvf);
00061 
00062 public:
00063    TVirtualFitter();
00064    virtual ~TVirtualFitter();
00065    virtual Double_t  Chisquare(Int_t npar, Double_t *params) const  = 0;
00066 
00067    virtual void      Clear(Option_t *option="") = 0;
00068    virtual Int_t     ExecuteCommand(const char *command, Double_t *args, Int_t nargs) = 0;
00069    virtual void      FixParameter(Int_t ipar) = 0;
00070    virtual void      GetConfidenceIntervals(Int_t n, Int_t ndim, const Double_t *x, Double_t *ci, Double_t cl=0.95);
00071    virtual void      GetConfidenceIntervals(TObject *obj, Double_t cl=0.95);
00072    virtual Double_t *GetCovarianceMatrix() const = 0;
00073    virtual Double_t  GetCovarianceMatrixElement(Int_t i, Int_t j) const = 0;
00074    virtual Int_t     GetErrors(Int_t ipar,Double_t &eplus, Double_t &eminus, Double_t &eparab, Double_t &globcc) const = 0;
00075    typedef void   (* FCNFunc_t )(Int_t &npar, Double_t *gin, Double_t &f, Double_t *u, Int_t flag);
00076    virtual FCNFunc_t GetFCN() { return fFCN; }
00077    virtual Foption_t GetFitOption() const {return fOption;}
00078    TMethodCall      *GetMethodCall() const {return fMethodCall;}
00079    virtual Int_t     GetNumberTotalParameters() const = 0;
00080    virtual Int_t     GetNumberFreeParameters() const = 0;
00081    virtual TObject  *GetObjectFit() const {return fObjectFit;}
00082    virtual Double_t  GetParError(Int_t ipar) const = 0;
00083    virtual Double_t  GetParameter(Int_t ipar) const = 0;
00084    virtual Int_t     GetParameter(Int_t ipar,char *name,Double_t &value,Double_t &verr,Double_t &vlow, Double_t &vhigh) const  = 0;
00085    virtual const char *GetParName(Int_t ipar) const = 0;
00086    virtual Int_t     GetStats(Double_t &amin, Double_t &edm, Double_t &errdef, Int_t &nvpar, Int_t &nparx) const  = 0;
00087    virtual Double_t  GetSumLog(Int_t i) = 0;
00088    virtual TObject  *GetUserFunc() const {return fUserFunc;}
00089    virtual Int_t     GetXfirst() const {return fXfirst;}
00090    virtual Int_t     GetXlast()  const {return fXlast;}
00091    virtual Int_t     GetYfirst() const {return fYfirst;}
00092    virtual Int_t     GetYlast()  const {return fYlast;}
00093    virtual Int_t     GetZfirst() const {return fZfirst;}
00094    virtual Int_t     GetZlast()  const {return fZlast;}
00095    virtual Bool_t    IsFixed(Int_t ipar) const = 0;
00096    virtual void      PrintResults(Int_t level, Double_t amin) const = 0;
00097    virtual void      ReleaseParameter(Int_t ipar) = 0;
00098    virtual Double_t *SetCache(Int_t npoints, Int_t psize);
00099    virtual void      SetFCN(void *fcn);
00100    virtual void      SetFCN(void (*fcn)(Int_t &, Double_t *, Double_t &f, Double_t *, Int_t));
00101    virtual void      SetFitMethod(const char *name) = 0;
00102    virtual void      SetFitOption(Foption_t option) {fOption = option;}
00103    virtual void      SetObjectFit(TObject *obj) {fObjectFit = obj;}
00104    virtual Int_t     SetParameter(Int_t ipar,const char *parname,Double_t value,Double_t verr,Double_t vlow, Double_t vhigh) = 0;
00105    virtual void      SetUserFunc(TObject *userfunc) {fUserFunc = userfunc;}
00106    virtual void      SetXfirst(Int_t first) {fXfirst = first;}
00107    virtual void      SetXlast (Int_t last)  {fXlast  = last;}
00108    virtual void      SetYfirst(Int_t first) {fYfirst = first;}
00109    virtual void      SetYlast (Int_t last)  {fYlast  = last;}
00110    virtual void      SetZfirst(Int_t first) {fZfirst = first;}
00111    virtual void      SetZlast (Int_t last)  {fZlast  = last;}
00112 
00113    static  TVirtualFitter *GetFitter();
00114    static  TVirtualFitter *Fitter(TObject *obj, Int_t maxpar = 25);
00115    static const char *GetDefaultFitter();
00116    static Int_t     GetMaxIterations();
00117    static Double_t  GetErrorDef();
00118    static Double_t  GetPrecision();
00119    static void      SetDefaultFitter(const char* name = "");
00120    static void      SetFitter(TVirtualFitter *fitter, Int_t maxpar = 25);
00121    static void      SetMaxIterations(Int_t niter=5000);
00122    static void      SetErrorDef(Double_t errdef=1);
00123    static void      SetPrecision(Double_t prec=1e-6);
00124 
00125    ClassDef(TVirtualFitter,0)  //Abstract interface for fitting
00126 };
00127 
00128 #endif

Generated on Tue Jul 5 14:28:28 2011 for ROOT_528-00b_version by  doxygen 1.5.1