14 #include <TMatrixDSym.h>
17 #include <TRotation.h>
25 namespace RotationTools {
31 inline TMatrixD toMatrix(TRotation r)
34 for (
int i = 0; i < 3; ++i)
35 for (
int j = 0; j < 3; ++j)
47 inline TMatrixD getRotationMatrixYZ(
double angleY,
double angleZ)
62 inline TMatrixD getRotationMatrixXY(
double angleX,
double angleY)
78 inline TMatrixD rotateTensor(
const TVector3& vTo,
const TMatrixD& orgMat)
80 TMatrixD r = getRotationMatrixYZ(vTo.Theta(), vTo.Phi());
81 TMatrixD rT = r; rT.T();
82 return r * orgMat * rT;
91 inline TMatrixD rotateTensorInv(
const TVector3& vTo,
const TMatrixD& orgMat)
93 TMatrixD r = getRotationMatrixYZ(vTo.Theta(), vTo.Phi());
94 TMatrixD rT = r; rT.T();
95 return rT * orgMat * r;
105 inline TMatrixDSym toSymMatrix(
const TMatrixD& m)
107 TMatrixDSym mS(m.GetNrows());
108 for (
int i = 0; i < m.GetNrows(); ++i)
109 for (
int j = 0; j < m.GetNcols(); ++j) {
110 mS(i, j) = (m(i, j) + m(j, i)) / 2;
120 inline TVectorD toVec(TVector3 v)
122 return TVectorD(0, 2, v.X(), v.Y(), v.Z(),
"END");
129 TVector3 getUnitOrthogonal(TVector3 v)
131 return TVector3(v.Z(), 0, -v.X()).Unit();