Rivet  1.8.3
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 
9 namespace Rivet {
10 
11 
13 
14 
16  ParticlePair beams(const Event& e);
17 
19  PdgIdPair beamIds(const Event& e);
20 
23 
25  double sqrtS(const Event& e);
26 
28  double sqrtS(const ParticlePair& beams);
29 
31  double sqrtS(const FourMomentum& pa, const FourMomentum& pb);
32 
34 
35 
36 
37 
39  class Beam : public Projection {
40  public:
41 
43  Beam() {
44  setName("Beam");
45  }
46 
48  virtual const Projection* clone() const {
49  return new Beam(*this);
50  }
51 
52 
53  public:
54 
56  const ParticlePair& beams() const {
57  return _theBeams;
58  }
59 
61  const PdgIdPair beamIds() const {
62  return Rivet::beamIds(beams());
63  }
64 
66  double sqrtS() const;
67 
68 
69  public:
70 
72  virtual void project(const Event& e);
73 
74 
75  protected:
76 
78  virtual int compare(const Projection& UNUSED(p)) const {
79  return EQUIVALENT;
80  }
81 
82 
83  private:
84 
86  ParticlePair _theBeams;
87 
88  };
89 
90 
91 }
92 
93 #endif