Project

General

Profile

Task #14060

Milestone #14047: Data product review ("phase II")

Provide ways to navigate associated data products in a seamless way

Added by Gianluca Petrillo almost 4 years ago. Updated almost 3 years ago.

Status:
Closed
Priority:
Normal
Category:
Architecture
Target version:
Start date:
10/25/2016
Due date:
% Done:

100%

Estimated time:
(Total: 60.00 h)
Spent time:
60.00 h (Total: 180.00 h)
Duration:

Description

As the physics reconstruction proceeds, more and more relations are expressed between different reconstructed components.
The same is true for the relations between reconstructed objects and simulated ones.
This yields a fragmented view of a single physics object. Fragmentation is increased when separating information of the same physics object into different data products (see issue #14059).
This fragmentation needs to be smoothed by an interface that "talks physics language".

This task is made of two parts:

  1. design of a general approach to the problem and a generic solution
  2. design and implementation of this solution for specific data products

Subtasks

Task #14265: Provide an interface for access of reconstructed cluster informationRejectedGianluca Petrillo

Task #17359: Navigate track data productClosedGianluca Petrillo


Related issues

Related to LArSoft - Task #14059: Provide means to extend data product informationClosed10/04/2016

Precedes LArSoft - Task #14061: Provide an interface to access a complete reconstruction of the eventRejected10/26/2016

Associated revisions

Revision 35b2a3a2
Added by Gianluca Petrillo almost 3 years ago

Merge branch 'feature/gp_TrackProxy' into develop

This concludes the commits for resolution of issue #14059, issue #14060
and issue #17359.

History

#1 Updated by Gianluca Petrillo almost 4 years ago

  • Related to Task #14059: Provide means to extend data product information added

#2 Updated by Gianluca Petrillo almost 4 years ago

  • Precedes Task #14061: Provide an interface to access a complete reconstruction of the event added

#3 Updated by Gianluca Petrillo almost 4 years ago

  • Status changed from New to Assigned

#4 Updated by Katherine Lato about 3 years ago

Note, we are narrowing the scope of this item to just focus on phase 2 for the track. So rejecting (without prejudice) a subtask and creating a new subtask.

#5 Updated by Gianluca Petrillo almost 3 years ago

The proposed solution is an object called "proxy".
The proxy backbone is a single data product (e.g. a std::vector<recob::Track>), into which additional data products connected by associations can be merged.
The syntax looks like:

auto clusters = proxy::getCollection<std::vector<recob::Cluster>>(event, clusterTag, proxy::withAssociated<recob::Hit>(clusterHitTag));
(this example expects a art::Assns<recob::Cluster, recob::Hit> data product with label@clusterHitTag@ to exist).
The proxy object clusters can be iterated or accessed by index, and the corresponding element auto cluster = clusters[iTrack]; will make the objects associated to that cluster only, like in cluster.get<recob::Hit>().

Proxies can be customised; for example, the proxy for tracks, identified by recob::Tracks, implicitly merges the associated hits, and they are accessible from a hits() method:

auto tracks = proxy::getCollection<proxy::Tracks>(event, trackTag);
// ...
auto track = tracks[iTrack];
for (auto hit: track.hits()) { /* ... */ }

The code is available in feature/gp_TrackProxy of lardata and will be merged in LArSoft v06_51_00.

#6 Updated by Gianluca Petrillo almost 3 years ago

  • Status changed from Assigned to Resolved

#7 Updated by Gianluca Petrillo almost 3 years ago

  • Target version changed from 2017-1-quarter to v06_51_00

Documentation in Doxygen form will be available in the "proxies" group of the modules section.

#8 Updated by Gianluca Petrillo almost 3 years ago

  • Status changed from Resolved to Closed


Also available in: Atom PDF