Minimization + RooFitResult

hello,
I made several Toy experiments generating and fitting according to a certain PDF.
Instead of saving the log file, I saved the RooFitResult in a root file that
later I analyze with a macro.

To minimize in some cases I used
m1.setEps(1e-12);
m1.setStrategy(1);
m1.migrad();
in other cases I used
m1.setStrategy(2);
m1.migrad();
m1.hesse();
then
RooFitResult* r1 = m1.save();
TFile resFile(“result.root”,“RECREATE”);
r1->Write();
resFile.Close();

  1. Is there a way to understand from the only RooFitResult which of the two minimization sequences I used ?

  2. in successful fits, in the cases I use hesse, in some cases I get different edm values from what migrad display. Moreover the covariance matrix has some % of uncertainties.
    Is there a way to access the covariance uncertainty information from the RooFitResult ?

  3. As a general statement, is it correct to say that a fit is successfull if
    the migrad converged, the covariance matrix is definite positive (covQual==3) and edm is small enough (<10-4) ???
    Do we really need to inspect the error matrix with hesse or minos to be sure?

Many thanks for any advise

Hi Stefania,

  1. The fit result returned by save() is a snapshot of the current state. So in your example it refers to the second minimization pass. To save the
    result of the first minimization, simply insert a save() call between pass
    1 and pass 2)

  2. RooFitResult has a covQual() method which returns a status code that is indicative of the quality (see THtml documentation of the method for details) The percentage-level quality information is not exported by TMinuit afaik, so that cannot be stored in RooFitResult

  3. EDM and CovQual are is sufficient in most cases. Note that in principle you could still be in a local minimum in that case but inspecting the error matrix will not help you there either.

Wouter