All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Classes | Public Member Functions | Static Public Member Functions | Private Attributes | List of all members
recob::tracking::Plane Class Reference

Class defining a plane for tracking. It provides various functionalities to convert track parameters and covariance matrices from global to local coordinates. More...

#include <TrackingPlane.h>

Classes

struct  TrigCache
 Struct caching trigonometric function results. More...
 

Public Member Functions

 Plane (const Point_t &planePos, const Vector_t &planeDir)
 Constructor from reference position on the plane and direction orthogonal to the plane. More...
 
Point_t const & position () const
 Reference position on the plane. More...
 
Vector_t const & direction () const
 Reference direction orthogonal to the plane. More...
 
SMatrixSym66 Local5DToGlobal6DCovariance (SMatrixSym55 cov5d, bool hasMomentum, const Vector_t &trackMomOrDir) const
 Translate track covariance from local to global coordinates. The track momentum (or direction) is needed to compute the jacobian. Local coordinates are on the plane orthogonal to planeDir (it may be the same direction as the momentum, but the function is generic). More...
 
SMatrixSym55 Global6DToLocal5DCovariance (SMatrixSym66 cov6d, bool hasMomentum, const Vector_t &trackMomOrDir) const
 Translate track covariance from global to local coordinates. The track momentum (or direction) is needed to compute the jacobian. Local coordinates are on the plane orthogonal to planeDir (it may be the same direction as the momentum, but the function is generic). Warning: some information may be lost in degenerate cases, e.g. the unceratinty along z position when converting to a x-y plane (fixed z) More...
 
SVector5 Global6DToLocal5DParameters (const SVector6 &par6d) const
 Function to convert parameters from global to local coordinates. Local coordinates are on the plane with origin at planePos and orthogonal to planeDir. It is responsibility of the user to make sure the global position lies on the plane. More...
 
SVector5 Global6DToLocal5DParameters (const SVector6 &par6d, const Point_t &planePos, const Vector_t &planeDir, const TrigCache &trigCache) const
 
SVector6 Local5DToGlobal6DParameters (const SVector5 &par5d, bool trackAlongPlaneDir=true) const
 Function to convert parameters from local to global coordinates. Local coordinates are on the plane with origin at planePos and orthogonal to planeDir. trackAlongPlaneDir is as given by trackDir.Dot(planeDir)>0. More...
 
SVector6 Local5DToGlobal6DParameters (const SVector5 &par5d, const Point_t &planePos, const Vector_t &planeDir, const TrigCache &trigCache, bool trackAlongPlaneDir=true) const
 
SMatrix65 Local5DToGlobal6DJacobian (bool hasMomentum, const Vector_t &trackMomOrDir) const
 Compute the jacobian to translate track covariance from local to global coordinates. The track momentum (or direction) is needed to compute the jacobian. Local coordinates are on the plane orthogonal to planeDir (it may be the same direction as the momentum, but the function is generic). More...
 
SMatrix65 Local5DToGlobal6DJacobian (bool hasMomentum, const Vector_t &trackMomOrDir, const Vector_t &planeDir, const TrigCache &trigCache) const
 
SMatrix56 Global6DToLocal5DJacobian (bool hasMomentum, const Vector_t &trackMomOrDir) const
 Compute the jacobian to translate track covariance from global to local coordinates. The track momentum (or direction) is needed to compute the jacobian. Local coordinates are on the plane orthogonal to planeDir (it may be the same direction as the momentum, but the function is generic). Warning: some information may be lost in degenerate cases, e.g. the unceratinty along z position when converting to a x-y plane (fixed z) More...
 
SMatrix56 Global6DToLocal5DJacobian (bool hasMomentum, const Vector_t &trackMomOrDir, const Vector_t &planeDir, const TrigCache &trigCache) const
 
Rotation_t Global3DToLocal3DRotation () const
 Calculate rotation matrices from global (x,y,z) to local (u,v,w) coordinates. More...
 
Rotation_t Global3DToLocal3DRotation (const Vector_t &planeDir, const TrigCache &trigCache) const
 
Rotation_t Local3DToGlobal3DRotation () const
 Calculate rotation matrices from local (u,v,w) to global (x,y,z) coordinates. More...
 
Rotation_t Local3DToGlobal3DRotation (const Vector_t &planeDir, const TrigCache &trigCache) const
 
double cosAlpha () const
 Return cached values of trigonometric function for angles defining the plane. More...
 
double sinAlpha () const
 
double cosBeta () const
 
double sinBeta () const
 

Static Public Member Functions

static SVector5 Global6DToLocal5DParameters (const SVector6 &par6d, const Point_t &planePos, const Vector_t &planeDir)
 Function to convert parameters from global to local coordinates. Local coordinates are on the plane with origin at planePos and orthogonal to planeDir. It is responsibility of the user to make sure the global position lies on the plane. More...
 
static SVector6 Local5DToGlobal6DParameters (const SVector5 &par5d, const Point_t &planePos, const Vector_t &planeDir, bool trackAlongPlaneDir=true)
 Function to convert parameters from local to global coordinates. Local coordinates are on the plane with origin at planePos and orthogonal to planeDir. trackAlongPlaneDir is as given by trackDir.Dot(planeDir)>0. More...
 
static SMatrix65 Local5DToGlobal6DJacobian (bool hasMomentum, const Vector_t &trackMomOrDir, const Vector_t &planeDir)
 Compute the jacobian to translate track covariance from local to global coordinates. The track momentum (or direction) is needed to compute the jacobian. Local coordinates are on the plane orthogonal to planeDir (it may be the same direction as the momentum, but the function is generic). More...
 
