Problem with a Breit-Wigner convolved with a Crystal-Ball


I’m using RooFit to fit a resonance described as a Breit-Wigner function, convolved with a resonance described as a Crystal-Ball function. There is also a wide background, described as a Gaussian.
Here is the result of the fit :

As you can see, the signal has an odd behaviour at high mass : at some point in the high mass region, it seems to increase, though such a function should not.
To make sure this was not a graphic artefact or something like that, I made a macro in which I created the same PDf with the parameters of the fit :


#include “TROOT.h”
#include “TCanvas.h”
#include “RooFit.h”
#include “RooRealVar.h”
#include “RooBreitWigner.h”
#include “RooCBShape.h”
#include “RooFFTConvPdf.h”
#include “RooPlot.h”

void convBW_CB() {

RooRealVar x( “x”, “x”, 70., 120. );

// Breit-Wigner
RooRealVar m0( “m0”, “m0”, 90.5 );
RooRealVar width( “width”, “width”, 2.49 );
RooBreitWigner bw( “bw”, “bw”, x, m0, width );

// Crystal-Ball
RooRealVar mean( “mean”, “mean”, 0. );
RooRealVar sigma( “sigma”, “sigma”, 2.6 );
RooRealVar alpha( “alpha”, “alpha”, 1.2 );
RooRealVar n( “n”, “n”, 0.81 );
RooCBShape cb( “cb”, “cb”, x, mean, sigma, alpha, n );

// convolution
RooFFTConvPdf pdf( “pdf”, “pdf”, x, bw, cb );

TCanvas canv( “canv”, “canv”, 800., 600. );
plot = x.frame();
plot -> SetTitle( “Convolution of a Breit-Wigner and a Crystal-Ball” );
plot -> GetXaxis() -> SetTitle( “x” );
plot -> GetYaxis() -> SetTitleOffset( 1.5 );
pdf.plotOn( plot );
plot -> Draw();
canv.SaveAs( “BWxCB.pdf” );


and I still observe this problem, so I guess RooFFTConvPdf does not do the job well.
Any idea where it comes from/how to fix it ?



You would need to increase the range of the convolution, otherwise due to the cyclical properties of the FFT you have this effect.
Try for example to do :

  x.setBins(10000,"cache") ;
  x.setMin("cache",50.5) ;
  x.setMax("cache",130.5) ;

Best Regards