21 if (!
output->is_dilepton_output()) {
24 for (
const auto &
p : search_list) {
25 const auto n_all_modes =
27 .get_partial_widths(
p.momentum(),
p.position().threevec(),
30 if (n_all_modes == 0) {
34 const double inv_gamma =
p.inverse_gamma();
35 DecayBranchList dil_modes =
p.type().get_partial_widths(
40 if (dil_modes.size() == n_all_modes ||
p.type().is_stable() ||
45 for (DecayBranchPtr &mode : dil_modes) {
48 const double shining_weight =
49 dt * inv_gamma * mode->weight() *
p.xsec_scaling_factor() /
hbarc;
51 if (shining_weight > 0.0) {
55 output->at_interaction(act, 0.0);
63 bool only_res)
const {
64 if (!
output->is_dilepton_output()) {
67 for (
const auto &
p : search_list) {
81 for (DecayBranchPtr &mode : dil_modes) {
82 const double shining_weight = mode->weight() / width_tot;
84 if (shining_weight > 0.0) {
88 output->at_interaction(act, 0.0);
DecayActionDilepton is special action created for particles that can decay into dileptons.
void generate_final_state() override
Generate the final state of the decay process.
void add_decay(DecayBranchPtr p)
Add one new decay.
void shine(const Particles &search_list, OutputInterface *output, double dt) const
Check the whole particles list and print out possible dilepton decays.
void shine_final(const Particles &search_list, OutputInterface *output, bool only_res=false) const
Shine dileptons from resonances at the end of the simulation.
const DecayBranchList & decay_mode_list() const
Abstraction of generic output.
Particle type contains the static properties of a particle species.
const DecayModes & decay_modes() const
DecayBranchList get_partial_widths(const FourVector p, const ThreeVector x, WhichDecaymodes wh) const
Get all the mass-dependent partial decay widths of a particle with mass m.
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.
@ Dileptons
Only return dilepton decays widths.
@ All
All decay mode widths.