/usr/include/root/TVirtualFitter.h is in libroot-math-mathcore-dev 5.34.30-0ubuntu8.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 | // @(#)root/mathcore:$Id$
// Author: Rene Brun 31/08/99
/*************************************************************************
* Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
* All rights reserved. *
* *
* For the licensing terms see $ROOTSYS/LICENSE. *
* For the list of contributors see $ROOTSYS/README/CREDITS. *
*************************************************************************/
#ifndef ROOT_TVirtualFitter
#define ROOT_TVirtualFitter
//////////////////////////////////////////////////////////////////////////
// //
// TVirtualFitter //
// //
// Abstract base class for fitting //
// //
//////////////////////////////////////////////////////////////////////////
#ifndef ROOT_TNamed
#include "TNamed.h"
#endif
#ifndef ROOT_TMethodCall
#include "TMethodCall.h"
#endif
#include "Foption.h"
class TVirtualFitter : public TNamed {
protected:
Foption_t fOption; //struct with the fit options
Int_t fXfirst; //first bin on X axis
Int_t fXlast; //last bin on X axis
Int_t fYfirst; //first bin on Y axis
Int_t fYlast; //last bin on Y axis
Int_t fZfirst; //first bin on Z axis
Int_t fZlast; //last bin on Z axis
Int_t fNpoints; //Number of points to fit
Int_t fPointSize; //Number of words per point in the cache
Int_t fCacheSize; //Size of the fCache array
Double_t *fCache; //[fCacheSize] array of points data (fNpoints*fPointSize < fCacheSize words)
TObject *fObjectFit; //pointer to object being fitted
TObject *fUserFunc; //pointer to user theoretical function (a TF1*)
TMethodCall *fMethodCall; //Pointer to MethodCall in case of interpreted function
void (*fFCN)(Int_t &npar, Double_t *gin, Double_t &f, Double_t *u, Int_t flag);
static TVirtualFitter *fgFitter; //Current fitter (default TFitter)
static Int_t fgMaxpar; //Maximum number of fit parameters for current fitter
static Int_t fgMaxiter; //Maximum number of iterations
static Double_t fgErrorDef; //Error definition (default=1)
static Double_t fgPrecision; //maximum precision
static TString fgDefault; //name of the default fitter ("Minuit","Fumili",etc)
TVirtualFitter(const TVirtualFitter& tvf);
TVirtualFitter& operator=(const TVirtualFitter& tvf);
public:
TVirtualFitter();
virtual ~TVirtualFitter();
virtual Double_t Chisquare(Int_t npar, Double_t *params) const = 0;
virtual void Clear(Option_t *option="") = 0;
virtual Int_t ExecuteCommand(const char *command, Double_t *args, Int_t nargs) = 0;
virtual void FixParameter(Int_t ipar) = 0;
virtual void GetConfidenceIntervals(Int_t n, Int_t ndim, const Double_t *x, Double_t *ci, Double_t cl=0.95);
virtual void GetConfidenceIntervals(TObject *obj, Double_t cl=0.95);
virtual Double_t *GetCovarianceMatrix() const = 0;
virtual Double_t GetCovarianceMatrixElement(Int_t i, Int_t j) const = 0;
virtual Int_t GetErrors(Int_t ipar,Double_t &eplus, Double_t &eminus, Double_t &eparab, Double_t &globcc) const = 0;
typedef void (* FCNFunc_t )(Int_t &npar, Double_t *gin, Double_t &f, Double_t *u, Int_t flag);
virtual FCNFunc_t GetFCN() { return fFCN; }
virtual Foption_t GetFitOption() const {return fOption;}
TMethodCall *GetMethodCall() const {return fMethodCall;}
virtual Int_t GetNumberTotalParameters() const = 0;
virtual Int_t GetNumberFreeParameters() const = 0;
virtual TObject *GetObjectFit() const {return fObjectFit;}
virtual Double_t GetParError(Int_t ipar) const = 0;
virtual Double_t GetParameter(Int_t ipar) const = 0;
virtual Int_t GetParameter(Int_t ipar,char *name,Double_t &value,Double_t &verr,Double_t &vlow, Double_t &vhigh) const = 0;
virtual const char *GetParName(Int_t ipar) const = 0;
virtual Int_t GetStats(Double_t &amin, Double_t &edm, Double_t &errdef, Int_t &nvpar, Int_t &nparx) const = 0;
virtual Double_t GetSumLog(Int_t i) = 0;
virtual TObject *GetUserFunc() const {return fUserFunc;}
virtual Int_t GetXfirst() const {return fXfirst;}
virtual Int_t GetXlast() const {return fXlast;}
virtual Int_t GetYfirst() const {return fYfirst;}
virtual Int_t GetYlast() const {return fYlast;}
virtual Int_t GetZfirst() const {return fZfirst;}
virtual Int_t GetZlast() const {return fZlast;}
virtual Bool_t IsFixed(Int_t ipar) const = 0;
virtual void PrintResults(Int_t level, Double_t amin) const = 0;
virtual void ReleaseParameter(Int_t ipar) = 0;
virtual Double_t *SetCache(Int_t npoints, Int_t psize);
virtual void SetFCN(void *fcn);
virtual void SetFCN(void (*fcn)(Int_t &, Double_t *, Double_t &f, Double_t *, Int_t));
virtual void SetFitMethod(const char *name) = 0;
virtual void SetFitOption(Foption_t option) {fOption = option;}
virtual void SetObjectFit(TObject *obj) {fObjectFit = obj;}
virtual Int_t SetParameter(Int_t ipar,const char *parname,Double_t value,Double_t verr,Double_t vlow, Double_t vhigh) = 0;
virtual void SetUserFunc(TObject *userfunc) {fUserFunc = userfunc;}
virtual void SetXfirst(Int_t first) {fXfirst = first;}
virtual void SetXlast (Int_t last) {fXlast = last;}
virtual void SetYfirst(Int_t first) {fYfirst = first;}
virtual void SetYlast (Int_t last) {fYlast = last;}
virtual void SetZfirst(Int_t first) {fZfirst = first;}
virtual void SetZlast (Int_t last) {fZlast = last;}
static TVirtualFitter *GetFitter();
static TVirtualFitter *Fitter(TObject *obj, Int_t maxpar = 25);
static const char *GetDefaultFitter();
static Int_t GetMaxIterations();
static Double_t GetErrorDef();
static Double_t GetPrecision();
static void SetDefaultFitter(const char* name = "");
static void SetFitter(TVirtualFitter *fitter, Int_t maxpar = 25);
static void SetMaxIterations(Int_t niter=5000);
static void SetErrorDef(Double_t errdef=1);
static void SetPrecision(Double_t prec=1e-6);
ClassDef(TVirtualFitter,0) //Abstract interface for fitting
};
#endif
|