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:  http://wwwinfo.cern.ch/asd/lhc++/clhep/             
*

TLorentzRotation

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 |
 

Declaration

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;
  l.Boost(v);
  l.Boost(bx,by,bz);
 
Rotations
  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.VectorMultiplication(v);
  v = l * v;

  v.Transform(l);
  v *= l;  // Attention v = l*v


Function Members (Methods)

public:
virtual~TLorentzRotation()
voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
TLorentzRotation&Boost(const TVector3&)
TLorentzRotation&Boost(Double_t, Double_t, Double_t)
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
TLorentzRotation&Invert()
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
voidTObject::operator delete(void* ptr)
voidTObject::operator delete(void* ptr, void* vp)
voidTObject::operator delete[](void* ptr)
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&) const
Double_toperator()(int, int) const
TLorentzVectoroperator*(const TLorentzVector&) const
TLorentzRotationoperator*(const TLorentzRotation&) const
TLorentzRotation&operator*=(const TLorentzRotation&)
TLorentzRotation&operator=(const TLorentzRotation&)
TLorentzRotation&operator=(const TRotation&)
Bool_toperator==(const TLorentzRotation&) const
TLorentzRotation::TLorentzRotationRowoperator[](int) 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, const TVector3&)
TLorentzRotation&Rotate(Double_t, const TVector3*)
TLorentzRotation&RotateX(Double_t)
TLorentzRotation&RotateY(Double_t)
TLorentzRotation&RotateZ(Double_t)
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) const
virtual voidStreamer(TBuffer&)
voidStreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_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()
TLorentzRotation(const TRotation&)
TLorentzRotation(const TLorentzRotation&)
TLorentzRotation(const TVector3&)
TLorentzRotation(Double_t, Double_t, Double_t)
TLorentzRotation&Transform(const TLorentzRotation&)
TLorentzRotation&Transform(const TRotation&)
Double_tTT() const
Double_tTX() const
Double_tTY() const
Double_tTZ() const
virtual voidTObject::UseCurrentStyle()
TLorentzVectorVectorMultiplication(const TLorentzVector&) 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

Data Members

public:
static TObject::(anonymous)TObject::kBitMask
static TObject::EStatusBitsTObject::kCanDelete
static TObject::EStatusBitsTObject::kCannotPick
static TObject::EStatusBitsTObject::kHasUUID
static TObject::EStatusBitsTObject::kInvalidObject
static TObject::(anonymous)TObject::kIsOnHeap
static TObject::EStatusBitsTObject::kIsReferenced
static TObject::EStatusBitsTObject::kMustCleanup
static TObject::EStatusBitsTObject::kNoContextMenu
static TObject::(anonymous)TObject::kNotDeleted
static TObject::EStatusBitsTObject::kObjInCanvas
static TObject::(anonymous)TObject::kOverwrite
static TObject::(anonymous)TObject::kSingleKey
static TObject::(anonymous)TObject::kWriteDelete
static TObject::(anonymous)TObject::kZombie

Class Charts

Inheritance Inherited Members Includes Libraries
Class Charts

Function documentation

TLorentzRotation()
{}
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 )
constructor
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& ) const
TLorentzRotation & Transform(const TLorentzRotation& )
TLorentzRotation & Transform(const TRotation& )
TLorentzRotation Inverse() const
TLorentzRotation & Invert()
TLorentzRotation & Boost(Double_t , Double_t , Double_t )
TLorentzRotation & Boost(const TVector3& )
TLorentzRotation & RotateX(Double_t )
TLorentzRotation & RotateY(Double_t )
TLorentzRotation & RotateZ(Double_t )
TLorentzRotation & Rotate(Double_t , const TVector3& )
TLorentzRotation & Rotate(Double_t , const TVector3* )
return fRR-> operator()(fII,jj)