Garfield++ 3.0
A toolkit for the detailed simulation of particle detectors based on ionisation measurement in gases and semiconductors
|
Box. More...
#include <SolidBox.hh>
Public Member Functions | |
SolidBox (const double cx, const double cy, const double cz, const double lx, const double ly, const double lz) | |
Constructor from centre and half-widths. | |
SolidBox (const double cx, const double cy, const double cz, const double lx, const double ly, const double lz, const double dx, const double dy, const double dz) | |
Constructor from centre, half-widths, and orientation. | |
~SolidBox () | |
Destructor. | |
bool | IsInside (const double x, const double y, const double z) const override |
Check whether a given point is inside the solid. | |
bool | GetBoundingBox (double &xmin, double &ymin, double &zmin, double &xmax, double &ymax, double &zmax) const override |
Return the bounding box of the solid. | |
bool | IsBox () const override |
Return true if the solid is a box. | |
double | GetHalfLengthX () const override |
Return the half-length along x. | |
double | GetHalfLengthY () const override |
Return the half-length along y. | |
double | GetHalfLengthZ () const override |
Return the half-length along z. | |
void | SetHalfLengthX (const double lx) |
void | SetHalfLengthY (const double ly) |
void | SetHalfLengthZ (const double lz) |
bool | SolidPanels (std::vector< Panel > &panels) override |
Retrieve the surface panels of the solid. | |
double | GetDiscretisationLevel (const Panel &panel) override |
Retrieve the discretization level of a panel. | |
Public Member Functions inherited from Garfield::Solid | |
Solid ()=delete | |
Default constructor. | |
Solid (const double cx, const double cy, const double cz, const std::string &name) | |
Constructor. | |
virtual | ~Solid () |
Destructor. | |
virtual bool | IsInside (const double x, const double y, const double z) const =0 |
Check whether a given point is inside the solid. | |
virtual bool | GetBoundingBox (double &xmin, double &ymin, double &zmin, double &xmax, double &ymax, double &zmax) const =0 |
Return the bounding box of the solid. | |
virtual bool | IsBox () const |
Return true if the solid is a box. | |
virtual bool | IsTube () const |
Return true if the solid is a tube. | |
virtual bool | IsSphere () const |
Return true if the solid is a sphere. | |
virtual bool | IsHole () const |
Return true if the solid is a hole. | |
virtual bool | IsRidge () const |
Return true if the solid is a ridge. | |
bool | GetCentre (double &x, double &y, double &z) const |
Retrieve the centre point of the solid. | |
bool | GetOrientation (double &ctheta, double &stheta, double &cphi, double &sphi) const |
Retrieve the orientation (azimuthal and polar angles) of the solid. | |
virtual double | GetHalfLengthX () const |
Return the half-length along x. | |
virtual double | GetHalfLengthY () const |
Return the half-length along y. | |
virtual double | GetHalfLengthZ () const |
Return the half-length along z. | |
virtual double | GetInnerRadius () const |
Return the inner radius. | |
virtual double | GetOuterRadius () const |
Return the outer radius. | |
virtual double | GetRadius () const |
Return the radius. | |
virtual double | GetLowerRadius () const |
Return the lower radius (of a hole). | |
virtual double | GetUpperRadius () const |
Return the upper radius (of a hole). | |
virtual double | GetRidgeOffset () const |
Return the x-offset of a ridge. | |
virtual double | GetRidgeHeight () const |
Return the height of a ridge. | |
unsigned int | GetId () const |
Get the ID of the solid. | |
virtual bool | SolidPanels (std::vector< Panel > &panels)=0 |
Retrieve the surface panels of the solid. | |
virtual double | GetDiscretisationLevel (const Panel &panel)=0 |
Retrieve the discretization level of a panel. | |
void | SetBoundaryPotential (const double v) |
Apply Dirichlet boundary conditions (fixed voltage). | |
void | SetBoundaryChargeDensity (const double q) |
Apply fixed-charge boundary conditions. | |
void | SetBoundaryFloat () |
Make the potential at the surface of the solid floating. | |
void | SetBoundaryDielectric () |
Make the surfaces of the solid dielectric-dielectric interfaces. | |
void | SetBoundaryParallelField () |
void | SetBoundaryPerpendicularField () |
BoundaryCondition | GetBoundaryConditionType () const |
Retrieve the type of boundary condition. | |
double | GetBoundaryPotential () const |
Retrieve the potential. | |
double | GetBoundaryChargeDensity () const |
Retrieve the surface charge density. | |
void | EnableDebugging (const bool on=true) |
Switch debugging messages on/off. | |
Additional Inherited Members | |
Public Types inherited from Garfield::Solid | |
enum | BoundaryCondition { Voltage = 1 , Charge , Float , Dielectric , DielectricCharge , ParallelField , PerpendicularField } |
Protected Member Functions inherited from Garfield::Solid | |
void | ToLocal (const double x, const double y, const double z, double &u, double &v, double &w) const |
void | ToGlobal (const double u, const double v, const double w, double &x, double &y, double &z) const |
void | VectorToLocal (const double x, const double y, const double z, double &u, double &v, double &w) |
Transform a vector from global to local coordinates. | |
void | SetDirection (const double dx, const double dy, const double dz) |
Protected Attributes inherited from Garfield::Solid | |
double | m_cX = 0. |
Centre of the solid. | |
double | m_cY = 0. |
double | m_cZ = 0. |
double | m_dX = 0. |
Direction vector. | |
double | m_dY = 0. |
double | m_dZ = 1. |
double | m_cPhi = 1. |
Azimuthal angle. | |
double | m_sPhi = 0. |
double | m_cTheta = 1. |
Polar angle. | |
double | m_sTheta = 0. |
std::string | m_className = "Solid" |
Class name. | |
bool | m_debug = false |
Debug flag. | |
BoundaryCondition | m_bctype = Voltage |
Type of boundary condition. | |
double | m_volt = 0. |
Potential at the surface. | |
double | m_charge = 0. |
Surface charge density. | |
double | m_eps = 0. |
Dielectric constant. | |
Box.
Definition at line 10 of file SolidBox.hh.
Garfield::SolidBox::SolidBox | ( | const double | cx, |
const double | cy, | ||
const double | cz, | ||
const double | lx, | ||
const double | ly, | ||
const double | lz | ||
) |
Garfield::SolidBox::SolidBox | ( | const double | cx, |
const double | cy, | ||
const double | cz, | ||
const double | lx, | ||
const double | ly, | ||
const double | lz, | ||
const double | dx, | ||
const double | dy, | ||
const double | dz | ||
) |
Constructor from centre, half-widths, and orientation.
Definition at line 14 of file SolidBox.cc.
|
inline |
|
overridevirtual |
Return the bounding box of the solid.
Implements Garfield::Solid.
Definition at line 43 of file SolidBox.cc.
|
overridevirtual |
Retrieve the discretization level of a panel.
Implements Garfield::Solid.
Definition at line 205 of file SolidBox.cc.
|
inlineoverridevirtual |
Return the half-length along x.
Reimplemented from Garfield::Solid.
Definition at line 27 of file SolidBox.hh.
|
inlineoverridevirtual |
Return the half-length along y.
Reimplemented from Garfield::Solid.
Definition at line 28 of file SolidBox.hh.
|
inlineoverridevirtual |
Return the half-length along z.
Reimplemented from Garfield::Solid.
Definition at line 29 of file SolidBox.hh.
|
inlineoverridevirtual |
Return true if the solid is a box.
Reimplemented from Garfield::Solid.
Definition at line 25 of file SolidBox.hh.
|
overridevirtual |
Check whether a given point is inside the solid.
Implements Garfield::Solid.
Definition at line 21 of file SolidBox.cc.
void Garfield::SolidBox::SetHalfLengthX | ( | const double | lx | ) |
Definition at line 65 of file SolidBox.cc.
void Garfield::SolidBox::SetHalfLengthY | ( | const double | ly | ) |
Definition at line 73 of file SolidBox.cc.
void Garfield::SolidBox::SetHalfLengthZ | ( | const double | lz | ) |
Definition at line 81 of file SolidBox.cc.
|
overridevirtual |
Retrieve the surface panels of the solid.
Implements Garfield::Solid.
Definition at line 89 of file SolidBox.cc.