EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Kinematics.h
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file Kinematics.h
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  static bool BoundaryWarning;
47 
48  ClassDef(erhic::DisKinematics, 1)
49 };
50 
55  public:
56  virtual ~KinematicsComputer() { }
57  virtual TObject* Calculate() = 0;
58  ClassDef(erhic::KinematicsComputer, 1)
59 };
60 
67  public:
72  explicit LeptonKinematicsComputer(const EventDis&);
73  virtual DisKinematics* Calculate();
74 
75  protected:
76  std::vector<const VirtualParticle*> mBeams;
77 
79 };
80 
89  public:
90  virtual ~JacquetBlondelComputer();
100  explicit JacquetBlondelComputer(const EventDis&);
101  virtual DisKinematics* Calculate();
102 
103  protected:
104  virtual Double_t ComputeY() const;
105  virtual Double_t ComputeQSquared() const;
106  virtual Double_t ComputeX() const;
108  const EventDis& mEvent;
110  std::vector<const VirtualParticle*> mParticles;
111 
112  ClassDef(erhic::JacquetBlondelComputer, 1)
113 };
114 
120  public:
121  virtual ~DoubleAngleComputer();
131  explicit DoubleAngleComputer(const EventDis&);
132  virtual DisKinematics* Calculate();
133 
134  protected:
135  const EventDis& mEvent;
139  virtual Double_t ComputeQuarkAngle() const;
140  virtual Double_t ComputeY() const;
141  virtual Double_t ComputeQSquared() const;
142  virtual Double_t ComputeX() const;
145  mutable Bool_t mHasChanged;
147  mutable Double_t mAngle;
148  std::vector<const VirtualParticle*> mParticles;
149 
150  ClassDef(erhic::DoubleAngleComputer, 1)
151 };
152 
153 } // namespace erhic
154 
155 #endif // INCLUDE_EICSMEAR_ERHIC_KINEMATICS_H_