ROOT logo
ROOT » MATH » PHYSICS » TLorentzRotation

class TLorentzRotation: public TObject

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:             


The TLorentzRotation class describes Lorentz transformations including Lorentz boosts and rotations (see TRotation)

            | xx  xy  xz  xt |
            |                |
            | yx  yy  yz  yt |
   lambda = |                |
            | zx  zy  zz  zt |
            |                |
            | tx  ty  tz  tt |


By default it is initialized to the identity matrix, but it may also be intialized by an other TLorentzRotation,
by a pure TRotation or by a boost:

  TLorentzRotation l;      // l is initialized as identity
  TLorentzRotation m(l);   // m = l
  TRotation r;
  TLorentzRotation lr(r);
  TLorentzRotation lb1(bx,by,bz);
  TVector3 b;
  TLorentzRotation lb2(b);

The Matrix for a Lorentz boosts is:

 | 1+gamma'*bx*bx  gamma'*bx*by   gamma'*bx*bz  gamma*bx |
 |  gamma'*by*bx  1+gamma'*by*by  gamma'*by*bz  gamma*by |
 |  gamma'*bz*bx   gamma'*bz*by  1+gamma'*bz*bz gamma*bz |
 |    gamma*bx       gamma*by       gamma*bz     gamma   |

with the boost vector b=(bx,by,bz) and gamma=1/Sqrt(1-beta*beta) and gamma'=(gamma-1)/beta*beta.

Access to the matrix components/Comparisons

Access to the matrix components is possible through the member functions XX(), XY() .. TT(),
through the operator (int,int):

  Double_t xx;
  TLorentzRotation l;
  xx = l.XX();    // gets the xx component
  xx = l(0,0);    // gets the xx component

  if (l==m) {...}  // test for equality
  if (l !=m) {...} // test for inequality
  if (l.IsIdentity()) {...} // test for identity

Transformations of a LorentzRotation

Compound transformations
There are four possibilities to find the product of two TLorentzRotation transformations:

  TLorentzRotation a,b,c;
  c = b*a;                       // product
  c = a.MatrixMultiplication(b);  // a is unchanged
  a *= b;                        // Attention: a=a*b
  c = a.Transform(b)             // a=b*a then c=a

Lorentz boosts
  Double_t bx, by, bz;
  TVector3 v(bx,by,bz);
  TLorentzRotation l;
  TVector3 axis;
  l.RotateX(TMath::Pi());   //  rotation around x-axis
  l.Rotate(.5,axis);               //  rotation around specified vector
Inverse transformation
The matrix for the inverse transformation of a TLorentzRotation is as follows:
            | xx  yx  zx -tx |
            |                |
            | xy  yy  zy -ty |
            |                |
            | xz  yz  zz -tz |
            |                |
            |-xt -yt -zt  tt |
To return the inverse transformation keeping the current unchanged use the memberfunction Inverse().
Invert() inverts the current TLorentzRotation:

  l1 = l2.Inverse();  // l1 is inverse of l2, l2 unchanged
  l1 = l2.Invert();   // invert l2, then  l1=l2

Transformation of a TLorentzVector

To apply TLorentzRotation to TLorentzVector you can use either the VectorMultiplication() member function or the * operator. You can also use the Transform() function and the *= operator of the TLorentzVector class.:

  TLorentzVector v;
  v = l * v;

  v *= l;  // Attention v = l*v

Function Members (Methods)

