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 amongSearchByTriplet.cuh
andSearchByTriplet.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 Hugo Campora Perez