21 #ifndef HEP_LORENTZVECTOR_H
22 #define HEP_LORENTZVECTOR_H
29 #include "CLHEP/Vector/defs.h"
30 #include "CLHEP/Vector/ThreeVector.h"
35 class HepLorentzVector;
36 class HepLorentzRotation;
41 HepLorentzVector
rotationXOf(
const HepLorentzVector & vec,
double delta );
42 HepLorentzVector
rotationYOf(
const HepLorentzVector & vec,
double delta );
43 HepLorentzVector
rotationZOf(
const HepLorentzVector & vec,
double delta );
45 (
const HepLorentzVector & vec,
const Hep3Vector & axis,
double delta );
47 (
const HepLorentzVector & vec,
const HepAxisAngle & ax );
49 (
const HepLorentzVector & vec,
const HepEulerAngles & e1 );
51 (
const HepLorentzVector & vec,
double phi,
55 HepLorentzVector
boostXOf(
const HepLorentzVector & vec,
double beta );
57 HepLorentzVector
boostYOf(
const HepLorentzVector & vec,
double beta );
59 HepLorentzVector
boostZOf(
const HepLorentzVector & vec,
double beta );
61 (
const HepLorentzVector & vec,
const Hep3Vector & betaVector );
63 (
const HepLorentzVector & vec,
const Hep3Vector & axis,
double beta );
72 class HepLorentzVector {
103 inline operator const Hep3Vector & ()
const;
104 inline operator Hep3Vector & ();
107 inline double x()
const;
108 inline double y()
const;
109 inline double z()
const;
110 inline double t()
const;
113 inline void setX(
double);
114 inline void setY(
double);
115 inline void setZ(
double);
116 inline void setT(
double);
119 inline double px()
const;
120 inline double py()
const;
121 inline double pz()
const;
122 inline double e()
const;
125 inline void setPx(
double);
126 inline void setPy(
double);
127 inline void setPz(
double);
128 inline void setE(
double);
131 inline Hep3Vector
vect()
const;
134 inline void setVect(
const Hep3Vector &);
137 inline double theta()
const;
139 inline double phi()
const;
140 inline double rho()
const;
144 inline void setPhi(
double);
145 inline void setRho(
double);
178 inline double perp2()
const;
181 inline double perp()
const;
187 inline double perp2(
const Hep3Vector &)
const;
190 inline double perp(
const Hep3Vector &)
const;
193 inline double angle(
const Hep3Vector &)
const;
196 inline double mag2()
const;
200 inline double m2()
const;
203 inline double mag()
const;
204 inline double m()
const;
207 inline double mt2()
const;
210 inline double mt()
const;
213 inline double et2()
const;
216 inline double et()
const;
229 inline void setVectMag(
const Hep3Vector & spatial,
double magnitude);
230 inline void setVectM(
const Hep3Vector & spatial,
double mass);
233 inline double plus()
const;
234 inline double minus()
const;
262 inline bool isLightlike(
double epsilon=tolerance)
const;
312 inline void set (
double x,
double y,
double z,
double t);
313 inline void set (
double x,
double y,
double z, Tcomponent
t);
317 inline void set (Tcomponent
t,
double x,
double y,
double z);
321 inline void set (
double t );
323 inline void set ( Tcomponent
t );
327 inline void set (
const Hep3Vector &
v );
334 inline void set (
const Hep3Vector &
v,
double t );
335 inline void set (
double t,
const Hep3Vector &
v );
340 inline double getX()
const;
341 inline double getY()
const;
342 inline double getZ()
const;
343 inline double getT()
const;
346 inline Hep3Vector
v()
const;
347 inline Hep3Vector
getV()
const;
350 inline void setV(
const Hep3Vector &);
355 inline void setV(
double x,
double y,
double z );
371 double epsilon=tolerance )
const;
376 double epsilon=tolerance )
const;
386 double epsilon=tolerance )
const;
434 double gamma()
const;
437 inline double eta()
const;
440 inline double eta(
const Hep3Vector & ref)
const;
443 double rapidity(
const Hep3Vector & ref)
const;
459 inline double et2(
const Hep3Vector &)
const;
462 inline double et(
const Hep3Vector &)
const;
475 double plus(
const Hep3Vector & ref )
const;
478 double minus(
const Hep3Vector & ref )
const;
530 static double tolerance;
531 static double metric;
537 static const HepLorentzVector X_HAT4 = HepLorentzVector( 1, 0, 0, 0 );
538 static const HepLorentzVector Y_HAT4 = HepLorentzVector( 0, 1, 0, 0 );
539 static const HepLorentzVector Z_HAT4 = HepLorentzVector( 0, 0, 1, 0 );
540 static const HepLorentzVector T_HAT4 = HepLorentzVector( 0, 0, 0, 1 );
544 std::ostream &
operator << (std::ostream &,
const HepLorentzVector &);
547 std::istream &
operator >> (std::istream &, HepLorentzVector &);
553 inline HepLorentzVector
operator * (
const HepLorentzVector &,
double a);
554 inline HepLorentzVector
operator * (
double a,
const HepLorentzVector &);
557 HepLorentzVector
operator / (
const HepLorentzVector &,
double a);
573 #include "CLHEP/Vector/LorentzVector.icc"
575 #ifdef ENABLE_BACKWARDS_COMPATIBILITY
577 using namespace CLHEP;
HepLorentzVector & boostX(double beta)
HepLorentzVector boostOf(const HepLorentzVector &vec, const Hep3Vector &betaVector)
static double getTolerance()
friend HepLorentzVector boostXOf(const HepLorentzVector &vec, double beta)
bool operator!=(const HepLorentzVector &) const
HepLorentzVector & transform(const HepRotation &)
double invariantMass2() const
double invariantMass() const
friend HepLorentzVector rotationZOf(const HepLorentzVector &vec, double delta)
double deltaR(const HepLorentzVector &v) const
double operator()(int) const
int compare(const HepLorentzVector &w) const
bool operator<(const HepLorentzVector &w) const
HepLorentzVector operator/(const HepLorentzVector &, double a)
void setVectMag(const Hep3Vector &spatial, double magnitude)
HepLorentzVector & boostY(double beta)
HepLorentzVector & rotateX(double)
static ZMpvMetric_t setMetric(ZMpvMetric_t a1)
HepLorentzVector operator+(const HepLorentzVector &) const
Hep3Vector findBoostToCM() const
void setREtaPhi(double r, double eta, double phi)
HepLorentzVector operator-() const
void setVect(const Hep3Vector &)
HepLorentzVector HepLorentzVectorD
double operator*(const HepLorentzVector &) const
void setV(const Hep3Vector &)
HepLorentzVector HepLorentzVectorF
bool operator<=(const HepLorentzVector &w) const
friend HepLorentzVector boostZOf(const HepLorentzVector &vec, double beta)
HepLorentzRotation operator*(const HepRotation &r, const HepLorentzRotation <)
double delta2Euclidean(const HepLorentzVector &w) const
HepLorentzVector boostXOf(const HepLorentzVector &vec, double beta)
HepLorentzVector rotationXOf(const HepLorentzVector &vec, double delta)
static double setTolerance(double tol)
bool isParallel(const HepLorentzVector &w, double epsilon=tolerance) const
HepLorentzVector rotationYOf(const HepLorentzVector &vec, double delta)
bool operator>(const HepLorentzVector &w) const
double angle(const Hep3Vector &) const
HepLorentzVector & operator*=(double)
HepLorentzVector boostZOf(const HepLorentzVector &vec, double beta)
friend HepLorentzVector rotationYOf(const HepLorentzVector &vec, double delta)
HepLorentzVector & rotateUz(const Hep3Vector &)
double pseudoRapidity() const
double euclideanNorm2() const
void setRThetaPhi(double r, double theta, double phi)
HepLorentzVector & operator/=(double)
HepLorentzVector boostYOf(const HepLorentzVector &vec, double beta)
bool isNearCM(const HepLorentzVector &w, double epsilon=tolerance) const
friend HepLorentzVector boostOf(const HepLorentzVector &vec, const Hep3Vector &betaVector)
HepLorentzVector & rotateY(double)
HepLorentzVector rotationZOf(const HepLorentzVector &vec, double delta)
double howLightlike() const
void set(double x, double y, double z, double t)
double operator[](int) const
std::istream & operator>>(std::istream &is, HepAxisAngle &aa)
HepLorentzVector rotationOf(const HepLorentzVector &vec, const Hep3Vector &axis, double delta)
double diff2(const HepLorentzVector &w) const
HepLorentzVector & operator=(const HepLorentzVector &)
HepLorentzVector rest4Vector() const
friend HepLorentzVector rotationXOf(const HepLorentzVector &vec, double delta)
HepLorentzVector & rotateZ(double)
friend HepLorentzVector rotationOf(const HepLorentzVector &vec, const Hep3Vector &axis, double delta)
bool operator>=(const HepLorentzVector &w) const
static ZMpvMetric_t getMetric()
double coLinearRapidity() const
double howParallel(const HepLorentzVector &w) const
bool operator==(const HepLorentzVector &) const
Hep3Vector boostVector() const
HepLorentzVector & boostZ(double beta)
void setRhoPhiZ(double rho, double phi, double z)
friend HepLorentzVector boostYOf(const HepLorentzVector &vec, double beta)
bool isNear(const HepLorentzVector &w, double epsilon=tolerance) const
double dot(const HepLorentzVector &) const
double howNearCM(const HepLorentzVector &w) const
double howNear(const HepLorentzVector &w) const
std::ostream & operator<<(std::ostream &os, const HepAxisAngle &aa)
double euclideanNorm() const
HepLorentzVector & operator-=(const HepLorentzVector &)
HepLorentzVector & operator+=(const HepLorentzVector &)
HepLorentzVector & boost(double, double, double)
void setVectM(const Hep3Vector &spatial, double mass)
bool isLightlike(double epsilon=tolerance) const
HepLorentzVector & rotate(double, const Hep3Vector &)