| #include "TLorentzVector.h" | 
| Inheritance Chart: | |||||||||
| 
 | 
    public:
                      TLorentzVector(Double_t x = 0.0, Double_t y = 0.0, Double_t z = 0.0, Double_t t = 0.0)
                      TLorentzVector(const Double_t* carray)
                      TLorentzVector(const Float_t* carray)
                      TLorentzVector(const TVector3& vector3, Double_t t)
                      TLorentzVector(const TLorentzVector& lorentzvector)
       TLorentzVector operator+(const TLorentzVector& q) const
       TLorentzVector operator-(const TLorentzVector& q) const
       TLorentzVector operator-() const
       TLorentzVector operator*(Double_t a) const
              virtual ~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 Et() const
             Double_t Et(const TVector3& v) const
             Double_t Et2() const
             Double_t Et2(const TVector3& v) 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 th)
                 void SetVect(const TVector3& p)
                 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
    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 TLorentzVector:: kX                
      static const enum TLorentzVector:: kY                
      static const enum TLorentzVector:: kZ                
      static const enum TLorentzVector:: kT                
      static const enum TLorentzVector:: kNUM_COORDINATES  
      static const enum TLorentzVector:: 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();
CAVEAT: The values returned are T{+,-}Z. It is known that some authors find it easier to define these components as (T{+,-}Z)/sqrt(2). Thus check what definition is used in the physics you're working in and adapt your code accordingly.
  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& p)
               Double_t Theta() const
               Double_t CosTheta() const
               Double_t Phi() const
               Double_t Rho() const
                   void SetTheta(Double_t th)
                   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) const
        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 Et2() const
               Double_t Et() const
               Double_t Et2(const TVector3& v) const
               Double_t Et(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& operator*=(const TLorentzRotation&)
        TLorentzVector& Transform(const TLorentzRotation&)
                TClass* Class()
                TClass* IsA() const
                   void ShowMembers(TMemberInspector& insp, char* parent)
                   void StreamerNVirtual(TBuffer& b)