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.
double pt2() const
Squared transverse momentum px^2 + py^2.
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.
void operator -=(const FourVector &rhs)
Arithmetic operator -=.
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.
void set(double x1, double x2, double x3, double x4)
Set all FourVector fields, in order x,y,z,t.
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.
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
void operator *=(const double rhs)
Arithmetic operator *= by scalar.
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.
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.