Version: SMASH-1.5
smash::DecayActionsFinderDilepton Class Reference

#include <decayactionsfinderdilepton.h>

A dilepton decay finder: Loops through all particles and if they can decay into dileptons, it treats the decays with the shining method.

This means in every timestep it stores every possible decay in an extra action and later in the write_dilepton_action routine in experiment.cc these decays are written in the DileptonOutput. Because too many dileptons are produced this way, every decay is weighted with the so called "shining_weight". See Schmidt:2008hm, chapter 2D. The finder works with two body dilepton decays as well as with dalitz dilepton decays.

Definition at line 30 of file decayactionsfinderdilepton.h.

Public Member Functions

 DecayActionsFinderDilepton ()
 Initialize the finder. More...
 
void shine (const Particles &search_list, OutputInterface *output, double dt) const
 Check the whole particles list and print out possible dilepton decays. More...
 
void shine_final (const Particles &search_list, OutputInterface *output, bool only_res=false) const
 Shine dileptons from resonances at the end of the simulation. More...
 

Constructor & Destructor Documentation

◆ DecayActionsFinderDilepton()

smash::DecayActionsFinderDilepton::DecayActionsFinderDilepton ( )
inline

Initialize the finder.

Definition at line 33 of file decayactionsfinderdilepton.h.

33 {}

Member Function Documentation

◆ shine()

void smash::DecayActionsFinderDilepton::shine ( const Particles search_list,
OutputInterface output,
double  dt 
) const

Check the whole particles list and print out possible dilepton decays.

Parameters
[in]search_listList of all particles.
[in]outputPointer to the dilepton output.
[in]dtLength of timestep [fm]

Definition at line 20 of file decayactionsfinderdilepton.cc.

22  {
23  if (!output->is_dilepton_output()) {
24  return;
25  }
26  for (const auto &p : search_list) {
27  // effective mass of decaying particle
28  const double m_eff = p.effective_mass();
29  const auto n_all_modes = p.type().get_partial_widths(m_eff).size();
30  if (n_all_modes == 0) {
31  continue;
32  }
33 
34  const double inv_gamma = p.inverse_gamma();
35  DecayBranchList dil_modes = p.type().get_partial_widths_dilepton(m_eff);
36 
37  /* if particle can only decay into dileptons or is stable, use shining only
38  * in find_final_actions and ignore them here, also unformed
39  * resonances cannot decay */
40  if (dil_modes.size() == n_all_modes || p.type().is_stable() ||
41  (p.formation_time() > p.position().x0())) {
42  continue;
43  }
44 
45  for (DecayBranchPtr &mode : dil_modes) {
46  // SHINING as described in \iref{Schmidt:2008hm}, chapter 2D
47  const double shining_weight = dt * inv_gamma * mode->weight() / hbarc;
48 
49  if (shining_weight > 0.0) { // decays that can happen
50  DecayActionDilepton act(p, 0., shining_weight);
51  act.add_decay(std::move(mode));
52  act.generate_final_state();
53  output->at_interaction(act, 0.0);
54  }
55  }
56  }
57 }
constexpr double hbarc
GeV <-> fm conversion factor.
Definition: constants.h:25
constexpr int p
Proton.
Here is the call graph for this function:

◆ shine_final()

void smash::DecayActionsFinderDilepton::shine_final ( const Particles search_list,
OutputInterface output,
bool  only_res = false 
) const

Shine dileptons from resonances at the end of the simulation.

This is special, because the shining time is now until the resonance would decay and not for some fixed dt interval.

Parameters
[in]search_listList of all particles.
[in]outputPointer to the dilepton output.
[in]only_resoptional parameter that requests that only actions regarding resonances are considered (disregarding stable particles)

Definition at line 59 of file decayactionsfinderdilepton.cc.

61  {
62  if (!output->is_dilepton_output()) {
63  return;
64  }
65  for (const auto &p : search_list) {
66  const ParticleType &t = p.type();
67  if (t.decay_modes().decay_mode_list().empty() ||
68  (only_res && t.is_stable())) {
69  continue;
70  }
71 
72  // effective mass of decaying particle
73  const double m_eff = p.effective_mass();
74  DecayBranchList dil_modes = t.get_partial_widths_dilepton(m_eff);
75 
76  // total decay width, also hadronic decays
77  const double width_tot =
78  total_weight<DecayBranch>(t.get_partial_widths(m_eff));
79 
80  for (DecayBranchPtr &mode : dil_modes) {
81  const double shining_weight = mode->weight() / width_tot;
82 
83  if (shining_weight > 0.0) { // decays that can happen
84  DecayActionDilepton act(p, 0., shining_weight);
85  act.add_decay(std::move(mode));
86  act.generate_final_state();
87  output->at_interaction(act, 0.0);
88  }
89  }
90  }
91 }
constexpr int p
Proton.
Here is the call graph for this function:

The documentation for this class was generated from the following files: