class ROOT::Math::PxPyPzM4D<double>

Class describing a 4D coordinate system
or momentum-energy vectors stored as (Px, Py, Pz, M).
This system is useful to describe ultra-relativistic particles
(like electrons at LHC) to avoid numerical errors evaluating the mass
when E >>> m
The metric used is (-,-,-,+)
Spacelike particles (M2 < 0) are described with negative mass values,
but in this case m2 must alwasy be less than P2 to preserve a positive value of E2

@ingroup GenVector

Function Members (Methods)

ROOT::Math::PxPyPzM4D<double>::ScalarE() const
ROOT::Math::PxPyPzM4D<double>::ScalarE2() const
ROOT::Math::PxPyPzM4D<double>::ScalarEt() const
ROOT::Math::PxPyPzM4D<double>::ScalarEt2() const
ROOT::Math::PxPyPzM4D<double>::ScalarEta() const
voidGetCoordinates(ROOT::Math::PxPyPzM4D<double>::Scalar* dest) const
voidGetCoordinates(ROOT::Math::PxPyPzM4D<double>::Scalar& x, ROOT::Math::PxPyPzM4D<double>::Scalar& y, ROOT::Math::PxPyPzM4D<double>::Scalar& z, ROOT::Math::PxPyPzM4D<double>::Scalar& m) const
ROOT::Math::PxPyPzM4D<double>::ScalarM() const
ROOT::Math::PxPyPzM4D<double>::ScalarM2() const
ROOT::Math::PxPyPzM4D<double>::ScalarMag() const
ROOT::Math::PxPyPzM4D<double>::ScalarMag2() const
ROOT::Math::PxPyPzM4D<double>::ScalarMt() const
ROOT::Math::PxPyPzM4D<double>::ScalarMt2() const
booloperator!=(const ROOT::Math::PxPyPzM4D<double>& rhs) const
ROOT::Math::PxPyPzM4D<double>&operator=(const ROOT::Math::PxPyPzM4D<double>& v)
booloperator==(const ROOT::Math::PxPyPzM4D<double>& rhs) const
ROOT::Math::PxPyPzM4D<double>::ScalarP() const
ROOT::Math::PxPyPzM4D<double>::ScalarP2() const
ROOT::Math::PxPyPzM4D<double>::ScalarPerp() const
ROOT::Math::PxPyPzM4D<double>::ScalarPerp2() const
ROOT::Math::PxPyPzM4D<double>::ScalarPhi() const
ROOT::Math::PxPyPzM4D<double>::ScalarPt() const
ROOT::Math::PxPyPzM4D<double>::ScalarPt2() const
ROOT::Math::PxPyPzM4D<double>::ScalarPx() const
ROOT::Math::PxPyPzM4D<double>PxPyPzM4D<double>(const ROOT::Math::PxPyPzM4D<double>& v)
ROOT::Math::PxPyPzM4D<double>PxPyPzM4D<double>(ROOT::Math::PxPyPzM4D<double>::Scalar x, ROOT::Math::PxPyPzM4D<double>::Scalar y, ROOT::Math::PxPyPzM4D<double>::Scalar z, ROOT::Math::PxPyPzM4D<double>::Scalar m)
ROOT::Math::PxPyPzM4D<double>::ScalarPy() const
ROOT::Math::PxPyPzM4D<double>::ScalarPz() const
ROOT::Math::PxPyPzM4D<double>::ScalarR() const
ROOT::Math::PxPyPzM4D<double>::ScalarRho() const
voidScale(const ROOT::Math::PxPyPzM4D<double>::Scalar& a)
voidSetCoordinates(const ROOT::Math::PxPyPzM4D<double>::Scalar* src)
voidSetCoordinates(ROOT::Math::PxPyPzM4D<double>::Scalar x, ROOT::Math::PxPyPzM4D<double>::Scalar y, ROOT::Math::PxPyPzM4D<double>::Scalar z, ROOT::Math::PxPyPzM4D<double>::Scalar m)
voidSetE(double t)
voidSetEta(double eta)
voidSetM(ROOT::Math::PxPyPzM4D<double>::Scalar m)
voidSetPhi(double phi)
voidSetPt(double pt)
voidSetPx(ROOT::Math::PxPyPzM4D<double>::Scalar x)
voidSetPxPyPzE(ROOT::Math::PxPyPzM4D<double>::Scalar px, ROOT::Math::PxPyPzM4D<double>::Scalar py, ROOT::Math::PxPyPzM4D<double>::Scalar pz, ROOT::Math::PxPyPzM4D<double>::Scalar e)
voidSetPy(ROOT::Math::PxPyPzM4D<double>::Scalar y)
voidSetPz(ROOT::Math::PxPyPzM4D<double>::Scalar z)
ROOT::Math::PxPyPzM4D<double>::ScalarT() const
ROOT::Math::PxPyPzM4D<double>::Scalart() const
ROOT::Math::PxPyPzM4D<double>::ScalarTheta() const
ROOT::Math::PxPyPzM4D<double>::ScalarX() const
ROOT::Math::PxPyPzM4D<double>::Scalarx() const
ROOT::Math::PxPyPzM4D<double>::ScalarY() const
ROOT::Math::PxPyPzM4D<double>::Scalary() const
ROOT::Math::PxPyPzM4D<double>::ScalarZ() const
ROOT::Math::PxPyPzM4D<double>::Scalarz() const

