Version: SMASH-1.8
smash::IsoParticleType Class Reference

#include <isoparticletype.h>

IsoParticleType is a class to represent isospin multiplets. It is similar to ParticleType, but refers to whole multiplets instead of single particle states.

Definition at line 27 of file isoparticletype.h.

Collaboration diagram for smash::IsoParticleType:
[legend]

Classes

struct  ParticleNotFoundFailure
 

Public Member Functions

 IsoParticleType (const std::string &n, double m, double w, unsigned int s, Parity p)
 Creates a fully initialized IsoParticleType object. More...
 
 IsoParticleType (const IsoParticleType &)=delete
 Copies are not allowed as they break intended use. More...
 
IsoParticleTypeoperator= (const IsoParticleType &)=delete
 Assignment is not allowed, see copy constructor above. More...
 
 IsoParticleType (IsoParticleType &&)=default
 Move constructor of IsoParticleType (needed for std::sort) More...
 
IsoParticleTypeoperator= (IsoParticleType &&)=default
 Move constructor of IsoParticleType "="-operator (needed for std::sort) More...
 
bool operator== (const IsoParticleType &rhs) const
 Returns whether the two IsoParticleType objects have the same PDG code for their first state; if so, it is the same iso multiplet. More...
 
const std::string & name () const
 Returns the name of the multiplet. More...
 
double mass () const
 Returns the (average) multiplet mass. More...
 
double width () const
 Returns the (average) multiplet width. More...
 
int isospin () const
 Returns twice the total isospin of the multiplet. More...
 
unsigned int spin () const
 Returns twice the spin of the multiplet. More...
 
Parity parity () const
 
bool is_hadron () const
 
ParticleTypePtrList get_states () const
 Returns list of states that form part of the multiplet. More...
 
void add_state (const ParticleType &type)
 Add a new state to an existing multiplet (and check if isospin symmetry is fulfilled). More...
 
const IsoParticleTypeanti_multiplet () const
 Return a multiplet of antiparticles, if it is different from the original multiplet. More...
 
bool has_anti_multiplet () const
 Check if there is a multiplet of antiparticles, which is different from the original multiplet. More...
 
double get_integral_NR (double sqrts)
 Look up the tabulated resonance integral for the XX -> NR cross section. More...
 
double get_integral_RR (IsoParticleType *type_res_2, double sqrts)
 Look up the tabulated resonance integral for the XX -> RR cross section. More...
 
double get_integral_RK (double sqrts)
 Look up the tabulated resonance integral for the XX -> RK cross section. More...
 
double get_integral_piR (double sqrts)
 Look up the tabulated resonance integral for the XX -> piR cross section. More...
 
double get_integral_rhoR (double sqrts)
 Look up the tabulated resonance integral for the XX -> rhoR cross section. More...
 

Static Public Member Functions

static const IsoParticleTypeList & list_all ()
 Returns a list of all IsoParticleTypes. More...
 
static const std::vector< const IsoParticleType * > list_baryon_resonances ()
 Returns a list of all IsoParticleTypes that are baryon resonances. More...
 
static const IsoParticleTypetry_find (const std::string &name)
 Returns the IsoParticleType pointer for the given name. More...
 
static const IsoParticleTypefind (const std::string &name)
 Returns the IsoParticleType object for the given name. More...
 
static IsoParticleTypefind (const ParticleType &type)
 Returns the IsoParticleType object for the given type. More...
 
static bool exists (const std::string &name)
 Returns whether the ParticleType with the given pdgcode exists. More...
 
static const ParticleTypePtr find_state (const std::string &name)
 Returns the ParticleType object for the given name, by first finding the correct multiplet and then looking for the desired state. More...
 
static void create_multiplet (const ParticleType &type)
 Add a new multiplet to the global list of IsoParticleTypes, which contains type. More...
 
static void tabulate_integrals (sha256::Hash hash, const bf::path &tabulations_path)
 Tabulate all relevant integrals. More...
 

