321 for (
Int_t i = 0; i < 3; i++) {
322 memcpy(hmatrix, mat,
kN3);
331 for (
Int_t i = 0; i < 3; i++) {
345 memcpy(master, local,
kN3);
351 for (i = 0; i < 3; i++)
352 master[i] = tr[i] + local[i];
356 for (i = 0; i < 3; i++) {
357 master[i] = tr[i] + local[0] * rot[3 * i] + local[1] * rot[3 * i + 1] + local[2] * rot[3 * i + 2];
367 memcpy(master, local,
kN3);
371 for (
Int_t i = 0; i < 3; i++) {
372 master[i] = local[0] * rot[3 * i] + local[1] * rot[3 * i + 1] + local[2] * rot[3 * i + 2];
382 memcpy(master, local,
kN3);
390 for (i = 0; i < 3; i++)
391 master[i] = bombtr[i] + local[i];
395 for (i = 0; i < 3; i++) {
396 master[i] = bombtr[i] + local[0] * rot[3 * i] + local[1] * rot[3 * i + 1] + local[2] * rot[3 * i + 2];
406 memcpy(local, master,
kN3);
420 local[0] = mt0 * rot[0] + mt1 * rot[3] + mt2 * rot[6];
421 local[1] = mt0 * rot[1] + mt1 * rot[4] + mt2 * rot[7];
422 local[2] = mt0 * rot[2] + mt1 * rot[5] + mt2 * rot[8];
431 memcpy(local, master,
kN3);
435 for (
Int_t i = 0; i < 3; i++) {
436 local[i] = master[0] * rot[i] + master[1] * rot[i + 3] + master[2] * rot[i + 6];
446 memcpy(local, master,
kN3);
454 for (i = 0; i < 3; i++)
455 local[i] = master[i] - bombtr[i];
459 for (i = 0; i < 3; i++) {
461 (master[0] - bombtr[0]) * rot[i] + (master[1] - bombtr[1]) * rot[i + 3] + (master[2] - bombtr[2]) * rot[i + 6];
470 Double_t normfactor = vect[0] * vect[0] + vect[1] * vect[1] + vect[2] * vect[2];
471 if (normfactor <= 1E-10)
474 vect[0] *= normfactor;
475 vect[1] *= normfactor;
476 vect[2] *= normfactor;
489 printf(
"%10.6f%12.6f%12.6f Tx = %10.6f\n", rot[0], rot[1], rot[2], tr[0]);
490 printf(
"%10.6f%12.6f%12.6f Ty = %10.6f\n", rot[3], rot[4], rot[5], tr[1]);
491 printf(
"%10.6f%12.6f%12.6f Tz = %10.6f\n", rot[6], rot[7], rot[8], tr[2]);
494 printf(
"Sx=%10.6fSy=%12.6fSz=%12.6f\n", scl[0], scl[1], scl[2]);
519 Warning(
"RegisterYourself",
"cannot register without geometry");
579 for (
Int_t i = 0; i < 3; i++)
674 for (
auto i = 0; i < 3; i++)
692 h.SetTranslation(tr);
702 for (
Int_t i = 0; i < 3; i++)
720 Warning(
"RotateX",
"Not implemented. Use TGeoCombiTrans instead");
728 Warning(
"RotateY",
"Not implemented. Use TGeoCombiTrans instead");
736 Warning(
"RotateZ",
"Not implemented. Use TGeoCombiTrans instead");
745 for (
Int_t i = 0; i < 3; i++)
779 for (
Int_t i = 0; i < 3; i++)
780 master[i] = tr[i] + local[i];
788 memcpy(master, local,
kN3);
799 for (
Int_t i = 0; i < 3; i++)
800 master[i] = bombtr[i] + local[i];
809 for (
Int_t i = 0; i < 3; i++)
810 local[i] = master[i] - tr[i];
818 memcpy(local, master,
kN3);
829 for (
Int_t i = 0; i < 3; i++)
830 local[i] = master[i] - bombtr[i];
840 out <<
" // Translation: " <<
GetName() << std::endl;
844 out <<
" TGeoTranslation *" <<
GetPointerName() <<
" = new TGeoTranslation(\"" <<
GetName() <<
"\",dx,dy,dz);"
862 for (
Int_t i = 0; i < 9; i++) {
893 for (
Int_t i = 0; i < 9; i++) {
924 SetAngles(theta1, phi1, theta2, phi2, theta3, phi3);
977 for (
auto i = 0; i < 9; i++)
1001 h.SetRotation(newrot);
1012 for (
Int_t i = 0; i < 2; i++) {
1013 for (
Int_t j = i + 1; j < 3; j++) {
1019 cij =
TMath::Abs(
r[3 * i] *
r[3 * j] +
r[3 * i + 1] *
r[3 * j + 1] +
r[3 * i + 2] *
r[3 * j + 2]);
1070 for (
Int_t i = 0; i < 3; i++) {
1071 master[i] = local[0] * rot[3 * i] + local[1] * rot[3 * i + 1] + local[2] * rot[3 * i + 2];
1081 for (
Int_t i = 0; i < 3; i++) {
1082 local[i] = master[0] * rot[i] + master[1] * rot[i + 3] + master[2] * rot[i + 6];
1225 out <<
" // Rotation: " <<
GetName() << std::endl;
1228 out <<
" thx = " <<
th1 <<
"; phx = " << ph1 <<
";" << std::endl;
1229 out <<
" thy = " <<
th2 <<
"; phy = " << ph2 <<
";" << std::endl;
1230 out <<
" thz = " <<
th3 <<
"; phz = " << ph3 <<
";" << std::endl;
1232 <<
"\",thx,phx,thy,phy,thz,phz);" << std::endl;
1272 Error(
"SetAngles",
"invalid rotation (Euler angles : phi=%f theta=%f psi=%f)", phi, theta, psi);
1293 for (
Int_t i = 0; i < 9; i++) {
1302 Error(
"SetAngles",
"invalid rotation (G3 angles, th1=%f phi1=%f, th2=%f ph2=%f, th3=%f phi3=%f)", theta1, phi1,
1303 theta2, phi2, theta3, phi3);
1396 Error(
"GetInverse",
"no place to store the inverse matrix");
1399 for (
Int_t i = 0; i < 3; i++) {
1400 for (
Int_t j = 0; j < 3; j++) {
1413 const Double_t *matleft, *matright;
1423 for (
Int_t i = 0; i < 3; i++) {
1424 for (
Int_t j = 0; j < 3; j++) {
1425 for (
Int_t k = 0; k < 3; k++) {
1426 newmat[3 * i + j] += matleft[3 * i + k] * matright[3 * k + j];
1448 for (
Int_t i = 0; i < 3; i++)
1498 if (&matrix ==
this)
1547 for (
auto i = 0; i < 3; i++)
1562 scale[0] = 1. /
fScale[0];
1563 scale[1] = 1. /
fScale[1];
1564 scale[2] = 1. /
fScale[2];
1575 Error(
"SetScale",
"Invalid scale %f, %f, %f for transformation %s", sx, sy, sx,
GetName());
1581 if (sx * sy * sz < 0)
1602 master[0] = local[0] *
fScale[0];
1603 master[1] = local[1] *
fScale[1];
1604 master[2] = local[2] *
fScale[2];
1626 return scale * dist;
1643 local[0] = master[0] /
fScale[0];
1644 local[1] = master[1] /
fScale[1];
1645 local[2] = master[2] /
fScale[2];
1668 return scale * dist;
1684 for (
Int_t i = 0; i < 3; i++)
1699 for (
Int_t i = 0; i < 3; i++)
1720 for (
Int_t i = 0; i < 3; i++)
1737 for (
Int_t i = 0; i < 3; i++)
1769 if (&matrix ==
this)
1811 for (
auto i = 0; i < 3; i++)
1816 for (
auto i = 0; i < 9; i++)
1884 h.SetTranslation(tr);
1894 h.SetRotation(newrot);
1953 v[3] =
c * rot[3] - s * rot[6];
1954 v[4] =
c * rot[4] - s * rot[7];
1955 v[5] =
c * rot[5] - s * rot[8];
1956 v[6] = s * rot[3] +
c * rot[6];
1957 v[7] = s * rot[4] +
c * rot[7];
1958 v[8] = s * rot[5] +
c * rot[8];
1987 v[0] =
c * rot[0] + s * rot[6];
1988 v[1] =
c * rot[1] + s * rot[7];
1989 v[2] =
c * rot[2] + s * rot[8];
1993 v[6] = -s * rot[0] +
c * rot[6];
1994 v[7] = -s * rot[1] +
c * rot[7];
1995 v[8] = -s * rot[2] +
c * rot[8];
2024 v[0] =
c * rot[0] - s * rot[3];
2025 v[1] =
c * rot[1] - s * rot[4];
2026 v[2] =
c * rot[2] - s * rot[5];
2027 v[3] = s * rot[0] +
c * rot[3];
2028 v[4] = s * rot[1] +
c * rot[4];
2029 v[5] = s * rot[2] +
c * rot[5];
2048 if (leftside && !rotonly)
2067 if (leftside && !rotonly)
2086 if (leftside && !rotonly)
2107 out <<
" // Combi transformation: " <<
GetName() << std::endl;
2108 out <<
" dx = " <<
fTranslation[0] <<
";" << std::endl;
2109 out <<
" dy = " <<
fTranslation[1] <<
";" << std::endl;
2110 out <<
" dz = " <<
fTranslation[2] <<
";" << std::endl;
2113 out <<
" auto " <<
GetPointerName() <<
" = new TGeoCombiTrans(\"" <<
GetName() <<
"\", dx, dy, dz, "
2116 out <<
" auto " <<
GetPointerName() <<
" = new TGeoCombiTrans(\"" <<
GetName() <<
"\");" << std::endl;
2117 out <<
" " <<
GetPointerName() <<
"->SetTranslation(dx, dy, dz);" << std::endl;
2233 for (
Int_t i = 0; i < 3; i++)
2235 for (
Int_t j = 0; j < 3; j++)
2246 for (
Int_t i = 0; i < 3; i++)
2248 for (
Int_t j = 0; j < 3; j++)
2300 if (sx < 1.E-5 || sy < 1.E-5 || sz < 1.E-5) {
2301 Error(
"ctor",
"Invalid scale");
2325 if (normfactor <= 1E-5)
2327 for (
Int_t i = 0; i < 3; i++)
2437 if (&matrix ==
this)
2479 for (
auto i = 0; i < 3; i++)
2484 for (
auto i = 0; i < 9; i++)
2489 for (
auto i = 0; i < 3; i++)
2560 h.SetTranslation(tr);
2573 h.SetRotation(newrot);
2642 for (i = 0; i < 3; i++) {
2649 for (i = 0; i < 3; i++) {
2650 for (j = 0; j < 3; j++) {
2659 for (i = 0; i < 3; i++)
2708 for (i = 0; i < 3; i++) {
2716 for (i = 0; i < 3; i++) {
2717 for (j = 0; j < 3; j++) {
2726 for (i = 0; i < 3; i++)
2817 if (leftside && !rotonly)
2837 if (leftside && !rotonly)
2857 if (leftside && !rotonly)
2881 out <<
" // HMatrix: " <<
GetName() << std::endl;
2882 out <<
" tr[0] = " << tr[0] <<
"; "
2883 <<
"tr[1] = " << tr[1] <<
"; "
2884 <<
"tr[2] = " << tr[2] <<
";" << std::endl;
2885 out <<
" rot[0] =" << rot[0] <<
"; "
2886 <<
"rot[1] = " << rot[1] <<
"; "
2887 <<
"rot[2] = " << rot[2] <<
";" << std::endl;
2888 out <<
" rot[3] =" << rot[3] <<
"; "
2889 <<
"rot[4] = " << rot[4] <<
"; "
2890 <<
"rot[5] = " << rot[5] <<
";" << std::endl;
2891 out <<
" rot[6] =" << rot[6] <<
"; "
2892 <<
"rot[7] = " << rot[7] <<
"; "
2893 <<
"rot[8] = " << rot[8] <<
";" << std::endl;
2895 out <<
" auto " <<
name <<
" = new TGeoHMatrix(\"" <<
GetName() <<
"\");" << std::endl;
2896 out <<
" " <<
name <<
"->SetTranslation(tr);" << std::endl;
2897 out <<
" " <<
name <<
"->SetRotation(rot);" << std::endl;
2899 out <<
" " <<
name <<
"->SetBit(TGeoMatrix::kGeoTranslation);" << std::endl;
2901 out <<
" " <<
name <<
"->SetBit(TGeoMatrix::kGeoRotation);" << std::endl;
2903 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
TGeoCombiTrans & operator*=(const TGeoMatrix &other)
Composition.
void ReflectX(Bool_t leftside, Bool_t rotonly=kFALSE) override
Multiply by a reflection respect to YZ.
Bool_t operator==(const TGeoMatrix &other) const
Is-equal operator.
TGeoCombiTrans()
dummy ctor
void RegisterYourself() override
Register the matrix in the current manager, which will become the owner.
const Double_t * GetTranslation() const override
void SavePrimitive(std::ostream &out, Option_t *option="") override
Save a primitive as a C++ statement(s) on output stream "out".
TGeoMatrix * MakeClone() const override
Make a clone of this matrix.
TGeoHMatrix Inverse() const override
Return a temporary inverse of this.
void RotateY(Double_t angle) override
Rotate about Y axis with angle expressed in degrees.
void RotateX(Double_t angle) override
Rotate about X axis with angle expressed in degrees.
void SetTranslation(const TGeoTranslation &tr)
copy the translation component
void SetRotation(const TGeoRotation &other)
Copy the rotation from another one.
void Clear(Option_t *option="") override
Reset translation/rotation to identity.
TGeoCombiTrans & operator=(const TGeoCombiTrans &other)
void ReflectY(Bool_t leftside, Bool_t rotonly=kFALSE) override
Multiply by a reflection respect to ZX.
~TGeoCombiTrans() override
destructor
TGeoCombiTrans operator*(const TGeoMatrix &other) const
void RotateZ(Double_t angle) override
Rotate about Z axis with angle expressed in degrees.
const Double_t * GetRotationMatrix() const override
get the rotation array
void ReflectZ(Bool_t leftside, Bool_t rotonly=kFALSE) override
Multiply by a reflection respect to XY.
Most general transformation, holding a translation, a rotation and a scale.
void Clear(Option_t *option="") override
clear the fields of this transformation
~TGeoGenTrans() override
destructor
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 override
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.
void RotateX(Double_t angle) override
Rotate about X axis with angle expressed in degrees.
const Double_t * GetScale() const override
const Double_t * GetRotationMatrix() const override
void MultiplyLeft(const TGeoMatrix *left)
multiply to the left with an other transformation if right is identity matrix, just return
Double_t Determinant() const
computes determinant of the rotation matrix
TGeoMatrix * MakeClone() const override
Make a clone of this matrix.
TGeoHMatrix Inverse() const override
Return a temporary inverse of this.
void RotateZ(Double_t angle) override
Rotate about Z axis with angle expressed in degrees.
void ReflectX(Bool_t leftside, Bool_t rotonly=kFALSE) override
Multiply by a reflection respect to YZ.
void SavePrimitive(std::ostream &out, Option_t *option="") override
Save a primitive as a C++ statement(s) on output stream "out".
void CopyFrom(const TGeoMatrix *other)
Fast copy method.
void ReflectY(Bool_t leftside, Bool_t rotonly=kFALSE) override
Multiply by a reflection respect to ZX.
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.
Double_t fRotationMatrix[9]
~TGeoHMatrix() override
destructor
void RotateY(Double_t angle) override
Rotate about Y axis with angle expressed in degrees.
void Clear(Option_t *option="") override
clear the data for this matrix
const Double_t * GetTranslation() const override
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
void ReflectZ(Bool_t leftside, Bool_t rotonly=kFALSE) override
Multiply by a reflection respect to XY.
TGeoHMatrix operator*(const TGeoMatrix &other) const
void SetTranslation(const Double_t *vect)
An identity transformation.
TGeoHMatrix Inverse() const override
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.
void Print(Option_t *option="") const override
print the matrix in 4x4 format
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.
Bool_t IsIdentity() const
const char * GetPointerName() const
Provide a pointer name containing uid.
Bool_t IsRegistered() const
virtual const Double_t * GetRotationMatrix() const =0
virtual Int_t GetByteCount() const
Get total size in bytes of this.
~TGeoMatrix() override
Destructor.
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.
void RotateX(Double_t angle) override
Rotate about X axis of the master frame with angle expressed in degrees.
void ReflectZ(Bool_t leftside, Bool_t rotonly=kFALSE) override
Multiply by a reflection respect to XY.
TGeoRotation()
Default constructor.
void Clear(Option_t *option="") override
reset data members
const Double_t * GetRotationMatrix() const override
void SetAngles(Double_t phi, Double_t theta, Double_t psi)
Set matrix elements according to Euler angles.
void MultiplyBy(const TGeoRotation *rot, Bool_t after=kTRUE)
Multiply this rotation with the one specified by ROT.
void RotateY(Double_t angle) override
Rotate about Y axis of the master frame with angle expressed in degrees.
Bool_t operator==(const TGeoRotation &other) const
Is-equal operator.
void SetMatrix(const Double_t *rot)
void RotateZ(Double_t angle) override
Rotate about Z axis of the master frame with angle expressed in degrees.
void LocalToMaster(const Double_t *local, Double_t *master) const override
convert a point by multiplying its column vector (x, y, z, 1) to matrix inverse
TGeoRotation & operator*=(const TGeoRotation &other)
Composition.
void CheckMatrix()
performes an orthogonality check and finds if the matrix is a reflection Warning("CheckMatrix",...
void ReflectY(Bool_t leftside, Bool_t rotonly=kFALSE) override
Multiply by a reflection respect to ZX.
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.
void MasterToLocal(const Double_t *master, Double_t *local) const override
convert a point by multiplying its column vector (x, y, z, 1) to matrix
TGeoMatrix * MakeClone() const override
Make a clone of this matrix.
TGeoRotation operator*(const TGeoRotation &other) const
void SavePrimitive(std::ostream &out, Option_t *option="") override
Save a primitive as a C++ statement(s) on output stream "out".
void ReflectX(Bool_t leftside, Bool_t rotonly=kFALSE) override
Multiply by a reflection respect to YZ.
Double_t fRotationMatrix[3 *3]
void SetRotation(const TGeoMatrix &other)
Copy rotation elements from other rotation matrix.
TGeoRotation & operator=(const TGeoRotation &other)
TGeoHMatrix Inverse() const override
Return a temporary inverse of this.
Class describing scale transformations.
TGeoScale()
default constructor
const Double_t * GetScale() const override
TGeoScale & operator=(const TGeoScale &other)
TGeoMatrix * MakeClone() const override
Make a clone of this matrix.
Bool_t operator==(const TGeoScale &other) const
Is-equal operator.
~TGeoScale() override
destructor
void SetScale(Double_t sx, Double_t sy, Double_t sz)
scale setter
void LocalToMaster(const Double_t *local, Double_t *master) const override
Convert a local point to the master frame.
TGeoHMatrix Inverse() const override
Return a temporary inverse of this.
TGeoScale operator*(const TGeoScale &other) const
TGeoScale & operator*=(const TGeoScale &other)
Scale composition.
void MasterToLocal(const Double_t *master, Double_t *local) const override
Convert a global point to local frame.
Class describing translations.
void RotateX(Double_t angle) override
Rotate about X axis of the master frame with angle expressed in degrees.
void RotateY(Double_t angle) override
Rotate about Y axis of the master frame with angle expressed in degrees.
Bool_t operator==(const TGeoTranslation &other) const
Is-equal operator.
TGeoTranslation & operator*=(const TGeoTranslation &other)
Translation composition.
TGeoTranslation operator*(const TGeoTranslation &right) const
void Add(const TGeoTranslation *other)
Adding a translation to this one.
void RotateZ(Double_t angle) override
Rotate about Z axis of the master frame with angle expressed in degrees.
void LocalToMasterVect(const Double_t *local, Double_t *master) const override
convert a vector to MARS
void LocalToMaster(const Double_t *local, Double_t *master) const override
convert a point by multiplying its column vector (x, y, z, 1) to matrix inverse
void MasterToLocalBomb(const Double_t *master, Double_t *local) const override
convert a point by multiplying its column vector (x, y, z, 1) to matrix
void SetTranslation(Double_t dx, Double_t dy, Double_t dz)
Set translation components.
TGeoTranslation & operator=(const TGeoTranslation &other)
const Double_t * GetTranslation() const override
void MasterToLocal(const Double_t *master, Double_t *local) const override
convert a point by multiplying its column vector (x, y, z, 1) to matrix
void LocalToMasterBomb(const Double_t *local, Double_t *master) const override
convert a point by multiplying its column vector (x, y, z, 1) to matrix inverse
void SavePrimitive(std::ostream &out, Option_t *option="") override
Save a primitive as a C++ statement(s) on output stream "out".
TGeoTranslation()
Default constructor.
void Subtract(const TGeoTranslation *other)
Subtracting a translation from this one.
TGeoMatrix * MakeClone() const override
Make a clone of this matrix.
void MasterToLocalVect(const Double_t *master, Double_t *local) const override
convert a vector from MARS to local
TGeoHMatrix Inverse() const override
Return a temporary inverse of this.
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.