Dear experts,

While i was trying to add two pdfs I stumbled upon an issue that I cannot understand. The issue is:

when I define a workspace in RooFit add two pdfs using “SUM” inside the workspace, I get a result that is different wrt accessing the pdfs outside of workspace and add them with RooAddPdf. I checked that is not issue of the SUM function itself but rather of the workspace (same behavior is observed if i put “RooAddPdf” or “AddPdf” in workspace). Naively i would expect that regardless if I use the workspace to add pdfs or not the result must be the same. Is there anything obvious that I am missing (ie change of normalization or something)? Also I just want to note that the wrong result is the one when we use the workspace. I tried to attach both a script to reproduce the issue and the plot, but i cannot. So I am attaching the cp here [*]. Thanks in advance.

Best regards,

George

[*]

import ROOT

from ROOT import RooFit

ROOT.gROOT.SetBatch(True);

ROOT.gROOT.SetStyle(“Plain”);

msgservice = ROOT.RooMsgService.instance()

msgservice.setGlobalKillBelow(RooFit.FATAL)

#define functions and workspace

wspace = ROOT.RooWorkspace(“test_ws”)

wspace.factory(‘x[4.7,5.7]’)

wspace.factory(‘cb_mean_ksk[5.0718, 5.0, 5.15]’)

wspace.factory(‘cb_width_ksk[0.0466, 0.001, 5.0]’)

wspace.factory(‘cb_alpha_ksk[0.26, 0.001, 50.0]’)

wspace.factory(‘cb_n1_ksk[3.22, 0.001, 50.]’)

wspace.factory(“CBShape::cb_ksk(x,cb_mean_ksk,cb_width_ksk,cb_alpha_ksk,cb_n1_ksk)”)

wspace.factory(‘exp_alpha_ksp[-5.44, -20.0, -1.e-2]’)

wspace.factory(‘Exponential::exp_ksp(x,exp_alpha_ksp)’)

wspace.factory(‘frac_prtl[0.448, 0.0, 1]’)

#sum them inside ws

wspace.factory(‘SUM::cb_exp_partial(cb_ksk,frac_prtl*exp_ksp)’)

#sum them with rooaddpdf

cb= wspace.pdf(“cb_ksk”)

exp= wspace.pdf(“exp_ksp”)

cb_exp_partial= wspace.pdf(“cb_exp_partial”)

frc=wspace.var(“frac_prtl”)

yld=ROOT.RooRealVar(“yld”,"",1.0)

add_partial=ROOT.RooAddPdf(“addprtl”,"",ROOT.RooArgList(cb,exp),ROOT.RooArgList(yld,frc))

#plot

x= wspace.var(“x”)

xframe=x.frame()

cb_exp_partial.plotOn(xframe,RooFit.LineColor(6),RooFit.Name(“cb_exp_partial”))

add_partial.plotOn(xframe,RooFit.LineColor(2),RooFit.Name(“addprtl”))

c1=ROOT.TCanvas(“c1”,"",700,700)

xframe.Draw()

legend = ROOT.TLegend(0.65,0.65,0.92,0.85)

legend.AddEntry(xframe.findObject(“addprtl”),“RooAddPdf”,“l”);

legend.AddEntry(xframe.findObject(“cb_exp_partial”),“SUM”,“l”);

legend.Draw(“sames”)

c1.SaveAs(“issue.png”)