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

Base class for gas media. More...

#include <MediumGas.hh>

Inheritance diagram for Garfield::MediumGas:
Garfield::Medium Garfield::MediumMagboltz

Classes

struct  ExcLevel
struct  IonLevel

Public Member Functions

 MediumGas ()
 Constructor.
virtual ~MediumGas ()
 Destructor.
bool SetComposition (const std::string &gas1, const double f1=1., const std::string &gas2="", const double f2=0., const std::string &gas3="", const double f3=0., const std::string &gas4="", const double f4=0., const std::string &gas5="", const double f5=0., const std::string &gas6="", const double f6=0.)
 Set the gas mixture.
void GetComposition (std::string &gas1, double &f1, std::string &gas2, double &f2, std::string &gas3, double &f3, std::string &gas4, double &f4, std::string &gas5, double &f5, std::string &gas6, double &f6) const
 Retrieve the gas mixture.
bool LoadGasFile (const std::string &filename, const bool quiet=false)
 Read table of gas properties (transport parameters) from file.
bool WriteGasFile (const std::string &filename)
 Save the present table of gas properties (transport parameters) to a file.
bool MergeGasFile (const std::string &filename, const bool replaceOld)
 Read table of gas properties from and merge with the existing dataset.
virtual bool EnablePenningTransfer ()
 Switch on simulation of Penning transfers, using pre-implemented parameterisations of the transfer probability (if available).
virtual bool EnablePenningTransfer (const double r, const double lambda)
 Switch on simulation of Penning transfers by means of transfer probabilities, for all excitation levels in the mixture.
virtual bool EnablePenningTransfer (const double r, const double lambda, std::string gasname)
 Switch on simulation of Penning transfers by means of transfer probabilities, for all excitations of a given component.
virtual void DisablePenningTransfer ()
 Switch the simulation of Penning transfers off globally.
virtual bool DisablePenningTransfer (std::string gasname)
 Switch the simulation of Penning transfers off for a given component.
bool GetPenningTransfer (const std::string &gasname, double &r, double &lambda)
 Retrieve the Penning transfer probability and distance for a specific component.
virtual void PrintGas ()
 Print information about the present gas mixture and available data.
bool LoadIonMobility (const std::string &filename, const bool quiet=false)
 Read a table of (positive) ion mobilities vs. electric field from file.
bool LoadNegativeIonMobility (const std::string &filename, const bool quiet=false)
 Read a table of negative ion mobilities vs. electric field from file.
bool AdjustTownsendCoefficient ()
 Adjust the Townsend coefficient using the excitation and ionisation rates stored in the gas table and the Penning transfer probabilities.
size_t GetNumberOfIonisationLevels () const
 Return the number of ionisation levels in the table.
size_t GetNumberOfExcitationLevels () const
 Return the number of excitation levels in the table.
void GetIonisationLevel (const size_t level, std::string &label, double &energy) const
 Return the identifier and threshold of an ionisation level.
void GetExcitationLevel (const size_t level, std::string &label, double &energy) const
 Return the identifier and energy of an excitation level.
bool GetElectronIonisationRate (const size_t level, const size_t ie, const size_t ib, const size_t ia, double &f) const
 Get an entry in the table of ionisation rates.
bool GetElectronExcitationRate (const size_t level, const size_t ie, const size_t ib, const size_t ia, double &f) const
 Get an entry in the table of excitation rates.
bool IsGas () const override
 Is this medium a gas?
void GetComponent (const unsigned int i, std::string &label, double &f) override
 Get the name and fraction of a given component.
void SetAtomicNumber (const double z) override
 Set the effective atomic number.
double GetAtomicNumber () const override
 Get the effective atomic number.
void SetAtomicWeight (const double a) override
 Set the effective atomic weight.
double GetAtomicWeight () const override
 Get the effective atomic weight.
void SetNumberDensity (const double n) override
 Set the number density [cm-3].
double GetNumberDensity () const override
 Get the number density [cm-3].
void SetMassDensity (const double rho) override
 Set the mass density [g/cm3].
double GetMassDensity () const override
 Get the mass density [g/cm3].
void ResetTables () override
 Reset all tables of transport parameters.
