Hello,
I have implemented a NLL function in my code that works as expected (I have done some validation and compared it to previous techniques and they match…mostly). If I take 10,000 data sets and form a NLL function for each, minimizing them, extracting the minimum and asymmetric errors in the process, about ~100-200 of the datasets return asymmetric errors that are equal to zero, for no good reason that I can tell. For example, if you turn your attention to the attached plot, you will see that the minimum is found at approximately -3.4 ms and the errors would be located at l(t_0) + 1 which are both defined and real as seen in the plot. However, as you can see from the output, there is the following error:
POSITIVE MINOS ERROR NOT CALCULATED FOR PARAMETER 1
MINUIT WARNING IN MNCROS
============== Cannot find slope of the right sign
NEGATIVE MINOS ERROR NOT CALCULATED FOR PARAMETER 1
FCN=-49470.5 FROM MINOS STATUS=FAILURE 26 CALLS 109 TOTAL
EDM=2.22509e-07 STRATEGY= 1 ERROR MATRIX UNCERTAINTY 100.0 per cent
EXT PARAMETER PARABOLIC MINOS ERRORS
NO. NAME VALUE ERROR NEGATIVE POSITIVE
1 t0 -3.41464e-03 7.20349e-06
I am having a difficult time understanding why this occurs a couple percent of the time. All the ‘failed’ examples I have looked at are very much defined at the points where the errors are located, but minos tells me they are zero. In the code I make sure to setAsymErrors to true before hand and run minos, but to no avail.
I have attached the three files that this code uses if that helps narrow down the issue at all. It is worth noting that to run this would require two input files that are fairly large, so if you do need them to help me debug this then I can try to reduce their size before I upload them.
Any help would be greatly appreciated.
Cheers,
Remington
RooSNLikelihood.hh (2.5 KB)
RooSNLikelihood.cc (8.5 KB)
playground.cc (4.5 KB)