23 #define AliFlowAnalysisCRC_cxx
25 #include "Riostream.h"
34 #include "TParticle.h"
38 #include "TProfile2D.h"
39 #include "TProfile3D.h"
42 #include "TPaveLabel.h"
52 #include "THnSparse.h"
85 fBookOnlyBasicCCH(kTRUE),
87 fCommonHists2nd(NULL),
88 fCommonHists4th(NULL),
89 fCommonHists6th(NULL),
90 fCommonHists8th(NULL),
91 fCommonHistsResults2nd(NULL),
92 fCommonHistsResults4th(NULL),
93 fCommonHistsResults6th(NULL),
94 fCommonHistsResults8th(NULL),
107 fCommonConstants(NULL),
108 fFillMultipleControlHistograms(kFALSE),
110 fAnalysisLabel(NULL),
112 fUsePhiWeights(kFALSE),
113 fUsePtWeights(kFALSE),
114 fUseEtaWeights(kFALSE),
115 fUseTrackWeights(kFALSE),
116 fUsePhiEtaWeights(kFALSE),
117 fUsePhiEtaWeightsChDep(kFALSE),
118 fUsePhiEtaWeightsVtxDep(kFALSE),
119 fUsePhiEtaWeightsChPtDep(kFALSE),
120 fUseZDCESEMulWeights(kFALSE),
121 fUseZDCESESpecWeights(kFALSE),
122 fUseParticleWeights(NULL),
124 fMultiplicityWeight(NULL),
128 fIntFlowProfiles(NULL),
129 fIntFlowResults(NULL),
130 fIntFlowAllCorrelationsVsM(NULL),
132 fApplyCorrectionForNUA(kFALSE),
133 fApplyCorrectionForNUAVsM(kFALSE),
137 fPropagateErrorAlsoFromNIT(kFALSE),
138 fCalculateCumulantsVsM(kFALSE),
139 fCalculateAllCorrelationsVsM(kFALSE),
140 fMinimumBiasReferenceFlow(kTRUE),
141 fForgetAboutCovariances(kFALSE),
142 fStoreVarious(kFALSE),
144 fUse2DHistograms(kFALSE),
145 fFillProfilesVsMUsingWeights(kTRUE),
146 fUseQvectorTerms(kFALSE),
152 fIntFlowCorrelationsEBE(NULL),
153 fIntFlowEventWeightsForCorrelationsEBE(NULL),
154 fIntFlowCorrelationsAllEBE(NULL),
156 fNumberOfPOIsEBE(0.),
157 fReferenceMultiplicityEBE(0.),
158 fReferenceMultiplicityRecEBE(0.),
160 fNewCentralityEBE(0.),
166 fCentralityCL1EBE(0.),
168 fCentralityTRKEBE(0.),
174 fAvMultiplicity(NULL),
175 fIntFlowCorrelationsPro(NULL),
176 fIntFlowSquaredCorrelationsPro(NULL),
177 fIntFlowCorrelationsAllPro(NULL),
178 fIntFlowExtraCorrelationsPro(NULL),
179 fIntFlowProductOfCorrelationsPro(NULL),
180 fIntFlowProductOfCorrectionTermsForNUAPro(NULL),
181 fIntFlowCorrelationsHist(NULL),
182 fIntFlowCorrelationsAllHist(NULL),
183 fIntFlowCovariances(NULL),
184 fIntFlowSumOfProductOfEventWeights(NULL),
185 fIntFlowCovariancesNUA(NULL),
186 fIntFlowSumOfProductOfEventWeightsNUA(NULL),
187 fIntFlowQcumulants(NULL),
188 fIntFlowQcumulantsRebinnedInM(NULL),
189 fIntFlowQcumulantsErrorSquaredRatio(NULL),
191 fIntFlowRebinnedInM(NULL),
192 fIntFlowDetectorBias(NULL),
195 fDiffFlowProfiles(NULL),
196 fDiffFlowResults(NULL),
198 fDiffFlowFlags(NULL),
199 fCalculateDiffFlow(kTRUE),
200 fCalculate2DDiffFlow(kFALSE),
201 fCalculateDiffFlowVsEta(kTRUE),
203 fOtherDiffCorrelatorsList(NULL),
205 fDistributionsList(NULL),
206 fDistributionsFlags(NULL),
207 fStoreDistributions(kFALSE),
208 fnBinsForCorrelations(10000),
210 fNestedLoopsList(NULL),
211 fEvaluateIntFlowNestedLoops(kFALSE),
212 fEvaluateDiffFlowNestedLoops(kFALSE),
213 fMaxAllowedMultiplicity(10),
214 fEvaluateNestedLoops(NULL),
215 fIntFlowDirectCorrelations(NULL),
216 fIntFlowExtraDirectCorrelations(NULL),
217 fCrossCheckInPtBinNo(10),
218 fCrossCheckInEtaBinNo(20),
219 fNoOfParticlesInBin(NULL),
220 fMixedHarmonicsNestedLoops(NULL),
222 fMixedHarmonicsList(NULL),
223 fMixedHarmonicsProfiles(NULL),
224 fMixedHarmonicsResults(NULL),
225 fMixedHarmonicsErrorPropagation(NULL),
226 fMixedHarmonicsFlags(NULL),
227 fCalculateMixedHarmonics(kFALSE),
228 fCalculateMixedHarmonicsVsM(kFALSE),
229 f2pCorrelations(NULL),
230 f3pCorrelations(NULL),
231 f4pCorrelations(NULL),
232 f5pCorrelations(NULL),
233 f6pCorrelations(NULL),
234 f7pCorrelations(NULL),
235 f8pCorrelations(NULL),
243 fMixedHarmonicProductOfEventWeights(NULL),
244 fMixedHarmonicProductOfCorrelations(NULL),
246 fControlHistogramsList(NULL),
247 fControlHistogramsFlags(NULL),
248 fStoreControlHistograms(kFALSE),
249 fCorrelationNoRPsVsRefMult(NULL),
250 fCorrelationNoPOIsVsRefMult(NULL),
251 fCorrelationNoRPsVsNoPOIs(NULL),
253 fBootstrapList(NULL),
254 fBootstrapProfilesList(NULL),
255 fBootstrapResultsList(NULL),
256 fBootstrapFlags(NULL),
257 fUseBootstrap(kFALSE),
258 fUseBootstrapVsM(kFALSE),
261 fBootstrapCorrelations(NULL),
262 fBootstrapCumulants(NULL),
267 fCalculateCRC(kTRUE),
268 fCalculateCRCPt(kFALSE),
269 fCalculateCME(kFALSE),
270 fCalculateCRCInt(kFALSE),
271 fCalculateCRC2(kFALSE),
272 fCalculateCRCVZ(kFALSE),
273 fCalculateCRCZDC(kFALSE),
274 fCalculateFlowQC(kFALSE),
275 fCalculateFlowZDC(kFALSE),
276 fCalculateFlowVZ(kFALSE),
277 fCalculateEbEFlow(kFALSE),
278 fStoreZDCQVecVtxPos(kFALSE),
279 fUsePhiEtaCuts(kFALSE),
282 fRecenterZDC(kFALSE),
284 fUseCRCRecenter(kFALSE),
295 fCorrWeightTPC(kUnit),
296 fCorrWeightVZ(kUnit),
297 fCorrWeightZDC(kUnit),
300 fCRCCenBinWidth(CenWidth),
301 fCRCIntRbRList(NULL),
304 fInteractionRate(kAll),
305 fSelectCharge(kAllCh),
306 fPOIExtraWeights(kNone),
308 fCRCQVecListTPC(NULL),
309 fCRCQVecWeightsList(NULL),
310 fCRCZDCCalibList(NULL),
311 fCRCZDC2DCutList(NULL),
312 fCRCVZEROCalibList(NULL),
313 fCRCZDCResList(NULL),
317 fCRCZDCRbRList(NULL),
324 fFlowSPZDCList(NULL),
330 fFlowQCDeltaEta(0.4),
336 fQAZDCCutsFlag(kTRUE),
337 fUseTracklets(kFALSE),
340 fZDCGainAlpha(0.395),
341 fbFlagIsPosMagField(kFALSE)
346 fHistList =
new TList();
347 fHistList->SetName(
"cobjQC");
348 fHistList->SetOwner(kTRUE);
351 fTempList =
new TList();
352 fTempList->SetName(
"temp");
353 fTempList->SetOwner(kTRUE);
356 fMultiplicityWeight =
new TString(
"combinations");
359 fAnalysisLabel =
new TString();
362 this->InitializeArraysForIntFlow();
363 this->InitializeArraysForDiffFlow();
364 this->InitializeArraysForDistributions();
365 this->InitializeArraysForVarious();
366 this->InitializeArraysForNestedLoops();
367 this->InitializeArraysForMixedHarmonics();
368 this->InitializeArraysForControlHistograms();
369 this->InitializeArraysForBootstrap();
378 this->InitializeCostantsForCRC();
379 this->InitializeArraysForParticleWeights();
380 this->InitializeArraysForCRC();
381 this->InitializeArraysForCRCVZ();
382 this->InitializeArraysForCRCZDC();
383 this->InitializeArraysForCRC2();
384 this->InitializeArraysForQVec();
385 this->InitializeArraysForCRCPt();
386 this->InitializeArraysForCME();
387 this->InitializeArraysForFlowEbE();
388 this->InitializeArraysForFlowQC();
389 this->InitializeArraysForFlowQCHighOrders();
390 this->InitializeArraysForFlowGF();
391 this->InitializeArraysForFlowSPZDC();
392 this->InitializeArraysForFlowSPVZ();
393 this->InitializeArraysForEbEFlow();
438 Bool_t oldHistAddStatus = TH1::AddDirectoryStatus();
439 TH1::AddDirectory(kFALSE);
497 TH1::AddDirectory(oldHistAddStatus);
538 Int_t nCounterNoRPs = 0;
589 if(fRunBin<0 || fRunBin>=
fCRCnRun) {
return;}
591 if(fCenBin<0 || fCenBin>=
fCRCnCen) {
return;}
604 Int_t dRun15hPos[] = {246390, 246391, 246392, 246994, 246991, 246989, 246984, 246982, 246980, 246948, 246945, 246928, 246851, 246847, 246846, 246845, 246844, 246810, 246809, 246808, 246807, 246805, 246804, 246766, 246765, 246763, 246760, 246759, 246758, 246757, 246751, 246750, 246495, 246493, 246488, 246487, 246434, 246431, 246428, 246424};
605 for (
Int_t i=0; i<40; i++) {
671 Bool_t bPassZDCcuts = kTRUE;
672 if( ZCM<=0. || ZAM<=0. || sqrt(ZCRe*ZCRe+ZCIm*ZCIm)<1.E-6 || sqrt(ZARe*ZARe+ZAIm*ZAIm)<1.E-6 ) bPassZDCcuts=kFALSE;
694 AliWarning(
"WARNING: POIExtraWeights (kEtaPhiRbR) not found ! \n");
698 for (
Int_t i=0; i<2; i++) {
702 AliWarning(
"WARNING: POIExtraWeights (kEtaPhiChRbR) not found ! \n");
711 AliWarning(
"WARNING: POIExtraWeights (kEtaPhiVtxRbR) not found ! \n");
719 for(
Int_t i=0;i<nPrim;i++) {
726 Bool_t IsSplitMergedTracks = kFALSE;
730 if(IsSplitMergedTracks)
continue;
736 dPhi = aftsTrack->
Phi();
737 dPt = aftsTrack->
Pt();
738 dEta = aftsTrack->
Eta();
739 dCharge = aftsTrack->
Charge();
744 cw = (dCharge > 0. ? 0 : 1);
756 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
763 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
768 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
773 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
775 Int_t ptbebe = (dPt>1.? 2 : (dPt>0.5 ? 1 : 0));
779 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
785 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
790 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
798 for(
Int_t m=0;m<12;m++)
800 for(
Int_t k=0;k<9;k++)
802 (*fReQ)(m,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1)*n*dPhi);
803 (*fImQ)(m,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1)*n*dPhi);
807 for(
Int_t p=0;p<8;p++)
809 for(
Int_t k=0;k<9;k++)
811 (*fSpk)(p,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k);
820 for(
Int_t k=0;k<9;k++)
822 for(
Int_t m=0;m<4;m++)
828 fReRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
829 fImRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
832 fs1dEBE[0][pe][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
838 fReRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
839 fImRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
842 fs2dEBE[0][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
851 for(
Int_t k=0;k<9;k++)
853 for(
Int_t m=0;m<4;m++)
859 fReRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
860 fImRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
863 fs1dEBE[2][pe][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
869 fReRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
870 fImRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
873 fs2dEBE[2][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
890 dPhi = aftsTrack->
Phi();
891 dPt = aftsTrack->
Pt();
892 dEta = aftsTrack->
Eta();
893 dCharge = aftsTrack->
Charge();
900 if(dCharge > 0.) dPt += 1.E-2;
904 cw = (dCharge > 0. ? 0 : 1);
917 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
924 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
929 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
934 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
936 Int_t ptbebe = (dPt>1.? 2 : (dPt>0.5 ? 1 : 0));
940 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
946 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
951 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
957 if(dPhi>2.136283 && dPhi<2.324779)
continue;
961 for(
Int_t m=0;m<21;m++)
963 for(
Int_t k=0;k<9;k++)
965 (*fReQGF)(m,k) += pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos(m*dPhi);
966 (*fImQGF)(m,k) += pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin(m*dPhi);
973 for(
Int_t k=0;k<9;k++)
975 for(
Int_t m=0;m<4;m++)
981 fReRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
982 fImRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
987 fReRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
988 fImRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
996 fCRCQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
997 fCRCQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
998 fCRCMult[cw][h]->Fill(dEta,wPhiEta);
1000 fCRC2QRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
1001 fCRC2QIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
1002 fCRC2Mul[cw][h]->Fill(dEta,pow(wPhiEta,h));
1004 fCRCZDCQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
1005 fCRCZDCQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
1009 fCRC2QRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
1010 fCRC2QIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
1011 fCRC2Mul[2][h]->Fill(dEta,pow(wPhiEta,h));
1015 fCRCZDCQRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
1016 fCRCZDCQIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
1019 fCRCZDCQRe[3][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
1020 fCRCZDCQIm[3][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
1028 if(weraw > 0.) SpecWeig = 1./weraw;
1030 fCMEQRe[cw][h]->Fill(dEta,SpecWeig*wPhiEta*TMath::Cos((h+1.)*dPhi));
1031 fCMEQIm[cw][h]->Fill(dEta,SpecWeig*wPhiEta*TMath::Sin((h+1.)*dPhi));
1032 fCMEMult[cw][h]->Fill(dEta,SpecWeig*wPhiEta);
1033 fCMEQRe[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.)*TMath::Cos((h+1.)*dPhi));
1034 fCMEQIm[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.)*TMath::Sin((h+1.)*dPhi));
1035 fCMEMult[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.));
1051 fPOIPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1052 fPOIPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1055 fPOIPtDiffQReCh[cw][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1056 fPOIPtDiffQImCh[cw][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1059 fPOIPhiDiffQRe[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1060 fPOIPhiDiffQIm[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1063 fPOIPhiEtaDiffQRe[ITStype][k][h]->Fill(dPhi,dEta,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1064 fPOIPhiEtaDiffQIm[ITStype][k][h]->Fill(dPhi,dEta,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1068 Int_t keta = (dEta<0.?0:1);
1069 fPOIPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1070 fPOIPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1072 fPOIPhiDiffQReEG[keta][k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1073 fPOIPhiDiffQImEG[keta][k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1077 }
else if(fFlowQCDeltaEta<0. && fFlowQCDeltaEta>-1.) {
1080 fPOIPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1081 fPOIPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1084 fPOIPhiDiffQRe[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1085 fPOIPhiDiffQIm[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1090 if((dEta>0. && dEta<0.4-boundetagap/2.) || (dEta>0.4+boundetagap/2. && dEta<0.8)) {
1092 if(dEta>0. && dEta<0.4-boundetagap/2.) keta = 0;
1094 fPOIPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1095 fPOIPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1103 }
else if(fFlowQCDeltaEta<-1. && fFlowQCDeltaEta>-2.) {
1106 fPOIPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1107 fPOIPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1110 fPOIPhiDiffQRe[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1111 fPOIPhiDiffQIm[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1116 if((dEta<0. && dEta>-0.4+boundetagap/2.) || (dEta<-0.4-boundetagap/2. && dEta>-0.8)) {
1118 if(dEta<0. && dEta>-0.4+boundetagap/2.) keta = 0;
1120 fPOIPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1121 fPOIPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1134 fEtaDiffQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
1135 fEtaDiffQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
1137 fPOIEtaPtQRe[cw][h]->Fill(dEta,dPt,wPhiEta*TMath::Cos((h+1.)*dPhi));
1138 fPOIEtaPtQIm[cw][h]->Fill(dEta,dPt,wPhiEta*TMath::Sin((h+1.)*dPhi));
1167 for (
Int_t h=0;h<6;h++) {
1187 printf(
"\n WARNING (QC): No particle (i.e. aftsTrack is a NULL pointer in AFAWQC::Make())!!!!\n\n");
1194 for(
Int_t p=0;p<8;p++)
1196 for(
Int_t k=0;k<9;k++)
1198 (*fSpk)(p,k)=pow((*
fSpk)(p,k),p+1);
1593 const Float_t kLimit1 = 0.02 * 3;
1597 Bool_t isNoSplit = kFALSE;
1600 if (it1 < nTracks - 1) {
1601 for (
Int_t itll2 = it1 + 1; itll2 < nTracks; itll2++) {
1613 if (TMath::Abs(deta1) < 0.02 * 2.5 * 3) {
1621 Float_t dphistarminabs1 = 1e5;
1624 if (TMath::Abs(dphistar11) < kLimit1 || TMath::Abs(dphistar21) < kLimit1 || dphistar11 * dphistar21 < 0 ) {
1626 for (
Double_t rad1 = 0.8; rad1 < 2.51; rad1 += 0.01) {
1629 Float_t dphistarabs1 = TMath::Abs(dphistar1);
1630 if (dphistarabs1 < dphistarminabs1) {
1631 dphistarmin1 = dphistar1;
1632 dphistarminabs1 = dphistarabs1;
1635 if (dphistarminabs1 < 0.02 && TMath::Abs(deta1) < 0.02) {
1689 cout<<
"Skipping the event because multiplicity is "<<nPrim<<
". Too high to evaluate nested loops!"<<endl;
1693 cout<<
"Skipping the event because multiplicity is "<<nPrim<<
"."<<endl;
1829 cosP1n = dReQ1n/dMult;
1847 cosP1nP1n = (pow(dReQ1n,2)-pow(dImQ1n,2)-dReQ2n)/(dMult*(dMult-1));
1848 cosP2nM1n = (dReQ2n*dReQ1n+dImQ2n*dImQ1n-dReQ1n)/(dMult*(dMult-1));
1872 cosP1nM1nM1n = (dReQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2))-dReQ1n*dReQ2n-dImQ1n*dImQ2n-2.*(dMult-1)*dReQ1n)
1873 / (dMult*(dMult-1)*(dMult-2));
1938 sinP1n = dImQ1n/dMult;
1955 sinP1nP1n = (2.*dReQ1n*dImQ1n-dImQ2n)/(dMult*(dMult-1));
1956 sinP2nM1n = (dImQ2n*dReQ1n-dReQ2n*dImQ1n-dImQ1n)/(dMult*(dMult-1));
1980 sinP1nM1nM1n = (-dImQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2))+dReQ1n*dImQ2n-dImQ1n*dReQ2n+2.*(dMult-1)*dImQ1n)
1981 / (dMult*(dMult-1)*(dMult-2));
2011 if(outputListHistos)
2016 printf(
"\n WARNING (QC): fHistList is NULL in AFAWQC::GOH() !!!!\n\n");
2045 printf(
"\n WARNING (QC): outputListHistos is NULL in AFAWQC::GOH() !!!!\n\n");
2057 Int_t nBinsPt = profilePtEta->GetNbinsX();
2058 Double_t dPtMin = (profilePtEta->GetXaxis())->GetXmin();
2059 Double_t dPtMax = (profilePtEta->GetXaxis())->GetXmax();
2061 Int_t nBinsEta = profilePtEta->GetNbinsY();
2063 TProfile *profilePt =
new TProfile(
"",
"",nBinsPt,dPtMin,dPtMax);
2065 for(
Int_t p=1;p<=nBinsPt;p++)
2073 for(
Int_t e=1;e<=nBinsEta;e++)
2075 contentPt += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
2076 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
2077 entryPt += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
2079 sum1 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
2080 * (pow(profilePtEta->GetBinError(profilePtEta->GetBin(p,e)),2.)
2081 + pow(profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)),2.));
2082 sum2 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
2083 sum3 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
2084 * (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)));
2086 if(sum2>0. && sum1/sum2-pow(sum3/sum2,2.) > 0.)
2088 spreadPt = pow(sum1/sum2-pow(sum3/sum2,2.),0.5);
2090 profilePt->SetBinContent(p,contentPt);
2091 profilePt->SetBinEntries(p,entryPt);
2093 profilePt->SetBinError(p,spreadPt);
2110 Int_t nBinsEta = profilePtEta->GetNbinsY();
2111 Double_t dEtaMin = (profilePtEta->GetYaxis())->GetXmin();
2112 Double_t dEtaMax = (profilePtEta->GetYaxis())->GetXmax();
2114 Int_t nBinsPt = profilePtEta->GetNbinsX();
2116 TProfile *profileEta =
new TProfile(
"",
"",nBinsEta,dEtaMin,dEtaMax);
2118 for(
Int_t e=1;e<=nBinsEta;e++)
2122 for(
Int_t p=1;p<=nBinsPt;p++)
2124 contentEta += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
2125 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
2126 entryEta += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
2128 profileEta->SetBinContent(e,contentEta);
2129 profileEta->SetBinEntries(e,entryEta);
2149 for(
Int_t b=0;b<4;b++)
2160 }
else if(type ==
"RP")
2170 }
else if(type ==
"POI")
2182 for(
Int_t b=0;b<4;b++)
2191 TString subtitle2 =
" (rebinned in M)";
2193 if(type !=
"RF, rebinned in M")
2197 subtitle.Append(type);
2198 subtitle.Append(
", without weights)");
2201 subtitle.Append(type);
2202 subtitle.Append(
", with weights)");
2208 subtitle.Append(
"RF");
2209 subtitle.Append(
", without weights)");
2212 subtitle.Append(
"RF");
2213 subtitle.Append(
", with weights)");
2218 cout<<
"*************************************"<<endl;
2219 cout<<
"*************************************"<<endl;
2220 cout<<title.Data()<<endl;
2221 cout<<subtitle.Data()<<endl;
2222 if(type ==
"RF, rebinned in M"){cout<<subtitle2.Data()<<endl;}
2225 for(
Int_t i=0;i<4;i++)
2227 cout<<
" v_"<<n<<
"{"<<2*(i+1)<<
"} = "<<dVn[i]<<
" +/- "<<dVnErr[i]<<endl;
2235 cout<<
" detector bias (corrected for): "<<endl;
2238 cout<<
" detector bias (not corrected for):"<<endl;
2244 if(type ==
"RF" || type ==
"RF, rebinned in M")
2248 else if (type ==
"RP")
2252 else if (type ==
"POI")
2257 cout<<
"*************************************"<<endl;
2258 cout<<
"*************************************"<<endl;
2268 TFile *output =
new TFile(outputFileName.Data(),
"RECREATE");
2284 outputFileName->Write(outputFileName->GetName(), TObject::kSingleKey);
2297 TString commonHistsName =
"AliFlowCommonHistQC";
2305 TString commonHists2ndOrderName =
"AliFlowCommonHist2ndOrderQC";
2310 TString commonHists4thOrderName =
"AliFlowCommonHist4thOrderQC";
2315 TString commonHists6thOrderName =
"AliFlowCommonHist6thOrderQC";
2320 TString commonHists8thOrderName =
"AliFlowCommonHist8thOrderQC";
2328 TString commonHistResults2ndOrderName =
"AliFlowCommonHistResults2ndOrderQC";
2333 TString commonHistResults4thOrderName =
"AliFlowCommonHistResults4thOrderQC";
2338 TString commonHistResults6thOrderName =
"AliFlowCommonHistResults6thOrderQC";
2343 TString commonHistResults8thOrderName =
"AliFlowCommonHistResults8thOrderQC";
2535 TF1 *CenFit =
new TF1(
"CenFit",
"pol0", 0., 100.);
2538 Double_t CenAv = CenFit->GetParameter(0);
2550 Double_t CenAv = CenFit->GetParameter(0);
2552 Double_t SemiCenAv = CenFit->GetParameter(0);
2578 TString sinCosFlag[2] = {
"sin",
"cos"};
2579 TString powerFlag[2] = {
"linear",
"quadratic"};
2582 TString intFlowFlagsName =
"fIntFlowFlags";
2584 fIntFlowFlags =
new TProfile(intFlowFlagsName.Data(),
"Flags for Integrated Flow",20,0.,20.);
2590 fIntFlowFlags->GetXaxis()->SetBinLabel(1,
"Particle Weights");
2592 fIntFlowFlags->GetXaxis()->SetBinLabel(3,
"Corrected for NUA?");
2593 fIntFlowFlags->GetXaxis()->SetBinLabel(4,
"Print RF results");
2594 fIntFlowFlags->GetXaxis()->SetBinLabel(5,
"Print RP results");
2595 fIntFlowFlags->GetXaxis()->SetBinLabel(6,
"Print POI results");
2596 fIntFlowFlags->GetXaxis()->SetBinLabel(7,
"Print RF (rebinned in M) results");
2597 fIntFlowFlags->GetXaxis()->SetBinLabel(8,
"Corrected for NUA vs M?");
2598 fIntFlowFlags->GetXaxis()->SetBinLabel(9,
"Propagate errors to v_{n} from correlations?");
2599 fIntFlowFlags->GetXaxis()->SetBinLabel(10,
"Calculate cumulants vs M");
2600 fIntFlowFlags->GetXaxis()->SetBinLabel(11,
"fMinimumBiasReferenceFlow");
2601 fIntFlowFlags->GetXaxis()->SetBinLabel(12,
"fForgetAboutCovariances");
2603 fIntFlowFlags->GetXaxis()->SetBinLabel(14,
"fFillMultipleControlHistograms");
2604 fIntFlowFlags->GetXaxis()->SetBinLabel(15,
"Calculate all correlations vs M");
2605 fIntFlowFlags->GetXaxis()->SetBinLabel(16,
"fMultiplicityIs");
2607 fIntFlowFlags->GetXaxis()->SetBinLabel(18,
"fUse2DHistograms");
2608 fIntFlowFlags->GetXaxis()->SetBinLabel(19,
"fFillProfilesVsMUsingWeights");
2609 fIntFlowFlags->GetXaxis()->SetBinLabel(20,
"fUseQvectorTerms");
2614 fReQ =
new TMatrixD(12,9);
2615 fImQ =
new TMatrixD(12,9);
2616 fSpk =
new TMatrixD(8,9);
2617 fReQGF =
new TMatrixD(21,9);
2618 fImQGF =
new TMatrixD(21,9);
2620 TString intFlowCorrelationsEBEName =
"fIntFlowCorrelationsEBE";
2624 TString intFlowEventWeightsForCorrelationsEBEName =
"fIntFlowEventWeightsForCorrelationsEBE";
2625 intFlowEventWeightsForCorrelationsEBEName +=
fAnalysisLabel->Data();
2628 TString intFlowCorrelationsAllEBEName =
"fIntFlowCorrelationsAllEBE";
2633 TString fIntFlowCorrectionTermsForNUAEBEName =
"fIntFlowCorrectionTermsForNUAEBE";
2635 for(
Int_t sc=0;sc<2;sc++)
2637 fIntFlowCorrectionTermsForNUAEBE[sc] =
new TH1D(Form(
"%s: %s terms",fIntFlowCorrectionTermsForNUAEBEName.Data(),sinCosFlag[sc].Data()),Form(
"Correction terms for non-uniform acceptance (%s terms)",sinCosFlag[sc].
Data()),4,0,4);
2640 TString fIntFlowEventWeightForCorrectionTermsForNUAEBEName =
"fIntFlowEventWeightForCorrectionTermsForNUAEBE";
2641 fIntFlowEventWeightForCorrectionTermsForNUAEBEName +=
fAnalysisLabel->Data();
2642 for(
Int_t sc=0;sc<2;sc++)
2648 TString avMultiplicityName =
"fAvMultiplicity";
2650 fAvMultiplicity =
new TProfile(avMultiplicityName.Data(),
"Average multiplicities of reference particles (RPs)",9,0,9);
2667 TString correlationFlag[4] = {
"#LT#LT2#GT#GT",
"#LT#LT4#GT#GT",
"#LT#LT6#GT#GT",
"#LT#LT8#GT#GT"};
2668 TString intFlowCorrelationsProName =
"fIntFlowCorrelationsPro";
2670 fIntFlowCorrelationsPro =
new TProfile(intFlowCorrelationsProName.Data(),
"Average correlations for all events",4,0,4,
"s");
2676 for(
Int_t b=0;b<4;b++)
2682 TString squaredCorrelationFlag[4] = {
"#LT#LT2#GT^{2}#GT",
"#LT#LT4#GT^{2}#GT",
"#LT#LT6#GT^{2}#GT",
"#LT#LT8#GT^{2}#GT"};
2683 TString intFlowSquaredCorrelationsProName =
"fIntFlowSquaredCorrelationsPro";
2691 for(
Int_t b=0;b<4;b++)
2698 for(
Int_t ci=0;ci<4;ci++)
2701 TString intFlowCorrelationsVsMProName =
"fIntFlowCorrelationsVsMPro";
2703 fIntFlowCorrelationsVsMPro[ci] =
new TProfile(Form(
"%s, %s",intFlowCorrelationsVsMProName.Data(),correlationFlag[ci].Data()),
2704 Form(
"%s vs multiplicity",correlationFlag[ci].
Data()),
2720 TString intFlowSquaredCorrelationsVsMProName =
"fIntFlowSquaredCorrelationsVsMPro";
2723 Form(
"%s vs multiplicity",squaredCorrelationFlag[ci].
Data()),
2741 TString intFlowCorrelationsAllProName =
"fIntFlowCorrelationsAllPro";
2743 fIntFlowCorrelationsAllPro =
new TProfile(intFlowCorrelationsAllProName.Data(),
"Average all correlations for all events",64,0,64);
2849 fIntFlowCorrelationsAllVsMPro[30] =
new TProfile(
"eight1n1n1n1n1n1n1n1n",
"#LT#LT8#GT#GT_{n,n,n,n|n,n,n,n}",
fnBinsMult,
fMinMult,
fMaxMult);
2883 for(
Int_t n=0;n<63;n++)
2905 TString intFlowExtraCorrelationsProName =
"fIntFlowExtraCorrelationsPro";
2907 fIntFlowExtraCorrelationsPro =
new TProfile(intFlowExtraCorrelationsProName.Data(),
"Average extra correlations for all events",100,0,100,
"s");
2918 TString productFlag[6] = {
"#LT#LT2#GT#LT4#GT#GT",
"#LT#LT2#GT#LT6#GT#GT",
"#LT#LT2#GT#LT8#GT#GT",
2919 "#LT#LT4#GT#LT6#GT#GT",
"#LT#LT4#GT#LT8#GT#GT",
"#LT#LT6#GT#LT8#GT#GT"};
2920 TString intFlowProductOfCorrelationsProName =
"fIntFlowProductOfCorrelationsPro";
2927 for(
Int_t b=0;b<6;b++)
2936 TString intFlowProductOfCorrelationsVsMProName =
"fIntFlowProductOfCorrelationsVsMPro";
2937 intFlowProductOfCorrelationsVsMProName +=
fAnalysisLabel->Data();
2941 Form(
"%s versus multiplicity",productFlag[
pi].
Data()),
2957 TString intFlowProductOfCorrectionTermsForNUAProName =
"fIntFlowProductOfCorrectionTermsForNUAPro";
2958 intFlowProductOfCorrectionTermsForNUAProName +=
fAnalysisLabel->Data();
2993 for(
Int_t sc=0;sc<2;sc++)
2995 TString intFlowCorrectionTermsForNUAProName =
"fIntFlowCorrectionTermsForNUAPro";
2997 fIntFlowCorrectionTermsForNUAPro[sc] =
new TProfile(Form(
"%s: %s terms",intFlowCorrectionTermsForNUAProName.Data(),sinCosFlag[sc].Data()),Form(
"Correction terms for non-uniform acceptance (%s terms)",sinCosFlag[sc].
Data()),4,0,4,
"s");
3010 TString correctionTermFlag[4] = {
"(n(phi1))",
"(n(phi1+phi2))",
"(n(phi1-phi2-phi3))",
"(n(2phi1-phi2))"};
3011 for(
Int_t ci=0;ci<4;ci++)
3013 TString intFlowCorrectionTermsForNUAVsMProName =
"fIntFlowCorrectionTermsForNUAVsMPro";
3014 intFlowCorrectionTermsForNUAVsMProName +=
fAnalysisLabel->Data();
3015 fIntFlowCorrectionTermsForNUAVsMPro[sc][ci] =
new TProfile(Form(
"%s: #LT#LT%s%s#GT#GT",intFlowCorrectionTermsForNUAVsMProName.Data(),sinCosFlag[sc].Data(),correctionTermFlag[ci].Data()),Form(
"#LT#LT%s%s#GT#GT vs M",sinCosFlag[sc].
Data(),correctionTermFlag[ci].Data()),
fnBinsMult,
fMinMult,
fMaxMult,
"s");
3023 TString intFlowCorrelationsHistName =
"fIntFlowCorrelationsHist";
3038 for(
Int_t ci=0;ci<4;ci++)
3040 TString intFlowCorrelationsVsMHistName =
"fIntFlowCorrelationsVsMHist";
3043 Form(
"%s vs multiplicity",correlationFlag[ci].
Data()),
3060 TString intFlowCorrelationsAllHistName =
"fIntFlowCorrelationsAllHist";
3101 for(
Int_t sc=0;sc<2;sc++)
3103 TString intFlowCorrectionTermsForNUAHistName =
"fIntFlowCorrectionTermsForNUAHist";
3105 fIntFlowCorrectionTermsForNUAHist[sc] =
new TH1D(Form(
"%s: %s terms",intFlowCorrectionTermsForNUAHistName.Data(),sinCosFlag[sc].Data()),Form(
"Correction terms for non-uniform acceptance (%s terms)",sinCosFlag[sc].
Data()),4,0,4);
3117 TString intFlowCovariancesName =
"fIntFlowCovariances";
3119 fIntFlowCovariances =
new TH1D(intFlowCovariancesName.Data(),
"Covariances (multiplied with weight dependent prefactor)",6,0,6);
3130 TString intFlowSumOfEventWeightsName =
"fIntFlowSumOfEventWeights";
3132 for(
Int_t power=0;power<2;power++)
3134 fIntFlowSumOfEventWeights[power] =
new TH1D(Form(
"%s: %s",intFlowSumOfEventWeightsName.Data(),powerFlag[power].Data()),Form(
"Sum of %s event weights for correlations",powerFlag[power].
Data()),4,0,4);
3143 }
else if (power == 1)
3153 TString intFlowSumOfProductOfEventWeightsName =
"fIntFlowSumOfProductOfEventWeights";
3169 TString intFlowCovariancesVsMName =
"fIntFlowCovariancesVsM";
3171 TString covarianceFlag[6] = {
"Cov(<2>,<4>)",
"Cov(<2>,<6>)",
"Cov(<2>,<8>)",
"Cov(<4>,<6>)",
"Cov(<4>,<8>)",
"Cov(<6>,<8>)"};
3172 for(
Int_t ci=0;ci<6;ci++)
3175 Form(
"%s vs multiplicity",covarianceFlag[ci].
Data()),
3195 TString intFlowSumOfEventWeightsVsMName =
"fIntFlowSumOfEventWeightsVsM";
3197 TString sumFlag[2][4] = {{
"#sum_{i=1}^{N} w_{<2>}",
"#sum_{i=1}^{N} w_{<4>}",
"#sum_{i=1}^{N} w_{<6>}",
"#sum_{i=1}^{N} w_{<8>}"},
3198 {
"#sum_{i=1}^{N} w_{<2>}^{2}",
"#sum_{i=1}^{N} w_{<4>}^{2}",
"#sum_{i=1}^{N} w_{<6>}^{2}",
"#sum_{i=1}^{N} w_{<8>}^{2}"}};
3199 for(
Int_t si=0;si<4;si++)
3201 for(
Int_t power=0;power<2;power++)
3204 Form(
"%s vs multiplicity",sumFlag[power][si].
Data()),
3226 TString intFlowSumOfProductOfEventWeightsVsMName =
"fIntFlowSumOfProductOfEventWeightsVsM";
3227 intFlowSumOfProductOfEventWeightsVsMName +=
fAnalysisLabel->Data();
3228 TString sopowFlag[6] = {
"#sum_{i=1}^{N} w_{<2>} w_{<4>}",
"#sum_{i=1}^{N} w_{<2>} w_{<6>}",
"#sum_{i=1}^{N} w_{<2>} w_{<8>}",
3229 "#sum_{i=1}^{N} w_{<4>} w_{<6>}",
"#sum_{i=1}^{N} w_{<4>} w_{<8>}",
"#sum_{i=1}^{N} w_{<6>} w_{<8>}"};
3233 Form(
"%s versus multiplicity",sopowFlag[
pi].
Data()),
3250 TString intFlowCovariancesNUAName =
"fIntFlowCovariancesNUA";
3252 fIntFlowCovariancesNUA =
new TH1D(intFlowCovariancesNUAName.Data(),
"Covariances for NUA (multiplied with weight dependent prefactor)",27,0,27);
3271 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(16,
"Cov(<cos(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3272 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(17,
"Cov(<cos(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3275 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(20,
"Cov(<sin(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3276 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(21,
"Cov(<sin(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3277 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(22,
"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}+#phi_{2})>)");
3278 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(23,
"Cov(<cos(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3279 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(24,
"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3280 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(25,
"Cov(<sin(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3281 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(26,
"Cov(<sin(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3282 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(27,
"Cov(<cos(#phi_{1}-#phi_{2}-#phi_{3}>,<sin(#phi_{1}-#phi_{2}-#phi_{3}>)");
3285 TString intFlowSumOfEventWeightsNUAName =
"fIntFlowSumOfEventWeightsNUA";
3287 for(
Int_t sc=0;sc<2;sc++)
3289 for(
Int_t power=0;power<2;power++)
3291 fIntFlowSumOfEventWeightsNUA[sc][power] =
new TH1D(Form(
"%s: %s, %s",intFlowSumOfEventWeightsNUAName.Data(),powerFlag[power].Data(),sinCosFlag[sc].Data()),Form(
"Sum of %s event weights for NUA %s terms",powerFlag[power].
Data(),sinCosFlag[sc].Data()),4,0,4);
3300 }
else if(power == 1)
3304 (
fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(3,Form(
"#sum_{i=1}^{N} w_{<%s(#phi_{1}-#phi_{2}-#phi_{3})>}^{2}",sinCosFlag[sc].
Data()));
3311 TString intFlowSumOfProductOfEventWeightsNUAName =
"fIntFlowSumOfProductOfEventWeightsNUA";
3312 intFlowSumOfProductOfEventWeightsNUAName +=
fAnalysisLabel->Data();
3345 TString cumulantFlag[4] = {
"QC{2}",
"QC{4}",
"QC{6}",
"QC{8}"};
3346 TString intFlowQcumulantsName =
"fIntFlowQcumulants";
3351 fIntFlowQcumulants->SetTitle(
"Reference Q-cumulants (error from non-isotropic terms also propagated)");
3355 for(
Int_t b=0;b<4;b++)
3363 TString intFlowQcumulantsRebinnedInMName =
"fIntFlowQcumulantsRebinnedInM";
3368 for(
Int_t b=0;b<4;b++)
3375 TString intFlowQcumulantsErrorSquaredRatioName =
"fIntFlowQcumulantsErrorSquaredRatio";
3376 intFlowQcumulantsErrorSquaredRatioName +=
fAnalysisLabel->Data();
3380 for(
Int_t b=0;b<4;b++)
3388 TString intFlowQcumulantsVsMName =
"fIntFlowQcumulantsVsM";
3390 for(
Int_t co=0;co<4;co++)
3393 Form(
"%s vs multiplicity",cumulantFlag[co].
Data()),
3410 TString flowFlag[4] = {Form(
"v_{%d}{2,QC}",
fHarmonic),Form(
"v_{%d}{4,QC}",
fHarmonic),Form(
"v_{%d}{6,QC}",
fHarmonic),Form(
"v_{%d}{8,QC}",
fHarmonic)};
3411 TString intFlowName =
"fIntFlow";
3414 fIntFlow =
new TH1D(intFlowName.Data(),
"Reference flow estimates from Q-cumulants",4,0,4);
3417 for(
Int_t b=0;b<4;b++)
3419 (
fIntFlow->GetXaxis())->SetBinLabel(b+1,flowFlag[b].
Data());
3425 TString intFlowRebinnedInMName =
"fIntFlowRebinnedInM";
3427 fIntFlowRebinnedInM =
new TH1D(intFlowRebinnedInMName.Data(),
"Reference flow estimates from Q-cumulants (rebinned in M)",4,0,4);
3430 for(
Int_t b=0;b<4;b++)
3439 TString intFlowVsMName =
"fIntFlowVsM";
3441 for(
Int_t co=0;co<4;co++)
3443 fIntFlowVsM[co] =
new TH1D(Form(
"%s, %s",intFlowVsMName.Data(),flowFlag[co].Data()),
3444 Form(
"%s vs multiplicity",flowFlag[co].
Data()),
3451 fIntFlowVsM[co]->GetXaxis()->SetTitle(
"Reference multiplicity (from ESD)");
3461 TString intFlowDetectorBiasName =
"fIntFlowDetectorBias";
3466 for(
Int_t ci=0;ci<4;ci++)
3468 (
fIntFlowDetectorBias->GetXaxis())->SetBinLabel(ci+1,Form(
"#frac{corrected}{measured} %s",cumulantFlag[ci].
Data()));
3474 TString intFlowDetectorBiasVsMName =
"fIntFlowDetectorBiasVsM";
3476 for(
Int_t ci=0;ci<4;ci++)
3479 Form(
"Quantifying detector bias for %s vs multiplicity",cumulantFlag[ci].
Data()),
3508 TString controlHistogramsFlagsName =
"fControlHistogramsFlags";
3510 fControlHistogramsFlags =
new TProfile(controlHistogramsFlagsName.Data(),
"Flags for Control Histograms",2,0,2);
3524 TString sCorrelationNoRPsVsRefMultName =
"fCorrelationNoRPsVsRefMult";
3535 TString sCorrelationNoPOIsVsRefMultName =
"fCorrelationNoPOIsVsRefMult";
3546 TString sCorrelationNoRPsVsNoPOIsName =
"fCorrelationNoRPsVsNoPOIs";
3557 TString sCorrelation[4] = {
"#LT2#GT",
"#LT4#GT",
"#LT6#GT",
"#LT8#GT"};
3561 sMultiplicity =
"# RPs";
3564 sMultiplicity =
"Reference multiplicity (from ESD)";
3567 sMultiplicity =
"# POIs";
3569 for(
Int_t ci=0;ci<4;ci++)
3581 TString sCorrelationProduct[1] = {
"#LT2#GT#LT4#GT"};
3582 for(
Int_t cpi=0;cpi<1;cpi++)
3596 TString sQvectorTerms[4] = {
"#frac{|Q_{n}|^{2}}{M}",
"#frac{|Q_{2n}|^{2}}{M}",
"#frac{|Q_{n}|^{4}}{M(2M-1)}",
"#frac{Re[Q_{2n}Q_{n}^{*}Q_{n}^{*}]}{M^{3/2}}"};
3597 for(
Int_t qvti=0;qvti<4;qvti++)
3624 TString bootstrapFlagsName =
"fBootstrapFlags";
3626 fBootstrapFlags =
new TProfile(bootstrapFlagsName.Data(),
"Flags for bootstrap",3,0,3);
3638 TString correlationFlag[4] = {
"#LT#LT2#GT#GT",
"#LT#LT4#GT#GT",
"#LT#LT6#GT#GT",
"#LT#LT8#GT#GT"};
3639 TString cumulantFlag[4] = {
"QC{2}",
"QC{4}",
"QC{6}",
"QC{8}"};
3643 TString bootstrapCorrelationsName =
"fBootstrapCorrelations";
3647 for(
Int_t ci=0;ci<4;ci++)
3657 TString bootstrapCumulantsName =
"fBootstrapCumulants";
3661 for(
Int_t co=0;co<4;co++)
3676 sMultiplicity =
"# RPs";
3679 sMultiplicity =
"Reference multiplicity (from ESD)";
3682 sMultiplicity =
"# POIs";
3687 TString bootstrapCorrelationsVsMName =
"fBootstrapCorrelationsVsM";
3689 for(
Int_t ci=0;ci<4;ci++)
3691 fBootstrapCorrelationsVsM[ci] =
new TProfile2D(Form(
"%s, %s",bootstrapCorrelationsVsMName.Data(),correlationFlag[ci].Data()),
3692 Form(
"Bootstrap Correlations Vs. M, %s",correlationFlag[ci].
Data()),
3703 TString bootstrapCumulantsVsMName =
"fBootstrapCumulantsVsM";
3705 for(
Int_t co=0;co<4;co++)
3708 Form(
"Bootstrap Cumulants Vs. M, %s",cumulantFlag[co].
Data()),
3734 TString mixedHarmonicsFlagsName =
"fMixedHarmonicsFlags";
3736 fMixedHarmonicsFlags =
new TProfile(mixedHarmonicsFlagsName.Data(),
"Flags for Mixed Harmonics",4,0,4);
3752 TString s2pCorrelationsName =
"f2pCorrelations";
3754 f2pCorrelations =
new TProfile(s2pCorrelationsName.Data(),Form(
"2-particle correlations (n = %d)",
fHarmonic),6,0,6,
"s");
3769 TString s3pCorrelationsName =
"f3pCorrelations";
3771 f3pCorrelations =
new TProfile(s3pCorrelationsName.Data(),Form(
"3-particle correlations (n = %d)",
fHarmonic),10,0,10,
"s");
3792 TString s4pCorrelationsName =
"f4pCorrelations";
3794 f4pCorrelations =
new TProfile(s4pCorrelationsName.Data(),Form(
"4-particle correlations (n = %d)",
fHarmonic),45,0,45,
"s");
3853 TString s5pCorrelationsName =
"f5pCorrelations";
3855 f5pCorrelations =
new TProfile(s5pCorrelationsName.Data(),Form(
"5-particle correlations (n = %d)",
fHarmonic),87,0,87,
"s");
3956 TString s6pCorrelationsName =
"f6pCorrelations";
3958 f6pCorrelations =
new TProfile(s6pCorrelationsName.Data(),Form(
"6-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3967 TString s7pCorrelationsName =
"f7pCorrelations";
3969 f7pCorrelations =
new TProfile(s7pCorrelationsName.Data(),Form(
"7-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3978 TString s8pCorrelationsName =
"f8pCorrelations";
3980 f8pCorrelations =
new TProfile(s8pCorrelationsName.Data(),Form(
"8-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
4025 TString mixedHarmonicEventWeightsName =
"fMixedHarmonicEventWeights";
4027 TString powerFlag[2] = {
"linear",
"quadratic"};
4028 for(
Int_t power=0;power<2;power++)
4030 fMixedHarmonicEventWeights[power] =
new TH1D(Form(
"%s: %s",mixedHarmonicEventWeightsName.Data(),powerFlag[power].Data()),Form(
"Sum of %s event weights for correlations",powerFlag[power].
Data()),8,0.,8.);
4044 }
else if (power == 1)
4059 TString mixedHarmonicProductOfEventWeightsName =
"fMixedHarmonicProductOfEventWeights";
4060 mixedHarmonicProductOfEventWeightsName +=
fAnalysisLabel->Data();
4065 for(
Int_t b=1;b<=8;b++)
4073 TString mixedHarmonicProductOfCorrelationsName =
"fMixedHarmonicProductOfCorrelations";
4074 mixedHarmonicProductOfCorrelationsName +=
fAnalysisLabel->Data();