Discrepancy between minuit2's terminal output errors and what is stored with the RooRealVar


ROOT Version: 6.30.02
Platform: Ubuntu 20.04
Compiler: gcc 12.3.0


Hello root experts. I have a question about the difference in the stored error values for a RooRealVar vs what is printed on the terminal when the minimization is taking place.

I am using RooFit to make a composite signal + background fit to data. The fit status seems to converge, and the covariance matrix status seems good. However, I notice a difference in the uncertainty values that are printed out next to the terminal’s output for a given fit parameter compared to the value that is stored and able to be accessed by FitParam.getError(). This isn’t a large difference, for example an error next to a parameter in the terminal output is 0.8, and the error saved with the variable is 0.9. This discrepancy also exists if I instead of use FitParam.getError(), do:

RooRealVar *param = dynamic_cast<RooRealVar*>(RooFitResult->floatParsFinal().find("paramName"));
param->getError();

I notice this difference when I am minimizing with Minuit2, but I don’t notice this when I minimize with Minuit. I have tried to look through some of the previous forum discussions but haven’t seen this topic come up. Is this a known issue (or is it really an issue?). What could be the cause of this discrepancy?

Thank you for any help!

Respectfully,
Becky

Hi Becky,

Let me add in the loop @jonas .

Cheers,
Danilo