19 <<
" time=" <<
time <<
'\n';
25 Ifile <<
"point is outside universe\n";
34 Ifile <<
"next volume name " << s <<
'\n';
44 mfunname(
"gparticle::gparticle(...)");
78 "too many zero steps, possible infinite loop\n",
mcerr);
112 pvecerror(
"stvpoint gparticle::calc_step_to_bord()");
120 curvature(curved, relcen, mrange, m_max_straight_arange);
130 trajestep ts(m_max_range, m_rad_for_straight,
131 m_max_straight_arange, m_max_circ_arange,
154 mfunname(
"stvpoint gparticle::switch_new_vol(void)");
166 nextp.
tid.
eid[0]->m_find_embed_vol(pth, nextp.
dir, &tidl);
167 if (tidl.
eid.empty()) {
173 if (tidl == nextp.
tid) {
180 vec additional_dist = nextp.
dir * curprec;
181 pth = pth + additional_dist;
203 Ifile <<
"origin point:\n";
209 Ifile <<
"previous point:\n";
215 Ifile <<
"current point:\n";
221 Ifile <<
"next point:\n";
#define check_econd12a(a, sign, b, add, stream)
virtual int range(trajestep &fts, int s_ext, int &sb, manip_absvol *&faeid) const
virtual void print(std::ostream &file, int l) const
Print-out.
virtual void physics_mrange(double &fmrange)
virtual void physics_after_new_speed(std::vector< gparticle * > &)
Apply any other processes (turn the trajectory, kill the particle, ...).
stvpoint m_nextpos
Next point.
double m_total_range_from_origin
Range from origin to current position.
virtual stvpoint calc_step_to_bord()
Determine next position.
stvpoint m_prevpos
Previous point.
static constexpr long m_max_qzero_step
Max. number of zero-steps allowed.
virtual void step(std::vector< gparticle * > &secondaries)
gparticle()=default
Default constructor.
stvpoint m_currpos
Current point.
virtual void change_vol()
Move from one volume to another.
stvpoint switch_new_vol()
Generate next position in new volume.
long m_nzero_step
Number of previous steps with zero range (including this step).
stvpoint m_origin
Original point.
bool m_alive
Status flag whether the particle is active.
virtual void curvature(bool &curved, vec &frelcen, vfloat &fmrange, vfloat prec)
Service class (array of manip_absvol).
void print(std::ostream &file, int l) const
void up_absref(absref *f)
std::vector< manip_absvol * > eid
List of volumes.
Abstract base classs for volume "manipulators".
void m_chname(char *nm) const
virtual int m_find_embed_vol(const point &fpt, const vec &fdir, manip_absvol_treeid *atid) const
Point in space, time and velocity.
void print(std::ostream &file, int l) const
vec dirloc
Unit vector, in the local system (last system in the tree).
vec dir
Unit vector, in the first system in the tree.
vfloat prange
Range from previous point.
vfloat speed
Longitudinal velocity.
point pt
Coordinates in the first system in the tree.
point ptloc
Coordinates in the local system (last system in the tree).
vfloat mrange
Maximal possible range.
#define pvecerror(string)