Skip to content
Snippets Groups Projects

KalmanVertexUpdator performance tuning for use in AMVF

This MR significantly speeds up the KalmanVertexUpdator's update method by replacing a temporarily created and subsequently destroyed xAOD::Vertex object by a slim struct. This is also done in the IVertexUpdator and propagated to all clients. This, together with local caching of a matrix inversion result, yields a factor of up to 4 speed improvement for the Adaptive multi vertex fitter (see https://its.cern.ch/jira/browse/ATLIDTRKCP-245).

In addition to this performance tuning, some clean-up to the code is performed (removal of commented lines, attempt to clean up indentation to a consistent scheme, uniform use of messaging macros, use of std algorithms where possible, fix of potential memory leak).

The changes were tested to not change the reco output (except for CPU/timings) compared to running the AMVF in an unchanged master.

Adding @sroe and @npetters who are also working on improving the AMVF performance.

Edited by Maximilian Emanuel Goblirsch-Kolb

Merge request reports

Loading
Loading

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
  • added 2 commits

    • e783b5ad - protect positionUpdate from invalid input
    • 1f431c0f - add some protection to sign argument, add enum for sign in private methods

    Compare with previous version

  • resolved all threads

  • I just noticed that the KalmanVertexTrackUpdator calls the (slow) positionUpdate method via the IVertexUpdator interface, resulting in another performance hit on the AMVF.

    To solve this, we would need to move our struct out of this class into the interface and make the positionUpdateFast method public - or alternatively change positionUpdate itself and adapt all callers?

    Any opinions? @sroe / @npetters in particular?

  • added 188 commits

    • 1f431c0f...cd6feeb6 - 186 commits from branch atlas:master
    • 62c70dda - Merge remote-tracking branch 'upstream/master' into KalmanVertexUpdatorTuning_cleanedUp
    • 56f1a4a2 - Optimize IVertexUpdator interface and update clients to avoid temporary...

    Compare with previous version

  • Now updated the IVertexUpdator to avoid the temporary xAOD::Vertex return object everywhere.

  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Please register or sign in to reply
    Loading