Static Private Member Functions

static IsoParticleTypefind_private (const std::string &name)
 Private version of the 'find' method that returns a non-const reference. More...
 

Private Attributes

std::string name_
 name of the multiplet More...
 
double mass_
 (average) mass of the multiplet More...
 
double width_
 (average) width of the multiplet More...
 
unsigned int spin_
 twice the spin of the multiplet More...
 
Parity parity_
 parity of the multiplet More...
 
ParticleTypePtrList states_
 list of states that are contained in the multiplet More...
 
TabulationXS_piR_tabulation_ = nullptr
 A tabulation of the spectral integral for the dpi -> d'pi cross sections. More...
 
TabulationXS_RK_tabulation_ = nullptr
 A tabulation of the spectral integral for the NK -> RK cross sections. More...
 
TabulationXS_NR_tabulation_ = nullptr
 A tabulation for the NN -> NR cross sections, where R is a resonance from this multiplet. More...
 
TabulationXS_DeltaR_tabulation_ = nullptr
 A tabulation for the NN -> RΔ cross sections, where R is a resonance from this multiplet. More...
 
TabulationXS_rhoR_tabulation_ = nullptr
 A tabulation for the ρρ integrals. More...
 

Constructor & Destructor Documentation

◆ IsoParticleType() [1/3]

smash::IsoParticleType::IsoParticleType ( const std::string &  n,
double  m,
double  w,
unsigned int  s,
Parity  p 
)

Creates a fully initialized IsoParticleType object.

Parameters
nThe name of the multiplet.
mThe (average) mass of the multiplet.
wThe (average) width of the multiplet.
sTwice the spin of the multiplet.
pParity of the multiplet.

Definition at line 39 of file isoparticletype.cc.

41  : name_(n), mass_(m), width_(w), spin_(s), parity_(p) {}

◆ IsoParticleType() [2/3]

smash::IsoParticleType::IsoParticleType ( const IsoParticleType )
delete

Copies are not allowed as they break intended use.

Instead use a const-ref or ParticleTypePtr (as returned from operator&).

◆ IsoParticleType() [3/3]

smash::IsoParticleType::IsoParticleType ( IsoParticleType &&  )
default

Move constructor of IsoParticleType (needed for std::sort)

Member Function Documentation

◆ operator=() [1/2]

IsoParticleType& smash::IsoParticleType::operator= ( const IsoParticleType )
delete

Assignment is not allowed, see copy constructor above.

◆ operator=() [2/2]

IsoParticleType& smash::IsoParticleType::operator= ( IsoParticleType &&  )
default

Move constructor of IsoParticleType "="-operator (needed for std::sort)

◆ operator==()

bool smash::IsoParticleType::operator== ( const IsoParticleType rhs) const
inline

Returns whether the two IsoParticleType objects have the same PDG code for their first state; if so, it is the same iso multiplet.

Parameters
rhsThe other multiplet.

Definition at line 60 of file isoparticletype.h.

60  {
61  return states_[0]->pdgcode() == rhs.states_[0]->pdgcode();
62  }

◆ name()

const std::string& smash::IsoParticleType::name ( ) const
inline

Returns the name of the multiplet.

Definition at line 65 of file isoparticletype.h.

65 { return name_; }
Here is the caller graph for this function:

◆ mass()

double smash::IsoParticleType::mass ( ) const
inline

Returns the (average) multiplet mass.

Definition at line 68 of file isoparticletype.h.

68 { return mass_; }
Here is the caller graph for this function:

◆ width()

double smash::IsoParticleType::width ( ) const
inline

Returns the (average) multiplet width.

Definition at line 71 of file isoparticletype.h.

71 { return width_; }
Here is the caller graph for this function:

◆ isospin()

int smash::IsoParticleType::isospin ( ) const
inline

Returns twice the total isospin of the multiplet.

Definition at line 74 of file isoparticletype.h.

