Skip to content

Rework muon decoding

Daniel Campora Perez requested to merge dcampora_remove_muon_sorting into master

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 and Muon::ConstHits (in MuonEventModel.cuh) act as a SOA view of the data. Its size is determined after muon_station_ocurrence_prefix_sum to be the exact number of hits required.
  • Ismuon and UTMuonMatching 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 Campora Perez

Merge request reports