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 fCutMultiplicityOutliers(kFALSE),
123 fUseParticleWeights(NULL),
125 fMultiplicityWeight(NULL),
129 fIntFlowProfiles(NULL),
130 fIntFlowResults(NULL),
131 fIntFlowAllCorrelationsVsM(NULL),
133 fApplyCorrectionForNUA(kFALSE),
134 fApplyCorrectionForNUAVsM(kFALSE),
138 fPropagateErrorAlsoFromNIT(kFALSE),
139 fCalculateCumulantsVsM(kFALSE),
140 fCalculateAllCorrelationsVsM(kFALSE),
141 fMinimumBiasReferenceFlow(kTRUE),
142 fForgetAboutCovariances(kFALSE),
143 fStoreVarious(kFALSE),
145 fUse2DHistograms(kFALSE),
146 fFillProfilesVsMUsingWeights(kTRUE),
147 fUseQvectorTerms(kFALSE),
153 fIntFlowCorrelationsEBE(NULL),
154 fIntFlowEventWeightsForCorrelationsEBE(NULL),
155 fIntFlowCorrelationsAllEBE(NULL),
157 fNumberOfPOIsEBE(0.),
158 fReferenceMultiplicityEBE(0.),
159 fReferenceMultiplicityRecEBE(0.),
161 fNewCentralityEBE(0.),
167 fCentralityCL1EBE(0.),
169 fCentralityTRKEBE(0.),
177 fAvMultiplicity(NULL),
178 fIntFlowCorrelationsPro(NULL),
179 fIntFlowSquaredCorrelationsPro(NULL),
180 fIntFlowCorrelationsAllPro(NULL),
181 fIntFlowExtraCorrelationsPro(NULL),
182 fIntFlowProductOfCorrelationsPro(NULL),
183 fIntFlowProductOfCorrectionTermsForNUAPro(NULL),
184 fIntFlowCorrelationsHist(NULL),
185 fIntFlowCorrelationsAllHist(NULL),
186 fIntFlowCovariances(NULL),
187 fIntFlowSumOfProductOfEventWeights(NULL),
188 fIntFlowCovariancesNUA(NULL),
189 fIntFlowSumOfProductOfEventWeightsNUA(NULL),
190 fIntFlowQcumulants(NULL),
191 fIntFlowQcumulantsRebinnedInM(NULL),
192 fIntFlowQcumulantsErrorSquaredRatio(NULL),
194 fIntFlowRebinnedInM(NULL),
195 fIntFlowDetectorBias(NULL),
198 fDiffFlowProfiles(NULL),
199 fDiffFlowResults(NULL),
201 fDiffFlowFlags(NULL),
202 fCalculateDiffFlow(kTRUE),
203 fCalculate2DDiffFlow(kFALSE),
204 fCalculateDiffFlowVsEta(kTRUE),
206 fOtherDiffCorrelatorsList(NULL),
208 fDistributionsList(NULL),
209 fDistributionsFlags(NULL),
210 fStoreDistributions(kFALSE),
211 fnBinsForCorrelations(10000),
213 fNestedLoopsList(NULL),
214 fEvaluateIntFlowNestedLoops(kFALSE),
215 fEvaluateDiffFlowNestedLoops(kFALSE),
216 fMaxAllowedMultiplicity(10),
217 fEvaluateNestedLoops(NULL),
218 fIntFlowDirectCorrelations(NULL),
219 fIntFlowExtraDirectCorrelations(NULL),
220 fCrossCheckInPtBinNo(10),
221 fCrossCheckInEtaBinNo(20),
222 fNoOfParticlesInBin(NULL),
223 fMixedHarmonicsNestedLoops(NULL),
225 fMixedHarmonicsList(NULL),
226 fMixedHarmonicsProfiles(NULL),
227 fMixedHarmonicsResults(NULL),
228 fMixedHarmonicsErrorPropagation(NULL),
229 fMixedHarmonicsFlags(NULL),
230 fCalculateMixedHarmonics(kFALSE),
231 fCalculateMixedHarmonicsVsM(kFALSE),
232 f2pCorrelations(NULL),
233 f3pCorrelations(NULL),
234 f4pCorrelations(NULL),
235 f5pCorrelations(NULL),
236 f6pCorrelations(NULL),
237 f7pCorrelations(NULL),
238 f8pCorrelations(NULL),
246 fMixedHarmonicProductOfEventWeights(NULL),
247 fMixedHarmonicProductOfCorrelations(NULL),
249 fControlHistogramsList(NULL),
250 fControlHistogramsFlags(NULL),
251 fStoreControlHistograms(kFALSE),
252 fCorrelationNoRPsVsRefMult(NULL),
253 fCorrelationNoPOIsVsRefMult(NULL),
254 fCorrelationNoRPsVsNoPOIs(NULL),
256 fBootstrapList(NULL),
257 fBootstrapProfilesList(NULL),
258 fBootstrapResultsList(NULL),
259 fBootstrapFlags(NULL),
260 fUseBootstrap(kFALSE),
261 fUseBootstrapVsM(kFALSE),
264 fBootstrapCorrelations(NULL),
265 fBootstrapCumulants(NULL),
270 fCalculateCRC(kTRUE),
271 fCalculateCRCPt(kFALSE),
272 fCalculateCME(kFALSE),
273 fCalculateCRCInt(kFALSE),
274 fCalculateCRC2(kFALSE),
275 fCalculateCRCVZ(kFALSE),
276 fCalculateCRCZDC(kFALSE),
277 fCalculateFlowQC(kFALSE),
278 fCalculateFlowZDC(kFALSE),
279 fCalculateFlowVZ(kFALSE),
280 fCalculateEbEFlow(kFALSE),
281 fStoreZDCQVecVtxPos(kFALSE),
282 fUsePhiEtaCuts(kFALSE),
285 fRecenterZDC(kFALSE),
287 fUseCRCRecenter(kFALSE),
298 fCorrWeightTPC(kUnit),
299 fCorrWeightVZ(kUnit),
300 fCorrWeightZDC(kUnit),
303 fCRCCenBinWidth(CenWidth),
304 fCRCIntRbRList(NULL),
307 fInteractionRate(kAll),
308 fSelectCharge(kAllCh),
309 fPOIExtraWeights(kNone),
311 fCRCQVecListTPC(NULL),
312 fCRCQVecWeightsList(NULL),
313 fCRCZDCCalibList(NULL),
314 fCRCZDC2DCutList(NULL),
315 fCRCVZEROCalibList(NULL),
316 fCRCZDCResList(NULL),
320 fCRCZDCRbRList(NULL),
327 fFlowSPZDCList(NULL),
329 fFlowQCCorrZDCList(NULL),
333 fFlowQCDeltaEta(0.4),
339 fQAZDCCutsFlag(kTRUE),
340 fUseTracklets(kFALSE),
343 fZDCGainAlpha(0.395),
344 fbFlagIsPosMagField(kFALSE),
345 fbFlagIsBadRunForC34(kFALSE),
346 fStoreExtraHistoForSubSampling(kFALSE)
351 fHistList =
new TList();
352 fHistList->SetName(
"cobjQC");
353 fHistList->SetOwner(kTRUE);
356 fTempList =
new TList();
357 fTempList->SetName(
"temp");
358 fTempList->SetOwner(kTRUE);
361 fMultiplicityWeight =
new TString(
"combinations");
364 fAnalysisLabel =
new TString();
367 this->InitializeArraysForIntFlow();
368 this->InitializeArraysForDiffFlow();
369 this->InitializeArraysForDistributions();
370 this->InitializeArraysForVarious();
371 this->InitializeArraysForNestedLoops();
372 this->InitializeArraysForMixedHarmonics();
373 this->InitializeArraysForControlHistograms();
374 this->InitializeArraysForBootstrap();
383 this->InitializeCostantsForCRC();
384 this->InitializeArraysForParticleWeights();
385 this->InitializeArraysForCRC();
386 this->InitializeArraysForCRCVZ();
387 this->InitializeArraysForCRCZDC();
388 this->InitializeArraysForCRC2();
389 this->InitializeArraysForQVec();
390 this->InitializeArraysForCRCPt();
391 this->InitializeArraysForCME();
392 this->InitializeArraysForFlowEbE();
393 this->InitializeArraysForFlowQC();
394 this->InitializeArraysForFlowGF();
395 this->InitializeArraysForFlowSPZDC();
396 this->InitializeArraysForFlowSPVZ();
397 this->InitializeArraysForEbEFlow();
401 for(
Int_t i=0; i<fkGFPtB; i++) {
447 Bool_t oldHistAddStatus = TH1::AddDirectoryStatus();
448 TH1::AddDirectory(kFALSE);
505 TH1::AddDirectory(oldHistAddStatus);
545 Int_t nCounterNoRPs = 0;
602 if(fRunBin<0 || fRunBin>=
fCRCnRun) {
return;}
604 if(fCenBin<0 || fCenBin>=
fCRCnCen) {
return;}
617 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};
618 for (
Int_t i=0; i<40; i++) {
622 Int_t BadRunList[] = {245705, 246042, 246049, 246087, 246151, 246181, 246217, 246222, 246272, 246275};
623 for (
Int_t i=0; i<10; i++) {
691 Bool_t bPassZDCcuts = kTRUE;
692 if( ZCM<=0. || ZAM<=0. || sqrt(ZCRe*ZCRe+ZCIm*ZCIm)<1.E-6 || sqrt(ZARe*ZARe+ZAIm*ZAIm)<1.E-6 ) bPassZDCcuts=kFALSE;
722 AliWarning(
"WARNING: POIExtraWeights (kEtaPhiRbR) not found ! \n");
726 for (
Int_t i=0; i<2; i++) {
730 AliWarning(
"WARNING: POIExtraWeights (kEtaPhiChRbR) not found ! \n");
739 AliWarning(
"WARNING: POIExtraWeights (kEtaPhiVtxRbR) not found ! \n");
747 for(
Int_t i=0;i<nPrim;i++) {
758 dPhi = aftsTrack->
Phi();
759 dPt = aftsTrack->
Pt();
760 dEta = aftsTrack->
Eta();
761 dCharge = aftsTrack->
Charge();
766 cw = (dCharge > 0. ? 0 : 1);
778 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
785 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
790 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
796 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
798 Int_t ptbebe = (dPt>1.? 2 : (dPt>0.5 ? 1 : 0));
802 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
808 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
813 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
821 for(
Int_t m=0;m<12;m++)
823 for(
Int_t k=0;k<9;k++)
825 (*fReQ)(m,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1)*n*dPhi);
826 (*fImQ)(m,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1)*n*dPhi);
830 for(
Int_t p=0;p<8;p++)
832 for(
Int_t k=0;k<9;k++)
834 (*fSpk)(p,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k);
843 for(
Int_t k=0;k<9;k++)
845 for(
Int_t m=0;m<4;m++)
851 fReRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
852 fImRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
855 fs1dEBE[0][pe][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
861 fReRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
862 fImRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
865 fs2dEBE[0][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
874 for(
Int_t k=0;k<9;k++)
876 for(
Int_t m=0;m<4;m++)
882 fReRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
883 fImRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
886 fs1dEBE[2][pe][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
892 fReRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
893 fImRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
896 fs2dEBE[2][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
913 dPhi = aftsTrack->
Phi();
914 dPt = aftsTrack->
Pt();
915 dEta = aftsTrack->
Eta();
916 dCharge = aftsTrack->
Charge();
922 Bool_t IsSplitMergedTracks = kFALSE;
926 if(IsSplitMergedTracks)
continue;
929 if(dCharge > 0.) dPt += 1.E-2;
933 cw = (dCharge > 0. ? 0 : 1);
940 if(
fMinMulZN==0 && dPhi>3.141593e-01 && dPhi<1.256637e+00) {
941 if(dEta>0.)
continue;
942 if(dEta<0.) wPhiEta *= 2.;
950 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
957 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
962 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
968 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
970 Int_t ptbebe = (dPt>1.? 2 : (dPt>0.5 ? 1 : 0));
974 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
980 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
985 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
991 if(dPhi>2.136283 && dPhi<2.324779)
continue;
998 for(
Int_t m=0;m<21;m++)
1000 for(
Int_t k=0;k<9;k++)
1002 (*fReQGF)(m,k) += pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos(m*dPhi);
1003 (*fImQGF)(m,k) += pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin(m*dPhi);
1009 if(ptb==0 && dPt>0.5)
continue;
1010 if(ptb==1 && (dPt<0.5 || dPt>1.))
continue;
1011 if(ptb==2 && (dPt<1. || dPt>2.))
continue;
1012 if(ptb==3 && dPt<2.)
continue;
1013 if(ptb==4 && (dPt<1. || dPt>2.5))
continue;
1014 if(ptb==5 && dPt<2.5)
continue;
1015 if(ptb==6 && (dPt<1. || dPt>3.))
continue;
1016 if(ptb==7 && dPt<3.)
continue;
1017 for(
Int_t m=0;m<21;m++)
1019 for(
Int_t k=0;k<9;k++)
1021 (*
fReQGFPt[ptb])(m,k) += pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos(m*dPhi);
1022 (*
fImQGFPt[ptb])(m,k) += pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin(m*dPhi);
1030 for(
Int_t k=0;k<9;k++)
1032 for(
Int_t m=0;m<4;m++)
1038 fReRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
1039 fImRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
1044 fReRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
1045 fImRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
1053 fCRCQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
1054 fCRCQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
1055 fCRCMult[cw][h]->Fill(dEta,wPhiEta);
1057 fCRC2QRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
1058 fCRC2QIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
1059 fCRC2Mul[cw][h]->Fill(dEta,pow(wPhiEta,h));
1061 fCRCZDCQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
1062 fCRCZDCQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
1066 fCRC2QRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
1067 fCRC2QIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
1068 fCRC2Mul[2][h]->Fill(dEta,pow(wPhiEta,h));
1072 fCRCZDCQRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
1073 fCRCZDCQIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
1076 fCRCZDCQRe[3][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
1077 fCRCZDCQIm[3][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
1085 if(weraw > 0.) SpecWeig = 1./weraw;
1087 fCMEQRe[cw][h]->Fill(dEta,SpecWeig*wPhiEta*TMath::Cos((h+1.)*dPhi));
1088 fCMEQIm[cw][h]->Fill(dEta,SpecWeig*wPhiEta*TMath::Sin((h+1.)*dPhi));
1089 fCMEMult[cw][h]->Fill(dEta,SpecWeig*wPhiEta);
1090 fCMEQRe[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.)*TMath::Cos((h+1.)*dPhi));
1091 fCMEQIm[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.)*TMath::Sin((h+1.)*dPhi));
1092 fCMEMult[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.));
1108 fPOIPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1109 fPOIPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1112 fPOIPtDiffQReCh[cw][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1113 fPOIPtDiffQImCh[cw][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1116 fPOIPhiDiffQRe[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1117 fPOIPhiDiffQIm[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1120 fPOIPhiEtaDiffQRe[k][h]->Fill(dPhi,dEta,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1121 fPOIPhiEtaDiffQIm[k][h]->Fill(dPhi,dEta,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1125 Int_t keta = (dEta<0.?0:1);
1126 fPOIPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1127 fPOIPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1129 fPOIPhiDiffQReEG[keta][k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1130 fPOIPhiDiffQImEG[keta][k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1134 }
else if(fFlowQCDeltaEta<0. && fFlowQCDeltaEta>-1.) {
1137 fPOIPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1138 fPOIPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1141 fPOIPhiDiffQRe[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1142 fPOIPhiDiffQIm[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1147 if((dEta>0. && dEta<0.4-boundetagap/2.) || (dEta>0.4+boundetagap/2. && dEta<0.8)) {
1149 if(dEta>0. && dEta<0.4-boundetagap/2.) keta = 0;
1151 fPOIPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1152 fPOIPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1160 }
else if(fFlowQCDeltaEta<-1. && fFlowQCDeltaEta>-2.) {
1163 fPOIPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1164 fPOIPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1167 fPOIPhiDiffQRe[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1168 fPOIPhiDiffQIm[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1173 if((dEta<0. && dEta>-0.4+boundetagap/2.) || (dEta<-0.4-boundetagap/2. && dEta>-0.8)) {
1175 if(dEta<0. && dEta>-0.4+boundetagap/2.) keta = 0;
1177 fPOIPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1178 fPOIPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1191 fEtaDiffQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
1192 fEtaDiffQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
1194 fPOIEtaPtQRe[cw][h]->Fill(dEta,dPt,wPhiEta*TMath::Cos((h+1.)*dPhi));
1195 fPOIEtaPtQIm[cw][h]->Fill(dEta,dPt,wPhiEta*TMath::Sin((h+1.)*dPhi));
1223 for (
Int_t h=0;h<6;h++) {
1246 printf(
"\n WARNING (QC): No particle (i.e. aftsTrack is a NULL pointer in AFAWQC::Make())!!!!\n\n");
1253 for(
Int_t p=0;p<8;p++)
1255 for(
Int_t k=0;k<9;k++)
1257 (*fSpk)(p,k)=pow((*
fSpk)(p,k),p+1);
1650 const Float_t kLimit1 = 0.02 * 3;
1655 Bool_t isNoSplit = kFALSE;
1658 if (it1 < nTracks - 1) {
1659 for (
Int_t itll2 = it1 + 1; itll2 < nTracks; itll2++) {
1673 Double_t dphi1 = TMath::ASin(TMath::Sin(phi1rad1-phi2rad1));
1674 Float_t dphistarminabs1 = 1e5;
1675 Bool_t IsNoSpliTrack = kFALSE;
1677 if (TMath::Abs(deta1) < 0.1 && aftsTrack->
Charge()==aftsTrack2->
Charge()) {
1683 if (TMath::Abs(dphistar11) < kLimit1 || TMath::Abs(dphistar21) < kLimit1 || dphistar11 * dphistar21 < 0 ) {
1685 for (
Double_t rad1 = 0.8; rad1 < 2.51; rad1 += 0.01) {
1687 Float_t dphistarabs1 = TMath::Abs(dphistar1);
1688 if (dphistarabs1 < dphistarminabs1) {
1689 dphistarminabs1 = dphistarabs1;
1693 if (dphistarminabs1 < 0.017 && TMath::Abs(deta1) < 0.012) {
1701 if (TMath::Abs(dphi1) < TMath::TwoPi()/100. && TMath::Abs(deta1) < 0.006) {
1703 IsNoSpliTrack = kTRUE;
1707 if(!IsNoSpliTrack)
fTwoTrackDistanceLS[1]->Fill(deta1, dphi1, 0.5*TMath::Abs(aftsTrack->
Pt()+aftsTrack2->
Pt()));
1710 IsNoSpliTrack = kFALSE;
1711 if (TMath::Abs(deta1) < 0.1 && aftsTrack->
Charge()!=aftsTrack2->
Charge()) {
1713 Double_t dphi1 = TMath::ASin(TMath::Sin(phi1rad1-phi2rad1));
1714 if (TMath::Abs(dphi1) < TMath::TwoPi()/100. && TMath::Abs(deta1) < 0.006) {
1715 IsNoSpliTrack = kTRUE;
1719 if(!IsNoSpliTrack)
fTwoTrackDistanceUS[1]->Fill(deta1, dphi1, 0.5*TMath::Abs(aftsTrack->
Pt()+aftsTrack2->
Pt()));
1768 cout<<
"Skipping the event because multiplicity is "<<nPrim<<
". Too high to evaluate nested loops!"<<endl;
1772 cout<<
"Skipping the event because multiplicity is "<<nPrim<<
"."<<endl;
1883 if(outputListHistos)
1888 printf(
"\n WARNING (QC): fHistList is NULL in AFAWQC::GOH() !!!!\n\n");
1916 printf(
"\n WARNING (QC): outputListHistos is NULL in AFAWQC::GOH() !!!!\n\n");
1928 Int_t nBinsPt = profilePtEta->GetNbinsX();
1929 Double_t dPtMin = (profilePtEta->GetXaxis())->GetXmin();
1930 Double_t dPtMax = (profilePtEta->GetXaxis())->GetXmax();
1932 Int_t nBinsEta = profilePtEta->GetNbinsY();
1934 TProfile *profilePt =
new TProfile(
"",
"",nBinsPt,dPtMin,dPtMax);
1936 for(
Int_t p=1;p<=nBinsPt;p++)
1944 for(
Int_t e=1;e<=nBinsEta;e++)
1946 contentPt += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
1947 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1948 entryPt += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1950 sum1 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
1951 * (pow(profilePtEta->GetBinError(profilePtEta->GetBin(p,e)),2.)
1952 + pow(profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)),2.));
1953 sum2 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1954 sum3 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
1955 * (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)));
1957 if(sum2>0. && sum1/sum2-pow(sum3/sum2,2.) > 0.)
1959 spreadPt = pow(sum1/sum2-pow(sum3/sum2,2.),0.5);
1961 profilePt->SetBinContent(p,contentPt);
1962 profilePt->SetBinEntries(p,entryPt);
1964 profilePt->SetBinError(p,spreadPt);
1981 Int_t nBinsEta = profilePtEta->GetNbinsY();
1982 Double_t dEtaMin = (profilePtEta->GetYaxis())->GetXmin();
1983 Double_t dEtaMax = (profilePtEta->GetYaxis())->GetXmax();
1985 Int_t nBinsPt = profilePtEta->GetNbinsX();
1987 TProfile *profileEta =
new TProfile(
"",
"",nBinsEta,dEtaMin,dEtaMax);
1989 for(
Int_t e=1;e<=nBinsEta;e++)
1993 for(
Int_t p=1;p<=nBinsPt;p++)
1995 contentEta += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
1996 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1997 entryEta += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1999 profileEta->SetBinContent(e,contentEta);
2000 profileEta->SetBinEntries(e,entryEta);
2020 for(
Int_t b=0;b<4;b++)
2031 }
else if(type ==
"RP")
2041 }
else if(type ==
"POI")
2053 for(
Int_t b=0;b<4;b++)
2062 TString subtitle2 =
" (rebinned in M)";
2064 if(type !=
"RF, rebinned in M")
2068 subtitle.Append(type);
2069 subtitle.Append(
", without weights)");
2072 subtitle.Append(type);
2073 subtitle.Append(
", with weights)");
2079 subtitle.Append(
"RF");
2080 subtitle.Append(
", without weights)");
2083 subtitle.Append(
"RF");
2084 subtitle.Append(
", with weights)");
2089 cout<<
"*************************************"<<endl;
2090 cout<<
"*************************************"<<endl;
2091 cout<<title.Data()<<endl;
2092 cout<<subtitle.Data()<<endl;
2093 if(type ==
"RF, rebinned in M"){cout<<subtitle2.Data()<<endl;}
2096 for(
Int_t i=0;i<4;i++)
2098 cout<<
" v_"<<n<<
"{"<<2*(i+1)<<
"} = "<<dVn[i]<<
" +/- "<<dVnErr[i]<<endl;
2106 cout<<
" detector bias (corrected for): "<<endl;
2109 cout<<
" detector bias (not corrected for):"<<endl;
2115 if(type ==
"RF" || type ==
"RF, rebinned in M")
2119 else if (type ==
"RP")
2123 else if (type ==
"POI")
2128 cout<<
"*************************************"<<endl;
2129 cout<<
"*************************************"<<endl;
2139 TFile *output =
new TFile(outputFileName.Data(),
"RECREATE");
2155 outputFileName->Write(outputFileName->GetName(), TObject::kSingleKey);
2168 TString commonHistsName =
"AliFlowCommonHistQC";
2176 TString commonHists2ndOrderName =
"AliFlowCommonHist2ndOrderQC";
2181 TString commonHists4thOrderName =
"AliFlowCommonHist4thOrderQC";
2186 TString commonHists6thOrderName =
"AliFlowCommonHist6thOrderQC";
2191 TString commonHists8thOrderName =
"AliFlowCommonHist8thOrderQC";
2199 TString commonHistResults2ndOrderName =
"AliFlowCommonHistResults2ndOrderQC";
2204 TString commonHistResults4thOrderName =
"AliFlowCommonHistResults4thOrderQC";
2209 TString commonHistResults6thOrderName =
"AliFlowCommonHistResults6thOrderQC";
2214 TString commonHistResults8thOrderName =
"AliFlowCommonHistResults8thOrderQC";
2229 printf(
"\n WARNING (QC): fWeightsList is NULL in AFAWQC::BAFWH() !!!! \n\n");
2233 Double_t ptbinsforweights[200001] = {0.};
2234 for (
Int_t phib=0; phib<200001; phib++) {
2235 ptbinsforweights[phib] = 0.2 + phib*(50.-0.2)/200000.;
2237 Double_t cenbinsforweights[] = {0.,5.,10.,20.,30.,40.,50.,60.,70.,80.,90.};
2239 fPtWeightsCent =
new TH2F(
"fPtWeightsCent",
"fPtWeightsCent",200000,ptbinsforweights,10,cenbinsforweights);
2416 TF1 *CenFit =
new TF1(
"CenFit",
"pol0", 0., 100.);
2419 Double_t CenAv = CenFit->GetParameter(0);
2431 Double_t CenAv = CenFit->GetParameter(0);
2433 Double_t SemiCenAv = CenFit->GetParameter(0);
2459 TString sinCosFlag[2] = {
"sin",
"cos"};
2460 TString powerFlag[2] = {
"linear",
"quadratic"};
2463 TString intFlowFlagsName =
"fIntFlowFlags";
2465 fIntFlowFlags =
new TProfile(intFlowFlagsName.Data(),
"Flags for Integrated Flow",20,0.,20.);
2471 fIntFlowFlags->GetXaxis()->SetBinLabel(1,
"Particle Weights");
2473 fIntFlowFlags->GetXaxis()->SetBinLabel(3,
"Corrected for NUA?");
2474 fIntFlowFlags->GetXaxis()->SetBinLabel(4,
"Print RF results");
2475 fIntFlowFlags->GetXaxis()->SetBinLabel(5,
"Print RP results");
2476 fIntFlowFlags->GetXaxis()->SetBinLabel(6,
"Print POI results");
2477 fIntFlowFlags->GetXaxis()->SetBinLabel(7,
"Print RF (rebinned in M) results");
2478 fIntFlowFlags->GetXaxis()->SetBinLabel(8,
"Corrected for NUA vs M?");
2479 fIntFlowFlags->GetXaxis()->SetBinLabel(9,
"Propagate errors to v_{n} from correlations?");
2480 fIntFlowFlags->GetXaxis()->SetBinLabel(10,
"Calculate cumulants vs M");
2481 fIntFlowFlags->GetXaxis()->SetBinLabel(11,
"fMinimumBiasReferenceFlow");
2482 fIntFlowFlags->GetXaxis()->SetBinLabel(12,
"fForgetAboutCovariances");
2484 fIntFlowFlags->GetXaxis()->SetBinLabel(14,
"fFillMultipleControlHistograms");
2485 fIntFlowFlags->GetXaxis()->SetBinLabel(15,
"Calculate all correlations vs M");
2486 fIntFlowFlags->GetXaxis()->SetBinLabel(16,
"fMultiplicityIs");
2488 fIntFlowFlags->GetXaxis()->SetBinLabel(18,
"fUse2DHistograms");
2489 fIntFlowFlags->GetXaxis()->SetBinLabel(19,
"fFillProfilesVsMUsingWeights");
2490 fIntFlowFlags->GetXaxis()->SetBinLabel(20,
"fUseQvectorTerms");
2495 fReQ =
new TMatrixD(12,9);
2496 fImQ =
new TMatrixD(12,9);
2497 fSpk =
new TMatrixD(8,9);
2498 fReQGF =
new TMatrixD(21,9);
2499 fImQGF =
new TMatrixD(21,9);
2505 TString intFlowCorrelationsEBEName =
"fIntFlowCorrelationsEBE";
2509 TString intFlowEventWeightsForCorrelationsEBEName =
"fIntFlowEventWeightsForCorrelationsEBE";
2510 intFlowEventWeightsForCorrelationsEBEName +=
fAnalysisLabel->Data();
2513 TString intFlowCorrelationsAllEBEName =
"fIntFlowCorrelationsAllEBE";
2518 TString fIntFlowCorrectionTermsForNUAEBEName =
"fIntFlowCorrectionTermsForNUAEBE";
2520 for(
Int_t sc=0;sc<2;sc++)
2522 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);
2525 TString fIntFlowEventWeightForCorrectionTermsForNUAEBEName =
"fIntFlowEventWeightForCorrectionTermsForNUAEBE";
2526 fIntFlowEventWeightForCorrectionTermsForNUAEBEName +=
fAnalysisLabel->Data();
2527 for(
Int_t sc=0;sc<2;sc++)
2533 TString avMultiplicityName =
"fAvMultiplicity";
2535 fAvMultiplicity =
new TProfile(avMultiplicityName.Data(),
"Average multiplicities of reference particles (RPs)",9,0,9);
2552 TString correlationFlag[4] = {
"#LT#LT2#GT#GT",
"#LT#LT4#GT#GT",
"#LT#LT6#GT#GT",
"#LT#LT8#GT#GT"};
2553 TString intFlowCorrelationsProName =
"fIntFlowCorrelationsPro";
2555 fIntFlowCorrelationsPro =
new TProfile(intFlowCorrelationsProName.Data(),
"Average correlations for all events",4,0,4,
"s");
2561 for(
Int_t b=0;b<4;b++)
2567 TString squaredCorrelationFlag[4] = {
"#LT#LT2#GT^{2}#GT",
"#LT#LT4#GT^{2}#GT",
"#LT#LT6#GT^{2}#GT",
"#LT#LT8#GT^{2}#GT"};
2568 TString intFlowSquaredCorrelationsProName =
"fIntFlowSquaredCorrelationsPro";
2576 for(
Int_t b=0;b<4;b++)
2583 for(
Int_t ci=0;ci<4;ci++)
2586 TString intFlowCorrelationsVsMProName =
"fIntFlowCorrelationsVsMPro";
2588 fIntFlowCorrelationsVsMPro[ci] =
new TProfile(Form(
"%s, %s",intFlowCorrelationsVsMProName.Data(),correlationFlag[ci].Data()),
2589 Form(
"%s vs multiplicity",correlationFlag[ci].
Data()),
2605 TString intFlowSquaredCorrelationsVsMProName =
"fIntFlowSquaredCorrelationsVsMPro";
2608 Form(
"%s vs multiplicity",squaredCorrelationFlag[ci].
Data()),
2626 TString intFlowCorrelationsAllProName =
"fIntFlowCorrelationsAllPro";
2628 fIntFlowCorrelationsAllPro =
new TProfile(intFlowCorrelationsAllProName.Data(),
"Average all correlations for all events",64,0,64);
2734 fIntFlowCorrelationsAllVsMPro[30] =
new TProfile(
"eight1n1n1n1n1n1n1n1n",
"#LT#LT8#GT#GT_{n,n,n,n|n,n,n,n}",
fnBinsMult,
fMinMult,
fMaxMult);
2768 for(
Int_t n=0;n<63;n++)
2790 TString intFlowExtraCorrelationsProName =
"fIntFlowExtraCorrelationsPro";
2792 fIntFlowExtraCorrelationsPro =
new TProfile(intFlowExtraCorrelationsProName.Data(),
"Average extra correlations for all events",100,0,100,
"s");
2803 TString productFlag[6] = {
"#LT#LT2#GT#LT4#GT#GT",
"#LT#LT2#GT#LT6#GT#GT",
"#LT#LT2#GT#LT8#GT#GT",
2804 "#LT#LT4#GT#LT6#GT#GT",
"#LT#LT4#GT#LT8#GT#GT",
"#LT#LT6#GT#LT8#GT#GT"};
2805 TString intFlowProductOfCorrelationsProName =
"fIntFlowProductOfCorrelationsPro";
2812 for(
Int_t b=0;b<6;b++)
2821 TString intFlowProductOfCorrelationsVsMProName =
"fIntFlowProductOfCorrelationsVsMPro";
2822 intFlowProductOfCorrelationsVsMProName +=
fAnalysisLabel->Data();
2826 Form(
"%s versus multiplicity",productFlag[
pi].
Data()),
2842 TString intFlowProductOfCorrectionTermsForNUAProName =
"fIntFlowProductOfCorrectionTermsForNUAPro";
2843 intFlowProductOfCorrectionTermsForNUAProName +=
fAnalysisLabel->Data();
2878 for(
Int_t sc=0;sc<2;sc++)
2880 TString intFlowCorrectionTermsForNUAProName =
"fIntFlowCorrectionTermsForNUAPro";
2882 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");
2895 TString correctionTermFlag[4] = {
"(n(phi1))",
"(n(phi1+phi2))",
"(n(phi1-phi2-phi3))",
"(n(2phi1-phi2))"};
2896 for(
Int_t ci=0;ci<4;ci++)
2898 TString intFlowCorrectionTermsForNUAVsMProName =
"fIntFlowCorrectionTermsForNUAVsMPro";
2899 intFlowCorrectionTermsForNUAVsMProName +=
fAnalysisLabel->Data();
2900 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");
2908 TString intFlowCorrelationsHistName =
"fIntFlowCorrelationsHist";
2923 for(
Int_t ci=0;ci<4;ci++)
2925 TString intFlowCorrelationsVsMHistName =
"fIntFlowCorrelationsVsMHist";
2928 Form(
"%s vs multiplicity",correlationFlag[ci].
Data()),
2945 TString intFlowCorrelationsAllHistName =
"fIntFlowCorrelationsAllHist";
2986 for(
Int_t sc=0;sc<2;sc++)
2988 TString intFlowCorrectionTermsForNUAHistName =
"fIntFlowCorrectionTermsForNUAHist";
2990 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);
3002 TString intFlowCovariancesName =
"fIntFlowCovariances";
3004 fIntFlowCovariances =
new TH1D(intFlowCovariancesName.Data(),
"Covariances (multiplied with weight dependent prefactor)",6,0,6);
3015 TString intFlowSumOfEventWeightsName =
"fIntFlowSumOfEventWeights";
3017 for(
Int_t power=0;power<2;power++)
3019 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);
3028 }
else if (power == 1)
3038 TString intFlowSumOfProductOfEventWeightsName =
"fIntFlowSumOfProductOfEventWeights";
3054 TString intFlowCovariancesVsMName =
"fIntFlowCovariancesVsM";
3056 TString covarianceFlag[6] = {
"Cov(<2>,<4>)",
"Cov(<2>,<6>)",
"Cov(<2>,<8>)",
"Cov(<4>,<6>)",
"Cov(<4>,<8>)",
"Cov(<6>,<8>)"};
3057 for(
Int_t ci=0;ci<6;ci++)
3060 Form(
"%s vs multiplicity",covarianceFlag[ci].
Data()),
3080 TString intFlowSumOfEventWeightsVsMName =
"fIntFlowSumOfEventWeightsVsM";
3082 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>}"},
3083 {
"#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}"}};
3084 for(
Int_t si=0;si<4;si++)
3086 for(
Int_t power=0;power<2;power++)
3089 Form(
"%s vs multiplicity",sumFlag[power][si].
Data()),
3111 TString intFlowSumOfProductOfEventWeightsVsMName =
"fIntFlowSumOfProductOfEventWeightsVsM";
3112 intFlowSumOfProductOfEventWeightsVsMName +=
fAnalysisLabel->Data();
3113 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>}",
3114 "#sum_{i=1}^{N} w_{<4>} w_{<6>}",
"#sum_{i=1}^{N} w_{<4>} w_{<8>}",
"#sum_{i=1}^{N} w_{<6>} w_{<8>}"};
3118 Form(
"%s versus multiplicity",sopowFlag[
pi].
Data()),
3135 TString intFlowCovariancesNUAName =
"fIntFlowCovariancesNUA";
3137 fIntFlowCovariancesNUA =
new TH1D(intFlowCovariancesNUAName.Data(),
"Covariances for NUA (multiplied with weight dependent prefactor)",27,0,27);
3156 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(16,
"Cov(<cos(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3157 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(17,
"Cov(<cos(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3160 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(20,
"Cov(<sin(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3161 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(21,
"Cov(<sin(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3162 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(22,
"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}+#phi_{2})>)");
3163 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(23,
"Cov(<cos(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3164 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(24,
"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3165 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(25,
"Cov(<sin(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3166 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(26,
"Cov(<sin(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3167 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(27,
"Cov(<cos(#phi_{1}-#phi_{2}-#phi_{3}>,<sin(#phi_{1}-#phi_{2}-#phi_{3}>)");
3170 TString intFlowSumOfEventWeightsNUAName =
"fIntFlowSumOfEventWeightsNUA";
3172 for(
Int_t sc=0;sc<2;sc++)
3174 for(
Int_t power=0;power<2;power++)
3176 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);
3185 }
else if(power == 1)
3189 (
fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(3,Form(
"#sum_{i=1}^{N} w_{<%s(#phi_{1}-#phi_{2}-#phi_{3})>}^{2}",sinCosFlag[sc].
Data()));
3196 TString intFlowSumOfProductOfEventWeightsNUAName =
"fIntFlowSumOfProductOfEventWeightsNUA";
3197 intFlowSumOfProductOfEventWeightsNUAName +=
fAnalysisLabel->Data();
3230 TString cumulantFlag[4] = {
"QC{2}",
"QC{4}",
"QC{6}",
"QC{8}"};
3231 TString intFlowQcumulantsName =
"fIntFlowQcumulants";
3236 fIntFlowQcumulants->SetTitle(
"Reference Q-cumulants (error from non-isotropic terms also propagated)");
3240 for(
Int_t b=0;b<4;b++)
3248 TString intFlowQcumulantsRebinnedInMName =
"fIntFlowQcumulantsRebinnedInM";
3253 for(
Int_t b=0;b<4;b++)
3260 TString intFlowQcumulantsErrorSquaredRatioName =
"fIntFlowQcumulantsErrorSquaredRatio";
3261 intFlowQcumulantsErrorSquaredRatioName +=
fAnalysisLabel->Data();
3265 for(
Int_t b=0;b<4;b++)
3273 TString intFlowQcumulantsVsMName =
"fIntFlowQcumulantsVsM";
3275 for(
Int_t co=0;co<4;co++)
3278 Form(
"%s vs multiplicity",cumulantFlag[co].
Data()),
3295 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)};
3296 TString intFlowName =
"fIntFlow";
3299 fIntFlow =
new TH1D(intFlowName.Data(),
"Reference flow estimates from Q-cumulants",4,0,4);
3302 for(
Int_t b=0;b<4;b++)
3304 (
fIntFlow->GetXaxis())->SetBinLabel(b+1,flowFlag[b].
Data());
3310 TString intFlowRebinnedInMName =
"fIntFlowRebinnedInM";
3312 fIntFlowRebinnedInM =
new TH1D(intFlowRebinnedInMName.Data(),
"Reference flow estimates from Q-cumulants (rebinned in M)",4,0,4);
3315 for(
Int_t b=0;b<4;b++)
3324 TString intFlowVsMName =
"fIntFlowVsM";
3326 for(
Int_t co=0;co<4;co++)
3328 fIntFlowVsM[co] =
new TH1D(Form(
"%s, %s",intFlowVsMName.Data(),flowFlag[co].Data()),
3329 Form(
"%s vs multiplicity",flowFlag[co].
Data()),
3336 fIntFlowVsM[co]->GetXaxis()->SetTitle(
"Reference multiplicity (from ESD)");
3346 TString intFlowDetectorBiasName =
"fIntFlowDetectorBias";
3351 for(
Int_t ci=0;ci<4;ci++)
3353 (
fIntFlowDetectorBias->GetXaxis())->SetBinLabel(ci+1,Form(
"#frac{corrected}{measured} %s",cumulantFlag[ci].
Data()));
3359 TString intFlowDetectorBiasVsMName =
"fIntFlowDetectorBiasVsM";
3361 for(
Int_t ci=0;ci<4;ci++)
3364 Form(
"Quantifying detector bias for %s vs multiplicity",cumulantFlag[ci].
Data()),
3393 TString controlHistogramsFlagsName =
"fControlHistogramsFlags";
3395 fControlHistogramsFlags =
new TProfile(controlHistogramsFlagsName.Data(),
"Flags for Control Histograms",2,0,2);
3409 TString sCorrelationNoRPsVsRefMultName =
"fCorrelationNoRPsVsRefMult";
3420 TString sCorrelationNoPOIsVsRefMultName =
"fCorrelationNoPOIsVsRefMult";
3431 TString sCorrelationNoRPsVsNoPOIsName =
"fCorrelationNoRPsVsNoPOIs";
3442 TString sCorrelation[4] = {
"#LT2#GT",
"#LT4#GT",
"#LT6#GT",
"#LT8#GT"};
3446 sMultiplicity =
"# RPs";
3449 sMultiplicity =
"Reference multiplicity (from ESD)";
3452 sMultiplicity =
"# POIs";
3454 for(
Int_t ci=0;ci<4;ci++)
3466 TString sCorrelationProduct[1] = {
"#LT2#GT#LT4#GT"};
3467 for(
Int_t cpi=0;cpi<1;cpi++)
3481 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}}"};
3482 for(
Int_t qvti=0;qvti<4;qvti++)
3509 TString bootstrapFlagsName =
"fBootstrapFlags";
3511 fBootstrapFlags =
new TProfile(bootstrapFlagsName.Data(),
"Flags for bootstrap",3,0,3);
3523 TString correlationFlag[4] = {
"#LT#LT2#GT#GT",
"#LT#LT4#GT#GT",
"#LT#LT6#GT#GT",
"#LT#LT8#GT#GT"};
3524 TString cumulantFlag[4] = {
"QC{2}",
"QC{4}",
"QC{6}",
"QC{8}"};
3528 TString bootstrapCorrelationsName =
"fBootstrapCorrelations";
3532 for(
Int_t ci=0;ci<4;ci++)
3542 TString bootstrapCumulantsName =
"fBootstrapCumulants";
3546 for(
Int_t co=0;co<4;co++)
3561 sMultiplicity =
"# RPs";
3564 sMultiplicity =
"Reference multiplicity (from ESD)";
3567 sMultiplicity =
"# POIs";
3572 TString bootstrapCorrelationsVsMName =
"fBootstrapCorrelationsVsM";
3574 for(
Int_t ci=0;ci<4;ci++)
3576 fBootstrapCorrelationsVsM[ci] =
new TProfile2D(Form(
"%s, %s",bootstrapCorrelationsVsMName.Data(),correlationFlag[ci].Data()),
3577 Form(
"Bootstrap Correlations Vs. M, %s",correlationFlag[ci].
Data()),
3588 TString bootstrapCumulantsVsMName =
"fBootstrapCumulantsVsM";
3590 for(
Int_t co=0;co<4;co++)
3593 Form(
"Bootstrap Cumulants Vs. M, %s",cumulantFlag[co].
Data()),
3619 TString mixedHarmonicsFlagsName =
"fMixedHarmonicsFlags";
3621 fMixedHarmonicsFlags =
new TProfile(mixedHarmonicsFlagsName.Data(),
"Flags for Mixed Harmonics",4,0,4);
3637 TString s2pCorrelationsName =
"f2pCorrelations";
3639 f2pCorrelations =
new TProfile(s2pCorrelationsName.Data(),Form(
"2-particle correlations (n = %d)",
fHarmonic),6,0,6,
"s");
3654 TString s3pCorrelationsName =
"f3pCorrelations";
3656 f3pCorrelations =
new TProfile(s3pCorrelationsName.Data(),Form(
"3-particle correlations (n = %d)",
fHarmonic),10,0,10,
"s");
3677 TString s4pCorrelationsName =
"f4pCorrelations";
3679 f4pCorrelations =
new TProfile(s4pCorrelationsName.Data(),Form(
"4-particle correlations (n = %d)",
fHarmonic),45,0,45,
"s");
3738 TString s5pCorrelationsName =
"f5pCorrelations";
3740 f5pCorrelations =
new TProfile(s5pCorrelationsName.Data(),Form(
"5-particle correlations (n = %d)",
fHarmonic),87,0,87,
"s");
3841 TString s6pCorrelationsName =
"f6pCorrelations";
3843 f6pCorrelations =
new TProfile(s6pCorrelationsName.Data(),Form(
"6-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3852 TString s7pCorrelationsName =
"f7pCorrelations";
3854 f7pCorrelations =
new TProfile(s7pCorrelationsName.Data(),Form(
"7-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3863 TString s8pCorrelationsName =
"f8pCorrelations";
3865 f8pCorrelations =
new TProfile(s8pCorrelationsName.Data(),Form(
"8-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3910 TString mixedHarmonicEventWeightsName =
"fMixedHarmonicEventWeights";
3912 TString powerFlag[2] = {
"linear",
"quadratic"};
3913 for(
Int_t power=0;power<2;power++)
3915 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.);
3929 }
else if (power == 1)
3944 TString mixedHarmonicProductOfEventWeightsName =
"fMixedHarmonicProductOfEventWeights";
3945 mixedHarmonicProductOfEventWeightsName +=
fAnalysisLabel->Data();
3950 for(
Int_t b=1;b<=8;b++)
3958 TString mixedHarmonicProductOfCorrelationsName =
"fMixedHarmonicProductOfCorrelations";
3959 mixedHarmonicProductOfCorrelationsName +=
fAnalysisLabel->Data();