1 /*************************************************************************
2 * Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
16 /********************************
17 * flow analysis with cumulants *
19 * author: Ante Bilandzic *
21 *******************************/
23 #define AliFlowAnalysisWithCumulants_cxx
25 #include "Riostream.h"
26 #include "AliFlowCommonConstants.h"
27 #include "AliFlowCommonHist.h"
28 #include "AliFlowCommonHistResults.h"
31 #include "TList.h" //NEW
32 #include "TParticle.h"
35 #include "TProfile2D.h"
36 #include "TProfile3D.h"
37 #include "AliFlowEventSimple.h"
38 #include "AliFlowTrackSimple.h"
39 #include "AliFlowAnalysisWithCumulants.h"
40 #include "AliFlowCumuConstants.h"
56 //================================================================================================================
58 ClassImp(AliFlowAnalysisWithCumulants)
60 AliFlowAnalysisWithCumulants::AliFlowAnalysisWithCumulants():
72 fQVectorComponents(NULL),
73 fIntFlowResults(NULL),
74 fDiffFlowResults2(NULL),
75 fDiffFlowResults4(NULL),
76 fDiffFlowResults6(NULL),
77 fDiffFlowResults8(NULL),
79 fDiffFlowGenFunRe(NULL),
80 fDiffFlowGenFunIm(NULL),
81 fDiffFlowGenFunRe0(NULL),
82 fDiffFlowGenFunRe1(NULL),
83 fDiffFlowGenFunRe2(NULL),
84 fDiffFlowGenFunRe3(NULL),
85 fDiffFlowGenFunRe4(NULL),
86 fDiffFlowGenFunRe5(NULL),
87 fDiffFlowGenFunRe6(NULL),
88 fDiffFlowGenFunRe7(NULL),
89 fDiffFlowGenFunIm0(NULL),
90 fDiffFlowGenFunIm1(NULL),
91 fDiffFlowGenFunIm2(NULL),
92 fDiffFlowGenFunIm3(NULL),
93 fDiffFlowGenFunIm4(NULL),
94 fDiffFlowGenFunIm5(NULL),
95 fDiffFlowGenFunIm6(NULL),
96 fDiffFlowGenFunIm7(NULL),
98 fQDist(NULL)//q-distribution
101 fHistList = new TList();
102 fR0=AliFlowCumuConstants::fgR0;
103 fPtMax=AliFlowCommonConstants::GetPtMax();
104 fPtMin=AliFlowCommonConstants::GetPtMin();
105 fBinWidth=(fPtMax-fPtMin)/fgknBins;
108 AliFlowAnalysisWithCumulants::~AliFlowAnalysisWithCumulants()
114 //================================================================================================================
116 void AliFlowAnalysisWithCumulants::CreateOutputObjects()
118 //various output histograms
120 //avarage multiplicity
121 fAvMultIntFlow = new TProfile("fAvMultIntFlow","Avarage multiplicity of selected particles used for int. flow",1,0,1,0,100000);
122 fAvMultIntFlow->SetXTitle("");
123 fAvMultIntFlow->SetYTitle("<multiplicity>");
124 fHistList->Add(fAvMultIntFlow);
127 fQVectorComponents = new TProfile("fQVectorComponents","Avarage of Q-vector components",4,0.,4.);
128 fQVectorComponents->SetXTitle("");
129 fQVectorComponents->SetYTitle("< >");
130 fHistList->Add(fQVectorComponents);
132 //final results for integrated flow (v_n{2}, v_n{4},..., v_n{16}) from cumulants (by default n=2)
133 fIntFlowResults = new TH1D("fIntFlowResults","Integrated Flow From Cumulants",8,0,8);
134 fIntFlowResults->SetXTitle("");
135 fIntFlowResults->SetYTitle("Integrated Flow [%]");
136 fHistList->Add(fIntFlowResults);
138 //final results for differential flow v_p/n{2} (by default p=n=2)
139 fDiffFlowResults2 = new TH1D("fDiffFlowResults2","v'_2/2{2}",fgknBins,fPtMin,fPtMax);
140 fDiffFlowResults2->SetXTitle("pt [GeV]");
141 fDiffFlowResults2->SetYTitle("Differential Flow [%]");
142 fHistList->Add(fDiffFlowResults2);
144 //final results for differential flow v_p/n{4} (by default p=n=2)
145 fDiffFlowResults4 = new TH1D("fDiffFlowResults4","v'_2/2{4}",fgknBins,fPtMin,fPtMax);
146 fDiffFlowResults4->SetXTitle("pt [GeV]");
147 fDiffFlowResults4->SetYTitle("Differential Flow [%]");
148 fHistList->Add(fDiffFlowResults4);
150 //final results for differential flow v_p/n{6} (by default p=n=2)
151 fDiffFlowResults6 = new TH1D("fDiffFlowResults6","v'_2/2{6}",fgknBins,fPtMin,fPtMax);
152 fDiffFlowResults6->SetXTitle("pt [GeV]");
153 fDiffFlowResults6->SetYTitle("Differential Flow [%]");
154 fHistList->Add(fDiffFlowResults6);
156 //final results for differential flow v_p/n{8} (by default p=n=2)
157 fDiffFlowResults8 = new TH1D("fDiffFlowResults8","v'_2/2{8}",fgknBins,fPtMin,fPtMax);
158 fDiffFlowResults8->SetXTitle("pt [GeV]");
159 fDiffFlowResults8->SetYTitle("Differential Flow [%]");
160 fHistList->Add(fDiffFlowResults8);
162 //avarage of the generating function for integrated flow <G[p][q]>
163 fIntFlowGenFun = new TProfile2D("fIntFlowGenFun","<G[p][q]>",fgkPmax,0.,(Double_t)fgkPmax,fgkQmax,0.,(Double_t)fgkQmax);
164 fIntFlowGenFun->SetXTitle("p");
165 fIntFlowGenFun->SetYTitle("q");
166 fHistList->Add(fIntFlowGenFun);
169 //avarage of the real part of generating function for differential flow <Re(D[b][p][q])>
170 fDiffFlowGenFunRe = new TProfile3D("fDiffFlowGenFunRe","<Re(D[b][p][q])>",fgknBins,(Double_t)(fPtMin/fBinWidth),(Double_t)(fPtMax/fBinWidth),fgkPmax,0.,(Double_t)fgkPmax,fgkQmax,0.,(Double_t)fgkQmax);
171 fDiffFlowGenFunRe->SetXTitle("b");
172 fDiffFlowGenFunRe->SetYTitle("p");
173 fDiffFlowGenFunRe->SetZTitle("q");
174 fHistList->Add(fDiffFlowGenFunRe);
176 //avarage of the imaginary part of generating function for differential flow <Im(D[b][p][q])>
177 fDiffFlowGenFunIm = new TProfile3D("fDiffFlowGenFunIm","<Im(D[b][p][q])>",fgknBins,(Double_t)(fPtMin/fBinWidth),(Double_t)(fPtMax/fBinWidth),fgkPmax,0.,(Double_t)fgkPmax,fgkQmax,0.,(Double_t)fgkQmax);
178 fDiffFlowGenFunIm->SetXTitle("b");
179 fDiffFlowGenFunIm->SetYTitle("p");
180 fDiffFlowGenFunIm->SetZTitle("q");
181 fHistList->Add(fDiffFlowGenFunIm);
184 fDiffFlowGenFunRe0 = new TProfile2D("fDiffFlowGenFunRe0","Re(<D[b][0][q]>)",fgknBins,(Double_t)(fPtMin/fBinWidth),(Double_t)(fPtMax/fBinWidth),fgkQmax,0.,(Double_t)fgkQmax);
185 fDiffFlowGenFunRe0->SetXTitle("b");
186 fDiffFlowGenFunRe0->SetYTitle("q");
187 fHistList->Add(fDiffFlowGenFunRe0);
189 fDiffFlowGenFunIm0 = new TProfile2D("fDiffFlowGenFunIm0","Im(<D[b][0][q]>)",fgknBins,(Double_t)(fPtMin/fBinWidth),(Double_t)(fPtMax/fBinWidth),fgkQmax,0.,(Double_t)fgkQmax);
190 fDiffFlowGenFunIm0->SetXTitle("b");
191 fDiffFlowGenFunIm0->SetYTitle("q");
192 fHistList->Add(fDiffFlowGenFunIm0);
194 fDiffFlowGenFunRe1 = new TProfile2D("fDiffFlowGenFunRe1","Re(<D[b][1][q]>)",fgknBins,(Double_t)(fPtMin/fBinWidth),(Double_t)(fPtMax/fBinWidth),fgkQmax,0.,(Double_t)fgkQmax);
195 fDiffFlowGenFunRe1->SetXTitle("b");
196 fDiffFlowGenFunRe1->SetYTitle("q");
197 fHistList->Add(fDiffFlowGenFunRe1);
199 fDiffFlowGenFunIm1 = new TProfile2D("fDiffFlowGenFunIm1","Im(<D[b][1][q]>)",fgknBins,(Double_t)(fPtMin/fBinWidth),(Double_t)(fPtMax/fBinWidth),fgkQmax,0.,(Double_t)fgkQmax);
200 fDiffFlowGenFunIm1->SetXTitle("b");
201 fDiffFlowGenFunIm1->SetYTitle("q");
202 fHistList->Add(fDiffFlowGenFunIm1);
204 fDiffFlowGenFunRe2 = new TProfile2D("fDiffFlowGenFunRe2","Re(<D[b][2][q]>)",fgknBins,(Double_t)(fPtMin/fBinWidth),(Double_t)(fPtMax/fBinWidth),fgkQmax,0.,(Double_t)fgkQmax);
205 fDiffFlowGenFunRe2->SetXTitle("b");
206 fDiffFlowGenFunRe2->SetYTitle("q");
207 fHistList->Add(fDiffFlowGenFunRe2);
209 fDiffFlowGenFunIm2 = new TProfile2D("fDiffFlowGenFunIm2","Im(<D[b][2][q]>)",fgknBins,(Double_t)(fPtMin/fBinWidth),(Double_t)(fPtMax/fBinWidth),fgkQmax,0.,(Double_t)fgkQmax);
210 fDiffFlowGenFunIm2->SetXTitle("b");
211 fDiffFlowGenFunIm2->SetYTitle("q");
212 fHistList->Add(fDiffFlowGenFunIm2);
214 fDiffFlowGenFunRe3 = new TProfile2D("fDiffFlowGenFunRe3","Re(<D[b][3][q]>)",fgknBins,(Double_t)(fPtMin/fBinWidth),(Double_t)(fPtMax/fBinWidth),fgkQmax,0.,(Double_t)fgkQmax);
215 fDiffFlowGenFunRe3->SetXTitle("b");
216 fDiffFlowGenFunRe3->SetYTitle("q");
217 fHistList->Add(fDiffFlowGenFunRe3);
219 fDiffFlowGenFunIm3 = new TProfile2D("fDiffFlowGenFunIm3","Im(<D[b][3][q]>)",fgknBins,(Double_t)(fPtMin/fBinWidth),(Double_t)(fPtMax/fBinWidth),fgkQmax,0.,(Double_t)fgkQmax);
220 fDiffFlowGenFunIm3->SetXTitle("b");
221 fDiffFlowGenFunIm3->SetYTitle("q");
222 fHistList->Add(fDiffFlowGenFunIm3);
224 fDiffFlowGenFunRe4 = new TProfile2D("fDiffFlowGenFunRe4","Re(<D[b][4][q]>)",fgknBins,(Double_t)(fPtMin/fBinWidth),(Double_t)(fPtMax/fBinWidth),fgkQmax,0.,(Double_t)fgkQmax);
225 fDiffFlowGenFunRe4->SetXTitle("b");
226 fDiffFlowGenFunRe4->SetYTitle("q");
227 fHistList->Add(fDiffFlowGenFunRe4);
229 fDiffFlowGenFunIm4 = new TProfile2D("fDiffFlowGenFunIm4","Im(<D[b][4][q]>)",fgknBins,(Double_t)(fPtMin/fBinWidth),(Double_t)(fPtMax/fBinWidth),fgkQmax,0.,(Double_t)fgkQmax);
230 fDiffFlowGenFunIm4->SetXTitle("b");
231 fDiffFlowGenFunIm4->SetYTitle("q");
232 fHistList->Add(fDiffFlowGenFunIm4);
234 fDiffFlowGenFunRe5 = new TProfile2D("fDiffFlowGenFunRe5","Re(<D[b][5][q]>)",fgkQmax,0.,(Double_t)fgkQmax,fgknBins,(Double_t)(fPtMin/fBinWidth),(Double_t)(fPtMax/fBinWidth));
235 fDiffFlowGenFunRe5->SetXTitle("b");
236 fDiffFlowGenFunRe5->SetYTitle("q");
237 fHistList->Add(fDiffFlowGenFunRe5);
239 fDiffFlowGenFunIm5 = new TProfile2D("fDiffFlowGenFunIm5","Im(<D[b][5][q]>)",fgknBins,(Double_t)(fPtMin/fBinWidth),(Double_t)(fPtMax/fBinWidth),fgkQmax,0.,(Double_t)fgkQmax);
240 fDiffFlowGenFunIm5->SetXTitle("b");
241 fDiffFlowGenFunIm5->SetYTitle("q");
242 fHistList->Add(fDiffFlowGenFunIm5);
244 fDiffFlowGenFunRe6 = new TProfile2D("fDiffFlowGenFunRe6","Re(<D[b][6][q]>)",fgknBins,(Double_t)(fPtMin/fBinWidth),(Double_t)(fPtMax/fBinWidth),fgkQmax,0.,(Double_t)fgkQmax);
245 fDiffFlowGenFunRe6->SetXTitle("b");
246 fDiffFlowGenFunRe6->SetYTitle("q");
247 fHistList->Add(fDiffFlowGenFunRe6);
249 fDiffFlowGenFunIm6 = new TProfile2D("fDiffFlowGenFunIm6","Im(<D[b][6][q]>)",fgknBins,(Double_t)(fPtMin/fBinWidth),(Double_t)(fPtMax/fBinWidth),fgkQmax,0.,(Double_t)fgkQmax);
250 fDiffFlowGenFunIm6->SetXTitle("b");
251 fDiffFlowGenFunIm6->SetYTitle("q");
252 fHistList->Add(fDiffFlowGenFunIm6);
254 fDiffFlowGenFunRe7 = new TProfile2D("fDiffFlowGenFunRe7","Re(<D[b][7][q]>)",fgknBins,(Double_t)(fPtMin/fBinWidth),(Double_t)(fPtMax/fBinWidth),fgkQmax,0.,(Double_t)fgkQmax);
255 fDiffFlowGenFunRe7->SetXTitle("b");
256 fDiffFlowGenFunRe7->SetYTitle("q");
257 fHistList->Add(fDiffFlowGenFunRe7);
259 fDiffFlowGenFunIm7 = new TProfile2D("fDiffFlowGenFunIm7","Im(<D[b][7][q]>)",fgknBins,(Double_t)(fPtMin/fBinWidth),(Double_t)(fPtMax/fBinWidth),fgkQmax,0.,(Double_t)fgkQmax);
260 fDiffFlowGenFunIm7->SetXTitle("b");
261 fDiffFlowGenFunIm7->SetYTitle("q");
262 fHistList->Add(fDiffFlowGenFunIm7);
264 //common control histograms
265 fCommonHists = new AliFlowCommonHist("Cumulants");
266 fHistList->Add(fCommonHists->GetHistList());
269 fQDist = new TH1D("fQDist","q-distribution",100,0,10);
270 fQDist->SetXTitle("q=Q/#sqrt{M}");
271 fQDist->SetYTitle("dN_{event}/dq");
272 fHistList->Add(fQDist);
274 }//end of CreateOutputObjects()
276 //================================================================================================================
278 void AliFlowAnalysisWithCumulants::Make(AliFlowEventSimple* anEvent)
282 //fill the common control histograms
283 fCommonHists->FillControlHistograms(anEvent);
285 //initializing the generating function G[p][q] for integrated flow
286 Double_t G[fgkPmax][fgkQmax];
287 for(Int_t p=0;p<fgkPmax;p++){
288 for(Int_t q=0;q<fgkQmax;q++){
293 Int_t nPrim = anEvent->NumberOfTracks();//total multiplicity
294 Int_t nEventNSelTracksIntFlow = anEvent->GetEventNSelTracksIntFlow();//selected multiplicity (parrticles used for int. flow)
295 Int_t nSelTracksIntFlow = 0;//cross-checking the selected multiplicity
297 //first loop over data: evaluating the generating function G[p][q] for integrated flow
298 for(Int_t i=0;i<nPrim;i++){
299 fTrack=anEvent->GetTrack(i);
300 if(fTrack&&fTrack->UseForIntegratedFlow()){
302 for(Int_t p=0;p<fgkPmax;p++){
303 for(Int_t q=0;q<fgkQmax;q++){
304 G[p][q]*=(1.+(2.*fR0*sqrt(p+1.)/nEventNSelTracksIntFlow)*cos(fgkFlow*fTrack->Phi()-2.*q*TMath::Pi()/fgkQmax));
308 }//ending the first loop over data
310 //storing the value of G[p][q] in 2D profile in order to get automatically the avarage <G[p][q]>
311 for(Int_t p=0;p<fgkPmax;p++){
312 for(Int_t q=0;q<fgkQmax;q++){
313 fIntFlowGenFun->Fill((Double_t)p,(Double_t)q,G[p][q],1);
317 //storing the selected multiplicity (if fAvMultIntFlow is not filled here then you had wrongly selected the particles used for integrated flow)
318 if(nSelTracksIntFlow==nEventNSelTracksIntFlow)
320 fAvMultIntFlow->Fill(0.,nSelTracksIntFlow,1);
323 //calculating Q-vector of event (needed for errors)
324 AliFlowVector fQVector;
327 fQVector=anEvent->GetQ(); //get the Q vector for this event
328 fQVectorComponents->Fill(0.,fQVector.X(),1); //in the 1st bin fill Q_x
329 fQVectorComponents->Fill(1.,fQVector.Y(),1); //in the 2nd bin fill Q_y
330 fQVectorComponents->Fill(2.,pow(fQVector.X(),2.),1); //in the 3rd bin fill (Q_x)^2
331 fQVectorComponents->Fill(3.,pow(fQVector.Y(),2.),1); //in the 4th bin fill (Q_y)^2
334 Double_t qDist = fQVector.Mod()/sqrt(fQVector.GetMult());
335 fQDist->Fill(qDist,1);
338 //two 3D profiles for differential flow
339 //second loop over data: evaluating the generating function D[b][p][q] for differential flow
340 //remark 0: D[b][p][q] is a complex number => real and imaginary part are calculated separately
341 //remark 1: note that below G[p][q] is needed, the value of generating function for integrated flow for the CURRENT event
342 //remark 2: results are stored in two 3D profiles in order to automatically get <Re(D[b][p][q])> and <Im(D[b][p][q])>
343 for(Int_t i=0;i<nPrim;i++){
344 fTrack=anEvent->GetTrack(i);
345 if (fTrack && fTrack->UseForDifferentialFlow()){
346 for(Int_t p=0;p<fgkPmax;p++){
347 for(Int_t q=0;q<fgkQmax;q++){
349 fDiffFlowGenFunRe->Fill(fTrack->Pt()/fBinWidth,(Double_t)p,(Double_t)q,G[p][q]*cos(fgkMltpl*fgkFlow*fTrack->Phi())/(1.+(2.*fR0*sqrt(p+1.)/nSelTracksIntFlow)*cos(fgkFlow*fTrack->Phi()-2.*q*TMath::Pi()/fgkQmax)),1.);
351 fDiffFlowGenFunIm->Fill(fTrack->Pt()/fBinWidth,(Double_t)p,(Double_t)q,G[p][q]*sin(fgkMltpl*fgkFlow*fTrack->Phi())/(1.+(2.*fR0*sqrt(p+1.)/nSelTracksIntFlow)*cos(fgkFlow*fTrack->Phi()-2.*q*TMath::Pi()/fgkQmax)),1.);
355 }//ending the second loop over data
358 //sixteen 2D profiles for differential flow
359 for(Int_t i=0;i<nPrim;i++){
360 fTrack=anEvent->GetTrack(i);
361 if (fTrack && fTrack->UseForDifferentialFlow()){
362 //for(Int_t p=0;p<fgkPmax;p++){
363 for(Int_t q=0;q<fgkQmax;q++){
365 fDiffFlowGenFunRe0->Fill(fTrack->Pt()/fBinWidth,(Double_t)q,G[0][q]*cos(fgkMltpl*fgkFlow*fTrack->Phi())/(1.+(2.*fR0*sqrt(0.+1.)/nSelTracksIntFlow)*cos(fgkFlow*fTrack->Phi()-2.*q*TMath::Pi()/fgkQmax)),1.);
367 fDiffFlowGenFunIm0->Fill(fTrack->Pt()/fBinWidth,(Double_t)q,G[0][q]*sin(fgkMltpl*fgkFlow*fTrack->Phi())/(1.+(2.*fR0*sqrt(0.+1.)/nSelTracksIntFlow)*cos(fgkFlow*fTrack->Phi()-2.*q*TMath::Pi()/fgkQmax)),1.);
368 //-----------------------------------------------------------------------
370 fDiffFlowGenFunRe1->Fill(fTrack->Pt()/fBinWidth,(Double_t)q,G[1][q]*cos(fgkMltpl*fgkFlow*fTrack->Phi())/(1.+(2.*fR0*sqrt(1.+1.)/nSelTracksIntFlow)*cos(fgkFlow*fTrack->Phi()-2.*q*TMath::Pi()/fgkQmax)),1.);
372 fDiffFlowGenFunIm1->Fill(fTrack->Pt()/fBinWidth,(Double_t)q,G[1][q]*sin(fgkMltpl*fgkFlow*fTrack->Phi())/(1.+(2.*fR0*sqrt(1.+1.)/nSelTracksIntFlow)*cos(fgkFlow*fTrack->Phi()-2.*q*TMath::Pi()/fgkQmax)),1.);
373 //-----------------------------------------------------------------------
375 fDiffFlowGenFunRe2->Fill(fTrack->Pt()/fBinWidth,(Double_t)q,G[2][q]*cos(fgkMltpl*fgkFlow*fTrack->Phi())/(1.+(2.*fR0*sqrt(2.+1.)/nSelTracksIntFlow)*cos(fgkFlow*fTrack->Phi()-2.*q*TMath::Pi()/fgkQmax)),1.);
377 fDiffFlowGenFunIm2->Fill(fTrack->Pt()/fBinWidth,(Double_t)q,G[2][q]*sin(fgkMltpl*fgkFlow*fTrack->Phi())/(1.+(2.*fR0*sqrt(2.+1.)/nSelTracksIntFlow)*cos(fgkFlow*fTrack->Phi()-2.*q*TMath::Pi()/fgkQmax)),1.);
378 //-----------------------------------------------------------------------
380 fDiffFlowGenFunRe3->Fill(fTrack->Pt()/fBinWidth,(Double_t)q,G[3][q]*cos(fgkMltpl*fgkFlow*fTrack->Phi())/(1.+(2.*fR0*sqrt(3.+1.)/nSelTracksIntFlow)*cos(fgkFlow*fTrack->Phi()-2.*q*TMath::Pi()/fgkQmax)),1.);
382 fDiffFlowGenFunIm3->Fill(fTrack->Pt()/fBinWidth,(Double_t)q,G[3][q]*sin(fgkMltpl*fgkFlow*fTrack->Phi())/(1.+(2.*fR0*sqrt(3.+1.)/nSelTracksIntFlow)*cos(fgkFlow*fTrack->Phi()-2.*q*TMath::Pi()/fgkQmax)),1.);
383 //-----------------------------------------------------------------------
385 fDiffFlowGenFunRe4->Fill(fTrack->Pt()/fBinWidth,(Double_t)q,G[4][q]*cos(fgkMltpl*fgkFlow*fTrack->Phi())/(1.+(2.*fR0*sqrt(4.+1.)/nSelTracksIntFlow)*cos(fgkFlow*fTrack->Phi()-2.*q*TMath::Pi()/fgkQmax)),1.);
387 fDiffFlowGenFunIm4->Fill(fTrack->Pt()/fBinWidth,(Double_t)q,G[4][q]*sin(fgkMltpl*fgkFlow*fTrack->Phi())/(1.+(2.*fR0*sqrt(4.+1.)/nSelTracksIntFlow)*cos(fgkFlow*fTrack->Phi()-2.*q*TMath::Pi()/fgkQmax)),1.);
388 //-----------------------------------------------------------------------
390 fDiffFlowGenFunRe5->Fill(fTrack->Pt()/fBinWidth,(Double_t)q,G[5][q]*cos(fgkMltpl*fgkFlow*fTrack->Phi())/(1.+(2.*fR0*sqrt(5.+1.)/nSelTracksIntFlow)*cos(fgkFlow*fTrack->Phi()-2.*q*TMath::Pi()/fgkQmax)),1.);
392 fDiffFlowGenFunIm5->Fill(fTrack->Pt()/fBinWidth,(Double_t)q,G[5][q]*sin(fgkMltpl*fgkFlow*fTrack->Phi())/(1.+(2.*fR0*sqrt(5.+1.)/nSelTracksIntFlow)*cos(fgkFlow*fTrack->Phi()-2.*q*TMath::Pi()/fgkQmax)),1.);
393 //-----------------------------------------------------------------------
395 fDiffFlowGenFunRe6->Fill(fTrack->Pt()/fBinWidth,(Double_t)q,G[6][q]*cos(fgkMltpl*fgkFlow*fTrack->Phi())/(1.+(2.*fR0*sqrt(6.+1.)/nSelTracksIntFlow)*cos(fgkFlow*fTrack->Phi()-2.*q*TMath::Pi()/fgkQmax)),1.);
397 fDiffFlowGenFunIm6->Fill(fTrack->Pt()/fBinWidth,(Double_t)q,G[6][q]*sin(fgkMltpl*fgkFlow*fTrack->Phi())/(1.+(2.*fR0*sqrt(6.+1.)/nSelTracksIntFlow)*cos(fgkFlow*fTrack->Phi()-2.*q*TMath::Pi()/fgkQmax)),1.);
398 //-----------------------------------------------------------------------
400 fDiffFlowGenFunRe7->Fill(fTrack->Pt()/fBinWidth,(Double_t)q,G[7][q]*cos(fgkMltpl*fgkFlow*fTrack->Phi())/(1.+(2.*fR0*sqrt(7.+1.)/nSelTracksIntFlow)*cos(fgkFlow*fTrack->Phi()-2.*q*TMath::Pi()/fgkQmax)),1.);
402 fDiffFlowGenFunIm7->Fill(fTrack->Pt()/fBinWidth,(Double_t)q,G[7][q]*sin(fgkMltpl*fgkFlow*fTrack->Phi())/(1.+(2.*fR0*sqrt(7.+1.)/nSelTracksIntFlow)*cos(fgkFlow*fTrack->Phi()-2.*q*TMath::Pi()/fgkQmax)),1.);
406 }//ending the second loop over data
410 //================================================================================================================
412 void AliFlowAnalysisWithCumulants::Finish()
414 //not needed for the time being...