Garfield 0.3
Toolkit for the detailed simulation of particle detectors based on ionization measurement in gases and semiconductors
Loading...
Searching...
No Matches
Garfield::MediumSilicon Class Reference

Solid crystalline silicon More...

#include <MediumSilicon.hh>

Inheritance diagram for Garfield::MediumSilicon:
Garfield::Medium

Classes

struct  Band

Public Member Functions

 MediumSilicon ()
 Constructor.
virtual ~MediumSilicon ()
 Destructor.
bool IsSemiconductor () const override
 Is this medium a semiconductor?
void SetDoping (const char type, const double c)
 Set doping concentration [cm-3] and type ('i', 'n', 'p').
void GetDoping (char &type, double &c) const
 Retrieve doping concentration.
void SetTrapCrossSection (const double ecs, const double hcs)
 Trapping cross-sections for electrons and holes.
void SetTrapDensity (const double n)
 Trap density [cm-3], by default set to zero.
void SetTrappingTime (const double etau, const double htau)
 Set time constant for trapping of electrons and holes [ns].
void SetLowFieldMobility (const double mue, const double muh)
 Specify the low field values of the electron and hole mobilities.
void SetLatticeMobilityModel (const std::string &model)
 Set the parameterisation to be used for calculating the lattice mobility model.
void SetLatticeMobilityModelMinimos ()
 Calculate the lattice mobility using the Minimos model.
void SetLatticeMobilityModelSentaurus ()
 Calculate the lattice mobility using the Sentaurus model (default).
void SetLatticeMobilityModelReggiani ()
 Calculate the lattice mobility using the Reggiani model.
void SetDopingMobilityModelMinimos ()
 Use the Minimos model for the doping-dependence of the mobility.
void SetDopingMobilityModelMasetti ()
 Use the Masetti model for the doping-dependence of the mobility (default).
void SetSaturationVelocity (const double vsate, const double vsath)
 Specify the saturation velocities of electrons and holes.
void SetSaturationVelocityModelMinimos ()
 Calculate the saturation velocities using the Minimos model.
void SetSaturationVelocityModelCanali ()
 Calculate the saturation velocities using the Canali model (default).
void SetSaturationVelocityModelReggiani ()
 Calculate the saturation velocities using the Reggiani model.
void SetHighFieldMobilityModel (const std::string &model)
 Set the parameterisation to be used for the drift velocity as function of the electric field.
void SetHighFieldMobilityModelMinimos ()
 Parameterize the high-field mobility using the Minimos model.
void SetHighFieldMobilityModelCanali ()
 Parameterize the high-field mobility using the Canali model (default).
void SetHighFieldMobilityModelReggiani ()
 Parameterize the high-field mobility using the Reggiani model.
void SetHighFieldMobilityModelConstant ()
 Make the velocity proportional to the electric field (no saturation).
void SetImpactIonisationModel (const std::string &model)
 Set the parameterisation to be used for calculating the impact ionisation coefficient.
void SetImpactIonisationModelVanOverstraetenDeMan ()
 Calculate α using the van Overstraeten-de Man model (default).
void SetImpactIonisationModelGrant ()
 Calculate α using the Grant model.
void SetImpactIonisationModelMassey ()
 Calculate α using the Massey model.
void SetImpactIonisationModelOkutoCrowell ()
 Calculate α using the Okuto-Crowell model.
void SetDiffusionScaling (const double d)
 Apply a scaling factor to the diffusion coefficients.
bool SetMaxElectronEnergy (const double e)
double GetMaxElectronEnergy () const
bool Initialise ()
void EnableScatteringRateOutput (const bool on=true)
void EnableNonParabolicity (const bool on=true)
void EnableFullBandDensityOfStates (const bool on=true)
void EnableAnisotropy (const bool on=true)
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 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 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].
double ElectronMobility () override
 Low-field mobility [cm2 V-1 ns-1].
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 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 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].
double HoleMobility () override
 Low-field mobility [cm2 V-1 ns-1].
double GetElectronEnergy (const double px, const double py, const double pz, double &vx, double &vy, double &vz, const int band=0) override
 Dispersion relation (energy vs. wave vector)
void GetElectronMomentum (const double e, double &px, double &py, double &pz, int &band) override
 Sample the momentum vector for a given energy (only meaningful in semiconductors).
double GetElectronNullCollisionRate (const int band) override
 Null-collision rate [ns-1].
double GetElectronCollisionRate (const double e, const int band) override
 Collision rate [ns-1] for given electron energy.
bool ElectronCollision (const double e, int &type, int &level, double &e1, double &dx, double &dy, double &dz, std::vector< Secondary > &secondaries, int &band) override
 Sample the collision type. Update energy and direction vector.
void ResetCollisionCounters ()
unsigned int GetNumberOfElectronCollisions () const
unsigned int GetNumberOfLevels () const
unsigned int GetNumberOfElectronCollisions (const unsigned int level) const
unsigned int GetNumberOfElectronBands () const
int GetElectronBandPopulation (const int band)
bool GetOpticalDataRange (double &emin, double &emax, const unsigned int i=0) override
 Get the energy range [eV] of the available optical data.
bool GetDielectricFunction (const double e, double &eps1, double &eps2, const unsigned int i=0) override
 Get the complex dielectric function at a given energy.
void ComputeSecondaries (const double e0, double &ee, double &eh)
Public Member Functions inherited from Garfield::Medium
 Medium ()
 Constructor.
virtual ~Medium ()
 Destructor.
int GetId () const
 Return the id number of the class instance.
const std::string & GetName () const
 Get the medium name/identifier.
virtual bool IsGas () const
 Is this medium a gas?
virtual bool IsConductor () const
 Is this medium a conductor?
void SetTemperature (const double t)
 Set the temperature [K].
double GetTemperature () const
 Get the temperature [K].
void SetPressure (const double p)
double GetPressure () const
void SetDielectricConstant (const double eps)
 Set the relative static dielectric constant.
double GetDielectricConstant () const
 Get the relative static dielectric constant.
unsigned int GetNumberOfComponents () const
 Get number of components of the medium.
virtual void GetComponent (const unsigned int i, std::string &label, double &f)
 Get the name and fraction of a given component.
virtual void SetAtomicNumber (const double z)
 Set the effective atomic number.
virtual double GetAtomicNumber () const
 Get the effective atomic number.
virtual void SetAtomicWeight (const double a)
 Set the effective atomic weight.
virtual double GetAtomicWeight () const
 Get the effective atomic weight.
virtual void SetNumberDensity (const double n)
 Set the number density [cm-3].
virtual double GetNumberDensity () const
 Get the number density [cm-3].
virtual void SetMassDensity (const double rho)
 Set the mass density [g/cm3].
virtual double GetMassDensity () const
 Get the mass density [g/cm3].
virtual void EnableDrift (const bool on=true)
 Switch electron/ion/hole transport on/off.
virtual void EnablePrimaryIonisation (const bool on=true)
 Make the medium ionisable or non-ionisable.
bool IsDriftable () const
 Is charge carrier transport enabled in this medium?
bool IsMicroscopic () const
 Does the medium have electron scattering rates?
bool IsIonisable () const
 Is charge deposition by charged particles/photon enabled in this medium?
void SetW (const double w)
 Set the W value (average energy to produce an electron/ion or e/h pair).
double GetW () const
 Get the W value.
void SetFanoFactor (const double f)
 Set the Fano factor.
double GetFanoFactor () const
 Get the Fano factor.
void PlotVelocity (const std::string &carriers, TPad *pad)
 Plot the drift velocity as function of the electric field.
