File indexing completed on 2025-05-12 09:05:02
0001
0002 #ifndef RIVET_DISKinematics_HH
0003 #define RIVET_DISKinematics_HH
0004
0005 #include "Rivet/Particle.hh"
0006 #include "Rivet/Event.hh"
0007 #include "Rivet/Projection.hh"
0008 #include "Rivet/Projections/DISLepton.hh"
0009 #include "Rivet/Projections/Beam.hh"
0010
0011 namespace Rivet {
0012
0013
0014
0015 enum class DISFrame { HCM, XCM, BREIT, LAB };
0016
0017
0018
0019 class DISKinematics : public Projection {
0020 public:
0021
0022
0023 DISKinematics(const DISLepton& lepton=DISLepton())
0024 : _theQ2(-1.0), _theW2(-1.0), _theX(-1.0), _theY(-1.0), _theS(-1.0), _theGH(-1.0)
0025 {
0026 setName("DISKinematics");
0027
0028 declare(Beam(), "Beam");
0029 declare(lepton, "Lepton");
0030 }
0031
0032
0033 RIVET_DEFAULT_PROJ_CLONE(DISKinematics);
0034
0035
0036 using Projection::operator =;
0037
0038
0039 protected:
0040
0041
0042 virtual void project(const Event& e);
0043
0044
0045 virtual CmpState compare(const Projection& p) const;
0046
0047
0048 public:
0049
0050
0051
0052
0053
0054 double Q2() const { return _theQ2; }
0055
0056
0057 double W2() const { return _theW2; }
0058
0059
0060 double x() const { return _theX; }
0061
0062
0063 double y() const { return _theY; }
0064
0065
0066 double s() const { return _theS; }
0067
0068
0069 double gammahad() const { return _theGH; }
0070
0071
0072
0073
0074 const LorentzTransform& boostHCM() const {
0075 return _hcm;
0076 }
0077
0078
0079 const LorentzTransform& boostBreit() const {
0080 return _breit;
0081 }
0082
0083
0084 const Particle& beamHadron() const {
0085 return _inHadron;
0086 }
0087
0088
0089 const Particle& beamLepton() const {
0090 return _inLepton;
0091 }
0092
0093
0094 const Particle& scatteredLepton() const {
0095 return _outLepton;
0096 }
0097
0098
0099
0100
0101 int orientation() const {
0102 return sign(_inHadron.pz());
0103 }
0104
0105
0106 protected:
0107
0108
0109 double _theQ2;
0110
0111
0112 double _theW2;
0113
0114
0115 double _theX;
0116
0117
0118 double _theY;
0119
0120
0121 double _theS;
0122
0123 double _theGH;
0124
0125
0126
0127 Particle _inHadron, _inLepton, _outLepton;
0128
0129
0130 LorentzTransform _hcm;
0131
0132
0133 LorentzTransform _breit;
0134
0135 };
0136
0137
0138 }
0139
0140 #endif