Garfield++ 4.0
A toolkit for the detailed simulation of particle detectors based on ionisation measurement in gases and semiconductors
|
Unlimited surfaces volume. More...
#include <surface.h>
Public Member Functions | |
ulsvolume () | |
Default constructor. | |
ulsvolume (const std::vector< std::shared_ptr< surface > > &fsurf, char *fname, vfloat fprec) | |
Constructor from surfaces. | |
ulsvolume (ulsvolume &f) | |
ulsvolume (const ulsvolume &fv) | |
virtual | ~ulsvolume () |
Destructor. | |
int | check_point_inside (const point &fpt, const vec &dir) const override |
int | range_ext (trajestep &fts, int s_ext) const override |
void | ulsvolume_init (const std::vector< std::shared_ptr< surface > > &fsurf, const std::string &fname, vfloat fprec) |
void | income (gparticle *) override |
void | chname (char *nm) const override |
void | print (std::ostream &file, int l) const override |
ulsvolume * | copy () const override |
Public Member Functions inherited from Heed::absvol | |
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 | |
int | qsurf = 0 |
std::array< std::shared_ptr< surface >, pqqsurf > | surf |
std::string | name = "non-initialized ulsvolume" |
Public Attributes inherited from Heed::absvol | |
vfloat | prec |
bool | s_sensitive |
Static Public Attributes | |
static constexpr int | pqqsurf = 10 |
Protected Member Functions | |
absref_transmit | get_components () override |
Protected Attributes | |
surface * | adrsurf [pqqsurf] |
|
inline |
Heed::ulsvolume::ulsvolume | ( | const std::vector< std::shared_ptr< surface > > & | fsurf, |
char * | fname, | ||
vfloat | fprec | ||
) |
Constructor from surfaces.
Definition at line 347 of file surface.cpp.
Heed::ulsvolume::ulsvolume | ( | ulsvolume & | f | ) |
Heed::ulsvolume::ulsvolume | ( | const ulsvolume & | fv | ) |
|
inlinevirtual |
|
overridevirtual |
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.
Implements Heed::absvol.
Definition at line 192 of file surface.cpp.
Referenced by check_point_inside(), and range_ext().
|
inlineoverridevirtual |
Reimplemented from Heed::absvol.
Reimplemented in Heed::manip_ulsvolume.
Definition at line 174 of file surface.h.
Referenced by print().
|
inlineoverridevirtual |
Reimplemented from Heed::absvol.
Reimplemented in Heed::manip_ulsvolume.
Definition at line 179 of file surface.h.
|
overrideprotectedvirtual |
|
inlineoverridevirtual |
|
overridevirtual |
Reimplemented from Heed::absvol.
Reimplemented in Heed::manip_ulsvolume.
Definition at line 372 of file surface.cpp.
Referenced by check_point_inside(), Heed::manip_ulsvolume::print(), Heed::box::print(), and range_ext().
|
overridevirtual |
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
Implements Heed::absvol.
Definition at line 210 of file surface.cpp.
Referenced by Heed::box::range_ext().
void Heed::ulsvolume::ulsvolume_init | ( | const std::vector< std::shared_ptr< surface > > & | fsurf, |
const std::string & | fname, | ||
vfloat | fprec | ||
) |
Definition at line 334 of file surface.cpp.
Referenced by Heed::box::init_planes().
Definition at line 150 of file surface.h.
Referenced by get_components().
std::string Heed::ulsvolume::name = "non-initialized ulsvolume" |
Definition at line 146 of file surface.h.
Referenced by Heed::manip_ulsvolume::chname(), chname(), and ulsvolume_init().
|
staticconstexpr |
Definition at line 143 of file surface.h.
Referenced by ulsvolume().
int Heed::ulsvolume::qsurf = 0 |
Definition at line 144 of file surface.h.
Referenced by check_point_inside(), get_components(), print(), range_ext(), ulsvolume(), and ulsvolume_init().
Definition at line 145 of file surface.h.
Referenced by check_point_inside(), get_components(), print(), range_ext(), ulsvolume(), and ulsvolume_init().