Go to the documentation of this file.
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;
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 {
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);
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;
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;
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 );
340 inline double getX()
const;
341 inline double getY()
const;
342 inline double getZ()
const;
343 inline double getT()
const;
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;
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;
HepRotation delta() setPhi()
void setRThetaPhi(double r, double theta, double phi)
HepLorentzVector rotationYOf(const HepLorentzVector &vec, double delta)
double delta2Euclidean(const HepLorentzVector &w) const
double deltaR(const HepLorentzVector &v) const
HepLorentzVector & rotateY(double)
HepLorentzVector & operator*=(double)
double operator()(int) const
void setRhoPhiZ(double rho, double phi, double z)
bool operator<=(const HepLorentzVector &w) const
HepLorentzVector & transform(const HepRotation &)
HepLorentzVector & rotateZ(double)
void set(double x, double y, double z, double t)
HepLorentzVector boostYOf(const HepLorentzVector &vec, double beta)
HepLorentzVector & operator-=(const HepLorentzVector &)
double operator*(const HepLorentzVector &) const
bool isNearCM(const HepLorentzVector &w, double epsilon=tolerance) const
HepLorentzVector HepLorentzVectorF
double dot(const HepLorentzVector &) const
friend HepLorentzVector rotationOf(const HepLorentzVector &vec, const Hep3Vector &axis, double delta)
We have the boost methods returning HepLorentzVector &rather than so things can be chained we feel the boost methods along an axis
friend HepLorentzVector boostYOf(const HepLorentzVector &vec, double beta)
double angle(const Hep3Vector &) const
double howParallel(const HepLorentzVector &w) const
friend HepLorentzVector boostOf(const HepLorentzVector &vec, const Hep3Vector &betaVector)
bool operator>(const HepLorentzVector &w) const
bool operator>=(const HepLorentzVector &w) const
friend HepLorentzVector rotationZOf(const HepLorentzVector &vec, double delta)
friend HepLorentzVector boostXOf(const HepLorentzVector &vec, double beta)
HepLorentzVector boostZOf(const HepLorentzVector &vec, double beta)
bool isParallel(const HepLorentzVector &w, double epsilon=tolerance) const
HepLorentzVector & operator=(const HepLorentzVector &)
HepLorentzVector operator+(const HepLorentzVector &) const
double coLinearRapidity() const
bool operator==(const HepLorentzVector &) const
HepLorentzVector operator/(const HepLorentzVector &, double a)
void setVectM(const Hep3Vector &spatial, double mass)
double invariantMass2() const
HepLorentzVector & operator+=(const HepLorentzVector &)
bool isNear(const HepLorentzVector &w, double epsilon=tolerance) const
HepLorentzVector rest4Vector() const
static ZMpvMetric_t getMetric()
HepLorentzVector & boostX(double beta)
HepLorentzVector HepLorentzVectorD
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
double euclideanNorm() const
HepLorentzVector rotationOf(const HepLorentzVector &vec, const Hep3Vector &axis, double delta)
void setVectMag(const Hep3Vector &spatial, double magnitude)
HepLorentzVector & boostY(double beta)
double pseudoRapidity() const
static double setTolerance(double tol)
we want to make it possible for the user to use the so we provide a few new for double double phi
HepLorentzVector & rotateX(double)
double howLightlike() const
std::istream & operator>>(std::istream &is, HepAxisAngle &aa)
Hep3Vector boostVector() const
HepLorentzVector boostXOf(const HepLorentzVector &vec, double beta)
double operator[](int) const
HepLorentzVector & boost(double, double, double)
HepLorentzVector & rotate(double, const Hep3Vector &)
HepLorentzVector rotationXOf(const HepLorentzVector &vec, double delta)
HepLorentzVector boostOf(const HepLorentzVector &vec, const Hep3Vector &betaVector)
double howNearCM(const HepLorentzVector &w) const
HepLorentzVector & boostZ(double beta)
HepLorentzVector operator-() const
HepLorentzVector & operator/=(double)
bool operator!=(const HepLorentzVector &) const
friend HepLorentzVector rotationYOf(const HepLorentzVector &vec, double delta)
std::ostream & operator<<(std::ostream &os, const HepAxisAngle &aa)
static ZMpvMetric_t setMetric(ZMpvMetric_t a1)
double euclideanNorm2() const
double invariantMass() const
int compare(const HepLorentzVector &w) const
double howNear(const HepLorentzVector &w) const
bool operator<(const HepLorentzVector &w) const
HepLorentzRotation operator*(const HepRotation &r, const HepLorentzRotation <)
friend HepLorentzVector boostZOf(const HepLorentzVector &vec, double beta)
void setVect(const Hep3Vector &)
HepLorentzVector rotationZOf(const HepLorentzVector &vec, double delta)
void setREtaPhi(double r, double eta, double phi)
HepLorentzVector & rotateUz(const Hep3Vector &)
friend HepLorentzVector rotationXOf(const HepLorentzVector &vec, double delta)
we want to make it possible for the user to use the so we provide a few new for double theta
bool isLightlike(double epsilon=tolerance) const
Hep3Vector findBoostToCM() const
static double getTolerance()
void setV(const Hep3Vector &)
double diff2(const HepLorentzVector &w) const