Relations / linker for SOACollection objects
We need a way to relate / link objects that are stored in SOACollections, similar to the old linker tables.
I.e. we want to link a track with one or several CellIDs in the Calo. The tracks and the CellIDs are not keyed objects anymore, and they are only addressable with an index (or maybe an ID). Also, a weight for the relation is needed.
This functionality is crucial if we want to transform the Calo sequence to v3::Tracks
. And it would be desirable if they would work in an SIMD way (i.e. relations of several tracks can be filled in parallel).
Ideas, proposals, etc. are welcome. Feel free to ping more people. A first proposal is here: !3254 (closed)
@cmarinbe @mveghel @ahennequ @graven @chasse @jonrob @sstahl @apearce @poluekt @agilman
A list of requirements (partly copying what was already said in the thread below).
-
We want one-to-one relations, one-to-many relations and many-to-one relations.
-
Each relation needs to have the possibility of a weight (but some relations might not need a weight).
-
The tables need to be persistable. This might need some shuffling and bookkeeping, if the location of the containers that are accessed change online and offline (before packing, after unpacking).
-
A simple idea is to store the indices in a container and store the location of the container with it.
-
It might be that one needs to link one object to two different containers. One can think of simply using two relation tables, or have a solution with several relation tables and locations in one object.
-
Should this be connected with the
uniqueID
which was introduced for overlap checking? This ID is global, so the container(s) would need to be stored in any case.