My goal is to construct a function to fit the number of counts in a particular experimental peak.

This function is written in terms of a “signal” component and a “background” component, which has the form of a Breit Wigner tail. (I build the resulting “total” function using RooAddPdf).

I then want to convolute this function (using RooFFTConvPdf) with a Gaussian representing my detector resolution to obtain a “fit” function, which I use to fit the peak.

This fitting is successful if I use in-built functions (RooGaussian and RooBrietWigner) for my “total” function but if I try to use a custom function that I build using RooGenericPdf:

e.g.

RooRealVar mean1(“mean1”,“mean1”,5050) ;

RooRealVar width1(“width1”,“width1”,300.0) ;

RooRealVar wg1(“wg”,“wg”, 10) ;

RooGenericPdf BW1(“BW1”,“BW1”,“wg1*(width1/((x-5050)*(x-5050)+((width1/2)*(width1 /2)))”,RooArgSet(x,mean1,width1,wg1));

then I get the following error message:

ERROR:Eval – RooFormula::eval(BW1): Formula doesn’t compile: wg1*(width1/((x-5050)*(x-5050)+((width1/2)*(width1/2)))

Does anyone know what the problem might be? for instance, does RooFFTConvPdf not support the use of generic pdf?

The reason that I need to build my own BrietWigner function in this case is so that I can correctly simulate the contribution its tail makes to my fit - if I were to use the in-built BrietWigner shape I don’t think I can define the height of this function (effectively resonance strength), which is a fixed parameter for me.

I would greatly appreciate it if anyone could shed some light on this problem.

Many Thanks,

Andrew