23 #ifndef HEP_LORENTZROTATION_H
24 #define HEP_LORENTZROTATION_H
30 #include "CLHEP/Vector/defs.h"
31 #include "CLHEP/Vector/RotationInterfaces.h"
32 #include "CLHEP/Vector/Rotation.h"
33 #include "CLHEP/Vector/Boost.h"
34 #include "CLHEP/Vector/LorentzVector.h"
40 inline HepLorentzRotation
inverseOf (
const HepLorentzRotation & lt );
41 HepLorentzRotation
operator * (
const HepRotation & r,
42 const HepLorentzRotation & lt);
43 HepLorentzRotation
operator * (
const HepRotationX & r,
44 const HepLorentzRotation & lt);
45 HepLorentzRotation
operator * (
const HepRotationY & r,
46 const HepLorentzRotation & lt);
47 HepLorentzRotation
operator * (
const HepRotationZ & r,
48 const HepLorentzRotation & lt);
54 class HepLorentzRotation {
107 const HepLorentzVector &
col2,
108 const HepLorentzVector &
col3,
109 const HepLorentzVector &
col4 );
121 const HepLorentzVector &
col2,
122 const HepLorentzVector &
col3,
123 const HepLorentzVector &
col4 );
127 const HepLorentzVector &
row2,
128 const HepLorentzVector &
row3,
129 const HepLorentzVector &
row4 );
145 inline double xx()
const;
146 inline double xy()
const;
147 inline double xz()
const;
148 inline double xt()
const;
149 inline double yx()
const;
150 inline double yy()
const;
151 inline double yz()
const;
152 inline double yt()
const;
153 inline double zx()
const;
154 inline double zy()
const;
155 inline double zz()
const;
156 inline double zt()
const;
157 inline double tx()
const;
158 inline double ty()
const;
159 inline double tz()
const;
160 inline double tt()
const;
163 inline HepLorentzVector
col1()
const;
164 inline HepLorentzVector
col2()
const;
165 inline HepLorentzVector
col3()
const;
166 inline HepLorentzVector
col4()
const;
169 inline HepLorentzVector
row1()
const;
170 inline HepLorentzVector
row2()
const;
171 inline HepLorentzVector
row3()
const;
172 inline HepLorentzVector
row4()
const;
175 inline HepRep4x4
rep4x4()
const;
180 class HepLorentzRotation_row {
190 inline const HepLorentzRotation_row
operator [] (
int)
const;
198 void decompose (Hep3Vector &
boost, HepAxisAngle & rotation)
const;
202 void decompose (HepAxisAngle & rotation, Hep3Vector &
boost)
const;
223 double distance2(
const HepRotation & r )
const;
227 double howNear(
const HepBoost &
b )
const;
228 double howNear(
const HepRotation & r)
const;
231 bool isNear(
const HepBoost &
b,
233 bool isNear(
const HepRotation & r,
240 double norm2()
const;
257 inline HepLorentzVector
operator()(
const HepLorentzVector & w )
const;
258 inline HepLorentzVector
operator* (
const HepLorentzVector & p )
const;
317 std::ostream &
print( std::ostream & os )
const;
337 inline void setBoost(
double,
double,
double);
348 inline std::ostream &
operator<<
349 ( std::ostream & os,
const HepLorentzRotation& lt )
350 {
return lt.print(os);}
352 inline bool operator==(
const HepRotation &r,
const HepLorentzRotation & lt)
354 inline bool operator!=(
const HepRotation &r,
const HepLorentzRotation & lt)
356 inline bool operator<=(
const HepRotation &r,
const HepLorentzRotation & lt)
358 inline bool operator>=(
const HepRotation &r,
const HepLorentzRotation & lt)
360 inline bool operator<(
const HepRotation &r,
const HepLorentzRotation & lt)
362 inline bool operator>(
const HepRotation &r,
const HepLorentzRotation & lt)
365 inline bool operator==(
const HepBoost &
b,
const HepLorentzRotation & lt)
367 inline bool operator!=(
const HepBoost &
b,
const HepLorentzRotation & lt)
369 inline bool operator<=(
const HepBoost &
b,
const HepLorentzRotation & lt)
371 inline bool operator>=(
const HepBoost &
b,
const HepLorentzRotation & lt)
373 inline bool operator<(
const HepBoost &
b,
const HepLorentzRotation & lt)
375 inline bool operator>(
const HepBoost &
b,
const HepLorentzRotation & lt)
380 #include "CLHEP/Vector/LorentzRotation.icc"
382 #ifdef ENABLE_BACKWARDS_COMPATIBILITY
384 using namespace CLHEP;