  | 
  
     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.