# [RooFit] A easy way to handle Mellin & Fourier Convoluti

Hello,

I just want to use the semi-leptonic channel to measure the lifetime. Unlike the fully reconstruct channel , we need the so-called K factor to correct for the missing energy caused by neutrino. So the PDF would be something like ExpGaussH(K), in which the convolution between Exp and Gauss is the so-called Fourier convolution. There is a function named RooGExpModel for it. And I think we could use RooKeysPdf to parametrize the K distribution. But I don’t know whether there is a easy way to handle the convolution between H(K) and Exp*Gauss. Could you please give me some hints?

You could find the formula of ExpGaussH(K) on Page 22 and 29 in a CDF note:
http://home.fnal.gov/~stdenis/ana/blife/cdf7458_Blife_8GeVlepton_v5.ps

Thank you very much.

Cheers, Jibo

Hi Jibo,

The (exp (x) Gauss) convolution is calculated analytically by class RooGExpModel.
This class is a RooResolutionModel implementation, which facilitates analytical convolution of itself with other p.d.f.s, but not the KEYS p.d.f. You can however also use it
as a standalone RooAbsPdf and feed it as input to RooFFTConvPdf to perform the subsequent convolution:

RooGExpModel gexp(“gexp,…”) ;
RooKeysPdf keys(“keys”,…) ;

RooFFTConvPdf gexpk(“gexpk”,“gexp”,gexp,keys) ;

Details on how to use RooFFTConvPdf are given in tutorial macros \$ROOTSYS/tutorials/roofit/rf208_convolution.C.

Wouter

Hi, Wouter,

[quote=“Wouter Verkerke”]
The (exp (x) Gauss) convolution is calculated analytically by class RooGExpModel.
This class is a RooResolutionModel implementation, which facilitates analytical convolution of itself with other p.d.f.s, but not the KEYS p.d.f. You can however also use it
as a standalone RooAbsPdf and feed it as input to RooFFTConvPdf to perform the subsequent convolution:

RooGExpModel gexp(“gexp,…”) ;
RooKeysPdf keys(“keys”,…) ;

RooFFTConvPdf gexpk(“gexpk”,“gexp”,gexp,keys) ;

Details on how to use RooFFTConvPdf are given in tutorial macros \$ROOTSYS/tutorials/roofit/rf208_convolution.C. [/quote]

I got it. But there is another question. Does RooFFTConvPdf need something else other than RooFit. You know, I tried to install the latest ROOT in Ubuntu 8.10:
root.cern.ch/phpBB2/viewtopic.ph … highlight=

I have included RooFit in the configuration. But just now I tried to run the tutorial macros. It is said:

[quote]RooFit v2.91 – Developed by Wouter Verkerke and David Kirkby

Error in TUnixSystem::DynamicPathName: FFTW[.so | .sl | .dl | .a | .dll] does not exist in .:/data/sw/root/lib::/data/sw/root/lib:/data/sw/root/lib:/data/sw/root/cint/cint/stl
Error in TUnixSystem::DynamicPathName: FFTW[.so | .sl | .dl | .a | .dll] does not exist in .:/data/sw/root/lib::/data/sw/root/lib:/data/sw/root/lib:/data/sw/root/cint/cint/stl
Error in TUnixSystem::DynamicPathName: FFTW[.so | .sl | .dl | .a | .dll] does not exist in .:/data/sw/root/lib::/data/sw/root/lib:/data/sw/root/lib:/data/sw/root/cint/cint/stl

*** Break *** segmentation violation
Attaching to program: /proc/25426/exe, process 25426
0x00007f36119f4f15 in waitpid () from /lib/libc.so.6
error detected on stdin
The program is running. Quit anyway (and detach it)? (y or n) [answered Y; input not from terminal]
Detaching from program: /proc/25426/exe, process 25426
Root > Function rf208_convolution() busy flag cleared[/quote]

What should I do?

BTW: there is a typo in the new document of RooFit (Page 40).

should be

Thanks a lot.

Cheers, Jibo

Hi,

You need to have a ROOT release compiled with FFTW3 as that is used to do the actual
FFT calculations. The instruction to do that yourself are here

root.cern.ch/root/html/RooFFTConvPdf.html

Wouter

Thank you. But could you please do something so that RooFit could be complied by default? You know, I am a little confused by what it says on:
http://root.cern.ch/root/Install.html

But the fact is that if we do not do

RooFit will not be enabled. I think that’s the reason why RooFit is not included in the ROOT of Ubuntu 8.10.