rivet is hosted by Hepforge, IPPP Durham
Rivet 3.1.6
Beam.hh
1// -*- C++ -*-
2#ifndef RIVET_Beam_HH
3#define RIVET_Beam_HH
4
5#include "Rivet/Projection.hh"
6#include "Rivet/Event.hh"
7#include "Rivet/Particle.hh"
8#include "Rivet/Math/LorentzTrans.hh"
9
10namespace Rivet {
11
12
14
15
18
21 inline PdgIdPair beamIds(const ParticlePair& beams) { return pids(beams); }
22
25 inline PdgIdPair beamIds(const Event& e) { return pids(beams(e)); }
26
27
29 double sqrtS(const FourMomentum& pa, const FourMomentum& pb);
30
32 inline double sqrtS(const ParticlePair& beams) {
33 return sqrtS(beams.first.momentum(), beams.second.momentum());
34 }
35
37 inline double sqrtS(const Event& e) { return sqrtS(beams(e)); }
38
39
42 double asqrtS(const FourMomentum& pa, const FourMomentum& pb);
43
46 double asqrtS(const ParticlePair& beams);
47
50 inline double asqrtS(const Event& e) { return asqrtS(beams(e)); }
51
52
54 inline FourMomentum cmsBoostVec(const FourMomentum& pa, const FourMomentum& pb) {
55 return pa + pb;
56 }
57
60 return cmsBoostVec(beams.first, beams.second);
61 }
62
65
68
69
72
75 return cmsBetaVec(beams.first, beams.second);
76 }
77
78
82
86
87
90
93 return cmsGammaVec(beams.first, beams.second);
94 }
95
96
100
104
105
108
111 return cmsTransform(beams.first, beams.second);
112 }
113
114
118
122
124
125
126
127
129 class Beam : public Projection {
130 public:
131
133 Beam() { setName("Beam"); }
134
137
138
140
141
143 const ParticlePair& beams() const { return _theBeams; }
144
147 PdgIdPair beamIds() const { return pids(beams()); }
148
150 double sqrtS() const { return Rivet::sqrtS(beams()); }
151
154
157
160
163
165
166
168
169
171 double asqrtS() const { return Rivet::asqrtS(beams()); }
172
175
178
181
183
184
186 FourVector pv() const;
187
188
190 virtual void project(const Event& e);
191
192
193 protected:
194
196 ParticlePair _theBeams;
197
198 private:
199
201 virtual CmpState compare(const Projection&) const { return CmpState::EQ; }
202
203 };
204
205
206}
207
208#endif
Project out the incoming beams.
Definition: Beam.hh:129
LorentzTransform acmsTransform() const
Get the Lorentz transform to the per-nucleon beam centre-of-mass.
Definition: Beam.hh:180
Vector3 cmsGammaVec() const
Get the gamma factor vector for the Lorentz boost to the beam centre-of-mass.
Definition: Beam.hh:162
Vector3 acmsGammaVec() const
Get the Lorentz boost to the per-nucleon beam centre-of-mass.
Definition: Beam.hh:177
double sqrtS() const
Get centre of mass energy, .
Definition: Beam.hh:150
Vector3 cmsBetaVec() const
Get the beta factor vector for the Lorentz boost to the beam centre-of-mass.
Definition: Beam.hh:159
LorentzTransform cmsTransform() const
Get the Lorentz transform to the beam centre-of-mass.
Definition: Beam.hh:156
double asqrtS() const
Get per-nucleon centre of mass energy, .
Definition: Beam.hh:171
Beam()
Default (and only) constructor.
Definition: Beam.hh:133
DEFAULT_RIVET_PROJ_CLONE(Beam)
Clone on the heap.
Vector3 acmsBetaVec() const
Get the Lorentz boost to the per-nucleon beam centre-of-mass.
Definition: Beam.hh:174
PdgIdPair beamIds() const
Definition: Beam.hh:147
virtual void project(const Event &e)
Project on to the Event.
const ParticlePair & beams() const
The pair of beam particles in the current collision.
Definition: Beam.hh:143
FourVector pv() const
Get the beam interaction primary vertex (PV) position.
FourMomentum cmsBoostVec() const
Get the Lorentz boost to the beam centre-of-mass.
Definition: Beam.hh:153
Representation of a HepMC event, and enabler of Projection caching.
Definition: Event.hh:22
Specialized version of the FourVector with momentum/energy functionality.
Definition: Vector4.hh:306
Specialisation of VectorN to a general (non-momentum) Lorentz 4-vector.
Definition: Vector4.hh:27
Object implementing Lorentz transform calculations and boosts.
Definition: LorentzTrans.hh:21
Base class for all Rivet projections.
Definition: Projection.hh:29
void setName(const std::string &name)
Used by derived classes to set their name.
Definition: Projection.hh:142
Three-dimensional specialisation of Vector.
Definition: Vector3.hh:40
PdgIdPair pids(const ParticlePair &pp)
Definition: ParticleUtils.hh:749
Definition: MC_Cent_pPb.hh:10
Vector3 cmsGammaVec(const FourMomentum &pa, const FourMomentum &pb)
Get the Lorentz boost to the beam centre-of-mass system (CMS) from a pair of beam momenta.
std::pair< Particle, Particle > ParticlePair
Typedef for a pair of Particle objects.
Definition: Particle.hh:42
double asqrtS(const FourMomentum &pa, const FourMomentum &pb)
FourMomentum cmsBoostVec(const FourMomentum &pa, const FourMomentum &pb)
Get the Lorentz boost to the beam centre-of-mass system (CMS) from a pair of beam momenta.
Definition: Beam.hh:54
FourMomentum acmsBoostVec(const FourMomentum &pa, const FourMomentum &pb)
Get the Lorentz boost to the beam centre-of-mass system (CMS) from a pair of beam momenta.
Vector3 acmsBetaVec(const FourMomentum &pa, const FourMomentum &pb)
Vector3 acmsGammaVec(const FourMomentum &pa, const FourMomentum &pb)
Vector3 cmsBetaVec(const FourMomentum &pa, const FourMomentum &pb)
Get the Lorentz boost to the beam centre-of-mass system (CMS) from a pair of beam momenta.
LorentzTransform acmsTransform(const FourMomentum &pa, const FourMomentum &pb)
LorentzTransform cmsTransform(const FourMomentum &pa, const FourMomentum &pb)
Get the Lorentz transformation to the beam centre-of-mass system (CMS) from a pair of beam momenta.
PdgIdPair beamIds(const ParticlePair &beams)
Definition: Beam.hh:21
ParticlePair beams(const Event &e)
Get beam particles from an event.
double sqrtS(const FourMomentum &pa, const FourMomentum &pb)
Get beam centre-of-mass energy from a pair of beam momenta.