12 #include <TMatrixDSym.h>
15 #include <TRotation.h>
23 namespace RotationTools {
29 inline TMatrixD toMatrix(TRotation r)
32 for (
int i = 0; i < 3; ++i)
33 for (
int j = 0; j < 3; ++j)
45 inline TMatrixD getRotationMatrixYZ(
double angleY,
double angleZ)
60 inline TMatrixD getRotationMatrixXY(
double angleX,
double angleY)
76 inline TMatrixD rotateTensor(
const TVector3& vTo,
const TMatrixD& orgMat)
78 TMatrixD r = getRotationMatrixYZ(vTo.Theta(), vTo.Phi());
79 TMatrixD rT = r; rT.T();
80 return r * orgMat * rT;
89 inline TMatrixD rotateTensorInv(
const TVector3& vTo,
const TMatrixD& orgMat)
91 TMatrixD r = getRotationMatrixYZ(vTo.Theta(), vTo.Phi());
92 TMatrixD rT = r; rT.T();
93 return rT * orgMat * r;
103 inline TMatrixDSym toSymMatrix(
const TMatrixD& m)
105 TMatrixDSym mS(m.GetNrows());
106 for (
int i = 0; i < m.GetNrows(); ++i)
107 for (
int j = 0; j < m.GetNcols(); ++j) {
108 mS(i, j) = (m(i, j) + m(j, i)) / 2;
118 inline TVectorD toVec(TVector3 v)
120 return TVectorD(0, 2, v.X(), v.Y(), v.Z(),
"END");
127 TVector3 getUnitOrthogonal(TVector3 v)
129 return TVector3(v.Z(), 0, -v.X()).Unit();
Abstract base class for different kinds of events.