Garfield 0.3
Toolkit for the detailed simulation of particle detectors based on ionization measurement in gases and semiconductors
Loading...
Searching...
No Matches
MediumDiamond.hh
Go to the documentation of this file.
1#ifndef G_MEDIUM_DIAMOND_H
2#define G_MEDIUM_DIAMOND_H
3
4#include <mutex>
5
6#include "Garfield/Medium.hh"
7
8namespace Garfield {
9
11
12class MediumDiamond : public Medium {
13 public:
17 virtual ~MediumDiamond() {}
18
19 bool IsSemiconductor() const override { return true; }
20
21 void GetComponent(const unsigned int i, std::string& label,
22 double& f) override;
23
24 // Electron transport parameters
25 bool ElectronVelocity(const double ex, const double ey, const double ez,
26 const double bx, const double by, const double bz,
27 double& vx, double& vy, double& vz) override;
28 bool ElectronTownsend(const double ex, const double ey, const double ez,
29 const double bx, const double by, const double bz,
30 double& alpha) override;
31 bool ElectronAttachment(const double ex, const double ey, const double ez,
32 const double bx, const double by, const double bz,
33 double& eta) override;
34 double ElectronMobility() override { return m_eMobility; }
35 // Hole transport parameters
36 bool HoleVelocity(const double ex, const double ey, const double ez,
37 const double bx, const double by, const double bz,
38 double& vx, double& vy, double& vz) override;
39 bool HoleTownsend(const double ex, const double ey, const double ez,
40 const double bx, const double by, const double bz,
41 double& alpha) override;
42 bool HoleAttachment(const double ex, const double ey, const double ez,
43 const double bx, const double by, const double bz,
44 double& eta) override;
45 double HoleMobility() override { return m_hMobility; }
46
47 void SetLowFieldMobility(const double mue, const double muh);
49
50 void SetSaturationVelocity(const double vsate, const double vsath);
52
53 private:
54 std::mutex m_mutex;
55
56 // Low-field mobility
57 double m_eMobility = 4.551e-6;
58 double m_hMobility = 2.750e-6;
59 // Hall factor
60 double m_eHallFactor = 1.;
61 double m_hHallFactor = 1.;
62 // Saturation velocity
63 double m_eSatVel = 2.6e-2;
64 double m_hSatVel = 1.6e-2;
65
66 bool m_userMobility = false;
67
69};
70} // namespace Garfield
71
72#endif
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
bool IsSemiconductor() const override
bool ElectronTownsend(const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &alpha) override
double ElectronMobility() override
virtual ~MediumDiamond()
Destructor.
bool HoleTownsend(const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &alpha) override
bool ElectronAttachment(const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &eta) override
bool HoleAttachment(const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &eta) override
void SetSaturationVelocity(const double vsate, const double vsath)
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
void GetComponent(const unsigned int i, std::string &label, double &f) override
MediumDiamond()
Constructor.
double HoleMobility() override
void SetLowFieldMobility(const double mue, const double muh)