33 return asSMatrix<6,6>(this->
getDerivative(objectRot, composeRot, composePos - objectPos));
48 diffVec(1) = posVec.
x();
49 diffVec(2) = posVec.
y();
50 diffVec(3) = posVec.
z();
62 derivative[0][0] = derivAA[0][0];
63 derivative[0][1] = derivAA[0][1];
64 derivative[0][2] = derivAA[0][2];
65 derivative[0][3] = derivAB[0][0];
66 derivative[0][4] = derivAB[0][1];
67 derivative[0][5] = derivAB[0][2];
68 derivative[1][0] = derivAA[1][0];
69 derivative[1][1] = derivAA[1][1];
70 derivative[1][2] = derivAA[1][2];
71 derivative[1][3] = derivAB[1][0];
72 derivative[1][4] = derivAB[1][1];
73 derivative[1][5] = derivAB[1][2];
74 derivative[2][0] = derivAA[2][0];
75 derivative[2][1] = derivAA[2][1];
76 derivative[2][2] = derivAA[2][2];
77 derivative[2][3] = derivAB[2][0];
78 derivative[2][4] = derivAB[2][1];
79 derivative[2][5] = derivAB[2][2];
83 derivative[3][3] = derivBB[0][0];
84 derivative[3][4] = derivBB[0][1];
85 derivative[3][5] = derivBB[0][2];
89 derivative[4][3] = derivBB[1][0];
90 derivative[4][4] = derivBB[1][1];
91 derivative[4][5] = derivBB[1][2];
95 derivative[5][3] = derivBB[2][0];
96 derivative[5][4] = derivBB[2][1];
97 derivative[5][5] = derivBB[2][2];
99 return(derivative.T());
110 return RotDet * RotRot.T();
129 RotDa[1][2] = 1; RotDa[2][1] = -1;
130 RotDb[0][2] = -1; RotDb[2][0] = 1;
131 RotDc[0][1] = 1; RotDc[1][0] = -1;
133 dEulerA = RotDet*( RotRot.T()*RotDa*RotRot*S );
134 dEulerB = RotDet*( RotRot.T()*RotDb*RotRot*S );
135 dEulerC = RotDet*( RotRot.T()*RotDc*RotRot*S );
138 eulerDeriv[0][0] = dEulerA[0];
139 eulerDeriv[1][0] = dEulerA[1];
140 eulerDeriv[2][0] = dEulerA[2];
141 eulerDeriv[0][1] = dEulerB[0];
142 eulerDeriv[1][1] = dEulerB[1];
143 eulerDeriv[2][1] = dEulerB[2];
144 eulerDeriv[0][2] = dEulerC[0];
145 eulerDeriv[1][2] = dEulerC[1];
146 eulerDeriv[2][2] = dEulerC[2];
166 RotDa[1][2] = 1; RotDa[2][1] = -1;
167 RotDb[0][2] = -1; RotDb[2][0] = 1;
168 RotDc[0][1] = 1; RotDc[1][0] = -1;
176 eulerDeriv[0][0] = dEulerA[0];
177 eulerDeriv[1][0] = dEulerA[1];
178 eulerDeriv[2][0] = dEulerA[2];
179 eulerDeriv[0][1] = dEulerB[0];
180 eulerDeriv[1][1] = dEulerB[1];
181 eulerDeriv[2][1] = dEulerB[2];
182 eulerDeriv[0][2] = dEulerC[0];
183 eulerDeriv[1][2] = dEulerC[1];
184 eulerDeriv[2][2] = dEulerC[2];
209 eulerAngles = eulerAB*rotDelta*aB + eulerC*rotDelta*
C;
ROOT::Math::SMatrix< double, 6, 6, ROOT::Math::MatRepStd< double, 6, 6 > > AlgebraicMatrix66
const RotationType & globalRotation() const
Return the global orientation of the object.
static AlgebraicMatrix transform(const align::RotationType &)
Helper to transform from RotationType to AlgebraicMatrix.
AlgebraicMatrix66 getDerivative(const align::RotationType &objectRot, const align::RotationType &composeRot, const align::GlobalPoint &objectPos, const align::GlobalPoint &composePos) const
CLHEP::HepMatrix AlgebraicMatrix
AlgebraicMatrix frameToFrameDerivative(const Alignable *object, const Alignable *composedObject) const
Return the derivative DeltaFrame(object)/DeltaFrame(composedobject)
CLHEP::HepVector AlgebraicVector
AlgebraicMatrix derivativeRotRot(const AlgebraicMatrix &RotDet, const AlgebraicMatrix &RotRot) const
Calculates the derivative DRot/DRot.
AlgebraicMatrix derivativePosRot(const AlgebraicMatrix &RotDet, const AlgebraicMatrix &RotRot, const AlgebraicVector &S) const
Calculates the derivative DPos/DRot.
const PositionType & globalPosition() const
Return the global position of the object.
AlgebraicMatrix derivativePosPos(const AlgebraicMatrix &RotDet, const AlgebraicMatrix &RotRot) const
Calculates the derivative DPos/DPos.
AlgebraicVector linearEulerAngles(const AlgebraicMatrix &rotDelta) const
Gets linear approximated euler Angles.