]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG2/FLOW/AliQCumulantsFunctions.cxx
further updates Q cumulants
[u/mrichter/AliRoot.git] / PWG2 / FLOW / AliQCumulantsFunctions.cxx
CommitLineData
bc92c0cb 1/*************************************************************************
2* Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *
3* *
4* Author: The ALICE Off-line Project. *
5* Contributors are mentioned in the code where appropriate. *
6* *
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**************************************************************************/
15
16/**********************************
17 * functions and equations needed *
18 * for calculation of Q-cumulants *
19 * and final flow estimates *
20 * *
21 * author: Ante Bilandzic *
22 * (anteb@nikhef.nl) *
23 *********************************/
24
25#define AliQCumulantsFunctions_cxx
26
27#include "Riostream.h"
bc92c0cb 28#include "TChain.h"
29#include "TFile.h"
30#include "TList.h"
31#include "TParticle.h"
32
33#include "TProfile.h"
34#include "TProfile2D.h"
35#include "TProfile3D.h"
36#include "TF1.h"
37#include "TAxis.h"
38#include "TH1.h"
39#include "TH1D.h"
40
bc92c0cb 41#include "AliFlowEventSimple.h"
42#include "AliFlowTrackSimple.h"
43#include "AliFlowAnalysisWithCumulants.h"
44#include "AliFlowCommonConstants.h"
7e58a232 45#include "AliFlowCommonHist.h"
1315fe58 46#include "AliFlowCommonHistResults.h"
bc92c0cb 47#include "AliQCumulantsFunctions.h"
48
49ClassImp(AliQCumulantsFunctions)
50
51//================================================================================================================_
52
53AliQCumulantsFunctions::AliQCumulantsFunctions():
54 fIntRes(NULL),
55 fDiffRes2nd(NULL),
56 fDiffRes4th(NULL),
1315fe58 57 fCovar(NULL),
bc92c0cb 58 fAvMult(NULL),
59 fQVector(NULL),
60 fQCorr(NULL),
8842fb2b 61 fQProd(NULL),
bc92c0cb 62 fDirect(NULL),
1dfa3c16 63 fbinPt2p1n1nRP(NULL),
64 fbinPt2p2n2nRP(NULL),
65 fbinPt3p2n1n1nRP(NULL),
66 fbinPt3p1n1n2nRP(NULL),
67 fbinPt4p1n1n1n1nRP(NULL),
68 fbinEta2p1n1nRP(NULL),
69 fbinEta2p2n2nRP(NULL),
70 fbinEta3p2n1n1nRP(NULL),
71 fbinEta3p1n1n2nRP(NULL),
72 fbinEta4p1n1n1n1nRP(NULL),
73 fbinPt2p1n1nPOI(NULL),
74 fbinPt2p2n2nPOI(NULL),
75 fbinPt3p2n1n1nPOI(NULL),
76 fbinPt3p1n1n2nPOI(NULL),
77 fbinPt4p1n1n1n1nPOI(NULL),
78 fbinEta2p1n1nPOI(NULL),
79 fbinEta2p2n2nPOI(NULL),
80 fbinEta3p2n1n1nPOI(NULL),
81 fbinEta3p1n1n2nPOI(NULL),
82 fbinEta4p1n1n1n1nPOI(NULL),
7e58a232 83 fch2nd(NULL),//ch = common histogram (control)
84 fch4th(NULL),
85 fch6th(NULL),
86 fch8th(NULL),
87 fchr2nd(NULL),//chr = common histogram results
8842fb2b 88 fchr4th(NULL),
89 fchr6th(NULL),
90 fchr8th(NULL)
bc92c0cb 91{
92 //default constructor
93}
94
95AliQCumulantsFunctions::~AliQCumulantsFunctions()
96{
97 //destructor
98}
99
7e58a232 100AliQCumulantsFunctions::AliQCumulantsFunctions(TH1D *intRes, TH1D *diffRes2nd, TH1D *diffRes4th, TH1D *covar, TProfile *AvMult, TProfile *QVector, TProfile *QCorr, TProfile *QProd, TProfile *Direct, TProfile *binPt2p1n1nRP, TProfile *binPt2p2n2nRP, TProfile *binPt3p2n1n1nRP, TProfile *binPt3p1n1n2nRP, TProfile *binPt4p1n1n1n1nRP, TProfile *binEta2p1n1nRP, TProfile *binEta2p2n2nRP, TProfile *binEta3p2n1n1nRP, TProfile *binEta3p1n1n2nRP, TProfile *binEta4p1n1n1n1nRP, TProfile *binPt2p1n1nPOI, TProfile *binPt2p2n2nPOI, TProfile *binPt3p2n1n1nPOI, TProfile *binPt3p1n1n2nPOI, TProfile *binPt4p1n1n1n1nPOI, TProfile *binEta2p1n1nPOI, TProfile *binEta2p2n2nPOI, TProfile *binEta3p2n1n1nPOI, TProfile *binEta3p1n1n2nPOI, TProfile *binEta4p1n1n1n1nPOI, AliFlowCommonHist *ch2nd, AliFlowCommonHist *ch4th, AliFlowCommonHist *ch6th, AliFlowCommonHist *ch8th, AliFlowCommonHistResults *chr2nd, AliFlowCommonHistResults *chr4th, AliFlowCommonHistResults *chr6th, AliFlowCommonHistResults *chr8th):
bc92c0cb 101 fIntRes(intRes),
102 fDiffRes2nd(diffRes2nd),
103 fDiffRes4th(diffRes4th),
1315fe58 104 fCovar(covar),
bc92c0cb 105 fAvMult(AvMult),
106 fQVector(QVector),
107 fQCorr(QCorr),
8842fb2b 108 fQProd(QProd),
bc92c0cb 109 fDirect(Direct),
1dfa3c16 110 fbinPt2p1n1nRP(binPt2p1n1nRP),
111 fbinPt2p2n2nRP(binPt2p2n2nRP),
112 fbinPt3p2n1n1nRP(binPt3p2n1n1nRP),
113 fbinPt3p1n1n2nRP(binPt3p1n1n2nRP),
114 fbinPt4p1n1n1n1nRP(binPt4p1n1n1n1nRP),
115 fbinEta2p1n1nRP(binEta2p1n1nRP),
116 fbinEta2p2n2nRP(binEta2p2n2nRP),
117 fbinEta3p2n1n1nRP(binEta3p2n1n1nRP),
118 fbinEta3p1n1n2nRP(binEta3p1n1n2nRP),
119 fbinEta4p1n1n1n1nRP(binEta4p1n1n1n1nRP),
120 fbinPt2p1n1nPOI(binPt2p1n1nPOI),
121 fbinPt2p2n2nPOI(binPt2p2n2nPOI),
122 fbinPt3p2n1n1nPOI(binPt3p2n1n1nPOI),
123 fbinPt3p1n1n2nPOI(binPt3p1n1n2nPOI),
124 fbinPt4p1n1n1n1nPOI(binPt4p1n1n1n1nPOI),
125 fbinEta2p1n1nPOI(binEta2p1n1nPOI),
126 fbinEta2p2n2nPOI(binEta2p2n2nPOI),
127 fbinEta3p2n1n1nPOI(binEta3p2n1n1nPOI),
128 fbinEta3p1n1n2nPOI(binEta3p1n1n2nPOI),
7e58a232 129 fbinEta4p1n1n1n1nPOI(binEta4p1n1n1n1nPOI),
130 fch2nd(ch2nd),
131 fch4th(ch4th),
132 fch6th(ch6th),
133 fch8th(ch8th),
1315fe58 134 fchr2nd(chr2nd),
135 fchr4th(chr4th),
136 fchr6th(chr6th),
137 fchr8th(chr8th)
bc92c0cb 138{
139 //custom constructor
140}
1315fe58 141
bc92c0cb 142//================================================================================================================
143
144void AliQCumulantsFunctions::Calculate()
145{
146 //final results
8842fb2b 147
bc92c0cb 148 //harmonics
149 Int_t n = 2; //to be improved
150
151 //---------------------------------------------------------------------------------------------------------
152 //avarage multiplicity
153 Double_t AvM = fAvMult->GetBinContent(1);
154
155 //number of events
156 Double_t nEvts = fAvMult->GetBinEntries(1);
157
158 //2-, 4- and 6-particle azimuthal correlation:
8842fb2b 159 Double_t two = fQCorr->GetBinContent(1); //<<2>>_{n|n}
160 Double_t four = fQCorr->GetBinContent(11); //<<4>>_{n,n|n,n}
dee1e0e0 161 Double_t six = fQCorr->GetBinContent(24); //<<6>>_{n,n,n|n,n,n}
162 Double_t eight = fQCorr->GetBinContent(31); //<<8>>_{n,n,n,n|n,n,n,n}
bc92c0cb 163
164 //errors of 2-, 4- and 6-particle azimuthal correlation:
8842fb2b 165 Double_t twoErr = fQCorr->GetBinError(1); //sigma_{<<2>>_{n|n}}
166 Double_t fourErr = fQCorr->GetBinError(11); //sigma_{<<4>>_{n,n|n,n}}
167 Double_t sixErr = fQCorr->GetBinError(21); //sigma_{<<6>>_{n,n,n|n,n,n}}
168 //Double_t eightErr = fQCorr->GetBinError(); //sigma_{<<8>>_{n,n,n,n|n,n,n,n}}
bc92c0cb 169
170 //covariances of multi-particle correlations
8842fb2b 171 Double_t cov24=fQProd->GetBinContent(1)-two*four; //cov24=<<2>*<4>>-<<2>>*<<4>>
172 Double_t cov26=fQProd->GetBinContent(2)-two*six; //cov26=<<2>*<6>>-<<2>>*<<6>>
173 //Double_t cov28=fQProd->GetBinContent(3)-two*eight; //cov28=<<2>*<8>>-<<2>>*<<8>>
174 Double_t cov46=fQProd->GetBinContent(4)-four*six; //cov46=<<4>*<6>>-<<4>>*<<6>>
175 //Double_t cov48=fQProd->GetBinContent(5)-four*eight; //cov48=<<4>*<8>>-<<4>>*<<8>>
176 //Double_t cov68=fQProd->GetBinContent(6)-six*eight; //cov68=<<6>*<8>>-<<6>>*<<8>>
177
1315fe58 178 fCovar->SetBinContent(1,cov24);
179 fCovar->SetBinContent(2,cov26);
8842fb2b 180 //fCovar->SetBinContent(3,cov28);
1315fe58 181 fCovar->SetBinContent(4,cov46);
8842fb2b 182 //fCovar->SetBinContent(5,cov48);
183 //fCovar->SetBinContent(6,cov68);
bc92c0cb 184
185 //2nd, 4th and 6th order Q-cumulant and theirs errors:
186 Double_t secondOrderQCumulant = two; //c_n{2}
187 Double_t secondOrderQCumulantError = twoErr; //sigma_{c_n{2}}
188
189 Double_t fourthOrderQCumulant = four-2.*pow(two,2.);//c_n{4}
190 Double_t fourthOrderQCumulantError = 0.; //sigma_{c_n{4}}
191
192 if(16.*pow(two,2.)*pow(twoErr,2.)+pow(fourErr,2.)-8.*two*cov24>0.)
193 {
194 fourthOrderQCumulantError = pow(16.*pow(two,2.)*pow(twoErr,2.)+pow(fourErr,2.)-8.*two*cov24,0.5);//sigma_{c_n{4}}
195 }
196
1315fe58 197 Double_t sixthOrderQCumulant = six-9.*two*four+12.*pow(two,3.); //c_n{6}
bc92c0cb 198 Double_t sixthOrderQCumulantError = 0.; //sigma_{c_n{6}}
199
200 if(81.*pow(4.*two*two-four,2.)*pow(twoErr,2.)+81.*pow(two,2.)*pow(fourErr,2.)+pow(sixErr,2.)-162.*(4.*two*two-four)*two*cov24+18.*(4.*two*two-four)*cov26-18.*two*cov46>0.)
201 {
202 sixthOrderQCumulantError = pow(81.*pow(4.*two*two-four,2.)*pow(twoErr,2.)+81.*pow(two,2.)*pow(fourErr,2.)+pow(sixErr,2.)-162.*(4.*two*two-four)*two*cov24+18.*(4.*two*two-four)*cov26-18.*two*cov46,0.5);//sigma_{c_n{6}}
203 }
dee1e0e0 204
205 Double_t eightOrderQCumulant = eight-16.*two*six-18.*pow(four,2.)+144.*pow(two,2.)*four-144.*pow(two,4.);
206
bc92c0cb 207 //integrated flow estimates from Q-cumulants:
1dfa3c16 208 cout<<endl;
209 cout<<"***********************************"<<endl;
210 cout<<"***********************************"<<endl;
bc92c0cb 211 cout<<"flow estimates from Q-cumulants:"<<endl;
1dfa3c16 212 cout<<endl;
bc92c0cb 213
dee1e0e0 214 Double_t vn2=0.,vn4=0.,vn6=0.,vn8=0.;
215 Double_t sd2=0.,sd4=0.,sd6=0.,sd8=0.;
bc92c0cb 216 if(secondOrderQCumulant>0.){
217 vn2 = pow(secondOrderQCumulant,0.5);//v_n{2}
218 sd2 = 0.5*pow(secondOrderQCumulant,-0.5)*secondOrderQCumulantError;//sigma_{v_n{2}}
e6614983 219 cout<<" v_"<<n<<"{2} = "<<vn2<<" +/- "<<sd2<<endl;
220 fIntRes->SetBinContent(1,vn2);
221 fIntRes->SetBinError(1,sd2);
8842fb2b 222 //common histograms:
1dfa3c16 223 fchr2nd->FillIntegratedFlow(vn2,sd2);//to be removed
224 fchr2nd->FillChi(vn2*pow(AvM,0.5));//to be removed
225 fchr2nd->FillIntegratedFlowRP(vn2,sd2);
bc92c0cb 226 }else{
227 cout<<" v_"<<n<<"{2} = Im"<<endl;
228 }
229 if(four!=0. && fourthOrderQCumulant<0.){
230 vn4 = pow(-fourthOrderQCumulant,1./4.); //v_n{4}
231 sd4 = 0.25*pow(-fourthOrderQCumulant,-3./4.)*fourthOrderQCumulantError;//sigma_{v_n{4}}
e6614983 232 cout<<" v_"<<n<<"{4} = "<<vn4<<" +/- "<<sd4<<endl;
233 fIntRes->SetBinContent(2,vn4);
234 fIntRes->SetBinError(2,sd4);
8842fb2b 235 //common histograms:
1dfa3c16 236 fchr4th->FillIntegratedFlow(vn4,sd4);//to be removed
237 fchr4th->FillChi(vn4*pow(AvM,0.5));//to be removed
238 fchr4th->FillIntegratedFlowRP(vn4,sd4);
bc92c0cb 239 }else{
240 cout<<" v_"<<n<<"{4} = Im"<<endl;
241 }
242 if(six!=0. && sixthOrderQCumulant>0.){
243 vn6 = pow((1./4.)*sixthOrderQCumulant,1./6.); //v_n{6}
244 sd6 = (1./6.)*pow(2.,-1./3.)*pow(sixthOrderQCumulant,-5./6.)*sixthOrderQCumulantError;
e6614983 245 cout<<" v_"<<n<<"{6} = "<<vn6<<" +/- "<<sd6<<endl;
246 fIntRes->SetBinContent(3,vn6);
247 fIntRes->SetBinError(3,sd6);
8842fb2b 248 //common histograms:
1dfa3c16 249 fchr6th->FillIntegratedFlow(vn6,sd6);//to be removed
250 fchr6th->FillChi(vn6*pow(AvM,0.5));//to be removed
251 fchr6th->FillIntegratedFlowRP(vn6,sd6);
bc92c0cb 252 }else{
253 cout<<" v_"<<n<<"{6} = Im"<<endl;
254 }
dee1e0e0 255 if(eight!=0. && eightOrderQCumulant<0.){
256 vn8 = pow((-1./33.)*eightOrderQCumulant,1./8.); //v_n{8}
257 cout<<" v_"<<n<<"{8} = "<<vn8<<" +/- "<<sd8<<endl;
258 fIntRes->SetBinContent(4,vn8);
259 fIntRes->SetBinError(4,sd8);
260 //common histograms:
1dfa3c16 261 fchr8th->FillIntegratedFlow(vn8,sd8);//to be removed
262 fchr8th->FillChi(vn8*pow(AvM,0.5));//to be removed
263 fchr8th->FillIntegratedFlowRP(vn8,sd8);
264 }else{
265 cout<<" v_"<<n<<"{8} = Im"<<endl;
dee1e0e0 266 }
1dfa3c16 267 cout<<endl;
bc92c0cb 268 cout<<" nEvts = "<<nEvts<<", AvM = "<<AvM<<endl;
1dfa3c16 269 cout<<"***********************************"<<endl;
270 cout<<"***********************************"<<endl;
271 cout<<endl;
bc92c0cb 272//---------------------------------------------------------------------------------------------------------
1315fe58 273
bc92c0cb 274//---------------------------------------------------------------------------------------------------------
1dfa3c16 275//differential flow (RP)
276
277//Pt:
278Double_t secondOrderQCumulantDiffFlowPtRP = 0.;
279Double_t fourthOrderQCumulantDiffFlowPtRP = 0.;
280
281Int_t nBinsPtRP = fbinPt2p1n1nRP->GetNbinsX();
282
283for(Int_t bb=1;bb<nBinsPtRP+1;bb++)
284{
285 if(fbinPt2p1n1nRP->GetBinEntries(bb)>0.&&vn2!=0)
286 {
287 secondOrderQCumulantDiffFlowPtRP = fbinPt2p1n1nRP->GetBinContent(bb);
288 fDiffRes2nd->SetBinContent(bb,secondOrderQCumulantDiffFlowPtRP/vn2);
289 //common histogram:
290 fchr2nd->FillDifferentialFlowPtRP(bb,secondOrderQCumulantDiffFlowPtRP/vn2, 0.);//to be improved (errors)
291 }
292 if(fbinPt4p1n1n1n1nRP->GetBinEntries(bb)>0.&&vn4!=0.)
293 {
294 fourthOrderQCumulantDiffFlowPtRP = fbinPt4p1n1n1n1nRP->GetBinContent(bb)-2.*fbinPt2p1n1nRP->GetBinContent(bb)*pow(vn2,2.);
295 fDiffRes4th->SetBinContent(bb,-1.*fourthOrderQCumulantDiffFlowPtRP/pow(vn4,3.));
296 //common histogram:
297 fchr4th->FillDifferentialFlowPtRP(bb,-1.*fourthOrderQCumulantDiffFlowPtRP/pow(vn4,3.), 0.);//to be improved (errors)
298 }
299}
300
301//Eta:
302Double_t secondOrderQCumulantDiffFlowEtaRP = 0.;
303Double_t fourthOrderQCumulantDiffFlowEtaRP = 0.;
304
305Int_t nBinsEtaRP = fbinEta2p1n1nRP->GetNbinsX();
bc92c0cb 306
1dfa3c16 307for(Int_t bb=1;bb<nBinsEtaRP+1;bb++)
308{
309 if(fbinEta2p1n1nRP->GetBinEntries(bb)>0.&&vn2!=0)
310 {
311 secondOrderQCumulantDiffFlowEtaRP = fbinEta2p1n1nRP->GetBinContent(bb);
312 fDiffRes2nd->SetBinContent(bb,secondOrderQCumulantDiffFlowEtaRP/vn2);
313 //common histogram:
314 fchr2nd->FillDifferentialFlowEtaRP(bb,secondOrderQCumulantDiffFlowEtaRP/vn2, 0.);//to be improved (errors)
315 }
316 if(fbinEta4p1n1n1n1nRP->GetBinEntries(bb)>0.&&vn4!=0.)
317 {
318 fourthOrderQCumulantDiffFlowEtaRP = fbinEta4p1n1n1n1nRP->GetBinContent(bb)-2.*fbinEta2p1n1nRP->GetBinContent(bb)*pow(vn2,2.);
319 fDiffRes4th->SetBinContent(bb,-1.*fourthOrderQCumulantDiffFlowEtaRP/pow(vn4,3.));
320 //common histogram:
321 fchr4th->FillDifferentialFlowEtaRP(bb,-1.*fourthOrderQCumulantDiffFlowEtaRP/pow(vn4,3.), 0.);//to be improved (errors)
322 }
323}
324
1dfa3c16 325//differential flow (POI)
7e58a232 326Int_t nBinsPtPOI = fbinPt2p1n1nPOI->GetNbinsX();
327Int_t nBinsEtaPOI = fbinEta2p1n1nPOI->GetNbinsX();
1dfa3c16 328
329//Pt:
330Double_t secondOrderQCumulantDiffFlowPtPOI = 0.;
331Double_t fourthOrderQCumulantDiffFlowPtPOI = 0.;
8842fb2b 332
7e58a232 333Double_t dVn2ndPOI=0.,dDiffvn2nd=0.,dYield2nd=0.,dSum2nd=0.;
334
335Double_t dVn2ndPOIEta=0.,dDiffvn2ndEta=0.,dYield2ndEta=0.,dSum2ndEta=0.;//to be removed
1dfa3c16 336
337for(Int_t bb=1;bb<nBinsPtPOI+1;bb++)
bc92c0cb 338{
7e58a232 339 //QC{2}
1dfa3c16 340 if(fbinPt2p1n1nPOI->GetBinEntries(bb)>0.&&vn2!=0)
bc92c0cb 341 {
7e58a232 342 //cout<<"bin = "<<bb<<" : "<<(fch2nd->GetHistPtDiff())->GetBinContent(bb)<<endl;
343 //cout<<endl;
1dfa3c16 344 secondOrderQCumulantDiffFlowPtPOI = fbinPt2p1n1nPOI->GetBinContent(bb);
345 fDiffRes2nd->SetBinContent(bb,secondOrderQCumulantDiffFlowPtPOI/vn2);
8842fb2b 346 //common histogram:
7e58a232 347 fchr2nd->FillDifferentialFlowPtPOI(bb,secondOrderQCumulantDiffFlowPtPOI/vn2, 0.);//to be improved (errors) && bb or bb+1
348 //-------------------------------------------------------------
349 //integrated flow (POI, Pt, 2nd order):
350 dDiffvn2nd=(fchr2nd->GetHistDiffFlowPtPOI())->GetBinContent(bb);
351 dYield2nd=(fch2nd->GetHistPtDiff())->GetBinContent(bb);
352 dVn2ndPOI+=dDiffvn2nd*dYield2nd;
353 dSum2nd+=dYield2nd;
354 //-------------------------------------------------------------
bc92c0cb 355 }
7e58a232 356 //QC{4]
1dfa3c16 357 if(fbinPt4p1n1n1n1nPOI->GetBinEntries(bb)>0.&&vn4!=0.)
bc92c0cb 358 {
1dfa3c16 359 fourthOrderQCumulantDiffFlowPtPOI = fbinPt4p1n1n1n1nPOI->GetBinContent(bb)-2.*fbinPt2p1n1nPOI->GetBinContent(bb)*pow(vn2,2.);
360 fDiffRes4th->SetBinContent(bb,-1.*fourthOrderQCumulantDiffFlowPtPOI/pow(vn4,3.));
8842fb2b 361 //common histogram:
1dfa3c16 362 fchr4th->FillDifferentialFlowPtPOI(bb,-1.*fourthOrderQCumulantDiffFlowPtPOI/pow(vn4,3.), 0.);//to be improved (errors)
bc92c0cb 363 }
364}
1dfa3c16 365
7e58a232 366//storing the final results for integrated flow (POI):
367//QC{2}
368if(dSum2nd && fchr2nd)
369{
370 dVn2ndPOI/=dSum2nd;
371 fchr2nd->FillIntegratedFlowPOI(dVn2ndPOI,0.);
372}
373
374
375
376
1dfa3c16 377//Eta:
378Double_t secondOrderQCumulantDiffFlowEtaPOI = 0.;
379Double_t fourthOrderQCumulantDiffFlowEtaPOI = 0.;
380
1dfa3c16 381for(Int_t bb=1;bb<nBinsEtaPOI+1;bb++)
382{
383 if(fbinEta2p1n1nPOI->GetBinEntries(bb)>0.&&vn2!=0)
384 {
385 secondOrderQCumulantDiffFlowEtaPOI = fbinEta2p1n1nPOI->GetBinContent(bb);
386 fDiffRes2nd->SetBinContent(bb,secondOrderQCumulantDiffFlowEtaPOI/vn2);
387 //common histogram:
388 fchr2nd->FillDifferentialFlowEtaPOI(bb,secondOrderQCumulantDiffFlowEtaPOI/vn2, 0.);//to be improved (errors)
389 }
390 if(fbinEta4p1n1n1n1nPOI->GetBinEntries(bb)>0.&&vn4!=0.)
391 {
392 fourthOrderQCumulantDiffFlowEtaPOI = fbinEta4p1n1n1n1nPOI->GetBinContent(bb)-2.*fbinEta2p1n1nPOI->GetBinContent(bb)*pow(vn2,2.);
393 fDiffRes4th->SetBinContent(bb,-1.*fourthOrderQCumulantDiffFlowEtaPOI/pow(vn4,3.));
394 //common histogram:
395 fchr4th->FillDifferentialFlowEtaPOI(bb,-1.*fourthOrderQCumulantDiffFlowEtaPOI/pow(vn4,3.), 0.);//to be improved (errors)
396 }
397}
398
bc92c0cb 399//---------------------------------------------------------------------------------------------------------
400
1315fe58 401
1dfa3c16 402
1315fe58 403
7e58a232 404//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
405// !!!! to be removed !!!!
406for(Int_t bb=1;bb<nBinsEtaPOI+1;bb++)
407{
408 //integrated flow (POI, Eta, 2nd order):
409 dDiffvn2ndEta=(fchr2nd->GetHistDiffFlowEtaPOI())->GetBinContent(bb);
410 dYield2ndEta=(fch2nd->GetHistEtaDiff())->GetBinContent(bb);
411 // cout<<"bin = "<<bb<<" : "<<dDiffvn2ndEta<<" "<<dYield2ndEta<<endl;
412 // cout<<endl;
413 dVn2ndPOIEta+=dDiffvn2ndEta*dYield2ndEta;
414 dSum2ndEta+=dYield2ndEta;
415
416
417//check why for small number of events there is a mismatch here (should be exactly the same)://to be removed
418//cout<<dSum2nd<<" to be improved "<<(fch2nd->GetHistPtDiff())->Integral()<<endl;//to be removed
419}
420if(dSum2ndEta)
421{
422 dVn2ndPOIEta/=dSum2ndEta;
423 //cout<<"POI Pt vs POI Eta:"<<endl;
424 //cout<<dVn2ndPOI<<" vs "<<dVn2ndPOIEta<<endl;
425 //cout<<dSum2nd<<" vs "<<dSum2ndEta<<endl;
426// cout<<"eta = "<<(fchr2nd->GetHistDiffFlowEtaPOI())->GetBinContent(44)<<endl;
427// cout<<"poi = "<<(fchr2nd->GetHistDiffFlowPtPOI())->GetBinContent(14)<<endl;
428// cout<<"+++++++++"<<endl;
429}
430
431//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
432
1315fe58 433
434 /*
435 Double_t first=16.*pow(two*twoErr,2.);
436 Double_t second=pow(fourErr,2.);
437 Double_t third=-8.*two*cov24;
438
1dfa3c16 439 cout<<endl;
440 cout<<endl;
441 cout<<endl;
1315fe58 442 cout<<" 1st = "<<(1./16.)*first/(pow(-fourthOrderQCumulant,1.5))<<endl;
443 cout<<" 2nd = "<<(1./16.)*second/(pow(-fourthOrderQCumulant,1.5))<<endl;
444 cout<<" 3rd = "<<(1./16.)*third/(pow(-fourthOrderQCumulant,1.5))<<endl;
1dfa3c16 445 cout<<endl;
1315fe58 446 cout<<" nEvts = "<<nEvts<<", AvM = "<<AvM<<endl;
1dfa3c16 447 cout<<endl;
448 cout<<endl;
1315fe58 449 cout<<"c-c = "<<pow((1./16.)*((first+second+third)/(pow(-fourthOrderQCumulant,1.5))),0.5)<<endl;
450 */
e6614983 451
452
453
bc92c0cb 454 /*
455
456 //<Q-vector components>
457 Double_t AvQx = fQVector->GetBinContent(1); //<Q_x>
458 Double_t AvQy = fQVector->GetBinContent(2); //<Q_y>
459 Double_t AvQ2x = fQVector->GetBinContent(3); //<(Q_x)^2>
460 Double_t AvQ2y = fQVector->GetBinContent(4); //<(Q_y)^2>
461 Double_t AvQ2 = fQVector->GetBinContent(5); //<|Q|^2>
462 Double_t AvQ4 = fQVector->GetBinContent(6); //<|Q|^4>
463 Double_t AvQ_2n2 = fQVector->GetBinContent(7); //<|Q_2n|^2>
464 Double_t ReQ2nQnstarQnstar = fQVector->GetBinContent(8); //<Re[Q_n^2 * Q_2n^*]>
465 Double_t ImQ2nQnstarQnstar = fQVector->GetBinContent(9); //<Im[Q_n^2 * Q_2n^*]>
466 Double_t AvQ_3n2 = fQVector->GetBinContent(10); //<|Q_3n|^2>
467 Double_t AvQ_4n2 = fQVector->GetBinContent(11); //<|Q_4n|^2>
468 Double_t AvQ_5n2 = fQVector->GetBinContent(12); //<|Q_5n|^2>
469 Double_t ReQ3nQ2nstarQnstar = fQVector->GetBinContent(13); //Re<Q_{3n} Q_{2n}^* Q_{n}^*>
470 Double_t ReQ3nQnstarQnstarQnstar = fQVector->GetBinContent(14); //Re<Q_{3n} Q_{n}^* Q_{n}^* Q_{n}^*>
471 Double_t HereQ2nQnQ2nstarQnstar = fQVector->GetBinContent(15); //<|Q_{2n}|^2 |Q_{n}|^2>
472 Double_t HereQ2nQnQnstarQnstarQnstar = fQVector->GetBinContent(16); //Re<Q_{2n} Q_{n} Q_{n}^* Q_{n}^* Q_{n}^*>
473 Double_t AvQ6 = fQVector->GetBinContent(17); //<|Q|^6>
474
475
476
477
478*/
479
480 /*
481 //direct particle correlations
482 Double_t twoDirect_n_n = fDirect->GetBinContent(1);
483 Double_t fourDirect = fDirect->GetBinContent(2);
484 Double_t threeDirect_2n_n_n = fDirect->GetBinContent(3);
485 Double_t threeDirect_3n_2n_n = fDirect->GetBinContent(4);
486 Double_t fourDirect_3n_n_n_n = fDirect->GetBinContent(5);
487 Double_t fourDirect_2n_n_2n_n = fDirect->GetBinContent(6);
488 Double_t fiveDirect_2n_n_n_n_n = fDirect->GetBinContent(7);
489 Double_t sixDirect_n_n_n_n_n_n = fDirect->GetBinContent(8);
490 Double_t twoDirect_2n_2n = fDirect->GetBinContent(9);
491 Double_t twoDirect_3n_3n = fDirect->GetBinContent(10);
492 Double_t twoDirect_4n_4n = fDirect->GetBinContent(11);
493 Double_t twoDirect_5n_5n = fDirect->GetBinContent(12);
494
495*/
496
497
498
499
500
501
502
503/*
504
505
506 //CORRELATIONS
507 //two particle correlations
508 Double_t two_n_n=(AvQ2-AvM)/(AvM*(AvM-1));
509 Double_t two_2n_2n=(AvQ_2n2-AvM)/(AvM*(AvM-1));
510 Double_t two_3n_3n=(AvQ_3n2-AvM)/(AvM*(AvM-1));
511 Double_t two_4n_4n=(AvQ_4n2-AvM)/(AvM*(AvM-1));
512 Double_t two_5n_5n=(AvQ_5n2-AvM)/(AvM*(AvM-1));
513
514
515
516
517
518
519
520 //four particle correlations:
521 //<4>_{n,n|n,n}
522 Double_t four_n_n_n_n = (AvQ4+AvQ_2n2-4.*(AvM-2.)*AvQ2-2.*ReQ2nQnstarQnstar)/(AvM*(AvM-1)*(AvM-2)*(AvM-3))+2./((AvM-1)*(AvM-2));
523
524
525 //<4>_{3n|n,n,n}
526 //Double_t four_3n_n_n_n=(ReQ3nQnstarQnstarQnstar)/(AvM*(AvM-1)*(AvM-2)*(AvM-3))-3.*(three_3n_2n_n+three_2n_n_n)/(AvM-3.)-(3.*two+3.*two_2n+two_3n)/((AvM-2.)*(AvM-3.))-1./((AvM-1.)*(AvM-2.)*(AvM-3.)); OK!!!
527 //Double_t four_3n_n_n_n_=(ReQ3nQnstarQnstarQnstar-3.*ReQ3nQ2nstarQnstar-3.*ReQ2nQnstarQnstar)/(AvM*(AvM-1.)*(AvM-2.)*(AvM-3.))+ (2.*AvQ_3n2 + 3.*AvQ_2n2 + 6.*AvQ2-6.*AvM ) /(AvM*(AvM-1.)*(AvM-2.)*(AvM-3.)); OK!!! (final version)
528
529
530 //<4>_{2n,n|2n,n}
531 //Double_t four_2n_n_2n_n = (HereQ2nQnQ2nstarQnstar)/(AvM*(AvM-1)*(AvM-2)*(AvM-3))-2.*(three_2n_n_n+three_3n_2n_n)/(AvM-3.)-((AvM+1.)*two+AvM*two_2n+two_3n)/((AvM-2.)*(AvM-3.))-(AvM)/((AvM-1)*(AvM-2)*(AvM-3)); OK!!!
532 //Double_t four_2n_n_2n_n_Alternative = (HereQ2nQnQ2nstarQnstar-2.*ReQ3nQ2nstarQnstar-2.*ReQ2nQnstarQnstar)/(AvM*(AvM-1)*(AvM-2)*(AvM-3))-((AvM-5)*AvQ2+(AvM-4)*AvQ_2n2-AvQ_3n2)/(AvM*(AvM-1)*(AvM-2)*(AvM-3))+(AvM-6)/((AvM-1)*(AvM-2)*(AvM-3)); OK!!! (final version)
533
534
535 //<6>_{n,n,n|n,n,n}
536 //Double_t six_n_n_n_n_n_n=AvQ6/(AvM*(AvM-1)*(AvM-2)*(AvM-3)*(AvM-4)*(AvM-5)) - 3.*(2.*five_2n_n_n_n_n)/(AvM-5) - (2.*four_3n_n_n_n+9.*(AvM-2.)*four+9.*four_2n_n_2n_n)/((AvM-4)*(AvM-5)) - 3.*(2.*(3.*AvM-5.)*three_2n_n_n+2.*three_3n_2n_n)/((AvM-3)*(AvM-4)*(AvM-5)) - ((18.*AvM*AvM-45.*AvM+33.)*two+3.*(3.*AvM-4.)*two_2n+two_3n)/((AvM-2)*(AvM-3)*(AvM-4)*(AvM-5)) - (6.*AvM*AvM-9.*AvM+4.)/((AvM-1)*(AvM-2)*(AvM-3)*(AvM-4)*(AvM-5)); OK!!!
537 //Double_t six_n_n_n_n_n_n = (AvQ6+9.*HereQ2nQnQ2nstarQnstar-6.*HereQ2nQnQnstarQnstarQnstar)/(AvM*(AvM-1)*(AvM-2)*(AvM-3)*(AvM-4)*(AvM-5)) + 4.*(ReQ3nQnstarQnstarQnstar-3.*ReQ3nQ2nstarQnstar)/(AvM*(AvM-1)*(AvM-2)*(AvM-3)*(AvM-4)*(AvM-5)) + 2.*(9.*(AvM-4.)*ReQ2nQnstarQnstar+2.*AvQ_3n2)/(AvM*(AvM-1)*(AvM-2)*(AvM-3)*(AvM-4)*(AvM-5)) - 9.*(AvQ4+AvQ_2n2)/(AvM*(AvM-1)*(AvM-2)*(AvM-3)*(AvM-5)) + (18.*AvQ2 )/(AvM*(AvM-1)*(AvM-3)*(AvM-4)) - (6.)/((AvM-1)*(AvM-2)*(AvM-3)); OK!!! (final version)
538
539
540
541
542
543*/
544
545 /*
546
547
548 cout<<"<4>_{3n,n,n,n} correlation from Q-vector = "<<four_3n_n_n_n<<endl;AvQ2
549 cout<<"<4>_{3n,n,n,n} correlation directly = "<<fourDirect_3n_n_n_n<<endl;
1dfa3c16 550 cout<<endl;
bc92c0cb 551 cout<<"<4>_{2n,n,2n,n} correlation from Q-vector = "<<four_2n_n_2n_n<<endl;
552 cout<<"<4>_{2n,n,2n,n} correlation directly = "<<fourDirect_2n_n_2n_n<<endl;
1dfa3c16 553 cout<<endl;
bc92c0cb 554 cout<<"<5>_{2n,n,n,n,n} correlation from Q-vector = "<<five_2n_n_n_n_n<<endl;
555 cout<<"<5>_{2n,n,n,n,n} correlation directly = "<<fiveDirect_2n_n_n_n_n<<endl;
1dfa3c16 556 cout<<endl;
bc92c0cb 557 cout<<"<6>_{n,n,n,n,n,n} correlation from Q-vector = "<<six_n_n_n_n_n_n<<endl;
558 cout<<"<6>_{n,n,n,n,n,n} correlation directly = "<<sixDirect_n_n_n_n_n_n<<endl;
1dfa3c16 559 cout<<endl;
bc92c0cb 560 */
561
562
563
564
565 /*
566
567//Q-CUMULANTS
568Double_t fourthOrderQCumulant = (AvQ4+AvQ_2n2-2.*ReQ2nQnstarQnstar)/(AvM*(AvM-1.)*(AvM-2.)*(AvM-3.)) - (2.*AvQ2*AvQ2)/(AvM*AvM*(AvM-1.)*(AvM-1.)) - (8.*AvQ2)/(AvM*(AvM-1.)*(AvM-1.)*(AvM-3.)) + 2./((AvM-1.)*(AvM-1.)*(AvM-2.));
569
570Double_t sixthOrderQCumulant = (AvQ6+9.*HereQ2nQnQ2nstarQnstar-6.*HereQ2nQnQnstarQnstarQnstar)/(AvM*(AvM-1)*(AvM-2)*(AvM-3)*(AvM-4)*(AvM-5)) + 4.*(ReQ3nQnstarQnstarQnstar - 3.*ReQ3nQ2nstarQnstar+AvQ_3n2)/(AvM*(AvM-1)*(AvM-2)*(AvM-3)*(AvM-4)*(AvM-5)) + 18.*(4.*AvM+(AvM-5.)*AvQ2)*ReQ2nQnstarQnstar/(AvM*AvM*(AvM-1)*(AvM-1)*(AvM-2)*(AvM-3)*(AvM-5)) - 9.*(4.*AvM+(AvM-5.)*AvQ2)*(AvQ4+AvQ_2n2)/(AvM*AvM*(AvM-1)*(AvM-1)*(AvM-2)*(AvM-3)*(AvM-5)) + 36.*(5.*AvM-11.)*AvQ2/(AvM*(AvM-1)*(AvM-1)*(AvM-1)*(AvM-2)*(AvM-3)*(AvM-4)) + 12.*AvQ2*AvQ2*(6.*AvM-3.*AvQ2+AvM*AvQ2)/(AvM*AvM*AvM*(AvM-1)*(AvM-1)*(AvM-1)*(AvM-3)) - 24./((AvM-1)*(AvM-1)*(AvM-1)*(AvM-2)*(AvM-3));
571
572
573
574
575
576
577
578
1dfa3c16 579 //cout<<endl;
bc92c0cb 580 //cout<<"should be the same? "<<threeDirect_3n_2n_n<<" "<<three_2n_n_nTemp<<endl;
1dfa3c16 581 //cout<<endl;
bc92c0cb 582
583
584
585
586
587
588
1dfa3c16 589 //cout<<endl;
bc92c0cb 590 cout<<"***************************"<<endl;
1dfa3c16 591 cout<<endl;
bc92c0cb 592 cout<<"multiplicity = "<<AvM<<endl;
1dfa3c16 593 cout<<endl;
bc92c0cb 594
595 Double_t two=(AvQ2-AvM)/(AvM*(AvM-1));
596 Double_t two_2n=(AvQ_2n2-AvM)/(AvM*(AvM-1));
597 Double_t two_3n=(AvQ_3n2-AvM)/(AvM*(AvM-1));
598 Double_t two_4n=(AvQ_4n2-AvM)/(AvM*(AvM-1));
599 Double_t two_5n=(AvQ_5n2-AvM)/(AvM*(AvM-1));
600
601
602 //cout<<"two's = "<<two<<" "<<two_2n<<" "<<two_3n<<" "<<two_4n<<" "<<two_5n<<endl;
1dfa3c16 603 cout<<endl;
bc92c0cb 604 Double_t four=(2.*AvM*(AvM-3.)+AvQ4-4.*(AvM-2.)*AvQ2-2.*ReQ2nQnstarQnstar+AvQ_2n2)/(AvM*(AvM-1)*(AvM-2)*(AvM-3));
605 Double_t three_2n_n_n=(ReQ2nQnstarQnstar-AvM-2*AvM*(AvM-1)*two-AvM*(AvM-1)*two_2n)/(AvM*(AvM-1)*(AvM-2));
606
607 //<3>_{3n,2n,n}
608 Double_t three_3n_2n_n=(ReQ3nQ2nstarQnstar-AvM*(AvM-1)*(two+two_2n+two_3n)-AvM)/(AvM*(AvM-1)*(AvM-2));
609
610 //<4>_{3n,n,n,n}
611 //Double_t four_3n_n_n_n=(ReQ3nQnstarQnstarQnstar-3.*AvM*(AvM-1)*(AvM-2)*(three_2n_n_n+three_3n_2n_n)-AvM*(AvM-1)*(3.*two+3.*two_2n+two_3n)-AvM)/(AvM*(AvM-1)*(AvM-2)*(AvM-3));
612
613 Double_t four_3n_n_n_n=(ReQ3nQnstarQnstarQnstar)/(AvM*(AvM-1)*(AvM-2)*(AvM-3))-3.*(three_3n_2n_n+three_2n_n_n)/(AvM-3.)-(3.*two+3.*two_2n+two_3n)/((AvM-2.)*(AvM-3.))-1./((AvM-1.)*(AvM-2.)*(AvM-3.));
614
615
616
617 //<4>_{2n,n,2n,n}
618 Double_t four_2n_n_2n_n=(HereQ2nQnQ2nstarQnstar-2.*AvM*(AvM-1)*(AvM-2)*(three_2n_n_n+three_3n_2n_n)-AvM*(AvM-1)*((AvM+1)*two+AvM*two_2n+two_3n)-AvM*AvM)/(AvM*(AvM-1)*(AvM-2)*(AvM-3));
619
620
621
622
623
624
625
626
bc92c0cb 627
628
629
630
631
632
633
634
635 cout<<"<2> correlation from Q-vector = "<<two<<endl;
636 cout<<"<2> correlation directly = "<<twoDirect_n_n<<endl;
1dfa3c16 637 cout<<endl;
bc92c0cb 638 cout<<"<4> correlation from Q-vector = "<<four<<endl;
639 cout<<"<4> correlation directly = "<<fourDirect<<endl;
1dfa3c16 640 cout<<endl;
bc92c0cb 641 cout<<"<3>_{2n,n,n} correlation from Q-vector = "<<three_2n_n_n<<endl;
642 cout<<"<3>_{2n,n,n} correlation directly = "<<threeDirect_2n_n_n<<endl;
1dfa3c16 643 cout<<endl;
bc92c0cb 644 cout<<"<3>_{3n,2n,n} correlation from Q-vector = "<<three_3n_2n_n<<endl;
645 cout<<"<3>_{3n,2n,n} correlation directly = "<<threeDirect_3n_2n_n<<endl;
1dfa3c16 646 cout<<endl;
bc92c0cb 647 cout<<"<4>_{3n,n,n,n} correlation from Q-vector = "<<four_3n_n_n_n<<endl;
648 cout<<"<4>_{3n,n,n,n} correlation directly = "<<fourDirect_3n_n_n_n<<endl;
1dfa3c16 649 cout<<endl;
bc92c0cb 650 cout<<"<4>_{2n,n,2n,n} correlation from Q-vector = "<<four_2n_n_2n_n<<endl;
651 cout<<"<4>_{2n,n,2n,n} correlation directly = "<<fourDirect_2n_n_2n_n<<endl;
1dfa3c16 652 cout<<endl;
bc92c0cb 653 cout<<"<5>_{2n,n,n,n,n} correlation from Q-vector = "<<five_2n_n_n_n_n<<endl;
654 cout<<"<5>_{2n,n,n,n,n} correlation directly = "<<fiveDirect_2n_n_n_n_n<<endl;
1dfa3c16 655 cout<<endl;
bc92c0cb 656 cout<<"<6>_{n,n,n,n,n,n} correlation from Q-vector = "<<six_n_n_n_n_n_n<<endl;
657 cout<<"<6>_{n,n,n,n,n,n} correlation directly = "<<sixDirect_n_n_n_n_n_n<<endl;
1dfa3c16 658 cout<<endl;
bc92c0cb 659
660
661
662
663 //have so far: <2>, <2>_{2n}, <3>_{2n,n,n}, <4>
664
665
666 //cout<<"temp re = "<<ReQ2nQnstarQnstar<<endl;
667 //cout<<"temp im = "<<ImQ2nQnstarQnstar<<endl;
668 //cout<<AvQ2<<" "<<sqrt(AvQ4)<<endl;
1dfa3c16 669 cout<<endl;
bc92c0cb 670
671
672
673
674 if(AvQ2>AvM){
675 cout<<"v_2{2} = "<<100*sqrt(two)<<"%"<<endl;
676 }else{
677 cout<<"v_2{2} = Im"<<endl;
678 }
679
680 if(four>0){
681 cout<<"v_2{4} = "<<100*pow(four,1./4.)<<"%"<<endl;
682 }else{
683 cout<<"v_2{4} = Im"<<endl;
684 }
685
686
687
688
689 cout<<"AvM = "<<AvM<<endl;
1dfa3c16 690 cout<<endl;
bc92c0cb 691 cout<<"*************************************"<<endl;
692 cout<<"*************************************"<<endl;
693 cout<<"flow estimates from Q-cumulants:"<<endl;
694 Double_t cumulant2Q=two;
695 Double_t cumulant4Q=four-2.*two*two;
696 Double_t cumulant6Q=12.*two*two*two-9.*two*four+six_n_n_n_n_n_n;
697
1dfa3c16 698 //cout<<endl;
bc92c0cb 699 if(cumulant2Q>0.){
700 cout<<"v_2{2} = "<<100*pow(cumulant2Q,1./2.)<<"%"<<endl;
701 }else{
702 cout<<"v_2{2} = Im"<<endl;
703 }
704 if(cumulant4Q<0.){
705 cout<<"v_2{4} = "<<100*pow(-cumulant4Q,1./4.)<<"%"<<endl;
706 }else{
707 cout<<"v_2{4} = Im"<<endl;
708 }
709 if(cumulant6Q>0.){
710 cout<<"v_2{6} = "<<100*pow((1./4.)*cumulant6Q,1./6.)<<"%"<<endl;
711 }else{
712 cout<<"v_2{6} = Im"<<endl;
713 }
714
715 cout<<"*************************************"<<endl;
716 cout<<"*************************************"<<endl;
1dfa3c16 717 cout<<endl;
bc92c0cb 718
719
1dfa3c16 720 cout<<endl;
bc92c0cb 721 cout<<"*************************************"<<endl;
722 cout<<"*************************************"<<endl;
723 cout<<"flow estimates from Q-cumulants"<<endl;
724 cout<<"without multiplicities fluctuations:"<<endl;
725 Double_t cumulant2QnoFluct=fQCorr->GetBinContent(1);
726 Double_t cumulant4QnoFluct=fQCorr->GetBinContent(11)-2.*fQCorr->GetBinContent(1)*fQCorr->GetBinContent(1);
727 Double_t cumulant6QnoFluct=12.*fQCorr->GetBinContent(1)*fQCorr->GetBinContent(1)*fQCorr->GetBinContent(1) - 9.*fQCorr->GetBinContent(1)*fQCorr->GetBinContent(11)+fQCorr->GetBinContent(21);
728
1dfa3c16 729 //cout<<endl;
bc92c0cb 730 if(cumulant2QnoFluct>0.){
731 cout<<"v_2{2} = "<<100*pow(cumulant2QnoFluct,1./2.)<<"%"<<endl;
732 fIntRes->SetBinContent(1,100*pow(cumulant2QnoFluct,1./2.));
733 }else{
734 cout<<"v_2{2} = Im"<<endl;
735 }
736 if(cumulant4QnoFluct<0.){
737 cout<<"v_2{4} = "<<100*pow(-cumulant4QnoFluct,1./4.)<<"%"<<endl;
738 fIntRes->SetBinContent(2,100*pow(-cumulant4QnoFluct,1./4.));
739 }else{
740 cout<<"v_2{4} = Im"<<endl;
741 }
742 if(cumulant6QnoFluct>0.){
743 cout<<"v_2{6} = "<<100*pow((1./4.)*cumulant6QnoFluct,1./6.)<<"%"<<endl;
744 fIntRes->SetBinContent(3,100*pow((1./4.)*cumulant6QnoFluct,1./6.));
745 }else{
746 cout<<"v_2{6} = Im"<<endl;
747 }
748
749 cout<<"*************************************"<<endl;
750 cout<<"*************************************"<<endl;
1dfa3c16 751 cout<<endl;
bc92c0cb 752
753
754
755
756
757
758 cout<<"*****************************************************************"<<endl;
759 cout<<"*****************************************************************"<<endl;
760 cout<<"direct (nested loops) correlations vs correlations from Q-vectors"<<endl;
761 cout<<"for ARBITRARY multiplicity:"<<endl;
1dfa3c16 762 cout<<endl;
bc92c0cb 763 cout<<"avarage multiplicity = "<<AvM<<endl;
1dfa3c16 764 cout<<endl;
bc92c0cb 765 cout<<"<2>_{n|n} correlation from Q-vector = "<<fQCorr->GetBinContent(1)<<endl;
766 cout<<"<2>_{n|n} correlation nested loops = "<<fDirect->GetBinContent(1)<<endl;
1dfa3c16 767 cout<<endl;
bc92c0cb 768 cout<<"<4>_{n,n|n,n} correlation from Q-vector = "<<fQCorr->GetBinContent(11)<<endl;
769 cout<<"<4>_{n,n|n,n} correlation nested loops = "<<fDirect->GetBinContent(2)<<endl;
1dfa3c16 770 cout<<endl;
bc92c0cb 771 cout<<"<6>_{n,n,n|n,n,n} correlation from Q-vector = "<<fQCorr->GetBinContent(21)<<endl;
772 cout<<"<6>_{n,n,n|n,n,n} correlation nested loops = "<<fDirect->GetBinContent(8)<<endl;
773 cout<<"*****************************************************************"<<endl;
774 cout<<"*****************************************************************"<<endl;
775
776
777
778
779
780
781
782 cout<<"****** BDO ******"<<endl;
783 if(BDO4<0.){
784 cout<<"v_2{4} = "<<100*pow(-BDO4,1./4.)<<"%"<<endl;
785 }else{
786 cout<<"v_2{4} = Im"<<endl;
787 }
788 if(BDO6>0.){
789 cout<<"v_2{6} = "<<100*pow((1./4.)*BDO6,1./6.)<<"%"<<endl;
790 }else{
791 cout<<"v_2{6} = Im"<<endl;
792 }
793
794
795
1dfa3c16 796 cout<<endl;
bc92c0cb 797 cout<<"fourth order Q-cumulant should be the same and BDO4? "<<fourthOrderQCumulant<<" "<<cumulant4Q<<" "<<BDO4<<endl;
1dfa3c16 798 cout<<endl;
799 cout<<endl;
bc92c0cb 800 cout<<"sixth order Q-cumulant should be the same and BDO6? "<<sixthOrderQCumulant<<" "<<cumulant6Q<<" "<<BDO6<<endl;
1dfa3c16 801 cout<<endl;
bc92c0cb 802
803 cout<<"*************************************"<<endl;
804 cout<<"*************************************"<<endl;
1dfa3c16 805 cout<<endl;
bc92c0cb 806
807
808
809 cout<<"*********************"<<endl;
810 cout<<"multiplicity = "<<AvM<<endl;
811 cout<<"correlations: "<<endl;
812 cout<<"direct = "<<twoDirect_n_n<<endl;
813 cout<<"approx = "<<two_n_n<<endl;
814 cout<<"weight = "<<fQCorr->GetBinContent(1)<<endl;
815 cout<<"*********************"<<endl;
816 cout<<"test = "<<fQCorr->GetBinContent(11)<<" "<<four<<endl;
817
818
819
820
821
822
823
824
825
826
827
828
829*/
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
bc92c0cb 845
846
847
dee1e0e0 848/*
bc92c0cb 849
850
dee1e0e0 851
852
52021ae2 853
854
bc92c0cb 855//needed for direct correlations
856
857
1dfa3c16 858 cout<<endl;
859 cout<<endl;
bc92c0cb 860 cout<<" **** cross-checking the formulas ****"<<endl;
861 cout<<" **** for integrated flow ****"<<endl;
dee1e0e0 862 cout<<"(selected only events for which 8 < M < 14 "<<endl;
863 cout<<" from dataset in /data/alice2/ante/AOD) "<<endl;
864
1dfa3c16 865 cout<<endl;
bc92c0cb 866 cout<<" nEvts = "<<nEvts<<", AvM = "<<AvM<<endl;
1dfa3c16 867 cout<<endl;
dee1e0e0 868 cout<<"<2>_{n|n} from Q-vectors = "<<fQCorr->GetBinContent(1)<<endl;
869 cout<<"<2>_{n|n} from nested loops = "<<fDirect->GetBinContent(1)<<endl;
1dfa3c16 870 cout<<endl;
dee1e0e0 871 cout<<"<2>_{2n|2n} from Q-vectors = "<<fQCorr->GetBinContent(2)<<endl;
872 cout<<"<2>_{2n|2n} from nested loops = "<<fDirect->GetBinContent(2)<<endl;
1dfa3c16 873 cout<<endl;
dee1e0e0 874 cout<<"<2>_{3n|3n} from Q-vectors = "<<fQCorr->GetBinContent(3)<<endl;
875 cout<<"<2>_{3n|3n} from nested loops = "<<fDirect->GetBinContent(3)<<endl;
1dfa3c16 876 cout<<endl;
dee1e0e0 877 cout<<"<2>_{4n|4n} from Q-vectors = "<<fQCorr->GetBinContent(4)<<endl;
878 cout<<"<2>_{4n|4n} from nested loops = "<<fDirect->GetBinContent(4)<<endl;
1dfa3c16 879 cout<<endl;
dee1e0e0 880 cout<<"<3>_{2n,n,n} from Q-vectors = "<<fQCorr->GetBinContent(6)<<endl;
881 cout<<"<3>_{2n,n,n} from nested loops = "<<fDirect->GetBinContent(6)<<endl;
1dfa3c16 882 cout<<endl;
dee1e0e0 883 cout<<"<3>_{3n,2n,n} from Q-vectors = "<<fQCorr->GetBinContent(7)<<endl;
884 cout<<"<3>_{3n,2n,n} from nested loops = "<<fDirect->GetBinContent(7)<<endl;
1dfa3c16 885 cout<<endl;
dee1e0e0 886 cout<<"<3>_{4n,2n,2n} from Q-vectors = "<<fQCorr->GetBinContent(8)<<endl;
887 cout<<"<3>_{4n,2n,2n} from nested loops = "<<fDirect->GetBinContent(8)<<endl;
1dfa3c16 888 cout<<endl;
dee1e0e0 889 cout<<"<3>_{4n,3n,n} from Q-vectors = "<<fQCorr->GetBinContent(9)<<endl;
890 cout<<"<3>_{4n,3n,n} from nested loops = "<<fDirect->GetBinContent(9)<<endl;
1dfa3c16 891 cout<<endl;
dee1e0e0 892 cout<<"<4>_{n,n|n,n} from Q-vectors = "<<fQCorr->GetBinContent(11)<<endl;
893 cout<<"<4>_{n,n|n,n} from nested loops = "<<fDirect->GetBinContent(11)<<endl;
1dfa3c16 894 cout<<endl;
dee1e0e0 895 cout<<"<4>_{2n,n|2n,n} from Q-vectors = "<<fQCorr->GetBinContent(12)<<endl;
896 cout<<"<4>_{2n,n|2n,n} from nested loops = "<<fDirect->GetBinContent(12)<<endl;
1dfa3c16 897 cout<<endl;
dee1e0e0 898 cout<<"<4>_{2n,2n|2n,2n} from Q-vectors = "<<fQCorr->GetBinContent(13)<<endl;
899 cout<<"<4>_{2n,2n|2n,2n} from nested loops = "<<fDirect->GetBinContent(13)<<endl;
1dfa3c16 900 cout<<endl;
dee1e0e0 901 cout<<"<4>_{3n|n,n,n} from Q-vectors = "<<fQCorr->GetBinContent(14)<<endl;
902 cout<<"<4>_{3n|n,n,n} from nested loops = "<<fDirect->GetBinContent(14)<<endl;
1dfa3c16 903 cout<<endl;
dee1e0e0 904 cout<<"<4>_{3n,n|3n,n} from Q-vectors = "<<fQCorr->GetBinContent(15)<<endl;
905 cout<<"<4>_{3n,n|3n,n} from nested loops = "<<fDirect->GetBinContent(15)<<endl;
1dfa3c16 906 cout<<endl;
dee1e0e0 907 cout<<"<4>_{3n,n|2n,2n} from Q-vectors = "<<fQCorr->GetBinContent(16)<<endl;
908 cout<<"<4>_{3n,n|2n,2n} from nested loops = "<<fDirect->GetBinContent(16)<<endl;
1dfa3c16 909 cout<<endl;
dee1e0e0 910 cout<<"<4>_{4n|2n,n,n} from Q-vectors = "<<fQCorr->GetBinContent(17)<<endl;
911 cout<<"<4>_{4n|2n,n,n} from nested loops = "<<fDirect->GetBinContent(17)<<endl;
1dfa3c16 912 cout<<endl;
dee1e0e0 913 cout<<"<5>_{2n,n|n,n,n} from Q-vectors = "<<fQCorr->GetBinContent(19)<<endl;
914 cout<<"<5>_{2n,n|n,n,n} from nested loops = "<<fDirect->GetBinContent(19)<<endl;
1dfa3c16 915 cout<<endl;
dee1e0e0 916 cout<<"<5>_{2n,2n|2n,n,n} from Q-vectors = "<<fQCorr->GetBinContent(20)<<endl;
917 cout<<"<5>_{2n,2n|2n,n,n} from nested loops = "<<fDirect->GetBinContent(20)<<endl;
1dfa3c16 918 cout<<endl;
dee1e0e0 919 cout<<"<5>_{3n,n|2n,n,n} from Q-vectors = "<<fQCorr->GetBinContent(21)<<endl;
920 cout<<"<5>_{3n,n|2n,n,n} from nested loops = "<<fDirect->GetBinContent(21)<<endl;
1dfa3c16 921 cout<<endl;
dee1e0e0 922 cout<<"<5>_{4n|n,n,n,n} from Q-vectors = "<<fQCorr->GetBinContent(22)<<endl;
923 cout<<"<5>_{4n|n,n,n,n} from nested loops = "<<fDirect->GetBinContent(22)<<endl;
1dfa3c16 924 cout<<endl;
dee1e0e0 925 cout<<"<6>_{n,n,n|n,n,n} from Q-vectors = "<<fQCorr->GetBinContent(24)<<endl;
926 cout<<"<6>_{n,n,n|n,n,n} from nested loops = "<<fDirect->GetBinContent(24)<<endl;
1dfa3c16 927 cout<<endl;
dee1e0e0 928 cout<<"<6>_{2n,n,n|2n,n,n} from Q-vectors = "<<fQCorr->GetBinContent(25)<<endl;
929 cout<<"<6>_{2n,n,n|2n,n,n} from nested loops = "<<fDirect->GetBinContent(25)<<endl;
1dfa3c16 930 cout<<endl;
dee1e0e0 931 cout<<"<6>_{2n,2n|n,n,n,n} from Q-vectors = "<<fQCorr->GetBinContent(26)<<endl;
932 cout<<"<6>_{2n,2n|n,n,n,n} from nested loops = "<<fDirect->GetBinContent(26)<<endl;
1dfa3c16 933 cout<<endl;
dee1e0e0 934 cout<<"<6>_{3n,n|n,n,n,n} from Q-vectors = "<<fQCorr->GetBinContent(27)<<endl;
935 cout<<"<6>_{3n,n|n,n,n,n} from nested loops = "<<fDirect->GetBinContent(27)<<endl;
1dfa3c16 936 cout<<endl;
dee1e0e0 937 cout<<"<7>_{2n,n,n|n,n,n,n} from Q-vectors = "<<fQCorr->GetBinContent(29)<<endl;
938 cout<<"<7>_{2n,n,n|n,n,n,n} from nested loops = "<<fDirect->GetBinContent(29)<<endl;
1dfa3c16 939 cout<<endl;
dee1e0e0 940 cout<<"<8>_{n,n,n,n|n,n,n,n} from Q-vectors = "<<fQCorr->GetBinContent(31)<<endl;
941 cout<<"<8>_{n,n,n,n|n,n,n,n} from nested loops = "<<fDirect->GetBinContent(31)<<endl;
1dfa3c16 942 cout<<endl;
bc92c0cb 943
944//DIFFERENTIAL FLOW
945
946
947 //41st bin: <2'>_{n|n}
948 //42nd bin: <2'>_{2n|2n}
949 //46th bin: <3'>_{2n|n,n}
950 //47th bin: <3'>_{n,n|2n}
951 //51st bin: <4'>_{n,n|n,n}
952
953
954
52021ae2 955
bc92c0cb 956
1dfa3c16 957 cout<<endl;
958 cout<<endl;
bc92c0cb 959 cout<<" **** cross-checking the formulas ****"<<endl;
960 cout<<" **** for differential flow ****"<<endl;
dee1e0e0 961 cout<<"(selected only events for which 8 < M < 14 "<<endl;
962 cout<<" from dataset in /data/alice2/ante/AOD) "<<endl;
963
1dfa3c16 964 cout<<endl;
bc92c0cb 965 cout<<"nEvts = "<<nEvts<<", AvM = "<<AvM<<endl;
966 cout<<"0.5 < Pt < 0.6 GeV"<<endl;
1dfa3c16 967 cout<<endl;
968 cout<<"<2'>_{n|n} from Q-vectors = "<<fbinPt2p1n1n->GetBinContent(6)<<endl;kTRUE
bc92c0cb 969 cout<<"<2'>_{n|n} from nested loops = "<<fDirect->GetBinContent(41)<<endl;
1dfa3c16 970 cout<<endl;
971 cout<<"<2'>_{2n|2n} from Q-vectors = "<<fbinPt2p2n2n->GetBinContent(6)<<endl;
bc92c0cb 972 cout<<"<2'>_{2n|2n} from nested loops = "<<fDirect->GetBinContent(42)<<endl;
1dfa3c16 973 cout<<endl;
974 cout<<"<3'>_{2n|n,n} from Q-vectors = "<<fbinPt3p2n1n1n->GetBinContent(6)<<endl;
bc92c0cb 975 cout<<"<3'>_{2n|n,n} from nested loops = "<<fDirect->GetBinContent(46)<<endl;
1dfa3c16 976 cout<<endl;
977 cout<<"<3'>_{n,n|2n} from Q-vectors = "<<fbinPt3p1n1n2n->GetBinContent(6)<<endl;
bc92c0cb 978 cout<<"<3'>_{n,n|2n} from nested loops = "<<fDirect->GetBinContent(47)<<endl;
1dfa3c16 979 cout<<endl;
980 cout<<"<4'>_{n,n|n,n} from Q-vectors = "<<fbinPt4p1n1n1n1n->GetBinContent(6)<<endl;
bc92c0cb 981 cout<<"<4'>_{n,n|n,n} from nested loops = "<<fDirect->GetBinContent(51)<<endl;
1dfa3c16 982 cout<<endl;
bc92c0cb 983
52021ae2 984
985
dee1e0e0 986
987 */
1315fe58 988
e6614983 989
bc92c0cb 990}
991
e6614983 992
993
994
995
996
997
998
999
1000
1001
1002
bc92c0cb 1003
1004
1005