This file is indexed.

/usr/include/root/TMultiDimFit.h is in libroot-hist-dev 5.34.19+dfsg-1.2.

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
// @(#)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; }
   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