Hi! I want to convolute a RooGenericPdf with a gaussian function. But it always failed by using RooFFTConvPdf function. Here is my code. Thanks for your help!
void test(){
RooRealVar *obs_var = new RooRealVar(“obs_var”, “obs_var”,120,110,180) ;
RooRealVar *tau = new RooRealVar(“tau”,“tau”,-0.02,-10,-0.) ;
RooExponential *exp = new RooExponential(“model”,“model”,*obs_var,*tau) ;
RooRealVar *mean = new RooRealVar(“mean”,“mean”,10,0,180) ;
RooRealVar *sigma = new RooRealVar(“sigma”,“sigma”,20,-10, 20) ;
RooGaussian *gaus = new RooGaussian(“gaus”,“gaus”,*obs_var,*mean,*sigma) ;
RooRealVar *step_value = new RooRealVar(“step_value”, “step value”,120.,110.,130.) ;
//RooGenericPdf *step_func = new RooGenericPdf(“step_func”,“step_func”,“(abs(step_value-obs_var)/(step_value-obs_var)+1.0)/2.0”,RooArgSet(*obs_var,*step_value));
RooGenericPdf *step_func = new RooGenericPdf(“step_func”,“step_func”,"((abs( @ 0- @ 1)/(@ 0-@ 1)+1.0)/2.0)*@ 2",RooArgSet(*obs_var,*step_value,*exp));
//RooProdPdf *step_gen = new RooProdPdf(“model”, “model”, RooArgSet(*step_func,*exp));
RooFFTConvPdf *exp_gaus = new RooFFTConvPdf(“exp_gaus”,“exp_gaus”, *obs_var, *gaus, *step_func);
RooPlot *frame = obs_var->frame() ;
exp_gaus->plotOn(frame);
frame->Draw() ;
}