void SetExtrapolationMethodExcitationRates (const std::string &low, const std::string &high)
void SetExtrapolationMethodIonisationRates (const std::string &low, const std::string &high)
void SetInterpolationMethodExcitationRates (const unsigned int intrp)
void SetInterpolationMethodIonisationRates (const unsigned int intrp)
double ScaleElectricField (const double e) const override
double UnScaleElectricField (const double e) const override
double ScaleDiffusion (const double d) const override
double ScaleDiffusionTensor (const double d) const override
double ScaleTownsend (const double alpha) const override
double ScaleAttachment (const double eta) const override
double ScaleLorentzAngle (const double lor) const override
bool GetPhotoAbsorptionCrossSection (const double e, double &sigma, const unsigned int i) override
virtual double CreateGPUTransferObject (MediumGPU *&med_gpu) override
 Create and initialise GPU Transfer class.
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 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 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.
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 ScaleVelocity (const double v) 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 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 ()

Static Public Member Functions

static void PrintGases ()
 Print a list of all available gases.

Protected Member Functions

bool LoadMobility (const std::string &filename, const bool quiet, const bool negative)
bool ReadHeader (std::ifstream &gasfile, int &version, std::bitset< 20 > &gasok, bool &is3d, std::vector< double > &mixture, std::vector< double > &efields, std::vector< double > &bfields, std::vector< double > &angles, std::vector< ExcLevel > &excLevels, std::vector< IonLevel > &ionLevels)
void ReadFooter (std::ifstream &gasfile, std::array< unsigned int, 13 > &extrapH, std::array< unsigned int, 13 > &extrapL, std::array< unsigned int, 13 > &interp, unsigned int &thrAlp, unsigned int &thrAtt, unsigned int &thrDis, double &ionDiffL, double &ionDiffT, double &pgas, double &tgas)
void ReadRecord3D (std::ifstream &gasfile, double &ve, double &vb, double &vx, double &dl, double &dt, double &alpha, double &alpha0, double &eta, double &mu, double &lor, double &dis, std::array< double, 6 > &dif, std::vector< double > &rexc, std::vector< double > &rion, std::bitset< 20 > gasok)
void ReadRecord1D (std::ifstream &gasfile, double &ve, double &vb, double &vx, double &wv, double &wr, double &dl, double &dt, double &alpha, double &alpha0, double &eta, double &riontof, double &ratttof, double &mu, double &lor, double &dis, std::array< double, 6 > &dif, std::vector< double > &rexc, std::vector< double > &rion, std::bitset< 20 > gasok)
void InsertE (const int ie, const int ne, const int nb, const int na)
void InsertB (const int ib, const int ne, const int nb, const int na)
void InsertA (const int ia, const int ne, const int nb, const int na)
void ZeroRowE (const int ie, const int nb, const int na)
void ZeroRowB (const int ib, const int ne, const int na)
void ZeroRowA (const int ia, const int ne, const int nb)
bool GetMixture (const std::vector< double > &mixture, const int version, std::vector< std::string > &gasnames, std::vector< double > &percentages) const
void GetGasBits (std::bitset< 20 > &gasok) const
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

static bool GetGasInfo (const std::string &gasname, double &a, double &z, double &w, double &f)
static std::string GetGasName (const int gasnumber, const int version)
static std::string GetGasName (std::string input)
static int GetGasNumberGasFile (const std::string &input)
static const std::vector< std::string > GetAliases (const std::string &gas)
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

std::array< std::string, m_nMaxGasesm_gas
std::array< double, m_nMaxGasesm_fraction
std::array< double, m_nMaxGasesm_atWeight
std::array< double, m_nMaxGasesm_atNum
bool m_usePenning = false
double m_rPenningGlobal = 0.
double m_lambdaPenningGlobal = 0.
std::array< double, m_nMaxGasesm_rPenningGas
std::array< double, m_nMaxGasesm_lambdaPenningGas
double m_pressureTable
double m_temperatureTable
std::vector< std::vector< std::vector< double > > > m_eAlp0
std::vector< std::vector< std::vector< std::vector< double > > > > m_excRates
std::vector< std::vector< std::vector< std::vector< double > > > > m_ionRates
std::vector< ExcLevelm_excLevels
std::vector< IonLevelm_ionLevels
std::pair< unsigned int, unsigned int > m_extrExc = {0, 1}
std::pair< unsigned int, unsigned int > m_extrIon = {0, 1}
unsigned int m_intpExc = 2
unsigned int m_intpIon = 2
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

