Dear All,
I am doing an angular analysis using RooFit and I need to make several convolutions in my code, with different kinds of variables (cyclic and not-cyclic) and functions. As I have some doubts of how to use the convolutions in a proper way, I wanted to find advice from you.
First, I need to convolute a function representing the proper time t (exp(-t/tau)) with a resolution model (Gaussian). In an example I got, the gaussian is defined as a RooGaussModel and the .convolution method is used to obtain the convolution :
t = RooRealVar(“t”, “time”, -0.15, 10. )
mean = RooRealVar(“mean”, “mean(t resol)”, 0., -0.05, 0.05)
sigma = RooRealVar(“sigma”, “sigma(t resol)”, 0.039, 0.01, 0.1 )
tres = RooGaussModel(“tres”,“prop time resolution”, t, mean, sigma)
and then (in an .src file written in C++) :
RooFormulaVar decay = new RooFormulaVar(decay,
“exp(-@0/@1)”,
RooArgList(t,tau));
RooAbsReal Conv = tres.convolution(decay,&t);
With this method, I am not sure how the values of the proper time t close to zero are treated. Because of the convolution, there will be some values becoming negative and I don’t know if I should consider this as relevant given the sigma of the gaussian (how to know?)? [ I see that t is defined from -0.15 and I was also wondering if it is how the problem of the negative convoluted values is tackled ? At the same time, I would avoid negative times in my fit, which are not physical…] Or, should I care about these values and do something else to re-include them in the physical range ?
*******************************************************************************************************"
Then, I need to convolute my total pdf (called “mypdf” below) containing angular functions (phi, cos(theta), cos(psi) ) with their resolution functions (Gaussians). I wanted to use the RooFFTConvPdf method, for example in the case of phi :
phi = RooRealVar(“phi”, “#phi”, -pi , pi )
mean_phi = RooRealVar(“mean_phi”,“mean_phi”,0)
sigma_phi = RooRealVar(“sigma_phi”,“sigma_phi”,0.027)
resol_phi = RooGaussian(“resol_phi”,“phi resolution”,phi,mean_phi,sigma_phi)
mypdfconv= RooFFTConvPdf(“mypdfconv”,“mypdfconv”,phi,mypdf,resol_phi)
I have the same question as previously concerning the values close to +/- pi, which can go outside of the interval when being convoluted. However, I think the RooFFTConvPdf method takes care of such problems with cyclic variables (as in the case of phi above), please correct me if I am wrong. However, I need to convolute also on cos(theta) and cos(psi), defined in the range [-1,1] :
ctheta = RooRealVar(“ctheta”,“cos(#theta)”, -1.0, 1.0)
cpsi = RooRealVar(“cpsi”, “cos(#psi)”, -1.0, 1.0)
How is the problem treated with RooFFTConvPdf in this case (as they are non cyclic)? Is the problem also solved somehow ? Or should I use some other methods for it?
Another question I wanted to address is that, for example in the phi case mentioned above, the interval is very big (-pi pi) compared to the sigma of the Gaussian (0.027) I’m using. In principle, I do not define bins when convoluting and apparently, everything is fine in the sense that I don’t receive any error message when convoluting and creating my final pdf. I was however wondering if such a convolution was correctly done or if I should for some physical reason restrict my interval for the convolution ?
Thank you very much in advance for your help,
Best Greetings,
Géraldine