Milestone #14047: Data product review ("phase II")
Provide means to extend data product information
Data product design is pulled by two opposite forces:
- completeness, aiming to a data product with all the possible information
- manageability, aiming to small data products that affect lightly resource usage and allow changes to be modular
An approach to reconcile these forces is to have small data products, each carrying part of the information, with an interface able to transparently navigate through them.
The goal of this task is to design such a system for the relevant data products.
This task is made of
- general design of the pattern
- specific implementation for data products.
Each implementation will differ in details, but share the general design ideas)
#3 Updated by Gianluca Petrillo about 4 years ago
- Estimated time set to 60.00 h
- % Done changed from 0 to 10
I started playing with a template interface to expose multiple collections.
The fundamental requirement is that each element in the "main" data product, at a specific position in its collection, is paired to the equivalent extended data element at the same position within its own collection ("parallel collections").
#4 Updated by Gianluca Petrillo over 3 years ago
- % Done changed from 10 to 100
The proposed solution is an object called "proxy", which can navigate data products as per issue #14060.
Beside merging data products connected via art associations, the proxies can also merge collections with the same cardinality:
auto clusters = proxy::getCollection<std::vector<recob::Cluster>>(event, clusterTag, proxy::withParallelData<reco::ClusterInfo>(clusterInfoTag));
with access mode similar to the one described in issue #14060.
This feature is available in LArSoft