Fixed precision issues in computations of the Kalman filter
This should fix the problem found by @jonrob in the sanitizer logs at https://lhcb-nightlies.cern.ch/logs/tests/nightly/lhcb-sanitizers/340/x86_64-centos7-gcc8-dbg+ubsan/Brunel/ :
/workspace/build/Rec/Tr/PatPV/src/TrackBeamLineVertexFinderSoA.cpp:492:58:
runtime error: signed integer overflow: -2147483648 * 2 cannot be represented in type 'int'
#0 0x7f0ec6948bdb in
TrackBeamLineVertexFinderSoA::operator()(LHCb::Pr::Velo::Tracks const&, LHCb::Pr::Velo::Tracks const&) const
/workspace/build/Rec/Tr/PatPV/src/TrackBeamLineVertexFinderSoA.cpp:492
Note that the original issue is a problem of precision in floating computation that led to wrong covariance values for the tracks. These values have been then used by the PV finding code but a first quick test does show any major difference on the number of vertices found after the fix.
Another note : the code fixed here is the old version and will go to the bin at some stage. Similar fixes are needed in the new code. @ahennequ and @ldufour are already on it.
Last point : this is also linked with a discovery of @wouter some time ago that the kalman fit was unstable with the current input parameters. Here I did not touch the input, but rather fixed the computations to make them stable with any value of the parameters.