MnMigrad gives no errors but valild minima

I have a problem with a fit of several 100 data points with a custom Chi^2 function.
I"m using a function FitFcn based on ROOT::Minuit2::FCNBase for the Chi^2 and MnMigrad for the Minimization.

    FitFcn *Fit = new FitFcn(min_tube, max_tube);
    MnUserParameters upar;
    upar.Add("Delta_y", 15.1, .001, 15.0, 15.2);
    upar.Add("y_0", 0, .1, -1, 1);
    upar.Add("skipp_y", 7.55, .01, -7, 8);
    upar.Add("skipp_z", 15.1 / 2. * sqrt(3), .01, 12.5, 13.7);
    upar.Add("z_0", 0, .1, -2, 2);
    upar.Add("spacer", 90.3225, .001, 88, 92);
    /** create minimizer */
    MnMigrad migrad(*Fit, upar); // only migrad, no other fitter if fail
    /** ... and minimize */
    FunctionMinimum min = migrad(0, 0.001);

I have 4 separate parts of my detector which are fitted individually. For 3 all errors are exactly 0, for one i get reasonable errors. I checked the Chi^2 around the minimal for all parameters, they are very nice parabolas.

I’m using root 5-28-00g. If i use 5-30-04 i get different minima (with large errors )and judging from the Chi^2 curve they are not really at the minimum. Also the EDM is much larger in the second case …

Does anybody know why this is happening or what i am doing wrong?


Can you please post your code showing this effect or, if this is not possible, it would be enough to see the log files for he minimization in both case. I would need to see a dump of the status for each iteration.
The Minuit2Minimizer class prints this automatically in verbose mode. If you are not using it, you can query this information from the FunctionMinimum object. See … er.cxx#375

Best Regards