void PlotDiffusion (const std::string &carriers, TPad *pad)
 Plot the diffusion coefficients as function of the electric field.
void PlotTownsend (const std::string &carriers, TPad *pad)
 Plot the Townsend coefficient(s) as function of the electric field.
void PlotAttachment (const std::string &carriers, TPad *pad)
 Plot the attachment coefficient(s) as function of the electric field.
void PlotAlphaEta (const std::string &carriers, TPad *pad)
 Plot Townsend and attachment coefficients.
virtual bool ElectronVelocityFluxBulk (const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &wv, double &wr)
 Flux (mean velocity; shorthand: wv) and bulk (center of mass velocity; shorthand: wr) drift velocity [cm / ns].
virtual bool ElectronDiffusion (const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &dl, double &dt)
 Longitudinal and transverse diffusion coefficients [cm1/2].
virtual bool ElectronDiffusion (const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double cov[3][3])
 Diffusion tensor: diagonal elements are the diffusion coefficients [cm] along e, btrans, e x b, off-diagonal elements are the covariances.
virtual bool ElectronTOFIonisation (const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &riontof)
 TOF Ionisation rate [ns-1].
virtual bool ElectronTOFAttachment (const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &ratttof)
 TOF Attachment Rate [ns-1].
virtual bool ElectronLorentzAngle (const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &lor)
 Lorentz angle.
virtual bool HoleDiffusion (const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &dl, double &dt)
 Longitudinal and transverse diffusion coefficients [cm1/2].
virtual bool HoleDiffusion (const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double cov[3][3])
 Diffusion tensor.
virtual bool IonVelocity (const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &vx, double &vy, double &vz)
 Ion drift velocity [cm / ns].
bool HasIonVelocity () const
virtual bool IonDiffusion (const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &dl, double &dt)
 Longitudinal and transverse diffusion coefficients [cm1/2].
virtual bool IonDissociation (const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &diss)
 Dissociation coefficient.
virtual double IonMobility ()
 Low-field ion mobility [cm2 V-1 ns-1].
virtual bool NegativeIonVelocity (const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &vx, double &vy, double &vz)
 Negative ion drift velocity [cm / ns].
virtual double NegativeIonMobility ()
 Low-field negative ion mobility [cm2 V-1 ns-1].
void SetFieldGrid (double emin, double emax, const size_t ne, bool logE, double bmin=0., double bmax=0., const size_t nb=1, double amin=HalfPi, double amax=HalfPi, const size_t na=1)
 Set the range of fields to be covered by the transport tables.
void SetFieldGrid (const std::vector< double > &efields, const std::vector< double > &bfields, const std::vector< double > &angles)
 Set the fields and E-B angles to be used in the transport tables.
void GetFieldGrid (std::vector< double > &efields, std::vector< double > &bfields, std::vector< double > &angles)
 Get the fields and E-B angles used in the transport tables.
bool SetElectronVelocityE (const size_t ie, const size_t ib, const size_t ia, const double v)
 Set an entry in the table of drift speeds along E.
bool GetElectronVelocityE (const size_t ie, const size_t ib, const size_t ia, double &v)
 Get an entry in the table of drift speeds along E.
bool SetElectronVelocityExB (const size_t ie, const size_t ib, const size_t ia, const double v)
 Set an entry in the table of drift speeds along ExB.
bool GetElectronVelocityExB (const size_t ie, const size_t ib, const size_t ia, double &v)
 Get an entry in the table of drift speeds along ExB.
bool SetElectronVelocityB (const size_t ie, const size_t ib, const size_t ia, const double v)
 Set an entry in the table of drift speeds along Btrans.
bool GetElectronVelocityB (const size_t ie, const size_t ib, const size_t ia, double &v)
 Get an entry in the table of drift speeds along Btrans.
bool SetElectronFluxVelocity (const size_t ie, const size_t ib, const size_t ia, const double v)
 Set an entry in the table of flux drift speeds.
bool GetElectronFluxVelocity (const size_t ie, const size_t ib, const size_t ia, double &v)
 Get an entry in the table of flux drift speeds.
bool SetElectronBulkVelocity (const size_t ie, const size_t ib, const size_t ia, const double v)
 Set an entry in the table of bulk drift speeds.
bool GetElectronBulkVelocity (const size_t ie, const size_t ib, const size_t ia, double &v)
 Get an entry in the table of bulk drift speeds.
bool SetElectronLongitudinalDiffusion (const size_t ie, const size_t ib, const size_t ia, const double dl)
 Set an entry in the table of longitudinal diffusion coefficients.
bool GetElectronLongitudinalDiffusion (const size_t ie, const size_t ib, const size_t ia, double &dl)
 Get an entry in the table of longitudinal diffusion coefficients.
bool SetElectronTransverseDiffusion (const size_t ie, const size_t ib, const size_t ia, const double dt)
 Set an entry in the table of transverse diffusion coefficients.
bool GetElectronTransverseDiffusion (const size_t ie, const size_t ib, const size_t ia, double &dt)
 Get an entry in the table of transverse diffusion coefficients.
bool SetElectronTownsend (const size_t ie, const size_t ib, const size_t ia, const double alpha)
 Set an entry in the table of Townsend coefficients.
bool GetElectronTownsend (const size_t ie, const size_t ib, const size_t ia, double &alpha)
 Get an entry in the table of Townsend coefficients.
bool SetElectronAttachment (const size_t ie, const size_t ib, const size_t ia, const double eta)
 Set an entry in the table of attachment coefficients.
bool GetElectronAttachment (const size_t ie, const size_t ib, const size_t ia, double &eta)
 Get an entry in the table of attachment coefficients.
bool SetElectronTOFIonisation (const size_t ie, const size_t ib, const size_t ia, const double v)
 Set an entry in the table of ionization rate of TOF.
bool GetElectronTOFIonisation (const size_t ie, const size_t ib, const size_t ia, double &v)
 Get an entry in the table of ionization rate of TOF.
bool SetElectronTOFAttachment (const size_t ie, const size_t ib, const size_t ia, const double v)
 Set an entry in the table of attachment rate of TOF.
bool GetElectronTOFAttachment (const size_t ie, const size_t ib, const size_t ia, double &v)
 Get an entry in the table of attachment rate of TOF.
bool SetElectronLorentzAngle (const size_t ie, const size_t ib, const size_t ia, const double lor)
 Set an entry in the table of Lorentz angles.
bool GetElectronLorentzAngle (const size_t ie, const size_t ib, const size_t ia, double &lor)
 Get an entry in the table of Lorentz angles.
bool SetHoleVelocityE (const size_t ie, const size_t ib, const size_t ia, const double v)
 Set an entry in the table of drift speeds along E.
bool GetHoleVelocityE (const size_t ie, const size_t ib, const size_t ia, double &v)
 Get an entry in the table of drift speeds along E.
bool SetHoleVelocityExB (const size_t ie, const size_t ib, const size_t ia, const double v)
 Set an entry in the table of drift speeds along ExB.
bool GetHoleVelocityExB (const size_t ie, const size_t ib, const size_t ia, double &v)
 Get an entry in the table of drift speeds along ExB.
bool SetHoleVelocityB (const size_t ie, const size_t ib, const size_t ia, const double v)
 Set an entry in the table of drift speeds along Btrans.
bool GetHoleVelocityB (const size_t ie, const size_t ib, const size_t ia, double &v)
 Get an entry in the table of drift speeds along Btrans.
bool SetHoleLongitudinalDiffusion (const size_t ie, const size_t ib, const size_t ia, const double dl)
 Set an entry in the table of longitudinal diffusion coefficients.
