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.