Detailed output for HypoTestResult

I’m looking to debug a strange hypothesis test result, with CLs=0. For the model, a completely free RooFitResult works fine, converges and has correct status flags (cov. quality, fit status, etc.). However, the HypoTestResults shows something interesting.

CLb() returns something non-zero, but CLsplusb() returns 0. As a consequence, CLs() returns zero as well. The reason is presumably that the signal is too strong, since an UL scan works fine and shows an UL ~ 0.6. For mu_SIG=0.98 (the last point the scan range picks up) the CLs value is 10^-6.

In order to figure out more about what happened, I’d like to use NullDetailedOutput() and AltDetailedOutput() to see more of the fits. I’m using a PLL test statistic, and have set this:


However, I still get 0x0 for both sets of detailed output. Lorenzo’s hypothesis test example also shows no additional lines, so I’m not entirely sure what I’m missing.

To get these numbers I’m using the asymptotic method (not toys), could that be causing this? Second, is there a robust way to help the hypotest for fixed mu_SIG=1 along so that it won’t return CLs=0? Lastly, is there an easy way to set the cutoff CLs value for the HypoTestInverter?


The detailed output refers only for the toys. In case of the asymptotic calculator there is no detailed output produced. If you want to understand better what is happening, you can increase the debug level.
This you can do with AsymptoticCalculator::SetPrintLevel(value).
A value of 3 for example gives the maximum debug and you should get a detailed information on the fit which are performed to compute the profile likelihood ratio test statistic.

Best Regards


Thank you for the explanation Lorenzo. So if I understand you correctly, there is no way to store the fit results used in the ratio?


No it is not possible right now. If you need it, I think it should be possible to add this as it is currently done for the toys.


Hi Lorenzo,

Right now not directly, but this would be a very useful feature to have in future to help debug our exclusion plots and perform extra sanity checks.