bool GetHoleLongitudinalDiffusion (const size_t ie, const size_t ib, const size_t ia, double &dl)
 Get an entry in the table of longitudinal diffusion coefficients.
bool SetHoleTransverseDiffusion (const size_t ie, const size_t ib, const size_t ia, const double dt)
 Set an entry in the table of transverse diffusion coefficients.
bool GetHoleTransverseDiffusion (const size_t ie, const size_t ib, const size_t ia, double &dt)
 Get an entry in the table of transverse diffusion coefficients.
bool SetHoleTownsend (const size_t ie, const size_t ib, const size_t ia, const double alpha)
 Set an entry in the table of Townsend coefficients.
bool GetHoleTownsend (const size_t ie, const size_t ib, const size_t ia, double &alpha)
 Get an entry in the table of Townsend coefficients.
bool SetHoleAttachment (const size_t ie, const size_t ib, const size_t ia, const double eta)
 Set an entry in the table of attachment coefficients.
bool GetHoleAttachment (const size_t ie, const size_t ib, const size_t ia, double &eta)
 Get an entry in the table of attachment coefficients.
bool SetIonMobility (const std::vector< double > &fields, const std::vector< double > &mobilities, const bool negativeIons=false)
 Initialise the table of ion mobilities from a list of electric fields and corresponding mobilities.
bool SetIonMobility (const size_t ie, const size_t ib, const size_t ia, const double mu)
 Set an entry in the table of ion mobilities.
bool GetIonMobility (const size_t ie, const size_t ib, const size_t ia, double &mu)
 Get an entry in the table of ion mobilities.
bool SetIonLongitudinalDiffusion (const size_t ie, const size_t ib, const size_t ia, const double dl)
 Set an entry in the table of longitudinal diffusion coefficients.
bool GetIonLongitudinalDiffusion (const size_t ie, const size_t ib, const size_t ia, double &dl)
 Get an entry in the table of longitudinal diffusion coefficients.
bool SetIonTransverseDiffusion (const size_t ie, const size_t ib, const size_t ia, const double dt)
 Set an entry in the table of transverse diffusion coefficients.
bool GetIonTransverseDiffusion (const size_t ie, const size_t ib, const size_t ia, double &dt)
 Get an entry in the table of transverse diffusion coefficients.
bool SetIonDissociation (const size_t ie, const size_t ib, const size_t ia, const double diss)
 Set an entry in the table of dissociation coefficients.
bool GetIonDissociation (const size_t ie, const size_t ib, const size_t ia, double &diss)
 Get an entry in the table of dissociation coefficients.
bool SetNegativeIonMobility (const size_t ie, const size_t ib, const size_t ia, const double mu)
 Set an entry in the table of negative ion mobilities.
bool GetNegativeIonMobility (const size_t ie, const size_t ib, const size_t ia, double &mu)
 Get an entry in the table of negative ion mobilities.
virtual void ResetTables ()
 Reset all tables of transport parameters.
void ResetElectronVelocity ()
void ResetElectronDiffusion ()
void ResetElectronTownsend ()
void ResetElectronAttachment ()
void ResetElectronTOFRates ()
void ResetElectronLorentzAngle ()
void ResetHoleVelocity ()
void ResetHoleDiffusion ()
void ResetHoleTownsend ()
void ResetHoleAttachment ()
void ResetIonMobility ()
void ResetIonDiffusion ()
void ResetIonDissociation ()
void ResetNegativeIonMobility ()
void VelocityFromMobility (const std::vector< std::vector< std::vector< double > > > &mob, std::vector< std::vector< std::vector< double > > > &vel)
void SetExtrapolationMethodVelocity (const std::string &extrLow, const std::string &extrHigh)
 Select the extrapolation method for fields below/above the table range.
void SetExtrapolationMethodDiffusion (const std::string &extrLow, const std::string &extrHigh)
void SetExtrapolationMethodTownsend (const std::string &extrLow, const std::string &extrHigh)
void SetExtrapolationMethodAttachment (const std::string &extrLow, const std::string &extrHigh)
void SetExtrapolationMethodIonMobility (const std::string &extrLow, const std::string &extrHigh)
void SetExtrapolationMethodIonDissociation (const std::string &extrLow, const std::string &extrHigh)
void SetInterpolationMethodVelocity (const unsigned int intrp)
 Set the degree of polynomial interpolation (usually 2).
void SetInterpolationMethodDiffusion (const unsigned int intrp)
void SetInterpolationMethodTownsend (const unsigned int intrp)
void SetInterpolationMethodAttachment (const unsigned int intrp)
void SetInterpolationMethodIonMobility (const unsigned int intrp)
void SetInterpolationMethodIonDissociation (const unsigned int intrp)
virtual double ScaleElectricField (const double e) const
virtual double UnScaleElectricField (const double e) const
virtual double ScaleVelocity (const double v) const
virtual double ScaleDiffusion (const double d) const
virtual double ScaleDiffusionTensor (const double d) const
virtual double ScaleTownsend (const double alpha) const
virtual double ScaleAttachment (const double eta) const
virtual double ScaleLorentzAngle (const double lor) const
virtual double ScaleDissociation (const double diss) const
virtual bool GetPhotoAbsorptionCrossSection (const double e, double &sigma, const unsigned int i=0)
virtual double GetPhotonCollisionRate (const double e)
virtual bool PhotonCollision (const double e, int &type, int &level, double &e1, double &ctheta, std::vector< Secondary > &secondaries)
void EnableDebugging ()
 Switch on/off debugging messages.
void DisableDebugging ()
virtual double CreateGPUTransferObject (MediumGPU *&med_gpu)
 Create and initialise GPU Transfer class.

Private Types

enum class  LatticeMobility { Sentaurus = 0 , Minimos , Reggiani }
enum class  DopingMobility { Minimos = 0 , Masetti }
enum class  SaturationVelocity { Minimos = 0 , Canali , Reggiani }
enum class  HighFieldMobility { Minimos = 0 , Canali , Reggiani , Constant }
enum class  ImpactIonisation { VanOverstraeten = 0 , Grant , Massey , Okuto }

Private Member Functions

bool Update ()
void UpdateLatticeMobility ()
void UpdateDopingMobilityMinimos ()
void UpdateDopingMobilityMasetti ()
void UpdateSaturationVelocity ()
void UpdateHighFieldMobilityCanali ()
void UpdateImpactIonisation ()
double ElectronMobility (const double e) const
double ElectronAlpha (const double e) const
double HoleMobility (const double e) const
double HoleAlpha (const double e) const
bool LoadOpticalData (const std::string &filename)
bool ElectronScatteringRates ()
bool HoleScatteringRates ()
bool AcousticScatteringRates (const double rho, const double kbt, const double dp, Band &band)
bool OpticalScatteringRates (const double rho, const double kbt, const double dtk, const double eph, Band &band)
bool IntervalleyScatteringRates (const double rho, const double kbt, const double dtk, const double eph, Band &bndI, Band &bndF, const double zF, const int collType)
bool IonisationRates (const std::vector< double > &p, const std::vector< double > &eth, const std::vector< double > &b, Band &band)
bool ImpurityScatteringRates (const double kbt, Band &band)
void InitialiseDOS ()
void ComputeDOS ()

Private Attributes

