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;
586 if(fRunBin<0 || fRunBin>=
fCRCnRun) {
return;}
588 if(fCenBin<0 || fCenBin>=
fCRCnCen) {
return;}
600 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};
601 for (
Int_t i=0; i<40; i++) {
666 Bool_t bPassZDCcuts = kTRUE;
667 if( ZCM<=0. || ZAM<=0. || sqrt(ZCRe*ZCRe+ZCIm*ZCIm)<1.E-6 || sqrt(ZARe*ZARe+ZAIm*ZAIm)<1.E-6 ) bPassZDCcuts=kFALSE;
689 AliWarning(
"WARNING: POIExtraWeights (kEtaPhiRbR) not found ! \n");
693 for (
Int_t i=0; i<2; i++) {
697 AliWarning(
"WARNING: POIExtraWeights (kEtaPhiChRbR) not found ! \n");
706 AliWarning(
"WARNING: POIExtraWeights (kEtaPhiVtxRbR) not found ! \n");
714 for(
Int_t i=0;i<nPrim;i++) {
721 Bool_t IsSplitMergedTracks = kFALSE;
725 if(IsSplitMergedTracks)
continue;
731 dPhi = aftsTrack->
Phi();
732 dPt = aftsTrack->
Pt();
733 dEta = aftsTrack->
Eta();
734 dCharge = aftsTrack->
Charge();
739 cw = (dCharge > 0. ? 0 : 1);
751 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
758 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;
770 Int_t ptbebe = (dPt>1.? 2 : (dPt>0.5 ? 1 : 0));
774 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
780 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
785 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
793 for(
Int_t m=0;m<12;m++)
795 for(
Int_t k=0;k<9;k++)
797 (*fReQ)(m,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1)*n*dPhi);
798 (*fImQ)(m,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1)*n*dPhi);
802 for(
Int_t p=0;p<8;p++)
804 for(
Int_t k=0;k<9;k++)
806 (*fSpk)(p,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k);
815 for(
Int_t k=0;k<9;k++)
817 for(
Int_t m=0;m<4;m++)
823 fReRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
824 fImRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
827 fs1dEBE[0][pe][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
833 fReRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
834 fImRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
837 fs2dEBE[0][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
846 for(
Int_t k=0;k<9;k++)
848 for(
Int_t m=0;m<4;m++)
854 fReRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
855 fImRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
858 fs1dEBE[2][pe][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
864 fReRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
865 fImRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
868 fs2dEBE[2][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
885 dPhi = aftsTrack->
Phi();
886 dPt = aftsTrack->
Pt();
887 dEta = aftsTrack->
Eta();
888 dCharge = aftsTrack->
Charge();
895 if(dCharge > 0.) dPt += 1.E-2;
899 cw = (dCharge > 0. ? 0 : 1);
912 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
919 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;
931 Int_t ptbebe = (dPt>1.? 2 : (dPt>0.5 ? 1 : 0));
935 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
941 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
946 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
952 if(dPhi>2.136283 && dPhi<2.324779)
continue;
956 for(
Int_t m=0;m<21;m++)
958 for(
Int_t k=0;k<9;k++)
960 (*fReQGF)(m,k) += pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos(m*dPhi);
961 (*fImQGF)(m,k) += pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin(m*dPhi);
968 for(
Int_t k=0;k<9;k++)
970 for(
Int_t m=0;m<4;m++)
976 fReRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
977 fImRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
982 fReRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
983 fImRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
991 fCRCQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
992 fCRCQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
993 fCRCMult[cw][h]->Fill(dEta,wPhiEta);
995 fCRC2QRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
996 fCRC2QIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
997 fCRC2Mul[cw][h]->Fill(dEta,pow(wPhiEta,h));
999 fCRCZDCQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
1000 fCRCZDCQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
1004 fCRC2QRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
1005 fCRC2QIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
1006 fCRC2Mul[2][h]->Fill(dEta,pow(wPhiEta,h));
1010 fCRCZDCQRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
1011 fCRCZDCQIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
1014 fCRCZDCQRe[3][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
1015 fCRCZDCQIm[3][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
1023 if(weraw > 0.) SpecWeig = 1./weraw;
1025 fCMEQRe[cw][h]->Fill(dEta,SpecWeig*wPhiEta*TMath::Cos((h+1.)*dPhi));
1026 fCMEQIm[cw][h]->Fill(dEta,SpecWeig*wPhiEta*TMath::Sin((h+1.)*dPhi));
1027 fCMEMult[cw][h]->Fill(dEta,SpecWeig*wPhiEta);
1028 fCMEQRe[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.)*TMath::Cos((h+1.)*dPhi));
1029 fCMEQIm[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.)*TMath::Sin((h+1.)*dPhi));
1030 fCMEMult[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.));
1046 fPOIPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1047 fPOIPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1050 fPOIPtDiffQReCh[cw][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1051 fPOIPtDiffQImCh[cw][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1054 fPOIPhiDiffQRe[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1055 fPOIPhiDiffQIm[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1058 fPOIPhiEtaDiffQRe[ITStype][k][h]->Fill(dPhi,dEta,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1059 fPOIPhiEtaDiffQIm[ITStype][k][h]->Fill(dPhi,dEta,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1063 Int_t keta = (dEta<0.?0:1);
1064 fPOIPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1065 fPOIPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1067 fPOIPhiDiffQReEG[keta][k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1068 fPOIPhiDiffQImEG[keta][k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1072 }
else if(fFlowQCDeltaEta<0. && fFlowQCDeltaEta>-1.) {
1075 fPOIPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1076 fPOIPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1079 fPOIPhiDiffQRe[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1080 fPOIPhiDiffQIm[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1085 if((dEta>0. && dEta<0.4-boundetagap/2.) || (dEta>0.4+boundetagap/2. && dEta<0.8)) {
1087 if(dEta>0. && dEta<0.4-boundetagap/2.) keta = 0;
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));
1098 }
else if(fFlowQCDeltaEta<-1. && fFlowQCDeltaEta>-2.) {
1101 fPOIPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1102 fPOIPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1105 fPOIPhiDiffQRe[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1106 fPOIPhiDiffQIm[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1111 if((dEta<0. && dEta>-0.4+boundetagap/2.) || (dEta<-0.4-boundetagap/2. && dEta>-0.8)) {
1113 if(dEta<0. && dEta>-0.4+boundetagap/2.) keta = 0;
1115 fPOIPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1116 fPOIPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1129 fEtaDiffQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
1130 fEtaDiffQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
1132 fPOIEtaPtQRe[cw][h]->Fill(dEta,dPt,wPhiEta*TMath::Cos((h+1.)*dPhi));
1133 fPOIEtaPtQIm[cw][h]->Fill(dEta,dPt,wPhiEta*TMath::Sin((h+1.)*dPhi));
1162 for (
Int_t h=0;h<6;h++) {
1178 printf(
"\n WARNING (QC): No particle (i.e. aftsTrack is a NULL pointer in AFAWQC::Make())!!!!\n\n");
1185 for(
Int_t p=0;p<8;p++)
1187 for(
Int_t k=0;k<9;k++)
1189 (*fSpk)(p,k)=pow((*
fSpk)(p,k),p+1);
1584 const Float_t kLimit1 = 0.02 * 3;
1588 Bool_t isNoSplit = kFALSE;
1591 if (it1 < nTracks - 1) {
1592 for (
Int_t itll2 = it1 + 1; itll2 < nTracks; itll2++) {
1604 if (TMath::Abs(deta1) < 0.02 * 2.5 * 3) {
1612 Float_t dphistarminabs1 = 1e5;
1615 if (TMath::Abs(dphistar11) < kLimit1 || TMath::Abs(dphistar21) < kLimit1 || dphistar11 * dphistar21 < 0 ) {
1617 for (
Double_t rad1 = 0.8; rad1 < 2.51; rad1 += 0.01) {
1620 Float_t dphistarabs1 = TMath::Abs(dphistar1);
1621 if (dphistarabs1 < dphistarminabs1) {
1622 dphistarmin1 = dphistar1;
1623 dphistarminabs1 = dphistarabs1;
1626 if (dphistarminabs1 < 0.02 && TMath::Abs(deta1) < 0.02) {
1680 cout<<
"Skipping the event because multiplicity is "<<nPrim<<
". Too high to evaluate nested loops!"<<endl;
1684 cout<<
"Skipping the event because multiplicity is "<<nPrim<<
"."<<endl;
1820 cosP1n = dReQ1n/dMult;
1838 cosP1nP1n = (pow(dReQ1n,2)-pow(dImQ1n,2)-dReQ2n)/(dMult*(dMult-1));
1839 cosP2nM1n = (dReQ2n*dReQ1n+dImQ2n*dImQ1n-dReQ1n)/(dMult*(dMult-1));
1863 cosP1nM1nM1n = (dReQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2))-dReQ1n*dReQ2n-dImQ1n*dImQ2n-2.*(dMult-1)*dReQ1n)
1864 / (dMult*(dMult-1)*(dMult-2));
1929 sinP1n = dImQ1n/dMult;
1946 sinP1nP1n = (2.*dReQ1n*dImQ1n-dImQ2n)/(dMult*(dMult-1));
1947 sinP2nM1n = (dImQ2n*dReQ1n-dReQ2n*dImQ1n-dImQ1n)/(dMult*(dMult-1));
1971 sinP1nM1nM1n = (-dImQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2))+dReQ1n*dImQ2n-dImQ1n*dReQ2n+2.*(dMult-1)*dImQ1n)
1972 / (dMult*(dMult-1)*(dMult-2));
2002 if(outputListHistos)
2007 printf(
"\n WARNING (QC): fHistList is NULL in AFAWQC::GOH() !!!!\n\n");
2036 printf(
"\n WARNING (QC): outputListHistos is NULL in AFAWQC::GOH() !!!!\n\n");
2048 Int_t nBinsPt = profilePtEta->GetNbinsX();
2049 Double_t dPtMin = (profilePtEta->GetXaxis())->GetXmin();
2050 Double_t dPtMax = (profilePtEta->GetXaxis())->GetXmax();
2052 Int_t nBinsEta = profilePtEta->GetNbinsY();
2054 TProfile *profilePt =
new TProfile(
"",
"",nBinsPt,dPtMin,dPtMax);
2056 for(
Int_t p=1;p<=nBinsPt;p++)
2064 for(
Int_t e=1;e<=nBinsEta;e++)
2066 contentPt += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
2067 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
2068 entryPt += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
2070 sum1 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
2071 * (pow(profilePtEta->GetBinError(profilePtEta->GetBin(p,e)),2.)
2072 + pow(profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)),2.));
2073 sum2 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
2074 sum3 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
2075 * (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)));
2077 if(sum2>0. && sum1/sum2-pow(sum3/sum2,2.) > 0.)
2079 spreadPt = pow(sum1/sum2-pow(sum3/sum2,2.),0.5);
2081 profilePt->SetBinContent(p,contentPt);
2082 profilePt->SetBinEntries(p,entryPt);
2084 profilePt->SetBinError(p,spreadPt);
2101 Int_t nBinsEta = profilePtEta->GetNbinsY();
2102 Double_t dEtaMin = (profilePtEta->GetYaxis())->GetXmin();
2103 Double_t dEtaMax = (profilePtEta->GetYaxis())->GetXmax();
2105 Int_t nBinsPt = profilePtEta->GetNbinsX();
2107 TProfile *profileEta =
new TProfile(
"",
"",nBinsEta,dEtaMin,dEtaMax);
2109 for(
Int_t e=1;e<=nBinsEta;e++)
2113 for(
Int_t p=1;p<=nBinsPt;p++)
2115 contentEta += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
2116 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
2117 entryEta += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
2119 profileEta->SetBinContent(e,contentEta);
2120 profileEta->SetBinEntries(e,entryEta);
2140 for(
Int_t b=0;b<4;b++)
2151 }
else if(type ==
"RP")
2161 }
else if(type ==
"POI")
2173 for(
Int_t b=0;b<4;b++)
2182 TString subtitle2 =
" (rebinned in M)";
2184 if(type !=
"RF, rebinned in M")
2188 subtitle.Append(type);
2189 subtitle.Append(
", without weights)");
2192 subtitle.Append(type);
2193 subtitle.Append(
", with weights)");
2199 subtitle.Append(
"RF");
2200 subtitle.Append(
", without weights)");
2203 subtitle.Append(
"RF");
2204 subtitle.Append(
", with weights)");
2209 cout<<
"*************************************"<<endl;
2210 cout<<
"*************************************"<<endl;
2211 cout<<title.Data()<<endl;
2212 cout<<subtitle.Data()<<endl;
2213 if(type ==
"RF, rebinned in M"){cout<<subtitle2.Data()<<endl;}
2216 for(
Int_t i=0;i<4;i++)
2218 cout<<
" v_"<<n<<
"{"<<2*(i+1)<<
"} = "<<dVn[i]<<
" +/- "<<dVnErr[i]<<endl;
2226 cout<<
" detector bias (corrected for): "<<endl;
2229 cout<<
" detector bias (not corrected for):"<<endl;
2235 if(type ==
"RF" || type ==
"RF, rebinned in M")
2239 else if (type ==
"RP")
2243 else if (type ==
"POI")
2248 cout<<
"*************************************"<<endl;
2249 cout<<
"*************************************"<<endl;
2259 TFile *output =
new TFile(outputFileName.Data(),
"RECREATE");
2275 outputFileName->Write(outputFileName->GetName(), TObject::kSingleKey);
2288 TString commonHistsName =
"AliFlowCommonHistQC";
2296 TString commonHists2ndOrderName =
"AliFlowCommonHist2ndOrderQC";
2301 TString commonHists4thOrderName =
"AliFlowCommonHist4thOrderQC";
2306 TString commonHists6thOrderName =
"AliFlowCommonHist6thOrderQC";
2311 TString commonHists8thOrderName =
"AliFlowCommonHist8thOrderQC";
2319 TString commonHistResults2ndOrderName =
"AliFlowCommonHistResults2ndOrderQC";
2324 TString commonHistResults4thOrderName =
"AliFlowCommonHistResults4thOrderQC";
2329 TString commonHistResults6thOrderName =
"AliFlowCommonHistResults6thOrderQC";
2334 TString commonHistResults8thOrderName =
"AliFlowCommonHistResults8thOrderQC";
2349 printf(
"\n WARNING (QC): fWeightsList is NULL in AFAWQC::BAFWH() !!!! \n\n");
2353 TString fUseParticleWeightsName =
"fUseParticleWeightsQC";
2355 fUseParticleWeights =
new TProfile(fUseParticleWeightsName.Data(),
"0 = particle weight not used, 1 = particle weight used ",8,0,8);
2549 TF1 *CenFit =
new TF1(
"CenFit",
"pol0", 0., 100.);
2552 Double_t CenAv = CenFit->GetParameter(0);
2564 Double_t CenAv = CenFit->GetParameter(0);
2566 Double_t SemiCenAv = CenFit->GetParameter(0);
2592 TString sinCosFlag[2] = {
"sin",
"cos"};
2593 TString powerFlag[2] = {
"linear",
"quadratic"};
2596 TString intFlowFlagsName =
"fIntFlowFlags";
2598 fIntFlowFlags =
new TProfile(intFlowFlagsName.Data(),
"Flags for Integrated Flow",20,0.,20.);
2604 fIntFlowFlags->GetXaxis()->SetBinLabel(1,
"Particle Weights");
2606 fIntFlowFlags->GetXaxis()->SetBinLabel(3,
"Corrected for NUA?");
2607 fIntFlowFlags->GetXaxis()->SetBinLabel(4,
"Print RF results");
2608 fIntFlowFlags->GetXaxis()->SetBinLabel(5,
"Print RP results");
2609 fIntFlowFlags->GetXaxis()->SetBinLabel(6,
"Print POI results");
2610 fIntFlowFlags->GetXaxis()->SetBinLabel(7,
"Print RF (rebinned in M) results");
2611 fIntFlowFlags->GetXaxis()->SetBinLabel(8,
"Corrected for NUA vs M?");
2612 fIntFlowFlags->GetXaxis()->SetBinLabel(9,
"Propagate errors to v_{n} from correlations?");
2613 fIntFlowFlags->GetXaxis()->SetBinLabel(10,
"Calculate cumulants vs M");
2614 fIntFlowFlags->GetXaxis()->SetBinLabel(11,
"fMinimumBiasReferenceFlow");
2615 fIntFlowFlags->GetXaxis()->SetBinLabel(12,
"fForgetAboutCovariances");
2617 fIntFlowFlags->GetXaxis()->SetBinLabel(14,
"fFillMultipleControlHistograms");
2618 fIntFlowFlags->GetXaxis()->SetBinLabel(15,
"Calculate all correlations vs M");
2619 fIntFlowFlags->GetXaxis()->SetBinLabel(16,
"fMultiplicityIs");
2621 fIntFlowFlags->GetXaxis()->SetBinLabel(18,
"fUse2DHistograms");
2622 fIntFlowFlags->GetXaxis()->SetBinLabel(19,
"fFillProfilesVsMUsingWeights");
2623 fIntFlowFlags->GetXaxis()->SetBinLabel(20,
"fUseQvectorTerms");
2628 fReQ =
new TMatrixD(12,9);
2629 fImQ =
new TMatrixD(12,9);
2630 fSpk =
new TMatrixD(8,9);
2631 fReQGF =
new TMatrixD(21,9);
2632 fImQGF =
new TMatrixD(21,9);
2634 TString intFlowCorrelationsEBEName =
"fIntFlowCorrelationsEBE";
2638 TString intFlowEventWeightsForCorrelationsEBEName =
"fIntFlowEventWeightsForCorrelationsEBE";
2639 intFlowEventWeightsForCorrelationsEBEName +=
fAnalysisLabel->Data();
2642 TString intFlowCorrelationsAllEBEName =
"fIntFlowCorrelationsAllEBE";
2647 TString fIntFlowCorrectionTermsForNUAEBEName =
"fIntFlowCorrectionTermsForNUAEBE";
2649 for(
Int_t sc=0;sc<2;sc++)
2651 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);
2654 TString fIntFlowEventWeightForCorrectionTermsForNUAEBEName =
"fIntFlowEventWeightForCorrectionTermsForNUAEBE";
2655 fIntFlowEventWeightForCorrectionTermsForNUAEBEName +=
fAnalysisLabel->Data();
2656 for(
Int_t sc=0;sc<2;sc++)
2662 TString avMultiplicityName =
"fAvMultiplicity";
2664 fAvMultiplicity =
new TProfile(avMultiplicityName.Data(),
"Average multiplicities of reference particles (RPs)",9,0,9);
2681 TString correlationFlag[4] = {
"#LT#LT2#GT#GT",
"#LT#LT4#GT#GT",
"#LT#LT6#GT#GT",
"#LT#LT8#GT#GT"};
2682 TString intFlowCorrelationsProName =
"fIntFlowCorrelationsPro";
2684 fIntFlowCorrelationsPro =
new TProfile(intFlowCorrelationsProName.Data(),
"Average correlations for all events",4,0,4,
"s");
2690 for(
Int_t b=0;b<4;b++)
2696 TString squaredCorrelationFlag[4] = {
"#LT#LT2#GT^{2}#GT",
"#LT#LT4#GT^{2}#GT",
"#LT#LT6#GT^{2}#GT",
"#LT#LT8#GT^{2}#GT"};
2697 TString intFlowSquaredCorrelationsProName =
"fIntFlowSquaredCorrelationsPro";
2705 for(
Int_t b=0;b<4;b++)
2712 for(
Int_t ci=0;ci<4;ci++)
2715 TString intFlowCorrelationsVsMProName =
"fIntFlowCorrelationsVsMPro";
2717 fIntFlowCorrelationsVsMPro[ci] =
new TProfile(Form(
"%s, %s",intFlowCorrelationsVsMProName.Data(),correlationFlag[ci].Data()),
2718 Form(
"%s vs multiplicity",correlationFlag[ci].
Data()),
2734 TString intFlowSquaredCorrelationsVsMProName =
"fIntFlowSquaredCorrelationsVsMPro";
2737 Form(
"%s vs multiplicity",squaredCorrelationFlag[ci].
Data()),
2755 TString intFlowCorrelationsAllProName =
"fIntFlowCorrelationsAllPro";
2757 fIntFlowCorrelationsAllPro =
new TProfile(intFlowCorrelationsAllProName.Data(),
"Average all correlations for all events",64,0,64);
2863 fIntFlowCorrelationsAllVsMPro[30] =
new TProfile(
"eight1n1n1n1n1n1n1n1n",
"#LT#LT8#GT#GT_{n,n,n,n|n,n,n,n}",
fnBinsMult,
fMinMult,
fMaxMult);
2897 for(
Int_t n=0;n<63;n++)
2919 TString intFlowExtraCorrelationsProName =
"fIntFlowExtraCorrelationsPro";
2921 fIntFlowExtraCorrelationsPro =
new TProfile(intFlowExtraCorrelationsProName.Data(),
"Average extra correlations for all events",100,0,100,
"s");
2932 TString productFlag[6] = {
"#LT#LT2#GT#LT4#GT#GT",
"#LT#LT2#GT#LT6#GT#GT",
"#LT#LT2#GT#LT8#GT#GT",
2933 "#LT#LT4#GT#LT6#GT#GT",
"#LT#LT4#GT#LT8#GT#GT",
"#LT#LT6#GT#LT8#GT#GT"};
2934 TString intFlowProductOfCorrelationsProName =
"fIntFlowProductOfCorrelationsPro";
2941 for(
Int_t b=0;b<6;b++)
2950 TString intFlowProductOfCorrelationsVsMProName =
"fIntFlowProductOfCorrelationsVsMPro";
2951 intFlowProductOfCorrelationsVsMProName +=
fAnalysisLabel->Data();
2955 Form(
"%s versus multiplicity",productFlag[
pi].
Data()),
2971 TString intFlowProductOfCorrectionTermsForNUAProName =
"fIntFlowProductOfCorrectionTermsForNUAPro";
2972 intFlowProductOfCorrectionTermsForNUAProName +=
fAnalysisLabel->Data();
3007 for(
Int_t sc=0;sc<2;sc++)
3009 TString intFlowCorrectionTermsForNUAProName =
"fIntFlowCorrectionTermsForNUAPro";
3011 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");
3024 TString correctionTermFlag[4] = {
"(n(phi1))",
"(n(phi1+phi2))",
"(n(phi1-phi2-phi3))",
"(n(2phi1-phi2))"};
3025 for(
Int_t ci=0;ci<4;ci++)
3027 TString intFlowCorrectionTermsForNUAVsMProName =
"fIntFlowCorrectionTermsForNUAVsMPro";
3028 intFlowCorrectionTermsForNUAVsMProName +=
fAnalysisLabel->Data();
3029 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");
3037 TString intFlowCorrelationsHistName =
"fIntFlowCorrelationsHist";
3052 for(
Int_t ci=0;ci<4;ci++)
3054 TString intFlowCorrelationsVsMHistName =
"fIntFlowCorrelationsVsMHist";
3057 Form(
"%s vs multiplicity",correlationFlag[ci].
Data()),
3074 TString intFlowCorrelationsAllHistName =
"fIntFlowCorrelationsAllHist";
3115 for(
Int_t sc=0;sc<2;sc++)
3117 TString intFlowCorrectionTermsForNUAHistName =
"fIntFlowCorrectionTermsForNUAHist";
3119 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);
3131 TString intFlowCovariancesName =
"fIntFlowCovariances";
3133 fIntFlowCovariances =
new TH1D(intFlowCovariancesName.Data(),
"Covariances (multiplied with weight dependent prefactor)",6,0,6);
3144 TString intFlowSumOfEventWeightsName =
"fIntFlowSumOfEventWeights";
3146 for(
Int_t power=0;power<2;power++)
3148 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);
3157 }
else if (power == 1)
3167 TString intFlowSumOfProductOfEventWeightsName =
"fIntFlowSumOfProductOfEventWeights";
3183 TString intFlowCovariancesVsMName =
"fIntFlowCovariancesVsM";
3185 TString covarianceFlag[6] = {
"Cov(<2>,<4>)",
"Cov(<2>,<6>)",
"Cov(<2>,<8>)",
"Cov(<4>,<6>)",
"Cov(<4>,<8>)",
"Cov(<6>,<8>)"};
3186 for(
Int_t ci=0;ci<6;ci++)
3189 Form(
"%s vs multiplicity",covarianceFlag[ci].
Data()),
3209 TString intFlowSumOfEventWeightsVsMName =
"fIntFlowSumOfEventWeightsVsM";
3211 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>}"},
3212 {
"#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}"}};
3213 for(
Int_t si=0;si<4;si++)
3215 for(
Int_t power=0;power<2;power++)
3218 Form(
"%s vs multiplicity",sumFlag[power][si].
Data()),
3240 TString intFlowSumOfProductOfEventWeightsVsMName =
"fIntFlowSumOfProductOfEventWeightsVsM";
3241 intFlowSumOfProductOfEventWeightsVsMName +=
fAnalysisLabel->Data();
3242 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>}",
3243 "#sum_{i=1}^{N} w_{<4>} w_{<6>}",
"#sum_{i=1}^{N} w_{<4>} w_{<8>}",
"#sum_{i=1}^{N} w_{<6>} w_{<8>}"};
3247 Form(
"%s versus multiplicity",sopowFlag[
pi].
Data()),
3264 TString intFlowCovariancesNUAName =
"fIntFlowCovariancesNUA";
3266 fIntFlowCovariancesNUA =
new TH1D(intFlowCovariancesNUAName.Data(),
"Covariances for NUA (multiplied with weight dependent prefactor)",27,0,27);
3285 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(16,
"Cov(<cos(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3286 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(17,
"Cov(<cos(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3289 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(20,
"Cov(<sin(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3290 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(21,
"Cov(<sin(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3291 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(22,
"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}+#phi_{2})>)");
3292 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(23,
"Cov(<cos(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3293 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(24,
"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3294 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(25,
"Cov(<sin(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3295 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(26,
"Cov(<sin(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3296 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(27,
"Cov(<cos(#phi_{1}-#phi_{2}-#phi_{3}>,<sin(#phi_{1}-#phi_{2}-#phi_{3}>)");
3299 TString intFlowSumOfEventWeightsNUAName =
"fIntFlowSumOfEventWeightsNUA";
3301 for(
Int_t sc=0;sc<2;sc++)
3303 for(
Int_t power=0;power<2;power++)
3305 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);
3314 }
else if(power == 1)
3318 (
fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(3,Form(
"#sum_{i=1}^{N} w_{<%s(#phi_{1}-#phi_{2}-#phi_{3})>}^{2}",sinCosFlag[sc].
Data()));
3325 TString intFlowSumOfProductOfEventWeightsNUAName =
"fIntFlowSumOfProductOfEventWeightsNUA";
3326 intFlowSumOfProductOfEventWeightsNUAName +=
fAnalysisLabel->Data();
3359 TString cumulantFlag[4] = {
"QC{2}",
"QC{4}",
"QC{6}",
"QC{8}"};
3360 TString intFlowQcumulantsName =
"fIntFlowQcumulants";
3365 fIntFlowQcumulants->SetTitle(
"Reference Q-cumulants (error from non-isotropic terms also propagated)");
3369 for(
Int_t b=0;b<4;b++)
3377 TString intFlowQcumulantsRebinnedInMName =
"fIntFlowQcumulantsRebinnedInM";
3382 for(
Int_t b=0;b<4;b++)
3389 TString intFlowQcumulantsErrorSquaredRatioName =
"fIntFlowQcumulantsErrorSquaredRatio";
3390 intFlowQcumulantsErrorSquaredRatioName +=
fAnalysisLabel->Data();
3394 for(
Int_t b=0;b<4;b++)
3402 TString intFlowQcumulantsVsMName =
"fIntFlowQcumulantsVsM";
3404 for(
Int_t co=0;co<4;co++)
3407 Form(
"%s vs multiplicity",cumulantFlag[co].
Data()),
3424 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)};
3425 TString intFlowName =
"fIntFlow";
3428 fIntFlow =
new TH1D(intFlowName.Data(),
"Reference flow estimates from Q-cumulants",4,0,4);
3431 for(
Int_t b=0;b<4;b++)
3433 (
fIntFlow->GetXaxis())->SetBinLabel(b+1,flowFlag[b].
Data());
3439 TString intFlowRebinnedInMName =
"fIntFlowRebinnedInM";
3441 fIntFlowRebinnedInM =
new TH1D(intFlowRebinnedInMName.Data(),
"Reference flow estimates from Q-cumulants (rebinned in M)",4,0,4);
3444 for(
Int_t b=0;b<4;b++)
3453 TString intFlowVsMName =
"fIntFlowVsM";
3455 for(
Int_t co=0;co<4;co++)
3457 fIntFlowVsM[co] =
new TH1D(Form(
"%s, %s",intFlowVsMName.Data(),flowFlag[co].Data()),
3458 Form(
"%s vs multiplicity",flowFlag[co].
Data()),
3465 fIntFlowVsM[co]->GetXaxis()->SetTitle(
"Reference multiplicity (from ESD)");
3475 TString intFlowDetectorBiasName =
"fIntFlowDetectorBias";
3480 for(
Int_t ci=0;ci<4;ci++)
3482 (
fIntFlowDetectorBias->GetXaxis())->SetBinLabel(ci+1,Form(
"#frac{corrected}{measured} %s",cumulantFlag[ci].
Data()));
3488 TString intFlowDetectorBiasVsMName =
"fIntFlowDetectorBiasVsM";
3490 for(
Int_t ci=0;ci<4;ci++)
3493 Form(
"Quantifying detector bias for %s vs multiplicity",cumulantFlag[ci].
Data()),
3522 TString controlHistogramsFlagsName =
"fControlHistogramsFlags";
3524 fControlHistogramsFlags =
new TProfile(controlHistogramsFlagsName.Data(),
"Flags for Control Histograms",2,0,2);
3538 TString sCorrelationNoRPsVsRefMultName =
"fCorrelationNoRPsVsRefMult";
3549 TString sCorrelationNoPOIsVsRefMultName =
"fCorrelationNoPOIsVsRefMult";
3560 TString sCorrelationNoRPsVsNoPOIsName =
"fCorrelationNoRPsVsNoPOIs";
3571 TString sCorrelation[4] = {
"#LT2#GT",
"#LT4#GT",
"#LT6#GT",
"#LT8#GT"};
3575 sMultiplicity =
"# RPs";
3578 sMultiplicity =
"Reference multiplicity (from ESD)";
3581 sMultiplicity =
"# POIs";
3583 for(
Int_t ci=0;ci<4;ci++)
3595 TString sCorrelationProduct[1] = {
"#LT2#GT#LT4#GT"};
3596 for(
Int_t cpi=0;cpi<1;cpi++)
3610 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}}"};
3611 for(
Int_t qvti=0;qvti<4;qvti++)
3638 TString bootstrapFlagsName =
"fBootstrapFlags";
3640 fBootstrapFlags =
new TProfile(bootstrapFlagsName.Data(),
"Flags for bootstrap",3,0,3);
3652 TString correlationFlag[4] = {
"#LT#LT2#GT#GT",
"#LT#LT4#GT#GT",
"#LT#LT6#GT#GT",
"#LT#LT8#GT#GT"};
3653 TString cumulantFlag[4] = {
"QC{2}",
"QC{4}",
"QC{6}",
"QC{8}"};
3657 TString bootstrapCorrelationsName =
"fBootstrapCorrelations";
3661 for(
Int_t ci=0;ci<4;ci++)
3671 TString bootstrapCumulantsName =
"fBootstrapCumulants";
3675 for(
Int_t co=0;co<4;co++)
3690 sMultiplicity =
"# RPs";
3693 sMultiplicity =
"Reference multiplicity (from ESD)";
3696 sMultiplicity =
"# POIs";
3701 TString bootstrapCorrelationsVsMName =
"fBootstrapCorrelationsVsM";
3703 for(
Int_t ci=0;ci<4;ci++)
3705 fBootstrapCorrelationsVsM[ci] =
new TProfile2D(Form(
"%s, %s",bootstrapCorrelationsVsMName.Data(),correlationFlag[ci].Data()),
3706 Form(
"Bootstrap Correlations Vs. M, %s",correlationFlag[ci].
Data()),
3717 TString bootstrapCumulantsVsMName =
"fBootstrapCumulantsVsM";
3719 for(
Int_t co=0;co<4;co++)
3722 Form(
"Bootstrap Cumulants Vs. M, %s",cumulantFlag[co].
Data()),
3748 TString mixedHarmonicsFlagsName =
"fMixedHarmonicsFlags";
3750 fMixedHarmonicsFlags =
new TProfile(mixedHarmonicsFlagsName.Data(),
"Flags for Mixed Harmonics",4,0,4);
3766 TString s2pCorrelationsName =
"f2pCorrelations";
3768 f2pCorrelations =
new TProfile(s2pCorrelationsName.Data(),Form(
"2-particle correlations (n = %d)",
fHarmonic),6,0,6,
"s");
3783 TString s3pCorrelationsName =
"f3pCorrelations";
3785 f3pCorrelations =
new TProfile(s3pCorrelationsName.Data(),Form(
"3-particle correlations (n = %d)",
fHarmonic),10,0,10,
"s");
3806 TString s4pCorrelationsName =
"f4pCorrelations";
3808 f4pCorrelations =
new TProfile(s4pCorrelationsName.Data(),Form(
"4-particle correlations (n = %d)",
fHarmonic),45,0,45,
"s");
3867 TString s5pCorrelationsName =
"f5pCorrelations";
3869 f5pCorrelations =
new TProfile(s5pCorrelationsName.Data(),Form(
"5-particle correlations (n = %d)",
fHarmonic),87,0,87,
"s");
3970 TString s6pCorrelationsName =
"f6pCorrelations";
3972 f6pCorrelations =
new TProfile(s6pCorrelationsName.Data(),Form(
"6-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3981 TString s7pCorrelationsName =
"f7pCorrelations";
3983 f7pCorrelations =
new TProfile(s7pCorrelationsName.Data(),Form(
"7-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3992 TString s8pCorrelationsName =
"f8pCorrelations";
3994 f8pCorrelations =
new TProfile(s8pCorrelationsName.Data(),Form(
"8-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
4039 TString mixedHarmonicEventWeightsName =
"fMixedHarmonicEventWeights";
4041 TString powerFlag[2] = {
"linear",
"quadratic"};
4042 for(
Int_t power=0;power<2;power++)
4044 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.);
4058 }
else if (power == 1)
4073 TString mixedHarmonicProductOfEventWeightsName =
"fMixedHarmonicProductOfEventWeights";
4074 mixedHarmonicProductOfEventWeightsName +=
fAnalysisLabel->Data();