6 #ifndef HEP_ROTATION_INTERFACES_H
7 #define HEP_ROTATION_INTERFACES_H
68 #include "CLHEP/Vector/defs.h"
69 #include "CLHEP/Vector/ThreeVector.h"
70 #include "CLHEP/Vector/LorentzVector.h"
71 #include "CLHEP/Vector/AxisAngle.h"
77 struct HepRep4x4Symmetric;
83 class HepLorentzRotation;
100 class Hep4RotationInterface {
122 #ifdef ONLY_IN_CONCRETE_CLASSES
124 HepLorentzVector col1()
const;
125 HepLorentzVector col2()
const;
126 HepLorentzVector col3()
const;
127 HepLorentzVector col4()
const;
128 HepLorentzVector row1()
const;
129 HepLorentzVector row2()
const;
130 HepLorentzVector row3()
const;
131 HepLorentzVector row4()
const;
157 inline int compare(
const Hep4RotationInterface & lt )
const;
162 void decompose (HepAxisAngle & rotation, Hep3Vector & boost)
const;
165 void decompose (Hep3Vector & boost, HepAxisAngle & rotation)
const;
168 bool operator == (
const Hep4RotationInterface & r)
const;
169 bool operator != (
const Hep4RotationInterface & r)
const;
173 double norm2()
const ;
174 double distance2(
const Hep4RotationInterface & lt )
const ;
175 double howNear(
const Hep4RotationInterface & lt )
const ;
176 bool isNear (
const Hep4RotationInterface & lt,
184 HepLorentzVector
operator* (
const HepLorentzVector & w )
const ;
185 HepLorentzVector operator()(
const HepLorentzVector & w )
const ;
190 std::ostream & print( std::ostream & os )
const;
217 class Hep3RotationInterface :
public Hep4RotationInterface {
229 #ifdef ONLY_IN_CONCRETE_CLASSES
232 double getPhi ()
const ;
233 double getTheta()
const ;
234 double getPsi ()
const ;
235 double phi ()
const ;
236 double theta()
const ;
237 double psi ()
const ;
238 HepEulerAngles eulerAngles()
const ;
241 double getDelta()
const ;
242 Hep3Vector getAxis ()
const ;
243 double delta()
const ;
244 Hep3Vector axis ()
const ;
245 HepAxisAngle axisAngle()
const ;
248 Hep3Vector rowX()
const;
249 Hep3Vector rowY()
const;
250 Hep3Vector rowZ()
const;
252 Hep3Vector colX()
const;
253 Hep3Vector colY()
const;
254 Hep3Vector colZ()
const;
260 HepLorentzVector col1()
const;
261 HepLorentzVector col2()
const;
262 HepLorentzVector col3()
const;
263 HepLorentzVector col4()
const;
264 HepLorentzVector row1()
const;
265 HepLorentzVector row2()
const;
266 HepLorentzVector row3()
const;
267 HepLorentzVector row4()
const;
284 HepLorentzVector
operator* (
const HepLorentzVector & w )
const ;
285 HepLorentzVector operator()(
const HepLorentzVector & w )
const ;
288 Hep3Vector
operator* (
const Hep3Vector & v )
const ;
289 Hep3Vector operator()(
const Hep3Vector & v )
const ;
294 std::ostream & print( std::ostream & os )
const;
300 ~Hep3RotationInterface() {}
315 inline HepRep3x3(
double xx,
double xy,
double xz
316 ,
double yx,
double yy,
double yz
317 ,
double zx,
double zy,
double zz
320 inline HepRep3x3(
const double * array );
331 inline void getArray (
double * array )
const;
341 inline HepRep4x4(
double xx,
double xy,
double xz,
double xt
342 ,
double yx,
double yy,
double yz,
double yt
343 ,
double zx,
double zy,
double zz,
double zt
344 ,
double tx,
double ty,
double tz,
double tt
347 inline HepRep4x4(
const HepRep4x4Symmetric & rep );
349 inline HepRep4x4(
const double * array );
361 inline void getArray (
double * array )
const;
370 struct HepRep4x4Symmetric {
377 (
double xx,
double xy,
double xz,
double xt
378 ,
double yy,
double yz,
double yt
379 ,
double zz,
double zt
394 inline void getArray (
double * array )
const;
401 #include "CLHEP/Vector/RotationInterfaces.icc"
403 #ifdef ENABLE_BACKWARDS_COMPATIBILITY
405 using namespace CLHEP;
408 #endif // ROTATION_INTERFACES_H
bool operator!=(HepRep4x4 const &r) const
friend class HepRotationY
friend class HepRotationY
bool operator==(HepRep4x4 const &r) const
static double getTolerance()
friend class HepLorentzRotation
void getArray(double *array) const
HepLorentzRotation operator*(const HepRotation &r, const HepLorentzRotation <)
void getArray(double *array) const
friend class HepRotationZ
friend class HepRotationZ
bool operator!=(const HepRotation &r, const HepLorentzRotation <)
static double setTolerance(double tol)
friend class HepRotationX
bool operator==(const HepRotation &r, const HepLorentzRotation <)
friend class HepRotationX
void getArray(double *array) const