1 #define AliFlowAnalysisWithCumulants_cxx
4 #include "AliFlowCommonConstants.h"
5 #include "AliFlowCommonHist.h"
6 #include "AliFlowCommonHistResults.h"
11 #include "AliFlowEventSimple.h"
12 #include "AliFlowTrackSimple.h"
13 #include "AliFlowAnalysisWithCumulants.h"
14 #include "AliFlowCumuConstants.h"
31 //*******************************
32 // flow analysis with cumulants *
33 // author: Ante Bilandzic *
34 // email: anteb@nikhef.nl *
35 //*******************************
37 ClassImp(AliFlowAnalysisWithCumulants)
39 //________________________________________________________________________
41 AliFlowAnalysisWithCumulants::AliFlowAnalysisWithCumulants():
64 fR0=AliFlowCumuConstants::fgR0;
65 fPtMax=AliFlowCommonConstants::GetPtMax();
66 fPtMin=AliFlowCommonConstants::GetPtMin();
67 fBinWidth=(fPtMax-fPtMin)/fgknBins;
69 for(Int_t n=0;n<fgknBins;n++){
70 fBinEventEntries[n]=0;
71 fBinNoOfParticles[n]=0;
73 for(Int_t p=0;p<fgkPmax;p++){
74 for(Int_t q=0;q<fgkQmax;q++){
76 fBinEventDRe[n][p][q]=0;
77 fBinEventDIm[n][p][q]=0;
83 //________________________________________________________________________
85 AliFlowAnalysisWithCumulants::AliFlowAnalysisWithCumulants(const AliFlowAnalysisWithCumulants&):
108 fR0=AliFlowCumuConstants::fgR0;
109 fPtMax=AliFlowCommonConstants::GetPtMax();
110 fPtMin=AliFlowCommonConstants::GetPtMin();
111 fBinWidth=(fPtMax-fPtMin)/fgknBins;
113 for(Int_t n=0;n<fgknBins;n++){
114 fBinEventEntries[n]=0;
115 fBinNoOfParticles[n]=0;
117 for(Int_t p=0;p<fgkPmax;p++){
118 for(Int_t q=0;q<fgkQmax;q++){
120 fBinEventDRe[n][p][q]=0;
121 fBinEventDIm[n][p][q]=0;
127 AliFlowAnalysisWithCumulants::~AliFlowAnalysisWithCumulants(){
131 AliFlowAnalysisWithCumulants& AliFlowAnalysisWithCumulants::operator=(const AliFlowAnalysisWithCumulants&)
136 //___________________________________________________________________________
137 void AliFlowAnalysisWithCumulants::CreateOutputObjects(){
139 TString fHistFileName = "cumulants.root";
140 fHistFile = new TFile(fHistFileName.Data(),"RECREATE");
141 fCommonHists = new AliFlowCommonHist("Cumulants");//control histograms
142 fCommonHistsRes2 = new AliFlowCommonHistResults("Cumulants2");
143 fCommonHistsRes4 = new AliFlowCommonHistResults("Cumulants4");
144 fCommonHistsRes6 = new AliFlowCommonHistResults("Cumulants6");
145 fCommonHistsRes8 = new AliFlowCommonHistResults("Cumulants8");
148 //________________________________________________________________________
149 void AliFlowAnalysisWithCumulants::Exec(AliFlowEventSimple* fEvent) {
152 fCommonHists->FillControlHistograms(fEvent);
154 Double_t fG[fgkPmax][fgkQmax];//generating function for integrated flow
155 for(Int_t p=0;p<fgkPmax;p++){
156 for(Int_t q=0;q<fgkQmax;q++){
161 //---------------------------------------------------------
163 AliFlowVector fQVector;
167 fQVector=fEvent->GetQ();//get the Q vector for this event
171 fAvQ2x+=pow(fQVector.X(),2.);
172 fAvQ2y+=pow(fQVector.Y(),2.);
173 //----------------------------------------------------------
175 Int_t fnPrim = fEvent->NumberOfTracks();
176 Int_t fEventNSelTracksIntFlow = fEvent->GetEventNSelTracksIntFlow();
177 Int_t fSelTracksIntFlow = 0;
179 cout<<"Number of input tracks for cumulant analysis: "<<fnPrim<<endl;
180 cout<<"Number of selected tracks for cumulant analysis: "<<fEventNSelTracksIntFlow<<endl;
182 //------------------------------------------------------------------------------------
183 //STARTING THE FIRST LOOP (CALCULATING THE GENERATING FUNCTION FOR INTEGRATED FLOW)
184 for(Int_t i=0;i<fnPrim;i++){
185 fTrack=fEvent->GetTrack(i);
186 if(fTrack&&fTrack->UseForIntegratedFlow()){
188 for(Int_t p=0;p<fgkPmax;p++){
189 for(Int_t q=0;q<fgkQmax;q++){
190 fG[p][q]*=(1.+(2.*fR0*sqrt(p+1.)/fEventNSelTracksIntFlow)*cos(fgkFlow*fTrack->Phi()-2.*q*TMath::Pi()/fgkQmax));
195 // ENDING THE FIRST LOOP OVER TRACKS
196 //------------------------------------------------------------------------------------
199 //------------------------------------------------------------------------------------
200 //avarage multiplicity
201 fAvM+=fSelTracksIntFlow;
202 //avarage of the generating function for integrated flow
203 for(Int_t p=0;p<fgkPmax;p++){
204 for(Int_t q=0;q<fgkQmax;q++){
205 fAvG[p][q]+=1.*fG[p][q];
208 //------------------------------------------------------------------------------------
211 //STARTING WITH DIFFERENTIAL FLOW...
212 Int_t fBinEntries[fgknBins]={0};//stores the number of particles per bin for the current event
213 Double_t fNumDRe[fgknBins][fgkPmax][fgkQmax]={0.};//real part of the numerator of D (see relation (10) in PG)
214 Double_t fNumDIm[fgknBins][fgkPmax][fgkQmax]={0.};//imaginary part of the numerator D
216 //------------------------------------------------------------------------------------------------
217 //STARTING THE SECOND LOOP OVER TRACKS (CALCULATING THE GENERATING FUNCTION FOR DIFFERENTIAL FLOW)
218 for(Int_t i=0;i<fnPrim;i++){
219 fTrack=fEvent->GetTrack(i);
220 if (fTrack && fTrack->UseForDifferentialFlow()) {
221 Int_t fBin=TMath::Nint(floor(fTrack->Pt()/fBinWidth));
222 if(fBin>=fgknBins)continue;//ignoring the particles with pt>ptMax
223 fBinNoOfParticles[fBin]++;
225 fBinMeanPt[fBin]+=fTrack->Pt();
226 for(Int_t p=0;p<fgkPmax;p++){
227 for(Int_t q=0;q<fgkQmax;q++){
228 fNumDRe[fBin][p][q]+=fG[p][q]*cos(fgkMltpl*fgkFlow*fTrack->Phi())/
229 (1.+(2.*fR0*sqrt(p+1.)/fSelTracksIntFlow) *
230 cos(fgkFlow*fTrack->Phi()-2.*q*TMath::Pi()/fgkQmax));
231 fNumDIm[fBin][p][q]+=fG[p][q]*sin(fgkMltpl*fgkFlow*fTrack->Phi())/
232 (1.+(2.*fR0*sqrt(p+1.)/fSelTracksIntFlow) *
233 cos(fgkFlow*fTrack->Phi()-2.*q*TMath::Pi()/fgkQmax));
238 //ENDING THE SECOND LOOP OVER TRACKS
239 //-----------------------------------------------------------------------------------------------
243 //----------------------------------------------------------
244 //AVARAGING OVER ALL pt BINS WITHIN ONE EVENT
245 for(Int_t b=0;b<fgknBins;b++){
246 if(fBinEntries[b]==0)continue;
247 fBinEventEntries[b]++;
248 for(Int_t p=0;p<fgkPmax;p++){
249 for(Int_t q=0;q<fgkQmax;q++){
250 fBinEventDRe[b][p][q]+=fNumDRe[b][p][q]/fBinEntries[b];
251 fBinEventDIm[b][p][q]+=fNumDIm[b][p][q]/fBinEntries[b];
255 //----------------------------------------------------------
258 //________________________________________________________________________
259 void AliFlowAnalysisWithCumulants::Terminate(Int_t fCount){
262 cout<<"***************************************"<<endl;
263 cout<<"**** results of cumulant analysis: ****"<<endl;
264 cout<<"***************************************"<<endl;
266 cout<<"nEvts = "<<fCount<<endl;
270 //final avarage multiplicity
273 //final avarage of generating function for the integrated flow
274 for(Int_t p=0;p<fgkPmax;p++){
275 for(Int_t q=0;q<fgkQmax;q++){
280 //final avarage of the Q vector stuff
286 /////////////////////////////////////////////////////////////////////////////
287 //////////////////gen. function for the cumulants////////////////////////////
288 /////////////////////////////////////////////////////////////////////////////
290 Double_t fC[fgkPmax][fgkQmax]={0.};
291 for (Int_t p=0;p<fgkPmax;p++){
292 for (Int_t q=0;q<fgkQmax;q++){
293 fC[p][q]=1.*fAvM*(pow(fAvG[p][q],(1./fAvM))-1.);
297 /////////////////////////////////////////////////////////////////////////////
298 ///////avaraging the gen. function for the cumulants over azimuth////////////
299 /////////////////////////////////////////////////////////////////////////////
301 Double_t fCAv[fgkPmax]={0.};
302 for (Int_t p=0;p<fgkPmax;p++){
303 Double_t fTempHere=0.;
304 for (Int_t q=0;q<fgkQmax;q++){
305 fTempHere+=1.*fC[p][q];
307 fCAv[p]=1.*fTempHere/fgkQmax;
310 /////////////////////////////////////////////////////////////////////////////
311 //////////////////////////////////final results//////////////////////////////
312 /////////////////////////////////////////////////////////////////////////////
314 Double_t fCumulant[fgkPmax];//c_{iFlow}\{2(p+1)\}
316 fCumulant[0]=(1./(fR0*fR0)) * (8.*fCAv[0] - 14.*fCAv[1] + (56./3.)*fCAv[2] - (35./2.)*fCAv[3] +
317 (56./5.)*fCAv[4] - (14./3.)*fCAv[5] + (8./7.)*fCAv[6] - (1./8.)*fCAv[7]);
319 fCumulant[1]=(1./pow(fR0,4.)) * ((-1924./35.)*fCAv[0] + (621./5.)*fCAv[1] - (8012./45.)*fCAv[2] +
320 (691./4.)*fCAv[3] - (564./5.)*fCAv[4] + (2143./45.)*fCAv[5] -
321 (412./35.)*fCAv[6] + (363./280.)*fCAv[7]);
323 fCumulant[2]=(1./pow(fR0,6.)) * (349.*fCAv[0] - (18353./20.)*fCAv[1] + (7173./5.)*fCAv[2] -
324 1457.*fCAv[3] + (4891./5.)*fCAv[4] - (1683./4.)*fCAv[5] +
325 (527./5.)*fCAv[6] - (469./40.)*fCAv[7]);
327 fCumulant[3]=(1./pow(fR0,8.)) * ((-10528./5.)*fCAv[0] + (30578./5.)*fCAv[1] - (51456./5.)*fCAv[2] +
328 10993.*fCAv[3] - (38176./5.)*fCAv[4] + (16818./5.)*fCAv[5] -
329 (4288./5.)*fCAv[6] + (967./10.)*fCAv[7]);
331 fCumulant[4]=(1./pow(fR0,10.)) * (11500.*fCAv[0] - 35800.*fCAv[1] + 63900.*fCAv[2] - 71600.*fCAv[3] +
332 51620.*fCAv[4] - 23400.*fCAv[5] + 6100.*fCAv[6] - 700.*fCAv[7]);
334 fCumulant[5]=(1./pow(fR0,12.)) * (-52560.*fCAv[0] + 172080.*fCAv[1] - 321840.*fCAv[2] + 376200.*fCAv[3] -
335 281520.*fCAv[4] + 131760.*fCAv[5] - 35280.*fCAv[6] + 4140.*fCAv[7]);
337 fCumulant[6]=(1./pow(fR0,14.)) * (176400.*fCAv[0] - 599760.*fCAv[1] + 1164240.*fCAv[2] - 1411200.*fCAv[3] +
338 1093680.*fCAv[4] - 529200.*fCAv[5] + 146160.*fCAv[6] - 17640.*fCAv[7]);
340 fCumulant[7]=(1./pow(fR0,16.)) * (-322560*fCAv[0] + 1128960.*fCAv[1] - 2257920.*fCAv[2] + 2822400.*fCAv[3] -
341 2257920.*fCAv[4] + 1128960.*fCAv[5] - 322560.*fCAv[6] + 40320.*fCAv[7]);
344 cout<<"***************************"<<endl;
345 cout<<"cumulants:"<<endl;
347 cout<<" c_"<<fgkFlow<<"{2} = "<<fCumulant[0]<<endl;
348 cout<<" c_"<<fgkFlow<<"{4} = "<<fCumulant[1]<<endl;
349 cout<<" c_"<<fgkFlow<<"{6} = "<<fCumulant[2]<<endl;
350 cout<<" c_"<<fgkFlow<<"{8} = "<<fCumulant[3]<<endl;
351 cout<<"c_"<<fgkFlow<<"{10} = "<<fCumulant[4]<<endl;
352 cout<<"c_"<<fgkFlow<<"{12} = "<<fCumulant[5]<<endl;
353 cout<<"c_"<<fgkFlow<<"{14} = "<<fCumulant[6]<<endl;
354 cout<<"c_"<<fgkFlow<<"{16} = "<<fCumulant[7]<<endl;
356 cout<<"integrated flow: "<<endl;
358 Double_t fV2=0.,fV4=0.,fV6=0.,fV8=0.;
359 Double_t fSdQ[4]={0.};
360 Double_t fChiQ[4]={0.};
361 if (fCumulant[0]>=0.){
362 fV2=sqrt(fCumulant[0]);
363 fChiQ[0]=fAvM*fV2/pow(fAvQ2x+fAvQ2y-pow(fAvQx,2.)-pow(fAvQy,2.)-pow(fV2*fAvM,2.),0.5);
364 fSdQ[0]=pow(((1./(2.*fAvM*fnEvts))*((1.+1.*pow(fChiQ[0],2))/(1.*pow(fChiQ[0],2)))),0.5);
365 cout<<" v_"<<fgkFlow<<"{2} = "<<100.*fV2<<"%, chi{2} = "<<fChiQ[0]<<", sd{2} = "<<100.*fSdQ[0]<<"%"<<endl;
366 fCommonHistsRes2->FillIntegratedFlow(100.*fV2,100.*fSdQ[0]);
367 fCommonHistsRes2->FillChi(fChiQ[0]);
369 cout<<" v_"<<fgkFlow<<"{2} = Im"<<endl;
371 if (fCumulant[1]<=0.){
372 fV4=pow(-fCumulant[1],(1./4.));
373 fChiQ[1]=fAvM*fV4/pow(fAvQ2x+fAvQ2y-pow(fAvQx,2.)-pow(fAvQy,2.)-pow(fV4*fAvM,2.),0.5);
374 fSdQ[1]=(1./(pow(2.*fAvM*fnEvts,.5)))*pow((1.+2.*pow(fChiQ[1],2)+(1./4.)*pow(fChiQ[1],4.)+(1./4.)*pow(fChiQ[1],6.))/((1./4.)*pow(fChiQ[1],6.)),.5);
375 cout<<" v_"<<fgkFlow<<"{4} = "<<100.*fV4<<"%, chi{4} = "<<fChiQ[1]<<", sd{4} = "<<100.*fSdQ[1]<<"%"<<endl;
376 fCommonHistsRes4->FillIntegratedFlow(100.*fV4,100.*fSdQ[1]);
377 fCommonHistsRes4->FillChi(fChiQ[1]);
379 cout<<" v_"<<fgkFlow<<"{4} = Im"<<endl;
381 if (fCumulant[2]>=0.){
382 fV6=pow((1./4.)*fCumulant[2],(1./6.));
383 fChiQ[2]=fAvM*fV6/pow(fAvQ2x+fAvQ2y-pow(fAvQx,2.)-pow(fAvQy,2.)-pow(fV6*fAvM,2.),0.5);
384 fSdQ[2]=(1./(pow(2.*fAvM*fnEvts,.5)))*pow((3.+18.*pow(fChiQ[2],2)+9.*pow(fChiQ[2],4.)+28.*pow(fChiQ[2],6.)+12.*pow(fChiQ[2],8.)+24.*pow(fChiQ[2],10.))/(24.*pow(fChiQ[2],10.)),.5);
385 cout<<" v_"<<fgkFlow<<"{6} = "<<100.*fV6<<"%, chi{6} = "<<fChiQ[2]<<", sd{6} = "<<100.*fSdQ[2]<<"%"<<endl;
386 fCommonHistsRes6->FillIntegratedFlow(100.*fV6,100.*fSdQ[2]);
387 fCommonHistsRes6->FillChi(fChiQ[2]);
389 cout<<" v_"<<fgkFlow<<"{6} = Im"<<endl;
391 if (fCumulant[3]<=0.){
392 fV8=pow(-(1./33.)*fCumulant[3],(1./8.));
393 fChiQ[3]=fAvM*fV8/pow(fAvQ2x+fAvQ2y-pow(fAvQx,2.)-pow(fAvQy,2.)-pow(fV8*fAvM,2.),0.5);
394 fSdQ[3]=(1./(pow(2.*fAvM*fnEvts,.5)))*pow((12.+96.*pow(fChiQ[3],2)+72.*pow(fChiQ[3],4.)+304.*pow(fChiQ[3],6.)+257.*pow(fChiQ[3],8.)+804.*pow(fChiQ[3],10.)+363.*pow(fChiQ[3],12.)+726.*pow(fChiQ[3],14.))/(726.*pow(fChiQ[3],14.)),.5);
395 cout<<" v_"<<fgkFlow<<"{8} = "<<100.*fV8<<"%, chi{8} = "<<fChiQ[3]<<", sd{8} = "<<100.*fSdQ[3]<<"%"<<endl;
396 fCommonHistsRes8->FillIntegratedFlow(100.*fV8,100.*fSdQ[3]);
397 fCommonHistsRes8->FillChi(fChiQ[3]);
399 cout<<" v_"<<fgkFlow<<"{8} = Im"<<endl;
402 if (fCumulant[4]>=0.){
403 cout<<"v_"<<fgkFlow<<"{10} = "<<100.*pow((1./456.)*fCumulant[4],(1./10.))<<"%"<<endl;
405 cout<<"v_"<<fgkFlow<<"{10} = Im"<<endl;
407 if (fCumulant[5]<=0.){
408 cout<<"v_"<<fgkFlow<<"{12} = "<<100.*pow(-(1./9460.)*fCumulant[5],(1./12.))<<"%"<<endl;
410 cout<<"v_"<<fgkFlow<<"{12} = Im"<<endl;
412 if (fCumulant[6]>=0.){
413 cout<<"v_"<<fgkFlow<<"{14} = "<<100.*pow((1./274800.)*fCumulant[6],(1./14.))<<"%"<<endl;
415 cout<<"v_"<<fgkFlow<<"{14} = Im"<<endl;
417 if (fCumulant[7]<=0.){
418 cout<<"v_"<<fgkFlow<<"{16} = "<<100.*pow(-(1./10643745.)*fCumulant[7],(1./16.))<<"%"<<endl;
420 cout<<"v_"<<fgkFlow<<"{16} = Im"<<endl;
422 cout<<"***************************"<<endl;
425 cout<<"continuing with calculations for differential flow..."<<endl;
428 Double_t fBinEventDReAv[fgknBins][fgkPmax][fgkQmax]={0.};
429 Double_t fBinEventDImAv[fgknBins][fgkPmax][fgkQmax]={0.};
431 for(Int_t b=0;b<fgknBins;b++){
432 if(fBinEventEntries[b]==0) continue;
433 for(Int_t p=0;p<fgkPmax;p++){
434 for(Int_t q=0;q<fgkQmax;q++){
435 fBinEventDReAv[b][p][q]=fBinEventDRe[b][p][q]/fBinEventEntries[b];//avarage of the real part of numerator in relation (10) in PG
436 fBinEventDImAv[b][p][q]=fBinEventDIm[b][p][q]/fBinEventEntries[b];//avarage of the imaginary part of numerator in relation (10) in PG
441 Double_t fX[fgknBins][fgkPmax][fgkQmax]={0.};//see the text bellow relation (11) in PG
442 Double_t fY[fgknBins][fgkPmax][fgkQmax]={0.};
444 for(Int_t b=0;b<fgknBins;b++){
445 for(Int_t p=0;p<fgkPmax;p++){
446 for(Int_t q=0;q<fgkQmax;q++){
447 fX[b][p][q]=fBinEventDReAv[b][p][q]/fAvG[p][q];
448 fY[b][p][q]=fBinEventDImAv[b][p][q]/fAvG[p][q];
453 cout<<"I have calculated X and Y."<<endl;
456 Double_t fD[fgknBins][fgkPmax]={0.};//implementing relation (11) from PG
458 for (Int_t b=0;b<fgknBins;b++){
459 for (Int_t p=0;p<fgkPmax;p++){
460 Double_t fTempHere3=0.;
461 for (Int_t q=0;q<fgkQmax;q++){
462 fTempHere3+=cos(fgkMltpl*2.*q*TMath::Pi()/fgkQmax)*fX[b][p][q] + sin(fgkMltpl*2.*q*TMath::Pi()/fgkQmax)*fY[b][p][q];
464 fD[b][p]=1.*(pow(fR0*pow(p+1.,.5),fgkMltpl)/fgkQmax)*fTempHere3;
469 cout<<"calculating differential cumulants now..."<<endl;
472 Double_t fDiffCumulant2[fgknBins]={0.};//implementing relation (12) from PG
473 Double_t fDiffCumulant4[fgknBins]={0.};
474 Double_t fDiffCumulant6[fgknBins]={0.};
475 Double_t fDiffCumulant8[fgknBins]={0.};
477 for (Int_t b=0;b<fgknBins;b++){
478 fDiffCumulant2[b]=(1./(fR0*fR0))*(4.*fD[b][0]-3.*fD[b][1]+(4./3.)*fD[b][2]-(1./4.)*fD[b][3]);
479 fDiffCumulant4[b]=(1./pow(fR0,4.))*((-26./3.)*fD[b][0]+(19./2.)*fD[b][1]-(14./3.)*fD[b][2]+(11./12.)*fD[b][3]);
480 fDiffCumulant6[b]=(1./pow(fR0,6.))*(18.*fD[b][0]-24.*fD[b][1]+14.*fD[b][2]-3.*fD[b][3]);
481 fDiffCumulant8[b]=(1./pow(fR0,8.))*(-24.*fD[b][0]+36.*fD[b][1]-24.*fD[b][2]+6.*fD[b][3]);
484 Double_t fv2[fgknBins],fv4[fgknBins],fv6[fgknBins],fv8[fgknBins];
485 Double_t fAvPt[fgknBins];
486 Double_t fSddiff2[fgknBins],fSddiff4[fgknBins];
488 cout<<"number of pt bins: "<<fgknBins<<endl;
489 cout<<"****************************************"<<endl;
490 for (Int_t b=0;b<fgknBins;b++){
491 if(fBinNoOfParticles[b]==0)continue;
492 fAvPt[b]=fBinMeanPt[b]/fBinNoOfParticles[b];
493 cout<<"pt bin: "<<b*fBinWidth<<"-"<<(b+1)*fBinWidth<<" GeV"<<endl;
494 cout<<"number of particles in this pt bin: "<<fBinNoOfParticles[b]<<endl;
495 cout<<"mean pt in this bin: "<<fAvPt[b]<<" GeV"<<endl;
497 fv2[b]=100.*fDiffCumulant2[b]/pow(fCumulant[0],.5);
498 fSddiff2[b]=pow((1./(2.*fBinNoOfParticles[b]))*((1.+pow(fChiQ[0],2.))/pow(fChiQ[0],2.)),0.5);
499 cout<<"v'_2/2{2} = "<<fv2[b]<<"%, "<<" "<<"sd{2} = "<<100.*fSddiff2[b]<<"%"<<endl;
500 fCommonHistsRes2->FillDifferentialFlow(b+1,fv2[b],100.*fSddiff2[b]);
502 cout<<"v'_2/2{2} = Im"<<endl;
505 fv4[b]=-100.*fDiffCumulant4[b]/pow(-fCumulant[1],.75);
506 fSddiff4[b]=pow((1./(2.*fBinNoOfParticles[b]))*((2.+6.*pow(fChiQ[1],2.)+pow(fChiQ[1],4.)+pow(fChiQ[1],6.))/pow(fChiQ[1],6.)),0.5);
507 cout<<"v'_2/2{4} = "<<fv4[b]<<"%, "<<" "<<"sd{4} = "<<100.*fSddiff4[b]<<"%"<<endl;
508 fCommonHistsRes4->FillDifferentialFlow(b+1,fv4[b],100.*fSddiff4[b]);
510 cout<<"v'_2/2{4} = Im"<<endl;
513 cout<<"v'_2/2{6} = "<<100.*fDiffCumulant6[b]/(4.*pow((1./4.)*fCumulant[2],(5./6.)))<<"%"<<endl;
514 fv6[b]=100.*fDiffCumulant6[b]/(4.*pow((1./4.)*fCumulant[2],(5./6.)));
515 fCommonHistsRes6->FillDifferentialFlow(b+1,fv6[b],0.);
517 cout<<"v'_2/2{6} = Im"<<endl;
520 cout<<"v'_2/2{8} = "<<-100.*fDiffCumulant8[b]/(33.*pow(-(1./33.)*fCumulant[3],(7./8.)))<<"%"<<endl;
521 fv8[b]=-100.*fDiffCumulant8[b]/(33.*pow(-(1./33.)*fCumulant[3],(7./8.)));
522 fCommonHistsRes8->FillDifferentialFlow(b+1,fv8[b],0.);
524 cout<<"v'_2/2{8} = Im"<<endl;
526 cout<<"****************************************"<<endl;