I’m trying to use Minuit to minimize a function with respect to four input parameters. Long story short, it is commonly (but not always) failing to find the correct minimum, and we believe that this could be related to the step sizes. The parameters are
ConstY, and it’s trying to minimize
Chi2. In the attached image, you can see every step that Minuit takes. Not only is the minimum not the true minimum (which is not obvious from the image, but rather other checks), shockingly, it seems to wobble around a tiny radius for a while, make a massive jump, then wobble around that other point before returning.
We have checked, and Minuit believes that the fit is ok, as in the fit status is 0, and the CovMatrixStatus is 3. Edm is also 0. We’ve been setting the step sizes with the following lines, but clearly you can see that the steps are smaller than this. It’s unclear why a small step size (without running out of iterations) would lead to the incorrect minimum, but perhaps it is a sign of a deeper issue. Is there anything being done incorrectly here?
m_minimizer->SetVariableStepSize(0, 0.01); // ConstX m_minimizer->SetVariableStepSize(1, 0.001); // SlopeX m_minimizer->SetVariableStepSize(2, 10); // ConstY m_minimizer->SetVariableStepSize(3, 0.1); // SlopeY