Garfield++ 4.0
A toolkit for the detailed simulation of particle detectors based on ionisation measurement in gases and semiconductors
|
#include <trajestep.h>
Public Member Functions | |
trajestep (const vfloat fmax_range, const vfloat frad_for_straight, const vfloat fmax_straight_arange, const vfloat fmax_circ_arange, const point &fcurrpos, const vec &fdir, const bool fcurved, const vec &frelcen, vfloat fmrange, vfloat prec) | |
trajestep (const trajestep &fts, vfloat fmrange) | |
trajestep ()=default | |
Default constructor. | |
virtual | ~trajestep () |
Destructor. | |
void | Gnextpoint (vfloat frange, point &fpos, vec &fdir) const |
Move to the next point. | |
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 | max_range = 100. * CLHEP::cm |
Max. step length. | |
vfloat | rad_for_straight = 1000. * CLHEP::cm |
Radius beyond which to prefer straight lines to reduce calculation time. | |
vfloat | max_straight_arange = 0.1 * CLHEP::rad |
Angular step for curved lines when using straight-line approximation. | |
vfloat | max_circ_arange = 0.2 * CLHEP::rad |
Angular step for curved lines. | |
point | currpos |
Current position. | |
vec | dir |
Unit vector. | |
bool | curved = false |
Type of trajectory (curved or straight). | |
vec | relcen |
int | s_range_cf = 0 |
int | s_prec = 0 |
vfloat | mrange = 0. |
Maximal possible range. | |
point | mpoint |
Protected Member Functions | |
virtual absref_transmit | get_components () override |
Static Protected Attributes | |
static absref absref::* | aref [4] |
Trajectory step of any object (particle, photon, ...). Here we interested in geometrical parameters only. The time, speed, acceleration, mass, and forces are not interesting here. The object can move by straight line or by curved line. The real trajectory is approximated by little steps. Each step can be straight or with constant curvature (circumference). If the path is always straight (for example for light or neutral particles), the step length is limited by extra conditions, typically edge of a volume. If the path is curved, the step length is limited first by length at which the curvature is changed, then by precision of approximation of the real shape of curvature.
Definition at line 32 of file trajestep.h.
Heed::trajestep::trajestep | ( | const vfloat | fmax_range, |
const vfloat | frad_for_straight, | ||
const vfloat | fmax_straight_arange, | ||
const vfloat | fmax_circ_arange, | ||
const point & | fcurrpos, | ||
const vec & | fdir, | ||
const bool | fcurved, | ||
const vec & | frelcen, | ||
vfloat | fmrange, | ||
vfloat | prec | ||
) |
Constructor.
fmax_range | maximum step length |
frad_for_straight | radius beyond which to use straight-line steps. |
fmax_straight_arange | angular step for straight-line approximation. |
fmax_circ_arange | angular step for curved steps. |
fcurrpos | initial coordinates. |
fdir | initial direction. |
fcurved | flag whether the trajectory is curved or straight. |
frelcen | centre of rotation (only used for curved lines). |
fmrange | can be used for reducing/limiting the step length. |
prec | tolerance for checking if frelcen is perpendicular to dir. |
Definition at line 25 of file trajestep.cpp.
Constructor to continue propagation from the end point of another step.
fts | old step to continue |
fmrange | new range to travel |
Definition at line 66 of file trajestep.cpp.
|
default |
Default constructor.
Referenced by trajestep().
|
inlinevirtual |
|
overrideprotectedvirtual |
Move to the next point.
Definition at line 80 of file trajestep.cpp.
Referenced by Heed::stvpoint::stvpoint().
|
staticprotected |
Definition at line 102 of file trajestep.h.
Referenced by get_components().
point Heed::trajestep::currpos |
Current position.
Definition at line 74 of file trajestep.h.
Referenced by Gnextpoint(), Heed::operator<<(), Heed::splane::range(), Heed::box::range_ext(), and Heed::ulsvolume::range_ext().
bool Heed::trajestep::curved = false |
Type of trajectory (curved or straight).
Definition at line 78 of file trajestep.h.
Referenced by Gnextpoint(), Heed::operator<<(), and trajestep().
vec Heed::trajestep::dir |
Unit vector.
Definition at line 76 of file trajestep.h.
Referenced by Gnextpoint(), Heed::operator<<(), Heed::splane::range(), Heed::ulsvolume::range_ext(), and trajestep().
vfloat Heed::trajestep::max_circ_arange = 0.2 * CLHEP::rad |
Angular step for curved lines.
Definition at line 71 of file trajestep.h.
Referenced by trajestep().
vfloat Heed::trajestep::max_range = 100. * CLHEP::cm |
vfloat Heed::trajestep::max_straight_arange = 0.1 * CLHEP::rad |
Angular step for curved lines when using straight-line approximation.
Definition at line 69 of file trajestep.h.
Referenced by trajestep().
point Heed::trajestep::mpoint |
Definition at line 98 of file trajestep.h.
Referenced by Heed::operator<<(), Heed::ulsvolume::range_ext(), and Heed::stvpoint::stvpoint().
vfloat Heed::trajestep::mrange = 0. |
Maximal possible range.
Definition at line 93 of file trajestep.h.
Referenced by Heed::gparticle::calc_step_to_bord(), Gnextpoint(), Heed::operator<<(), Heed::splane::range(), Heed::box::range_ext(), Heed::ulsvolume::range_ext(), Heed::stvpoint::stvpoint(), and trajestep().
vfloat Heed::trajestep::rad_for_straight = 1000. * CLHEP::cm |
Radius beyond which to prefer straight lines to reduce calculation time.
Definition at line 67 of file trajestep.h.
Referenced by trajestep().
vec Heed::trajestep::relcen |
Centre of rotation relative to currpos. Used only for curved trajectories. If used, should be perpendicular to dir.
Definition at line 83 of file trajestep.h.
Referenced by Gnextpoint(), Heed::operator<<(), Heed::splane::range(), and trajestep().
int Heed::trajestep::s_prec = 0 |
Definition at line 90 of file trajestep.h.
Referenced by Heed::gparticle::calc_step_to_bord(), Heed::operator<<(), and Heed::ulsvolume::range_ext().
int Heed::trajestep::s_range_cf = 0 |
Definition at line 87 of file trajestep.h.
Referenced by Gnextpoint(), Heed::operator<<(), Heed::splane::range(), and trajestep().