Dear Root team,
I get the correlation matrix with the following code:
correlation_matrix = new double[number_of_parameters*number_of_parameters];
gMinuit->mnemat (correlation_matrix, number_of_parameters);
Consider this example with 3 fixed parameters:
FCN=25.0296 FROM MIGRAD STATUS=CONVERGED 159 CALLS 160 TOTAL
EDM=1.76359e-10 STRATEGY= 1 ERROR MATRIX ACCURATE
EXT PARAMETER STEP FIRST
NO. NAME VALUE ERROR SIZE DERIVATIVE
1 normalisation 5.45620e+00 7.27962e-01 2.65966e-06 -7.78900e-03
2 mean 3.09072e+00 fixed
3 sigma 5.31116e-02 fixed
4 constant 1.39707e+01 6.89228e-01 1.68089e-03 9.08073e-06
5 slope -2.33399e-11 4.22742e-01 3.24051e-04** at limit **
6 correction 0.00000e+00 fixed
Correlation matrix:
0 1 2 3 4 5
_0__5.30e-01_-1.02e-01__2.22e-10_6.79e-313_3.19e-313_6.01e-154
_1____________4.75e-01__1.94e-08_6.01e-154_3.19e-153_6.79e-313
_2______________________3.95e-11_6.79e-313_3.19e-313__4.91e+25
_3_______________________________6.01e-154_6.06e-153_1.38e-312
_4_________________________________________4.24e-253__1.49e+20
_5___________________________________________________2.06e-312
_0__5.30e-01
_1_-1.02e-01__4.75e-01
_2__2.22e-10__1.94e-08__3.95e-11
_3_5.97e-153_2.06e-312_4.24e-253_6.01e-154
_4_4.24e-253_7.93e+102_2.25e-307_7.06e-313_4.24e-253
_5_4.65e+107_6.79e-313_3.19e-313__1.30e-76_1.44e-312_2.06e-312
Firstly, I noticed in the case where some parameters are fixed the correlation matrix is reduced, which is not documented. And not easy to manage.
Moreover, I can only verified by hand “normalisation” and “constant”, but not the last “slope”.
> $e=7.27962e-01 ;sprintf("%.2e", ($e)**2)
= 5.30e-01
> $e=0.68922756632699 ;sprintf("%.2e", ($e)**2)
= 4.75e-01
> $e=0.422741590148873 ;sprintf("%.2e", ($e)**2)
= 1.79e-01
The matrix seems right until 1, and symetric until 2.
What’s happen?