21 #ifndef HEP_ROTATION_H 22 #define HEP_ROTATION_H 28 #include "CLHEP/Vector/defs.h" 29 #include "CLHEP/Vector/RotationInterfaces.h" 30 #include "CLHEP/Vector/RotationX.h" 31 #include "CLHEP/Vector/RotationY.h" 32 #include "CLHEP/Vector/RotationZ.h" 33 #include "CLHEP/Vector/LorentzVector.h" 39 inline HepRotation
inverseOf (
const HepRotation & r );
40 inline HepRotation
operator * (
const HepRotationX & rx,
const HepRotation & r);
41 inline HepRotation
operator * (
const HepRotationY & ry,
const HepRotation & r);
42 inline HepRotation
operator * (
const HepRotationZ & rz,
const HepRotation & r);
82 const Hep3Vector &
colY,
83 const Hep3Vector &
colZ );
92 const Hep3Vector &
colY,
93 const Hep3Vector &
colZ );
97 const Hep3Vector &
rowY,
98 const Hep3Vector &
rowZ );
125 inline Hep3Vector
colX()
const;
126 inline Hep3Vector
colY()
const;
127 inline Hep3Vector
colZ()
const;
130 inline Hep3Vector
rowX()
const;
131 inline Hep3Vector
rowY()
const;
132 inline Hep3Vector
rowZ()
const;
135 inline double xx()
const;
136 inline double xy()
const;
137 inline double xz()
const;
138 inline double yx()
const;
139 inline double yy()
const;
140 inline double yz()
const;
141 inline double zx()
const;
142 inline double zy()
const;
143 inline double zz()
const;
146 inline HepRep3x3
rep3x3()
const;
151 class HepRotation_row {
170 inline double getPhi ()
const;
172 inline double getPsi ()
const;
174 double theta()
const;
180 inline Hep3Vector
getAxis ()
const;
181 double delta()
const;
182 Hep3Vector
axis ()
const;
199 inline HepLorentzVector
col1()
const;
200 inline HepLorentzVector
col2()
const;
201 inline HepLorentzVector
col3()
const;
204 inline HepLorentzVector
col4()
const;
207 inline HepLorentzVector
row1()
const;
208 inline HepLorentzVector
row2()
const;
209 inline HepLorentzVector
row3()
const;
212 inline HepLorentzVector
row4()
const;
215 inline double xt()
const;
216 inline double yt()
const;
217 inline double zt()
const;
218 inline double tx()
const;
219 inline double ty()
const;
220 inline double tz()
const;
223 inline double tt()
const;
226 inline HepRep4x4
rep4x4()
const;
240 void setAxis (
const Hep3Vector & axis);
248 void decompose (HepAxisAngle & rotation, Hep3Vector & boost)
const;
249 void decompose (Hep3Vector & boost, HepAxisAngle & rotation)
const;
275 double distance2(
const HepBoost & lt )
const;
277 double distance2(
const HepLorentzRotation & lt )
const;
280 double howNear(
const HepBoost & lt )
const;
281 double howNear(
const HepLorentzRotation & lt )
const;
282 bool isNear(
const HepBoost & lt,
284 bool isNear(
const HepLorentzRotation & lt,
289 double norm2()
const;
302 inline Hep3Vector
operator() (
const Hep3Vector & p)
const;
305 inline Hep3Vector
operator * (
const Hep3Vector & p)
const;
308 inline HepLorentzVector
operator()(
const HepLorentzVector & w )
const;
311 inline HepLorentzVector
operator* (
const HepLorentzVector & w )
const;
352 const Hep3Vector & newY,
353 const Hep3Vector & newZ);
365 std::ostream &
print( std::ostream & os )
const;
379 inline HepRotation(
double mxx,
double mxy,
double mxz,
380 double myx,
double myy,
double myz,
381 double mzx,
double mzy,
double mzz);
396 setCols (
const Hep3Vector & u1,
397 const Hep3Vector & u2,
398 const Hep3Vector & u3,
402 Hep3Vector & v3 )
const;
403 void setArbitrarily (
const Hep3Vector & colX,
406 Hep3Vector & v3)
const;
410 std::ostream &
operator <<
411 ( std::ostream & os,
const HepRotation & r ) {
return r.print(os);}
415 #include "CLHEP/Vector/Rotation.icc" 417 #ifdef ENABLE_BACKWARDS_COMPATIBILITY 419 using namespace CLHEP;
HepRotation & operator=(const HepRotation &r)
void setDelta(double delta)
HepLorentzVector col2() const
bool operator!=(const HepRotation &r) const
static double setTolerance(double tol)
bool operator>=(const HepRotation &r) const
static double getTolerance()
HepLorentzVector col4() const
HepLorentzRotation operator*(const HepRotation &r, const HepLorentzRotation <)
Hep3Vector operator*(const Hep3Vector &p) const
static const HepRotation IDENTITY
bool operator<=(const HepRotation &r) const
double distance2(const HepRotation &r) const
bool operator==(const HepRotation &r) const
HepLorentzVector row1() const
HepBoost inverseOf(const HepBoost <)
HepLorentzVector col3() const
HepRotation & operator*=(const HepRotation &r)
bool operator<(const HepRotation &r) const
double operator[](int) const
void setAxis(const Hep3Vector &axis)
bool isNear(const HepRotation &r, double epsilon=Hep4RotationInterface::tolerance) const
Hep3Vector getAxis() const
std::ostream & print(std::ostream &os) const
int compare(const HepRotation &r) const
bool operator>(const HepRotation &r) const
HepRotation & rotateY(double delta)
double operator()(int, int) const
void getAngleAxis(double &delta, Hep3Vector &axis) const
void setTheta(double theta)
HepRotation & rotateZ(double delta)
HepAxisAngle axisAngle() const
HepRotation & rotate(double delta, const Hep3Vector &axis)
HepEulerAngles eulerAngles() const
HepRotation & transform(const HepRotation &r)
HepRotation inverse() const
HepLorentzVector row4() const
HepRotation & setRows(const Hep3Vector &rowX, const Hep3Vector &rowY, const Hep3Vector &rowZ)
HepLorentzVector col1() const
HepRotation_row(const HepRotation &, int)
HepLorentzVector row2() const
HepRotation & rotateAxes(const Hep3Vector &newX, const Hep3Vector &newY, const Hep3Vector &newZ)
double howNear(const HepRotation &r) const
HepRotation & rotateX(double delta)
HepLorentzVector row3() const
void decompose(HepAxisAngle &rotation, Hep3Vector &boost) const