1#ifndef G_AVALANCHE_MC_H
2#define G_AVALANCHE_MC_H
70 m_scaleElectronSignal = scale;
73 m_scaleHoleSignal = scale;
76 m_scaleIonSignal = scale;
89 return m_nEndpointsElectrons;
92 return m_nEndpointsHoles;
95 return m_nEndpointsIons;
99 double& x0,
double& y0,
double& z0,
100 double& t0,
double& x1,
double& y1,
double& z1,
101 double& t1,
int& status)
const;
103 double& x0,
double& y0,
double& z0,
104 double& t0,
double& x1,
double& y1,
double& z1,
105 double& t1,
int& status)
const;
107 double& x0,
double& y0,
double& z0,
108 double& t0,
double& x1,
double& y1,
double& z1,
109 double& t1,
int& status)
const;
111 bool DriftElectron(
const double x0,
const double y0,
const double z0,
113 bool DriftHole(
const double x0,
const double y0,
const double z0,
115 bool DriftIon(
const double x0,
const double y0,
const double z0,
118 const double t0,
const bool hole =
false);
119 bool AvalancheHole(
const double x0,
const double y0,
const double z0,
120 const double t0,
const bool electron =
false);
129 std::string m_className;
136 unsigned int m_nDrift;
145 std::vector<driftPoint> m_drift;
151 std::vector<avalPoint> m_aval;
163 bool m_hasTimeWindow;
164 double m_tMin, m_tMax;
167 unsigned int m_nElectrons;
168 unsigned int m_nHoles;
169 unsigned int m_nIons;
172 unsigned int m_nEndpointsElectrons;
173 unsigned int m_nEndpointsHoles;
174 unsigned int m_nEndpointsIons;
176 double x0, y0, z0, t0;
177 double x1, y1, z1, t1;
180 std::vector<endpoint> m_endpointsElectrons;
181 std::vector<endpoint> m_endpointsHoles;
182 std::vector<endpoint> m_endpointsIons;
188 bool m_useInducedCharge;
189 bool m_useEquilibration;
191 bool m_useAttachment;
194 bool m_withElectrons;
196 double m_scaleElectronSignal;
197 double m_scaleHoleSignal;
198 double m_scaleIonSignal;
203 bool DriftLine(
const double x0,
const double y0,
const double z0,
204 const double t0,
const int type,
const bool aval =
false);
208 bool ComputeAlphaEta(
const int q);
210 void ComputeSignal(
const double q);
211 void ComputeInducedCharge(
const double q);
void EnableInducedChargeCalculation()
void EnablePlotting(ViewDrift *view)
void SetTimeSteps(const double d=0.02)
bool AvalancheElectronHole(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)
unsigned int GetNumberOfIonEndpoints() const
void SetIonSignalScalingFactor(const double scale)
void DisableProjectedPathIntegration()
void SetTimeWindow(const double t0, const double t1)
void DisableMagneticField()
void GetIonEndpoint(const unsigned int i, double &x0, double &y0, double &z0, double &t0, double &x1, double &y1, double &z1, double &t1, int &status) const
bool DriftElectron(const double x0, const double y0, const double z0, const double t0)
void GetElectronEndpoint(const unsigned int i, double &x0, double &y0, double &z0, double &t0, double &x1, double &y1, double &z1, double &t1, int &status) const
void SetCollisionSteps(const int n=100)
void DisableSignalCalculation()
void GetHoleEndpoint(const unsigned int i, double &x0, double &y0, double &z0, double &t0, double &x1, double &y1, double &z1, double &t1, int &status) const
void GetDriftLinePoint(const unsigned int i, double &x, double &y, double &z, double &t)
void SetSensor(Sensor *s)
void EnableMagneticField()
void GetAvalancheSize(int &ne, int &ni) const
unsigned int GetNumberOfHoleEndpoints() const
void SetElectronSignalScalingFactor(const double scale)
void SetHoleSignalScalingFactor(const double scale)
unsigned int GetNumberOfDriftLinePoints() const
unsigned int GetNumberOfElectronEndpoints() const
bool AvalancheElectron(const double x0, const double y0, const double z0, const double t0, const bool hole=false)
void DisableInducedChargeCalculation()
void EnableProjectedPathIntegration()
void SetDistanceSteps(const double d=0.001)
void EnableSignalCalculation()
bool AvalancheHole(const double x0, const double y0, const double z0, const double t0, const bool electron=false)
bool DriftHole(const double x0, const double y0, const double z0, const double t0)