Version: SMASH-3.1
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 743 of file parametrizations.cc.

746  {
747  /* If this method is called with anti-nucleons, flip all particles to
748  * anti-particles;
749  * the ratio is equal */
750  int flip = 0;
751  for (const auto& p : {&a, &b, &c, &d}) {
752  if (p->is_nucleon()) {
753  if (flip == 0) {
754  flip = p->antiparticle_sign();
755  } else {
756  assert(p->antiparticle_sign() == flip);
757  }
758  }
759  }
760  const auto key = std::make_pair(
761  pack(a.pdgcode().code() * flip, b.pdgcode().code() * flip),
762  pack(c.pdgcode().code() * flip, d.pdgcode().code() * flip));
763  if (ratios_.empty()) {
765  }
766  return ratios_.at(key);
767 }
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: