Logo ROOT   6.19/01
Reference Guide
ROOT::Math::Impl Namespace Reference

Classes

class  Plane3D
 Class describing a geometrical plane in 3 dimensions. More...
 
class  Transform3D
 Basic 3D Transformation class describing a rotation and then a translation The internal data are a 3D rotation data (represented as a 3x3 matrix) and a 3D vector data. More...
 
class  Translation3D
 Class describing a 3 dimensional translation. More...
 

Functions

template<typename Scalar >
Scalar Eta_FromRhoZ (Scalar rho, Scalar z)
 Calculate eta given rho and zeta. More...
 
template<typename Scalar >
Scalar Eta_FromTheta (Scalar theta, Scalar r)
 Implementation of eta from -log(tan(theta/2)). More...
 
template<class T >
Transform3D< T > operator* (const Rotation3D &r, const Translation3D< T > &t)
 combine a translation and a rotation to give a transform3d First the translation then the rotation More...
 
template<class T >
Transform3D< T > operator* (const RotationX &r, const Translation3D< T > &t)
 
template<class T >
Transform3D< T > operator* (const RotationY &r, const Translation3D< T > &t)
 
template<class T >
Transform3D< T > operator* (const RotationZ &r, const Translation3D< T > &t)
 
template<class T >
Transform3D< T > operator* (const RotationZYX &r, const Translation3D< T > &t)
 
template<class T >
Transform3D< T > operator* (const AxisAngle &r, const Translation3D< T > &t)
 
template<class T >
Transform3D< T > operator* (const EulerAngles &r, const Translation3D< T > &t)
 
template<class T >
Transform3D< T > operator* (const Quaternion &r, const Translation3D< T > &t)
 
template<class T >
Transform3D< T > operator* (const Translation3D< T > &t, const Rotation3D &r)
 combine a rotation and a translation to give a transform3d First a rotation then the translation More...
 
template<class T >
Transform3D< T > operator* (const Translation3D< T > &t, const RotationX &r)
 
template<class T >
Transform3D< T > operator* (const Translation3D< T > &t, const RotationY &r)
 
template<class T >
Transform3D< T > operator* (const Translation3D< T > &t, const RotationZ &r)
 
template<class T >
Transform3D< T > operator* (const Translation3D< T > &t, const RotationZYX &r)
 
template<class T >
Transform3D< T > operator* (const Translation3D< T > &t, const EulerAngles &r)
 
template<class T >
Transform3D< T > operator* (const Translation3D< T > &t, const Quaternion &r)
 
template<class T >
Transform3D< T > operator* (const Translation3D< T > &t, const AxisAngle &r)
 
template<class T >
Transform3D< T > operator* (const Transform3D< T > &t, const Translation3D< T > &d)
 combine a transformation and a translation to give a transform3d First the translation then the transform3D More...
 
template<class T >
Transform3D< T > operator* (const Translation3D< T > &d, const Transform3D< T > &t)
 combine a translation and a transformation to give a transform3d First the transformation then the translation More...
 
template<class T >
Transform3D< T > operator* (const Transform3D< T > &t, const Rotation3D &r)
 combine a transformation and a rotation to give a transform3d First the rotation then the transform3D More...
 
template<class T >
Transform3D< T > operator* (const Transform3D< T > &t, const RotationX &r)
 
template<class T >
Transform3D< T > operator* (const Transform3D< T > &t, const RotationY &r)
 
template<class T >
Transform3D< T > operator* (const Transform3D< T > &t, const RotationZ &r)
 
template<class T >
Transform3D< T > operator* (const Transform3D< T > &t, const RotationZYX &r)
 
template<class T >
Transform3D< T > operator* (const Transform3D< T > &t, const EulerAngles &r)
 
template<class T >
Transform3D< T > operator* (const Transform3D< T > &t, const AxisAngle &r)
 
