Rivet API documentation

Rivet 4.1.3
ParticleBase.hh
1#ifndef RIVET_ParticleBase_HH
2#define RIVET_ParticleBase_HH
3
4#include "Rivet/Config/RivetCommon.hh"
5#include "Rivet/Jet.fhh"
6#include "Rivet/Tools/Cuts.fhh"
7#include "Rivet/Math/Vectors.hh"
8
9namespace Rivet {
10
11
14 public:
15
18
20 virtual ~ParticleBase() { }
21
22
23 // /// @name Constituent accessors
24 // /// @{
25
26 // /// @todo Can't do this because a) ParticleBase is pure-virtual; b) inheritance causality for Particle... urk
27 // virtual const vector<ParticleBase>& constituents() const = 0;
28 // virtual const vector<ParticleBase>& rawConstituents() const = 0;
29
30 // /// @}
31
32
35
37 virtual const FourMomentum& momentum() const = 0;
39 const FourMomentum& mom() const { return momentum(); };
41 const FourMomentum& p4() const { return momentum(); };
42
44 operator const FourMomentum& () const { return momentum(); }
45
47
48
51
53 double E() const { return momentum().E(); }
55 double energy() const { return momentum().E(); }
56
58 double E2() const { return momentum().E2(); }
60 double energy2() const { return momentum().E2(); }
61
63 double pt() const { return momentum().pt(); }
65 double pT() const { return pt(); }
67 double perp() const { return pt(); }
68
70 double pt2() const { return momentum().pt2(); }
72 double pT2() const { return pt2(); }
74 double perp2() const { return pt2(); }
75
77 double Et() const { return momentum().Et(); }
79 double Et2() const { return momentum().Et2(); }
80
82 double mass() const { return momentum().mass(); }
84 double mass2() const { return momentum().mass2(); }
85
87 double pseudorapidity() const { return momentum().eta(); }
89 double eta() const { return momentum().eta(); }
91 double abspseudorapidity() const { return momentum().abspseudorapidity(); }
93 double abseta() const { return momentum().abseta(); }
94
96 double rapidity() const { return momentum().rapidity(); }
98 double rap() const { return momentum().rapidity(); }
100 double absrapidity() const { return momentum().absrapidity(); }
102 double absrap() const { return momentum().absrap(); }
103
105 double azimuthalAngle(const PhiMapping mapping=ZERO_2PI) const { return momentum().azimuthalAngle(mapping); }
107 double phi(const PhiMapping mapping=ZERO_2PI) const { return momentum().phi(mapping); }
108
110 ThreeMomentum p3() const { return momentum().vector3(); }
112 double p() const { return momentum().p(); }
114 double p2() const { return momentum().p2(); }
115
117 Vector3 ptvec() const { return momentum().ptvec(); }
119 Vector3 pTvec() const { return momentum().pTvec(); }
120
122 double px() const { return momentum().x(); }
124 double py() const { return momentum().y(); }
126 double pz() const { return momentum().z(); }
127
129 double px2() const { return momentum().x2(); }
131 double py2() const { return momentum().y2(); }
133 double pz2() const { return momentum().z2(); }
134
136 double polarAngle() const { return momentum().polarAngle(); }
138 double theta() const { return momentum().theta(); }
139
141 double angle(const ParticleBase& v) const { return momentum().angle(v.momentum()); }
143 double angle(const FourVector& v) const { return momentum().angle(v); }
145 double angle(const Vector3& v3) const { return momentum().angle(v3); }
146
148 double dot(const ParticleBase& v) const { return momentum().dot(v.momentum()); }
150 double dot(const FourVector& v) const { return momentum().dot(v); }
151
153
154 };
155
156
159
160 inline double deltaR(const ParticleBase& p1, const ParticleBase& p2,
161 RapScheme scheme = PSEUDORAPIDITY) {
162 return deltaR(p1.momentum(), p2.momentum(), scheme);
163 }
164
165 inline double deltaR(const ParticleBase& p, const FourMomentum& v,
166 RapScheme scheme = PSEUDORAPIDITY) {
167 return deltaR(p.momentum(), v, scheme);
168 }
169
170 inline double deltaR(const ParticleBase& p, const FourVector& v,
171 RapScheme scheme = PSEUDORAPIDITY) {
172 return deltaR(p.momentum(), v, scheme);
173 }
174
175 inline double deltaR(const ParticleBase& p, const Vector3& v) {
176 return deltaR(p.momentum(), v);
177 }
178
179 inline double deltaR(const ParticleBase& p, double eta, double phi) {
180 return deltaR(p.momentum(), eta, phi);
181 }
182
183 inline double deltaR(const FourMomentum& v, const ParticleBase& p,
184 RapScheme scheme = PSEUDORAPIDITY) {
185 return deltaR(v, p.momentum(), scheme);
186 }
187
188 inline double deltaR(const FourVector& v, const ParticleBase& p,
189 RapScheme scheme = PSEUDORAPIDITY) {
190 return deltaR(v, p.momentum(), scheme);
191 }
192
193 inline double deltaR(const Vector3& v, const ParticleBase& p) {
194 return deltaR(v, p.momentum());
195 }
196
197 inline double deltaR(double eta, double phi, const ParticleBase& p) {
198 return deltaR(eta, phi, p.momentum());
199 }
200
201
202 inline double deltaPhi(const ParticleBase& p1, const ParticleBase& p2, bool sign=false) {
203 return deltaPhi(p1.momentum(), p2.momentum(), sign);
204 }
205
206 inline double deltaPhi(const ParticleBase& p, const FourMomentum& v, bool sign=false) {
207 return deltaPhi(p.momentum(), v, sign);
208 }
209
210 inline double deltaPhi(const ParticleBase& p, const FourVector& v, bool sign=false) {
211 return deltaPhi(p.momentum(), v, sign);
212 }
213
214 inline double deltaPhi(const ParticleBase& p, const Vector3& v, bool sign=false) {
215 return deltaPhi(p.momentum(), v, sign);
216 }
217
218 inline double deltaPhi(const ParticleBase& p, double phi, bool sign=false) {
219 return deltaPhi(p.momentum(), phi, sign);
220 }
221
222 inline double deltaPhi(const FourMomentum& v, const ParticleBase& p, bool sign=false) {
223 return deltaPhi(v, p.momentum(), sign);
224 }
225
226 inline double deltaPhi(const FourVector& v, const ParticleBase& p, bool sign=false) {
227 return deltaPhi(v, p.momentum(), sign);
228 }
229
230 inline double deltaPhi(const Vector3& v, const ParticleBase& p, bool sign=false) {
231 return deltaPhi(v, p.momentum(), sign);
232 }
233
234 inline double deltaPhi(double phi, const ParticleBase& p, bool sign=false) {
235 return deltaPhi(phi, p.momentum(), sign);
236 }
237
238
239 inline double deltaEta(const ParticleBase& p1, const ParticleBase& p2) {
240 return deltaEta(p1.momentum(), p2.momentum());
241 }
242
243 inline double deltaEta(const ParticleBase& p, const FourMomentum& v) {
244 return deltaEta(p.momentum(), v);
245 }
246
247 inline double deltaEta(const ParticleBase& p, const FourVector& v) {
248 return deltaEta(p.momentum(), v);
249 }
250
251 inline double deltaEta(const ParticleBase& p, const Vector3& v) {
252 return deltaEta(p.momentum(), v);
253 }
254
255 inline double deltaEta(const ParticleBase& p, double eta) {
256 return deltaEta(p.momentum(), eta);
257 }
258
259 inline double deltaEta(const FourMomentum& v, const ParticleBase& p) {
260 return deltaEta(v, p.momentum());
261 }
262
263 inline double deltaEta(const FourVector& v, const ParticleBase& p) {
264 return deltaEta(v, p.momentum());
265 }
266
267 inline double deltaEta(const Vector3& v, const ParticleBase& p) {
268 return deltaEta(v, p.momentum());
269 }
270
271 inline double deltaEta(double eta, const ParticleBase& p) {
272 return deltaEta(eta, p.momentum());
273 }
274
275
276 inline double deltaRap(const ParticleBase& p1, const ParticleBase& p2) {
277 return deltaRap(p1.momentum(), p2.momentum());
278 }
279
280 inline double deltaRap(const ParticleBase& p, const FourMomentum& v) {
281 return deltaRap(p.momentum(), v);
282 }
283
284 inline double deltaRap(const ParticleBase& p, double y) {
285 return deltaRap(p.momentum(), y);
286 }
287
288 inline double deltaRap(const FourMomentum& v, const ParticleBase& p) {
289 return deltaRap(v, p.momentum());
290 }
291
292 inline double deltaRap(double y, const ParticleBase& p) {
293 return deltaRap(y, p.momentum());
294 }
295
297
298
299}
300
301#endif
Specialized version of the FourVector with momentum/energy functionality.
Definition Vector4.hh:327
double p2() const
Get the modulus-squared of the 3-momentum.
Definition Vector4.hh:620
double E2() const
Get energy-squared .
Definition Vector4.hh:574
double mass() const
Get the mass (the Lorentz self-invariant).
Definition Vector4.hh:595
double rapidity() const
Calculate the rapidity.
Definition Vector4.hh:626
double p() const
Get the modulus of the 3-momentum.
Definition Vector4.hh:615
double pt() const
Calculate the transverse momentum .
Definition Vector4.hh:668
double Et() const
Calculate the transverse energy .
Definition Vector4.hh:677
double Et2() const
Calculate the transverse energy .
Definition Vector4.hh:673
double pt2() const
Calculate the squared transverse momentum .
Definition Vector4.hh:659
Vector3 pTvec() const
Calculate the transverse momentum vector .
Definition Vector4.hh:646
Vector3 ptvec() const
Synonym for pTvec.
Definition Vector4.hh:650
double mass2() const
Get the squared mass (the Lorentz self-invariant).
Definition Vector4.hh:606
double absrap() const
Absolute rapidity.
Definition Vector4.hh:641
double E() const
Get energy (time component of momentum).
Definition Vector4.hh:572
double absrapidity() const
Absolute rapidity.
Definition Vector4.hh:637
Specialisation of VectorN to a general (non-momentum) Lorentz 4-vector.
Definition Vector4.hh:30
Vector3 vector3() const
Get the spatial part of the 4-vector as a 3-vector.
Definition Vector4.hh:184
double angle(const FourVector &v) const
Angle between this vector and another.
Definition Vector4.hh:102
double phi(const PhiMapping mapping=ZERO_2PI) const
Synonym for azimuthalAngle.
Definition Vector4.hh:156
double abseta() const
Get the directly (alias).
Definition Vector4.hh:181
double azimuthalAngle(const PhiMapping mapping=ZERO_2PI) const
Angle subtended by the 3-vector's projection in x-y and the x-axis.
Definition Vector4.hh:152
double dot(const FourVector &v) const
Contract two 4-vectors, with metric signature (+ - - -).
Definition Vector4.hh:205
double eta() const
Synonym for pseudorapidity.
Definition Vector4.hh:174
double theta() const
Synonym for polarAngle.
Definition Vector4.hh:165
double polarAngle() const
Angle subtended by the 3-vector and the z-axis.
Definition Vector4.hh:161
double abspseudorapidity() const
Get the directly.
Definition Vector4.hh:179
Base class for particle-like things like Particle and Jet.
Definition ParticleBase.hh:13
double py() const
y component of momentum.
Definition ParticleBase.hh:124
double polarAngle() const
Angle subtended by the 3-vector and the z-axis.
Definition ParticleBase.hh:136
const FourMomentum & p4() const
Get the equivalent momentum four-vector (const) (alias).
Definition ParticleBase.hh:41
const FourMomentum & mom() const
Get the equivalent momentum four-vector (const) (alias).
Definition ParticleBase.hh:39
double dot(const ParticleBase &v) const
Lorentz dot product between this 4-vector and another.
Definition ParticleBase.hh:148
double pT() const
Get the directly (alias).
Definition ParticleBase.hh:65
double absrap() const
Get the directly (alias).
Definition ParticleBase.hh:102
double abspseudorapidity() const
Get the directly.
Definition ParticleBase.hh:91
double angle(const ParticleBase &v) const
Angle between this vector and another.
Definition ParticleBase.hh:141
double dot(const FourVector &v) const
Angle between this 4-vector and another.
Definition ParticleBase.hh:150
double pT2() const
Get the directly (alias).
Definition ParticleBase.hh:72
Vector3 ptvec() const
Get the transverse 3-momentum directly.
Definition ParticleBase.hh:117
double mass2() const
Get the mass**2 directly.
Definition ParticleBase.hh:84
double perp() const
Get the directly (alias).
Definition ParticleBase.hh:67
virtual const FourMomentum & momentum() const =0
Get the equivalent momentum four-vector (const).
double phi(const PhiMapping mapping=ZERO_2PI) const
Get the directly.
Definition ParticleBase.hh:107
double p() const
Get the 3-momentum magnitude directly.
Definition ParticleBase.hh:112
double energy2() const
Get the energy-squared (alias).
Definition ParticleBase.hh:60
ParticleBase()
Default constructor.
Definition ParticleBase.hh:17
double abseta() const
Get the directly (alias).
Definition ParticleBase.hh:93
double pt2() const
Get the directly.
Definition ParticleBase.hh:70
ThreeMomentum p3() const
Get the 3-momentum directly.
Definition ParticleBase.hh:110
double theta() const
Synonym for polarAngle.
Definition ParticleBase.hh:138
double perp2() const
Get the directly (alias).
Definition ParticleBase.hh:74
double mass() const
Get the mass directly.
Definition ParticleBase.hh:82
double pz() const
z component of momentum.
Definition ParticleBase.hh:126
double pt() const
Get the directly.
Definition ParticleBase.hh:63
double Et2() const
Get the directly.
Definition ParticleBase.hh:79
double rap() const
Get the directly (alias).
Definition ParticleBase.hh:98
double pz2() const
z component of momentum, squared.
Definition ParticleBase.hh:133
double px() const
x component of momentum.
Definition ParticleBase.hh:122
double eta() const
Get the directly (alias).
Definition ParticleBase.hh:89
double Et() const
Get the directly.
Definition ParticleBase.hh:77
double rapidity() const
Get the directly.
Definition ParticleBase.hh:96
Vector3 pTvec() const
Get the transverse 3-momentum directly.
Definition ParticleBase.hh:119
virtual ~ParticleBase()
Virtual destructor.
Definition ParticleBase.hh:20
double pseudorapidity() const
Get the directly.
Definition ParticleBase.hh:87
double angle(const FourVector &v) const
Angle between this vector and another.
Definition ParticleBase.hh:143
double E() const
Get the energy directly.
Definition ParticleBase.hh:53
double absrapidity() const
Get the directly.
Definition ParticleBase.hh:100
double py2() const
y component of momentum, squared.
Definition ParticleBase.hh:131
double energy() const
Get the energy directly (alias).
Definition ParticleBase.hh:55
double azimuthalAngle(const PhiMapping mapping=ZERO_2PI) const
Azimuthal angle .
Definition ParticleBase.hh:105
double px2() const
x component of momentum, squared.
Definition ParticleBase.hh:129
double angle(const Vector3 &v3) const
Angle between this vector and another (3-vector).
Definition ParticleBase.hh:145
double p2() const
Get the 3-momentum magnitude-squared directly.
Definition ParticleBase.hh:114
double E2() const
Get the energy-squared.
Definition ParticleBase.hh:58
Specialized version of the ThreeVector with momentum functionality.
Definition Vector3.hh:349
Three-dimensional specialisation of Vector.
Definition Vector3.hh:40
double eta(const ParticleBase &p)
Unbound function access to eta.
Definition ParticleBaseUtils.hh:665
double p(const ParticleBase &p)
Unbound function access to p.
Definition ParticleBaseUtils.hh:653
Definition MC_CENT_PPB_Projections.hh:10
constexpr std::enable_if_t< std::is_arithmetic_v< NUM >, int > sign(NUM val)
Find the sign of a number.
Definition MathUtils.hh:275
double deltaR(double rap1, double phi1, double rap2, double phi2)
Definition MathUtils.hh:708
double deltaPhi(double phi1, double phi2, bool sign=false)
Calculate the difference between two angles in radians.
Definition MathUtils.hh:678
double deltaEta(double eta1, double eta2, bool sign=false)
Definition MathUtils.hh:686
PhiMapping
Enum for range of to be mapped into.
Definition MathConstants.hh:49
RapScheme
Enum for rapidity variable to be used in calculating , applying rapidity cuts, etc.
Definition MathConstants.hh:46
double deltaRap(double y1, double y2, bool sign=false)
Definition MathUtils.hh:694