10 #ifndef SRC_INCLUDE_SMASH_DECAYACTION_H_
11 #define SRC_INCLUDE_SMASH_DECAYACTION_H_
67 double kinetic_energy_cm)
const override;
107 using std::invalid_argument::invalid_argument;
140 const ParticleData& daughter1,
int& lambda_idx,
int& pion_idx) {
151 if (lambda0 && pion1 && !lambda1 && !pion0) {
155 }
else if (lambda1 && pion0 && !lambda0 && !pion1) {
Action is the base class for a generic process that takes a number of incoming particles and transfor...
Thrown when DecayAction is called to perform with 0 or more than 2 entries in outgoing_particles.
DecayAction is a special action which takes one single particle in the initial state and makes it dec...
double partial_width_
partial decay width to the chosen outgoing channel
double total_width_
total decay width
double get_total_weight() const override
Return the total width of the decay process.
bool sample_outgoing_particles()
Sample outgoing particle types, masses and angles return success of sampling.
SpinInteractionType spin_interaction_type_
Spin interaction type.
void add_decays(DecayBranchList pv)
Add several new decays at once.
DecayAction(const ParticleData &p, double time, SpinInteractionType spin_interaction_type=SpinInteractionType::Off)
Construct a DecayAction from a particle p.
std::optional< bool > was_2body_phase_space_sampled_with_potentials_as_valid_
Optional success flag for sampling outgoing particles.
double total_width() const
Get total decay width.
void generate_final_state() override
Generate the final state of the decay process.
double get_partial_weight() const override
Get partial width of chosen channel.
void add_decay(DecayBranchPtr p)
Add one new decay.
DecayBranchList decay_channels_
List of possible decays.
int L_
Angular momentum of the decay.
void sample_2body_phasespace() override
Sample the full 2-body phase space (masses, momenta, angles) in the center-of-mass frame for the fina...
static bool is_sigmastar_to_lambda_pion_decay(const ParticleData &parent, const ParticleData &daughter0, const ParticleData &daughter1, int &lambda_idx, int &pion_idx)
Check for the decay Σ*→Λπ.
std::pair< double, double > sample_masses(double kinetic_energy_cm) const override
Sample the masses of the final particles.
ParticleData contains the dynamic information of a certain particle.
PdgCode pdgcode() const
Get the pdgcode of the particle.
bool is_sigmastar() const
SpinInteractionType
Possible spin interaction types.
@ Off
No spin interactions.
void format_debug_output(std::ostream &out) const override
Writes information about this decay action to the out stream.