17#ifndef ROOT_MathX_GenVectorX_LorentzRotation
18#define ROOT_MathX_GenVectorX_LorentzRotation 1
132 template <
class ForeignMatrix>
145 template <
class Foreign4Vector>
158 SetComponents(
xx,
xy, xz,
xt,
yx,
yy, yz,
yt,
zx,
zy,
zz,
zt,
tx,
ty,
tz,
tt);
196 template <
class ForeignMatrix>
199 SetComponents(
m(0, 0),
m(0, 1),
m(0, 2),
m(0, 3),
m(1, 0),
m(1, 1),
m(1, 2),
m(1, 3),
m(2, 0),
m(2, 1),
m(2, 2),
200 m(2, 3),
m(3, 0),
m(3, 1),
m(3, 2),
m(3, 3));
218 template <
class Foreign4Vector>
246 template <
class Foreign4Vector>
262 for (
int i = 0; i < 16; ++i) {
277 for (
int i = 0; i < 16; ++i) {
291 std::copy(
fM + 0,
fM + 16, begin);
300 template <
class ForeignMatrix>
326 template <
class ForeignMatrix>
417 template <
class CoordSystem>
430 template <
class Foreign4Vector>
441 template <
class A4Vector>
473 return (*
this) * tmp;
478 return (*
this) * tmp;
483 return (*
this) * tmp;
488 return (*
this) * tmp;
497 return (*
this) * tmp;
502 return (*
this) * tmp;
507 return (*
this) * tmp;
512 return (*
this) * tmp;
517 return (*
this) * tmp;
522 return (*
this) * tmp;
527 return (*
this) * tmp;
538 return *
this = (*this) *
r;
546 for (
unsigned int i = 0; i < 16; ++i) {
547 if (
fM[i] !=
rhs.fM[i])
561#if !defined(ROOT_MATH_SYCL) && !defined(ROOT_MATH_CUDA)
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t r
Option_t Option_t TPoint xy
AxisAngle class describing rotation represented with direction axis (3D Vector) and an angle of rotat...
Class representing a Lorentz Boost along the X axis, by beta.
Class representing a Lorentz Boost along the Y axis, by beta.
Class representing a Lorentz Boost along the Z axis, by beta.
Lorentz boost class with the (4D) transformation represented internally by a 4x4 orthosymplectic matr...
EulerAngles class describing rotation as three angles (Euler Angles).
Lorentz transformation class with the (4D) transformation represented by a 4x4 orthosymplectic matrix...
LorentzRotation & operator=(LorentzRotation const &rhs)
Assign from another LorentzRotation.
LorentzRotation & operator=(Rotation3D const &r)
Assign from a 3-D rotation.
ELorentzRotationMatrixIndex
LorentzRotation & operator=(AxisAngle const &a)
LorentzVector< CoordSystem > operator()(const LorentzVector< CoordSystem > &v) const
Lorentz transformation operation on a LorentzVector in any coordinate system.
LorentzRotation & operator=(RotationY const &r)
LorentzRotation operator*(const BoostY &b) const
LorentzRotation Inverse() const
Return inverse of a rotation.
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 wil...
LorentzRotation & operator=(Boost const &b)
Assign from a pure boost.
LorentzRotation & operator=(BoostX const &b)
LorentzRotation & operator=(RotationZ const &r)
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.
void GetRotationMatrix(ForeignMatrix &m) const
Get components into a linear algebra matrix of size at least 4x4, which must support operator()(i,...
LorentzRotation operator*(const Boost &b) const
Multiply (combine) this Lorentz rotation by a pure Lorentz boost.
LorentzVector< PxPyPzE4D< double > > operator()(const LorentzVector< PxPyPzE4D< double > > &v) const
Lorentz transformation operation on a Minkowski ('Cartesian') LorentzVector.
Foreign4Vector operator()(const Foreign4Vector &v) const
Lorentz transformation operation on an arbitrary 4-vector v.
void SetRotationMatrix(const ForeignMatrix &m)
Set components from a linear algebra matrix of size at least 4x4, which must support operator()(i,...
LorentzRotation()
Default constructor (identity transformation)
LorentzRotation & operator*=(const R &r)
Post-Multiply (on right) by another LorentzRotation, Boost, or rotation : T = T*R.
void GetComponents(IT begin) const
Get the 16 matrix components into data specified by an iterator begin.
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.
LorentzRotation & operator=(RotationX const &r)
LorentzRotation & operator=(EulerAngles const &e)
LorentzRotation operator*(const BoostZ &b) const
LorentzRotation(Boost const &b)
Construct from a pure boost.
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(),...
LorentzRotation & operator=(const ForeignMatrix &m)
Assign from a linear algebra matrix of size at least 4x4, which must support operator()(i,...
LorentzRotation operator*(const Rotation3D &r) const
Multiply (combine) this Lorentz rotation by a 3-D Rotation.
LorentzRotation(LorentzRotation const &r)
Copy constructor.
LorentzRotation(BoostZ const &bz)
LorentzRotation operator*(const RotationY &ry) const
void Rectify()
Re-adjust components to eliminate small deviations from a perfect orthosyplectic matrix.
LorentzRotation operator*(const RotationZ &rz) const
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 e...
LorentzRotation operator*(const Quaternion &q) const
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)
LorentzRotation operator*(const EulerAngles &e) const
LorentzRotation operator*(const BoostX &b) const
void Invert()
Invert a Lorentz rotation in place.
LorentzRotation operator*(const AxisAngle &a) const
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...
LorentzRotation(BoostX const &bx)
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 d...
LorentzRotation(IT begin, IT end)
Construct given a pair of pointers or iterators defining the beginning and end of an array of sixteen...
bool operator!=(const LorentzRotation &rhs) const
LorentzRotation(const ForeignMatrix &m)
Construct from a linear algebra matrix of size at least 4x4, which must support operator()(i,...
LorentzRotation(BoostY const &by)
LorentzRotation operator*(const RotationX &rx) const
LorentzRotation & operator=(BoostZ const &b)
LorentzRotation & operator=(Quaternion const &q)
A4Vector operator*(const A4Vector &v) const
Overload operator * for rotation on a vector.
LorentzRotation & operator=(BoostY const &b)
bool operator==(const LorentzRotation &rhs) const
Equality/inequality operators.
Class describing a generic LorentzVector in the 4D space-time, using the specified coordinate system ...
Rotation class with the (3D) rotation represented by a unit quaternion (u, i, j, k).
Rotation class with the (3D) rotation represented by a 3x3 orthogonal matrix.
Rotation class representing a 3D rotation about the X axis by the angle of rotation.
Rotation class representing a 3D rotation about the Y axis by the angle of rotation.
Rotation class representing a 3D rotation about the Z axis by the angle of rotation.
double dist(Rotation3D const &r1, Rotation3D const &r2)
AxisAngle::Scalar Distance(const AxisAngle &r1, const R &r2)
Distance between two rotations.
std::ostream & operator<<(std::ostream &os, const AxisAngle &a)
Stream Output and Input.