A/C side velo tracks split for the PV reconstruction

Bogdan Kutsenko requested to merge bokutsen_split_velo_tracks into master
  • New make_velo_tracks_ACsplit allows to split tracks on A/C Velo sides based on the velo module of the hits
  • The new CUDA algorithms tracks_ACsplit_counters_t and tracks_ACsplit_t - are placed in between the reconstruction of velo tracks and consolidation
  • Both velo_view objects from A and C sides successfully pass the velo tracks validation check
  • Addition of A/C velo split to the main sequence resulted in ~6% throughput decrease https://gitlab.cern.ch/lhcb/Allen/-/jobs/30696653. Therefore separate sequence velo_ACsplit_validation.py was created and efficiency test was added to the full pipeline


  1. Philosophical question. What is the most optimized strategy for the determination of the A/C side? Right now the side is determined by the number of hits corresponding to it. Belonging of the hit to the side is obtained from a Velo module. Tracks with equal number of hits are removed
  2. What is the reason for the dev_tracks array (Velo::TrackHits) and dev_three_hit_tracks_output (Velo::TrackletHits) from make_velo_tracks function to have a size, which is determined by dev_offsets_estimated_input_size? Why there is no additional prefix sum to determine the number of tracks and 3 hit tracks as a first step of make_velo_tracks , before velo_search_by_triplet_t https://gitlab.cern.ch/lhcb/Allen/-/blob/master/configuration/python/AllenConf/velo_reconstruction.py#178
  3. Why in the main Allen sequence - hlt1_pp_default in the reconstruction step - hlt1_reconstruction, after making velo tracks velo_states are created and then make_pvs (in which velo_states are recreated again) https://gitlab.cern.ch/lhcb/Allen/-/blob/master/configuration/python/AllenConf/hlt1_reconstruction.py#L34. Probably more optimized way to do that is to provide velos_states as an input to make_pvs

Performance was presented in https://indico.cern.ch/event/1249024/#5-pv-reconstruction-in-hlt1-wi

Closes #383

Edited by Dorothea Vom Bruch

Merge request reports