How to do 2D convolution based on roofit

Hi all,

In the old topics, I didn’t find the dicussion on the 2D convolution in building up a PDF, which can be used to do the data fitting. I mean the convolution on two variables in the form like:
F(x,y,p1,…pn,q1,…,qn)=f(x,y,p1,…,pn)*g(x,y,q1,…,qn),
where p1,…,pn,q1,…,qn are the interested parameters, and x,y are observables.

Is there any direct way to construct this 2D convolution? Thanks for the attention.

Lu

Hi Xiaorui (Wouter and All),

I too am very interested in being able to perform such a convolution. I have been attempting to modify the 1D only RooFFTConvPdf to a 2D version, i.e. RooFFTConv2dPdf but it is slow going. Is there a particular computational / technical reason that such a class has not been created? I have implemented and debugged the underlying algorithms (see attached) but folding these methods into RooFit-land is not completely straight forward, at least for me.
Any and all hints and actual-work on this task would be greatly appreciated by the community at large and a nice addition to the excellent RooFit package.
TConvolution.C (21.6 KB)
TConvolution.h (2.79 KB)

I have made some progress in implementing a 2-D version of RooFFTConvPdf. My current problem is that PdfCacheElem is not automatically allocating a 2-D histogram. Does anyone know if this is possible? Is PdfCacheElem inherently 1-D? Does anyone have an example of any 2-D implementation?

I’m attaching my latest attempt. ANY pointers or suggestions would be of great help not only to me, but the community at large!
RooFFTConv2dPdf.cxx (36.6 KB)
RooFFTConv2dPdf.h (5.96 KB)