7 #ifndef SRC_INCLUDE_SMASH_PROCESSBRANCH_H_
8 #define SRC_INCLUDE_SMASH_PROCESSBRANCH_H_
155 inline void set_weight(
double process_weight);
170 inline double weight()
const;
201 template <
typename Branch>
204 for (
const auto &
p : l) {
CollisionBranch is a derivative of ProcessBranch, which is used to represent particular final-state c...
ProcessType get_type() const override
CollisionBranch(CollisionBranch &&rhs)
The move constructor efficiently moves the particle-type list member.
ParticleTypePtrList particle_types_
List of particles appearing in this process outcome.
CollisionBranch(const ParticleType &type_a, const ParticleType &type_b, const ParticleType &type_c, const ParticleType &type_d, const ParticleType &type_e, double w, ProcessType p_type)
Construct collision branch with 5 particles in final state.
const ParticleTypePtrList & particle_types() const override
CollisionBranch(const ParticleType &type, double w, ProcessType p_type)
Construct collision branch with 1 particle in final state.
CollisionBranch(ParticleTypePtrList new_types, double w, ProcessType p_type)
Construct collision branch with a list of particles in final state.
ProcessType process_type_
Process type are used to distinguish different types of processes, e.g.
unsigned int particle_number() const override
CollisionBranch(const ParticleType &type_a, const ParticleType &type_b, const ParticleType &type_c, double w, ProcessType p_type)
Construct collision branch with 3 particles in final state.
CollisionBranch(const ParticleType &type_a, const ParticleType &type_b, const ParticleType &type_c, const ParticleType &type_d, double w, ProcessType p_type)
Construct collision branch with 4 particles in final state.
CollisionBranch(const ParticleType &type_a, const ParticleType &type_b, double w, ProcessType p_type)
Construct collision branch with 2 particles in final state.
CollisionBranch(double w, ProcessType p_type)
Construct collision branch with empty final state.
void set_type(ProcessType p_type)
Set the process type.
DecayBranch is a derivative of ProcessBranch, which is used to represent decay channels.
DecayBranch(DecayBranch &&rhs)
The move constructor efficiently moves the particle-type list member.
unsigned int particle_number() const override
ProcessType get_type() const override
const DecayType & type() const
DecayBranch(const DecayType &t, double w)
Construct decay branch.
const ParticleTypePtrList & particle_types() const override
int angular_momentum() const
const DecayType & type_
Decay type (including final-state particles and angular momentum)
DecayType is the abstract base class for all decay types.
virtual unsigned int particle_number() const =0
const ParticleTypePtrList & particle_types() const
int angular_momentum() const
Particle type contains the static properties of a particle species.
ProcessBranch represents one possible final state of an interaction process.
ParticleList particle_list() const
virtual ~ProcessBranch()=default
Virtual Destructor.
virtual const ParticleTypePtrList & particle_types() const =0
double total_weight(const ProcessBranchList< Branch > &l)
ProcessBranch(const ProcessBranch &)=delete
Copying is disabled. Use std::move or create a new object.
virtual ProcessType get_type() const =0
ProcessBranch()
Create a ProcessBranch without final states and weight.
double threshold_
Threshold of the branch.
double branch_weight_
Weight of the branch, typically a cross section or a branching ratio.
ProcessBranch(double w)
Create a ProcessBranch with with weight but without final states.
void set_weight(double process_weight)
Set the weight of the branch.
virtual unsigned int particle_number() const =0
std::ostream & operator<<(std::ostream &out, const ActionPtr &action)
Convenience: dereferences the ActionPtr to Action.
ProcessType
ProcessTypes are used to identify the type of the process.
@ FailedString
See here for a short description.
@ TwoToOne
See here for a short description.
@ MultiParticleThreeToTwo
See here for a short description.
@ StringSoftDoubleDiffractive
See here for a short description.
@ Bremsstrahlung
See here for a short description.
@ Thermalization
See here for a short description.
@ Freeforall
See here for a short description.
@ Decay
See here for a short description.
@ TwoToFive
See here for a short description.
@ None
See here for a short description.
@ StringSoftSingleDiffractiveXB
See here for a short description.
@ TwoToTwo
See here for a short description.
@ Wall
See here for a short description.
@ Elastic
See here for a short description.
@ TwoToFour
See here for a short description.
@ StringSoftAnnihilation
See here for a short description.
@ MultiParticleThreeMesonsToOne
See here for a short description.
@ StringSoftNonDiffractive
See here for a short description.
@ MultiParticleFourToTwo
See here for a short description.
@ StringSoftSingleDiffractiveAX
See here for a short description.
@ StringHard
See here for a short description.
@ HyperSurfaceCrossing
See here for a short description.
@ TwoToThree
See here for a short description.
@ MultiParticleFiveToTwo
See here for a short description.
bool is_string_soft_process(ProcessType p)
Check if a given process type is a soft string excitation.