CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Public Attributes
Rot3< T > Struct Template Reference

#include <ExtVec.h>

Public Types

typedef Vec4< TVec
 

Public Member Functions

constexpr Rot3 ()
 
constexpr Rot3 (Vec4< T > ix, Vec4< T > iy, Vec4< T > iz)
 
constexpr Rot3 (T xx, T xy, T xz, T yx, T yy, T yz, T zx, T zy, T zz)
 
constexpr Vec4< Trotate (Vec4< T > v) const
 
Rot3 rotate (Rot3 const &r) const
 
constexpr Vec4< TrotateBack (Vec4< T > v) const
 
constexpr Rot3 rotateBack (Rot3 const &r) const
 
constexpr Rot3 transpose () const
 
constexpr Vec4< Tx () const
 
constexpr Vec4< Ty () const
 
constexpr Vec4< Tz () const
 

Public Attributes

Vec axis [3]
 

Detailed Description

template<typename T>
struct Rot3< T >

Definition at line 201 of file ExtVec.h.

Member Typedef Documentation

template<typename T>
typedef Vec4<T> Rot3< T >::Vec

Definition at line 202 of file ExtVec.h.

Constructor & Destructor Documentation

template<typename T>
constexpr Rot3< T >::Rot3 ( )
inline

Definition at line 205 of file ExtVec.h.

205  :
206  axis{{(Vec){T(1),0,0,0}},
207  {(Vec){0,T(1),0,0}},
208  {(Vec){0,0,T(1),0}}
209  }{}
Vec4< T > Vec
Definition: ExtVec.h:202
long double T
Vec axis[3]
Definition: ExtVec.h:203
template<typename T>
constexpr Rot3< T >::Rot3 ( Vec4< T ix,
Vec4< T iy,
Vec4< T iz 
)
inline

Definition at line 211 of file ExtVec.h.

211  :
212  axis{ix,iy,iz}{}
Vec axis[3]
Definition: ExtVec.h:203
template<typename T>
constexpr Rot3< T >::Rot3 ( T  xx,
T  xy,
T  xz,
T  yx,
T  yy,
T  yz,
T  zx,
T  zy,
T  zz 
)
inline

Definition at line 214 of file ExtVec.h.

214  :
215  axis{ {(Vec){xx,xy,xz,0}},
216  {(Vec){yx,yy,yz,0}},
217  {(Vec){zx,zy,zz,0}}
218  }{}
Vec4< T > Vec
Definition: ExtVec.h:202
auto xy(V v) -> Vec2< typename std::remove_reference< decltype(v[0])>::type >
Definition: ExtVec.h:79
Vec axis[3]
Definition: ExtVec.h:203

Member Function Documentation

template<typename T>
constexpr Vec4<T> Rot3< T >::rotate ( Vec4< T v) const
inline

Definition at line 232 of file ExtVec.h.

232  {
233  return transpose().rotateBack(v);
234  }
constexpr Rot3 transpose() const
Definition: ExtVec.h:220
constexpr Vec4< T > rotateBack(Vec4< T > v) const
Definition: ExtVec.h:238
template<typename T>
Rot3 Rot3< T >::rotate ( Rot3< T > const &  r) const
inline

Definition at line 242 of file ExtVec.h.

242  {
243  Rot3 tr = transpose();
244  return Rot3(tr.rotateBack(r.axis[0]),tr.rotateBack(r.axis[1]),tr.rotateBack(r.axis[2]));
245  }
constexpr Rot3 transpose() const
Definition: ExtVec.h:220
constexpr Vec4< T > rotateBack(Vec4< T > v) const
Definition: ExtVec.h:238
Definition: ExtVec.h:201
constexpr Rot3()
Definition: ExtVec.h:205
template<typename T>
constexpr Vec4<T> Rot3< T >::rotateBack ( Vec4< T v) const
inline

Definition at line 238 of file ExtVec.h.

Referenced by operator*(), mathSSE::Rot3< align::Scalar >::rotate(), and Rot3< align::Scalar >::rotate().

238  {
239  return v[0]*axis[0] + v[1]*axis[1] + v[2]*axis[2];
240  }
Vec axis[3]
Definition: ExtVec.h:203
template<typename T>
constexpr Rot3 Rot3< T >::rotateBack ( Rot3< T > const &  r) const
inline

Definition at line 247 of file ExtVec.h.

247  {
248  return Rot3(rotateBack(r.axis[0]),rotateBack(r.axis[1]),rotateBack(r.axis[2]));
249  }
constexpr Vec4< T > rotateBack(Vec4< T > v) const
Definition: ExtVec.h:238
constexpr Rot3()
Definition: ExtVec.h:205
template<typename T>
constexpr Rot3 Rot3< T >::transpose ( ) const
inline

Definition at line 220 of file ExtVec.h.

220  {
221  return Rot3( axis[0][0], axis[1][0], axis[2][0],
222  axis[0][1], axis[1][1], axis[2][1],
223  axis[0][2], axis[1][2], axis[2][2]
224  );
225  }
Vec axis[3]
Definition: ExtVec.h:203
constexpr Rot3()
Definition: ExtVec.h:205
template<typename T>
constexpr Vec4<T> Rot3< T >::x ( ) const
inline
template<typename T>
constexpr Vec4<T> Rot3< T >::y ( ) const
inline
template<typename T>
constexpr Vec4<T> Rot3< T >::z ( ) const
inline

Definition at line 229 of file ExtVec.h.

Referenced by geometryXMLparser.Alignable::pos(), and ntupleDataFormat._HitObject::r3D().

229 { return axis[2];}
Vec axis[3]
Definition: ExtVec.h:203

Member Data Documentation

template<typename T>
Vec Rot3< T >::axis[3]