Errors given by ROOT::Minuit2::Minuit2Minimizer are confusing

I encountered a very difficult problem when using ROOT::Minuit2::Minuit2Minimizer. I would really appreciate it if friends who have encountered and understood this problem could explain it to me.

First I use ROOT::Minuit2::Minuit2Minimizer. After calling the Minimize() function for the first time for fitting, it will give me an error sigma1 of a certain important parameter. When I call Hesse() or Minimize() again after this line, Minuit2Minimizer will give me a new error sigma2 for the same parameter. Although it doesn’t always happen, sigma2 will occasionally be significantly smaller than sigma1. But I scanned this parameter and found that the error sigma1 actually corresponds to Delta chi ^2=1, which is what I want. Does anyone know why the Hesse(), which can calculate the error more accurately, does not give me an error that corresponds to Delta chi^2 =1? Does sigma2 make any sense in this case?

Please fill also the fields below. Note that root -b -q will tell you this info, and starting from 6.28/06 upwards, you can call .forum bug from the ROOT prompt to pre-populate a topic.

_ROOT Version: 6.28.06
_Platform: macosxarm64
_Compiler: Apple clang version 15.0.0 (clang-1500.0.40.1)


If you want to compute the error that corresponds to Delta chi^2 = 1 you need to call Minos, i.e. the function Minimizer::GetMinosError. Calling Hesse() will compute the error using the covariance matrix (inverse of the Hessian).
If you are not calling Hesse after the minimization, Minuit2 will return the error using an approximate covariance matrix. Only in some specific conditions, when using strategy=1, Minuit2 will call automatically Hesse internally after the minimization.
I hope this clarifies this problem

Best regards


Hi Lorenzo, thanks a lot for pointing this out. This leads me to know their differences.
In my case, I should always use the MINOS error.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.