LArSoft  v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
LArSoft data proxies

Helper classes for easier access to connected data. More...

Modules

 LArSoft data proxy interfaces
 Interfaces to create instances of LArSoft data proxies.
 
 Reconstructed object data proxy
 Data proxies for LArSoft reconstruction data products.
 

Namespaces

 proxy
 Encloses LArSoft data product proxy objects and utilities.See this doxygen module for an introduction to data proxies in LArSoft.
 

Detailed Description

Helper classes for easier access to connected data.

Proxies are objects that expose multiple connected data products with a single interface, implicitly browsing the interconnections. The connections may be explicit (via some type of data product association, like art::Assns, or element indices) or implicit, following an agreed rule (like in parallel data products).

More complex proxy implementations are provided for some LArSoft data products. New proxies can be created as well.

Introduction to LArSoft data product proxy objects.

What's next

Below, some definitions are laid out that are referenced throughout the documentation and that might be useful.

Definitions

  • data collection proxy (or just proxy): an object that wrap one or more related data, and exposes an interface to navigate that data honoring its relations. The most evident effect is that associated data products are presented as a single object.
  • main data collection: a data collection proxy is... well, a proxy to a data collection; it has an interface like a collection, and the number and order of elements of the proxy is the same as the collection the proxy is based on, which is called the main data collection.
  • auxiliary data: auxiliary data is additional data which is related to the main collection of the proxy; the auxiliary data is exposed as a collection which has the same number of elements as the main one, and where the i-th auxiliary data element is related to the i-th element of the main collection. Different sources qualify to be merged as auxiliary data, including some art associations and other data collections.
  • merging of auxiliary data into a proxy: jargon to express that some auxiliary data is made available through the interface of that data collection proxy.
  • auxiliary data tag: the identified with which some auxiliary data is accessed in the code. It is a C++ type (empty struct work well: e.g., struct MyHits {};).
  • one-to-many sequential association: an association between L and R types where:
    • L objects come from a single data product
    • the sequence of associations is such that if L1 is before L2 in the original data product, all L1-Rx associations of L1 are listed before any of the L2-Rx associations of L2; in other words, the association list follows the original order of the L data product; note that this preclude actual many-to-many associations. This does not require associations to be one-to-one (it allows one L to many R), nor that all L be associated to at least one R.
  • parallel data product: a data product collection of elements extending the information from another data product collection ("main"), where
    • the two data products have the same number of elements
    • there is an implicit one-to-one association between the elements of the two data products, so that an element at position i of the parallel data product pertains to the element at position i of the main data product
  • one-to-(zero-or-one) sequential association: an association between L and R types where:
    • L objects come from a single data product
    • there is at most one R associated to each single L
    • the sequence of associations is such that if L1 is before L2 in the original data product, L1-R1 association is listed before the L2-R2 association; in other words, the association list follows the original order of the L data product. This does require associations to be one-to-one, bit it does not require that all L be associated to at least one R.