]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGCF/EBYE/Fluctuations/macro/drawCentralityDependence.C
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / PWGCF / EBYE / Fluctuations / macro / drawCentralityDependence.C
1 //=======================================================================//
2 //Macro to draw the main results of the charge fluctuation analysis:
3 //=======================================================================//
4
5 //+++++++++++++++++++++GLOBAL VARIABLES+++++++++++++++++++++//
6 const Int_t nCentralityBins = 20;
7 //Double_t gCentralityPercentile[nCentralityBins] = {2.5,7.5,12.5,17.5,22.5,27.5,32.5,37.5,42.5,47.5,52.5,57.5,62.5,67.5,72.5,77.5,82.5,87.5,92.5,97.5};
8 //Double_t gCentralityPercentileError[nCentralityBins] = {0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5};
9 Double_t gCentralityPercentile[nCentralityBins] = {5.,15.,25.,35.,45.,55.,65.,75.,85.,95.};
10 Double_t gCentralityPercentileError[nCentralityBins] = {0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5};
11
12 //================================ALICE================================//
13 Double_t gNuDynALICEData[nCentralityBins] = {10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.};
14 Double_t gNuDynALICEDataError[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
15 Double_t gNetChargeALICEData[nCentralityBins] = {10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.};
16 Double_t gNetChargeALICEDataError[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
17 Double_t gNetChargeRmsALICEData[nCentralityBins] = {10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.};
18 Double_t gNetChargeRmsALICEDataError[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
19 //================================ALICE================================//
20 //+++++++++++++++++++++END OF VARIABLES+++++++++++++++++++++//
21
22 //_____________________________________________________//
23 void drawCentralityDependence(const char*resultPath = "../LHC10h/Pass1_4Plus/20CentralityBins/") {
24   //Draws the nu_dyn vs centrality percentile
25   SetDataPoints(resultPath);
26   //================================================//
27   //ALICE PbPb @ 2.76 TeV
28   TGraphErrors *grALICEDataNudyn = new TGraphErrors(nCentralityBins,
29                                                     gCentralityPercentile,
30                                                     gNuDynALICEData,
31                                                     gCentralityPercentileError,
32                                                     gNuDynALICEDataError);
33   grALICEDataNudyn->SetMarkerStyle(20);
34   grALICEDataNudyn->SetMarkerColor(2);
35
36   TGraphErrors *grALICEDataNetCharge = new TGraphErrors(nCentralityBins,
37                                                         gCentralityPercentile,
38                                                         gNetChargeALICEData,
39                                                         gCentralityPercentileError,
40                                                         gNetChargeALICEDataError);
41   grALICEDataNetCharge->SetMarkerStyle(20);
42   grALICEDataNetCharge->SetMarkerColor(2);
43
44   TGraphErrors *grALICEDataNetChargeRms = new TGraphErrors(nCentralityBins,
45                                                            gCentralityPercentile,
46                                                            gNetChargeRmsALICEData,
47                                                            gCentralityPercentileError,
48                                                            gNetChargeRmsALICEDataError);
49   grALICEDataNetChargeRms->SetMarkerStyle(20);
50   grALICEDataNetChargeRms->SetMarkerColor(2);
51   
52   //_____________________________________________________//
53   //Draw the results
54   //_____________________________________________________//
55   TLatex *latex = new TLatex();
56   latex->SetTextSize(0.035);
57
58   //====================================//
59   //Results vs centrality
60   TH2F *gEmpty1 = new TH2F("gEmpty1",
61                            ";Centrality percentile;",
62                            nCentralityBins,0,100,10000,-0.1,50.);
63   gEmpty1->SetStats(kFALSE);
64   gEmpty1->GetYaxis()->SetTitleOffset(1.5);
65   gEmpty1->GetXaxis()->SetTitleOffset(1.5);
66   gEmpty1->GetYaxis()->SetNdivisions(10);
67   gEmpty1->GetXaxis()->SetNdivisions(10);
68
69   TF1 *f1 = new TF1("f1","0",0,1000);
70   f1->SetLineColor(1); f1->SetLineStyle(3); f1->SetLineWidth(2);
71
72   //============================================================//
73   //nu_{dyn.}
74   TCanvas *c1 = new TCanvas("c1","Centrality dependence: nu_dyn",
75                             0,0,500,500);
76   c1->SetFillColor(10); c1->SetHighLightColor(10);
77   c1->SetLeftMargin(0.15); c1->SetBottomMargin(0.15);
78   c1->SetGridx(); c1->SetGridy();
79   gEmpty1->GetYaxis()->SetRangeUser(-0.08,0.01);
80   gEmpty1->GetYaxis()->SetTitle("#nu_{dyn.}");
81   gEmpty1->DrawCopy();
82   f1->Draw("same");
83   grALICEDataNudyn->Draw("P");
84
85   DrawMarker(47., 0.0043, 20, 1.6, 2);
86   latex->DrawLatex(52.,0.0035,"PbPb @ #sqrt{s_{NN}} = 2.76 TeV");
87
88   c1->SaveAs("centralityPercentileDependenceNuDyn.png");
89
90   //============================================================//
91   //net charge
92   TCanvas *c2 = new TCanvas("c2","Centrality dependence: net charge",
93                             100,100,500,500);
94   c2->SetFillColor(10); c2->SetHighLightColor(10);
95   c2->SetLeftMargin(0.15); c2->SetBottomMargin(0.15);
96   c2->SetGridx(); c2->SetGridy();
97   gEmpty1->GetYaxis()->SetRangeUser(0.0,10.0);
98   gEmpty1->GetYaxis()->SetTitle("#LT #Delta Q = N_{+} - N_{-}#GT");
99   gEmpty1->DrawCopy();
100   grALICEDataNetCharge->Draw("P");
101
102   DrawMarker(47., 8.3, 20, 1.6, 2);
103   latex->DrawLatex(52.,8.1,"PbPb @ #sqrt{s_{NN}} = 2.76 TeV");
104
105   c2->SaveAs("centralityPercentileDependenceNetCharge.png");
106
107   //============================================================//
108   //rms net charge
109   TCanvas *c3 = new TCanvas("c3","Centrality dependence: net charge rms",
110                             200,200,500,500);
111   c3->SetFillColor(10); c3->SetHighLightColor(10);
112   c3->SetLeftMargin(0.15); c3->SetBottomMargin(0.15);
113   c3->SetGridx(); c3->SetGridy();
114   gEmpty1->GetYaxis()->SetRangeUser(0.0,40.0);
115   gEmpty1->GetYaxis()->SetTitle("#sigma_{#Delta Q}");
116   gEmpty1->DrawCopy();
117   grALICEDataNetChargeRms->Draw("P");
118
119   DrawMarker(47., 38.3, 20, 1.6, 2);
120   latex->DrawLatex(52.,38.1,"PbPb @ #sqrt{s_{NN}} = 2.76 TeV");
121
122   c3->SaveAs("centralityPercentileDependenceNetChargeRms.png");
123 }
124
125 //_______________________________________________________________//
126 void SetDataPoints(const char* resultPath) {
127   //Calculate the mean and the statistical error of the data points
128   const Int_t nRuns = 7;
129   Double_t nuDyn[nRuns][nCentralityBins];
130   Double_t gNetCharge[nRuns][nCentralityBins];
131   Double_t gNetChargeRms[nRuns][nCentralityBins];
132   Double_t nuDyn[nRuns][nCentralityBins];
133   Int_t nEvents[nRuns][nCentralityBins];
134   Int_t nRunNumbers[nRuns] = {137161,137431,137549,
135                               137595,137638,137639,137693};
136   Int_t gCentrality;
137   Double_t netChargeValues[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,
138                                            0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
139   Double_t netChargeValuesError[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,
140                                                     0.,0.,0.,0.,0.,0.,0.,0.,
141                                                     0.,0.,0.,0.};
142   Double_t netChargeRmsValues[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,
143                                                   0.,0.,0.,0.,0.,0.,0.,
144                                                   0.,0.,0.,0.,0.,0.};
145   Double_t netChargeRmsValuesError[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,
146                                                        0.,0.,0.,0.,0.,0.,0.,0.,
147                                                     0.,0.,0.,0.};
148   Double_t nuDynValues[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,
149                                            0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
150   Double_t nuDynValuesError[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,
151                                                 0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
152   Double_t nEventsValues[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,
153                                              0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
154
155   TString inputFileName;
156   for(Int_t iRun = 0; iRun < nRuns; iRun++) {
157     ifstream inputAscii;
158     Printf("Adding run %d",nRunNumbers[iRun]);
159     inputFileName = resultPath;
160     inputFileName += "/output."; inputFileName += nRunNumbers[iRun];
161     inputFileName += ".txt";
162
163     //Printf("Filename: %s",inputFileName.Data());
164     inputAscii.open(inputFileName.Data());
165     for(Int_t iCentrality = 0; iCentrality < nCentralityBins; iCentrality++) {
166       inputAscii>>gCentrality>>nuDyn[iRun][iCentrality]>>gNetCharge[iRun][iCentrality]>>gNetChargeRms[iRun][iCentrality]>>nEvents[iRun][iCentrality];
167       //cout<<nuDyn[iRun][iCentrality]<<" "<<nEvents[iRun][iCentrality]<<endl;
168     }
169     inputAscii.close();
170   }
171
172   Int_t nRunCounter = 0;
173   for(Int_t iCentrality = 0; iCentrality < nCentralityBins; iCentrality++) {
174     for(Int_t iRun = 0; iRun < nRuns; iRun++) {
175       nuDynValues[iCentrality] += nuDyn[iRun][iCentrality]*nEvents[iRun][iCentrality];
176       netChargeValues[iCentrality] += gNetCharge[iRun][iCentrality]*nEvents[iRun][iCentrality];
177       netChargeRmsValues[iCentrality] += gNetChargeRms[iRun][iCentrality]*nEvents[iRun][iCentrality];
178       nEventsValues[iCentrality] += nEvents[iRun][iCentrality];
179     }
180
181     if(nEventsValues[iCentrality] != 0) {
182       nRunCounter += 1;
183
184       netChargeValues[iCentrality] /= nEventsValues[iCentrality];
185       netChargeRmsValues[iCentrality] /= nEventsValues[iCentrality];
186       nuDynValues[iCentrality] /= nEventsValues[iCentrality];
187     }
188     else {
189       netChargeValues[iCentrality] = 999.;
190       netChargeRmsValues[iCentrality] = 999.;
191       nuDynValues[iCentrality] = 999.;
192     }
193
194     gNetChargeALICEData[iCentrality] = netChargeValues[iCentrality];
195     gNetChargeRmsALICEData[iCentrality] = netChargeRmsValues[iCentrality];
196     gNuDynALICEData[iCentrality] = nuDynValues[iCentrality];
197   }
198
199   ofstream outputAscii;
200   outputAscii.open("output.txt");
201   for(Int_t iCentrality = 0; iCentrality < nCentralityBins; iCentrality++) {
202     for(Int_t iRun = 0; iRun < nRuns; iRun++) {
203       netChargeValuesError[iCentrality] += TMath::Power((netChargeValues[iCentrality]-gNetCharge[iRun][iCentrality]),2);
204       netChargeRmsValuesError[iCentrality] += TMath::Power((netChargeRmsValues[iCentrality]-gNetChargeRms[iRun][iCentrality]),2);
205       nuDynValuesError[iCentrality] += TMath::Power((nuDynValues[iCentrality]-nuDyn[iRun][iCentrality]),2);
206     }
207     gNetChargeALICEDataError[iCentrality] = TMath::Sqrt(netChargeValuesError[iCentrality]/(nRunCounter*(nRunCounter-1)));
208     gNetChargeRmsALICEDataError[iCentrality] = TMath::Sqrt(netChargeRmsValuesError[iCentrality]/(nRunCounter*(nRunCounter-1)));
209     gNuDynALICEDataError[iCentrality] = TMath::Sqrt(nuDynValuesError[iCentrality]/(nRunCounter*(nRunCounter-1)));
210     Printf("Centrality: %d - nu_dyn: %lf +- %lf - Net charge: %lf +- %lf - RMS: %lf - %lf",iCentrality+1,
211            gNuDynALICEData[iCentrality],
212            gNuDynALICEDataError[iCentrality],
213            gNetChargeALICEData[iCentrality],
214            gNetChargeALICEDataError[iCentrality],
215            gNetChargeRmsALICEData[iCentrality],
216            gNetChargeRmsALICEDataError[iCentrality]);
217
218     outputAscii<<iCentrality+1<<" "<<gNuDynALICEData[iCentrality]<<" "<<gNuDynALICEDataError[iCentrality]<<" "<<gNetChargeALICEData[iCentrality]<<" "<<gNetChargeALICEDataError[iCentrality]<<" "<<gNetChargeRmsALICEData[iCentrality]<<" "<<gNetChargeRmsALICEDataError[iCentrality]<<endl;
219   }
220   outputAscii.close();
221
222 }
223
224
225 //_______________________________________________________________//
226 void DrawMarker(Double_t x, Double_t y, Int_t style, 
227                 Double_t size, Int_t color) {
228   TMarker *m = new TMarker(x,y,style);
229   m->SetMarkerSize(size);
230   m->SetMarkerColor(color);
231   m->Draw();
232 }