We have investigated the following existing approaches for SoA data structures at Cern.
Description | Link | Advantages | Disadvantages |
Jolly's code | reflmempp | nice interface, easy to read and maintain, flexible | reflections are still experimental, no member functions yet |
Attila's SoA code | vecmem_emd, silicon_cell | used for ATLAS | Attila wants to replace it; offers not quite the same features we need |
O2 analysis SoA code | O2, documentation | used for O2 analysis | depends on Apache Arrow; offers many features (e.g. table operations) we don't need |
Stephen Swatman's SoA code | array_wrapper, godbolt | interface is very nice and similar to Jolly's work | pointers and heap allocation, a lot of boilerplate code, no member functions yet |
Summary