# ThOr lifetime functor returns incorrect values

The ThOr lifetime functor returns incorrect lifetime values.

Comparing the implementation with the original (from `DirectionFitBase::iterate`

), there are several differences:

- The original transports the particle to its decay vertex before the fit.
- The original updates the input particle's momentum, the input particle's decay vertex position, and the input PV's position after each iteration.
- The original contains a matrix inversion and different normalisation factor.
- The new implementation effectively contains two separate versions: one for legacy (
`LHCb::Particle`

) inputs, and one for SOA particle inputs.

I've been able to modify the new (ThOr) implementation to bring the values much closer to those from the original implementation by addressing point 3. 1 and 2 are more delicate:

- We don't have a ThOr functor that uses the transport service, so we need to retrieve it and pass it down to the distance calculator.
- Hacking value modification into the
`LHCb::Particle`

implementation is one thing, but doing something similar for the parallel SOA implementation is trickier.

I hope that the legacy and SOA implementations can be merged with judicious use of helpers, to be seen.