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
where the n^i are unit vectors in the direction of the three spatial axes. Using the definitions,
By definition,
so that
or
If we insert this into the expression for
or, finally
The expression
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 >, DefaultCoordinateSystemTag > | XYZVector |
The beta vector for this boost. | |
Public Member Functions | |
Boost () | |
Default constructor (identity transformation) | |
Boost (Boost const &b) | |
copy constructor | |
Boost (BoostX const &bx) | |
Construct from an axial boost. | |
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()) | |
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. | |
Boost (Scalar beta_x, Scalar beta_y, Scalar beta_z) | |
Construct given a three Scalars beta_x, beta_y, and beta_z. | |
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. | |
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. | |
void | GetComponents (Scalar &beta_x, Scalar &beta_y, Scalar &beta_z) const |
Get components into beta_x, beta_y, and beta_z. | |
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. | |
Boost | Inverse () const |
Return inverse of a boost. | |
void | Invert () |
Invert a Boost in place. | |
bool | operator!= (const Boost &rhs) const |
template<class Foreign4Vector > | |
Foreign4Vector | operator() (const Foreign4Vector &v) const |
Lorentz transformation operation on an arbitrary 4-vector v. | |
template<class CoordSystem > | |
LorentzVector< CoordSystem > | operator() (const LorentzVector< CoordSystem > &v) const |
Lorentz transformation operation on a LorentzVector in any coordinate system. | |
LorentzVector< ROOT::Math::PxPyPzE4D< double > > | operator() (const LorentzVector< ROOT::Math::PxPyPzE4D< double > > &v) const |
Lorentz transformation operation on a Minkowski ('Cartesian') LorentzVector. | |
template<class A4Vector > | |
A4Vector | operator* (const A4Vector &v) const |
Overload operator * for boost on a vector. | |
Boost & | operator= (Boost const &rhs) |
Assignment operator. | |
Boost & | operator= (BoostX const &bx) |
Assign from an axial pure boost. | |
Boost & | operator= (BoostY const &by) |
Boost & | operator= (BoostZ const &bz) |
bool | operator== (const Boost &rhs) const |
Equality/inequality operators. | |
void | Rectify () |
Re-adjust components to eliminate small deviations from a perfect orthosyplectic matrix. | |
template<class Avector > | |
void | SetComponents (const Avector &beta) |
Set components from a beta vector. | |
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. | |
void | SetComponents (Scalar beta_x, Scalar beta_y, Scalar beta_z) |
Set components from beta_x, beta_y, and beta_z. | |
Protected Member Functions | |
void | SetIdentity () |
Private Attributes | |
Scalar | fM [10] |
#include <Math/GenVector/Boost.h>
|
inline |
DisplacementVector3D< Cartesian3D< Boost::Scalar > > ROOT::Math::Boost::BetaVector | ( | ) | const |
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.
Boost ROOT::Math::Boost::Inverse | ( | ) | const |
void ROOT::Math::Boost::Invert | ( | ) |
|
inline |
|
inline |
Lorentz transformation operation on a LorentzVector in any coordinate system.
LorentzVector< PxPyPzE4D< double > > ROOT::Math::Boost::operator() | ( | const LorentzVector< ROOT::Math::PxPyPzE4D< double > > & | v | ) | const |
Lorentz transformation operation on a Minkowski ('Cartesian') LorentzVector.
void ROOT::Math::Boost::Rectify | ( | ) |