Skip to content

Fixed precision issues in computations of the Kalman filter

Sebastien Ponce requested to merge sponce_fixedPrecisionInKalmanFit into master

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.

Edited by Marco Cattaneo

Merge request reports