Skip to content

[RF] Fix integrals of RooNormalizedPdf without normalization set - #24040

Open
guitargeek wants to merge 1 commit into
root-project:masterfrom
guitargeek:roofit-normalizedpdf-empty-normset
Open

guitargeek wants to merge 1 commit into
root-project:masterfrom
guitargeek:roofit-normalizedpdf-empty-normset

Conversation

@guitargeek

@guitargeek guitargeek commented Nov 6, 2026 •

Copy link
Copy Markdown
Contributor

Part of the final CPU backend bugfixes before the legacy NLL backend removal

Since 075d432, RooNormalizedPdf forwards the normalization set of an integral to the wrapped pdf. An empty normalization set then yields the integral of the unnormalized pdf, while getVal() is normalized.

RooGenProdProj integrates the factors of a jointly normalized RooProdPdf term with an empty normalization set, so the cpu backend got the likelihood wrong when these integrals reached a RooNormalizedPdf. This happened for the jointly normalized factors themselves, like in the rf305_condcorrprod model of the HS3 test suite, and for normalized pdfs inside composite factors, like a nested RooProdPdf or a RooExtendPdf.

Without a normalization set, the integral is now divided by the normalization integral of the RooNormalizedPdf. A new test compares the cpu backend to the scalar evaluation for the composite factors.

🤖 Done with the help of AI

Since 075d432, RooNormalizedPdf forwards the normalization set of an
integral to the wrapped pdf. An empty normalization set then yields the
integral of the unnormalized pdf, while getVal() is normalized.

RooGenProdProj integrates the factors of a jointly normalized RooProdPdf
term with an empty normalization set, so the cpu backend got the
likelihood wrong when these integrals reached a RooNormalizedPdf. This
happened for the jointly normalized factors themselves, like in the
rf305_condcorrprod model of the HS3 test suite, and for normalized pdfs
inside composite factors, like a nested RooProdPdf or a RooExtendPdf.

Without a normalization set, the integral is now divided by the
normalization integral of the RooNormalizedPdf. A new test compares the
cpu backend to the scalar evaluation for the composite factors.

🤖 Done with the help of AI
@github-actions

github-actions Bot commented Nov 7, 2026

Copy link
Copy Markdown

Test Results

    22 files      22 suites   3d 12h 19m 19s ⏱️
 3 881 tests  3 880 ✅ 0 💤 1 ❌
75 992 runs  75 991 ✅ 0 💤 1 ❌

For more details on these failures, see this check.

Results for commit 12c344f.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant