27 m_v.resize(m_TPS->Particles().size());
28 m_TAG =
"ThermalModelEVCanonicalStrangeness";
43 for (
int i = 0; i < m_TPS->ComponentsNumber(); ++i) {
47 m_GCECalculated =
true;
55 for (
int i = 0; i < m_TPS->ComponentsNumber(); ++i) {
66 for (
int i = 0; i < m_TPS->ComponentsNumber(); ++i) {
73 assert(m_IGFExtraConfig.MagneticField.B == 0.);
75 m_FluctuationsCalculated =
false;
86 for (
int i = 0; i < m_TPS->ComponentsNumber(); ++i) {
87 if (
m_StrMap.count(-m_TPS->Particles()[i].Strangeness()))
92 for (
int i = 0; i < m_TPS->ComponentsNumber(); ++i) {
93 if (m_TPS->Particles()[i].Strangeness() != 0)
94 m_EVS +=
m_v[i] * m_densities[i] * m_Parameters.SVc;
99 printf(
"EV-SCE calculation: The following two parameters must be much smaller than unity. Otherwise we are in trouble...\n");
100 printf(
"%20s%lf\n%20s%lf\n",
"PS/P = ", (tP -
m_PNS) / tP,
"EVS/(V-EVNS) = ",
m_EVS / (m_Parameters.SVc -
m_EVNS));
117 for (
int i = 0; i < m_TPS->ComponentsNumber(); ++i)
129 for (
int i = 0; i < m_TPS->ComponentsNumber(); ++i)
130 if (m_TPS->Particles()[i].Strangeness() != 0) {
131 if (
m_StrMap.count(-m_TPS->Particles()[i].Strangeness()))
145 for (
int i = 0; i < m_TPS->ComponentsNumber(); ++i)
152 if (
id >= 0. &&
id <
static_cast<int>(
m_v.size()))
166 for (
size_t i = 0; i < TPSnew->
Particles().size(); ++i) {
177 m_modelEV->SetChemicalPotentials(m_Chem);
184 for (
size_t i = 0; i <
m_modelEV->Densities().size(); ++i) {
202 if (
static_cast<int>(
m_v.size()) != m_TPS->ComponentsNumber())
203 m_v.resize(m_TPS->Particles().size());
204 for (
int i = 0; i < m_TPS->ComponentsNumber(); ++i) {
211 if (ri.size() != m_TPS->Particles().size()) {
212 throw std::invalid_argument(m_TAG +
"::FillVirial(const std::vector<double> & ri): size of ri does not match number of hadrons in the list");
214 m_v.resize(m_TPS->Particles().size());
215 for (
int i = 0; i < m_TPS->ComponentsNumber(); ++i)
221 if (vi.size() != m_TPS->Particles().size()) {
222 throw std::invalid_argument(m_TAG +
"::FillVirialEV(const std::vector<double> & vi): size of vi does not match number of hadrons in the list");
229 m_v = std::vector<double>(m_TPS->Particles().size(), 0.);
231 ifstream fin(filename.c_str());
234 fin.getline(cc, 2000);
235 string tmp = string(cc);
237 if (elems.size() < 1)
239 istringstream iss(elems[0]);
242 if (iss >> pdgid >> b) {
243 int ind = m_TPS->PdgToId(pdgid);
253 ofstream fout(filename.c_str());
254 for (
int i = 0; i < m_TPS->ComponentsNumber(); ++i) {
255 fout << std::setw(15) << m_TPS->Particle(i).PdgId();
256 fout << std::setw(15) <<
m_v[i];
264 if (i < 0 || i >=
static_cast<int>(
m_v.size()))
272 for (
int i = 0; i < m_TPS->ComponentsNumber(); ++i) {
273 tEV +=
m_v[i] * m_densities[i] / 4.;
280 if (i >= 0 && i <
static_cast<int>(
m_v.size()))
Contains some functions to deal with excluded volumes.
map< string, double > params
@ DiagonalEV
Diagonal excluded volume model.
virtual void ValidateCalculation()
Checks whether issues have occured during the calculation of particle densities in the CalculateDensi...
virtual void CalculateDensities()
Calculates the primordial and total (after decays) densities of all species.
@ SCE
Strangeness-canonical ensemble.
std::vector< double > m_Zsum
ThermalModelCanonicalStrangeness(ThermalParticleSystem *TPS, const ThermalModelParameters ¶ms=ThermalModelParameters())
Construct a new ThermalModelCanonicalStrangeness object.
virtual void CalculateSums(double Vc)
Calculates the strangeness-canonical partition functions.
std::map< int, int > m_StrMap
std::vector< double > m_pressuresGCE
std::vector< double > m_densitiesGCE
std::vector< double > m_energydensitiesGCE
void SetRadius(double rad)
Set the same excluded volume radius parameter for all species.
void FillVirialEV(const std::vector< double > &vi=std::vector< double >(0))
Same as FillVirial() but uses the diagonal excluded-volume coefficients as input instead of radii.
virtual double CalculateEnergyDensity()
virtual double CalculateEigenvolumeFraction()
ThermalModelEVDiagonal * m_modelEV
void ClearModelEV()
Clears m_modelEV.
void FillVirial(const std::vector< double > &ri=std::vector< double >(0))
Fills the vector of particle eigenvolume parameters.
virtual double CalculatePressure()
virtual void CalculatePrimordialDensities()
Calculates the primordial densities of all species.
virtual void CalculateDensitiesGCE()
Calculates the particle densities in a grand-canonical ensemble.
virtual void CalculatePressuresGCE()
Calculates the grand-canonical pressures.
virtual void ReadInteractionParameters(const std::string &filename)
Read the set of eigenvolume parameters for all particles from an external file.
virtual bool IsConservedChargeCanonical(ConservedCharge::Name charge) const
std::vector< double > m_v
ThermalModelEVCanonicalStrangeness(ThermalParticleSystem *TPS, const ThermalModelParameters ¶ms=ThermalModelParameters())
Construct a new Thermal ModelEVCanonicalStrangeness object.
virtual void WriteInteractionParameters(const std::string &filename)
Write the set of eigenvolume parameters for all particles to an external file.
virtual double CalculateEntropyDensity()
virtual double MuShift(int id) const
The shift in the chemical potential of particle species i due to the excluded volume interactions.
virtual ~ThermalModelEVCanonicalStrangeness(void)
Destroy the ThermalModelEVCanonicalStrangeness object.
double ExcludedVolume(int i) const
virtual void CalculateEnergyDensitiesGCE()
Calculates the grand-canonical energy densities.
Class implementing the diagonal excluded-volume model.
Class containing all information about a particle specie.
int Strangeness() const
Particle's strangeness.
void SetDegeneracy(double deg)
Set particle's internal degeneracy factor.
Class containing the particle list.
const std::vector< ThermalParticle > & Particles() const
Returns the vector of all particle species.
const ThermalParticle & Particle(int id) const
ThermalParticle object corresponding to particle species with a provided 0-based index.
double vr(double r)
Computes the excluded volume parameter from a given radius parameter value.
std::vector< std::string > split(const std::string &s, char delim)
The main namespace where all classes and functions of the Thermal-FIST library reside.
Name
Set of all conserved charges considered.
@ StrangenessCharge
Strangeness.
Structure containing all thermal parameters of the model.
Contains some extra mathematical functions used in the code.