ROOT
6.07/01
Reference Guide
|
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.
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) | |
Boost & | operator= (Boost const &rhs) |
Assignment operator. More... | |
Boost & | operator= (BoostX const &bx) |
Assign from an axial pure boost. More... | |
Boost & | operator= (BoostY const &by) |
Boost & | operator= (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>
typedef double ROOT::Math::Boost::Scalar |
|
inline |
Default constructor (identity transformation)
Definition at line 71 of file Boost.h.
Referenced by operator=().
|
inlineexplicit |
|
inline |
|
inline |
|
inlineexplicit |
|
inlineexplicit |
|
inlineexplicit |
DisplacementVector3D< Cartesian3D< Boost::Scalar > > ROOT::Math::Boost::BetaVector | ( | ) | const |
Get components into beta_x, beta_y, and beta_z.
Definition at line 99 of file Boost.cxx.
Referenced by GetComponents(), and main().
|
inline |
|
inline |
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 |
void ROOT::Math::Boost::Invert | ( | ) |
|
inline |
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*().
|
inline |
Lorentz transformation operation on a LorentzVector in any coordinate system.
|
inline |
|
inline |
Definition at line 127 of file Boost.h.
Referenced by operator=().
Definition at line 129 of file Boost.h.
Referenced by operator=().
|
inline |
void ROOT::Math::Boost::Rectify | ( | ) |
Set components from beta_x, beta_y, and beta_z.
Definition at line 76 of file Boost.cxx.
Referenced by Boost(), Rectify(), and SetComponents().
|
inline |
|
inline |
|
protected |
|
private |
Definition at line 290 of file Boost.h.
Referenced by BetaVector(), GetComponents(), GetLorentzRotation(), Invert(), operator()(), operator=(), operator==(), Rectify(), SetComponents(), and SetIdentity().