Logo ROOT   6.16/01
Reference Guide
List of all members | Public Types | Public Member Functions | Protected Member Functions | Private Attributes | List of all members
ROOT::Math::Boost Class Reference

Lorentz boost class with the (4D) transformation represented internally by a 4x4 orthosymplectic matrix.

A variable names bgamma appears in several places in this file.

See also BoostX, BoostY and BoostZ for classes representing specialized Lorentz boosts. Also, the 3-D rotation classes can be considered to be special Lorentz transformations which do not mix space and time components.

A few words of elaboration are needed to make its meaning clear. On page 69 of Misner, Thorne and Wheeler, (Exercise 2.7) the elements of the matrix for a general Lorentz boost are given as

\[ \Lambda^{j'}_k = \Lambda^{k'}_j = (\gamma - 1) n^j n^k + \delta^{jk} \]

where the n^i are unit vectors in the direction of the three spatial axes. Using the definitions, \( n^i = \beta_i/\beta \) , then, for example,

\[ \Lambda_{xy} = (\gamma - 1) n_x n_y = (\gamma - 1) \beta_x \beta_y/\beta^2 \]

By definition,

\[ \gamma^2 = 1/(1 - \beta^2) \]

so that

\[ \gamma^2 \beta^2 = \gamma^2 - 1 \]

or

\[ \beta^2 = (\gamma^2 - 1)/\gamma^2 \]

If we insert this into the expression for \( \Lambda_{xy} \), we get

\[ \Lambda_{xy} = (\gamma - 1) \gamma^2/(\gamma^2 - 1) \beta_x \beta_y \]

or, finally

\[ \Lambda_{xy} = \gamma^2/(\gamma+1) \beta_x \beta_y \]

The expression \( \gamma^2/(\gamma+1) \) is what we call bgamma in the code below.

Definition at line 46 of file Boost.h.

Public Types

enum  EBoostMatrixIndex {
  kXX = 0 , kXY = 1 , kXZ = 2 , kXT = 3 ,
  kYY = 4 , kYZ = 5 , kYT = 6 , kZZ = 7 ,
  kZT = 8 , kTT = 9
}
 
enum  ELorentzRotationMatrixIndex {
  kLXX = 0 , kLXY = 1 , kLXZ = 2 , kLXT = 3 ,
  kLYX = 4 , kLYY = 5 , kLYZ = 6 , kLYT = 7 ,
  kLZX = 8 , kLZY = 9 , kLZZ = 10 , kLZT = 11 ,
  kLTX = 12 , kLTY = 13 , kLTZ = 14 , kLTT = 15
}
 
typedef double Scalar
 
typedef DisplacementVector3D< Cartesian3D< double >, DefaultCoordinateSystemTagXYZVector
 The beta vector for this boost. More...
 

Public Member Functions

 Boost ()
 Default constructor (identity transformation) More...
 
 Boost (Boost const &b)
 copy constructor More...
 
 Boost (BoostX const &bx)
 Construct from an axial boost. More...
 
 Boost (BoostY const &by)
 
 Boost (BoostZ const &bz)
 
template<class Avector >
 Boost (const Avector &beta)
 Construct given a beta vector (which must have methods x(), y(), z()) More...
 
template<class IT >
 Boost (IT begin, IT end)
 Construct given a pair of pointers or iterators defining the beginning and end of an array of three Scalars to use as beta_x, _y, and _z. More...
 
 Boost (Scalar beta_x, Scalar beta_y, Scalar beta_z)
 Construct given a three Scalars beta_x, beta_y, and beta_z. More...
 
XYZVector BetaVector () const
 
template<class IT >
void GetComponents (IT begin) const
 Get given a pointer or an iterator defining the beginning of an array into which to place beta_x, beta_y, and beta_z. More...
 
template<class IT >
void GetComponents (IT begin, IT end) const
 Get given a pair of pointers or iterators defining the beginning and end of an array of three Scalars into which to place beta_x, beta_y, and beta_z. More...
 
void GetComponents (Scalar &beta_x, Scalar &beta_y, Scalar &beta_z) const
 Get components into beta_x, beta_y, and beta_z. More...
 
void GetLorentzRotation (Scalar r[]) const
 Get elements of internal 4x4 symmetric representation, into a data array suitable for direct use as the components of a LorentzRotation Note – 16 Scalars will be written into the array; if the array is not that large, then this will lead to undefined behavior. More...
 
Boost Inverse () const
 Return inverse of a boost. More...
 
void Invert ()
 Invert a Boost in place. More...
 
