Class describing a generic LorentzVector in the 4D space-time, using the specified coordinate system for the spatial vector part.
The metric used for the LorentzVector is (-,-,-,+). In the case of LorentzVector we don't distinguish the concepts of points and displacement vectors as in the 3D case, since the main use case for 4D Vectors is to describe the kinematics of relativistic particles. A LorentzVector behaves like a DisplacementVector in 4D. The Minkowski components could be viewed as v and t, or for kinematic 4-vectors, as p and E.
ROOT provides specialisations and aliases to them of the ROOT::Math::LorentzVector template:
Definition at line 59 of file LorentzVector.h.
Public Types | |
typedef DisplacementVector3D< Cartesian3D< Scalar > > | BetaVector |
typedef CoordSystem | CoordinateType |
typedef CoordSystem::Scalar | Scalar |
Public Member Functions | |
LorentzVector () | |
default constructor of an empty vector (Px = Py = Pz = E = 0 ) | |
template<class ForeignLorentzVector , typename = decltype(std::declval<ForeignLorentzVector>().x() + std::declval<ForeignLorentzVector>().y() + std::declval<ForeignLorentzVector>().z() + std::declval<ForeignLorentzVector>().t())> | |
LorentzVector (const ForeignLorentzVector &v) | |
Construct from a foreign 4D vector type, for example, HepLorentzVector Precondition: v must implement methods x(), y(), z(), and t() | |
template<class Coords > | |
LorentzVector (const LorentzVector< Coords > &v) | |
constructor from a LorentzVector expressed in different coordinates, or using a different Scalar type | |
LorentzVector (const Scalar &a, const Scalar &b, const Scalar &c, const Scalar &d) | |
generic constructors from four scalar values. | |
Scalar | Beta () const |
Return beta scalar value. | |
BetaVector | BoostToCM () const |
The beta vector for the boost that would bring this vector into its center of mass frame (zero momentum) | |
template<class Other4Vector > | |
BetaVector | BoostToCM (const Other4Vector &v) const |
The beta vector for the boost that would bring this vector into its center of mass frame (zero momentum) | |
Scalar | ColinearRapidity () const |
Rapidity in the direction of travel: atanh (|P|/E)=.5 log[(E+P)/(E-P)]. | |
const CoordSystem & | Coordinates () const |
Retrieve a const reference to the coordinates object. | |
template<class OtherLorentzVector > | |
Scalar | Dot (const OtherLorentzVector &q) const |
scalar (Dot) product of two LorentzVector vectors (metric is -,-,-,+) Enable the product using any other LorentzVector implementing the x(), y() , y() and t() member functions | |
Scalar | E () const |
return 4-th component (time, or energy for a 4-momentum vector) | |
Scalar | e () const |
Scalar | energy () const |
Scalar | Et () const |
return the transverse energy | |
Scalar | Et2 () const |
return the transverse energy squared | |
Scalar | Eta () const |
pseudorapidity | |
Scalar | eta () const |
Scalar | Gamma () const |
Return Gamma scalar value. | |
template<class IT > | |
void | GetCoordinates (IT begin) const |
get internal data into 4 Scalars at *begin | |
template<class IT > | |
void | GetCoordinates (IT begin, IT end) const |
get internal data into 4 Scalars at *begin to *end | |
void | GetCoordinates (Scalar &a, Scalar &b, Scalar &c, Scalar &d) const |
get internal data into 4 Scalar numbers | |
void | GetCoordinates (Scalar dest[]) const |
get internal data into an array of 4 Scalar numbers | |
bool | isLightlike (Scalar tolerance=100 *std::numeric_limits< Scalar >::epsilon()) const |
Determine if momentum-energy can represent a massless particle. | |
bool | isSpacelike () const |
Determine if momentum-energy is spacelike, and represents a tachyon. | |
bool | isTimelike () const |
Determine if momentum-energy can represent a physical massive particle. | |
Scalar | M () const |
return magnitude (mass) using the (-,-,-,+) metric. | |
Scalar | M2 () const |
return magnitude (mass) squared M2 = T**2 - X**2 - Y**2 - Z**2 (we use -,-,-,+ metric) | |
Scalar | mag () const |
Scalar | mag2 () const |
Scalar | mass () const |
Scalar | mass2 () const |
Scalar | Mt () const |
return the transverse mass | |
Scalar | mt () const |
Scalar | Mt2 () const |
return the transverse mass squared | |
Scalar | mt2 () const |
bool | operator!= (const LorentzVector &rhs) const |
LorentzVector | operator* (const Scalar &a) const |
product of a LorentzVector by a scalar quantity | |
LorentzVector & | operator*= (Scalar a) |
multiplication by a scalar quantity v *= a | |
LorentzVector | operator+ () const |
template<class OtherLorentzVector > | |
LorentzVector | operator+ (const OtherLorentzVector &v2) const |
addition of two LorentzVectors (v3 = v1 + v2) Enable the addition with any other LorentzVector | |
template<class OtherLorentzVector > | |
LorentzVector & | operator+= (const OtherLorentzVector &q) |
Self addition with another Vector ( v+= q ) Enable the addition with any other LorentzVector. | |
LorentzVector | operator- () const |
Negative of a LorentzVector (q = - v ) | |
template<class OtherLorentzVector > | |
LorentzVector | operator- (const OtherLorentzVector &v2) const |
subtraction of two LorentzVectors (v3 = v1 - v2) Enable the subtraction of any other LorentzVector | |
template<class OtherLorentzVector > | |
LorentzVector & | operator-= (const OtherLorentzVector &q) |
Self subtraction of another Vector from this ( v-= q ) Enable the addition with any other LorentzVector. | |
LorentzVector< CoordSystem > | operator/ (const Scalar &a) const |
Divide a LorentzVector by a scalar quantity. | |
LorentzVector & | operator/= (Scalar a) |
division by a scalar quantity v /= a | |
template<class ForeignLorentzVector , typename = decltype(std::declval<ForeignLorentzVector>().x() + std::declval<ForeignLorentzVector>().y() + std::declval<ForeignLorentzVector>().z() + std::declval<ForeignLorentzVector>().t())> | |
LorentzVector & | operator= (const ForeignLorentzVector &v) |
assignment from any other Lorentz vector implementing x(), y(), z() and t() | |
template<class OtherCoords > | |
LorentzVector & | operator= (const LorentzVector< OtherCoords > &v) |
Assignment operator from a lorentz vector of arbitrary type. | |
bool | operator== (const LorentzVector &rhs) const |
Exact equality. | |
Scalar | P () const |
Scalar | P2 () const |
return the square of the spatial (3D) magnitude ( X**2 + Y**2 + Z**2 ) | |
Scalar | Perp2 () const |
return the square of the transverse spatial component ( X**2 + Y**2 ) | |
Scalar | perp2 () const |
Scalar | Phi () const |
azimuthal Angle | |
Scalar | phi () const |
Scalar | Pt () const |
return the transverse spatial component sqrt ( X**2 + Y**2 ) | |
Scalar | pt () const |
Scalar | Px () const |
spatial X component | |
Scalar | px () const |
Scalar | Py () const |
spatial Y component | |
Scalar | py () const |
Scalar | Pz () const |
spatial Z component | |
Scalar | pz () const |
Scalar | R () const |
return the spatial (3D) magnitude ( sqrt(X**2 + Y**2 + Z**2) ) | |
Scalar | r () const |
Scalar | Rapidity () const |
Rapidity relative to the Z axis: .5 log [(E+Pz)/(E-Pz)]. | |
Scalar | Rho () const |
Scalar | rho () const |
LorentzVector< CoordSystem > & | SetCoordinates (const Scalar src[]) |
Set internal data based on an array of 4 Scalar numbers. | |
template<class IT > | |
LorentzVector< CoordSystem > & | SetCoordinates (IT begin, IT end) |
Set internal data based on 4 Scalars at *begin to *end. | |
LorentzVector< CoordSystem > & | SetCoordinates (Scalar a, Scalar b, Scalar c, Scalar d) |
Set internal data based on 4 Scalar numbers. | |
LorentzVector< CoordSystem > & | SetE (Scalar a) |
Methods setting a Single-component Work only if the component is one of which the vector is represented. | |
LorentzVector< CoordSystem > & | SetEta (Scalar a) |
LorentzVector< CoordSystem > & | SetM (Scalar a) |
LorentzVector< CoordSystem > & | SetPhi (Scalar a) |
LorentzVector< CoordSystem > & | SetPt (Scalar a) |
LorentzVector< CoordSystem > & | SetPx (Scalar a) |
LorentzVector< CoordSystem > & | SetPxPyPzE (Scalar xx, Scalar yy, Scalar zz, Scalar ee) |
LorentzVector< CoordSystem > & | SetPy (Scalar a) |
LorentzVector< CoordSystem > & | SetPz (Scalar a) |
LorentzVector< CoordSystem > & | SetXYZT (Scalar xx, Scalar yy, Scalar zz, Scalar tt) |
set the values of the vector from the cartesian components (x,y,z,t) (if the vector is held in another coordinates, like (Pt,eta,phi,m) then (x, y, z, t) are converted to that form) | |
Scalar | T () const |
Scalar | t () const |
Scalar | Theta () const |
polar Angle | |
Scalar | theta () const |
::ROOT::Math::DisplacementVector3D< Cartesian3D< Scalar > > | Vect () const |
get the spatial components of the Vector in a DisplacementVector based on Cartesian Coordinates | |
Scalar | X () const |
Scalar | x () const |
Scalar | Y () const |
Scalar | y () const |
Scalar | Z () const |
Scalar | z () const |
Private Attributes | |
CoordSystem | fCoordinates |
#include <Math/GenVector/LorentzVector.h>
typedef DisplacementVector3D< Cartesian3D<Scalar> > ROOT::Math::LorentzVector< CoordSystem >::BetaVector |
Definition at line 541 of file LorentzVector.h.
typedef CoordSystem ROOT::Math::LorentzVector< CoordSystem >::CoordinateType |
Definition at line 66 of file LorentzVector.h.
typedef CoordSystem::Scalar ROOT::Math::LorentzVector< CoordSystem >::Scalar |
Definition at line 65 of file LorentzVector.h.
|
inline |
default constructor of an empty vector (Px = Py = Pz = E = 0 )
Definition at line 71 of file LorentzVector.h.
|
inline |
generic constructors from four scalar values.
The association between values and coordinate depends on the coordinate system. For PxPyPzE4D,
a | scalar value (Px) |
b | scalar value (Py) |
c | scalar value (Pz) |
d | scalar value (E) |
Definition at line 82 of file LorentzVector.h.
|
inlineexplicit |
constructor from a LorentzVector expressed in different coordinates, or using a different Scalar type
Definition at line 93 of file LorentzVector.h.
|
inlineexplicit |
|
inline |
Return beta scalar value.
Definition at line 591 of file LorentzVector.h.
|
inline |
The beta vector for the boost that would bring this vector into its center of mass frame (zero momentum)
Definition at line 547 of file LorentzVector.h.
|
inline |
The beta vector for the boost that would bring this vector into its center of mass frame (zero momentum)
Definition at line 569 of file LorentzVector.h.
|
inline |
Rapidity in the direction of travel: atanh (|P|/E)=.5 log[(E+P)/(E-P)].
Definition at line 508 of file LorentzVector.h.
|
inline |
Retrieve a const reference to the coordinates object.
Definition at line 170 of file LorentzVector.h.
|
inline |
scalar (Dot) product of two LorentzVector vectors (metric is -,-,-,+) Enable the product using any other LorentzVector implementing the x(), y() , y() and t() member functions
q | any LorentzVector implementing the x(), y() , z() and t() member functions |
Definition at line 379 of file LorentzVector.h.
|
inline |
return 4-th component (time, or energy for a 4-momentum vector)
Definition at line 286 of file LorentzVector.h.
|
inline |
Definition at line 641 of file LorentzVector.h.
|
inline |
Definition at line 656 of file LorentzVector.h.
|
inline |
return the transverse energy
\[ e_t = \sqrt{ \frac{E^2 p_{\perp}^2 }{ |p|^2 } } X sign(E) \]
Definition at line 341 of file LorentzVector.h.
|
inline |
return the transverse energy squared
\[ e_t = \frac{E^2 p_{\perp}^2 }{ |p|^2 } \]
Definition at line 335 of file LorentzVector.h.
|
inline |
pseudorapidity
\[ \eta = - \ln { \tan { \frac { \theta} {2} } } \]
Definition at line 357 of file LorentzVector.h.
|
inline |
Definition at line 646 of file LorentzVector.h.
|
inline |
Return Gamma scalar value.
Definition at line 609 of file LorentzVector.h.
|
inline |
get internal data into 4 Scalars at *begin
Definition at line 229 of file LorentzVector.h.
|
inline |
get internal data into 4 Scalars at *begin to *end
Definition at line 218 of file LorentzVector.h.
|
inline |
get internal data into 4 Scalar numbers
Definition at line 205 of file LorentzVector.h.
|
inline |
get internal data into an array of 4 Scalar numbers
Definition at line 211 of file LorentzVector.h.
|
inline |
Determine if momentum-energy can represent a massless particle.
Definition at line 527 of file LorentzVector.h.
|
inline |
Determine if momentum-energy is spacelike, and represents a tachyon.
Definition at line 537 of file LorentzVector.h.
|
inline |
Determine if momentum-energy can represent a physical massive particle.
Definition at line 520 of file LorentzVector.h.
|
inline |
return magnitude (mass) using the (-,-,-,+) metric.
If M2 is negative (space-like vector) a GenVector_exception is suggested and if continuing, - sqrt( -M2) is returned
Definition at line 298 of file LorentzVector.h.
|
inline |
return magnitude (mass) squared M2 = T**2 - X**2 - Y**2 - Z**2 (we use -,-,-,+ metric)
Definition at line 292 of file LorentzVector.h.
|
inline |
Definition at line 650 of file LorentzVector.h.
|
inline |
Definition at line 649 of file LorentzVector.h.
|
inline |
Definition at line 657 of file LorentzVector.h.
|
inline |
Definition at line 658 of file LorentzVector.h.
|
inline |
return the transverse mass
\[ \sqrt{ m_t^2 = E^2 - p{_z}^2} X sign(E^ - p{_z}^2) \]
Definition at line 329 of file LorentzVector.h.
|
inline |
Definition at line 651 of file LorentzVector.h.
|
inline |
return the transverse mass squared
\[ m_t^2 = E^2 - p{_z}^2 \]
Definition at line 323 of file LorentzVector.h.
|
inline |
Definition at line 652 of file LorentzVector.h.
|
inline |
Definition at line 260 of file LorentzVector.h.
|
inline |
product of a LorentzVector by a scalar quantity
a | scalar quantity of type a |
Definition at line 460 of file LorentzVector.h.
|
inline |
multiplication by a scalar quantity v *= a
Definition at line 442 of file LorentzVector.h.
|
inline |
Definition at line 486 of file LorentzVector.h.
|
inline |
addition of two LorentzVectors (v3 = v1 + v2) Enable the addition with any other LorentzVector
v2 | any LorentzVector implementing the x(), y() , z() and t() member functions |
Definition at line 416 of file LorentzVector.h.
|
inline |
Self addition with another Vector ( v+= q ) Enable the addition with any other LorentzVector.
q | any LorentzVector implementing the x(), y() , z() and t() member functions |
Definition at line 390 of file LorentzVector.h.
|
inline |
Negative of a LorentzVector (q = - v )
Definition at line 481 of file LorentzVector.h.
|
inline |
subtraction of two LorentzVectors (v3 = v1 - v2) Enable the subtraction of any other LorentzVector
v2 | any LorentzVector implementing the x(), y() , z() and t() member functions |
Definition at line 431 of file LorentzVector.h.
|
inline |
Self subtraction of another Vector from this ( v-= q ) Enable the addition with any other LorentzVector.
q | any LorentzVector implementing the x(), y() , z() and t() member functions |
Definition at line 403 of file LorentzVector.h.
|
inline |
Divide a LorentzVector by a scalar quantity.
a | scalar quantity of type a |
Definition at line 471 of file LorentzVector.h.
|
inline |
division by a scalar quantity v /= a
Definition at line 450 of file LorentzVector.h.
|
inline |
|
inline |
Assignment operator from a lorentz vector of arbitrary type.
Definition at line 130 of file LorentzVector.h.
|
inline |
Exact equality.
Definition at line 257 of file LorentzVector.h.
|
inline |
Definition at line 303 of file LorentzVector.h.
|
inline |
return the square of the spatial (3D) magnitude ( X**2 + Y**2 + Z**2 )
Definition at line 307 of file LorentzVector.h.
|
inline |
return the square of the transverse spatial component ( X**2 + Y**2 )
Definition at line 311 of file LorentzVector.h.
|
inline |
Definition at line 648 of file LorentzVector.h.
|
inline |
azimuthal Angle
Definition at line 346 of file LorentzVector.h.
|
inline |
Definition at line 644 of file LorentzVector.h.
|
inline |
return the transverse spatial component sqrt ( X**2 + Y**2 )
Definition at line 316 of file LorentzVector.h.
|
inline |
Definition at line 647 of file LorentzVector.h.
|
inline |
spatial X component
Definition at line 271 of file LorentzVector.h.
|
inline |
Definition at line 638 of file LorentzVector.h.
|
inline |
spatial Y component
Definition at line 276 of file LorentzVector.h.
|
inline |
Definition at line 639 of file LorentzVector.h.
|
inline |
spatial Z component
Definition at line 281 of file LorentzVector.h.
|
inline |
Definition at line 640 of file LorentzVector.h.
|
inline |
return the spatial (3D) magnitude ( sqrt(X**2 + Y**2 + Z**2) )
Definition at line 302 of file LorentzVector.h.
|
inline |
Definition at line 642 of file LorentzVector.h.
|
inline |
Rapidity relative to the Z axis: .5 log [(E+Pz)/(E-Pz)].
Definition at line 495 of file LorentzVector.h.
|
inline |
Definition at line 317 of file LorentzVector.h.
|
inline |
Definition at line 645 of file LorentzVector.h.
|
inline |
Set internal data based on an array of 4 Scalar numbers.
Definition at line 177 of file LorentzVector.h.
|
inline |
Set internal data based on 4 Scalars at *begin to *end.
Definition at line 194 of file LorentzVector.h.
|
inline |
Set internal data based on 4 Scalar numbers.
Definition at line 185 of file LorentzVector.h.
|
inline |
Methods setting a Single-component Work only if the component is one of which the vector is represented.
For example SetE will work for a PxPyPzE Vector but not for a PxPyPzM Vector.
Definition at line 666 of file LorentzVector.h.
|
inline |
Definition at line 667 of file LorentzVector.h.
|
inline |
Definition at line 668 of file LorentzVector.h.
|
inline |
Definition at line 669 of file LorentzVector.h.
|
inline |
Definition at line 670 of file LorentzVector.h.
|
inline |
Definition at line 671 of file LorentzVector.h.
|
inline |
Definition at line 247 of file LorentzVector.h.
|
inline |
Definition at line 672 of file LorentzVector.h.
|
inline |
Definition at line 673 of file LorentzVector.h.
|
inline |
set the values of the vector from the cartesian components (x,y,z,t) (if the vector is held in another coordinates, like (Pt,eta,phi,m) then (x, y, z, t) are converted to that form)
Definition at line 243 of file LorentzVector.h.
|
inline |
Definition at line 287 of file LorentzVector.h.
|
inline |
Definition at line 637 of file LorentzVector.h.
|
inline |
polar Angle
Definition at line 351 of file LorentzVector.h.
|
inline |
Definition at line 643 of file LorentzVector.h.
|
inline |
get the spatial components of the Vector in a DisplacementVector based on Cartesian Coordinates
Definition at line 363 of file LorentzVector.h.
|
inline |
Definition at line 272 of file LorentzVector.h.
|
inline |
Definition at line 634 of file LorentzVector.h.
|
inline |
Definition at line 277 of file LorentzVector.h.
|
inline |
Definition at line 635 of file LorentzVector.h.
|
inline |
Definition at line 282 of file LorentzVector.h.
|
inline |
Definition at line 636 of file LorentzVector.h.
|
private |
Definition at line 677 of file LorentzVector.h.