Hi, I’ve been running a 400+ amplitude fit using RooMinimizer as the interface to MIGRAD. We configure MIGRAD to use strategy 0 and tolerance 3 through RooMinizer
minimizer.setStrategy(0);
minimizer.setStrategy(3.0);
and the only difference is whether we use Minuit1(default) vs Minuit2
minimizer.setMinimizerType("Minuit2");
and the Minuit2 documentation states that Migrad converges when the estimated distance to minimum (EDM) is smaller than
tolerance * 1e-3
which should be 3e-3 in this case. I get the expected printout with Minuit1
STARTED MIGRAD MINIMIZATION. STRATEGY 0. CONVERGENCE WHEN EDM .LT. 3.00E-03
but using Minuit2 prints something different
Minuit2Minimizer: Minimize with max-calls 500000 convergence for edm < 3 strategy 0
VariableMetric: start iterating until Edm is < 0.006
which means that the convergence criteria tolerance has doubled in Minuit2. I have 4 fits which converges in both Minuit1 and Minuit2, Minuit1 consistently has a smaller minima (attached). On another note, Minuit2 seems to converge more often than Minuit1 although I guess this is expected since Minuit2 has a larger convergence criteria?
both_passed.pdf (16.9 KB)
Which leads me to a few questions:
- I recall in this forum a mention that Minuit2 has a fix for small tolerances. What exactly does this fix do?
- Is this fix enlarging the tolerance I asked for in Minuit2?
- Is there any other differences, aside from the tolerance, between Minuit1 and Minuit2 which would cause the differences in minima value?
- We have about 400k data and 2.5M MC (MC is used to normalize our likelihood function). Is it harder for EDM to go below the convergence criteria when statistics increases?
- A bit unrelated. What does strategy 0 assumes for the initial second derivative matrix at the start? Is it the same as the BFGS method in scipy which assumes the identity matrix?
Since this is an ongoing analysis with unreleased private code, I am unable to provide a working example so I apologize for this inconvenience.