Version: SMASH-3.1
smash::TwoBodyDecaySemistable Class Reference

#include <decaytype.h>

TwoBodyDecaySemistable represents a decay type with two final-state particles, one of which is stable and the other is unstable.

Definition at line 175 of file decaytype.h.

Inheritance diagram for smash::TwoBodyDecaySemistable:
smash::TwoBodyDecay smash::DecayType

Public Member Functions

 TwoBodyDecaySemistable (ParticleTypePtrList part_types, int l)
 Construct a TwoBodyDecaySemistable. More...
 
double width (double m0, double G0, double m) const override
 Get the mass-dependent width of a two-body decay into one stable and one unstable particle according to Manley:1992yb [37]. More...
 
double in_width (double m0, double G0, double m, double m1, double m2) const override
 Get the mass-dependent in-width for a resonance formation process from one stable and one unstable particle according to Manley:1992yb [37], see also Effenberger:1999wlg [21], eq. More...
 
- Public Member Functions inherited from smash::TwoBodyDecay
 TwoBodyDecay (ParticleTypePtrList part_types, int l)
 Construct a TwoBodyDecay. More...
 
unsigned int particle_number () const override
 
bool has_particles (ParticleTypePtrList list) const override
 
double threshold () const
 
- Public Member Functions inherited from smash::DecayType
 DecayType (ParticleTypePtrList part_types, int l)
 Construct a DecayType. More...
 
virtual ~DecayType ()=default
 Virtual Destructor. More...
 
virtual bool has_mother ([[maybe_unused]] ParticleTypePtr mother) const
 
const ParticleTypePtrList & particle_types () const
 
int angular_momentum () const
 
virtual bool is_dilepton_decay () const
 

Protected Member Functions

double rho (double m) const override
 See TwoBodyDecay::rho. More...
 
double get_Lambda ()
 
- Protected Member Functions inherited from smash::TwoBodyDecay
virtual double rho ([[maybe_unused]] double mass) const
 This is a virtual helper method which is used to write the width as Gamma(m) = Gamma_0 * rho(m) / rho(m_0). More...
 

Protected Attributes

double Lambda_
 Cut-off parameter Λ for semi-stable decays. More...
 
std::unique_ptr< Tabulationtabulation_
 Tabulation of the resonance integrals. More...
 
- Protected Attributes inherited from smash::DecayType
ParticleTypePtrList particle_types_
 final-state particles of the decay More...
 
int L_
 angular momentum of the decay More...
 

Constructor & Destructor Documentation

◆ TwoBodyDecaySemistable()

smash::TwoBodyDecaySemistable::TwoBodyDecaySemistable ( ParticleTypePtrList  part_types,
int  l 
)

Construct a TwoBodyDecaySemistable.

Parameters
[in]part_typesFinal-state particles of the decay.
[in]lAngular momentum of the decay.
Returns
The constructed object.

Definition at line 123 of file decaytype.cc.

125  : TwoBodyDecay(arrange_particles(part_types), l),
126  Lambda_(get_Lambda()),
127  tabulation_(nullptr) {}
std::unique_ptr< Tabulation > tabulation_
Tabulation of the resonance integrals.
Definition: decaytype.h:234
double Lambda_
Cut-off parameter Λ for semi-stable decays.
Definition: decaytype.h:231
TwoBodyDecay(ParticleTypePtrList part_types, int l)
Construct a TwoBodyDecay.
Definition: decaytype.cc:51
static ParticleTypePtrList & arrange_particles(ParticleTypePtrList &part_types)
Rearrange the particle list such that the first particle is the stable one.
Definition: decaytype.cc:109

Member Function Documentation

◆ width()

double smash::TwoBodyDecaySemistable::width ( double  m0,
double  G0,
double  m 
) const
overridevirtual

Get the mass-dependent width of a two-body decay into one stable and one unstable particle according to Manley:1992yb [37].

Parameters
m0Pole mass of the decaying particle [GeV].
G0Partial width at the pole mass [GeV].
mActual mass of the decaying particle [GeV].

Implements smash::DecayType.

Definition at line 165 of file decaytype.cc.

165  {
166  assert(rho(m0) != 0);
167  return G0 * rho(m) / rho(m0) * post_ff_sqr(m, m0, threshold(), Lambda_);
168 }
double rho(double m) const override
See TwoBodyDecay::rho.
Definition: decaytype.cc:145
double threshold() const
Definition: decaytype.h:107
double post_ff_sqr(double m, double M0, double srts0, double L)
An additional form factor for unstable final states as used in GiBUU, according to M.
Definition: formfactors.h:77

