|
| 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 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 | 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 | 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 | 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 | 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 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) |
| Sample the momentum vector for a given energy (only meaningful in semiconductors).
|
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 | ElectronCollision (const double e, int &type, int &level, double &e1, double &dx, double &dy, double &dz, std::vector< Secondary > &secondaries, int &band) |
| Sample the collision type. Update energy and direction vector.
|
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) |
| 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 | 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 | 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.
|
|
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) |