Version: SMASH-3.3
smash::KaonNucleonRatios Class Reference

#include <parametrizations.h>

Calculate and store isospin ratios for K N -> K Delta reactions.

The ratios are given by the squared Clebsch-Gordan coefficient for the respective reaction, divided by the sum of the squared coefficients of all possible isospin-symmetric reactions. They are used when calculating the corresponding cross sections from the parametrizations of experimental data.

Definition at line 554 of file parametrizations.h.

Public Member Functions

 KaonNucleonRatios ()
 Create an empty K N -> K Delta isospin ratio storage. More...
 
double get_ratio (const ParticleType &a, const ParticleType &b, const ParticleType &c, const ParticleType &d) const
 Return the isospin ratio of the given K N -> K Delta cross section. More...
 

Private Attributes

std::unordered_map< std::pair< uint64_t, uint64_t >, double, pair_hashratios_
 Internal representation of isospin weights once calculated. More...
 

Constructor & Destructor Documentation

◆ KaonNucleonRatios()

smash::KaonNucleonRatios::KaonNucleonRatios ( )
inline

Create an empty K N -> K Delta isospin ratio storage.

Definition at line 562 of file parametrizations.h.

562 : ratios_({}) {}
std::unordered_map< std::pair< uint64_t, uint64_t >, double, pair_hash > ratios_
Internal representation of isospin weights once calculated.

Member Function Documentation

◆ get_ratio()

double smash::KaonNucleonRatios::get_ratio ( const ParticleType a,
const ParticleType b,
const ParticleType c,
const ParticleType d 
) const

Return the isospin ratio of the given K N -> K Delta cross section.

On the first call all ratios are calculated.

Definition at line 744 of file parametrizations.cc.

747  {
748  /* If this method is called with anti-nucleons, flip all particles to
749  * anti-particles;
750  * the ratio is equal */
751  int flip = 0;
752  for (const auto& p : {&a, &b, &c, &d}) {
753  if (p->is_nucleon()) {
754  if (flip == 0) {
755  flip = p->antiparticle_sign();
756  } else {
757  assert(p->antiparticle_sign() == flip);
758  }
759  }
760  }
761  const auto key = std::make_pair(
762  pack(a.pdgcode().code() * flip, b.pdgcode().code() * flip),
763  pack(c.pdgcode().code() * flip, d.pdgcode().code() * flip));
764  if (ratios_.empty()) {
766  }
767  return ratios_.at(key);
768 }
constexpr int p
Proton.
static void initialize(std::unordered_map< std::pair< uint64_t, uint64_t >, double, pair_hash > &ratios)
Calculate and store isospin ratios for K N -> K Delta reactions.
constexpr uint64_t pack(int32_t x, int32_t y)
Pack two int32_t into an uint64_t.

Member Data Documentation

◆ ratios_

std::unordered_map<std::pair<uint64_t, uint64_t>, double, pair_hash> smash::KaonNucleonRatios::ratios_
mutableprivate

Internal representation of isospin weights once calculated.

Definition at line 558 of file parametrizations.h.


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