Skip to content

Turn logic bug in SiSpacePointsSeedMaker_xk into a feature

This MR addresses a logic bug present in the SiSpacePointsSeedMaker_xk since release 21. The newOneSeedWithCurvaturesComparison method of this tool uses the seed transverse impact parameter as a quality estimator. When storing the impact parameter for use in this way, it is however modified by a penalty score reflecting whether the track is kinked in the r-z plane.

The bug was that the d0 cut relevant to unconfirmed strip seeds was being applied within newOneSeedWithCurvaturesComparison assuming that the raw d0, rather than the modified value including the penalty, was being stored, resulting in a tighter effective cut for seeds with a large penalty.

Incidentally, this "bug" results in significant improvement in seed purity and track finding CPU compared to the intended cut value. Hence, we promote this bug to a feature by rearranging the code to explicitly allow a modification of the unconfirmed seed d0 cut based on a linear function of the penalty term. The default settings of this reproduce the behaviour we had with the bug, but the parameters can be tuned to further improve performance - this is however intended for a separate MR.

This one should leave tracking performance and CPU invariant, but clarify what is being done and offer new options.

Adding @gavrilen as expert, @npetters & @sroe as the usual suspects, and @jsandesa who helped discover the bug in the first place. Also adding @rlangenb who contributed to understanding what was happening.

Merge request reports