Add zipping of SOA tracks + PV relations demonstrator
Along with LHCb!2095 (merged) and Moore!229 (merged), the main purpose here is to add zippable track->vertex relations and demonstrate using them in selections. The same tools can be used for muon ID etc.
In brief, this adds an SOA-friendly container-of-track-to-vertex-relations type that can be zipped with LHCb::Pr::*::Tracks containers, and some tests of the machinery. Most of the other changes are adding simple algorithms that are needed to put together a working configuration and making sure Zipping::ZipFamilyNumber and zipIdentifier() are used consistently everywhere.
Other tangential changes (could be put in a different MR if people have Opinions):
- Implement @graven's suggestions in #80 (closed)
- Add
PrUpstreamFromVeloalgorithm for feedingSciFiTrackForwardingwith velo tracks - Make logical and/or in functor expressions short-circuit when cuts are vectorised
Full list of remaining changes:
- Teach functor predicates how to filter
LHCb::Pr::Zipobjects - Generalise the functor predicate overload that already covered
LHCb::Pr::{Velo,Fitted::Forward}::Tracksto one that filters anything accepted byLHCb::Pr::make_zip() - Move some helper functions (
all( bool ),any( bool ),none( bool ), ...) that are needed when writing generic code intoSelKerneland out of the functor code - Instantiate
CombineTracksfor track+relations zip input - Instantiate
PrTracksfor track+relations zip input -- in addition to a non-owning zip output of the same type as its input, it also puts the owning container behind this view on the TES - Add
MakePVRelationsalgorithm that puts track->vertex relations on the TES - Add
MakeZipalgorithm that putsLHCb::Pr::make_zipoutput on the TES - Replace old
MakeIterableTracksalgorithm withUnwrapalgorithm, which puts 'unwrapped' iterable tracks on the TES. This means that iterating yields a scalar proxy returning plain C++ data types (notSIMDWrapper::scalar::...) and Gaudi vector types (notVec3<T>) - Add convenience typedefs like
LHCb::Pr::Fitted::Forward::TracksWithPVs
Edited by Marco Cattaneo