std::mutex m_mutex
double m_diffScale = 1.
double m_bandGap = 1.12
char m_dopingType = 'i'
double m_cDop = 0.
double m_eMuLat = 1.35e-6
double m_hMuLat = 0.45e-6
double m_eMu = 1.35e-6
double m_hMu = 0.45e-6
double m_eBetaCanali = 1.109
double m_hBetaCanali = 1.213
double m_eBetaCanaliInv = 1. / 1.109
double m_hBetaCanaliInv = 1. / 1.213
double m_eVs = 1.02e-2
double m_hVs = 0.72e-2
double m_eRs = 1.35e-6 / 1.02e-2
double m_hRs = 0.45e-6 / 0.72e-2
double m_eHallFactor = 1.15
double m_hHallFactor = 0.7
double m_eTrapCs = 1.e-15
double m_hTrapCs = 1.e-15
double m_eTrapDensity = 0.
double m_hTrapDensity = 0.
double m_eTrapTime = 0.
double m_hTrapTime = 0.
double m_eTrapRate = 0.
double m_hTrapRate = 0.
int m_trappingModel = 0
double m_eImpactA0 = 3.318e5
double m_eImpactA1 = 0.703e6
double m_eImpactA2 = 0.
double m_eImpactB0 = 1.135e6
double m_eImpactB1 = 1.231e6
double m_eImpactB2 = 0.
double m_hImpactA0 = 1.582e6
double m_hImpactA1 = 0.671e6
double m_hImpactB0 = 2.036e6
double m_hImpactB1 = 1.693e6
bool m_hasUserMobility = false
bool m_hasUserSaturationVelocity = false
LatticeMobility m_latticeMobilityModel = LatticeMobility::Sentaurus
DopingMobility m_dopingMobilityModel = DopingMobility::Masetti
SaturationVelocity m_saturationVelocityModel = SaturationVelocity::Canali
HighFieldMobility m_highFieldMobilityModel = HighFieldMobility::Canali
ImpactIonisation m_impactIonisationModel = ImpactIonisation::VanOverstraeten
bool m_cfOutput = false
bool m_nonParabolic = true
bool m_fullBandDos = false
bool m_anisotropic = true
std::array< Band, 3 > m_cb
std::vector< size_t > m_cbIndex
Band m_vb
unsigned int m_nCollElectronAcoustic = 0
unsigned int m_nCollElectronOptical = 0
unsigned int m_nCollElectronIntervalley = 0
unsigned int m_nCollElectronImpurity = 0
unsigned int m_nCollElectronIonisation = 0
std::vector< unsigned int > m_nCollElectronDetailed
std::vector< unsigned int > m_nCollElectronBand
double m_eStepDos = 0.
double m_invStepDos = 0.
std::vector< double > m_fbDosV
std::vector< double > m_fbDosC
double m_fbDosMaxV
double m_fbDosMaxC
std::string m_opticalDataFile = "OpticalData_Si.txt"
std::vector< double > m_egamma
std::vector< double > m_eps1
std::vector< double > m_eps2

Additional Inherited Members

Protected Member Functions inherited from Garfield::Medium
bool Velocity (const double ex, const double ey, const double ez, const double bx, const double by, const double bz, const std::vector< std::vector< std::vector< double > > > &velE, const std::vector< std::vector< std::vector< double > > > &velB, const std::vector< std::vector< std::vector< double > > > &velX, const double q, double &vx, double &vy, double &vz) const
bool VelocityFluxBulk (const double ex, const double ey, const double ez, const double bx, const double by, const double bz, const std::vector< std::vector< std::vector< double > > > &velWv, const std::vector< std::vector< std::vector< double > > > &velWr, double &wv, double &wr) const
bool Diffusion (const double ex, const double ey, const double ez, const double bx, const double by, const double bz, const std::vector< std::vector< std::vector< double > > > &difL, const std::vector< std::vector< std::vector< double > > > &difT, double &dl, double &dt) const
bool Diffusion (const double ex, const double ey, const double ez, const double bx, const double by, const double bz, const std::vector< std::vector< std::vector< std::vector< double > > > > &diff, double cov[3][3]) const
bool Alpha (const double ex, const double ey, const double ez, const double bx, const double by, const double bz, const std::vector< std::vector< std::vector< double > > > &tab, unsigned int intp, const unsigned int thr, const std::pair< unsigned int, unsigned int > &extr, double &alpha) const
double GetAngle (const double ex, const double ey, const double ez, const double bx, const double by, const double bz, const double e, const double b) const
bool Interpolate (const double e, const double b, const double a, const std::vector< std::vector< std::vector< double > > > &table, double &y, const unsigned int intp, const std::pair< unsigned int, unsigned int > &extr, const bool logval=false) const
double Interpolate1D (const double e, const std::vector< double > &table, const std::vector< double > &fields, const unsigned int intpMeth, const std::pair< unsigned int, unsigned int > &extr, const bool logval=false) const
bool SetEntry (const size_t i, const size_t j, const size_t k, const std::string &fcn, std::vector< std::vector< std::vector< double > > > &tab, const double val)
bool GetEntry (const size_t i, const size_t j, const size_t k, const std::string &fcn, const std::vector< std::vector< std::vector< double > > > &tab, double &val) const
void SetExtrapolationMethod (const std::string &low, const std::string &high, std::pair< unsigned int, unsigned int > &extr, const std::string &fcn)
bool GetExtrapolationIndex (std::string str, unsigned int &nb) const
size_t SetThreshold (const std::vector< std::vector< std::vector< double > > > &tab) const
void Clone (std::vector< std::vector< std::vector< double > > > &tab, const std::vector< double > &efields, const std::vector< double > &bfields, const std::vector< double > &angles, const unsigned int intp, const std::pair< unsigned int, unsigned int > &extr, const double init, const std::string &label)
void Clone (std::vector< std::vector< std::vector< std::vector< double > > > > &tab, const size_t n, const std::vector< double > &efields, const std::vector< double > &bfields, const std::vector< double > &angles, const unsigned int intp, const std::pair< unsigned int, unsigned int > &extr, const double init, const std::string &label)
void Init (const size_t nE, const size_t nB, const size_t nA, std::vector< std::vector< std::vector< double > > > &tab, const double val)
void Init (const size_t nE, const size_t nB, const size_t nA, const size_t nT, std::vector< std::vector< std::vector< std::vector< double > > > > &tab, const double val)
Static Protected Member Functions inherited from Garfield::Medium
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)
static void Langevin (const double ex, const double ey, const double ez, double bx, double by, double bz, const double mu, const double muH, double &vx, double &vy, double &vz)
Protected Attributes inherited from Garfield::Medium
std::string m_className = "Medium"
unsigned int m_nComponents = 1
std::string m_name = ""
double m_temperature = 293.15
double m_pressure = 760.
double m_epsilon = 1.
double m_z = 1.
double m_a = 0.
double m_density = 0.
int m_id
bool m_driftable = false
bool m_microscopic = false
bool m_ionisable = false
double m_w = 0.
double m_fano = 0.
bool m_isChanged = true
bool m_debug = false
bool m_tab2d = false
std::vector< double > m_eFields
std::vector< double > m_bFields
std::vector< double > m_bAngles
std::vector< std::vector< std::vector< double > > > m_eVelE
std::vector< std::vector< std::vector< double > > > m_eVelX
std::vector< std::vector< std::vector< double > > > m_eVelB
std::vector< std::vector< std::vector< double > > > m_eDifL
std::vector< std::vector< std::vector< double > > > m_eDifT
std::vector< std::vector< std::vector< double > > > m_eAlp
std::vector< std::vector< std::vector< double > > > m_eAtt
std::vector< std::vector< std::vector< double > > > m_eLor
std::vector< std::vector< std::vector< double > > > m_eVelWv
std::vector< std::vector< std::vector< double > > > m_eVelWr
std::vector< std::vector< std::vector< double > > > m_eRIon
std::vector< std::vector< std::vector< double > > > m_eRAtt
std::vector< std::vector< std::vector< std::vector< double > > > > m_eDifM
std::vector< std::vector< std::vector< double > > > m_hVelE
std::vector< std::vector< std::vector< double > > > m_hVelX
std::vector< std::vector< std::vector< double > > > m_hVelB
std::vector< std::vector< std::vector< double > > > m_hDifL
std::vector< std::vector< std::vector< double > > > m_hDifT
std::vector< std::vector< std::vector< double > > > m_hAlp
std::vector< std::vector< std::vector< double > > > m_hAtt
std::vector< std::vector< std::vector< std::vector< double > > > > m_hDifM
std::vector< std::vector< std::vector< double > > > m_iMob
std::vector< std::vector< std::vector< double > > > m_iVel
std::vector< std::vector< std::vector< double > > > m_iDifL
std::vector< std::vector< std::vector< double > > > m_iDifT
std::vector< std::vector< std::vector< double > > > m_iDis
std::vector< std::vector< std::vector< double > > > m_nMob
std::vector< std::vector< std::vector< double > > > m_nVel
unsigned int m_eThrAlp = 0
unsigned int m_eThrAtt = 0
unsigned int m_hThrAlp = 0
unsigned int m_hThrAtt = 0
unsigned int m_iThrDis = 0
std::pair< unsigned int, unsigned int > m_extrVel = {0, 1}
std::pair< unsigned int, unsigned int > m_extrDif = {0, 1}
std::pair< unsigned int, unsigned int > m_extrAlp = {0, 1}
std::pair< unsigned int, unsigned int > m_extrAtt = {0, 1}
std::pair< unsigned int, unsigned int > m_extrLor = {0, 1}
std::pair< unsigned int, unsigned int > m_extrMob = {0, 1}
std::pair< unsigned int, unsigned int > m_extrDis = {0, 1}
unsigned int m_intpVel = 2
unsigned int m_intpDif = 2
unsigned int m_intpAlp = 2
unsigned int m_intpAtt = 2
unsigned int m_intpLor = 2
unsigned int m_intpMob = 2
unsigned int m_intpDis = 2
Static Protected Attributes inherited from Garfield::Medium
static int m_idCounter

