Garfield++ 4.0
A toolkit for the detailed simulation of particle detectors based on ionisation measurement in gases and semiconductors
|
#include <volume.h>
Public Member Functions | |
virtual | ~absvol () |
Destructor. | |
virtual int | check_point_inside (const point &fpt, const vec &dir) const =0 |
virtual int | find_embed_vol (const point &fpt, const vec &dir, manip_absvol_treeid *atid) const |
virtual int | range (trajestep &fts, int s_ext, int &sb, manip_absvol *&faeid) const |
virtual int | range_ext (trajestep &fts, int s_ext) const =0 |
virtual void | income (gparticle *) |
virtual void | chname (char *nm) const |
virtual void | print (std::ostream &file, int l) const |
virtual absvol * | copy () const |
virtual std::vector< manip_absvol * > | Gamanip_embed () const |
Public Member Functions inherited from Heed::absref | |
virtual | ~absref () |
Destructor. | |
virtual void | down (const abssyscoor *fasc) |
Convert numbering representation of object to basical system of fasc. | |
virtual void | up (const abssyscoor *fasc) |
Convert numbering representation of objects to new system. | |
virtual void | turn (const vec &dir, vfloat angle) |
Turn around axis doing via center of coordinate system along dir. | |
virtual void | shift (const vec &dir) |
Public Attributes | |
vfloat | prec |
bool | s_sensitive |
Abstract base class for volumes. The functions accept and return parameters expressed in the internal coordinate system inherent to this volume. For interface with external system please use manip_absvol.
|
inlinevirtual |
|
pure virtual |
Check if a point is inside the volume. If two volumes are adjacent, it may happen that a point belongs to both. To avoid this confusion the parameter dir is used. If dir == (0, 0, 0), and the point is exactly on the border, the behaviour is in general not specified. If dir != (0, 0, 0), and the point is on the border with precision prec, the exiting volume is ignored.
Implemented in Heed::box, and Heed::ulsvolume.
Referenced by find_embed_vol(), and Heed::manip_absvol::m_check_point_inside().
|
inlinevirtual |
Reimplemented in Heed::manip_ulsvolume, Heed::box, Heed::manip_box, Heed::sh_manip_box, and Heed::ulsvolume.
Definition at line 121 of file volume.h.
Referenced by Heed::manip_absvol::m_chname(), Heed::sh_manip_absvol::m_chname(), and print().
|
virtual |
Reimplemented in Heed::manip_ulsvolume, Garfield::HeedChamber, Heed::box, Heed::manip_box, Heed::sh_manip_box, and Heed::ulsvolume.
Definition at line 148 of file volume.cpp.
|
virtual |
Return 1 if point in this volume. It starts from embraced manipulators, if any If there are embraced volumes, it add some to namvol, otherwise it does not add namvol==0. The embraced volumes should not cross each other, since this function can return only one chain. But the borders can coincide with precision given to embraced volumes. If the point is on the border, it is considered inside volume only if dir is directed inside it. Also algorithm of volume is effective if it interrupts checking after first volume found.
Definition at line 81 of file volume.cpp.
Referenced by Heed::manip_absvol::m_find_embed_vol().
|
virtual |
Definition at line 77 of file volume.cpp.
Referenced by find_embed_vol(), print(), and range().
|
inlinevirtual |
Reimplemented in Heed::ulsvolume, and Heed::box.
Definition at line 120 of file volume.h.
Referenced by Heed::gparticle::change_vol().
|
virtual |
Reimplemented in Heed::manip_ulsvolume, Heed::box, Heed::manip_box, Heed::sh_manip_box, and Heed::ulsvolume.
Definition at line 120 of file volume.cpp.
Referenced by Heed::manip_absvol::m_print(), Heed::sh_manip_absvol::m_print(), Heed::HeedParticle_BGM::physics(), Heed::box::print(), and Heed::ulsvolume::print().
|
virtual |
range considering this volume, all embracing volumes sb=0 range restricted by precision reasons. sb=1 crossing border of this volume sb=2 crossing border of embraced volume s_ext=1 inside, and to check all embraced volumes s_ext=0 outside checks only one level in deep. It is assumed that from current volume the particle can pass either outside or to one of embracing volumes. In the last case *faeid is filled by its id. Otherwise *faeid is filled by NULL.
Definition at line 100 of file volume.cpp.
Referenced by Heed::gparticle::calc_step_to_bord(), and Heed::manip_absvol::m_range().
|
pure virtual |
Find cross with current volume ignoring embraced ones. s_ext=1 exit, now point is inside, but embraced volumes are ingnored. s_ext=0 enter, now point is outside
Implemented in Heed::box, and Heed::ulsvolume.
Referenced by Heed::manip_absvol::m_range_ext(), and range().
vfloat Heed::absvol::prec |
Definition at line 72 of file volume.h.
Referenced by Heed::box::box(), Heed::box::check_point_inside(), Heed::ulsvolume::check_point_inside(), Heed::box::init_planes(), Heed::box::init_prec(), Heed::box::print(), Heed::ulsvolume::print(), Heed::ulsvolume::range_ext(), Heed::gparticle::switch_new_vol(), Heed::ulsvolume::ulsvolume(), and Heed::ulsvolume::ulsvolume_init().
bool Heed::absvol::s_sensitive |
Definition at line 73 of file volume.h.
Referenced by Garfield::HeedChamber::HeedChamber(), and Heed::HeedDeltaElectron::physics_after_new_speed().