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();
double phi() const
Azimuthal angle.
void operator+=(const FourVector &rhs)
Arithmetic operator +=.
bool operator!=(const FourVector &rhs) const
Inequality.
void operator/=(const double rhs)
Arithmetic operator /= by scalar.
double px() const
x-component of momentum
double y() const
y-component of position/displacement
FourVector(double xx, double yy, double zz, double ee)
Sets all FourVector fields.
void operator-=(const FourVector &rhs)
Arithmetic operator -=.
double pt2() const
Squared transverse momentum px^2 + py^2.
void operator*=(const double rhs)
Arithmetic operator *= by scalar.
FourVector operator+(const FourVector &rhs) const
Arithmetic operator +.
double p3mod2() const
Squared magnitude of p3 = (px, py, pz) vector.
void setE(double ee)
Set energy component of momentum.
double pseudoRapidity() const
Same as eta.
double perp() const
Magnitude of (x, y) vector.
double abs_rap() const
Absolute rapidity.
static const FourVector & ZERO_VECTOR()
Static null FourVector = (0,0,0,0)
bool operator==(const FourVector &rhs) const
Equality.
double delta_r2_eta(const FourVector &v) const
R_eta^2-distance separation dR^2 = dphi^2 + deta^2.
double m_v4
e or t. Interpretation depends on accessors used
FourVector(const FourVector &v)
Copy constructor.
bool is_zero() const
Check if the length of this vertex is zero.
double pt() const
Transverse momentum.
double interval() const
Spacetime invariant interval s^2 = t^2 - x^2 - y^2 - z^2.
double delta_rap(const FourVector &v) const
Rapidity separation.
double delta_eta(const FourVector &v) const
Pseudorapidity separation.
FourVector operator*(const double rhs) const
Arithmetic operator * by scalar.
double x() const
x-component of position/displacement
double perp2() const
Squared magnitude of (x, y) vector.
void setT(double tt)
Set time component of position/displacement.
void setX(double xx)
Set x-component of position/displacement.
FourVector()
Default constructor.
double delta_r2_rap(const FourVector &a, const FourVector &b)
R_rap^2-distance separation dR^2 = dphi^2 + drap^2 between vecs a and b.
double delta_phi(const FourVector &a, const FourVector &b)
Signed azimuthal angle separation in [-pi, pi] between vecs a and b.
void setZ(double zz)
Set z-component of position/displacement.
void setPy(double pyy)
Set y-component of momentum.
double theta() const
Polar angle w.r.t. z direction.
NUM sqr(NUM x)
Handy number squaring function.
double delta_r_eta(const FourVector &v) const
R_eta-distance separation dR = sqrt(dphi^2 + deta^2)
double delta_eta(const FourVector &a, const FourVector &b)
Pseudorapidity separation between vecs a and b.
double t() const
Time component of position/displacement.
double delta_r_eta(const FourVector &a, const FourVector &b)
R_eta-distance separation dR = sqrt(dphi^2 + deta^2) between vecs a and b.
double delta_r_rap(const FourVector &a, const FourVector &b)
R_rap-distance separation dR = sqrt(dphi^2 + drap^2) between vecs a and b.
double m() const
Invariant mass. Returns -sqrt(-m) if e^2 - P^2 is negative.
double length2() const
Squared magnitude of (x, y, z) 3-vector.
double m_v2
py or y. Interpretation depends on accessors used
FourVector operator-(const FourVector &rhs) const
Arithmetic operator -.
double py() const
y-component of momentum
double m2() const
Squared invariant mass m^2 = E^2 - px^2 - py^2 - pz^2.
double delta_phi(const FourVector &v) const
Signed azimuthal angle separation in [-pi, pi].
double e() const
Energy component of momentum.
void setPx(double pxx)
Set x-component of momentum.
double delta_r2_rap(const FourVector &v) const
R_rap^2-distance separation dR^2 = dphi^2 + drap^2.
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.
FourVector operator/(const double rhs) const
Arithmetic operator / by scalar.
double delta_r2_eta(const FourVector &a, const FourVector &b)
R_eta^2-distance separation dR^2 = dphi^2 + deta^2 between vecs a and b.
double p3mod() const
Magnitude of p3 = (px, py, pz) vector.
double m_v3
pz or z. Interpretation depends on accessors used
double pz() const
z-component of momentum
void setPz(double pzz)
Set z-component of momentum.
Definition of template class SmartPointer.
double abs_eta() const
Absolute pseudorapidity.
void setY(double yy)
Set y-component of position/displacement.
double m_v1
px or x. Interpretation depends on accessors used
double z() const
z-component of position/displacement
double delta_rap(const FourVector &a, const FourVector &b)
Rapidity separation between vecs a and b.