Lorentz transformation class with the (4D) transformation represented by a 4x4 orthosymplectic matrix.
See also Boost, BoostX, BoostY and BoostZ for classes representing specialized Lorentz transformations. Also, the 3-D rotation classes can be considered to be special Lorentz transformations which do not mix space and time components.
Definition at line 54 of file LorentzRotation.h.
Public Types | |
enum | ELorentzRotationMatrixIndex { kXX = 0 , kXY = 1 , kXZ = 2 , kXT = 3 , kYX = 4 , kYY = 5 , kYZ = 6 , kYT = 7 , kZX = 8 , kZY = 9 , kZZ = 10 , kZT = 11 , kTX = 12 , kTY = 13 , kTZ = 14 , kTT = 15 } |
typedef double | Scalar |
Public Member Functions | |
LorentzRotation () | |
Default constructor (identity transformation) More... | |
LorentzRotation (AxisAngle const &a) | |
LorentzRotation (Boost const &b) | |
Construct from a pure boost. More... | |
LorentzRotation (BoostX const &bx) | |
LorentzRotation (BoostY const &by) | |
LorentzRotation (BoostZ const &bz) | |
template<class Foreign4Vector > | |
LorentzRotation (const Foreign4Vector &v1, const Foreign4Vector &v2, const Foreign4Vector &v3, const Foreign4Vector &v4) | |
Construct from four orthosymplectic vectors (which must have methods x(), y(), z() and t()) which will be used as the columns of the Lorentz rotation matrix. More... | |
template<class ForeignMatrix > | |
LorentzRotation (const ForeignMatrix &m) | |
Construct from a linear algebra matrix of size at least 4x4, which must support operator()(i,j) to obtain elements (0,3) thru (3,3). More... | |
LorentzRotation (EulerAngles const &e) | |
template<class IT > | |
LorentzRotation (IT begin, IT end) | |
Construct given a pair of pointers or iterators defining the beginning and end of an array of sixteen Scalars. More... | |
LorentzRotation (LorentzRotation const &r) | |
Copy constructor. More... | |
LorentzRotation (Quaternion const &q) | |
LorentzRotation (Rotation3D const &r) | |
Construct from a 3-D rotation (no space-time mixing) More... | |
LorentzRotation (RotationX const &r) | |
LorentzRotation (RotationY const &r) | |
LorentzRotation (RotationZ const &r) | |
LorentzRotation (Scalar xx, Scalar xy, Scalar xz, Scalar xt, Scalar yx, Scalar yy, Scalar yz, Scalar yt, Scalar zx, Scalar zy, Scalar zz, Scalar zt, Scalar tx, Scalar ty, Scalar tz, Scalar tt) | |
Raw constructor from sixteen Scalar components (without any checking) More... | |
template<class Foreign4Vector > | |
void | GetComponents (Foreign4Vector &v1, Foreign4Vector &v2, Foreign4Vector &v3, Foreign4Vector &v4) const |
Get components into four 4-vectors which will be the (orthosymplectic) columns of the rotation matrix. More... | |
template<class IT > | |
void | GetComponents (IT begin) const |
Get the 16 matrix components into data specified by an iterator begin. More... | |
template<class IT > | |
void | GetComponents (IT begin, IT end) const |
Get the 16 matrix components into data specified by an iterator begin and another to the end of the desired data (16 past start). More... | |
void | GetComponents (Scalar &xx, Scalar &xy, Scalar &xz, Scalar &xt, Scalar &yx, Scalar &yy, Scalar &yz, Scalar &yt, Scalar &zx, Scalar &zy, Scalar &zz, Scalar &zt, Scalar &tx, Scalar &ty, Scalar &tz, Scalar &tt) const |
Get the sixteen components into sixteen scalars. More... | |
template<class ForeignMatrix > | |
void | GetRotationMatrix (ForeignMatrix &m) const |
Get components into a linear algebra matrix of size at least 4x4, which must support operator()(i,j) for write access to elements (0,0) thru (3,3). More... | |
LorentzRotation | Inverse () const |
Return inverse of a rotation. More... | |
void | Invert () |
Invert a Lorentz rotation in place. More... | |
bool | operator!= (const LorentzRotation &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 rotation on a vector. More... | |
LorentzRotation | operator* (const AxisAngle &a) const |
LorentzRotation | operator* (const Boost &b) const |
Multiply (combine) this Lorentz rotation by a pure Lorentz boost. More... | |
LorentzRotation | operator* (const BoostX &b) const |
LorentzRotation | operator* (const BoostY &b) const |
LorentzRotation | operator* (const BoostZ &b) const |
LorentzRotation | operator* (const EulerAngles &e) const |
LorentzRotation | operator* (const LorentzRotation &r) const |
Multiply (combine) this Lorentz rotation by another LorentzRotation. More... | |
LorentzRotation | operator* (const Quaternion &q) const |
LorentzRotation | operator* (const Rotation3D &r) const |
Multiply (combine) this Lorentz rotation by a 3-D Rotation. More... | |
LorentzRotation | operator* (const RotationX &rx) const |
LorentzRotation | operator* (const RotationY &ry) const |
LorentzRotation | operator* (const RotationZ &rz) const |
template<class R > | |
LorentzRotation & | operator*= (const R &r) |
Post-Multiply (on right) by another LorentzRotation, Boost, or rotation : T = T*R. More... | |
LorentzRotation & | operator= (AxisAngle const &a) |
LorentzRotation & | operator= (Boost const &b) |
Assign from a pure boost. More... | |
LorentzRotation & | operator= (BoostX const &b) |
LorentzRotation & | operator= (BoostY const &b) |
LorentzRotation & | operator= (BoostZ const &b) |
template<class ForeignMatrix > | |
LorentzRotation & | operator= (const ForeignMatrix &m) |
Assign from a linear algebra matrix of size at least 4x4, which must support operator()(i,j) to obtain elements (0,3) thru (3,3). More... | |
LorentzRotation & | operator= (EulerAngles const &e) |
LorentzRotation & | operator= (LorentzRotation const &rhs) |
Assign from another LorentzRotation. More... | |
LorentzRotation & | operator= (Quaternion const &q) |
LorentzRotation & | operator= (Rotation3D const &r) |
Assign from a 3-D rotation. More... | |
LorentzRotation & | operator= (RotationX const &r) |
LorentzRotation & | operator= (RotationY const &r) |
LorentzRotation & | operator= (RotationZ const &r) |
bool | operator== (const LorentzRotation &rhs) const |
Equality/inequality operators. More... | |
void | Rectify () |
Re-adjust components to eliminate small deviations from a perfect orthosyplectic matrix. More... | |
template<class Foreign4Vector > | |
void | SetComponents (const Foreign4Vector &v1, const Foreign4Vector &v2, const Foreign4Vector &v3, const Foreign4Vector &v4) |
Set components from four orthosymplectic vectors (which must have methods x(), y(), z(), and t()) which will be used as the columns of the Lorentz rotation matrix. More... | |
template<class IT > | |
void | SetComponents (IT begin, IT end) |
Set the 16 matrix components given an iterator to the start of the desired data, and another to the end (16 past start). More... | |
void | SetComponents (Scalar xx, Scalar xy, Scalar xz, Scalar xt, Scalar yx, Scalar yy, Scalar yz, Scalar yt, Scalar zx, Scalar zy, Scalar zz, Scalar zt, Scalar tx, Scalar ty, Scalar tz, Scalar tt) |
Set the components from sixteen scalars – UNCHECKED for orthosymplectic. More... | |
template<class ForeignMatrix > | |
void | SetRotationMatrix (const ForeignMatrix &m) |
Set components from a linear algebra matrix of size at least 4x4, which must support operator()(i,j) to obtain elements (0,0) thru (3,3). More... | |
Private Attributes | |
Scalar | fM [16] |
#include <Math/GenVector/LorentzRotation.h>
Definition at line 58 of file LorentzRotation.h.
Enumerator | |
---|---|
kXX | |
kXY | |
kXZ | |
kXT | |
kYX | |
kYY | |
kYZ | |
kYT | |
kZX | |
kZY | |
kZZ | |
kZT | |
kTX | |
kTY | |
kTZ | |
kTT |
Definition at line 60 of file LorentzRotation.h.
ROOT::Math::LorentzRotation::LorentzRotation | ( | ) |
Default constructor (identity transformation)
Definition at line 36 of file LorentzRotation.cxx.
|
inline |
Construct given a pair of pointers or iterators defining the beginning and end of an array of sixteen Scalars.
Definition at line 79 of file LorentzRotation.h.
|
inline |
Copy constructor.
Definition at line 87 of file LorentzRotation.h.
|
inlineexplicit |
Construct from a pure boost.
Definition at line 94 of file LorentzRotation.h.
|
inlineexplicit |
Definition at line 95 of file LorentzRotation.h.
|
inlineexplicit |
Definition at line 96 of file LorentzRotation.h.
|
inlineexplicit |
Definition at line 97 of file LorentzRotation.h.
|
explicit |
Construct from a 3-D rotation (no space-time mixing)
Definition at line 44 of file LorentzRotation.cxx.
|
explicit |
Definition at line 55 of file LorentzRotation.cxx.
|
explicit |
Definition at line 67 of file LorentzRotation.cxx.
|
explicit |
Definition at line 79 of file LorentzRotation.cxx.
|
explicit |
Definition at line 91 of file LorentzRotation.cxx.
|
explicit |
Definition at line 101 of file LorentzRotation.cxx.
|
explicit |
Definition at line 111 of file LorentzRotation.cxx.
|
inlineexplicit |
Construct from a linear algebra matrix of size at least 4x4, which must support operator()(i,j) to obtain elements (0,3) thru (3,3).
Precondition: The matrix is assumed to be orthosymplectic. NO checking or re-adjusting is performed. Note: (0,0) refers to the XX component; (3,3) refers to the TT component.
Definition at line 118 of file LorentzRotation.h.
|
inline |
Construct from four orthosymplectic vectors (which must have methods x(), y(), z() and t()) which will be used as the columns of the Lorentz rotation matrix.
The orthosymplectic conditions will be checked, and values adjusted so that the result will always be a good Lorentz rotation matrix.
Definition at line 128 of file LorentzRotation.h.
|
inline |
Raw constructor from sixteen Scalar components (without any checking)
Definition at line 137 of file LorentzRotation.h.
|
inline |
Get components into four 4-vectors which will be the (orthosymplectic) columns of the rotation matrix.
(The 4-vector class must have a constructor from 4 Scalars used as x, y, z, t)
Definition at line 240 of file LorentzRotation.h.
|
inline |
Get the 16 matrix components into data specified by an iterator begin.
Definition at line 282 of file LorentzRotation.h.
|
inline |
Get the 16 matrix components into data specified by an iterator begin and another to the end of the desired data (16 past start).
Definition at line 269 of file LorentzRotation.h.
|
inline |
Get the sixteen components into sixteen scalars.
Definition at line 333 of file LorentzRotation.h.
|
inline |
Get components into a linear algebra matrix of size at least 4x4, which must support operator()(i,j) for write access to elements (0,0) thru (3,3).
Definition at line 308 of file LorentzRotation.h.
LorentzRotation ROOT::Math::LorentzRotation::Inverse | ( | ) | const |
Return inverse of a rotation.
Definition at line 186 of file LorentzRotation.cxx.
void ROOT::Math::LorentzRotation::Invert | ( | ) |
Invert a Lorentz rotation in place.
Definition at line 175 of file LorentzRotation.cxx.
|
inline |
Definition at line 453 of file LorentzRotation.h.
|
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 381 of file LorentzRotation.h.
|
inline |
Lorentz transformation operation on a LorentzVector in any coordinate system.
Definition at line 368 of file LorentzRotation.h.
|
inline |
Lorentz transformation operation on a Minkowski ('Cartesian') LorentzVector.
Definition at line 350 of file LorentzRotation.h.
|
inline |
Overload operator * for rotation on a vector.
Definition at line 392 of file LorentzRotation.h.
|
inline |
Definition at line 429 of file LorentzRotation.h.
|
inline |
Multiply (combine) this Lorentz rotation by a pure Lorentz boost.
Definition at line 420 of file LorentzRotation.h.
|
inline |
Definition at line 421 of file LorentzRotation.h.
|
inline |
Definition at line 422 of file LorentzRotation.h.
|
inline |
Definition at line 423 of file LorentzRotation.h.
|
inline |
Definition at line 430 of file LorentzRotation.h.
LorentzRotation ROOT::Math::LorentzRotation::operator* | ( | const LorentzRotation & | r | ) | const |
Multiply (combine) this Lorentz rotation by another LorentzRotation.
Definition at line 196 of file LorentzRotation.cxx.
|
inline |
Definition at line 431 of file LorentzRotation.h.
|
inline |
Multiply (combine) this Lorentz rotation by a 3-D Rotation.
Definition at line 428 of file LorentzRotation.h.
|
inline |
Definition at line 432 of file LorentzRotation.h.
|
inline |
Definition at line 433 of file LorentzRotation.h.
|
inline |
Definition at line 434 of file LorentzRotation.h.
|
inline |
Post-Multiply (on right) by another LorentzRotation, Boost, or rotation : T = T*R.
Definition at line 442 of file LorentzRotation.h.
|
inline |
Definition at line 178 of file LorentzRotation.h.
|
inline |
Assign from a pure boost.
Definition at line 164 of file LorentzRotation.h.
|
inline |
Definition at line 166 of file LorentzRotation.h.
|
inline |
Definition at line 168 of file LorentzRotation.h.
|
inline |
Definition at line 170 of file LorentzRotation.h.
|
inline |
Assign from a linear algebra matrix of size at least 4x4, which must support operator()(i,j) to obtain elements (0,3) thru (3,3).
Precondition: The matrix is assumed to be orthosymplectic. NO checking or re-adjusting is performed.
Definition at line 198 of file LorentzRotation.h.
|
inline |
Definition at line 180 of file LorentzRotation.h.
|
inline |
Assign from another LorentzRotation.
Definition at line 152 of file LorentzRotation.h.
|
inline |
Definition at line 182 of file LorentzRotation.h.
|
inline |
Assign from a 3-D rotation.
Definition at line 176 of file LorentzRotation.h.
|
inline |
Definition at line 188 of file LorentzRotation.h.
|
inline |
Definition at line 186 of file LorentzRotation.h.
|
inline |
Definition at line 184 of file LorentzRotation.h.
|
inline |
Equality/inequality operators.
Definition at line 447 of file LorentzRotation.h.
void ROOT::Math::LorentzRotation::Rectify | ( | ) |
Re-adjust components to eliminate small deviations from a perfect orthosyplectic matrix.
Definition at line 122 of file LorentzRotation.cxx.
|
inline |
Set components from four orthosymplectic vectors (which must have methods x(), y(), z(), and t()) which will be used as the columns of the Lorentz rotation matrix.
The values will be adjusted so that the result will always be a good Lorentz rotation matrix.
Definition at line 222 of file LorentzRotation.h.
|
inline |
Set the 16 matrix components given an iterator to the start of the desired data, and another to the end (16 past start).
Definition at line 255 of file LorentzRotation.h.
|
inline |
Set the components from sixteen scalars – UNCHECKED for orthosymplectic.
Definition at line 319 of file LorentzRotation.h.
|
inline |
Set components from a linear algebra matrix of size at least 4x4, which must support operator()(i,j) to obtain elements (0,0) thru (3,3).
Precondition: The matrix is assumed to be orthosymplectic. NO checking or re-adjusting is performed.
Definition at line 294 of file LorentzRotation.h.
|
private |
Definition at line 459 of file LorentzRotation.h.