8#ifndef THERMALPARTICLE_H
9#define THERMALPARTICLE_H
110 ThermalParticle(
bool Stable =
true, std::string
Name =
"hadron",
long long PDGID = 0,
double Deg = 1.,
int Stat = 0,
double Mass = 0.,
111 int Strange = 0,
int Baryon = 0,
int Charge = 0,
double AbsS = 0.,
double Width = 0.,
double Threshold = 0.,
int Charm = 0,
double AbsC = 0.,
int Quark = 0);
291 double FD(
double k,
double T,
double mu,
double m)
const;
333 void SetStable(
bool stable =
true) { m_Stable = stable; }
342 const std::string&
Name()
const {
return m_Name; }
345 void SetName(
const std::string &name) { m_Name = name; }
348 long long PdgId()
const {
return m_PDGID; }
390 double Mass()
const {
return m_Mass; }
413 int Charm()
const {
return m_Charm; }
556 double Weight()
const {
return m_Weight; }
648 const std::vector<double>&
Nch()
const {
return m_Nch; }
649 std::vector<double>&
Nch() {
return m_Nch; }
651 const std::vector<double>&
DeltaNch()
const {
return m_DeltaNch; }
652 std::vector<double>&
DeltaNch() {
return m_DeltaNch; }
687 std::vector<double> m_xlag32, m_wlag32;
688 std::vector<double> m_xleg, m_wleg;
689 std::vector<double> m_xleg32, m_wleg32;
690 std::vector<double> m_brweight;
696 std::vector<double> m_xlegdyn, m_wlegdyn, m_vallegdyn;
697 std::vector<double> m_xlegpdyn, m_wlegpdyn, m_vallegpdyn;
698 std::vector<double> m_xlagdyn, m_wlagdyn, m_vallagdyn;
700 std::vector<double> m_xalldyn, m_walldyn, m_densalldyn;
711 int m_StatisticsOrig;
724 int m_ClusterExpansionOrder;
727 int m_ElectricCharge;
732 double m_ArbitraryCharge;
739 double m_ThresholdDynamical;
757 std::vector<double> m_Nch;
758 std::vector<double> m_DeltaNch;
761 bool m_LastDensityOk;
map< string, double > params
Contains structures related to particle decays.
Implements the possibility of a generalized calculation of the densities. For example,...
Class containing all information about a particle specie.
double MassDistribution(double m) const
long long PdgId() const
Particle's Particle Data Group (PDG) ID number.
void SetAntiParticle(bool antpar=true)
Set manually whether particle is an antiparticle.
double AbsoluteCharm() const
Absolute charm quark content |s|.
const std::vector< double > & DeltaNch() const
std::vector< double > & Nch()
void ClearMagneticField()
Clears the magnetic field.
void SetAbsoluteQuark(double abschg)
Set absolute light quark content |u,d|.
int BaryonCharge() const
Particle's baryon number.
double Kurtosis(const ThermalModelParameters ¶ms, bool useWidth=0, double mu=0.) const
Computes the normalized excess kurtosis of particle number fluctuations in the ideal gas.
ParticleDecaysVector & DecaysOriginal()
int Statistics() const
Particle's statistics.
void FillCoefficients()
Fills coefficients for mass integration in the energy independent BW scheme.
void RestoreBranchingRatios()
Restores all branching ratios to the original values.
double Mass() const
Particle's mass [GeV].
void SetDecayType(ParticleDecayType::DecayType type)
Set particle's Decay Type.
double ArbitraryCharge() const
Arbitrary (auxiliary) charge assigned to particle.
std::vector< ParticleDecayChannel > ParticleDecaysVector
Vector of all decay channels of a particle.
ResonanceWidthShape GetResonanceWidthShape() const
Resonance width profile in use.
ResonanceWidthIntegration GetResonanceWidthIntegrationType() const
Resonance width integration scheme used to treat finite resonance widths.
double chiDimensionfull(int index, const ThermalModelParameters ¶ms, bool useWidth=0, double mu=0.) const
Computes the ideal gas dimensionfull susceptibility .
int Strangeness() const
Particle's strangeness.
void SetCalculationType(IdealGasFunctions::QStatsCalculationType type)
Sets the CalculationType() method to evaluate quantum statistics.
double TotalWidtheBW(double M) const
Total width (eBW scheme) at a given mass.
void SetResonanceWidthShape(ResonanceWidthShape shape)
Set the resonance width profile to use.
void SetDecayThresholdMassDynamical(double threshold)
Set the threshold mass manually for use in the eBW scheme.
void SetDecaysOriginal(const ParticleDecaysVector &DecaysOrig)
double Density(const ThermalModelParameters ¶ms, IdealGasFunctions::Quantity type=IdealGasFunctions::ParticleDensity, bool useWidth=0, double mu=0.) const
Computes a specified ideal gas thermodynamic function.
const std::vector< double > & Nch() const
const ParticleDecaysVector & Decays() const
A vector of particle's decays.
void SetResonanceWidthIntegrationType(ResonanceWidthIntegration type)
Set the ResonanceWidthIntegration scheme used to treat finite resonance widths.
ResonanceWidthIntegration
Treatment of finite resonance widths.
@ FullIntervalWeighted
Energy-independent Breit-Wigner in full energy interval with weighted branching ratios.
@ eBWconstBR
Energy-dependent Breit-Wigner scheme (eBW) with constant branching ratios when evaluating feeddown.
@ eBW
Energy-dependent Breit-Wigner scheme (eBW)
@ BWTwoGamma
Energy-independent Breit-Wigner in +-2\Gamma interval.
@ FullInterval
Energy-independent Breit-Wigner in full energy interval.
@ ZeroWidth
Zero-width approximation.
IdealGasFunctions::QStatsCalculationType CalculationType() const
Method to evaluate quantum statistics.
ParticleDecayType::DecayType DecayType() const
Decay type of the particle.
void ClearGeneralizedDensity()
Clear the generalized density.
void SetArbitraryCharge(double arbchg)
Assigns arbitrary (auxiliary) charge to particle.
ParticleDecaysVector & Decays()
Returns a non-const reference to Decays()
void SetStable(bool stable=true)
Sets particle stability flag.
double AbsoluteStrangeness() const
Absolute strange quark content |s|.
double FD(double k, double T, double mu, double m) const
Fermi-Dirac distribution function.
void ReadDecays(std::string filename="")
Read decays from a file and assign them to the particle.
double DecayThresholdMass() const
The decays threshold mass.
int ElectricCharge() const
Particle's electric charge.
void SetStrangenessCharge(int chg)
Set particle's strangeness.
ResonanceWidthShape
Relativistic vs non-relativistic Breit-Wigner shape.
@ NonRelativisticBreitWigner
@ RelativisticBreitWigner
bool IsNeutral() const
Whether particle is neutral one.
void SetPdgId(long long PdgId)
Set particle's particle's Particle Data Group (PDG) ID number.
void SetDecayThresholdMass(double threshold)
Set the decays threshold mass.
bool operator!=(const ThermalParticle &rhs) const
void SetCharm(int chg)
Set particle's charm.
int Charm() const
Particle's charm.
double AbsoluteQuark() const
Absolute light quark content |u,d|.
double Weight() const
Particle's weight.
double chi(int index, const ThermalModelParameters ¶ms, bool useWidth=0, double mu=0.) const
Computes the ideal gas generalized susceptibility .
int ClusterExpansionOrder() const
Number of terms in the cluster expansion method.
ThermalParticle(bool Stable=true, std::string Name="hadron", long long PDGID=0, double Deg=1., int Stat=0, double Mass=0., int Strange=0, int Baryon=0, int Charge=0, double AbsS=0., double Width=0., double Threshold=0., int Charm=0, double AbsC=0., int Quark=0)
Construct a new ThermalParticle object.
double ThermalMassDistribution(double M, double T, double Mu, double width)
Mass distribution of a resonance in a thermal environment.
void SetMass(double mass)
Set particle's mass [GeV].
bool IsAntiParticle() const
Whether particle is an antiparticle, i.e. its PDG ID is < 0.
double DensityCluster(int n, const ThermalModelParameters ¶ms, IdealGasFunctions::Quantity type=IdealGasFunctions::ParticleDensity, bool useWidth=0, double mu=0.) const
void SetBaryonCharge(int chg)
Set particle's baryon number.
void CalculateAndSetDynamicalThreshold()
void SetWeight(double weight)
Set particle's weight factor.
void SetMagneticField(double B=0.0, int lmax=1)
Sets the value of magnetic field and the number of Landau levels to include.
double Skewness(const ThermalModelParameters ¶ms, bool useWidth=0, double mu=0.) const
Computes the normalized skewness of particle number fluctuations in the ideal gas.
double GetCharge(int index) const
Get the quantum number numbered by the index.
std::vector< double > & DeltaNch()
bool operator==(const ThermalParticle &rhs) const
const std::string & Name() const
Particle's name.
int ConservedCharge(ConservedCharge::Name chg) const
One of the four QCD conserved charges.
double ResonanceWidth() const
Particle's width at the pole mass (GeV)
std::vector< double > BranchingRatioWeights(const std::vector< double > &ms) const
GeneralizedDensity * GetGeneralizedDensity() const
Getter/Setter for the generalized density object.
void SetGeneralizedDensity(GeneralizedDensity *density_model)
void ClearDecays()
Remove all decays.
bool IsStable() const
Return particle stability flag.
void SetStatistics(int stat)
Set particle's statistics.
void SetResonanceWidth(double width)
Sets the particle's width at the pole mass.
void SetDecays(const ParticleDecaysVector &Decays)
Set the Decays vector.
void SetName(const std::string &name)
Set particle's name.
ThermalParticle GenerateAntiParticle() const
Generates the anti-particle to the current particle specie.
double Degeneracy() const
Particle's internal degeneracy factor.
void NormalizeBranchingRatios()
Normalizes all branching ratios such that they sum up to 100%.
void SetDegeneracy(double deg)
Set particle's internal degeneracy factor.
void UseStatistics(bool enable)
Use quantum statistics.
double DecayThresholdMassDynamical() const
std::vector< double > BranchingRatiosM(double M, bool eBW=true) const
(Energy-dependent) branching ratios
const ParticleDecaysVector & DecaysOriginal() const
A backup copy of particle's decays.
bool ZeroWidthEnforced() const
Whether zero-width approximation is enforced for this particle species.
void SetElectricCharge(int chg)
Set particle's electric charge.
void FillCoefficientsDynamical()
Fills coefficients for mass integration in the eBW scheme.
void CalculateThermalBranchingRatios(const ThermalModelParameters ¶ms, bool useWidth=0, double mu=0.)
Computes average decay branching ratios by integrating over the thermal mass distribution.
double GetAbsCharge(int index) const
Get the absolute value of a quantum number.
double ScaledVariance(const ThermalModelParameters ¶ms, bool useWidth=0, double mu=0.) const
Computes the scaled variance of particle number fluctuations in the ideal gas. Computes the scaled va...
void SetAbsoluteCharm(double abschg)
Set absolute charm quark content |s|, light quark content then re-evaluted.
void SetClusterExpansionOrder(int order)
Set ClusterExpansionOrder()
void SetAbsoluteStrangeness(double abschg)
Set absolute strange quark content |s|, light quark content then re-evaluted.
QStatsCalculationType
Identifies whether quantum statistics are to be computed using the cluster expansion or numerical int...
Quantity
Identifies the thermodynamic function.
The main namespace where all classes and functions of the Thermal-FIST library reside.
An auxiliary struct containing the list of conserved charges.
static const int NumberOfTypes
Name
Set of all conserved charges considered.
@ BaryonCharge
Baryon number.
@ StrangenessCharge
Strangeness.
@ ElectricCharge
Electric charge.
DecayType
Type of particle's decay.
Structure containing all thermal parameters of the model.
Contains some extra mathematical functions used in the code.