TLorentzRotation(const TRotation&)
TLorentzRotation(const TLorentzRotation&)
TLorentzRotation(const TVector3&)
TLorentzRotation(Double_t, Double_t, Double_t)
voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
TLorentzRotation&Boost(const TVector3& b)
TLorentzRotation&Boost(Double_t bx, Double_t by, Double_t bz)
virtual voidTObject::Browse(TBrowser* b)
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTObject::Clear(Option_t* = "")
virtual TObject*TObject::Clone(const char* newname = "") const
virtual Int_tTObject::Compare(const TObject* obj) const
virtual voidTObject::Copy(TObject& object) const
virtual voidTObject::Delete(Option_t* option = "")MENU
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() constMENU
virtual TObject*TObject::DrawClone(Option_t* option = "") constMENU
virtual voidTObject::Dump() constMENU
virtual voidTObject::Error(const char* method, const char* msgfmt) const
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual const char*TObject::GetIconName() const
virtual const char*TObject::GetName() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
virtual const char*TObject::GetTitle() const
virtual UInt_tTObject::GetUniqueID() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTObject::Hash() const
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
virtual voidTObject::Inspect() constMENU
TLorentzRotationInverse() const
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tIsIdentity() const
Bool_tTObject::IsOnHeap() const
virtual Bool_tTObject::IsSortable() const
Bool_tTObject::IsZombie() const
virtual voidTObject::ls(Option_t* option = "") const
TLorentzRotationMatrixMultiplication(const TLorentzRotation&) const
voidTObject::MayNotUse(const char* method) const
virtual Bool_tTObject::Notify()
voidTObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const
static voidTObject::operator delete(void* ptr)
static voidTObject::operator delete(void* ptr, void* vp)
static voidTObject::operator delete[](void* ptr)
static voidTObject::operator delete[](void* ptr, void* vp)
void*TObject::operator new(size_t sz)
void*TObject::operator new(size_t sz, void* vp)
void*TObject::operator new[](size_t sz)
void*TObject::operator new[](size_t sz, void* vp)
Bool_toperator!=(const TLorentzRotation& r) const
Double_toperator()(int, int) const
TLorentzVectoroperator*(const TLorentzVector& p) const
TLorentzRotationoperator*(const TLorentzRotation& m) const
TLorentzRotation&operator*=(const TLorentzRotation& m)
TLorentzRotation&operator=(const TLorentzRotation& r)
TLorentzRotation&operator=(const TRotation& r)
Bool_toperator==(const TLorentzRotation& r) const
TLorentzRotation::TLorentzRotationRowoperator[](int i) const
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidTObject::Print(Option_t* option = "") const
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
voidTObject::ResetBit(UInt_t f)
TLorentzRotation&Rotate(Double_t angle, const TVector3& axis)
TLorentzRotation&Rotate(Double_t angle, const TVector3* axis)
TLorentzRotation&RotateX(Double_t angle)
TLorentzRotation&RotateY(Double_t angle)
TLorentzRotation&RotateZ(Double_t angle)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(ostream& out, Option_t* option = "")
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
static voidTObject::SetObjectStat(Bool_t stat)
virtual voidTObject::SetUniqueID(UInt_t uid)
virtual voidShowMembers(TMemberInspector& insp)
virtual voidStreamer(TBuffer& b)
voidStreamerNVirtual(TBuffer& b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
TLorentzRotation&Transform(const TLorentzRotation& m)
TLorentzRotation&Transform(const TRotation& m)
Double_tTT() const
Double_tTX() const
Double_tTY() const
Double_tTZ() const
virtual voidTObject::UseCurrentStyle()
TLorentzVectorVectorMultiplication(const TLorentzVector& p) const
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const
Double_tXT() const
Double_tXX() const
Double_tXY() const
Double_tXZ() const
Double_tYT() const
Double_tYX() const
Double_tYY() const
Double_tYZ() const
Double_tZT() const
Double_tZX() const
Double_tZY() const
Double_tZZ() const
TLorentzRotation(Double_t, Double_t, Double_t, Double_t, Double_t, Double_t, Double_t, Double_t, Double_t, Double_t, Double_t, Double_t, Double_t, Double_t, Double_t, Double_t)
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
voidSetBoost(Double_t, Double_t, Double_t)

Data Members

Class Charts

Inheritance Inherited Members Includes Libraries
Class Charts

Function documentation

TLorentzRotation(const TRotation& )
TLorentzRotation(const TLorentzRotation& )
TLorentzRotation(Double_t , Double_t , Double_t , Double_t , Double_t , Double_t , Double_t , Double_t , Double_t , Double_t , Double_t , Double_t , Double_t , Double_t , Double_t , Double_t )
TLorentzRotation(Double_t , Double_t , Double_t )
TLorentzRotation(const TVector3& )
copy constructor
void SetBoost(Double_t , Double_t , Double_t )
boost this Lorentz vector
TLorentzRotation MatrixMultiplication(const TLorentzRotation& ) const
multiply this vector by a matrix
Double_t XX() const
{ return fxx; }
Double_t XY() const
{ return fxy; }
Double_t XZ() const
{ return fxz; }
Double_t XT() const
{ return fxt; }
Double_t YX() const
{ return fyx; }
Double_t YY() const
{ return fyy; }
Double_t YZ() const
{ return fyz; }
Double_t YT() const
{ return fyt; }
Double_t ZX() const
{ return fzx; }
Double_t ZY() const
{ return fzy; }
Double_t ZZ() const
{ return fzz; }
Double_t ZT() const
{ return fzt; }
Double_t TX() const
{ return ftx; }
Double_t TY() const
{ return fty; }
Double_t TZ() const
{ return ftz; }
Double_t TT() const
{ return ftt; }
Bool_t IsIdentity() const
TLorentzVector VectorMultiplication(const TLorentzVector& p) const
TLorentzRotation & Transform(const TLorentzRotation& m)
TLorentzRotation & Transform(const TRotation& m)
TLorentzRotation Inverse() const
TLorentzRotation & Invert()
TLorentzRotation & Boost(Double_t bx, Double_t by, Double_t bz)
TLorentzRotation & Boost(const TVector3& b)
TLorentzRotation & RotateX(Double_t angle)
TLorentzRotation & RotateY(Double_t angle)
TLorentzRotation & RotateZ(Double_t angle)
TLorentzRotation & Rotate(Double_t angle, const TVector3& axis)
TLorentzRotation & Rotate(Double_t angle, const TVector3* axis)
return fRR-> operator()(fII,jj)