Demonstrate performance and usage of Minuit2 and Fumili2 for monodimensional fits.
Processing /builddir/build/BUILD/root-6.10.00/tutorials/fit/minuit2FitBench.C...
*********************************************************************************
Minuit
*********************************************************************************
pass : 0
................... FCN=205.276 FROM MINOS STATUS=SUCCESSFUL 44 CALLS 429 TOTAL
EDM=3.83265e-10 STRATEGY= 1
ERROR MATRIX ACCURATE
EXT PARAMETER STEP FIRST
NO. NAME VALUE
ERROR SIZE DERIVATIVE
1 p0 5.13639e+01 2.01330e+00 -2.79928e-04 -2.05459e-06
2 p1 5.57813e+01 4.80583e+00 3.09318e-03 -9.98603e-07
3 p2 7.42112e+01 1.87042e+00 -1.20383e-03 -1.92647e-07
4
p3 4.27344e+02 2.93232e+00 -1.66251e-02 -7.78988e-07
5 p4 3.58604e-02 3.47006e-04 1.73858e-07 9.80677e-02
6 p5 1.00001e+00 1.64203e-04 1.64203e-04 3.19269e-02
Minuit,
npass=20 : RT= 0.447 s, Cpu= 0.440 s
*********************************************************************************
Fumili
*********************************************************************************
pass : 0
...................
****************************************
Chi2 = 206.284
NDf = 194
NCalls = 4
p0 = 51.4325 +/- 2.01397
p1 = 55.5412 +/- 4.81253
p2 = 74.2976 +/- 1.87298
p4 = 0.0358559 +/- 0.000357243
p5 = 1.00001 +/- 0.00016009
Fumili, npass=20 : RT= 0.368 s, Cpu= 0.370 s
*********************************************************************************
Minuit2
*********************************************************************************
pass : 0
...................
****************************************
Chi2 = 205.34
NDf = 194
Edm = 1.91395e-10
NCalls = 85
p0 = 51.3576 +/- 2.0133
p1 = 55.8172 +/- 4.80582
p2 = 74.1981 +/- 1.8704
p4 = 0.0358574 +/- 0.000346961
p5 = 1.00001 +/- 0.000164204
Minuit2, npass=20 : RT= 0.268 s, Cpu= 0.270 s
*********************************************************************************
Fumili2
*********************************************************************************
pass : 0
...................
****************************************
Chi2 = 207.495
NDf = 194
Edm = 4.34909e-10
NCalls = 92
p0 = 51.4278 +/- 2.01381
p1 = 55.5389 +/- 4.8062
p2 = 74.3005 +/- 1.8705
p4 = 0.0358584 +/- 0.000346902
p5 = 1.00001 +/- 0.000164198
Fumili2, npass=20 : RT= 0.248 s, Cpu= 0.250 s
(int) 0
return par[0] + par[1]*x[0] + par[2]*x[0]*x[0];
}
TMath::Max( 1.e-10,(x[0]-par[2])*(x[0]-par[2]) + .25*par[1]*par[1]);
}
return background(x,par) + lorentzianPeak(x,&par[3]);
}
printf("\n*********************************************************************************\n");
printf("\t %s \n",fitter);
printf("*********************************************************************************\n");
std::string title = std::string(fitter) + " fit bench";
histo =
new TH1D(fitter,title.c_str(),200,0,3);
bool ok = true;
if (pass%100 == 0) printf("pass : %d\n",pass);
else printf(".");
for (
Int_t i=0;i<5000;i++) {
}
int iret = histo->
Fit(fitFcn,
"Q0");
ok &= (iret == 0);
if (iret!=0)
Error(
"DoFit",
"Fit pass %d failed !",pass);
}
if (!fitterType.Contains("Fumili"))
else
printf(
"%s, npass=%d : RT=%7.3f s, Cpu=%7.3f s\n",fitter,npass,timer.
RealTime(),cputime);
p->Draw();
return ok;
}
int minuit2FitBench(
Int_t npass=20) {
bool ok = true;
return (ok) ? 0 : 1;
}