7 #ifndef SRC_INCLUDE_PROCESSBRANCH_H_ 8 #define SRC_INCLUDE_PROCESSBRANCH_H_ 146 inline void set_weight(
double process_weight);
152 virtual const ParticleTypePtrList &particle_types()
const = 0;
158 ParticleList particle_list()
const;
161 inline double weight()
const;
167 double threshold()
const;
170 virtual unsigned int particle_number()
const = 0;
176 mutable double threshold_ = -1.;
180 branch_weight_ = process_weight;
192 template <
typename Branch>
195 for (
const auto &p : l) {
224 particle_types_.reserve(1);
225 particle_types_.push_back(&type);
237 particle_types_.reserve(2);
238 particle_types_.push_back(&type_a);
239 particle_types_.push_back(&type_b);
249 particle_types_(
std::move(new_types)),
250 process_type_(p_type) {}
254 particle_types_(
std::move(rhs.particle_types_)),
255 process_type_(rhs.process_type_) {}
257 return particle_types_;
269 return particle_types_.size();
316 return type_.particle_types();
319 return type_.particle_number();
333 #endif // SRC_INCLUDE_PROCESSBRANCH_H_ ProcessBranch(double w)
Create a ProcessBranch with with weight but without final states.
ProcessBranch represents one possible final state of an interaction process.
CollisionBranch(ParticleTypePtrList new_types, double w, ProcessType p_type)
Construct collision branch with a list of particles in final state.
double diffractive. Two strings are formed, one from A and one from B.
bool is_string_soft_process(ProcessType p)
Check if a given process type is a soft string excitation.
ProcessType
Process Types are used to identify the type of the process.
ProcessBranch()
Create a ProcessBranch without final states and weight.
ProcessType process_type_
Process type are used to distinguish different types of processes, e.g.
double total_weight(const ProcessBranchList< Branch > &l)
a special case of baryon-antibaryon annihilation.
DecayBranch(const DecayType &t, double w)
Construct decay branch.
2->2 inelastic scattering
const DecayType & type() const
ProcessType get_type() const override
forced thermalization, many particles are replaced by a thermalized ensemble
Hypersurface crossing Particles are removed from the evolution and printed to a separate output to se...
int angular_momentum() const
DecayType is the abstract base class for all decay types.
const ParticleTypePtrList & particle_types() const override
unsigned int particle_number() const override
void set_weight(double process_weight)
Set the weight of the branch.
CollisionBranch(const ParticleType &type_a, const ParticleType &type_b, double w, ProcessType p_type)
Construct collision branch with 2 particles in final state.
elastic scattering: particles remain the same, only momenta change
double branch_weight_
Weight of the branch, typically a cross section or a branching ratio.
CollisionBranch(double w, ProcessType p_type)
Construct collision branch with empty final state.
CollisionBranch is a derivative of ProcessBranch, which is used to represent particular final-state c...
Particle type contains the static properties of a particle species.
const ParticleTypePtrList & particle_types() const override
CollisionBranch(CollisionBranch &&rhs)
The move constructor efficiently moves the particle-type list member.
hard string process involving 2->2 QCD process by PYTHIA.
DecayBranch is a derivative of ProcessBranch, which is used to represent decay channels.
CollisionBranch(const ParticleType &type, double w, ProcessType p_type)
Construct collision branch with 1 particle in final state.
resonance formation (2->1)
unsigned int particle_number() const override
single diffractive AB->XB.
ProcessType get_type() const override
std::ostream & operator<<(std::ostream &out, const ActionPtr &action)
Convenience: dereferences the ActionPtr to Action.
non-diffractive. Two strings are formed both have ends in A and B.
const DecayType & type_
Decay type (including final-state particles and angular momentum)
(41-45) soft string excitations.
DecayBranch(DecayBranch &&rhs)
The move constructor efficiently moves the particle-type list member.
void set_type(ProcessType p_type)
Set the process type.
ParticleTypePtrList particle_types_
List of particles appearing in this process outcome.