*************************************************
* Multidimensional Fit *
* *
* By Christian Holm <cholm@nbi.dk> 14/10/00 *
*************************************************
User parameters:
----------------
Variables: 4
Data points: 0
Max Terms: 30
Power Limit Parameter: 1
Max functions: 1000
Max functions to study: 1000
Max angle (optional): 10
Min angle: 10
Relative Error accepted: 0.01
Maximum Powers: 6 6 6 6
Parameterisation will be done using Monomials
======================================
Sample statistics:
------------------
D 1 2 3 4
Max: 141.6264 9.954 9.99 9.998 9.995
Min: 0.149448 0.0455 0.01523 0.04109 0.003819
Mean: 48.40441 5.033 5.044 5 5.002
Function Sum Squares: 1.678e+06
Coeff SumSqRes Contrib Angle QM Func Value W^2 Powers
1 5.065e+05 1.367e-26 10 6.67e-07 0 -5.23e-15 500 0 0 0 0
2 1.15e+05 3.915e+05 50 0.167 2 47.33 174.7 1 0 0 0
3 8.755e+04 2.749e+04 80 0.167 1 13.26 156.3 0 0 0 1
4 6.188e+04 2.568e+04 80 0.167 3 12.39 167.3 0 0 1 0
5 3.708e+04 2.48e+04 80 0.167 4 12.6 156.3 0 1 0 0
6 2.596e+04 1.112e+04 85 0.333 8 14.91 50.03 1 1 0 0
7 1.667e+04 9290 85 0.333 9 13.02 54.78 1 0 0 1
8 7382 9287 85 0.333 14 12.64 58.13 1 0 1 0
9 6235 1147 87.5 0.333 5 5.095 44.16 0 0 0 2
10 5218 1018 87.5 0.333 12 4.983 40.99 0 2 0 0
11 4193 1025 87.5 0.667 53 5.229 37.5 0 0 4 0
12 3299 893.8 88.8 0.333 6 -4.058 54.27 0 0 1 1
13 2458 841.2 88.8 0.333 7 -4.155 48.73 0 1 0 1
14 1933 524.7 88.8 0.333 13 -3.291 48.45 0 1 1 0
15 1675 258.1 88.8 0.5 19 4.211 14.56 1 0 0 2
16 1334 340.6 88.8 0.5 26 -4.731 15.22 1 1 0 1
17 1079 255.5 88.8 0.5 33 3.953 16.35 1 0 2 0
18 788.2 290.4 88.8 0.5 34 4.687 13.22 1 2 0 0
19 709.2 78.94 89.4 0.5 21 2.23 15.88 0 1 1 1
20 473.4 235.8 89.4 0.5 23 -3.543 18.78 1 0 1 1
21 235.4 238 89.4 0.5 28 -3.976 15.06 1 1 1 0
Results of Parameterisation:
----------------------------
Total reduction of square residuals 5.063e+05
Relative precision obtained: 0.01185
Error obtained: 235.4
Multiple correlation coefficient: 0.9995
Reduced Chi square over sample: 0.4975
Maximum residual value: 3.243
Minimum residual value: -2.59
Estimated root mean square: 0.6862
Maximum powers used: 1 2 4 2
Function codes of candidate functions.
1: considered, 2: too little contribution, 3: accepted.
3333333333 1133311113 1313113131 1113311111 1111111111 1113111111
1111111111 1111111111 1111111111 1111111111 1111111111 1111111111
111111
Loop over candidates stopped because max allowed studies reached
Coefficients:
-------------
# Value Error Powers
---------------------------------------
0 -4.371 0.08798 0 0 0 0
1 43.15 0.1601 1 0 0 0
2 13.43 0.08032 0 0 0 1
3 13.46 0.07805 0 0 1 0
4 13.4 0.08054 0 1 0 0
5 13.33 0.1423 1 1 0 0
6 13.3 0.1367 1 0 0 1
7 13.35 0.1331 1 0 1 0
8 4.497 0.1511 0 0 0 2
9 4.639 0.1585 0 2 0 0
10 4.89 0.164 0 0 4 0
11 -3.7 0.1364 0 0 1 1
12 -3.986 0.1438 0 1 0 1
13 -3.862 0.1458 0 1 1 0
14 4.361 0.2614 1 0 0 2
15 -4.026 0.2555 1 1 0 1
16 4.57 0.2477 1 0 2 0
17 4.698 0.2729 1 2 0 0
18 2.838 0.2525 0 1 1 1
19 -3.489 0.2292 1 0 1 1
20 -3.976 0.2566 1 1 1 0
Results of Fit:
---------------
Test sample size: 2100
Multiple correlation coefficient: 0.9994
Relative precision obtained: 0.0001753
Error obtained: 1275
Reduced Chi square over sample: 2.47
FCN=1 FROM MIGRAD STATUS=CONVERGED 861 CALLS 862 TOTAL
EDM=1.67352e-06 STRATEGY= 1 ERROR MATRIX ACCURATE
EXT PARAMETER PHYSICAL LIMITS
NO. NAME VALUE ERROR NEGATIVE POSITIVE
1 coeff00 -4.39851e+00 4.44260e-02
2 coeff01 4.31493e+01 8.56451e-02
3 coeff02 1.34121e+01 3.78565e-02
4 coeff03 1.34869e+01 3.80951e-02
5 coeff04 1.33954e+01 3.74054e-02
6 coeff05 1.32280e+01 6.57916e-02
7 coeff06 1.33441e+01 6.75855e-02
8 coeff07 1.32943e+01 6.66410e-02
9 coeff08 4.52254e+00 7.39945e-02
10 coeff09 4.65912e+00 7.21745e-02
11 coeff10 4.94808e+00 8.14935e-02
12 coeff11 -4.02586e+00 6.53780e-02
13 coeff12 -4.04534e+00 6.55396e-02
14 coeff13 -3.93856e+00 6.51725e-02
15 coeff14 4.42141e+00 1.30526e-01
16 coeff15 -4.00581e+00 1.17191e-01
17 coeff16 4.62595e+00 1.30233e-01
18 coeff17 4.37782e+00 1.28579e-01
19 coeff18 3.51629e+00 1.13771e-01
20 coeff19 -4.11068e+00 1.17446e-01
21 coeff20 -3.82302e+00 1.16486e-01
Coefficients:
-------------
# Value Error Powers
---------------------------------------
0 -4.399 0.04443 0 0 0 0
1 43.15 0.08565 1 0 0 0
2 13.41 0.03786 0 0 0 1
3 13.49 0.0381 0 0 1 0
4 13.4 0.03741 0 1 0 0
5 13.23 0.06579 1 1 0 0
6 13.34 0.06759 1 0 0 1
7 13.29 0.06664 1 0 1 0
8 4.523 0.07399 0 0 0 2
9 4.659 0.07217 0 2 0 0
10 4.948 0.08149 0 0 4 0
11 -4.026 0.06538 0 0 1 1
12 -4.045 0.06554 0 1 0 1
13 -3.939 0.06517 0 1 1 0
14 4.421 0.1305 1 0 0 2
15 -4.006 0.1172 1 1 0 1
16 4.626 0.1302 1 0 2 0
17 4.378 0.1286 1 2 0 0
18 3.516 0.1138 0 1 1 1
19 -4.111 0.1174 1 0 1 1
20 -3.823 0.1165 1 1 1 0
Writing on file "MDF.C" ... done
multidimfit .............................................. OK
(int) 0
{
Double_t upp[5] = { 10, 10, 10, 10, 1 };
for (int i = 0; i < 4; i++)
}
{
double GoodCoeffsNoFit[] = {
-4.37056,
43.1468,
13.432,
13.4632,
13.3964,
13.328,
13.3016,
13.3519,
4.49724,
4.63876,
4.89036,
-3.69982,
-3.98618,
-3.86195,
4.36054,
-4.02597,
4.57037,
4.69845,
2.83819,
-3.48855,
-3.97612
};
double GoodCoeffs[] = {
-4.399,
43.15,
13.41,
13.49,
13.4,
13.23,
13.34,
13.29,
4.523,
4.659,
4.948,
-4.026,
-4.045,
-3.939,
4.421,
-4.006,
4.626,
4.378,
3.516,
-4.111,
-3.823,
};
int GoodPower[] = {
1, 1, 1, 1,
2, 1, 1, 1,
1, 1, 1, 2,
1, 1, 2, 1,
1, 2, 1, 1,
2, 2, 1, 1,
2, 1, 1, 2,
2, 1, 2, 1,
1, 1, 1, 3,
1, 3, 1, 1,
1, 1, 5, 1,
1, 1, 2, 2,
1, 2, 1, 2,
1, 2, 2, 1,
2, 1, 1, 3,
2, 2, 1, 2,
2, 1, 3, 1,
2, 3, 1, 1,
1, 2, 2, 2,
2, 1, 2, 2,
2, 2, 2, 1
};
if (nc != 21) return 1;
int k = 0;
for (
Int_t i=0;i<nc;i++) {
if (doFit) {
}
else {
if (
TMath::Abs((*coeffs)[i] - GoodCoeffsNoFit[i]) > 5
e-5)
return 2;
}
for (
Int_t j=0;j<nv;j++) {
if (powers[pindex[i]*nv+j] != GoodPower[k]) return 3;
k++;
}
}
gROOT->ProcessLine(
".L MDF.C");
Double_t refMDF = (doFit) ? 43.95 : 43.98;
Long_t iret =
gROOT->ProcessLine(
" Double_t xvalues[] = {5,5,5,5}; double result=MDF(xvalues); &result;");
return 0;
}
Int_t multidimfit(
bool doFit =
true)
{
cout << "*************************************************" << endl;
cout << "* Multidimensional Fit *" << endl;
cout << "* *" << endl;
cout << "* By Christian Holm <cholm@nbi.dk> 14/10/00 *" << endl;
cout << "*************************************************" << endl;
cout << endl;
Int_t mPowers[] = { 6 , 6, 6, 6 };
printf("======================================\n");
for (i = 0; i < nData ; i++) {
}
for (i = 0; i < nVars; i++) {
}
for (i = 0; i < nData ; i++) {
for (j = 0; j < nVars; j++)
if (
x[j] < xMin[j] ||
x[j] > xMax[j])
break;
if (j == nVars)
else
i--;
}
if (doFit)
Int_t compare = CompareResults(fit, doFit);
if (!compare) {
printf("\nmultidimfit .............................................. OK\n");
} else {
printf("\nmultidimfit .............................................. fails case %d\n",compare);
}
delete fit;
delete [] xMin;
delete [] xMax;
return compare;
}
R__EXTERN TRandom * gRandom
A ROOT file is a suite of consecutive data records (TKey instances) with a well defined format.
Multidimensional Fits in ROOT.
Int_t GetNCoefficients() const
void SetMaxStudy(Int_t n)
void SetMaxFunctions(Int_t n)
void SetMaxTerms(Int_t terms)
Int_t GetNVariables() const
virtual void MakeCode(const char *functionName="MDF", Option_t *option="")
Generate the file <filename> with .C appended if argument doesn't end in .cxx or ....
const TVectorD * GetMaxVariables() const
void SetPowerLimit(Double_t limit=1e-3)
Set the user parameter for the function selection.
virtual void FindParameterization(Option_t *option="")
Find the parameterization.
const TVectorD * GetMinVariables() const
virtual void AddRow(const Double_t *x, Double_t D, Double_t E=0)
Add a row consisting of fNVariables independent variables, the known, dependent quantity,...
const Int_t * GetPowers() const
void SetMaxPowers(const Int_t *powers)
Set the maximum power to be considered in the fit for each variable.
virtual void AddTestRow(const Double_t *x, Double_t D, Double_t E=0)
Add a row consisting of fNVariables independent variables, the known, dependent quantity,...
virtual void Fit(Option_t *option="")
Try to fit the found parameterisation to the test sample.
void SetMinRelativeError(Double_t error)
Set the acceptable relative error for when sum of square residuals is considered minimized.
void SetMaxAngle(Double_t angle=0)
Set the max angle (in degrees) between the initial data vector to be fitted, and the new candidate fu...
Int_t * GetPowerIndex() const
void SetMinAngle(Double_t angle=1)
Set the min angle (in degrees) between a new candidate function and the subspace spanned by the previ...
virtual void Print(Option_t *option="ps") const
Print statistics etc.
const TVectorD * GetCoefficients() const
virtual void MakeHistograms(Option_t *option="A")
Make histograms of the result of the analysis.
This is the base class for the ROOT Random number generators.
virtual Double_t Gaus(Double_t mean=0, Double_t sigma=1)
Samples a random number from the standard Normal (Gaussian) Distribution with the given mean and sigm...
virtual Double_t Rndm()
Machine independent random number generator.
Double_t Sqrt(Double_t x)
Bool_t AreEqualRel(Double_t af, Double_t bf, Double_t relPrec)
static void output(int code)