New persistency model for packing
A significant re-write of persistency framework.
Main changes in c++ are:
- New packers take unpacked objects and produce HltPackedDataBuffers (MC packers unchanged, old packers fully removed from configuration)
- New HltPackedBufferWriter takes a list of DataBuffers and writes out the raw banks/event (This replaces HltPackedDataWriter)
- New HltPackedBufferDecoder takes rawbanks/event and produces HltPackedDataBuffers to the requested locations
- New unpackers take HltPackedDataBuffers and produce unpacked objects (MC unpackers unchanged, old unpackers are still used for old dsts.)
- Un/PackParticlesAndVertices algorithms are removed. So objects in TES are not automatically packed/writen/decoded/unpacked.
Main changes in configuration:
- Packers/Unpackers/Decoder/Writer are all functional so all input and output locations needed to be given [They are given as DataObjectRead(Write)Handles. See #180 for explanation.]
- For packing/writing, locations are picked up from reco objects list and requested-line dependencies. For each location, object type in that location is also registered to ANNSvc json file. Only known object types in PyConf/object_types are packed.
- For decoding/unpacking, we don't know the data dependencies at the moment. So we take all registered packed locations in requested stream. They are checked against registered object types to decide which unpacker to use.
- PersistRecoConf is extended to all object types not only reconstruction objects. More than one location can be given for a type. reconstruction_objects list should be modified to benefit from this. Moore#248
To go with Moore!1085 (merged) MooreAnalysis!69 (merged) DaVinci!634 (merged) lhcb-datapkg/PRConfig!213 (merged)
Related issues: #151 (closed) Moore#354 (closed) lhcb-dpa/project#120
Edited by Rosen Matev