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"
84 fBookOnlyBasicCCH(kTRUE),
86 fCommonHists2nd(NULL),
87 fCommonHists4th(NULL),
88 fCommonHists6th(NULL),
89 fCommonHists8th(NULL),
90 fCommonHistsResults2nd(NULL),
91 fCommonHistsResults4th(NULL),
92 fCommonHistsResults6th(NULL),
93 fCommonHistsResults8th(NULL),
106 fCommonConstants(NULL),
107 fFillMultipleControlHistograms(kFALSE),
109 fAnalysisLabel(NULL),
111 fUsePhiWeights(kFALSE),
112 fUsePtWeights(kFALSE),
113 fUseEtaWeights(kFALSE),
114 fUseTrackWeights(kFALSE),
115 fUsePhiEtaWeights(kFALSE),
116 fUsePhiEtaWeightsChDep(kFALSE),
117 fUseZDCESEMulWeights(kFALSE),
118 fUseZDCESESpecWeights(kFALSE),
119 fUseParticleWeights(NULL),
121 fMultiplicityWeight(NULL),
125 fIntFlowProfiles(NULL),
126 fIntFlowResults(NULL),
127 fIntFlowAllCorrelationsVsM(NULL),
129 fApplyCorrectionForNUA(kFALSE),
130 fApplyCorrectionForNUAVsM(kFALSE),
134 fPropagateErrorAlsoFromNIT(kFALSE),
135 fCalculateCumulantsVsM(kFALSE),
136 fCalculateAllCorrelationsVsM(kFALSE),
137 fMinimumBiasReferenceFlow(kTRUE),
138 fForgetAboutCovariances(kFALSE),
139 fStoreVarious(kFALSE),
141 fUse2DHistograms(kFALSE),
142 fFillProfilesVsMUsingWeights(kTRUE),
143 fUseQvectorTerms(kFALSE),
147 fIntFlowCorrelationsEBE(NULL),
148 fIntFlowEventWeightsForCorrelationsEBE(NULL),
149 fIntFlowCorrelationsAllEBE(NULL),
151 fNumberOfPOIsEBE(0.),
152 fReferenceMultiplicityEBE(0.),
154 fNewCentralityEBE(0.),
160 fCentralityCL1EBE(0.),
162 fCentralityTRKEBE(0.),
166 fAvMultiplicity(NULL),
167 fIntFlowCorrelationsPro(NULL),
168 fIntFlowSquaredCorrelationsPro(NULL),
169 fIntFlowCorrelationsAllPro(NULL),
170 fIntFlowExtraCorrelationsPro(NULL),
171 fIntFlowProductOfCorrelationsPro(NULL),
172 fIntFlowProductOfCorrectionTermsForNUAPro(NULL),
173 fIntFlowCorrelationsHist(NULL),
174 fIntFlowCorrelationsAllHist(NULL),
175 fIntFlowCovariances(NULL),
176 fIntFlowSumOfProductOfEventWeights(NULL),
177 fIntFlowCovariancesNUA(NULL),
178 fIntFlowSumOfProductOfEventWeightsNUA(NULL),
179 fIntFlowQcumulants(NULL),
180 fIntFlowQcumulantsRebinnedInM(NULL),
181 fIntFlowQcumulantsErrorSquaredRatio(NULL),
183 fIntFlowRebinnedInM(NULL),
184 fIntFlowDetectorBias(NULL),
187 fDiffFlowProfiles(NULL),
188 fDiffFlowResults(NULL),
190 fDiffFlowFlags(NULL),
191 fCalculateDiffFlow(kTRUE),
192 fCalculate2DDiffFlow(kFALSE),
193 fCalculateDiffFlowVsEta(kTRUE),
195 fOtherDiffCorrelatorsList(NULL),
197 fDistributionsList(NULL),
198 fDistributionsFlags(NULL),
199 fStoreDistributions(kFALSE),
200 fnBinsForCorrelations(10000),
202 fNestedLoopsList(NULL),
203 fEvaluateIntFlowNestedLoops(kFALSE),
204 fEvaluateDiffFlowNestedLoops(kFALSE),
205 fMaxAllowedMultiplicity(10),
206 fEvaluateNestedLoops(NULL),
207 fIntFlowDirectCorrelations(NULL),
208 fIntFlowExtraDirectCorrelations(NULL),
209 fCrossCheckInPtBinNo(10),
210 fCrossCheckInEtaBinNo(20),
211 fNoOfParticlesInBin(NULL),
212 fMixedHarmonicsNestedLoops(NULL),
214 fMixedHarmonicsList(NULL),
215 fMixedHarmonicsProfiles(NULL),
216 fMixedHarmonicsResults(NULL),
217 fMixedHarmonicsErrorPropagation(NULL),
218 fMixedHarmonicsFlags(NULL),
219 fCalculateMixedHarmonics(kFALSE),
220 fCalculateMixedHarmonicsVsM(kFALSE),
221 f2pCorrelations(NULL),
222 f3pCorrelations(NULL),
223 f4pCorrelations(NULL),
224 f5pCorrelations(NULL),
225 f6pCorrelations(NULL),
226 f7pCorrelations(NULL),
227 f8pCorrelations(NULL),
235 fMixedHarmonicProductOfEventWeights(NULL),
236 fMixedHarmonicProductOfCorrelations(NULL),
238 fControlHistogramsList(NULL),
239 fControlHistogramsFlags(NULL),
240 fStoreControlHistograms(kFALSE),
241 fCorrelationNoRPsVsRefMult(NULL),
242 fCorrelationNoPOIsVsRefMult(NULL),
243 fCorrelationNoRPsVsNoPOIs(NULL),
245 fBootstrapList(NULL),
246 fBootstrapProfilesList(NULL),
247 fBootstrapResultsList(NULL),
248 fBootstrapFlags(NULL),
249 fUseBootstrap(kFALSE),
250 fUseBootstrapVsM(kFALSE),
253 fBootstrapCorrelations(NULL),
254 fBootstrapCumulants(NULL),
259 fCalculateCRC(kTRUE),
260 fCalculateCRCPt(kFALSE),
261 fCalculateCME(kFALSE),
262 fCalculateCRC2(kFALSE),
263 fCalculateCRCVZ(kFALSE),
264 fCalculateCRCZDC(kFALSE),
265 fCalculateFlowQC(kFALSE),
266 fCalculateFlowZDC(kFALSE),
267 fCalculateFlowVZ(kFALSE),
268 fCalculateEbEFlow(kFALSE),
269 fUsePhiEtaCuts(kFALSE),
272 fRecenterZDC(kFALSE),
274 fUseCRCRecenter(kFALSE),
284 fCorrWeightTPC(kUnit),
285 fCorrWeightVZ(kUnit),
286 fCorrWeightZDC(kUnit),
289 fCRCCenBinWidth(CenWidth),
290 fCRCIntRbRList(NULL),
293 fInteractionRate(kAll),
294 fSelectCharge(kAllCh),
296 fCRCQVecWeightsList(NULL),
297 fCRCZDCCalibList(NULL),
298 fCRCZDCResList(NULL),
300 fPhiEtaCutsList(NULL),
304 fCRCZDCRbRList(NULL),
312 fFlowSPZDCList(NULL),
314 fFlowQCOrdMagList(NULL),
317 fFlowQCDeltaEta(0.4),
323 fQAZDCCutsFlag(kTRUE),
330 fHistList =
new TList();
331 fHistList->SetName(
"cobjQC");
332 fHistList->SetOwner(kTRUE);
335 fTempList =
new TList();
336 fTempList->SetName(
"temp");
337 fTempList->SetOwner(kTRUE);
340 fMultiplicityWeight =
new TString(
"combinations");
343 fAnalysisLabel =
new TString();
346 this->InitializeArraysForIntFlow();
347 this->InitializeArraysForDiffFlow();
348 this->InitializeArraysForDistributions();
349 this->InitializeArraysForVarious();
350 this->InitializeArraysForNestedLoops();
351 this->InitializeArraysForMixedHarmonics();
352 this->InitializeArraysForControlHistograms();
353 this->InitializeArraysForBootstrap();
358 this->InitializeCostantsForCRC();
359 this->InitializeArraysForParticleWeights();
360 this->InitializeArraysForCRC();
361 this->InitializeArraysForCRCVZ();
362 this->InitializeArraysForCRCZDC();
363 this->InitializeArraysForCRC2();
364 this->InitializeArraysForQVec();
365 this->InitializeArraysForCRCPt();
366 this->InitializeArraysForCME();
367 this->InitializeArraysForFlowEbE();
368 this->InitializeArraysForFlowQC();
369 this->InitializeArraysForFlowQCHighOrders();
370 this->InitializeArraysForFlowSPZDC();
371 this->InitializeArraysForFlowSPVZ();
372 this->InitializeArraysForEbEFlow();
415 Bool_t oldHistAddStatus = TH1::AddDirectoryStatus();
416 TH1::AddDirectory(kFALSE);
469 TH1::AddDirectory(oldHistAddStatus);
510 Int_t nCounterNoRPs = 0;
547 if(fRunBin<0 || fRunBin>=
fCRCnRun) {
return;}
549 if(fCenBin<0 || fCenBin>=
fCRCnCen) {
return;}
601 AliWarning(Form(
"WARNING: cenphieta weights not found for run %d! \n",
fRunNum));
608 AliWarning(Form(
"WARNING: pch cenphieta weights not found for run %d! \n",
fRunNum));
613 AliWarning(Form(
"WARNING: nch cenphieta weights not found for run %d! \n",
fRunNum));
620 AliWarning(Form(
"WARNING: cenphieta cut not found for run %d! \n",
fRunNum));
636 for(
Int_t i=0;i<nPrim;i++) {
646 dPhi = aftsTrack->
Phi();
647 dPt = aftsTrack->
Pt();
648 dEta = aftsTrack->
Eta();
649 dCharge = aftsTrack->
Charge();
654 cw = (dCharge > 0. ? 0 : 1);
677 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
683 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
687 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
692 if(
fRandom->Uniform(1.)>wProbCut)
continue;
701 for(
Int_t m=0;m<12;m++)
703 for(
Int_t k=0;k<9;k++)
705 (*fReQ)(m,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1)*n*dPhi);
706 (*fImQ)(m,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1)*n*dPhi);
710 for(
Int_t p=0;p<8;p++)
712 for(
Int_t k=0;k<9;k++)
714 (*fSpk)(p,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k);
723 for(
Int_t k=0;k<9;k++)
725 for(
Int_t m=0;m<4;m++)
731 fReRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
732 fImRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
735 fs1dEBE[0][pe][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
741 fReRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
742 fImRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
745 fs2dEBE[0][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
754 for(
Int_t k=0;k<9;k++)
756 for(
Int_t m=0;m<4;m++)
762 fReRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
763 fImRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
766 fs1dEBE[2][pe][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
772 fReRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
773 fImRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
776 fs2dEBE[2][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
812 dPhi = aftsTrack->
Phi();
813 dPt = aftsTrack->
Pt();
814 dEta = aftsTrack->
Eta();
815 dCharge = aftsTrack->
Charge();
820 cw = (dCharge > 0. ? 0 : 1);
843 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
849 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
853 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
858 if(
fRandom->Uniform(1.)>wProbCut)
continue;
869 for(
Int_t k=0;k<9;k++)
871 for(
Int_t m=0;m<4;m++)
877 fReRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
878 fImRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
883 fReRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
884 fImRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
892 fCRCQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
893 fCRCQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
894 fCRCMult[cw][h]->Fill(dEta,wPhiEta);
896 fCRC2QRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
897 fCRC2QIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
898 fCRC2Mul[cw][h]->Fill(dEta,wPhiEta);
900 fCRCZDCQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
901 fCRCZDCQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
905 fCRC2QRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
906 fCRC2QIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
911 fCRCZDCQRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
912 fCRCZDCQIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
915 fCRCZDCQRe[3][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
916 fCRCZDCQIm[3][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
924 if(weraw > 0.) SpecWeig = 1./weraw;
926 fCMEQRe[cw][h]->Fill(dEta,SpecWeig*wPhiEta*TMath::Cos((h+1.)*dPhi));
927 fCMEQIm[cw][h]->Fill(dEta,SpecWeig*wPhiEta*TMath::Sin((h+1.)*dPhi));
928 fCMEMult[cw][h]->Fill(dEta,SpecWeig*wPhiEta);
929 fCMEQRe[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.)*TMath::Cos((h+1.)*dPhi));
930 fCMEQIm[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.)*TMath::Sin((h+1.)*dPhi));
931 fCMEMult[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.));
943 fPOIPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
944 fPOIPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
946 fPOIPhiDiffQRe[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
947 fPOIPhiDiffQIm[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
951 Int_t keta = (dEta<0.?0:1);
952 fPOIPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
953 fPOIPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
955 fPOIPhiDiffQReEG[keta][k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
956 fPOIPhiDiffQImEG[keta][k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
960 if(fabs(dEta)<0.6 && fabs(dEta)>0.3) {
961 Int_t keta = (dEta<0.?0:1);
962 fPOIPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
963 fPOIPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
971 fEtaDiffQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
972 fEtaDiffQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
983 printf(
"\n WARNING (QC): No particle (i.e. aftsTrack is a NULL pointer in AFAWQC::Make())!!!!\n\n");
991 for(
Int_t p=0;p<8;p++)
993 for(
Int_t k=0;k<9;k++)
995 (*fSpk)(p,k)=pow((*
fSpk)(p,k),p+1);
1423 cout<<
"Skipping the event because multiplicity is "<<nPrim<<
". Too high to evaluate nested loops!"<<endl;
1427 cout<<
"Skipping the event because multiplicity is "<<nPrim<<
"."<<endl;
1563 cosP1n = dReQ1n/dMult;
1581 cosP1nP1n = (pow(dReQ1n,2)-pow(dImQ1n,2)-dReQ2n)/(dMult*(dMult-1));
1582 cosP2nM1n = (dReQ2n*dReQ1n+dImQ2n*dImQ1n-dReQ1n)/(dMult*(dMult-1));
1606 cosP1nM1nM1n = (dReQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2))-dReQ1n*dReQ2n-dImQ1n*dImQ2n-2.*(dMult-1)*dReQ1n)
1607 / (dMult*(dMult-1)*(dMult-2));
1672 sinP1n = dImQ1n/dMult;
1689 sinP1nP1n = (2.*dReQ1n*dImQ1n-dImQ2n)/(dMult*(dMult-1));
1690 sinP2nM1n = (dImQ2n*dReQ1n-dReQ2n*dImQ1n-dImQ1n)/(dMult*(dMult-1));
1714 sinP1nM1nM1n = (-dImQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2))+dReQ1n*dImQ2n-dImQ1n*dReQ2n+2.*(dMult-1)*dImQ1n)
1715 / (dMult*(dMult-1)*(dMult-2));
1745 if(outputListHistos)
1750 printf(
"\n WARNING (QC): fHistList is NULL in AFAWQC::GOH() !!!!\n\n");
1778 printf(
"\n WARNING (QC): outputListHistos is NULL in AFAWQC::GOH() !!!!\n\n");
1790 Int_t nBinsPt = profilePtEta->GetNbinsX();
1791 Double_t dPtMin = (profilePtEta->GetXaxis())->GetXmin();
1792 Double_t dPtMax = (profilePtEta->GetXaxis())->GetXmax();
1794 Int_t nBinsEta = profilePtEta->GetNbinsY();
1796 TProfile *profilePt =
new TProfile(
"",
"",nBinsPt,dPtMin,dPtMax);
1798 for(
Int_t p=1;p<=nBinsPt;p++)
1806 for(
Int_t e=1;e<=nBinsEta;e++)
1808 contentPt += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
1809 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1810 entryPt += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1812 sum1 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
1813 * (pow(profilePtEta->GetBinError(profilePtEta->GetBin(p,e)),2.)
1814 + pow(profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)),2.));
1815 sum2 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1816 sum3 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
1817 * (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)));
1819 if(sum2>0. && sum1/sum2-pow(sum3/sum2,2.) > 0.)
1821 spreadPt = pow(sum1/sum2-pow(sum3/sum2,2.),0.5);
1823 profilePt->SetBinContent(p,contentPt);
1824 profilePt->SetBinEntries(p,entryPt);
1826 profilePt->SetBinError(p,spreadPt);
1843 Int_t nBinsEta = profilePtEta->GetNbinsY();
1844 Double_t dEtaMin = (profilePtEta->GetYaxis())->GetXmin();
1845 Double_t dEtaMax = (profilePtEta->GetYaxis())->GetXmax();
1847 Int_t nBinsPt = profilePtEta->GetNbinsX();
1849 TProfile *profileEta =
new TProfile(
"",
"",nBinsEta,dEtaMin,dEtaMax);
1851 for(
Int_t e=1;e<=nBinsEta;e++)
1855 for(
Int_t p=1;p<=nBinsPt;p++)
1857 contentEta += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
1858 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1859 entryEta += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1861 profileEta->SetBinContent(e,contentEta);
1862 profileEta->SetBinEntries(e,entryEta);
1882 for(
Int_t b=0;b<4;b++)
1893 }
else if(type ==
"RP")
1903 }
else if(type ==
"POI")
1915 for(
Int_t b=0;b<4;b++)
1924 TString subtitle2 =
" (rebinned in M)";
1926 if(type !=
"RF, rebinned in M")
1930 subtitle.Append(type);
1931 subtitle.Append(
", without weights)");
1934 subtitle.Append(type);
1935 subtitle.Append(
", with weights)");
1941 subtitle.Append(
"RF");
1942 subtitle.Append(
", without weights)");
1945 subtitle.Append(
"RF");
1946 subtitle.Append(
", with weights)");
1951 cout<<
"*************************************"<<endl;
1952 cout<<
"*************************************"<<endl;
1953 cout<<title.Data()<<endl;
1954 cout<<subtitle.Data()<<endl;
1955 if(type ==
"RF, rebinned in M"){cout<<subtitle2.Data()<<endl;}
1958 for(
Int_t i=0;i<4;i++)
1960 cout<<
" v_"<<n<<
"{"<<2*(i+1)<<
"} = "<<dVn[i]<<
" +/- "<<dVnErr[i]<<endl;
1968 cout<<
" detector bias (corrected for): "<<endl;
1971 cout<<
" detector bias (not corrected for):"<<endl;
1977 if(type ==
"RF" || type ==
"RF, rebinned in M")
1981 else if (type ==
"RP")
1985 else if (type ==
"POI")
1990 cout<<
"*************************************"<<endl;
1991 cout<<
"*************************************"<<endl;
2001 TFile *output =
new TFile(outputFileName.Data(),
"RECREATE");
2017 outputFileName->Write(outputFileName->GetName(), TObject::kSingleKey);
2030 TString commonHistsName =
"AliFlowCommonHistQC";
2038 TString commonHists2ndOrderName =
"AliFlowCommonHist2ndOrderQC";
2043 TString commonHists4thOrderName =
"AliFlowCommonHist4thOrderQC";
2048 TString commonHists6thOrderName =
"AliFlowCommonHist6thOrderQC";
2053 TString commonHists8thOrderName =
"AliFlowCommonHist8thOrderQC";
2061 TString commonHistResults2ndOrderName =
"AliFlowCommonHistResults2ndOrderQC";
2066 TString commonHistResults4thOrderName =
"AliFlowCommonHistResults4thOrderQC";
2071 TString commonHistResults6thOrderName =
"AliFlowCommonHistResults6thOrderQC";
2076 TString commonHistResults8thOrderName =
"AliFlowCommonHistResults8thOrderQC";
2091 printf(
"\n WARNING (QC): fWeightsList is NULL in AFAWQC::BAFWH() !!!! \n\n");
2095 TString fUseParticleWeightsName =
"fUseParticleWeightsQC";
2097 fUseParticleWeights =
new TProfile(fUseParticleWeightsName.Data(),
"0 = particle weight not used, 1 = particle weight used ",6,0,6);
2287 TF1 *CenFit =
new TF1(
"CenFit",
"pol0", 0., 100.);
2290 Double_t CenAv = CenFit->GetParameter(0);
2302 Double_t CenAv = CenFit->GetParameter(0);
2304 Double_t SemiCenAv = CenFit->GetParameter(0);
2330 TString sinCosFlag[2] = {
"sin",
"cos"};
2331 TString powerFlag[2] = {
"linear",
"quadratic"};
2334 TString intFlowFlagsName =
"fIntFlowFlags";
2336 fIntFlowFlags =
new TProfile(intFlowFlagsName.Data(),
"Flags for Integrated Flow",20,0.,20.);
2342 fIntFlowFlags->GetXaxis()->SetBinLabel(1,
"Particle Weights");
2344 fIntFlowFlags->GetXaxis()->SetBinLabel(3,
"Corrected for NUA?");
2345 fIntFlowFlags->GetXaxis()->SetBinLabel(4,
"Print RF results");
2346 fIntFlowFlags->GetXaxis()->SetBinLabel(5,
"Print RP results");
2347 fIntFlowFlags->GetXaxis()->SetBinLabel(6,
"Print POI results");
2348 fIntFlowFlags->GetXaxis()->SetBinLabel(7,
"Print RF (rebinned in M) results");
2349 fIntFlowFlags->GetXaxis()->SetBinLabel(8,
"Corrected for NUA vs M?");
2350 fIntFlowFlags->GetXaxis()->SetBinLabel(9,
"Propagate errors to v_{n} from correlations?");
2351 fIntFlowFlags->GetXaxis()->SetBinLabel(10,
"Calculate cumulants vs M");
2352 fIntFlowFlags->GetXaxis()->SetBinLabel(11,
"fMinimumBiasReferenceFlow");
2353 fIntFlowFlags->GetXaxis()->SetBinLabel(12,
"fForgetAboutCovariances");
2355 fIntFlowFlags->GetXaxis()->SetBinLabel(14,
"fFillMultipleControlHistograms");
2356 fIntFlowFlags->GetXaxis()->SetBinLabel(15,
"Calculate all correlations vs M");
2357 fIntFlowFlags->GetXaxis()->SetBinLabel(16,
"fMultiplicityIs");
2359 fIntFlowFlags->GetXaxis()->SetBinLabel(18,
"fUse2DHistograms");
2360 fIntFlowFlags->GetXaxis()->SetBinLabel(19,
"fFillProfilesVsMUsingWeights");
2361 fIntFlowFlags->GetXaxis()->SetBinLabel(20,
"fUseQvectorTerms");
2366 fReQ =
new TMatrixD(12,9);
2367 fImQ =
new TMatrixD(12,9);
2368 fSpk =
new TMatrixD(8,9);
2370 TString intFlowCorrelationsEBEName =
"fIntFlowCorrelationsEBE";
2374 TString intFlowEventWeightsForCorrelationsEBEName =
"fIntFlowEventWeightsForCorrelationsEBE";
2375 intFlowEventWeightsForCorrelationsEBEName +=
fAnalysisLabel->Data();
2378 TString intFlowCorrelationsAllEBEName =
"fIntFlowCorrelationsAllEBE";
2383 TString fIntFlowCorrectionTermsForNUAEBEName =
"fIntFlowCorrectionTermsForNUAEBE";
2385 for(
Int_t sc=0;sc<2;sc++)
2387 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);
2390 TString fIntFlowEventWeightForCorrectionTermsForNUAEBEName =
"fIntFlowEventWeightForCorrectionTermsForNUAEBE";
2391 fIntFlowEventWeightForCorrectionTermsForNUAEBEName +=
fAnalysisLabel->Data();
2392 for(
Int_t sc=0;sc<2;sc++)
2398 TString avMultiplicityName =
"fAvMultiplicity";
2400 fAvMultiplicity =
new TProfile(avMultiplicityName.Data(),
"Average multiplicities of reference particles (RPs)",9,0,9);
2417 TString correlationFlag[4] = {
"#LT#LT2#GT#GT",
"#LT#LT4#GT#GT",
"#LT#LT6#GT#GT",
"#LT#LT8#GT#GT"};
2418 TString intFlowCorrelationsProName =
"fIntFlowCorrelationsPro";
2420 fIntFlowCorrelationsPro =
new TProfile(intFlowCorrelationsProName.Data(),
"Average correlations for all events",4,0,4,
"s");
2426 for(
Int_t b=0;b<4;b++)
2432 TString squaredCorrelationFlag[4] = {
"#LT#LT2#GT^{2}#GT",
"#LT#LT4#GT^{2}#GT",
"#LT#LT6#GT^{2}#GT",
"#LT#LT8#GT^{2}#GT"};
2433 TString intFlowSquaredCorrelationsProName =
"fIntFlowSquaredCorrelationsPro";
2441 for(
Int_t b=0;b<4;b++)
2448 for(
Int_t ci=0;ci<4;ci++)
2451 TString intFlowCorrelationsVsMProName =
"fIntFlowCorrelationsVsMPro";
2453 fIntFlowCorrelationsVsMPro[ci] =
new TProfile(Form(
"%s, %s",intFlowCorrelationsVsMProName.Data(),correlationFlag[ci].Data()),
2454 Form(
"%s vs multiplicity",correlationFlag[ci].
Data()),
2470 TString intFlowSquaredCorrelationsVsMProName =
"fIntFlowSquaredCorrelationsVsMPro";
2473 Form(
"%s vs multiplicity",squaredCorrelationFlag[ci].
Data()),
2491 TString intFlowCorrelationsAllProName =
"fIntFlowCorrelationsAllPro";
2493 fIntFlowCorrelationsAllPro =
new TProfile(intFlowCorrelationsAllProName.Data(),
"Average all correlations for all events",64,0,64);
2599 fIntFlowCorrelationsAllVsMPro[30] =
new TProfile(
"eight1n1n1n1n1n1n1n1n",
"#LT#LT8#GT#GT_{n,n,n,n|n,n,n,n}",
fnBinsMult,
fMinMult,
fMaxMult);
2633 for(
Int_t n=0;n<63;n++)
2655 TString intFlowExtraCorrelationsProName =
"fIntFlowExtraCorrelationsPro";
2657 fIntFlowExtraCorrelationsPro =
new TProfile(intFlowExtraCorrelationsProName.Data(),
"Average extra correlations for all events",100,0,100,
"s");
2668 TString productFlag[6] = {
"#LT#LT2#GT#LT4#GT#GT",
"#LT#LT2#GT#LT6#GT#GT",
"#LT#LT2#GT#LT8#GT#GT",
2669 "#LT#LT4#GT#LT6#GT#GT",
"#LT#LT4#GT#LT8#GT#GT",
"#LT#LT6#GT#LT8#GT#GT"};
2670 TString intFlowProductOfCorrelationsProName =
"fIntFlowProductOfCorrelationsPro";
2677 for(
Int_t b=0;b<6;b++)
2686 TString intFlowProductOfCorrelationsVsMProName =
"fIntFlowProductOfCorrelationsVsMPro";
2687 intFlowProductOfCorrelationsVsMProName +=
fAnalysisLabel->Data();
2691 Form(
"%s versus multiplicity",productFlag[
pi].
Data()),
2707 TString intFlowProductOfCorrectionTermsForNUAProName =
"fIntFlowProductOfCorrectionTermsForNUAPro";
2708 intFlowProductOfCorrectionTermsForNUAProName +=
fAnalysisLabel->Data();
2743 for(
Int_t sc=0;sc<2;sc++)
2745 TString intFlowCorrectionTermsForNUAProName =
"fIntFlowCorrectionTermsForNUAPro";
2747 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");
2760 TString correctionTermFlag[4] = {
"(n(phi1))",
"(n(phi1+phi2))",
"(n(phi1-phi2-phi3))",
"(n(2phi1-phi2))"};
2761 for(
Int_t ci=0;ci<4;ci++)
2763 TString intFlowCorrectionTermsForNUAVsMProName =
"fIntFlowCorrectionTermsForNUAVsMPro";
2764 intFlowCorrectionTermsForNUAVsMProName +=
fAnalysisLabel->Data();
2765 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");
2773 TString intFlowCorrelationsHistName =
"fIntFlowCorrelationsHist";
2788 for(
Int_t ci=0;ci<4;ci++)
2790 TString intFlowCorrelationsVsMHistName =
"fIntFlowCorrelationsVsMHist";
2793 Form(
"%s vs multiplicity",correlationFlag[ci].
Data()),
2810 TString intFlowCorrelationsAllHistName =
"fIntFlowCorrelationsAllHist";
2851 for(
Int_t sc=0;sc<2;sc++)
2853 TString intFlowCorrectionTermsForNUAHistName =
"fIntFlowCorrectionTermsForNUAHist";
2855 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);
2867 TString intFlowCovariancesName =
"fIntFlowCovariances";
2869 fIntFlowCovariances =
new TH1D(intFlowCovariancesName.Data(),
"Covariances (multiplied with weight dependent prefactor)",6,0,6);
2880 TString intFlowSumOfEventWeightsName =
"fIntFlowSumOfEventWeights";
2882 for(
Int_t power=0;power<2;power++)
2884 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);
2893 }
else if (power == 1)
2903 TString intFlowSumOfProductOfEventWeightsName =
"fIntFlowSumOfProductOfEventWeights";
2919 TString intFlowCovariancesVsMName =
"fIntFlowCovariancesVsM";
2921 TString covarianceFlag[6] = {
"Cov(<2>,<4>)",
"Cov(<2>,<6>)",
"Cov(<2>,<8>)",
"Cov(<4>,<6>)",
"Cov(<4>,<8>)",
"Cov(<6>,<8>)"};
2922 for(
Int_t ci=0;ci<6;ci++)
2925 Form(
"%s vs multiplicity",covarianceFlag[ci].
Data()),
2945 TString intFlowSumOfEventWeightsVsMName =
"fIntFlowSumOfEventWeightsVsM";
2947 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>}"},
2948 {
"#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}"}};
2949 for(
Int_t si=0;si<4;si++)
2951 for(
Int_t power=0;power<2;power++)
2954 Form(
"%s vs multiplicity",sumFlag[power][si].
Data()),
2976 TString intFlowSumOfProductOfEventWeightsVsMName =
"fIntFlowSumOfProductOfEventWeightsVsM";
2977 intFlowSumOfProductOfEventWeightsVsMName +=
fAnalysisLabel->Data();
2978 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>}",
2979 "#sum_{i=1}^{N} w_{<4>} w_{<6>}",
"#sum_{i=1}^{N} w_{<4>} w_{<8>}",
"#sum_{i=1}^{N} w_{<6>} w_{<8>}"};
2983 Form(
"%s versus multiplicity",sopowFlag[
pi].
Data()),
3000 TString intFlowCovariancesNUAName =
"fIntFlowCovariancesNUA";
3002 fIntFlowCovariancesNUA =
new TH1D(intFlowCovariancesNUAName.Data(),
"Covariances for NUA (multiplied with weight dependent prefactor)",27,0,27);
3021 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(16,
"Cov(<cos(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3022 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(17,
"Cov(<cos(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3025 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(20,
"Cov(<sin(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3026 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(21,
"Cov(<sin(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3027 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(22,
"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}+#phi_{2})>)");
3028 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(23,
"Cov(<cos(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3029 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(24,
"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3030 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(25,
"Cov(<sin(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3031 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(26,
"Cov(<sin(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3032 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(27,
"Cov(<cos(#phi_{1}-#phi_{2}-#phi_{3}>,<sin(#phi_{1}-#phi_{2}-#phi_{3}>)");
3035 TString intFlowSumOfEventWeightsNUAName =
"fIntFlowSumOfEventWeightsNUA";
3037 for(
Int_t sc=0;sc<2;sc++)
3039 for(
Int_t power=0;power<2;power++)
3041 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);
3050 }
else if(power == 1)
3054 (
fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(3,Form(
"#sum_{i=1}^{N} w_{<%s(#phi_{1}-#phi_{2}-#phi_{3})>}^{2}",sinCosFlag[sc].
Data()));
3061 TString intFlowSumOfProductOfEventWeightsNUAName =
"fIntFlowSumOfProductOfEventWeightsNUA";
3062 intFlowSumOfProductOfEventWeightsNUAName +=
fAnalysisLabel->Data();
3095 TString cumulantFlag[4] = {
"QC{2}",
"QC{4}",
"QC{6}",
"QC{8}"};
3096 TString intFlowQcumulantsName =
"fIntFlowQcumulants";
3101 fIntFlowQcumulants->SetTitle(
"Reference Q-cumulants (error from non-isotropic terms also propagated)");
3105 for(
Int_t b=0;b<4;b++)
3113 TString intFlowQcumulantsRebinnedInMName =
"fIntFlowQcumulantsRebinnedInM";
3118 for(
Int_t b=0;b<4;b++)
3125 TString intFlowQcumulantsErrorSquaredRatioName =
"fIntFlowQcumulantsErrorSquaredRatio";
3126 intFlowQcumulantsErrorSquaredRatioName +=
fAnalysisLabel->Data();
3130 for(
Int_t b=0;b<4;b++)
3138 TString intFlowQcumulantsVsMName =
"fIntFlowQcumulantsVsM";
3140 for(
Int_t co=0;co<4;co++)
3143 Form(
"%s vs multiplicity",cumulantFlag[co].
Data()),
3160 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)};
3161 TString intFlowName =
"fIntFlow";
3164 fIntFlow =
new TH1D(intFlowName.Data(),
"Reference flow estimates from Q-cumulants",4,0,4);
3167 for(
Int_t b=0;b<4;b++)
3169 (
fIntFlow->GetXaxis())->SetBinLabel(b+1,flowFlag[b].
Data());
3175 TString intFlowRebinnedInMName =
"fIntFlowRebinnedInM";
3177 fIntFlowRebinnedInM =
new TH1D(intFlowRebinnedInMName.Data(),
"Reference flow estimates from Q-cumulants (rebinned in M)",4,0,4);
3180 for(
Int_t b=0;b<4;b++)
3189 TString intFlowVsMName =
"fIntFlowVsM";
3191 for(
Int_t co=0;co<4;co++)
3193 fIntFlowVsM[co] =
new TH1D(Form(
"%s, %s",intFlowVsMName.Data(),flowFlag[co].Data()),
3194 Form(
"%s vs multiplicity",flowFlag[co].
Data()),
3201 fIntFlowVsM[co]->GetXaxis()->SetTitle(
"Reference multiplicity (from ESD)");
3211 TString intFlowDetectorBiasName =
"fIntFlowDetectorBias";
3216 for(
Int_t ci=0;ci<4;ci++)
3218 (
fIntFlowDetectorBias->GetXaxis())->SetBinLabel(ci+1,Form(
"#frac{corrected}{measured} %s",cumulantFlag[ci].
Data()));
3224 TString intFlowDetectorBiasVsMName =
"fIntFlowDetectorBiasVsM";
3226 for(
Int_t ci=0;ci<4;ci++)
3229 Form(
"Quantifying detector bias for %s vs multiplicity",cumulantFlag[ci].
Data()),
3258 TString controlHistogramsFlagsName =
"fControlHistogramsFlags";
3260 fControlHistogramsFlags =
new TProfile(controlHistogramsFlagsName.Data(),
"Flags for Control Histograms",2,0,2);
3274 TString sCorrelationNoRPsVsRefMultName =
"fCorrelationNoRPsVsRefMult";
3285 TString sCorrelationNoPOIsVsRefMultName =
"fCorrelationNoPOIsVsRefMult";
3296 TString sCorrelationNoRPsVsNoPOIsName =
"fCorrelationNoRPsVsNoPOIs";
3307 TString sCorrelation[4] = {
"#LT2#GT",
"#LT4#GT",
"#LT6#GT",
"#LT8#GT"};
3311 sMultiplicity =
"# RPs";
3314 sMultiplicity =
"Reference multiplicity (from ESD)";
3317 sMultiplicity =
"# POIs";
3319 for(
Int_t ci=0;ci<4;ci++)
3331 TString sCorrelationProduct[1] = {
"#LT2#GT#LT4#GT"};
3332 for(
Int_t cpi=0;cpi<1;cpi++)
3346 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}}"};
3347 for(
Int_t qvti=0;qvti<4;qvti++)
3374 TString bootstrapFlagsName =
"fBootstrapFlags";
3376 fBootstrapFlags =
new TProfile(bootstrapFlagsName.Data(),
"Flags for bootstrap",3,0,3);
3388 TString correlationFlag[4] = {
"#LT#LT2#GT#GT",
"#LT#LT4#GT#GT",
"#LT#LT6#GT#GT",
"#LT#LT8#GT#GT"};
3389 TString cumulantFlag[4] = {
"QC{2}",
"QC{4}",
"QC{6}",
"QC{8}"};
3393 TString bootstrapCorrelationsName =
"fBootstrapCorrelations";
3397 for(
Int_t ci=0;ci<4;ci++)
3407 TString bootstrapCumulantsName =
"fBootstrapCumulants";
3411 for(
Int_t co=0;co<4;co++)
3426 sMultiplicity =
"# RPs";
3429 sMultiplicity =
"Reference multiplicity (from ESD)";
3432 sMultiplicity =
"# POIs";
3437 TString bootstrapCorrelationsVsMName =
"fBootstrapCorrelationsVsM";
3439 for(
Int_t ci=0;ci<4;ci++)
3441 fBootstrapCorrelationsVsM[ci] =
new TProfile2D(Form(
"%s, %s",bootstrapCorrelationsVsMName.Data(),correlationFlag[ci].Data()),
3442 Form(
"Bootstrap Correlations Vs. M, %s",correlationFlag[ci].
Data()),
3453 TString bootstrapCumulantsVsMName =
"fBootstrapCumulantsVsM";
3455 for(
Int_t co=0;co<4;co++)
3458 Form(
"Bootstrap Cumulants Vs. M, %s",cumulantFlag[co].
Data()),
3484 TString mixedHarmonicsFlagsName =
"fMixedHarmonicsFlags";
3486 fMixedHarmonicsFlags =
new TProfile(mixedHarmonicsFlagsName.Data(),
"Flags for Mixed Harmonics",4,0,4);
3502 TString s2pCorrelationsName =
"f2pCorrelations";
3504 f2pCorrelations =
new TProfile(s2pCorrelationsName.Data(),Form(
"2-particle correlations (n = %d)",
fHarmonic),6,0,6,
"s");
3519 TString s3pCorrelationsName =
"f3pCorrelations";
3521 f3pCorrelations =
new TProfile(s3pCorrelationsName.Data(),Form(
"3-particle correlations (n = %d)",
fHarmonic),10,0,10,
"s");
3542 TString s4pCorrelationsName =
"f4pCorrelations";
3544 f4pCorrelations =
new TProfile(s4pCorrelationsName.Data(),Form(
"4-particle correlations (n = %d)",
fHarmonic),45,0,45,
"s");
3603 TString s5pCorrelationsName =
"f5pCorrelations";
3605 f5pCorrelations =
new TProfile(s5pCorrelationsName.Data(),Form(
"5-particle correlations (n = %d)",
fHarmonic),87,0,87,
"s");
3706 TString s6pCorrelationsName =
"f6pCorrelations";
3708 f6pCorrelations =
new TProfile(s6pCorrelationsName.Data(),Form(
"6-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3717 TString s7pCorrelationsName =
"f7pCorrelations";
3719 f7pCorrelations =
new TProfile(s7pCorrelationsName.Data(),Form(
"7-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3728 TString s8pCorrelationsName =
"f8pCorrelations";
3730 f8pCorrelations =
new TProfile(s8pCorrelationsName.Data(),Form(
"8-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3775 TString mixedHarmonicEventWeightsName =
"fMixedHarmonicEventWeights";
3777 TString powerFlag[2] = {
"linear",
"quadratic"};
3778 for(
Int_t power=0;power<2;power++)
3780 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.);
3794 }
else if (power == 1)
3809 TString mixedHarmonicProductOfEventWeightsName =
"fMixedHarmonicProductOfEventWeights";
3810 mixedHarmonicProductOfEventWeightsName +=
fAnalysisLabel->Data();
3815 for(
Int_t b=1;b<=8;b++)
3823 TString mixedHarmonicProductOfCorrelationsName =
"fMixedHarmonicProductOfCorrelations";
3824 mixedHarmonicProductOfCorrelationsName +=
fAnalysisLabel->Data();