static constexpr unsigned int m_nMaxGases = 6
Static Protected Attributes inherited from Garfield::Medium
static int m_idCounter

Detailed Description

Base class for gas media.

Definition at line 25 of file MediumGas.hh.

Constructor & Destructor Documentation

◆ MediumGas()

Garfield::MediumGas::MediumGas ( )

Constructor.

◆ ~MediumGas()

virtual Garfield::MediumGas::~MediumGas ( )
inlinevirtual

Destructor.

Definition at line 30 of file MediumGas.hh.

30{}

Member Function Documentation

◆ AdjustTownsendCoefficient()

bool Garfield::MediumGas::AdjustTownsendCoefficient ( )

Adjust the Townsend coefficient using the excitation and ionisation rates stored in the gas table and the Penning transfer probabilities.

◆ CreateGPUTransferObject()

virtual double Garfield::MediumGas::CreateGPUTransferObject ( MediumGPU *& med_gpu)
overridevirtual

Create and initialise GPU Transfer class.

Reimplemented from Garfield::Medium.

Reimplemented in Garfield::MediumMagboltz.

◆ DisablePenningTransfer() [1/2]

virtual void Garfield::MediumGas::DisablePenningTransfer ( )
virtual

Switch the simulation of Penning transfers off globally.

Reimplemented in Garfield::MediumMagboltz.

◆ DisablePenningTransfer() [2/2]

virtual bool Garfield::MediumGas::DisablePenningTransfer ( std::string gasname)
virtual

Switch the simulation of Penning transfers off for a given component.

Reimplemented in Garfield::MediumMagboltz.

◆ EnablePenningTransfer() [1/3]

virtual bool Garfield::MediumGas::EnablePenningTransfer ( )
virtual

Switch on simulation of Penning transfers, using pre-implemented parameterisations of the transfer probability (if available).

Reimplemented in Garfield::MediumMagboltz.

◆ EnablePenningTransfer() [2/3]

virtual bool Garfield::MediumGas::EnablePenningTransfer ( const double r,
const double lambda )
virtual

Switch on simulation of Penning transfers by means of transfer probabilities, for all excitation levels in the mixture.

Parameters
rtransfer probability [0, 1]
lambdaparameter for sampling the distance of the Penning electron with respect to the excitation.

Reimplemented in Garfield::MediumMagboltz.

◆ EnablePenningTransfer() [3/3]

virtual bool Garfield::MediumGas::EnablePenningTransfer ( const double r,
const double lambda,
std::string gasname )
virtual

Switch on simulation of Penning transfers by means of transfer probabilities, for all excitations of a given component.

Reimplemented in Garfield::MediumMagboltz.

◆ GetAliases()

const std::vector< std::string > Garfield::MediumGas::GetAliases ( const std::string & gas)
staticprotected

◆ GetAtomicNumber()

double Garfield::MediumGas::GetAtomicNumber ( ) const
overridevirtual

Get the effective atomic number.

Reimplemented from Garfield::Medium.

◆ GetAtomicWeight()

double Garfield::MediumGas::GetAtomicWeight ( ) const
overridevirtual

Get the effective atomic weight.

Reimplemented from Garfield::Medium.

◆ GetComponent()

void Garfield::MediumGas::GetComponent ( const unsigned int i,
std::string & label,
double & f )
overridevirtual

Get the name and fraction of a given component.

Reimplemented from Garfield::Medium.

◆ GetComposition()

void Garfield::MediumGas::GetComposition ( std::string & gas1,
double & f1,
std::string & gas2,
double & f2,
std::string & gas3,
double & f3,
std::string & gas4,
double & f4,
std::string & gas5,
double & f5,
std::string & gas6,
double & f6 ) const

Retrieve the gas mixture.

