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
PrUpstreamFromVelo
algorithm for feedingSciFiTrackForwarding
with 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::Zip
objects - Generalise the functor predicate overload that already covered
LHCb::Pr::{Velo,Fitted::Forward}::Tracks
to 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 intoSelKernel
and out of the functor code - Instantiate
CombineTracks
for track+relations zip input - Instantiate
PrTracks
for 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
MakePVRelations
algorithm that puts track->vertex relations on the TES - Add
MakeZip
algorithm that putsLHCb::Pr::make_zip
output on the TES - Replace old
MakeIterableTracks
algorithm withUnwrap
algorithm, 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