Garfield 0.3
Toolkit for the detailed simulation of particle detectors based on ionization measurement in gases and semiconductors
Loading...
Searching...
No Matches
MediumGaAs.hh
Go to the documentation of this file.
1#ifndef G_MEDIUM_GAAS_H
2#define G_MEDIUM_GAAS_H
3
4#include "Garfield/Medium.hh"
5
6namespace Garfield {
7
9
10class MediumGaAs : public Medium {
11 public:
15 virtual ~MediumGaAs() {}
16
17 bool IsSemiconductor() const override { return true; }
18
19 void GetComponent(const unsigned int i, std::string& label,
20 double& f) override;
21
22 // Electron transport parameters
23 bool ElectronVelocity(const double ex, const double ey, const double ez,
24 const double bx, const double by, const double bz,
25 double& vx, double& vy, double& vz) override;
26 bool ElectronTownsend(const double ex, const double ey, const double ez,
27 const double bx, const double by, const double bz,
28 double& alpha) override;
29 bool ElectronAttachment(const double ex, const double ey, const double ez,
30 const double bx, const double by, const double bz,
31 double& eta) override;
32 double ElectronMobility() override { return m_eMobility; }
33 // Hole transport parameters
34 bool HoleVelocity(const double ex, const double ey, const double ez,
35 const double bx, const double by, const double bz,
36 double& vx, double& vy, double& vz) override;
37 bool HoleTownsend(const double ex, const double ey, const double ez,
38 const double bx, const double by, const double bz,
39 double& alpha) override;
40 bool HoleAttachment(const double ex, const double ey, const double ez,
41 const double bx, const double by, const double bz,
42 double& eta) override;
43 double HoleMobility() override { return m_hMobility; }
44
45 void SetLowFieldMobility(const double mue, const double muh);
47
48 private:
49 // Band-gap energy [eV]
50 // double m_bandGap = 1.42;
51 // Low-field mobility
52 double m_eMobility = 8.0e-6;
53 double m_hMobility = 0.4e-6;
54 // Saturation velocity
55 double m_eSatVel = 7.7e-3;
56 double m_hSatVel = 7.7e-3;
57 // Hall factor
58 double m_eHallFactor = 1.05;
59 double m_hHallFactor = 1.25;
60 // Impact ionization parameters
61 double m_eImpactA = 1.889e5;
62 double m_hImpactA = 2.215e5;
63 double m_eImpactB = 5.75e5;
64 double m_hImpactB = 6.57e5;
65
66 bool m_userMobility = false;
68};
69} // namespace Garfield
70
71#endif
void UpdateTransportParameters()
bool ElectronAttachment(const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &eta) override
bool HoleVelocity(const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &vx, double &vy, double &vz) override
bool ElectronTownsend(const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &alpha) override
virtual ~MediumGaAs()
Destructor.
Definition MediumGaAs.hh:15
MediumGaAs()
Constructor.
bool IsSemiconductor() const override
Definition MediumGaAs.hh:17
double ElectronMobility() override
Definition MediumGaAs.hh:32
double HoleMobility() override
Definition MediumGaAs.hh:43
bool HoleTownsend(const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &alpha) override
void GetComponent(const unsigned int i, std::string &label, double &f) override
bool ElectronVelocity(const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &vx, double &vy, double &vz) override
bool HoleAttachment(const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &eta) override
void SetLowFieldMobility(const double mue, const double muh)