Further streamlining of ThOr functors using ADL
- Move generic State-Vertex code from TrackVertexUtils to LHCbMath
- add decayProducts customisation point -- which returns a range of decayProducts from a composite, and returns 'itself' for a combination of particles.
- a range in this sense is something which can be random accessed, i.e. has
operator[](size_t i)
for uniform access (which may return a variant to unify the possible distinct types for differenti
), andtemplate <size_t i> get()
for non-uniform access (with a return type that may depend oni
), has asize()
method, and can be used in a range-based loop. - and to avoid the above overhead, it could provide a
transform_reduce
interface which is given a generictransform
which maps the (potentially distinct) types of the children to a common type which is subsequently reduced (by eg. summing, or taking the maximum, or ...)
- a range in this sense is something which can be random accessed, i.e. has
- add subCombination customisation point -- which returns a subset of a
decayProducts()
.
With this MR, there should now be generic support for the CHILD
, SUBCOMB
, MIN
, MAX
and SUM
functors (note: this will of course also depend on the 'bound' functor being able to accept the relevant types, and the 'composite' to have opted into decayProducts
!)
Fixes #286 (closed), Moore#355 (closed)
Also see #223 and #279. Must be applied in conjunction with LHCb!3394 (merged).
Edited by Gerhard Raven