![]() |
Garfield 0.3
Toolkit for the detailed simulation of particle detectors based on ionization measurement in gases and semiconductors
|
Calculate electron drift lines and avalanches using microscopic tracking. More...
#include <AvalancheMicroscopic.hh>
Classes | |
| struct | Electron |
| struct | Photon |
| struct | Point |
| struct | Seed |
| struct | Statistics |
Public Member Functions | |
| AvalancheMicroscopic () | |
| Default constructor. | |
| AvalancheMicroscopic (Sensor *sensor) | |
| Constructor. | |
| ~AvalancheMicroscopic () | |
| Destructor. | |
| void | SetSensor (Sensor *sensor) |
| Set the sensor. | |
| void | EnablePlotting (ViewDrift *view, const std::size_t nColl=100) |
| Switch on drift line plotting. | |
| void | DisablePlotting () |
| Switch off drift line plotting. | |
| void | EnableExcitationMarkers (const bool on=true) |
| Draw a marker at every excitation or not. | |
| void | EnableIonisationMarkers (const bool on=true) |
| Draw a marker at every ionising collision or not. | |
| void | EnableAttachmentMarkers (const bool on=true) |
| Draw a marker at every attachment or not. | |
| void | EnableSignalCalculation (const bool on=true) |
| Switch calculation of induced currents on or off (default: enabled). | |
| void | UseWeightingPotential (const bool on=true) |
| Use the weighting potential (as opposed to the weighting field) for calculating the induced current. | |
| void | EnableWeightingFieldIntegration (const bool on=true) |
| Integrate the weighting field over a drift line step when calculating the induced current (default: off). | |
| void | UseInducedCharge (const bool on=true) |
| Switch on calculation of the total induced charge (default: off). | |
| void | EnablePathLengthComputation (const bool on=true) |
| Compute and store the path length of each trajectory (default: off). | |
| void | EnableElectronEnergyHistogramming (TH1 *histo) |
| Fill a histogram with the electron energy distribution. | |
| void | DisableElectronEnergyHistogramming () |
| Stop histogramming the electron energy distribution. | |
| void | EnableHoleEnergyHistogramming (TH1 *histo) |
| Fill a histogram with the hole energy distribution. | |
| void | DisableHoleEnergyHistogramming () |
| Stop histogramming the hole energy distribution. | |
| void | SetDistanceHistogram (TH1 *histo, const char opt='r') |
| Fill histograms of the distance between successive collisions. | |
| void | EnableDistanceHistogramming (const int type) |
| Fill distance distribution histograms for a given collision type. | |
| void | DisableDistanceHistogramming (const int type) |
| Stop filling distance distribution histograms for a given collision type. | |
| void | DisableDistanceHistogramming () |
| Stop filling distance distribution histograms. | |
| void | EnableSecondaryEnergyHistogramming (TH1 *histo) |
| Fill histograms of the energy of electrons emitted in ionising collisions. | |
| void | DisableSecondaryEnergyHistogramming () |
| Stop histogramming the secondary electron energy distribution. | |
| void | EnableDriftLines (const bool on=true) |
| Switch on storage of drift lines (default: off). | |
| void | EnablePhotonTransport (const bool on=true) |
| Switch on photon transport. | |
| void | EnableBandStructure (const bool on=true) |
| Switch on stepping according to band structure E(k), for semiconductors. | |
| void | EnableNullCollisionSteps (const bool on=true, const int nSteps=1) |
| Switch on update of coordinates for null-collision steps (default: off). | |
| void | EnableRKNSteps (const bool on=true) |
| Switch on Runge-Kutta-Nystrom stepping (default: off). | |
| void | SetRKNTolerance (const double sTol=1.e-10, const double sMinStep=1.e-5) |
| Set error tolerance and minimum step size on Runge-Kutta-Nystrom method (default: 1.e-10 and 1.e-5). | |
| void | SetElectronTransportCut (const double cut) |
| Set a (lower) energy threshold for electron transport. | |
| double | GetElectronTransportCut () const |
| Retrieve the value of the energy threshold. | |
| void | SetPhotonTransportCut (const double cut) |
| Set an energy threshold for photon transport. | |
| double | GetPhotonTransportCut () const |
| Retrieve the energy threshold for transporting photons. | |
| void | EnableAvalancheSizeLimit (const unsigned int size) |
| Set a max. | |
| void | DisableAvalancheSizeLimit () |
| Do not apply a limit on the avalanche size. | |
| int | GetAvalancheSizeLimit () const |
| Retrieve the currently set size limit. | |
| void | EnableMagneticField (const bool on=true) |
| Switch on/off using the magnetic field in the stepping algorithm. | |
| void | SetCollisionSteps (const unsigned int n) |
| Set number of collisions to be skipped for storing drift lines. | |
| void | SetTimeWindow (const double t0, const double t1) |
| Define a time interval (only carriers inside the interval are simulated). | |
| void | UnsetTimeWindow () |
| Do not restrict the time interval within which carriers are simulated. | |
| void | GetAvalancheSize (int &ne, int &ni) const |
| Return the number of electrons and ions in the avalanche. | |
| std::pair< int, int > | GetAvalancheSize () const |
| Return the number of electrons and ions in the avalanche. | |
| void | GetAvalancheSize (int &ne, int &nh, int &ni) const |
| void | GetAvalancheSizeGPU (int &ne, int &ni) const |
| Return the number of electrons and ions in the avalanche. | |
| const std::vector< Electron > & | GetElectrons () const |
| const std::vector< Electron > & | GetHoles () const |
| size_t | GetNumberOfElectronEndpoints () const |
| Return the number of electron trajectories in the last simulated avalanche (including captured electrons). | |
| unsigned int | GetNumberOfElectronEndpointsGPU () const |
| void | GetElectronEndpoint (const size_t i, double &x0, double &y0, double &z0, double &t0, double &e0, double &x1, double &y1, double &z1, double &t1, double &e1, int &status) const |
| Return the coordinates and time of start and end point of a given electron drift line. | |
| void | GetElectronEndpointGPU (const size_t i, double &x0, double &y0, double &z0, double &t0, double &e0, double &x1, double &y1, double &z1, double &t1, double &e1, int &status) const |
| size_t | GetNumberOfElectronDriftLinePoints (const size_t i=0) const |
| void | GetElectronDriftLinePoint (double &x, double &y, double &z, double &t, const size_t ip, const size_t ie=0) const |
| size_t | GetNumberOfPhotons () const |
| void | GetPhoton (const size_t i, double &e, double &x0, double &y0, double &z0, double &t0, double &x1, double &y1, double &z1, double &t1, int &status) const |
| bool | DriftElectron (const double x, const double y, const double z, const double t, const double e, const double dx=0., const double dy=0., const double dz=0., const size_t w=1) |
| Calculate an electron drift line. | |
| bool | AvalancheElectron (const double x, const double y, const double z, const double t, const double e, const double dx=0., const double dy=0., const double dz=0., const size_t w=1) |
| Calculate an avalanche initiated by a given electron. | |
| void | AddElectron (const double x, const double y, const double z, const double t, const double e, const double dx=0., const double dy=0., const double dz=0., const size_t w=1) |
| Add an electron to the list of particles to be transported. | |
| bool | ResumeAvalanche () |
| Continue the avalanche simulation from the current set of electrons. | |
| void | SetUserHandleStep (void(*f)(double x, double y, double z, double t, double e, double dx, double dy, double dz, bool hole)) |
| Set a callback function to be called at every step. | |
| void | UnsetUserHandleStep () |
| Deactivate the user handle called at every step. | |
| void | SetUserHandleCollision (void(*f)(double x, double y, double z, double t, int type, int level, Medium *m, double e0, double e1, double dx0, double dy0, double dz0, double dx1, double dy1, double dz1)) |
| Set a callback function to be called at every (real) collision. | |
| void | UnsetUserHandleCollision () |
| Deactivate the user handle called at every collision. | |
| void | SetUserHandleAttachment (void(*f)(double x, double y, double z, double t, int type, int level, Medium *m)) |
| Set a user handling procedure, to be called at every attachment. | |
| void | UnsetUserHandleAttachment () |
| Deactivate the user handle called at every attachment. | |
| void | SetUserHandleInelastic (void(*f)(double x, double y, double z, double t, int type, int level, Medium *m)) |
| Set a user handling procedure, to be called at every inelastic collision. | |
| void | UnsetUserHandleInelastic () |
| Deactivate the user handle called at every inelastic collision. | |
| void | SetUserHandleIonisation (void(*f)(double x, double y, double z, double t, int type, int level, Medium *m)) |
| Set a user handling procedure, to be called at every ionising collision or excitation followed by Penning transfer. | |
| void | UnsetUserHandleIonisation () |
| Deactivate the user handle called at every ionisation. | |
| void | EnableDebugging () |
| Switch on debugging messages. | |
| void | DisableDebugging () |
| Statistics | GetStatistics () |
| void | SetRunModeOptions (MPRunMode mode, int device=-1) |
| void | SetMaxNumShowerLoops (int max_loops) |
| void | SetShowProgress (bool show_progress) |
| void | SetDebugShowerIterationAndElectronID (int iter_num, int elec_id) |
| std::vector< Seed > | GetStackOld () |
| std::vector< Electron > | GetStackOldGPU () |
Private Member Functions | |
| bool | TransportElectrons (std::vector< Seed > &stack, const bool aval) |
| int | TransportElectron (const Seed &seed, const bool signal, std::vector< double > &ts, std::vector< std::array< double, 3 > > &xs, std::vector< Point > &path, std::vector< Seed > &stack) |
| int | TransportElectronBfield (const Seed &seed, const bool signal, std::vector< double > &ts, std::vector< std::array< double, 3 > > &xs, std::vector< Point > &path, std::vector< Seed > &stack) |
| int | TransportElectronSc (const Seed &seed, const bool signal, std::vector< double > &ts, std::vector< std::array< double, 3 > > &xs, std::vector< Point > &path, std::vector< Seed > &stack) |
| void | TransportPhoton (const double x, const double y, const double z, const double t, const double e, const size_t w, std::vector< Seed > &stack) |
| bool | transportParticleStack (const bool aval, std::vector< Seed > &stack, std::vector< Seed > &newParticles, const bool signal, const bool useBfield, const bool sc) |
| void | Terminate (double x0, double y0, double z0, double t0, double &x1, double &y1, double &z1, double &t1) const |
| void | CreatePenningElectron (const double x, const double y, const double z, const double t, const size_t w, const double ds, const double dt, const double ep, const int level, std::vector< Seed > &stack) const |
| void | PlotCollision (const int cstype, const size_t did, const double x, const double y, const double z, size_t &nCollPlot) const |
| void | CallUserHandles (const int cstype, const double x, const double y, const double z, const double t, const int level, Medium *medium, const double en1, const double en, const double kx, const double ky, const double kz, const double kx1, const double ky1, const double kz1) const |
| void | FillDistanceHistogram (const int cstype, const double x, const double y, const double z, double &xLast, double &yLast, double &zLast) const |
Private Attributes | |
| std::string | m_className = "AvalancheMicroscopic" |
| MPRunMode | m_runMode {MPRunMode::Normal} |
| int | m_cudaDevice {-1} |
| int | m_maxNumShowerLoops {-1} |
| int | m_debugElectronID {-1} |
| int | m_debugShowerLoopNum {-1} |
| bool | m_showProgress {false} |
| AvalancheMicroscopicGPU * | m_gpuInterface {nullptr} |
| Statistics | m_stats |
| Sensor * | m_sensor = nullptr |
| std::vector< Electron > | m_electrons |
| std::vector< Electron > | m_electrons_gpu |
| std::vector< Electron > | m_holes |
| std::vector< Seed > | m_stackStoreCPU |
| std::vector< Electron > | m_stackStoreGPU |
| std::vector< Photon > | m_photons |
| int | m_nElectrons = 0 |
| Number of electrons produced. | |
| int | m_nHoles = 0 |
| Number of holes produced. | |
| int | m_nIons = 0 |
| Number of ions produced. | |
| int | m_nElectronsGPU = 0 |
| Number of electrons produced. | |
| int | m_nHolesGPU = 0 |
| Number of holes produced. | |
| int | m_nIonsGPU = 0 |
| Number of ions produced. | |
| ViewDrift * | m_viewer = nullptr |
| bool | m_plotExcitations = true |
| bool | m_plotIonisations = true |
| bool | m_plotAttachments = true |
| TH1 * | m_histElectronEnergy = nullptr |
| TH1 * | m_histHoleEnergy = nullptr |
| TH1 * | m_histDistance = nullptr |
| char | m_distanceOption = 'r' |
| std::vector< int > | m_distanceHistogramType |
| TH1 * | m_histSecondary = nullptr |
| bool | m_doSignal = true |
| bool | m_useWeightingPotential = true |
| bool | m_integrateWeightingField = false |
| bool | m_doInducedCharge = false |
| bool | m_computePathLength = false |
| bool | m_storeDriftLines = false |
| bool | m_usePhotons = false |
| bool | m_useBandStructure = true |
| bool | m_useNullCollisionSteps = false |
| bool | m_useBfieldAuto = true |
| bool | m_useBfield = false |
| bool | m_rknSteps = false |
| double | m_rknsteperrortol = 1.e-10 |
| double | m_rknMinh = 1.e-5 |
| double | m_nullCollScale = 1. |
| double | m_deltaCut = 0. |
| double | m_gammaCut = 0. |
| unsigned int | m_sizeCut = 0 |
| size_t | m_nCollSkip = 100 |
| size_t | m_nCollPlot = 100 |
| bool | m_hasTimeWindow = false |
| double | m_tMin = 0. |
| double | m_tMax = 0. |
| void(* | m_userHandleStep )(double x, double y, double z, double t, double e, double dx, double dy, double dz, bool hole) = nullptr |
| void(* | m_userHandleCollision )(double x, double y, double z, double t, int type, int level, Medium *m, double e0, double e1, double dx0, double dy0, double dz0, double dx1, double dy1, double dz1) = nullptr |
| void(* | m_userHandleAttachment )(double x, double y, double z, double t, int type, int level, Medium *m) = nullptr |
| void(* | m_userHandleInelastic )(double x, double y, double z, double t, int type, int level, Medium *m) = nullptr |
| void(* | m_userHandleIonisation )(double x, double y, double z, double t, int type, int level, Medium *m) = nullptr |
| bool | m_debug = false |
Friends | |
| class | AvalancheMicroscopicGPU |
Calculate electron drift lines and avalanches using microscopic tracking.
Definition at line 24 of file AvalancheMicroscopic.hh.
|
inline |
Default constructor.
Definition at line 27 of file AvalancheMicroscopic.hh.
| Garfield::AvalancheMicroscopic::AvalancheMicroscopic | ( | Sensor * | sensor | ) |
Constructor.
|
inline |
| void Garfield::AvalancheMicroscopic::AddElectron | ( | const double | x, |
| const double | y, | ||
| const double | z, | ||
| const double | t, | ||
| const double | e, | ||
| const double | dx = 0., | ||
| const double | dy = 0., | ||
| const double | dz = 0., | ||
| const size_t | w = 1 ) |
Add an electron to the list of particles to be transported.
| bool Garfield::AvalancheMicroscopic::AvalancheElectron | ( | const double | x, |
| const double | y, | ||
| const double | z, | ||
| const double | t, | ||
| const double | e, | ||
| const double | dx = 0., | ||
| const double | dy = 0., | ||
| const double | dz = 0., | ||
| const size_t | w = 1 ) |
Calculate an avalanche initiated by a given electron.
|
private |
|
private |
|
inline |
Do not apply a limit on the avalanche size.
Definition at line 135 of file AvalancheMicroscopic.hh.
|
inline |
Definition at line 287 of file AvalancheMicroscopic.hh.
| void Garfield::AvalancheMicroscopic::DisableDistanceHistogramming | ( | ) |
Stop filling distance distribution histograms.
| void Garfield::AvalancheMicroscopic::DisableDistanceHistogramming | ( | const int | type | ) |
Stop filling distance distribution histograms for a given collision type.
|
inline |
Stop histogramming the electron energy distribution.
Definition at line 70 of file AvalancheMicroscopic.hh.
|
inline |
Stop histogramming the hole energy distribution.
Definition at line 74 of file AvalancheMicroscopic.hh.
|
inline |
|
inline |
Stop histogramming the secondary electron energy distribution.
Definition at line 92 of file AvalancheMicroscopic.hh.
| bool Garfield::AvalancheMicroscopic::DriftElectron | ( | const double | x, |
| const double | y, | ||
| const double | z, | ||
| const double | t, | ||
| const double | e, | ||
| const double | dx = 0., | ||
| const double | dy = 0., | ||
| const double | dz = 0., | ||
| const size_t | w = 1 ) |
Calculate an electron drift line.
| x,y,z,t | starting point of the electron |
| e | initial energy of the electron |
| dx,dy,dz | initial direction vector of the electron If the initial direction is not specified, it is sampled randomly. |
| w | weight (multiplicity) of the electron Secondary electrons are not transported. |
|
inline |
Draw a marker at every attachment or not.
Definition at line 45 of file AvalancheMicroscopic.hh.
|
inline |
Set a max.
avalanche size (i. e. ignore ionising collisions once this size has been reached).
Definition at line 133 of file AvalancheMicroscopic.hh.
|
inline |
Switch on stepping according to band structure E(k), for semiconductors.
Definition at line 102 of file AvalancheMicroscopic.hh.
|
inline |
| void Garfield::AvalancheMicroscopic::EnableDistanceHistogramming | ( | const int | type | ) |
Fill distance distribution histograms for a given collision type.
|
inline |
Switch on storage of drift lines (default: off).
Definition at line 95 of file AvalancheMicroscopic.hh.
| void Garfield::AvalancheMicroscopic::EnableElectronEnergyHistogramming | ( | TH1 * | histo | ) |
Fill a histogram with the electron energy distribution.
|
inline |
Draw a marker at every excitation or not.
Definition at line 41 of file AvalancheMicroscopic.hh.
| void Garfield::AvalancheMicroscopic::EnableHoleEnergyHistogramming | ( | TH1 * | histo | ) |
Fill a histogram with the hole energy distribution.
|
inline |
Draw a marker at every ionising collision or not.
Definition at line 43 of file AvalancheMicroscopic.hh.
|
inline |
Switch on/off using the magnetic field in the stepping algorithm.
Definition at line 140 of file AvalancheMicroscopic.hh.
|
inline |
Switch on update of coordinates for null-collision steps (default: off).
Definition at line 105 of file AvalancheMicroscopic.hh.
|
inline |
Compute and store the path length of each trajectory (default: off).
Definition at line 64 of file AvalancheMicroscopic.hh.
|
inline |
Switch on photon transport.
Definition at line 99 of file AvalancheMicroscopic.hh.
| void Garfield::AvalancheMicroscopic::EnablePlotting | ( | ViewDrift * | view, |
| const std::size_t | nColl = 100 ) |
Switch on drift line plotting.
|
inline |
Switch on Runge-Kutta-Nystrom stepping (default: off).
Definition at line 111 of file AvalancheMicroscopic.hh.
| void Garfield::AvalancheMicroscopic::EnableSecondaryEnergyHistogramming | ( | TH1 * | histo | ) |
Fill histograms of the energy of electrons emitted in ionising collisions.
|
inline |
Switch calculation of induced currents on or off (default: enabled).
Definition at line 48 of file AvalancheMicroscopic.hh.
|
inline |
Integrate the weighting field over a drift line step when calculating the induced current (default: off).
Definition at line 56 of file AvalancheMicroscopic.hh.
|
private |
|
inline |
Return the number of electrons and ions in the avalanche.
Definition at line 159 of file AvalancheMicroscopic.hh.
|
inline |
Definition at line 162 of file AvalancheMicroscopic.hh.
|
inline |
Return the number of electrons and ions in the avalanche.
Definition at line 154 of file AvalancheMicroscopic.hh.
|
inline |
Return the number of electrons and ions in the avalanche.
Definition at line 168 of file AvalancheMicroscopic.hh.
|
inline |
| void Garfield::AvalancheMicroscopic::GetElectronDriftLinePoint | ( | double & | x, |
| double & | y, | ||
| double & | z, | ||
| double & | t, | ||
| const size_t | ip, | ||
| const size_t | ie = 0 ) const |
| void Garfield::AvalancheMicroscopic::GetElectronEndpoint | ( | const size_t | i, |
| double & | x0, | ||
| double & | y0, | ||
| double & | z0, | ||
| double & | t0, | ||
| double & | e0, | ||
| double & | x1, | ||
| double & | y1, | ||
| double & | z1, | ||
| double & | t1, | ||
| double & | e1, | ||
| int & | status ) const |
Return the coordinates and time of start and end point of a given electron drift line.
| i | index of the drift line |
| x0,y0,z0,t0 | coordinates and time of the starting point |
| x1,y1,z1,t1 | coordinates and time of the end point |
| e0,e1 | initial and final energy |
| status | status code (see GarfieldConstants.hh) |
| void Garfield::AvalancheMicroscopic::GetElectronEndpointGPU | ( | const size_t | i, |
| double & | x0, | ||
| double & | y0, | ||
| double & | z0, | ||
| double & | t0, | ||
| double & | e0, | ||
| double & | x1, | ||
| double & | y1, | ||
| double & | z1, | ||
| double & | t1, | ||
| double & | e1, | ||
| int & | status ) const |
|
inline |
Definition at line 194 of file AvalancheMicroscopic.hh.
|
inline |
|
inline |
Definition at line 195 of file AvalancheMicroscopic.hh.
| size_t Garfield::AvalancheMicroscopic::GetNumberOfElectronDriftLinePoints | ( | const size_t | i = 0 | ) | const |
|
inline |
Return the number of electron trajectories in the last simulated avalanche (including captured electrons).
Definition at line 198 of file AvalancheMicroscopic.hh.
|
inline |
Definition at line 199 of file AvalancheMicroscopic.hh.
|
inline |
Definition at line 222 of file AvalancheMicroscopic.hh.
| void Garfield::AvalancheMicroscopic::GetPhoton | ( | const size_t | i, |
| double & | e, | ||
| double & | x0, | ||
| double & | y0, | ||
| double & | z0, | ||
| double & | t0, | ||
| double & | x1, | ||
| double & | y1, | ||
| double & | z1, | ||
| double & | t1, | ||
| int & | status ) const |
|
inline |
Retrieve the energy threshold for transporting photons.
Definition at line 129 of file AvalancheMicroscopic.hh.
|
inline |
Definition at line 458 of file AvalancheMicroscopic.hh.
|
inline |
Definition at line 461 of file AvalancheMicroscopic.hh.
|
inline |
Definition at line 300 of file AvalancheMicroscopic.hh.
|
private |
| bool Garfield::AvalancheMicroscopic::ResumeAvalanche | ( | ) |
Continue the avalanche simulation from the current set of electrons.
|
inline |
Set number of collisions to be skipped for storing drift lines.
Definition at line 146 of file AvalancheMicroscopic.hh.
|
inline |
Definition at line 305 of file AvalancheMicroscopic.hh.
| void Garfield::AvalancheMicroscopic::SetDistanceHistogram | ( | TH1 * | histo, |
| const char | opt = 'r' ) |
Fill histograms of the distance between successive collisions.
| histo | pointer to the histogram to be filled |
| opt | direction ('x', 'y', 'z', 'r') |
|
inline |
Set a (lower) energy threshold for electron transport.
This can be useful for simulating delta electrons.
Definition at line 122 of file AvalancheMicroscopic.hh.
|
inline |
Definition at line 303 of file AvalancheMicroscopic.hh.
|
inline |
Set an energy threshold for photon transport.
Definition at line 127 of file AvalancheMicroscopic.hh.
|
inline |
Set error tolerance and minimum step size on Runge-Kutta-Nystrom method (default: 1.e-10 and 1.e-5).
Definition at line 114 of file AvalancheMicroscopic.hh.
| void Garfield::AvalancheMicroscopic::SetRunModeOptions | ( | MPRunMode | mode, |
| int | device = -1 ) |
| void Garfield::AvalancheMicroscopic::SetSensor | ( | Sensor * | sensor | ) |
Set the sensor.
|
inline |
Definition at line 304 of file AvalancheMicroscopic.hh.
| void Garfield::AvalancheMicroscopic::SetTimeWindow | ( | const double | t0, |
| const double | t1 ) |
Define a time interval (only carriers inside the interval are simulated).
| void Garfield::AvalancheMicroscopic::SetUserHandleAttachment | ( | void(* | f )(double x, double y, double z, double t, int type, int level, Medium *m) | ) |
Set a user handling procedure, to be called at every attachment.
| void Garfield::AvalancheMicroscopic::SetUserHandleCollision | ( | void(* | f )(double x, double y, double z, double t, int type, int level, Medium *m, double e0, double e1, double dx0, double dy0, double dz0, double dx1, double dy1, double dz1) | ) |
Set a callback function to be called at every (real) collision.
| void Garfield::AvalancheMicroscopic::SetUserHandleInelastic | ( | void(* | f )(double x, double y, double z, double t, int type, int level, Medium *m) | ) |
Set a user handling procedure, to be called at every inelastic collision.
| void Garfield::AvalancheMicroscopic::SetUserHandleIonisation | ( | void(* | f )(double x, double y, double z, double t, int type, int level, Medium *m) | ) |
Set a user handling procedure, to be called at every ionising collision or excitation followed by Penning transfer.
| void Garfield::AvalancheMicroscopic::SetUserHandleStep | ( | void(* | f )(double x, double y, double z, double t, double e, double dx, double dy, double dz, bool hole) | ) |
Set a callback function to be called at every step.
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
inline |
Do not restrict the time interval within which carriers are simulated.
Definition at line 151 of file AvalancheMicroscopic.hh.
|
inline |
Deactivate the user handle called at every attachment.
Definition at line 272 of file AvalancheMicroscopic.hh.
|
inline |
Deactivate the user handle called at every collision.
Definition at line 267 of file AvalancheMicroscopic.hh.
|
inline |
Deactivate the user handle called at every inelastic collision.
Definition at line 277 of file AvalancheMicroscopic.hh.
|
inline |
Deactivate the user handle called at every ionisation.
Definition at line 283 of file AvalancheMicroscopic.hh.
|
inline |
Deactivate the user handle called at every step.
Definition at line 259 of file AvalancheMicroscopic.hh.
|
inline |
Switch on calculation of the total induced charge (default: off).
Definition at line 61 of file AvalancheMicroscopic.hh.
|
inline |
Use the weighting potential (as opposed to the weighting field) for calculating the induced current.
Definition at line 51 of file AvalancheMicroscopic.hh.
|
friend |
Definition at line 463 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 311 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 372 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 314 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 415 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 316 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 317 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 386 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 363 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 362 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 370 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 367 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 325 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 326 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 387 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 319 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 395 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 361 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 359 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 360 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 365 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 327 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 369 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 315 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 393 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 392 of file AvalancheMicroscopic.hh.
|
private |
Number of electrons produced.
Definition at line 341 of file AvalancheMicroscopic.hh.
|
private |
Number of electrons produced.
Definition at line 348 of file AvalancheMicroscopic.hh.
|
private |
Number of holes produced.
Definition at line 343 of file AvalancheMicroscopic.hh.
|
private |
Number of holes produced.
Definition at line 350 of file AvalancheMicroscopic.hh.
|
private |
Number of ions produced.
Definition at line 345 of file AvalancheMicroscopic.hh.
|
private |
Number of ions produced.
Definition at line 352 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 383 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 338 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 357 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 355 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 356 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 382 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 381 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 380 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 313 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 323 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 318 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 390 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 329 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 330 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 321 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 373 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 397 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 396 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 375 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 378 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 377 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 376 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 374 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 407 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 403 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 409 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 411 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 400 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 368 of file AvalancheMicroscopic.hh.
|
private |
Definition at line 354 of file AvalancheMicroscopic.hh.