CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
FrameToFrameDerivative.h
Go to the documentation of this file.
1 #ifndef Alignment_CommonAlignmentParametrization_FrameToFrameDerivative_h
2 #define Alignment_CommonAlignmentParametrization_FrameToFrameDerivative_h
3 
6 
17 
18 class Alignable;
19 
21 public:
34 
35  AlgebraicMatrix frameToFrameDerivative(const Alignable *object, const Alignable *composedObject) const;
36 
43  const align::RotationType &composeRot,
44  const align::GlobalPoint &objectPos,
45  const align::GlobalPoint &composePos) const;
46 
47 private:
49  inline static AlgebraicMatrix transform(const align::RotationType &);
50 
54  const align::RotationType &composeRot,
55  const align::GlobalVector &posVec) const;
56 
58  AlgebraicVector linearEulerAngles(const AlgebraicMatrix &rotDelta) const;
59 
61  AlgebraicMatrix derivativePosPos(const AlgebraicMatrix &RotDet, const AlgebraicMatrix &RotRot) const;
62 
65  const AlgebraicMatrix &RotRot,
66  const AlgebraicVector &S) const;
67 
69  AlgebraicMatrix derivativeRotRot(const AlgebraicMatrix &RotDet, const AlgebraicMatrix &RotRot) const;
70 };
71 
73  AlgebraicMatrix R(3, 3);
74 
75  R(1, 1) = rot.xx();
76  R(1, 2) = rot.xy();
77  R(1, 3) = rot.xz();
78  R(2, 1) = rot.yx();
79  R(2, 2) = rot.yy();
80  R(2, 3) = rot.yz();
81  R(3, 1) = rot.zx();
82  R(3, 2) = rot.zy();
83  R(3, 3) = rot.zz();
84 
85  return R;
86 }
87 
88 #endif
T xx() const
T yx() const
T zx() const
T xy() const
static AlgebraicMatrix transform(const align::RotationType &)
Helper to transform from RotationType to AlgebraicMatrix.
T zz() const
AlgebraicMatrix66 getDerivative(const align::RotationType &objectRot, const align::RotationType &composeRot, const align::GlobalPoint &objectPos, const align::GlobalPoint &composePos) const
CLHEP::HepMatrix AlgebraicMatrix
T zy() const
AlgebraicMatrix frameToFrameDerivative(const Alignable *object, const Alignable *composedObject) const
T yy() 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.
T xz() const
AlgebraicMatrix derivativePosRot(const AlgebraicMatrix &RotDet, const AlgebraicMatrix &RotRot, const AlgebraicVector &S) const
Calculates the derivative DPos/DRot.
T yz() const
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.