Garfield++ v2r0
A toolkit for the detailed simulation of particle detectors based on ionisation measurement in gases and semiconductors
|
Interpolation in a two-dimensional field map created by Sentaurus Device. More...
#include <ComponentTcad2d.hh>
Public Member Functions | |
ComponentTcad2d () | |
~ComponentTcad2d () | |
void | ElectricField (const double x, const double y, const double z, double &ex, double &ey, double &ez, double &v, Medium *&m, int &status) |
void | ElectricField (const double x, const double y, const double z, double &ex, double &ey, double &ez, Medium *&m, int &status) |
void | WeightingField (const double x, const double y, const double z, double &wx, double &wy, double &wz, const std::string &label) |
Medium * | GetMedium (const double x, const double y, const double z) |
Get the medium at a given location (x, y, z). | |
bool | GetVoltageRange (double &vmin, double &vmax) |
Calculate the voltage range [V]. | |
bool | GetBoundingBox (double &xmin, double &ymin, double &zmin, double &xmax, double &ymax, double &zmax) |
Get the bounding box coordinates. | |
void | SetRangeZ (const double zmin, const double zmax) |
bool | Initialise (const std::string &gridfilename, const std::string &datafilename) |
void | PrintRegions () const |
unsigned int | GetNumberOfRegions () const |
void | GetRegion (const unsigned int i, std::string &name, bool &active) const |
void | SetDriftRegion (const unsigned int ireg) |
void | UnsetDriftRegion (const unsigned int ireg) |
void | SetMedium (const unsigned int ireg, Medium *m) |
Medium * | GetMedium (const unsigned int ireg) const |
unsigned int | GetNumberOfElements () const |
bool | GetElement (const unsigned int i, double &vol, double &dmin, double &dmax, int &type) const |
bool | GetElement (const unsigned int i, double &vol, double &dmin, double &dmax, int &type, int &node1, int &node2, int &node3, int &node4, int ®) const |
unsigned int | GetNumberOfNodes () const |
bool | GetNode (const unsigned int i, double &x, double &y, double &v, double &ex, double &ey) const |
bool | GetMobility (const double x, const double y, const double z, double &emob, double &hmob) |
void | ElectronVelocity (const double x, const double y, const double z, double &vx, double &vy, double &vz, Medium *&m, int &status) |
Get the electron drift velocity. | |
void | HoleVelocity (const double x, const double y, const double z, double &vx, double &vy, double &vz, Medium *&m, int &status) |
Get the hole drift velocity. | |
bool | GetElectronLifetime (const double x, const double y, const double z, double &etau) |
bool | GetHoleLifetime (const double x, const double y, const double z, double &htau) |
int | GetNumberOfDonors () |
int | GetNumberOfAcceptors () |
bool | GetDonorOccupation (const double x, const double y, const double z, const unsigned int donorNumber, double &occupationFraction) |
bool | GetAcceptorOccupation (const double x, const double y, const double z, const unsigned int acceptorNumber, double &occupationFraction) |
bool | SetDonor (const unsigned int donorNumber, const double eXsec, const double hxSec, const double concentration) |
bool | SetAcceptor (const unsigned int acceptorNumber, const double eXsec, const double hxSec, const double concentration) |
bool | ElectronAttachment (const double x, const double y, const double z, double &eta) |
Get the electron attachment coefficient. | |
bool | HoleAttachment (const double x, const double y, const double z, double &eta) |
Get the hole attachment coefficient. | |
Public Member Functions inherited from Garfield::ComponentBase | |
ComponentBase () | |
Constructor. | |
virtual | ~ComponentBase () |
Destructor. | |
virtual void | SetGeometry (GeometryBase *geo) |
Define the geometry. | |
virtual void | Clear () |
Reset. | |
virtual Medium * | GetMedium (const double x, const double y, const double z) |
Get the medium at a given location (x, y, z). | |
virtual void | ElectricField (const double x, const double y, const double z, double &ex, double &ey, double &ez, Medium *&m, int &status)=0 |
virtual void | ElectricField (const double x, const double y, const double z, double &ex, double &ey, double &ez, double &v, Medium *&m, int &status)=0 |
virtual bool | GetVoltageRange (double &vmin, double &vmax)=0 |
Calculate the voltage range [V]. | |
virtual void | WeightingField (const double x, const double y, const double z, double &wx, double &wy, double &wz, const std::string &label) |
virtual double | WeightingPotential (const double x, const double y, const double z, const std::string &label) |
virtual void | MagneticField (const double x, const double y, const double z, double &bx, double &by, double &bz, int &status) |
void | SetMagneticField (const double bx, const double by, const double bz) |
Set a constant magnetic field. | |
virtual bool | IsReady () |
Ready for use? | |
virtual bool | GetBoundingBox (double &xmin, double &ymin, double &zmin, double &xmax, double &ymax, double &zmax) |
Get the bounding box coordinates. | |
virtual bool | IsWireCrossed (const double x0, const double y0, const double z0, const double x1, const double y1, const double z1, double &xc, double &yc, double &zc) |
virtual bool | IsInTrapRadius (const double q0, const double x0, const double y0, const double z0, double &xw, double &yw, double &rw) |
void | EnablePeriodicityX (const bool on=true) |
Enable simple periodicity in the direction. | |
void | DisablePeriodicityX () |
void | EnablePeriodicityY (const bool on=true) |
Enable simple periodicity in the direction. | |
void | DisablePeriodicityY () |
void | EnablePeriodicityZ (const bool on=true) |
Enable simple periodicity in the direction. | |
void | DisablePeriodicityZ () |
void | EnableMirrorPeriodicityX (const bool on=true) |
Enable mirror periodicity in the direction. | |
void | DisableMirrorPeriodicityX () |
void | EnableMirrorPeriodicityY (const bool on=true) |
Enable mirror periodicity in the direction. | |
void | DisableMirrorPeriodicityY () |
void | EnableMirrorPeriodicityZ (const bool on=true) |
Enable mirror periodicity in the direction. | |
void | DisableMirrorPeriodicityZ () |
void | EnableAxialPeriodicityX (const bool on=true) |
Enable axial periodicity in the direction. | |
void | DisableAxialPeriodicityX () |
void | EnableAxialPeriodicityY (const bool on=true) |
Enable axial periodicity in the direction. | |
void | DisableAxialPeriodicityY () |
void | EnableAxialPeriodicityZ (const bool on=true) |
Enable axial periodicity in the direction. | |
void | DisableAxialPeriodicityZ () |
void | EnableRotationSymmetryX (const bool on=true) |
Enable rotation symmetry around the axis. | |
void | DisableRotationSymmetryX () |
void | EnableRotationSymmetryY (const bool on=true) |
Enable rotation symmetry around the axis. | |
void | DisableRotationSymmetryY () |
void | EnableRotationSymmetryZ (const bool on=true) |
Enable rotation symmetry around the axis. | |
void | DisableRotationSymmetryZ () |
void | EnableDebugging () |
Switch on debugging messages. | |
void | DisableDebugging () |
Switch off debugging messages. | |
void | ActivateTraps () |
Request trapping to be taken care of by the component (for TCAD). | |
void | DeactivateTraps () |
bool | IsTrapActive () |
void | ActivateVelocityMap () |
Request velocity to be taken care of by the component (for TCAD). | |
void | DectivateVelocityMap () |
bool | IsVelocityActive () |
virtual bool | ElectronAttachment (const double, const double, const double, double &eta) |
Get the electron attachment coefficient. | |
virtual bool | HoleAttachment (const double, const double, const double, double &eta) |
Get the hole attachment coefficient. | |
virtual void | ElectronVelocity (const double, const double, const double, double &vx, double &vy, double &vz, Medium *&, int &status) |
Get the electron drift velocity. | |
virtual void | HoleVelocity (const double, const double, const double, double &vx, double &vy, double &vz, Medium *&, int &status) |
Get the hole drift velocity. | |
virtual bool | GetElectronLifetime (const double, const double, const double, double &etau) |
virtual bool | GetHoleLifetime (const double, const double, const double, double &htau) |
Additional Inherited Members | |
virtual void | Reset ()=0 |
Geometry checks. | |
virtual void | UpdatePeriodicity ()=0 |
Verify periodicities. | |
Protected Attributes inherited from Garfield::ComponentBase | |
std::string | m_className |
Class name. | |
GeometryBase * | m_geometry |
Pointer to the geometry. | |
bool | m_ready |
Ready for use? | |
bool | m_activeTraps |
Does the component have traps? | |
bool | m_hasVelocityMap |
Does the component have velocity maps? | |
bool | m_xPeriodic |
Simple periodicity in x. | |
bool | m_yPeriodic |
Simple periodicity in y. | |
bool | m_zPeriodic |
Simple periodicity in z. | |
bool | m_xMirrorPeriodic |
Mirror periodicity in x. | |
bool | m_yMirrorPeriodic |
Mirror periodicity in y. | |
bool | m_zMirrorPeriodic |
Mirror periodicity in z. | |
bool | m_xAxiallyPeriodic |
Axial periodicity in x. | |
bool | m_yAxiallyPeriodic |
Axial periodicity in y. | |
bool | m_zAxiallyPeriodic |
Axial periodicity in z. | |
bool | m_xRotationSymmetry |
Rotation symmetry around x-axis. | |
bool | m_yRotationSymmetry |
Rotation symmetry around y-axis. | |
bool | m_zRotationSymmetry |
Rotation symmetry around z-axis. | |
double | m_bx0 |
double | m_by0 |
double | m_bz0 |
bool | m_debug |
Switch on/off debugging messages. | |
Interpolation in a two-dimensional field map created by Sentaurus Device.
Definition at line 10 of file ComponentTcad2d.hh.
Garfield::ComponentTcad2d::ComponentTcad2d | ( | ) |
Definition at line 21 of file ComponentTcad2d.cc.
|
inline |
Definition at line 16 of file ComponentTcad2d.hh.
|
virtual |
Implements Garfield::ComponentBase.
Definition at line 157 of file ComponentTcad2d.cc.
Referenced by ElectricField(), and WeightingField().
|
inlinevirtual |
Calculate the drift field at given point.
x,y,z | coordinates [cm]. |
ex,ey,ez | components of the electric field [V/cm]. |
m | pointer to the medium at this location. |
status | status flag |
Status flags:
0: Inside an active medium > 0: Inside a wire of type X -4 ... -1: On the side of a plane where no wires are -5: Inside the mesh but not in an active medium -6: Outside the mesh -10: Unknown potential type (should not occur) other: Other cases (should not occur)
Implements Garfield::ComponentBase.
Definition at line 22 of file ComponentTcad2d.hh.
|
virtual |
Get the electron attachment coefficient.
Reimplemented from Garfield::ComponentBase.
Definition at line 79 of file ComponentTcad2d.cc.
|
virtual |
Get the electron drift velocity.
Reimplemented from Garfield::ComponentBase.
Definition at line 264 of file ComponentTcad2d.cc.
bool Garfield::ComponentTcad2d::GetAcceptorOccupation | ( | const double | x, |
const double | y, | ||
const double | z, | ||
const unsigned int | acceptorNumber, | ||
double & | occupationFraction | ||
) |
Definition at line 859 of file ComponentTcad2d.cc.
Referenced by ElectronAttachment(), and HoleAttachment().
|
virtual |
Get the bounding box coordinates.
Reimplemented from Garfield::ComponentBase.
Definition at line 1176 of file ComponentTcad2d.cc.
bool Garfield::ComponentTcad2d::GetDonorOccupation | ( | const double | x, |
const double | y, | ||
const double | z, | ||
const unsigned int | donorNumber, | ||
double & | occupationFraction | ||
) |
Definition at line 772 of file ComponentTcad2d.cc.
Referenced by ElectronAttachment(), and HoleAttachment().
|
virtual |
Reimplemented from Garfield::ComponentBase.
Definition at line 530 of file ComponentTcad2d.cc.
bool Garfield::ComponentTcad2d::GetElement | ( | const unsigned int | i, |
double & | vol, | ||
double & | dmin, | ||
double & | dmax, | ||
int & | type | ||
) | const |
Definition at line 1316 of file ComponentTcad2d.cc.
Referenced by GetElement().
bool Garfield::ComponentTcad2d::GetElement | ( | const unsigned int | i, |
double & | vol, | ||
double & | dmin, | ||
double & | dmax, | ||
int & | type, | ||
int & | node1, | ||
int & | node2, | ||
int & | node3, | ||
int & | node4, | ||
int & | reg | ||
) | const |
Definition at line 1361 of file ComponentTcad2d.cc.
|
virtual |
Reimplemented from Garfield::ComponentBase.
Definition at line 608 of file ComponentTcad2d.cc.
|
virtual |
Get the medium at a given location (x, y, z).
Reimplemented from Garfield::ComponentBase.
Definition at line 471 of file ComponentTcad2d.cc.
Medium * Garfield::ComponentTcad2d::GetMedium | ( | const unsigned int | ireg | ) | const |
Definition at line 1305 of file ComponentTcad2d.cc.
bool Garfield::ComponentTcad2d::GetMobility | ( | const double | x, |
const double | y, | ||
const double | z, | ||
double & | emob, | ||
double & | hmob | ||
) |
Definition at line 687 of file ComponentTcad2d.cc.
bool Garfield::ComponentTcad2d::GetNode | ( | const unsigned int | i, |
double & | x, | ||
double & | y, | ||
double & | v, | ||
double & | ex, | ||
double & | ey | ||
) | const |
Definition at line 1376 of file ComponentTcad2d.cc.
|
inline |
Definition at line 86 of file ComponentTcad2d.hh.
|
inline |
Definition at line 85 of file ComponentTcad2d.hh.
|
inline |
Definition at line 56 of file ComponentTcad2d.hh.
|
inline |
Definition at line 63 of file ComponentTcad2d.hh.
|
inline |
Definition at line 47 of file ComponentTcad2d.hh.
void Garfield::ComponentTcad2d::GetRegion | ( | const unsigned int | i, |
std::string & | name, | ||
bool & | active | ||
) | const |
Definition at line 1257 of file ComponentTcad2d.cc.
|
virtual |
Calculate the voltage range [V].
Implements Garfield::ComponentBase.
Definition at line 1215 of file ComponentTcad2d.cc.
|
virtual |
Get the hole attachment coefficient.
Reimplemented from Garfield::ComponentBase.
Definition at line 113 of file ComponentTcad2d.cc.
|
virtual |
Get the hole drift velocity.
Reimplemented from Garfield::ComponentBase.
Definition at line 366 of file ComponentTcad2d.cc.
bool Garfield::ComponentTcad2d::Initialise | ( | const std::string & | gridfilename, |
const std::string & | datafilename | ||
) |
Definition at line 947 of file ComponentTcad2d.cc.
void Garfield::ComponentTcad2d::PrintRegions | ( | ) | const |
Definition at line 1223 of file ComponentTcad2d.cc.
bool Garfield::ComponentTcad2d::SetAcceptor | ( | const unsigned int | acceptorNumber, |
const double | eXsec, | ||
const double | hxSec, | ||
const double | concentration | ||
) |
Definition at line 62 of file ComponentTcad2d.cc.
bool Garfield::ComponentTcad2d::SetDonor | ( | const unsigned int | donorNumber, |
const double | eXsec, | ||
const double | hxSec, | ||
const double | concentration | ||
) |
Definition at line 44 of file ComponentTcad2d.cc.
void Garfield::ComponentTcad2d::SetDriftRegion | ( | const unsigned int | ireg | ) |
Definition at line 1269 of file ComponentTcad2d.cc.
void Garfield::ComponentTcad2d::SetMedium | ( | const unsigned int | ireg, |
Medium * | m | ||
) |
Definition at line 1289 of file ComponentTcad2d.cc.
void Garfield::ComponentTcad2d::SetRangeZ | ( | const double | zmin, |
const double | zmax | ||
) |
Definition at line 1203 of file ComponentTcad2d.cc.
void Garfield::ComponentTcad2d::UnsetDriftRegion | ( | const unsigned int | ireg | ) |
Definition at line 1279 of file ComponentTcad2d.cc.
|
virtual |
Calculate the weighting field at a given point and for a given electrode.
x,y,z | coordinates [cm]. |
wx,wy,wz | components of the weighting field [1/cm]. |
label | name of the electrode |
Reimplemented from Garfield::ComponentBase.
Definition at line 148 of file ComponentTcad2d.cc.