Garfield++ 3.0
A toolkit for the detailed simulation of particle detectors based on ionisation measurement in gases and semiconductors
|
Plastic medium. More...
#include <MediumPlastic.hh>
Public Member Functions | |
MediumPlastic () | |
virtual | ~MediumPlastic () |
void | EnableDrift (const bool) override |
Switch electron/ion/hole on/off. | |
void | EnablePrimaryIonisation (const bool) override |
Make the medium ionisable or non-ionisable. | |
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 |
Plastic medium.
Definition at line 10 of file MediumPlastic.hh.
|
inline |
Definition at line 13 of file MediumPlastic.hh.
|
inlinevirtual |
Definition at line 18 of file MediumPlastic.hh.
|
inlineoverridevirtual |
Switch electron/ion/hole on/off.
Reimplemented from Garfield::Medium.
Definition at line 20 of file MediumPlastic.hh.
|
inlineoverridevirtual |
Make the medium ionisable or non-ionisable.
Reimplemented from Garfield::Medium.
Definition at line 21 of file MediumPlastic.hh.