bool operator!= (const Boost &rhs) const
 
template<class Foreign4Vector >
Foreign4Vector operator() (const Foreign4Vector &v) const
 Lorentz transformation operation on an arbitrary 4-vector v. More...
 
template<class CoordSystem >
LorentzVector< CoordSystem > operator() (const LorentzVector< CoordSystem > &v) const
 Lorentz transformation operation on a LorentzVector in any coordinate system. More...
 
LorentzVector< ROOT::Math::PxPyPzE4D< double > > operator() (const LorentzVector< ROOT::Math::PxPyPzE4D< double > > &v) const
 Lorentz transformation operation on a Minkowski ('Cartesian') LorentzVector. More...
 
template<class A4Vector >
A4Vector operator* (const A4Vector &v) const
 Overload operator * for boost on a vector. More...
 
Boostoperator= (Boost const &rhs)
 Assignment operator. More...
 
Boostoperator= (BoostX const &bx)
 Assign from an axial pure boost. More...
 
Boostoperator= (BoostY const &by)
 
Boostoperator= (BoostZ const &bz)
 
bool operator== (const Boost &rhs) const
 Equality/inequality operators. More...
 
void Rectify ()
 Re-adjust components to eliminate small deviations from a perfect orthosyplectic matrix. More...
 
template<class Avector >
void SetComponents (const Avector &beta)
 Set components from a beta vector. More...
 
template<class IT >
void SetComponents (IT begin, IT end)
 Set given a pair of pointers or iterators defining the beginning and end of an array of three Scalars to use as beta_x,beta _y, and beta_z. More...
 
void SetComponents (Scalar beta_x, Scalar beta_y, Scalar beta_z)
 Set components from beta_x, beta_y, and beta_z. More...
 

Protected Member Functions

void SetIdentity ()
 

Private Attributes

Scalar fM [10]
 

#include <Math/GenVector/Boost.h>

Member Typedef Documentation

◆ Scalar

typedef double ROOT::Math::Boost::Scalar

Definition at line 50 of file Boost.h.

◆ XYZVector

The beta vector for this boost.

Definition at line 205 of file Boost.h.

Member Enumeration Documentation

◆ EBoostMatrixIndex

Enumerator
kXX 
kXY 
kXZ 
kXT 
kYY 
kYZ 
kYT 
kZZ 
kZT 
kTT 

Definition at line 59 of file Boost.h.

◆ ELorentzRotationMatrixIndex

Enumerator
kLXX 
kLXY 
kLXZ 
kLXT 
kLYX 
kLYY 
kLYZ 
kLYT 
kLZX 
kLZY 
kLZZ 
kLZT 
kLTX 
kLTY 
kLTZ 
kLTT 

Definition at line 52 of file Boost.h.

Constructor & Destructor Documentation

◆ Boost() [1/8]

ROOT::Math::Boost::Boost ( )
inline

Default constructor (identity transformation)

Definition at line 71 of file Boost.h.

◆ Boost() [2/8]

ROOT::Math::Boost::Boost ( Scalar  beta_x,
Scalar  beta_y,
Scalar  beta_z 
)
inline

Construct given a three Scalars beta_x, beta_y, and beta_z.

Definition at line 76 of file Boost.h.

◆ Boost() [3/8]

template<class Avector >
ROOT::Math::Boost::Boost ( const Avector &  beta)
inlineexplicit

Construct given a beta vector (which must have methods x(), y(), z())

Definition at line 84 of file Boost.h.

◆ Boost() [4/8]

