Garfield++ 4.0
A toolkit for the detailed simulation of particle detectors based on ionisation measurement in gases and semiconductors
Loading...
Searching...
No Matches
MediumGaN.hh
Go to the documentation of this file.
1#ifndef G_MEDIUM_GAN_H
2#define G_MEDIUM_GAN_H
3
4#include "Medium.hh"
5
6namespace Garfield {
7
8/// Gallium-Nitride.
9
10class MediumGaN : public Medium {
11 public:
12 /// Constructor
13 MediumGaN();
14 /// Destructor
15 virtual ~MediumGaN() {}
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 /// Set the electron concentration [cm-3].
46 void SetElectronConcentration(const double c);
47
48 /// Set the low-field mobility values [cm2 / (V ns)] explicitly.
49 void SetLowFieldMobility(const double mue, const double muh);
50 /// Use the default mobility models.
52
53 private:
54 // Low-field mobility.
55 double m_eMobility = 1.405e-6;
56 double m_hMobility = 0.170e-6;
57
58 // Electron concentration.
59 double m_eDensity = 7.78e16;
60
61 // Hall factors.
62 double m_eHallFactor = 1.;
63 double m_hHallFactor = 1.;
64
65 // Impact ionization parameters.
66 // J. Baliga, Semicond. Sci. Technol. 28 (2013) 074011,
67 // https://doi-org.ezproxy.cern.ch/10.1088/0268-1242/28/7/074011
68 double m_eImpactA = 1.5e5;
69 double m_hImpactA = 6.4e5;
70 double m_eImpactB = 1.41e7;
71 double m_hImpactB = 1.46e7;
72
73 bool m_userMobility = false;
74 void UpdateTransportParameters();
75};
76}
77
78#endif
Gallium-Nitride.
Definition: MediumGaN.hh:10
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
Drift velocity [cm / ns].
Definition: MediumGaN.cc:120
void GetComponent(const unsigned int i, std::string &label, double &f) override
Get the name and fraction of a given component.
Definition: MediumGaN.cc:37
bool IsSemiconductor() const override
Is this medium a semiconductor?
Definition: MediumGaN.hh:17
double ElectronMobility() override
Low-field mobility [cm2 V-1 ns-1].
Definition: MediumGaN.hh:32
void SetElectronConcentration(const double c)
Set the electron concentration [cm-3].
Definition: MediumGaN.cc:189
void SetLowFieldMobility(const double mue, const double muh)
Set the low-field mobility values [cm2 / (V ns)] explicitly.
Definition: MediumGaN.cc:199
virtual ~MediumGaN()
Destructor.
Definition: MediumGaN.hh:15
bool HoleTownsend(const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &alpha) override
Ionisation coefficient [cm-1].
Definition: MediumGaN.cc:159
bool ElectronTownsend(const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &alpha) override
Ionisation coefficient [cm-1].
Definition: MediumGaN.cc:88
bool HoleAttachment(const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &eta) override
Attachment coefficient [cm-1].
Definition: MediumGaN.cc:178
MediumGaN()
Constructor.
Definition: MediumGaN.cc:14
void UnsetLowFieldMobility()
Use the default mobility models.
Definition: MediumGaN.cc:212
double HoleMobility() override
Low-field mobility [cm2 V-1 ns-1].
Definition: MediumGaN.hh:43
bool ElectronAttachment(const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &eta) override
Attachment coefficient [cm-1].
Definition: MediumGaN.cc:108
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
Drift velocity [cm / ns].
Definition: MediumGaN.cc:48
Abstract base class for media.
Definition: Medium.hh:13