ROOT   6.08/07 Reference Guide
ROOT::Math::RotationZYX Class Reference

Rotation class with the (3D) rotation represented by angles describing first a rotation of an angle phi (yaw) about the Z axis, followed by a rotation of an angle theta (pitch) about the new Y' axis, followed by a third rotation of an angle psi (roll) about the final X'' axis.

This is sometimes referred to as the Euler 321 sequence. It has not to be confused with the typical Goldstein definition of the Euler Angles (Z-X-Z or 313 sequence) which is used by the ROOT::Math::EulerAngles class.

Definition at line 71 of file RotationZYX.h.

## Public Types

typedef double Scalar

## Public Member Functions

RotationZYX ()
Default constructor. More...

RotationZYX (Scalar phi, Scalar theta, Scalar psi)
Constructor from phi, theta and psi. More...

template<class IT >
RotationZYX (IT begin, IT end)
Construct given a pair of pointers or iterators defining the beginning and end of an array of three Scalars, to be treated as the angles phi, theta and psi. More...

template<class OtherRotation >
RotationZYX (const OtherRotation &r)
Construct from another supported rotation type (see gv_detail::convert ) More...

template<class R >
Scalar Distance (const R &r) const
Distance between two rotations. More...

template<class IT >
void GetComponents (IT begin, IT end) const
Get the axis and then the angle into data specified by an iterator begin and another to the end of the desired data (4 past start). More...

template<class IT >
void GetComponents (IT begin) const
Get the axis and then the angle into data specified by an iterator begin. More...

void GetComponents (Scalar &phi, Scalar &theta, Scalar &psi) const
Get the components phi, theta, psi into three Scalars. More...

RotationZYX Inverse () const
Return inverse of a rotation. More...

void Invert ()
Invert a rotation in place. More...

bool operator!= (const RotationZYX &rhs) const

template<class CoordSystem , class U >
DisplacementVector3D< CoordSystem, U > operator() (const DisplacementVector3D< CoordSystem, U > &v) const
Rotation operation on a displacement vector in any coordinate system and tag. More...

template<class CoordSystem , class U >
PositionVector3D< CoordSystem, U > operator() (const PositionVector3D< CoordSystem, U > &v) const
Rotation operation on a position vector in any coordinate system. More...

template<class CoordSystem >
LorentzVector< CoordSystem > operator() (const LorentzVector< CoordSystem > &v) const
Rotation operation on a Lorentz vector in any 4D coordinate system. More...

template<class ForeignVector >
ForeignVector operator() (const ForeignVector &v) const
Rotation operation on an arbitrary vector v. More...

template<class AVector >
AVector operator* (const AVector &v) const
Overload operator * for rotation on a vector. More...

RotationZYX operator* (const RotationZYX &e) const
Multiply (combine) two rotations. More...

RotationZYX operator* (const Rotation3D &r) const

RotationZYX operator* (const AxisAngle &a) const

RotationZYX operator* (const Quaternion &q) const

RotationZYX operator* (const EulerAngles &q) const

RotationZYX operator* (const RotationX &rx) const

RotationZYX operator* (const RotationY &ry) const

RotationZYX operator* (const RotationZ &rz) const

template<class R >
RotationZYXoperator*= (const R &r)
Post-Multiply (on right) by another rotation : T = T*R. More...

template<class OtherRotation >
RotationZYXoperator= (OtherRotation const &r)
Assign from another supported rotation type (see gv_detail::convert ) More...

bool operator== (const RotationZYX &rhs) const
Equality/inequality operators. More...

Scalar Phi () const
Return Phi angle (Z rotation angle) More...

Scalar Psi () const
Return Psi angle (X'' rotation angle) More...

void Rectify ()
Re-adjust components place angles in canonical ranges. More...

template<class IT >
void SetComponents (IT begin, IT end)
Set the three Euler angles given a pair of pointers or iterators defining the beginning and end of an array of three Scalars. More...

void SetComponents (Scalar phi, Scalar theta, Scalar psi)
Set the components phi, theta, psi based on three Scalars. More...

void SetPhi (Scalar phi)
Set Phi angle (Z rotation angle) More...

void SetPsi (Scalar psi)
Set Psi angle (X'' rotation angle) More...

