split track containers and persistency (versioning)
Introduces split-per-track-type persistency. Track, PID objects and ProtoParticles are all in split containers. Main reason to have more control over persistency.
Also fixes upstream proto/track persistency.
Tested with Hlt/Hlt2Conf/options/hlt2_2or3bodytopo_realtime.py
and subsequent sprucing unpack step.
One of the things it does it cleans up and removes the use of merged containers that copy tracks/muonpid/richpid objects, but uses SharedObjectsContainer
such that pointers to the individual per-track-type objects are used for merged containers.
Currently the tracks are copied to their persisted location, but this should be SharedObjectsContainers
which should be persisted, this way the actual underlying object persistency is handled anonymously (needs !2281 (merged) and SharedObjectsContainers
to be persisted)
It aims to fix #392 (closed). @sesen @graven @decianm
Also Ttrack reco should be cleaned up @isanders Maybe fixed in other MRs, see also #588
Also adds fixes for calohypo persistency in charged protoparticles (it started with this, this branch and got out of hand, as it needs these fixes to work).
In addition, uses work of @sbelin from Rec!3509 (closed), !2141 (closed) and DaVinci!897 (closed) (merged into the relevant branches)
Goes with LHCb!4127 (merged), Rec!3423 (merged), Alignment!394 (merged), DaVinci!926 (merged), MooreAnalysis!126 (merged), MooreOnline!268 (merged), lhcb-datapkg/PRConfig!327 (merged)
needs LHCb!4191 (merged) (cherry picked and committed to LHCb!4127 (merged))