Garfield++ v2r0
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, PassivePtr< 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 Member Functions inherited from Heed::RegPassivePtr | |
RegPassivePtr (void) | |
RegPassivePtr (char fs_ban_del, char fs_ban_sub, char fs_ban_cop=0) | |
RegPassivePtr (const RegPassivePtr &f) | |
RegPassivePtr & | operator= (const RegPassivePtr &f) |
CountPP_ns::CountPassivePtr * | book (void) const |
void | clear_pointers (void) const |
virtual RegPassivePtr * | copy () const |
virtual | ~RegPassivePtr () |
virtual void | print (std::ostream &file, int l=1) const |
void | set_s_ban_del (char fs_ban_del) |
char | get_s_ban_del (void) const |
void | set_s_ban_sub (char fs_ban_sub) |
char | get_s_ban_sub (void) const |
void | set_s_ban_cop (char fs_ban_cop) |
char | get_s_ban_cop (void) const |
void | set_s_allow_del_at_zero_count (char fs_allow_del_at_zero_count) |
char | get_s_allow_del_at_zero_count (void) const |
long | get_total_number_of_references (void) const |
Public Attributes | |
vfloat | prec |
bool | s_sensitive |
Additional Inherited Members | |
Static Public Member Functions inherited from Heed::RegPassivePtr | |
static void | set_s_ban_del_ignore (char fs_ban_del_ignore) |
static char | get_s_ban_del_ignore (void) |
static void | set_s_print_adr_cpp (char fs_print_adr_cpp) |
static char | get_s_print_adr_cpp (void) |
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::box, Heed::manip_box, Heed::sh_manip_box, Heed::ulsvolume, and Heed::manip_ulsvolume.
Definition at line 123 of file volume.h.
Referenced by Heed::manip_absvol::m_chname(), Heed::sh_manip_absvol::m_chname(), and print().
|
virtual |
Reimplemented from Heed::RegPassivePtr.
Reimplemented in Garfield::HeedChamber, Heed::box, Heed::manip_box, Heed::sh_manip_box, Heed::ulsvolume, and Heed::manip_ulsvolume.
Definition at line 146 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 79 of file volume.cpp.
Referenced by Heed::manip_absvol::m_find_embed_vol().
|
virtual |
Definition at line 75 of file volume.cpp.
Referenced by find_embed_vol(), print(), and range().
|
inlinevirtual |
Reimplemented in Heed::ulsvolume, and Heed::box.
Definition at line 122 of file volume.h.
Referenced by Heed::gparticle::change_vol().
|
virtual |
Reimplemented from Heed::RegPassivePtr.
Reimplemented in Heed::box, Heed::manip_box, Heed::sh_manip_box, Heed::ulsvolume, and Heed::manip_ulsvolume.
Definition at line 118 of file volume.cpp.
Referenced by Heed::manip_absvol::m_print(), Heed::sh_manip_absvol::m_print(), Heed::HeedParticle_BGM::physics(), Heed::HeedCluster::print(), 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 98 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 74 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 75 of file volume.h.
Referenced by Garfield::HeedChamber::HeedChamber(), and Heed::HeedDeltaElectron::physics_after_new_speed().