Track parameter re-estimate after vertex fit
Complete:
Introduction
After a vertex fit, the track parameters can be re-estimated at the fitted vertex, effectively using this vertex as a constraint (
smoothing).
It should be kept in mind that only the parameters at the vertex a re-estimated, and not the measurements along the track.
These will still be those estimated during the track fit.
The complete mechanism to get the result was implemented from 1.3.0 and onwards, an has been stable in current releases. If you use version 1.2.X, smoothing can still be done, but accessing the result will be somewhat more complicated.
Current Usage
At present, only the
Kalman filter allows to re-estimated the track parameters. The only thing which needs to be done is, when instantiating the KalmanVertexFitter, to set the boolean parameter to
true:
KalmanVertexFitter fitter(true);
TransientVertex myVertex = fitter.vertex(vectorOfRecTracks);
All the information is then accessed via the TransientVertex. The following methods are of interest:
- bool hasRefittedTracks () const
Returns true if, for at least one of the original tracks, the refitted track is available.
- std::vector< reco::TransientTrack > refittedTracks () const
Returns all the refitted tracks available.
- reco::TransientTrack refittedTrack (const reco::TransientTrack &track) const
Returns the refitted track which corresponds to a particular original Track. Throws an exception if now refitted tracks are stored ot the track is not found in the list.
The refitted tracks are returned as reco::TransientTrack. These TransientTrack can be used as any other TransientTrack, but does not have a link to the original track, and does not contain the original hits, etc.
Single Track vertex constraint
It is also possible to constrain the track parameters of a single track with an already reconstructed vertex, e.g. a primary vertex, without doing a vertex-fit. The class to be used is
SingleTrackVertexConstraint
, which uses internall the Kalman filter:
stvc SingleTrackVertexConstraint;
pair<TransientTrack, float> result = stvc.constrain(theOriginalTransientTrack, vertexPosition, vertexError);
In the pair, you get the refitted TransientTrack, and the float is the smoothed track-chi2, which is also the track-vertex compatibility.
Refitting tracks by fitting the individual hits
Tracks for which the creation vertex is known, or using a beam spot constraint, can also be refitted by fitting to the individual hits. This method is somewhat slower than that described above and cannot be done on AOD. However, it is also more accurate than the single track vertex constraint method described above. This refitting method is described in
SWGuideRefitterWithConstraints.
Review Status
Responsible: Main.speer (Thomas Speer)
Last reviewed by: