1 //=======================================================================//
2 //Macro to draw the main results of the charge fluctuation analysis:
3 //=======================================================================//
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};
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+++++++++++++++++++++//
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,
31 gCentralityPercentileError,
32 gNuDynALICEDataError);
33 grALICEDataNudyn->SetMarkerStyle(20);
34 grALICEDataNudyn->SetMarkerColor(2);
36 TGraphErrors *grALICEDataNetCharge = new TGraphErrors(nCentralityBins,
37 gCentralityPercentile,
39 gCentralityPercentileError,
40 gNetChargeALICEDataError);
41 grALICEDataNetCharge->SetMarkerStyle(20);
42 grALICEDataNetCharge->SetMarkerColor(2);
44 TGraphErrors *grALICEDataNetChargeRms = new TGraphErrors(nCentralityBins,
45 gCentralityPercentile,
46 gNetChargeRmsALICEData,
47 gCentralityPercentileError,
48 gNetChargeRmsALICEDataError);
49 grALICEDataNetChargeRms->SetMarkerStyle(20);
50 grALICEDataNetChargeRms->SetMarkerColor(2);
52 //_____________________________________________________//
54 //_____________________________________________________//
55 TLatex *latex = new TLatex();
56 latex->SetTextSize(0.035);
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);
69 TF1 *f1 = new TF1("f1","0",0,1000);
70 f1->SetLineColor(1); f1->SetLineStyle(3); f1->SetLineWidth(2);
72 //============================================================//
74 TCanvas *c1 = new TCanvas("c1","Centrality dependence: nu_dyn",
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.}");
83 grALICEDataNudyn->Draw("P");
85 DrawMarker(47., 0.0043, 20, 1.6, 2);
86 latex->DrawLatex(52.,0.0035,"PbPb @ #sqrt{s_{NN}} = 2.76 TeV");
88 c1->SaveAs("centralityPercentileDependenceNuDyn.png");
90 //============================================================//
92 TCanvas *c2 = new TCanvas("c2","Centrality dependence: net charge",
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");
100 grALICEDataNetCharge->Draw("P");
102 DrawMarker(47., 8.3, 20, 1.6, 2);
103 latex->DrawLatex(52.,8.1,"PbPb @ #sqrt{s_{NN}} = 2.76 TeV");
105 c2->SaveAs("centralityPercentileDependenceNetCharge.png");
107 //============================================================//
109 TCanvas *c3 = new TCanvas("c3","Centrality dependence: net charge rms",
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}");
117 grALICEDataNetChargeRms->Draw("P");
119 DrawMarker(47., 38.3, 20, 1.6, 2);
120 latex->DrawLatex(52.,38.1,"PbPb @ #sqrt{s_{NN}} = 2.76 TeV");
122 c3->SaveAs("centralityPercentileDependenceNetChargeRms.png");
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};
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.,
142 Double_t netChargeRmsValues[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,
143 0.,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.,
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.};
155 TString inputFileName;
156 for(Int_t iRun = 0; iRun < nRuns; iRun++) {
158 Printf("Adding run %d",nRunNumbers[iRun]);
159 inputFileName = resultPath;
160 inputFileName += "/output."; inputFileName += nRunNumbers[iRun];
161 inputFileName += ".txt";
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;
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];
181 if(nEventsValues[iCentrality] != 0) {
184 netChargeValues[iCentrality] /= nEventsValues[iCentrality];
185 netChargeRmsValues[iCentrality] /= nEventsValues[iCentrality];
186 nuDynValues[iCentrality] /= nEventsValues[iCentrality];
189 netChargeValues[iCentrality] = 999.;
190 netChargeRmsValues[iCentrality] = 999.;
191 nuDynValues[iCentrality] = 999.;
194 gNetChargeALICEData[iCentrality] = netChargeValues[iCentrality];
195 gNetChargeRmsALICEData[iCentrality] = netChargeRmsValues[iCentrality];
196 gNuDynALICEData[iCentrality] = nuDynValues[iCentrality];
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);
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]);
218 outputAscii<<iCentrality+1<<" "<<gNuDynALICEData[iCentrality]<<" "<<gNuDynALICEDataError[iCentrality]<<" "<<gNetChargeALICEData[iCentrality]<<" "<<gNetChargeALICEDataError[iCentrality]<<" "<<gNetChargeRmsALICEData[iCentrality]<<" "<<gNetChargeRmsALICEDataError[iCentrality]<<endl;
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);