74 { return states_.size() - 1; }
Here is the caller graph for this function:

◆ spin()

unsigned int smash::IsoParticleType::spin ( ) const
inline

Returns twice the spin of the multiplet.

All particles in the multiplet are required to have the same spin.

Definition at line 80 of file isoparticletype.h.

80 { return spin_; }
Here is the caller graph for this function:

◆ parity()

Parity smash::IsoParticleType::parity ( ) const
inline
Returns
The parity of the multiplet.

Definition at line 85 of file isoparticletype.h.

85 { return parity_; }
Here is the caller graph for this function:

◆ is_hadron()

bool smash::IsoParticleType::is_hadron ( ) const
inline
Returns
Is this a hadron multiplet?

Definition at line 90 of file isoparticletype.h.

90 { return states_[0]->is_hadron(); }

◆ get_states()

ParticleTypePtrList smash::IsoParticleType::get_states ( ) const
inline

Returns list of states that form part of the multiplet.

Definition at line 93 of file isoparticletype.h.

93 { return states_; }
Here is the caller graph for this function:

◆ add_state()

void smash::IsoParticleType::add_state ( const ParticleType type)

Add a new state to an existing multiplet (and check if isospin symmetry is fulfilled).

Parameters
typeThe particle state to be added.

Definition at line 140 of file isoparticletype.cc.

140  {
141  states_.push_back(&type);
142 
143  // check if isospin symmetry is fulfilled
144  if (std::abs(mass() - type.mass()) > really_small) {
145  logg[LParticleType].warn()
146  << "Isospin symmetry is broken by mass of " << type.name() << ": "
147  << type.mass() << " vs. " << mass();
148  }
149  if (std::abs(width() - type.width_at_pole()) > really_small) {
150  logg[LParticleType].warn()
151  << "Isospin symmetry is broken by width of " << type.name() << ": "
152  << type.width_at_pole() << " vs. " << width();
153  }
154  if (spin() != type.spin()) {
155  logg[LParticleType].error()
156  << "Isospin symmetry is broken by spin of " << type.name() << ": "
157  << type.spin() << " vs. " << spin();
158  }
159 }
Here is the call graph for this function:

◆ anti_multiplet()

const IsoParticleType * smash::IsoParticleType::anti_multiplet ( ) const

Return a multiplet of antiparticles, if it is different from the original multiplet.

Otherwise, return a nullptr.

Definition at line 107 of file isoparticletype.cc.

107  {
108  if (states_[0]->has_antiparticle()) {
109  ParticleTypePtr anti = states_[0]->get_antiparticle();
110  if (states_[0]->name() != multiplet_name(anti->name())) {
111  return anti->iso_multiplet();
112  } else {
113  return nullptr;
114  }
115  } else {
116  return nullptr;
117  }
118 }
Here is the call graph for this function:
Here is the caller graph for this function:

◆ has_anti_multiplet()

bool smash::IsoParticleType::has_anti_multiplet ( ) const

Check if there is a multiplet of antiparticles, which is different from the original multiplet.

Definition at line 120 of file isoparticletype.cc.

120  {
121  return anti_multiplet() != nullptr;
122 }
Here is the call graph for this function:
Here is the caller graph for this function:

◆ list_all()

const IsoParticleTypeList & smash::IsoParticleType::list_all ( )
static

Returns a list of all IsoParticleTypes.

Definition at line 43 of file isoparticletype.cc.

43 { return iso_type_list; }
Here is the caller graph for this function:

◆ list_baryon_resonances()

const std::vector< const IsoParticleType * > smash::IsoParticleType::list_baryon_resonances ( )
static

Returns a list of all IsoParticleTypes that are baryon resonances.

Definition at line 25 of file isoparticletype.cc.

