36 std::cerr <<
m_className <<
"::GetComponent: Index out of range.\n";
41 const double ez,
const double bx,
42 const double by,
const double bz,
double& vx,
43 double& vy,
double& vz) {
46 UpdateTransportParameters();
54 const double mu = -m_eMobility;
55 const double b2 = bx * bx + by * by + bz * bz;
61 Langevin(ex, ey, ez, bx, by, bz, mu, m_eHallFactor * mu, vx, vy, vz);
67 const double ez,
const double bx,
68 const double by,
const double bz,
79 const double ez,
const double bx,
80 const double by,
const double bz,
91 const double bx,
const double by,
const double bz,
92 double& vx,
double& vy,
double& vz) {
95 UpdateTransportParameters();
103 const double mu = m_hMobility;
104 const double b2 = bx * bx + by * by + bz * bz;
110 Langevin(ex, ey, ez, bx, by, bz, mu, m_hHallFactor * mu, vx, vy, vz);
116 const double bx,
const double by,
const double bz,
127 const double ez,
const double bx,
128 const double by,
const double bz,
double& eta) {
138 if (mue <= 0. || muh <= 0.) {
139 std::cerr <<
m_className <<
"::SetLowFieldMobility:\n"
140 <<
" Mobility must be greater than zero.\n";
145 m_userMobility =
true;
150 m_userMobility =
false;
154void MediumCdTe::UpdateTransportParameters() {
156 if (!m_userMobility) {
158 m_eMobility = 1.05e-6 * pow(t, -1.7);
159 m_hMobility = 0.1e-6 * pow(t, 1.67);
void UnsetLowFieldMobility()
bool ElectronAttachment(const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &eta) override
Attachment coefficient [cm-1].
bool ElectronTownsend(const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &alpha) override
Ionisation coefficient [cm-1].
bool HoleTownsend(const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &alpha) override
Ionisation coefficient [cm-1].
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
Drift velocity [cm / ns].
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
Drift velocity [cm / ns].
bool HoleAttachment(const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &eta) override
Attachment coefficient [cm-1].
void SetLowFieldMobility(const double mue, const double muh)
void GetComponent(const unsigned int i, std::string &label, double &f) override
Get the name and fraction of a given component.
void SetTemperature(const double t)
Set the temperature [K].
virtual bool HoleTownsend(const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &alpha)
Ionisation coefficient [cm-1].
virtual 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)
Drift velocity [cm / ns].
std::vector< std::vector< std::vector< double > > > m_eAlp
std::vector< std::vector< std::vector< double > > > m_hAlp
virtual 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)
Drift velocity [cm / ns].
virtual void SetAtomicNumber(const double z)
Set the effective atomic number.
std::vector< std::vector< std::vector< double > > > m_eVelE
void SetDielectricConstant(const double eps)
Set the relative static dielectric constant.
virtual bool ElectronTownsend(const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &alpha)
Ionisation coefficient [cm-1].
std::vector< std::vector< std::vector< double > > > m_eAtt
virtual void SetMassDensity(const double rho)
Set the mass density [g/cm3].
std::vector< std::vector< std::vector< double > > > m_hVelE
virtual bool ElectronAttachment(const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &eta)
Attachment coefficient [cm-1].
std::vector< std::vector< std::vector< double > > > m_hAtt
virtual void SetAtomicWeight(const double a)
Set the effective atomic weight.
virtual bool HoleAttachment(const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &eta)
Attachment coefficient [cm-1].
static void Langevin(const double ex, const double ey, const double ez, double bx, double by, double bz, const double mu, double &vx, double &vy, double &vz)