Hi,
I have a RooAddPdf object which is made up of three RooGaussian objects, the fractions of gaussian1 and 2 are in the range [0-1]. The value of the third is then 1 - fraction_{gaussian1} - fraction_{gaussian2} in order for normalisation. When I try and fit this pdf to data there are cases where fraction_{gaussian1} + fraction_{gaussian} is greater than 1 such that the corresponding value of fraction_{gaussian3} is negative. This is an undesirable feature for me. My question is whether there is a flag or veto mechanism which enforces that fraction_{gaussian1} + fraction_{gaussian2} is <= 1 such that fraction_{gaussian3} >= 0.
Thanks
example code (using PyROOT)
from ROOT import *
x = RooRealVar('x', 'x', -10, 10)
mean1 = RooRealVar('mean1', 'mean1', 2, 0, 5)
mean2 = RooRealVar('mean2', 'mean2', -2, -5, 0)
mean3 = RooRealVar('mean3', 'mean3', 9, 5, 10)
sigma1 = RooRealVar('sigma1', 'sigma1', 1, 1, 2)
sigma2 = RooRealVar('sigma2', 'sigma2', 3, 3, 5)
sigma3 = RooRealVar('sigma3', 'sigma3', 0.5, 0.5, 1)
gaus1 = RooGaussian('gaus1', 'gaus1', x, mean1, sigma1)
gaus2 = RooGaussian('gaus2', 'gaus2', x, mean2, sigma2)
gaus3 = RooGaussian('gaus3', 'gaus3', x, mean3, sigma3)
fraction1 = RooRealVar('frac1', 'frac1', 0.5, 1)
fraction2 = RooRealVar('frac2', 'frac2', 0.49, 1)
pdf = RooAddPdf('sum', 'sum', RooArgList(gaus1, gaus2, gaus3), RooArgList(fraction1, fraction2))
ds = pdf.generate(RooArgSet(x), 10000)
frame = x.frame()
ds.plotOn(frame)
pdf.fitTo(ds)
pdf.plotOn(frame)
pdf.paramOn(frame)
frame.Draw()