◆ GetElectronExcitationRate()

bool Garfield::MediumGas::GetElectronExcitationRate ( const size_t level,
const size_t ie,
const size_t ib,
const size_t ia,
double & f ) const

Get an entry in the table of excitation rates.

◆ GetElectronIonisationRate()

bool Garfield::MediumGas::GetElectronIonisationRate ( const size_t level,
const size_t ie,
const size_t ib,
const size_t ia,
double & f ) const

Get an entry in the table of ionisation rates.

◆ GetExcitationLevel()

void Garfield::MediumGas::GetExcitationLevel ( const size_t level,
std::string & label,
double & energy ) const

Return the identifier and energy of an excitation level.

◆ GetGasBits()

void Garfield::MediumGas::GetGasBits ( std::bitset< 20 > & gasok) const
protected

◆ GetGasInfo()

bool Garfield::MediumGas::GetGasInfo ( const std::string & gasname,
double & a,
double & z,
double & w,
double & f )
staticprotected

◆ GetGasName() [1/2]

std::string Garfield::MediumGas::GetGasName ( const int gasnumber,
const int version )
staticprotected

◆ GetGasName() [2/2]

std::string Garfield::MediumGas::GetGasName ( std::string input)
staticprotected

◆ GetGasNumberGasFile()

int Garfield::MediumGas::GetGasNumberGasFile ( const std::string & input)
staticprotected

◆ GetIonisationLevel()

void Garfield::MediumGas::GetIonisationLevel ( const size_t level,
std::string & label,
double & energy ) const

Return the identifier and threshold of an ionisation level.

◆ GetMassDensity()

double Garfield::MediumGas::GetMassDensity ( ) const
overridevirtual

Get the mass density [g/cm3].

Reimplemented from Garfield::Medium.

◆ GetMixture()

bool Garfield::MediumGas::GetMixture ( const std::vector< double > & mixture,
const int version,
std::vector< std::string > & gasnames,
std::vector< double > & percentages ) const
protected

◆ GetNumberDensity()

double Garfield::MediumGas::GetNumberDensity ( ) const
overridevirtual

Get the number density [cm-3].

Reimplemented from Garfield::Medium.

◆ GetNumberOfExcitationLevels()

size_t Garfield::MediumGas::GetNumberOfExcitationLevels ( ) const
inline

Return the number of excitation levels in the table.

Definition at line 94 of file MediumGas.hh.

94{ return m_excLevels.size(); }
std::vector< ExcLevel > m_excLevels
Definition MediumGas.hh:215

◆ GetNumberOfIonisationLevels()

size_t Garfield::MediumGas::GetNumberOfIonisationLevels ( ) const
inline

Return the number of ionisation levels in the table.

Definition at line 92 of file MediumGas.hh.

92{ return m_ionLevels.size(); }
std::vector< IonLevel > m_ionLevels
Definition MediumGas.hh:221

◆ GetPenningTransfer()

bool Garfield::MediumGas::GetPenningTransfer ( const std::string & gasname,
double & r,
double & lambda )

Retrieve the Penning transfer probability and distance for a specific component.

◆ GetPhotoAbsorptionCrossSection()

bool Garfield::MediumGas::GetPhotoAbsorptionCrossSection ( const double e,
double & sigma,
const unsigned int i )
overridevirtual

Reimplemented from Garfield::Medium.

◆ InsertA()

void Garfield::MediumGas::InsertA ( const int ia,
const int ne,
const int nb,
const int na )
protected

◆ InsertB()

void Garfield::MediumGas::InsertB ( const int ib,
const int ne,
const int nb,
const int na )
protected

◆ InsertE()

void Garfield::MediumGas::InsertE ( const int ie,
const int ne,
const int nb,
const int na )
protected

◆ IsGas()

bool Garfield::MediumGas::IsGas ( ) const
inlineoverridevirtual

Is this medium a gas?

Reimplemented from Garfield::Medium.

Definition at line 110 of file MediumGas.hh.

110{ return true; }

◆ LoadGasFile()

bool Garfield::MediumGas::LoadGasFile ( const std::string & filename,
const bool quiet = false )

Read table of gas properties (transport parameters) from file.

