Main Components of the Vertex Fitter

Complete: 3

Goal of this page

This page contains information about the main components of the vertex fitter.

Perigree Parameters

The often used perigee parameterization has been chosen to describe a charged particle track in a magnetic field. This parameterization is defined with respect to a reference point, and defines the track at its point of closest approach (in the transverse plane) to the reference point.

The five parameters are:

  • epsilon_p: signed transverse distance of the point of closest approach. By convention, the sign is positive if the reference point is at the left of the point of closest approach.
  • z_p: longitudinal distance of the point of closest approach.
  • theta: polar angle of the momentum vector.
  • phi_p: azimuthal angle of the momentum vector at the point of closest approach.
  • rho: signed transverse curvature.

The perigee parameters:


The most frequent use case of a VertexFitter is the computation of a vertex from an STL vector of TransientTracks:

TransientVertex VertexFitter::vertex (const vector< TransientTrack > & tracks) const

Actually the result is a CachingVertex, an object which caches data from intermediate fitting steps:

CachingVertex VertexFitter::vertex (const vector< TransientTrack > & tracks) const;

but since CachingVertex has an automatic conversion operator to TransientVertex this is transparent to the user.

The VertexFitter has also methods for more specific cases:

  • when track weights are known in advance, VertexTracks can be used instead TransientTracks, e.g. through the method
CachingVertex VertexFitter::vertex (const vector< RefCountedVertexTrack > & tracks) const;

  • if an already known point is to be used as the initial linearization point, this position can be given to the fitter. In this case, for the first iteration, the linearization point will not be sought for again.
CachingVertex VertexFitter::vertex (const vector< TransientTrack > &tracks, const GlobalPoint &linPoint) const

  • if an already known point is to be used as a prior estimate of the vertex, it, and its covariance matrix, can be given to the fitter. In this case, for the first iteration, the linearization point will not be sought for again and will be taken to be the prior vertex:

        VertexFitter::vertex (const vector< RefCountedVertexTrack > &tracks, 
        const GlobalPoint &priorPos, const GlobalError &priorError)  const

Several combinations of these input possibilities exist.


The task of a LinearizationPointFinder is, given a set of tracks, to compute in a very short time a coarse approximation of the vertex position, in the vicinity of which the tracks will be linearized/expanded before vertex fitting. The class LinearizationPointFinder is a pure abstract base class. Several concrete implementations exist, differing mainly by their sensitivity to tracks not belonging to the vertex. Vertex fitting and finding algorithms are configured with a LinearizationPointFinder algorithm which is suited to their needs, so that users should not have to worry about a proper choice. In addition, the class DefaultLinearizationPointFinder will provide the user with the finder which is deemed to be the most efficient for a general usage.

A LinearizationPointFinder returns a GlobalPoint from a set of TransientTracks with the method:

  GlobalPoint  getLinearizationPoint (const vector< TransientTracks > &)

The LinearizationPointFinders are implemented in the package RecoVertex/LinearizationPointFinders


The task of a Vertex Updator is to update the estimate of the vertex (position, error matrix, total chi^2 and number of degrees of freedom) when a track is added or removed. The chi-squared calculation may or may not be done by a separate object. The class VertexUpdator is a pure abstract base class. A vertex fitter is configured with the appropriate VertexUpdator implementation.

Tracks are either added or removed from an existing vertex. Since they should be added or removed with the proper weight, the internal track representation which carries a weight, VertexTrack, is used:

  CachingVertex add (const CachingVertex &v, const RefCountedVertexTrack t)
  CachingVertex remove (const CachingVertex &v, const RefCountedVertexTrack t)

In case of a track removal, the same concrete updator algorithm as the one used to add the track must be used.


This class handles handles the refit of the tracks, the calculation of the smoothed chi^2, the track-to-track covariance matrices, etc. The class VertexSmoother is a pure abstract base class. The concrete implementations thereof are the objects with which the fitter interacts. It is generally used in the fitter, and it is generally not needed to use a VertexSmoother directly. The class DummyVertexSmoother is provided for the case where this step is not required in a fit. This can be supplied to the VertexFitter, and no smoothing will be done.

A new instance of a CachingVertex is returned, in which all the modified data has been updated, by using the method:

  CachingVertex smooth (const CachingVertex &vertex)


The task of a VertexTrackUpdator is to performs the refit of the tracks with the vertex constraint. The class VertexTrackUpdator is a pure abstract base class. The concrete implementations thereof are the objects with which the fitter interacts. Their instantiation depends on its individual implementation. It is generally used in the smoother, and it is do generally not needed to use a VertexTrackUpdator directly. A single track is refitted with the specified vertex using the method:

RefCountedVertexTrack  update(const CachingVertex &v, RefCountedVertexTrack t)

Review Status

Editor/Reviewer and Date Comments
Main.speer - 18 Jul 2006 Documentation written
JennyWilliams - 27 Mar 2007 restructured vertex fitting main component documentation into swguide

Responsible: ThomasSpeer
Last reviewed by: Reviewer

Topic attachments
I Attachment History Action Size Date Who Comment
PNGpng perigee.png r1 manage 8.2 K 2007-03-27 - 03:23 JennyWilliams  
Edit | Attach | Watch | Print version | History: r5 < r4 < r3 < r2 < r1 | Backlinks | Raw View | WYSIWYG | More topic actions
Topic revision: r5 - 2010-03-11 - KatiLassilaPerini

    • Cern Search Icon Cern Search
    • TWiki Search Icon TWiki Search
    • Google Search Icon Google Search

    CMSPublic All webs login

This site is powered by the TWiki collaboration platform Powered by PerlCopyright & 2008-2019 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback