]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/EBYE/Fluctuations/macro/drawScaledNpartDependence.C
CMakeLists.txt are generated for the moment
[u/mrichter/AliRoot.git] / PWG2 / EBYE / Fluctuations / macro / drawScaledNpartDependence.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
8 Double_t gNParticipants[nCentralityBins] = {382.646,329.213,280.911,238.617,201.81,169.339,141.067,116.208,94.2515,75.4558,59.4054,45.7565,34.4839,25.3127,18.0293,12.6535,8.84139,6.16348,4.37454,3.06182};
9 Double_t gNParticipantsError[nCentralityBins] = {16.9428,18.0505,17.0971,16.2076,15.5418,14.9458,14.3174,13.9067,13.2661,12.6134,11.8133,11.0495,10.0939,8.99737,7.7884,6.48725,5.21602,3.91988,2.78741,1.75066};
10 //Double_t gNParticipants[nCentralityBins] = {356.132,260.175,185.76,128.428,84.5666,52.3432,29.7072,15.2207,7.47192,3.71973};//10 bins
11 //Double_t gNParticipantsError[nCentralityBins] = {31.8228,26.9093,22.3767,18.8802,15.9735,13.3103,10.5806,7.62745,4.78538,2.41942};//10 bins
12
13 //================================ALICE================================//
14 Double_t gNuDynALICEData[nCentralityBins] = {10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.};
15 Double_t gNuDynALICEDataError[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
16 Double_t gNetChargeALICEData[nCentralityBins] = {10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.};
17 Double_t gNetChargeALICEDataError[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
18 Double_t gNetChargeRmsALICEData[nCentralityBins] = {10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.};
19 Double_t gNetChargeRmsALICEDataError[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
20 //================================ALICE================================//
21 //+++++++++++++++++++++END OF VARIABLES+++++++++++++++++++++//
22
23 //_____________________________________________________//
24 void drawScaledNpartDependence(const char*resultPath = "../LHC10h/Pass1_4Plus/20CentralityBins/") {
25   //Draws the nu_dyn vs centrality percentile
26   SetDataPoints(resultPath);
27   //================================================//
28   //ALICE PbPb @ 2.76 TeV
29   TGraphErrors *grALICEDataNudyn = new TGraphErrors(nCentralityBins,
30                                                     gNParticipants,
31                                                     gNuDynALICEData,
32                                                     gNParticipantsError,
33                                                     gNuDynALICEDataError);
34   grALICEDataNudyn->SetMarkerStyle(20);
35   grALICEDataNudyn->SetMarkerColor(2);
36
37   TGraphErrors *grALICEDataNetCharge = new TGraphErrors(nCentralityBins,
38                                                         gNParticipants,
39                                                         gNetChargeALICEData,
40                                                         gNParticipantsError,
41                                                         gNetChargeALICEDataError);
42   grALICEDataNetCharge->SetMarkerStyle(20);
43   grALICEDataNetCharge->SetMarkerColor(2);
44
45   TGraphErrors *grALICEDataNetChargeRms = new TGraphErrors(nCentralityBins,
46                                                            gNParticipants,
47                                                            gNetChargeRmsALICEData,
48                                                            gNParticipantsError,
49                                                            gNetChargeRmsALICEDataError);
50   grALICEDataNetChargeRms->SetMarkerStyle(20);
51   grALICEDataNetChargeRms->SetMarkerColor(2);
52   
53   //_____________________________________________________//
54   //Draw the results
55   //_____________________________________________________//
56   TLatex *latex = new TLatex();
57   latex->SetTextSize(0.035);
58
59   //====================================//
60   //Results vs centrality
61   TH2F *gEmpty1 = new TH2F("gEmpty1",
62                            ";N_{part.};",
63                            100,0,400,10000,-2.,1.);
64   gEmpty1->SetStats(kFALSE);
65   gEmpty1->GetYaxis()->SetTitleOffset(1.5);
66   gEmpty1->GetXaxis()->SetTitleOffset(1.5);
67   gEmpty1->GetYaxis()->SetNdivisions(10);
68   gEmpty1->GetXaxis()->SetNdivisions(10);
69
70   TF1 *f1 = new TF1("f1","0",0,1000);
71   f1->SetLineColor(1); f1->SetLineStyle(3); f1->SetLineWidth(2);
72
73   //============================================================//
74   //nu_{dyn.}
75   TCanvas *c1 = new TCanvas("c1","Centrality dependence: nu_dyn",
76                             0,0,500,500);
77   c1->SetFillColor(10); c1->SetHighLightColor(10);
78   c1->SetLeftMargin(0.15); c1->SetBottomMargin(0.15);
79   c1->SetGridx(); c1->SetGridy();
80   gEmpty1->GetYaxis()->SetRangeUser(-2.,0.0);
81   gEmpty1->GetYaxis()->SetTitle("#nu_{dyn.} #times N_{part.}");
82   gEmpty1->DrawCopy();
83   f1->Draw("same");
84   grALICEDataNudyn->Draw("P");
85
86   DrawMarker(40., 0.0043, 20, 1.6, 2);
87   latex->DrawLatex(50.,0.0033,"PbPb @ #sqrt{s_{NN}} = 2.76 TeV");
88
89   c1->SaveAs("scaledNparticipantsDependenceNuDyn.png");
90
91   //============================================================//
92   //net charge
93   TCanvas *c2 = new TCanvas("c2","Centrality dependence: net charge",
94                             100,100,500,500);
95   c2->SetFillColor(10); c2->SetHighLightColor(10);
96   c2->SetLeftMargin(0.15); c2->SetBottomMargin(0.15);
97   c2->SetGridx(); c2->SetGridy();
98   gEmpty1->GetYaxis()->SetRangeUser(0.0,0.05);
99   gEmpty1->GetYaxis()->SetTitle("#LT #Delta Q = N_{+} - N_{-}#GT/N_{part.}");
100   gEmpty1->DrawCopy();
101   grALICEDataNetCharge->Draw("P");
102
103   DrawMarker(40., 8.3, 20, 1.6, 2);
104   latex->DrawLatex(50.,8.1,"PbPb @ #sqrt{s_{NN}} = 2.76 TeV");
105
106   c2->SaveAs("scaledNparticipantsDependenceNetCharge.png");
107
108   //============================================================//
109   //rms net charge
110   TCanvas *c3 = new TCanvas("c3","Centrality dependence: net charge rms",
111                             200,200,500,500);
112   c3->SetFillColor(10); c3->SetHighLightColor(10);
113   c3->SetLeftMargin(0.15); c3->SetBottomMargin(0.15);
114   c3->SetGridx(); c3->SetGridy();
115   gEmpty1->GetYaxis()->SetRangeUser(0.0,0.6);
116   gEmpty1->GetYaxis()->SetTitle("#sigma_{#Delta Q}/N_{part.}");
117   gEmpty1->DrawCopy();
118   grALICEDataNetChargeRms->Draw("P");
119
120   DrawMarker(40., 38., 20, 1.6, 2);
121   latex->DrawLatex(50.,37.,"PbPb @ #sqrt{s_{NN}} = 2.76 TeV");
122
123   c3->SaveAs("scaledNparticipantsDependenceNetChargeRms.png");
124 }
125
126 //_______________________________________________________________//
127 void SetDataPoints(const char* resultPath) {
128   //Calculate the mean and the statistical error of the data points
129   const Int_t nRuns = 7;
130   Double_t nuDyn[nRuns][nCentralityBins];
131   Double_t gNetCharge[nRuns][nCentralityBins];
132   Double_t gNetChargeRms[nRuns][nCentralityBins];
133   Double_t nuDyn[nRuns][nCentralityBins];
134   Int_t nEvents[nRuns][nCentralityBins];
135   Int_t nRunNumbers[nRuns] = {137161,137431,137549,
136                               137595,137638,137639,137693};
137   Int_t gCentrality;
138   Double_t netChargeValues[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,
139                                            0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
140   Double_t netChargeValuesError[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,
141                                                     0.,0.,0.,0.,0.,0.,0.,0.,
142                                                     0.,0.,0.,0.};
143   Double_t netChargeRmsValues[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,
144                                                   0.,0.,0.,0.,0.,0.,0.,
145                                                   0.,0.,0.,0.,0.,0.};
146   Double_t netChargeRmsValuesError[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,
147                                                        0.,0.,0.,0.,0.,0.,0.,0.,
148                                                     0.,0.,0.,0.};
149   Double_t nuDynValues[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,
150                                            0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
151   Double_t nuDynValuesError[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,
152                                                 0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
153   Double_t nEventsValues[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,
154                                              0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
155
156   TString inputFileName;
157   for(Int_t iRun = 0; iRun < nRuns; iRun++) {
158     ifstream inputAscii;
159     Printf("Adding run %d",nRunNumbers[iRun]);
160     inputFileName = resultPath;
161     inputFileName += "/output."; inputFileName += nRunNumbers[iRun];
162     inputFileName += ".txt";
163
164     Printf("Filename: %s",inputFileName.Data());
165     inputAscii.open(inputFileName.Data());
166     for(Int_t iCentrality = 0; iCentrality < nCentralityBins; iCentrality++) {
167       inputAscii>>gCentrality>>nuDyn[iRun][iCentrality]>>gNetCharge[iRun][iCentrality]>>gNetChargeRms[iRun][iCentrality]>>nEvents[iRun][iCentrality];
168       cout<<nuDyn[iRun][iCentrality]<<" "<<nEvents[iRun][iCentrality]<<endl;
169     }
170     inputAscii.close();
171   }
172
173   Int_t nRunCounter = 0;
174   for(Int_t iCentrality = 0; iCentrality < nCentralityBins; iCentrality++) {
175     for(Int_t iRun = 0; iRun < nRuns; iRun++) {
176       nuDynValues[iCentrality] += nuDyn[iRun][iCentrality]*nEvents[iRun][iCentrality];
177       netChargeValues[iCentrality] += gNetCharge[iRun][iCentrality]*nEvents[iRun][iCentrality];
178       netChargeRmsValues[iCentrality] += gNetChargeRms[iRun][iCentrality]*nEvents[iRun][iCentrality];
179       nEventsValues[iCentrality] += nEvents[iRun][iCentrality];
180     }
181
182     if(nEventsValues[iCentrality] != 0) {
183       nRunCounter += 1;
184
185       netChargeValues[iCentrality] /= nEventsValues[iCentrality];
186       netChargeRmsValues[iCentrality] /= nEventsValues[iCentrality];
187       nuDynValues[iCentrality] /= nEventsValues[iCentrality];
188     }
189     else {
190       netChargeValues[iCentrality] = 999.;
191       netChargeRmsValues[iCentrality] = 999.;
192       nuDynValues[iCentrality] = 999.;
193     }
194
195     gNetChargeALICEData[iCentrality] = netChargeValues[iCentrality]/gNParticipants[iCentrality];
196     gNetChargeRmsALICEData[iCentrality] = netChargeRmsValues[iCentrality]/gNParticipants[iCentrality];;
197     gNuDynALICEData[iCentrality] = nuDynValues[iCentrality]*gNParticipants[iCentrality];
198   }
199
200   for(Int_t iCentrality = 0; iCentrality < nCentralityBins; iCentrality++) {
201     for(Int_t iRun = 0; iRun < nRuns; iRun++) {
202       netChargeValuesError[iCentrality] += TMath::Power((netChargeValues[iCentrality]-gNetCharge[iRun][iCentrality]),2);
203       netChargeRmsValuesError[iCentrality] += TMath::Power((netChargeRmsValues[iCentrality]-gNetChargeRms[iRun][iCentrality]),2);
204       nuDynValuesError[iCentrality] += TMath::Power((nuDynValues[iCentrality]-nuDyn[iRun][iCentrality]),2);
205     }
206     gNetChargeALICEDataError[iCentrality] = TMath::Sqrt(netChargeValuesError[iCentrality]/(nRunCounter*(nRunCounter-1)))/gNParticipants[iCentrality];
207     gNetChargeRmsALICEDataError[iCentrality] = TMath::Sqrt(netChargeRmsValuesError[iCentrality]/(nRunCounter*(nRunCounter-1)))/gNParticipants[iCentrality];
208     gNuDynALICEDataError[iCentrality] = TMath::Sqrt(nuDynValuesError[iCentrality]/(nRunCounter*(nRunCounter-1)));
209     Printf("Centrality: %d - nu_dyn: %lf +- %lf - Net charge: %lf +- %lf - RMS: %lf - %lf",iCentrality+1,
210            gNuDynALICEData[iCentrality],
211            gNuDynALICEDataError[iCentrality],
212            gNetChargeALICEData[iCentrality],
213            gNetChargeALICEDataError[iCentrality],
214            gNetChargeRmsALICEData[iCentrality],
215            gNetChargeRmsALICEDataError[iCentrality]);
216   }
217
218 }
219
220
221 //_______________________________________________________________//
222 void DrawMarker(Double_t x, Double_t y, Int_t style, 
223                 Double_t size, Int_t color) {
224   TMarker *m = new TMarker(x,y,style);
225   m->SetMarkerSize(size);
226   m->SetMarkerColor(color);
227   m->Draw();
228 }