◆ LoadIonMobility()

bool Garfield::MediumGas::LoadIonMobility ( const std::string & filename,
const bool quiet = false )

Read a table of (positive) ion mobilities vs. electric field from file.

◆ LoadMobility()

bool Garfield::MediumGas::LoadMobility ( const std::string & filename,
const bool quiet,
const bool negative )
protected

◆ LoadNegativeIonMobility()

bool Garfield::MediumGas::LoadNegativeIonMobility ( const std::string & filename,
const bool quiet = false )

Read a table of negative ion mobilities vs. electric field from file.

◆ MergeGasFile()

bool Garfield::MediumGas::MergeGasFile ( const std::string & filename,
const bool replaceOld )

Read table of gas properties from and merge with the existing dataset.

◆ PrintGas()

virtual void Garfield::MediumGas::PrintGas ( )
virtual

Print information about the present gas mixture and available data.

Reimplemented in Garfield::MediumMagboltz.

◆ PrintGases()

void Garfield::MediumGas::PrintGases ( )
static

Print a list of all available gases.

◆ ReadFooter()

void Garfield::MediumGas::ReadFooter ( std::ifstream & gasfile,
std::array< unsigned int, 13 > & extrapH,
std::array< unsigned int, 13 > & extrapL,
std::array< unsigned int, 13 > & interp,
unsigned int & thrAlp,
unsigned int & thrAtt,
unsigned int & thrDis,
double & ionDiffL,
double & ionDiffT,
double & pgas,
double & tgas )
protected

◆ ReadHeader()

bool Garfield::MediumGas::ReadHeader ( std::ifstream & gasfile,
int & version,
std::bitset< 20 > & gasok,
bool & is3d,
std::vector< double > & mixture,
std::vector< double > & efields,
std::vector< double > & bfields,
std::vector< double > & angles,
std::vector< ExcLevel > & excLevels,
std::vector< IonLevel > & ionLevels )
protected

◆ ReadRecord1D()

void Garfield::MediumGas::ReadRecord1D ( std::ifstream & gasfile,
double & ve,
double & vb,
double & vx,
double & wv,
double & wr,
double & dl,
double & dt,
double & alpha,
double & alpha0,
double & eta,
double & riontof,
double & ratttof,
double & mu,
double & lor,
double & dis,
std::array< double, 6 > & dif,
std::vector< double > & rexc,
std::vector< double > & rion,
std::bitset< 20 > gasok )
protected

◆ ReadRecord3D()

void Garfield::MediumGas::ReadRecord3D ( std::ifstream & gasfile,
double & ve,
double & vb,
double & vx,
double & dl,
double & dt,
double & alpha,
double & alpha0,
double & eta,
double & mu,
double & lor,
double & dis,
std::array< double, 6 > & dif,
std::vector< double > & rexc,
std::vector< double > & rion,
std::bitset< 20 > gasok )
protected

◆ ResetTables()

void Garfield::MediumGas::ResetTables ( )
overridevirtual

Reset all tables of transport parameters.

Reimplemented from Garfield::Medium.

◆ ScaleAttachment()

double Garfield::MediumGas::ScaleAttachment ( const double eta) const
inlineoverridevirtual

Reimplemented from Garfield::Medium.

Definition at line 158 of file MediumGas.hh.

158 {
159 return eta * m_pressure / m_pressureTable;
160 }
double m_pressure
Definition Medium.hh:619

◆ ScaleDiffusion()

double Garfield::MediumGas::ScaleDiffusion ( const double d) const
inlineoverridevirtual

Reimplemented from Garfield::Medium.

Definition at line 149 of file MediumGas.hh.

149 {
150 return d * sqrt(m_pressureTable / m_pressure);
151 }

◆ ScaleDiffusionTensor()

double Garfield::MediumGas::ScaleDiffusionTensor ( const double d) const
inlineoverridevirtual

Reimplemented from Garfield::Medium.

Definition at line 152 of file MediumGas.hh.

152 {
153 return d * m_pressureTable / m_pressure;
154 }

◆ ScaleElectricField()

double Garfield::MediumGas::ScaleElectricField ( const double e) const
inlineoverridevirtual

Reimplemented from Garfield::Medium.

Definition at line 143 of file MediumGas.hh.

143 {
144 return e * m_pressureTable / m_pressure;
145 }

◆ ScaleLorentzAngle()

double Garfield::MediumGas::ScaleLorentzAngle ( const double lor) const
inlineoverridevirtual

Reimplemented from Garfield::Medium.

Definition at line 161 of file MediumGas.hh.

161 {
162 return lor * m_pressure / m_pressureTable;
163 }

◆ ScaleTownsend()

double Garfield::MediumGas::ScaleTownsend ( const double alpha) const
inlineoverridevirtual

Reimplemented from Garfield::Medium.

Definition at line 155 of file MediumGas.hh.

155 {
157 }

◆ SetAtomicNumber()

void Garfield::MediumGas::SetAtomicNumber ( const double z)
overridevirtual

Set the effective atomic number.

Reimplemented from Garfield::Medium.

◆ SetAtomicWeight()

void Garfield::MediumGas::SetAtomicWeight ( const double a)
overridevirtual

Set the effective atomic weight.

Reimplemented from Garfield::Medium.

◆ SetComposition()

bool Garfield::MediumGas::SetComposition ( const std::string & gas1,
const double f1 = 1.,
const std::string & gas2 = "",
const double f2 = 0.,
const std::string & gas3 = "",
const double f3 = 0.,
const std::string & gas4 = "",
const double f4 = 0.,
const std::string & gas5 = "",
const double f5 = 0.,
const std::string & gas6 = "",
const double f6 = 0. )

Set the gas mixture.

◆ SetExtrapolationMethodExcitationRates()

void Garfield::MediumGas::SetExtrapolationMethodExcitationRates ( const std::string & low,
const std::string & high )
inline

Definition at line 126 of file MediumGas.hh.

127 {
128 SetExtrapolationMethod(low, high, m_extrExc, "ExcitationRates");
129 }
std::pair< unsigned int, unsigned int > m_extrExc
Definition MediumGas.hh:224
void SetExtrapolationMethod(const std::string &low, const std::string &high, std::pair< unsigned int, unsigned int > &extr, const std::string &fcn)

◆ SetExtrapolationMethodIonisationRates()

void Garfield::MediumGas::SetExtrapolationMethodIonisationRates ( const std::string & low,
const std::string & high )
inline

Definition at line 130 of file MediumGas.hh.

131 {
132 SetExtrapolationMethod(low, high, m_extrIon, "IonisationRates");
133 }
std::pair< unsigned int, unsigned int > m_extrIon
Definition MediumGas.hh:225

◆ SetInterpolationMethodExcitationRates()

void Garfield::MediumGas::SetInterpolationMethodExcitationRates ( const unsigned int intrp)
inline

Definition at line 134 of file MediumGas.hh.

134 {
135 if (intrp > 0) m_intpExc = intrp;
136 }
unsigned int m_intpExc
Definition MediumGas.hh:226

◆ SetInterpolationMethodIonisationRates()

void Garfield::MediumGas::SetInterpolationMethodIonisationRates ( const unsigned int intrp)
inline

Definition at line 137 of file MediumGas.hh.

137 {
138 if (intrp > 0) m_intpIon = intrp;
139 }
unsigned int m_intpIon
Definition MediumGas.hh:227

◆ SetMassDensity()

void Garfield::MediumGas::SetMassDensity ( const double rho)
overridevirtual

Set the mass density [g/cm3].

Reimplemented from Garfield::Medium.

◆ SetNumberDensity()

void Garfield::MediumGas::SetNumberDensity ( const double n)
overridevirtual

Set the number density [cm-3].

Reimplemented from Garfield::Medium.

◆ UnScaleElectricField()

double Garfield::MediumGas::UnScaleElectricField ( const double e) const
inlineoverridevirtual

Reimplemented from Garfield::Medium.

Definition at line 146 of file MediumGas.hh.

146 {
147 return e * m_pressure / m_pressureTable;
148 }

◆ WriteGasFile()

bool Garfield::MediumGas::WriteGasFile ( const std::string & filename)

