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