rivet is hosted by Hepforge, IPPP Durham
Rivet  2.7.0
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 
9 namespace Rivet {
10 
11 
13  class ParticleBase {
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 
34 
35 
37  virtual const FourMomentum& momentum() const = 0;
39  const FourMomentum& mom() const { return momentum(); };
40 
42  operator const FourMomentum& () const { return momentum(); }
43 
45 
46 
48 
49 
51  double E() const { return momentum().E(); }
53  double energy() const { return momentum().E(); }
54 
56  double E2() const { return momentum().E2(); }
58  double energy2() const { return momentum().E2(); }
59 
61  double pt() const { return momentum().pt(); }
63  double pT() const { return pt(); }
65  double perp() const { return pt(); }
66 
68  double pt2() const { return momentum().pt2(); }
70  double pT2() const { return pt2(); }
72  double perp2() const { return pt2(); }
73 
75  double Et() const { return momentum().Et(); }
77  double Et2() const { return momentum().Et2(); }
78 
80  double mass() const { return momentum().mass(); }
82  double mass2() const { return momentum().mass2(); }
83 
85  double pseudorapidity() const { return momentum().eta(); }
87  double eta() const { return momentum().eta(); }
89  double abspseudorapidity() const { return momentum().abspseudorapidity(); }
91  double abseta() const { return momentum().abseta(); }
92 
94  double rapidity() const { return momentum().rapidity(); }
96  double rap() const { return momentum().rapidity(); }
98  double absrapidity() const { return momentum().absrapidity(); }
100  double absrap() const { return momentum().absrap(); }
101 
103  double azimuthalAngle(const PhiMapping mapping=ZERO_2PI) const { return momentum().azimuthalAngle(mapping); }
105  double phi(const PhiMapping mapping=ZERO_2PI) const { return momentum().phi(mapping); }
106 
108  Vector3 p3() const { return momentum().vector3(); }
110  double p() const { return momentum().p(); }
112  double p2() const { return momentum().p2(); }
113 
115  Vector3 ptvec() const { return momentum().ptvec(); }
117  Vector3 pTvec() const { return momentum().pTvec(); }
118 
120  double px() const { return momentum().x(); }
122  double py() const { return momentum().y(); }
124  double pz() const { return momentum().z(); }
125 
127  double px2() const { return momentum().x2(); }
129  double py2() const { return momentum().y2(); }
131  double pz2() const { return momentum().z2(); }
132 
134  double polarAngle() const { return momentum().polarAngle(); }
136  double theta() const { return momentum().theta(); }
137 
139  double angle(const ParticleBase& v) const { return momentum().angle(v.momentum()); }
141  double angle(const FourVector& v) const { return momentum().angle(v); }
143  double angle(const Vector3& v3) const { return momentum().angle(v3); }
144 
146 
147  };
148 
149 
151 
152 
153  inline double deltaR(const ParticleBase& p1, const ParticleBase& p2,
154  RapScheme scheme = PSEUDORAPIDITY) {
155  return deltaR(p1.momentum(), p2.momentum(), scheme);
156  }
157 
158  inline double deltaR(const ParticleBase& p, const FourMomentum& v,
159  RapScheme scheme = PSEUDORAPIDITY) {
160  return deltaR(p.momentum(), v, scheme);
161  }
162 
163  inline double deltaR(const ParticleBase& p, const FourVector& v,
164  RapScheme scheme = PSEUDORAPIDITY) {
165  return deltaR(p.momentum(), v, scheme);
166  }
167 
168  inline double deltaR(const ParticleBase& p, const Vector3& v) {
169  return deltaR(p.momentum(), v);
170  }
171 
172  inline double deltaR(const ParticleBase& p, double eta, double phi) {
173  return deltaR(p.momentum(), eta, phi);
174  }
175 
176  inline double deltaR(const FourMomentum& v, const ParticleBase& p,
177  RapScheme scheme = PSEUDORAPIDITY) {
178  return deltaR(v, p.momentum(), scheme);
179  }
180 
181  inline double deltaR(const FourVector& v, const ParticleBase& p,
182  RapScheme scheme = PSEUDORAPIDITY) {
183  return deltaR(v, p.momentum(), scheme);
184  }
185 
186  inline double deltaR(const Vector3& v, const ParticleBase& p) {
187  return deltaR(v, p.momentum());
188  }
189 
190  inline double deltaR(double eta, double phi, const ParticleBase& p) {
191  return deltaR(eta, phi, p.momentum());
192  }
193 
194 
195  inline double deltaPhi(const ParticleBase& p1, const ParticleBase& p2) {
196  return deltaPhi(p1.momentum(), p2.momentum());
197  }
198 
199  inline double deltaPhi(const ParticleBase& p, const FourMomentum& v) {
200  return deltaPhi(p.momentum(), v);
201  }
202 
203  inline double deltaPhi(const ParticleBase& p, const FourVector& v) {
204  return deltaPhi(p.momentum(), v);
205  }
206 
207  inline double deltaPhi(const ParticleBase& p, const Vector3& v) {
208  return deltaPhi(p.momentum(), v);
209  }
210 
211  inline double deltaPhi(const ParticleBase& p, double phi) {
212  return deltaPhi(p.momentum(), phi);
213  }
214 
215  inline double deltaPhi(const FourMomentum& v, const ParticleBase& p) {
216  return deltaPhi(v, p.momentum());
217  }
218 
219  inline double deltaPhi(const FourVector& v, const ParticleBase& p) {
220  return deltaPhi(v, p.momentum());
221  }
222 
223  inline double deltaPhi(const Vector3& v, const ParticleBase& p) {
224  return deltaPhi(v, p.momentum());
225  }
226 
227  inline double deltaPhi(double phi, const ParticleBase& p) {
228  return deltaPhi(phi, p.momentum());
229  }
230 
231 
232  inline double deltaEta(const ParticleBase& p1, const ParticleBase& p2) {
233  return deltaEta(p1.momentum(), p2.momentum());
234  }
235 
236  inline double deltaEta(const ParticleBase& p, const FourMomentum& v) {
237  return deltaEta(p.momentum(), v);
238  }
239 
240  inline double deltaEta(const ParticleBase& p, const FourVector& v) {
241  return deltaEta(p.momentum(), v);
242  }
243 
244  inline double deltaEta(const ParticleBase& p, const Vector3& v) {
245  return deltaEta(p.momentum(), v);
246  }
247 
248  inline double deltaEta(const ParticleBase& p, double eta) {
249  return deltaEta(p.momentum(), eta);
250  }
251 
252  inline double deltaEta(const FourMomentum& v, const ParticleBase& p) {
253  return deltaEta(v, p.momentum());
254  }
255 
256  inline double deltaEta(const FourVector& v, const ParticleBase& p) {
257  return deltaEta(v, p.momentum());
258  }
259 
260  inline double deltaEta(const Vector3& v, const ParticleBase& p) {
261  return deltaEta(v, p.momentum());
262  }
263 
264  inline double deltaEta(double eta, const ParticleBase& p) {
265  return deltaEta(eta, p.momentum());
266  }
267 
268 
269  inline double deltaRap(const ParticleBase& p1, const ParticleBase& p2) {
270  return deltaRap(p1.momentum(), p2.momentum());
271  }
272 
273  inline double deltaRap(const ParticleBase& p, const FourMomentum& v) {
274  return deltaRap(p.momentum(), v);
275  }
276 
277  inline double deltaRap(const ParticleBase& p, double y) {
278  return deltaRap(p.momentum(), y);
279  }
280 
281  inline double deltaRap(const FourMomentum& v, const ParticleBase& p) {
282  return deltaRap(v, p.momentum());
283  }
284 
285  inline double deltaRap(double y, const ParticleBase& p) {
286  return deltaRap(y, p.momentum());
287  }
288 
290 
291 
292 }
293 
294 #endif
Definition: ALICE_2010_I880049.cc:13
double abseta() const
Get the directly (alias).
Definition: Vector4.hh:159
double Et2() const
Get the directly.
Definition: ParticleBase.hh:77
double energy() const
Get the energy directly (alias).
Definition: ParticleBase.hh:53
double eta() const
Synonym for pseudorapidity.
Definition: Vector4.hh:152
double absrapidity() const
Get the directly.
Definition: ParticleBase.hh:98
double pz() const
z component of momentum.
Definition: ParticleBase.hh:124
double absrap() const
Absolute rapidity.
Definition: Vector4.hh:605
virtual const FourMomentum & momentum() const =0
Get equivalent single momentum four-vector (const).
double pt2() const
Calculate the squared transverse momentum .
Definition: Vector4.hh:623
double azimuthalAngle(const PhiMapping mapping=ZERO_2PI) const
Angle subtended by the 3-vector&#39;s projection in x-y and the x-axis.
Definition: Vector4.hh:130
const FourMomentum & mom() const
Get equivalent single momentum four-vector (const) (alias).
Definition: ParticleBase.hh:39
double Et() const
Calculate the transverse energy .
Definition: Vector4.hh:641
double abseta() const
Get the directly (alias).
Definition: ParticleBase.hh:91
Vector3 ptvec() const
Synonym for pTvec.
Definition: Vector4.hh:614
double deltaRap(double y1, double y2)
Definition: MathUtils.hh:584
double absrapidity() const
Absolute rapidity.
Definition: Vector4.hh:601
double p2() const
Get the modulus-squared of the 3-momentum.
Definition: Vector4.hh:586
double mass2() const
Get the squared mass (the Lorentz self-invariant).
Definition: Vector4.hh:572
double E2() const
Get the energy-squared.
Definition: ParticleBase.hh:56
double abspseudorapidity() const
Get the directly.
Definition: Vector4.hh:157
double rapidity() const
Calculate the rapidity.
Definition: Vector4.hh:592
double mass2() const
Get the mass**2 directly.
Definition: ParticleBase.hh:82
double theta() const
Synonym for polarAngle.
Definition: ParticleBase.hh:136
double mass() const
Get the mass directly.
Definition: ParticleBase.hh:80
double phi(const PhiMapping mapping=ZERO_2PI) const
Get the directly.
Definition: ParticleBase.hh:105
double E2() const
Get energy-squared .
Definition: Vector4.hh:540
double E() const
Get the energy directly.
Definition: ParticleBase.hh:51
double px2() const
x component of momentum, squared.
Definition: ParticleBase.hh:127
double pt2() const
Get the directly.
Definition: ParticleBase.hh:68
double p2() const
Get the 3-momentum magnitude-squared directly.
Definition: ParticleBase.hh:112
PhiMapping
Enum for range of to be mapped into.
Definition: MathHeader.hh:31
double azimuthalAngle(const PhiMapping mapping=ZERO_2PI) const
Azimuthal angle .
Definition: ParticleBase.hh:103
double Et() const
Get the directly.
Definition: ParticleBase.hh:75
virtual ~ParticleBase()
Virtual destructor.
Definition: ParticleBase.hh:20
double pseudorapidity() const
Get the directly.
Definition: ParticleBase.hh:85
double deltaPhi(double phi1, double phi2, bool sign=false)
Calculate the difference between two angles in radians.
Definition: MathUtils.hh:569
double angle(const ParticleBase &v) const
Angle between this vector and another.
Definition: ParticleBase.hh:139
double rap() const
Get the directly (alias).
Definition: ParticleBase.hh:96
double mass() const
Get the mass (the Lorentz self-invariant).
Definition: Vector4.hh:561
Vector3 pTvec() const
Get the transverse 3-momentum directly.
Definition: ParticleBase.hh:117
double pT2() const
Get the directly (alias).
Definition: ParticleBase.hh:70
Vector3 ptvec() const
Get the transverse 3-momentum directly.
Definition: ParticleBase.hh:115
Specialisation of VectorN to a general (non-momentum) Lorentz 4-vector.
Definition: Vector4.hh:22
double p() const
Get the modulus of the 3-momentum.
Definition: Vector4.hh:581
ParticleBase()
Default constructor.
Definition: ParticleBase.hh:17
Vector3 p3() const
Get the 3-momentum directly.
Definition: ParticleBase.hh:108
double pT() const
Get the directly (alias).
Definition: ParticleBase.hh:63
double polarAngle() const
Angle subtended by the 3-vector and the z-axis.
Definition: ParticleBase.hh:134
double deltaEta(double eta1, double eta2)
Definition: MathUtils.hh:577
Base class for particle-like things like Particle and Jet.
Definition: ParticleBase.hh:13
double deltaR(double rap1, double phi1, double rap2, double phi2)
Definition: MathUtils.hh:597
double E() const
Get energy (time component of momentum).
Definition: Vector4.hh:538
double angle(const Vector3 &v3) const
Angle between this vector and another (3-vector)
Definition: ParticleBase.hh:143
double absrap() const
Get the directly (alias).
Definition: ParticleBase.hh:100
RapScheme
Enum for rapidity variable to be used in calculating , applying rapidity cuts, etc.
Definition: MathHeader.hh:28
double pt() const
Calculate the transverse momentum .
Definition: Vector4.hh:632
Vector3 vector3() const
Get the spatial part of the 4-vector as a 3-vector.
Definition: Vector4.hh:162
double perp2() const
Get the directly (alias).
Definition: ParticleBase.hh:72
double rapidity() const
Get the directly.
Definition: ParticleBase.hh:94
double energy2() const
Get the energy-squared (alias).
Definition: ParticleBase.hh:58
double pz2() const
z component of momentum, squared.
Definition: ParticleBase.hh:131
double angle(const FourVector &v) const
Angle between this vector and another.
Definition: ParticleBase.hh:141
double px() const
x component of momentum.
Definition: ParticleBase.hh:120
double eta() const
Get the directly (alias).
Definition: ParticleBase.hh:87
double angle(const FourVector &v) const
Angle between this vector and another.
Definition: Vector4.hh:80
double theta() const
Synonym for polarAngle.
Definition: Vector4.hh:143
double polarAngle() const
Angle subtended by the 3-vector and the z-axis.
Definition: Vector4.hh:139
Vector3 pTvec() const
Calculate the transverse momentum vector .
Definition: Vector4.hh:610
double phi(const PhiMapping mapping=ZERO_2PI) const
Synonym for azimuthalAngle.
Definition: Vector4.hh:134
double py2() const
y component of momentum, squared.
Definition: ParticleBase.hh:129
Three-dimensional specialisation of Vector.
Definition: Vector3.hh:26
double perp() const
Get the directly (alias).
Definition: ParticleBase.hh:65
double pt() const
Get the directly.
Definition: ParticleBase.hh:61
Specialized version of the FourVector with momentum/energy functionality.
Definition: Vector4.hh:301
double Et2() const
Calculate the transverse energy .
Definition: Vector4.hh:637
double p() const
Get the 3-momentum magnitude directly.
Definition: ParticleBase.hh:110
double py() const
y component of momentum.
Definition: ParticleBase.hh:122
double abspseudorapidity() const
Get the directly.
Definition: ParticleBase.hh:89