More ADL support for ThOr
- add support for
decayProductsandsubCombinationADL customization points to Particle v1 (by moving ParticleCombination from Rec to LHCb, and simplifying it) - Move the generic, ip-related part of TrackVertexUtils from Rec to LHCb (to allow future simplification/generalization of computing IP-related quantities)
- rename the vaguely named
hasVertexproperty to the more descriptivecanBeExtrapolatedDownstreamwhich distinguishes objects which can be extrapolated downstream, and which in general represent 'things' which are parameterized by a state as a function of z, versus objects which (also) contain an end vertex, and which should (under regular circumstances) thus not be extrapolated beyond their 'end', and which are as a result typically parameterized as a vertex, and their momentum at that vertex (note: they may of course still be extrapolated 'upstream' of their end vertex, but in that case one starts with a parameterization using a vertex and momentum). In addition,canBeExtrapolatedDownstreamis not abool, but a tag type which can still be used as if it were abool, but which allows eg. for tag dispatching, and it can have more values than justbool(eg. aParticlev1 might represent a track, or a composite, so one cannot determine at compile time whether it can be extrapolated downstream -- hence it returns a 'maybe', which, if not supported by the caller, turns into 'no'. But code which is happy to check at runtime can write anif, and then try to access any underlying track which is downstream extrapolatable.
Must be applied in conjunction with Rec!2709 (merged)
Edited by Gerhard Raven