RooFFTConvPdf: question

Hi all,
I have a question about RooFFTConvPdf (in ROOT 5.23). I read in the manual that even though RooFFTConvPdf only supports convolution in one observable, it can convolve multidimensional pdfs. This would solve my case, so I did the following:

// decay rate function (signal)

RooDecayRateFullModel decay(“RooDecayRateFullModel”," full decay rate model", *dectime,*angle_1,*angle_2,*angle_3,*par_0,*par_1,*par_2);

// resolution function: gaussian

m = new RooRealVar(“m”,"",0.);
s = new RooRealVar(“s”,"",0.1);

RooGaussian resolution(“resolution”,“resolution”,*dectime,*m,*s);


// convolution

RooFFTConvPdf modelTest(“modelTest”," theory (x) resolution",*dectime,decay,resolution);

// generation

RooDataSet* data_sig = modelTest.generate(RooArgSet(*dectime),1000);

The output is 1000 values of the decay time taking in account the convolution with the resolution function.
Looking at the manual it is stated that one can do


So I tried to do this


but it crashes!
From the result it seems to me that the convolution does this


Now, what I was wondering is:
Is it possible to generate all the variables at the same time and not only the variable I convolve? Does anyone know anything about it? Am I allowed to do that or is there a different way to generate all the variables at the same time?

Thanks a lot in advance


Did you also provide the PDFs for *angle_1,*angle_2,*angle_3? And for the decay model, it is more straightforward to use RooDecay/RooBDecay directly.

If I understood, what you want to do is somehow like the combined mass lifetime fitting (if the angles don’t depend on the lifetime), you could have a look at the codes on this page:

But my problem is still there (and the acceptance function problem). Maybe Wouter would be so kind to have a look. :stuck_out_tongue: Thanks a lot.

The PDF decay depends on 4 variables (dectime + 3 angles) and I created a class because it fits better my needs. It was a precise choice :slight_smile:
Thanks hejb I’ll look at your link tomorrow morning to learn more about what you did.