Rework muon decoding
This MR reworks the muon decoding sequence. From an overview perspective, two issues have been solved:
- The algorithms outputs are now never reused as outputs in another algorithm.
- The sorting algorithm after populating tiles has been removed.
More specifically, this required the following:
- Muon decoding sequence is now:
muon_calculate_srq_size_t muon_srq_prefix_sum muon_populate_tile_and_tdc_t muon_add_coords_crossing_maps_t muon_station_ocurrence_prefix_sum muon_populate_hits_t
-
muon_calculate_srq_size_t
calculates the size of each station-region-quarter-layout group of tiles. -
muon_populate_tile_and_tdc_t
populates tiles and TDCs. -
muon_add_coords_crossing_maps_t
adds the hits, either directly decoded or from two crossing tiles. -
muon_populate_hits_t
populates the hits. - The struct
HitsSOA
has been removed, because it allocated a fixed number of hits for all muon events. - Instead,
Muon::Hits
andMuon::ConstHits
(inMuonEventModel.cuh
) act as a SOA view of the data. Its size is determined aftermuon_station_ocurrence_prefix_sum
to be the exact number of hits required. -
Ismuon
andUTMuonMatching
have been adapted to the new muon event model.
The throughput for the entire sequence also improved as a consequence by about 3%.
This MR builds on top of !371 (merged) to allow testing on AMD hardware.
Edited by Daniel Hugo Campora Perez