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.),
176 fAvMultiplicity(NULL),
177 fIntFlowCorrelationsPro(NULL),
178 fIntFlowSquaredCorrelationsPro(NULL),
179 fIntFlowCorrelationsAllPro(NULL),
180 fIntFlowExtraCorrelationsPro(NULL),
181 fIntFlowProductOfCorrelationsPro(NULL),
182 fIntFlowProductOfCorrectionTermsForNUAPro(NULL),
183 fIntFlowCorrelationsHist(NULL),
184 fIntFlowCorrelationsAllHist(NULL),
185 fIntFlowCovariances(NULL),
186 fIntFlowSumOfProductOfEventWeights(NULL),
187 fIntFlowCovariancesNUA(NULL),
188 fIntFlowSumOfProductOfEventWeightsNUA(NULL),
189 fIntFlowQcumulants(NULL),
190 fIntFlowQcumulantsRebinnedInM(NULL),
191 fIntFlowQcumulantsErrorSquaredRatio(NULL),
193 fIntFlowRebinnedInM(NULL),
194 fIntFlowDetectorBias(NULL),
197 fDiffFlowProfiles(NULL),
198 fDiffFlowResults(NULL),
200 fDiffFlowFlags(NULL),
201 fCalculateDiffFlow(kTRUE),
202 fCalculate2DDiffFlow(kFALSE),
203 fCalculateDiffFlowVsEta(kTRUE),
205 fOtherDiffCorrelatorsList(NULL),
207 fDistributionsList(NULL),
208 fDistributionsFlags(NULL),
209 fStoreDistributions(kFALSE),
210 fnBinsForCorrelations(10000),
212 fNestedLoopsList(NULL),
213 fEvaluateIntFlowNestedLoops(kFALSE),
214 fEvaluateDiffFlowNestedLoops(kFALSE),
215 fMaxAllowedMultiplicity(10),
216 fEvaluateNestedLoops(NULL),
217 fIntFlowDirectCorrelations(NULL),
218 fIntFlowExtraDirectCorrelations(NULL),
219 fCrossCheckInPtBinNo(10),
220 fCrossCheckInEtaBinNo(20),
221 fNoOfParticlesInBin(NULL),
222 fMixedHarmonicsNestedLoops(NULL),
224 fMixedHarmonicsList(NULL),
225 fMixedHarmonicsProfiles(NULL),
226 fMixedHarmonicsResults(NULL),
227 fMixedHarmonicsErrorPropagation(NULL),
228 fMixedHarmonicsFlags(NULL),
229 fCalculateMixedHarmonics(kFALSE),
230 fCalculateMixedHarmonicsVsM(kFALSE),
231 f2pCorrelations(NULL),
232 f3pCorrelations(NULL),
233 f4pCorrelations(NULL),
234 f5pCorrelations(NULL),
235 f6pCorrelations(NULL),
236 f7pCorrelations(NULL),
237 f8pCorrelations(NULL),
245 fMixedHarmonicProductOfEventWeights(NULL),
246 fMixedHarmonicProductOfCorrelations(NULL),
248 fControlHistogramsList(NULL),
249 fControlHistogramsFlags(NULL),
250 fStoreControlHistograms(kFALSE),
251 fCorrelationNoRPsVsRefMult(NULL),
252 fCorrelationNoPOIsVsRefMult(NULL),
253 fCorrelationNoRPsVsNoPOIs(NULL),
255 fBootstrapList(NULL),
256 fBootstrapProfilesList(NULL),
257 fBootstrapResultsList(NULL),
258 fBootstrapFlags(NULL),
259 fUseBootstrap(kFALSE),
260 fUseBootstrapVsM(kFALSE),
263 fBootstrapCorrelations(NULL),
264 fBootstrapCumulants(NULL),
269 fCalculateCRC(kTRUE),
270 fCalculateCRCPt(kFALSE),
271 fCalculateCME(kFALSE),
272 fCalculateCRCInt(kFALSE),
273 fCalculateCRC2(kFALSE),
274 fCalculateCRCVZ(kFALSE),
275 fCalculateCRCZDC(kFALSE),
276 fCalculateFlowQC(kFALSE),
277 fCalculateFlowZDC(kFALSE),
278 fCalculateFlowVZ(kFALSE),
279 fCalculateEbEFlow(kFALSE),
280 fStoreZDCQVecVtxPos(kFALSE),
281 fUsePhiEtaCuts(kFALSE),
284 fRecenterZDC(kFALSE),
286 fUseCRCRecenter(kFALSE),
297 fCorrWeightTPC(kUnit),
298 fCorrWeightVZ(kUnit),
299 fCorrWeightZDC(kUnit),
302 fCRCCenBinWidth(CenWidth),
303 fCRCIntRbRList(NULL),
306 fInteractionRate(kAll),
307 fSelectCharge(kAllCh),
308 fPOIExtraWeights(kNone),
310 fCRCQVecListTPC(NULL),
311 fCRCQVecWeightsList(NULL),
312 fCRCZDCCalibList(NULL),
313 fCRCZDC2DCutList(NULL),
314 fCRCVZEROCalibList(NULL),
315 fCRCZDCResList(NULL),
319 fCRCZDCRbRList(NULL),
326 fFlowSPZDCList(NULL),
328 fFlowQCCorrZDCList(NULL),
332 fFlowQCDeltaEta(0.4),
338 fQAZDCCutsFlag(kTRUE),
339 fUseTracklets(kFALSE),
342 fZDCGainAlpha(0.395),
343 fbFlagIsPosMagField(kFALSE),
344 fbFlagIsBadRunForC34(kFALSE),
345 fStoreExtraHistoForSubSampling(kFALSE)
350 fHistList =
new TList();
351 fHistList->SetName(
"cobjQC");
352 fHistList->SetOwner(kTRUE);
355 fTempList =
new TList();
356 fTempList->SetName(
"temp");
357 fTempList->SetOwner(kTRUE);
360 fMultiplicityWeight =
new TString(
"combinations");
363 fAnalysisLabel =
new TString();
366 this->InitializeArraysForIntFlow();
367 this->InitializeArraysForDiffFlow();
368 this->InitializeArraysForDistributions();
369 this->InitializeArraysForVarious();
370 this->InitializeArraysForNestedLoops();
371 this->InitializeArraysForMixedHarmonics();
372 this->InitializeArraysForControlHistograms();
373 this->InitializeArraysForBootstrap();
382 this->InitializeCostantsForCRC();
383 this->InitializeArraysForParticleWeights();
384 this->InitializeArraysForCRC();
385 this->InitializeArraysForCRCVZ();
386 this->InitializeArraysForCRCZDC();
387 this->InitializeArraysForCRC2();
388 this->InitializeArraysForQVec();
389 this->InitializeArraysForCRCPt();
390 this->InitializeArraysForCME();
391 this->InitializeArraysForFlowEbE();
392 this->InitializeArraysForFlowQC();
393 this->InitializeArraysForFlowGF();
394 this->InitializeArraysForFlowSPZDC();
395 this->InitializeArraysForFlowSPVZ();
396 this->InitializeArraysForEbEFlow();
400 for(
Int_t i=0; i<fkGFPtB; i++) {
446 Bool_t oldHistAddStatus = TH1::AddDirectoryStatus();
447 TH1::AddDirectory(kFALSE);
504 TH1::AddDirectory(oldHistAddStatus);
544 Int_t nCounterNoRPs = 0;
599 if(fRunBin<0 || fRunBin>=
fCRCnRun) {
return;}
601 if(fCenBin<0 || fCenBin>=
fCRCnCen) {
return;}
614 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};
615 for (
Int_t i=0; i<40; i++) {
619 Int_t BadRunList[] = {245705, 246042, 246049, 246087, 246151, 246181, 246217, 246222, 246272, 246275};
620 for (
Int_t i=0; i<10; i++) {
688 Bool_t bPassZDCcuts = kTRUE;
689 if( ZCM<=0. || ZAM<=0. || sqrt(ZCRe*ZCRe+ZCIm*ZCIm)<1.E-6 || sqrt(ZARe*ZARe+ZAIm*ZAIm)<1.E-6 ) bPassZDCcuts=kFALSE;
719 AliWarning(
"WARNING: POIExtraWeights (kEtaPhiRbR) not found ! \n");
723 for (
Int_t i=0; i<2; i++) {
727 AliWarning(
"WARNING: POIExtraWeights (kEtaPhiChRbR) not found ! \n");
736 AliWarning(
"WARNING: POIExtraWeights (kEtaPhiVtxRbR) not found ! \n");
744 for(
Int_t i=0;i<nPrim;i++) {
755 dPhi = aftsTrack->
Phi();
756 dPt = aftsTrack->
Pt();
757 dEta = aftsTrack->
Eta();
758 dCharge = aftsTrack->
Charge();
763 cw = (dCharge > 0. ? 0 : 1);
775 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
782 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
787 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
793 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
795 Int_t ptbebe = (dPt>1.? 2 : (dPt>0.5 ? 1 : 0));
799 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
805 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
810 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
818 for(
Int_t m=0;m<12;m++)
820 for(
Int_t k=0;k<9;k++)
822 (*fReQ)(m,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1)*n*dPhi);
823 (*fImQ)(m,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1)*n*dPhi);
827 for(
Int_t p=0;p<8;p++)
829 for(
Int_t k=0;k<9;k++)
831 (*fSpk)(p,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k);
840 for(
Int_t k=0;k<9;k++)
842 for(
Int_t m=0;m<4;m++)
848 fReRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
849 fImRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
852 fs1dEBE[0][pe][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
858 fReRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
859 fImRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
862 fs2dEBE[0][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
871 for(
Int_t k=0;k<9;k++)
873 for(
Int_t m=0;m<4;m++)
879 fReRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
880 fImRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
883 fs1dEBE[2][pe][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
889 fReRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
890 fImRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
893 fs2dEBE[2][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
910 dPhi = aftsTrack->
Phi();
911 dPt = aftsTrack->
Pt();
912 dEta = aftsTrack->
Eta();
913 dCharge = aftsTrack->
Charge();
918 if(
fMinMulZN==0 && dEta>-0.2 && dEta<0.)
continue;
920 Bool_t IsSplitMergedTracks = kFALSE;
924 if(IsSplitMergedTracks)
continue;
927 if(dCharge > 0.) dPt += 1.E-2;
931 cw = (dCharge > 0. ? 0 : 1);
943 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
950 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
955 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
961 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
963 Int_t ptbebe = (dPt>1.? 2 : (dPt>0.5 ? 1 : 0));
967 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
973 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
978 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
984 if(dPhi>2.136283 && dPhi<2.324779)
continue;
989 for(
Int_t m=0;m<21;m++)
991 for(
Int_t k=0;k<9;k++)
993 (*fReQGF)(m,k) += pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos(m*dPhi);
994 (*fImQGF)(m,k) += pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin(m*dPhi);
1000 if(ptb==0 && dPt>0.5)
continue;
1001 if(ptb==1 && (dPt<0.5 || dPt>1.))
continue;
1002 if(ptb==2 && (dPt<1. || dPt>2.))
continue;
1003 if(ptb==3 && dPt<2.)
continue;
1004 if(ptb==4 && (dPt<1. || dPt>2.5))
continue;
1005 if(ptb==5 && dPt<2.5)
continue;
1006 if(ptb==6 && (dPt<1. || dPt>3.))
continue;
1007 if(ptb==7 && dPt<3.)
continue;
1008 for(
Int_t m=0;m<21;m++)
1010 for(
Int_t k=0;k<9;k++)
1012 (*
fReQGFPt[ptb])(m,k) += pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos(m*dPhi);
1013 (*
fImQGFPt[ptb])(m,k) += pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin(m*dPhi);
1021 for(
Int_t k=0;k<9;k++)
1023 for(
Int_t m=0;m<4;m++)
1029 fReRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
1030 fImRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
1035 fReRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
1036 fImRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
1044 fCRCQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
1045 fCRCQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
1046 fCRCMult[cw][h]->Fill(dEta,wPhiEta);
1048 fCRC2QRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
1049 fCRC2QIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
1050 fCRC2Mul[cw][h]->Fill(dEta,pow(wPhiEta,h));
1052 fCRCZDCQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
1053 fCRCZDCQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
1057 fCRC2QRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
1058 fCRC2QIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
1059 fCRC2Mul[2][h]->Fill(dEta,pow(wPhiEta,h));
1063 fCRCZDCQRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
1064 fCRCZDCQIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
1067 fCRCZDCQRe[3][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
1068 fCRCZDCQIm[3][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
1076 if(weraw > 0.) SpecWeig = 1./weraw;
1078 fCMEQRe[cw][h]->Fill(dEta,SpecWeig*wPhiEta*TMath::Cos((h+1.)*dPhi));
1079 fCMEQIm[cw][h]->Fill(dEta,SpecWeig*wPhiEta*TMath::Sin((h+1.)*dPhi));
1080 fCMEMult[cw][h]->Fill(dEta,SpecWeig*wPhiEta);
1081 fCMEQRe[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.)*TMath::Cos((h+1.)*dPhi));
1082 fCMEQIm[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.)*TMath::Sin((h+1.)*dPhi));
1083 fCMEMult[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.));
1099 fPOIPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1100 fPOIPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1103 fPOIPtDiffQReCh[cw][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1104 fPOIPtDiffQImCh[cw][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1107 fPOIPhiDiffQRe[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1108 fPOIPhiDiffQIm[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1111 fPOIPhiEtaDiffQRe[k][h]->Fill(dPhi,dEta,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1112 fPOIPhiEtaDiffQIm[k][h]->Fill(dPhi,dEta,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1116 Int_t keta = (dEta<0.?0:1);
1117 fPOIPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1118 fPOIPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1120 fPOIPhiDiffQReEG[keta][k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1121 fPOIPhiDiffQImEG[keta][k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1125 }
else if(fFlowQCDeltaEta<0. && fFlowQCDeltaEta>-1.) {
1128 fPOIPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1129 fPOIPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1132 fPOIPhiDiffQRe[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1133 fPOIPhiDiffQIm[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1138 if((dEta>0. && dEta<0.4-boundetagap/2.) || (dEta>0.4+boundetagap/2. && dEta<0.8)) {
1140 if(dEta>0. && dEta<0.4-boundetagap/2.) keta = 0;
1142 fPOIPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1143 fPOIPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1151 }
else if(fFlowQCDeltaEta<-1. && fFlowQCDeltaEta>-2.) {
1154 fPOIPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1155 fPOIPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1158 fPOIPhiDiffQRe[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1159 fPOIPhiDiffQIm[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1164 if((dEta<0. && dEta>-0.4+boundetagap/2.) || (dEta<-0.4-boundetagap/2. && dEta>-0.8)) {
1166 if(dEta<0. && dEta>-0.4+boundetagap/2.) keta = 0;
1168 fPOIPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1169 fPOIPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1182 fEtaDiffQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
1183 fEtaDiffQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
1185 fPOIEtaPtQRe[cw][h]->Fill(dEta,dPt,wPhiEta*TMath::Cos((h+1.)*dPhi));
1186 fPOIEtaPtQIm[cw][h]->Fill(dEta,dPt,wPhiEta*TMath::Sin((h+1.)*dPhi));
1214 for (
Int_t h=0;h<6;h++) {
1237 printf(
"\n WARNING (QC): No particle (i.e. aftsTrack is a NULL pointer in AFAWQC::Make())!!!!\n\n");
1244 for(
Int_t p=0;p<8;p++)
1246 for(
Int_t k=0;k<9;k++)
1248 (*fSpk)(p,k)=pow((*
fSpk)(p,k),p+1);
1641 const Float_t kLimit1 = 0.02 * 3;
1646 Bool_t isNoSplit = kFALSE;
1649 if (it1 < nTracks - 1) {
1650 for (
Int_t itll2 = it1 + 1; itll2 < nTracks; itll2++) {
1664 Double_t dphi1 = TMath::ASin(TMath::Sin(phi1rad1-phi2rad1));
1665 Float_t dphistarminabs1 = 1e5;
1666 Bool_t IsNoSpliTrack = kFALSE;
1668 if (TMath::Abs(deta1) < 0.1 && aftsTrack->
Charge()==aftsTrack2->
Charge()) {
1674 if (TMath::Abs(dphistar11) < kLimit1 || TMath::Abs(dphistar21) < kLimit1 || dphistar11 * dphistar21 < 0 ) {
1676 for (
Double_t rad1 = 0.8; rad1 < 2.51; rad1 += 0.01) {
1678 Float_t dphistarabs1 = TMath::Abs(dphistar1);
1679 if (dphistarabs1 < dphistarminabs1) {
1680 dphistarminabs1 = dphistarabs1;
1684 if (dphistarminabs1 < 0.017 && TMath::Abs(deta1) < 0.012) {
1692 if (TMath::Abs(dphi1) < TMath::TwoPi()/100. && TMath::Abs(deta1) < 0.006) {
1694 IsNoSpliTrack = kTRUE;
1698 if(!IsNoSpliTrack)
fTwoTrackDistanceLS[1]->Fill(deta1, dphi1, 0.5*TMath::Abs(aftsTrack->
Pt()+aftsTrack2->
Pt()));
1701 IsNoSpliTrack = kFALSE;
1702 if (TMath::Abs(deta1) < 0.1 && aftsTrack->
Charge()!=aftsTrack2->
Charge()) {
1704 Double_t dphi1 = TMath::ASin(TMath::Sin(phi1rad1-phi2rad1));
1705 if (TMath::Abs(dphi1) < TMath::TwoPi()/100. && TMath::Abs(deta1) < 0.006) {
1706 IsNoSpliTrack = kTRUE;
1710 if(!IsNoSpliTrack)
fTwoTrackDistanceUS[1]->Fill(deta1, dphi1, 0.5*TMath::Abs(aftsTrack->
Pt()+aftsTrack2->
Pt()));
1759 cout<<
"Skipping the event because multiplicity is "<<nPrim<<
". Too high to evaluate nested loops!"<<endl;
1763 cout<<
"Skipping the event because multiplicity is "<<nPrim<<
"."<<endl;
1874 if(outputListHistos)
1879 printf(
"\n WARNING (QC): fHistList is NULL in AFAWQC::GOH() !!!!\n\n");
1907 printf(
"\n WARNING (QC): outputListHistos is NULL in AFAWQC::GOH() !!!!\n\n");
1919 Int_t nBinsPt = profilePtEta->GetNbinsX();
1920 Double_t dPtMin = (profilePtEta->GetXaxis())->GetXmin();
1921 Double_t dPtMax = (profilePtEta->GetXaxis())->GetXmax();
1923 Int_t nBinsEta = profilePtEta->GetNbinsY();
1925 TProfile *profilePt =
new TProfile(
"",
"",nBinsPt,dPtMin,dPtMax);
1927 for(
Int_t p=1;p<=nBinsPt;p++)
1935 for(
Int_t e=1;e<=nBinsEta;e++)
1937 contentPt += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
1938 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1939 entryPt += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1941 sum1 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
1942 * (pow(profilePtEta->GetBinError(profilePtEta->GetBin(p,e)),2.)
1943 + pow(profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)),2.));
1944 sum2 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1945 sum3 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
1946 * (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)));
1948 if(sum2>0. && sum1/sum2-pow(sum3/sum2,2.) > 0.)
1950 spreadPt = pow(sum1/sum2-pow(sum3/sum2,2.),0.5);
1952 profilePt->SetBinContent(p,contentPt);
1953 profilePt->SetBinEntries(p,entryPt);
1955 profilePt->SetBinError(p,spreadPt);
1972 Int_t nBinsEta = profilePtEta->GetNbinsY();
1973 Double_t dEtaMin = (profilePtEta->GetYaxis())->GetXmin();
1974 Double_t dEtaMax = (profilePtEta->GetYaxis())->GetXmax();
1976 Int_t nBinsPt = profilePtEta->GetNbinsX();
1978 TProfile *profileEta =
new TProfile(
"",
"",nBinsEta,dEtaMin,dEtaMax);
1980 for(
Int_t e=1;e<=nBinsEta;e++)
1984 for(
Int_t p=1;p<=nBinsPt;p++)
1986 contentEta += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
1987 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1988 entryEta += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1990 profileEta->SetBinContent(e,contentEta);
1991 profileEta->SetBinEntries(e,entryEta);
2011 for(
Int_t b=0;b<4;b++)
2022 }
else if(type ==
"RP")
2032 }
else if(type ==
"POI")
2044 for(
Int_t b=0;b<4;b++)
2053 TString subtitle2 =
" (rebinned in M)";
2055 if(type !=
"RF, rebinned in M")
2059 subtitle.Append(type);
2060 subtitle.Append(
", without weights)");
2063 subtitle.Append(type);
2064 subtitle.Append(
", with weights)");
2070 subtitle.Append(
"RF");
2071 subtitle.Append(
", without weights)");
2074 subtitle.Append(
"RF");
2075 subtitle.Append(
", with weights)");
2080 cout<<
"*************************************"<<endl;
2081 cout<<
"*************************************"<<endl;
2082 cout<<title.Data()<<endl;
2083 cout<<subtitle.Data()<<endl;
2084 if(type ==
"RF, rebinned in M"){cout<<subtitle2.Data()<<endl;}
2087 for(
Int_t i=0;i<4;i++)
2089 cout<<
" v_"<<n<<
"{"<<2*(i+1)<<
"} = "<<dVn[i]<<
" +/- "<<dVnErr[i]<<endl;
2097 cout<<
" detector bias (corrected for): "<<endl;
2100 cout<<
" detector bias (not corrected for):"<<endl;
2106 if(type ==
"RF" || type ==
"RF, rebinned in M")
2110 else if (type ==
"RP")
2114 else if (type ==
"POI")
2119 cout<<
"*************************************"<<endl;
2120 cout<<
"*************************************"<<endl;
2130 TFile *output =
new TFile(outputFileName.Data(),
"RECREATE");
2146 outputFileName->Write(outputFileName->GetName(), TObject::kSingleKey);
2159 TString commonHistsName =
"AliFlowCommonHistQC";
2167 TString commonHists2ndOrderName =
"AliFlowCommonHist2ndOrderQC";
2172 TString commonHists4thOrderName =
"AliFlowCommonHist4thOrderQC";
2177 TString commonHists6thOrderName =
"AliFlowCommonHist6thOrderQC";
2182 TString commonHists8thOrderName =
"AliFlowCommonHist8thOrderQC";
2190 TString commonHistResults2ndOrderName =
"AliFlowCommonHistResults2ndOrderQC";
2195 TString commonHistResults4thOrderName =
"AliFlowCommonHistResults4thOrderQC";
2200 TString commonHistResults6thOrderName =
"AliFlowCommonHistResults6thOrderQC";
2205 TString commonHistResults8thOrderName =
"AliFlowCommonHistResults8thOrderQC";
2220 printf(
"\n WARNING (QC): fWeightsList is NULL in AFAWQC::BAFWH() !!!! \n\n");
2224 Double_t ptbinsforweights[200001] = {0.};
2225 for (
Int_t phib=0; phib<200001; phib++) {
2226 ptbinsforweights[phib] = 0.2 + phib*(50.-0.2)/200000.;
2228 Double_t cenbinsforweights[] = {0.,5.,10.,20.,30.,40.,50.,60.,70.,80.,90.};
2230 fPtWeightsCent =
new TH2F(
"fPtWeightsCent",
"fPtWeightsCent",200000,ptbinsforweights,10,cenbinsforweights);
2407 TF1 *CenFit =
new TF1(
"CenFit",
"pol0", 0., 100.);
2410 Double_t CenAv = CenFit->GetParameter(0);
2422 Double_t CenAv = CenFit->GetParameter(0);
2424 Double_t SemiCenAv = CenFit->GetParameter(0);
2450 TString sinCosFlag[2] = {
"sin",
"cos"};
2451 TString powerFlag[2] = {
"linear",
"quadratic"};
2454 TString intFlowFlagsName =
"fIntFlowFlags";
2456 fIntFlowFlags =
new TProfile(intFlowFlagsName.Data(),
"Flags for Integrated Flow",20,0.,20.);
2462 fIntFlowFlags->GetXaxis()->SetBinLabel(1,
"Particle Weights");
2464 fIntFlowFlags->GetXaxis()->SetBinLabel(3,
"Corrected for NUA?");
2465 fIntFlowFlags->GetXaxis()->SetBinLabel(4,
"Print RF results");
2466 fIntFlowFlags->GetXaxis()->SetBinLabel(5,
"Print RP results");
2467 fIntFlowFlags->GetXaxis()->SetBinLabel(6,
"Print POI results");
2468 fIntFlowFlags->GetXaxis()->SetBinLabel(7,
"Print RF (rebinned in M) results");
2469 fIntFlowFlags->GetXaxis()->SetBinLabel(8,
"Corrected for NUA vs M?");
2470 fIntFlowFlags->GetXaxis()->SetBinLabel(9,
"Propagate errors to v_{n} from correlations?");
2471 fIntFlowFlags->GetXaxis()->SetBinLabel(10,
"Calculate cumulants vs M");
2472 fIntFlowFlags->GetXaxis()->SetBinLabel(11,
"fMinimumBiasReferenceFlow");
2473 fIntFlowFlags->GetXaxis()->SetBinLabel(12,
"fForgetAboutCovariances");
2475 fIntFlowFlags->GetXaxis()->SetBinLabel(14,
"fFillMultipleControlHistograms");
2476 fIntFlowFlags->GetXaxis()->SetBinLabel(15,
"Calculate all correlations vs M");
2477 fIntFlowFlags->GetXaxis()->SetBinLabel(16,
"fMultiplicityIs");
2479 fIntFlowFlags->GetXaxis()->SetBinLabel(18,
"fUse2DHistograms");
2480 fIntFlowFlags->GetXaxis()->SetBinLabel(19,
"fFillProfilesVsMUsingWeights");
2481 fIntFlowFlags->GetXaxis()->SetBinLabel(20,
"fUseQvectorTerms");
2486 fReQ =
new TMatrixD(12,9);
2487 fImQ =
new TMatrixD(12,9);
2488 fSpk =
new TMatrixD(8,9);
2489 fReQGF =
new TMatrixD(21,9);
2490 fImQGF =
new TMatrixD(21,9);
2496 TString intFlowCorrelationsEBEName =
"fIntFlowCorrelationsEBE";
2500 TString intFlowEventWeightsForCorrelationsEBEName =
"fIntFlowEventWeightsForCorrelationsEBE";
2501 intFlowEventWeightsForCorrelationsEBEName +=
fAnalysisLabel->Data();
2504 TString intFlowCorrelationsAllEBEName =
"fIntFlowCorrelationsAllEBE";
2509 TString fIntFlowCorrectionTermsForNUAEBEName =
"fIntFlowCorrectionTermsForNUAEBE";
2511 for(
Int_t sc=0;sc<2;sc++)
2513 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);
2516 TString fIntFlowEventWeightForCorrectionTermsForNUAEBEName =
"fIntFlowEventWeightForCorrectionTermsForNUAEBE";
2517 fIntFlowEventWeightForCorrectionTermsForNUAEBEName +=
fAnalysisLabel->Data();
2518 for(
Int_t sc=0;sc<2;sc++)
2524 TString avMultiplicityName =
"fAvMultiplicity";
2526 fAvMultiplicity =
new TProfile(avMultiplicityName.Data(),
"Average multiplicities of reference particles (RPs)",9,0,9);
2543 TString correlationFlag[4] = {
"#LT#LT2#GT#GT",
"#LT#LT4#GT#GT",
"#LT#LT6#GT#GT",
"#LT#LT8#GT#GT"};
2544 TString intFlowCorrelationsProName =
"fIntFlowCorrelationsPro";
2546 fIntFlowCorrelationsPro =
new TProfile(intFlowCorrelationsProName.Data(),
"Average correlations for all events",4,0,4,
"s");
2552 for(
Int_t b=0;b<4;b++)
2558 TString squaredCorrelationFlag[4] = {
"#LT#LT2#GT^{2}#GT",
"#LT#LT4#GT^{2}#GT",
"#LT#LT6#GT^{2}#GT",
"#LT#LT8#GT^{2}#GT"};
2559 TString intFlowSquaredCorrelationsProName =
"fIntFlowSquaredCorrelationsPro";
2567 for(
Int_t b=0;b<4;b++)
2574 for(
Int_t ci=0;ci<4;ci++)
2577 TString intFlowCorrelationsVsMProName =
"fIntFlowCorrelationsVsMPro";
2579 fIntFlowCorrelationsVsMPro[ci] =
new TProfile(Form(
"%s, %s",intFlowCorrelationsVsMProName.Data(),correlationFlag[ci].Data()),
2580 Form(
"%s vs multiplicity",correlationFlag[ci].
Data()),
2596 TString intFlowSquaredCorrelationsVsMProName =
"fIntFlowSquaredCorrelationsVsMPro";
2599 Form(
"%s vs multiplicity",squaredCorrelationFlag[ci].
Data()),
2617 TString intFlowCorrelationsAllProName =
"fIntFlowCorrelationsAllPro";
2619 fIntFlowCorrelationsAllPro =
new TProfile(intFlowCorrelationsAllProName.Data(),
"Average all correlations for all events",64,0,64);
2725 fIntFlowCorrelationsAllVsMPro[30] =
new TProfile(
"eight1n1n1n1n1n1n1n1n",
"#LT#LT8#GT#GT_{n,n,n,n|n,n,n,n}",
fnBinsMult,
fMinMult,
fMaxMult);
2759 for(
Int_t n=0;n<63;n++)
2781 TString intFlowExtraCorrelationsProName =
"fIntFlowExtraCorrelationsPro";
2783 fIntFlowExtraCorrelationsPro =
new TProfile(intFlowExtraCorrelationsProName.Data(),
"Average extra correlations for all events",100,0,100,
"s");
2794 TString productFlag[6] = {
"#LT#LT2#GT#LT4#GT#GT",
"#LT#LT2#GT#LT6#GT#GT",
"#LT#LT2#GT#LT8#GT#GT",
2795 "#LT#LT4#GT#LT6#GT#GT",
"#LT#LT4#GT#LT8#GT#GT",
"#LT#LT6#GT#LT8#GT#GT"};
2796 TString intFlowProductOfCorrelationsProName =
"fIntFlowProductOfCorrelationsPro";
2803 for(
Int_t b=0;b<6;b++)
2812 TString intFlowProductOfCorrelationsVsMProName =
"fIntFlowProductOfCorrelationsVsMPro";
2813 intFlowProductOfCorrelationsVsMProName +=
fAnalysisLabel->Data();
2817 Form(
"%s versus multiplicity",productFlag[
pi].
Data()),
2833 TString intFlowProductOfCorrectionTermsForNUAProName =
"fIntFlowProductOfCorrectionTermsForNUAPro";
2834 intFlowProductOfCorrectionTermsForNUAProName +=
fAnalysisLabel->Data();
2869 for(
Int_t sc=0;sc<2;sc++)
2871 TString intFlowCorrectionTermsForNUAProName =
"fIntFlowCorrectionTermsForNUAPro";
2873 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");
2886 TString correctionTermFlag[4] = {
"(n(phi1))",
"(n(phi1+phi2))",
"(n(phi1-phi2-phi3))",
"(n(2phi1-phi2))"};
2887 for(
Int_t ci=0;ci<4;ci++)
2889 TString intFlowCorrectionTermsForNUAVsMProName =
"fIntFlowCorrectionTermsForNUAVsMPro";
2890 intFlowCorrectionTermsForNUAVsMProName +=
fAnalysisLabel->Data();
2891 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");
2899 TString intFlowCorrelationsHistName =
"fIntFlowCorrelationsHist";
2914 for(
Int_t ci=0;ci<4;ci++)
2916 TString intFlowCorrelationsVsMHistName =
"fIntFlowCorrelationsVsMHist";
2919 Form(
"%s vs multiplicity",correlationFlag[ci].
Data()),
2936 TString intFlowCorrelationsAllHistName =
"fIntFlowCorrelationsAllHist";
2977 for(
Int_t sc=0;sc<2;sc++)
2979 TString intFlowCorrectionTermsForNUAHistName =
"fIntFlowCorrectionTermsForNUAHist";
2981 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);
2993 TString intFlowCovariancesName =
"fIntFlowCovariances";
2995 fIntFlowCovariances =
new TH1D(intFlowCovariancesName.Data(),
"Covariances (multiplied with weight dependent prefactor)",6,0,6);
3006 TString intFlowSumOfEventWeightsName =
"fIntFlowSumOfEventWeights";
3008 for(
Int_t power=0;power<2;power++)
3010 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);
3019 }
else if (power == 1)
3029 TString intFlowSumOfProductOfEventWeightsName =
"fIntFlowSumOfProductOfEventWeights";
3045 TString intFlowCovariancesVsMName =
"fIntFlowCovariancesVsM";
3047 TString covarianceFlag[6] = {
"Cov(<2>,<4>)",
"Cov(<2>,<6>)",
"Cov(<2>,<8>)",
"Cov(<4>,<6>)",
"Cov(<4>,<8>)",
"Cov(<6>,<8>)"};
3048 for(
Int_t ci=0;ci<6;ci++)
3051 Form(
"%s vs multiplicity",covarianceFlag[ci].
Data()),
3071 TString intFlowSumOfEventWeightsVsMName =
"fIntFlowSumOfEventWeightsVsM";
3073 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>}"},
3074 {
"#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}"}};
3075 for(
Int_t si=0;si<4;si++)
3077 for(
Int_t power=0;power<2;power++)
3080 Form(
"%s vs multiplicity",sumFlag[power][si].
Data()),
3102 TString intFlowSumOfProductOfEventWeightsVsMName =
"fIntFlowSumOfProductOfEventWeightsVsM";
3103 intFlowSumOfProductOfEventWeightsVsMName +=
fAnalysisLabel->Data();
3104 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>}",
3105 "#sum_{i=1}^{N} w_{<4>} w_{<6>}",
"#sum_{i=1}^{N} w_{<4>} w_{<8>}",
"#sum_{i=1}^{N} w_{<6>} w_{<8>}"};
3109 Form(
"%s versus multiplicity",sopowFlag[
pi].
Data()),
3126 TString intFlowCovariancesNUAName =
"fIntFlowCovariancesNUA";
3128 fIntFlowCovariancesNUA =
new TH1D(intFlowCovariancesNUAName.Data(),
"Covariances for NUA (multiplied with weight dependent prefactor)",27,0,27);
3147 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(16,
"Cov(<cos(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3148 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(17,
"Cov(<cos(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3151 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(20,
"Cov(<sin(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3152 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(21,
"Cov(<sin(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3153 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(22,
"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}+#phi_{2})>)");
3154 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(23,
"Cov(<cos(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3155 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(24,
"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3156 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(25,
"Cov(<sin(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3157 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(26,
"Cov(<sin(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3158 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(27,
"Cov(<cos(#phi_{1}-#phi_{2}-#phi_{3}>,<sin(#phi_{1}-#phi_{2}-#phi_{3}>)");
3161 TString intFlowSumOfEventWeightsNUAName =
"fIntFlowSumOfEventWeightsNUA";
3163 for(
Int_t sc=0;sc<2;sc++)
3165 for(
Int_t power=0;power<2;power++)
3167 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);
3176 }
else if(power == 1)
3180 (
fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(3,Form(
"#sum_{i=1}^{N} w_{<%s(#phi_{1}-#phi_{2}-#phi_{3})>}^{2}",sinCosFlag[sc].
Data()));
3187 TString intFlowSumOfProductOfEventWeightsNUAName =
"fIntFlowSumOfProductOfEventWeightsNUA";
3188 intFlowSumOfProductOfEventWeightsNUAName +=
fAnalysisLabel->Data();
3221 TString cumulantFlag[4] = {
"QC{2}",
"QC{4}",
"QC{6}",
"QC{8}"};
3222 TString intFlowQcumulantsName =
"fIntFlowQcumulants";
3227 fIntFlowQcumulants->SetTitle(
"Reference Q-cumulants (error from non-isotropic terms also propagated)");
3231 for(
Int_t b=0;b<4;b++)
3239 TString intFlowQcumulantsRebinnedInMName =
"fIntFlowQcumulantsRebinnedInM";
3244 for(
Int_t b=0;b<4;b++)
3251 TString intFlowQcumulantsErrorSquaredRatioName =
"fIntFlowQcumulantsErrorSquaredRatio";
3252 intFlowQcumulantsErrorSquaredRatioName +=
fAnalysisLabel->Data();
3256 for(
Int_t b=0;b<4;b++)
3264 TString intFlowQcumulantsVsMName =
"fIntFlowQcumulantsVsM";
3266 for(
Int_t co=0;co<4;co++)
3269 Form(
"%s vs multiplicity",cumulantFlag[co].
Data()),
3286 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)};
3287 TString intFlowName =
"fIntFlow";
3290 fIntFlow =
new TH1D(intFlowName.Data(),
"Reference flow estimates from Q-cumulants",4,0,4);
3293 for(
Int_t b=0;b<4;b++)
3295 (
fIntFlow->GetXaxis())->SetBinLabel(b+1,flowFlag[b].
Data());
3301 TString intFlowRebinnedInMName =
"fIntFlowRebinnedInM";
3303 fIntFlowRebinnedInM =
new TH1D(intFlowRebinnedInMName.Data(),
"Reference flow estimates from Q-cumulants (rebinned in M)",4,0,4);
3306 for(
Int_t b=0;b<4;b++)
3315 TString intFlowVsMName =
"fIntFlowVsM";
3317 for(
Int_t co=0;co<4;co++)
3319 fIntFlowVsM[co] =
new TH1D(Form(
"%s, %s",intFlowVsMName.Data(),flowFlag[co].Data()),
3320 Form(
"%s vs multiplicity",flowFlag[co].
Data()),
3327 fIntFlowVsM[co]->GetXaxis()->SetTitle(
"Reference multiplicity (from ESD)");
3337 TString intFlowDetectorBiasName =
"fIntFlowDetectorBias";
3342 for(
Int_t ci=0;ci<4;ci++)
3344 (
fIntFlowDetectorBias->GetXaxis())->SetBinLabel(ci+1,Form(
"#frac{corrected}{measured} %s",cumulantFlag[ci].
Data()));
3350 TString intFlowDetectorBiasVsMName =
"fIntFlowDetectorBiasVsM";
3352 for(
Int_t ci=0;ci<4;ci++)
3355 Form(
"Quantifying detector bias for %s vs multiplicity",cumulantFlag[ci].
Data()),
3384 TString controlHistogramsFlagsName =
"fControlHistogramsFlags";
3386 fControlHistogramsFlags =
new TProfile(controlHistogramsFlagsName.Data(),
"Flags for Control Histograms",2,0,2);
3400 TString sCorrelationNoRPsVsRefMultName =
"fCorrelationNoRPsVsRefMult";
3411 TString sCorrelationNoPOIsVsRefMultName =
"fCorrelationNoPOIsVsRefMult";
3422 TString sCorrelationNoRPsVsNoPOIsName =
"fCorrelationNoRPsVsNoPOIs";
3433 TString sCorrelation[4] = {
"#LT2#GT",
"#LT4#GT",
"#LT6#GT",
"#LT8#GT"};
3437 sMultiplicity =
"# RPs";
3440 sMultiplicity =
"Reference multiplicity (from ESD)";
3443 sMultiplicity =
"# POIs";
3445 for(
Int_t ci=0;ci<4;ci++)
3457 TString sCorrelationProduct[1] = {
"#LT2#GT#LT4#GT"};
3458 for(
Int_t cpi=0;cpi<1;cpi++)
3472 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}}"};
3473 for(
Int_t qvti=0;qvti<4;qvti++)
3500 TString bootstrapFlagsName =
"fBootstrapFlags";
3502 fBootstrapFlags =
new TProfile(bootstrapFlagsName.Data(),
"Flags for bootstrap",3,0,3);
3514 TString correlationFlag[4] = {
"#LT#LT2#GT#GT",
"#LT#LT4#GT#GT",
"#LT#LT6#GT#GT",
"#LT#LT8#GT#GT"};
3515 TString cumulantFlag[4] = {
"QC{2}",
"QC{4}",
"QC{6}",
"QC{8}"};
3519 TString bootstrapCorrelationsName =
"fBootstrapCorrelations";
3523 for(
Int_t ci=0;ci<4;ci++)
3533 TString bootstrapCumulantsName =
"fBootstrapCumulants";
3537 for(
Int_t co=0;co<4;co++)
3552 sMultiplicity =
"# RPs";
3555 sMultiplicity =
"Reference multiplicity (from ESD)";
3558 sMultiplicity =
"# POIs";
3563 TString bootstrapCorrelationsVsMName =
"fBootstrapCorrelationsVsM";
3565 for(
Int_t ci=0;ci<4;ci++)
3567 fBootstrapCorrelationsVsM[ci] =
new TProfile2D(Form(
"%s, %s",bootstrapCorrelationsVsMName.Data(),correlationFlag[ci].Data()),
3568 Form(
"Bootstrap Correlations Vs. M, %s",correlationFlag[ci].
Data()),
3579 TString bootstrapCumulantsVsMName =
"fBootstrapCumulantsVsM";
3581 for(
Int_t co=0;co<4;co++)
3584 Form(
"Bootstrap Cumulants Vs. M, %s",cumulantFlag[co].
Data()),
3610 TString mixedHarmonicsFlagsName =
"fMixedHarmonicsFlags";
3612 fMixedHarmonicsFlags =
new TProfile(mixedHarmonicsFlagsName.Data(),
"Flags for Mixed Harmonics",4,0,4);
3628 TString s2pCorrelationsName =
"f2pCorrelations";
3630 f2pCorrelations =
new TProfile(s2pCorrelationsName.Data(),Form(
"2-particle correlations (n = %d)",
fHarmonic),6,0,6,
"s");
3645 TString s3pCorrelationsName =
"f3pCorrelations";
3647 f3pCorrelations =
new TProfile(s3pCorrelationsName.Data(),Form(
"3-particle correlations (n = %d)",
fHarmonic),10,0,10,
"s");
3668 TString s4pCorrelationsName =
"f4pCorrelations";
3670 f4pCorrelations =
new TProfile(s4pCorrelationsName.Data(),Form(
"4-particle correlations (n = %d)",
fHarmonic),45,0,45,
"s");
3729 TString s5pCorrelationsName =
"f5pCorrelations";
3731 f5pCorrelations =
new TProfile(s5pCorrelationsName.Data(),Form(
"5-particle correlations (n = %d)",
fHarmonic),87,0,87,
"s");
3832 TString s6pCorrelationsName =
"f6pCorrelations";
3834 f6pCorrelations =
new TProfile(s6pCorrelationsName.Data(),Form(
"6-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3843 TString s7pCorrelationsName =
"f7pCorrelations";
3845 f7pCorrelations =
new TProfile(s7pCorrelationsName.Data(),Form(
"7-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3854 TString s8pCorrelationsName =
"f8pCorrelations";
3856 f8pCorrelations =
new TProfile(s8pCorrelationsName.Data(),Form(
"8-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3901 TString mixedHarmonicEventWeightsName =
"fMixedHarmonicEventWeights";
3903 TString powerFlag[2] = {
"linear",
"quadratic"};
3904 for(
Int_t power=0;power<2;power++)
3906 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.);
3920 }
else if (power == 1)
3935 TString mixedHarmonicProductOfEventWeightsName =
"fMixedHarmonicProductOfEventWeights";
3936 mixedHarmonicProductOfEventWeightsName +=
fAnalysisLabel->Data();
3941 for(
Int_t b=1;b<=8;b++)
3949 TString mixedHarmonicProductOfCorrelationsName =
"fMixedHarmonicProductOfCorrelations";
3950 mixedHarmonicProductOfCorrelationsName +=
fAnalysisLabel->Data();