318   for (
Int_t i=0; i<3; i++) {
 
  319      memcpy(hmatrix, mat, 
kN3);
 
  328      for (
Int_t i=0; i<3; i++) {
 
  342      memcpy(master, local, 
kN3);
 
  348      for (i=0; i<3; i++) master[i] = tr[i] + local[i];
 
  352   for (i=0; i<3; i++) {
 
  355                + local[1]*rot[3*i+1]
 
  356                + local[2]*rot[3*i+2];
 
  366      memcpy(master, local, 
kN3);
 
  370   for (
Int_t i=0; i<3; i++) {
 
  371      master[i] = local[0]*rot[3*i]
 
  372                + local[1]*rot[3*i+1]
 
  373                + local[2]*rot[3*i+2];
 
  383      memcpy(master, local, 
kN3);
 
  391      for (i=0; i<3; i++) master[i] = bombtr[i] + local[i];
 
  395   for (i=0; i<3; i++) {
 
  396      master[i] = bombtr[i]
 
  398                + local[1]*rot[3*i+1]
 
  399                + local[2]*rot[3*i+2];
 
  409      memcpy(local, master, 
kN3);
 
  423   local[0] = mt0*rot[0] + mt1*rot[3] + mt2*rot[6];
 
  424   local[1] = mt0*rot[1] + mt1*rot[4] + mt2*rot[7];
 
  425   local[2] = mt0*rot[2] + mt1*rot[5] + mt2*rot[8];
 
  434      memcpy(local, master, 
kN3);
 
  438   for (
Int_t i=0; i<3; i++) {
 
  439      local[i] = master[0]*rot[i]
 
  441               + master[2]*rot[i+6];
 
  451      memcpy(local, master, 
kN3);
 
  459      for (i=0; i<3; i++) local[i] = master[i]-bombtr[i];
 
  463   for (i=0; i<3; i++) {
 
  464      local[i] = (master[0]-bombtr[0])*rot[i]
 
  465               + (master[1]-bombtr[1])*rot[i+3]
 
  466               + (master[2]-bombtr[2])*rot[i+6];
 
  475   Double_t normfactor = vect[0]*vect[0] + vect[1]*vect[1] + vect[2]*vect[2];
 
  476   if (normfactor <= 1E-10) 
return;
 
  478   vect[0] *= normfactor;
 
  479   vect[1] *= normfactor;
 
  480   vect[2] *= normfactor;
 
  493   printf(
"%10.6f%12.6f%12.6f    Tx = %10.6f\n", rot[0], rot[1], rot[2], tr[0]);
 
  494   printf(
"%10.6f%12.6f%12.6f    Ty = %10.6f\n", rot[3], rot[4], rot[5], tr[1]);
 
  495   printf(
"%10.6f%12.6f%12.6f    Tz = %10.6f\n", rot[6], rot[7], rot[8], tr[2]);
 
  498      printf(
"Sx=%10.6fSy=%12.6fSz=%12.6f\n", scl[0], scl[1], scl[2]);
 
  529      Warning(
"RegisterYourself", 
"cannot register without geometry");
 
  629   if (&matrix == 
this) 
return *
this;
 
  671   if (&other == 
this) 
return kTRUE;
 
  674   for (
auto i=0; i<3; i++)
 
  691   h.SetTranslation(tr);
 
  701   for (
Int_t i=0; i<3; i++)
 
  719   Warning(
"RotateX", 
"Not implemented. Use TGeoCombiTrans instead");
 
  727   Warning(
"RotateY", 
"Not implemented. Use TGeoCombiTrans instead");
 
  735   Warning(
"RotateZ", 
"Not implemented. Use TGeoCombiTrans instead");
 
  744   for (
Int_t i=0; i<3; i++)
 
  776   for (
Int_t i=0; i<3; i++)
 
  777      master[i] = tr[i] + local[i];
 
  785   memcpy(master, local, 
kN3);
 
  796   for (
Int_t i=0; i<3; i++)
 
  797      master[i] = bombtr[i] + local[i];
 
  806   for (
Int_t i=0; i<3; i++)
 
  807      local[i] =  master[i]-tr[i];
 
  815   memcpy(local, master, 
kN3);
 
  826   for (
Int_t i=0; i<3; i++)
 
  827      local[i] =  master[i]-bombtr[i];
 
  836   out << 
"   // Translation: " << 
GetName() << std::endl;
 
  840   out << 
"   TGeoTranslation *" << 
GetPointerName() << 
" = new TGeoTranslation(\"" << 
GetName() << 
"\",dx,dy,dz);" << std::endl;
 
  857   for (
Int_t i=0; i<9; i++) {
 
  889   for (
Int_t i=0; i<9; i++) {
 
  919   SetAngles(theta1, phi1, theta2, phi2, theta3, phi3);
 
  927   if (&other == 
this) 
return *
this;
 
  966   if (&other == 
this) 
return kTRUE;
 
  969   for (
auto i=0; i<9; i++)
 
  992   h.SetRotation(newrot);
 
 1003   for (
Int_t i=0; i<2; i++) {
 
 1004      for (
Int_t j=i+1; j<3; j++) {
 
 1007         if (cij>1E-4) 
return kFALSE;
 
 1010         if (cij>1E-4) 
return kFALSE;
 
 1057   for (
Int_t i=0; i<3; i++) {
 
 1058      master[i] = local[0]*rot[3*i]
 
 1059                + local[1]*rot[3*i+1]
 
 1060                + local[2]*rot[3*i+2];
 
 1070   for (
Int_t i=0; i<3; i++) {
 
 1071      local[i] = master[0]*rot[i]
 
 1072               + master[1]*rot[i+3]
 
 1073               + master[2]*rot[i+6];
 
 1215   out << 
"   // Rotation: " << 
GetName() << std::endl;
 
 1218   out << 
"   thx = " << 
th1 << 
";    phx = " << ph1 << 
";" << std::endl;
 
 1219   out << 
"   thy = " << 
th2 << 
";    phy = " << ph2 << 
";" << std::endl;
 
 1220   out << 
"   thz = " << 
th3 << 
";    phz = " << ph3 << 
";" << std::endl;
 
 1221   out << 
"   TGeoRotation *" << 
GetPointerName() << 
" = new TGeoRotation(\"" << 
GetName() << 
"\",thx,phx,thy,phy,thz,phz);" << std::endl;
 
 1260   if (!
IsValid()) 
Error(
"SetAngles", 
"invalid rotation (Euler angles : phi=%f theta=%f psi=%f)",phi,theta,psi);
 
 1281   for (
Int_t i=0; i<9; i++) {
 
 1286   if (!
IsValid()) 
Error(
"SetAngles", 
"invalid rotation (G3 angles, th1=%f phi1=%f, th2=%f ph2=%f, th3=%f phi3=%f)",
 
 1287                          theta1,phi1,theta2,phi2,theta3,phi3);
 
 1303   if (phi1<0) phi1+=360.;
 
 1306   if (phi2<0) phi2+=360.;
 
 1309   if (phi3<0) phi3+=360.;
 
 1367      Error(
"GetInverse", 
"no place to store the inverse matrix");
 
 1370   for (
Int_t i=0; i<3; i++) {
 
 1371      for (
Int_t j=0; j<3; j++) {
 
 1384   const Double_t *matleft, *matright;
 
 1394   for (
Int_t i=0; i<3; i++) {
 
 1395      for (
Int_t j=0; j<3; j++) {
 
 1396         for (
Int_t k=0; k<3; k++) {
 
 1397            newmat[3*i+j] += matleft[3*i+k] * matright[3*k+j];
 
 1474   if (&matrix == 
this) 
return *
this;
 
 1517   if (&other == 
this) 
return kTRUE;
 
 1520   for (
auto i=0; i<3; i++)
 
 1547      Error(
"SetScale", 
"Invalid scale %f, %f, %f for transformation %s",sx,sy,sx,
GetName());
 
 1572   master[0] = local[0]*
fScale[0];
 
 1573   master[1] = local[1]*
fScale[1];
 
 1574   master[2] = local[2]*
fScale[2];
 
 1612   local[0] = master[0]/
fScale[0];
 
 1613   local[1] = master[1]/
fScale[1];
 
 1614   local[2] = master[2]/
fScale[2];
 
 1735   if (&matrix == 
this) 
return *
this;
 
 1771   if (&other == 
this) 
return kTRUE;
 
 1774   for (
auto i=0; i<3; i++) 
if (
TMath::Abs(tr[i]-otr[i])>1.E-10) 
return kFALSE;
 
 1777   for (
auto i=0; i<9; i++) 
if (
TMath::Abs(rot[i]-orot[i])>1.E-10) 
return kFALSE;
 
 1841   h.SetTranslation(tr);
 
 1851   h.SetRotation(newrot);
 
 1906   v[3] = 
c*rot[3]-s*rot[6];
 
 1907   v[4] = 
c*rot[4]-s*rot[7];
 
 1908   v[5] = 
c*rot[5]-s*rot[8];
 
 1909   v[6] = s*rot[3]+
c*rot[6];
 
 1910   v[7] = s*rot[4]+
c*rot[7];
 
 1911   v[8] = s*rot[5]+
c*rot[8];
 
 1937   v[0] = 
c*rot[0]+s*rot[6];
 
 1938   v[1] = 
c*rot[1]+s*rot[7];
 
 1939   v[2] = 
c*rot[2]+s*rot[8];
 
 1943   v[6] = -s*rot[0]+
c*rot[6];
 
 1944   v[7] = -s*rot[1]+
c*rot[7];
 
 1945   v[8] = -s*rot[2]+
c*rot[8];
 
 1971   v[0] = 
c*rot[0]-s*rot[3];
 
 1972   v[1] = 
c*rot[1]-s*rot[4];
 
 1973   v[2] = 
c*rot[2]-s*rot[5];
 
 1974   v[3] = s*rot[0]+
c*rot[3];
 
 1975   v[4] = s*rot[1]+
c*rot[4];
 
 1976   v[5] = s*rot[2]+
c*rot[5];
 
 2043   out << 
"   // Combi transformation: " << 
GetName() << std::endl;
 
 2044   out << 
"   dx = " << 
fTranslation[0] << 
";" << std::endl;
 
 2045   out << 
"   dy = " << 
fTranslation[1] << 
";" << std::endl;
 
 2046   out << 
"   dz = " << 
fTranslation[2] << 
";" << std::endl;
 
 2049      out << 
"   auto " << 
GetPointerName() << 
" = new TGeoCombiTrans(\"" << 
GetName() << 
"\", dx, dy, dz, " 
 2052      out << 
"   auto " << 
GetPointerName() << 
" = new TGeoCombiTrans(\"" << 
GetName() << 
"\");" << std::endl;
 
 2053      out << 
"   " << 
GetPointerName() << 
"->SetTranslation(dx, dy, dz);" << std::endl;
 
 2224   if (sx<1.E-5 || sy<1.E-5 || sz<1.E-5) {
 
 2225      Error(
"ctor", 
"Invalid scale");
 
 2249   if (normfactor <= 1E-5) 
return kFALSE;
 
 2250   for (
Int_t i=0; i<3; i++)
 
 2362   if (&matrix == 
this) 
return *
this;
 
 2398   if (&other == 
this) 
return kTRUE;
 
 2401   for (
auto i=0; i<3; i++) 
if (
TMath::Abs(tr[i]-otr[i])>1.E-10) 
return kFALSE;
 
 2404   for (
auto i=0; i<9; i++) 
if (
TMath::Abs(rot[i]-orot[i])>1.E-10) 
return kFALSE;
 
 2407   for (
auto i=0; i<3; i++) 
if (
TMath::Abs(scl[i]-oscl[i])>1.E-10) 
return kFALSE;
 
 2472      h.SetTranslation(tr);
 
 2485      h.SetRotation(newrot);
 
 2550      for (i=0; i<3; i++) {
 
 2558      for (i=0; i<3; i++) {
 
 2559         for (j=0; j<3; j++) {
 
 2569      for (i=0; i<3; i++) 
fScale[i] *= r_scl[i];
 
 2612      for (i=0; i<3; i++) {
 
 2613         new_tra[i] = l_tra[i]
 
 2622      for (i=0; i<3; i++) {
 
 2623         for (j=0; j<3; j++) {
 
 2633      for (i=0; i<3; i++) 
fScale[i] *= l_scl[i];
 
 2783   out << 
"   // HMatrix: " << 
GetName() << std::endl;
 
 2784   out << 
"   tr[0]  = " << tr[0] << 
";    " << 
"tr[1] = " << tr[1] << 
";    " << 
"tr[2] = " << tr[2] << 
";" << std::endl;
 
 2785   out << 
"   rot[0] =" << rot[0] << 
";    " << 
"rot[1] = " << rot[1] << 
";    " << 
"rot[2] = " << rot[2] << 
";" << std::endl;
 
 2786   out << 
"   rot[3] =" << rot[3] << 
";    " << 
"rot[4] = " << rot[4] << 
";    " << 
"rot[5] = " << rot[5] << 
";" << std::endl;
 
 2787   out << 
"   rot[6] =" << rot[6] << 
";    " << 
"rot[7] = " << rot[7] << 
";    " << 
"rot[8] = " << rot[8] << 
";" << std::endl;
 
 2789   out << 
"   auto " << 
name << 
" = new TGeoHMatrix(\"" << 
GetName() << 
"\");" << std::endl;
 
 2790   out << 
"   " << 
name << 
"->SetTranslation(tr);" << std::endl;
 
 2791   out << 
"   " << 
name << 
"->SetRotation(rot);" << std::endl;
 
 2792   if (
IsTranslation()) out << 
"   " << 
name << 
"->SetBit(TGeoMatrix::kGeoTranslation);" << std::endl;
 
 2793   if (
IsRotation()) out << 
"   " << 
name << 
"->SetBit(TGeoMatrix::kGeoRotation);" << std::endl;
 
 2794   if (
IsReflection()) out << 
"   " << 
name << 
"->SetBit(TGeoMatrix::kGeoReflection);" << std::endl;
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t r
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t index
 
Option_t Option_t TPoint TPoint angle
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t type
 
R__EXTERN TGeoManager * gGeoManager
 
TGeoIdentity * gGeoIdentity
 
const Double_t kUnitScale[3]
 
const Double_t kIdentityMatrix[3 *3]
 
R__EXTERN TGeoIdentity * gGeoIdentity
 
const Double_t kNullVector[3]
 
Class describing rotation + translation.
 
void Multiply(const TGeoMatrix *right)
multiply to the right with an other transformation if right is identity matrix, just return
 
virtual void ReflectZ(Bool_t leftside, Bool_t rotonly=kFALSE)
Multiply by a reflection respect to XY.
 
TGeoCombiTrans & operator*=(const TGeoMatrix &other)
Composition.
 
Bool_t operator==(const TGeoMatrix &other) const
Is-equal operator.
 
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save a primitive as a C++ statement(s) on output stream "out".
 
virtual const Double_t * GetTranslation() const
 
TGeoCombiTrans()
dummy ctor
 
virtual TGeoMatrix * MakeClone() const
Make a clone of this matrix.
 
virtual ~TGeoCombiTrans()
destructor
 
virtual const Double_t * GetRotationMatrix() const
get the rotation array
 
virtual void RotateZ(Double_t angle)
Rotate about Z axis with angle expressed in degrees.
 
virtual void RegisterYourself()
Register the matrix in the current manager, which will become the owner.
 
void SetTranslation(const TGeoTranslation &tr)
copy the translation component
 
void SetRotation(const TGeoRotation &other)
Copy the rotation from another one.
 
virtual void ReflectX(Bool_t leftside, Bool_t rotonly=kFALSE)
Multiply by a reflection respect to YZ.
 
TGeoCombiTrans & operator=(const TGeoCombiTrans &other)
 
virtual void ReflectY(Bool_t leftside, Bool_t rotonly=kFALSE)
Multiply by a reflection respect to ZX.
 
TGeoHMatrix Inverse() const
Return a temporary inverse of this.
 
TGeoCombiTrans operator*(const TGeoMatrix &other) const
 
void Clear(Option_t *option="")
Reset translation/rotation to identity.
 
virtual void RotateY(Double_t angle)
Rotate about Y axis with angle expressed in degrees.
 
virtual void RotateX(Double_t angle)
Rotate about X axis with angle expressed in degrees.
 
Most general transformation, holding a translation, a rotation and a scale.
 
virtual ~TGeoGenTrans()
destructor
 
void Clear(Option_t *option="")
clear the fields of this transformation
 
Bool_t Normalize()
A scale transformation should be normalized by sx*sy*sz factor.
 
void SetScale(Double_t sx, Double_t sy, Double_t sz)
set the scale
 
TGeoHMatrix Inverse() const
Return a temporary inverse of this.
 
Matrix class used for computing global transformations Should NOT be used for node definition.
 
TGeoHMatrix & operator*=(const TGeoMatrix &other)
Composition.
 
virtual void RotateX(Double_t angle)
Rotate about X axis with angle expressed in degrees.
 
virtual void RotateZ(Double_t angle)
Rotate about Z axis with angle expressed in degrees.
 
void MultiplyLeft(const TGeoMatrix *left)
multiply to the left with an other transformation if right is identity matrix, just return
 
virtual ~TGeoHMatrix()
destructor
 
Double_t Determinant() const
computes determinant of the rotation matrix
 
virtual void ReflectY(Bool_t leftside, Bool_t rotonly=kFALSE)
Multiply by a reflection respect to ZX.
 
void Clear(Option_t *option="")
clear the data for this matrix
 
void CopyFrom(const TGeoMatrix *other)
Fast copy method.
 
void FastRotZ(const Double_t *sincos)
Perform a rotation about Z having the sine/cosine of the rotation angle.
 
Bool_t operator==(const TGeoMatrix &other) const
Is-equal operator.
 
TGeoHMatrix Inverse() const
Return a temporary inverse of this.
 
virtual const Double_t * GetScale() const
 
Double_t fRotationMatrix[9]
 
virtual const Double_t * GetTranslation() const
 
virtual TGeoMatrix * MakeClone() const
Make a clone of this matrix.
 
virtual void RotateY(Double_t angle)
Rotate about Y axis with angle expressed in degrees.
 
TGeoHMatrix & operator=(const TGeoHMatrix &other)
 
void Multiply(const TGeoMatrix *right)
multiply to the right with an other transformation if right is identity matrix, just return
 
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save a primitive as a C++ statement(s) on output stream "out".
 
TGeoHMatrix operator*(const TGeoMatrix &other) const
 
void SetTranslation(const Double_t *vect)
 
virtual const Double_t * GetRotationMatrix() const
 
virtual void ReflectX(Bool_t leftside, Bool_t rotonly=kFALSE)
Multiply by a reflection respect to YZ.
 
virtual void ReflectZ(Bool_t leftside, Bool_t rotonly=kFALSE)
Multiply by a reflection respect to XY.
 
An identity transformation.
 
TGeoHMatrix Inverse() const
Return a temporary inverse of this.
 
TObjArray * GetListOfMatrices() const
 
void RegisterMatrix(const TGeoMatrix *matrix)
Register a matrix to the list of matrices.
 
void BombTranslation(const Double_t *tr, Double_t *bombtr)
Get the new 'bombed' translation vector according current exploded view mode.
 
void UnbombTranslation(const Double_t *tr, Double_t *bombtr)
Get the new 'unbombed' translation vector according current exploded view mode.
 
Bool_t IsCleaning() const
 
Geometrical transformation package.
 
virtual void LocalToMasterVect(const Double_t *local, Double_t *master) const
convert a vector by multiplying its column vector (x, y, z, 1) to matrix inverse
 
void SetDefaultName()
If no name was supplied in the ctor, the type of transformation is checked.
 
virtual void MasterToLocal(const Double_t *master, Double_t *local) const
convert a point by multiplying its column vector (x, y, z, 1) to matrix
 
virtual void MasterToLocalVect(const Double_t *master, Double_t *local) const
convert a point by multiplying its column vector (x, y, z, 1) to matrix
 
virtual void ReflectZ(Bool_t leftside, Bool_t rotonly=kFALSE)
Multiply by a reflection respect to XY.
 
virtual const Double_t * GetTranslation() const =0
 
Bool_t IsTranslation() const
 
Bool_t IsReflection() const
 
Bool_t IsRotation() const
 
virtual void LocalToMasterBomb(const Double_t *local, Double_t *master) const
convert a point by multiplying its column vector (x, y, z, 1) to matrix inverse
 
virtual void RegisterYourself()
Register the matrix in the current manager, which will become the owner.
 
virtual void LocalToMaster(const Double_t *local, Double_t *master) const
convert a point by multiplying its column vector (x, y, z, 1) to matrix inverse
 
virtual void MasterToLocalBomb(const Double_t *master, Double_t *local) const
convert a point by multiplying its column vector (x, y, z, 1) to matrix
 
Bool_t IsRotAboutZ() const
Returns true if no rotation or the rotation is about Z axis.
 
void GetHomogenousMatrix(Double_t *hmat) const
The homogenous matrix associated with the transformation is used for piling up's and visualization.
 
TGeoMatrix()
dummy constructor
 
virtual const Double_t * GetScale() const =0
 
static void Normalize(Double_t *vect)
Normalize a vector.
 
void Print(Option_t *option="") const
print the matrix in 4x4 format
 
Bool_t IsIdentity() const
 
const char * GetPointerName() const
Provide a pointer name containing uid.
 
Bool_t IsRegistered() const
 
virtual ~TGeoMatrix()
Destructor.
 
virtual const Double_t * GetRotationMatrix() const =0
 
virtual Int_t GetByteCount() const
Get total size in bytes of this.
 
virtual void ReflectY(Bool_t leftside, Bool_t rotonly=kFALSE)
Multiply by a reflection respect to ZX.
 
virtual void ReflectX(Bool_t leftside, Bool_t rotonly=kFALSE)
Multiply by a reflection respect to YZ.
 
Class describing rotations.
 
virtual void RotateY(Double_t angle)
Rotate about Y axis of the master frame with angle expressed in degrees.
 
virtual void ReflectX(Bool_t leftside, Bool_t rotonly=kFALSE)
Multiply by a reflection respect to YZ.
 
TGeoRotation()
Default constructor.
 
virtual void ReflectZ(Bool_t leftside, Bool_t rotonly=kFALSE)
Multiply by a reflection respect to XY.
 
virtual void LocalToMaster(const Double_t *local, Double_t *master) const
convert a point by multiplying its column vector (x, y, z, 1) to matrix inverse
 
void SetAngles(Double_t phi, Double_t theta, Double_t psi)
Set matrix elements according to Euler angles.
 
void Clear(Option_t *option="")
reset data members
 
virtual const Double_t * GetRotationMatrix() const
 
void MultiplyBy(const TGeoRotation *rot, Bool_t after=kTRUE)
Multiply this rotation with the one specified by ROT.
 
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save a primitive as a C++ statement(s) on output stream "out".
 
Bool_t operator==(const TGeoRotation &other) const
Is-equal operator.
 
void SetMatrix(const Double_t *rot)
 
virtual TGeoMatrix * MakeClone() const
Make a clone of this matrix.
 
virtual void ReflectY(Bool_t leftside, Bool_t rotonly=kFALSE)
Multiply by a reflection respect to ZX.
 
TGeoRotation & operator*=(const TGeoRotation &other)
Composition.
 
virtual void MasterToLocal(const Double_t *master, Double_t *local) const
convert a point by multiplying its column vector (x, y, z, 1) to matrix
 
virtual void RotateX(Double_t angle)
Rotate about X axis of the master frame with angle expressed in degrees.
 
void CheckMatrix()
performes an orthogonality check and finds if the matrix is a reflection Warning("CheckMatrix",...
 
TGeoHMatrix Inverse() const
Return a temporary inverse of this.
 
Double_t GetPhiRotation(Bool_t fixX=kFALSE) const
Returns rotation angle about Z axis in degrees.
 
void FastRotZ(const Double_t *sincos)
Perform a rotation about Z having the sine/cosine of the rotation angle.
 
void GetInverse(Double_t *invmat) const
Get the inverse rotation matrix (which is simply the transpose)
 
Double_t Determinant() const
computes determinant of the rotation matrix
 
void GetAngles(Double_t &theta1, Double_t &phi1, Double_t &theta2, Double_t &phi2, Double_t &theta3, Double_t &phi3) const
Retrieve rotation angles.
 
Bool_t IsValid() const
Perform orthogonality test for rotation.
 
virtual void RotateZ(Double_t angle)
Rotate about Z axis of the master frame with angle expressed in degrees.
 
TGeoRotation operator*(const TGeoRotation &other) const
 
Double_t fRotationMatrix[3 *3]
 
void SetRotation(const TGeoMatrix &other)
Copy rotation elements from other rotation matrix.
 
TGeoRotation & operator=(const TGeoRotation &other)
 
Class describing scale transformations.
 
virtual void MasterToLocal(const Double_t *master, Double_t *local) const
Convert a global point to local frame.
 
TGeoScale()
default constructor
 
TGeoScale & operator=(const TGeoScale &other)
 
Bool_t operator==(const TGeoScale &other) const
Is-equal operator.
 
void SetScale(Double_t sx, Double_t sy, Double_t sz)
scale setter
 
TGeoHMatrix Inverse() const
Return a temporary inverse of this.
 
virtual ~TGeoScale()
destructor
 
virtual void LocalToMaster(const Double_t *local, Double_t *master) const
Convert a local point to the master frame.
 
virtual const Double_t * GetScale() const
 
TGeoScale operator*(const TGeoScale &other) const
 
TGeoScale & operator*=(const TGeoScale &other)
Scale composition.
 
virtual TGeoMatrix * MakeClone() const
Make a clone of this matrix.
 
Class describing translations.
 
virtual const Double_t * GetTranslation() const
 
Bool_t operator==(const TGeoTranslation &other) const
Is-equal operator.
 
TGeoTranslation & operator*=(const TGeoTranslation &other)
Translation composition.
 
virtual void MasterToLocalBomb(const Double_t *master, Double_t *local) const
convert a point by multiplying its column vector (x, y, z, 1) to matrix
 
virtual void RotateX(Double_t angle)
Rotate about X axis of the master frame with angle expressed in degrees.
 
TGeoTranslation operator*(const TGeoTranslation &right) const
 
void Add(const TGeoTranslation *other)
Adding a translation to this one.
 
virtual void LocalToMasterBomb(const Double_t *local, Double_t *master) const
convert a point by multiplying its column vector (x, y, z, 1) to matrix inverse
 
virtual void LocalToMasterVect(const Double_t *local, Double_t *master) const
convert a vector to MARS
 
virtual void RotateZ(Double_t angle)
Rotate about Z axis of the master frame with angle expressed in degrees.
 
virtual void MasterToLocalVect(const Double_t *master, Double_t *local) const
convert a vector from MARS to local
 
virtual void RotateY(Double_t angle)
Rotate about Y axis of the master frame with angle expressed in degrees.
 
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save a primitive as a C++ statement(s) on output stream "out".
 
void SetTranslation(Double_t dx, Double_t dy, Double_t dz)
Set translation components.
 
TGeoTranslation & operator=(const TGeoTranslation &other)
 
virtual void LocalToMaster(const Double_t *local, Double_t *master) const
convert a point by multiplying its column vector (x, y, z, 1) to matrix inverse
 
TGeoHMatrix Inverse() const
Return a temporary inverse of this.
 
virtual TGeoMatrix * MakeClone() const
Make a clone of this matrix.
 
TGeoTranslation()
Default constructor.
 
void Subtract(const TGeoTranslation *other)
Subtracting a translation from this one.
 
virtual void MasterToLocal(const Double_t *master, Double_t *local) const
convert a point by multiplying its column vector (x, y, z, 1) to matrix
 
The TNamed class is the base class for all named ROOT classes.
 
const char * GetName() const override
Returns name of object.
 
const char * GetTitle() const override
Returns title of object.
 
virtual void SetName(const char *name)
Set the name of the TNamed.
 
TNamed & operator=(const TNamed &rhs)
TNamed assignment operator.
 
Int_t GetEntriesFast() const
 
TObject * Remove(TObject *obj) override
Remove object from array.
 
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
 
virtual UInt_t GetUniqueID() const
Return the unique object id.
 
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
 
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
 
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
 
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
 
void Form(const char *fmt,...)
Formats a string using a printf style format descriptor.
 
Double_t ACos(Double_t)
Returns the principal value of the arc cosine of x, expressed in radians.
 
Double_t ASin(Double_t)
Returns the principal value of the arc sine of x, expressed in radians.
 
Double_t ATan2(Double_t y, Double_t x)
Returns the principal value of the arc tangent of y/x, expressed in radians.
 
constexpr Double_t DegToRad()
Conversion from degree to radian: .
 
Double_t Sqrt(Double_t x)
Returns the square root of x.
 
Double_t Cos(Double_t)
Returns the cosine of an angle of x radians.
 
Double_t Sin(Double_t)
Returns the sine of an angle of x radians.
 
constexpr Double_t RadToDeg()
Conversion from radian to degree: .
 
Short_t Abs(Short_t d)
Returns the absolute value of parameter Short_t d.