Garfield++ 4.0
A toolkit for the detailed simulation of particle detectors based on ionisation measurement in gases and semiconductors
|
#include <DriftLineRKF.hh>
Public Member Functions | |
DriftLineRKF () | |
Constructor. | |
~DriftLineRKF () | |
Destructor. | |
void | SetSensor (Sensor *s) |
Set the sensor. | |
void | EnablePlotting (ViewDrift *view) |
Switch on drift line plotting. | |
void | DisablePlotting () |
Switch off drift line plotting. | |
void | EnableSignalCalculation (const bool on=true) |
Switch on/off calculation of induced currents (default: enabled). | |
void | SetSignalAveragingOrder (const unsigned int navg) |
void | SetIntegrationAccuracy (const double eps) |
Set the accuracy of the Runge Kutta Fehlberg drift line integration. | |
void | SetMaximumStepSize (const double ms) |
Set the maximum step size that is allowed. By default, there is no limit. | |
void | UnsetMaximumStepSize () |
Do not apply an upper limit to the step size that is allowed. | |
void | RejectKinks (const bool on=true) |
void | SetElectronSignalScalingFactor (const double scale) |
Set multiplication factor for the signal induced by electrons. | |
void | SetHoleSignalScalingFactor (const double scale) |
Set multiplication factor for the signal induced by holes. | |
void | SetIonSignalScalingFactor (const double scale) |
Set multiplication factor for the signal induced by ions. | |
void | EnableAvalanche (const bool on=true) |
Enable/disable simulation electron multiplication (default: on). | |
void | EnableIonTail (const bool on=true) |
Enable/disable simulation of the ion tail (default: off). | |
void | SetGainFluctuationsFixed (const double gain=-1.) |
Do not randomize the avalanche size. | |
void | SetGainFluctuationsPolya (const double theta, const double mean=-1.) |
bool | DriftElectron (const double x0, const double y0, const double z0, const double t0) |
Simulate the drift line of an electron with a given starting point. | |
bool | DriftHole (const double x0, const double y0, const double z0, const double t0) |
Simulate the drift line of a hole with a given starting point. | |
bool | DriftIon (const double x0, const double y0, const double z0, const double t0) |
Simulate the drift line of an ion with a given starting point. | |
bool | DriftPositron (const double x0, const double y0, const double z0, const double t0) |
bool | DriftNegativeIon (const double x0, const double y0, const double z0, const double t0) |
void | PrintDriftLine () const |
Print the trajectory of the most recent drift line. | |
void | GetEndPoint (double &x, double &y, double &z, double &t, int &st) const |
Get the end point and status flag of the most recent drift line. | |
unsigned int | GetNumberOfDriftLinePoints () const |
Get the number of points of the most recent drift line. | |
void | GetDriftLinePoint (const unsigned int i, double &x, double &y, double &z, double &t) const |
Get the coordinates and time of a point along the most recent drift line. | |
double | GetArrivalTimeSpread (const double eps=1.e-4) |
double | GetGain (const double eps=1.e-4) |
Compute the multiplication factor for the current drift line. | |
double | GetLoss (const double eps=1.e-4) |
Compute the attachment loss factor for the current drift line. | |
double | GetDriftTime () const |
void | GetAvalancheSize (double &ne, double &ni) const |
bool | FieldLine (const double xi, const double yi, const double zi, std::vector< std::array< float, 3 > > &xl, const bool electron=true) |
void | EnableDebugging () |
void | DisableDebugging () |
Calculation of drift lines based on macroscopic transport coefficients using Runge-Kutta-Fehlberg integration.
Definition at line 17 of file DriftLineRKF.hh.
Garfield::DriftLineRKF::DriftLineRKF | ( | ) |
Constructor.
Definition at line 50 of file DriftLineRKF.cc.
|
inline |
|
inline |
Definition at line 116 of file DriftLineRKF.hh.
void Garfield::DriftLineRKF::DisablePlotting | ( | ) |
Switch off drift line plotting.
Definition at line 90 of file DriftLineRKF.cc.
bool Garfield::DriftLineRKF::DriftElectron | ( | const double | x0, |
const double | y0, | ||
const double | z0, | ||
const double | t0 | ||
) |
Simulate the drift line of an electron with a given starting point.
Definition at line 127 of file DriftLineRKF.cc.
bool Garfield::DriftLineRKF::DriftHole | ( | const double | x0, |
const double | y0, | ||
const double | z0, | ||
const double | t0 | ||
) |
Simulate the drift line of a hole with a given starting point.
Definition at line 191 of file DriftLineRKF.cc.
bool Garfield::DriftLineRKF::DriftIon | ( | const double | x0, |
const double | y0, | ||
const double | z0, | ||
const double | t0 | ||
) |
Simulate the drift line of an ion with a given starting point.
Definition at line 201 of file DriftLineRKF.cc.
bool Garfield::DriftLineRKF::DriftNegativeIon | ( | const double | x0, |
const double | y0, | ||
const double | z0, | ||
const double | t0 | ||
) |
Simulate the drift line of an ion with a given starting point, assuming that it has negative charge.
Definition at line 211 of file DriftLineRKF.cc.
bool Garfield::DriftLineRKF::DriftPositron | ( | const double | x0, |
const double | y0, | ||
const double | z0, | ||
const double | t0 | ||
) |
Simulate the drift line of an electron with a given starting point, assuming that it has positive charge.
Definition at line 178 of file DriftLineRKF.cc.
|
inline |
Enable/disable simulation electron multiplication (default: on).
Definition at line 58 of file DriftLineRKF.hh.
|
inline |
Definition at line 115 of file DriftLineRKF.hh.
|
inline |
Enable/disable simulation of the ion tail (default: off).
Definition at line 60 of file DriftLineRKF.hh.
void Garfield::DriftLineRKF::EnablePlotting | ( | ViewDrift * | view | ) |
Switch on drift line plotting.
Definition at line 82 of file DriftLineRKF.cc.
|
inline |
Switch on/off calculation of induced currents (default: enabled).
Definition at line 33 of file DriftLineRKF.hh.
bool Garfield::DriftLineRKF::FieldLine | ( | const double | xi, |
const double | yi, | ||
const double | zi, | ||
std::vector< std::array< float, 3 > > & | xl, | ||
const bool | electron = true |
||
) |
Compute an electric field line.
xi,yi,zi | starting point |
xl | points along the field line |
electron | flag to set the direction in which to follow the field |
Definition at line 1603 of file DriftLineRKF.cc.
Referenced by Garfield::ViewField::PlotFieldLines().
double Garfield::DriftLineRKF::GetArrivalTimeSpread | ( | const double | eps = 1.e-4 | ) |
Compute the sigma of the arrival time distribution for the current drift line by integrating the longitudinal diffusion coefficient.
Definition at line 680 of file DriftLineRKF.cc.
|
inline |
Definition at line 104 of file DriftLineRKF.hh.
void Garfield::DriftLineRKF::GetDriftLinePoint | ( | const unsigned int | i, |
double & | x, | ||
double & | y, | ||
double & | z, | ||
double & | t | ||
) | const |
Get the coordinates and time of a point along the most recent drift line.
Definition at line 1234 of file DriftLineRKF.cc.
|
inline |
Definition at line 102 of file DriftLineRKF.hh.
void Garfield::DriftLineRKF::GetEndPoint | ( | double & | x, |
double & | y, | ||
double & | z, | ||
double & | t, | ||
int & | st | ||
) | const |
Get the end point and status flag of the most recent drift line.
Definition at line 1219 of file DriftLineRKF.cc.
double Garfield::DriftLineRKF::GetGain | ( | const double | eps = 1.e-4 | ) |
Compute the multiplication factor for the current drift line.
Definition at line 744 of file DriftLineRKF.cc.
double Garfield::DriftLineRKF::GetLoss | ( | const double | eps = 1.e-4 | ) |
Compute the attachment loss factor for the current drift line.
Definition at line 798 of file DriftLineRKF.cc.
|
inline |
Get the number of points of the most recent drift line.
Definition at line 90 of file DriftLineRKF.hh.
void Garfield::DriftLineRKF::PrintDriftLine | ( | ) | const |
Print the trajectory of the most recent drift line.
Definition at line 1192 of file DriftLineRKF.cc.
|
inline |
Request (or not) the drift line calculation to be aborted if the drift line makes a bend sharper than 90 degrees.
Definition at line 48 of file DriftLineRKF.hh.
|
inline |
Set multiplication factor for the signal induced by electrons.
Definition at line 51 of file DriftLineRKF.hh.
void Garfield::DriftLineRKF::SetGainFluctuationsFixed | ( | const double | gain = -1. | ) |
Do not randomize the avalanche size.
Definition at line 92 of file DriftLineRKF.cc.
void Garfield::DriftLineRKF::SetGainFluctuationsPolya | ( | const double | theta, |
const double | mean = -1. |
||
) |
Sample the avalanche size from a Polya distribution with shape parameter theta.
Definition at line 106 of file DriftLineRKF.cc.
|
inline |
Set multiplication factor for the signal induced by holes.
Definition at line 53 of file DriftLineRKF.hh.
void Garfield::DriftLineRKF::SetIntegrationAccuracy | ( | const double | eps | ) |
Set the accuracy of the Runge Kutta Fehlberg drift line integration.
Definition at line 63 of file DriftLineRKF.cc.
|
inline |
Set multiplication factor for the signal induced by ions.
Definition at line 55 of file DriftLineRKF.hh.
void Garfield::DriftLineRKF::SetMaximumStepSize | ( | const double | ms | ) |
Set the maximum step size that is allowed. By default, there is no limit.
Definition at line 72 of file DriftLineRKF.cc.
Referenced by Garfield::ViewField::PlotFieldLines().
void Garfield::DriftLineRKF::SetSensor | ( | Sensor * | s | ) |
Set the sensor.
Definition at line 55 of file DriftLineRKF.cc.
Referenced by Garfield::ViewField::PlotFieldLines().
|
inline |
Set the number of points to be used when averaging the delayed signal vector over a time bin in the Sensor class. The averaging is done with a point Newton-Raphson integration. Default: 2.
Definition at line 38 of file DriftLineRKF.hh.
|
inline |
Do not apply an upper limit to the step size that is allowed.
Definition at line 45 of file DriftLineRKF.hh.