]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TUHKMgen/UHKM/StrangeDensity.cxx
Do not include from subdirectories
[u/mrichter/AliRoot.git] / TUHKMgen / UHKM / StrangeDensity.cxx
1 //
2 //        Nikolai Amelin, Ludmila Malinina, Timur Pocheptsov (C) JINR/Dubna
3 //      amelin@sunhe.jinr.ru, malinina@sunhe.jinr.ru, pocheptsov@sunhe.jinr.ru
4 //                           November. 2, 2005
5 //
6 //
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
9
10 #include <TMath.h>
11 #include "StrangeDensity.h"
12 #include "DatabasePDG.h"
13 #include "ParticlePDG.h"
14 #include "UKUtility.h"
15
16 //__________________________________________________________
17 StrangeDensity::StrangeDensity():
18   fTemperature(0.*kGeV),
19   fBaryonPotential(0.*kGeV),
20   fStrangePotential(0.*kGeV),
21   fNMax(5)
22 {
23   //
24   // constructor
25   //
26 }
27
28 //__________________________________________________________
29 Double_t StrangeDensity::StrangenessDensity(const DatabasePDG* database) {
30   //
31   // compute hadron system strangeness density
32   //
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();
38   }
39   return meanStrangenessDensity;
40 }
41
42 //__________________________________________________________
43 Double_t StrangeDensity::ParticleNumberDensity(ParticlePDG* pDef) {
44   //
45   // compute hadron number density
46   //
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,
57     d = -1; //for bosons
58
59   Double_t prefactor;
60   Double_t postfactor;
61   prefactor = (particleDegFactor*particleMass*particleMass*
62                fTemperature/kHbarc/kHbarc/kHbarc)/(2.*TMath::Pi()*TMath::Pi());  
63   postfactor = 0.;
64  
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);
68   }
69   return prefactor*postfactor;
70 }
71