Skip to content

Further streamlining of ThOr functors using ADL

Gerhard Raven requested to merge thor-more-adl into master
  • 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 different i), and template <size_t i> get() for non-uniform access (with a return type that may depend on i), has a size() 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 generic transform 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 ...)
  • 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

Merge request reports