Save the present table of gas properties (transport parameters) to a file.

◆ ZeroRowA()

void Garfield::MediumGas::ZeroRowA ( const int ia,
const int ne,
const int nb )
protected

◆ ZeroRowB()

void Garfield::MediumGas::ZeroRowB ( const int ib,
const int ne,
const int na )
protected

◆ ZeroRowE()

void Garfield::MediumGas::ZeroRowE ( const int ie,
const int nb,
const int na )
protected

Member Data Documentation

◆ m_atNum

std::array<double, m_nMaxGases> Garfield::MediumGas::m_atNum
protected

Definition at line 181 of file MediumGas.hh.

◆ m_atWeight

std::array<double, m_nMaxGases> Garfield::MediumGas::m_atWeight
protected

Definition at line 180 of file MediumGas.hh.

◆ m_eAlp0

std::vector<std::vector<std::vector<double> > > Garfield::MediumGas::m_eAlp0
protected

Definition at line 201 of file MediumGas.hh.

◆ m_excLevels

std::vector<ExcLevel> Garfield::MediumGas::m_excLevels
protected

Definition at line 215 of file MediumGas.hh.

◆ m_excRates

std::vector<std::vector<std::vector<std::vector<double> > > > Garfield::MediumGas::m_excRates
protected

Definition at line 204 of file MediumGas.hh.

◆ m_extrExc

std::pair<unsigned int, unsigned int> Garfield::MediumGas::m_extrExc = {0, 1}
protected

Definition at line 224 of file MediumGas.hh.

224{0, 1};

◆ m_extrIon

std::pair<unsigned int, unsigned int> Garfield::MediumGas::m_extrIon = {0, 1}
protected

Definition at line 225 of file MediumGas.hh.

225{0, 1};

◆ m_fraction

std::array<double, m_nMaxGases> Garfield::MediumGas::m_fraction
protected

Definition at line 179 of file MediumGas.hh.

◆ m_gas

std::array<std::string, m_nMaxGases> Garfield::MediumGas::m_gas
protected

Definition at line 178 of file MediumGas.hh.

◆ m_intpExc

unsigned int Garfield::MediumGas::m_intpExc = 2
protected

Definition at line 226 of file MediumGas.hh.

◆ m_intpIon

unsigned int Garfield::MediumGas::m_intpIon = 2
protected

Definition at line 227 of file MediumGas.hh.

◆ m_ionLevels

std::vector<IonLevel> Garfield::MediumGas::m_ionLevels
protected

Definition at line 221 of file MediumGas.hh.

◆ m_ionRates

std::vector<std::vector<std::vector<std::vector<double> > > > Garfield::MediumGas::m_ionRates
protected

Definition at line 205 of file MediumGas.hh.

◆ m_lambdaPenningGas

std::array<double, m_nMaxGases> Garfield::MediumGas::m_lambdaPenningGas
protected

Definition at line 193 of file MediumGas.hh.

◆ m_lambdaPenningGlobal

double Garfield::MediumGas::m_lambdaPenningGlobal = 0.
protected

Definition at line 189 of file MediumGas.hh.

◆ m_nMaxGases

unsigned int Garfield::MediumGas::m_nMaxGases = 6
staticconstexprprotected

Definition at line 174 of file MediumGas.hh.

◆ m_pressureTable

double Garfield::MediumGas::m_pressureTable
protected

Definition at line 196 of file MediumGas.hh.

◆ m_rPenningGas

std::array<double, m_nMaxGases> Garfield::MediumGas::m_rPenningGas
protected

Definition at line 191 of file MediumGas.hh.

◆ m_rPenningGlobal

double Garfield::MediumGas::m_rPenningGlobal = 0.
protected

Definition at line 187 of file MediumGas.hh.

◆ m_temperatureTable

double Garfield::MediumGas::m_temperatureTable
protected

Definition at line 198 of file MediumGas.hh.

◆ m_usePenning

bool Garfield::MediumGas::m_usePenning = false
protected

Definition at line 185 of file MediumGas.hh.


The documentation for this class was generated from the following file:
  • /builds/garfield/docs/source/Include/Garfield/MediumGas.hh