7 #ifndef SRC_INCLUDE_PARTICLETYPE_H_ 8 #define SRC_INCLUDE_PARTICLETYPE_H_ 44 throw std::runtime_error(
"unreachable");
171 return (I == 0) ? 0 :
static_cast<double>(
isospin3()) / I;
401 const double cms_energy,
int L = 0)
const;
414 const double cms_energy,
432 static const ParticleTypeList &
list_all();
492 using std::runtime_error::runtime_error;
598 using std::runtime_error::runtime_error;
669 return std::addressof(
lookup());
701 operator bool()
const {
return index_ != 0xffff; }
748 #endif // SRC_INCLUDE_PARTICLETYPE_H_ unsigned int spin() const
bool is_Deltastar() const
int I3_
Isospin projection of the particle; filled automatically from pdgcode_.
static ParticleTypePtrList & list_baryon_resonances()
int antiparticle_sign() const
The ThreeVector class represents a physical three-vector with the components .
double min_mass_spectral() const
The minimum mass of the resonance, where the spectral function is non-zero.
bool is_Nstar1535() const
IsoParticleType * iso_multiplet() const
static ParticleTypePtrList & list_Deltas()
static bool exists(PdgCode pdgcode)
void operator*=(Parity &x, Parity y)
PdgCode get_antiparticle() const
Construct the antiparticle to a given PDG code.
PdgCode pdgcode_
PDG Code of the particle.
double sample_resonance_mass(const double mass_stable, const double cms_energy, int L=0) const
Resonance mass sampling for 2-particle final state with one resonance (type given by 'this') and one ...
bool operator<(const ParticleType &rhs) const
"Less than" operator for sorting the ParticleType list (by PDG code)
Parity parity_
Parity of the particle.
static ParticleTypePtrList & list_light_nuclei()
static void check_consistency()
bool operator!=(const ParticleType &rhs) const
double width_at_pole() const
static ParticleTypePtrList & list_anti_nucleons()
double get_partial_in_width(const double m, const ParticleData &p_a, const ParticleData &p_b) const
Get the mass-dependent partial in-width of a resonance with mass m, decaying into two given daughter ...
double total_width(const double m) const
Get the mass-dependent total width of a particle with mass m.
void dump_width_and_spectral_function() const
Prints out width and spectral function versus mass to the standard output.
double max_factor2_
Maximum factor for double-res mass sampling, cf. sample_resonance_masses.
bool operator==(const ParticleType &rhs) const
Parity
Represent the parity of a particle type.
std::string name_
name of the particle
double spectral_function(double m) const
Full spectral function of the resonance (relativistic Breit-Wigner distribution with mass-dependent ...
EnergyMomentumTensor operator-(EnergyMomentumTensor a, const EnergyMomentumTensor &b)
Direct subtraction operator.
bool operator<(const ParticleTypePtr &rhs) const
"Less than" operator
double mass_
pole mass of the particle
double isospin3_rel() const
friend std::ostream & operator<<(std::ostream &out, const ParticleType &type)
Writes all information about the particle type to the output stream.
static constexpr double width_cutoff
Decay width cutoff for considering a particle as stable.
static const ParticleType & find(PdgCode pdgcode)
Returns the ParticleType object for the given pdgcode.
static const ParticleTypeList & list_all()
ParticleTypePtr operator &() const
Returns an object that acts like a pointer, except that it requires only 2 bytes and inhibits pointer...
int charge() const
The charge of the particle.
int baryon_number() const
Particle type contains the static properties of a particle species.
IsoParticleType is a class to represent isospin multiplets.
DecayBranchList get_partial_widths_dilepton(const double m) const
Get the mass-dependent dilepton partial decay widths of a particle with mass m.
const ParticleType & operator*() const
EnergyMomentumTensor operator*(EnergyMomentumTensor a, const double b)
Direct multiplication operator.
PdgCode stores a Particle Data Group Particle Numbering Scheme particle type number.
double min_mass_spectral_
minimum mass, where the spectral function is non-zero Mutable, because it is initialized at first cal...
const ParticleType & lookup() const
Helper function that does the ParticleType lookup from the stored index.
bool operator!=(const ParticleTypePtr &rhs) const
double max_factor1_
Maximum factor for single-res mass sampling, cf. sample_resonance_mass.
std::pair< double, double > sample_resonance_masses(const ParticleType &t2, const double cms_energy, int L=0) const
Resonance mass sampling for 2-particle final state with two resonances.
ParticleTypePtr get_antiparticle() const
int charge_
Charge of the particle; filled automatically from pdgcode_.
DecayBranch is a derivative of ProcessBranch, which is used to represent decay channels.
static void create_type_list(const std::string &particles)
Initialize the global ParticleType list (list_all) from the given input data.
unsigned int spin() const
double norm_factor_
This normalization factor ensures that the spectral function is normalized to unity, when integrated over its full domain.
const ParticleType * operator->() const
ParticleTypePtr()=default
Default construction initializes with an invalid index.
bool has_antiparticle() const
const DecayModes & decay_modes() const
std::uint16_t index_
Stores the index of the references ParticleType object in the global vector.
int isospin() const
Returns twice the isospin vector length .
ParticleType & operator=(const ParticleType &)=delete
assignment is not allowed, see copy constructor above
static const ParticleTypePtr try_find(PdgCode pdgcode)
Returns the ParticleTypePtr for the given pdgcode.
double spectral_function_const_width(double m) const
IsoParticleType * iso_multiplet_
Container for the isospin multiplet information.
double get_partial_width(const double m, const ParticleType &t_a, const ParticleType &t_b) const
Get the mass-dependent partial width of a resonance with mass m, decaying into two given daughter par...
double spectral_function_simple(double m) const
This one is the most simple form of the spectral function, using a Cauchy distribution (non-relativis...
double min_mass_kinematic() const
The minimum mass of the resonance that is kinematically allowed.
int isospin_
Isospin of the particle; filled automatically from pdgcode_.
A pointer-like interface to global references to ParticleType objects.
int antiparticle_sign() const
double width_
width of the particle
static ParticleTypePtrList & list_nucleons()
double min_mass_kinematic_
minimum kinematically allowed mass of the particle Mutable, because it is initialized at first call o...
bool has_antiparticle() const
DecayBranchList get_partial_widths_hadronic(const FourVector p, const ThreeVector x) const
Get the mass-dependent hadronic partial decay widths of a particle with mass m.
double partial_width(const double m, const DecayBranch *mode) const
Get the mass-dependent partial decay width of a particle with mass m in a particular decay mode...
The DecayModes class is used to store and update information about decay branches (i...
The FourVector class holds relevant values in Minkowski spacetime with (+, −, −, −) metric signature.
bool is_Nstar1535() const
ParticleType(std::string n, double m, double w, Parity p, PdgCode id)
Creates a fully initialized ParticleType object.
bool operator==(const ParticleTypePtr &rhs) const
ParticleData contains the dynamic information of a certain particle.
double spectral_function_no_norm(double m) const
Full spectral function without normalization factor.
static ParticleTypePtrList & list_anti_Deltas()
ParticleTypePtr(std::uint16_t i)
Constructs a pointer to the ParticleType object at offset i.
int baryon_number() const
DecayBranchList get_partial_widths(const double m) const
Get all the mass-dependent partial decay widths of a particle with mass m.
const std::string & name() const