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)
348 fHistList =
new TList();
349 fHistList->SetName(
"cobjQC");
350 fHistList->SetOwner(kTRUE);
353 fTempList =
new TList();
354 fTempList->SetName(
"temp");
355 fTempList->SetOwner(kTRUE);
358 fMultiplicityWeight =
new TString(
"combinations");
361 fAnalysisLabel =
new TString();
364 this->InitializeArraysForIntFlow();
365 this->InitializeArraysForDiffFlow();
366 this->InitializeArraysForDistributions();
367 this->InitializeArraysForVarious();
368 this->InitializeArraysForNestedLoops();
369 this->InitializeArraysForMixedHarmonics();
370 this->InitializeArraysForControlHistograms();
371 this->InitializeArraysForBootstrap();
380 this->InitializeCostantsForCRC();
381 this->InitializeArraysForParticleWeights();
382 this->InitializeArraysForCRC();
383 this->InitializeArraysForCRCVZ();
384 this->InitializeArraysForCRCZDC();
385 this->InitializeArraysForCRC2();
386 this->InitializeArraysForQVec();
387 this->InitializeArraysForCRCPt();
388 this->InitializeArraysForCME();
389 this->InitializeArraysForFlowEbE();
390 this->InitializeArraysForFlowQC();
391 this->InitializeArraysForFlowGF();
392 this->InitializeArraysForFlowSPZDC();
393 this->InitializeArraysForFlowSPVZ();
394 this->InitializeArraysForEbEFlow();
439 Bool_t oldHistAddStatus = TH1::AddDirectoryStatus();
440 TH1::AddDirectory(kFALSE);
497 TH1::AddDirectory(oldHistAddStatus);
538 Int_t nCounterNoRPs = 0;
593 if(fRunBin<0 || fRunBin>=
fCRCnRun) {
return;}
595 if(fCenBin<0 || fCenBin>=
fCRCnCen) {
return;}
608 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};
609 for (
Int_t i=0; i<40; i++) {
677 Bool_t bPassZDCcuts = kTRUE;
678 if( ZCM<=0. || ZAM<=0. || sqrt(ZCRe*ZCRe+ZCIm*ZCIm)<1.E-6 || sqrt(ZARe*ZARe+ZAIm*ZAIm)<1.E-6 ) bPassZDCcuts=kFALSE;
708 AliWarning(
"WARNING: POIExtraWeights (kEtaPhiRbR) not found ! \n");
712 for (
Int_t i=0; i<2; i++) {
716 AliWarning(
"WARNING: POIExtraWeights (kEtaPhiChRbR) not found ! \n");
725 AliWarning(
"WARNING: POIExtraWeights (kEtaPhiVtxRbR) not found ! \n");
733 for(
Int_t i=0;i<nPrim;i++) {
740 Bool_t IsSplitMergedTracks = kFALSE;
744 if(IsSplitMergedTracks)
continue;
750 dPhi = aftsTrack->
Phi();
751 dPt = aftsTrack->
Pt();
752 dEta = aftsTrack->
Eta();
753 dCharge = aftsTrack->
Charge();
758 cw = (dCharge > 0. ? 0 : 1);
770 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
777 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
782 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
788 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
790 Int_t ptbebe = (dPt>1.? 2 : (dPt>0.5 ? 1 : 0));
794 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
800 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
805 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
813 for(
Int_t m=0;m<12;m++)
815 for(
Int_t k=0;k<9;k++)
817 (*fReQ)(m,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1)*n*dPhi);
818 (*fImQ)(m,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1)*n*dPhi);
822 for(
Int_t p=0;p<8;p++)
824 for(
Int_t k=0;k<9;k++)
826 (*fSpk)(p,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k);
835 for(
Int_t k=0;k<9;k++)
837 for(
Int_t m=0;m<4;m++)
843 fReRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
844 fImRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
847 fs1dEBE[0][pe][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
853 fReRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
854 fImRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
857 fs2dEBE[0][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
866 for(
Int_t k=0;k<9;k++)
868 for(
Int_t m=0;m<4;m++)
874 fReRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
875 fImRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
878 fs1dEBE[2][pe][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
884 fReRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
885 fImRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
888 fs2dEBE[2][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
905 dPhi = aftsTrack->
Phi();
906 dPt = aftsTrack->
Pt();
907 dEta = aftsTrack->
Eta();
908 dCharge = aftsTrack->
Charge();
915 if(dCharge > 0.) dPt += 1.E-2;
919 cw = (dCharge > 0. ? 0 : 1);
932 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
939 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
944 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
950 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
952 Int_t ptbebe = (dPt>1.? 2 : (dPt>0.5 ? 1 : 0));
956 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
962 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
967 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
973 if(dPhi>2.136283 && dPhi<2.324779)
continue;
977 for(
Int_t m=0;m<21;m++)
979 for(
Int_t k=0;k<9;k++)
981 (*fReQGF)(m,k) += pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos(m*dPhi);
982 (*fImQGF)(m,k) += pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin(m*dPhi);
989 for(
Int_t k=0;k<9;k++)
991 for(
Int_t m=0;m<4;m++)
997 fReRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
998 fImRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
1003 fReRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
1004 fImRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
1012 fCRCQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
1013 fCRCQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
1014 fCRCMult[cw][h]->Fill(dEta,wPhiEta);
1016 fCRC2QRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
1017 fCRC2QIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
1018 fCRC2Mul[cw][h]->Fill(dEta,pow(wPhiEta,h));
1020 fCRCZDCQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
1021 fCRCZDCQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
1025 fCRC2QRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
1026 fCRC2QIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
1027 fCRC2Mul[2][h]->Fill(dEta,pow(wPhiEta,h));
1031 fCRCZDCQRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
1032 fCRCZDCQIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
1035 fCRCZDCQRe[3][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
1036 fCRCZDCQIm[3][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
1044 if(weraw > 0.) SpecWeig = 1./weraw;
1046 fCMEQRe[cw][h]->Fill(dEta,SpecWeig*wPhiEta*TMath::Cos((h+1.)*dPhi));
1047 fCMEQIm[cw][h]->Fill(dEta,SpecWeig*wPhiEta*TMath::Sin((h+1.)*dPhi));
1048 fCMEMult[cw][h]->Fill(dEta,SpecWeig*wPhiEta);
1049 fCMEQRe[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.)*TMath::Cos((h+1.)*dPhi));
1050 fCMEQIm[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.)*TMath::Sin((h+1.)*dPhi));
1051 fCMEMult[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.));
1067 fPOIPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1068 fPOIPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1071 fPOIPtDiffQReCh[cw][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1072 fPOIPtDiffQImCh[cw][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1075 fPOIPhiDiffQRe[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1076 fPOIPhiDiffQIm[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1079 fPOIPtEtaDiffQRe[k][h]->Fill(dPt,dEta,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1080 fPOIPtEtaDiffQIm[k][h]->Fill(dPt,dEta,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1088 Int_t keta = (dEta<0.?0:1);
1089 fPOIPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1090 fPOIPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1092 fPOIPhiDiffQReEG[keta][k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1093 fPOIPhiDiffQImEG[keta][k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1097 }
else if(fFlowQCDeltaEta<0. && fFlowQCDeltaEta>-1.) {
1100 fPOIPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1101 fPOIPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1104 fPOIPhiDiffQRe[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1105 fPOIPhiDiffQIm[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1110 if((dEta>0. && dEta<0.4-boundetagap/2.) || (dEta>0.4+boundetagap/2. && dEta<0.8)) {
1112 if(dEta>0. && dEta<0.4-boundetagap/2.) keta = 0;
1114 fPOIPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1115 fPOIPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1123 }
else if(fFlowQCDeltaEta<-1. && fFlowQCDeltaEta>-2.) {
1126 fPOIPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1127 fPOIPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1130 fPOIPhiDiffQRe[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1131 fPOIPhiDiffQIm[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1136 if((dEta<0. && dEta>-0.4+boundetagap/2.) || (dEta<-0.4-boundetagap/2. && dEta>-0.8)) {
1138 if(dEta<0. && dEta>-0.4+boundetagap/2.) keta = 0;
1140 fPOIPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1141 fPOIPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1154 fEtaDiffQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
1155 fEtaDiffQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
1157 fPOIEtaPtQRe[cw][h]->Fill(dEta,dPt,wPhiEta*TMath::Cos((h+1.)*dPhi));
1158 fPOIEtaPtQIm[cw][h]->Fill(dEta,dPt,wPhiEta*TMath::Sin((h+1.)*dPhi));
1186 for (
Int_t h=0;h<6;h++) {
1209 printf(
"\n WARNING (QC): No particle (i.e. aftsTrack is a NULL pointer in AFAWQC::Make())!!!!\n\n");
1216 for(
Int_t p=0;p<8;p++)
1218 for(
Int_t k=0;k<9;k++)
1220 (*fSpk)(p,k)=pow((*
fSpk)(p,k),p+1);
1613 const Float_t kLimit1 = 0.02 * 3;
1617 Bool_t isNoSplit = kFALSE;
1620 if (it1 < nTracks - 1) {
1621 for (
Int_t itll2 = it1 + 1; itll2 < nTracks; itll2++) {
1633 if (TMath::Abs(deta1) < 0.02 * 2.5 * 3) {
1641 Float_t dphistarminabs1 = 1e5;
1644 if (TMath::Abs(dphistar11) < kLimit1 || TMath::Abs(dphistar21) < kLimit1 || dphistar11 * dphistar21 < 0 ) {
1646 for (
Double_t rad1 = 0.8; rad1 < 2.51; rad1 += 0.01) {
1649 Float_t dphistarabs1 = TMath::Abs(dphistar1);
1650 if (dphistarabs1 < dphistarminabs1) {
1651 dphistarmin1 = dphistar1;
1652 dphistarminabs1 = dphistarabs1;
1655 if (dphistarminabs1 < 0.02 && TMath::Abs(deta1) < 0.02) {
1709 cout<<
"Skipping the event because multiplicity is "<<nPrim<<
". Too high to evaluate nested loops!"<<endl;
1713 cout<<
"Skipping the event because multiplicity is "<<nPrim<<
"."<<endl;
1824 if(outputListHistos)
1829 printf(
"\n WARNING (QC): fHistList is NULL in AFAWQC::GOH() !!!!\n\n");
1857 printf(
"\n WARNING (QC): outputListHistos is NULL in AFAWQC::GOH() !!!!\n\n");
1869 Int_t nBinsPt = profilePtEta->GetNbinsX();
1870 Double_t dPtMin = (profilePtEta->GetXaxis())->GetXmin();
1871 Double_t dPtMax = (profilePtEta->GetXaxis())->GetXmax();
1873 Int_t nBinsEta = profilePtEta->GetNbinsY();
1875 TProfile *profilePt =
new TProfile(
"",
"",nBinsPt,dPtMin,dPtMax);
1877 for(
Int_t p=1;p<=nBinsPt;p++)
1885 for(
Int_t e=1;e<=nBinsEta;e++)
1887 contentPt += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
1888 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1889 entryPt += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1891 sum1 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
1892 * (pow(profilePtEta->GetBinError(profilePtEta->GetBin(p,e)),2.)
1893 + pow(profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)),2.));
1894 sum2 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1895 sum3 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
1896 * (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)));
1898 if(sum2>0. && sum1/sum2-pow(sum3/sum2,2.) > 0.)
1900 spreadPt = pow(sum1/sum2-pow(sum3/sum2,2.),0.5);
1902 profilePt->SetBinContent(p,contentPt);
1903 profilePt->SetBinEntries(p,entryPt);
1905 profilePt->SetBinError(p,spreadPt);
1922 Int_t nBinsEta = profilePtEta->GetNbinsY();
1923 Double_t dEtaMin = (profilePtEta->GetYaxis())->GetXmin();
1924 Double_t dEtaMax = (profilePtEta->GetYaxis())->GetXmax();
1926 Int_t nBinsPt = profilePtEta->GetNbinsX();
1928 TProfile *profileEta =
new TProfile(
"",
"",nBinsEta,dEtaMin,dEtaMax);
1930 for(
Int_t e=1;e<=nBinsEta;e++)
1934 for(
Int_t p=1;p<=nBinsPt;p++)
1936 contentEta += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
1937 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1938 entryEta += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1940 profileEta->SetBinContent(e,contentEta);
1941 profileEta->SetBinEntries(e,entryEta);
1961 for(
Int_t b=0;b<4;b++)
1972 }
else if(type ==
"RP")
1982 }
else if(type ==
"POI")
1994 for(
Int_t b=0;b<4;b++)
2003 TString subtitle2 =
" (rebinned in M)";
2005 if(type !=
"RF, rebinned in M")
2009 subtitle.Append(type);
2010 subtitle.Append(
", without weights)");
2013 subtitle.Append(type);
2014 subtitle.Append(
", with weights)");
2020 subtitle.Append(
"RF");
2021 subtitle.Append(
", without weights)");
2024 subtitle.Append(
"RF");
2025 subtitle.Append(
", with weights)");
2030 cout<<
"*************************************"<<endl;
2031 cout<<
"*************************************"<<endl;
2032 cout<<title.Data()<<endl;
2033 cout<<subtitle.Data()<<endl;
2034 if(type ==
"RF, rebinned in M"){cout<<subtitle2.Data()<<endl;}
2037 for(
Int_t i=0;i<4;i++)
2039 cout<<
" v_"<<n<<
"{"<<2*(i+1)<<
"} = "<<dVn[i]<<
" +/- "<<dVnErr[i]<<endl;
2047 cout<<
" detector bias (corrected for): "<<endl;
2050 cout<<
" detector bias (not corrected for):"<<endl;
2056 if(type ==
"RF" || type ==
"RF, rebinned in M")
2060 else if (type ==
"RP")
2064 else if (type ==
"POI")
2069 cout<<
"*************************************"<<endl;
2070 cout<<
"*************************************"<<endl;
2080 TFile *output =
new TFile(outputFileName.Data(),
"RECREATE");
2096 outputFileName->Write(outputFileName->GetName(), TObject::kSingleKey);
2109 TString commonHistsName =
"AliFlowCommonHistQC";
2117 TString commonHists2ndOrderName =
"AliFlowCommonHist2ndOrderQC";
2122 TString commonHists4thOrderName =
"AliFlowCommonHist4thOrderQC";
2127 TString commonHists6thOrderName =
"AliFlowCommonHist6thOrderQC";
2132 TString commonHists8thOrderName =
"AliFlowCommonHist8thOrderQC";
2140 TString commonHistResults2ndOrderName =
"AliFlowCommonHistResults2ndOrderQC";
2145 TString commonHistResults4thOrderName =
"AliFlowCommonHistResults4thOrderQC";
2150 TString commonHistResults6thOrderName =
"AliFlowCommonHistResults6thOrderQC";
2155 TString commonHistResults8thOrderName =
"AliFlowCommonHistResults8thOrderQC";
2170 printf(
"\n WARNING (QC): fWeightsList is NULL in AFAWQC::BAFWH() !!!! \n\n");
2174 Double_t ptbinsforweights[200001] = {0.};
2175 for (
Int_t phib=0; phib<200001; phib++) {
2176 ptbinsforweights[phib] = 0.2 + phib*(50.-0.2)/200000.;
2178 Double_t cenbinsforweights[] = {0.,5.,10.,20.,30.,40.,50.,60.,70.,80.,90.};
2180 fPtWeightsCent =
new TH2F(
"fPtWeightsCent",
"fPtWeightsCent",200000,ptbinsforweights,10,cenbinsforweights);
2357 TF1 *CenFit =
new TF1(
"CenFit",
"pol0", 0., 100.);
2360 Double_t CenAv = CenFit->GetParameter(0);
2372 Double_t CenAv = CenFit->GetParameter(0);
2374 Double_t SemiCenAv = CenFit->GetParameter(0);
2400 TString sinCosFlag[2] = {
"sin",
"cos"};
2401 TString powerFlag[2] = {
"linear",
"quadratic"};
2404 TString intFlowFlagsName =
"fIntFlowFlags";
2406 fIntFlowFlags =
new TProfile(intFlowFlagsName.Data(),
"Flags for Integrated Flow",20,0.,20.);
2412 fIntFlowFlags->GetXaxis()->SetBinLabel(1,
"Particle Weights");
2414 fIntFlowFlags->GetXaxis()->SetBinLabel(3,
"Corrected for NUA?");
2415 fIntFlowFlags->GetXaxis()->SetBinLabel(4,
"Print RF results");
2416 fIntFlowFlags->GetXaxis()->SetBinLabel(5,
"Print RP results");
2417 fIntFlowFlags->GetXaxis()->SetBinLabel(6,
"Print POI results");
2418 fIntFlowFlags->GetXaxis()->SetBinLabel(7,
"Print RF (rebinned in M) results");
2419 fIntFlowFlags->GetXaxis()->SetBinLabel(8,
"Corrected for NUA vs M?");
2420 fIntFlowFlags->GetXaxis()->SetBinLabel(9,
"Propagate errors to v_{n} from correlations?");
2421 fIntFlowFlags->GetXaxis()->SetBinLabel(10,
"Calculate cumulants vs M");
2422 fIntFlowFlags->GetXaxis()->SetBinLabel(11,
"fMinimumBiasReferenceFlow");
2423 fIntFlowFlags->GetXaxis()->SetBinLabel(12,
"fForgetAboutCovariances");
2425 fIntFlowFlags->GetXaxis()->SetBinLabel(14,
"fFillMultipleControlHistograms");
2426 fIntFlowFlags->GetXaxis()->SetBinLabel(15,
"Calculate all correlations vs M");
2427 fIntFlowFlags->GetXaxis()->SetBinLabel(16,
"fMultiplicityIs");
2429 fIntFlowFlags->GetXaxis()->SetBinLabel(18,
"fUse2DHistograms");
2430 fIntFlowFlags->GetXaxis()->SetBinLabel(19,
"fFillProfilesVsMUsingWeights");
2431 fIntFlowFlags->GetXaxis()->SetBinLabel(20,
"fUseQvectorTerms");
2436 fReQ =
new TMatrixD(12,9);
2437 fImQ =
new TMatrixD(12,9);
2438 fSpk =
new TMatrixD(8,9);
2439 fReQGF =
new TMatrixD(21,9);
2440 fImQGF =
new TMatrixD(21,9);
2442 TString intFlowCorrelationsEBEName =
"fIntFlowCorrelationsEBE";
2446 TString intFlowEventWeightsForCorrelationsEBEName =
"fIntFlowEventWeightsForCorrelationsEBE";
2447 intFlowEventWeightsForCorrelationsEBEName +=
fAnalysisLabel->Data();
2450 TString intFlowCorrelationsAllEBEName =
"fIntFlowCorrelationsAllEBE";
2455 TString fIntFlowCorrectionTermsForNUAEBEName =
"fIntFlowCorrectionTermsForNUAEBE";
2457 for(
Int_t sc=0;sc<2;sc++)
2459 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);
2462 TString fIntFlowEventWeightForCorrectionTermsForNUAEBEName =
"fIntFlowEventWeightForCorrectionTermsForNUAEBE";
2463 fIntFlowEventWeightForCorrectionTermsForNUAEBEName +=
fAnalysisLabel->Data();
2464 for(
Int_t sc=0;sc<2;sc++)
2470 TString avMultiplicityName =
"fAvMultiplicity";
2472 fAvMultiplicity =
new TProfile(avMultiplicityName.Data(),
"Average multiplicities of reference particles (RPs)",9,0,9);
2489 TString correlationFlag[4] = {
"#LT#LT2#GT#GT",
"#LT#LT4#GT#GT",
"#LT#LT6#GT#GT",
"#LT#LT8#GT#GT"};
2490 TString intFlowCorrelationsProName =
"fIntFlowCorrelationsPro";
2492 fIntFlowCorrelationsPro =
new TProfile(intFlowCorrelationsProName.Data(),
"Average correlations for all events",4,0,4,
"s");
2498 for(
Int_t b=0;b<4;b++)
2504 TString squaredCorrelationFlag[4] = {
"#LT#LT2#GT^{2}#GT",
"#LT#LT4#GT^{2}#GT",
"#LT#LT6#GT^{2}#GT",
"#LT#LT8#GT^{2}#GT"};
2505 TString intFlowSquaredCorrelationsProName =
"fIntFlowSquaredCorrelationsPro";
2513 for(
Int_t b=0;b<4;b++)
2520 for(
Int_t ci=0;ci<4;ci++)
2523 TString intFlowCorrelationsVsMProName =
"fIntFlowCorrelationsVsMPro";
2525 fIntFlowCorrelationsVsMPro[ci] =
new TProfile(Form(
"%s, %s",intFlowCorrelationsVsMProName.Data(),correlationFlag[ci].Data()),
2526 Form(
"%s vs multiplicity",correlationFlag[ci].
Data()),
2542 TString intFlowSquaredCorrelationsVsMProName =
"fIntFlowSquaredCorrelationsVsMPro";
2545 Form(
"%s vs multiplicity",squaredCorrelationFlag[ci].
Data()),
2563 TString intFlowCorrelationsAllProName =
"fIntFlowCorrelationsAllPro";
2565 fIntFlowCorrelationsAllPro =
new TProfile(intFlowCorrelationsAllProName.Data(),
"Average all correlations for all events",64,0,64);
2671 fIntFlowCorrelationsAllVsMPro[30] =
new TProfile(
"eight1n1n1n1n1n1n1n1n",
"#LT#LT8#GT#GT_{n,n,n,n|n,n,n,n}",
fnBinsMult,
fMinMult,
fMaxMult);
2705 for(
Int_t n=0;n<63;n++)
2727 TString intFlowExtraCorrelationsProName =
"fIntFlowExtraCorrelationsPro";
2729 fIntFlowExtraCorrelationsPro =
new TProfile(intFlowExtraCorrelationsProName.Data(),
"Average extra correlations for all events",100,0,100,
"s");
2740 TString productFlag[6] = {
"#LT#LT2#GT#LT4#GT#GT",
"#LT#LT2#GT#LT6#GT#GT",
"#LT#LT2#GT#LT8#GT#GT",
2741 "#LT#LT4#GT#LT6#GT#GT",
"#LT#LT4#GT#LT8#GT#GT",
"#LT#LT6#GT#LT8#GT#GT"};
2742 TString intFlowProductOfCorrelationsProName =
"fIntFlowProductOfCorrelationsPro";
2749 for(
Int_t b=0;b<6;b++)
2758 TString intFlowProductOfCorrelationsVsMProName =
"fIntFlowProductOfCorrelationsVsMPro";
2759 intFlowProductOfCorrelationsVsMProName +=
fAnalysisLabel->Data();
2763 Form(
"%s versus multiplicity",productFlag[
pi].
Data()),
2779 TString intFlowProductOfCorrectionTermsForNUAProName =
"fIntFlowProductOfCorrectionTermsForNUAPro";
2780 intFlowProductOfCorrectionTermsForNUAProName +=
fAnalysisLabel->Data();
2815 for(
Int_t sc=0;sc<2;sc++)
2817 TString intFlowCorrectionTermsForNUAProName =
"fIntFlowCorrectionTermsForNUAPro";
2819 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");
2832 TString correctionTermFlag[4] = {
"(n(phi1))",
"(n(phi1+phi2))",
"(n(phi1-phi2-phi3))",
"(n(2phi1-phi2))"};
2833 for(
Int_t ci=0;ci<4;ci++)
2835 TString intFlowCorrectionTermsForNUAVsMProName =
"fIntFlowCorrectionTermsForNUAVsMPro";
2836 intFlowCorrectionTermsForNUAVsMProName +=
fAnalysisLabel->Data();
2837 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");
2845 TString intFlowCorrelationsHistName =
"fIntFlowCorrelationsHist";
2860 for(
Int_t ci=0;ci<4;ci++)
2862 TString intFlowCorrelationsVsMHistName =
"fIntFlowCorrelationsVsMHist";
2865 Form(
"%s vs multiplicity",correlationFlag[ci].
Data()),
2882 TString intFlowCorrelationsAllHistName =
"fIntFlowCorrelationsAllHist";
2923 for(
Int_t sc=0;sc<2;sc++)
2925 TString intFlowCorrectionTermsForNUAHistName =
"fIntFlowCorrectionTermsForNUAHist";
2927 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);
2939 TString intFlowCovariancesName =
"fIntFlowCovariances";
2941 fIntFlowCovariances =
new TH1D(intFlowCovariancesName.Data(),
"Covariances (multiplied with weight dependent prefactor)",6,0,6);
2952 TString intFlowSumOfEventWeightsName =
"fIntFlowSumOfEventWeights";
2954 for(
Int_t power=0;power<2;power++)
2956 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);
2965 }
else if (power == 1)
2975 TString intFlowSumOfProductOfEventWeightsName =
"fIntFlowSumOfProductOfEventWeights";
2991 TString intFlowCovariancesVsMName =
"fIntFlowCovariancesVsM";
2993 TString covarianceFlag[6] = {
"Cov(<2>,<4>)",
"Cov(<2>,<6>)",
"Cov(<2>,<8>)",
"Cov(<4>,<6>)",
"Cov(<4>,<8>)",
"Cov(<6>,<8>)"};
2994 for(
Int_t ci=0;ci<6;ci++)
2997 Form(
"%s vs multiplicity",covarianceFlag[ci].
Data()),
3017 TString intFlowSumOfEventWeightsVsMName =
"fIntFlowSumOfEventWeightsVsM";
3019 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>}"},
3020 {
"#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}"}};
3021 for(
Int_t si=0;si<4;si++)
3023 for(
Int_t power=0;power<2;power++)
3026 Form(
"%s vs multiplicity",sumFlag[power][si].
Data()),
3048 TString intFlowSumOfProductOfEventWeightsVsMName =
"fIntFlowSumOfProductOfEventWeightsVsM";
3049 intFlowSumOfProductOfEventWeightsVsMName +=
fAnalysisLabel->Data();
3050 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>}",
3051 "#sum_{i=1}^{N} w_{<4>} w_{<6>}",
"#sum_{i=1}^{N} w_{<4>} w_{<8>}",
"#sum_{i=1}^{N} w_{<6>} w_{<8>}"};
3055 Form(
"%s versus multiplicity",sopowFlag[
pi].
Data()),
3072 TString intFlowCovariancesNUAName =
"fIntFlowCovariancesNUA";
3074 fIntFlowCovariancesNUA =
new TH1D(intFlowCovariancesNUAName.Data(),
"Covariances for NUA (multiplied with weight dependent prefactor)",27,0,27);
3093 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(16,
"Cov(<cos(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3094 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(17,
"Cov(<cos(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3097 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(20,
"Cov(<sin(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3098 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(21,
"Cov(<sin(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3099 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(22,
"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}+#phi_{2})>)");
3100 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(23,
"Cov(<cos(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3101 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(24,
"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3102 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(25,
"Cov(<sin(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3103 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(26,
"Cov(<sin(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3104 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(27,
"Cov(<cos(#phi_{1}-#phi_{2}-#phi_{3}>,<sin(#phi_{1}-#phi_{2}-#phi_{3}>)");
3107 TString intFlowSumOfEventWeightsNUAName =
"fIntFlowSumOfEventWeightsNUA";
3109 for(
Int_t sc=0;sc<2;sc++)
3111 for(
Int_t power=0;power<2;power++)
3113 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);
3122 }
else if(power == 1)
3126 (
fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(3,Form(
"#sum_{i=1}^{N} w_{<%s(#phi_{1}-#phi_{2}-#phi_{3})>}^{2}",sinCosFlag[sc].
Data()));
3133 TString intFlowSumOfProductOfEventWeightsNUAName =
"fIntFlowSumOfProductOfEventWeightsNUA";
3134 intFlowSumOfProductOfEventWeightsNUAName +=
fAnalysisLabel->Data();
3167 TString cumulantFlag[4] = {
"QC{2}",
"QC{4}",
"QC{6}",
"QC{8}"};
3168 TString intFlowQcumulantsName =
"fIntFlowQcumulants";
3173 fIntFlowQcumulants->SetTitle(
"Reference Q-cumulants (error from non-isotropic terms also propagated)");
3177 for(
Int_t b=0;b<4;b++)
3185 TString intFlowQcumulantsRebinnedInMName =
"fIntFlowQcumulantsRebinnedInM";
3190 for(
Int_t b=0;b<4;b++)
3197 TString intFlowQcumulantsErrorSquaredRatioName =
"fIntFlowQcumulantsErrorSquaredRatio";
3198 intFlowQcumulantsErrorSquaredRatioName +=
fAnalysisLabel->Data();
3202 for(
Int_t b=0;b<4;b++)
3210 TString intFlowQcumulantsVsMName =
"fIntFlowQcumulantsVsM";
3212 for(
Int_t co=0;co<4;co++)
3215 Form(
"%s vs multiplicity",cumulantFlag[co].
Data()),
3232 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)};
3233 TString intFlowName =
"fIntFlow";
3236 fIntFlow =
new TH1D(intFlowName.Data(),
"Reference flow estimates from Q-cumulants",4,0,4);
3239 for(
Int_t b=0;b<4;b++)
3241 (
fIntFlow->GetXaxis())->SetBinLabel(b+1,flowFlag[b].
Data());
3247 TString intFlowRebinnedInMName =
"fIntFlowRebinnedInM";
3249 fIntFlowRebinnedInM =
new TH1D(intFlowRebinnedInMName.Data(),
"Reference flow estimates from Q-cumulants (rebinned in M)",4,0,4);
3252 for(
Int_t b=0;b<4;b++)
3261 TString intFlowVsMName =
"fIntFlowVsM";
3263 for(
Int_t co=0;co<4;co++)
3265 fIntFlowVsM[co] =
new TH1D(Form(
"%s, %s",intFlowVsMName.Data(),flowFlag[co].Data()),
3266 Form(
"%s vs multiplicity",flowFlag[co].
Data()),
3273 fIntFlowVsM[co]->GetXaxis()->SetTitle(
"Reference multiplicity (from ESD)");
3283 TString intFlowDetectorBiasName =
"fIntFlowDetectorBias";
3288 for(
Int_t ci=0;ci<4;ci++)
3290 (
fIntFlowDetectorBias->GetXaxis())->SetBinLabel(ci+1,Form(
"#frac{corrected}{measured} %s",cumulantFlag[ci].
Data()));
3296 TString intFlowDetectorBiasVsMName =
"fIntFlowDetectorBiasVsM";
3298 for(
Int_t ci=0;ci<4;ci++)
3301 Form(
"Quantifying detector bias for %s vs multiplicity",cumulantFlag[ci].
Data()),
3330 TString controlHistogramsFlagsName =
"fControlHistogramsFlags";
3332 fControlHistogramsFlags =
new TProfile(controlHistogramsFlagsName.Data(),
"Flags for Control Histograms",2,0,2);
3346 TString sCorrelationNoRPsVsRefMultName =
"fCorrelationNoRPsVsRefMult";
3357 TString sCorrelationNoPOIsVsRefMultName =
"fCorrelationNoPOIsVsRefMult";
3368 TString sCorrelationNoRPsVsNoPOIsName =
"fCorrelationNoRPsVsNoPOIs";
3379 TString sCorrelation[4] = {
"#LT2#GT",
"#LT4#GT",
"#LT6#GT",
"#LT8#GT"};
3383 sMultiplicity =
"# RPs";
3386 sMultiplicity =
"Reference multiplicity (from ESD)";
3389 sMultiplicity =
"# POIs";
3391 for(
Int_t ci=0;ci<4;ci++)
3403 TString sCorrelationProduct[1] = {
"#LT2#GT#LT4#GT"};
3404 for(
Int_t cpi=0;cpi<1;cpi++)
3418 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}}"};
3419 for(
Int_t qvti=0;qvti<4;qvti++)
3446 TString bootstrapFlagsName =
"fBootstrapFlags";
3448 fBootstrapFlags =
new TProfile(bootstrapFlagsName.Data(),
"Flags for bootstrap",3,0,3);
3460 TString correlationFlag[4] = {
"#LT#LT2#GT#GT",
"#LT#LT4#GT#GT",
"#LT#LT6#GT#GT",
"#LT#LT8#GT#GT"};
3461 TString cumulantFlag[4] = {
"QC{2}",
"QC{4}",
"QC{6}",
"QC{8}"};
3465 TString bootstrapCorrelationsName =
"fBootstrapCorrelations";
3469 for(
Int_t ci=0;ci<4;ci++)
3479 TString bootstrapCumulantsName =
"fBootstrapCumulants";
3483 for(
Int_t co=0;co<4;co++)
3498 sMultiplicity =
"# RPs";
3501 sMultiplicity =
"Reference multiplicity (from ESD)";
3504 sMultiplicity =
"# POIs";
3509 TString bootstrapCorrelationsVsMName =
"fBootstrapCorrelationsVsM";
3511 for(
Int_t ci=0;ci<4;ci++)
3513 fBootstrapCorrelationsVsM[ci] =
new TProfile2D(Form(
"%s, %s",bootstrapCorrelationsVsMName.Data(),correlationFlag[ci].Data()),
3514 Form(
"Bootstrap Correlations Vs. M, %s",correlationFlag[ci].
Data()),
3525 TString bootstrapCumulantsVsMName =
"fBootstrapCumulantsVsM";
3527 for(
Int_t co=0;co<4;co++)
3530 Form(
"Bootstrap Cumulants Vs. M, %s",cumulantFlag[co].
Data()),
3556 TString mixedHarmonicsFlagsName =
"fMixedHarmonicsFlags";
3558 fMixedHarmonicsFlags =
new TProfile(mixedHarmonicsFlagsName.Data(),
"Flags for Mixed Harmonics",4,0,4);
3574 TString s2pCorrelationsName =
"f2pCorrelations";
3576 f2pCorrelations =
new TProfile(s2pCorrelationsName.Data(),Form(
"2-particle correlations (n = %d)",
fHarmonic),6,0,6,
"s");
3591 TString s3pCorrelationsName =
"f3pCorrelations";
3593 f3pCorrelations =
new TProfile(s3pCorrelationsName.Data(),Form(
"3-particle correlations (n = %d)",
fHarmonic),10,0,10,
"s");
3614 TString s4pCorrelationsName =
"f4pCorrelations";
3616 f4pCorrelations =
new TProfile(s4pCorrelationsName.Data(),Form(
"4-particle correlations (n = %d)",
fHarmonic),45,0,45,
"s");
3675 TString s5pCorrelationsName =
"f5pCorrelations";
3677 f5pCorrelations =
new TProfile(s5pCorrelationsName.Data(),Form(
"5-particle correlations (n = %d)",
fHarmonic),87,0,87,
"s");
3778 TString s6pCorrelationsName =
"f6pCorrelations";
3780 f6pCorrelations =
new TProfile(s6pCorrelationsName.Data(),Form(
"6-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3789 TString s7pCorrelationsName =
"f7pCorrelations";
3791 f7pCorrelations =
new TProfile(s7pCorrelationsName.Data(),Form(
"7-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3800 TString s8pCorrelationsName =
"f8pCorrelations";
3802 f8pCorrelations =
new TProfile(s8pCorrelationsName.Data(),Form(
"8-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3847 TString mixedHarmonicEventWeightsName =
"fMixedHarmonicEventWeights";
3849 TString powerFlag[2] = {
"linear",
"quadratic"};
3850 for(
Int_t power=0;power<2;power++)
3852 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.);
3866 }
else if (power == 1)
3881 TString mixedHarmonicProductOfEventWeightsName =
"fMixedHarmonicProductOfEventWeights";
3882 mixedHarmonicProductOfEventWeightsName +=
fAnalysisLabel->Data();
3887 for(
Int_t b=1;b<=8;b++)
3895 TString mixedHarmonicProductOfCorrelationsName =
"fMixedHarmonicProductOfCorrelations";
3896 mixedHarmonicProductOfCorrelationsName +=
fAnalysisLabel->Data();
<