template<class IT >
ROOT::Math::Boost::Boost ( 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 use as beta_x, _y, and _z.

Definition at line 91 of file Boost.h.

◆ Boost() [5/8]

ROOT::Math::Boost::Boost ( Boost const &  b)
inline

copy constructor

Definition at line 96 of file Boost.h.

◆ Boost() [6/8]

ROOT::Math::Boost::Boost ( BoostX const &  bx)
inlineexplicit

Construct from an axial boost.

Definition at line 104 of file Boost.h.

◆ Boost() [7/8]

ROOT::Math::Boost::Boost ( BoostY const &  by)
inlineexplicit

Definition at line 105 of file Boost.h.

◆ Boost() [8/8]

ROOT::Math::Boost::Boost ( BoostZ const &  bz)
inlineexplicit

Definition at line 106 of file Boost.h.

Member Function Documentation

◆ BetaVector()

DisplacementVector3D< Cartesian3D< Boost::Scalar > > ROOT::Math::Boost::BetaVector ( ) const

Definition at line 108 of file Boost.cxx.

◆ GetComponents() [1/3]

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

Get given a pointer or an iterator defining the beginning of an array into which to place beta_x, beta_y, and beta_z.

Definition at line 194 of file Boost.h.

◆ GetComponents() [2/3]

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

Get given a pair of pointers or iterators defining the beginning and end of an array of three Scalars into which to place beta_x, beta_y, and beta_z.

Definition at line 180 of file Boost.h.

◆ GetComponents() [3/3]

void ROOT::Math::Boost::GetComponents ( Scalar beta_x,
Scalar beta_y,
Scalar beta_z 
) const

Get components into beta_x, beta_y, and beta_z.

Definition at line 99 of file Boost.cxx.

◆ GetLorentzRotation()

void ROOT::Math::Boost::GetLorentzRotation ( Scalar  r[]) const

Get elements of internal 4x4 symmetric representation, into a data array suitable for direct use as the components of a LorentzRotation Note – 16 Scalars will be written into the array; if the array is not that large, then this will lead to undefined behavior.

Definition at line 115 of file Boost.cxx.

◆ Inverse()

Boost ROOT::Math::Boost::Inverse ( ) const

Return inverse of a boost.

Definition at line 163 of file Boost.cxx.

◆ Invert()

void ROOT::Math::Boost::Invert ( )

Invert a Boost in place.

Definition at line 156 of file Boost.cxx.

◆ operator!=()

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

Definition at line 280 of file Boost.h.

◆ operator()() [1/3]

template<class Foreign4Vector >
Foreign4Vector ROOT::Math::Boost::operator() ( const Foreign4Vector &  v) const
inline

Lorentz transformation operation on an arbitrary 4-vector v.

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

Definition at line 245 of file Boost.h.

◆ operator()() [2/3]

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

Lorentz transformation operation on a LorentzVector in any coordinate system.

Definition at line 232 of file Boost.h.

◆ operator()() [3/3]

LorentzVector< PxPyPzE4D< double > > ROOT::Math::Boost::operator() ( const LorentzVector< ROOT::Math::PxPyPzE4D< double > > &  v) const

Lorentz transformation operation on a Minkowski ('Cartesian') LorentzVector.

Definition at line 143 of file Boost.cxx.

◆ operator*()

template<class A4Vector >
A4Vector ROOT::Math::Boost::operator* ( const A4Vector &  v) const
inline

Overload operator * for boost on a vector.

Definition at line 256 of file Boost.h.

◆ operator=() [1/4]

Boost & ROOT::Math::Boost::operator= ( Boost const &  rhs)
inline

Assignment operator.

Definition at line 114 of file Boost.h.

◆ operator=() [2/4]

Boost & ROOT::Math::Boost::operator= ( BoostX const &  bx)
inline

Assign from an axial pure boost.

Definition at line 125 of file Boost.h.

◆ operator=() [3/4]

Boost & ROOT::Math::Boost::operator= ( BoostY const &  by)
inline

Definition at line 127 of file Boost.h.

◆ operator=() [4/4]

Boost & ROOT::Math::Boost::operator= ( BoostZ const &  bz)
inline

Definition at line 129 of file Boost.h.

◆ operator==()

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

Equality/inequality operators.

Definition at line 274 of file Boost.h.

◆ Rectify()

void ROOT::Math::Boost::Rectify ( )

Re-adjust components to eliminate small deviations from a perfect orthosyplectic matrix.

Definition at line 123 of file Boost.cxx.

◆ SetComponents() [1/3]

template<class Avector >
void ROOT::Math::Boost::SetComponents ( const Avector &  beta)
inline

Set components from a beta vector.

Definition at line 156 of file Boost.h.

◆ SetComponents() [2/3]

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

Set given a pair of pointers or iterators defining the beginning and end of an array of three Scalars to use as beta_x,beta _y, and beta_z.

Definition at line 165 of file Boost.h.

◆ SetComponents() [3/3]

void ROOT::Math::Boost::SetComponents ( Scalar  beta_x,
Scalar  beta_y,
Scalar  beta_z 
)

Set components from beta_x, beta_y, and beta_z.

Definition at line 76 of file Boost.cxx.

◆ SetIdentity()

void ROOT::Math::Boost::SetIdentity ( )
protected

Definition at line 67 of file Boost.cxx.

Member Data Documentation

◆ fM

Scalar ROOT::Math::Boost::fM[10]
private

Definition at line 290 of file Boost.h.


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