Hello,
I’m using a ProfileLikelihoodCalculator to calculate the significance and I have the following problem: my model is a gaussian signal over a smooth background. The gaussian width depends on the peak of the gaussian (It’s a standard dimuon mass resolution) so the first attempt was simple and it workded.
The code is the following:
Double_t p0width = -0.747946; // +/- 0.356657
Double_t p1width = 0.0128591; // +/- 0.00100475
Double_t p2width = 3.13343e-05; // +/- 4.94856e-07
TF1 *widthExp = new TF1("widthExp","[0]+[1]*x+[2]*x^2",40,2060);
RooRealVar mean("mean", "mean of gaussians", 150,2000);
RooRealVar sigma("sigma", "width of gaussians", 1e-1, 200);
RooGaussian signal("signal", "Signal component", x, mean, sigma);
for(int index=0;index<maxIndex;index++){
double mFixed = 150 + index*stepMass;
mean.setVal(mFixed);
mean.setConstant(kTRUE);
sigma.setVal(widthExp->Eval(mFixed));
sigma.setConstant(kTRUE);
---> HERE is the Model and the ProfileLikelihoodCalculator
}
I loop on several mass points, calculate the gaussian width using the above formula and fixing the peak of the gaussian and its width, everything works well and I don’t see any problem.
The following steps was to introduce directly the mass resolution in the gaussian function to study the systematics. I tried first to write directly the PDF like this:
RooGenericPdf signal("signal", "signal","r_norm * exp(-0.5* pow( (dimuomass-mean)/(r_p0width+r_p1width*dimuomass+r_p2width*pow(dimuomass,2)) , 2 ) )",RooArgList(dimuomass,mean,r_norm,r_p0width,r_p1width,r_p2width));
where r_p0width, r_p1width and r_p2width are RooRealVar fixed at the parameters used in the widthExp function. Using this approach I have several mass points where I get something like this:
RooFitResult: minimized FCN value: 8367.27, estimated distance to minimum: 1.87076e-10
covariance matrix quality: Full, accurate covariance matrix
Status : MINIMIZE=0
Floating Parameter FinalValue +/- Error
-------------------- --------------------------
mu1_Muo 8.9794e-02 +/- 6.23e-03
Results ProfileLRHypoTestResult_:
- Null p-value = 0
- Significance = inf
- CL_b: 0
- CL_s+b: 0
- CL_s: Error: Cannot compute CLs because CLb = 0. Returning CLs = -1
Then I tried using RooFormulaVar like this:
RooFormulaVar sigmaVar ("sigmaVar","sigmaVar","-0.747946 + 0.0128591*@0 + 3.13343e-05*@0*@0",RooArgList(dimuomass));
RooGaussian signal("signal","signal",dimuomass,mean,sigmaVar);
but the result is the same.
The question is simple: which is the correct procedure to introduce in the signal PDF the resolution function?
Thanks for helping
Attilio