|
Garfield++ 3.0
A toolkit for the detailed simulation of particle detectors based on ionisation measurement in gases and semiconductors
|
Solid crystalline silicon More...
#include <MediumSilicon.hh>
Inheritance diagram for Garfield::MediumSilicon: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]. | |
| 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]. | |
| void | SetLowFieldMobility (const double mue, const double muh) |
| Specify the low field values of the electron and hole mobilities. | |
| 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 | 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 | 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 | 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) |
| 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 |
| 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 | GetElectronCollision (const double e, int &type, int &level, double &e1, double &dx, double &dy, double &dz, std::vector< std::pair< int, double > > &secondaries, int &ndxc, int &band) override |
| Sample the collision type. Update energy and direction vector. | |
| double | GetConductionBandDensityOfStates (const double e, const int band=0) |
| double | GetValenceBandDensityOfStates (const double e, const int band=-1) |
| 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 | IsSemiconductor () const |
| Is this medium a semiconductor? | |
| 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 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 () |
| Get the W value. | |
| void | SetFanoFactor (const double f) |
| Set the Fano factor. | |
| double | GetFanoFactor () |
| Get the Fano factor. | |
| 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 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]) |
| 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]. | |
| 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]. | |
| 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 double | ElectronMobility () |
| Low-field mobility [cm2 V-1 ns-1]. | |
| virtual double | GetElectronEnergy (const double px, const double py, const double pz, double &vx, double &vy, double &vz, const int band=0) |
| Dispersion relation (energy vs. wave vector) | |
| virtual void | GetElectronMomentum (const double e, double &px, double &py, double &pz, int &band) |
| virtual double | GetElectronNullCollisionRate (const int band=0) |
| Null-collision rate [ns-1]. | |
| virtual double | GetElectronCollisionRate (const double e, const int band=0) |
| Collision rate [ns-1] for given electron energy. | |
| virtual bool | GetElectronCollision (const double e, int &type, int &level, double &e1, double &dx, double &dy, double &dz, std::vector< std::pair< int, double > > &secondaries, int &ndxc, int &band) |
| Sample the collision type. Update energy and direction vector. | |
| virtual unsigned int | GetNumberOfDeexcitationProducts () const |
| virtual bool | GetDeexcitationProduct (const unsigned int i, double &t, double &s, int &type, double &energy) const |
| 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]. | |
| 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 | 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 | 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]. | |
| virtual double | HoleMobility () |
| Low-field mobility [cm2 V-1 ns-1]. | |
| 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) |
| Drift velocity [cm / ns]. | |
| 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 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 unsigned int ie, const unsigned int ib, const unsigned int ia, const double v) |
| Set an entry in the table of drift speeds along E. | |
| bool | GetElectronVelocityE (const unsigned int ie, const unsigned int ib, const unsigned int ia, double &v) |
| Get an entry in the table of drift speeds along E. | |
| bool | SetElectronVelocityExB (const unsigned int ie, const unsigned int ib, const unsigned int ia, const double v) |
| Set an entry in the table of drift speeds along ExB. | |
| bool | GetElectronVelocityExB (const unsigned int ie, const unsigned int ib, const unsigned int ia, double &v) |
| Get an entry in the table of drift speeds along ExB. | |
| bool | SetElectronVelocityB (const unsigned int ie, const unsigned int ib, const unsigned int ia, const double v) |
| Set an entry in the table of drift speeds along Btrans. | |
| bool | GetElectronVelocityB (const unsigned int ie, const unsigned int ib, const unsigned int ia, double &v) |
| Get an entry in the table of drift speeds along Btrans. | |
| bool | SetElectronLongitudinalDiffusion (const unsigned int ie, const unsigned int ib, const unsigned int ia, const double dl) |
| Set an entry in the table of longitudinal diffusion coefficients. | |
| bool | GetElectronLongitudinalDiffusion (const unsigned int ie, const unsigned int ib, const unsigned int ia, double &dl) |
| Get an entry in the table of longitudinal diffusion coefficients. | |
| bool | SetElectronTransverseDiffusion (const unsigned int ie, const unsigned int ib, const unsigned int ia, const double dt) |
| Set an entry in the table of transverse diffusion coefficients. | |
| bool | GetElectronTransverseDiffusion (const unsigned int ie, const unsigned int ib, const unsigned int ia, double &dt) |
| Get an entry in the table of transverse diffusion coefficients. | |
| bool | SetElectronTownsend (const unsigned int ie, const unsigned int ib, const unsigned int ia, const double alpha) |
| Set an entry in the table of Townsend coefficients. | |
| bool | GetElectronTownsend (const unsigned int ie, const unsigned int ib, const unsigned int ia, double &alpha) |
| Get an entry in the table of Townsend coefficients. | |
| bool | SetElectronAttachment (const unsigned int ie, const unsigned int ib, const unsigned int ia, const double eta) |
| Set an entry in the table of attachment coefficients. | |
| bool | GetElectronAttachment (const unsigned int ie, const unsigned int ib, const unsigned int ia, double &eta) |
| Get an entry in the table of attachment coefficients. | |
| bool | SetElectronLorentzAngle (const unsigned int ie, const unsigned int ib, const unsigned int ia, const double lor) |
| Set an entry in the table of Lorentz angles. | |
| bool | GetElectronLorentzAngle (const unsigned int ie, const unsigned int ib, const unsigned int ia, double &lor) |
| Get an entry in the table of Lorentz angles. | |
| bool | SetHoleVelocityE (const unsigned int ie, const unsigned int ib, const unsigned int ia, const double v) |
| Set an entry in the table of drift speeds along E. | |
| bool | GetHoleVelocityE (const unsigned int ie, const unsigned int ib, const unsigned int ia, double &v) |
| Get an entry in the table of drift speeds along E. | |
| bool | SetHoleVelocityExB (const unsigned int ie, const unsigned int ib, const unsigned int ia, const double v) |
| Set an entry in the table of drift speeds along ExB. | |
| bool | GetHoleVelocityExB (const unsigned int ie, const unsigned int ib, const unsigned int ia, double &v) |
| Get an entry in the table of drift speeds along ExB. | |
| bool | SetHoleVelocityB (const unsigned int ie, const unsigned int ib, const unsigned int ia, const double v) |
| Set an entry in the table of drift speeds along Btrans. | |
| bool | GetHoleVelocityB (const unsigned int ie, const unsigned int ib, const unsigned int ia, double &v) |
| Get an entry in the table of drift speeds along Btrans. | |
| bool | SetHoleLongitudinalDiffusion (const unsigned int ie, const unsigned int ib, const unsigned int ia, const double dl) |
| Set an entry in the table of longitudinal diffusion coefficients. | |
| bool | GetHoleLongitudinalDiffusion (const unsigned int ie, const unsigned int ib, const unsigned int ia, double &dl) |
| Get an entry in the table of longitudinal diffusion coefficients. | |
| bool | SetHoleTransverseDiffusion (const unsigned int ie, const unsigned int ib, const unsigned int ia, const double dt) |
| Set an entry in the table of transverse diffusion coefficients. | |
| bool | GetHoleTransverseDiffusion (const unsigned int ie, const unsigned int ib, const unsigned int ia, double &dt) |
| Get an entry in the table of transverse diffusion coefficients. | |
| bool | SetHoleTownsend (const unsigned int ie, const unsigned int ib, const unsigned int ia, const double alpha) |
| Set an entry in the table of Townsend coefficients. | |
| bool | GetHoleTownsend (const unsigned int ie, const unsigned int ib, const unsigned int ia, double &alpha) |
| Get an entry in the table of Townsend coefficients. | |
| bool | SetHoleAttachment (const unsigned int ie, const unsigned int ib, const unsigned int ia, const double eta) |
| Set an entry in the table of attachment coefficients. | |
| bool | GetHoleAttachment (const unsigned int ie, const unsigned int ib, const unsigned int ia, double &eta) |
| Get an entry in the table of attachment coefficients. | |
| bool | SetIonMobility (const std::vector< double > &fields, const std::vector< double > &mobilities) |
| bool | SetIonMobility (const unsigned int ie, const unsigned int ib, const unsigned int ia, const double mu) |
| Set an entry in the table of ion mobilities. | |
| bool | GetIonMobility (const unsigned int ie, const unsigned int ib, const unsigned int ia, double &mu) |
| Get an entry in the table of ion mobilities. | |
| bool | SetIonLongitudinalDiffusion (const unsigned int ie, const unsigned int ib, const unsigned int ia, const double dl) |
| Set an entry in the table of longitudinal diffusion coefficients. | |
| bool | GetIonLongitudinalDiffusion (const unsigned int ie, const unsigned int ib, const unsigned int ia, double &dl) |
| Get an entry in the table of longitudinal diffusion coefficients. | |
| bool | SetIonTransverseDiffusion (const unsigned int ie, const unsigned int ib, const unsigned int ia, const double dt) |
| Set an entry in the table of transverse diffusion coefficients. | |
| bool | GetIonTransverseDiffusion (const unsigned int ie, const unsigned int ib, const unsigned int ia, double &dt) |
| Get an entry in the table of transverse diffusion coefficients. | |
| bool | SetIonDissociation (const unsigned int ie, const unsigned int ib, const unsigned int ia, const double diss) |
| Set an entry in the table of dissociation coefficients. | |
| bool | GetIonDissociation (const unsigned int ie, const unsigned int ib, const unsigned int ia, double &diss) |
| Get an entry in the table of dissociation coefficients. | |
| virtual void | ResetTables () |
| Reset all tables of transport parameters. | |
| void | ResetElectronVelocity () |
| void | ResetElectronDiffusion () |
| void | ResetElectronTownsend () |
| void | ResetElectronAttachment () |
| void | ResetElectronLorentzAngle () |
| void | ResetHoleVelocity () |
| void | ResetHoleDiffusion () |
| void | ResetHoleTownsend () |
| void | ResetHoleAttachment () |
| void | ResetIonMobility () |
| void | ResetIonDiffusion () |
| void | ResetIonDissociation () |
| void | SetExtrapolationMethodVelocity (const std::string &extrLow, const std::string &extrHigh) |
| 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 | GetOpticalDataRange (double &emin, double &emax, const unsigned int i=0) |
| Get the energy range [eV] of the available optical data. | |
| virtual bool | GetDielectricFunction (const double e, double &eps1, double &eps2, const unsigned int i=0) |
| Get the complex dielectric function at a given energy. | |
| virtual bool | GetPhotoAbsorptionCrossSection (const double e, double &sigma, const unsigned int i=0) |
| virtual double | GetPhotonCollisionRate (const double e) |
| virtual bool | GetPhotonCollision (const double e, int &type, int &level, double &e1, double &ctheta, int &nsec, double &esec) |
| void | EnableDebugging () |
| Switch on/off debugging messages. | |
| void | DisableDebugging () |
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 | 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 |
| 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 | SetEntry (const unsigned int i, const unsigned int j, const unsigned int k, const std::string &fcn, std::vector< std::vector< std::vector< double > > > &tab, const double val) |
| bool | GetEntry (const unsigned int i, const unsigned int j, const unsigned int 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 |
| unsigned int | 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 unsigned int 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) |
Protected Attributes inherited from Garfield::Medium | |
| std::string | m_className = "Medium" |
| int | m_id |
| std::string | m_name = "" |
| double | m_temperature = 293.15 |
| double | m_pressure = 760. |
| double | m_epsilon = 1. |
| unsigned int | m_nComponents = 1 |
| double | m_z = 1. |
| double | m_a = 0. |
| double | m_density = 0. |
| 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 |
| std::vector< double > | m_eFields |
| std::vector< double > | m_bFields |
| std::vector< double > | m_bAngles |
| bool | m_tab2d = false |
| 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< 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_iDifL |
| std::vector< std::vector< std::vector< double > > > | m_iDifT |
| std::vector< std::vector< std::vector< double > > > | m_iDis |
| 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 = -1 |
Solid crystalline silicon
Definition at line 9 of file MediumSilicon.hh.
| Garfield::MediumSilicon::MediumSilicon | ( | ) |
Constructor.
Definition at line 15 of file MediumSilicon.cc.
|
inlinevirtual |
| void Garfield::MediumSilicon::ComputeSecondaries | ( | const double | e0, |
| double & | ee, | ||
| double & | eh | ||
| ) |
Definition at line 2937 of file MediumSilicon.cc.
Referenced by GetElectronCollision().
|
overridevirtual |
Attachment coefficient [cm-1].
Reimplemented from Garfield::Medium.
Definition at line 232 of file MediumSilicon.cc.
|
inlineoverridevirtual |
Low-field mobility [cm2 V-1 ns-1].
Reimplemented from Garfield::Medium.
Definition at line 40 of file MediumSilicon.hh.
|
overridevirtual |
Ionisation coefficient [cm-1].
Reimplemented from Garfield::Medium.
Definition at line 194 of file MediumSilicon.cc.
|
overridevirtual |
Drift velocity [cm / ns].
Reimplemented from Garfield::Medium.
Definition at line 135 of file MediumSilicon.cc.
Referenced by ElectronAttachment().
|
inline |
Definition at line 106 of file MediumSilicon.hh.
|
inline |
Definition at line 103 of file MediumSilicon.hh.
|
inline |
Definition at line 102 of file MediumSilicon.hh.
|
inline |
Definition at line 101 of file MediumSilicon.hh.
| double Garfield::MediumSilicon::GetConductionBandDensityOfStates | ( | const double | e, |
| const int | band = 0 |
||
| ) |
Definition at line 2802 of file MediumSilicon.cc.
Referenced by GetConductionBandDensityOfStates(), and GetElectronMomentum().
|
overridevirtual |
Get the complex dielectric function at a given energy.
Reimplemented from Garfield::Medium.
Definition at line 1188 of file MediumSilicon.cc.
| void Garfield::MediumSilicon::GetDoping | ( | char & | type, |
| double & | c | ||
| ) | const |
Retrieve doping concentration.
Definition at line 79 of file MediumSilicon.cc.
| int Garfield::MediumSilicon::GetElectronBandPopulation | ( | const int | band | ) |
Definition at line 1154 of file MediumSilicon.cc.
|
overridevirtual |
Sample the collision type. Update energy and direction vector.
Reimplemented from Garfield::Medium.
Definition at line 796 of file MediumSilicon.cc.
|
overridevirtual |
Collision rate [ns-1] for given electron energy.
Reimplemented from Garfield::Medium.
Definition at line 744 of file MediumSilicon.cc.
|
overridevirtual |
Dispersion relation (energy vs. wave vector)
Reimplemented from Garfield::Medium.
Definition at line 530 of file MediumSilicon.cc.
|
overridevirtual |
Sample the momentum vector for a given energy (only meaningful in semiconductors).
Reimplemented from Garfield::Medium.
Definition at line 615 of file MediumSilicon.cc.
|
overridevirtual |
Null-collision rate [ns-1].
Reimplemented from Garfield::Medium.
Definition at line 722 of file MediumSilicon.cc.
|
inline |
Definition at line 95 of file MediumSilicon.hh.
| unsigned int Garfield::MediumSilicon::GetNumberOfElectronBands | ( | ) | const |
Definition at line 1150 of file MediumSilicon.cc.
| unsigned int Garfield::MediumSilicon::GetNumberOfElectronCollisions | ( | ) | const |
Definition at line 1129 of file MediumSilicon.cc.
| unsigned int Garfield::MediumSilicon::GetNumberOfElectronCollisions | ( | const unsigned int | level | ) | const |
Definition at line 1139 of file MediumSilicon.cc.
| unsigned int Garfield::MediumSilicon::GetNumberOfLevels | ( | ) | const |
Definition at line 1135 of file MediumSilicon.cc.
|
overridevirtual |
Get the energy range [eV] of the available optical data.
Reimplemented from Garfield::Medium.
Definition at line 1164 of file MediumSilicon.cc.
| double Garfield::MediumSilicon::GetValenceBandDensityOfStates | ( | const double | e, |
| const int | band = -1 |
||
| ) |
Definition at line 2914 of file MediumSilicon.cc.
|
overridevirtual |
Attachment coefficient [cm-1].
Reimplemented from Garfield::Medium.
Definition at line 365 of file MediumSilicon.cc.
|
inlineoverridevirtual |
Low-field mobility [cm2 V-1 ns-1].
Reimplemented from Garfield::Medium.
Definition at line 51 of file MediumSilicon.hh.
|
overridevirtual |
Ionisation coefficient [cm-1].
Reimplemented from Garfield::Medium.
Definition at line 327 of file MediumSilicon.cc.
|
overridevirtual |
Drift velocity [cm / ns].
Reimplemented from Garfield::Medium.
Definition at line 270 of file MediumSilicon.cc.
Referenced by HoleAttachment().
| bool Garfield::MediumSilicon::Initialise | ( | ) |
Definition at line 1254 of file MediumSilicon.cc.
|
inlineoverridevirtual |
Is this medium a semiconductor?
Reimplemented from Garfield::Medium.
Definition at line 16 of file MediumSilicon.hh.
| void Garfield::MediumSilicon::ResetCollisionCounters | ( | ) |
Definition at line 1118 of file MediumSilicon.cc.
|
inline |
Apply a scaling factor to the diffusion coefficients.
Definition at line 91 of file MediumSilicon.hh.
| void Garfield::MediumSilicon::SetDoping | ( | const char | type, |
| const double | c | ||
| ) |
Set doping concentration [cm-3] and type ('i', 'n', 'p').
Definition at line 43 of file MediumSilicon.cc.
| void Garfield::MediumSilicon::SetDopingMobilityModelMasetti | ( | ) |
Use the Masetti model for the doping-dependence of the mobility (default).
Definition at line 440 of file MediumSilicon.cc.
| void Garfield::MediumSilicon::SetDopingMobilityModelMinimos | ( | ) |
Use the Minimos model for the doping-dependence of the mobility.
Definition at line 434 of file MediumSilicon.cc.
| void Garfield::MediumSilicon::SetHighFieldMobilityModelCanali | ( | ) |
Parameterize the high-field mobility using the Canali model (default).
Definition at line 484 of file MediumSilicon.cc.
| void Garfield::MediumSilicon::SetHighFieldMobilityModelConstant | ( | ) |
Make the velocity proportional to the electric field (no saturation).
Definition at line 494 of file MediumSilicon.cc.
| void Garfield::MediumSilicon::SetHighFieldMobilityModelMinimos | ( | ) |
Parameterize the high-field mobility using the Minimos model.
Definition at line 479 of file MediumSilicon.cc.
| void Garfield::MediumSilicon::SetHighFieldMobilityModelReggiani | ( | ) |
Parameterize the high-field mobility using the Reggiani model.
Definition at line 489 of file MediumSilicon.cc.
| void Garfield::MediumSilicon::SetImpactIonisationModelGrant | ( | ) |
Calculate α using the Grant model.
Definition at line 503 of file MediumSilicon.cc.
| void Garfield::MediumSilicon::SetImpactIonisationModelMassey | ( | ) |
Calculate α using the Massey model.
Definition at line 508 of file MediumSilicon.cc.
| void Garfield::MediumSilicon::SetImpactIonisationModelVanOverstraetenDeMan | ( | ) |
Calculate α using the van Overstraeten-de Man model (default).
Definition at line 498 of file MediumSilicon.cc.
| void Garfield::MediumSilicon::SetLatticeMobilityModelMinimos | ( | ) |
Calculate the lattice mobility using the Minimos model.
Definition at line 416 of file MediumSilicon.cc.
| void Garfield::MediumSilicon::SetLatticeMobilityModelReggiani | ( | ) |
Calculate the lattice mobility using the Reggiani model.
Definition at line 428 of file MediumSilicon.cc.
| void Garfield::MediumSilicon::SetLatticeMobilityModelSentaurus | ( | ) |
Calculate the lattice mobility using the Sentaurus model (default).
Definition at line 422 of file MediumSilicon.cc.
| void Garfield::MediumSilicon::SetLowFieldMobility | ( | const double | mue, |
| const double | muh | ||
| ) |
Specify the low field values of the electron and hole mobilities.
Definition at line 403 of file MediumSilicon.cc.
| bool Garfield::MediumSilicon::SetMaxElectronEnergy | ( | const double | e | ) |
Definition at line 513 of file MediumSilicon.cc.
Referenced by GetElectronCollision(), and GetElectronCollisionRate().
| void Garfield::MediumSilicon::SetSaturationVelocity | ( | const double | vsate, |
| const double | vsath | ||
| ) |
Specify the saturation velocities of electrons and holes.
Definition at line 446 of file MediumSilicon.cc.
| void Garfield::MediumSilicon::SetSaturationVelocityModelCanali | ( | ) |
Calculate the saturation velocities using the Canali model (default).
Definition at line 467 of file MediumSilicon.cc.
| void Garfield::MediumSilicon::SetSaturationVelocityModelMinimos | ( | ) |
Calculate the saturation velocities using the Minimos model.
Definition at line 461 of file MediumSilicon.cc.
| void Garfield::MediumSilicon::SetSaturationVelocityModelReggiani | ( | ) |
Calculate the saturation velocities using the Reggiani model.
Definition at line 473 of file MediumSilicon.cc.
| void Garfield::MediumSilicon::SetTrapCrossSection | ( | const double | ecs, |
| const double | hcs | ||
| ) |
Trapping cross-sections for electrons and holes.
Definition at line 84 of file MediumSilicon.cc.
| void Garfield::MediumSilicon::SetTrapDensity | ( | const double | n | ) |
Trap density [cm-3], by default set to zero.
Definition at line 103 of file MediumSilicon.cc.
| void Garfield::MediumSilicon::SetTrappingTime | ( | const double | etau, |
| const double | htau | ||
| ) |
Set time constant for trapping of electrons and holes [ns].
Definition at line 116 of file MediumSilicon.cc.