8 #ifndef THERMALPARTICLE_H 9 #define THERMALPARTICLE_H 75 NonRelativisticBreitWigner
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);
118 void FillCoefficients();
121 void FillCoefficientsDynamical();
124 double TotalWidtheBW(
double M)
const;
133 std::vector<double> BranchingRatiosM(
double M,
bool eBW =
true)
const;
147 double ThermalMassDistribution(
double M,
double T,
double Mu,
double width);
160 double ThermalMassDistribution(
double M,
double T,
double Mu);
167 void NormalizeBranchingRatios();
173 void RestoreBranchingRatios();
275 double FD(
double k,
double T,
double mu,
double m)
const;
285 double GetAbsQ()
const;
294 double GetCharge(
int index)
const;
303 double GetAbsCharge(
int index)
const;
311 bool IsNeutral()
const;
317 void SetStable(
bool stable =
true) { m_Stable = stable; }
326 const std::string&
Name()
const {
return m_Name; }
329 void SetName(
const std::string &name) { m_Name = name; }
332 long long PdgId()
const {
return m_PDGID; }
335 void SetPdgId(
long long PdgId) { m_PDGID = PdgId; }
371 void UseStatistics(
bool enable);
374 double Mass()
const {
return m_Mass; }
377 void SetMass(
double mass);
397 int Charm()
const {
return m_Charm; }
438 bool ZeroWidthEnforced()
const;
452 void SetResonanceWidth(
double width);
472 void SetDecayThresholdMass(
double threshold);
482 void SetDecayThresholdMassDynamical(
double threshold);
486 void CalculateAndSetDynamicalThreshold();
527 double MassDistribution(
double m)
const;
530 double MassDistribution(
double m,
double width)
const;
540 double Weight()
const {
return m_Weight; }
563 const ParticleDecaysVector&
Decays()
const {
return m_Decays; }
566 ParticleDecaysVector&
Decays() {
return m_Decays; }
575 void SetDecays(
const ParticleDecaysVector &Decays) { m_Decays = Decays; }
581 const ParticleDecaysVector& DecaysOriginal()
const {
return m_DecaysOrig; }
588 void ReadDecays(std::string filename =
"");
601 void CalculateThermalBranchingRatios(
const ThermalModelParameters ¶ms,
bool useWidth = 0,
double mu = 0.);
630 std::vector<double> BranchingRatioWeights(
const std::vector<double> & ms)
const;
632 const std::vector<double>&
Nch()
const {
return m_Nch; }
633 std::vector<double>&
Nch() {
return m_Nch; }
635 const std::vector<double>&
DeltaNch()
const {
return m_DeltaNch; }
636 std::vector<double>&
DeltaNch() {
return m_DeltaNch; }
656 std::vector<double> m_xlag32, m_wlag32;
657 std::vector<double> m_xleg, m_wleg;
658 std::vector<double> m_xleg32, m_wleg32;
659 std::vector<double> m_brweight;
665 std::vector<double> m_xlegdyn, m_wlegdyn, m_vallegdyn;
666 std::vector<double> m_xlegpdyn, m_wlegpdyn, m_vallegpdyn;
667 std::vector<double> m_xlagdyn, m_wlagdyn, m_vallagdyn;
669 std::vector<double> m_xalldyn, m_walldyn, m_densalldyn;
680 int m_StatisticsOrig;
693 int m_ClusterExpansionOrder;
696 int m_ElectricCharge;
701 double m_ArbitraryCharge;
708 double m_ThresholdDynamical;
715 ParticleDecaysVector m_Decays;
720 ParticleDecaysVector m_DecaysOrig;
727 std::vector<double> m_Nch;
728 std::vector<double> m_DeltaNch;
731 bool m_LastDensityOk;
void ClearDecays()
Remove all decays.
void SetAbsoluteQuark(double abschg)
Set absolute light quark content |u,d|.
ParticleDecaysVector & Decays()
Returns a non-const reference to Decays()
double AbsoluteStrangeness() const
Absolute strange quark content |s|.
DecayType
Type of particle's decay.
int Charm() const
Particle's charm.
std::vector< ParticleDecayChannel > ParticleDecaysVector
Vector of all decay channels of a particle.
ResonanceWidthShape GetResonanceWidthShape() const
Resonance width profile in use.
int ClusterExpansionOrder() const
Number of terms in the cluster expansion method.
std::vector< double > & Nch()
double Weight() const
Particle's weight.
void SetPdgId(long long PdgId)
Set particle's particle's Particle Data Group (PDG) ID number.
void SetAbsoluteCharm(double abschg)
Set absolute charm quark content |s|, light quark content then re-evaluted.
void SetElectricCharge(int chg)
Set particle's electric charge.
void SetBaryonCharge(int chg)
Set particle's baryon number.
Energy-independent Breit-Wigner in +-2 interval.
long long PdgId() const
Particle's Particle Data Group (PDG) ID number.
An auxiliary struct containing the list of conserved charges.
void SetDecays(const ParticleDecaysVector &Decays)
Set the Decays vector.
Energy-dependent Breit-Wigner scheme (eBW)
double ResonanceWidth() const
Particle's width at the pole mass (GeV)
Structure containing all thermal parameters of the model.
void SetDecayType(ParticleDecayType::DecayType type)
Set particle's Decay Type.
std::vector< double > & DeltaNch()
Contains some extra mathematical functions used in the code.
void SetAntiParticle(bool antpar=true)
Set manually whether particle is an antiparticle.
Zero-width approximation.
bool operator!=(const ThermalParticle &rhs) const
int BaryonCharge() const
Particle's baryon number.
void SetName(const std::string &name)
Set particle's name.
ResonanceWidthIntegration
Treatment of finite resonance widths.
Class containing all information about a particle specie.
ResonanceWidthShape
Relativistic vs non-relativistic Breit-Wigner shape.
double DecayThresholdMassDynamical() const
const std::string & Name() const
Particle's name.
void SetCharm(int chg)
Set particle's charm.
Energy-independent Breit-Wigner in full energy interval.
void SetClusterExpansionOrder(int order)
Set ClusterExpansionOrder()
Quantity
Identifies the thermodynamic function.
void SetStable(bool stable=true)
Sets particle stability flag.
Name
Set of all conserved charges considered.
void SetDecaysOriginal(const ParticleDecaysVector &DecaysOrig)
IdealGasFunctions::QStatsCalculationType CalculationType() const
Method to evaluate quantum statistics.
double Mass() const
Particle's mass [GeV].
ResonanceWidthIntegration GetResonanceWidthIntegrationType() const
Resonance width integration scheme used to treat finite resonance widths.
double AbsoluteQuark() const
Absolute light quark content |u,d|.
void SetStatistics(int stat)
Set particle's statistics.
const std::vector< double > & Nch() const
void SetDegeneracy(double deg)
Set particle's internal degeneracy factor.
bool IsStable() const
Return particle stability flag.
Energy-independent Breit-Wigner in full energy interval with weighted branching ratios.
double DecayThresholdMass() const
The decays threshold mass.
void SetCalculationType(IdealGasFunctions::QStatsCalculationType type)
Sets the CalculationType() method to evaluate quantum statistics.
int ElectricCharge() const
Particle's electric charge.
int Strangeness() const
Particle's strangeness.
ParticleDecayType::DecayType DecayType() const
Decay type of the particle.
Contains structures related to particle decays.
static const int NumberOfTypes
double Degeneracy() const
Particle's internal degeneracy factor.
QStatsCalculationType
Identifies whether quantum statistics are to be computed using the cluster expansion or numerical int...
void SetAbsoluteStrangeness(double abschg)
Set absolute strange quark content |s|, light quark content then re-evaluted.
ParticleDecaysVector & DecaysOriginal()
void SetStrangenessCharge(int chg)
Set particle's strangeness.
const ParticleDecaysVector & Decays() const
A vector of particle's decays.
double AbsoluteCharm() const
Absolute charm quark content |s|.
double ArbitraryCharge() const
Arbitrary (auxiliary) charge assigned to particle.
The main namespace where all classes and functions of the Thermal-FIST library reside.
bool IsAntiParticle() const
Whether particle is an antiparticle, i.e. its PDG ID is < 0.
const std::vector< double > & DeltaNch() const
void SetArbitraryCharge(double arbchg)
Assigns arbitrary (auxiliary) charge to particle.
int Statistics() const
Particle's statistics.
void SetWeight(double weight)
Set particle's weight factor.