1#ifndef G_DRIFTLINE_RKF_H
2#define G_DRIFTLINE_RKF_H
33 bool DriftElectron(
const double& x0,
const double& y0,
const double& z0,
35 bool DriftHole(
const double& x0,
const double& y0,
const double& z0,
37 bool DriftIon(
const double& x0,
const double& y0,
const double& z0,
40 void GetEndPoint(
double& x,
double& y,
double& z,
double& t,
int& st)
const;
42 void GetDriftLinePoint(
const unsigned int i,
double& x,
double& y,
double& z,
double& t)
const;
55 static const unsigned int ParticleTypeElectron = 0;
56 static const unsigned int ParticleTypeIon = 1;
57 static const unsigned int ParticleTypeHole = 2;
59 std::string m_className;
64 unsigned int m_particleType;
67 unsigned int m_maxSteps;
84 std::vector<step> m_path;
86 double m_scaleElectronSignal;
87 double m_scaleHoleSignal;
88 double m_scaleIonSignal;
94 bool DriftLine(
const double& x0,
const double& y0,
const double& z0,
97 bool GetVelocity(
const double& ex,
const double& ey,
const double& ez,
98 const double& bx,
const double& by,
const double& bz,
99 double& vx,
double& vy,
double& vz)
const;
100 bool GetDiffusion(
const double& ex,
const double& ey,
const double& ez,
101 const double& bx,
const double& by,
const double& bz,
102 double& dl,
double& dt)
const;
103 bool GetTownsend(
const double& ex,
const double& ey,
const double& ez,
104 const double& bx,
const double& by,
const double& bz,
105 double& alpha)
const;
109 bool DriftToWire(
double x0,
double y0,
double z0,
const double& xw,
110 const double& yw,
const double& rw);
112 double IntegrateDiffusion(
const double& x,
const double& y,
const double& z,
113 const double& xe,
const double& ye,
116 double IntegrateTownsend(
const double& x,
const double& y,
const double& z,
117 const double& xe,
const double& ye,
const double& ze,
120 void ComputeSignal()
const;
void SetIonSignalScalingFactor(const double scale)
bool DriftElectron(const double &x0, const double &y0, const double &z0, const double &t0)
void SetIntegrationAccuracy(const double a)
void SetMaxSteps(const unsigned int &m)
void SetSensor(Sensor *s)
bool DriftHole(const double &x0, const double &y0, const double &z0, const double &t0)
unsigned int GetNumberOfDriftLinePoints() const
bool DriftIon(const double &x0, const double &y0, const double &z0, const double &t0)
void GetDriftLinePoint(const unsigned int i, double &x, double &y, double &z, double &t) const
void EnablePlotting(ViewDrift *view)
double GetDriftTime() const
void GetEndPoint(double &x, double &y, double &z, double &t, int &st) const
double GetArrivalTimeSpread()
void SetHoleSignalScalingFactor(const double scale)
void SetMaximumStepSize(const double ms)
void SetElectronSignalScalingFactor(const double scale)