Garfield++ 3.0
A toolkit for the detailed simulation of particle detectors based on ionisation measurement in gases and semiconductors
|
Sphere. More...
#include <SolidSphere.hh>
Public Member Functions | |
SolidSphere (const double cx, const double cy, const double cz, const double r) | |
Constructor. | |
~SolidSphere () | |
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 | IsSphere () const override |
Return true if the solid is a sphere. | |
void | SetRadius (const double r) |
Set the radius of the sphere. | |
double | GetRadius () const override |
Return the radius. | |
void | SetMeridians (const unsigned int n) |
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. | |
Sphere.
Definition at line 10 of file SolidSphere.hh.
Garfield::SolidSphere::SolidSphere | ( | const double | cx, |
const double | cy, | ||
const double | cz, | ||
const double | r | ||
) |
Constructor.
Definition at line 10 of file SolidSphere.cc.
|
inline |
|
overridevirtual |
Return the bounding box of the solid.
Implements Garfield::Solid.
Definition at line 47 of file SolidSphere.cc.
|
overridevirtual |
Retrieve the discretization level of a panel.
Implements Garfield::Solid.
Definition at line 157 of file SolidSphere.cc.
|
inlineoverridevirtual |
Return the radius.
Reimplemented from Garfield::Solid.
Definition at line 26 of file SolidSphere.hh.
|
overridevirtual |
Check whether a given point is inside the solid.
Implements Garfield::Solid.
Definition at line 16 of file SolidSphere.cc.
|
inlineoverridevirtual |
Return true if the solid is a sphere.
Reimplemented from Garfield::Solid.
Definition at line 21 of file SolidSphere.hh.
void Garfield::SolidSphere::SetMeridians | ( | const unsigned int | n | ) |
When calculating surface panels, the sphere is approximated by a set of parallelograms, much the same way maps are drawn. N specifies the number of meridians and also the number of parallels.
Definition at line 67 of file SolidSphere.cc.
void Garfield::SolidSphere::SetRadius | ( | const double | r | ) |
Set the radius of the sphere.
Definition at line 59 of file SolidSphere.cc.
Referenced by SolidSphere().
|
overridevirtual |
Retrieve the surface panels of the solid.
Implements Garfield::Solid.
Definition at line 75 of file SolidSphere.cc.