◆ in_width()

double smash::TwoBodyDecaySemistable::in_width ( double  m0,
double  G0,
double  m,
double  m1,
double  m2 
) const
overridevirtual

Get the mass-dependent in-width for a resonance formation process from one stable and one unstable particle according to Manley:1992yb [37], see also Effenberger:1999wlg [21], eq.

(2.77).

Parameters
m0Pole mass of the produced resonance [GeV].
G0Partial width at the pole mass [GeV].
mActual mass of the produced resonance [GeV].
m1Actual mass of the first incoming particle [GeV].
m2Actual mass of the second incoming particle [GeV].

Implements smash::DecayType.

Definition at line 170 of file decaytype.cc.

171  {
172  assert(rho(m0) != 0);
173  const double p_f = pCM(m, m1, m2);
174 
175  return G0 * p_f * blatt_weisskopf_sqr(p_f, L_) *
176  post_ff_sqr(m, m0, threshold(), Lambda_) / (m * rho(m0));
177 }
int L_
angular momentum of the decay
Definition: decaytype.h:88
T pCM(const T sqrts, const T mass_a, const T mass_b) noexcept
Definition: kinematics.h:79
double blatt_weisskopf_sqr(const double p_ab, const int L)
Definition: formfactors.h:35

◆ rho()

double smash::TwoBodyDecaySemistable::rho ( double  m) const
overrideprotected

See TwoBodyDecay::rho.

Definition at line 145 of file decaytype.cc.

145  {
146  if (tabulation_ == nullptr) {
147  /* TODO(weil): Move this lazy init to a global initialization function,
148  * in order to avoid race conditions in multi-threading. */
149  const ParticleTypePtr res = particle_types_[1];
150  const double tabulation_interval = std::max(2., 10. * res->width_at_pole());
151  const double m_stable = particle_types_[0]->mass();
152  const double mres_min = res->min_mass_kinematic();
153 
154  tabulation_ = std::make_unique<Tabulation>(
155  threshold(), tabulation_interval, num_tab_pts, [&](double sqrts) {
156  const double mres_max = sqrts - m_stable;
157  return integrate(mres_min, mres_max, [&](double m) {
158  return integrand_rho_Manley_1res(sqrts, m, m_stable, res, L_);
159  });
160  });
161  }
162  return tabulation_->get_value_linear(mass);
163 }
ParticleTypePtrList particle_types_
final-state particles of the decay
Definition: decaytype.h:86
static Integrator integrate
Definition: decaytype.cc:143
constexpr size_t num_tab_pts
Number of tabulation points.
Definition: decaytype.cc:142
static double integrand_rho_Manley_1res(double sqrts, double mass, double stable_mass, ParticleTypePtr type, int L)
Definition: decaytype.cc:21

◆ get_Lambda()

double smash::TwoBodyDecaySemistable::get_Lambda ( )
protected
Returns
the cutoff parameter Λ for semi-stable decays, given the types of the daughter particles.

For the values used in GiBUU, see Buss:2011mx [13], eq. (175). For the original values used by M. Post, see table 1 in Post:2003hu [43].

We mostly stick to the GiBUU values, but use a different value for the ρπ decay, in order to avoid secondary bumps in the ω spectral function and achieve a better normalization. In contrast to smash, GiBUU does not have an ω → ρ π decay.

Definition at line 129 of file decaytype.cc.

129  {
130  // "semi-stable" decays (first daughter is stable and second one unstable)
131  if (particle_types_[1]->baryon_number() != 0) {
132  return 2.; // unstable baryons
133  } else if (particle_types_[1]->pdgcode().is_rho() &&
134  particle_types_[0]->pdgcode().is_pion()) {
135  return 0.8; // ρ+π
136  } else {
137  return 1.6; // other unstable mesons
138  }
139 }

Member Data Documentation

◆ Lambda_

double smash::TwoBodyDecaySemistable::Lambda_
protected

Cut-off parameter Λ for semi-stable decays.

Definition at line 231 of file decaytype.h.

◆ tabulation_

std::unique_ptr<Tabulation> smash::TwoBodyDecaySemistable::tabulation_
mutableprotected

Tabulation of the resonance integrals.

Definition at line 234 of file decaytype.h.


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