static SMatrix65 Local5DToGlobal6DJacobian (bool hasMomentum, const SVector6 &par6d, const Vector_t &planeDir)
 Compute the jacobian to translate track covariance from local to global coordinates. The track momentum (or direction) is needed to compute the jacobian. Local coordinates are on the plane orthogonal to planeDir (it may be the same direction as the momentum, but the function is generic). More...
 
static SMatrix56 Global6DToLocal5DJacobian (bool hasMomentum, const Vector_t &trackMomOrDir, const Vector_t &planeDir)
 Compute the jacobian to translate track covariance from global to local coordinates. The track momentum (or direction) is needed to compute the jacobian. Local coordinates are on the plane orthogonal to planeDir (it may be the same direction as the momentum, but the function is generic). Warning: some information may be lost in degenerate cases, e.g. the unceratinty along z position when converting to a x-y plane (fixed z) More...
 
static SMatrix56 Global6DToLocal5DJacobian (bool hasMomentum, const SVector6 &par6d, const Vector_t &planeDir)
 Compute the jacobian to translate track covariance from global to local coordinates. The track momentum (or direction) is needed to compute the jacobian. Local coordinates are on the plane orthogonal to planeDir (it may be the same direction as the momentum, but the function is generic). Warning: some information may be lost in degenerate cases, e.g. the unceratinty along z position when converting to a x-y plane (fixed z) More...
 
static SMatrixSym66 Local5DToGlobal6DCovariance (SMatrixSym55 cov5d, bool hasMomentum, const Vector_t &trackMomOrDir, const Vector_t &planeDir)
 Translate track covariance from local to global coordinates. The track momentum (or direction) is needed to compute the jacobian. Local coordinates are on the plane orthogonal to planeDir (it may be the same direction as the momentum, but the function is generic). More...
 
static SMatrixSym55 Global6DToLocal5DCovariance (SMatrixSym66 cov6d, bool hasMomentum, const Vector_t &trackMomOrDir, const Vector_t &planeDir)
 Translate track covariance from global to local coordinates. The track momentum (or direction) is needed to compute the jacobian. Local coordinates are on the plane orthogonal to planeDir (it may be the same direction as the momentum, but the function is generic). Warning: some information may be lost in degenerate cases, e.g. the unceratinty along z position when converting to a x-y plane (fixed z) More...
 
static Rotation_t Global3DToLocal3DRotation (const Vector_t &planeDir)
 Calculate rotation matrices from global (x,y,z) to local (u,v,w) coordinates. More...
 
static Rotation_t Local3DToGlobal3DRotation (const Vector_t &planeDir)
 Calculate rotation matrices from local (u,v,w) to global (x,y,z) coordinates. More...
 

Private Attributes

Point_t fPlanePos
 Position of a point on the plane. More...
 
Vector_t fPlaneDir
 Direction vector othogonal to the plane. More...
 
TrigCache fTrigCache
 Cached trigonometric function values. More...
 

Detailed Description

Class defining a plane for tracking. It provides various functionalities to convert track parameters and covariance matrices from global to local coordinates.

Author
G. Cerati (FNAL, MicroBooNE)
Date
2017
Version
1.0

The plane is constructed from a point in global coordinates, and a direction unit vector orthogonal to the plane. For instance, they may refer to the position and direction of a trajectory at a given point, or to the center of a wire and the direction orthogonal to both the wire and drift directions.

