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