1 Double_t fs1(Double_t *x, Double_t* dum);
2 Double_t fs2(Double_t *x, Double_t* dum);
3 Double_t fs3(Double_t *x, Double_t* dum);
5 static Int_t n; // array size
6 static Double_t* as1; // dsigma/db
7 static Double_t* as2; // <N>(b)
8 static Double_t* ab; // b
9 // | PbPb | geom. | hard
10 // | 0 - 5 fm | 0 - 10 % | 0 - 42.8 %
11 // | 5 - 8.6 fm | 10 - 30 % | 42.8 - 83.5 %
12 // | 8.6 - 11.2 fm | 30 - 50 % | 83.5 - 96.8 %
13 // | 11.2 - 13.2 fm | 50 - 70 % | 96.8 - 99.6 %
14 // | 13.2 - 15.0 fm | 70 - 90 % | 99.6 - 99.9 %
15 // | 15.0 - oo fm | 90 -100 % | 99.9 - 100.0 %
19 const Float_t drift = 90;
21 // open file and get graph objects
22 TFile* file = new TFile("DsigmaDb.root", "read");
23 TGraph* gs1 = gAlice = (TGraph*)(file->Get("Graph;1"));
24 TGraph* gs2 = gAlice = (TGraph*)(file->Get("Graph;2"));
34 TF1* tf1 = new TF1("tf1", fs1, 0., ab[n-1], 0);
36 TF1* tf2 = new TF1("tf2", fs3, 0., ab[n-1], 0);
38 Float_t db = 20./100.;
39 for (Int_t i = 0; i< 100; i++)
41 Float_t bb = Float_t(i)*db;
42 Float_t s = tf1->Integral(0,bb);
43 Float_t sh = tf2->Integral(0,bb);
44 printf("\n %d %f %f %f %f" , i, bb, s, s/7.769*100., sh/4.327*100.);
48 // histogram for random distribution
49 TH1F* hs1 = new TH1F("hs1", "dSigma/db", n, 0,ab[n-1]);
52 TH1F* hmult = new TH1F("hmult", "Multiplicity", 100, 0, 10000);
53 TH1F* hmulte = new TH1F("hmulte", "Extra Multiplicity", 100, 0, 10000);
56 Double_t b, mult, dm, multe;
59 Double_t scale = 8000./as2[0];
60 Double_t dT = 125./2.;
62 for (Int_t i=0; i < 1000000; i++)
67 mult = scale*(Float_t) fs2(&b,par);
68 mult += gRandom->Gaus(0, TMath::Sqrt(mult));
70 hmult->Fill(Float_t(mult));
78 while(arg==0.) arg = gRandom->Rndm();
79 t1 -= dT*TMath::Log(arg); // (musec)
80 if (t1 > drift) break;
82 mult = scale*(Float_t) fs2(&b,par);
83 mult += gRandom->Gaus(0, TMath::Sqrt(mult));
84 // multe+=mult*(drift-t1)/drift;
90 while(arg==0.) arg = gRandom->Rndm();
91 t2 -= dT*TMath::Log(arg); // (musec)
92 if (t2 > drift) break;
94 mult = scale*(Float_t) fs2(&b,par);
95 mult += gRandom->Gaus(0, TMath::Sqrt(mult));
96 // multe+=mult*(drift-t2)/drift;
100 hmulte->Fill(Float_t(multe));
102 Double_t scale = 1./hmult->Integral();
103 hmult->Scale(scale/100.);
104 printf("\n scale %f \n ", scale);
107 TCanvas *c1 = new TCanvas("c1","Canvas 1",400,10,600,700);
115 TCanvas *c2 = new TCanvas("c2","Canvas 2",400,10,600,700);
119 tf1->GetHistogram()->SetXTitle("b (fm)");
120 tf1->GetHistogram()->SetYTitle("d#sigma /db (barn/fm)");
123 tf2->GetHistogram()->SetXTitle("b (fm)");
124 tf2->GetHistogram()->SetYTitle("d#sigma /db (a.u.)");
126 out = new TFile("mult.root", "recreate");
133 Double_t fs1(Double_t* x, Double_t* dum)
139 for (i=0; i<n; i++) {
142 y = as1[i-1]+(xx-ab[i-1])/(ab[i]-ab[i-1])*(as1[i]-as1[i-1]);
150 Double_t fs2(Double_t *x, Double_t* dum)
154 for (i=0; i<n; i++) {
156 Double_t y = as2[i-1]+(xx-ab[i-1])/(ab[i]-ab[i-1])*(as2[i]-as2[i-1]);
163 Double_t fs3(Double_t *x, Double_t* dum)
169 for (i=0; i<n; i++) {
171 y1 = as1[i-1]+(xx-ab[i-1])/(ab[i]-ab[i-1])*(as1[i]-as1[i-1]);
176 for (i=0; i<n; i++) {
178 Double_t y2 = as2[i-1]+(xx-ab[i-1])/(ab[i]-ab[i-1])*(as2[i]-as2[i-1]);