25  {
26  if (iso_baryon_resonances.empty()) {
27  // Initialize.
28  for (const auto &res : IsoParticleType::list_all()) {
29  const auto baryon_number = res.states_[0]->pdgcode().baryon_number();
30  if (res.states_[0]->is_stable() || (baryon_number <= 0)) {
31  continue;
32  }
33  iso_baryon_resonances.push_back(&res);
34  }
35  }
36  return iso_baryon_resonances;
37 }
Here is the call graph for this function:
Here is the caller graph for this function:

◆ try_find()

const IsoParticleType * smash::IsoParticleType::try_find ( const std::string &  name)
static

Returns the IsoParticleType pointer for the given name.

If the particle type is not found, an invalid pointer is returned. You can convert the pointer to a bool to check whether it is valid.

Parameters
nameThe name of the particle type.
Note
The complexity of the search is \(\mathcal O(\log N)\).

Definition at line 58 of file isoparticletype.cc.

58  {
59  return try_find_private(name);
60 }
Here is the call graph for this function:
Here is the caller graph for this function:

◆ find() [1/2]

const IsoParticleType & smash::IsoParticleType::find ( const std::string &  name)
static

Returns the IsoParticleType object for the given name.

Parameters
nameThe name of the of the particle type to be found.
Exceptions
ParticleNotFoundFailureif name not found.
Note
The complexity of the search is \(\mathcal O(\log N)\).

Definition at line 62 of file isoparticletype.cc.

62  {
63  const auto found = try_find_private(name);
64  if (!found) {
65  throw ParticleNotFoundFailure("Isospin multiplet " + name + " not found!");
66  }
67  return *found;
68 }
Here is the call graph for this function:
Here is the caller graph for this function:

◆ find() [2/2]

IsoParticleType * smash::IsoParticleType::find ( const ParticleType type)
static

Returns the IsoParticleType object for the given type.

Parameters
typeThe particle type to be found.
Exceptions
ParticleNotFoundFailureif type not found.
Note
The complexity of the search is \(\mathcal O(\log N)\).

Definition at line 134 of file isoparticletype.cc.

134  {
135  std::string multiname = multiplet_name(type.name());
136  IsoParticleType &multiplet = find_private(multiname);
137  return &multiplet;
138 }
Here is the call graph for this function:

◆ exists()

bool smash::IsoParticleType::exists ( const std::string &  name)
static

Returns whether the ParticleType with the given pdgcode exists.

Parameters
nameThe name of the particle type to be found.
Note
The complexity of the search is \(\mathcal O(\log N)\).

Definition at line 79 of file isoparticletype.cc.

79  {
80  const auto found = try_find_private(name);
81  return found;
82 }
Here is the call graph for this function:
Here is the caller graph for this function:

◆ find_state()

const ParticleTypePtr smash::IsoParticleType::find_state ( const std::string &  name)
static

Returns the ParticleType object for the given name, by first finding the correct multiplet and then looking for the desired state.

Parameters
nameThe name of the particle state to be found.
Exceptions
std::runtime_errorif name is not found.

Definition at line 124 of file isoparticletype.cc.

124  {
126  auto found = std::find_if(multiplet.states_.begin(), multiplet.states_.end(),
127  [&n](ParticleTypePtr p) { return p->name() == n; });
128  if (found == multiplet.states_.end()) {
129  throw std::runtime_error("Isospin state " + n + " not found!");
130  }
131  return *found;
132 }
Here is the call graph for this function:
Here is the caller graph for this function:

◆ create_multiplet()

void smash::IsoParticleType::create_multiplet ( const ParticleType type)
static

Add a new multiplet to the global list of IsoParticleTypes, which contains type.

If the multiplet exists already, the type will be added to it.

Parameters
typeThe multiplet to be created.

Definition at line 161 of file isoparticletype.cc.

