17 #ifndef ROOT_Math_GenVector_LorentzRotation 18 #define ROOT_Math_GenVector_LorentzRotation 1 117 template<
class ForeignMatrix>
127 template<
class Foreign4Vector>
129 const Foreign4Vector& v2,
130 const Foreign4Vector& v3,
131 const Foreign4Vector& v4 ) {
SetComponents(v1, v2, v3, v4); }
138 Scalar yx, Scalar yy, Scalar yz, Scalar yt,
139 Scalar zx, Scalar zy, Scalar zz, Scalar zt,
140 Scalar tx, Scalar ty, Scalar tz, Scalar
tt)
154 rhs.
fM[4], rhs.
fM[5], rhs.
fM[6], rhs.
fM[7],
155 rhs.
fM[8], rhs.
fM[9], rhs.
fM[10], rhs.
fM[11],
156 rhs.
fM[12], rhs.
fM[13], rhs.
fM[14], rhs.
fM[15] );
196 template<
class ForeignMatrix>
200 m(1,0),
m(1,1),
m(1,2),
m(1,3),
201 m(2,0),
m(2,1),
m(2,2),
m(2,3),
202 m(3,0),
m(3,1),
m(3,2),
m(3,3) );
220 template<
class Foreign4Vector>
223 const Foreign4Vector& v2,
224 const Foreign4Vector& v3,
225 const Foreign4Vector& v4 ) {
238 template<
class Foreign4Vector>
243 Foreign4Vector& v4 )
const {
260 for (
int i = 0; i <16; ++i) {
277 for (
int i = 0; i <16; ++i) {
289 std::copy (
fM+0,
fM+16, begin );
298 template<
class ForeignMatrix>
312 template<
class ForeignMatrix>
326 Scalar yx, Scalar yy, Scalar yz, Scalar yt,
327 Scalar zx, Scalar zy, Scalar zz, Scalar zt,
328 Scalar tx, Scalar ty, Scalar tz, Scalar
tt) {
340 Scalar &yx, Scalar &yy, Scalar &yz, Scalar &yt,
341 Scalar &zx, Scalar &zy, Scalar &zz, Scalar &zt,
342 Scalar &tx, Scalar &ty, Scalar &tz, Scalar &
tt)
const {
372 template <
class CoordSystem>
385 template <
class Foreign4Vector>
390 return Foreign4Vector ( r_xyzt.
X(), r_xyzt.
Y(), r_xyzt.
Z(), r_xyzt.
T() );
396 template <
class A4Vector>
454 for (
unsigned int i=0; i < 16; ++i) {
455 if(
fM[i] != rhs.
fM[i] )
return false;
LorentzRotation & operator=(RotationY 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)
LorentzRotation(BoostX const &bx)
Class describing a generic LorentzVector in the 4D space-time, using the specified coordinate system ...
double dist(Rotation3D const &r1, Rotation3D const &r2)
This namespace contains pre-defined functions to be used in conjuction with TExecutor::Map and TExecu...
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(IT begin, IT end)
Construct given a pair of pointers or iterators defining the beginning and end of an array of sixteen...
Rotation class representing a 3D rotation about the Z axis by the angle of rotation.
void GetLorentzRotation(Scalar r[]) const
Get elements of internal 4x4 symmetric representation, into a data array suitable for direct use as t...
LorentzRotation & operator=(Quaternion const &q)
LorentzRotation(BoostZ const &bz)
A4Vector operator*(const A4Vector &v) const
Overload operator * for rotation on a vector.
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...
Rotation class with the (3D) rotation represented by a unit quaternion (u, i, j, k).
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...
Class representing a Lorentz Boost along the X axis, by beta.
std::ostream & operator<<(std::ostream &os, const AxisAngle &a)
Stream Output and Input.
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...
AxisAngle class describing rotation represented with direction axis (3D Vector) and an angle of rotat...
LorentzRotation Inverse() const
Return inverse of a rotation.
bool operator!=(const LorentzRotation &rhs) const
LorentzRotation & operator=(Rotation3D const &r)
Assign from a 3-D rotation.
void GetComponents(IT begin) const
Get the 16 matrix components into data specified by an iterator begin.
Rotation class representing a 3D rotation about the Y axis by the angle of rotation.
Lorentz boost class with the (4D) transformation represented internally by a 4x4 orthosymplectic matr...
void GetLorentzRotation(Scalar r[]) const
Get elements of internal 4x4 symmetric representation, into a data array suitable for direct use as t...
void GetRotationMatrix(ForeignMatrix &m) const
Get components into a linear algebra matrix of size at least 4x4, which must support operator()(i...
LorentzRotation & operator=(AxisAngle const &a)
Lorentz transformation class with the (4D) transformation represented by a 4x4 orthosymplectic matrix...
Class representing a Lorentz Boost along the Y axis, by beta.
LorentzRotation & operator=(Boost const &b)
Assign from a pure boost.
ELorentzRotationMatrixIndex
LorentzRotation()
Default constructor (identity transformation)
unsigned int r1[N_CITIES]
Rotation class representing a 3D rotation about the X axis by the angle of rotation.
Rotation class with the (3D) rotation represented by a 3x3 orthogonal matrix.
LorentzVector< ROOT::Math::PxPyPzE4D< double > > operator()(const LorentzVector< ROOT::Math::PxPyPzE4D< double > > &v) const
Lorentz transformation operation on a Minkowski ('Cartesian') LorentzVector.
LorentzRotation(BoostY const &by)
LorentzRotation & operator=(BoostZ const &b)
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).
LorentzRotation & operator=(BoostX const &b)
bool operator==(const LorentzRotation &rhs) const
Equality/inequality operators.
void Rectify()
Re-adjust components to eliminate small deviations from a perfect orthosyplectic matrix.
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...
Class representing a Lorentz Boost along the Z axis, by beta.
EulerAngles class describing rotation as three angles (Euler Angles).
you should not use this method at all Int_t Int_t Double_t Double_t Double_t e
void SetRotationMatrix(const ForeignMatrix &m)
Set components from a linear algebra matrix of size at least 4x4, which must support operator()(i...
LorentzRotation & operator=(LorentzRotation const &rhs)
Assign from another LorentzRotation.
LorentzRotation & operator=(RotationX const &r)
Namespace for new Math classes and functions.
void GetLorentzRotation(Scalar r[]) const
Get elements of internal 4x4 symmetric representation, into a data array suitable for direct use as t...
LorentzRotation(Boost const &b)
Construct from a pure boost.
you should not use this method at all Int_t Int_t z
LorentzRotation & operator*=(const R &r)
Post-Multiply (on right) by another LorentzRotation, Boost, or rotation : T = T*R.
void GetLorentzRotation(Scalar r[]) const
Get elements of internal 4x4 symmetric representation, into a data array suitable for direct use as t...
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).
you should not use this method at all Int_t Int_t Double_t Double_t Double_t Int_t Double_t Double_t Double_t Double_t b
AxisAngle::Scalar Distance(const AxisAngle &r1, const R &r2)
Distance between two rotations.
LorentzRotation(LorentzRotation const &r)
Copy constructor.
LorentzRotation & operator=(RotationZ const &r)
LorentzRotation & operator=(EulerAngles const &e)
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.
unsigned int r2[N_CITIES]
void Invert()
Invert a Lorentz rotation in place.
LorentzRotation & operator=(BoostY const &b)
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.