Detailed Description

Solid crystalline silicon

Definition at line 14 of file MediumSilicon.hh.

Member Enumeration Documentation

◆ DopingMobility

enum class Garfield::MediumSilicon::DopingMobility
strongprivate
Enumerator
Minimos 
Masetti 

Definition at line 181 of file MediumSilicon.hh.

181{ Minimos = 0, Masetti };

◆ HighFieldMobility

Enumerator
Minimos 
Canali 
Reggiani 
Constant 

Definition at line 183 of file MediumSilicon.hh.

183{ Minimos = 0, Canali, Reggiani, Constant };

◆ ImpactIonisation

Enumerator
VanOverstraeten 
Grant 
Massey 
Okuto 

Definition at line 184 of file MediumSilicon.hh.

184{ VanOverstraeten = 0, Grant, Massey, Okuto };

◆ LatticeMobility

enum class Garfield::MediumSilicon::LatticeMobility
strongprivate
Enumerator
Sentaurus 
Minimos 
Reggiani 

Definition at line 180 of file MediumSilicon.hh.

180{ Sentaurus = 0, Minimos, Reggiani };

◆ SaturationVelocity

Enumerator
Minimos 
Canali 
Reggiani 

Definition at line 182 of file MediumSilicon.hh.

182{ Minimos = 0, Canali, Reggiani };

Constructor & Destructor Documentation

◆ MediumSilicon()

Garfield::MediumSilicon::MediumSilicon ( )

Constructor.

◆ ~MediumSilicon()

virtual Garfield::MediumSilicon::~MediumSilicon ( )
inlinevirtual

Destructor.

Definition at line 19 of file MediumSilicon.hh.

19{}

Member Function Documentation

◆ AcousticScatteringRates()

bool Garfield::MediumSilicon::AcousticScatteringRates ( const double rho,
const double kbt,
const double dp,
Band & band )
private

◆ ComputeDOS()

void Garfield::MediumSilicon::ComputeDOS ( )
private

◆ ComputeSecondaries()

void Garfield::MediumSilicon::ComputeSecondaries ( const double e0,
double & ee,
double & eh )

◆ ElectronAlpha()

double Garfield::MediumSilicon::ElectronAlpha ( const double e) const
private

◆ ElectronAttachment()

bool Garfield::MediumSilicon::ElectronAttachment ( const double ex,
const double ey,
const double ez,
const double bx,
const double by,
const double bz,
double & eta )
overridevirtual

Attachment coefficient [cm-1].

Reimplemented from Garfield::Medium.

◆ ElectronCollision()

bool Garfield::MediumSilicon::ElectronCollision ( const double e,
int & type,
int & level,
double & e1,
double & dx,
double & dy,
double & dz,
std::vector< Secondary > & secondaries,
int & band )
overridevirtual

Sample the collision type. Update energy and direction vector.

Reimplemented from Garfield::Medium.

◆ ElectronMobility() [1/2]

double Garfield::MediumSilicon::ElectronMobility ( )
inlineoverridevirtual

Low-field mobility [cm2 V-1 ns-1].

Reimplemented from Garfield::Medium.

Definition at line 128 of file MediumSilicon.hh.

128{ return m_eMu; }

◆ ElectronMobility() [2/2]

double Garfield::MediumSilicon::ElectronMobility ( const double e) const
private

◆ ElectronScatteringRates()

bool Garfield::MediumSilicon::ElectronScatteringRates ( )
private

◆ ElectronTownsend()

bool Garfield::MediumSilicon::ElectronTownsend ( const double ex,
const double ey,
const double ez,
const double bx,
const double by,
const double bz,
double & alpha )
overridevirtual

Ionisation coefficient [cm-1].

Reimplemented from Garfield::Medium.

◆ ElectronVelocity()

bool Garfield::MediumSilicon::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 )
overridevirtual

Drift velocity [cm / ns].

Reimplemented from Garfield::Medium.

◆ EnableAnisotropy()

void Garfield::MediumSilicon::EnableAnisotropy ( const bool on = true)
inline

Definition at line 116 of file MediumSilicon.hh.

◆ EnableFullBandDensityOfStates()

void Garfield::MediumSilicon::EnableFullBandDensityOfStates ( const bool on = true)
inline

Definition at line 113 of file MediumSilicon.hh.

113 {
114 m_fullBandDos = on;
115 }

◆ EnableNonParabolicity()

void Garfield::MediumSilicon::EnableNonParabolicity ( const bool on = true)
inline

Definition at line 112 of file MediumSilicon.hh.

◆ EnableScatteringRateOutput()

void Garfield::MediumSilicon::EnableScatteringRateOutput ( const bool on = true)
inline

Definition at line 111 of file MediumSilicon.hh.

◆ GetDielectricFunction()

bool Garfield::MediumSilicon::GetDielectricFunction ( const double e,
double & eps1,
double & eps2,
const unsigned int i = 0 )
overridevirtual

Get the complex dielectric function at a given energy.

Reimplemented from Garfield::Medium.

◆ GetDoping()

void Garfield::MediumSilicon::GetDoping ( char & type,
double & c ) const

Retrieve doping concentration.

◆ GetElectronBandPopulation()

int Garfield::MediumSilicon::GetElectronBandPopulation ( const int band)

◆ GetElectronCollisionRate()

double Garfield::MediumSilicon::GetElectronCollisionRate ( const double e,
const int band )
overridevirtual

