Tuning to AMVF + Gaussian seed finder for 21.9
This MR ports the developments from !30672 (merged) and !31628 (merged), discussed in ATLIDTRKCP-245, to release 21.9 to improve the performance of the Adaptive Multi Vertex Fitter in combination with the Gaussian Seed finder.
The changes comprise three areas:
- Cleanup of
KalmanVertexUpdator
and related interfaces. As described in more detail in !30672 (merged), here we avoid having an expensive xAOD::Vertex return type by a slim struct containing a vector and two matrices. We also cache a matrix inversion result to save further time and remove a few commented lines. - Fix of a bug in the
TrackDensitySeedFinder
- as described in !31628 (merged), the (fragile) logic to detect when the seed finder is out of tracks fails when running with a beamspot constraint (as the seed z coordinate is then shifted away from the0
value indicating "I am out of tracks"). This provides a dramatic speed-up when running with a realistic beam spot width, as the AMVF now aborts when intended. - Tune the
GaussianTrackDensity
class'strackDensity
method - we remove a sorting / preselection logic which, due to a high overhead for copies, was actually significantly slower than a loop over all tracks.
Together, these changes bring the execution time of the InDetPriVxFinder
alg in mu=200 ttbar MC down from 103% of the track finding time to 15%. This is still not ideal and a factor 2 more than in the run-3 data18 test, but at least a first step in the right direction.
The resulting vertex positions and track multiplicities are unaffected by the changes in the 25-event test that was run.
Adding @tstreble, @ncalace, @npetters, @nstyles + @vcairo / @glee / @kostyuk / @dcasper from the vertexing side.