ROOT logo
ROOT » MATH » GENVECTOR » ROOT::Math::PtEtaPhiM4D<double>

class ROOT::Math::PtEtaPhiM4D<double>


    Class describing a 4D cylindrical coordinate system
    using Pt , Phi, Eta and M (mass)
    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
    Phi is restricted to be in the range [-PI,PI)

    @ingroup GenVector

This class is also known as (typedefs to this class)

ROOT::Math::LorentzVector<ROOT::Math::PtEtaPhiM4D<double> >::CoordinateType

Function Members (Methods)

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

Data Members

private:
doublefEta
doublefM
doublefPhi
doublefPt

Class Charts

Inheritance Inherited Members Includes Libraries
Class Charts

Function documentation

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

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

{ dest[0] = fPt; dest[1] = fEta; dest[2] = fPhi; dest[3] = fM; }
void SetCoordinates(ROOT::Math::PtEtaPhiM4D<double>::Scalar pt, ROOT::Math::PtEtaPhiM4D<double>::Scalar eta, ROOT::Math::PtEtaPhiM4D<double>::Scalar phi, ROOT::Math::PtEtaPhiM4D<double>::Scalar mass)
      Set internal data based on 4 Scalar numbers

GetCoordinates(ROOT::Math::PtEtaPhiM4D<double>::Scalar& pt, ROOT::Math::PtEtaPhiM4D<double>::Scalar& eta, ROOT::Math::PtEtaPhiM4D<double>::Scalar& phi, ROOT::Math::PtEtaPhiM4D<double>::Scalar& mass) const
      get internal data into 4 Scalar numbers

{ pt=fPt; eta=fEta; phi = fPhi; mass = fM; }
Scalar Pt() const
 --------- Coordinates and Coordinate-like Scalar properties -------------
 4-D Cylindrical eta coordinate accessors
{ return fPt; }
Scalar Eta() const
{ return fEta; }
Scalar Phi() const
       M() is the invariant mass;
       in this coordinate system it can be negagative if set that way.

{ return fPhi; }
Scalar M() const
{ return fM; }
Scalar Mag() const
{ return M(); }
Scalar Perp() const
{ return Pt(); }
Scalar Rho() const
{ return Pt(); }
Scalar Px() const
 other coordinate representation
{ return fPt*cos(fPhi);}
Scalar X() const
{ return Px(); }
Scalar Py() const
{ return fPt*sin(fPhi);}
Scalar Y() const
{ return Py(); }
Scalar Pz() const
Scalar Z() const
{ return Pz(); }
Scalar P() const
       magnitude of momentum

Scalar R() const
{ return P(); }
Scalar P2() const
       squared magnitude of spatial components (momentum squared)

{ Scalar p = P(); return p*p; }
Scalar E2() const
       energy squared

Scalar E() const
       Energy (timelike component of momentum-energy 4-vector)

{ return std::sqrt(E2() ); }
Scalar T() const
{ return E(); }
Scalar M2() const
      vector magnitude squared (or mass squared)
      In case of negative mass (spacelike particles return negative values)

Scalar Mag2() const
{ return M2(); }
Scalar Pt2() const
       transverse spatial component squared

{ return fPt*fPt;}
Scalar Perp2() const
{ return Pt2(); }
Scalar Mt2() const
       transverse mass squared

{ return M2() + fPt*fPt; }
Scalar Mt() const
      transverse mass - will be negative if Mt2() is negative

Scalar Et2() const
       transverse energy squared

Scalar Et() const
      transverse energy

Scalar pi()
{ return M_PI; }
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
Scalar Theta() const
      polar angle

void SetPt(ROOT::Math::PtEtaPhiM4D<double>::Scalar pt)
 --------- Set Coordinates of this system  ---------------

      set Pt value

void SetEta(ROOT::Math::PtEtaPhiM4D<double>::Scalar eta)
      set eta value

void SetPhi(ROOT::Math::PtEtaPhiM4D<double>::Scalar phi)
      set phi value

void SetM(ROOT::Math::PtEtaPhiM4D<double>::Scalar mass)
      set M value

void SetPxPyPzE(ROOT::Math::PtEtaPhiM4D<double>::Scalar px, ROOT::Math::PtEtaPhiM4D<double>::Scalar py, ROOT::Math::PtEtaPhiM4D<double>::Scalar pz, ROOT::Math::PtEtaPhiM4D<double>::Scalar e)
       set values using cartesian coordinate system

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

      negate the 4-vector -- Note that the energy cannot be negate (would need an additional data member)
      therefore negate will work only on the spatial components
      One would need to use negate only with vectors having the energy as data members

void Scale(ROOT::Math::PtEtaPhiM4D<double>::Scalar a)
      Scale coordinate values by a scalar quantity a

Scalar x() const
 ============= Compatibility secition ==================
 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() const
{ return Y(); }
Scalar z() const
{ return Z(); }
Scalar t() const
{ return E(); }
void SetPx(ROOT::Math::PtEtaPhiM4D<double>::Scalar px)
 ====== Set member functions for coordinates in other systems =======
void SetPy(ROOT::Math::PtEtaPhiM4D<double>::Scalar py)
void SetPz(ROOT::Math::PtEtaPhiM4D<double>::Scalar pz)
void SetE(ROOT::Math::PtEtaPhiM4D<double>::Scalar energy)