Collision rate [ns-1] for given electron energy.

Reimplemented from Garfield::Medium.

◆ GetElectronEnergy()

double Garfield::MediumSilicon::GetElectronEnergy ( const double px,
const double py,
const double pz,
double & vx,
double & vy,
double & vz,
const int band = 0 )
overridevirtual

Dispersion relation (energy vs. wave vector)

Reimplemented from Garfield::Medium.

◆ GetElectronMomentum()

void Garfield::MediumSilicon::GetElectronMomentum ( const double e,
double & px,
double & py,
double & pz,
int & band )
overridevirtual

Sample the momentum vector for a given energy (only meaningful in semiconductors).

Reimplemented from Garfield::Medium.

◆ GetElectronNullCollisionRate()

double Garfield::MediumSilicon::GetElectronNullCollisionRate ( const int band)
overridevirtual

Null-collision rate [ns-1].

Reimplemented from Garfield::Medium.

◆ GetMaxElectronEnergy()

double Garfield::MediumSilicon::GetMaxElectronEnergy ( ) const
inline

Definition at line 105 of file MediumSilicon.hh.

105{ return m_cb[2].eFinal; }
std::array< Band, 3 > m_cb

◆ GetNumberOfElectronBands()

unsigned int Garfield::MediumSilicon::GetNumberOfElectronBands ( ) const

◆ GetNumberOfElectronCollisions() [1/2]

unsigned int Garfield::MediumSilicon::GetNumberOfElectronCollisions ( ) const

◆ GetNumberOfElectronCollisions() [2/2]

unsigned int Garfield::MediumSilicon::GetNumberOfElectronCollisions ( const unsigned int level) const

◆ GetNumberOfLevels()

unsigned int Garfield::MediumSilicon::GetNumberOfLevels ( ) const

◆ GetOpticalDataRange()

bool Garfield::MediumSilicon::GetOpticalDataRange ( double & emin,
double & emax,
const unsigned int i = 0 )
overridevirtual

Get the energy range [eV] of the available optical data.

Reimplemented from Garfield::Medium.

◆ HoleAlpha()

double Garfield::MediumSilicon::HoleAlpha ( const double e) const
private

◆ HoleAttachment()

bool Garfield::MediumSilicon::HoleAttachment ( const double ex,
const double ey,
const double ez,
const double bx,
const double by,
const double bz,
double & eta )
overridevirtual

Attachment coefficient [cm-1].

Reimplemented from Garfield::Medium.

◆ HoleMobility() [1/2]

double Garfield::MediumSilicon::HoleMobility ( )
inlineoverridevirtual

Low-field mobility [cm2 V-1 ns-1].

Reimplemented from Garfield::Medium.

Definition at line 140 of file MediumSilicon.hh.

140{ return m_hMu; }

◆ HoleMobility() [2/2]

double Garfield::MediumSilicon::HoleMobility ( const double e) const
private

◆ HoleScatteringRates()

bool Garfield::MediumSilicon::HoleScatteringRates ( )
private

◆ HoleTownsend()

bool Garfield::MediumSilicon::HoleTownsend ( const double ex,
const double ey,
const double ez,
const double bx,
const double by,
const double bz,
double & alpha )
overridevirtual

Ionisation coefficient [cm-1].

Reimplemented from Garfield::Medium.

◆ HoleVelocity()

bool Garfield::MediumSilicon::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 )
overridevirtual

Drift velocity [cm / ns].

Reimplemented from Garfield::Medium.

◆ ImpurityScatteringRates()

bool Garfield::MediumSilicon::ImpurityScatteringRates ( const double kbt,
Band & band )
private

◆ Initialise()

bool Garfield::MediumSilicon::Initialise ( )

◆ InitialiseDOS()

void Garfield::MediumSilicon::InitialiseDOS ( )
private

◆ IntervalleyScatteringRates()

bool Garfield::MediumSilicon::IntervalleyScatteringRates ( const double rho,
const double kbt,
const double dtk,
const double eph,
Band & bndI,
Band & bndF,
const double zF,
const int collType )
private

◆ IonisationRates()

bool Garfield::MediumSilicon::IonisationRates ( const std::vector< double > & p,
const std::vector< double > & eth,
const std::vector< double > & b,
Band & band )
private

◆ IsSemiconductor()

bool Garfield::MediumSilicon::IsSemiconductor ( ) const
inlineoverridevirtual

Is this medium a semiconductor?

Reimplemented from Garfield::Medium.

Definition at line 21 of file MediumSilicon.hh.

21{ return true; }

◆ LoadOpticalData()

bool Garfield::MediumSilicon::LoadOpticalData ( const std::string & filename)
private

◆ OpticalScatteringRates()

bool Garfield::MediumSilicon::OpticalScatteringRates ( const double rho,
const double kbt,
const double dtk,
const double eph,
Band & band )
private

◆ ResetCollisionCounters()

void Garfield::MediumSilicon::ResetCollisionCounters ( )

◆ SetDiffusionScaling()

void Garfield::MediumSilicon::SetDiffusionScaling ( const double d)
inline

Apply a scaling factor to the diffusion coefficients.

Definition at line 101 of file MediumSilicon.hh.

◆ SetDoping()

void Garfield::MediumSilicon::SetDoping ( const char type,
const double c )

Set doping concentration [cm-3] and type ('i', 'n', 'p').

◆ SetDopingMobilityModelMasetti()

void Garfield::MediumSilicon::SetDopingMobilityModelMasetti ( )

Use the Masetti model for the doping-dependence of the mobility (default).

◆ SetDopingMobilityModelMinimos()

void Garfield::MediumSilicon::SetDopingMobilityModelMinimos ( )

Use the Minimos model for the doping-dependence of the mobility.

◆ SetHighFieldMobilityModel()

void Garfield::MediumSilicon::SetHighFieldMobilityModel ( const std::string & model)

Set the parameterisation to be used for the drift velocity as function of the electric field.

The currently implemented models are

  • Canali
  • Reggiani
  • Minimos
  • Constant (velocity increases linearly with the electric field) The default is Canali.

◆ SetHighFieldMobilityModelCanali()

void Garfield::MediumSilicon::SetHighFieldMobilityModelCanali ( )

Parameterize the high-field mobility using the Canali model (default).

◆ SetHighFieldMobilityModelConstant()

void Garfield::MediumSilicon::SetHighFieldMobilityModelConstant ( )

Make the velocity proportional to the electric field (no saturation).

◆ SetHighFieldMobilityModelMinimos()

void Garfield::MediumSilicon::SetHighFieldMobilityModelMinimos ( )

Parameterize the high-field mobility using the Minimos model.

◆ SetHighFieldMobilityModelReggiani()

void Garfield::MediumSilicon::SetHighFieldMobilityModelReggiani ( )

Parameterize the high-field mobility using the Reggiani model.

◆ SetImpactIonisationModel()

void Garfield::MediumSilicon::SetImpactIonisationModel ( const std::string & model)

Set the parameterisation to be used for calculating the impact ionisation coefficient.

The currently implemented models are

  • van Overstraeten - de Man
  • Okuto - Crowell
  • Massey
  • Grant The default is van Overstraeten - de Man.

◆ SetImpactIonisationModelGrant()

void Garfield::MediumSilicon::SetImpactIonisationModelGrant ( )

Calculate α using the Grant model.

◆ SetImpactIonisationModelMassey()

void Garfield::MediumSilicon::SetImpactIonisationModelMassey ( )

Calculate α using the Massey model.

◆ SetImpactIonisationModelOkutoCrowell()

