 |
Version: SMASH-1.8
|
|
#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.
◆ 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 39 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 60 of file isoparticletype.h.
61 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 74 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 80 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 93 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 140 of file isoparticletype.cc.
146 <<
"Isospin symmetry is broken by mass of " << type.name() <<
": "
147 << type.mass() <<
" vs. " <<
mass();
151 <<
"Isospin symmetry is broken by width of " << type.name() <<
": "
152 << type.width_at_pole() <<
" vs. " <<
width();
154 if (
spin() != type.spin()) {
156 <<
"Isospin symmetry is broken by spin of " << type.name() <<
": "
157 << 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 107 of file isoparticletype.cc.
108 if (
states_[0]->has_antiparticle()) {
109 ParticleTypePtr anti =
states_[0]->get_antiparticle();
111 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 120 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 25 of file isoparticletype.cc.
29 const auto baryon_number = res.states_[0]->pdgcode().baryon_number();
30 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 58 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 62 of file isoparticletype.cc.
65 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 134 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 79 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 124 of file isoparticletype.cc.
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!");
◆ 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 161 of file isoparticletype.cc.
165 iso_type_list.emplace_back(multiname, type.mass(), type.width_at_pole(),
166 type.spin(), type.parity());
168 <<
"Creating isospin multiplet " << multiname
169 <<
" [ m = " << type.mass() <<
", Γ = " << type.width_at_pole() <<
" ]";
175 return l.name() < r.name();
180 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 267 of file isoparticletype.cc.
272 FileLock lock(tabulations_path /
"tabulations.lock");
273 const bf::path &dir = lock.acquire() ? tabulations_path :
"";
282 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 305 of file isoparticletype.cc.
307 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 337 of file isoparticletype.cc.
339 const auto res =
states_[0]->iso_multiplet();
340 if (type_res_2->states_[0]->is_Delta()) {
346 if (type_res_2->name() ==
"ρ") {
352 if (type_res_2->name() ==
"h₁(1170)") {
358 std::stringstream err;
359 err <<
"RR=" <<
name() << type_res_2->name() <<
" is not implemented";
360 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 321 of file isoparticletype.cc.
323 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 313 of file isoparticletype.cc.
315 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 329 of file isoparticletype.cc.
331 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 70 of file isoparticletype.cc.
73 throw ParticleNotFoundFailure(
"Isospin multiplet " +
name +
74 " 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 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 |
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.