/usr/include/root/TMultiDimFit.h is in libroot-hist-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 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 | // @(#)root/hist:$Id$
// Author: Christian Holm Christensen 07/11/2000
#ifndef ROOT_TMultiDimFit
#define ROOT_TMultiDimFit
#ifndef ROOT_TNamed
#include "TNamed.h"
#endif
#ifndef ROOT_TVectorD
#include "TVectorD.h"
#endif
#ifndef ROOT_TMatrixD
#include "TMatrixD.h"
#endif
#ifndef ROOT_TList
#include "TList.h"
#endif
#ifndef ROOT_TVirtualFitter
#include "TVirtualFitter.h"
#endif
class TBrowser;
class TMultiDimFit : public TNamed {
public:
enum EMDFPolyType {
kMonomials,
kChebyshev,
kLegendre
};
private:
static TMultiDimFit* fgInstance; // Static instance
protected:
TVectorD fQuantity; // Training sample, dependent quantity
TVectorD fSqError; // Training sample, error in quantity
Double_t fMeanQuantity; // Mean of dependent quantity
Double_t fMaxQuantity; // Max value of dependent quantity
Double_t fMinQuantity; // Min value of dependent quantity
Double_t fSumSqQuantity; // SumSquare of dependent quantity
Double_t fSumSqAvgQuantity; // Sum of squares away from mean
TVectorD fVariables; // Training sample, independent variables
Int_t fNVariables; // Number of independent variables
TVectorD fMeanVariables; // mean value of independent variables
TVectorD fMaxVariables; // max value of independent variables
TVectorD fMinVariables; // min value of independent variables
Int_t fSampleSize; // Size of training sample
TVectorD fTestQuantity; // Test sample, dependent quantity
TVectorD fTestSqError; // Test sample, Error in quantity
TVectorD fTestVariables; // Test sample, independent variables
Int_t fTestSampleSize; // Size of test sample
Double_t fMinAngle; // Min angle for acepting new function
Double_t fMaxAngle; // Max angle for acepting new function
Int_t fMaxTerms; // Max terms expected in final expr.
Double_t fMinRelativeError; // Min relative error accepted
Int_t *fMaxPowers; // [fNVariables] maximum powers
Double_t fPowerLimit; // Control parameter
TMatrixD fFunctions; // Functions evaluated over sample
Int_t fMaxFunctions; // max number of functions
Int_t *fFunctionCodes; // [fMaxFunctions] acceptance code
Int_t fMaxStudy; // max functions to study
Int_t fMaxFuncNV; // fMaxFunctions*fNVariables
TMatrixD fOrthFunctions; // As above, but orthogonalised
TVectorD fOrthFunctionNorms; // Norm of the evaluated functions
Int_t *fMaxPowersFinal; // [fNVariables] maximum powers from fit;
Int_t *fPowers; // [fMaxFuncNV] where fMaxFuncNV = fMaxFunctions*fNVariables
Int_t *fPowerIndex; // [fMaxTerms] Index of accepted powers
TVectorD fResiduals; // Vector of the final residuals
Double_t fMaxResidual; // Max redsidual value
Double_t fMinResidual; // Min redsidual value
Int_t fMaxResidualRow; // Row giving max residual
Int_t fMinResidualRow; // Row giving min residual
Double_t fSumSqResidual; // Sum of Square residuals
Int_t fNCoefficients; // Dimension of model coefficients
TVectorD fOrthCoefficients; // The model coefficients
TMatrixD fOrthCurvatureMatrix; // Model matrix
TVectorD fCoefficients; // Vector of the final coefficients
TVectorD fCoefficientsRMS; // Vector of RMS of coefficients
Double_t fRMS; // Root mean square of fit
Double_t fChi2; // Chi square of fit
Int_t fParameterisationCode; // Exit code of parameterisation
Double_t fError; // Error from parameterization
Double_t fTestError; // Error from test
Double_t fPrecision; // Relative precision of param
Double_t fTestPrecision; // Relative precision of test
Double_t fCorrelationCoeff; // Multi Correlation coefficient
TMatrixD fCorrelationMatrix; // Correlation matrix
Double_t fTestCorrelationCoeff; // Multi Correlation coefficient
TList* fHistograms; // List of histograms
Byte_t fHistogramMask; // Bit pattern of hisograms used
Int_t fBinVarX; // Number of bin in independent variables
Int_t fBinVarY; // Number of bin in dependent variables
TVirtualFitter* fFitter; //! Fit object (MINUIT)
EMDFPolyType fPolyType; // Type of polynomials to use
Bool_t fShowCorrelation; // print correlation matrix
Bool_t fIsUserFunction; // Flag for user defined function
Bool_t fIsVerbose; //
virtual Double_t EvalFactor(Int_t p, Double_t x) const;
virtual Double_t EvalControl(const Int_t *powers) const;
virtual void MakeCoefficientErrors();
virtual void MakeCorrelation();
virtual Double_t MakeGramSchmidt(Int_t function);
virtual void MakeCoefficients();
virtual void MakeCandidates();
virtual void MakeNormalized();
virtual void MakeParameterization();
virtual void MakeRealCode(const char *filename,
const char *classname,
Option_t *option="");
virtual Bool_t Select(const Int_t *iv);
virtual Bool_t TestFunction(Double_t squareResidual,
Double_t dResidur);
public:
TMultiDimFit();
TMultiDimFit(Int_t dimension,
EMDFPolyType type=kMonomials,
Option_t *option="");
virtual ~TMultiDimFit();
virtual void AddRow(const Double_t *x, Double_t D, Double_t E=0);
virtual void AddTestRow(const Double_t *x, Double_t D, Double_t E=0);
virtual void Browse(TBrowser* b);
virtual void Clear(Option_t *option=""); // *MENU*
virtual void Draw(Option_t * ="d") { }
virtual Double_t Eval(const Double_t *x, const Double_t *coeff=0) const;
virtual Double_t EvalError(const Double_t *x, const Double_t *coeff=0) const;
virtual void FindParameterization(Option_t* option=""); // *MENU*
virtual void Fit(Option_t *option=""); // *MENU*
Double_t GetChi2() const { return fChi2; }
const TMatrixD* GetCorrelationMatrix() const { return &fCorrelationMatrix; }
const TVectorD* GetCoefficients() const { return &fCoefficients; }
const TVectorD* GetCoefficientsRMS() const { return &fCoefficientsRMS; }
Double_t GetError() const { return fError; }
Int_t* GetFunctionCodes() const { return fFunctionCodes; }
const TMatrixD* GetFunctions() const { return &fFunctions; }
virtual TList* GetHistograms() const { return fHistograms; }
Double_t GetMaxAngle() const { return fMaxAngle; }
Int_t GetMaxFunctions() const { return fMaxFunctions; }
Int_t* GetMaxPowers() const { return fMaxPowers; }
Double_t GetMaxQuantity() const { return fMaxQuantity; }
Int_t GetMaxStudy() const { return fMaxStudy; }
Int_t GetMaxTerms() const { return fMaxTerms; }
const TVectorD* GetMaxVariables() const { return &fMaxVariables; }
Double_t GetMeanQuantity() const { return fMeanQuantity; }
const TVectorD* GetMeanVariables() const { return &fMeanVariables; }
Double_t GetMinAngle() const { return fMinAngle; }
Double_t GetMinQuantity() const { return fMinQuantity; }
Double_t GetMinRelativeError() const { return fMinRelativeError; }
const TVectorD* GetMinVariables() const { return &fMinVariables; }
Int_t GetNVariables() const { return fNVariables; }
Int_t GetNCoefficients() const { return fNCoefficients; }
Int_t GetPolyType() const { return fPolyType; }
Int_t* GetPowerIndex() const { return fPowerIndex; }
Double_t GetPowerLimit() const { return fPowerLimit; }
const Int_t* GetPowers() const { return fPowers; }
Double_t GetPrecision() const { return fPrecision; }
const TVectorD* GetQuantity() const { return &fQuantity; }
Double_t GetResidualMax() const { return fMaxResidual; }
Double_t GetResidualMin() const { return fMinResidual; }
Int_t GetResidualMaxRow() const { return fMaxResidualRow; }
Int_t GetResidualMinRow() const { return fMinResidualRow; }
Double_t GetResidualSumSq() const { return fSumSqResidual; }
Double_t GetRMS() const { return fRMS; }
Int_t GetSampleSize() const { return fSampleSize; }
const TVectorD* GetSqError() const { return &fSqError; }
Double_t GetSumSqAvgQuantity() const { return fSumSqAvgQuantity; }
Double_t GetSumSqQuantity() const { return fSumSqQuantity; }
Double_t GetTestError() const { return fTestError; }
Double_t GetTestPrecision() const { return fTestPrecision; }
const TVectorD* GetTestQuantity() const { return &fTestQuantity; }
Int_t GetTestSampleSize() const { return fTestSampleSize; }
const TVectorD* GetTestSqError() const { return &fTestSqError; }
const TVectorD* GetTestVariables() const { return &fTestVariables; }
const TVectorD* GetVariables() const { return &fVariables; }
static TMultiDimFit* Instance();
virtual Bool_t IsFolder() const { return kTRUE; }
virtual Double_t MakeChi2(const Double_t* coeff=0);
virtual void MakeCode(const char *functionName="MDF", Option_t *option=""); // *MENU*
virtual void MakeHistograms(Option_t* option="A"); // *MENU*
virtual void MakeMethod(const Char_t* className="MDF", Option_t* option=""); // *MENU*
virtual void Print(Option_t *option="ps") const; // *MENU*
void SetBinVarX(Int_t nbbinvarx) {fBinVarX = nbbinvarx;}
void SetBinVarY(Int_t nbbinvary) {fBinVarY = nbbinvary;}
void SetMaxAngle(Double_t angle=0);
void SetMaxFunctions(Int_t n) { fMaxFunctions = n; }
void SetMaxPowers(const Int_t *powers);
void SetMaxStudy(Int_t n) { fMaxStudy = n; }
void SetMaxTerms(Int_t terms) { fMaxTerms = terms; }
void SetMinRelativeError(Double_t error);
void SetMinAngle(Double_t angle=1);
void SetPowerLimit(Double_t limit=1e-3);
virtual void SetPowers(const Int_t *powers, Int_t terms);
ClassDef(TMultiDimFit,2) // Multi dimensional fit class
}
;
#endif
|