Garfield++ v2r0
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#ifndef G_MEDIUM_CDTE_H
2#define G_MEDIUM_CDTE_H
3
4#include "Medium.hh"
5
6namespace Garfield {
7
8/// Cadmium-Telluride.
9
10class MediumCdTe : public Medium {
11
12 public:
13 /// Constructor
14 MediumCdTe();
15 /// Destructor
16 virtual ~MediumCdTe() {}
17
18 bool IsSemiconductor() const { return true; }
19
20 void GetComponent(const unsigned int i,
21 std::string& label, double& f);
22
23 // Trapping cross-section
24 void SetTrapCrossSection(const double ecs, const double hcs);
25 void SetTrapDensity(const double n);
26 void SetTrappingTime(const double etau, const double htau);
27
28 // Electron transport parameters
29 bool ElectronVelocity(const double ex, const double ey, const double ez,
30 const double bx, const double by, const double bz,
31 double& vx, double& vy, double& vz);
32 bool ElectronTownsend(const double ex, const double ey, const double ez,
33 const double bx, const double by, const double bz,
34 double& alpha);
35 bool ElectronAttachment(const double ex, const double ey, const double ez,
36 const double bx, const double by, const double bz,
37 double& eta);
38 // Hole transport parameters
39 bool HoleVelocity(const double ex, const double ey, const double ez,
40 const double bx, const double by, const double bz,
41 double& vx, double& vy, double& vz);
42 bool HoleTownsend(const double ex, const double ey, const double ez,
43 const double bx, const double by, const double bz,
44 double& alpha);
45 bool HoleAttachment(const double ex, const double ey, const double ez,
46 const double bx, const double by, const double bz,
47 double& eta);
48
49 void SetLowFieldMobility(const double mue, const double muh);
50 void SetSaturationVelocity(const double vsate, const double vsath);
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 // double m_bandGap;
59
60 // Low-field mobility
61 double m_eMobility, m_hMobility;
62 // Saturation velocity
63 double m_eSatVel, m_hSatVel;
64 // Hall factor
65 double m_eHallFactor, m_hHallFactor;
66
67 // Trapping parameters
68 double m_eTrapCs, m_hTrapCs;
69 double m_eTrapDensity, m_hTrapDensity;
70 double m_eTrapTime, m_hTrapTime;
71 unsigned int m_trappingModel;
72
73 // Models
74 bool m_hasUserMobility;
75 bool m_hasUserSaturationVelocity;
76
77 // Optical data
78 std::string m_opticalDataFile;
79 struct opticalData {
80 // Energy [eV]
81 double energy;
82 // Dielectric function
83 double eps1, eps2;
84 };
85 std::vector<opticalData> m_opticalDataTable;
86
87 bool LoadOpticalData(const std::string& filename);
88};
89}
90
91#endif
Cadmium-Telluride.
Definition: MediumCdTe.hh:10
void SetTrapDensity(const double n)
Definition: MediumCdTe.cc:86
bool IsSemiconductor() const
Definition: MediumCdTe.hh:18
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:195
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:164
bool GetOpticalDataRange(double &emin, double &emax, const unsigned int i=0)
Definition: MediumCdTe.cc:293
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:151
void SetSaturationVelocity(const double vsate, const double vsath)
Definition: MediumCdTe.cc:279
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:120
void GetComponent(const unsigned int i, std::string &label, double &f)
Definition: MediumCdTe.cc:52
void SetTrapCrossSection(const double ecs, const double hcs)
Definition: MediumCdTe.cc:66
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:225
bool GetDielectricFunction(const double e, double &eps1, double &eps2, const unsigned int i=0)
Definition: MediumCdTe.cc:319
MediumCdTe()
Constructor.
Definition: MediumCdTe.cc:15
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:237
void SetLowFieldMobility(const double mue, const double muh)
Definition: MediumCdTe.cc:265
virtual ~MediumCdTe()
Destructor.
Definition: MediumCdTe.hh:16
void SetTrappingTime(const double etau, const double htau)
Definition: MediumCdTe.cc:100
Abstract base class for media.
Definition: Medium.hh:11