ROOT::Math::Boost Class Reference
[GenVector]

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

#include <Boost.h>

List of all members.

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.

Public Member Functions

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

Protected Member Functions

void SetIdentity ()


Detailed Description

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 GenVector/Boost.h.


Member Typedef Documentation

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

Definition at line 50 of file GenVector/Boost.h.

The beta vector for this boost.

Definition at line 197 of file GenVector/Boost.h.


Member Enumeration Documentation

Enumerator:
kXX 
kXY 
kXZ 
kXT 
kYY 
kYZ 
kYT 
kZZ 
kZT 
kTT 

Definition at line 59 of file GenVector/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 GenVector/Boost.h.


Constructor & Destructor Documentation

ROOT::Math::Boost::Boost (  )  [inline]

Default constructor (identity transformation).

Definition at line 71 of file GenVector/Boost.h.

References SetIdentity().

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 GenVector/Boost.h.

References SetComponents().

template<class Avector >
ROOT::Math::Boost::Boost ( const Avector &  beta  )  [inline, explicit]

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

Definition at line 84 of file GenVector/Boost.h.

References SetComponents().

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 GenVector/Boost.h.

References SetComponents().

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

copy constructor

Definition at line 96 of file GenVector/Boost.h.

ROOT::Math::Boost::Boost ( BoostX const &  bx  )  [inline, explicit]

Construct from an axial boost.

Definition at line 104 of file GenVector/Boost.h.

References ROOT::Math::BoostX::BetaVector(), and SetComponents().

ROOT::Math::Boost::Boost ( BoostY const &  by  )  [inline, explicit]

Definition at line 105 of file GenVector/Boost.h.

References ROOT::Math::BoostY::BetaVector(), and SetComponents().

ROOT::Math::Boost::Boost ( BoostZ const &  bz  )  [inline, explicit]

Definition at line 106 of file GenVector/Boost.h.

References ROOT::Math::BoostZ::BetaVector(), and SetComponents().


Member Function Documentation

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

Definition at line 108 of file Boost.cxx.

References kTT, kXT, kYT, and kZT.

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 186 of file GenVector/Boost.h.

References GetComponents().

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 175 of file GenVector/Boost.h.

References GetComponents().

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.

References kTT, kXT, kYT, and kZT.

Referenced by GetComponents().

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.

References kLTT, kLTX, kLTY, kLTZ, kLXT, kLXX, kLXY, kLXZ, kLYT, kLYX, kLYY, kLYZ, kLZT, kLZX, kLZY, kLZZ, kTT, kXT, kXX, kXY, kXZ, kYT, kYY, kYZ, kZT, and kZZ.

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.

References Invert().

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

Invert a Boost in place.

Definition at line 156 of file Boost.cxx.

References kXT, kYT, and kZT.

Referenced by Inverse().

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

Definition at line 272 of file GenVector/Boost.h.

References operator==().

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 237 of file GenVector/Boost.h.

References operator()(), ROOT::Math::LorentzVector< CoordSystem >::T(), ROOT::Math::LorentzVector< CoordSystem >::X(), ROOT::Math::LorentzVector< CoordSystem >::Y(), and ROOT::Math::LorentzVector< CoordSystem >::Z().

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 224 of file GenVector/Boost.h.

References operator()().

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.

References kTT, kXT, kXX, kXY, kXZ, kYT, kYY, kYZ, kZT, kZZ, and v.

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

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

Overload operator * for boost on a vector.

Definition at line 248 of file GenVector/Boost.h.

References operator()().

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

Definition at line 129 of file GenVector/Boost.h.

References Boost(), and operator=().

Referenced by operator=().

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

Definition at line 127 of file GenVector/Boost.h.

References Boost(), and operator=().

Referenced by operator=().

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

Assign from an axial pure boost.

Definition at line 125 of file GenVector/Boost.h.

References Boost(), and operator=().

Referenced by operator=().

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

Assignment operator.

Definition at line 114 of file GenVector/Boost.h.

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

Equality/inequality operators.

Definition at line 266 of file GenVector/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.

References ROOT::Math::beta(), kTT, kXT, kYT, kZT, ROOT::Math::DisplacementVector3D< CoordSystem, Tag >::mag2(), ROOT::Math::DisplacementVector3D< CoordSystem, Tag >::R(), SetComponents(), and ROOT::Math::Throw().

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 GenVector/Boost.h.

References 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 GenVector/Boost.h.

References SetComponents().

Referenced by SetComponents().

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.

References ROOT::Math::Cephes::gamma(), kTT, kXT, kXX, kXY, kXZ, kYT, kYY, kYZ, kZT, kZZ, ROOT::Math::sqrt(), and ROOT::Math::Throw().

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

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

Definition at line 67 of file Boost.cxx.

References kTT, kXT, kXX, kXY, kXZ, kYT, kYY, kYZ, kZT, and kZZ.

Referenced by Boost().


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

Generated on Thu Dec 16 21:09:40 2010 for ROOT Mathematical Libraries by  doxygen 1.5.9