void SetTheta (Scalar theta)
Set Theta angle (Y' rotation angle) More...

Scalar Theta () const
Return Theta angle (Y' rotation angle) More...

## Static Private Member Functions

static double Pi ()

## Private Attributes

double fPhi

double fPsi

double fTheta

#include <Math/GenVector/RotationZYX.h>

## ◆ Scalar

 typedef double ROOT::Math::RotationZYX::Scalar

Definition at line 75 of file RotationZYX.h.

## ◆ RotationZYX() [1/4]

 ROOT::Math::RotationZYX::RotationZYX ( )
inline

Default constructor.

Definition at line 83 of file RotationZYX.h.

## ◆ RotationZYX() [2/4]

 ROOT::Math::RotationZYX::RotationZYX ( Scalar phi, Scalar theta, Scalar psi )
inline

Constructor from phi, theta and psi.

Definition at line 88 of file RotationZYX.h.

## ◆ RotationZYX() [3/4]

template<class IT >
 ROOT::Math::RotationZYX::RotationZYX ( IT begin, IT end )
inline

Construct given a pair of pointers or iterators defining the beginning and end of an array of three Scalars, to be treated as the angles phi, theta and psi.

Definition at line 98 of file RotationZYX.h.

## ◆ RotationZYX() [4/4]

template<class OtherRotation >
 ROOT::Math::RotationZYX::RotationZYX ( const OtherRotation & r )
inlineexplicit

Construct from another supported rotation type (see gv_detail::convert )

Definition at line 114 of file RotationZYX.h.

## ◆ Distance()

template<class R >
 Scalar ROOT::Math::RotationZYX::Distance ( const R & r ) const
inline

Distance between two rotations.

Definition at line 314 of file RotationZYX.h.

## ◆ GetComponents() [1/3]

template<class IT >
 void ROOT::Math::RotationZYX::GetComponents ( IT begin, IT end ) const
inline

Get the axis and then the angle into data specified by an iterator begin and another to the end of the desired data (4 past start).

Definition at line 152 of file RotationZYX.h.

## ◆ GetComponents() [2/3]

template<class IT >
 void ROOT::Math::RotationZYX::GetComponents ( IT begin ) const
inline

Get the axis and then the angle into data specified by an iterator begin.

Definition at line 166 of file RotationZYX.h.

## ◆ GetComponents() [3/3]

 void ROOT::Math::RotationZYX::GetComponents ( Scalar & phi, Scalar & theta, Scalar & psi ) const
inline

Get the components phi, theta, psi into three Scalars.

Definition at line 183 of file RotationZYX.h.

## ◆ Inverse()

 RotationZYX ROOT::Math::RotationZYX::Inverse ( ) const
inline

Return inverse of a rotation.

Definition at line 283 of file RotationZYX.h.

## ◆ Invert()

 void ROOT::Math::RotationZYX::Invert ( )

Invert a rotation in place.

Definition at line 139 of file RotationZYX.cxx.

## ◆ operator!=()

 bool ROOT::Math::RotationZYX::operator!= ( const RotationZYX & rhs ) const
inline

Definition at line 325 of file RotationZYX.h.

## ◆ operator()() [1/4]

template<class CoordSystem , class U >
 DisplacementVector3D ROOT::Math::RotationZYX::operator() ( const DisplacementVector3D< CoordSystem, U > & v ) const
inline

Rotation operation on a displacement vector in any coordinate system and tag.

Definition at line 225 of file RotationZYX.h.

## ◆ operator()() [2/4]

template<class CoordSystem , class U >
 PositionVector3D ROOT::Math::RotationZYX::operator() ( const PositionVector3D< CoordSystem, U > & v ) const
inline

Rotation operation on a position vector in any coordinate system.

Definition at line 234 of file RotationZYX.h.

## ◆ operator()() [3/4]

template<class CoordSystem >
 LorentzVector ROOT::Math::RotationZYX::operator() ( const LorentzVector< CoordSystem > & v ) const
inline

Rotation operation on a Lorentz vector in any 4D coordinate system.

Definition at line 245 of file RotationZYX.h.

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

template<class ForeignVector >
 ForeignVector ROOT::Math::RotationZYX::operator() ( const ForeignVector & v ) const
inline

Rotation operation on an arbitrary vector v.

Preconditions: v must implement methods x(), y(), and z() and the arbitrary vector type must have a constructor taking (x,y,z)

Definition at line 259 of file RotationZYX.h.

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

template<class AVector >
 AVector ROOT::Math::RotationZYX::operator* ( const AVector & v ) const
inline

Overload operator * for rotation on a vector.

Definition at line 270 of file RotationZYX.h.

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

 RotationZYX ROOT::Math::RotationZYX::operator* ( const RotationZYX & e ) const

Multiply (combine) two rotations.

Definition at line 65 of file RotationZYX.cxx.

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

 RotationZYX ROOT::Math::RotationZYX::operator* ( const Rotation3D & r ) const

Definition at line 50 of file RotationZYX.cxx.

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

 RotationZYX ROOT::Math::RotationZYX::operator* ( const AxisAngle & a ) const

Definition at line 55 of file RotationZYX.cxx.

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

 RotationZYX ROOT::Math::RotationZYX::operator* ( const Quaternion & q ) const

Definition at line 70 of file RotationZYX.cxx.

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

 RotationZYX ROOT::Math::RotationZYX::operator* ( const EulerAngles & q ) const

Definition at line 60 of file RotationZYX.cxx.

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

 RotationZYX ROOT::Math::RotationZYX::operator* ( const RotationX & rx ) const

Definition at line 75 of file RotationZYX.cxx.

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

 RotationZYX ROOT::Math::RotationZYX::operator* ( const RotationY & ry ) const

Definition at line 80 of file RotationZYX.cxx.

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

 RotationZYX ROOT::Math::RotationZYX::operator* ( const RotationZ & rz ) const

Definition at line 85 of file RotationZYX.cxx.

## ◆ operator*=()

template<class R >
 RotationZYX& ROOT::Math::RotationZYX::operator*= ( const R & r )
inline

Post-Multiply (on right) by another rotation : T = T*R.

Definition at line 308 of file RotationZYX.h.

## ◆ operator=()

template<class OtherRotation >
 RotationZYX& ROOT::Math::RotationZYX::operator= ( OtherRotation const & r )
inline

Assign from another supported rotation type (see gv_detail::convert )

Definition at line 121 of file RotationZYX.h.

## ◆ operator==()

 bool ROOT::Math::RotationZYX::operator== ( const RotationZYX & rhs ) const
inline

Equality/inequality operators.

Definition at line 319 of file RotationZYX.h.

## ◆ Phi()

 Scalar ROOT::Math::RotationZYX::Phi ( ) const
inline

Return Phi angle (Z rotation angle)

Definition at line 195 of file RotationZYX.h.

## ◆ Pi()

 static double ROOT::Math::RotationZYX::Pi ( )
inlinestaticprivate

Definition at line 335 of file RotationZYX.h.

## ◆ Psi()

 Scalar ROOT::Math::RotationZYX::Psi ( ) const
inline

Return Psi angle (X'' rotation angle)

Definition at line 215 of file RotationZYX.h.

## ◆ Rectify()

 void ROOT::Math::RotationZYX::Rectify ( )

Re-adjust components place angles in canonical ranges.

Definition at line 109 of file RotationZYX.cxx.

## ◆ SetComponents() [1/2]

template<class IT >
 void ROOT::Math::RotationZYX::SetComponents ( IT begin, IT end )
inline

Set the three Euler angles given a pair of pointers or iterators defining the beginning and end of an array of three Scalars.

Definition at line 135 of file RotationZYX.h.

## ◆ SetComponents() [2/2]

 void ROOT::Math::RotationZYX::SetComponents ( Scalar phi, Scalar theta, Scalar psi )
inline

Set the components phi, theta, psi based on three Scalars.

Definition at line 175 of file RotationZYX.h.

## ◆ SetPhi()

 void ROOT::Math::RotationZYX::SetPhi ( Scalar phi )
inline

Set Phi angle (Z rotation angle)

Definition at line 190 of file RotationZYX.h.

## ◆ SetPsi()

 void ROOT::Math::RotationZYX::SetPsi ( Scalar psi )
inline

Set Psi angle (X'' rotation angle)

Definition at line 210 of file RotationZYX.h.

## ◆ SetTheta()

 void ROOT::Math::RotationZYX::SetTheta ( Scalar theta )
inline

Set Theta angle (Y' rotation angle)

Definition at line 200 of file RotationZYX.h.

## ◆ Theta()

 Scalar ROOT::Math::RotationZYX::Theta ( ) const
inline

Return Theta angle (Y' rotation angle)

Definition at line 205 of file RotationZYX.h.

## ◆ fPhi

 double ROOT::Math::RotationZYX::fPhi
private

Definition at line 331 of file RotationZYX.h.

## ◆ fPsi

 double ROOT::Math::RotationZYX::fPsi
private

Definition at line 333 of file RotationZYX.h.

## ◆ fTheta

 double ROOT::Math::RotationZYX::fTheta
private

Definition at line 332 of file RotationZYX.h.

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