161  {
162  // create multiplet if it does not exist yet
163  std::string multiname = multiplet_name(type.name());
164  if (!exists(multiname)) {
165  iso_type_list.emplace_back(multiname, type.mass(), type.width_at_pole(),
166  type.spin(), type.parity());
167  logg[LParticleType].debug()
168  << "Creating isospin multiplet " << multiname
169  << " [ m = " << type.mass() << ", Γ = " << type.width_at_pole() << " ]";
170  }
171 
172  // sort the iso-type list by name
173  std::sort(iso_type_list.begin(), iso_type_list.end(),
174  [](const IsoParticleType &l, const IsoParticleType &r) {
175  return l.name() < r.name();
176  });
177 
178  // add the specific type to the multiplet
179  IsoParticleType &multiplet = find_private(multiname);
180  multiplet.add_state(type);
181 }
Here is the call graph for this function:
Here is the caller graph for this function:

◆ tabulate_integrals()

void smash::IsoParticleType::tabulate_integrals ( sha256::Hash  hash,
const bf::path &  tabulations_path 
)
static

Tabulate all relevant integrals.

Parameters
hashThe hash of the particle properties. This is used to determine whether a cached tabulation can be reused or not.
tabulations_pathThe path to the directory where the tabulations are cached.

Definition at line 267 of file isoparticletype.cc.

268  {
269  // To avoid race conditions, make sure we are the only ones currently storing
270  // tabulations. Otherwise, we ignore any stored tabulations and don't store
271  // our results.
272  FileLock lock(tabulations_path / "tabulations.lock");
273  const bf::path &dir = lock.acquire() ? tabulations_path : "";
274 
275  const auto nuc = IsoParticleType::try_find("N");
276  const auto pion = IsoParticleType::try_find("π");
277  const auto kaon = IsoParticleType::try_find("K");
278  const auto delta = IsoParticleType::try_find("Δ");
279  const auto rho = IsoParticleType::try_find("ρ");
280  const auto h1 = IsoParticleType::try_find("h₁(1170)");
281  for (const auto &res : IsoParticleType::list_baryon_resonances()) {
282  const auto antires = res->anti_multiplet();
283  if (nuc) {
284  cache_integral(NR_tabulations, dir, hash, *nuc, *res, antires, false);
285  }
286  if (pion) {
287  cache_integral(piR_tabulations, dir, hash, *pion, *res, antires, false);
288  }
289  if (kaon) {
290  cache_integral(RK_tabulations, dir, hash, *kaon, *res, antires, false);
291  }
292  if (delta) {
293  cache_integral(DeltaR_tabulations, dir, hash, *delta, *res, antires,
294  true);
295  }
296  }
297  if (rho) {
298  cache_integral(rhoR_tabulations, dir, hash, *rho, *rho, nullptr, true);
299  }
300  if (rho && h1) {
301  cache_integral(rhoR_tabulations, dir, hash, *rho, *h1, nullptr, true);
302  }
303 }
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_integral_NR()

double smash::IsoParticleType::get_integral_NR ( double  sqrts)

Look up the tabulated resonance integral for the XX -> NR cross section.

Parameters
sqrtsThe center-of-mass energy.

Definition at line 305 of file isoparticletype.cc.

305  {
306  if (XS_NR_tabulation_ == nullptr) {
307  const auto res = states_[0]->iso_multiplet();
308  XS_NR_tabulation_ = &NR_tabulations.at(res->name());
309  }
310  return XS_NR_tabulation_->get_value_linear(sqrts);
311 }
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_integral_RR()

double smash::IsoParticleType::get_integral_RR ( IsoParticleType type_res_2,
double  sqrts 
)

Look up the tabulated resonance integral for the XX -> RR cross section.

Parameters
type_res_2Type of the two resonances in the final state.
sqrtsThe center-of-mass energy.

Definition at line 337 of file isoparticletype.cc.

