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: - ROOT::Math::PtEtaPhiMVector based on pt (rho),eta,phi and M (t) coordinates in double precision - ROOT::Math::PtEtaPhiEVector based on pt (rho),eta,phi and E (t) coordinates in double precision - ROOT::Math::PxPyPzMVector based on px,py,pz and M (mass) coordinates in double precision - ROOT::Math::PxPyPzEVector based on px,py,pz and E (energy) coordinates in double precision - ROOT::Math::XYZTVector based on x,y,z,t coordinates (cartesian) in double precision (same as PxPyPzEVector) - ROOT::Math::XYZTVectorF based on x,y,z,t coordinates (cartesian) in float precision (same as PxPyPzEVector but float)
More details about the GenVector package can be found here.
@ingroup GenVector
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 ) More... | |
template<class ForeignLorentzVector > | |
LorentzVector (const ForeignLorentzVector &v) | |
Construct from a foreign 4D vector type, for example, HepLorentzVector Precondition: v must implement methods x(), y(), z(), and t() More... | |
template<class Coords > | |
LorentzVector (const LorentzVector< Coords > &v) | |
constructor from a LorentzVector expressed in different coordinates, or using a different Scalar type More... | |
LorentzVector (const Scalar &a, const Scalar &b, const Scalar &c, const Scalar &d) | |
generic constructors from four scalar values. More... | |
Scalar | Beta () const |
Return beta scalar value. More... | |
BetaVector | BoostToCM () const |
The beta vector for the boost that would bring this vector into its center of mass frame (zero momentum) More... | |
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) More... | |
Scalar | ColinearRapidity () const |
Rapidity in the direction of travel: atanh (|P|/E)=.5 log[(E+P)/(E-P)]. More... | |
const CoordSystem & | Coordinates () const |
Retrieve a const reference to the coordinates object. More... | |
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 More... | |
Scalar | E () const |
return 4-th component (time, or energy for a 4-momentum vector) More... | |
Scalar | e () const |
Scalar | energy () const |
Scalar | Et () const |
return the transverse energy More... | |
Scalar | Et2 () const |
return the transverse energy squared More... | |
Scalar | Eta () const |
pseudorapidity More... | |
Scalar | eta () const |
Scalar | Gamma () const |
Return Gamma scalar value. More... | |
template<class IT > | |
void | GetCoordinates (IT begin) const |
get internal data into 4 Scalars at *begin More... | |
template<class IT > | |
void | GetCoordinates (IT begin, IT end) const |
get internal data into 4 Scalars at *begin to *end More... | |
void | GetCoordinates (Scalar &a, Scalar &b, Scalar &c, Scalar &d) const |
get internal data into 4 Scalar numbers More... | |
void | GetCoordinates (Scalar dest[]) const |
get internal data into an array of 4 Scalar numbers More... | |
bool | isLightlike (Scalar tolerance=100 *std::numeric_limits< Scalar >::epsilon()) const |
Determine if momentum-energy can represent a massless particle. More... | |
bool | isSpacelike () const |
Determine if momentum-energy is spacelike, and represents a tachyon. More... | |
bool | isTimelike () const |
Determine if momentum-energy can represent a physical massive particle. More... | |
Scalar | M () const |
return magnitude (mass) using the (-,-,-,+) metric. More... | |
Scalar | M2 () const |
return magnitude (mass) squared M2 = T**2 - X**2 - Y**2 - Z**2 (we use -,-,-,+ metric) More... | |
Scalar | mag () const |
Scalar | mag2 () const |
Scalar | mass () const |
Scalar | mass2 () const |
Scalar | Mt () const |
return the transverse mass More... | |
Scalar | mt () const |
Scalar | Mt2 () const |
return the transverse mass squared More... | |
Scalar | mt2 () const |
bool | operator!= (const LorentzVector &rhs) const |
LorentzVector | operator* (const Scalar &a) const |
product of a LorentzVector by a scalar quantity More... | |
LorentzVector & | operator*= (Scalar a) |
multiplication by a scalar quantity v *= a More... | |
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 More... | |
template<class OtherLorentzVector > | |
LorentzVector & | operator+= (const OtherLorentzVector &q) |
Self addition with another Vector ( v+= q ) Enable the addition with any other LorentzVector. More... | |
LorentzVector | operator- () const |
Negative of a LorentzVector (q = - v ) More... | |
template<class OtherLorentzVector > | |
LorentzVector | operator- (const OtherLorentzVector &v2) const |
subtraction of two LorentzVectors (v3 = v1 - v2) Enable the subtraction of any other LorentzVector More... | |
template<class OtherLorentzVector > | |
LorentzVector & | operator-= (const OtherLorentzVector &q) |
Self subtraction of another Vector from this ( v-= q ) Enable the addition with any other LorentzVector. More... | |
LorentzVector< CoordSystem > | operator/ (const Scalar &a) const |
Divide a LorentzVector by a scalar quantity. More... | |
LorentzVector & | operator/= (Scalar a) |
division by a scalar quantity v /= a More... | |
template<class ForeignLorentzVector > | |
LorentzVector & | operator= (const ForeignLorentzVector &v) |
assignment from any other Lorentz vector implementing x(), y(), z() and t() More... | |
template<class OtherCoords > | |
LorentzVector & | operator= (const LorentzVector< OtherCoords > &v) |
Assignment operator from a lorentz vector of arbitrary type. More... | |
bool | operator== (const LorentzVector &rhs) const |
Exact equality. More... | |
Scalar | P () const |
Scalar | P2 () const |
return the square of the spatial (3D) magnitude ( X**2 + Y**2 + Z**2 ) More... | |
Scalar | Perp2 () const |
return the square of the transverse spatial component ( X**2 + Y**2 ) More... | |
Scalar | perp2 () const |
Scalar | Phi () const |
azimuthal Angle More... | |
Scalar | phi () const |
Scalar | Pt () const |
return the transverse spatial component sqrt ( X**2 + Y**2 ) More... | |
Scalar | pt () const |
Scalar | Px () const |
spatial X component More... | |
Scalar | px () const |
Scalar | Py () const |
spatial Y component More... | |
Scalar | py () const |
Scalar | Pz () const |
spatial Z component More... | |
Scalar | pz () const |
Scalar | R () const |
return the spatial (3D) magnitude ( sqrt(X**2 + Y**2 + Z**2) ) More... | |
Scalar | r () const |
Scalar | Rapidity () const |
Rapidity relative to the Z axis: .5 log [(E+Pz)/(E-Pz)]. More... | |
Scalar | Rho () const |
Scalar | rho () const |
LorentzVector< CoordSystem > & | SetCoordinates (const Scalar src[]) |
Set internal data based on an array of 4 Scalar numbers. More... | |
template<class IT > | |
LorentzVector< CoordSystem > & | SetCoordinates (IT begin, IT end) |
Set internal data based on 4 Scalars at *begin to *end. More... | |
LorentzVector< CoordSystem > & | SetCoordinates (Scalar a, Scalar b, Scalar c, Scalar d) |
Set internal data based on 4 Scalar numbers. More... | |
LorentzVector< CoordSystem > & | SetE (Scalar a) |
Methods setting a Single-component Work only if the component is one of which the vector is represented. More... | |
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) More... | |
Scalar | T () const |
Scalar | t () const |
Scalar | Theta () const |
polar Angle More... | |
Scalar | theta () const |
::ROOT::Math::DisplacementVector3D< Cartesian3D< Scalar > > | Vect () const |
get the spatial components of the Vector in a DisplacementVector based on Cartesian Coordinates More... | |
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 531 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 581 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 537 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 559 of file LorentzVector.h.
|
inline |
Rapidity in the direction of travel: atanh (|P|/E)=.5 log[(E+P)/(E-P)].
Definition at line 499 of file LorentzVector.h.
|
inline |
Retrieve a const reference to the coordinates object.
Definition at line 162 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 371 of file LorentzVector.h.
|
inline |
return 4-th component (time, or energy for a 4-momentum vector)
Definition at line 278 of file LorentzVector.h.
|
inline |
Definition at line 630 of file LorentzVector.h.
|
inline |
Definition at line 645 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 333 of file LorentzVector.h.
|
inline |
return the transverse energy squared
\[ e_t = \frac{E^2 p_{\perp}^2 }{ |p|^2 } \]
Definition at line 327 of file LorentzVector.h.
|
inline |
pseudorapidity
\[ \eta = - \ln { \tan { \frac { \theta} {2} } } \]
Definition at line 349 of file LorentzVector.h.
|
inline |
Definition at line 635 of file LorentzVector.h.
|
inline |
Return Gamma scalar value.
Definition at line 599 of file LorentzVector.h.
|
inline |
get internal data into 4 Scalars at *begin
Definition at line 221 of file LorentzVector.h.
|
inline |
get internal data into 4 Scalars at *begin to *end
Definition at line 210 of file LorentzVector.h.
|
inline |
get internal data into 4 Scalar numbers
Definition at line 197 of file LorentzVector.h.
|
inline |
get internal data into an array of 4 Scalar numbers
Definition at line 203 of file LorentzVector.h.
|
inline |
Determine if momentum-energy can represent a massless particle.
Definition at line 517 of file LorentzVector.h.
|
inline |
Determine if momentum-energy is spacelike, and represents a tachyon.
Definition at line 527 of file LorentzVector.h.
|
inline |
Determine if momentum-energy can represent a physical massive particle.
Definition at line 510 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 290 of file LorentzVector.h.
|
inline |
return magnitude (mass) squared M2 = T**2 - X**2 - Y**2 - Z**2 (we use -,-,-,+ metric)
Definition at line 284 of file LorentzVector.h.
|
inline |
Definition at line 639 of file LorentzVector.h.
|
inline |
Definition at line 638 of file LorentzVector.h.
|
inline |
Definition at line 646 of file LorentzVector.h.
|
inline |
Definition at line 647 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 321 of file LorentzVector.h.
|
inline |
Definition at line 640 of file LorentzVector.h.
|
inline |
return the transverse mass squared
\[ m_t^2 = E^2 - p{_z}^2 \]
Definition at line 315 of file LorentzVector.h.
|
inline |
Definition at line 641 of file LorentzVector.h.
|
inline |
Definition at line 252 of file LorentzVector.h.
|
inline |
product of a LorentzVector by a scalar quantity
a | scalar quantity of type a |
Definition at line 452 of file LorentzVector.h.
|
inline |
multiplication by a scalar quantity v *= a
Definition at line 434 of file LorentzVector.h.
|
inline |
Definition at line 478 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 408 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 382 of file LorentzVector.h.
|
inline |
Negative of a LorentzVector (q = - v )
Definition at line 473 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 423 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 395 of file LorentzVector.h.
|
inline |
Divide a LorentzVector by a scalar quantity.
a | scalar quantity of type a |
Definition at line 463 of file LorentzVector.h.
|
inline |
division by a scalar quantity v /= a
Definition at line 442 of file LorentzVector.h.
|
inline |
|
inline |
Assignment operator from a lorentz vector of arbitrary type.
Definition at line 126 of file LorentzVector.h.
|
inline |
Exact equality.
Definition at line 249 of file LorentzVector.h.
|
inline |
Definition at line 295 of file LorentzVector.h.
|
inline |
return the square of the spatial (3D) magnitude ( X**2 + Y**2 + Z**2 )
Definition at line 299 of file LorentzVector.h.
|
inline |
return the square of the transverse spatial component ( X**2 + Y**2 )
Definition at line 303 of file LorentzVector.h.
|
inline |
Definition at line 637 of file LorentzVector.h.
|
inline |
azimuthal Angle
Definition at line 338 of file LorentzVector.h.
|
inline |
Definition at line 633 of file LorentzVector.h.
|
inline |
return the transverse spatial component sqrt ( X**2 + Y**2 )
Definition at line 308 of file LorentzVector.h.
|
inline |
Definition at line 636 of file LorentzVector.h.
|
inline |
spatial X component
Definition at line 263 of file LorentzVector.h.
|
inline |
Definition at line 627 of file LorentzVector.h.
|
inline |
spatial Y component
Definition at line 268 of file LorentzVector.h.
|
inline |
Definition at line 628 of file LorentzVector.h.
|
inline |
spatial Z component
Definition at line 273 of file LorentzVector.h.
|
inline |
Definition at line 629 of file LorentzVector.h.
|
inline |
return the spatial (3D) magnitude ( sqrt(X**2 + Y**2 + Z**2) )
Definition at line 294 of file LorentzVector.h.
|
inline |
Definition at line 631 of file LorentzVector.h.
|
inline |
Rapidity relative to the Z axis: .5 log [(E+Pz)/(E-Pz)].
Definition at line 487 of file LorentzVector.h.
|
inline |
Definition at line 309 of file LorentzVector.h.
|
inline |
Definition at line 634 of file LorentzVector.h.
|
inline |
Set internal data based on an array of 4 Scalar numbers.
Definition at line 169 of file LorentzVector.h.
|
inline |
Set internal data based on 4 Scalars at *begin to *end.
Definition at line 186 of file LorentzVector.h.
|
inline |
Set internal data based on 4 Scalar numbers.
Definition at line 177 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 655 of file LorentzVector.h.
|
inline |
Definition at line 656 of file LorentzVector.h.
|
inline |
Definition at line 657 of file LorentzVector.h.
|
inline |
Definition at line 658 of file LorentzVector.h.
|
inline |
Definition at line 659 of file LorentzVector.h.
|
inline |
Definition at line 660 of file LorentzVector.h.
|
inline |
Definition at line 239 of file LorentzVector.h.
|
inline |
Definition at line 661 of file LorentzVector.h.
|
inline |
Definition at line 662 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 235 of file LorentzVector.h.
|
inline |
Definition at line 279 of file LorentzVector.h.
|
inline |
Definition at line 626 of file LorentzVector.h.
|
inline |
polar Angle
Definition at line 343 of file LorentzVector.h.
|
inline |
Definition at line 632 of file LorentzVector.h.
|
inline |
get the spatial components of the Vector in a DisplacementVector based on Cartesian Coordinates
Definition at line 355 of file LorentzVector.h.
|
inline |
Definition at line 264 of file LorentzVector.h.
|
inline |
Definition at line 623 of file LorentzVector.h.
|
inline |
Definition at line 269 of file LorentzVector.h.
|
inline |
Definition at line 624 of file LorentzVector.h.
|
inline |
Definition at line 274 of file LorentzVector.h.
|
inline |
Definition at line 625 of file LorentzVector.h.
|
private |
Definition at line 666 of file LorentzVector.h.