28 return asSMatrix<6, 6>(this->
getDerivative(objectRot, composeRot, composePos - objectPos));
40 diffVec(1) = posVec.
x();
41 diffVec(2) = posVec.
y();
42 diffVec(3) = posVec.
z();
54 derivative[0][0] = derivAA[0][0];
55 derivative[0][1] = derivAA[0][1];
56 derivative[0][2] = derivAA[0][2];
57 derivative[0][3] = derivAB[0][0];
58 derivative[0][4] = derivAB[0][1];
59 derivative[0][5] = derivAB[0][2];
60 derivative[1][0] = derivAA[1][0];
61 derivative[1][1] = derivAA[1][1];
62 derivative[1][2] = derivAA[1][2];
63 derivative[1][3] = derivAB[1][0];
64 derivative[1][4] = derivAB[1][1];
65 derivative[1][5] = derivAB[1][2];
66 derivative[2][0] = derivAA[2][0];
67 derivative[2][1] = derivAA[2][1];
68 derivative[2][2] = derivAA[2][2];
69 derivative[2][3] = derivAB[2][0];
70 derivative[2][4] = derivAB[2][1];
71 derivative[2][5] = derivAB[2][2];
75 derivative[3][3] = derivBB[0][0];
76 derivative[3][4] = derivBB[0][1];
77 derivative[3][5] = derivBB[0][2];
81 derivative[4][3] = derivBB[1][0];
82 derivative[4][4] = derivBB[1][1];
83 derivative[4][5] = derivBB[1][2];
87 derivative[5][3] = derivBB[2][0];
88 derivative[5][4] = derivBB[2][1];
89 derivative[5][5] = derivBB[2][2];
97 return RotDet * RotRot.T();
118 dEulerA = RotDet * (RotRot.T() * RotDa * RotRot *
S);
119 dEulerB = RotDet * (RotRot.T() * RotDb * RotRot *
S);
120 dEulerC = RotDet * (RotRot.T() * RotDc * RotRot *
S);
123 eulerDeriv[0][0] = dEulerA[0];
124 eulerDeriv[1][0] = dEulerA[1];
125 eulerDeriv[2][0] = dEulerA[2];
126 eulerDeriv[0][1] = dEulerB[0];
127 eulerDeriv[1][1] = dEulerB[1];
128 eulerDeriv[2][1] = dEulerB[2];
129 eulerDeriv[0][2] = dEulerC[0];
130 eulerDeriv[1][2] = dEulerC[1];
131 eulerDeriv[2][2] = dEulerC[2];
159 eulerDeriv[0][0] = dEulerA[0];
160 eulerDeriv[1][0] = dEulerA[1];
161 eulerDeriv[2][0] = dEulerA[2];
162 eulerDeriv[0][1] = dEulerB[0];
163 eulerDeriv[1][1] = dEulerB[1];
164 eulerDeriv[2][1] = dEulerB[2];
165 eulerDeriv[0][2] = dEulerC[0];
166 eulerDeriv[1][2] = dEulerC[1];
167 eulerDeriv[2][2] = dEulerC[2];
186 eulerAngles = eulerAB * rotDelta * aB + eulerC * rotDelta *
C;
Derivative< X, A >::type derivative(const A &_)
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
ROOT::Math::SMatrix< double, 6, 6, ROOT::Math::MatRepStd< double, 6, 6 > > AlgebraicMatrix66
CLHEP::HepVector AlgebraicVector
AlgebraicMatrix derivativeRotRot(const AlgebraicMatrix &RotDet, const AlgebraicMatrix &RotRot) const
Calculates the derivative DRot/DRot.
double S(const TLorentzVector &, const TLorentzVector &)
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.