338  {
339  const auto res = states_[0]->iso_multiplet();
340  if (type_res_2->states_[0]->is_Delta()) {
341  if (XS_DeltaR_tabulation_ == nullptr) {
342  XS_DeltaR_tabulation_ = &DeltaR_tabulations.at(res->name());
343  }
345  }
346  if (type_res_2->name() == "ρ") {
347  if (XS_rhoR_tabulation_ == nullptr) {
348  XS_rhoR_tabulation_ = &rhoR_tabulations.at(res->name());
349  }
350  return XS_rhoR_tabulation_->get_value_linear(sqrts);
351  }
352  if (type_res_2->name() == "h₁(1170)") {
353  if (XS_rhoR_tabulation_ == nullptr) {
354  XS_rhoR_tabulation_ = &rhoR_tabulations.at(res->name());
355  }
356  return XS_rhoR_tabulation_->get_value_linear(sqrts);
357  }
358  std::stringstream err;
359  err << "RR=" << name() << type_res_2->name() << " is not implemented";
360  throw std::runtime_error(err.str());
361 }
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_integral_RK()

double smash::IsoParticleType::get_integral_RK ( double  sqrts)

Look up the tabulated resonance integral for the XX -> RK cross section.

Parameters
sqrtsThe center-of-mass energy.

Definition at line 321 of file isoparticletype.cc.

321  {
322  if (XS_RK_tabulation_ == nullptr) {
323  const auto res = states_[0]->iso_multiplet();
324  XS_RK_tabulation_ = &RK_tabulations.at(res->name());
325  }
326  return XS_RK_tabulation_->get_value_linear(sqrts);
327 }
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_integral_piR()

double smash::IsoParticleType::get_integral_piR ( double  sqrts)

Look up the tabulated resonance integral for the XX -> piR cross section.

Parameters
sqrtsThe center-of-mass energy.

Definition at line 313 of file isoparticletype.cc.

313  {
314  if (XS_piR_tabulation_ == nullptr) {
315  const auto res = states_[0]->iso_multiplet();
316  XS_piR_tabulation_ = &piR_tabulations.at(res->name());
317  }
318  return XS_piR_tabulation_->get_value_linear(sqrts);
319 }
Here is the call graph for this function:

◆ get_integral_rhoR()

double smash::IsoParticleType::get_integral_rhoR ( double  sqrts)

Look up the tabulated resonance integral for the XX -> rhoR cross section.

Parameters
sqrtsThe center-of-mass energy.

Definition at line 329 of file isoparticletype.cc.

329  {
330  if (XS_rhoR_tabulation_ == nullptr) {
331  const auto res = states_[0]->iso_multiplet();
332  XS_rhoR_tabulation_ = &rhoR_tabulations.at(res->name());
333  }
334  return XS_rhoR_tabulation_->get_value_linear(sqrts);
335 }
Here is the call graph for this function:

◆ find_private()

IsoParticleType & smash::IsoParticleType::find_private ( const std::string &  name)
staticprivate

Private version of the 'find' method that returns a non-const reference.

Parameters
[in]nameThe name of the of the particle type to be found.
Exceptions
ParticleNotFoundFailureif name not found.

Definition at line 70 of file isoparticletype.cc.

70  {
71  auto found = try_find_private(name);
72  if (!found) {
73  throw ParticleNotFoundFailure("Isospin multiplet " + name +
74  " not found (privately)!");
75  }
76  return *found;
77 }
Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ name_

std::string smash::IsoParticleType::name_
private

name of the multiplet

Definition at line 234 of file isoparticletype.h.

◆ mass_

double smash::IsoParticleType::mass_
private

(average) mass of the multiplet

Definition at line 236 of file isoparticletype.h.

◆ width_

double smash::IsoParticleType::width_
private

(average) width of the multiplet

Definition at line 238 of file isoparticletype.h.

◆ spin_

unsigned int smash::IsoParticleType::spin_
private

twice the spin of the multiplet

Definition at line 240 of file isoparticletype.h.

◆ parity_

Parity smash::IsoParticleType::parity_
private

parity of the multiplet

Definition at line 242 of file isoparticletype.h.

◆ states_

ParticleTypePtrList smash::IsoParticleType::states_
private

list of states that are contained in the multiplet

Definition at line 244 of file isoparticletype.h.