Data Members


Class Charts

Inheritance Inherited Members Includes Libraries
Class Charts

Function documentation

void SetCoordinates(const ROOT::Math::PxPyPzM4D<double>::Scalar* src)
Set internal data based on an array of 4 Scalar numbers

void GetCoordinates(ROOT::Math::PxPyPzM4D<double>::Scalar* dest) const
get internal data into an array of 4 Scalar numbers

{ dest[0] = fX; dest[1] = fY; dest[2] = fZ; dest[3] = fM; }
void SetCoordinates(ROOT::Math::PxPyPzM4D<double>::Scalar x, ROOT::Math::PxPyPzM4D<double>::Scalar y, ROOT::Math::PxPyPzM4D<double>::Scalar z, ROOT::Math::PxPyPzM4D<double>::Scalar m)
Set internal data based on 4 Scalar numbers

void GetCoordinates(ROOT::Math::PxPyPzM4D<double>::Scalar& x, ROOT::Math::PxPyPzM4D<double>::Scalar& y, ROOT::Math::PxPyPzM4D<double>::Scalar& z, ROOT::Math::PxPyPzM4D<double>::Scalar& m) const
get internal data into 4 Scalar numbers

{ x=fX; y=fY; z=fZ; m=fM;}
Scalar Px()
 --------- Coordinates and Coordinate-like Scalar properties -------------
 cartesian (Minkowski)coordinate accessors
{ return fX;}
Scalar Py()
{ return fY;}
Scalar Pz()
{ return fZ;}
Scalar M()
{ return fM; }
Scalar X()
{ return fX;}
Scalar Y()
{ return fY;}
Scalar Z()
{ return fZ;}
Scalar E()
 other coordinate representation


{ return std::sqrt(E2() ); }
Scalar T()
{ return E();}
Scalar P2()
quared magnitude of spatial component

{ return fX*fX + fY*fY + fZ*fZ; }
Scalar P()
magnitude of spatial components (magnitude of 3-momentum)

{ return std::sqrt(P2()); }
Scalar R()
{ return P(); }
Scalar M2()
vector magnitude squared (or mass squared)
In case of negative mass (spacelike particles return negative values)

Scalar Mag2()
{ return M2(); }
Scalar Mag()
{ return M(); }
Scalar E2()
energy squared

Scalar Pt2()
transverse spatial component squared

{ return fX*fX + fY*fY;}
Scalar Perp2()
{ return Pt2();}
Scalar Pt()
Transverse spatial component (P_perp or rho)

{ return std::sqrt(Perp2());}
Scalar Perp()
{ return Pt();}
Scalar Rho()
{ return Pt();}
Scalar Mt2()
transverse mass squared

{ return E2() - fZ*fZ; }
Scalar Mt()
transverse mass

Scalar Et2()
transverse energy squared

Scalar Et()
transverse energy

Scalar Phi()
azimuthal angle

Scalar Theta()
polar angle

Scalar Eta()

void SetPx(ROOT::Math::PxPyPzM4D<double>::Scalar x)
 --------- Set Coordinates of this system  ---------------

set X value

void SetPy(ROOT::Math::PxPyPzM4D<double>::Scalar y)
set Y value

void SetPz(ROOT::Math::PxPyPzM4D<double>::Scalar z)
set Z value

void SetM(ROOT::Math::PxPyPzM4D<double>::Scalar m)
set T value

void SetPxPyPzE(ROOT::Math::PxPyPzM4D<double>::Scalar px, ROOT::Math::PxPyPzM4D<double>::Scalar py, ROOT::Math::PxPyPzM4D<double>::Scalar pz, ROOT::Math::PxPyPzM4D<double>::Scalar e)
t all valu

void Negate( )
 ------ Manipulations -------------

negate the 4-vector

{ fX = -fX; fY = -fY; fZ = -fZ; fM = -fM;}
void Scale(const ROOT::Math::PxPyPzM4D<double>::Scalar& a)
scale coordinate values by a scalar quantity a

Scalar x()
 ============= Compatibility section ==================
 The following make this coordinate system look enough like a CLHEP
 vector that an assignment member template can work with either
{ return X(); }
Scalar y()
{ return Y(); }
Scalar z()
{ return Z(); }
Scalar t()
{ return E(); }
void SetPt(double pt)
 ====== Set member functions for coordinates in other systems =======
void SetEta(double eta)
void SetPhi(double phi)
void SetE(double t)
void RestrictNegMass()
 restrict the value of negative mass to avoid unphysical negative E2 values
 M2 must be less than P2 for the tachionic particles - otherwise use positive values

Last update: root/mathcore:$Id: PxPyPzM4D.h 21503 2007-12-19 17:34:54Z moneta $
Copyright (c) 2005 , LCG ROOT MathLib Team *

This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.