# Sparse histogram file Sparse histograms are a list of detector pairs and the value associated with the LOR. They are structured as follows in the file: ``` Detector1 of the event 0 (uint32) Detector2 of the event 0 (uint32) Projection value of the event 0 (float32) Detector1 of the event 1 (uint32) Detector2 of the event 1 (uint32) Projection value of the event 1 (float32) ... ``` The file extension used is `.shis` by convention. The detectors specified in the Sparse histogram correspond to their indices in the scanner's LUT. ## Implementation Sparse histograms are, in memory, stored as a hash map with the detector pair as a key, ensuring O(1) when accessing projection values. Currently, the implementation depends on `std::unordered_map`, which tends to be quite slow and is not thread-safe. This will be addressed in the future.