ClassImp(AliFastGlauber)
-TF1* AliFastGlauber::fWSb = NULL;
-TF2* AliFastGlauber::fWSbz = NULL;
-TF1* AliFastGlauber::fWSz = NULL;
-TF1* AliFastGlauber::fWSta = NULL;
-TF2* AliFastGlauber::fWStarfi = NULL;
-TF2* AliFastGlauber::fWAlmond = NULL;
-TF1* AliFastGlauber::fWStaa = NULL;
-TF1* AliFastGlauber::fWSgeo = NULL;
-TF1* AliFastGlauber::fWSbinary = NULL;
-TF1* AliFastGlauber::fWSN = NULL;
-TF1* AliFastGlauber::fWPathLength0 = NULL;
-TF1* AliFastGlauber::fWPathLength = NULL;
-TF1* AliFastGlauber::fWIntRadius = NULL;
-Float_t AliFastGlauber::fbMax = 0.;
+TF1* AliFastGlauber::fWSb = NULL;
+TF2* AliFastGlauber::fWSbz = NULL;
+TF1* AliFastGlauber::fWSz = NULL;
+TF1* AliFastGlauber::fWSta = NULL;
+TF2* AliFastGlauber::fWStarfi = NULL;
+TF2* AliFastGlauber::fWAlmond = NULL;
+TF1* AliFastGlauber::fWStaa = NULL;
+TF1* AliFastGlauber::fWSgeo = NULL;
+TF1* AliFastGlauber::fWSbinary = NULL;
+TF1* AliFastGlauber::fWSN = NULL;
+TF1* AliFastGlauber::fWPathLength0 = NULL;
+TF1* AliFastGlauber::fWPathLength = NULL;
+TF1* AliFastGlauber::fWEnergyDensity = NULL;
+TF1* AliFastGlauber::fWIntRadius = NULL;
+Float_t AliFastGlauber::fbMax = 0.;
AliFastGlauber::AliFastGlauber()
{
fWPathLength->SetParameter(1, 1000.);
fWIntRadius = new TF1("WIntRadius", WIntRadius, 0., fbMax, 1);
- fWIntRadius->SetParameter(0, 0.);
+ fWIntRadius->SetParameter(0, 0.);
+
+
//
// Overlap
//
fWStaa = (TF1*) f->Get("WStaa");
}
+//
+ fWEnergyDensity = new TF1("WEnergyDensity", WEnergyDensity, 0., 2. * fWSr0, 1);
+ fWEnergyDensity->SetParameter(0, fWSr0 + 1.);
+
//
// Geometrical Cross-Section
//
void AliFastGlauber::DrawAlmond(Double_t b)
{
//
-// Draw Kernel
+// Draw Interaction Almond
//
TCanvas *c7 = new TCanvas("c7","Almond",400,10,600,700);
c7->cd();
void AliFastGlauber::DrawPathLength0(Double_t b)
{
//
-// Draw Kernel
+// Draw Path Length
//
TCanvas *c8 = new TCanvas("c8","Path Length",400,10,600,700);
c8->cd();
void AliFastGlauber::DrawPathLength(Double_t b , Int_t ni)
{
//
-// Draw Kernel
+// Draw Path Length
//
TCanvas *c9 = new TCanvas("c9","Path Length",400,10,600,700);
c9->cd();
void AliFastGlauber::DrawIntRadius(Double_t b)
{
//
-// Draw Kernel
+// Draw Interaction Radius
//
TCanvas *c10 = new TCanvas("c10","Interaction Radius",400,10,600,700);
c10->cd();
fWIntRadius->Draw();
}
+void AliFastGlauber::DrawEnergyDensity()
+{
+//
+// Draw energy density
+//
+ TCanvas *c11 = new TCanvas("c11","Energy Density",400, 10, 600, 700);
+ c11->cd();
+ fWEnergyDensity->SetMinimum(0.);
+ fWEnergyDensity->Draw();
+}
+
Double_t AliFastGlauber::WSb(Double_t* x, Double_t* par)
{
//
Double_t n = par[3];
Double_t y = n * (1.+w*(xx/r0)*(xx/r0))/(1.+TMath::Exp((xx-r0)/d));
+
return y;
}
Double_t n = par[3];
Double_t xx = TMath::Sqrt(bb*bb+zz*zz);
Double_t y = n * (1.+w*(xx/r0)*(xx/r0))/(1.+TMath::Exp((xx-r0)/d));
+
return y;
}
Double_t n = par[3];
Double_t xx = TMath::Sqrt(bb*bb+zz*zz);
Double_t y = n * (1.+w*(xx/r0)*(xx/r0))/(1.+TMath::Exp((xx-r0)/d));
-// if (y < 1.e-6) y = 0;
+
return y;
}
return y;
}
+Double_t AliFastGlauber::WEnergyDensity(Double_t* x, Double_t* par)
+{
+//
+// Initial energy density as a function of the impact parameter
+//
+ Double_t b = x[0];
+ Double_t rA = par[0];
+
+ Double_t saa = (TMath::Pi() - 2. * TMath::ASin(b/ 2./ rA)) * rA * rA - b * TMath::Sqrt(rA * rA - b * b/ 4.);
+ Double_t taa = fWStaa->Eval(b);
+
+ return (taa/saa);
+}
+
void AliFastGlauber::SimulateTrigger(Int_t n)
{
//
void SetMaxImpact(Float_t bmax = 20.) {fbMax = bmax;};
void SetHardCrossSection(Float_t xs = 6.6) {fSigmaHard = xs;}
- static Double_t WSb (Double_t *xx, Double_t *par);
- static Double_t WSbz (Double_t *xx, Double_t *par);
- static Double_t WSz (Double_t *xx, Double_t *par);
- static Double_t WSta (Double_t *xx, Double_t *par);
- static Double_t WStarfi (Double_t *xx, Double_t *par);
- static Double_t WStaa (Double_t *xx, Double_t *par);
- static Double_t WSgeo (Double_t *xx, Double_t *par);
- static Double_t WSbinary (Double_t *xx, Double_t *par);
- static Double_t WSN (Double_t *xx, Double_t *par);
- static Double_t WAlmond (Double_t *xx, Double_t *par);
- static Double_t WPathLength0 (Double_t *xx, Double_t *par);
- static Double_t WPathLength (Double_t *xx, Double_t *par);
- static Double_t WIntRadius (Double_t *xx, Double_t *par);
+ static Double_t WSb (Double_t *xx, Double_t *par);
+ static Double_t WSbz (Double_t *xx, Double_t *par);
+ static Double_t WSz (Double_t *xx, Double_t *par);
+ static Double_t WSta (Double_t *xx, Double_t *par);
+ static Double_t WStarfi (Double_t *xx, Double_t *par);
+ static Double_t WStaa (Double_t *xx, Double_t *par);
+ static Double_t WSgeo (Double_t *xx, Double_t *par);
+ static Double_t WSbinary (Double_t *xx, Double_t *par);
+ static Double_t WSN (Double_t *xx, Double_t *par);
+ static Double_t WAlmond (Double_t *xx, Double_t *par);
+ static Double_t WPathLength0 (Double_t *xx, Double_t *par);
+ static Double_t WPathLength (Double_t *xx, Double_t *par);
+ static Double_t WIntRadius (Double_t *xx, Double_t *par);
+ static Double_t WEnergyDensity (Double_t *xx, Double_t *par);
void Init(Int_t mode = 0);
void DrawWSb();
void DrawGeo();
void DrawBinary();
void DrawN();
- void DrawKernel(Double_t b);
- void DrawAlmond(Double_t b);
- void DrawPathLength0(Double_t b);
+ void DrawKernel(Double_t b = 0.);
+ void DrawAlmond(Double_t b = 0.);
+ void DrawPathLength0(Double_t b = 0.);
void DrawPathLength(Double_t b, Int_t ni = 1000);
- void DrawIntRadius(Double_t b);
+ void DrawIntRadius(Double_t b = 0.);
+ void DrawEnergyDensity();
Double_t CrossSection(Double_t b1, Double_t b2);
Double_t FractionOfHardCrossSection(Double_t b1, Double_t b2);
void GetRandom(Int_t& bin, Bool_t& hard);
Float_t GetRandomImpactParameter(Float_t bmin, Float_t bmax);
protected:
- static TF1* fWSb; // Wood-Saxon Function (b)
- static TF2* fWSbz; // Wood-Saxon Function (b, z)
- static TF1* fWSz; // Wood-Saxon Function (b = b0, z)
- static TF1* fWSta; // Thickness Function
- static TF2* fWStarfi; // Kernel for Overlap Function
- static TF1* fWStaa; // Overlap Function
- static TF2* fWAlmond; // Interaction Almond
- static TF1* fWPathLength0;// Path Length as a function of phi
- static TF1* fWPathLength; // Path Length as a function of phi
- static TF1* fWIntRadius; // Interaction Radius
- static TF1* fWSgeo; // dSigma/db geometric
- static TF1* fWSbinary; // dSigma/db binary
- static TF1* fWSN; // dN/db binary
+ static TF1* fWSb; // Wood-Saxon Function (b)
+ static TF2* fWSbz; // Wood-Saxon Function (b, z)
+ static TF1* fWSz; // Wood-Saxon Function (b = b0, z)
+ static TF1* fWSta; // Thickness Function
+ static TF2* fWStarfi; // Kernel for Overlap Function
+ static TF1* fWStaa; // Overlap Function
+ static TF2* fWAlmond; // Interaction Almond
+ static TF1* fWPathLength0; // Path Length as a function of phi
+ static TF1* fWPathLength; // Path Length as a function of phi
+ static TF1* fWIntRadius; // Interaction Radius
+ static TF1* fWSgeo; // dSigma/db geometric
+ static TF1* fWSbinary; // dSigma/db binary
+ static TF1* fWSN; // dN/db binary
+ static TF1* fWEnergyDensity; // Energy density as a function of impact parameter
- Float_t fWSr0; // Wood-Saxon Parameter r0
- Float_t fWSd; // Wood-Saxon Parameter d
- Float_t fWSw; // Wood-Saxon Parameter w
- Float_t fWSn; // Wood-Saxon Parameter n
- Float_t fSigmaHard; // Hard Cross Section
+ Float_t fWSr0; // Wood-Saxon Parameter r0
+ Float_t fWSd; // Wood-Saxon Parameter d
+ Float_t fWSw; // Wood-Saxon Parameter w
+ Float_t fWSn; // Wood-Saxon Parameter n
+ Float_t fSigmaHard; // Hard Cross Section
static Float_t fbMax; // Maximum Impact Parameter
ClassDef(AliFastGlauber,1) // Event geometry simulation in the Glauber Model