eic-smear  1.0.3
A collection of ROOT classes for Monte Carlo events and a fast-smearing code simulating detector effects for the Electron-Ion Collider task force
Kinematics.h
Go to the documentation of this file.
1 
10 #ifndef INCLUDE_EICSMEAR_ERHIC_KINEMATICS_H_
11 #define INCLUDE_EICSMEAR_ERHIC_KINEMATICS_H_
12 
13 #include <list>
14 #include <vector>
15 
16 #include <Rtypes.h>
17 #include <TLorentzVector.h>
18 
22 
23 namespace erhic {
24 
25 class EventDis;
26 class VirtualParticle;
27 
31 struct DisKinematics : public TObject {
35  DisKinematics();
39  DisKinematics(double x, double y, double nu, double Q2, double W2);
40  Double32_t mX;
41  Double32_t mQ2;
42  Double32_t mW2;
43  Double32_t mNu;
44  Double32_t mY;
45 
46  ClassDef(erhic::DisKinematics, 1)
47 };
48 
53  public:
54  virtual ~KinematicsComputer() { }
55  virtual TObject* Calculate() = 0;
56  ClassDef(erhic::KinematicsComputer, 1)
57 };
58 
65  public:
70  explicit LeptonKinematicsComputer(const EventDis&);
71  virtual DisKinematics* Calculate();
72 
73  protected:
74  std::vector<const VirtualParticle*> mBeams;
75 
77 };
78 
87  public:
88  virtual ~JacquetBlondelComputer();
98  explicit JacquetBlondelComputer(const EventDis&);
99  virtual DisKinematics* Calculate();
100 
101  protected:
102  virtual Double_t ComputeY() const;
103  virtual Double_t ComputeQSquared() const;
104  virtual Double_t ComputeX() const;
106  const EventDis& mEvent;
108  std::vector<const VirtualParticle*> mParticles;
109 
110  ClassDef(erhic::JacquetBlondelComputer, 1)
111 };
112 
118  public:
119  virtual ~DoubleAngleComputer();
129  explicit DoubleAngleComputer(const EventDis&);
130  virtual DisKinematics* Calculate();
131 
132  protected:
133  const EventDis& mEvent;
137  virtual Double_t ComputeQuarkAngle() const;
138  virtual Double_t ComputeY() const;
139  virtual Double_t ComputeQSquared() const;
140  virtual Double_t ComputeX() const;
143  mutable Bool_t mHasChanged;
145  mutable Double_t mAngle;
146  std::vector<const VirtualParticle*> mParticles;
147 
148  ClassDef(erhic::DoubleAngleComputer, 1)
149 };
150 
151 } // namespace erhic
152 
153 #endif // INCLUDE_EICSMEAR_ERHIC_KINEMATICS_H_
erhic::DoubleAngleComputer::DoubleAngleComputer
DoubleAngleComputer(const EventDis &)
Initialise with the event to compute.
Definition: Kinematics.cxx:441
erhic::DoubleAngleComputer::mEvent
const EventDis & mEvent
Definition: Kinematics.h:133
erhic::JacquetBlondelComputer::~JacquetBlondelComputer
virtual ~JacquetBlondelComputer()
Definition: Kinematics.cxx:305
erhic::KinematicsComputer::Calculate
virtual TObject * Calculate()=0
erhic::LeptonKinematicsComputer::mBeams
std::vector< const VirtualParticle * > mBeams
Definition: Kinematics.h:74
erhic
Definition: EventDis.cxx:14
erhic::DisKinematics
A collection of DIS kinematic variables.
Definition: Kinematics.h:31
erhic::DoubleAngleComputer::mParticles
std::vector< const VirtualParticle * > mParticles
Definition: Kinematics.h:146
erhic::JacquetBlondelComputer::ComputeX
virtual Double_t ComputeX() const
Definition: Kinematics.cxx:409
erhic::DisKinematics::mW2
Double32_t mW2
Definition: Kinematics.h:42
erhic::DoubleAngleComputer::ComputeX
virtual Double_t ComputeX() const
Definition: Kinematics.cxx:531
erhic::LeptonKinematicsComputer
Computes DIS event kinematics from the scattered lepton.
Definition: Kinematics.h:64
erhic::JacquetBlondelComputer
Computes DIS event kinematics from final-state hadrons using the Jacquet-Blondel method.
Definition: Kinematics.h:86
erhic::DoubleAngleComputer::Calculate
virtual DisKinematics * Calculate()
Definition: Kinematics.cxx:455
erhic::DoubleAngleComputer::ComputeQSquared
virtual Double_t ComputeQSquared() const
Definition: Kinematics.cxx:513
erhic::KinematicsComputer::~KinematicsComputer
virtual ~KinematicsComputer()
Definition: Kinematics.h:54
erhic::LeptonKinematicsComputer::LeptonKinematicsComputer
LeptonKinematicsComputer(const EventDis &)
Determine the beam info from the input event.
Definition: Kinematics.cxx:243
erhic::DisKinematics::mNu
Double32_t mNu
Definition: Kinematics.h:43
erhic::DisKinematics::mY
Double32_t mY
Definition: Kinematics.h:44
VirtualParticle.h
erhic::JacquetBlondelComputer::JacquetBlondelComputer
JacquetBlondelComputer(const EventDis &)
Initialise with the event to compute.
Definition: Kinematics.cxx:319
erhic::DoubleAngleComputer::~DoubleAngleComputer
virtual ~DoubleAngleComputer()
Definition: Kinematics.cxx:427
erhic::JacquetBlondelComputer::mEvent
const EventDis & mEvent
The event for which kinematics are being calculated.
Definition: Kinematics.h:106
erhic::KinematicsComputer
Abstract base class for computations of event kinematics.
Definition: Kinematics.h:52
erhic::EventDis
A deeply inelastic scattering event.
Definition: EventDis.h:37
erhic::LeptonKinematicsComputer::Calculate
virtual DisKinematics * Calculate()
Definition: Kinematics.cxx:253
erhic::LeptonKinematicsComputer::~LeptonKinematicsComputer
virtual ~LeptonKinematicsComputer()
Definition: Kinematics.h:66
erhic::JacquetBlondelComputer::Calculate
virtual DisKinematics * Calculate()
Definition: Kinematics.cxx:332
erhic::JacquetBlondelComputer::ComputeQSquared
virtual Double_t ComputeQSquared() const
Definition: Kinematics.cxx:379
erhic::DisKinematics::DisKinematics
DisKinematics()
Default constructor.
Definition: Kinematics.cxx:224
erhic::DoubleAngleComputer
Computes DIS event kinematics from a mixture of hadronic and lepton variables using the double-angle ...
Definition: Kinematics.h:117
erhic::DoubleAngleComputer::ComputeY
virtual Double_t ComputeY() const
Definition: Kinematics.cxx:496
erhic::JacquetBlondelComputer::mParticles
std::vector< const VirtualParticle * > mParticles
Array of final-state particles used in computing kinematics.
Definition: Kinematics.h:108
erhic::DisKinematics::mX
Double32_t mX
Definition: Kinematics.h:40
erhic::DoubleAngleComputer::mAngle
Double_t mAngle
Caches the quark angle.
Definition: Kinematics.h:145
erhic::DoubleAngleComputer::mHasChanged
Bool_t mHasChanged
Stores whether the particle list has changed since the last computation of the quark angle.
Definition: Kinematics.h:143
ParticleMC.h
erhic::JacquetBlondelComputer::ComputeY
virtual Double_t ComputeY() const
Definition: Kinematics.cxx:345
ParticleIdentifier.h
erhic::DisKinematics::mQ2
Double32_t mQ2
Definition: Kinematics.h:41
erhic::DoubleAngleComputer::ComputeQuarkAngle
virtual Double_t ComputeQuarkAngle() const
Scattering angle of struck quark.
Definition: Kinematics.cxx:475