RooFit: calling migrad on a profile likelihood

Dear Rooters

Is there a way to minimize a profile likelihood with migrad?

I have been running the following script: root.cern.ch/root/html/tutorials … ell.C.html

which plots the PLL as a function of the parameter.

However, if I try to call migrad on the PLL (modifying from line 77)
RooAbsReal* pll_frac = nll->createProfile(frac) ;
RooMinuit m(*pll);
m.migrad();

RooFit fails to find the minimum and apparently tries to minimize the profile for both the variable of interest and the variable that has been profiled out.

How can I get RooFit to minimize the PLL w.r.t the variable of interest only?

Many thanks,

Thibault

Hi,

I am not sure exactly what you want to do. If you want to minimise also the variable of interest, why you do not use directly the negative log-likelihood function ?

Lorenzo

Hi,

Say I have a function with 3 variables x,y, n.
n is a noise variable which I want to profile out.
x, y are the parameters of interest.

I want to be able to draw a contour in x,y given that n has been profiled out and is now a function of x and y.

This should not be the same as calling migrad on the initial NLL which depends on x,y,n (and then drawing the contour in x,y) because the script shows that the Profile Likelihood is much broader than the projection of the initial NLL (or correct me if I’m wrong)

Thanks,

Thibault

Hi,

The contours obtained by Minuit are obtained profiled all the other parameters, not keeping them constant.
This functionality is already available.
In RooFit you can get it by calling RooMinimizer::contour,

see root.cern.ch/root/html/src/RooMi … tml#OreXnC

Best Regards

Lorenzo

Thank you!

So I can just minimize the full NLL function (which depends on say x,y,n)
and then plot the contour on x,y which will automatically profile n out?

Best regards,

Thibault

Hi,

Yes the contour done inside Minuit in x,y is made by profiling all the other variables

Best Regards

Lorenzo