#include "TROOT.h" #ifndef __CINT__ #include "RooGlobalFunc.h" #endif #include "TGraph.h" #include "TStyle.h" #include "TMath.h" #include "RooAbsPdf.h" #include "RooGaussian.h" #include "RooFFTConvPdf.h" #include "RooNumConvPdf.h" #include "RooFormulaVar.h" #include "RooPlot.h" using namespace RooFit ; void ciTest() { Double_t E_res = 0.075; RooRealVar Enu("Enu","Enu",1.9,0.0,10.0); //Spectrum PDF RooGenericPdf spect("spect","spect","exp((-@0/1.54)-pow(@0/6.05,2)-pow(@0/7.73,10))",RooArgList(Enu)); //Gaussian function RooRealVar res_mean("res_mean","res_mean",0.0); RooFormulaVar res_sigma("res_sigma","res_sigma",Form("%f*pow(abs(@0)+0.0001*(@0==0),-0.5)",E_res),RooArgList(Enu)); RooGaussian res_gaus("res_gaus","Gaussian resolution DRF",Enu,res_mean,res_sigma); //Convolve spectrum with a gaussian Enu.setBins(10000,"cache"); //RooNumConvPdf conv("conv","conv",Enu,spect,res_gaus);//works RooFFTConvPdf conv("conv","conv",Enu,spect,res_gaus);//doesn't work //Create Integral on a single interval for now Enu.setRange("test_bin", RooRealConstant::value(3.0), RooRealConstant::value(4.0)); RooAbsReal *bin = conv.createIntegral(Enu,Range("test_bin")); cout << "Done!" << endl; }