CMS 3D CMS Logo

Package DataFormats/TrackReco
CVS head for this package - Administrative privileges

Description

Persistent classes for Track Reco data format.

Public interface

  • reco::Track: reconstructed Track. Objects of this type are ment to be stored in the AOD.
    Contains a reference to an object of type reco::TrackExtra.
  • reco::TrackExtra: Track extension. Objects of this type are ment to be stored in the RECO.

Auxiliary base classes

typedefs

Track object "Tiers"

The complete track information is stored in two different object: reco::Track and reco::TrackExtra, that are stored in two different collection, physically written to fine into two different ROOT branches. This modularity allows the freedom to "drop" the reco::TrackExtra component, if not needed, and leave only reco::Track, in order to save disk space. This could be done, for instance while writing only the AOD component of a RECO collection.

A reco::Track has a reference (edm::Ref) to a reco::TrackExtra object that allows to access the information in the "extra" tier. Users don't necessarily have to dereference this persistent reference, since reco::Track has two sets of methods:

For instance, the following methods will only access reco::TrackBase data members:

  reco::Track trk;
  double pt = trk.pt();
  double eta = trk.eta();
The following instead access data members contained in reco::TrackExtra:
  reco::Track trk;
  double outerPt = trk.outerPt();
  math::XYZPoint p = trk.outerPosition();
and are equivalent to:
  reco::Track trk;
  const reco::TrackExtraRef & trkExtra = trk.extra();
  double outerPt = trkExtra.outerPt();
  math::XYZPoint p = trkExtra.outerPosition();

Warning: collections of those two data types are potentially stored in different data tiers. So, if a reco::TrackExtra is not stored on disk dereferencing the reference contained in reco::Track may result in an exception.

Track Parametrization

Track helix parametrization follows the perigee model described in the internal CMS note CMS IN-2003/008. The five parameters are:

  • κ: signed transverse curvature: &kappa = -q • Bz/pt.
  • θ: polar angle of the momentum vector.
  • φ0: azimuthal angle of the momentum vector at the PCA to the beam line.
  • d0: signed transverse distance of the PCA. By convention, the sign is positive if the reference point is at the left of the PCA.
  • dz: longitudinal distance of the PCA.

The five parameters are stored internally in a vector whose index varies from 0 to 4, in the order listed above. The indices are also defined as the enumerator index defined in the namespace reco::helix:

  enum index { i_transverseCurvature = 0 , i_theta, i_phi0, i_d0, i_dz }; 

So, for instance, in order to access specific track parameters a user can write the following code that requires no explicit numeric index:

  using namespace reco::perigee;
  reco::TrackRef track = ... ; 
  double d0 = track->parameter( i_d0 ); 
  double covThetaPhi = track->covariance( i_theta, i_phi0 );

Modules

None.

Unit tests and examples

None.

Status and planned development

To be reviewed.


Last updated: @DATE@ L. Lista, Th. Speer