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:
66  virtual ~LeptonKinematicsComputer() { }
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_
DoubleAngleComputer(const EventDis &)
Definition: Kinematics.cxx:441
LeptonKinematicsComputer(const EventDis &)
Definition: Kinematics.cxx:243
Double_t mAngle
Caches the quark angle.
Definition: Kinematics.h:145
const EventDis & mEvent
The event for which kinematics are being calculated.
Definition: Kinematics.h:106
JacquetBlondelComputer(const EventDis &)
Definition: Kinematics.cxx:319
std::vector< const VirtualParticle * > mParticles
Array of final-state particles used in computing kinematics.
Definition: Kinematics.h:108
virtual Double_t ComputeQuarkAngle() const
Definition: Kinematics.cxx:475