RooFit/RooMinuit parameter errors

Dear Root team,

I have used RooFit and RooMinuit to minimize a composite likelihood RooNLLVar with minos in a fit to a data set. I would like to extract the correct error on one of the fitted parameters (the RooRealVar fsig below) at a confidence level of my choice, e.g. 5 sigma, but there are two options it seems:

  1. fsig->getError();

  2. fsig->getAsymErrorLo();

My questions are these:

a) What is the difference between these two cases?
b) How are they calculated?
c) Sometimes the asymmetric errors are both 0, even though the profile seems ok. Any idea what the reason for this could be?

From sample profile plots of the log-likelihood, it seems as case 1) does not correspond to the correct step up on the log-likelihood function (as set by m.setErrorLevel(errorLevel), where errorLevel is e.g. 550.5 for 5 sigma), whereas case 2) seems to have the right step up.

Thank you very much in advance!


The symmetric error is the error calculate by HESSE and is based
on the second derivative of the log(L) at the minimum. The asymmetric error is calculated by MINOS and is calculating by a ‘hill climbing’ algorithm that finds the points where the likelihood increases by +0.5 units (for the 1-D case, for N-D it is a bit more complicated). You should consult the MINUIT documentation for additional details on these error calculation methods.

In general HESSE and MINOS errors only agree if the likelihood is perfectly parabolical. The parabolic approximation is rarely good at
e.g. 5. sigma, as you observed.

If MINOS is not run (it is off by default in RooAbsPdf::fitTo()), or if MINOS
fails to converge, the asymmetric error associated with a RooRealVar will be zero.


RooFFTConvPdf lxg(“lxg”,“gauss (X) landau”,t,landau,gauss) ;
lxg.fitTo(data,Minos(kTRUE)) ;
same is the case with me…
MINOS is true but i am getting zero error.