15     const ParticleList& plist, 
double t_max, 
const double,
 
   16     const std::vector<FourVector>&)
 const {
 
   17   std::vector<ActionPtr> actions;
 
   21     double time_until_crossing = t_max;
 
   23     for (
int i = 0; i < 3; i++) {
 
   24       double t = t_max + 1.;
 
   26         t = (
l_[i] - r[i]) / v[i];
 
   30       if (t < time_until_crossing) {
 
   31         time_until_crossing = t;
 
   39     FourVector crossing_point(
p.position().x0() + time_until_crossing,
 
   40                               r + v * time_until_crossing);
 
   41     crossing_point[i_cross + 1] = ((v[i_cross] > 0.0) ? 0.0 : 
l_[i_cross]);
 
   45     ActionPtr action = make_unique<WallcrossingAction>(
p, outgoing_particle,
 
   47     actions.emplace_back(std::move(action));
 
The FourVector class holds relevant values in Minkowski spacetime with (+, −, −, −) metric signature.
 
ParticleData contains the dynamic information of a certain particle.
 
void set_4position(const FourVector &pos)
Set the particle's 4-position directly.
 
The ThreeVector class represents a physical three-vector  with the components .
 
ActionList find_actions_in_cell(const ParticleList &plist, double t_max, const double, const std::vector< FourVector > &) const override
Find the next wall crossings for every particle before time t_max.
 
const std::array< double, 3 > l_
Periods in x,y,z directions in fm.
 
constexpr double really_small
Numerical error tolerance.