2 // Nikolai Amelin, Ludmila Malinina, Timur Pocheptsov (C) JINR/Dubna
3 // amelin@sunhe.jinr.ru, malinina@sunhe.jinr.ru, pocheptsov@sunhe.jinr.ru
7 //This class is used to obtain grand canonical description of strange density
8 //by means of the temperature and chemical potentials (input). As for output
11 #include "StrangeDensity.h"
12 #include "DatabasePDG.h"
13 #include "ParticlePDG.h"
14 #include "UKUtility.h"
16 //__________________________________________________________
17 StrangeDensity::StrangeDensity():
18 fTemperature(0.*kGeV),
19 fBaryonPotential(0.*kGeV),
20 fStrangePotential(0.*kGeV),
28 //__________________________________________________________
29 Double_t StrangeDensity::StrangenessDensity(const DatabasePDG* database) {
31 // compute hadron system strangeness density
33 Double_t meanStrangenessDensity = 0.;
34 for(Int_t particleIndex = 0; particleIndex < database->GetNParticles(); particleIndex++) {
35 ParticlePDG *particle = database->GetPDGParticleByIndex(particleIndex);
36 Double_t particleDensity = ParticleNumberDensity(particle);
37 meanStrangenessDensity += particleDensity*particle->GetStrangeness();
39 return meanStrangenessDensity;
42 //__________________________________________________________
43 Double_t StrangeDensity::ParticleNumberDensity(ParticlePDG* pDef) {
45 // compute hadron number density
47 Double_t particleMass = pDef->GetMass();
48 Int_t particleStrangeness = Int_t(pDef->GetStrangeness());
49 Double_t particleBaryon = pDef->GetBaryonNumber();
50 //compute chemical potential
51 Double_t particleChemPotential = fBaryonPotential*particleBaryon +
52 fStrangePotential*particleStrangeness;
53 //compute degeneracy factor
54 Double_t particleDegFactor = 2*pDef->GetSpin() + 1.; // IA: In ParticlePDG() GetSpin() returns spin not 2*spin !!
55 Double_t d = 1.;//for fermions
56 if(Int_t(2*pDef->GetSpin())%2 == 0)//it gives 0 for Spin = 0,2,4,.. and it gives 1 for Spin = 1,3,7,
61 prefactor = (particleDegFactor*particleMass*particleMass*
62 fTemperature/kHbarc/kHbarc/kHbarc)/(2.*TMath::Pi()*TMath::Pi());
65 for(Int_t n = 1; n <= fNMax; n++) {
66 postfactor += pow(-d,n+1)/(n)*exp(n*particleChemPotential/fTemperature)*
67 HankelKn(2,n*particleMass/fTemperature);
69 return prefactor*postfactor;