Projection calculated incorrectly

Hi,

I have a PDF which is built up from several more basic PDF’s through RooProdPdf and RooFFTConvPdf. In the end I have a PDF which is a function of two variables, x and y, which can be written as P1(x,y)*P2(y). However, when I project it onto a RooPlot the, normalization of the y projection is correct but the projection on the x axis isn’t.

It looks like the projection is being calculated as:

\int P1(x,y) dy \int P2(y) dy

Instead of:

\int P1(x,y)*P2(y) dy

Does anyone know why this could be? (I have attached the script which builds and plots the PDF, x<->mZStar, y<->ZZMass)

Thanks,
Andrew
fitmZstarSignal.C (5.49 KB)

Just some additional information.

The output for projecting onto the y axis:

[#1] INFO:Eval – RooAbsReal::attachToTree(ZZMass) TTree Float_t branch ZZMass will be converted to double precision
[#1] INFO:Eval – RooAbsReal::attachToTree(mZStar) TTree Float_t branch mZStar will be converted to double precision
[#1] INFO:Eval – RooTreeDataStore::loadValues(data) Ignored 241 out of range events
[#1] INFO:Plotting – RooAbsReal::plotOn(totalPDF) plot on ZZMass integrates over variables (mZStar)
[#1] INFO:Eval – RooRealVar::setRange(ZZMass) new range named ‘refrange_fft_sig_ggH’ created with bounds [140,175]
[#1] INFO:NumericIntegration – RooRealIntegral::init(signalBW_Int[ZZMass]) using numeric integrator RooIntegrator1D to calculate Int(ZZMass)
[#1] INFO:Caching – RooAbsCachedPdf::getCache(sig_ggH) creating new cache 0x5663f90 with pdf signalBW_CONV_signalCB_CACHE_Obs[ZZMass] for nset () with code 0
[#1] INFO:NumericIntegration – RooRealIntegral::init(idealmZshape_Int[mZStar]) using numeric integrator RooIntegrator1D to calculate Int(mZStar)
[#1] INFO:NumericIntegration – RooRealIntegral::init(GENPROJ_[sig_ggH_X_mZshape]_Norm[ZZMass,mZStar]denominator_Int[ZZMass]) using numeric integrator RooIntegrator1D to calculate Int(ZZMass)
[#1] INFO:NumericIntegration – RooRealIntegral::init(GENPROJ
[sig_ggH_X_mZshape]_Int[mZStar]_Norm[ZZMass,mZStar]_denominator_Int[ZZMass]) using numeric integrator RooIntegrator1D to calculate Int(ZZMass)

The output when projecting onto x axis (here one additional integration seems to be done):

[#1] INFO:Eval – RooAbsReal::attachToTree(ZZMass) TTree Float_t branch ZZMass will be converted to double precision
[#1] INFO:Eval – RooAbsReal::attachToTree(mZStar) TTree Float_t branch mZStar will be converted to double precision
[#1] INFO:Eval – RooTreeDataStore::loadValues(data) Ignored 241 out of range events
[#1] INFO:Plotting – RooAbsReal::plotOn(totalPDF) plot on mZStar integrates over variables (ZZMass)
[#1] INFO:Eval – RooRealVar::setRange(ZZMass) new range named ‘refrange_fft_sig_ggH’ created with bounds [140,175]
[#1] INFO:NumericIntegration – RooRealIntegral::init(signalBW_Int[ZZMass]) using numeric integrator RooIntegrator1D to calculate Int(ZZMass)
[#1] INFO:Caching – RooAbsCachedPdf::getCache(sig_ggH) creating new cache 0x5a6a590 with pdf signalBW_CONV_signalCB_CACHE_Obs[ZZMass] for nset () with code 0
[#1] INFO:NumericIntegration – RooRealIntegral::init(idealmZshape_Int[mZStar]) using numeric integrator RooIntegrator1D to calculate Int(mZStar)
[#1] INFO:NumericIntegration – RooRealIntegral::init(GENPROJ_[sig_ggH_X_mZshape]_Norm[ZZMass,mZStar]denominator_Int[ZZMass]) using numeric integrator RooIntegrator1D to calculate Int(ZZMass)
[#1] INFO:NumericIntegration – RooRealIntegral::init(GENPROJ
[sig_ggH_X_mZshape]_Int[ZZMass]_Norm[ZZMass,mZStar]numerator_Int[ZZMass]) using numeric integrator RooIntegrator1D to calculate Int(ZZMass)
[#1] INFO:NumericIntegration – RooRealIntegral::init(GENPROJ
[sig_ggH_X_mZshape]_Int[ZZMass]_Norm[ZZMass,mZStar]_denominator_Int[ZZMass]) using numeric integrator RooIntegrator1D to calculate Int(ZZMass)