rivet is hosted by Hepforge, IPPP Durham
Rivet  2.7.0
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 
10 namespace Rivet {
11 
12 
14 
15 
17  ParticlePair beams(const Event& e);
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 
59  inline FourMomentum cmsBoostVec(const ParticlePair& beams) {
60  return cmsBoostVec(beams.first, beams.second);
61  }
62 
64  FourMomentum acmsBoostVec(const FourMomentum& pa, const FourMomentum& pb);
65 
67  FourMomentum acmsBoostVec(const ParticlePair& beams);
68 
69 
71  Vector3 cmsBetaVec(const FourMomentum& pa, const FourMomentum& pb);
72 
74  inline Vector3 cmsBetaVec(const ParticlePair& beams) {
75  return cmsBetaVec(beams.first, beams.second);
76  }
77 
78 
81  Vector3 acmsBetaVec(const FourMomentum& pa, const FourMomentum& pb);
82 
85  Vector3 acmsBetaVec(const ParticlePair& beams);
86 
87 
89  Vector3 cmsGammaVec(const FourMomentum& pa, const FourMomentum& pb);
90 
92  inline Vector3 cmsGammaVec(const ParticlePair& beams) {
93  return cmsGammaVec(beams.first, beams.second);
94  }
95 
96 
99  Vector3 acmsGammaVec(const FourMomentum& pa, const FourMomentum& pb);
100 
103  Vector3 acmsGammaVec(const ParticlePair& beams);
104 
105 
108 
110  inline LorentzTransform cmsTransform(const ParticlePair& beams) {
111  return cmsTransform(beams.first, beams.second);
112  }
113 
114 
118 
121  LorentzTransform acmsTransform(const ParticlePair& beams);
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 
159  Vector3 cmsBetaVec() const { return Rivet::cmsBetaVec(beams()); }
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  private:
194 
196  virtual int compare(const Projection&) const { return EQUIVALENT; }
197 
199  ParticlePair _theBeams;
200 
201  };
202 
203 
204 }
205 
206 #endif
void setName(const std::string &name)
Used by derived classes to set their name.
Definition: Projection.hh:133
Definition: ALICE_2010_I880049.cc:13
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...
Definition: Beam.cc:66
double sqrtS() const
Get centre of mass energy, .
Definition: Beam.hh:150
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
ParticlePair beams(const Event &e)
Get beam particles from an event.
Definition: Beam.cc:9
Vector3 acmsBetaVec(const FourMomentum &pa, const FourMomentum &pb)
Definition: Beam.cc:72
virtual void project(const Event &e)
Project on to the Event.
Definition: Beam.cc:123
LorentzTransform cmsTransform() const
Get the Lorentz transform to the beam centre-of-mass.
Definition: Beam.hh:156
PdgIdPair pids(const ParticlePair &pp)
Definition: ParticleUtils.hh:735
double sqrtS(const FourMomentum &pa, const FourMomentum &pb)
Get beam centre-of-mass energy from a pair of beam momenta.
Definition: Beam.cc:35
double asqrtS() const
Get per-nucleon centre of mass energy, .
Definition: Beam.hh:171
const ParticlePair & beams() const
The pair of beam particles in the current collision.
Definition: Beam.hh:143
Vector3 acmsGammaVec(const FourMomentum &pa, const FourMomentum &pb)
Definition: Beam.cc:91
Beam()
Default (and only) constructor.
Definition: Beam.hh:133
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...
Definition: Beam.cc:84
Vector3 cmsBetaVec() const
Get the beta factor vector for the Lorentz boost to the beam centre-of-mass.
Definition: Beam.hh:159
Definition: Event.hh:22
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...
Definition: Beam.cc:55
FourVector pv() const
Get the beam interaction primary vertex (PV) position.
Definition: Beam.cc:129
double asqrtS(const FourMomentum &pa, const FourMomentum &pb)
Definition: Beam.cc:45
Vector3 acmsGammaVec() const
Get the Lorentz boost to the per-nucleon beam centre-of-mass.
Definition: Beam.hh:177
Object implementing Lorentz transform calculations and boosts.
Definition: LorentzTrans.hh:21
PdgIdPair beamIds(const ParticlePair &beams)
Definition: Beam.hh:21
FourMomentum cmsBoostVec() const
Get the Lorentz boost to the beam centre-of-mass.
Definition: Beam.hh:153
Specialisation of VectorN to a general (non-momentum) Lorentz 4-vector.
Definition: Vector4.hh:22
LorentzTransform acmsTransform(const FourMomentum &pa, const FourMomentum &pb)
Definition: Beam.cc:108
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...
Definition: Beam.cc:103
PdgIdPair beamIds() const
Definition: Beam.hh:147
Project out the incoming beams.
Definition: Beam.hh:129
Vector3 acmsBetaVec() const
Get the Lorentz boost to the per-nucleon beam centre-of-mass.
Definition: Beam.hh:174
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
Base class for all Rivet projections.
Definition: Projection.hh:29
Three-dimensional specialisation of Vector.
Definition: Vector3.hh:26
Specialized version of the FourVector with momentum/energy functionality.
Definition: Vector4.hh:301
DEFAULT_RIVET_PROJ_CLONE(Beam)
Clone on the heap.