-
- Downloads
[RF] Explicitly set empty normalization set in `RooGenProdProj`
The idea of the RooGenProdProj is that we divide two integral objects each created with this makeIntgral() function to get the normalized integral of a product. Therefore, we don't need to normalize the numerater and denominator integrals themselves. Doing the normalization would be expensive and it would cancel out anyway. However, if we don't specify an explicit normalization integral in createIntegral(), the last-used normalization set might be used to normalize the pdf, resulting in redundant computations. For this reason, the normalization set of the integrated pdfs is fixed to an empty set in this case. Note that in RooFit, a nullptr normalization set and an empty normalization set is not equivalent. The former implies taking the last-used normalization set, and the latter means explicitly no normalization. This fixes the performance regression reported in #11814, and a new unit test is implemented to make sure no new numeric integrals pop up in the reproducer code to that issue. Unfortunately, this change means that there will be again warnings about missing `RooAddPdf` normalization sets, but this is not a regression because these warnings only got fixed in the 6.28 development cycle in 290b4787.
Please register or sign in to comment