17#ifndef ROOT_Math_GenVector_LorentzRotation
18#define ROOT_Math_GenVector_LorentzRotation 1
118 template<
class ForeignMatrix>
128 template<
class Foreign4Vector>
130 const Foreign4Vector&
v2,
131 const Foreign4Vector&
v3,
155 rhs.
fM[4], rhs.
fM[5], rhs.
fM[6], rhs.
fM[7],
156 rhs.
fM[8], rhs.
fM[9], rhs.
fM[10], rhs.
fM[11],
157 rhs.
fM[12], rhs.
fM[13], rhs.
fM[14], rhs.
fM[15] );
197 template<
class ForeignMatrix>
201 m(1,0),
m(1,1),
m(1,2),
m(1,3),
202 m(2,0),
m(2,1),
m(2,2),
m(2,3),
203 m(3,0),
m(3,1),
m(3,2),
m(3,3) );
221 template<
class Foreign4Vector>
224 const Foreign4Vector&
v2,
225 const Foreign4Vector&
v3,
226 const Foreign4Vector&
v4 ) {
239 template<
class Foreign4Vector>
244 Foreign4Vector&
v4 )
const {
257 for (
int i = 0; i <16; ++i) {
271 for (
int i = 0; i <16; ++i) {
284 std::copy (
fM+0,
fM+16, begin );
293 template<
class ForeignMatrix>
307 template<
class ForeignMatrix>
367 template <
class CoordSystem>
380 template <
class Foreign4Vector>
385 return Foreign4Vector ( r_xyzt.
X(), r_xyzt.
Y(), r_xyzt.
Z(), r_xyzt.
T() );
391 template <
class A4Vector>
449 for (
unsigned int i=0; i < 16; ++i) {
450 if(
fM[i] != rhs.
fM[i] )
return false;
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.
void GetLorentzRotation(Scalar r[]) const
Get elements of internal 4x4 symmetric representation, into a data array suitable for direct use as t...
Class representing a Lorentz Boost along the Y axis, by beta.
void GetLorentzRotation(Scalar r[]) const
Get elements of internal 4x4 symmetric representation, into a data array suitable for direct use as t...
Class representing a Lorentz Boost along the Z axis, by beta.
void GetLorentzRotation(Scalar r[]) const
Get elements of internal 4x4 symmetric representation, into a data array suitable for direct use as t...
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...
A4Vector operator*(const A4Vector &v) const
Overload operator * for rotation on a vector.
LorentzRotation(IT begin, IT end)
Construct given a pair of pointers or iterators defining the beginning and end of an array of sixteen...
LorentzRotation & operator=(BoostY const &b)
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.
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...
LorentzVector< ROOT::Math::PxPyPzE4D< double > > operator()(const LorentzVector< ROOT::Math::PxPyPzE4D< double > > &v) const
Lorentz transformation operation on a Minkowski ('Cartesian') LorentzVector.
LorentzRotation & operator=(BoostX const &b)
LorentzRotation(BoostY const &by)
LorentzRotation(const ForeignMatrix &m)
Construct from a linear algebra matrix of size at least 4x4, which must support operator()(i,...
LorentzRotation Inverse() const
Return inverse of a rotation.
void GetRotationMatrix(ForeignMatrix &m) const
Get components into a linear algebra matrix of size at least 4x4, which must support operator()(i,...
void Rectify()
Re-adjust components to eliminate small deviations from a perfect orthosyplectic matrix.
LorentzRotation & operator=(RotationY const &r)
bool operator!=(const LorentzRotation &rhs) const
LorentzRotation & operator=(Boost const &b)
Assign from a pure boost.
bool operator==(const LorentzRotation &rhs) const
Equality/inequality operators.
LorentzRotation(BoostX const &bx)
LorentzRotation & operator=(Rotation3D const &r)
Assign from a 3-D rotation.
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 & operator=(AxisAngle const &a)
LorentzRotation(Boost const &b)
Construct from a pure boost.
LorentzRotation(BoostZ const &bz)
LorentzRotation & operator=(RotationZ const &r)
LorentzRotation(LorentzRotation const &r)
Copy constructor.
void GetComponents(IT begin) const
Get the 16 matrix components into data specified by an iterator begin.
void SetRotationMatrix(const ForeignMatrix &m)
Set components from a linear algebra matrix of size at least 4x4, which must support operator()(i,...
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=(Quaternion const &q)
LorentzRotation & operator=(LorentzRotation const &rhs)
Assign from another LorentzRotation.
LorentzRotation & operator=(EulerAngles const &e)
LorentzRotation & operator=(BoostZ const &b)
void Invert()
Invert a Lorentz rotation in place.
LorentzRotation & operator=(const ForeignMatrix &m)
Assign from a linear algebra matrix of size at least 4x4, which must support operator()(i,...
LorentzRotation & operator*=(const R &r)
Post-Multiply (on right) by another LorentzRotation, Boost, or rotation : T = T*R.
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...
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...
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.
ELorentzRotationMatrixIndex
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()
Default constructor (identity transformation)
LorentzRotation & operator=(RotationX const &r)
Class describing a generic LorentzVector in the 4D space-time, using the specified coordinate system ...
Class describing a 4D cartesian coordinate system (x, y, z, t coordinates) or momentum-energy vectors...
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.
Namespace for new Math classes and functions.
double dist(Rotation3D const &r1, Rotation3D const &r2)
AxisAngle::Scalar Distance(const AxisAngle &r1, const R &r2)
Distance between two rotations.
This file contains a specialised ROOT message handler to test for diagnostic in unit tests.