Unbinned Maximum Likelyhood fit to a 2D plot

Hello Roofit community,

I want to fit a Dalitz plot (X, Y) with (1 + aY + bY^2 + cX + dX^2) function with RooAbsPdf using the unbinned maximum likelihood method. I generated a Dalitz plot with a=−0.047, b =−0.069, c=0.019 and d −0.073 (also checked) and I expect the same results back, but the fit results, parameters correlation and error matrix are zero. Please look at the ‘Unbinned_DPFit.C’ macro attached.

To run the program:
root [ ] .L myPdf.cxx+
root [ ] .L Unbinned_DPFit.C+
and execute
root [ ] Unbinned_DPFit()

Kindly help me with your valuable suggestions.

Thanks in advance,
Sudeep

Complete files along with the root file are available at:
https://drive.google.com/file/d/0B7ffh14sAUmzQURlNmN4QzVWRDQ/view?usp=sharing

Hi,

You should set good initial parameter values. If for the initial parameter values your pdf evaluate to zero, you are getting already an infinity value for the negative log-likelihood.
This makes the fit not working

Lorenzo

Thanks for the reply.
I set,
RooRealVar a(“a”,“a”,-0.15,0.0);
RooRealVar b(“b”,“b”,-0.15,0.0);
RooRealVar c(“c”,“c”,0.0,0.1);
RooRealVar d(“d”,“d”,-0.15,0.0);
which is very close to what I expect a=−0.047, b =−0.069, c=0.019 and d=−0.073.

I get is:
PARAMETER CORRELATION COEFFICIENTS
NO. GLOBAL 1 2 3 4
1 0.00000 1.000 0.000 0.000 0.000
2 0.00000 0.000 1.000 0.000 0.000
3 0.00000 0.000 0.000 1.000 0.000
4 0.00000 0.000 0.000 0.000 1.000

Floating Parameter FinalValue +/- Error


                 a   -1.3811e-01 +/-  5.54e-02
                 b   -7.5000e-02 +/-  6.31e-02
                 c    5.0000e-02 +/-  4.21e-02
                 d   -7.5000e-02 +/-  6.31e-02

So setting the initial parameter values does not help.

I think the problem with the current unbinned maximum likelihood fit is following:

When I try to fit (1 + aY + bY^2 + cX+ dX^2). It only optimizes the parameter ‘a’ and for rest of the parameters ‘b’,‘c’ and ‘d’ it assigns the arithmetical mean between the limits of parameters.

Let’s say I the parameter b is defined as RooRealVar b(“b”,“b”,2,4);
So the output value of the parameter ‘b’ after fitting will be (2+4)/2 = 3.

Is there any way to fix this?

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.