Skip to content

VELO refactoring and improvements

This MR provides the following VELO improvements to the sequence:

  • Remove the limitation in number of hits per module in the VELO.
  • Make behaviour of VELO hit sorting to be reproducible.

It was found that the VELO hit sorting in Allen was not reproducible when two (or more) hits in the same pair of modules had the same phi. The issue was that since VELO decoding is parallel, the starting order of hits was not previsible. This has been fixed in two manners:

  • Phi is now calculated at masked_clustering, which increases the accuracy of phi since at that stage the hit X and Y are still not in half precision.
  • When two hits have the same phi, the LHCb ID is used to determine a reproducible sorting. The VELO contract that verified ordering has been updated.

This MR also provides the following refactoring:

  • Both algorithms involved in VELO decoding (estimate input size and masked clustering) have now a single entrypoint, templated with the mep_layout.
  • Velo phi calculation in int16_t has been simplified.
  • search_by_triplet/include/TrackForwarding.cuh's contents are now distributed among SearchByTriplet.cuh and SearchByTriplet.cu.
  • References have been updated where necessary.
  • The block dimension of Sort by Phi has been adjusted, as the working point is now different.
  • A expected slowdown of 1-2% is observed across GPU architectures.

Closes #208 (closed)

Edited by Daniel Campora Perez

Merge request reports