void Garfield::MediumSilicon::SetImpactIonisationModelOkutoCrowell ( )

Calculate α using the Okuto-Crowell model.

◆ SetImpactIonisationModelVanOverstraetenDeMan()

void Garfield::MediumSilicon::SetImpactIonisationModelVanOverstraetenDeMan ( )

Calculate α using the van Overstraeten-de Man model (default).

◆ SetLatticeMobilityModel()

void Garfield::MediumSilicon::SetLatticeMobilityModel ( const std::string & model)

Set the parameterisation to be used for calculating the lattice mobility model.

The currently implemented models are

  • Sentaurus
  • Reggiani
  • Minimos The default is Sentaurus.

◆ SetLatticeMobilityModelMinimos()

void Garfield::MediumSilicon::SetLatticeMobilityModelMinimos ( )

Calculate the lattice mobility using the Minimos model.

◆ SetLatticeMobilityModelReggiani()

void Garfield::MediumSilicon::SetLatticeMobilityModelReggiani ( )

Calculate the lattice mobility using the Reggiani model.

◆ SetLatticeMobilityModelSentaurus()

void Garfield::MediumSilicon::SetLatticeMobilityModelSentaurus ( )

Calculate the lattice mobility using the Sentaurus model (default).

◆ SetLowFieldMobility()

void Garfield::MediumSilicon::SetLowFieldMobility ( const double mue,
const double muh )

Specify the low field values of the electron and hole mobilities.

◆ SetMaxElectronEnergy()

bool Garfield::MediumSilicon::SetMaxElectronEnergy ( const double e)

◆ SetSaturationVelocity()

void Garfield::MediumSilicon::SetSaturationVelocity ( const double vsate,
const double vsath )

Specify the saturation velocities of electrons and holes.

◆ SetSaturationVelocityModelCanali()

void Garfield::MediumSilicon::SetSaturationVelocityModelCanali ( )

Calculate the saturation velocities using the Canali model (default).

◆ SetSaturationVelocityModelMinimos()

void Garfield::MediumSilicon::SetSaturationVelocityModelMinimos ( )

Calculate the saturation velocities using the Minimos model.

◆ SetSaturationVelocityModelReggiani()

void Garfield::MediumSilicon::SetSaturationVelocityModelReggiani ( )

Calculate the saturation velocities using the Reggiani model.

◆ SetTrapCrossSection()

void Garfield::MediumSilicon::SetTrapCrossSection ( const double ecs,
const double hcs )

Trapping cross-sections for electrons and holes.

◆ SetTrapDensity()

void Garfield::MediumSilicon::SetTrapDensity ( const double n)

Trap density [cm-3], by default set to zero.

◆ SetTrappingTime()

void Garfield::MediumSilicon::SetTrappingTime ( const double etau,
const double htau )

Set time constant for trapping of electrons and holes [ns].

◆ Update()

bool Garfield::MediumSilicon::Update ( )
private

◆ UpdateDopingMobilityMasetti()

void Garfield::MediumSilicon::UpdateDopingMobilityMasetti ( )
private

◆ UpdateDopingMobilityMinimos()

void Garfield::MediumSilicon::UpdateDopingMobilityMinimos ( )
private

◆ UpdateHighFieldMobilityCanali()

void Garfield::MediumSilicon::UpdateHighFieldMobilityCanali ( )
private

◆ UpdateImpactIonisation()

void Garfield::MediumSilicon::UpdateImpactIonisation ( )
private

◆ UpdateLatticeMobility()

void Garfield::MediumSilicon::UpdateLatticeMobility ( )
private

◆ UpdateSaturationVelocity()

void Garfield::MediumSilicon::UpdateSaturationVelocity ( )
private

Member Data Documentation

◆ m_anisotropic

bool Garfield::MediumSilicon::m_anisotropic = true
private

Definition at line 254 of file MediumSilicon.hh.

◆ m_bandGap

double Garfield::MediumSilicon::m_bandGap = 1.12
private

Definition at line 191 of file MediumSilicon.hh.

◆ m_cb

std::array<Band, 3> Garfield::MediumSilicon::m_cb
private

Definition at line 292 of file MediumSilicon.hh.

◆ m_cbIndex

std::vector<size_t> Garfield::MediumSilicon::m_cbIndex
private

Definition at line 293 of file MediumSilicon.hh.

◆ m_cDop

double Garfield::MediumSilicon::m_cDop = 0.
private

Definition at line 195 of file MediumSilicon.hh.

◆ m_cfOutput

bool Garfield::MediumSilicon::m_cfOutput = false
private

Definition at line 251 of file MediumSilicon.hh.

◆ m_diffScale

double Garfield::MediumSilicon::m_diffScale = 1.
private

Definition at line 189 of file MediumSilicon.hh.

◆ m_dopingMobilityModel

DopingMobility Garfield::MediumSilicon::m_dopingMobilityModel = DopingMobility::Masetti
private

Definition at line 245 of file MediumSilicon.hh.

◆ m_dopingType

char Garfield::MediumSilicon::m_dopingType = 'i'
private

Definition at line 193 of file MediumSilicon.hh.

◆ m_eBetaCanali

double Garfield::MediumSilicon::m_eBetaCanali = 1.109
private

Definition at line 204 of file MediumSilicon.hh.

◆ m_eBetaCanaliInv

double Garfield::MediumSilicon::m_eBetaCanaliInv = 1. / 1.109
private

Definition at line 206 of file MediumSilicon.hh.

◆ m_egamma

std::vector<double> Garfield::MediumSilicon::m_egamma
private

Definition at line 315 of file MediumSilicon.hh.

◆ m_eHallFactor

double Garfield::MediumSilicon::m_eHallFactor = 1.15
private

Definition at line 215 of file MediumSilicon.hh.

◆ m_eImpactA0

double Garfield::MediumSilicon::m_eImpactA0 = 3.318e5
private

Definition at line 230 of file MediumSilicon.hh.

◆ m_eImpactA1

double Garfield::MediumSilicon::m_eImpactA1 = 0.703e6
private

Definition at line 231 of file MediumSilicon.hh.

◆ m_eImpactA2

double Garfield::MediumSilicon::m_eImpactA2 = 0.
private

Definition at line 232 of file MediumSilicon.hh.

◆ m_eImpactB0

double Garfield::MediumSilicon::m_eImpactB0 = 1.135e6
private

Definition at line 233 of file MediumSilicon.hh.

◆ m_eImpactB1

double Garfield::MediumSilicon::m_eImpactB1 = 1.231e6
private

Definition at line 234 of file MediumSilicon.hh.

◆ m_eImpactB2

double Garfield::MediumSilicon::m_eImpactB2 = 0.
private

Definition at line 235 of file MediumSilicon.hh.

◆ m_eMu

double Garfield::MediumSilicon::m_eMu = 1.35e-6
private

Definition at line 201 of file MediumSilicon.hh.

◆ m_eMuLat

double Garfield::MediumSilicon::m_eMuLat = 1.35e-6
private

Definition at line 198 of file MediumSilicon.hh.

◆ m_eps1

std::vector<double> Garfield::MediumSilicon::m_eps1
private

Definition at line 316 of file MediumSilicon.hh.

◆ m_eps2

std::vector<double> Garfield::MediumSilicon::m_eps2
private

Definition at line 317 of file MediumSilicon.hh.

◆ m_eRs

double Garfield::MediumSilicon::m_eRs = 1.35e-6 / 1.02e-2
private

Definition at line 212 of file MediumSilicon.hh.

◆ m_eStepDos

double Garfield::MediumSilicon::m_eStepDos = 0.
private

