Version: SMASH-2.0
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 28 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 38 of file isoparticletype.cc.

40  : 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 61 of file isoparticletype.h.

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

◆ name()

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

Returns the name of the multiplet.

Definition at line 66 of file isoparticletype.h.

66 { 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 69 of file isoparticletype.h.

69 { 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 72 of file isoparticletype.h.

72 { 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 75 of file isoparticletype.h.

75 { 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 81 of file isoparticletype.h.

81 { 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 86 of file isoparticletype.h.

86 { 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 91 of file isoparticletype.h.

91 { 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 94 of file isoparticletype.h.

94 { 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 139 of file isoparticletype.cc.

139  {
140  states_.push_back(&type);
141 
142  // check if isospin symmetry is fulfilled
143  if (std::abs(mass() - type.mass()) > really_small) {
144  logg[LParticleType].warn()
145  << "Isospin symmetry is broken by mass of " << type.name() << ": "
146  << type.mass() << " vs. " << mass();
147  }
148  if (std::abs(width() - type.width_at_pole()) > really_small) {
149  logg[LParticleType].warn()
150  << "Isospin symmetry is broken by width of " << type.name() << ": "
151  << type.width_at_pole() << " vs. " << width();
152  }
153  if (spin() != type.spin()) {
154  logg[LParticleType].error()
155  << "Isospin symmetry is broken by spin of " << type.name() << ": "
156  << type.spin() << " vs. " << spin();
157  }
158 }
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 106 of file isoparticletype.cc.

106  {
107  if (states_[0]->has_antiparticle()) {
108  ParticleTypePtr anti = states_[0]->get_antiparticle();
109  if (states_[0]->name() != multiplet_name(anti->name())) {
110  return anti->iso_multiplet();
111  } else {
112  return nullptr;
113  }
114  } else {
115  return nullptr;
116  }
117 }
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 119 of file isoparticletype.cc.

119  {
120  return anti_multiplet() != nullptr;
121 }
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 42 of file isoparticletype.cc.

42 { 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 24 of file isoparticletype.cc.

24  {
25  if (iso_baryon_resonances.empty()) {
26  // Initialize.
27  for (const auto &res : IsoParticleType::list_all()) {
28  const auto baryon_number = res.states_[0]->pdgcode().baryon_number();
29  if (res.states_[0]->is_stable() || (baryon_number <= 0)) {
30  continue;
31  }
32  iso_baryon_resonances.push_back(&res);
33  }
34  }
35  return iso_baryon_resonances;
36 }
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 57 of file isoparticletype.cc.

57  {
58  return try_find_private(name);
59 }
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 61 of file isoparticletype.cc.

61  {
62  const auto found = try_find_private(name);
63  if (!found) {
64  throw ParticleNotFoundFailure("Isospin multiplet " + name + " not found!");
65  }
66  return *found;
67 }
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 133 of file isoparticletype.cc.

133  {
134  std::string multiname = multiplet_name(type.name());
135  IsoParticleType &multiplet = find_private(multiname);
136  return &multiplet;
137 }
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 78 of file isoparticletype.cc.

78  {
79  const auto found = try_find_private(name);
80  return found;
81 }
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 123 of file isoparticletype.cc.

123  {
125  auto found = std::find_if(multiplet.states_.begin(), multiplet.states_.end(),
126  [&n](ParticleTypePtr p) { return p->name() == n; });
127  if (found == multiplet.states_.end()) {
128  throw std::runtime_error("Isospin state " + n + " not found!");
129  }
130  return *found;
131 }
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 160 of file isoparticletype.cc.

160  {
161  // create multiplet if it does not exist yet
162  std::string multiname = multiplet_name(type.name());
163  if (!exists(multiname)) {
164  iso_type_list.emplace_back(multiname, type.mass(), type.width_at_pole(),
165  type.spin(), type.parity());
166  logg[LParticleType].debug()
167  << "Creating isospin multiplet " << multiname
168  << " [ m = " << type.mass() << ", Γ = " << type.width_at_pole() << " ]";
169  }
170 
171  // sort the iso-type list by name
172  std::sort(iso_type_list.begin(), iso_type_list.end(),
173  [](const IsoParticleType &l, const IsoParticleType &r) {
174  return l.name() < r.name();
175  });
176 
177  // add the specific type to the multiplet
178  IsoParticleType &multiplet = find_private(multiname);
179  multiplet.add_state(type);
180 }
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 266 of file isoparticletype.cc.

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

304  {
305  if (XS_NR_tabulation_ == nullptr) {
306  const auto res = states_[0]->iso_multiplet();
307  XS_NR_tabulation_ = &NR_tabulations.at(res->name());
308  }
309  return XS_NR_tabulation_->get_value_linear(sqrts);
310 }
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 336 of file isoparticletype.cc.

337  {
338  const auto res = states_[0]->iso_multiplet();
339  if (type_res_2->states_[0]->is_Delta()) {
340  if (XS_DeltaR_tabulation_ == nullptr) {
341  XS_DeltaR_tabulation_ = &DeltaR_tabulations.at(res->name());
342  }
344  }
345  if (type_res_2->name() == "ρ") {
346  if (XS_rhoR_tabulation_ == nullptr) {
347  XS_rhoR_tabulation_ = &rhoR_tabulations.at(res->name());
348  }
349  return XS_rhoR_tabulation_->get_value_linear(sqrts);
350  }
351  if (type_res_2->name() == "h₁(1170)") {
352  if (XS_rhoR_tabulation_ == nullptr) {
353  XS_rhoR_tabulation_ = &rhoR_tabulations.at(res->name());
354  }
355  return XS_rhoR_tabulation_->get_value_linear(sqrts);
356  }
357  std::stringstream err;
358  err << "RR=" << name() << type_res_2->name() << " is not implemented";
359  throw std::runtime_error(err.str());
360 }
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 320 of file isoparticletype.cc.

320  {
321  if (XS_RK_tabulation_ == nullptr) {
322  const auto res = states_[0]->iso_multiplet();
323  XS_RK_tabulation_ = &RK_tabulations.at(res->name());
324  }
325  return XS_RK_tabulation_->get_value_linear(sqrts);
326 }
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 312 of file isoparticletype.cc.

312  {
313  if (XS_piR_tabulation_ == nullptr) {
314  const auto res = states_[0]->iso_multiplet();
315  XS_piR_tabulation_ = &piR_tabulations.at(res->name());
316  }
317  return XS_piR_tabulation_->get_value_linear(sqrts);
318 }
Here is the call graph for this function:
Here is the caller 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 328 of file isoparticletype.cc.

328  {
329  if (XS_rhoR_tabulation_ == nullptr) {
330  const auto res = states_[0]->iso_multiplet();
331  XS_rhoR_tabulation_ = &rhoR_tabulations.at(res->name());
332  }
333  return XS_rhoR_tabulation_->get_value_linear(sqrts);
334 }
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 69 of file isoparticletype.cc.

69  {
70  auto found = try_find_private(name);
71  if (!found) {
72  throw ParticleNotFoundFailure("Isospin multiplet " + name +
73  " not found (privately)!");
74  }
75  return *found;
76 }
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 235 of file isoparticletype.h.

◆ mass_

double smash::IsoParticleType::mass_
private

(average) mass of the multiplet

Definition at line 237 of file isoparticletype.h.

◆ width_

double smash::IsoParticleType::width_
private

(average) width of the multiplet

Definition at line 239 of file isoparticletype.h.

◆ spin_

unsigned int smash::IsoParticleType::spin_
private

twice the spin of the multiplet

Definition at line 241 of file isoparticletype.h.

◆ parity_

Parity smash::IsoParticleType::parity_
private

parity of the multiplet

Definition at line 243 of file isoparticletype.h.

◆ states_

ParticleTypePtrList smash::IsoParticleType::states_
private

list of states that are contained in the multiplet

Definition at line 245 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 248 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 250 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 255 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 260 of file isoparticletype.h.

◆ XS_rhoR_tabulation_

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

A tabulation for the ρρ integrals.

Definition at line 264 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:106
smash::IsoParticleType::width
double width() const
Returns the (average) multiplet width.
Definition: isoparticletype.h:72
smash::NR_tabulations
static std::unordered_map< std::string, Tabulation > NR_tabulations
Tabulation of all N R integrals.
Definition: isoparticletype.cc:190
smash::IsoParticleType::find
static const IsoParticleType & find(const std::string &name)
Returns the IsoParticleType object for the given name.
Definition: isoparticletype.cc:61
smash::rhoR_tabulations
static std::unordered_map< std::string, Tabulation > rhoR_tabulations
Tabulation of all rho rho integrals.
Definition: isoparticletype.cc:218
smash::IsoParticleType::spin_
unsigned int spin_
twice the spin of the multiplet
Definition: isoparticletype.h:241
smash::DeltaR_tabulations
static std::unordered_map< std::string, Tabulation > DeltaR_tabulations
Tabulation of all Delta R integrals.
Definition: isoparticletype.cc:211
smash::IsoParticleType::name_
std::string name_
name of the multiplet
Definition: isoparticletype.h:235
smash::IsoParticleType::name
const std::string & name() const
Returns the name of the multiplet.
Definition: isoparticletype.h:66
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:226
smash::IsoParticleType::mass_
double mass_
(average) mass of the multiplet
Definition: isoparticletype.h:237
smash::IsoParticleType::spin
unsigned int spin() const
Returns twice the spin of the multiplet.
Definition: isoparticletype.h:81
smash::IsoParticleType::states_
ParticleTypePtrList states_
list of states that are contained in the multiplet
Definition: isoparticletype.h:245
smash::iso_baryon_resonances
static std::vector< const IsoParticleType * > iso_baryon_resonances
Definition: isoparticletype.cc:21
smash::IsoParticleType::parity_
Parity parity_
parity of the multiplet
Definition: isoparticletype.h:243
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:255
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:90
smash::IsoParticleType::XS_RK_tabulation_
Tabulation * XS_RK_tabulation_
A tabulation of the spectral integral for the NK -> RK cross sections.
Definition: isoparticletype.h:250
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:197
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:264
smash::iso_type_list
static IsoParticleTypeList iso_type_list
Definition: isoparticletype.cc:20
smash::LParticleType
static constexpr int LParticleType
Definition: isoparticletype.cc:18
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:24
smash::IsoParticleType::exists
static bool exists(const std::string &name)
Returns whether the ParticleType with the given pdgcode exists.
Definition: isoparticletype.cc:78
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:248
smash::try_find_private
static IsoParticleType * try_find_private(const std::string &name)
Helper function for IsoParticleType::try_find and friends.
Definition: isoparticletype.cc:45
smash::IsoParticleType::mass
double mass() const
Returns the (average) multiplet mass.
Definition: isoparticletype.h:69
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:260
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:57
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:69
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:239
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:38
smash::IsoParticleType::list_all
static const IsoParticleTypeList & list_all()
Returns a list of all IsoParticleTypes.
Definition: isoparticletype.cc:42
smash::RK_tabulations
static std::unordered_map< std::string, Tabulation > RK_tabulations
Tabulation of all K R integrals.
Definition: isoparticletype.cc:204