Version: SMASH-2.0
smash::TwoBodyDecayUnstable Class Reference

#include <decaytype.h>

TwoBodyDecayUnstable represents a decay type with two unstable final-state particles.

Definition at line 236 of file decaytype.h.

Inheritance diagram for smash::TwoBodyDecayUnstable:
[legend]
Collaboration diagram for smash::TwoBodyDecayUnstable:
[legend]

Public Member Functions

 TwoBodyDecayUnstable (ParticleTypePtrList part_types, int l)
 Construct a TwoBodyDecayUnstable. More...
 
double width (double m0, double G0, double m) const override
 
double in_width (double m0, double G0, double m, double m1, double m2) const override
 
- 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 (ParticleTypePtr mother) const
 
const ParticleTypePtrList & particle_types () const
 
int angular_momentum () const
 

Protected Member Functions

double rho (double m) const override
 This is a virtual helper method which is used to write the width as Gamma(m) = Gamma_0 * rho(m) / rho(m_0). More...
 
double get_Lambda ()
 

Protected Attributes

double Lambda_
 Cut-off parameter Λ for unstable 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

◆ TwoBodyDecayUnstable()

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

Construct a TwoBodyDecayUnstable.

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

Definition at line 182 of file decaytype.cc.

184  : TwoBodyDecay(part_types, l), Lambda_(get_Lambda()), tabulation_(nullptr) {
185  if (part_types[0]->is_stable() || part_types[1]->is_stable()) {
186  throw std::runtime_error(
187  "Error: Stable particle in TwoBodyDecayUnstable constructor: " +
188  part_types[0]->pdgcode().string() + " " +
189  part_types[1]->pdgcode().string());
190  }
191 }

Member Function Documentation

◆ width()

double smash::TwoBodyDecayUnstable::width ( double  m0,
double  G0,
double  m 
) const
overridevirtual
Returns
the mass-dependent width of the decay.
Parameters
[in]m0Pole mass of the decaying particle [GeV].
[in]G0Partial width at the pole mass [GeV].
[in]mActual mass of the decaying particle [GeV].

Implements smash::DecayType.

Definition at line 228 of file decaytype.cc.

228  {
229  return G0 * rho(m) / rho(m0) * post_ff_sqr(m, m0, threshold(), Lambda_);
230 }
Here is the call graph for this function:

◆ in_width()

double smash::TwoBodyDecayUnstable::in_width ( double  m0,
double  G0,
double  m,
double  m1,
double  m2 
) const
overridevirtual
Returns
The mass-dependent in-width for a resonance formation process.
Parameters
[in]m0Pole mass of the produced resonance [GeV].
[in]G0Partial width at the pole mass [GeV].
[in]mActual mass of the produced resonance [GeV].
[in]m1Actual mass of the first incoming particle [GeV].
[in]m2Actual mass of the second incoming particle [GeV].

Implements smash::DecayType.

Definition at line 232 of file decaytype.cc.

233  {
234  const double p_f = pCM(m, m1, m2);
235 
236  return G0 * p_f * blatt_weisskopf_sqr(p_f, L_) *
237  post_ff_sqr(m, m0, threshold(), Lambda_) / (m * rho(m0));
238 }
Here is the call graph for this function:

◆ rho()

double smash::TwoBodyDecayUnstable::rho ( double  mass) const
overrideprotectedvirtual

This is a virtual helper method which is used to write the width as Gamma(m) = Gamma_0 * rho(m) / rho(m_0).

This ensures that the width is properly normalized at the pole mass to Gamma(m_0) = Gamma_0. By default rho simply equals one, which corresponds to a constant width.

Parameters
[in]massResonance mass of the decay.
Returns
Width of the decay at the given mass.

Reimplemented from smash::TwoBodyDecay.

Definition at line 200 of file decaytype.cc.

200  {
201  if (tabulation_ == nullptr) {
202  /* TODO(weil): Move this lazy init to a global initialization function,
203  * in order to avoid race conditions in multi-threading. */
204  const ParticleTypePtr r1 = particle_types_[0];
205  const ParticleTypePtr r2 = particle_types_[1];
206  const double m1_min = r1->min_mass_kinematic();
207  const double m2_min = r2->min_mass_kinematic();
208  const double sum_gamma = r1->width_at_pole() + r2->width_at_pole();
209  const double tab_interval = std::max(2., 10. * sum_gamma);
210 
211  tabulation_ = make_unique<Tabulation>(
212  m1_min + m2_min, tab_interval, num_tab_pts, [&](double sqrts) {
213  const double m1_max = sqrts - m2_min;
214  const double m2_max = sqrts - m1_min;
215 
216  const double result = integrate2d(m1_min, m1_max, m2_min, m2_max,
217  [&](double m1, double m2) {
219  sqrts, m1, m2, r1, r2, L_);
220  })
221  .value();
222  return result;
223  });
224  }
225  return tabulation_->get_value_linear(mass);
226 }
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_Lambda()

double smash::TwoBodyDecayUnstable::get_Lambda ( )
protected
Returns
the cut-off parameter Λ for unstable decays, given the types of the daughter particles.

Definition at line 193 of file decaytype.cc.

193  {
194  // for now: use the same value for all unstable decays (fixed on f₂ → ρ ρ)
195  return 0.6;
196 }

Member Data Documentation

◆ Lambda_

double smash::TwoBodyDecayUnstable::Lambda_
protected

Cut-off parameter Λ for unstable decays.

Definition at line 259 of file decaytype.h.

◆ tabulation_

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

Tabulation of the resonance integrals.

Definition at line 262 of file decaytype.h.


The documentation for this class was generated from the following files:
smash::TwoBodyDecay::TwoBodyDecay
TwoBodyDecay(ParticleTypePtrList part_types, int l)
Construct a TwoBodyDecay.
Definition: decaytype.cc:52
smash::TwoBodyDecay::threshold
double threshold() const
Definition: decaytype.h:105
smash::DecayType::L_
int L_
angular momentum of the decay
Definition: decaytype.h:86
smash::TwoBodyDecayUnstable::get_Lambda
double get_Lambda()
Definition: decaytype.cc:193
smash::TwoBodyDecayUnstable::tabulation_
std::unique_ptr< Tabulation > tabulation_
Tabulation of the resonance integrals.
Definition: decaytype.h:262
smash::integrand_rho_Manley_2res
static double integrand_rho_Manley_2res(double sqrts, double m1, double m2, ParticleTypePtr t1, ParticleTypePtr t2, int L)
Definition: decaytype.cc:36
smash::blatt_weisskopf_sqr
double blatt_weisskopf_sqr(const double p_ab, const int L)
Definition: formfactors.h:33
smash::DecayType::particle_types_
ParticleTypePtrList particle_types_
final-state particles of the decay
Definition: decaytype.h:84
smash::TwoBodyDecayUnstable::rho
double rho(double m) const override
This is a virtual helper method which is used to write the width as Gamma(m) = Gamma_0 * rho(m) / rho...
Definition: decaytype.cc:200
smash::pCM
T pCM(const T sqrts, const T mass_a, const T mass_b) noexcept
Definition: kinematics.h:79
smash::num_tab_pts
constexpr size_t num_tab_pts
Number of tabulation points.
Definition: decaytype.cc:143
smash::post_ff_sqr
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:75
smash::integrate2d
static Integrator2d integrate2d(1E7)
smash::TwoBodyDecayUnstable::Lambda_
double Lambda_
Cut-off parameter Λ for unstable decays.
Definition: decaytype.h:259