Will it not be possible to write the analytical convolution in that case ? It will be easier. I think multi-dim FFT might work, but will require a large number of bins (lots of memory)
I’m afraid no. The analytical formula is known for 1-dimensional case, but when I tried to convolve the exponential with the gaussian with different sigma_x, sigma_y and sigma_z, it looks like no simple formula exists.
Do you mean that the phrase in the documentation is obsolete, and the convolution is possible?
Hi,
The RooFFTConv class of ROoFIt will not work for multi-dimensions, many things needs to be changed.
I was referring to use directly the ROOT FFT classes, since also the TF1COnvolution class it is only for one dimension.
You mentioned you failed using the ROOT classes directly, what was the problem ? DO you have already an example code for this ?
it’s a pity this can’t be done in RooFit. As I wrote, I tried ROOT FFT classes. The problem is I don’t know how to use them. I don’t understand where I shall provide function values (for the inverse transformation).
I created a separate topic for an example of 3d FFT.
I think I shall close this one and will be very thankful if you could answer there.
One more thing to add: when implementing FFT, I thought about recalculations for different parameters.
It seems that I should derive my convolution class from RooAbsCachedPdf (as RooFFTConvPdf does), and implement the corresponding methods to cache the Fourier transform.
UPD: I spent some time going this way. However, it was very uneasy to understand how RooFit updates parameters during the minimization. I don’t want to copy and paste a lot of not-so-clear code. Probably I will ask a separate question (if it was not asked), but for now I use 1-dimensional convolutions for each coordinate.