Minuit2 edm question

Hello,

I am trying to understand some Minuit2 output. If I do the following:

ROOT::Math::MinimizerOptions::SetDefaultTolerance(0.01);
ROOT::Math::MinimizerOptions::SetDefaultMinimizer("Minuit2");
ROOT::Math::MinimizerOptions::SetDefaultPrintLevel(2);

and then start minimization, I get approximately the following:

It correctly reports in the beginning that the requested tolerance is 0.01 but then for some reason says “start iterating until Edm is < 2e-05” :open_mouth:

Could you please let me know which of the two tolerances is actually used during minimization? My impression (judging by the subsequent output) is that Minuit2 does not respect the change of the default tolerance value. If so, how could I set the minimization tolerance for Minuit2?

Thank you,
Siarhei.

Hi,
For historical reasons (compatibility with the old Fortran version of Minuit) the Migrad minimisation will stop when the computed EDM is less than 0.002 * tolerance * UPERROR.
So in your case you have defined a tolerance of 0.01, and probably using a default UPERROR = 1 (68% errors in a chi2 fit) the variable metric will stop when EDM < 2 E-5.

If you change the default tolerance, the printed value should be different. If it is not the case it is maybe because you are using Minuit2 via some other classes, (e.g. RooFit) which might set the tolerance to a different value

Best Regards

Lorenzo