1#ifndef G_DRIFTLINE_RKF_H
2#define G_DRIFTLINE_RKF_H
42 bool DriftElectron(
const double x0,
const double y0,
const double z0,
44 bool DriftHole(
const double x0,
const double y0,
const double z0,
46 bool DriftIon(
const double x0,
const double y0,
const double z0,
49 void GetEndPoint(
double& x,
double& y,
double& z,
double& t,
int& st)
const;
51 void GetDriftLinePoint(
const unsigned int i,
double& x,
double& y,
double& z,
double& t)
const;
56 return m_nPoints > 0 ? m_path[m_nPoints - 1].t : 0.;
66 static const unsigned int ParticleTypeElectron = 0;
67 static const unsigned int ParticleTypeIon = 1;
68 static const unsigned int ParticleTypeHole = 2;
70 std::string m_className;
75 unsigned int m_particleType;
78 unsigned int m_maxSteps;
79 unsigned int m_maxStepsToWire;
81 bool m_useStepSizeLimit;
96 std::vector<step> m_path;
98 unsigned int m_nPoints;
100 double m_scaleElectronSignal;
101 double m_scaleHoleSignal;
102 double m_scaleIonSignal;
108 bool DriftLine(
const double x0,
const double y0,
const double z0,
111 bool GetVelocity(
const double x,
const double y,
const double z,
112 double& vx,
double& vy,
double& vz,
int& status);
113 bool GetVelocity(
const double ex,
const double ey,
const double ez,
114 const double bx,
const double by,
const double bz,
115 double& vx,
double& vy,
double& vz)
const;
116 bool GetDiffusion(
const double ex,
const double ey,
const double ez,
117 const double bx,
const double by,
const double bz,
118 double& dl,
double& dt)
const;
119 bool GetTownsend(
const double ex,
const double ey,
const double ez,
120 const double bx,
const double by,
const double bz,
121 double& alpha)
const;
125 bool DriftToWire(
const double xw,
const double yw,
const double rw);
127 double IntegrateDiffusion(
const double x,
const double y,
const double z,
128 const double xe,
const double ye,
131 double IntegrateTownsend(
const double x,
const double y,
const double z,
132 const double xe,
const double ye,
const double ze,
135 void ComputeSignal(
const double q,
const double scale)
const;
void DisableRejectKinks()
void SetIonSignalScalingFactor(const double scale)
void SetIntegrationAccuracy(const double a)
bool DriftHole(const double x0, const double y0, const double z0, const double t0)
bool DriftIon(const double x0, const double y0, const double z0, const double t0)
void SetSensor(Sensor *s)
void DisableStepSizeLimit()
unsigned int GetNumberOfDriftLinePoints() const
bool DriftElectron(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)
void EnableStepSizeLimit()
double GetDriftTime() const
void SetMaxSteps(const unsigned int m)
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)
Abstract base class for media.
Visualize drift lines and tracks.