rivet is hosted by Hepforge, IPPP Durham
Rivet 4.0.0
DISKinematics.hh
1// -*- C++ -*-
2#ifndef RIVET_DISKinematics_HH
3#define RIVET_DISKinematics_HH
4
5#include "Rivet/Particle.hh"
6#include "Rivet/Event.hh"
7#include "Rivet/Projection.hh"
8#include "Rivet/Projections/DISLepton.hh"
9#include "Rivet/Projections/Beam.hh"
10
11namespace Rivet {
12
13
15 enum class DISFrame { HCM, XCM, BREIT, LAB };
16
17
19 class DISKinematics : public Projection {
20 public:
21
24 : _theQ2(-1.0), _theW2(-1.0), _theX(-1.0), _theY(-1.0), _theS(-1.0), _theGH(-1.0)
25 {
26 setName("DISKinematics");
27 //addPdgIdPair(ANY, hadid);
28 declare(Beam(), "Beam");
29 declare(lepton, "Lepton");
30 }
31
34
36 using Projection::operator =;
37
38
39 protected:
40
42 virtual void project(const Event& e);
43
45 virtual CmpState compare(const Projection& p) const;
46
47
48 public:
49
54 double Q2() const { return _theQ2; }
55
57 double W2() const { return _theW2; }
58
60 double x() const { return _theX; }
61
63 double y() const { return _theY; }
64
66 double s() const { return _theS; }
67
69 double gammahad() const { return _theGH; }
70
71
72
74 const LorentzTransform& boostHCM() const {
75 return _hcm;
76 }
77
80 return _breit;
81 }
82
84 const Particle& beamHadron() const {
85 return _inHadron;
86 }
87
89 const Particle& beamLepton() const {
90 return _inLepton;
91 }
92
94 const Particle& scatteredLepton() const {
95 return _outLepton;
96 }
97
101 int orientation() const {
102 return sign(_inHadron.pz());
103 }
104
105
106 protected:
107
109 double _theQ2;
110
112 double _theW2;
113
115 double _theX;
116
118 double _theY;
119
121 double _theS;
123 double _theGH;
124
125
127 Particle _inHadron, _inLepton, _outLepton;
128
130 LorentzTransform _hcm;
131
133 LorentzTransform _breit;
134
135 };
136
137
138}
139
140#endif
Project out the incoming beams.
Definition Beam.hh:15
Get the DIS kinematic variables and relevant boosts for an event.
Definition DISKinematics.hh:19
virtual CmpState compare(const Projection &p) const
Compare with other projections.
const LorentzTransform & boostBreit() const
The LorentzRotation needed to boost a particle to the hadronic Breit frame.
Definition DISKinematics.hh:79
RIVET_DEFAULT_PROJ_CLONE(DISKinematics)
Clone on the heap.
int orientation() const
1/-1 multiplier indicating (respectively) whether the event has conventional orientation or not
Definition DISKinematics.hh:101
double y() const
The inelasticity .
Definition DISKinematics.hh:63
double Q2() const
The , i.e. the virtuality of the DIS photon.
Definition DISKinematics.hh:54
double W2() const
The , i.e. the squared CoM energy of the DIS-photon+hadron system.
Definition DISKinematics.hh:57
const Particle & beamHadron() const
The incoming hadron beam particle.
Definition DISKinematics.hh:84
double x() const
The Bjorken .
Definition DISKinematics.hh:60
const Particle & beamLepton() const
The incoming lepton beam particle.
Definition DISKinematics.hh:89
DISKinematics(const DISLepton &lepton=DISLepton())
The default constructor.
Definition DISKinematics.hh:23
virtual void project(const Event &e)
Perform the projection operation on the supplied event.
const Particle & scatteredLepton() const
The scattered DIS lepton.
Definition DISKinematics.hh:94
double gammahad() const
The angle .
Definition DISKinematics.hh:69
const LorentzTransform & boostHCM() const
The LorentzRotation needed to boost a particle to the hadronic CM frame.
Definition DISKinematics.hh:74
double s() const
The centre of mass energy .
Definition DISKinematics.hh:66
Get the incoming and outgoing leptons in a DIS event.
Definition DISLepton.hh:18
Representation of a HepMC event, and enabler of Projection caching.
Definition Event.hh:22
Object implementing Lorentz transform calculations and boosts.
Definition LorentzTrans.hh:21
Particle representation, either from a HepMC::GenEvent or reconstructed.
Definition Particle.hh:45
const PROJ & declare(const PROJ &proj, const std::string &name) const
Register a contained projection (user-facing version)
Definition ProjectionApplier.hh:175
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:148
Definition MC_CENT_PPB_Projections.hh:10
constexpr std::enable_if< std::is_arithmetic< NUM >::value, int >::type sign(NUM val)
Find the sign of a number.
Definition MathUtils.hh:265
DISFrame
Type of DIS boost to apply.
Definition DISKinematics.hh:15