public:
TLorentzVector TLorentzVector(Double_t x = 0.0, Double_t y = 0.0, Double_t z = 0.0, Double_t t = 0.0)
TLorentzVector TLorentzVector(const Double_t* carray)
TLorentzVector TLorentzVector(const Float_t* carray)
TLorentzVector TLorentzVector(const TVector3& vector3, Double_t t)
TLorentzVector TLorentzVector(const TLorentzVector& lorentzvector)
TLorentzVector operator+(const TLorentzVector& q) const
TLorentzVector operator-(const TLorentzVector& q) const
TLorentzVector operator-() const
TLorentzVector operator*(Double_t a)
virtual void ~TLorentzVector()
Double_t Angle(const TVector3& v) const
Double_t Beta() const
void Boost(Double_t, Double_t, Double_t)
void Boost(const TVector3& b)
TVector3 BoostVector() const
static TClass* Class()
Double_t CosTheta() const
Double_t DeltaPhi(const TLorentzVector& v) const
Double_t DeltaR(const TLorentzVector& v) const
Double_t Dot(const TLorentzVector& q) const
Double_t DrEtaPhi(const TLorentzVector& v) const
Double_t E() const
Double_t Energy() const
Double_t Eta() const
TVector2 EtaPhiVector()
Double_t Gamma() const
void GetXYZT(Double_t* carray) const
void GetXYZT(Float_t* carray) const
virtual TClass* IsA() const
Double_t M() const
Double_t M2() const
Double_t Mag() const
Double_t Mag2() const
Double_t Minus() const
Double_t Mt() const
Double_t Mt2() const
Bool_t operator!=(const TLorentzVector& q) const
Double_t operator()(int i) const
Double_t& operator()(int i)
Double_t operator*(const TLorentzVector& q) const
TLorentzVector& operator*=(Double_t a)
TLorentzVector& operator*=(const TRotation& m)
TLorentzVector& operator*=(const TLorentzRotation&)
TLorentzVector& operator+=(const TLorentzVector& q)
TLorentzVector& operator-=(const TLorentzVector& q)
TLorentzVector& operator=(const TLorentzVector& q)
Bool_t operator==(const TLorentzVector& q) const
Double_t operator[](int i) const
Double_t& operator[](int i)
Double_t P() const
Double_t Perp() const
Double_t Perp(const TVector3& v) const
Double_t Perp2() const
Double_t Perp2(const TVector3& v) const
Double_t Phi() const
Double_t Plus() const
Double_t PseudoRapidity() const
Double_t Pt() const
Double_t Pt(const TVector3& v) const
Double_t Px() const
Double_t Py() const
Double_t Pz() const
Double_t Rapidity() const
Double_t Rho() const
void Rotate(Double_t a, const TVector3& v)
void RotateUz(TVector3& newUzVector)
void RotateX(Double_t angle)
void RotateY(Double_t angle)
void RotateZ(Double_t angle)
void SetE(Double_t a)
void SetPerp(Double_t r)
void SetPhi(Double_t phi)
void SetPtEtaPhiE(Double_t pt, Double_t eta, Double_t phi, Double_t e)
void SetPtEtaPhiM(Double_t pt, Double_t eta, Double_t phi, Double_t m)
void SetPx(Double_t a)
void SetPxPyPzE(Double_t px, Double_t py, Double_t pz, Double_t e)
void SetPy(Double_t a)
void SetPz(Double_t a)
void SetRho(Double_t rho)
void SetT(Double_t a)
void SetTheta(Double_t theta)
void SetVect(const TVector3& vect3)
void SetVectM(const TVector3& spatial, Double_t mass)
void SetVectMag(const TVector3& spatial, Double_t magnitude)
void SetX(Double_t a)
void SetXYZM(Double_t x, Double_t y, Double_t z, Double_t m)
void SetXYZT(Double_t x, Double_t y, Double_t z, Double_t t)
void SetY(Double_t a)
void SetZ(Double_t a)
virtual void ShowMembers(TMemberInspector& insp, char* parent)
virtual void Streamer(TBuffer& b)
void StreamerNVirtual(TBuffer& b)
Double_t T() const
Double_t Theta() const
TLorentzVector& Transform(const TRotation& m)
TLorentzVector& Transform(const TLorentzRotation&)
TVector3 Vect() const
Double_t X() const
Double_t Y() const
Double_t Z() const
Data Members
private:
TVector3 fP 3 vector component
Double_t fE time or energy of (x,y,z,t) or (px,py,pz,e)
public:
static const enum TObject:: kX
static const enum TObject:: kY
static const enum TObject:: kZ
static const enum TObject:: kT
static const enum TObject:: kNUM_COORDINATES
static const enum TObject:: kSIZE
*-*-*-*-*-*-*-*-*-*-*-*The Physics Vector package *-*-*-*-*-*-*-*-*-*-*-* *-* ========================== * *-* The Physics Vector package consists of five classes: * *-* - TVector2 * *-* - TVector3 * *-* - TRotation * *-* - TLorentzVector * *-* - TLorentzRotation * *-* It is a combination of CLHEPs Vector package written by * *-* Leif Lonnblad, Andreas Nilsson and Evgueni Tcherniaev * *-* and a ROOT package written by Pasha Murat. * *-* for CLHEP see: http://wwwinfo.cern.ch/asd/lhc++/clhep/ * *-* Adaption to ROOT by Peter Malzacher * *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* /*
TLorentzVector v1; // initialized
by (0., 0., 0., 0.)
TLorentzVector v2(1., 1., 1., 1.);
TLorentzVector v3(v1);
TLorentzVector v4(TVector3(1., 2., 3.),4.);
For backward compatibility there are two constructors from an Double_t
and Float_t C array.
Double_t xx =v.X();
...
Double_t tt = v.T();
Double_t px = v.Px();
...
Double_t ee = v.E();
The components of TLorentzVector can also accessed by index:
xx = v(0); or
xx = v[0];
yy = v(1);
yy = v[1];
zz = v(2);
zz = v[2];
tt = v(3);
tt = v[3];
You can use the Vect() member function to get the vector component of TLorentzVector:
TVector3 p = v.Vect();
For setting components also two sets of member functions can be used:
SetX(),.., SetPx(),..:
v.SetX(1.); or
v.SetPx(1.);
...
...
v.SetT(1.);
v.SetE(1.);
To set more the one component by one call you can use the SetVect() function for the TVector3 part or SetXYZT(), SetPxPyPzE(). For convenience there is also a SetXYZM():
v.SetVect(TVector3(1,2,3));
v.SetXYZT(x,y,z,t);
v.SetPxPyPzE(px,py,pz,e);
v.SetXYZM(x,y,z,m); // ->
v=(x,y,z,e=Sqrt(x*x+y*y+z*z+m*m))
Double_t m, theta, cost, phi, pp, pp2, ppv2, pp2v2;
m = v.Rho();
t = v.Theta();
cost = v.CosTheta();
phi = v.Phi();
v.SetRho(10.);
v.SetTheta(TMath::Pi()*.3);
v.SetPhi(TMath::Pi());
or get infoormation about the r-coordinate in cylindrical systems:
Double_t pp, pp2, ppv2, pp2v2;
pp = v.Perp(); // get transvers component
pp2 = v.Perp2(); // get transverse component squared
ppv2 = v.Perp(v1); // get
transvers component with
// respect to another vector
pp2v2 = v.Perp(v1);
for convenience there are two more set functions SetPtEtaPhiE(pt,eta,phi,e); and SetPtEtaPhiM(pt,eta,phi,m);
v3 = -v1;
v1 = v2+v3;
v1+= v3;
v1 = v2 + v3;
v1-= v3;
if (v1 == v2) {...}
if(v1 != v3) {...}
Double_t s, s2;
s = v1.Dot(v2); // scalar
product
s = v1*v2; // scalar product
s2 = v.Mag2(); or s2 = v.M2();
s = v.Mag();
s = v.M();
Since in case of momentum and energy the magnitude has the meaning of invariant mass TLorentzVector provides the more meaningful aliases M2() and M();
The member functions Beta() and Gamma() returns beta and gamma = 1/Sqrt(1-beta*beta).
The member function Boost() performs a boost transformation from the rod frame to the original frame. BoostVector() returns a TVector3 of the spatial components divided by the time component:
TVector3 b;
v.Boost(bx,by,bz);
v.Boost(b);
b = v.BoostVector(); // b=(x/t,y/t,z/t)
Double_t pcone = v.Plus();
Double_t mcone = v.Minus();
TLorentzRotation l;
v.Transform(l);
v = l*v; or
v *= l; // Attention v = l*v
*/
Stream an object of class TLorentzVector.
Double_t X() const
Double_t Y() const
Double_t Z() const
Double_t T() const
void SetX(Double_t a)
void SetY(Double_t a)
void SetZ(Double_t a)
void SetT(Double_t a)
Double_t Px() const
Double_t Py() const
Double_t Pz() const
Double_t P() const
Double_t E() const
Double_t Energy() const
void SetPx(Double_t a)
void SetPy(Double_t a)
void SetPz(Double_t a)
void SetE(Double_t a)
TVector3 Vect() const
void SetVect(const TVector3& vect3)
Double_t Theta() const
Double_t CosTheta() const
Double_t Phi() const
Double_t Rho() const
void SetTheta(Double_t theta)
void SetPhi(Double_t phi)
void SetRho(Double_t rho)
void SetPxPyPzE(Double_t px, Double_t py, Double_t pz, Double_t e)
void SetXYZT(Double_t x, Double_t y, Double_t z, Double_t t)
void SetXYZM(Double_t x, Double_t y, Double_t z, Double_t m)
void SetPtEtaPhiM(Double_t pt, Double_t eta, Double_t phi, Double_t m)
void SetPtEtaPhiE(Double_t pt, Double_t eta, Double_t phi, Double_t e)
void GetXYZT(Double_t* carray) const
void GetXYZT(Float_t* carray) const
Double_t operator()(int i) const
Double_t operator[](int i) const
Double_t& operator()(int i)
Double_t& operator[](int i)
TLorentzVector& operator=(const TLorentzVector& q)
TLorentzVector operator+(const TLorentzVector& q) const
TLorentzVector& operator+=(const TLorentzVector& q)
TLorentzVector operator-(const TLorentzVector& q) const
TLorentzVector& operator-=(const TLorentzVector& q)
TLorentzVector operator-() const
TLorentzVector operator*(Double_t a)
TLorentzVector& operator*=(Double_t a)
Bool_t operator==(const TLorentzVector& q) const
Bool_t operator!=(const TLorentzVector& q) const
Double_t Perp2() const
Double_t Pt() const
Double_t Perp() const
void SetPerp(Double_t r)
Double_t Perp2(const TVector3& v) const
Double_t Pt(const TVector3& v) const
Double_t Perp(const TVector3& v) const
Double_t DeltaPhi(const TLorentzVector& v) const
Double_t DeltaR(const TLorentzVector& v) const
Double_t DrEtaPhi(const TLorentzVector& v) const
TVector2 EtaPhiVector()
Double_t Angle(const TVector3& v) const
Double_t Mag2() const
Double_t M2() const
Double_t Mag() const
Double_t M() const
Double_t Mt2() const
Double_t Mt() const
Double_t Beta() const
Double_t Gamma() const
Double_t Dot(const TLorentzVector& q) const
Double_t operator*(const TLorentzVector& q) const
void SetVectMag(const TVector3& spatial, Double_t magnitude)
void SetVectM(const TVector3& spatial, Double_t mass)
Double_t Plus() const
Double_t Minus() const
TVector3 BoostVector() const
void Boost(const TVector3& b)
Double_t Eta() const
Double_t PseudoRapidity() const
void RotateX(Double_t angle)
void RotateY(Double_t angle)
void RotateZ(Double_t angle)
void RotateUz(TVector3& newUzVector)
void Rotate(Double_t a, const TVector3& v)
TLorentzVector& operator*=(const TRotation& m)
TLorentzVector& Transform(const TRotation& m)
TLorentzVector& operator*=(const TLorentzRotation&)
TLorentzVector& Transform(const TLorentzRotation&)
TClass* Class()
TClass* IsA() const
void ShowMembers(TMemberInspector& insp, char* parent)
void StreamerNVirtual(TBuffer& b)