Definition at line 307 of file MediumSilicon.hh.

◆ m_eTrapCs

double Garfield::MediumSilicon::m_eTrapCs = 1.e-15
private

Definition at line 219 of file MediumSilicon.hh.

◆ m_eTrapDensity

double Garfield::MediumSilicon::m_eTrapDensity = 0.
private

Definition at line 221 of file MediumSilicon.hh.

◆ m_eTrapRate

double Garfield::MediumSilicon::m_eTrapRate = 0.
private

Definition at line 225 of file MediumSilicon.hh.

◆ m_eTrapTime

double Garfield::MediumSilicon::m_eTrapTime = 0.
private

Definition at line 223 of file MediumSilicon.hh.

◆ m_eVs

double Garfield::MediumSilicon::m_eVs = 1.02e-2
private

Definition at line 209 of file MediumSilicon.hh.

◆ m_fbDosC

std::vector<double> Garfield::MediumSilicon::m_fbDosC
private

Definition at line 310 of file MediumSilicon.hh.

◆ m_fbDosMaxC

double Garfield::MediumSilicon::m_fbDosMaxC
private

Definition at line 311 of file MediumSilicon.hh.

◆ m_fbDosMaxV

double Garfield::MediumSilicon::m_fbDosMaxV
private

Definition at line 311 of file MediumSilicon.hh.

◆ m_fbDosV

std::vector<double> Garfield::MediumSilicon::m_fbDosV
private

Definition at line 309 of file MediumSilicon.hh.

◆ m_fullBandDos

bool Garfield::MediumSilicon::m_fullBandDos = false
private

Definition at line 253 of file MediumSilicon.hh.

◆ m_hasUserMobility

bool Garfield::MediumSilicon::m_hasUserMobility = false
private

Definition at line 242 of file MediumSilicon.hh.

◆ m_hasUserSaturationVelocity

bool Garfield::MediumSilicon::m_hasUserSaturationVelocity = false
private

Definition at line 243 of file MediumSilicon.hh.

◆ m_hBetaCanali

double Garfield::MediumSilicon::m_hBetaCanali = 1.213
private

Definition at line 205 of file MediumSilicon.hh.

◆ m_hBetaCanaliInv

double Garfield::MediumSilicon::m_hBetaCanaliInv = 1. / 1.213
private

Definition at line 207 of file MediumSilicon.hh.

◆ m_hHallFactor

double Garfield::MediumSilicon::m_hHallFactor = 0.7
private

Definition at line 216 of file MediumSilicon.hh.

◆ m_highFieldMobilityModel

HighFieldMobility Garfield::MediumSilicon::m_highFieldMobilityModel = HighFieldMobility::Canali
private

Definition at line 247 of file MediumSilicon.hh.

◆ m_hImpactA0

double Garfield::MediumSilicon::m_hImpactA0 = 1.582e6
private

Definition at line 236 of file MediumSilicon.hh.

◆ m_hImpactA1

double Garfield::MediumSilicon::m_hImpactA1 = 0.671e6
private

Definition at line 237 of file MediumSilicon.hh.

◆ m_hImpactB0

double Garfield::MediumSilicon::m_hImpactB0 = 2.036e6
private

Definition at line 238 of file MediumSilicon.hh.

◆ m_hImpactB1

double Garfield::MediumSilicon::m_hImpactB1 = 1.693e6
private

Definition at line 239 of file MediumSilicon.hh.

◆ m_hMu

double Garfield::MediumSilicon::m_hMu = 0.45e-6
private

Definition at line 202 of file MediumSilicon.hh.

◆ m_hMuLat

double Garfield::MediumSilicon::m_hMuLat = 0.45e-6
private

Definition at line 199 of file MediumSilicon.hh.

◆ m_hRs

double Garfield::MediumSilicon::m_hRs = 0.45e-6 / 0.72e-2
private

Definition at line 213 of file MediumSilicon.hh.

◆ m_hTrapCs

double Garfield::MediumSilicon::m_hTrapCs = 1.e-15
private

Definition at line 220 of file MediumSilicon.hh.

◆ m_hTrapDensity

double Garfield::MediumSilicon::m_hTrapDensity = 0.
private

Definition at line 222 of file MediumSilicon.hh.

◆ m_hTrapRate

double Garfield::MediumSilicon::m_hTrapRate = 0.
private

Definition at line 226 of file MediumSilicon.hh.

◆ m_hTrapTime

double Garfield::MediumSilicon::m_hTrapTime = 0.
private

Definition at line 224 of file MediumSilicon.hh.

◆ m_hVs

double Garfield::MediumSilicon::m_hVs = 0.72e-2
private

Definition at line 210 of file MediumSilicon.hh.

◆ m_impactIonisationModel

ImpactIonisation Garfield::MediumSilicon::m_impactIonisationModel = ImpactIonisation::VanOverstraeten
private

Definition at line 248 of file MediumSilicon.hh.

◆ m_invStepDos

double Garfield::MediumSilicon::m_invStepDos = 0.
private

Definition at line 308 of file MediumSilicon.hh.

◆ m_latticeMobilityModel

LatticeMobility Garfield::MediumSilicon::m_latticeMobilityModel = LatticeMobility::Sentaurus
private

Definition at line 244 of file MediumSilicon.hh.

◆ m_mutex

std::mutex Garfield::MediumSilicon::m_mutex
private

Definition at line 186 of file MediumSilicon.hh.

◆ m_nCollElectronAcoustic

unsigned int Garfield::MediumSilicon::m_nCollElectronAcoustic = 0
private

Definition at line 298 of file MediumSilicon.hh.

◆ m_nCollElectronBand

std::vector<unsigned int> Garfield::MediumSilicon::m_nCollElectronBand
private

Definition at line 304 of file MediumSilicon.hh.

◆ m_nCollElectronDetailed

std::vector<unsigned int> Garfield::MediumSilicon::m_nCollElectronDetailed
private

Definition at line 303 of file MediumSilicon.hh.

◆ m_nCollElectronImpurity

unsigned int Garfield::MediumSilicon::m_nCollElectronImpurity = 0
private

Definition at line 301 of file MediumSilicon.hh.

◆ m_nCollElectronIntervalley

unsigned int Garfield::MediumSilicon::m_nCollElectronIntervalley = 0
private

Definition at line 300 of file MediumSilicon.hh.

◆ m_nCollElectronIonisation

unsigned int Garfield::MediumSilicon::m_nCollElectronIonisation = 0
private

Definition at line 302 of file MediumSilicon.hh.

◆ m_nCollElectronOptical

unsigned int Garfield::MediumSilicon::m_nCollElectronOptical = 0
private

Definition at line 299 of file MediumSilicon.hh.

◆ m_nonParabolic

bool Garfield::MediumSilicon::m_nonParabolic = true
private

Definition at line 252 of file MediumSilicon.hh.

◆ m_opticalDataFile

std::string Garfield::MediumSilicon::m_opticalDataFile = "OpticalData_Si.txt"
private

Definition at line 314 of file MediumSilicon.hh.

◆ m_saturationVelocityModel

SaturationVelocity Garfield::MediumSilicon::m_saturationVelocityModel = SaturationVelocity::Canali
private

Definition at line 246 of file MediumSilicon.hh.

◆ m_trappingModel

int Garfield::MediumSilicon::m_trappingModel = 0
private

Definition at line 227 of file MediumSilicon.hh.

◆ m_vb

Band Garfield::MediumSilicon::m_vb
private

Definition at line 295 of file MediumSilicon.hh.


The documentation for this class was generated from the following file: