Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
ROOT::Math::EulerAngles Class Reference

EulerAngles class describing rotation as three angles (Euler Angles).

The Euler angles definition matches that of Classical Mechanics (Goldstein). It is also the same convention defined in mathworld and used in Mathematica and CLHEP. Note that the ROOT class TRotation defines a slightly different convention.

See also
Overview of the physics vector library

Definition at line 45 of file EulerAngles.h.

Public Types

typedef double Scalar
 

Public Member Functions

constexpr EulerAngles ()
 Default constructor.
 
template<class OtherRotation >
constexpr EulerAngles (const OtherRotation &r)
 Create from any other supported rotation (see gv_detail::convert )
 
template<class IT >
constexpr EulerAngles (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.
 
 EulerAngles (Scalar phi, Scalar theta, Scalar psi)
 Constructor from phi, theta and psi.
 
template<class R >
Scalar Distance (const R &r) const
 Distance between two rotations.
 
template<class IT >
void GetComponents (IT begin) const
 Get the axis and then the angle into data specified by an iterator begin.
 
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).
 
void GetComponents (Scalar &phi, Scalar &theta, Scalar &psi) const
 Get the components phi, theta, psi into three Scalars.
 
EulerAngles Inverse () const
 Return inverse of a rotation.
 
void Invert ()
 Invert a rotation in place.
 
bool operator!= (const EulerAngles &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.
 
template<class ForeignVector >
ForeignVector operator() (const ForeignVector &v) const
 Rotation operation on an arbitrary vector v.
 
template<class CoordSystem >
LorentzVector< CoordSystem > operator() (const LorentzVector< CoordSystem > &v) const
 Rotation operation on a Lorentz vector in any 4D coordinate system.
 
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.
 
template<class AVector >
AVector operator* (const AVector &v) const
 Overload operator * for rotation on a vector.
 
EulerAngles operator* (const AxisAngle &a) const
 
EulerAngles operator* (const EulerAngles &e) const
 
EulerAngles operator* (const Quaternion &q) const
 
EulerAngles operator* (const Rotation3D &r) const
 Multiply (combine) two rotations.
 
EulerAngles operator* (const RotationX &rx) const
 
EulerAngles operator* (const RotationY &ry) const
 
EulerAngles operator* (const RotationZ &rz) const
 
template<class R >
EulerAnglesoperator*= (const R &r)
 Post-Multiply (on right) by another rotation : T = T*R.
 
template<class OtherRotation >
EulerAnglesoperator= (OtherRotation const &r)
 Assign from any other rotation (see gv_detail::convert )
 
bool operator== (const EulerAngles &rhs) const
 Equality/inequality operators.
 
Scalar Phi () const
 Return Phi Euler angle.
 
Scalar Psi () const
 Return Psi Euler angle.
 
void Rectify ()
 Re-adjust components place angles in canonical ranges.
 
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.
 
void SetComponents (Scalar phi, Scalar theta, Scalar psi)
 Set the components phi, theta, psi based on three Scalars.
 
void SetPhi (Scalar phi)
 Set Phi Euler angle // JMM 30 Jan.
 
void SetPsi (Scalar psi)
 Set Psi Euler angle // JMM 30 Jan.
 
void SetTheta (Scalar theta)
 Set Theta Euler angle // JMM 30 Jan.
 
Scalar Theta () const
 Return Theta Euler angle.
 

Static Private Member Functions

static double Pi ()
 

Private Attributes

double fPhi
 
double fPsi
 
double fTheta
 

#include <Math/GenVector/EulerAngles.h>

Member Typedef Documentation

◆ Scalar

Definition at line 49 of file EulerAngles.h.

Constructor & Destructor Documentation

◆ EulerAngles() [1/4]

constexpr ROOT::Math::EulerAngles::EulerAngles ( )
inlineconstexpr

Default constructor.

Definition at line 54 of file EulerAngles.h.

◆ EulerAngles() [2/4]

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

Constructor from phi, theta and psi.

Definition at line 59 of file EulerAngles.h.

◆ EulerAngles() [3/4]

template<class IT >
constexpr ROOT::Math::EulerAngles::EulerAngles ( IT  begin,
IT  end 
)
inlineconstexpr

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 69 of file EulerAngles.h.

◆ EulerAngles() [4/4]

template<class OtherRotation >
constexpr ROOT::Math::EulerAngles::EulerAngles ( const OtherRotation &  r)
inlineexplicitconstexpr

Create from any other supported rotation (see gv_detail::convert )

Definition at line 85 of file EulerAngles.h.

Member Function Documentation

◆ Distance()

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

Distance between two rotations.

Definition at line 327 of file EulerAngles.h.

◆ GetComponents() [1/3]

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

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

Definition at line 179 of file EulerAngles.h.

◆ GetComponents() [2/3]

template<class IT >
void ROOT::Math::EulerAngles::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 167 of file EulerAngles.h.

◆ GetComponents() [3/3]

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

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

Definition at line 196 of file EulerAngles.h.

◆ Inverse()

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

Return inverse of a rotation.

Definition at line 302 of file EulerAngles.h.

◆ Invert()

void ROOT::Math::EulerAngles::Invert ( )
inline

Invert a rotation in place.

Definition at line 293 of file EulerAngles.h.

◆ operator!=()

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

Definition at line 338 of file EulerAngles.h.

◆ operator()() [1/4]

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

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

Definition at line 238 of file EulerAngles.h.

◆ operator()() [2/4]

template<class ForeignVector >
ForeignVector ROOT::Math::EulerAngles::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 272 of file EulerAngles.h.

◆ operator()() [3/4]

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

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

Definition at line 258 of file EulerAngles.h.

◆ operator()() [4/4]

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

Rotation operation on a position vector in any coordinate system.

Definition at line 247 of file EulerAngles.h.

◆ operator*() [1/8]

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

Overload operator * for rotation on a vector.

Definition at line 283 of file EulerAngles.h.

◆ operator*() [2/8]

EulerAngles ROOT::Math::EulerAngles::operator* ( const AxisAngle a) const

Definition at line 77 of file EulerAngles.cxx.

◆ operator*() [3/8]

EulerAngles ROOT::Math::EulerAngles::operator* ( const EulerAngles e) const

Definition at line 82 of file EulerAngles.cxx.

◆ operator*() [4/8]

EulerAngles ROOT::Math::EulerAngles::operator* ( const Quaternion q) const

Definition at line 86 of file EulerAngles.cxx.

◆ operator*() [5/8]

EulerAngles ROOT::Math::EulerAngles::operator* ( const Rotation3D r) const

Multiply (combine) two rotations.

Definition at line 72 of file EulerAngles.cxx.

◆ operator*() [6/8]

EulerAngles ROOT::Math::EulerAngles::operator* ( const RotationX rx) const

Definition at line 91 of file EulerAngles.cxx.

◆ operator*() [7/8]

EulerAngles ROOT::Math::EulerAngles::operator* ( const RotationY ry) const

Definition at line 96 of file EulerAngles.cxx.

◆ operator*() [8/8]

EulerAngles ROOT::Math::EulerAngles::operator* ( const RotationZ rz) const

Definition at line 101 of file EulerAngles.cxx.

◆ operator*=()

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

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

Definition at line 321 of file EulerAngles.h.

◆ operator=()

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

Assign from any other rotation (see gv_detail::convert )

Definition at line 91 of file EulerAngles.h.

◆ operator==()

bool ROOT::Math::EulerAngles::operator== ( const EulerAngles rhs) const
inline

Equality/inequality operators.

Definition at line 332 of file EulerAngles.h.

◆ Phi()

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

Return Phi Euler angle.

Definition at line 208 of file EulerAngles.h.

◆ Pi()

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

Definition at line 348 of file EulerAngles.h.

◆ Psi()

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

Return Psi Euler angle.

Definition at line 228 of file EulerAngles.h.

◆ Rectify()

void ROOT::Math::EulerAngles::Rectify ( )

Re-adjust components place angles in canonical ranges.

Definition at line 37 of file EulerAngles.cxx.

◆ SetComponents() [1/2]

template<class IT >
void ROOT::Math::EulerAngles::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 153 of file EulerAngles.h.

◆ SetComponents() [2/2]

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

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

Definition at line 188 of file EulerAngles.h.

◆ SetPhi()

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

Set Phi Euler angle // JMM 30 Jan.

2006

Definition at line 203 of file EulerAngles.h.

◆ SetPsi()

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

Set Psi Euler angle // JMM 30 Jan.

2006

Definition at line 223 of file EulerAngles.h.

◆ SetTheta()

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

Set Theta Euler angle // JMM 30 Jan.

2006

Definition at line 213 of file EulerAngles.h.

◆ Theta()

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

Return Theta Euler angle.

Definition at line 218 of file EulerAngles.h.

Member Data Documentation

◆ fPhi

double ROOT::Math::EulerAngles::fPhi
private

Definition at line 344 of file EulerAngles.h.

◆ fPsi

double ROOT::Math::EulerAngles::fPsi
private

Definition at line 346 of file EulerAngles.h.

◆ fTheta

double ROOT::Math::EulerAngles::fTheta
private

Definition at line 345 of file EulerAngles.h.

Libraries for ROOT::Math::EulerAngles:

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