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 fUsePhiEtaWeightsVtxDep(kFALSE),
118 fUseZDCESEMulWeights(kFALSE),
119 fUseZDCESESpecWeights(kFALSE),
120 fUseParticleWeights(NULL),
122 fMultiplicityWeight(NULL),
126 fIntFlowProfiles(NULL),
127 fIntFlowResults(NULL),
128 fIntFlowAllCorrelationsVsM(NULL),
130 fApplyCorrectionForNUA(kFALSE),
131 fApplyCorrectionForNUAVsM(kFALSE),
135 fPropagateErrorAlsoFromNIT(kFALSE),
136 fCalculateCumulantsVsM(kFALSE),
137 fCalculateAllCorrelationsVsM(kFALSE),
138 fMinimumBiasReferenceFlow(kTRUE),
139 fForgetAboutCovariances(kFALSE),
140 fStoreVarious(kFALSE),
142 fUse2DHistograms(kFALSE),
143 fFillProfilesVsMUsingWeights(kTRUE),
144 fUseQvectorTerms(kFALSE),
148 fIntFlowCorrelationsEBE(NULL),
149 fIntFlowEventWeightsForCorrelationsEBE(NULL),
150 fIntFlowCorrelationsAllEBE(NULL),
152 fNumberOfPOIsEBE(0.),
153 fReferenceMultiplicityEBE(0.),
155 fNewCentralityEBE(0.),
161 fCentralityCL1EBE(0.),
163 fCentralityTRKEBE(0.),
167 fAvMultiplicity(NULL),
168 fIntFlowCorrelationsPro(NULL),
169 fIntFlowSquaredCorrelationsPro(NULL),
170 fIntFlowCorrelationsAllPro(NULL),
171 fIntFlowExtraCorrelationsPro(NULL),
172 fIntFlowProductOfCorrelationsPro(NULL),
173 fIntFlowProductOfCorrectionTermsForNUAPro(NULL),
174 fIntFlowCorrelationsHist(NULL),
175 fIntFlowCorrelationsAllHist(NULL),
176 fIntFlowCovariances(NULL),
177 fIntFlowSumOfProductOfEventWeights(NULL),
178 fIntFlowCovariancesNUA(NULL),
179 fIntFlowSumOfProductOfEventWeightsNUA(NULL),
180 fIntFlowQcumulants(NULL),
181 fIntFlowQcumulantsRebinnedInM(NULL),
182 fIntFlowQcumulantsErrorSquaredRatio(NULL),
184 fIntFlowRebinnedInM(NULL),
185 fIntFlowDetectorBias(NULL),
188 fDiffFlowProfiles(NULL),
189 fDiffFlowResults(NULL),
191 fDiffFlowFlags(NULL),
192 fCalculateDiffFlow(kTRUE),
193 fCalculate2DDiffFlow(kFALSE),
194 fCalculateDiffFlowVsEta(kTRUE),
196 fOtherDiffCorrelatorsList(NULL),
198 fDistributionsList(NULL),
199 fDistributionsFlags(NULL),
200 fStoreDistributions(kFALSE),
201 fnBinsForCorrelations(10000),
203 fNestedLoopsList(NULL),
204 fEvaluateIntFlowNestedLoops(kFALSE),
205 fEvaluateDiffFlowNestedLoops(kFALSE),
206 fMaxAllowedMultiplicity(10),
207 fEvaluateNestedLoops(NULL),
208 fIntFlowDirectCorrelations(NULL),
209 fIntFlowExtraDirectCorrelations(NULL),
210 fCrossCheckInPtBinNo(10),
211 fCrossCheckInEtaBinNo(20),
212 fNoOfParticlesInBin(NULL),
213 fMixedHarmonicsNestedLoops(NULL),
215 fMixedHarmonicsList(NULL),
216 fMixedHarmonicsProfiles(NULL),
217 fMixedHarmonicsResults(NULL),
218 fMixedHarmonicsErrorPropagation(NULL),
219 fMixedHarmonicsFlags(NULL),
220 fCalculateMixedHarmonics(kFALSE),
221 fCalculateMixedHarmonicsVsM(kFALSE),
222 f2pCorrelations(NULL),
223 f3pCorrelations(NULL),
224 f4pCorrelations(NULL),
225 f5pCorrelations(NULL),
226 f6pCorrelations(NULL),
227 f7pCorrelations(NULL),
228 f8pCorrelations(NULL),
236 fMixedHarmonicProductOfEventWeights(NULL),
237 fMixedHarmonicProductOfCorrelations(NULL),
239 fControlHistogramsList(NULL),
240 fControlHistogramsFlags(NULL),
241 fStoreControlHistograms(kFALSE),
242 fCorrelationNoRPsVsRefMult(NULL),
243 fCorrelationNoPOIsVsRefMult(NULL),
244 fCorrelationNoRPsVsNoPOIs(NULL),
246 fBootstrapList(NULL),
247 fBootstrapProfilesList(NULL),
248 fBootstrapResultsList(NULL),
249 fBootstrapFlags(NULL),
250 fUseBootstrap(kFALSE),
251 fUseBootstrapVsM(kFALSE),
254 fBootstrapCorrelations(NULL),
255 fBootstrapCumulants(NULL),
260 fCalculateCRC(kTRUE),
261 fCalculateCRCPt(kFALSE),
262 fCalculateCME(kFALSE),
263 fCalculateCRC2(kFALSE),
264 fCalculateCRCVZ(kFALSE),
265 fCalculateCRCZDC(kFALSE),
266 fCalculateFlowQC(kFALSE),
267 fCalculateFlowZDC(kFALSE),
268 fCalculateFlowVZ(kFALSE),
269 fCalculateEbEFlow(kFALSE),
270 fUsePhiEtaCuts(kFALSE),
273 fRecenterZDC(kFALSE),
275 fUseCRCRecenter(kFALSE),
285 fCorrWeightTPC(kUnit),
286 fCorrWeightVZ(kUnit),
287 fCorrWeightZDC(kUnit),
290 fCRCCenBinWidth(CenWidth),
291 fCRCIntRbRList(NULL),
294 fInteractionRate(kAll),
295 fSelectCharge(kAllCh),
297 fCRCQVecWeightsList(NULL),
298 fCRCZDCCalibList(NULL),
299 fCRCZDCResList(NULL),
301 fPhiEtaCutsList(NULL),
305 fCRCZDCRbRList(NULL),
313 fFlowSPZDCList(NULL),
315 fFlowQCOrdMagList(NULL),
318 fFlowQCDeltaEta(0.4),
324 fQAZDCCutsFlag(kTRUE),
331 fHistList =
new TList();
332 fHistList->SetName(
"cobjQC");
333 fHistList->SetOwner(kTRUE);
336 fTempList =
new TList();
337 fTempList->SetName(
"temp");
338 fTempList->SetOwner(kTRUE);
341 fMultiplicityWeight =
new TString(
"combinations");
344 fAnalysisLabel =
new TString();
347 this->InitializeArraysForIntFlow();
348 this->InitializeArraysForDiffFlow();
349 this->InitializeArraysForDistributions();
350 this->InitializeArraysForVarious();
351 this->InitializeArraysForNestedLoops();
352 this->InitializeArraysForMixedHarmonics();
353 this->InitializeArraysForControlHistograms();
354 this->InitializeArraysForBootstrap();
359 this->InitializeCostantsForCRC();
360 this->InitializeArraysForParticleWeights();
361 this->InitializeArraysForCRC();
362 this->InitializeArraysForCRCVZ();
363 this->InitializeArraysForCRCZDC();
364 this->InitializeArraysForCRC2();
365 this->InitializeArraysForQVec();
366 this->InitializeArraysForCRCPt();
367 this->InitializeArraysForCME();
368 this->InitializeArraysForFlowEbE();
369 this->InitializeArraysForFlowQC();
370 this->InitializeArraysForFlowQCHighOrders();
371 this->InitializeArraysForFlowSPZDC();
372 this->InitializeArraysForFlowSPVZ();
373 this->InitializeArraysForEbEFlow();
416 Bool_t oldHistAddStatus = TH1::AddDirectoryStatus();
417 TH1::AddDirectory(kFALSE);
470 TH1::AddDirectory(oldHistAddStatus);
511 Int_t nCounterNoRPs = 0;
548 if(fRunBin<0 || fRunBin>=
fCRCnRun) {
return;}
550 if(fCenBin<0 || fCenBin>=
fCRCnCen) {
return;}
602 AliWarning(Form(
"WARNING: cenphieta weights not found for run %d! \n",
fRunNum));
609 AliWarning(Form(
"WARNING: pch cenphieta weights not found for run %d! \n",
fRunNum));
614 AliWarning(Form(
"WARNING: nch cenphieta weights not found for run %d! \n",
fRunNum));
621 AliWarning(Form(
"WARNING: cenphieta cut not found for run %d! \n",
fRunNum));
637 for(
Int_t i=0;i<nPrim;i++) {
647 dPhi = aftsTrack->
Phi();
648 dPt = aftsTrack->
Pt();
649 dEta = aftsTrack->
Eta();
650 dCharge = aftsTrack->
Charge();
655 cw = (dCharge > 0. ? 0 : 1);
678 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
684 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
689 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
693 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
698 if(
fRandom->Uniform(1.)>wProbCut)
continue;
707 for(
Int_t m=0;m<12;m++)
709 for(
Int_t k=0;k<9;k++)
711 (*fReQ)(m,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1)*n*dPhi);
712 (*fImQ)(m,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1)*n*dPhi);
716 for(
Int_t p=0;p<8;p++)
718 for(
Int_t k=0;k<9;k++)
720 (*fSpk)(p,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k);
729 for(
Int_t k=0;k<9;k++)
731 for(
Int_t m=0;m<4;m++)
737 fReRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
738 fImRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
741 fs1dEBE[0][pe][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
747 fReRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
748 fImRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
751 fs2dEBE[0][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
760 for(
Int_t k=0;k<9;k++)
762 for(
Int_t m=0;m<4;m++)
768 fReRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
769 fImRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
772 fs1dEBE[2][pe][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
778 fReRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
779 fImRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
782 fs2dEBE[2][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
818 dPhi = aftsTrack->
Phi();
819 dPt = aftsTrack->
Pt();
820 dEta = aftsTrack->
Eta();
821 dCharge = aftsTrack->
Charge();
826 cw = (dCharge > 0. ? 0 : 1);
849 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
855 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
860 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
864 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
869 if(
fRandom->Uniform(1.)>wProbCut)
continue;
880 for(
Int_t k=0;k<9;k++)
882 for(
Int_t m=0;m<4;m++)
888 fReRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
889 fImRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
894 fReRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
895 fImRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
903 fCRCQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
904 fCRCQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
905 fCRCMult[cw][h]->Fill(dEta,wPhiEta);
907 fCRC2QRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
908 fCRC2QIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
909 fCRC2Mul[cw][h]->Fill(dEta,wPhiEta);
911 fCRCZDCQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
912 fCRCZDCQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
916 fCRC2QRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
917 fCRC2QIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
922 fCRCZDCQRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
923 fCRCZDCQIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
926 fCRCZDCQRe[3][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
927 fCRCZDCQIm[3][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
935 if(weraw > 0.) SpecWeig = 1./weraw;
937 fCMEQRe[cw][h]->Fill(dEta,SpecWeig*wPhiEta*TMath::Cos((h+1.)*dPhi));
938 fCMEQIm[cw][h]->Fill(dEta,SpecWeig*wPhiEta*TMath::Sin((h+1.)*dPhi));
939 fCMEMult[cw][h]->Fill(dEta,SpecWeig*wPhiEta);
940 fCMEQRe[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.)*TMath::Cos((h+1.)*dPhi));
941 fCMEQIm[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.)*TMath::Sin((h+1.)*dPhi));
942 fCMEMult[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.));
954 fPOIPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
955 fPOIPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
958 fPOIPhiDiffQRe[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
959 fPOIPhiDiffQIm[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
963 Int_t keta = (dEta<0.?0:1);
964 fPOIPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
965 fPOIPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
967 fPOIPhiDiffQReEG[keta][k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
968 fPOIPhiDiffQImEG[keta][k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
972 if(fabs(dEta)<0.6 && fabs(dEta)>0.3) {
973 Int_t keta = (dEta<0.?0:1);
974 fPOIPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
975 fPOIPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
983 fEtaDiffQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
984 fEtaDiffQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
997 printf(
"\n WARNING (QC): No particle (i.e. aftsTrack is a NULL pointer in AFAWQC::Make())!!!!\n\n");
1005 for(
Int_t p=0;p<8;p++)
1007 for(
Int_t k=0;k<9;k++)
1009 (*fSpk)(p,k)=pow((*
fSpk)(p,k),p+1);
1438 cout<<
"Skipping the event because multiplicity is "<<nPrim<<
". Too high to evaluate nested loops!"<<endl;
1442 cout<<
"Skipping the event because multiplicity is "<<nPrim<<
"."<<endl;
1578 cosP1n = dReQ1n/dMult;
1596 cosP1nP1n = (pow(dReQ1n,2)-pow(dImQ1n,2)-dReQ2n)/(dMult*(dMult-1));
1597 cosP2nM1n = (dReQ2n*dReQ1n+dImQ2n*dImQ1n-dReQ1n)/(dMult*(dMult-1));
1621 cosP1nM1nM1n = (dReQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2))-dReQ1n*dReQ2n-dImQ1n*dImQ2n-2.*(dMult-1)*dReQ1n)
1622 / (dMult*(dMult-1)*(dMult-2));
1687 sinP1n = dImQ1n/dMult;
1704 sinP1nP1n = (2.*dReQ1n*dImQ1n-dImQ2n)/(dMult*(dMult-1));
1705 sinP2nM1n = (dImQ2n*dReQ1n-dReQ2n*dImQ1n-dImQ1n)/(dMult*(dMult-1));
1729 sinP1nM1nM1n = (-dImQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2))+dReQ1n*dImQ2n-dImQ1n*dReQ2n+2.*(dMult-1)*dImQ1n)
1730 / (dMult*(dMult-1)*(dMult-2));
1760 if(outputListHistos)
1765 printf(
"\n WARNING (QC): fHistList is NULL in AFAWQC::GOH() !!!!\n\n");
1793 printf(
"\n WARNING (QC): outputListHistos is NULL in AFAWQC::GOH() !!!!\n\n");
1805 Int_t nBinsPt = profilePtEta->GetNbinsX();
1806 Double_t dPtMin = (profilePtEta->GetXaxis())->GetXmin();
1807 Double_t dPtMax = (profilePtEta->GetXaxis())->GetXmax();
1809 Int_t nBinsEta = profilePtEta->GetNbinsY();
1811 TProfile *profilePt =
new TProfile(
"",
"",nBinsPt,dPtMin,dPtMax);
1813 for(
Int_t p=1;p<=nBinsPt;p++)
1821 for(
Int_t e=1;e<=nBinsEta;e++)
1823 contentPt += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
1824 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1825 entryPt += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1827 sum1 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
1828 * (pow(profilePtEta->GetBinError(profilePtEta->GetBin(p,e)),2.)
1829 + pow(profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)),2.));
1830 sum2 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1831 sum3 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
1832 * (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)));
1834 if(sum2>0. && sum1/sum2-pow(sum3/sum2,2.) > 0.)
1836 spreadPt = pow(sum1/sum2-pow(sum3/sum2,2.),0.5);
1838 profilePt->SetBinContent(p,contentPt);
1839 profilePt->SetBinEntries(p,entryPt);
1841 profilePt->SetBinError(p,spreadPt);
1858 Int_t nBinsEta = profilePtEta->GetNbinsY();
1859 Double_t dEtaMin = (profilePtEta->GetYaxis())->GetXmin();
1860 Double_t dEtaMax = (profilePtEta->GetYaxis())->GetXmax();
1862 Int_t nBinsPt = profilePtEta->GetNbinsX();
1864 TProfile *profileEta =
new TProfile(
"",
"",nBinsEta,dEtaMin,dEtaMax);
1866 for(
Int_t e=1;e<=nBinsEta;e++)
1870 for(
Int_t p=1;p<=nBinsPt;p++)
1872 contentEta += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
1873 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1874 entryEta += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1876 profileEta->SetBinContent(e,contentEta);
1877 profileEta->SetBinEntries(e,entryEta);
1897 for(
Int_t b=0;b<4;b++)
1908 }
else if(type ==
"RP")
1918 }
else if(type ==
"POI")
1930 for(
Int_t b=0;b<4;b++)
1939 TString subtitle2 =
" (rebinned in M)";
1941 if(type !=
"RF, rebinned in M")
1945 subtitle.Append(type);
1946 subtitle.Append(
", without weights)");
1949 subtitle.Append(type);
1950 subtitle.Append(
", with weights)");
1956 subtitle.Append(
"RF");
1957 subtitle.Append(
", without weights)");
1960 subtitle.Append(
"RF");
1961 subtitle.Append(
", with weights)");
1966 cout<<
"*************************************"<<endl;
1967 cout<<
"*************************************"<<endl;
1968 cout<<title.Data()<<endl;
1969 cout<<subtitle.Data()<<endl;
1970 if(type ==
"RF, rebinned in M"){cout<<subtitle2.Data()<<endl;}
1973 for(
Int_t i=0;i<4;i++)
1975 cout<<
" v_"<<n<<
"{"<<2*(i+1)<<
"} = "<<dVn[i]<<
" +/- "<<dVnErr[i]<<endl;
1983 cout<<
" detector bias (corrected for): "<<endl;
1986 cout<<
" detector bias (not corrected for):"<<endl;
1992 if(type ==
"RF" || type ==
"RF, rebinned in M")
1996 else if (type ==
"RP")
2000 else if (type ==
"POI")
2005 cout<<
"*************************************"<<endl;
2006 cout<<
"*************************************"<<endl;
2016 TFile *output =
new TFile(outputFileName.Data(),
"RECREATE");
2032 outputFileName->Write(outputFileName->GetName(), TObject::kSingleKey);
2045 TString commonHistsName =
"AliFlowCommonHistQC";
2053 TString commonHists2ndOrderName =
"AliFlowCommonHist2ndOrderQC";
2058 TString commonHists4thOrderName =
"AliFlowCommonHist4thOrderQC";
2063 TString commonHists6thOrderName =
"AliFlowCommonHist6thOrderQC";
2068 TString commonHists8thOrderName =
"AliFlowCommonHist8thOrderQC";
2076 TString commonHistResults2ndOrderName =
"AliFlowCommonHistResults2ndOrderQC";
2081 TString commonHistResults4thOrderName =
"AliFlowCommonHistResults4thOrderQC";
2086 TString commonHistResults6thOrderName =
"AliFlowCommonHistResults6thOrderQC";
2091 TString commonHistResults8thOrderName =
"AliFlowCommonHistResults8thOrderQC";
2106 printf(
"\n WARNING (QC): fWeightsList is NULL in AFAWQC::BAFWH() !!!! \n\n");
2110 TString fUseParticleWeightsName =
"fUseParticleWeightsQC";
2112 fUseParticleWeights =
new TProfile(fUseParticleWeightsName.Data(),
"0 = particle weight not used, 1 = particle weight used ",7,0,7);
2303 TF1 *CenFit =
new TF1(
"CenFit",
"pol0", 0., 100.);
2306 Double_t CenAv = CenFit->GetParameter(0);
2318 Double_t CenAv = CenFit->GetParameter(0);
2320 Double_t SemiCenAv = CenFit->GetParameter(0);
2346 TString sinCosFlag[2] = {
"sin",
"cos"};
2347 TString powerFlag[2] = {
"linear",
"quadratic"};
2350 TString intFlowFlagsName =
"fIntFlowFlags";
2352 fIntFlowFlags =
new TProfile(intFlowFlagsName.Data(),
"Flags for Integrated Flow",20,0.,20.);
2358 fIntFlowFlags->GetXaxis()->SetBinLabel(1,
"Particle Weights");
2360 fIntFlowFlags->GetXaxis()->SetBinLabel(3,
"Corrected for NUA?");
2361 fIntFlowFlags->GetXaxis()->SetBinLabel(4,
"Print RF results");
2362 fIntFlowFlags->GetXaxis()->SetBinLabel(5,
"Print RP results");
2363 fIntFlowFlags->GetXaxis()->SetBinLabel(6,
"Print POI results");
2364 fIntFlowFlags->GetXaxis()->SetBinLabel(7,
"Print RF (rebinned in M) results");
2365 fIntFlowFlags->GetXaxis()->SetBinLabel(8,
"Corrected for NUA vs M?");
2366 fIntFlowFlags->GetXaxis()->SetBinLabel(9,
"Propagate errors to v_{n} from correlations?");
2367 fIntFlowFlags->GetXaxis()->SetBinLabel(10,
"Calculate cumulants vs M");
2368 fIntFlowFlags->GetXaxis()->SetBinLabel(11,
"fMinimumBiasReferenceFlow");
2369 fIntFlowFlags->GetXaxis()->SetBinLabel(12,
"fForgetAboutCovariances");
2371 fIntFlowFlags->GetXaxis()->SetBinLabel(14,
"fFillMultipleControlHistograms");
2372 fIntFlowFlags->GetXaxis()->SetBinLabel(15,
"Calculate all correlations vs M");
2373 fIntFlowFlags->GetXaxis()->SetBinLabel(16,
"fMultiplicityIs");
2375 fIntFlowFlags->GetXaxis()->SetBinLabel(18,
"fUse2DHistograms");
2376 fIntFlowFlags->GetXaxis()->SetBinLabel(19,
"fFillProfilesVsMUsingWeights");
2377 fIntFlowFlags->GetXaxis()->SetBinLabel(20,
"fUseQvectorTerms");
2382 fReQ =
new TMatrixD(12,9);
2383 fImQ =
new TMatrixD(12,9);
2384 fSpk =
new TMatrixD(8,9);
2386 TString intFlowCorrelationsEBEName =
"fIntFlowCorrelationsEBE";
2390 TString intFlowEventWeightsForCorrelationsEBEName =
"fIntFlowEventWeightsForCorrelationsEBE";
2391 intFlowEventWeightsForCorrelationsEBEName +=
fAnalysisLabel->Data();
2394 TString intFlowCorrelationsAllEBEName =
"fIntFlowCorrelationsAllEBE";
2399 TString fIntFlowCorrectionTermsForNUAEBEName =
"fIntFlowCorrectionTermsForNUAEBE";
2401 for(
Int_t sc=0;sc<2;sc++)
2403 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);
2406 TString fIntFlowEventWeightForCorrectionTermsForNUAEBEName =
"fIntFlowEventWeightForCorrectionTermsForNUAEBE";
2407 fIntFlowEventWeightForCorrectionTermsForNUAEBEName +=
fAnalysisLabel->Data();
2408 for(
Int_t sc=0;sc<2;sc++)
2414 TString avMultiplicityName =
"fAvMultiplicity";
2416 fAvMultiplicity =
new TProfile(avMultiplicityName.Data(),
"Average multiplicities of reference particles (RPs)",9,0,9);
2433 TString correlationFlag[4] = {
"#LT#LT2#GT#GT",
"#LT#LT4#GT#GT",
"#LT#LT6#GT#GT",
"#LT#LT8#GT#GT"};
2434 TString intFlowCorrelationsProName =
"fIntFlowCorrelationsPro";
2436 fIntFlowCorrelationsPro =
new TProfile(intFlowCorrelationsProName.Data(),
"Average correlations for all events",4,0,4,
"s");
2442 for(
Int_t b=0;b<4;b++)
2448 TString squaredCorrelationFlag[4] = {
"#LT#LT2#GT^{2}#GT",
"#LT#LT4#GT^{2}#GT",
"#LT#LT6#GT^{2}#GT",
"#LT#LT8#GT^{2}#GT"};
2449 TString intFlowSquaredCorrelationsProName =
"fIntFlowSquaredCorrelationsPro";
2457 for(
Int_t b=0;b<4;b++)
2464 for(
Int_t ci=0;ci<4;ci++)
2467 TString intFlowCorrelationsVsMProName =
"fIntFlowCorrelationsVsMPro";
2469 fIntFlowCorrelationsVsMPro[ci] =
new TProfile(Form(
"%s, %s",intFlowCorrelationsVsMProName.Data(),correlationFlag[ci].Data()),
2470 Form(
"%s vs multiplicity",correlationFlag[ci].
Data()),
2486 TString intFlowSquaredCorrelationsVsMProName =
"fIntFlowSquaredCorrelationsVsMPro";
2489 Form(
"%s vs multiplicity",squaredCorrelationFlag[ci].
Data()),
2507 TString intFlowCorrelationsAllProName =
"fIntFlowCorrelationsAllPro";
2509 fIntFlowCorrelationsAllPro =
new TProfile(intFlowCorrelationsAllProName.Data(),
"Average all correlations for all events",64,0,64);
2615 fIntFlowCorrelationsAllVsMPro[30] =
new TProfile(
"eight1n1n1n1n1n1n1n1n",
"#LT#LT8#GT#GT_{n,n,n,n|n,n,n,n}",
fnBinsMult,
fMinMult,
fMaxMult);
2649 for(
Int_t n=0;n<63;n++)
2671 TString intFlowExtraCorrelationsProName =
"fIntFlowExtraCorrelationsPro";
2673 fIntFlowExtraCorrelationsPro =
new TProfile(intFlowExtraCorrelationsProName.Data(),
"Average extra correlations for all events",100,0,100,
"s");
2684 TString productFlag[6] = {
"#LT#LT2#GT#LT4#GT#GT",
"#LT#LT2#GT#LT6#GT#GT",
"#LT#LT2#GT#LT8#GT#GT",
2685 "#LT#LT4#GT#LT6#GT#GT",
"#LT#LT4#GT#LT8#GT#GT",
"#LT#LT6#GT#LT8#GT#GT"};
2686 TString intFlowProductOfCorrelationsProName =
"fIntFlowProductOfCorrelationsPro";
2693 for(
Int_t b=0;b<6;b++)
2702 TString intFlowProductOfCorrelationsVsMProName =
"fIntFlowProductOfCorrelationsVsMPro";
2703 intFlowProductOfCorrelationsVsMProName +=
fAnalysisLabel->Data();
2707 Form(
"%s versus multiplicity",productFlag[
pi].
Data()),
2723 TString intFlowProductOfCorrectionTermsForNUAProName =
"fIntFlowProductOfCorrectionTermsForNUAPro";
2724 intFlowProductOfCorrectionTermsForNUAProName +=
fAnalysisLabel->Data();
2759 for(
Int_t sc=0;sc<2;sc++)
2761 TString intFlowCorrectionTermsForNUAProName =
"fIntFlowCorrectionTermsForNUAPro";
2763 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");
2776 TString correctionTermFlag[4] = {
"(n(phi1))",
"(n(phi1+phi2))",
"(n(phi1-phi2-phi3))",
"(n(2phi1-phi2))"};
2777 for(
Int_t ci=0;ci<4;ci++)
2779 TString intFlowCorrectionTermsForNUAVsMProName =
"fIntFlowCorrectionTermsForNUAVsMPro";
2780 intFlowCorrectionTermsForNUAVsMProName +=
fAnalysisLabel->Data();
2781 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");
2789 TString intFlowCorrelationsHistName =
"fIntFlowCorrelationsHist";
2804 for(
Int_t ci=0;ci<4;ci++)
2806 TString intFlowCorrelationsVsMHistName =
"fIntFlowCorrelationsVsMHist";
2809 Form(
"%s vs multiplicity",correlationFlag[ci].
Data()),
2826 TString intFlowCorrelationsAllHistName =
"fIntFlowCorrelationsAllHist";
2867 for(
Int_t sc=0;sc<2;sc++)
2869 TString intFlowCorrectionTermsForNUAHistName =
"fIntFlowCorrectionTermsForNUAHist";
2871 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);
2883 TString intFlowCovariancesName =
"fIntFlowCovariances";
2885 fIntFlowCovariances =
new TH1D(intFlowCovariancesName.Data(),
"Covariances (multiplied with weight dependent prefactor)",6,0,6);
2896 TString intFlowSumOfEventWeightsName =
"fIntFlowSumOfEventWeights";
2898 for(
Int_t power=0;power<2;power++)
2900 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);
2909 }
else if (power == 1)
2919 TString intFlowSumOfProductOfEventWeightsName =
"fIntFlowSumOfProductOfEventWeights";
2935 TString intFlowCovariancesVsMName =
"fIntFlowCovariancesVsM";
2937 TString covarianceFlag[6] = {
"Cov(<2>,<4>)",
"Cov(<2>,<6>)",
"Cov(<2>,<8>)",
"Cov(<4>,<6>)",
"Cov(<4>,<8>)",
"Cov(<6>,<8>)"};
2938 for(
Int_t ci=0;ci<6;ci++)
2941 Form(
"%s vs multiplicity",covarianceFlag[ci].
Data()),
2961 TString intFlowSumOfEventWeightsVsMName =
"fIntFlowSumOfEventWeightsVsM";
2963 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>}"},
2964 {
"#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}"}};
2965 for(
Int_t si=0;si<4;si++)
2967 for(
Int_t power=0;power<2;power++)
2970 Form(
"%s vs multiplicity",sumFlag[power][si].
Data()),
2992 TString intFlowSumOfProductOfEventWeightsVsMName =
"fIntFlowSumOfProductOfEventWeightsVsM";
2993 intFlowSumOfProductOfEventWeightsVsMName +=
fAnalysisLabel->Data();
2994 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>}",
2995 "#sum_{i=1}^{N} w_{<4>} w_{<6>}",
"#sum_{i=1}^{N} w_{<4>} w_{<8>}",
"#sum_{i=1}^{N} w_{<6>} w_{<8>}"};
2999 Form(
"%s versus multiplicity",sopowFlag[
pi].
Data()),
3016 TString intFlowCovariancesNUAName =
"fIntFlowCovariancesNUA";
3018 fIntFlowCovariancesNUA =
new TH1D(intFlowCovariancesNUAName.Data(),
"Covariances for NUA (multiplied with weight dependent prefactor)",27,0,27);
3037 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(16,
"Cov(<cos(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3038 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(17,
"Cov(<cos(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3041 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(20,
"Cov(<sin(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3042 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(21,
"Cov(<sin(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3043 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(22,
"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}+#phi_{2})>)");
3044 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(23,
"Cov(<cos(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3045 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(24,
"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3046 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(25,
"Cov(<sin(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3047 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(26,
"Cov(<sin(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3048 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(27,
"Cov(<cos(#phi_{1}-#phi_{2}-#phi_{3}>,<sin(#phi_{1}-#phi_{2}-#phi_{3}>)");
3051 TString intFlowSumOfEventWeightsNUAName =
"fIntFlowSumOfEventWeightsNUA";
3053 for(
Int_t sc=0;sc<2;sc++)
3055 for(
Int_t power=0;power<2;power++)
3057 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);
3066 }
else if(power == 1)
3070 (
fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(3,Form(
"#sum_{i=1}^{N} w_{<%s(#phi_{1}-#phi_{2}-#phi_{3})>}^{2}",sinCosFlag[sc].
Data()));
3077 TString intFlowSumOfProductOfEventWeightsNUAName =
"fIntFlowSumOfProductOfEventWeightsNUA";
3078 intFlowSumOfProductOfEventWeightsNUAName +=
fAnalysisLabel->Data();
3111 TString cumulantFlag[4] = {
"QC{2}",
"QC{4}",
"QC{6}",
"QC{8}"};
3112 TString intFlowQcumulantsName =
"fIntFlowQcumulants";
3117 fIntFlowQcumulants->SetTitle(
"Reference Q-cumulants (error from non-isotropic terms also propagated)");
3121 for(
Int_t b=0;b<4;b++)
3129 TString intFlowQcumulantsRebinnedInMName =
"fIntFlowQcumulantsRebinnedInM";
3134 for(
Int_t b=0;b<4;b++)
3141 TString intFlowQcumulantsErrorSquaredRatioName =
"fIntFlowQcumulantsErrorSquaredRatio";
3142 intFlowQcumulantsErrorSquaredRatioName +=
fAnalysisLabel->Data();
3146 for(
Int_t b=0;b<4;b++)
3154 TString intFlowQcumulantsVsMName =
"fIntFlowQcumulantsVsM";
3156 for(
Int_t co=0;co<4;co++)
3159 Form(
"%s vs multiplicity",cumulantFlag[co].
Data()),
3176 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)};
3177 TString intFlowName =
"fIntFlow";
3180 fIntFlow =
new TH1D(intFlowName.Data(),
"Reference flow estimates from Q-cumulants",4,0,4);
3183 for(
Int_t b=0;b<4;b++)
3185 (
fIntFlow->GetXaxis())->SetBinLabel(b+1,flowFlag[b].
Data());
3191 TString intFlowRebinnedInMName =
"fIntFlowRebinnedInM";
3193 fIntFlowRebinnedInM =
new TH1D(intFlowRebinnedInMName.Data(),
"Reference flow estimates from Q-cumulants (rebinned in M)",4,0,4);
3196 for(
Int_t b=0;b<4;b++)
3205 TString intFlowVsMName =
"fIntFlowVsM";
3207 for(
Int_t co=0;co<4;co++)
3209 fIntFlowVsM[co] =
new TH1D(Form(
"%s, %s",intFlowVsMName.Data(),flowFlag[co].Data()),
3210 Form(
"%s vs multiplicity",flowFlag[co].
Data()),
3217 fIntFlowVsM[co]->GetXaxis()->SetTitle(
"Reference multiplicity (from ESD)");
3227 TString intFlowDetectorBiasName =
"fIntFlowDetectorBias";
3232 for(
Int_t ci=0;ci<4;ci++)
3234 (
fIntFlowDetectorBias->GetXaxis())->SetBinLabel(ci+1,Form(
"#frac{corrected}{measured} %s",cumulantFlag[ci].
Data()));
3240 TString intFlowDetectorBiasVsMName =
"fIntFlowDetectorBiasVsM";
3242 for(
Int_t ci=0;ci<4;ci++)
3245 Form(
"Quantifying detector bias for %s vs multiplicity",cumulantFlag[ci].
Data()),
3274 TString controlHistogramsFlagsName =
"fControlHistogramsFlags";
3276 fControlHistogramsFlags =
new TProfile(controlHistogramsFlagsName.Data(),
"Flags for Control Histograms",2,0,2);
3290 TString sCorrelationNoRPsVsRefMultName =
"fCorrelationNoRPsVsRefMult";
3301 TString sCorrelationNoPOIsVsRefMultName =
"fCorrelationNoPOIsVsRefMult";
3312 TString sCorrelationNoRPsVsNoPOIsName =
"fCorrelationNoRPsVsNoPOIs";
3323 TString sCorrelation[4] = {
"#LT2#GT",
"#LT4#GT",
"#LT6#GT",
"#LT8#GT"};
3327 sMultiplicity =
"# RPs";
3330 sMultiplicity =
"Reference multiplicity (from ESD)";
3333 sMultiplicity =
"# POIs";
3335 for(
Int_t ci=0;ci<4;ci++)
3347 TString sCorrelationProduct[1] = {
"#LT2#GT#LT4#GT"};
3348 for(
Int_t cpi=0;cpi<1;cpi++)
3362 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}}"};
3363 for(
Int_t qvti=0;qvti<4;qvti++)
3390 TString bootstrapFlagsName =
"fBootstrapFlags";
3392 fBootstrapFlags =
new TProfile(bootstrapFlagsName.Data(),
"Flags for bootstrap",3,0,3);
3404 TString correlationFlag[4] = {
"#LT#LT2#GT#GT",
"#LT#LT4#GT#GT",
"#LT#LT6#GT#GT",
"#LT#LT8#GT#GT"};
3405 TString cumulantFlag[4] = {
"QC{2}",
"QC{4}",
"QC{6}",
"QC{8}"};
3409 TString bootstrapCorrelationsName =
"fBootstrapCorrelations";
3413 for(
Int_t ci=0;ci<4;ci++)
3423 TString bootstrapCumulantsName =
"fBootstrapCumulants";
3427 for(
Int_t co=0;co<4;co++)
3442 sMultiplicity =
"# RPs";
3445 sMultiplicity =
"Reference multiplicity (from ESD)";
3448 sMultiplicity =
"# POIs";
3453 TString bootstrapCorrelationsVsMName =
"fBootstrapCorrelationsVsM";
3455 for(
Int_t ci=0;ci<4;ci++)
3457 fBootstrapCorrelationsVsM[ci] =
new TProfile2D(Form(
"%s, %s",bootstrapCorrelationsVsMName.Data(),correlationFlag[ci].Data()),
3458 Form(
"Bootstrap Correlations Vs. M, %s",correlationFlag[ci].
Data()),
3469 TString bootstrapCumulantsVsMName =
"fBootstrapCumulantsVsM";
3471 for(
Int_t co=0;co<4;co++)
3474 Form(
"Bootstrap Cumulants Vs. M, %s",cumulantFlag[co].
Data()),
3500 TString mixedHarmonicsFlagsName =
"fMixedHarmonicsFlags";
3502 fMixedHarmonicsFlags =
new TProfile(mixedHarmonicsFlagsName.Data(),
"Flags for Mixed Harmonics",4,0,4);
3518 TString s2pCorrelationsName =
"f2pCorrelations";
3520 f2pCorrelations =
new TProfile(s2pCorrelationsName.Data(),Form(
"2-particle correlations (n = %d)",
fHarmonic),6,0,6,
"s");
3535 TString s3pCorrelationsName =
"f3pCorrelations";
3537 f3pCorrelations =
new TProfile(s3pCorrelationsName.Data(),Form(
"3-particle correlations (n = %d)",
fHarmonic),10,0,10,
"s");
3558 TString s4pCorrelationsName =
"f4pCorrelations";
3560 f4pCorrelations =
new TProfile(s4pCorrelationsName.Data(),Form(
"4-particle correlations (n = %d)",
fHarmonic),45,0,45,
"s");
3619 TString s5pCorrelationsName =
"f5pCorrelations";
3621 f5pCorrelations =
new TProfile(s5pCorrelationsName.Data(),Form(
"5-particle correlations (n = %d)",
fHarmonic),87,0,87,
"s");
3722 TString s6pCorrelationsName =
"f6pCorrelations";
3724 f6pCorrelations =
new TProfile(s6pCorrelationsName.Data(),Form(
"6-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3733 TString s7pCorrelationsName =
"f7pCorrelations";
3735 f7pCorrelations =
new TProfile(s7pCorrelationsName.Data(),Form(
"7-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3744 TString s8pCorrelationsName =
"f8pCorrelations";
3746 f8pCorrelations =
new TProfile(s8pCorrelationsName.Data(),Form(
"8-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3791 TString mixedHarmonicEventWeightsName =
"fMixedHarmonicEventWeights";
3793 TString powerFlag[2] = {
"linear",
"quadratic"};
3794 for(
Int_t power=0;power<2;power++)
3796 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.);
3810 }
else if (power == 1)
3825 TString mixedHarmonicProductOfEventWeightsName =
"fMixedHarmonicProductOfEventWeights";
3826 mixedHarmonicProductOfEventWeightsName +=
fAnalysisLabel->Data();
3831 for(
Int_t b=1;b<=8;b++)
3839 TString mixedHarmonicProductOfCorrelationsName =
"fMixedHarmonicProductOfCorrelations";
3840 mixedHarmonicProductOfCorrelationsName +=
fAnalysisLabel->Data();