Version: SMASH-1.6
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 459 of file parametrizations.h.

Collaboration diagram for smash::KaonNucleonRatios:
[legend]

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

smash::KaonNucleonRatios::KaonNucleonRatios ( )
inline

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

Definition at line 467 of file parametrizations.h.

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

Here is the call graph for this function:

Member Function Documentation

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 642 of file parametrizations.cc.

645  {
646  /* If this method is called with anti-nucleons, flip all particles to
647  * anti-particles;
648  * the ratio is equal */
649  int flip = 0;
650  for (const auto& p : {&a, &b, &c, &d}) {
651  if (p->is_nucleon()) {
652  if (flip == 0) {
653  flip = p->antiparticle_sign();
654  } else {
655  assert(p->antiparticle_sign() == flip);
656  }
657  }
658  }
659  const auto key = std::make_pair(
660  pack(a.pdgcode().code() * flip, b.pdgcode().code() * flip),
661  pack(c.pdgcode().code() * flip, d.pdgcode().code() * flip));
662  if (ratios_.empty()) {
664  }
665  return ratios_.at(key);
666 }
constexpr uint64_t pack(int32_t x, int32_t y)
Pack two int32_t into an uint64_t.
std::unordered_map< std::pair< uint64_t, uint64_t >, double, pair_hash > ratios_
Internal representation of isospin weights once calculated.
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 int p
Proton.

Here is the call graph for this function:

Here is the caller graph for this function:

Member Data Documentation

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 463 of file parametrizations.h.


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