◆ XS_piR_tabulation_

Tabulation* smash::IsoParticleType::XS_piR_tabulation_ = nullptr
private

A tabulation of the spectral integral for the dpi -> d'pi cross sections.

Definition at line 247 of file isoparticletype.h.

◆ XS_RK_tabulation_

Tabulation* smash::IsoParticleType::XS_RK_tabulation_ = nullptr
private

A tabulation of the spectral integral for the NK -> RK cross sections.

Definition at line 249 of file isoparticletype.h.

◆ XS_NR_tabulation_

Tabulation* smash::IsoParticleType::XS_NR_tabulation_ = nullptr
private

A tabulation for the NN -> NR cross sections, where R is a resonance from this multiplet.

Definition at line 254 of file isoparticletype.h.

◆ XS_DeltaR_tabulation_

Tabulation* smash::IsoParticleType::XS_DeltaR_tabulation_ = nullptr
private

A tabulation for the NN -> RΔ cross sections, where R is a resonance from this multiplet.

Definition at line 259 of file isoparticletype.h.

◆ XS_rhoR_tabulation_

Tabulation* smash::IsoParticleType::XS_rhoR_tabulation_ = nullptr
private

A tabulation for the ρρ integrals.

Definition at line 263 of file isoparticletype.h.


The documentation for this class was generated from the following files:
smash::IsoParticleType::anti_multiplet
const IsoParticleType * anti_multiplet() const
Return a multiplet of antiparticles, if it is different from the original multiplet.
Definition: isoparticletype.cc:107
smash::IsoParticleType::width
double width() const
Returns the (average) multiplet width.
Definition: isoparticletype.h:71
smash::NR_tabulations
static std::unordered_map< std::string, Tabulation > NR_tabulations
Tabulation of all N R integrals.
Definition: isoparticletype.cc:191
smash::IsoParticleType::find
static const IsoParticleType & find(const std::string &name)
Returns the IsoParticleType object for the given name.
Definition: isoparticletype.cc:62
smash::rhoR_tabulations
static std::unordered_map< std::string, Tabulation > rhoR_tabulations
Tabulation of all rho rho integrals.
Definition: isoparticletype.cc:219
smash::IsoParticleType::spin_
unsigned int spin_
twice the spin of the multiplet
Definition: isoparticletype.h:240
smash::DeltaR_tabulations
static std::unordered_map< std::string, Tabulation > DeltaR_tabulations
Tabulation of all Delta R integrals.
Definition: isoparticletype.cc:212
smash::IsoParticleType::name_
std::string name_
name of the multiplet
Definition: isoparticletype.h:234
smash::IsoParticleType::name
const std::string & name() const
Returns the name of the multiplet.
Definition: isoparticletype.h:65
smash::cache_integral
void cache_integral(std::unordered_map< std::string, Tabulation > &tabulations, const bf::path &dir, sha256::Hash hash, const IsoParticleType &part, const IsoParticleType &res, const IsoParticleType *antires, bool unstable)
Definition: isoparticletype.cc:227
smash::IsoParticleType::mass_
double mass_
(average) mass of the multiplet
Definition: isoparticletype.h:236
smash::IsoParticleType::spin
unsigned int spin() const
Returns twice the spin of the multiplet.
Definition: isoparticletype.h:80
smash::IsoParticleType::states_
ParticleTypePtrList states_
list of states that are contained in the multiplet
Definition: isoparticletype.h:244
smash::iso_baryon_resonances
static std::vector< const IsoParticleType * > iso_baryon_resonances
Definition: isoparticletype.cc:22
smash::IsoParticleType::parity_
Parity parity_
parity of the multiplet
Definition: isoparticletype.h:242
smash::IsoParticleType::XS_NR_tabulation_
Tabulation * XS_NR_tabulation_
A tabulation for the NN -> NR cross sections, where R is a resonance from this multiplet.
Definition: isoparticletype.h:254
smash::multiplet_name
static std::string multiplet_name(std::string name)
Construct the name-string for an isospin multiplet from the given name-string for the particle.
Definition: isoparticletype.cc:91
smash::IsoParticleType::XS_RK_tabulation_
Tabulation * XS_RK_tabulation_
A tabulation of the spectral integral for the NK -> RK cross sections.
Definition: isoparticletype.h:249
smash::logg
std::array< einhard::Logger<>, std::tuple_size< LogArea::AreaTuple >::value > logg
An array that stores all pre-configured Logger objects.
Definition: logging.cc:39
smash::piR_tabulations
static std::unordered_map< std::string, Tabulation > piR_tabulations
Tabulation of all pi R integrals.
Definition: isoparticletype.cc:198
smash::really_small
constexpr double really_small
Numerical error tolerance.
Definition: constants.h:37
smash::IsoParticleType::XS_rhoR_tabulation_
Tabulation * XS_rhoR_tabulation_
A tabulation for the ρρ integrals.
Definition: isoparticletype.h:263
smash::iso_type_list
static IsoParticleTypeList iso_type_list
Definition: isoparticletype.cc:21
smash::LParticleType
static constexpr int LParticleType
Definition: isoparticletype.cc:19
smash::IsoParticleType::list_baryon_resonances
static const std::vector< const IsoParticleType * > list_baryon_resonances()
Returns a list of all IsoParticleTypes that are baryon resonances.
Definition: isoparticletype.cc:25
smash::IsoParticleType::exists
static bool exists(const std::string &name)
Returns whether the ParticleType with the given pdgcode exists.
Definition: isoparticletype.cc:79
smash::IsoParticleType::XS_piR_tabulation_
Tabulation * XS_piR_tabulation_
A tabulation of the spectral integral for the dpi -> d'pi cross sections.
Definition: isoparticletype.h:247
smash::try_find_private
static IsoParticleType * try_find_private(const std::string &name)
Helper function for IsoParticleType::try_find and friends.
Definition: isoparticletype.cc:46
smash::IsoParticleType::mass
double mass() const
Returns the (average) multiplet mass.
Definition: isoparticletype.h:68
smash::IsoParticleType::XS_DeltaR_tabulation_
Tabulation * XS_DeltaR_tabulation_
A tabulation for the NN -> RΔ cross sections, where R is a resonance from this multiplet.
Definition: isoparticletype.h:259
smash::pdg::h1
constexpr int h1
h₁(1170).
Definition: pdgcode_constants.h:90
smash::IsoParticleType::try_find
static const IsoParticleType * try_find(const std::string &name)
Returns the IsoParticleType pointer for the given name.
Definition: isoparticletype.cc:58
smash::IsoParticleType::find_private
static IsoParticleType & find_private(const std::string &name)
Private version of the 'find' method that returns a non-const reference.
Definition: isoparticletype.cc:70
smash::pdg::p
constexpr int p
Proton.
Definition: pdgcode_constants.h:28
smash::IsoParticleType::width_
double width_
(average) width of the multiplet
Definition: isoparticletype.h:238
smash::pdg::n
constexpr int n
Neutron.
Definition: pdgcode_constants.h:30
smash::Tabulation::get_value_linear
double get_value_linear(double x, Extrapolation extrapolation=Extrapolation::Linear) const
Look up a value from the tabulation using linear interpolation.
Definition: tabulation.cc:38
smash::IsoParticleType::IsoParticleType
IsoParticleType(const std::string &n, double m, double w, unsigned int s, Parity p)
Creates a fully initialized IsoParticleType object.
Definition: isoparticletype.cc:39
smash::IsoParticleType::list_all
static const IsoParticleTypeList & list_all()
Returns a list of all IsoParticleTypes.
Definition: isoparticletype.cc:43
smash::RK_tabulations
static std::unordered_map< std::string, Tabulation > RK_tabulations
Tabulation of all K R integrals.
Definition: isoparticletype.cc:205