]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGCF/EBYE/MeanPtFluctuations/AliAnalysisTaskPtFluc.cxx
Code Migration PWG2/EBYE to PWGCF/EBYE + Creation of Balance Function Folder
[u/mrichter/AliRoot.git] / PWGCF / EBYE / MeanPtFluctuations / AliAnalysisTaskPtFluc.cxx
CommitLineData
befb009c 1#include "TChain.h"
2#include "TTree.h"
3#include "TH1F.h"
4#include "TH2F.h"
5#include "TCanvas.h"
6#include "TF1.h"
7#include "TProfile.h"
8#include "TList.h"
9#include "iostream"
10
11#include "AliAnalysisTaskSE.h"
12#include "AliAnalysisManager.h"
13
14#include "AliESD.h"
15#include "AliESDEvent.h"
16#include "AliESDInputHandler.h"
17#include "AliESDtrackCuts.h"
18
19#include "AliLog.h"
20
21#include "AliAnalysisTaskPtFluc.h"
22
23
24using namespace std;
25
26// Analysis of Pt FLuctuations (pp)
27// Author: Stefan Heckel
28// Version of pp task: 8.0, 19.04.2011
29
30
31ClassImp(AliAnalysisTaskPtFluc)
32
33//________________________________________________________________________
34AliAnalysisTaskPtFluc::AliAnalysisTaskPtFluc(const char *name)
35 :AliAnalysisTaskSE(name),
36 fESD(0),
37 fOutputList(0),
38 fPtSpec(0),
39 fMult(0),
40 fEta(0),
41 fEtaPhiPlus(0),
42 fEtaPhiMinus(0),
43 fVtxZ(0),
44 fVtxZCut(0),
45 fVtxZCont(0),
46 fVtxZTrackCuts(0),
47 fEventMeanPt(0),
48 fEventMeanPtSq(0),
49 fMultEventMeanPt(0),
50 fMultEventMeanPtSq(0),
51 fTwoPartCorrEv(0),
52 fTwoPartCorrEvSq(0),
53 fTwoPartCorrEvSample(0),
54 fTwoPartCorrEvSampleSq(0),
55 fESDTrackCuts(0),
56 fMaxVertexZ(0),
57 fNContributors(0),
58 fMC(0)
59{
60 DefineOutput(1, TList::Class());
61}
62
63//________________________________________________________________________
64AliAnalysisTaskPtFluc::~AliAnalysisTaskPtFluc()
65{
66 if(fOutputList) delete fOutputList; fOutputList =0;
67}
68
69//________________________________________________________________________
70void AliAnalysisTaskPtFluc::UserCreateOutputObjects()
71{
72 // Create histograms
73 // Called once
74
75 OpenFile(1, "RECREATE");
76 fOutputList = new TList();
77 fOutputList->SetOwner();
78
79
80 fPtSpec = new TH1F("fPtSpec","Pt spectrum",50,0,2.5);
81
82 fMult = new TH1F("fMult","Multiplicity distribution",120,-0.5,119.5);
83
84 fEta = new TH1F("fEta","Eta distribution",80,-2,2);
85
86 fEtaPhiPlus = new TH1F("fEtaPhiPlus","Phi distribution for positive eta",62,0,6.2);
87
88 fEtaPhiMinus = new TH1F("fEtaPhiMinus","Phi distribution for negative eta",62,0,6.2);
89
90 fVtxZ = new TH1F("fVtxZ","Vertex Z distribution before cuts",100,-20,20);
91
92 fVtxZCut = new TH1F("fVtxZCut","Vertex Z distribution after vtxZ cut",110,-11,11);
93
94 fVtxZCont = new TH1F("fVtxZCont","Vertex Z distribution after nCont cut",110,-11,11);
95
96 fVtxZTrackCuts = new TH1F("fVtxZTrackCuts","Vertex Z distribution after track cuts",110,-11,11);
97
98
99 fEventMeanPt = new TH1F("fEventMeanPt","Mean-Pt event by event",50,0,2.5);
100
101 fEventMeanPtSq = new TH1F("fEventMeanPtSq","Mean-Pt event by event squared",100,0,5);
102
103 fMultEventMeanPt = new TH1F("fMultEventMeanPt","Mean-Pt event by event vs. Multiplicity",100,-0.5,99.5);
104
105 fMultEventMeanPtSq = new TH1F("fMultEventMeanPtSq","Mean-Pt event by event squared vs. Multiplicity",100,-0.5,99.5);
106
107
108 fTwoPartCorrEv = new TH1F("fTwoPartCorrEv","Two-particle correlator vs. Multiplicity",100,-0.5,99.5);
109
110 fTwoPartCorrEvSq = new TH1F("fTwoPartCorrEvSq","Two-particle correlator squared vs. Multiplicity",100,-0.5,99.5);
111
112 fTwoPartCorrEvSample = new TH1F("fTwoPartCorrEvSample","Two-particle correlator vs. Multiplicity",100,-0.5,99.5);
113
114 fTwoPartCorrEvSampleSq = new TH1F("fTwoPartCorrEvSampleSq","Two-particle correlator squared vs. Multiplicity",100,-0.5,99.5);
115
116
117 // Add histograms to the output list
118 fOutputList->Add(fPtSpec);
119 fOutputList->Add(fMult);
120 fOutputList->Add(fEta);
121 fOutputList->Add(fEtaPhiPlus);
122 fOutputList->Add(fEtaPhiMinus);
123 fOutputList->Add(fVtxZ);
124 fOutputList->Add(fVtxZCut);
125 fOutputList->Add(fVtxZCont);
126 fOutputList->Add(fVtxZTrackCuts);
127 fOutputList->Add(fEventMeanPt);
128 fOutputList->Add(fEventMeanPtSq);
129 fOutputList->Add(fMultEventMeanPt);
130 fOutputList->Add(fMultEventMeanPtSq);
131 fOutputList->Add(fTwoPartCorrEv);
132 fOutputList->Add(fTwoPartCorrEvSq);
133 fOutputList->Add(fTwoPartCorrEvSample);
134 fOutputList->Add(fTwoPartCorrEvSampleSq);
135}
136
137//________________________________________________________________________
138void AliAnalysisTaskPtFluc::UserExec(Option_t *)
139{
140 // Main loop
141 // Called for each event
142
143
144 // --- ESD event handler ---
145
146 AliESDInputHandler *esdH = dynamic_cast<AliESDInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
147
148 if (!esdH) {
149 Printf("ERROR: Could not get ESDInputHandler");
150 }
151 else {
152 fESD = esdH->GetEvent();
153 }
154
155 if (!fESD) {
156 Printf("ERROR: fESD not available");
157 return;
158 }
159
befb009c 160
161 // --- End event handler ---
162
163
164 // --- Vertex cuts ---
165
166 // TPC+ITS vertex
167 const AliESDVertex* vtxESD = fESD->GetPrimaryVertexTracks();
168 Double_t vtxZ = vtxESD->GetZv();
169 Double_t vtxNCont = vtxESD->GetNContributors();
170
171// // TPConly vertex
172// const AliESDVertex* vtxESDTPC = fESD->GetPrimaryVertexTPC();
173// Double_t vtxZ = vtxESDTPC->GetZv();
174// Double_t vtxNCont = vtxESDTPC->GetNContributors();
175
176 fVtxZ->Fill(vtxZ); // VtxZ before cuts
177
178 // Event cut on the z-Position of the vertex
179 if(vtxZ > fMaxVertexZ || vtxZ < (-1.*fMaxVertexZ)) {
180// Printf("VertexZ out of range, Zv = %f",vtxZ);
181 return;
182 }
183
184 fVtxZCut->Fill(vtxZ); // VtxZ after cut on vtxZ
185
186 // Event cut on the number of contributors
187 if(vtxNCont < fNContributors) {
188// Printf("Vertex has no contributors");
189 return;
190 }
191// else {
192// Printf("Vertex nContributors = %i",vtxNCont);
193// }
194
195 fVtxZCont->Fill(vtxZ); // VtxZ after cut on nContributors
196
197 // --- End vertex cuts ---
198
199
200 Int_t nrTracks = 0; // count for number of tracks which pass the track cuts
201 Int_t nrESDTracks = 0; // number of tracks in the ESD file
202 Double_t sumPt = 0.; // sum of track Pts
203 Double_t twoPartCorrEv = 0.; // Two-particle correlator of one event for multiplicity bin analysis
204 Double_t twoPartCorrEvSample = 0.; // Two-part. corr. of one event for whole sample analysis
205
206 Double_t tracks[120] = {0.}; // array of track Pts, needed for the two-particle correlator
207
208 Double_t trackPt, trackEta, trackPhi;
209 Double_t eventMeanPt, eventMeanPtSq, evMptMult;
210 Double_t twoPartCorrPair, twoPartCorrEvSq;
211 Double_t twoPartCorrPairSample, twoPartCorrEvSampleSq;
212
213 Double_t *nbins = 0x0; // Mean pT values for multiplicity bin analysis
214 Double_t evMptSample; // Mean pT value for whole sample analysis
215
216 Double_t energy; // beam energy
217
218 energy = fESD->GetBeamEnergy();
219
220
221// Printf("MC: %d, %f",fMC,energy);
222
223
224// --- Mean pT values ---
225
226// !!!!! Have to be calculated in a first run - for each sample, which should be analysed, separately! !!!!!
227
228
229// -- Mean pT values for the multiplicity bins (starting with N = 0, therefore the first value has to be 0.000) --
230
231// MC 900 GeV 10e13 (Pythia6 - Perugia0) (Pt-Range: 0.15 - 2)
232Double_t nbinsMC900[100] = {0.000, 0.456, 0.475, 0.490, 0.507, 0.523, 0.535, 0.546, 0.554, 0.561, 0.568, 0.572, 0.578, 0.582, 0.586, 0.590, 0.593, 0.596, 0.602, 0.601, 0.606, 0.605, 0.610, 0.618, 0.610, 0.620, 0.633, 0.615, 0.609, 0.620, 0.632, 0.634, 0.661, 0.647, 0.560, 0.671, 0.660, 0.678, 0.000, 0.612, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000};
233
234// MC 7 TeV 10f6a (Pythia6 - Perugia0) (Pt-Range: 0.15 - 2)
235Double_t nbinsMC7[100] = {0.000, 0.453, 0.475, 0.498, 0.523, 0.546, 0.563, 0.577, 0.587, 0.595, 0.603, 0.610, 0.616, 0.622, 0.627, 0.632, 0.636, 0.640, 0.644, 0.648, 0.651, 0.655, 0.658, 0.662, 0.664, 0.667, 0.669, 0.671, 0.674, 0.677, 0.679, 0.682, 0.683, 0.686, 0.688, 0.690, 0.692, 0.695, 0.696, 0.696, 0.699, 0.700, 0.701, 0.705, 0.709, 0.705, 0.701, 0.705, 0.714, 0.718, 0.727, 0.702, 0.725, 0.738, 0.724, 0.728, 0.710, 0.729, 0.711, 0.748, 0.702, 0.708, 0.732, 0.000, 0.683, 0.000, 0.000, 0.675, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000};
236
237
238// // MC 900 GeV 10e12 (Phojet) (Pt-Range: 0.15 - 2)
239// Double_t nbinsMC900[100] = {0.000, 0.478, 0.483, 0.488, 0.494, 0.498, 0.502, 0.505, 0.507, 0.509, 0.513, 0.516, 0.520, 0.522, 0.526, 0.528, 0.531, 0.535, 0.539, 0.540, 0.544, 0.540, 0.548, 0.548, 0.549, 0.556, 0.562, 0.549, 0.557, 0.550, 0.561, 0.559, 0.554, 0.547, 0.539, 0.564, 0.546, 0.603, 0.532, 0.583, 0.656, 0.531, 0.458, 0.547, 0.000, 0.633, 0.000, 0.603, 0.588, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000};
240
241// // MC 7 TeV 10f6 (Phojet) (Pt-Range: 0.15 - 2)
242// Double_t nbinsMC7[100] = {0.000, 0.488, 0.499, 0.512, 0.526, 0.536, 0.544, 0.549, 0.553, 0.557, 0.560, 0.563, 0.566, 0.569, 0.572, 0.574, 0.577, 0.579, 0.580, 0.582, 0.584, 0.585, 0.586, 0.587, 0.588, 0.589, 0.589, 0.590, 0.591, 0.591, 0.590, 0.591, 0.592, 0.591, 0.589, 0.591, 0.590, 0.588, 0.590, 0.589, 0.590, 0.588, 0.589, 0.589, 0.591, 0.588, 0.582, 0.580, 0.582, 0.586, 0.575, 0.575, 0.560, 0.570, 0.569, 0.604, 0.616, 0.549, 0.614, 0.611, 0.480, 0.628, 0.568, 0.000, 0.677, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000};
243
244
245// Data 900 GeV 10c.pass3 (Pt-Range: 0.15 - 2)
246Double_t nbinsData900[100] = {0.000, 0.490, 0.491, 0.495, 0.503, 0.512, 0.521, 0.529, 0.536, 0.542, 0.548, 0.551, 0.556, 0.561, 0.564, 0.567, 0.570, 0.573, 0.575, 0.578, 0.580, 0.582, 0.583, 0.590, 0.591, 0.591, 0.590, 0.598, 0.593, 0.608, 0.609, 0.609, 0.587, 0.615, 0.603, 0.613, 0.560, 0.583, 0.614, 0.649, 0.584, 0.584, 0.594, 0.000, 0.622, 0.000, 0.000, 0.703, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000};
247
248// Data 2.76 TeV 11a.pass1 (Pt-Range: 0.15 - 2)
249Double_t nbinsData276[100] = {0.000, 0.491, 0.500, 0.511, 0.524, 0.536, 0.548, 0.558, 0.567, 0.574, 0.581, 0.586, 0.592, 0.596, 0.601, 0.605, 0.609, 0.613, 0.616, 0.619, 0.622, 0.625, 0.628, 0.629, 0.632, 0.634, 0.637, 0.639, 0.641, 0.645, 0.645, 0.646, 0.649, 0.652, 0.655, 0.658, 0.656, 0.655, 0.659, 0.668, 0.660, 0.672, 0.672, 0.665, 0.669, 0.662, 0.666, 0.669, 0.677, 0.673, 0.595, 0.642, 0.700, 0.623, 0.670, 0.704, 0.694, 0.000, 0.000, 0.667, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000};
250
251// Data 7 TeV 10d.pass2 + 10e.pass2 (Pt-Range: 0.15 - 2)
252Double_t nbinsData7[100] = {0.000, 0.495, 0.498, 0.505, 0.516, 0.528, 0.539, 0.550, 0.559, 0.566, 0.573, 0.579, 0.584, 0.589, 0.593, 0.597, 0.601, 0.605, 0.608, 0.611, 0.614, 0.617, 0.619, 0.622, 0.624, 0.626, 0.629, 0.631, 0.633, 0.634, 0.636, 0.638, 0.640, 0.642, 0.643, 0.645, 0.646, 0.648, 0.649, 0.651, 0.652, 0.654, 0.654, 0.656, 0.657, 0.658, 0.659, 0.660, 0.662, 0.662, 0.663, 0.665, 0.664, 0.665, 0.668, 0.667, 0.670, 0.666, 0.670, 0.670, 0.677, 0.673, 0.672, 0.679, 0.680, 0.667, 0.682, 0.687, 0.675, 0.658, 0.677, 0.663, 0.686, 0.671, 0.682, 0.683, 0.667, 0.000, 0.000, 0.662, 0.720, 0.683, 0.720, 0.622, 0.000, 0.729, 0.000, 0.603, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000};
253
254// -- End mean pT values for the multiplicity bins --
255
256
257// -- Selection of MC/Data and energy; whole sample values --
258
259if (fMC) { // - MC -
260
261 if (energy < 1000.) {
262
263// Printf(" -- MC, 900 GeV -- ");
264
265 evMptSample = 0.5307; // MC 900 GeV 10e13 (Pythia6 - Perugia0) (Pt-Range: 0.15 - 2)
266// evMptSample = 0.5044; // MC 900 GeV 10e12 (Phojet) (Pt-Range: 0.15 - 2)
267
268 nbins = nbinsMC900;
269 }
270 else {
271
272// Printf(" -- MC, 7 TeV -- ");
273
274 evMptSample = 0.5847; // MC 7 TeV 10f6a (Pythia6 - Perugia0) (Pt-Range: 0.15 - 2)
275// evMptSample = 0.5517; // MC 7 TeV 10f6 (Phojet) (Pt-Range: 0.15 - 2)
276
277 nbins = nbinsMC7;
278 }
279
280} // - End MC -
281else { // - Data -
282
283 if (energy < 1000.) {
284
285// Printf(" -- Data, 900 GeV -- ");
286
287 evMptSample = 0.5267; // Data 900 GeV 10c.pass3 (Pt-Range: 0.15 - 2)
288 nbins = nbinsData900;
289 }
290 else if (energy > 1000. && energy < 3000.) {
291
292// Printf(" -- Data, 2.76 TeV -- ");
293
294 evMptSample = 0.5622; // Data 2.76 TeV 11a.pass1 (Pt-Range: 0.15 - 2)
295 nbins = nbinsData276;
296 }
297 else {
298
299// Printf(" -- Data, 7 TeV -- ");
300
301 evMptSample = 0.5743; // Data 7 TeV 10d.pass2 + 10e.pass2 (Pt-Range: 0.15 - 2)
302 nbins = nbinsData7;
303 }
304
305} // - End data -
306
307// -- End selection of MC/Data and energy; whole sample values --
308
309// --- End mean pT values ---
310
311
312 nrESDTracks = fESD->GetNumberOfTracks();
313// if( nrESDTracks ) { printf("Found event with %i tracks.\n",nrESDTracks); }
314
315
316 // --- Loop over all tracks of one event ---
317
318 for (Int_t iTracks = 0; iTracks < nrESDTracks; iTracks++) {
319 AliESDtrack* track = fESD->GetTrack(iTracks);
320 if (!track) {
321 Printf("ERROR: Could not receive track %d\n", iTracks);
322 continue;
323 }
e6a162b1 324 if(!fESDTrackCuts) {
325 Printf("ERROR: No esd track cut");
326 continue;
327 }
328 else {
329 if(!fESDTrackCuts->AcceptTrack(track))
330 continue;
331 }
befb009c 332 trackPt = track->Pt();
333 fPtSpec->Fill(trackPt);
334 tracks[nrTracks] = trackPt;
335
336 trackEta = track->Eta();
337 fEta->Fill(trackEta);
338
339 trackPhi = track->Phi();
340
341 if (trackEta > 0.) {
342 fEtaPhiPlus->Fill(trackPhi);
343 }
344 else if (trackEta < 0.) {
345 fEtaPhiMinus->Fill(trackPhi);
346 }
347
348 sumPt = sumPt + trackPt;
349 nrTracks++;
350
351// printf("Track Pt = %.3f Track Eta = %.3f Track Phi = %3f\n",trackPt,trackEta,trackPhi);
352
353 } // --- End track loop ---
354
355
356 // --- Calculation of various values and filling of histograms (for remaining events with N_acc > 0) ---
357
358 if(nrTracks != 0) {
359
360 // VtxZ after all track cuts
361 fVtxZTrackCuts->Fill(vtxZ);
362
363 // Multiplicity distribution
364 fMult->Fill(nrTracks);
365
366 // Calculation of mean Pt and mean Pt Squared
367 eventMeanPt = sumPt / nrTracks;
368 eventMeanPtSq = eventMeanPt * eventMeanPt;
369
370 // Mean-Pt and Mean-Pt squared
371 fEventMeanPt->Fill(eventMeanPt);
372 fEventMeanPtSq->Fill(eventMeanPtSq);
373
374 // Mean-Pt and Mean-Pt squared depending on multiplicity
375 fMultEventMeanPt->Fill(nrTracks,eventMeanPt);
376 fMultEventMeanPtSq->Fill(nrTracks,eventMeanPtSq);
377
378// printf("nrTracks: %i sumPt: %.8f meanPt: %.8f meanPtSq: %.8f\n",nrTracks,sumPt,eventMeanPt,eventMeanPtSq);
379
380
381 // --- Two-particle correlator ---
382
383 evMptMult = nbins[nrTracks];
384// printf("nrTracks = %3i evMptMult = %.3f evMptSample = %.3f \n\n",nrTracks,evMptMult,evMptSample);
385
386 for (int i=0; i<nrTracks; i++) {
387
388// printf("--- TrackPt = %.3f ",tracks[i]);
389
390 for (int j=i+1; j<nrTracks; j++) {
391
392 twoPartCorrPair = (tracks[i] - evMptMult) * (tracks[j] - evMptMult); // Multiplicity bins
393 twoPartCorrEv = twoPartCorrEv + twoPartCorrPair;
394
395 twoPartCorrPairSample = (tracks[i] - evMptSample) * (tracks[j] - evMptSample); // Whole sample
396 twoPartCorrEvSample = twoPartCorrEvSample + twoPartCorrPairSample;
397
398// printf("twoPartCorrPair = %.3f twoPartCorrPairSample = %.3f \n",twoPartCorrPair,twoPartCorrPairSample);
399 }
400// printf("twoPartCorrEv = %.3f twoPartCorrEvSample = %.3f \n",twoPartCorrEv,twoPartCorrEvSamples);
401 }
402// printf("Total Event: twoPartCorrEv = %.3f twoPartCorrEvSample = %.3f \n\n",twoPartCorrEv,twoPartCorrEvSample);
403
404 // Multiplicity bins
405 twoPartCorrEvSq = twoPartCorrEv * twoPartCorrEv;
406 fTwoPartCorrEv->Fill(nrTracks,twoPartCorrEv);
407 fTwoPartCorrEvSq->Fill(nrTracks,twoPartCorrEvSq);
408
409 // Whole sample
410 twoPartCorrEvSampleSq = twoPartCorrEvSample * twoPartCorrEvSample;
411 fTwoPartCorrEvSample->Fill(nrTracks,twoPartCorrEvSample);
412 fTwoPartCorrEvSampleSq->Fill(nrTracks,twoPartCorrEvSampleSq);
413
414 // --- End two-particle correlator ---
415
416
417 } // --- End calculation of various values and filling of histograms ---
418
419
420 // Post output data
421 PostData(1, fOutputList);
422}
423
424void AliAnalysisTaskPtFluc::Terminate(Option_t *)
425{
426 // Draw result to the screen
427 // Called once at the end of the query
428
429 fOutputList = dynamic_cast<TList*> (GetOutputData(1));
430 if (!fOutputList) {
431 Printf("ERROR: fOutputList not available\n");
432 return;
433 }
434
435}