DD4hep  1.30.0
Detector Description Toolkit for High Energy Physics
MatrixHelpers.h
Go to the documentation of this file.
1 //==========================================================================
2 // AIDA Detector description implementation
3 //--------------------------------------------------------------------------
4 // Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN)
5 // All rights reserved.
6 //
7 // For the licensing terms see $DD4hepINSTALL/LICENSE.
8 // For the list of contributors see $DD4hepINSTALL/doc/CREDITS.
9 //
10 // Author : M.Frank
11 //
12 //==========================================================================
13 #ifndef DD4HEP_MATRIXHELPERS_H
14 #define DD4HEP_MATRIXHELPERS_H
15 
16 // Framework include files
17 #include <DD4hep/Objects.h>
18 
19 // Forward declarations
20 class TGeoTranslation;
21 class TGeoRotation;
22 class TGeoHMatrix;
23 class TGeoMatrix;
24 
26 namespace dd4hep {
27 
29  namespace detail {
30 
32  namespace matrix {
33 
35  TGeoIdentity* _identity();
37  ROOT::Math::XYZVector _scale(const TGeoMatrix* matrix);
39  ROOT::Math::XYZVector _scale(const TGeoMatrix& matrix);
40 
42  TGeoTranslation* _translation(const Position& pos);
44  Position _translation(const TGeoMatrix* matrix);
46  Position _translation(const TGeoMatrix& matrix);
47 
49  TGeoRotation* _rotationZYX(const RotationZYX& rot);
51  TGeoRotation* _rotation3D(const Rotation3D& rot);
53  Rotation3D _rotation3D(const TGeoMatrix* matrix);
55  Rotation3D _rotation3D(const TGeoMatrix& matrix);
56 
58  TGeoHMatrix* _transform(const Transform3D& trans);
60  TGeoHMatrix* _transform(const Position& pos);
62  TGeoHMatrix* _transform(const RotationZYX& rot);
64  TGeoHMatrix* _transform(const Rotation3D& rot3D);
66  TGeoHMatrix* _transform(const Position& pos, const RotationZYX& rot);
67 
69  TGeoHMatrix& _transform(TGeoHMatrix& mat, const Transform3D& trans);
71  TGeoHMatrix& _transform(TGeoHMatrix& mat, const Position& pos);
73  TGeoHMatrix& _transform(TGeoHMatrix& mat, const RotationZYX& rot);
75  TGeoHMatrix& _transform(TGeoHMatrix& mat, const Rotation3D& rot3D);
77  TGeoHMatrix& _transform(TGeoHMatrix& mat, const Position& pos, const RotationZYX& rot);
78 
80  Transform3D _transform(const TGeoMatrix* matrix);
81  Transform3D _transform(const TGeoMatrix& matrix);
83  void _transform(const TGeoMatrix* matrix, Transform3D& trafo);
85  void _transform(const TGeoMatrix& matrix, Transform3D& trafo);
86 
88  void _decompose(const TGeoMatrix& matrix, Position& pos, Rotation3D& rot);
90  void _decompose(const TGeoMatrix& matrix, Position& pos, RotationZYX& rot);
92  void _decompose(const TGeoMatrix& matrix, Position& pos, XYZAngles& rot);
94  void _decompose(const Transform3D& matrix, Position& pos, Rotation3D& rot);
96  void _decompose(const Transform3D& matrix, Position& pos, RotationZYX& rot);
98  void _decompose(const Transform3D& matrix, Position& pos, XYZAngles& rot);
100  void _decompose(const Transform3D& matrix, Translation3D& pos, RotationZYX& rot);
102  void _decompose(const Transform3D& matrix, Translation3D& pos, XYZAngles& rot);
104  void _decompose(const Rotation3D& rot, Position& x, Position& y, Position& z);
105 
107  XYZAngles _xyzAngles(const double* matrix);
109  XYZAngles _xyzAngles(const TGeoMatrix* matrix);
110 
112  double determinant(const TGeoMatrix* matrix);
114  double determinant(const TGeoMatrix& matrix);
116  double determinant(const Transform3D& trafo);
118  double determinant(const Rotation3D& rot);
119 
124  };
126 
132  int _matrixEqual(const TGeoMatrix& left, const TGeoMatrix& right);
133  }
134  }
135 } /* End namespace dd4hep */
136 
137 #endif // DD4HEP_MATRIXHELPERS_H
dd4hep::detail::matrix::_translation
TGeoTranslation * _translation(const Position &pos)
Convert a Position object to a TGeoTranslation.
Definition: MatrixHelpers.cpp:55
Objects.h
dd4hep::detail::matrix::_decompose
void _decompose(const TGeoMatrix &matrix, Position &pos, Rotation3D &rot)
Decompose a generic ROOT Matrix into a translation (Position) and a Rotation3D.
Definition: MatrixHelpers.cpp:203
dd4hep::detail::matrix::_rotationZYX
TGeoRotation * _rotationZYX(const RotationZYX &rot)
Convert a RotationZYX object to a newly created TGeoRotation.
Definition: MatrixHelpers.cpp:59
dd4hep::XYZAngles
ROOT::Math::XYZVector XYZAngles
Definition: Objects.h:83
dd4hep::detail::matrix::_scale
ROOT::Math::XYZVector _scale(const TGeoMatrix *matrix)
Extract the scale part of a TGeoMatrix.
Definition: MatrixHelpers.cpp:31
dd4hep::detail::matrix::MatrixEqualityCode
MatrixEqualityCode
Definition: MatrixHelpers.h:120
dd4hep::detail::matrix::_identity
TGeoIdentity * _identity()
Access the TGeo identity transformation.
Definition: MatrixHelpers.cpp:27
dd4hep::detail::matrix::_transform
TGeoHMatrix * _transform(const Transform3D &trans)
Convert a Transform3D object to a newly created TGeoHMatrix.
Definition: MatrixHelpers.cpp:140
dd4hep::detail::matrix::_rotation3D
TGeoRotation * _rotation3D(const Rotation3D &rot)
Convert a Rotation3D object to a newly createdTGeoRotation.
Definition: MatrixHelpers.cpp:63
dd4hep::Rotation3D
ROOT::Math::Rotation3D Rotation3D
Definition: Objects.h:113
dd4hep::Translation3D
ROOT::Math::Translation3D Translation3D
Definition: Objects.h:119
dd4hep::detail::matrix::MATRICES_EQUAL
@ MATRICES_EQUAL
Definition: MatrixHelpers.h:121
dd4hep::detail::matrix::MATRICES_DIFFER_ROTATION
@ MATRICES_DIFFER_ROTATION
Definition: MatrixHelpers.h:123
dd4hep::detail::matrix::_xyzAngles
XYZAngles _xyzAngles(const double *matrix)
Convert a 3x3 rotation matrix to XYZAngles.
Definition: MatrixHelpers.cpp:195
dd4hep::Transform3D
ROOT::Math::Transform3D Transform3D
Definition: Objects.h:117
dd4hep::Position
ROOT::Math::XYZVector Position
Definition: Objects.h:81
dd4hep::detail::matrix::MATRICES_DIFFER_TRANSLATION
@ MATRICES_DIFFER_TRANSLATION
Definition: MatrixHelpers.h:122
dd4hep
Namespace for the AIDA detector description toolkit.
Definition: AlignmentsCalib.h:28
dd4hep::detail::matrix::_matrixEqual
int _matrixEqual(const TGeoMatrix &left, const TGeoMatrix &right)
Check matrices for equality.
Definition: MatrixHelpers.cpp:277
dd4hep::RotationZYX
ROOT::Math::RotationZYX RotationZYX
Definition: Objects.h:105
dd4hep::detail::matrix::determinant
double determinant(const TGeoMatrix *matrix)
Access determinant of rotation component (0 if no rotation present)
Definition: MatrixHelpers.cpp:244