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();
919 Bool_t IsSplitMergedTracks = kFALSE;
923 if(IsSplitMergedTracks)
continue;
926 if(dCharge > 0.) dPt += 1.E-2;
930 cw = (dCharge > 0. ? 0 : 1);
937 if(
fMinMulZN==0 && dPhi>3.141593e-01 && dPhi<1.256637e+00) {
938 if(dEta>0.)
continue;
939 if(dEta<0.) wPhiEta *= 2.;
947 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
954 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
959 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
965 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
967 Int_t ptbebe = (dPt>1.? 2 : (dPt>0.5 ? 1 : 0));
971 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
977 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
982 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
988 if(dPhi>2.136283 && dPhi<2.324779)
continue;
995 for(
Int_t m=0;m<21;m++)
997 for(
Int_t k=0;k<9;k++)
999 (*fReQGF)(m,k) += pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos(m*dPhi);
1000 (*fImQGF)(m,k) += pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin(m*dPhi);
1006 if(ptb==0 && dPt>0.5)
continue;
1007 if(ptb==1 && (dPt<0.5 || dPt>1.))
continue;
1008 if(ptb==2 && (dPt<1. || dPt>2.))
continue;
1009 if(ptb==3 && dPt<2.)
continue;
1010 if(ptb==4 && (dPt<1. || dPt>2.5))
continue;
1011 if(ptb==5 && dPt<2.5)
continue;
1012 if(ptb==6 && (dPt<1. || dPt>3.))
continue;
1013 if(ptb==7 && dPt<3.)
continue;
1014 for(
Int_t m=0;m<21;m++)
1016 for(
Int_t k=0;k<9;k++)
1018 (*
fReQGFPt[ptb])(m,k) += pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos(m*dPhi);
1019 (*
fImQGFPt[ptb])(m,k) += pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin(m*dPhi);
1027 for(
Int_t k=0;k<9;k++)
1029 for(
Int_t m=0;m<4;m++)
1035 fReRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
1036 fImRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
1041 fReRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
1042 fImRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
1050 fCRCQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
1051 fCRCQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
1052 fCRCMult[cw][h]->Fill(dEta,wPhiEta);
1054 fCRC2QRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
1055 fCRC2QIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
1056 fCRC2Mul[cw][h]->Fill(dEta,pow(wPhiEta,h));
1058 fCRCZDCQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
1059 fCRCZDCQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
1063 fCRC2QRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
1064 fCRC2QIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
1065 fCRC2Mul[2][h]->Fill(dEta,pow(wPhiEta,h));
1069 fCRCZDCQRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
1070 fCRCZDCQIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
1073 fCRCZDCQRe[3][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
1074 fCRCZDCQIm[3][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
1082 if(weraw > 0.) SpecWeig = 1./weraw;
1084 fCMEQRe[cw][h]->Fill(dEta,SpecWeig*wPhiEta*TMath::Cos((h+1.)*dPhi));
1085 fCMEQIm[cw][h]->Fill(dEta,SpecWeig*wPhiEta*TMath::Sin((h+1.)*dPhi));
1086 fCMEMult[cw][h]->Fill(dEta,SpecWeig*wPhiEta);
1087 fCMEQRe[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.)*TMath::Cos((h+1.)*dPhi));
1088 fCMEQIm[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.)*TMath::Sin((h+1.)*dPhi));
1089 fCMEMult[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.));
1105 fPOIPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1106 fPOIPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1109 fPOIPtDiffQReCh[cw][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1110 fPOIPtDiffQImCh[cw][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1113 fPOIPhiDiffQRe[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1114 fPOIPhiDiffQIm[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1117 fPOIPhiEtaDiffQRe[k][h]->Fill(dPhi,dEta,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1118 fPOIPhiEtaDiffQIm[k][h]->Fill(dPhi,dEta,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1122 Int_t keta = (dEta<0.?0:1);
1123 fPOIPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1124 fPOIPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1126 fPOIPhiDiffQReEG[keta][k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1127 fPOIPhiDiffQImEG[keta][k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1131 }
else if(fFlowQCDeltaEta<0. && fFlowQCDeltaEta>-1.) {
1134 fPOIPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1135 fPOIPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1138 fPOIPhiDiffQRe[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1139 fPOIPhiDiffQIm[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1144 if((dEta>0. && dEta<0.4-boundetagap/2.) || (dEta>0.4+boundetagap/2. && dEta<0.8)) {
1146 if(dEta>0. && dEta<0.4-boundetagap/2.) keta = 0;
1148 fPOIPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1149 fPOIPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1157 }
else if(fFlowQCDeltaEta<-1. && fFlowQCDeltaEta>-2.) {
1160 fPOIPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1161 fPOIPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1164 fPOIPhiDiffQRe[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1165 fPOIPhiDiffQIm[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1170 if((dEta<0. && dEta>-0.4+boundetagap/2.) || (dEta<-0.4-boundetagap/2. && dEta>-0.8)) {
1172 if(dEta<0. && dEta>-0.4+boundetagap/2.) keta = 0;
1174 fPOIPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1175 fPOIPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1188 fEtaDiffQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
1189 fEtaDiffQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
1191 fPOIEtaPtQRe[cw][h]->Fill(dEta,dPt,wPhiEta*TMath::Cos((h+1.)*dPhi));
1192 fPOIEtaPtQIm[cw][h]->Fill(dEta,dPt,wPhiEta*TMath::Sin((h+1.)*dPhi));
1220 for (
Int_t h=0;h<6;h++) {
1243 printf(
"\n WARNING (QC): No particle (i.e. aftsTrack is a NULL pointer in AFAWQC::Make())!!!!\n\n");
1250 for(
Int_t p=0;p<8;p++)
1252 for(
Int_t k=0;k<9;k++)
1254 (*fSpk)(p,k)=pow((*
fSpk)(p,k),p+1);
1647 const Float_t kLimit1 = 0.02 * 3;
1652 Bool_t isNoSplit = kFALSE;
1655 if (it1 < nTracks - 1) {
1656 for (
Int_t itll2 = it1 + 1; itll2 < nTracks; itll2++) {
1670 Double_t dphi1 = TMath::ASin(TMath::Sin(phi1rad1-phi2rad1));
1671 Float_t dphistarminabs1 = 1e5;
1672 Bool_t IsNoSpliTrack = kFALSE;
1674 if (TMath::Abs(deta1) < 0.1 && aftsTrack->
Charge()==aftsTrack2->
Charge()) {
1680 if (TMath::Abs(dphistar11) < kLimit1 || TMath::Abs(dphistar21) < kLimit1 || dphistar11 * dphistar21 < 0 ) {
1682 for (
Double_t rad1 = 0.8; rad1 < 2.51; rad1 += 0.01) {
1684 Float_t dphistarabs1 = TMath::Abs(dphistar1);
1685 if (dphistarabs1 < dphistarminabs1) {
1686 dphistarminabs1 = dphistarabs1;
1690 if (dphistarminabs1 < 0.017 && TMath::Abs(deta1) < 0.012) {
1698 if (TMath::Abs(dphi1) < TMath::TwoPi()/100. && TMath::Abs(deta1) < 0.006) {
1700 IsNoSpliTrack = kTRUE;
1704 if(!IsNoSpliTrack)
fTwoTrackDistanceLS[1]->Fill(deta1, dphi1, 0.5*TMath::Abs(aftsTrack->
Pt()+aftsTrack2->
Pt()));
1707 IsNoSpliTrack = kFALSE;
1708 if (TMath::Abs(deta1) < 0.1 && aftsTrack->
Charge()!=aftsTrack2->
Charge()) {
1710 Double_t dphi1 = TMath::ASin(TMath::Sin(phi1rad1-phi2rad1));
1711 if (TMath::Abs(dphi1) < TMath::TwoPi()/100. && TMath::Abs(deta1) < 0.006) {
1712 IsNoSpliTrack = kTRUE;
1716 if(!IsNoSpliTrack)
fTwoTrackDistanceUS[1]->Fill(deta1, dphi1, 0.5*TMath::Abs(aftsTrack->
Pt()+aftsTrack2->
Pt()));
1765 cout<<
"Skipping the event because multiplicity is "<<nPrim<<
". Too high to evaluate nested loops!"<<endl;
1769 cout<<
"Skipping the event because multiplicity is "<<nPrim<<
"."<<endl;
1880 if(outputListHistos)
1885 printf(
"\n WARNING (QC): fHistList is NULL in AFAWQC::GOH() !!!!\n\n");
1913 printf(
"\n WARNING (QC): outputListHistos is NULL in AFAWQC::GOH() !!!!\n\n");
1925 Int_t nBinsPt = profilePtEta->GetNbinsX();
1926 Double_t dPtMin = (profilePtEta->GetXaxis())->GetXmin();
1927 Double_t dPtMax = (profilePtEta->GetXaxis())->GetXmax();
1929 Int_t nBinsEta = profilePtEta->GetNbinsY();
1931 TProfile *profilePt =
new TProfile(
"",
"",nBinsPt,dPtMin,dPtMax);
1933 for(
Int_t p=1;p<=nBinsPt;p++)
1941 for(
Int_t e=1;e<=nBinsEta;e++)
1943 contentPt += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
1944 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1945 entryPt += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1947 sum1 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
1948 * (pow(profilePtEta->GetBinError(profilePtEta->GetBin(p,e)),2.)
1949 + pow(profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)),2.));
1950 sum2 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1951 sum3 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
1952 * (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)));
1954 if(sum2>0. && sum1/sum2-pow(sum3/sum2,2.) > 0.)
1956 spreadPt = pow(sum1/sum2-pow(sum3/sum2,2.),0.5);
1958 profilePt->SetBinContent(p,contentPt);
1959 profilePt->SetBinEntries(p,entryPt);
1961 profilePt->SetBinError(p,spreadPt);
1978 Int_t nBinsEta = profilePtEta->GetNbinsY();
1979 Double_t dEtaMin = (profilePtEta->GetYaxis())->GetXmin();
1980 Double_t dEtaMax = (profilePtEta->GetYaxis())->GetXmax();
1982 Int_t nBinsPt = profilePtEta->GetNbinsX();
1984 TProfile *profileEta =
new TProfile(
"",
"",nBinsEta,dEtaMin,dEtaMax);
1986 for(
Int_t e=1;e<=nBinsEta;e++)
1990 for(
Int_t p=1;p<=nBinsPt;p++)
1992 contentEta += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
1993 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1994 entryEta += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1996 profileEta->SetBinContent(e,contentEta);
1997 profileEta->SetBinEntries(e,entryEta);
2017 for(
Int_t b=0;b<4;b++)
2028 }
else if(type ==
"RP")
2038 }
else if(type ==
"POI")
2050 for(
Int_t b=0;b<4;b++)
2059 TString subtitle2 =
" (rebinned in M)";
2061 if(type !=
"RF, rebinned in M")
2065 subtitle.Append(type);
2066 subtitle.Append(
", without weights)");
2069 subtitle.Append(type);
2070 subtitle.Append(
", with weights)");
2076 subtitle.Append(
"RF");
2077 subtitle.Append(
", without weights)");
2080 subtitle.Append(
"RF");
2081 subtitle.Append(
", with weights)");
2086 cout<<
"*************************************"<<endl;
2087 cout<<
"*************************************"<<endl;
2088 cout<<title.Data()<<endl;
2089 cout<<subtitle.Data()<<endl;
2090 if(type ==
"RF, rebinned in M"){cout<<subtitle2.Data()<<endl;}
2093 for(
Int_t i=0;i<4;i++)
2095 cout<<
" v_"<<n<<
"{"<<2*(i+1)<<
"} = "<<dVn[i]<<
" +/- "<<dVnErr[i]<<endl;
2103 cout<<
" detector bias (corrected for): "<<endl;
2106 cout<<
" detector bias (not corrected for):"<<endl;
2112 if(type ==
"RF" || type ==
"RF, rebinned in M")
2116 else if (type ==
"RP")
2120 else if (type ==
"POI")
2125 cout<<
"*************************************"<<endl;
2126 cout<<
"*************************************"<<endl;
2136 TFile *output =
new TFile(outputFileName.Data(),
"RECREATE");
2152 outputFileName->Write(outputFileName->GetName(), TObject::kSingleKey);
2165 TString commonHistsName =
"AliFlowCommonHistQC";
2173 TString commonHists2ndOrderName =
"AliFlowCommonHist2ndOrderQC";
2178 TString commonHists4thOrderName =
"AliFlowCommonHist4thOrderQC";
2183 TString commonHists6thOrderName =
"AliFlowCommonHist6thOrderQC";
2188 TString commonHists8thOrderName =
"AliFlowCommonHist8thOrderQC";
2196 TString commonHistResults2ndOrderName =
"AliFlowCommonHistResults2ndOrderQC";
2201 TString commonHistResults4thOrderName =
"AliFlowCommonHistResults4thOrderQC";
2206 TString commonHistResults6thOrderName =
"AliFlowCommonHistResults6thOrderQC";
2211 TString commonHistResults8thOrderName =
"AliFlowCommonHistResults8thOrderQC";
2226 printf(
"\n WARNING (QC): fWeightsList is NULL in AFAWQC::BAFWH() !!!! \n\n");
2230 Double_t ptbinsforweights[200001] = {0.};
2231 for (
Int_t phib=0; phib<200001; phib++) {
2232 ptbinsforweights[phib] = 0.2 + phib*(50.-0.2)/200000.;
2234 Double_t cenbinsforweights[] = {0.,5.,10.,20.,30.,40.,50.,60.,70.,80.,90.};
2236 fPtWeightsCent =
new TH2F(
"fPtWeightsCent",
"fPtWeightsCent",200000,ptbinsforweights,10,cenbinsforweights);
2413 TF1 *CenFit =
new TF1(
"CenFit",
"pol0", 0., 100.);
2416 Double_t CenAv = CenFit->GetParameter(0);
2428 Double_t CenAv = CenFit->GetParameter(0);
2430 Double_t SemiCenAv = CenFit->GetParameter(0);
2456 TString sinCosFlag[2] = {
"sin",
"cos"};
2457 TString powerFlag[2] = {
"linear",
"quadratic"};
2460 TString intFlowFlagsName =
"fIntFlowFlags";
2462 fIntFlowFlags =
new TProfile(intFlowFlagsName.Data(),
"Flags for Integrated Flow",20,0.,20.);
2468 fIntFlowFlags->GetXaxis()->SetBinLabel(1,
"Particle Weights");
2470 fIntFlowFlags->GetXaxis()->SetBinLabel(3,
"Corrected for NUA?");
2471 fIntFlowFlags->GetXaxis()->SetBinLabel(4,
"Print RF results");
2472 fIntFlowFlags->GetXaxis()->SetBinLabel(5,
"Print RP results");
2473 fIntFlowFlags->GetXaxis()->SetBinLabel(6,
"Print POI results");
2474 fIntFlowFlags->GetXaxis()->SetBinLabel(7,
"Print RF (rebinned in M) results");
2475 fIntFlowFlags->GetXaxis()->SetBinLabel(8,
"Corrected for NUA vs M?");
2476 fIntFlowFlags->GetXaxis()->SetBinLabel(9,
"Propagate errors to v_{n} from correlations?");
2477 fIntFlowFlags->GetXaxis()->SetBinLabel(10,
"Calculate cumulants vs M");
2478 fIntFlowFlags->GetXaxis()->SetBinLabel(11,
"fMinimumBiasReferenceFlow");
2479 fIntFlowFlags->GetXaxis()->SetBinLabel(12,
"fForgetAboutCovariances");
2481 fIntFlowFlags->GetXaxis()->SetBinLabel(14,
"fFillMultipleControlHistograms");
2482 fIntFlowFlags->GetXaxis()->SetBinLabel(15,
"Calculate all correlations vs M");
2483 fIntFlowFlags->GetXaxis()->SetBinLabel(16,
"fMultiplicityIs");
2485 fIntFlowFlags->GetXaxis()->SetBinLabel(18,
"fUse2DHistograms");
2486 fIntFlowFlags->GetXaxis()->SetBinLabel(19,
"fFillProfilesVsMUsingWeights");
2487 fIntFlowFlags->GetXaxis()->SetBinLabel(20,
"fUseQvectorTerms");
2492 fReQ =
new TMatrixD(12,9);
2493 fImQ =
new TMatrixD(12,9);
2494 fSpk =
new TMatrixD(8,9);
2495 fReQGF =
new TMatrixD(21,9);
2496 fImQGF =
new TMatrixD(21,9);
2502 TString intFlowCorrelationsEBEName =
"fIntFlowCorrelationsEBE";
2506 TString intFlowEventWeightsForCorrelationsEBEName =
"fIntFlowEventWeightsForCorrelationsEBE";
2507 intFlowEventWeightsForCorrelationsEBEName +=
fAnalysisLabel->Data();
2510 TString intFlowCorrelationsAllEBEName =
"fIntFlowCorrelationsAllEBE";
2515 TString fIntFlowCorrectionTermsForNUAEBEName =
"fIntFlowCorrectionTermsForNUAEBE";
2517 for(
Int_t sc=0;sc<2;sc++)
2519 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);
2522 TString fIntFlowEventWeightForCorrectionTermsForNUAEBEName =
"fIntFlowEventWeightForCorrectionTermsForNUAEBE";
2523 fIntFlowEventWeightForCorrectionTermsForNUAEBEName +=
fAnalysisLabel->Data();
2524 for(
Int_t sc=0;sc<2;sc++)
2530 TString avMultiplicityName =
"fAvMultiplicity";
2532 fAvMultiplicity =
new TProfile(avMultiplicityName.Data(),
"Average multiplicities of reference particles (RPs)",9,0,9);
2549 TString correlationFlag[4] = {
"#LT#LT2#GT#GT",
"#LT#LT4#GT#GT",
"#LT#LT6#GT#GT",
"#LT#LT8#GT#GT"};
2550 TString intFlowCorrelationsProName =
"fIntFlowCorrelationsPro";
2552 fIntFlowCorrelationsPro =
new TProfile(intFlowCorrelationsProName.Data(),
"Average correlations for all events",4,0,4,
"s");
2558 for(
Int_t b=0;b<4;b++)
2564 TString squaredCorrelationFlag[4] = {
"#LT#LT2#GT^{2}#GT",
"#LT#LT4#GT^{2}#GT",
"#LT#LT6#GT^{2}#GT",
"#LT#LT8#GT^{2}#GT"};
2565 TString intFlowSquaredCorrelationsProName =
"fIntFlowSquaredCorrelationsPro";
2573 for(
Int_t b=0;b<4;b++)
2580 for(
Int_t ci=0;ci<4;ci++)
2583 TString intFlowCorrelationsVsMProName =
"fIntFlowCorrelationsVsMPro";
2585 fIntFlowCorrelationsVsMPro[ci] =
new TProfile(Form(
"%s, %s",intFlowCorrelationsVsMProName.Data(),correlationFlag[ci].Data()),
2586 Form(
"%s vs multiplicity",correlationFlag[ci].
Data()),
2602 TString intFlowSquaredCorrelationsVsMProName =
"fIntFlowSquaredCorrelationsVsMPro";
2605 Form(
"%s vs multiplicity",squaredCorrelationFlag[ci].
Data()),
2623 TString intFlowCorrelationsAllProName =
"fIntFlowCorrelationsAllPro";
2625 fIntFlowCorrelationsAllPro =
new TProfile(intFlowCorrelationsAllProName.Data(),
"Average all correlations for all events",64,0,64);
2731 fIntFlowCorrelationsAllVsMPro[30] =
new TProfile(
"eight1n1n1n1n1n1n1n1n",
"#LT#LT8#GT#GT_{n,n,n,n|n,n,n,n}",
fnBinsMult,
fMinMult,
fMaxMult);
2765 for(
Int_t n=0;n<63;n++)
2787 TString intFlowExtraCorrelationsProName =
"fIntFlowExtraCorrelationsPro";
2789 fIntFlowExtraCorrelationsPro =
new TProfile(intFlowExtraCorrelationsProName.Data(),
"Average extra correlations for all events",100,0,100,
"s");
2800 TString productFlag[6] = {
"#LT#LT2#GT#LT4#GT#GT",
"#LT#LT2#GT#LT6#GT#GT",
"#LT#LT2#GT#LT8#GT#GT",
2801 "#LT#LT4#GT#LT6#GT#GT",
"#LT#LT4#GT#LT8#GT#GT",
"#LT#LT6#GT#LT8#GT#GT"};
2802 TString intFlowProductOfCorrelationsProName =
"fIntFlowProductOfCorrelationsPro";
2809 for(
Int_t b=0;b<6;b++)
2818 TString intFlowProductOfCorrelationsVsMProName =
"fIntFlowProductOfCorrelationsVsMPro";
2819 intFlowProductOfCorrelationsVsMProName +=
fAnalysisLabel->Data();
2823 Form(
"%s versus multiplicity",productFlag[
pi].
Data()),
2839 TString intFlowProductOfCorrectionTermsForNUAProName =
"fIntFlowProductOfCorrectionTermsForNUAPro";
2840 intFlowProductOfCorrectionTermsForNUAProName +=
fAnalysisLabel->Data();
2875 for(
Int_t sc=0;sc<2;sc++)
2877 TString intFlowCorrectionTermsForNUAProName =
"fIntFlowCorrectionTermsForNUAPro";
2879 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");
2892 TString correctionTermFlag[4] = {
"(n(phi1))",
"(n(phi1+phi2))",
"(n(phi1-phi2-phi3))",
"(n(2phi1-phi2))"};
2893 for(
Int_t ci=0;ci<4;ci++)
2895 TString intFlowCorrectionTermsForNUAVsMProName =
"fIntFlowCorrectionTermsForNUAVsMPro";
2896 intFlowCorrectionTermsForNUAVsMProName +=
fAnalysisLabel->Data();
2897 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");
2905 TString intFlowCorrelationsHistName =
"fIntFlowCorrelationsHist";
2920 for(
Int_t ci=0;ci<4;ci++)
2922 TString intFlowCorrelationsVsMHistName =
"fIntFlowCorrelationsVsMHist";
2925 Form(
"%s vs multiplicity",correlationFlag[ci].
Data()),
2942 TString intFlowCorrelationsAllHistName =
"fIntFlowCorrelationsAllHist";
2983 for(
Int_t sc=0;sc<2;sc++)
2985 TString intFlowCorrectionTermsForNUAHistName =
"fIntFlowCorrectionTermsForNUAHist";
2987 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);
2999 TString intFlowCovariancesName =
"fIntFlowCovariances";
3001 fIntFlowCovariances =
new TH1D(intFlowCovariancesName.Data(),
"Covariances (multiplied with weight dependent prefactor)",6,0,6);
3012 TString intFlowSumOfEventWeightsName =
"fIntFlowSumOfEventWeights";
3014 for(
Int_t power=0;power<2;power++)
3016 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);
3025 }
else if (power == 1)
3035 TString intFlowSumOfProductOfEventWeightsName =
"fIntFlowSumOfProductOfEventWeights";
3051 TString intFlowCovariancesVsMName =
"fIntFlowCovariancesVsM";
3053 TString covarianceFlag[6] = {
"Cov(<2>,<4>)",
"Cov(<2>,<6>)",
"Cov(<2>,<8>)",
"Cov(<4>,<6>)",
"Cov(<4>,<8>)",
"Cov(<6>,<8>)"};
3054 for(
Int_t ci=0;ci<6;ci++)
3057 Form(
"%s vs multiplicity",covarianceFlag[ci].
Data()),
3077 TString intFlowSumOfEventWeightsVsMName =
"fIntFlowSumOfEventWeightsVsM";
3079 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>}"},
3080 {
"#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}"}};
3081 for(
Int_t si=0;si<4;si++)
3083 for(
Int_t power=0;power<2;power++)
3086 Form(
"%s vs multiplicity",sumFlag[power][si].
Data()),
3108 TString intFlowSumOfProductOfEventWeightsVsMName =
"fIntFlowSumOfProductOfEventWeightsVsM";
3109 intFlowSumOfProductOfEventWeightsVsMName +=
fAnalysisLabel->Data();
3110 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>}",
3111 "#sum_{i=1}^{N} w_{<4>} w_{<6>}",
"#sum_{i=1}^{N} w_{<4>} w_{<8>}",
"#sum_{i=1}^{N} w_{<6>} w_{<8>}"};
3115 Form(
"%s versus multiplicity",sopowFlag[
pi].
Data()),
3132 TString intFlowCovariancesNUAName =
"fIntFlowCovariancesNUA";
3134 fIntFlowCovariancesNUA =
new TH1D(intFlowCovariancesNUAName.Data(),
"Covariances for NUA (multiplied with weight dependent prefactor)",27,0,27);
3153 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(16,
"Cov(<cos(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3154 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(17,
"Cov(<cos(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3157 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(20,
"Cov(<sin(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3158 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(21,
"Cov(<sin(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3159 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(22,
"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}+#phi_{2})>)");
3160 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(23,
"Cov(<cos(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3161 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(24,
"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3162 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(25,
"Cov(<sin(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3163 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(26,
"Cov(<sin(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3164 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(27,
"Cov(<cos(#phi_{1}-#phi_{2}-#phi_{3}>,<sin(#phi_{1}-#phi_{2}-#phi_{3}>)");
3167 TString intFlowSumOfEventWeightsNUAName =
"fIntFlowSumOfEventWeightsNUA";
3169 for(
Int_t sc=0;sc<2;sc++)
3171 for(
Int_t power=0;power<2;power++)
3173 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);
3182 }
else if(power == 1)
3186 (
fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(3,Form(
"#sum_{i=1}^{N} w_{<%s(#phi_{1}-#phi_{2}-#phi_{3})>}^{2}",sinCosFlag[sc].
Data()));
3193 TString intFlowSumOfProductOfEventWeightsNUAName =
"fIntFlowSumOfProductOfEventWeightsNUA";
3194 intFlowSumOfProductOfEventWeightsNUAName +=
fAnalysisLabel->Data();
3227 TString cumulantFlag[4] = {
"QC{2}",
"QC{4}",
"QC{6}",
"QC{8}"};
3228 TString intFlowQcumulantsName =
"fIntFlowQcumulants";
3233 fIntFlowQcumulants->SetTitle(
"Reference Q-cumulants (error from non-isotropic terms also propagated)");
3237 for(
Int_t b=0;b<4;b++)
3245 TString intFlowQcumulantsRebinnedInMName =
"fIntFlowQcumulantsRebinnedInM";
3250 for(
Int_t b=0;b<4;b++)
3257 TString intFlowQcumulantsErrorSquaredRatioName =
"fIntFlowQcumulantsErrorSquaredRatio";
3258 intFlowQcumulantsErrorSquaredRatioName +=
fAnalysisLabel->Data();
3262 for(
Int_t b=0;b<4;b++)
3270 TString intFlowQcumulantsVsMName =
"fIntFlowQcumulantsVsM";
3272 for(
Int_t co=0;co<4;co++)
3275 Form(
"%s vs multiplicity",cumulantFlag[co].
Data()),
3292 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)};
3293 TString intFlowName =
"fIntFlow";
3296 fIntFlow =
new TH1D(intFlowName.Data(),
"Reference flow estimates from Q-cumulants",4,0,4);
3299 for(
Int_t b=0;b<4;b++)
3301 (
fIntFlow->GetXaxis())->SetBinLabel(b+1,flowFlag[b].
Data());
3307 TString intFlowRebinnedInMName =
"fIntFlowRebinnedInM";
3309 fIntFlowRebinnedInM =
new TH1D(intFlowRebinnedInMName.Data(),
"Reference flow estimates from Q-cumulants (rebinned in M)",4,0,4);
3312 for(
Int_t b=0;b<4;b++)
3321 TString intFlowVsMName =
"fIntFlowVsM";
3323 for(
Int_t co=0;co<4;co++)
3325 fIntFlowVsM[co] =
new TH1D(Form(
"%s, %s",intFlowVsMName.Data(),flowFlag[co].Data()),
3326 Form(
"%s vs multiplicity",flowFlag[co].
Data()),
3333 fIntFlowVsM[co]->GetXaxis()->SetTitle(
"Reference multiplicity (from ESD)");
3343 TString intFlowDetectorBiasName =
"fIntFlowDetectorBias";
3348 for(
Int_t ci=0;ci<4;ci++)
3350 (
fIntFlowDetectorBias->GetXaxis())->SetBinLabel(ci+1,Form(
"#frac{corrected}{measured} %s",cumulantFlag[ci].
Data()));
3356 TString intFlowDetectorBiasVsMName =
"fIntFlowDetectorBiasVsM";
3358 for(
Int_t ci=0;ci<4;ci++)
3361 Form(
"Quantifying detector bias for %s vs multiplicity",cumulantFlag[ci].
Data()),
3390 TString controlHistogramsFlagsName =
"fControlHistogramsFlags";
3392 fControlHistogramsFlags =
new TProfile(controlHistogramsFlagsName.Data(),
"Flags for Control Histograms",2,0,2);
3406 TString sCorrelationNoRPsVsRefMultName =
"fCorrelationNoRPsVsRefMult";
3417 TString sCorrelationNoPOIsVsRefMultName =
"fCorrelationNoPOIsVsRefMult";
3428 TString sCorrelationNoRPsVsNoPOIsName =
"fCorrelationNoRPsVsNoPOIs";
3439 TString sCorrelation[4] = {
"#LT2#GT",
"#LT4#GT",
"#LT6#GT",
"#LT8#GT"};
3443 sMultiplicity =
"# RPs";
3446 sMultiplicity =
"Reference multiplicity (from ESD)";
3449 sMultiplicity =
"# POIs";
3451 for(
Int_t ci=0;ci<4;ci++)
3463 TString sCorrelationProduct[1] = {
"#LT2#GT#LT4#GT"};
3464 for(
Int_t cpi=0;cpi<1;cpi++)
3478 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}}"};
3479 for(
Int_t qvti=0;qvti<4;qvti++)
3506 TString bootstrapFlagsName =
"fBootstrapFlags";
3508 fBootstrapFlags =
new TProfile(bootstrapFlagsName.Data(),
"Flags for bootstrap",3,0,3);
3520 TString correlationFlag[4] = {
"#LT#LT2#GT#GT",
"#LT#LT4#GT#GT",
"#LT#LT6#GT#GT",
"#LT#LT8#GT#GT"};
3521 TString cumulantFlag[4] = {
"QC{2}",
"QC{4}",
"QC{6}",
"QC{8}"};
3525 TString bootstrapCorrelationsName =
"fBootstrapCorrelations";
3529 for(
Int_t ci=0;ci<4;ci++)
3539 TString bootstrapCumulantsName =
"fBootstrapCumulants";
3543 for(
Int_t co=0;co<4;co++)
3558 sMultiplicity =
"# RPs";
3561 sMultiplicity =
"Reference multiplicity (from ESD)";
3564 sMultiplicity =
"# POIs";
3569 TString bootstrapCorrelationsVsMName =
"fBootstrapCorrelationsVsM";
3571 for(
Int_t ci=0;ci<4;ci++)
3573 fBootstrapCorrelationsVsM[ci] =
new TProfile2D(Form(
"%s, %s",bootstrapCorrelationsVsMName.Data(),correlationFlag[ci].Data()),
3574 Form(
"Bootstrap Correlations Vs. M, %s",correlationFlag[ci].
Data()),
3585 TString bootstrapCumulantsVsMName =
"fBootstrapCumulantsVsM";
3587 for(
Int_t co=0;co<4;co++)
3590 Form(
"Bootstrap Cumulants Vs. M, %s",cumulantFlag[co].
Data()),
3616 TString mixedHarmonicsFlagsName =
"fMixedHarmonicsFlags";
3618 fMixedHarmonicsFlags =
new TProfile(mixedHarmonicsFlagsName.Data(),
"Flags for Mixed Harmonics",4,0,4);
3634 TString s2pCorrelationsName =
"f2pCorrelations";
3636 f2pCorrelations =
new TProfile(s2pCorrelationsName.Data(),Form(
"2-particle correlations (n = %d)",
fHarmonic),6,0,6,
"s");
3651 TString s3pCorrelationsName =
"f3pCorrelations";
3653 f3pCorrelations =
new TProfile(s3pCorrelationsName.Data(),Form(
"3-particle correlations (n = %d)",
fHarmonic),10,0,10,
"s");
3674 TString s4pCorrelationsName =
"f4pCorrelations";
3676 f4pCorrelations =
new TProfile(s4pCorrelationsName.Data(),Form(
"4-particle correlations (n = %d)",
fHarmonic),45,0,45,
"s");
3735 TString s5pCorrelationsName =
"f5pCorrelations";
3737 f5pCorrelations =
new TProfile(s5pCorrelationsName.Data(),Form(
"5-particle correlations (n = %d)",
fHarmonic),87,0,87,
"s");
3838 TString s6pCorrelationsName =
"f6pCorrelations";
3840 f6pCorrelations =
new TProfile(s6pCorrelationsName.Data(),Form(
"6-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3849 TString s7pCorrelationsName =
"f7pCorrelations";
3851 f7pCorrelations =
new TProfile(s7pCorrelationsName.Data(),Form(
"7-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3860 TString s8pCorrelationsName =
"f8pCorrelations";
3862 f8pCorrelations =
new TProfile(s8pCorrelationsName.Data(),Form(
"8-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3907 TString mixedHarmonicEventWeightsName =
"fMixedHarmonicEventWeights";
3909 TString powerFlag[2] = {
"linear",
"quadratic"};
3910 for(
Int_t power=0;power<2;power++)
3912 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.);
3926 }
else if (power == 1)
3941 TString mixedHarmonicProductOfEventWeightsName =
"fMixedHarmonicProductOfEventWeights";
3942 mixedHarmonicProductOfEventWeightsName +=
fAnalysisLabel->Data();
3947 for(
Int_t b=1;b<=8;b++)
3955 TString mixedHarmonicProductOfCorrelationsName =
"fMixedHarmonicProductOfCorrelations";
3956 mixedHarmonicProductOfCorrelationsName +=
fAnalysisLabel->Data();