1 #ifndef DataFormats_GeometrySurface_SOARotation_h
2 #define DataFormats_GeometrySurface_SOARotation_h
40 constexpr
inline void multiply(
T const vx,
T const vy,
T const vz,
T &ux,
T &uy,
T &uz)
const {
60 constexpr
inline T const &
xx()
const {
return R11; }
61 constexpr
inline T const &
xy()
const {
return R12; }
62 constexpr
inline T const &
xz()
const {
return R13; }
63 constexpr
inline T const &
yx()
const {
return R21; }
64 constexpr
inline T const &
yy()
const {
return R22; }
65 constexpr
inline T const &
yz()
const {
return R23; }
66 constexpr
inline T const &
zx()
const {
return R31; }
67 constexpr
inline T const &
zy()
const {
return R32; }
68 constexpr
inline T const &
zz()
const {
return R33; }
85 constexpr
inline void toLocal(
T const vx,
T const vy,
T const vz,
T &ux,
T &uy,
T &uz)
const {
86 rot.multiply(vx -
px, vy -
py, vz -
pz, ux, uy, uz);
89 constexpr
inline void toGlobal(
T const vx,
T const vy,
T const vz,
T &ux,
T &uy,
T &uz)
const {
90 rot.multiplyInverse(vx, vy, vz, ux, uy, uz);
96 constexpr
inline void toGlobal(
T const vx,
T const vy,
T &ux,
T &uy,
T &uz)
const {
97 rot.multiplyInverse(vx, vy, ux, uy, uz);
105 gl[0] =
r.xx() * (
r.xx() * cxx +
r.yx() * cxy) +
r.yx() * (
r.xx() * cxy +
r.yx() * cyy);
106 gl[1] =
r.xx() * (
r.xy() * cxx +
r.yy() * cxy) +
r.yx() * (
r.xy() * cxy +
r.yy() * cyy);
107 gl[2] =
r.xy() * (
r.xy() * cxx +
r.yy() * cxy) +
r.yy() * (
r.xy() * cxy +
r.yy() * cyy);
108 gl[3] =
r.xx() * (
r.xz() * cxx +
r.yz() * cxy) +
r.yx() * (
r.xz() * cxy +
r.yz() * cyy);
109 gl[4] =
r.xy() * (
r.xz() * cxx +
r.yz() * cxy) +
r.yy() * (
r.xz() * cxy +
r.yz() * cyy);
110 gl[5] =
r.xz() * (
r.xz() * cxx +
r.yz() * cxy) +
r.yz() * (
r.xz() * cxy +
r.yz() * cyy);
113 constexpr
inline void toLocal(
T const *ge,
T &lxx,
T &lxy,
T &lyy)
const {
123 lxx =
r.xx() * (
r.xx() * cxx +
r.xy() * cyx +
r.xz() * czx) +
124 r.xy() * (
r.xx() * cyx +
r.xy() * cyy +
r.xz() * czy) +
r.xz() * (
r.xx() * czx +
r.xy() * czy +
r.xz() * czz);
125 lxy =
r.yx() * (
r.xx() * cxx +
r.xy() * cyx +
r.xz() * czx) +
126 r.yy() * (
r.xx() * cyx +
r.xy() * cyy +
r.xz() * czy) +
r.yz() * (
r.xx() * czx +
r.xy() * czy +
r.xz() * czz);
127 lyy =
r.yx() * (
r.yx() * cxx +
r.yy() * cyx +
r.yz() * czx) +
128 r.yy() * (
r.yx() * cyx +
r.yy() * cyy +
r.yz() * czy) +
r.yz() * (
r.yx() * czx +
r.yy() * czy +
r.yz() * czz);
131 constexpr
inline T x()
const {
return px; }
132 constexpr
inline T y()
const {
return py; }
133 constexpr
inline T z()
const {
return pz; }
140 #endif // DataFormats_GeometrySurface_SOARotation_h
constexpr SOARotation(const T *p)
constexpr T const & yy() const
constexpr SOARotation(const TkRotation< U > &a)
constexpr void toGlobal(T const vx, T const vy, T &ux, T &uy, T &uz) const
constexpr void toLocal(T const *ge, T &lxx, T &lxy, T &lyy) const
constexpr void toLocal(T const vx, T const vy, T const vz, T &ux, T &uy, T &uz) const
constexpr SOARotation(T xx, T xy, T xz, T yx, T yy, T yz, T zx, T zy, T zz)
constexpr T const & yz() const
constexpr void multiplyInverse(T const vx, T const vy, T &ux, T &uy, T &uz) const
constexpr T const & xz() const
constexpr SOARotation transposed() const
constexpr T const & zz() const
constexpr T const & zy() const
constexpr void toGlobal(T cxx, T cxy, T cyy, T *gl) const
constexpr T const & yx() const
constexpr void toGlobal(T const vx, T const vy, T const vz, T &ux, T &uy, T &uz) const
constexpr T const & zx() const
constexpr T const & xx() const
constexpr T const & xy() const
constexpr SOAFrame(T ix, T iy, T iz, SOARotation< T > const &irot)
constexpr SOARotation< T > const & rotation() const
constexpr void multiplyInverse(T const vx, T const vy, T const vz, T &ux, T &uy, T &uz) const
constexpr void multiply(T const vx, T const vy, T const vz, T &ux, T &uy, T &uz) const