template<class T >
Transform3D< T > operator* (const Transform3D< T > &t, const Quaternion &r)
 
template<class T >
Transform3D< T > operator* (const Rotation3D &r, const Transform3D< T > &t)
 combine a rotation and a transformation to give a transform3d First the transformation then the rotation More...
 
template<class T >
Transform3D< T > operator* (const RotationX &r, const Transform3D< T > &t)
 
template<class T >
Transform3D< T > operator* (const RotationY &r, const Transform3D< T > &t)
 
template<class T >
Transform3D< T > operator* (const RotationZ &r, const Transform3D< T > &t)
 
template<class T >
Transform3D< T > operator* (const RotationZYX &r, const Transform3D< T > &t)
 
template<class T >
Transform3D< T > operator* (const EulerAngles &r, const Transform3D< T > &t)
 
template<class T >
Transform3D< T > operator* (const AxisAngle &r, const Transform3D< T > &t)
 
template<class T >
Transform3D< T > operator* (const Quaternion &r, const Transform3D< T > &t)
 
template<typename T >
std::ostream & operator<< (std::ostream &os, const Plane3D< T > &p)
 Stream Output and Input. More...
 
template<class T >
std::ostream & operator<< (std::ostream &os, const Translation3D< T > &t)
 
template<class T >
std::ostream & operator<< (std::ostream &os, const Transform3D< T > &t)
 print the 12 components of the Transform3D More...
 

Function Documentation

◆ Eta_FromRhoZ()

template<typename Scalar >
Scalar ROOT::Math::Impl::Eta_FromRhoZ ( Scalar  rho,
Scalar  z 
)
inline

Calculate eta given rho and zeta.

