21 const ParticleList &search_list,
double dt,
const double,
22 const std::vector<FourVector> &)
const {
28 for (
const auto &
p : search_list) {
29 if (
p.type().is_stable()) {
34 p.get_history().collisions_per_particle == 0) {
38 DecayBranchList processes =
p.type().get_partial_widths(
41 const double width = total_weight<DecayBranch>(processes);
48 constexpr
double one_over_hbarc = 1. /
hbarc;
59 one_over_hbarc *
p.inverse_gamma() * width);
62 if (
p.xsec_scaling_factor() < 1.0) {
63 decay_time +=
p.formation_time() -
p.position().x0();
65 if (decay_time < dt) {
68 auto act = std::make_unique<DecayAction>(
p, decay_time);
69 act->add_decays(std::move(processes));
70 actions.emplace_back(std::move(act));
80 for (
const auto &
p : search_list) {
85 if (
p.type().decay_modes().is_empty()) {
89 auto act = std::make_unique<DecayAction>(
p, 0.);
90 act->add_decays(
p.type().get_partial_widths(
92 actions.emplace_back(std::move(act));
const bool decay_initial_particles_
Whether to initial state particles can decay.
const double res_lifetime_factor_
Multiplicative factor to be applied to resonance lifetimes.
const bool do_final_weak_decays_
Do weak decays at the end? Weak here means all non-strong decays, so electro-magnetic decays are done...
ActionList find_final_actions(const Particles &search_list, bool only_res=false) const override
Force all resonances to decay at the end of the simulation.
ActionList find_actions_in_cell(const ParticleList &search_list, double dt, const double, const std::vector< FourVector > &) const override
Check the whole particle list for decays.
The Particles class abstracts the storage and manipulation of particles.
Collection of useful constants that are known at compile time.
constexpr double hbarc
GeV <-> fm conversion factor.
@ Hadronic
Ignore dilepton decay modes widths.
@ All
All decay mode widths.