Garfield++ v1r0
A toolkit for the detailed simulation of particle detectors based on ionisation measurement in gases and semiconductors
Loading...
Searching...
No Matches
MediumGaAs.hh
Go to the documentation of this file.
1// Gallium-Arsenide
2#ifndef G_MEDIUM_GAAS_H
3#define G_MEDIUM_GAAS_H
4
5#include "Medium.hh"
6
7namespace Garfield {
8
9class MediumGaAs : public Medium {
10
11 public:
12 // Constructor
13 MediumGaAs();
14 // Destructor
16
17 bool IsSemiconductor() const { return true; }
18
19 void GetComponent(const unsigned int& i, std::string& label, double& f);
20
21 // Trapping cross-section
22 void SetTrapCrossSection(const double ecs, const double hcs);
23 void SetTrapDensity(const double n);
24 void SetTrappingTime(const double etau, const double htau);
25
26 // Electron transport parameters
27 bool ElectronVelocity(const double ex, const double ey, const double ez,
28 const double bx, const double by, const double bz,
29 double& vx, double& vy, double& vz);
30 bool ElectronTownsend(const double ex, const double ey, const double ez,
31 const double bx, const double by, const double bz,
32 double& alpha);
33 bool ElectronAttachment(const double ex, const double ey, const double ez,
34 const double bx, const double by, const double bz,
35 double& eta);
36 // Hole transport parameters
37 bool HoleVelocity(const double ex, const double ey, const double ez,
38 const double bx, const double by, const double bz,
39 double& vx, double& vy, double& vz);
40 bool HoleTownsend(const double ex, const double ey, const double ez,
41 const double bx, const double by, const double bz,
42 double& alpha);
43 bool HoleAttachment(const double ex, const double ey, const double ez,
44 const double bx, const double by, const double bz,
45 double& eta);
46
47 void SetLowFieldMobility(const double mue, const double muh);
48
49 bool GetOpticalDataRange(double& emin, double& emax,
50 const unsigned int& i = 0);
51 bool GetDielectricFunction(const double& e, double& eps1, double& eps2,
52 const unsigned int& i = 0);
53
54 private:
55 // Low-field mobility
56 double eMobility, hMobility;
57 // Hall factor
58 double eHallFactor, hHallFactor;
59
60 // Trapping parameters
61 double eTrapCs, hTrapCs;
62 double eTrapDensity, hTrapDensity;
63 double eTrapTime, hTrapTime;
64 int trappingModel;
65
66 // Models
67 bool m_hasUserMobility;
68
69 // Optical data
70 bool m_hasOpticalData;
71 std::string opticalDataFile;
72 struct opticalData {
73 // Energy [eV]
74 double energy;
75 // Dielectric function
76 double eps1, eps2;
77 };
78 std::vector<opticalData> opticalDataTable;
79 bool LoadOpticalData(const std::string filename);
80};
81}
82
83#endif
bool ElectronAttachment(const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &eta)
Definition: MediumGaAs.cc:158
void SetTrapCrossSection(const double ecs, const double hcs)
Definition: MediumGaAs.cc:60
bool GetOpticalDataRange(double &emin, double &emax, const unsigned int &i=0)
Definition: MediumGaAs.cc:272
bool ElectronTownsend(const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &alpha)
Definition: MediumGaAs.cc:145
void SetTrapDensity(const double n)
Definition: MediumGaAs.cc:80
bool GetDielectricFunction(const double &e, double &eps1, double &eps2, const unsigned int &i=0)
Definition: MediumGaAs.cc:299
void SetTrappingTime(const double etau, const double htau)
Definition: MediumGaAs.cc:94
bool IsSemiconductor() const
Definition: MediumGaAs.hh:17
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)
Definition: MediumGaAs.cc:114
void GetComponent(const unsigned int &i, std::string &label, double &f)
Definition: MediumGaAs.cc:49
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)
Definition: MediumGaAs.cc:189
bool HoleAttachment(const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &eta)
Definition: MediumGaAs.cc:230
bool HoleTownsend(const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &alpha)
Definition: MediumGaAs.cc:218
void SetLowFieldMobility(const double mue, const double muh)
Definition: MediumGaAs.cc:258