ROOT  6.07/01
Reference Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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  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
}
 
enum  EBoostMatrixIndex {
  kXX = 0, kXY = 1, kXZ = 2, kXT = 3,
  kYY = 4, kYZ = 5, kYT = 6, kZZ = 7,
  kZT = 8, kTT = 9
}
 
typedef double Scalar
 
typedef DisplacementVector3D
< Cartesian3D< double >
, DefaultCoordinateSystemTag
XYZVector
 The beta vector for this boost. More...
 

Public Member Functions

 Boost ()
 Default constructor (identity transformation) More...
 
 Boost (Scalar beta_x, Scalar beta_y, Scalar beta_z)
 Construct given a three Scalars beta_x, beta_y, and beta_z. More...
 
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 (Boost const &b)
 copy constructor More...
 
 Boost (BoostX const &bx)
 Construct from an axial boost. More...
 
 Boost (BoostY const &by)
 
 Boost (BoostZ const &bz)
 
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)
 
void Rectify ()
 Re-adjust components to eliminate small deviations from a perfect orthosyplectic matrix. More...
 
void SetComponents (Scalar beta_x, Scalar beta_y, Scalar beta_z)
 Set components from 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...
 
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...
 
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...
 
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...
 
XYZVector BetaVector () const
 
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...
 
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 CoordSystem >
LorentzVector< CoordSystem > operator() (const LorentzVector< CoordSystem > &v) const
 Lorentz transformation operation on a LorentzVector in any coordinate system. More...
 
template<class Foreign4Vector >
Foreign4Vector operator() (const Foreign4Vector &v) const
 Lorentz transformation operation on an arbitrary 4-vector v. More...
 
template<class A4Vector >
A4Vector operator* (const A4Vector &v) const
 Overload operator * for boost on a vector. More...
 
void Invert ()
 Invert a Boost in place. More...
 
Boost Inverse () const
 Return inverse of a boost. More...
 
bool operator== (const Boost &rhs) const
 Equality/inequality operators. More...
 
bool operator!= (const Boost &rhs) const
 

Protected Member Functions

void SetIdentity ()
 

Private Attributes

Scalar fM [10]
 

#include <Math/GenVector/Boost.h>

Member Typedef Documentation

Definition at line 50 of file Boost.h.

The beta vector for this boost.

Definition at line 205 of file Boost.h.

Member Enumeration Documentation

Enumerator
kXX 
kXY 
kXZ 
kXT 
kYY 
kYZ 
kYT 
kZZ 
kZT 
kTT 

Definition at line 59 of file Boost.h.

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

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

Default constructor (identity transformation)

Definition at line 71 of file Boost.h.

Referenced by operator=().

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.

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.

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.

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

copy constructor

Definition at line 96 of file Boost.h.

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

Construct from an axial boost.

Definition at line 104 of file Boost.h.

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

Definition at line 105 of file Boost.h.

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

Definition at line 106 of file Boost.h.

Member Function Documentation

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

Definition at line 108 of file Boost.cxx.

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.

Referenced by GetComponents(), and main().

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.

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.

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.

Referenced by ROOT::Math::LorentzRotation::LorentzRotation(), and ROOT::Math::operator<<().

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

Return inverse of a boost.

Definition at line 163 of file Boost.cxx.

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

Invert a Boost in place.

Definition at line 156 of file Boost.cxx.

Referenced by Inverse().

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

Definition at line 280 of file Boost.h.

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.

Referenced by operator()(), and operator*().

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.

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.

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.

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

Assignment operator.

Definition at line 114 of file Boost.h.

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

Assign from an axial pure boost.

Definition at line 125 of file Boost.h.

Referenced by operator=().

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

Definition at line 127 of file Boost.h.

Referenced by operator=().

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

Definition at line 129 of file Boost.h.

Referenced by operator=().

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

Equality/inequality operators.

Definition at line 274 of file Boost.h.

Referenced by operator!=().

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.

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.

Referenced by Boost(), Rectify(), and SetComponents().

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.

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.

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

Definition at line 67 of file Boost.cxx.

Referenced by Boost().

Member Data Documentation

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

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