EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Tracker.h
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file Tracker.h
1 
10 #ifndef INCLUDE_EICSMEAR_SMEAR_TRACKER_H_
11 #define INCLUDE_EICSMEAR_SMEAR_TRACKER_H_
12 
13 #include <Rtypes.h> // For ClassDef
14 
16 #include "eicsmear/smear/Smear.h" // KinType
17 #include "eicsmear/smear/Smearer.h"
18 
19 namespace erhic {
20 
21 class VirtualParticle;
22 
23 } // namespace erhic
24 
25 namespace Smear {
26 
27 class ParticleMCS;
28 
35 class Tracker : public Smearer {
36  public:
40  Tracker(double magneticField = 2., double nRadiationLengths = 0.01,
41  double resolution = 0.001);
42 
46  virtual ~Tracker();
47 
51  virtual double Resolution(const erhic::VirtualParticle&) const;
52 
58 
62  virtual double L(const erhic::VirtualParticle&) const = 0;
63 
68  virtual double LPrime(const erhic::VirtualParticle&) const = 0;
69 
73  virtual int NPoints(const erhic::VirtualParticle&) const = 0;
74 
79  virtual bool Accepts(const erhic::VirtualParticle&) const = 0;
80 
84  virtual double GetThetaMin() const = 0;
85 
89  virtual double GetThetaMax() const = 0;
90 
97  void SetVertexConstraint(bool constrain);
98 
99  protected:
106  virtual double MultipleScatteringContribution(
107  const erhic::VirtualParticle&) const;
108 
114  virtual double IntrinsicContribution(const erhic::VirtualParticle&) const;
115 
116  Int_t mFactor;
117 
118  double mMagField;
119  double mNRadLengths;
120  double mSigmaRPhi;
122 
123  ClassDef(Smear::Tracker, 1)
124 };
125 
126 } // namespace Smear
127 
128 #endif // INCLUDE_EICSMEAR_SMEAR_TRACKER_H_