Version: SMASH-3.1
hypersurfacecrossingaction.h
Go to the documentation of this file.
1 /*
2  *
3  * Copyright (c) 2019-2020,2022
4  * SMASH Team
5  *
6  * GNU General Public License (GPLv3 or later)
7  *
8  */
9 
10 #ifndef SRC_INCLUDE_SMASH_HYPERSURFACECROSSINGACTION_H_
11 #define SRC_INCLUDE_SMASH_HYPERSURFACECROSSINGACTION_H_
12 
13 #include <vector>
14 
15 #include "action.h"
16 #include "actionfinderfactory.h"
17 
18 namespace smash {
19 
28  public:
36  const ParticleData &out_part,
37  const double time_until)
38  : Action(in_part, out_part, time_until,
40  double get_total_weight() const override { return 0.0; };
41  double get_partial_weight() const override { return 0.0; };
42  void format_debug_output(std::ostream &out) const override {
43  out << "Hypersurface crossing of " << incoming_particles_;
44  }
45 
50  void generate_final_state() override;
51 
63  double check_conservation(const uint32_t id_process) const override;
64 };
65 
73  public:
84  explicit HyperSurfaceCrossActionsFinder(double tau, double y, double pT)
85  : prop_time_{tau}, rap_cut_{y}, pT_cut_{pT} {};
86 
97  ActionList find_actions_in_cell(
98  const ParticleList &plist, double dt, const double,
99  const std::vector<FourVector> &beam_momentum) const override;
100 
103  const ParticleList &, const ParticleList &, double,
104  const std::vector<FourVector> &) const override {
105  return {};
106  }
107 
110  const ParticleList &, const Particles &, double,
111  const std::vector<FourVector> &) const override {
112  return {};
113  }
114 
116  ActionList find_final_actions(const Particles &, bool) const override {
117  return {};
118  }
119 
120  private:
122  const double prop_time_;
123 
130  const double rap_cut_;
131 
139  const double pT_cut_;
140 
151  bool crosses_hypersurface(ParticleData &pdata_before_propagation,
152  ParticleData &pdata_after_propagation,
153  const double tau) const;
154 
164  FourVector coordinates_on_hypersurface(ParticleData &pdata_before_propagation,
165  ParticleData &pdata_after_propagation,
166  const double tau) const;
167 };
168 
169 } // namespace smash
170 
171 #endif // SRC_INCLUDE_SMASH_HYPERSURFACECROSSINGACTION_H_
ActionFinderInterface is the abstract base class for all action finders, i.e.
Action is the base class for a generic process that takes a number of incoming particles and transfor...
Definition: action.h:35
ParticleList incoming_particles_
List with data of incoming particles.
Definition: action.h:355
The FourVector class holds relevant values in Minkowski spacetime with (+, −, −, −) metric signature.
Definition: fourvector.h:33
Finder for hypersurface crossing actions.
const double prop_time_
Proper time of the hypersurface in fm.
FourVector coordinates_on_hypersurface(ParticleData &pdata_before_propagation, ParticleData &pdata_after_propagation, const double tau) const
Find the coordinates where particle crosses hypersurface.
const double rap_cut_
Rapidity (momentum space) cut for the particles contributing to the initial conditions for hydrodynam...
HyperSurfaceCrossActionsFinder(double tau, double y, double pT)
Construct hypersurfacecrossing action finder.
ActionList find_final_actions(const Particles &, bool) const override
No final actions for hypersurface crossing.
const double pT_cut_
Transverse momentum cut for the particles contributing to the initial conditions for hydrodynamics.
ActionList find_actions_in_cell(const ParticleList &plist, double dt, const double, const std::vector< FourVector > &beam_momentum) const override
Find the next hypersurface crossings for each particle that occur within the timestepless propagation...
bool crosses_hypersurface(ParticleData &pdata_before_propagation, ParticleData &pdata_after_propagation, const double tau) const
Determine whether particle crosses hypersurface within next timestep during propagation.
ActionList find_actions_with_neighbors(const ParticleList &, const ParticleList &, double, const std::vector< FourVector > &) const override
Ignore the neighbor searches for hypersurface crossing.
ActionList find_actions_with_surrounding_particles(const ParticleList &, const Particles &, double, const std::vector< FourVector > &) const override
Ignore the surrounding searches for hypersurface crossing.
Hypersurfacecrossingaction is a special action which indicates that a particle has crossed a hypersur...
double check_conservation(const uint32_t id_process) const override
Check various conservation laws.
double get_partial_weight() const override
Return the specific weight for the chosen outgoing channel, which is mainly used for the partial weig...
void generate_final_state() override
Generate the final state of the hypersurface crossing particles.
void format_debug_output(std::ostream &out) const override
Writes information about this action to the out stream.
HypersurfacecrossingAction(const ParticleData &in_part, const ParticleData &out_part, const double time_until)
Construct hypersurfacecrossing action.
double get_total_weight() const override
Return the total weight value, which is mainly used for the weight output entry.
ParticleData contains the dynamic information of a certain particle.
Definition: particledata.h:58
The Particles class abstracts the storage and manipulation of particles.
Definition: particles.h:33
Definition: action.h:24
ProcessType
ProcessTypes are used to identify the type of the process.
Definition: processbranch.h:39
@ HyperSurfaceCrossing
See here for a short description.