This formula is faster than the standard calculation (below) from log(tan(theta/2) but one has to be careful when rho is much smaller than z (large eta values) Formula is eta = log( zs + sqrt(zs^2 + 1) ) where zs = z/rho

For large value of z_scaled (tan(theta) ) one can appoximate the sqrt via a Taylor expansion We do the approximation of the sqrt if the numerical error is of the same order of second term of the sqrt.expansion: eps > 1/zs^4 => zs > 1/(eps^0.25)

When rho == 0 we use etaMax (see definition in etaMax.h)

Definition at line 48 of file eta.h.

◆ Eta_FromTheta()

template<typename Scalar >
Scalar ROOT::Math::Impl::Eta_FromTheta ( Scalar  theta,
Scalar  r 
)
inline

Implementation of eta from -log(tan(theta/2)).

This is convenient when theta is already known (for example in a polar coorindate system)

Definition at line 81 of file eta.h.

◆ operator*() [1/34]

template<class T >
Transform3D<T> ROOT::Math::Impl::operator* ( const Rotation3D r,
const Translation3D< T > &  t 
)
inline

combine a translation and a rotation to give a transform3d First the translation then the rotation

Definition at line 1075 of file Transform3D.h.

◆ operator*() [2/34]

template<class T >
Transform3D<T> ROOT::Math::Impl::operator* ( const RotationX r,
const Translation3D< T > &  t 
)
inline

Definition at line 1080 of file Transform3D.h.

◆ operator*() [3/34]

template<class T >
Transform3D<T> ROOT::Math::Impl::operator* ( const RotationY r,
const Translation3D< T > &  t 
)
inline

Definition at line 1086 of file Transform3D.h.

◆ operator*() [4/34]

template<class T >
Transform3D<T> ROOT::Math::Impl::operator* ( const RotationZ r,
const Translation3D< T > &  t 
)
inline

Definition at line 1092 of file Transform3D.h.

◆ operator*() [5/34]

template<class T >
Transform3D<T> ROOT::Math::Impl::operator* ( const RotationZYX r,
const Translation3D< T > &  t 
)
inline

Definition at line 1098 of file Transform3D.h.

◆ operator*() [6/34]

template<class T >
Transform3D<T> ROOT::Math::Impl::operator* ( const AxisAngle r,
const Translation3D< T > &  t 
)
inline

Definition at line 1104 of file Transform3D.h.

◆ operator*() [7/34]

template<class T >
Transform3D<T> ROOT::Math::Impl::operator* ( const EulerAngles r,
const Translation3D< T > &  t 
)
inline

Definition at line 1110 of file Transform3D.h.

◆ operator*() [8/34]

template<class T >
Transform3D<T> ROOT::Math::Impl::operator* ( const Quaternion r,
const Translation3D< T > &  t 
)
inline

Definition at line 1116 of file Transform3D.h.

◆ operator*() [9/34]

template<class T >
Transform3D<T> ROOT::Math::Impl::operator* ( const Translation3D< T > &  t,
const Rotation3D r 
)
inline

combine a rotation and a translation to give a transform3d First a rotation then the translation

Definition at line 1129 of file Transform3D.h.

◆ operator*() [10/34]

template<class T >
Transform3D<T> ROOT::Math::Impl::operator* ( const Translation3D< T > &  t,
const RotationX r 
)
inline

Definition at line 1134 of file Transform3D.h.

◆ operator*() [11/34]

template<class T >
Transform3D<T> ROOT::Math::Impl::operator* ( const Translation3D< T > &  t,
const RotationY r 
)
inline

Definition at line 1139 of file Transform3D.h.

◆ operator*() [12/34]

template<class T >
Transform3D<T> ROOT::Math::Impl::operator* ( const Translation3D< T > &  t,
const RotationZ r 
)
inline

Definition at line 1144 of file Transform3D.h.

◆ operator*() [13/34]

template<class T >
Transform3D<T> ROOT::Math::Impl::operator* ( const Translation3D< T > &  t,
const RotationZYX r 
)
inline

Definition at line 1149 of file Transform3D.h.

◆ operator*() [14/34]

template<class T >
Transform3D<T> ROOT::Math::Impl::operator* ( const Translation3D< T > &  t,
const EulerAngles r 
)
inline

Definition at line 1154 of file Transform3D.h.

◆ operator*() [15/34]

template<class T >
Transform3D<T> ROOT::Math::Impl::operator* ( const Translation3D< T > &  t,
const Quaternion r 
)
inline

Definition at line 1159 of file Transform3D.h.

◆ operator*() [16/34]

template<class T >
Transform3D<T> ROOT::Math::Impl::operator* ( const Translation3D< T > &  t,
const AxisAngle r 
)
inline

Definition at line 1164 of file Transform3D.h.

◆ operator*() [17/34]

template<class T >
Transform3D<T> ROOT::Math::Impl::operator* ( const Transform3D< T > &  t,
const Translation3D< T > &  d 
)
inline

combine a transformation and a translation to give a transform3d First the translation then the transform3D

Definition at line 1176 of file Transform3D.h.

◆ operator*() [18/34]

template<class T >
Transform3D<T> ROOT::Math::Impl::operator* ( const Translation3D< T > &  d,
const Transform3D< T > &  t 
)
inline

combine a translation and a transformation to give a transform3d First the transformation then the translation

Definition at line 1187 of file Transform3D.h.

◆ operator*() [19/34]

template<class T >
Transform3D<T> ROOT::Math::Impl::operator* ( const Transform3D< T > &  t,
const Rotation3D r 
)
inline

combine a transformation and a rotation to give a transform3d First the rotation then the transform3D

Definition at line 1200 of file Transform3D.h.

◆ operator*() [20/34]

template<class T >
Transform3D<T> ROOT::Math::Impl::operator* ( const Transform3D< T > &  t,
const RotationX r 
)
inline

Definition at line 1205 of file Transform3D.h.

◆ operator*() [21/34]

template<class T >
Transform3D<T> ROOT::Math::Impl::operator* ( const Transform3D< T > &  t,
const RotationY r 
)
inline

Definition at line 1210 of file Transform3D.h.

◆ operator*() [22/34]

template<class T >
Transform3D<T> ROOT::Math::Impl::operator* ( const Transform3D< T > &  t,
const RotationZ r 
)
inline

Definition at line 1215 of file Transform3D.h.

◆ operator*() [23/34]

template<class T >
Transform3D<T> ROOT::Math::Impl::operator* ( const Transform3D< T > &  t,
const RotationZYX r 
)
inline

Definition at line 1220 of file Transform3D.h.

◆ operator*() [24/34]

template<class T >
Transform3D<T> ROOT::Math::Impl::operator* ( const Transform3D< T > &  t,
const EulerAngles r 
)
inline

Definition at line 1225 of file Transform3D.h.

◆ operator*() [25/34]

template<class T >
Transform3D<T> ROOT::Math::Impl::operator* ( const Transform3D< T > &  t,
const AxisAngle r 
)
inline

Definition at line 1230 of file Transform3D.h.

◆ operator*() [26/34]

template<class T >
Transform3D<T> ROOT::Math::Impl::operator* ( const Transform3D< T > &  t,
const Quaternion r 
)
inline

Definition at line 1235 of file Transform3D.h.

◆ operator*() [27/34]

template<class T >
Transform3D<T> ROOT::Math::Impl::operator* ( const Rotation3D r,
const Transform3D< T > &  t 
)
inline

combine a rotation and a transformation to give a transform3d First the transformation then the rotation

Definition at line 1247 of file Transform3D.h.

◆ operator*() [28/34]

template<class T >
Transform3D<T> ROOT::Math::Impl::operator* ( const RotationX r,
const Transform3D< T > &  t 
)
inline

Definition at line 1252 of file Transform3D.h.

◆ operator*() [29/34]

template<class T >
Transform3D<T> ROOT::Math::Impl::operator* ( const RotationY r,
const Transform3D< T > &  t 
)
inline

Definition at line 1258 of file Transform3D.h.

◆ operator*() [30/34]

template<class T >
Transform3D<T> ROOT::Math::Impl::operator* ( const RotationZ r,
const Transform3D< T > &  t 
)
inline

Definition at line 1264 of file Transform3D.h.

◆ operator*() [31/34]

template<class T >
Transform3D<T> ROOT::Math::Impl::operator* ( const RotationZYX r,
const Transform3D< T > &  t 
)
inline

Definition at line 1270 of file Transform3D.h.

◆ operator*() [32/34]

template<class T >
Transform3D<T> ROOT::Math::Impl::operator* ( const EulerAngles r,
const Transform3D< T > &  t 
)
inline

Definition at line 1276 of file Transform3D.h.

◆ operator*() [33/34]

template<class T >
Transform3D<T> ROOT::Math::Impl::operator* ( const AxisAngle r,
const Transform3D< T > &  t 
)
inline

Definition at line 1282 of file Transform3D.h.

◆ operator*() [34/34]

template<class T >
Transform3D<T> ROOT::Math::Impl::operator* ( const Quaternion r,
const Transform3D< T > &  t 
)
inline

Definition at line 1288 of file Transform3D.h.

◆ operator<<() [1/3]

template<typename T >
std::ostream& ROOT::Math::Impl::operator<< ( std::ostream &  os,
const Plane3D< T > &  p 
)

Stream Output and Input.

Definition at line 292 of file Plane3D.h.

◆ operator<<() [2/3]

template<class T >
std::ostream& ROOT::Math::Impl::operator<< ( std::ostream &  os,
const Translation3D< T > &  t 
)

Definition at line 292 of file Translation3D.h.

◆ operator<<() [3/3]

template<class T >
std::ostream& ROOT::Math::Impl::operator<< ( std::ostream &  os,
const Transform3D< T > &  t 
)

print the 12 components of the Transform3D

Definition at line 1302 of file Transform3D.h.