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"
77struct HepRep4x4Symmetric;
83class HepLorentzRotation;
100class 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;
217class 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() {}
316 ,
double yx,
double yy,
double yz
317 ,
double zx,
double zy,
double zz
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
377 (
double xx,
double xy,
double xz,
double xt
378 ,
double yy,
double yz,
double yt
379 ,
double zz,
double zt
401#include "CLHEP/Vector/RotationInterfaces.icc"
403#ifdef ENABLE_BACKWARDS_COMPATIBILITY
405using namespace CLHEP;
friend class HepRotationX
friend class HepRotationY
friend class HepRotationZ
friend class HepRotationX
friend class HepRotationY
static double getTolerance()
friend class HepRotationZ
static double setTolerance(double tol)
friend class HepLorentzRotation
HepLorentzRotation operator*(const HepRotation &r, const HepLorentzRotation <)
bool operator!=(const HepRotation &r, const HepLorentzRotation <)
bool operator==(const HepRotation &r, const HepLorentzRotation <)
HepRep3x3(const double *array)
HepRep3x3(double xx, double xy, double xz, double yx, double yy, double yz, double zx, double zy, double zz)
void getArray(double *array) const
void getArray(double *array) const
HepRep4x4Symmetric(const double *array)
HepRep4x4Symmetric(double xx, double xy, double xz, double xt, double yy, double yz, double yt, double zz, double zt, double tt)
HepRep4x4(const double *array)
HepRep4x4(const HepRep4x4Symmetric &rep)
bool operator!=(HepRep4x4 const &r) const
HepRep4x4(double xx, double xy, double xz, double xt, double yx, double yy, double yz, double yt, double zx, double zy, double zz, double zt, double tx, double ty, double tz, double tt)
bool operator==(HepRep4x4 const &r) const
void getArray(double *array) const