 |
Version: SMASH-2.0
|
|
#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.
◆ 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
-
n | The name of the multiplet. |
m | The (average) mass of the multiplet. |
w | The (average) width of the multiplet. |
s | Twice the spin of the multiplet. |
p | Parity of the multiplet. |
Definition at line 38 of file isoparticletype.cc.
◆ IsoParticleType() [2/3]
Copies are not allowed as they break intended use.
Instead use a const-ref or ParticleTypePtr (as returned from operator&).
◆ IsoParticleType() [3/3]
◆ operator=() [1/2]
Assignment is not allowed, see copy constructor above.
◆ operator=() [2/2]
◆ 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
-
Definition at line 61 of file isoparticletype.h.
62 return states_[0]->pdgcode() == rhs.states_[0]->pdgcode();
◆ name()
const std::string& smash::IsoParticleType::name |
( |
| ) |
const |
|
inline |
◆ mass()
double smash::IsoParticleType::mass |
( |
| ) |
const |
|
inline |
◆ width()
double smash::IsoParticleType::width |
( |
| ) |
const |
|
inline |
◆ isospin()
int smash::IsoParticleType::isospin |
( |
| ) |
const |
|
inline |
Returns twice the total isospin of the multiplet.
Definition at line 75 of file isoparticletype.h.
◆ 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.
◆ parity()
Parity smash::IsoParticleType::parity |
( |
| ) |
const |
|
inline |
◆ is_hadron()
bool smash::IsoParticleType::is_hadron |
( |
| ) |
const |
|
inline |
◆ 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.
◆ 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
-
type | The particle state to be added. |
Definition at line 139 of file isoparticletype.cc.
145 <<
"Isospin symmetry is broken by mass of " << type.name() <<
": "
146 << type.mass() <<
" vs. " <<
mass();
150 <<
"Isospin symmetry is broken by width of " << type.name() <<
": "
151 << type.width_at_pole() <<
" vs. " <<
width();
153 if (
spin() != type.spin()) {
155 <<
"Isospin symmetry is broken by spin of " << type.name() <<
": "
156 << type.spin() <<
" vs. " <<
spin();
◆ anti_multiplet()
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.
107 if (
states_[0]->has_antiparticle()) {
108 ParticleTypePtr anti =
states_[0]->get_antiparticle();
110 return anti->iso_multiplet();
◆ 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.
◆ list_all()
const IsoParticleTypeList & smash::IsoParticleType::list_all |
( |
| ) |
|
|
static |
◆ 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.
28 const auto baryon_number = res.states_[0]->pdgcode().baryon_number();
29 if (res.states_[0]->is_stable() || (baryon_number <= 0)) {
◆ 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
-
name | The name of the particle type. |
- Note
- The complexity of the search is \(\mathcal O(\log N)\).
Definition at line 57 of file isoparticletype.cc.
◆ find() [1/2]
const IsoParticleType & smash::IsoParticleType::find |
( |
const std::string & |
name | ) |
|
|
static |
Returns the IsoParticleType object for the given name
.
- Parameters
-
name | The name of the of the particle type to be found. |
- Exceptions
-
- Note
- The complexity of the search is \(\mathcal O(\log N)\).
Definition at line 61 of file isoparticletype.cc.
64 throw ParticleNotFoundFailure(
"Isospin multiplet " +
name +
" not found!");
◆ find() [2/2]
Returns the IsoParticleType object for the given type
.
- Parameters
-
type | The particle type to be found. |
- Exceptions
-
- Note
- The complexity of the search is \(\mathcal O(\log N)\).
Definition at line 133 of file isoparticletype.cc.
◆ exists()
bool smash::IsoParticleType::exists |
( |
const std::string & |
name | ) |
|
|
static |
Returns whether the ParticleType with the given pdgcode
exists.
- Parameters
-
name | The 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.
◆ 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
-
name | The name of the particle state to be found. |
- Exceptions
-
std::runtime_error | if name is not found. |
Definition at line 123 of file isoparticletype.cc.
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!");
◆ 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
-
type | The multiplet to be created. |
Definition at line 160 of file isoparticletype.cc.
164 iso_type_list.emplace_back(multiname, type.mass(), type.width_at_pole(),
165 type.spin(), type.parity());
167 <<
"Creating isospin multiplet " << multiname
168 <<
" [ m = " << type.mass() <<
", Γ = " << type.width_at_pole() <<
" ]";
174 return l.name() < r.name();
179 multiplet.add_state(type);
◆ tabulate_integrals()
void smash::IsoParticleType::tabulate_integrals |
( |
sha256::Hash |
hash, |
|
|
const bf::path & |
tabulations_path |
|
) |
| |
|
static |
Tabulate all relevant integrals.
- Parameters
-
hash | The hash of the particle properties. This is used to determine whether a cached tabulation can be reused or not. |
tabulations_path | The path to the directory where the tabulations are cached. |
Definition at line 266 of file isoparticletype.cc.
271 FileLock lock(tabulations_path /
"tabulations.lock");
272 const bf::path &dir = lock.acquire() ? tabulations_path :
"";
281 const auto antires = res->anti_multiplet();
◆ get_integral_NR()
double smash::IsoParticleType::get_integral_NR |
( |
double |
sqrts | ) |
|
Look up the tabulated resonance integral for the XX -> NR cross section.
- Parameters
-
sqrts | The center-of-mass energy. |
Definition at line 304 of file isoparticletype.cc.
306 const auto res =
states_[0]->iso_multiplet();
◆ 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_2 | Type of the two resonances in the final state. |
sqrts | The center-of-mass energy. |
Definition at line 336 of file isoparticletype.cc.
338 const auto res =
states_[0]->iso_multiplet();
339 if (type_res_2->states_[0]->is_Delta()) {
345 if (type_res_2->name() ==
"ρ") {
351 if (type_res_2->name() ==
"h₁(1170)") {
357 std::stringstream err;
358 err <<
"RR=" <<
name() << type_res_2->name() <<
" is not implemented";
359 throw std::runtime_error(err.str());
◆ get_integral_RK()
double smash::IsoParticleType::get_integral_RK |
( |
double |
sqrts | ) |
|
Look up the tabulated resonance integral for the XX -> RK cross section.
- Parameters
-
sqrts | The center-of-mass energy. |
Definition at line 320 of file isoparticletype.cc.
322 const auto res =
states_[0]->iso_multiplet();
◆ get_integral_piR()
double smash::IsoParticleType::get_integral_piR |
( |
double |
sqrts | ) |
|
Look up the tabulated resonance integral for the XX -> piR cross section.
- Parameters
-
sqrts | The center-of-mass energy. |
Definition at line 312 of file isoparticletype.cc.
314 const auto res =
states_[0]->iso_multiplet();
◆ get_integral_rhoR()
double smash::IsoParticleType::get_integral_rhoR |
( |
double |
sqrts | ) |
|
Look up the tabulated resonance integral for the XX -> rhoR cross section.
- Parameters
-
sqrts | The center-of-mass energy. |
Definition at line 328 of file isoparticletype.cc.
330 const auto res =
states_[0]->iso_multiplet();
◆ 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] | name | The name of the of the particle type to be found. |
- Exceptions
-
Definition at line 69 of file isoparticletype.cc.
72 throw ParticleNotFoundFailure(
"Isospin multiplet " +
name +
73 " not found (privately)!");
◆ name_
std::string smash::IsoParticleType::name_ |
|
private |
◆ mass_
double smash::IsoParticleType::mass_ |
|
private |
◆ width_
double smash::IsoParticleType::width_ |
|
private |
◆ spin_
unsigned int smash::IsoParticleType::spin_ |
|
private |
◆ parity_
Parity smash::IsoParticleType::parity_ |
|
private |
◆ 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 |
The documentation for this class was generated from the following files:
const IsoParticleType * anti_multiplet() const
Return a multiplet of antiparticles, if it is different from the original multiplet.
double width() const
Returns the (average) multiplet width.
static std::unordered_map< std::string, Tabulation > NR_tabulations
Tabulation of all N R integrals.
static const IsoParticleType & find(const std::string &name)
Returns the IsoParticleType object for the given name.
static std::unordered_map< std::string, Tabulation > rhoR_tabulations
Tabulation of all rho rho integrals.
unsigned int spin_
twice the spin of the multiplet
static std::unordered_map< std::string, Tabulation > DeltaR_tabulations
Tabulation of all Delta R integrals.
std::string name_
name of the multiplet
const std::string & name() const
Returns the name of the multiplet.
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)
double mass_
(average) mass of the multiplet
unsigned int spin() const
Returns twice the spin of the multiplet.
ParticleTypePtrList states_
list of states that are contained in the multiplet
static std::vector< const IsoParticleType * > iso_baryon_resonances
Parity parity_
parity of the multiplet
Tabulation * XS_NR_tabulation_
A tabulation for the NN -> NR cross sections, where R is a resonance from this multiplet.
static std::string multiplet_name(std::string name)
Construct the name-string for an isospin multiplet from the given name-string for the particle.
Tabulation * XS_RK_tabulation_
A tabulation of the spectral integral for the NK -> RK cross sections.
std::array< einhard::Logger<>, std::tuple_size< LogArea::AreaTuple >::value > logg
An array that stores all pre-configured Logger objects.
static std::unordered_map< std::string, Tabulation > piR_tabulations
Tabulation of all pi R integrals.
constexpr double really_small
Numerical error tolerance.
Tabulation * XS_rhoR_tabulation_
A tabulation for the ρρ integrals.
static IsoParticleTypeList iso_type_list
static constexpr int LParticleType
static const std::vector< const IsoParticleType * > list_baryon_resonances()
Returns a list of all IsoParticleTypes that are baryon resonances.
static bool exists(const std::string &name)
Returns whether the ParticleType with the given pdgcode exists.
Tabulation * XS_piR_tabulation_
A tabulation of the spectral integral for the dpi -> d'pi cross sections.
static IsoParticleType * try_find_private(const std::string &name)
Helper function for IsoParticleType::try_find and friends.
double mass() const
Returns the (average) multiplet mass.
Tabulation * XS_DeltaR_tabulation_
A tabulation for the NN -> RΔ cross sections, where R is a resonance from this multiplet.
constexpr int h1
h₁(1170).
static const IsoParticleType * try_find(const std::string &name)
Returns the IsoParticleType pointer for the given name.
static IsoParticleType & find_private(const std::string &name)
Private version of the 'find' method that returns a non-const reference.
double width_
(average) width of the multiplet
double get_value_linear(double x, Extrapolation extrapolation=Extrapolation::Linear) const
Look up a value from the tabulation using linear interpolation.
IsoParticleType(const std::string &n, double m, double w, unsigned int s, Parity p)
Creates a fully initialized IsoParticleType object.
static const IsoParticleTypeList & list_all()
Returns a list of all IsoParticleTypes.
static std::unordered_map< std::string, Tabulation > RK_tabulations
Tabulation of all K R integrals.