Go to the documentation of this file.
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;
223 double distance2(
const HepRotation & r )
const;
228 double howNear(
const HepRotation & r)
const;
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)
380 #include "CLHEP/Vector/LorentzRotation.icc"
382 #ifdef ENABLE_BACKWARDS_COMPATIBILITY
384 using namespace CLHEP;
HepLorentzVector operator*(const HepLorentzVector &p) const
HepRotation delta() setPhi()
bool operator>=(const HepLorentzRotation &) const
HepLorentzRotation_row(const HepLorentzRotation &, int)
bool operator>(const HepRotation &r, const HepLorentzRotation <)
HepLorentzRotation & rotateZ(double delta)
namespace and inside the zmpv namespace it typedef s UnitVector to be HepUnit3Vector The conversion which provide those methods available for GETTING INFORMATION if an object might be either a Rotation or a since RI has methods a routine can be passed a RI &and take because anything you wish to ask about a LT you could equally well ask about a Rotation From one derives Rotation and its special cases RotationX etc We can t derive RotationX from from one derives HepLorentzRotation along with HepBoost
HepLorentzVector col3() const
static double setTolerance(double tol)
HepLorentzVector row2() const
int compare(const HepLorentzRotation &m) const
double operator[](int) const
We have the boost methods returning HepLorentzVector &rather than so things can be chained we feel the boost methods along an axis
bool operator>(const HepLorentzRotation &) const
bool operator>=(const HepRotation &r, const HepLorentzRotation <)
bool operator<=(const HepRotation &r, const HepLorentzRotation <)
bool operator<(const HepRotation &r, const HepLorentzRotation <)
bool operator!=(const HepRotation &r, const HepLorentzRotation <)
bool isNear(const HepBoost &b, double epsilon=Hep4RotationInterface::tolerance) const
HepLorentzRotation & boost(double, double, double)
double operator()(int, int) const
bool operator<=(const HepLorentzRotation &) const
double distance2(const HepBoost &b) const
bool operator<(const HepLorentzRotation &) const
HepLorentzVector col4() const
HepLorentzRotation inverse() const
double howNear(const HepBoost &b) const
bool operator==(const HepRotation &r, const HepLorentzRotation <)
friend HepLorentzRotation inverseOf(const HepLorentzRotation <)
bool operator!=(const HepLorentzRotation &) const
HepLorentzRotation & boostY(double beta)
HepLorentzVector col1() const
HepLorentzVector row1() const
HepLorentzRotation & operator=(const HepLorentzRotation &m)
HepLorentzRotation & operator*=(const HepBoost &b)
Issues Concerning the PhysicsVectors CLHEP Vector Merge The merge of ZOOM PhysicsVdectors and the CLHEP Vector package is completed The purpose of this document is to list the major issues that affected the merge of these and where relevant describe the resolutions More detailed documents describe more minor issues General Approach As agreed at the June CLHEP the approach is to combine the features of each ZOOM class with the corresponding CLHEP class expanding the interface to create a single lingua franca of what a Hep3Vector(for example) means. We are not forming SpaceVector as an class derived from Hep3Vector and enhancing it in that way. Another rule imposed by the agreement is to avoid using the Exceptions package(even though that will later go into CLHEP for other uses). A desirable goal is to avoid cluttering the interface and enlarging the code linked in when ordinary CLHEP Vector functionallity is used. To this end
HepLorentzVector vectorMultiplication(const HepLorentzVector &) const
std::ostream & print(std::ostream &os) const
HepLorentzRotation & invert()
HepBoost inverseOf(const HepBoost <)
namespace and inside the zmpv namespace it typedef s UnitVector to be HepUnit3Vector The conversion which provide those methods available for GETTING INFORMATION if an object might be either a Rotation or a since RI has methods a routine can be passed a RI &and take because anything you wish to ask about a LT you could equally well ask about a Rotation From one derives Rotation and its special cases RotationX etc We can t derive RotationX from from one derives HepLorentzRotation along with HepBoostX
HepLorentzRotation & boostX(double beta)
static const HepLorentzRotation IDENTITY
bool operator==(const HepLorentzRotation &) const
HepLorentzRotation & rotateY(double delta)
HepLorentzVector row3() const
static double getTolerance()
HepLorentzVector row4() const
HepLorentzRotation & rotateX(double delta)
Application of Rotations and LorentzTransformations to containers of and as in Rotation R
HepLorentzRotation & setRows(const HepLorentzVector &row1, const HepLorentzVector &row2, const HepLorentzVector &row3, const HepLorentzVector &row4)
void setBoost(double, double, double)
void decompose(Hep3Vector &boost, HepAxisAngle &rotation) const
HepLorentzRotation operator*(const HepRotation &r, const HepLorentzRotation <)
const HepLorentzRotation_row operator[](int) const
HepLorentzVector col2() const
HepLorentzRotation & rotate(double delta, const Hep3Vector &axis)
HepLorentzRotation & set(double bx, double by, double bz)
HepLorentzRotation & transform(const HepBoost &b)
HepLorentzRotation & boostZ(double beta)
HepLorentzRotation matrixMultiplication(const HepRep4x4 &m) const