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.