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?