 ROOT   Reference Guide 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 

#include <Math/GenVector/Boost.h>

## ◆ 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 199 of file Boost.h.

## ◆ 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.

## ◆ 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.

## ◆ 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 188 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 176 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 274 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 239 of file Boost.h.

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

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

Lorentz transformation operation on a LorentzVector in any coordinate system.

Definition at line 226 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 250 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 268 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 164 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.

## ◆ fM

 Scalar ROOT::Math::Boost::fM
private

Definition at line 284 of file Boost.h.

Libraries for ROOT::Math::Boost: [legend]

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