Problem with Extended pdf in root v5.20/00


I have defined a joint pdf of the observables m (mass) and t (time) as a simple product of the two pdfs, one is a RooExtendPdf

RooAddPdf *sig_mass = new RooAddPdf(“pdf_sig_massTOT”,“B mass signal PDF”,RooArgSet(*sig_mass1,*sig_mass2),*fm);
where sig_mass1,sig_mass2 are two RooGaussian

RooExtendPdf *sig_mass_Ext = new RooExtendPdf(“pdf_sig_mass_ext”, “extended B mass signal PDF”,*sig_mass, yield,region);

RooDecay *sig_time = new RooDecay(“pdf_sig_time”,“raw time: lifetime signal”, t, *sig_tau, *res,RooDecay::SingleSided);

if I define:
RooProdPdf *sig_Tot = new RooProdPdf(“pdf_TOT”, “pdf_TOT”, *sig_mass_Ext, *sig_time);

and fit some data with:

I get a long list of the following error message:
[#0] ERROR:Generation – ERROR: Requestion expected number of events from a RooProdPdf that does not contain and extended p.d.f

The minimization seems to work anyways (I get reasonable results)

If I just fit the mass p.d.f.
I get no error.

In the RooProdPdf class documentation I read:
"The product in this construction is properly normalized. If exactly one of the component PDFs supports extended likelihood fits, the product will also be usable in extended mode, returning the number of expected events from the extendable component PDF. The extendable component does not have to appear in any specific place in the list."
So it seems my sig_Tot should work: where did I make the mistake?
Some more details on my p.d.f. are below.


total PDF:
0x1a6b800 RooProdPdf::pdf_TOT (pdf_TOT) [Auto]
0x1912400 RooExtendPdf::pdf_sig_mass_ext (extended B mass signal PDF) [Auto] V
0x1907800 RooAddPdf::pdf_sig_massTOT (B mass signal PDF) [Auto] V
0x18fec00 RooGaussian::pdf_sig_mass_G1 (B mass signal PDF) [Auto] V
0x18f9400 RooRealVar::m (invariant mass) V
0x18e0600 RooRealVar::sig_mass_mB (B mass) V
0x18e0a00 RooRealVar::sig_mass_sB (B mass Resolution) V
0x18e1200 RooRealVar::fm (core Gaussian weight) V
0x1902000 RooGaussian::pdf_sig_mass_G2 (B mass signal PDF) [Auto] V
0x18f9400 RooRealVar::m (invariant mass) V
0x18e0600 RooRealVar::sig_mass_mB (B mass) V
0x18e0e00 RooRealVar::sig_mass_sB2 (B mass Resolution) V
0x182b800 RooRealVar::sig_n (signal yield) V
0x1921e00 RooDecay::pdf_sig_time (raw time: lifetime signal) [Auto] V
0x18f0a00 RooRealVar::t (proper time) V
0x18dea00 RooRealVar::sig_t_tau (signal lifetime) V
0x1930200 RooGaussModel::sig_res_g1_conv_exp(-@0/@1)t_sig_t_tau[pdf_sig_time] (core gaus (scale sigm
a, scale bias) convoluted with basis function exp(-@0/@1)_t_sig_t_tau) [Auto] V
0x18f0a00 RooRealVar::t (proper time) V
0x18de200 RooRealVar::sig_Tres_m (time resolution bias) V
0x18de600 RooRealVar::sig_Tres_s (time resolution ) V
0x4942c80 RooConstVar::1.000000 (1.000000) V
0x18dea00 RooRealVar::sig_t_tau (signal lifetime) V

Hi Stefania,

Thanks for reporting that. I’ve managed to reproduce your problem and I’ve found and fixed the bug in the SVN trunk so that it will be fixed in the upcoming ROOT release. The problem is specific to the first component of a RooProdPdf being extendable, so you can work around this problem without waiting for the next ROOT release by swapping the p.d.f. arguments in your RooProdPdf constructor.