ROOT   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 AxisAngle &r, const Transform3D< 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 Transform3D< 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 Transform3D< T > &t)

template<class T >
Transform3D< T > operator* (const Quaternion &r, const Translation3D< T > &t)

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 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 Transform3D< T > &t)

template<class T >
Transform3D< T > operator* (const RotationX &r, const Translation3D< T > &t)

template<class T >
Transform3D< T > operator* (const RotationY &r, const Transform3D< 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 Transform3D< 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 Transform3D< T > &t)

template<class T >
Transform3D< T > operator* (const RotationZYX &r, const Translation3D< T > &t)

template<class T >
Transform3D< T > operator* (const Transform3D< T > &t, const AxisAngle &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 Quaternion &r)

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 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 Translation3D< T > &t, const AxisAngle &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 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<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 Transform3D< T > &t)
print the 12 components of the Transform3D More...

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

## ◆ 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 AxisAngle & r, const Transform3D< T > & t )
inline

Definition at line 1276 of file Transform3D.h.

## ◆ operator*() [2/34]

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

Definition at line 1098 of file Transform3D.h.

## ◆ operator*() [3/34]

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

Definition at line 1270 of file Transform3D.h.

## ◆ operator*() [4/34]

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

Definition at line 1104 of file Transform3D.h.

## ◆ operator*() [5/34]

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

Definition at line 1282 of file Transform3D.h.

## ◆ operator*() [6/34]

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

Definition at line 1110 of file Transform3D.h.

## ◆ operator*() [7/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 1241 of file Transform3D.h.

## ◆ operator*() [8/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 1069 of file Transform3D.h.

## ◆ operator*() [9/34]

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

Definition at line 1246 of file Transform3D.h.

## ◆ operator*() [10/34]

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

Definition at line 1074 of file Transform3D.h.

## ◆ operator*() [11/34]

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

Definition at line 1252 of file Transform3D.h.

## ◆ operator*() [12/34]

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

Definition at line 1080 of file Transform3D.h.

## ◆ operator*() [13/34]

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

Definition at line 1258 of file Transform3D.h.

## ◆ operator*() [14/34]

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

Definition at line 1086 of file Transform3D.h.

## ◆ operator*() [15/34]

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

Definition at line 1264 of file Transform3D.h.

## ◆ operator*() [16/34]

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

Definition at line 1092 of file Transform3D.h.

## ◆ operator*() [17/34]

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

Definition at line 1224 of file Transform3D.h.

## ◆ operator*() [18/34]

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

Definition at line 1219 of file Transform3D.h.

## ◆ operator*() [19/34]

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

Definition at line 1229 of file Transform3D.h.

## ◆ operator*() [20/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 1194 of file Transform3D.h.

## ◆ operator*() [21/34]

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

Definition at line 1199 of file Transform3D.h.

## ◆ operator*() [22/34]

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

Definition at line 1204 of file Transform3D.h.

## ◆ operator*() [23/34]

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

Definition at line 1209 of file Transform3D.h.

## ◆ operator*() [24/34]

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

Definition at line 1214 of file Transform3D.h.

## ◆ operator*() [25/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 1170 of file Transform3D.h.

## ◆ operator*() [26/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 1181 of file Transform3D.h.

## ◆ operator*() [27/34]

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

Definition at line 1158 of file Transform3D.h.

## ◆ operator*() [28/34]

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

Definition at line 1148 of file Transform3D.h.

## ◆ operator*() [29/34]

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

Definition at line 1153 of file Transform3D.h.

## ◆ operator*() [30/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 1123 of file Transform3D.h.

## ◆ operator*() [31/34]

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

Definition at line 1128 of file Transform3D.h.

## ◆ operator*() [32/34]

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

Definition at line 1133 of file Transform3D.h.

## ◆ operator*() [33/34]

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

Definition at line 1138 of file Transform3D.h.

## ◆ operator*() [34/34]

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

Definition at line 1143 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 Transform3D< T > & t )

print the 12 components of the Transform3D

Definition at line 1296 of file Transform3D.h.

## ◆ operator<<() [3/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.