6 #ifndef HEPMC_FOURVECTOR_H 7 #define HEPMC_FOURVECTOR_H 12 #include "HepMC/Common.h" 51 void set(
double x1,
double x2,
double x3,
double x4) {
60 double x()
const {
return m_v1; }
65 double y()
const {
return m_v2; }
70 double z()
const {
return m_v3; }
75 double t()
const {
return m_v4; }
81 double px()
const {
return x(); }
86 double py()
const {
return y(); }
91 double pz()
const {
return z(); }
96 double e()
const {
return t(); }
128 double m()
const {
return (
m2() > 0.0) ? sqrt(
m2()) : -sqrt(-
m2()); }
131 double phi()
const {
return atan2(
y(),
x() ); }
139 double rap()
const {
return 0.5*log( (
e() +
pz()) / (
e() -
pz()) ); }
145 #ifndef HEPMC_NO_DEPRECATED 157 bool is_zero()
const {
return x() == 0 &&
y() == 0 &&
z() == 0 &&
t() == 0; }
161 double dphi =
phi() - v.
phi();
162 if (dphi != dphi)
return dphi;
163 while (dphi >= M_PI) dphi -= 2.*M_PI;
164 while (dphi < -M_PI) dphi += 2.*M_PI;
202 return x() == rhs.
x() &&
y() == rhs.
y() &&
z() == rhs.
z() &&
t() == rhs.
t();
void operator+=(const FourVector &rhs)
Arithmetic operator +=.
double py() const
y-component of momentum
void operator/=(const double rhs)
Arithmetic operator /= by scalar.
double pseudoRapidity() const
Same as eta.
double perp() const
Magnitude of (x, y) vector.
double pt() const
Transverse momentum.
FourVector(double xx, double yy, double zz, double ee)
Sets all FourVector fields.
void operator-=(const FourVector &rhs)
Arithmetic operator -=.
double delta_r_eta(const FourVector &v) const
R_eta-distance separation dR = sqrt(dphi^2 + deta^2)
FourVector operator/(const double rhs) const
Arithmetic operator / by scalar.
void operator*=(const double rhs)
Arithmetic operator *= by scalar.
void setE(double ee)
Set energy component of momentum.
FourVector operator*(const double rhs) const
Arithmetic operator * by scalar.
double abs_rap() const
Absolute rapidity.
double pz() const
z-component of momentum
double delta_r_rap(const FourVector &v) const
R-rap-distance separation dR = sqrt(dphi^2 + drap^2)
double length() const
Magnitude of spatial (x, y, z) 3-vector.
static const FourVector & ZERO_VECTOR()
Static null FourVector = (0,0,0,0)
double theta() const
Polar angle w.r.t. z direction.
double m_v4
e or t. Interpretation depends on accessors used
FourVector(const FourVector &v)
Copy constructor.
double px() const
x-component of momentum
double p3mod2() const
Squared magnitude of p3 = (px, py, pz) vector.
double length2() const
Squared magnitude of (x, y, z) 3-vector.
bool is_zero() const
Check if the length of this vertex is zero.
void setT(double tt)
Set time component of position/displacement.
void setX(double xx)
Set x-component of position/displacement.
double m2() const
Squared invariant mass m^2 = E^2 - px^2 - py^2 - pz^2.
FourVector()
Default constructor.
void setZ(double zz)
Set z-component of position/displacement.
void setPy(double pyy)
Set y-component of momentum.
NUM sqr(NUM x)
Handy number squaring function.
FourVector operator+(const FourVector &rhs) const
Arithmetic operator +.
double interval() const
Spacetime invariant interval s^2 = t^2 - x^2 - y^2 - z^2.
double m_v2
py or y. Interpretation depends on accessors used
double delta_r2_eta(const FourVector &v) const
R_eta^2-distance separation dR^2 = dphi^2 + deta^2.
double t() const
Time component of position/displacement.
double delta_eta(const FourVector &v) const
Pseudorapidity separation.
void setPx(double pxx)
Set x-component of momentum.
double pt2() const
Squared transverse momentum px^2 + py^2.
double abs_eta() const
Absolute pseudorapidity.
FourVector operator-(const FourVector &rhs) const
Arithmetic operator -.
double delta_r2_rap(const FourVector &v) const
R_rap^2-distance separation dR^2 = dphi^2 + drap^2.
double delta_phi(const FourVector &v) const
Signed azimuthal angle separation in [-pi, pi].
bool operator!=(const FourVector &rhs) const
Inequality.
bool operator==(const FourVector &rhs) const
Equality.
double y() const
y-component of position/displacement
double m_v3
pz or z. Interpretation depends on accessors used
double p3mod() const
Magnitude of p3 = (px, py, pz) vector.
double e() const
Energy component of momentum.
void setPz(double pzz)
Set z-component of momentum.
double delta_rap(const FourVector &v) const
Rapidity separation.
Definition of template class SmartPointer.
double perp2() const
Squared magnitude of (x, y) vector.
double x() const
x-component of position/displacement
void setY(double yy)
Set y-component of position/displacement.
double m_v1
px or x. Interpretation depends on accessors used
double phi() const
Azimuthal angle.
double m() const
Invariant mass. Returns -sqrt(-m) if e^2 - P^2 is negative.
double z() const
z-component of position/displacement