]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGHF/hfe/macros/DrawEfficiencyCentralitySource.C
add extra namings
[u/mrichter/AliRoot.git] / PWGHF / hfe / macros / DrawEfficiencyCentralitySource.C
CommitLineData
8c1c76e9 1TH1I *GetNEvents(const Char_t *testfile,const Char_t *plus="");
2void CorrectFromTheWidth(TH1D *h1);
3TList *GetResults(const Char_t *testfile,const Char_t *plus="");
4TObject* GetSpectrum(AliCFContainer *c, Int_t step);
5TObject* GetEfficiency(AliCFContainer *c, Int_t step = 9);
6TObject* GetEfficiency(AliCFContainer *c, Int_t step, Int_t step0);
7AliCFContainer *GetContainerCentralitySource(AliCFContainer *container,Int_t bincentrality,Int_t source);
8AliCFContainer *GetContainerSourceAsFunctionOfCentrality(AliCFContainer *container,Int_t source);
9
10void DrawEfficiencyCentralitySource(Int_t bincentrality,Int_t source,const char *testfile = "/lustre/alice/train/V005.PbPb/2010-11-29_2209.4266/mergedPeriods/data/PbPb/LHC10h.pass1/HFEtask_PbPb.root");
11
12
13void DrawEfficiencyCentralitySource(Int_t bincentrality,Int_t source,const char *testfile) {
14
15 //
16 // source: 0 (charm), 1 (beauty), 2 (gamma), 3 (others)
17 // centrality: from 0 to 100 with 0-5, 5-10, 10-15...
18 //
19 //
20
21 gStyle->SetPalette(1);
22 gStyle->SetOptStat(1111);
23 gStyle->SetPadBorderMode(0);
24 gStyle->SetCanvasColor(10);
25 gStyle->SetPadLeftMargin(0.13);
26 gStyle->SetPadRightMargin(0.13);
27
28 ///////////////////////////////////
29 // Take the stuff
30 //////////////////////////////////
31
32
33 TList *results = GetResults(testfile,"");
34 if(!results){
35 printf("No output objects: Calculation will terminate here\n");
36 return;
37 }
38
39 AliHFEcontainer *containerhfe = (AliHFEcontainer *) results->FindObject("trackContainer");
40 if(!containerhfe) {
41 printf("No hfe container \n");
42 return;
43 }
44
45 // 0: pt, 1: eta, 2: phi, 3: charge, 4: source, 5: centrality
46 AliCFContainer *sumcontaineresdd = containerhfe->MakeMergedCFContainer("sumesd","sumesd","MCTrackCont:recTrackContReco");
47 AliCFContainer *sumcontainermcc = containerhfe->MakeMergedCFContainer("summc","summc","MCTrackCont:recTrackContMC");
48
49 if(!sumcontaineresdd) {
50 printf("No container sum esd\n");
51 return;
52 }
53
54 if(!sumcontainermcc) {
55 printf("No container sum mc\n");
56 return;
57 }
58
59 // 0: pt, 1: eta, 2: phi for a given centrality and source
60 //AliCFContainer *sumcontaineresd = GetContainerSourceCentrality(sumcontaineresdd,bincentrality,source);
61 //AliCFContainer *sumcontainermc = GetContainerSourceCentrality(sumcontainermcc,bincentrality,source);
62
63 // 0: pt, 1: eta, 2: phi, 3: centrality for a given centrality and source
64 AliCFContainer *sumcontaineresd = GetContainerSourceAsFunctionOfCentrality(sumcontaineresdd,source);
65 AliCFContainer *sumcontainermc = GetContainerSourceAsFunctionOfCentrality(sumcontainermcc,source);
66
67
68
69 Int_t nSteps = sumcontaineresd->GetNStep();
70 printf("In total %d steps\n",nSteps);
71
72 AliCFDataGrid *dataGrida = (AliCFDataGrid *) GetSpectrum(sumcontaineresdd,nSteps-1);
73
74 TH1D *spectrumcentrality = (TH1D *) dataGrida->Project(5);
75 TH1D *spectrumpt = (TH1D *) dataGrida->Project(0);
76 TH2D *spectrumptc = (TH2D *) dataGrida->Project(5,0);
77
78 TAxis *xaxis = spectrumptc->GetXaxis();
79 Int_t bin0 = xaxis->FindBin(0.0);
80 Int_t bin5_s = xaxis->FindBin(4.99);
81 Int_t bin30 = xaxis->FindBin(30.0);
82 Int_t bin40_s = xaxis->FindBin(39.9);
83 Int_t bin70 = xaxis->FindBin(70.0);
84 Int_t bin80_s = xaxis->FindBin(79.9);
85
86 printf("Bin 0 %d\n",bin0);
87 printf("Bin 5 %d\n",bin5_s);
88 printf("Bin 30 %d\n",bin30);
89 printf("Bin 40 %d\n",bin40_s);
90 printf("Bin 70 %d\n",bin70);
91 printf("Bin 80 %d\n",bin80_s);
92
93 TH1D *spectrumcentrality_0_5 = spectrumptc->ProjectionY("centrality_0_5",bin0,bin5_s);
94 TH1D *spectrumcentrality_30_40 = spectrumptc->ProjectionY("centrality_30_40",bin30,bin40_s);
95 TH1D *spectrumcentrality_70_80 = spectrumptc->ProjectionY("centrality_70_80",bin70,bin80_s);
96
97 Int_t numberOfEvents = (Int_t) containerhfe->GetNumberOfEvents();
98
99 printf("Number of events for a %d after Event cut\n",numberOfEvents);
100
101 ////////////////////////////////
102 // Input after ITS&TPC refit
103 ///////////////////////////////
104 TCanvas * canvascpt = new TCanvas("RawSpectrumCentrality","RawSpectrumCentrality",1000,700);
105 canvascpt->Divide(2,1);
106 canvascpt->cd(1);
107 spectrumpt->SetTitle("");
108 spectrumpt->SetStats(0);
109 spectrumpt->SetLineColor(kBlue);
110 spectrumpt->SetMarkerColor(kBlue);
111 spectrumpt->SetMarkerStyle(25);
112 //
113 spectrumcentrality_0_5->SetTitle("");
114 spectrumcentrality_0_5->SetStats(0);
115 spectrumcentrality_0_5->SetLineColor(kRed);
116 spectrumcentrality_0_5->SetMarkerColor(kRed);
117 spectrumcentrality_0_5->SetMarkerStyle(26);
118 //
119 spectrumcentrality_30_40->SetTitle("");
120 spectrumcentrality_30_40->SetStats(0);
121 spectrumcentrality_30_40->SetLineColor(kMagenta);
122 spectrumcentrality_30_40->SetMarkerColor(kBlack);
123 spectrumcentrality_30_40->SetMarkerStyle(27);
124 //
125 spectrumcentrality_70_80->SetTitle("");
126 spectrumcentrality_70_80->SetStats(0);
127 spectrumcentrality_70_80->SetLineColor(kBlue);
128 spectrumcentrality_70_80->SetMarkerColor(kBlue);
129 spectrumcentrality_70_80->SetMarkerStyle(28);
130 //
131 spectrumpt->Draw();
132 spectrumcentrality_0_5->Draw("same");
133 spectrumcentrality_30_40->Draw("same");
134 spectrumcentrality_70_80->Draw("same");
135 TLegend *leg_different_centralities = new TLegend(0.4,0.6,0.89,0.89);
136 leg_different_centralities->AddEntry(spectrumpt,"Minimum-bias","p");
137 leg_different_centralities->AddEntry(spectrumcentrality_0_5,"0_5","p");
138 leg_different_centralities->AddEntry(spectrumcentrality_30_40,"30_40","p");
139 leg_different_centralities->AddEntry(spectrumcentrality_70_80,"70_80","p");
140 leg_different_centralities->Draw("same");
141
142 canvascpt->cd(2);
143 spectrumptc->Draw("colz");
144
145 /////////////////////////////////////
146 // Take efficiencies
147 /////////////////////////////////////
148
149 AliCFEffGrid *efficiencystepkineITSTPC = (AliCFEffGrid*) GetEfficiency(sumcontaineresd,AliHFEcuts::kNcutStepsMCTrack+AliHFEcuts::kStepRecKineITSTPC,AliHFEcuts::kNcutStepsMCTrack+AliHFEcuts::kStepRecNoCut);
150 AliCFEffGrid *efficiencystepPrim = (AliCFEffGrid*) GetEfficiency(sumcontaineresd,AliHFEcuts::kNcutStepsMCTrack+AliHFEcuts::kStepRecPrim,AliHFEcuts::kNcutStepsMCTrack+AliHFEcuts::kStepRecKineITSTPC);
151 AliCFEffGrid *efficiencystepHFEcutsITS = (AliCFEffGrid*) GetEfficiency(sumcontaineresd,AliHFEcuts::kNcutStepsMCTrack+AliHFEcuts::kStepHFEcutsITS,AliHFEcuts::kNcutStepsMCTrack+AliHFEcuts::kStepRecPrim);
152 AliCFEffGrid *efficiencystepHFEcutsTRD = (AliCFEffGrid*) GetEfficiency(sumcontaineresd,AliHFEcuts::kNcutStepsMCTrack+AliHFEcuts::kStepHFEcutsTRD,AliHFEcuts::kNcutStepsMCTrack+AliHFEcuts::kStepHFEcutsITS);
153 AliCFEffGrid *efficiencystepPIDTOF = (AliCFEffGrid*) GetEfficiency(sumcontaineresd,AliHFEcuts::kNcutStepsMCTrack+AliHFEcuts::kStepHFEcutsTRD+1,AliHFEcuts::kNcutStepsMCTrack+AliHFEcuts::kStepHFEcutsTRD);
154 AliCFEffGrid *efficiencystepPIDTPC = (AliCFEffGrid*) GetEfficiency(sumcontaineresd,AliHFEcuts::kNcutStepsMCTrack+AliHFEcuts::kStepHFEcutsTRD+2,AliHFEcuts::kNcutStepsMCTrack+AliHFEcuts::kStepHFEcutsTRD+1);
155
156 AliCFEffGrid *efficiencystepPIDall = (AliCFEffGrid*) GetEfficiency(sumcontaineresd,AliHFEcuts::kNcutStepsMCTrack+AliHFEcuts::kStepHFEcutsTRD+2,AliHFEcuts::kNcutStepsMCTrack+AliHFEcuts::kStepHFEcutsTRD);
157
158 AliCFEffGrid *efficiencystepall = (AliCFEffGrid*) GetEfficiency(sumcontaineresd,AliHFEcuts::kNcutStepsMCTrack+AliHFEcuts::kStepHFEcutsTRD+2,AliHFEcuts::kNcutStepsMCTrack+AliHFEcuts::kStepRecNoCut);
159
160 //
161
162 AliCFEffGrid *efficiencystepMCkineITSTPC = (AliCFEffGrid*) GetEfficiency(sumcontainermc,AliHFEcuts::kNcutStepsMCTrack+AliHFEcuts::kStepRecKineITSTPC,AliHFEcuts::kNcutStepsMCTrack+AliHFEcuts::kStepRecNoCut);
163 AliCFEffGrid *efficiencystepMCPrim = (AliCFEffGrid*) GetEfficiency(sumcontainermc,AliHFEcuts::kNcutStepsMCTrack+AliHFEcuts::kStepRecPrim,AliHFEcuts::kNcutStepsMCTrack+AliHFEcuts::kStepRecKineITSTPC);
164 AliCFEffGrid *efficiencystepMCHFEcutsITS = (AliCFEffGrid*) GetEfficiency(sumcontainermc,AliHFEcuts::kNcutStepsMCTrack+AliHFEcuts::kStepHFEcutsITS,AliHFEcuts::kNcutStepsMCTrack+AliHFEcuts::kStepRecPrim);
165 AliCFEffGrid *efficiencystepMCHFEcutsTRD = (AliCFEffGrid*) GetEfficiency(sumcontainermc,AliHFEcuts::kNcutStepsMCTrack+AliHFEcuts::kStepHFEcutsTRD,AliHFEcuts::kNcutStepsMCTrack+AliHFEcuts::kStepHFEcutsITS);
166 AliCFEffGrid *efficiencystepMCPIDTOF = (AliCFEffGrid*) GetEfficiency(sumcontainermc,AliHFEcuts::kNcutStepsMCTrack+AliHFEcuts::kStepHFEcutsTRD+1,AliHFEcuts::kNcutStepsMCTrack+AliHFEcuts::kStepHFEcutsTRD);
167 AliCFEffGrid *efficiencystepMCPIDTPC = (AliCFEffGrid*) GetEfficiency(sumcontainermc,AliHFEcuts::kNcutStepsMCTrack+AliHFEcuts::kStepHFEcutsTRD+2,AliHFEcuts::kNcutStepsMCTrack+AliHFEcuts::kStepHFEcutsTRD+1);
168
169 AliCFEffGrid *efficiencystepMCPIDall = (AliCFEffGrid*) GetEfficiency(sumcontainermc,AliHFEcuts::kNcutStepsMCTrack+AliHFEcuts::kStepHFEcutsTRD+2,AliHFEcuts::kNcutStepsMCTrack+AliHFEcuts::kStepHFEcutsTRD);
170
171 AliCFEffGrid *efficiencystepMCall = (AliCFEffGrid*) GetEfficiency(sumcontainermc,AliHFEcuts::kNcutStepsMCTrack+AliHFEcuts::kStepHFEcutsTRD+2,0);
172
173
174 ///////////////////////////////////////
175 // Plot 1D
176 ///////////////////////////////////////
177
178 /////////////////////
179 // Different cuts
180 /////////////////////
181 TCanvas * canvascomparison = new TCanvas("ITSTPCrefitStepESD","ITSTPCrefitStepESD",1000,700);
182 canvascomparison->Divide(2,2);
183
184 canvascomparison->cd(1);
185 TH2D* h_effsteponlykineITSTPC1Donly = (TH2D *) efficiencystepkineITSTPC->Project(0,3);
186 h_effsteponlykineITSTPC1Donly->SetTitle("");
187 h_effsteponlykineITSTPC1Donly->SetStats(0);
188 h_effsteponlykineITSTPC1Donly->SetLineColor(kBlue);
189 h_effsteponlykineITSTPC1Donly->SetMarkerColor(kBlue);
190 h_effsteponlykineITSTPC1Donly->SetMarkerStyle(25);
191 h_effsteponlykineITSTPC1Donly->Draw("colz");
192
193 canvascomparison->cd(2);
194 TH2D* h_effsteponlyPrim1Donly =( TH2D *) efficiencystepPrim->Project(0,3);
195 h_effsteponlyPrim1Donly->SetTitle("");
196 h_effsteponlyPrim1Donly->SetStats(0);
197 h_effsteponlyPrim1Donly->SetLineColor(kBlue);
198 h_effsteponlyPrim1Donly->SetMarkerColor(kBlue);
199 h_effsteponlyPrim1Donly->SetMarkerStyle(25);
200 h_effsteponlyPrim1Donly->Draw("colz");
201
202
203 canvascomparison->cd(3);
204 TH2D* h_effsteponlyHFEcutsITS1Donly = (TH2D *) efficiencystepHFEcutsITS->Project(0,3);
205 h_effsteponlyHFEcutsITS1Donly->SetTitle("");
206 h_effsteponlyHFEcutsITS1Donly->SetStats(0);
207 h_effsteponlyHFEcutsITS1Donly->SetLineColor(kBlue);
208 h_effsteponlyHFEcutsITS1Donly->SetMarkerColor(kBlue);
209 h_effsteponlyHFEcutsITS1Donly->SetMarkerStyle(25);
210 h_effsteponlyHFEcutsITS1Donly->Draw("colz");
211
212
213 canvascomparison->cd(4);
214 TH2D* h_effsteponlyPID1Donly = (TH2D *) efficiencystepHFEcutsTRD->Project(0,3);
215 h_effsteponlyPID1Donly->SetTitle("");
216 h_effsteponlyPID1Donly->SetStats(0);
217 h_effsteponlyPID1Donly->SetLineColor(kBlue);
218 h_effsteponlyPID1Donly->SetMarkerColor(kBlue);
219 h_effsteponlyPID1Donly->SetMarkerStyle(25);
220 h_effsteponlyPID1Donly->Draw("colz");
221
222
223 /////////////////////
224 // Different cuts
225 /////////////////////
226 TCanvas * canvascomparisonbis = new TCanvas("ITSTPCrefitStepMC","ITSTPCrefitStepMC",1000,700);
227 canvascomparisonbis->Divide(2,2);
228
229 canvascomparisonbis->cd(1);
230 TH2D* h_effstepMCkineITSTPC1Donly = (TH2D *)efficiencystepMCkineITSTPC->Project(0,3);
231 h_effstepMCkineITSTPC1Donly->SetTitle("");
232 h_effstepMCkineITSTPC1Donly->SetStats(0);
233 h_effstepMCkineITSTPC1Donly->SetLineColor(kBlue);
234 h_effstepMCkineITSTPC1Donly->SetMarkerColor(kBlue);
235 h_effstepMCkineITSTPC1Donly->SetMarkerStyle(25);
236 h_effstepMCkineITSTPC1Donly->Draw("colz");
237
238
239 canvascomparisonbis->cd(2);
240 TH2D* h_effstepMCPrim1Donly = (TH2D *) efficiencystepMCPrim->Project(0,3);
241 h_effstepMCPrim1Donly->SetTitle("");
242 h_effstepMCPrim1Donly->SetStats(0);
243 h_effstepMCPrim1Donly->SetLineColor(kBlue);
244 h_effstepMCPrim1Donly->SetMarkerColor(kBlue);
245 h_effstepMCPrim1Donly->SetMarkerStyle(25);
246 h_effstepMCPrim1Donly->Draw("colz");
247
248 canvascomparisonbis->cd(3);
249 TH2D* h_effstepMCHFEcutsITS1Donly = (TH2D *) efficiencystepMCHFEcutsITS->Project(0,3);
250 h_effstepMCHFEcutsITS1Donly->SetTitle("");
251 h_effstepMCHFEcutsITS1Donly->SetStats(0);
252 h_effstepMCHFEcutsITS1Donly->SetLineColor(kBlue);
253 h_effstepMCHFEcutsITS1Donly->SetMarkerColor(kBlue);
254 h_effstepMCHFEcutsITS1Donly->SetMarkerStyle(25);
255 h_effstepMCHFEcutsITS1Donly->Draw("colz");
256
257 canvascomparisonbis->cd(4);
258 TH2D* h_effstepMCPID1Donly = (TH2D *) efficiencystepMCHFEcutsTRD->Project(0,3);
259 h_effstepMCPID1Donly->SetTitle("");
260 h_effstepMCPID1Donly->SetStats(0);
261 h_effstepMCPID1Donly->SetLineColor(kBlue);
262 h_effstepMCPID1Donly->SetMarkerColor(kBlue);
263 h_effstepMCPID1Donly->SetMarkerStyle(25);
264 h_effstepMCPID1Donly->Draw("colz");
265
266
267 ///////////
268 // PID
269 ///////////
270 TCanvas * canvasc1Don = new TCanvas("PIDstepESD","PIDstepESD",1000,700);
271 canvasc1Don->Divide(3,1);
272
273 canvasc1Don->cd(1);
274 TH2D* h_effstepPID1Donly = (TH2D *) efficiencystepPIDTOF->Project(0,3);
275 h_effstepPID1Donly->SetTitle("");
276 h_effstepPID1Donly->SetStats(0);
277 h_effstepPID1Donly->SetLineColor(kBlue);
278 h_effstepPID1Donly->SetMarkerColor(kBlue);
279 h_effstepPID1Donly->SetMarkerStyle(25);
280 gPad->SetLogz();
281 h_effstepPID1Donly->Draw("colz");
282
283 canvasc1Don->cd(2);
284 TH2D* h_effstepPID1Donlyy = (TH2D *) efficiencystepPIDTPC->Project(0,3);
285 h_effstepPID1Donlyy->SetTitle("");
286 h_effstepPID1Donlyy->SetStats(0);
287 h_effstepPID1Donlyy->SetLineColor(kBlue);
288 h_effstepPID1Donlyy->SetMarkerColor(kBlue);
289 h_effstepPID1Donlyy->SetMarkerStyle(25);
290 gPad->SetLogz();
291 h_effstepPID1Donlyy->Draw("colz");
292
293 canvasc1Don->cd(3);
294 TH2D* h_effstepPID1Donlyyy = (TH2D *) efficiencystepPIDall->Project(0,3);
295 h_effstepPID1Donlyyy->SetTitle("");
296 h_effstepPID1Donlyyy->SetStats(0);
297 h_effstepPID1Donlyyy->SetLineColor(kBlue);
298 h_effstepPID1Donlyyy->SetMarkerColor(kBlue);
299 h_effstepPID1Donlyyy->SetMarkerStyle(25);
300 gPad->SetLogz();
301 h_effstepPID1Donlyyy->Draw("colz");
302
303 //
304
305 TCanvas * canvasc1DonMC = new TCanvas("PIDstepMC","PIDstepMC",1000,700);
306 canvasc1DonMC->Divide(3,1);
307
308 canvasc1DonMC->cd(1);
309 TH2D* h_effstepPID1DMConly = (TH2D *) efficiencystepMCPIDTOF->Project(0,3);
310 h_effstepPID1DMConly->SetTitle("");
311 h_effstepPID1DMConly->SetStats(0);
312
313 h_effstepPID1DMConly->SetLineColor(kBlue);
314
315 h_effstepPID1DMConly->SetMarkerColor(kBlue);
316
317 h_effstepPID1DMConly->SetMarkerStyle(25);
318 gPad->SetLogz();
319 h_effstepPID1DMConly->Draw("colz");
320
321
322 canvasc1DonMC->cd(2);
323 TH2D* h_effstepPID1DMConlyy = (TH2D *) efficiencystepMCPIDTPC->Project(0,3);
324 h_effstepPID1DMConlyy->SetTitle("");
325 h_effstepPID1DMConlyy->SetStats(0);
326 h_effstepPID1DMConlyy->SetLineColor(kBlue);
327 h_effstepPID1DMConlyy->SetMarkerColor(kBlue);
328 h_effstepPID1DMConlyy->SetMarkerStyle(25);
329 gPad->SetLogz();
330 h_effstepPID1DMConlyy->Draw("colz");
331
332
333 canvasc1DonMC->cd(3);
334 TH2D* h_effstepPID1DMConlyyy = (TH2D *) efficiencystepMCPIDall->Project(0,3);
335 h_effstepPID1DMConlyyy->SetTitle("");
336 h_effstepPID1DMConlyyy->SetStats(0);
337 h_effstepPID1DMConlyyy->SetLineColor(kBlue);
338 h_effstepPID1DMConlyyy->SetMarkerColor(kBlue);
339 h_effstepPID1DMConlyyy->SetMarkerStyle(25);
340 gPad->SetLogz();
341 h_effstepPID1DMConlyyy->Draw("colz");
342
343
344 //////////
345 // all
346 //////////
347
348 TCanvas * canvasall = new TCanvas("AllMC","AllMC",1000,700);
349 //canvasall->Divide(2,1);
350
351 canvasall->cd(1);
352 TH2D* h_effstepPID1Dall = (TH2D *) efficiencystepMCall->Project(0,3);
353 h_effstepPID1Dall->SetTitle("");
354 h_effstepPID1Dall->SetStats(0);
355 h_effstepPID1Dall->SetLineColor(kBlue);
356 h_effstepPID1Dall->SetMarkerColor(kBlue);
357 h_effstepPID1Dall->SetMarkerStyle(25);
358 gPad->SetLogz();
359 h_effstepPID1Dall->Draw("colz");
360
361
362
363
364
365}
366
367// ====================================================================
368TList *GetResults(const Char_t *testfile,const Char_t *plus){
369 //
370 // read output
371 //
372 TFile *f = TFile::Open(testfile);
373 if(!f || f->IsZombie()){
374 printf("File not readable\n");
375 return 0x0;
376 }
377 TString name(plus);
378 name += "HFE_Results";
379 printf("Name of TList %s\n",(const char*)name);
380 TList *l = dynamic_cast<TList *>(f->Get((const char*)name));
381 if(!l){
382 printf("Output container not found\n");
383 f->Close(); delete f;
384 return 0x0;
385 }
386 TList *returnlist = dynamic_cast<TList *>(l->Clone());
387 f->Close(); delete f;
388 return returnlist;
389}
390//_________________________________________________________________________
391TObject* GetSpectrum(AliCFContainer *c, Int_t step) {
392 AliCFDataGrid* data = new AliCFDataGrid("data","",*c,step);
393 //data->SetMeasured(step);
394 return data;
395}
396//__________________________________________________________________________
397TObject* GetEfficiency(AliCFContainer *c, Int_t step) {
398 TString name("eff");
399 name += step;
400 AliCFEffGrid* eff = new AliCFEffGrid((const char*)name,"",*c);
401 eff->CalculateEfficiency(step,0);
402 return eff;
403}
404//_________________________________________________________________________
405TObject* GetEfficiency(AliCFContainer *c, Int_t step, Int_t step0) {
406 TString name("eff");
407 name += step;
408 name+= step0;
409 AliCFEffGrid* eff = new AliCFEffGrid((const char*)name,"",*c);
410 eff->CalculateEfficiency(step,step0);
411 return eff;
412}
413//_______________________________________________________________________
414TH1I *GetNEvents(const Char_t *testfile,const Char_t *plus){
415 //
416 // read output
417 //
418 TFile *f = TFile::Open(testfile);
419 if(!f || f->IsZombie()){
420 printf("File not readable\n");
421 return 0x0;
422 }
423 TString name("nEvents");
424 name += plus;
425 printf("Name of nEvents %s\n",(const char*)name);
426 TH1I *l = dynamic_cast<TH1I *>(f->Get((const char*)name));
427 if(!l){
428 printf("nEvents not found\n");
429 f->Close(); delete f;
430 return 0x0;
431 }
432 TH1I *returnlist = dynamic_cast<TH1I *>(l->Clone());
433 if(!returnlist) return 0x0;
434 returnlist->SetDirectory(0);
435 f->Close(); delete f;
436 return returnlist;
437}
438//________________________________________________________________________
439void CorrectFromTheWidth(TH1D *h1) {
440 //
441 // Correct from the width of the bins --> dN/dp_{T} (GeV/c)^{-1}
442 //
443
444 TAxis *axis = h1->GetXaxis();
445 Int_t nbinX = h1->GetNbinsX();
446
447 for(Int_t i = 1; i <= nbinX; i++) {
448
449 Double_t width = axis->GetBinWidth(i);
450 Double_t content = h1->GetBinContent(i);
451 Double_t error = h1->GetBinError(i);
452 h1->SetBinContent(i,content/width);
453 h1->SetBinError(i,error/width);
454 }
455
456}
457//____________________________________________________________________________
458AliCFContainer *GetContainerCentralitySource(AliCFContainer *container,Int_t bincentrality,Int_t source) {
459
460 Int_t *vars = new Int_t[3];
461 vars[0] = 0;
462 vars[1] = 1;
463 vars[2] = 2;
464
465 Int_t nbBinPt = container->GetNBins(0);
466 Int_t nbBinEta = container->GetNBins(1);
467 Int_t nbBinPhi = container->GetNBins(2);
468 Int_t nbBinCharge = container->GetNBins(3);
469 Int_t nbBinSource = container->GetNBins(4);
470 Int_t nbBinCentrality = container->GetNBins(5);
471 Double_t *arrayPt = new Double_t[nbBinPt + 1];
472 Double_t *arrayEta = new Double_t[nbBinEta + 1];
473 Double_t *arrayPhi = new Double_t[nbBinPhi + 1];
474 Double_t *arrayCharge = new Double_t[nbBinCharge + 1];
475 Double_t *arraySource = new Double_t[nbBinSource + 1];
476 Double_t *arrayCentrality = new Double_t[nbBinCentrality + 1];
477 container->GetBinLimits(0,arrayPt);
478 container->GetBinLimits(1,arrayEta);
479 container->GetBinLimits(2,arrayPhi);
480 container->GetBinLimits(3,arrayCharge);
481 container->GetBinLimits(4,arraySource);
482 container->GetBinLimits(4,arrayCentrality);
483
484 Int_t sourcebin = source;
485 Int_t centralitybin = bincentrality;
486
487
488 Double_t *varMin = new Double_t[6];
489 Double_t *varMax = new Double_t[6];
490 varMin[0] = arrayPt[0];
491 varMin[1] = arrayEta[0];
492 varMin[2] = arrayPhi[0];
493 varMin[3] = arrayCharge[0];
494 if(source == -1) sourcebin = 0;
495 if(bincentrality == -1) centralitybin = 0;
496 varMin[4] = arraySource[sourcebin];
497 varMin[5] = arraySource[centralitybin];
498 varMax[0] = arrayPt[nbBinPt];
499 varMax[1] = arrayEta[nbBinEta];
500 varMax[2] = arrayPhi[nbBinPhi];
501 varMax[3] = arrayCharge[nbBinCharge];
502 if(source == -1) sourcebin = nbBinSource;
503 if(bincentrality == -1) centralitybin = nbBinCentrality;
504 varMax[4] = arraySource[sourcebin];
505 varMax[5] = arraySource[centralitybin];
506
507 //printf("Nb of bin charge %d\n",nbBinCharge);
508 //for(Int_t nb = 0; nb <= nbBinCharge; nb++) {
509 // printf("charge %f for %d\n",arrayCharge[nb],nb);
510 //}
511
512 AliCFContainer *k = container->MakeSlice(3,vars,varMin,varMax);
513 k->SetName("Other");
514
515 return k;
516
517}
518//____________________________________________________________________________
519AliCFContainer *GetContainerSourceAsFunctionOfCentrality(AliCFContainer *container,Int_t source) {
520
521 Int_t *vars = new Int_t[4];
522 vars[0] = 0;
523 vars[1] = 1;
524 vars[2] = 2;
525 vars[3] = 5;
526
527 Int_t nbBinPt = container->GetNBins(0);
528 Int_t nbBinEta = container->GetNBins(1);
529 Int_t nbBinPhi = container->GetNBins(2);
530 Int_t nbBinCharge = container->GetNBins(3);
531 Int_t nbBinSource = container->GetNBins(4);
532 Int_t nbBinCentrality = container->GetNBins(5);
533 Double_t *arrayPt = new Double_t[nbBinPt + 1];
534 Double_t *arrayEta = new Double_t[nbBinEta + 1];
535 Double_t *arrayPhi = new Double_t[nbBinPhi + 1];
536 Double_t *arrayCharge = new Double_t[nbBinCharge + 1];
537 Double_t *arraySource = new Double_t[nbBinSource + 1];
538 Double_t *arrayCentrality = new Double_t[nbBinCentrality + 1];
539 container->GetBinLimits(0,arrayPt);
540 container->GetBinLimits(1,arrayEta);
541 container->GetBinLimits(2,arrayPhi);
542 container->GetBinLimits(3,arrayCharge);
543 container->GetBinLimits(4,arraySource);
544 container->GetBinLimits(5,arrayCentrality);
545
546 Int_t sourcebin = source;
547
548
549 Double_t *varMin = new Double_t[6];
550 Double_t *varMax = new Double_t[6];
551 varMin[0] = arrayPt[0];
552 varMin[1] = arrayEta[0];
553 varMin[2] = arrayPhi[0];
554 varMin[3] = arrayCharge[0];
555 if(source == -1) sourcebin = 0;
556 varMin[4] = arraySource[sourcebin];
557 varMin[5] = arrayCentrality[0];
558 varMax[0] = arrayPt[nbBinPt];
559 varMax[1] = arrayEta[nbBinEta];
560 varMax[2] = arrayPhi[nbBinPhi];
561 varMax[3] = arrayCharge[nbBinCharge];
562 if(source == -1) sourcebin = nbBinSource;
563 varMax[4] = arraySource[sourcebin];
564 varMax[5] = arrayCentrality[nbBinCentrality];
565
566 //printf("Nb of bin charge %d\n",nbBinCharge);
567 //for(Int_t nb = 0; nb <= nbBinCharge; nb++) {
568 // printf("charge %f for %d\n",arrayCharge[nb],nb);
569 //}
570
571 AliCFContainer *k = container->MakeSlice(4,vars,varMin,varMax);
572 k->SetName("OtherAsFunctionOfCentrality");
573
574 return k;
575
576}