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()
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
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.