The plane and parameters are defined along the lines of trkf::SurfXYZPlane, but with a different notation for the angles which are now called alpha and beta to avoid confusion with theta and phi in global spherical coordinates: (alpha, beta) correspond to (alpha := Rotation angle about y'-axis (projected Lorentz angle) = atan2(nx, hypot(ny, nz)), beta := Rotation angle about x-axis (wire angle) = atan2(-ny, nz)) The 3D local positions are defined in terms of the unit vectors u,v,w where w is along the normal direction to the plane, u is perpendicular to w and coplanar to the global x axis and with position sign along the positive sign of x, v forms a right handed orthonormal basis with u and w. The 5D track parameters are u,v,du/dw,dv/dw,1/p: u,v are the local positions, du, dv, and dw are the local directions, and 1/p is the inverse of the track momentum. The global 6D coordinates are formed by the track position and momentum (or direction) at a given point.

The discussion above refers to a detector with drift direction along the x axis; this class will have to be extended for a detector with a different drift direction.

Definition at line 37 of file TrackingPlane.h.

Constructor & Destructor Documentation

recob::tracking::Plane::Plane ( const Point_t planePos,
const Vector_t planeDir 
)
inline

Constructor from reference position on the plane and direction orthogonal to the plane.

Definition at line 61 of file TrackingPlane.h.

62  : fPlanePos(planePos), fPlaneDir(planeDir.Unit()), fTrigCache(planeDir.Unit()) { }
Point_t fPlanePos
Position of a point on the plane.
TrigCache fTrigCache
Cached trigonometric function values.
Vector_t fPlaneDir
Direction vector othogonal to the plane.

Member Function Documentation

double recob::tracking::Plane::cosAlpha ( ) const
inline

Return cached values of trigonometric function for angles defining the plane.

Definition at line 120 of file TrackingPlane.h.

120 { return fTrigCache.fCosA; }
TrigCache fTrigCache
Cached trigonometric function values.
double recob::tracking::Plane::cosBeta ( ) const
inline

Definition at line 122 of file TrackingPlane.h.

122 { return fTrigCache.fCosB; }
TrigCache fTrigCache
Cached trigonometric function values.
Vector_t const& recob::tracking::Plane::direction ( ) const
inline

Reference direction orthogonal to the plane.

Definition at line 70 of file TrackingPlane.h.

70 { return fPlaneDir; }
Vector_t fPlaneDir
Direction vector othogonal to the plane.
Rotation_t recob::tracking::Plane::Global3DToLocal3DRotation ( ) const
inline

Calculate rotation matrices from global (x,y,z) to local (u,v,w) coordinates.

Definition at line 108 of file TrackingPlane.h.

Rotation_t Global3DToLocal3DRotation() const
Calculate rotation matrices from global (x,y,z) to local (u,v,w) coordinates.
TrigCache fTrigCache
Cached trigonometric function values.
Vector_t fPlaneDir
Direction vector othogonal to the plane.
Rotation_t recob::tracking::Plane::Global3DToLocal3DRotation ( const Vector_t planeDir,
const TrigCache trigCache 
) const

Definition at line 159 of file TrackingPlane.cxx.

159  {
160  const double& sinalpha = trigCache.fSinA;
161  const double& cosalpha = trigCache.fCosA;
162  const double& sinbeta = trigCache.fSinB;
163  const double& cosbeta = trigCache.fCosB;
164  return {
165  cosalpha /* xx */, sinalpha * sinbeta /* xy */, -sinalpha * cosbeta /* xz */,
166  0.0 /* yx */, cosbeta /* yy */, sinbeta /* yz */,
167  sinalpha /* zx */, -cosalpha * sinbeta /* zy */, cosalpha * cosbeta /* zz */
168  };
169  }
static Rotation_t recob::tracking::Plane::Global3DToLocal3DRotation ( const Vector_t planeDir)
inlinestatic

Calculate rotation matrices from global (x,y,z) to local (u,v,w) coordinates.

Definition at line 159 of file TrackingPlane.h.

159  {
160  Plane p(Point_t(), planeDir); return p.Global3DToLocal3DRotation();
161  }
pdgs p
Definition: selectors.fcl:22
Plane(const Point_t &planePos, const Vector_t &planeDir)
Constructor from reference position on the plane and direction orthogonal to the plane.
Definition: TrackingPlane.h:61
ROOT::Math::PositionVector3D< ROOT::Math::Cartesian3D< Coord_t >, ROOT::Math::GlobalCoordinateSystemTag > Point_t
Type for representation of position in physical 3D space. See recob::tracking::Coord_t for more detai...
Definition: TrackingTypes.h:26
SMatrixSym55 recob::tracking::Plane::Global6DToLocal5DCovariance ( SMatrixSym66  cov6d,
bool  hasMomentum,
const Vector_t trackMomOrDir 
) const
inline

Translate track covariance from global to local coordinates. The track momentum (or direction) is needed to compute the jacobian. Local coordinates are on the plane orthogonal to planeDir (it may be the same direction as the momentum, but the function is generic). Warning: some information may be lost in degenerate cases, e.g. the unceratinty along z position when converting to a x-y plane (fixed z)

Definition at line 102 of file TrackingPlane.h.

102  {
103  return Global6DToLocal5DCovariance(cov6d,hasMomentum,trackMomOrDir,fPlaneDir);
104  }
Vector_t fPlaneDir
Direction vector othogonal to the plane.
SMatrixSym55 Global6DToLocal5DCovariance(SMatrixSym66 cov6d, bool hasMomentum, const Vector_t &trackMomOrDir) const
Translate track covariance from global to local coordinates. The track momentum (or direction) is nee...
static SMatrixSym55 recob::tracking::Plane::Global6DToLocal5DCovariance ( SMatrixSym66  cov6d,
bool  hasMomentum,
const Vector_t trackMomOrDir,
const Vector_t planeDir 
)
inlinestatic

Translate track covariance from global to local coordinates. The track momentum (or direction) is needed to compute the jacobian. Local coordinates are on the plane orthogonal to planeDir (it may be the same direction as the momentum, but the function is generic). Warning: some information may be lost in degenerate cases, e.g. the unceratinty along z position when converting to a x-y plane (fixed z)

Definition at line 155 of file TrackingPlane.h.

155  {
156  return ROOT::Math::Similarity(Global6DToLocal5DJacobian(hasMomentum,trackMomOrDir,planeDir),cov6d);
157  }
SMatrix56 Global6DToLocal5DJacobian(bool hasMomentum, const Vector_t &trackMomOrDir) const
Compute the jacobian to translate track covariance from global to local coordinates. The track momentum (or direction) is needed to compute the jacobian. Local coordinates are on the plane orthogonal to planeDir (it may be the same direction as the momentum, but the function is generic). Warning: some information may be lost in degenerate cases, e.g. the unceratinty along z position when converting to a x-y plane (fixed z)
Definition: TrackingPlane.h:92
SMatrix56 recob::tracking::Plane::Global6DToLocal5DJacobian ( bool  hasMomentum,
const Vector_t trackMomOrDir 
) const
inline

Compute the jacobian to translate track covariance from global to local coordinates. The track momentum (or direction) is needed to compute the jacobian. Local coordinates are on the plane orthogonal to planeDir (it may be the same direction as the momentum, but the function is generic). Warning: some information may be lost in degenerate cases, e.g. the unceratinty along z position when converting to a x-y plane (fixed z)

Definition at line 92 of file TrackingPlane.h.

92 { return Global6DToLocal5DJacobian(hasMomentum, trackMomOrDir,fPlaneDir,fTrigCache); }
TrigCache fTrigCache
Cached trigonometric function values.
Vector_t fPlaneDir
Direction vector othogonal to the plane.
SMatrix56 Global6DToLocal5DJacobian(bool hasMomentum, const Vector_t &trackMomOrDir) const
Compute the jacobian to translate track covariance from global to local coordinates. The track momentum (or direction) is needed to compute the jacobian. Local coordinates are on the plane orthogonal to planeDir (it may be the same direction as the momentum, but the function is generic). Warning: some information may be lost in degenerate cases, e.g. the unceratinty along z position when converting to a x-y plane (fixed z)
Definition: TrackingPlane.h:92
SMatrix56 recob::tracking::Plane::Global6DToLocal5DJacobian ( bool  hasMomentum,
const Vector_t trackMomOrDir,
const Vector_t planeDir,
const TrigCache trigCache 
) const

Definition at line 112 of file TrackingPlane.cxx.

112  {
113  const double& sinalpha = trigCache.fSinA;
114  const double& cosalpha = trigCache.fCosA;
115  const double& sinbeta = trigCache.fSinB;
116  const double& cosbeta = trigCache.fCosB;
117  const double den23 = (cosalpha*(cosbeta*trackMomOrDir.Z() - sinbeta*trackMomOrDir.Y()) + sinalpha*trackMomOrDir.X())*(cosalpha*(cosbeta*trackMomOrDir.Z() - sinbeta*trackMomOrDir.Y()) + sinalpha*trackMomOrDir.X());
118  const double den4 = sqrt(trackMomOrDir.X()*trackMomOrDir.X()+trackMomOrDir.Y()*trackMomOrDir.Y()+trackMomOrDir.Z()*trackMomOrDir.Z())*(trackMomOrDir.X()*trackMomOrDir.X()+trackMomOrDir.Y()*trackMomOrDir.Y()+trackMomOrDir.Z()*trackMomOrDir.Z());
119  SMatrix56 j;
120  //
121  j(0,0) = cosalpha;
122  j(0,1) = sinalpha*sinbeta ;
123  j(0,2) = -sinalpha*cosbeta;
124  j(0,3) = 0.;
125  j(0,4) = 0.;
126  j(0,5) = 0.;
127  //
128  j(1,0) = 0.;
129  j(1,1) = cosbeta;
130  j(1,2) = sinbeta;
131  j(1,3) = 0.;
132  j(1,4) = 0.;
133  j(1,5) = 0.;
134  //
135  j(2,0) = 0.;
136  j(2,1) = 0.;
137  j(2,2) = 0.;
138  j(2,3) = ((cosalpha*cosalpha + sinalpha*sinalpha)*(cosbeta*trackMomOrDir.Z() - sinbeta*trackMomOrDir.Y()))/den23;
139  j(2,4) = (sinbeta*trackMomOrDir.X()*(cosalpha*cosalpha + sinalpha*sinalpha))/den23;
140  j(2,5) = -(cosbeta*trackMomOrDir.X()*(cosalpha*cosalpha + sinalpha*sinalpha))/den23;
141  //
142  j(3,0) = 0.;
143  j(3,1) = 0.;
144  j(3,2) = 0.;
145  j(3,3) = -(sinalpha*(cosbeta*trackMomOrDir.Y() + sinbeta*trackMomOrDir.Z()))/den23;
146  j(3,4) = (cosalpha*trackMomOrDir.Z()*(cosbeta*cosbeta + sinbeta*sinbeta) + cosbeta*sinalpha*trackMomOrDir.X())/den23;
147  j(3,5) = (-cosalpha*cosbeta*cosbeta*trackMomOrDir.Y() - cosalpha*sinbeta*sinbeta*trackMomOrDir.Y() + sinalpha*sinbeta*trackMomOrDir.X())/den23;
148  //
149  j(4,0) = 0.;
150  j(4,1) = 0.;
151  j(4,2) = 0.;
152  j(4,3) = (hasMomentum ? -trackMomOrDir.X()/den4 : 0.);
153  j(4,4) = (hasMomentum ? -trackMomOrDir.Y()/den4 : 0.);
154  j(4,5) = (hasMomentum ? -trackMomOrDir.Z()/den4 : 0.);
155  //
156  return j;
157  }
ROOT::Math::SMatrix< Double32_t, 5, 6 > SMatrix56
Definition: TrackingTypes.h:88
static SMatrix56 recob::tracking::Plane::Global6DToLocal5DJacobian ( bool  hasMomentum,
const Vector_t trackMomOrDir,
const Vector_t planeDir 
)
inlinestatic

Compute the jacobian to translate track covariance from global to local coordinates. The track momentum (or direction) is needed to compute the jacobian. Local coordinates are on the plane orthogonal to planeDir (it may be the same direction as the momentum, but the function is generic). Warning: some information may be lost in degenerate cases, e.g. the unceratinty along z position when converting to a x-y plane (fixed z)

Definition at line 143 of file TrackingPlane.h.

143  {
144  Plane p(Point_t(), planeDir); return p.Global6DToLocal5DJacobian(hasMomentum, trackMomOrDir);
145  }
pdgs p
Definition: selectors.fcl:22
Plane(const Point_t &planePos, const Vector_t &planeDir)
Constructor from reference position on the plane and direction orthogonal to the plane.
Definition: TrackingPlane.h:61
ROOT::Math::PositionVector3D< ROOT::Math::Cartesian3D< Coord_t >, ROOT::Math::GlobalCoordinateSystemTag > Point_t
Type for representation of position in physical 3D space. See recob::tracking::Coord_t for more detai...
Definition: TrackingTypes.h:26
static SMatrix56 recob::tracking::Plane::Global6DToLocal5DJacobian ( bool  hasMomentum,
const SVector6 par6d,
const Vector_t planeDir 
)
inlinestatic

Compute the jacobian to translate track covariance from global to local coordinates. The track momentum (or direction) is needed to compute the jacobian. Local coordinates are on the plane orthogonal to planeDir (it may be the same direction as the momentum, but the function is generic). Warning: some information may be lost in degenerate cases, e.g. the unceratinty along z position when converting to a x-y plane (fixed z)

Definition at line 147 of file TrackingPlane.h.

147  {
148  Plane p(Point_t(), planeDir); return p.Global6DToLocal5DJacobian(hasMomentum, Vector_t(par6d[3],par6d[4],par6d[5]));
149  }
pdgs p
Definition: selectors.fcl:22
Plane(const Point_t &planePos, const Vector_t &planeDir)
Constructor from reference position on the plane and direction orthogonal to the plane.
Definition: TrackingPlane.h:61
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< Coord_t >, ROOT::Math::GlobalCoordinateSystemTag > Vector_t
Type for representation of momenta in 3D space. See recob::tracking::Coord_t for more details on the ...
Definition: TrackingTypes.h:29
ROOT::Math::PositionVector3D< ROOT::Math::Cartesian3D< Coord_t >, ROOT::Math::GlobalCoordinateSystemTag > Point_t
Type for representation of position in physical 3D space. See recob::tracking::Coord_t for more detai...
Definition: TrackingTypes.h:26
SVector5 recob::tracking::Plane::Global6DToLocal5DParameters ( const SVector6 par6d) const
inline

Function to convert parameters from global to local coordinates. Local coordinates are on the plane with origin at planePos and orthogonal to planeDir. It is responsibility of the user to make sure the global position lies on the plane.

Definition at line 74 of file TrackingPlane.h.

Point_t fPlanePos
Position of a point on the plane.
SVector5 Global6DToLocal5DParameters(const SVector6 &par6d) const
Function to convert parameters from global to local coordinates. Local coordinates are on the plane w...
Definition: TrackingPlane.h:74
TrigCache fTrigCache
Cached trigonometric function values.
Vector_t fPlaneDir
Direction vector othogonal to the plane.
SVector5 recob::tracking::Plane::Global6DToLocal5DParameters ( const SVector6 par6d,
const Point_t planePos,
const Vector_t planeDir,
const TrigCache trigCache 
) const

Definition at line 37 of file TrackingPlane.cxx.

37  {
38  const double& sinalpha = trigCache.fSinA;
39  const double& cosalpha = trigCache.fCosA;
40  const double& sinbeta = trigCache.fSinB;
41  const double& cosbeta = trigCache.fCosB;
42  const double pu = par6d[3]*cosalpha + par6d[4]*sinalpha*sinbeta - par6d[5]*sinalpha*cosbeta;
43  const double pv = par6d[4]*cosbeta + par6d[5]*sinbeta;
44  const double pw = par6d[3]*sinalpha - par6d[4]*cosalpha*sinbeta + par6d[5]*cosalpha*cosbeta;
45  const double pval = sqrt(par6d[3]*par6d[3]+par6d[4]*par6d[4]+par6d[5]*par6d[5]);
46  SVector5 par5d;
47  par5d[0] = (par6d[0]-planePos.X())*cosalpha + (par6d[1]-planePos.Y())*sinalpha*sinbeta - (par6d[2]-planePos.Z())*sinalpha*cosbeta;
48  par5d[1] = (par6d[1]-planePos.Y())*cosbeta + (par6d[2]-planePos.Z())*sinbeta;
49  par5d[2] = pu/pw;
50  par5d[3] = pv/pw;
51  par5d[4] = (pval>0 ? 1./pval : 1.);
52  return par5d;
53  }
ROOT::Math::SVector< Double32_t, 5 > SVector5
Definition: TrackingTypes.h:92
static SVector5 recob::tracking::Plane::Global6DToLocal5DParameters ( const SVector6 par6d,
const Point_t planePos,
const Vector_t planeDir 
)
inlinestatic

Function to convert parameters from global to local coordinates. Local coordinates are on the plane with origin at planePos and orthogonal to planeDir. It is responsibility of the user to make sure the global position lies on the plane.

Definition at line 127 of file TrackingPlane.h.

127  {
128  Plane p(planePos, planeDir); return p.Global6DToLocal5DParameters(par6d);
129  }
pdgs p
Definition: selectors.fcl:22
Plane(const Point_t &planePos, const Vector_t &planeDir)
Constructor from reference position on the plane and direction orthogonal to the plane.
Definition: TrackingPlane.h:61
Rotation_t recob::tracking::Plane::Local3DToGlobal3DRotation ( ) const
inline

Calculate rotation matrices from local (u,v,w) to global (x,y,z) coordinates.

Definition at line 114 of file TrackingPlane.h.

TrigCache fTrigCache
Cached trigonometric function values.
Vector_t fPlaneDir
Direction vector othogonal to the plane.
Rotation_t Local3DToGlobal3DRotation() const
Calculate rotation matrices from local (u,v,w) to global (x,y,z) coordinates.
Rotation_t recob::tracking::Plane::Local3DToGlobal3DRotation ( const Vector_t planeDir,
const TrigCache trigCache 
) const

Definition at line 171 of file TrackingPlane.cxx.

171  {
172  const double& sinalpha = trigCache.fSinA;
173  const double& cosalpha = trigCache.fCosA;
174  const double& sinbeta = trigCache.fSinB;
175  const double& cosbeta = trigCache.fCosB;
176  return {
177  cosalpha /* xx */, 0. /* xy */, sinalpha /* xz */,
178  sinalpha * sinbeta /* yx */, cosbeta /* yy */, -cosalpha * sinbeta /* yz */,
179  -sinalpha * cosbeta /* zx */, sinbeta /* zy */, cosalpha * cosbeta /* zz */
180  };
181  }
static Rotation_t recob::tracking::Plane::Local3DToGlobal3DRotation ( const Vector_t planeDir)
inlinestatic

Calculate rotation matrices from local (u,v,w) to global (x,y,z) coordinates.

Definition at line 163 of file TrackingPlane.h.

163  {
164  Plane p(Point_t(), planeDir); return p.Local3DToGlobal3DRotation();
165  }
pdgs p
Definition: selectors.fcl:22
Plane(const Point_t &planePos, const Vector_t &planeDir)
Constructor from reference position on the plane and direction orthogonal to the plane.
Definition: TrackingPlane.h:61
ROOT::Math::PositionVector3D< ROOT::Math::Cartesian3D< Coord_t >, ROOT::Math::GlobalCoordinateSystemTag > Point_t
Type for representation of position in physical 3D space. See recob::tracking::Coord_t for more detai...
Definition: TrackingTypes.h:26
SMatrixSym66 recob::tracking::Plane::Local5DToGlobal6DCovariance ( SMatrixSym55  cov5d,
bool  hasMomentum,
const Vector_t trackMomOrDir 
) const
inline

Translate track covariance from local to global coordinates. The track momentum (or direction) is needed to compute the jacobian. Local coordinates are on the plane orthogonal to planeDir (it may be the same direction as the momentum, but the function is generic).

Definition at line 97 of file TrackingPlane.h.

97  {
98  return Local5DToGlobal6DCovariance(cov5d, hasMomentum,trackMomOrDir,fPlaneDir);
99  }
Vector_t fPlaneDir
Direction vector othogonal to the plane.
SMatrixSym66 Local5DToGlobal6DCovariance(SMatrixSym55 cov5d, bool hasMomentum, const Vector_t &trackMomOrDir) const
Translate track covariance from local to global coordinates. The track momentum (or direction) is nee...
Definition: TrackingPlane.h:97
static SMatrixSym66 recob::tracking::Plane::Local5DToGlobal6DCovariance ( SMatrixSym55  cov5d,
bool  hasMomentum,
const Vector_t trackMomOrDir,
const Vector_t planeDir 
)
inlinestatic

Translate track covariance from local to global coordinates. The track momentum (or direction) is needed to compute the jacobian. Local coordinates are on the plane orthogonal to planeDir (it may be the same direction as the momentum, but the function is generic).

Definition at line 151 of file TrackingPlane.h.

151  {
152  return ROOT::Math::Similarity(Local5DToGlobal6DJacobian(hasMomentum,trackMomOrDir,planeDir),cov5d);
153  }
SMatrix65 Local5DToGlobal6DJacobian(bool hasMomentum, const Vector_t &trackMomOrDir) const
Compute the jacobian to translate track covariance from local to global coordinates. The track momentum (or direction) is needed to compute the jacobian. Local coordinates are on the plane orthogonal to planeDir (it may be the same direction as the momentum, but the function is generic).
Definition: TrackingPlane.h:86
SMatrix65 recob::tracking::Plane::Local5DToGlobal6DJacobian ( bool  hasMomentum,
const Vector_t trackMomOrDir 
) const
inline

Compute the jacobian to translate track covariance from local to global coordinates. The track momentum (or direction) is needed to compute the jacobian. Local coordinates are on the plane orthogonal to planeDir (it may be the same direction as the momentum, but the function is generic).

Definition at line 86 of file TrackingPlane.h.

86 { return Local5DToGlobal6DJacobian(hasMomentum, trackMomOrDir,fPlaneDir,fTrigCache); }
SMatrix65 Local5DToGlobal6DJacobian(bool hasMomentum, const Vector_t &trackMomOrDir) const
Compute the jacobian to translate track covariance from local to global coordinates. The track momentum (or direction) is needed to compute the jacobian. Local coordinates are on the plane orthogonal to planeDir (it may be the same direction as the momentum, but the function is generic).
Definition: TrackingPlane.h:86
TrigCache fTrigCache
Cached trigonometric function values.
Vector_t fPlaneDir
Direction vector othogonal to the plane.
SMatrix65 recob::tracking::Plane::Local5DToGlobal6DJacobian ( bool  hasMomentum,
const Vector_t trackMomOrDir,
const Vector_t planeDir,
const TrigCache trigCache 
) const

Definition at line 55 of file TrackingPlane.cxx.

55  {
56  bool trackAlongPlaneDir = trackMomOrDir.Dot(planeDir)>0;
57  const double& sinalpha = trigCache.fSinA;
58  const double& cosalpha = trigCache.fCosA;
59  const double& sinbeta = trigCache.fSinB;
60  const double& cosbeta = trigCache.fCosB;
61  const double pu = trackMomOrDir.X()*cosalpha + trackMomOrDir.Y()*sinalpha*sinbeta - trackMomOrDir.Z()*sinalpha*cosbeta;
62  const double pv = trackMomOrDir.Y()*cosbeta + trackMomOrDir.Z()*sinbeta;
63  const double pw = trackMomOrDir.X()*sinalpha - trackMomOrDir.Y()*cosalpha*sinbeta + trackMomOrDir.Z()*cosalpha*cosbeta;
64  //local parameters 2,3,4
65  const double l2 = pu/pw;
66  const double l3 = pv/pw;
67  const double p2 = trackMomOrDir.X()*trackMomOrDir.X() + trackMomOrDir.Y()*trackMomOrDir.Y() + trackMomOrDir.Z()*trackMomOrDir.Z();
68  const double l4 = (hasMomentum ? 1./sqrt(p2) : 1.);
69  const double den23 = ( trackAlongPlaneDir ? l4*(l2*l2+l3*l3+1.)*sqrt(l2*l2+l3*l3+1.) : -l4*(l2*l2+l3*l3+1.)*sqrt(l2*l2+l3*l3+1.) );
70  const double den4 = l4*l4*sqrt(l2*l2+l3*l3+1.);
71  SMatrix65 j;
72  //
73  j(0,0) = cosalpha;
74  j(0,1) = 0.;
75  j(0,2) = 0.;
76  j(0,3) = 0.;
77  j(0,4) = 0.;
78  //
79  j(1,0) = sinalpha*sinbeta;
80  j(1,1) = cosbeta;
81  j(1,2) = 0.;
82  j(1,3) = 0.;
83  j(1,4) = 0.;
84  //
85  j(2,0) = -sinalpha*cosbeta;
86  j(2,1) = sinbeta;
87  j(2,2) = 0.;
88  j(2,3) = 0.;
89  j(2,4) = 0.;
90  //
91  j(3,0) = 0.;
92  j(3,1) = 0.;
93  j(3,2) = (cosalpha*(l3*l3+1.) - sinalpha*l2)/den23;
94  j(3,3) = -l3*(l2*cosalpha + sinalpha)/den23;
95  j(3,4) = (hasMomentum ? -(l2*cosalpha + sinalpha)/den4 : 0.);
96  //
97  j(4,0) = 0.;
98  j(4,1) = 0.;
99  j(4,2) = (cosalpha*sinbeta*l2 - cosbeta*l2*l3 + sinalpha*sinbeta*(l3*l3+1.))/den23;
100  j(4,3) = (sinbeta*l3*(cosalpha-sinalpha*l2) + cosbeta*(l2*l2+1.))/den23;
101  j(4,4) = (hasMomentum ? (cosalpha*sinbeta - cosbeta*l3 - sinalpha*sinbeta*l2)/den4 : 0.);
102  //
103  j(5,0) = 0.;
104  j(5,1) = 0.;
105  j(5,2) = -(cosalpha*cosbeta*l2 + cosbeta*sinalpha*l3*l3 + cosbeta*sinalpha + sinbeta*l2*l3)/den23;
106  j(5,3) = (-cosalpha*cosbeta*l3 + cosbeta*sinalpha*l2*l3 + sinbeta*l2*l2 + sinbeta)/den23;
107  j(5,4) = (hasMomentum ? (-cosalpha*cosbeta + cosbeta*sinalpha*l2 - sinbeta*l3)/den4 : 0.);
108  //
109  return j;
110  }
ROOT::Math::SMatrix< Double32_t, 6, 5 > SMatrix65
Definition: TrackingTypes.h:87
static SMatrix65 recob::tracking::Plane::Local5DToGlobal6DJacobian ( bool  hasMomentum,
const Vector_t trackMomOrDir,
const Vector_t planeDir 
)
inlinestatic

Compute the jacobian to translate track covariance from local to global coordinates. The track momentum (or direction) is needed to compute the jacobian. Local coordinates are on the plane orthogonal to planeDir (it may be the same direction as the momentum, but the function is generic).

Definition at line 135 of file TrackingPlane.h.

135  {
136  Plane p(Point_t(), planeDir); return p.Local5DToGlobal6DJacobian(hasMomentum, trackMomOrDir);
137  }
pdgs p
Definition: selectors.fcl:22
Plane(const Point_t &planePos, const Vector_t &planeDir)
Constructor from reference position on the plane and direction orthogonal to the plane.
Definition: TrackingPlane.h:61
ROOT::Math::PositionVector3D< ROOT::Math::Cartesian3D< Coord_t >, ROOT::Math::GlobalCoordinateSystemTag > Point_t
Type for representation of position in physical 3D space. See recob::tracking::Coord_t for more detai...
Definition: TrackingTypes.h:26
static SMatrix65 recob::tracking::Plane::Local5DToGlobal6DJacobian ( bool  hasMomentum,
const SVector6 par6d,
const Vector_t planeDir 
)
inlinestatic

Compute the jacobian to translate track covariance from local to global coordinates. The track momentum (or direction) is needed to compute the jacobian. Local coordinates are on the plane orthogonal to planeDir (it may be the same direction as the momentum, but the function is generic).

Definition at line 139 of file TrackingPlane.h.

139  {
140  Plane p(Point_t(), planeDir); return p.Local5DToGlobal6DJacobian(hasMomentum, Vector_t(par6d[3],par6d[4],par6d[5]));
141  }
pdgs p
Definition: selectors.fcl:22
Plane(const Point_t &planePos, const Vector_t &planeDir)
Constructor from reference position on the plane and direction orthogonal to the plane.
Definition: TrackingPlane.h:61
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< Coord_t >, ROOT::Math::GlobalCoordinateSystemTag > Vector_t
Type for representation of momenta in 3D space. See recob::tracking::Coord_t for more details on the ...
Definition: TrackingTypes.h:29
ROOT::Math::PositionVector3D< ROOT::Math::Cartesian3D< Coord_t >, ROOT::Math::GlobalCoordinateSystemTag > Point_t
Type for representation of position in physical 3D space. See recob::tracking::Coord_t for more detai...
Definition: TrackingTypes.h:26
SVector6 recob::tracking::Plane::Local5DToGlobal6DParameters ( const SVector5 par5d,
bool  trackAlongPlaneDir = true 
) const
inline

Function to convert parameters from local to global coordinates. Local coordinates are on the plane with origin at planePos and orthogonal to planeDir. trackAlongPlaneDir is as given by trackDir.Dot(planeDir)>0.

Definition at line 80 of file TrackingPlane.h.

80 { return Local5DToGlobal6DParameters(par5d, fPlanePos, fPlaneDir, fTrigCache, trackAlongPlaneDir); }
Point_t fPlanePos
Position of a point on the plane.
TrigCache fTrigCache
Cached trigonometric function values.
Vector_t fPlaneDir
Direction vector othogonal to the plane.
SVector6 Local5DToGlobal6DParameters(const SVector5 &par5d, bool trackAlongPlaneDir=true) const
Function to convert parameters from local to global coordinates. Local coordinates are on the plane w...
Definition: TrackingPlane.h:80
SVector6 recob::tracking::Plane::Local5DToGlobal6DParameters ( const SVector5 par5d,
const Point_t planePos,
const Vector_t planeDir,
const TrigCache trigCache,
bool  trackAlongPlaneDir = true 
) const

Definition at line 21 of file TrackingPlane.cxx.

21  {
22  const double& sinalpha = trigCache.fSinA;
23  const double& cosalpha = trigCache.fCosA;
24  const double& sinbeta = trigCache.fSinB;
25  const double& cosbeta = trigCache.fCosB;
26  const double denom = (trackAlongPlaneDir ? par5d[4]*std::sqrt(1. + par5d[2]*par5d[2] + par5d[3]*par5d[3]) : -par5d[4]*std::sqrt(1. + par5d[2]*par5d[2] + par5d[3]*par5d[3]) );
27  SVector6 par6d;
28  par6d[0] = planePos.X() + par5d[0]*cosalpha;
29  par6d[1] = planePos.Y() + par5d[0]*sinalpha*sinbeta + par5d[1]*cosbeta;
30  par6d[2] = planePos.Z() - par5d[0]*sinalpha*cosbeta + par5d[1]*sinbeta;
31  par6d[3] = (par5d[2]*cosalpha + 1.*sinalpha)/denom;
32  par6d[4] = (par5d[2]*sinalpha*sinbeta + par5d[3]*cosbeta - cosalpha*sinbeta)/denom;
33  par6d[5] = (-par5d[2]*sinalpha*cosbeta + par5d[3]*sinbeta + cosalpha*cosbeta)/denom;
34  return par6d;
35  }
double std(const std::vector< short > &wf, const double ped_mean, size_t start, size_t nsample)
Definition: UtilFunc.cxx:42
ROOT::Math::SVector< Double32_t, 6 > SVector6
Definition: TrackingTypes.h:91
static SVector6 recob::tracking::Plane::Local5DToGlobal6DParameters ( const SVector5 par5d,
const Point_t planePos,
const Vector_t planeDir,
bool  trackAlongPlaneDir = true 
)
inlinestatic

Function to convert parameters from local to global coordinates. Local coordinates are on the plane with origin at planePos and orthogonal to planeDir. trackAlongPlaneDir is as given by trackDir.Dot(planeDir)>0.

Definition at line 131 of file TrackingPlane.h.

131  {
132  Plane p(planePos, planeDir); return p.Local5DToGlobal6DParameters(par5d, trackAlongPlaneDir);
133  }
pdgs p
Definition: selectors.fcl:22
Plane(const Point_t &planePos, const Vector_t &planeDir)
Constructor from reference position on the plane and direction orthogonal to the plane.
Definition: TrackingPlane.h:61
Point_t const& recob::tracking::Plane::position ( ) const
inline

Reference position on the plane.

Definition at line 66 of file TrackingPlane.h.

66 { return fPlanePos; }
Point_t fPlanePos
Position of a point on the plane.
double recob::tracking::Plane::sinAlpha ( ) const
inline

Definition at line 121 of file TrackingPlane.h.

121 { return fTrigCache.fSinA; }
TrigCache fTrigCache
Cached trigonometric function values.
double recob::tracking::Plane::sinBeta ( ) const
inline

Definition at line 123 of file TrackingPlane.h.

123 { return fTrigCache.fSinB; }
TrigCache fTrigCache
Cached trigonometric function values.

Member Data Documentation

Vector_t recob::tracking::Plane::fPlaneDir
private

Direction vector othogonal to the plane.

Definition at line 169 of file TrackingPlane.h.

Point_t recob::tracking::Plane::fPlanePos
private

Position of a point on the plane.

Definition at line 168 of file TrackingPlane.h.

TrigCache recob::tracking::Plane::fTrigCache
private

Cached trigonometric function values.

Definition at line 170 of file TrackingPlane.h.


The documentation for this class was generated from the following files: