319 for (
Int_t i = 0; i < 3; i++) {
320 memcpy(hmatrix, mat,
kN3);
329 for (
Int_t i = 0; i < 3; i++) {
358 ax.SetXYZ(
r[0],
r[3],
r[6]);
369 memcpy(master, local,
kN3);
375 for (i = 0; i < 3; i++)
376 master[i] = tr[i] + local[i];
380 for (i = 0; i < 3; i++) {
381 master[i] = tr[i] + local[0] * rot[3 * i] + local[1] * rot[3 * i + 1] + local[2] * rot[3 * i + 2];
391 memcpy(master, local,
kN3);
395 for (
Int_t i = 0; i < 3; i++) {
396 master[i] = local[0] * rot[3 * i] + local[1] * rot[3 * i + 1] + local[2] * rot[3 * i + 2];
406 memcpy(master, local,
kN3);
414 for (i = 0; i < 3; i++)
415 master[i] = bombtr[i] + local[i];
419 for (i = 0; i < 3; i++) {
420 master[i] = bombtr[i] + local[0] * rot[3 * i] + local[1] * rot[3 * i + 1] + local[2] * rot[3 * i + 2];
430 memcpy(local, master,
kN3);
444 local[0] = mt0 * rot[0] + mt1 * rot[3] + mt2 * rot[6];
445 local[1] = mt0 * rot[1] + mt1 * rot[4] + mt2 * rot[7];
446 local[2] = mt0 * rot[2] + mt1 * rot[5] + mt2 * rot[8];
455 memcpy(local, master,
kN3);
459 for (
Int_t i = 0; i < 3; i++) {
460 local[i] = master[0] * rot[i] + master[1] * rot[i + 3] + master[2] * rot[i + 6];
470 memcpy(local, master,
kN3);
478 for (i = 0; i < 3; i++)
479 local[i] = master[i] - bombtr[i];
483 for (i = 0; i < 3; i++) {
485 (master[0] - bombtr[0]) * rot[i] + (master[1] - bombtr[1]) * rot[i + 3] + (master[2] - bombtr[2]) * rot[i + 6];
494 Double_t normfactor = vect[0] * vect[0] + vect[1] * vect[1] + vect[2] * vect[2];
495 if (normfactor <= 1E-10)
498 vect[0] *= normfactor;
499 vect[1] *= normfactor;
500 vect[2] *= normfactor;
513 printf(
"%10.6f%12.6f%12.6f Tx = %10.6f\n", rot[0], rot[1], rot[2], tr[0]);
514 printf(
"%10.6f%12.6f%12.6f Ty = %10.6f\n", rot[3], rot[4], rot[5], tr[1]);
515 printf(
"%10.6f%12.6f%12.6f Tz = %10.6f\n", rot[6], rot[7], rot[8], tr[2]);
518 printf(
"Sx=%10.6fSy=%12.6fSz=%12.6f\n", scl[0], scl[1], scl[2]);
543 Warning(
"RegisterYourself",
"cannot register without geometry");
601 for (
Int_t i = 0; i < 3; i++)
696 for (
auto i = 0; i < 3; i++)
714 h.SetTranslation(tr);
724 for (
Int_t i = 0; i < 3; i++)
742 Warning(
"RotateX",
"Not implemented. Use TGeoCombiTrans instead");
750 Warning(
"RotateY",
"Not implemented. Use TGeoCombiTrans instead");
758 Warning(
"RotateZ",
"Not implemented. Use TGeoCombiTrans instead");
767 for (
Int_t i = 0; i < 3; i++)
801 for (
Int_t i = 0; i < 3; i++)
802 master[i] = tr[i] + local[i];
810 memcpy(master, local,
kN3);
821 for (
Int_t i = 0; i < 3; i++)
822 master[i] = bombtr[i] + local[i];
831 for (
Int_t i = 0; i < 3; i++)
832 local[i] = master[i] - tr[i];
840 memcpy(local, master,
kN3);
851 for (
Int_t i = 0; i < 3; i++)
852 local[i] = master[i] - bombtr[i];
862 out <<
" // Translation: " <<
GetName() << std::endl;
866 out <<
" TGeoTranslation *" <<
GetPointerName() <<
" = new TGeoTranslation(\"" <<
GetName() <<
"\",dx,dy,dz);"
882 for (
Int_t i = 0; i < 9; i++) {
913 for (
Int_t i = 0; i < 9; i++) {
944 SetAngles(theta1, phi1, theta2, phi2, theta3, phi3);
997 for (
auto i = 0; i < 9; i++)
1021 h.SetRotation(newrot);
1032 for (
Int_t i = 0; i < 2; i++) {
1033 for (
Int_t j = i + 1; j < 3; j++) {
1039 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]);
1090 for (
Int_t i = 0; i < 3; i++) {
1091 master[i] = local[0] * rot[3 * i] + local[1] * rot[3 * i + 1] + local[2] * rot[3 * i + 2];
1101 for (
Int_t i = 0; i < 3; i++) {
1102 local[i] = master[0] * rot[i] + master[1] * rot[i + 3] + master[2] * rot[i + 6];
1245 out <<
" // Rotation: " <<
GetName() << std::endl;
1248 out <<
" thx = " <<
th1 <<
"; phx = " << ph1 <<
";" << std::endl;
1249 out <<
" thy = " <<
th2 <<
"; phy = " << ph2 <<
";" << std::endl;
1250 out <<
" thz = " <<
th3 <<
"; phz = " << ph3 <<
";" << std::endl;
1252 <<
"\",thx,phx,thy,phy,thz,phz);" << std::endl;
1292 Error(
"SetAngles",
"invalid rotation (Euler angles : phi=%f theta=%f psi=%f)", phi, theta, psi);
1313 for (
Int_t i = 0; i < 9; i++) {
1322 Error(
"SetAngles",
"invalid rotation (G3 angles, th1=%f phi1=%f, th2=%f ph2=%f, th3=%f phi3=%f)", theta1, phi1,
1323 theta2, phi2, theta3, phi3);
1416 Error(
"GetInverse",
"no place to store the inverse matrix");
1419 for (
Int_t i = 0; i < 3; i++) {
1420 for (
Int_t j = 0; j < 3; j++) {
1433 const Double_t *matleft, *matright;
1443 for (
Int_t i = 0; i < 3; i++) {
1444 for (
Int_t j = 0; j < 3; j++) {
1445 for (
Int_t k = 0; k < 3; k++) {
1446 newmat[3 * i + j] += matleft[3 * i + k] * matright[3 * k + j];
1466 for (
Int_t i = 0; i < 3; i++)
1516 if (&matrix ==
this)
1565 for (
auto i = 0; i < 3; i++)
1580 scale[0] = 1. /
fScale[0];
1581 scale[1] = 1. /
fScale[1];
1582 scale[2] = 1. /
fScale[2];
1593 Error(
"SetScale",
"Invalid scale %f, %f, %f for transformation %s", sx, sy, sx,
GetName());
1599 if (sx * sy * sz < 0)
1620 master[0] = local[0] *
fScale[0];
1621 master[1] = local[1] *
fScale[1];
1622 master[2] = local[2] *
fScale[2];
1644 return scale * dist;
1661 local[0] = master[0] /
fScale[0];
1662 local[1] = master[1] /
fScale[1];
1663 local[2] = master[2] /
fScale[2];
1686 return scale * dist;
1700 for (
Int_t i = 0; i < 3; i++)
1715 for (
Int_t i = 0; i < 3; i++)
1736 for (
Int_t i = 0; i < 3; i++)
1753 for (
Int_t i = 0; i < 3; i++)
1785 if (&matrix ==
this)
1827 for (
auto i = 0; i < 3; i++)
1832 for (
auto i = 0; i < 9; i++)
1900 h.SetTranslation(tr);
1910 h.SetRotation(newrot);
1969 v[3] =
c * rot[3] - s * rot[6];
1970 v[4] =
c * rot[4] - s * rot[7];
1971 v[5] =
c * rot[5] - s * rot[8];
1972 v[6] = s * rot[3] +
c * rot[6];
1973 v[7] = s * rot[4] +
c * rot[7];
1974 v[8] = s * rot[5] +
c * rot[8];
2003 v[0] =
c * rot[0] + s * rot[6];
2004 v[1] =
c * rot[1] + s * rot[7];
2005 v[2] =
c * rot[2] + s * rot[8];
2009 v[6] = -s * rot[0] +
c * rot[6];
2010 v[7] = -s * rot[1] +
c * rot[7];
2011 v[8] = -s * rot[2] +
c * rot[8];
2040 v[0] =
c * rot[0] - s * rot[3];
2041 v[1] =
c * rot[1] - s * rot[4];
2042 v[2] =
c * rot[2] - s * rot[5];
2043 v[3] = s * rot[0] +
c * rot[3];
2044 v[4] = s * rot[1] +
c * rot[4];
2045 v[5] = s * rot[2] +
c * rot[5];
2064 if (leftside && !rotonly)
2083 if (leftside && !rotonly)
2102 if (leftside && !rotonly)
2123 out <<
" // Combi transformation: " <<
GetName() << std::endl;
2124 out <<
" dx = " <<
fTranslation[0] <<
";" << std::endl;
2125 out <<
" dy = " <<
fTranslation[1] <<
";" << std::endl;
2126 out <<
" dz = " <<
fTranslation[2] <<
";" << std::endl;
2129 out <<
" auto " <<
GetPointerName() <<
" = new TGeoCombiTrans(\"" <<
GetName() <<
"\", dx, dy, dz, "
2130 <<
fRotation->GetPointerName() <<
");" << std::endl;
2132 out <<
" auto " <<
GetPointerName() <<
" = new TGeoCombiTrans(\"" <<
GetName() <<
"\");" << std::endl;
2133 out <<
" " <<
GetPointerName() <<
"->SetTranslation(dx, dy, dz);" << std::endl;
2247 for (
Int_t i = 0; i < 3; i++)
2249 for (
Int_t j = 0; j < 3; j++)
2260 for (
Int_t i = 0; i < 3; i++)
2262 for (
Int_t j = 0; j < 3; j++)
2314 if (sx < 1.E-5 || sy < 1.E-5 || sz < 1.E-5) {
2315 Error(
"ctor",
"Invalid scale");
2339 if (normfactor <= 1E-5)
2341 for (
Int_t i = 0; i < 3; i++)
2457 if (&matrix ==
this)
2501 for (
auto i = 0; i < 3; i++)
2506 for (
auto i = 0; i < 9; i++)
2511 for (
auto i = 0; i < 3; i++)
2582 h.SetTranslation(tr);
2595 h.SetRotation(newrot);
2664 for (i = 0; i < 3; i++) {
2671 for (i = 0; i < 3; i++) {
2672 for (j = 0; j < 3; j++) {
2681 for (i = 0; i < 3; i++)
2730 for (i = 0; i < 3; i++) {
2738 for (i = 0; i < 3; i++) {
2739 for (j = 0; j < 3; j++) {
2748 for (i = 0; i < 3; i++)
2839 if (leftside && !rotonly)
2859 if (leftside && !rotonly)
2879 if (leftside && !rotonly)
2903 out <<
" // HMatrix: " <<
GetName() << std::endl;
2904 out <<
" tr[0] = " << tr[0] <<
"; "
2905 <<
"tr[1] = " << tr[1] <<
"; "
2906 <<
"tr[2] = " << tr[2] <<
";" << std::endl;
2907 out <<
" rot[0] =" << rot[0] <<
"; "
2908 <<
"rot[1] = " << rot[1] <<
"; "
2909 <<
"rot[2] = " << rot[2] <<
";" << std::endl;
2910 out <<
" rot[3] =" << rot[3] <<
"; "
2911 <<
"rot[4] = " << rot[4] <<
"; "
2912 <<
"rot[5] = " << rot[5] <<
";" << std::endl;
2913 out <<
" rot[6] =" << rot[6] <<
"; "
2914 <<
"rot[7] = " << rot[7] <<
"; "
2915 <<
"rot[8] = " << rot[8] <<
";" << std::endl;
2917 out <<
" auto " <<
name <<
" = new TGeoHMatrix(\"" <<
GetName() <<
"\");" << std::endl;
2918 out <<
" " <<
name <<
"->SetTranslation(tr);" << std::endl;
2919 out <<
" " <<
name <<
"->SetRotation(rot);" << std::endl;
2921 out <<
" " <<
name <<
"->SetBit(TGeoMatrix::kGeoTranslation);" << std::endl;
2923 out <<
" " <<
name <<
"->SetBit(TGeoMatrix::kGeoRotation);" << std::endl;
2925 out <<
" " <<
name <<
"->SetBit(TGeoMatrix::kGeoReflection);" << std::endl;
int Int_t
Signed integer 4 bytes (int).
bool Bool_t
Boolean (0=false, 1=true) (bool).
double Double_t
Double 8 bytes.
const char Option_t
Option string (const char).
externTGeoManager * gGeoManager
const Double_t kUnitScale[3]
externTGeoIdentity * gGeoIdentity
const Double_t kIdentityMatrix[3 *3]
const Double_t kNullVector[3]
DisplacementVector3D< CoordSystem, Tag > & SetXYZ(Scalar a, Scalar b, Scalar c)
set the values of the vector from the cartesian components (x,y,z) (if the vector is held in polar or...
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.
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.
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.
TGeoMatrix(const TGeoMatrix &other)
copy constructor
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.
void GetWorldAxes(ROOT::Math::XYZVector &ax, ROOT::Math::XYZVector &ay, ROOT::Math::XYZVector &az) const
Extract world-space axes of a placed TGeoBBox.
~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.
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.
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
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.
DisplacementVector3D< Cartesian3D< double >, DefaultCoordinateSystemTag > XYZVector
3D Vector based on the cartesian coordinates x,y,z in double precision
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.