23 #define AliFlowAnalysisCRC_cxx
25 #include "Riostream.h"
34 #include "TParticle.h"
38 #include "TProfile2D.h"
41 #include "TPaveLabel.h"
50 #include "THnSparse.h"
81 fBookOnlyBasicCCH(kTRUE),
83 fCommonHists2nd(NULL),
84 fCommonHists4th(NULL),
85 fCommonHists6th(NULL),
86 fCommonHists8th(NULL),
87 fCommonHistsResults2nd(NULL),
88 fCommonHistsResults4th(NULL),
89 fCommonHistsResults6th(NULL),
90 fCommonHistsResults8th(NULL),
103 fCommonConstants(NULL),
104 fFillMultipleControlHistograms(kFALSE),
106 fAnalysisLabel(NULL),
108 fUsePhiWeights(kFALSE),
109 fUsePtWeights(kFALSE),
110 fUseEtaWeights(kFALSE),
111 fUseTrackWeights(kFALSE),
112 fUsePhiEtaWeights(kFALSE),
113 fUseParticleWeights(NULL),
115 fMultiplicityWeight(NULL),
119 fIntFlowProfiles(NULL),
120 fIntFlowResults(NULL),
121 fIntFlowAllCorrelationsVsM(NULL),
123 fApplyCorrectionForNUA(kFALSE),
124 fApplyCorrectionForNUAVsM(kFALSE),
128 fPropagateErrorAlsoFromNIT(kFALSE),
129 fCalculateCumulantsVsM(kFALSE),
130 fCalculateAllCorrelationsVsM(kFALSE),
131 fMinimumBiasReferenceFlow(kTRUE),
132 fForgetAboutCovariances(kFALSE),
133 fStoreVarious(kFALSE),
135 fUse2DHistograms(kFALSE),
136 fFillProfilesVsMUsingWeights(kTRUE),
137 fUseQvectorTerms(kFALSE),
141 fIntFlowCorrelationsEBE(NULL),
142 fIntFlowEventWeightsForCorrelationsEBE(NULL),
143 fIntFlowCorrelationsAllEBE(NULL),
145 fNumberOfPOIsEBE(0.),
146 fReferenceMultiplicityEBE(0.),
153 fCentralityCL1EBE(0.),
155 fCentralityTRKEBE(0.),
156 fAvMultiplicity(NULL),
157 fIntFlowCorrelationsPro(NULL),
158 fIntFlowSquaredCorrelationsPro(NULL),
159 fIntFlowCorrelationsAllPro(NULL),
160 fIntFlowExtraCorrelationsPro(NULL),
161 fIntFlowProductOfCorrelationsPro(NULL),
162 fIntFlowProductOfCorrectionTermsForNUAPro(NULL),
163 fIntFlowCorrelationsHist(NULL),
164 fIntFlowCorrelationsAllHist(NULL),
165 fIntFlowCovariances(NULL),
166 fIntFlowSumOfProductOfEventWeights(NULL),
167 fIntFlowCovariancesNUA(NULL),
168 fIntFlowSumOfProductOfEventWeightsNUA(NULL),
169 fIntFlowQcumulants(NULL),
170 fIntFlowQcumulantsRebinnedInM(NULL),
171 fIntFlowQcumulantsErrorSquaredRatio(NULL),
173 fIntFlowRebinnedInM(NULL),
174 fIntFlowDetectorBias(NULL),
177 fDiffFlowProfiles(NULL),
178 fDiffFlowResults(NULL),
180 fDiffFlowFlags(NULL),
181 fCalculateDiffFlow(kTRUE),
182 fCalculate2DDiffFlow(kFALSE),
183 fCalculateDiffFlowVsEta(kTRUE),
185 fOtherDiffCorrelatorsList(NULL),
187 fDistributionsList(NULL),
188 fDistributionsFlags(NULL),
189 fStoreDistributions(kFALSE),
190 fnBinsForCorrelations(10000),
192 fNestedLoopsList(NULL),
193 fEvaluateIntFlowNestedLoops(kFALSE),
194 fEvaluateDiffFlowNestedLoops(kFALSE),
195 fMaxAllowedMultiplicity(10),
196 fEvaluateNestedLoops(NULL),
197 fIntFlowDirectCorrelations(NULL),
198 fIntFlowExtraDirectCorrelations(NULL),
199 fCrossCheckInPtBinNo(10),
200 fCrossCheckInEtaBinNo(20),
201 fNoOfParticlesInBin(NULL),
202 fMixedHarmonicsNestedLoops(NULL),
204 fMixedHarmonicsList(NULL),
205 fMixedHarmonicsProfiles(NULL),
206 fMixedHarmonicsResults(NULL),
207 fMixedHarmonicsErrorPropagation(NULL),
208 fMixedHarmonicsFlags(NULL),
209 fCalculateMixedHarmonics(kFALSE),
210 fCalculateMixedHarmonicsVsM(kFALSE),
211 f2pCorrelations(NULL),
212 f3pCorrelations(NULL),
213 f4pCorrelations(NULL),
214 f5pCorrelations(NULL),
215 f6pCorrelations(NULL),
216 f7pCorrelations(NULL),
217 f8pCorrelations(NULL),
225 fMixedHarmonicProductOfEventWeights(NULL),
226 fMixedHarmonicProductOfCorrelations(NULL),
228 fControlHistogramsList(NULL),
229 fControlHistogramsFlags(NULL),
230 fStoreControlHistograms(kFALSE),
231 fCorrelationNoRPsVsRefMult(NULL),
232 fCorrelationNoPOIsVsRefMult(NULL),
233 fCorrelationNoRPsVsNoPOIs(NULL),
235 fBootstrapList(NULL),
236 fBootstrapProfilesList(NULL),
237 fBootstrapResultsList(NULL),
238 fBootstrapFlags(NULL),
239 fUseBootstrap(kFALSE),
240 fUseBootstrapVsM(kFALSE),
243 fBootstrapCorrelations(NULL),
244 fBootstrapCumulants(NULL),
249 fCalculateCRC(kTRUE),
250 fCalculateCRCPt(kFALSE),
251 fCalculateCME(kFALSE),
252 fCalculateCRC2(kFALSE),
253 fCalculateCRCVZ(kFALSE),
254 fCalculateCRCZDC(kFALSE),
255 fCalculateFlowQC(kFALSE),
256 fCalculateFlowZDC(kFALSE),
257 fCalculateFlowVZ(kFALSE),
258 fCalculateEbEFlow(kFALSE),
261 fRecenterZDC(kFALSE),
263 fUseCRCRecenter(kFALSE),
273 fCorrWeightTPC(kUnit),
274 fCorrWeightVZ(kUnit),
275 fCorrWeightZDC(kUnit),
278 fCRCCenBinWidth(CenWidth),
279 fCRCIntRbRList(NULL),
284 fCRCQVecWeightsList(NULL),
285 fCRCZDCCalibList(NULL),
290 fCRCZDCRbRList(NULL),
298 fFlowSPZDCList(NULL),
299 fFlowSPZDCRbRList(NULL),
307 fQAZDCCutsFlag(kTRUE),
314 fHistList =
new TList();
315 fHistList->SetName(
"cobjQC");
316 fHistList->SetOwner(kTRUE);
319 fTempList =
new TList();
320 fTempList->SetName(
"temp");
321 fTempList->SetOwner(kTRUE);
324 fMultiplicityWeight =
new TString(
"combinations");
327 fAnalysisLabel =
new TString();
330 this->InitializeArraysForIntFlow();
331 this->InitializeArraysForDiffFlow();
332 this->InitializeArraysForDistributions();
333 this->InitializeArraysForVarious();
334 this->InitializeArraysForParticleWeights();
335 this->InitializeArraysForNestedLoops();
336 this->InitializeArraysForMixedHarmonics();
337 this->InitializeArraysForControlHistograms();
338 this->InitializeArraysForBootstrap();
340 fRunList = TArrayI();
343 this->InitializeCostantsForCRC();
344 this->InitializeArraysForCRC();
345 this->InitializeArraysForCRCVZ();
346 this->InitializeArraysForCRCZDC();
347 this->InitializeArraysForCRC2();
348 this->InitializeArraysForQVec();
349 this->InitializeArraysForCRCPt();
350 this->InitializeArraysForCME();
351 this->InitializeArraysForFlowEbE();
352 this->InitializeArraysForFlowQC();
353 this->InitializeArraysForFlowSPZDC();
354 this->InitializeArraysForFlowSPVZ();
355 this->InitializeArraysForEbEFlow();
392 Bool_t oldHistAddStatus = TH1::AddDirectoryStatus();
393 TH1::AddDirectory(kFALSE);
444 TH1::AddDirectory(oldHistAddStatus);
481 Double_t wTrack = 1.;
482 Double_t wPhiEta = 1.;
483 Int_t nCounterNoRPs = 0;
502 Double_t ptEta[2] = {0.,0.};
515 if(fRunBin<0 || fRunBin>=
fCRCnRun) {
return;}
517 if(fCenBin<0 || fCenBin>=
fCRCnCen) {
return;}
524 for(Int_t k=0; k<2; k++) {
533 Double_t PhiEtaAv = 0.;
534 for(Int_t k=0; k<2; k++) {
537 for(Int_t i=1; i<=nBinsEta; i++) {
538 for (Int_t j=1; j<=nBinsPhi; j++) {
542 PhiEtaAv /= 1.*nBinsPhi*nBinsEta;
543 for(Int_t i=1; i<=nBinsEta; i++) {
544 for (Int_t j=1; j<=nBinsPhi; j++) {
549 }
else cout <<
" WARNING: fPhiEtaWeights not found !!! " << endl;
594 for(Int_t i=0;i<nPrim;i++) {
604 dPhi = aftsTrack->
Phi();
605 dPt = aftsTrack->
Pt();
606 dEta = aftsTrack->
Eta();
633 for(Int_t m=0;m<12;m++)
635 for(Int_t k=0;k<9;k++)
637 (*fReQ)(m,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1)*n*dPhi);
638 (*fImQ)(m,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1)*n*dPhi);
642 for(Int_t p=0;p<8;p++)
644 for(Int_t k=0;k<9;k++)
646 (*fSpk)(p,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k);
655 for(Int_t k=0;k<9;k++)
657 for(Int_t m=0;m<4;m++)
663 fReRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
664 fImRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
667 fs1dEBE[0][pe][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
673 fReRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
674 fImRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
677 fs2dEBE[0][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
686 for(Int_t k=0;k<9;k++)
688 for(Int_t m=0;m<4;m++)
694 fReRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
695 fImRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
698 fs1dEBE[2][pe][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
704 fReRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
705 fImRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
708 fs2dEBE[2][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
721 dPhi = aftsTrack->
Phi();
722 dPt = aftsTrack->
Pt();
723 dEta = aftsTrack->
Eta();
724 dCharge = aftsTrack->
Charge();
725 if (dCharge > 0.) cw = 0;
726 else if (dCharge < 0.) cw = 1;
754 if(ptbin==-1)
continue;
761 for(Int_t k=0;k<9;k++)
763 for(Int_t m=0;m<4;m++)
769 fReRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
770 fImRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
775 fReRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
776 fImRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
784 fCRCQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
785 fCRCQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
786 fCRCMult[cw][h]->Fill(dEta,wPhiEta);
788 fCRC2QRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
789 fCRC2QIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
790 fCRC2Mul[cw][h]->Fill(dEta,wPhiEta);
792 fCRCZDCQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
793 fCRCZDCQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
797 fCRC2QRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
798 fCRC2QIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
803 fCRCZDCQRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
804 fCRCZDCQIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
807 fCRCZDCQRe[3][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
808 fCRCZDCQIm[3][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
813 fCMEQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
814 fCMEQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
815 fCMEMult[cw][h]->Fill(dEta,wPhiEta);
817 fCMEQRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
818 fCMEQIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
821 fCMEQRe[3][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
822 fCMEQIm[3][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
832 fPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
833 fPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
836 Int_t keta = (dEta<0.?0:1);
837 fPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
838 fPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
845 fEtaDiffQRe[h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
846 fEtaDiffQIm[h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
869 printf(
"\n WARNING (QC): No particle (i.e. aftsTrack is a NULL pointer in AFAWQC::Make())!!!!\n\n");
876 for(Int_t p=0;p<8;p++)
878 for(Int_t k=0;k<9;k++)
880 (*fSpk)(p,k)=pow((*
fSpk)(p,k),p+1);
1299 cout<<
"Skipping the event because multiplicity is "<<nPrim<<
". Too high to evaluate nested loops!"<<endl;
1303 cout<<
"Skipping the event because multiplicity is "<<nPrim<<
"."<<endl;
1395 Double_t dMult = (*fSpk)(0,0);
1398 Double_t dReQ1n = (*fReQ)(0,0);
1399 Double_t dReQ2n = (*fReQ)(1,0);
1402 Double_t dImQ1n = (*fImQ)(0,0);
1403 Double_t dImQ2n = (*fImQ)(1,0);
1408 Double_t dMultiplicityBin = 0.;
1435 Double_t cosP1n = 0.;
1439 cosP1n = dReQ1n/dMult;
1452 Double_t cosP1nP1n = 0.;
1453 Double_t cosP2nM1n = 0.;
1457 cosP1nP1n = (pow(dReQ1n,2)-pow(dImQ1n,2)-dReQ2n)/(dMult*(dMult-1));
1458 cosP2nM1n = (dReQ2n*dReQ1n+dImQ2n*dImQ1n-dReQ1n)/(dMult*(dMult-1));
1478 Double_t cosP1nM1nM1n = 0.;
1482 cosP1nM1nM1n = (dReQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2))-dReQ1n*dReQ2n-dImQ1n*dImQ2n-2.*(dMult-1)*dReQ1n)
1483 / (dMult*(dMult-1)*(dMult-2));
1504 Double_t dMult = (*fSpk)(0,0);
1507 Double_t dReQ1n = (*fReQ)(0,0);
1508 Double_t dReQ2n = (*fReQ)(1,0);
1511 Double_t dImQ1n = (*fImQ)(0,0);
1512 Double_t dImQ2n = (*fImQ)(1,0);
1517 Double_t dMultiplicityBin = 0.;
1544 Double_t sinP1n = 0.;
1548 sinP1n = dImQ1n/dMult;
1561 Double_t sinP1nP1n = 0.;
1562 Double_t sinP2nM1n = 0.;
1565 sinP1nP1n = (2.*dReQ1n*dImQ1n-dImQ2n)/(dMult*(dMult-1));
1566 sinP2nM1n = (dImQ2n*dReQ1n-dReQ2n*dImQ1n-dImQ1n)/(dMult*(dMult-1));
1586 Double_t sinP1nM1nM1n = 0.;
1590 sinP1nM1nM1n = (-dImQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2))+dReQ1n*dImQ2n-dImQ1n*dReQ2n+2.*(dMult-1)*dImQ1n)
1591 / (dMult*(dMult-1)*(dMult-2));
1621 if(outputListHistos)
1626 printf(
"\n WARNING (QC): fHistList is NULL in AFAWQC::GOH() !!!!\n\n");
1653 printf(
"\n WARNING (QC): outputListHistos is NULL in AFAWQC::GOH() !!!!\n\n");
1665 Int_t nBinsPt = profilePtEta->GetNbinsX();
1666 Double_t dPtMin = (profilePtEta->GetXaxis())->GetXmin();
1667 Double_t dPtMax = (profilePtEta->GetXaxis())->GetXmax();
1669 Int_t nBinsEta = profilePtEta->GetNbinsY();
1671 TProfile *profilePt =
new TProfile(
"",
"",nBinsPt,dPtMin,dPtMax);
1673 for(Int_t p=1;p<=nBinsPt;p++)
1675 Double_t contentPt = 0.;
1676 Double_t entryPt = 0.;
1677 Double_t spreadPt = 0.;
1681 for(Int_t e=1;e<=nBinsEta;e++)
1683 contentPt += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
1684 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1685 entryPt += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1687 sum1 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
1688 * (pow(profilePtEta->GetBinError(profilePtEta->GetBin(p,e)),2.)
1689 + pow(profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)),2.));
1690 sum2 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1691 sum3 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
1692 * (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)));
1694 if(sum2>0. && sum1/sum2-pow(sum3/sum2,2.) > 0.)
1696 spreadPt = pow(sum1/sum2-pow(sum3/sum2,2.),0.5);
1698 profilePt->SetBinContent(p,contentPt);
1699 profilePt->SetBinEntries(p,entryPt);
1701 profilePt->SetBinError(p,spreadPt);
1718 Int_t nBinsEta = profilePtEta->GetNbinsY();
1719 Double_t dEtaMin = (profilePtEta->GetYaxis())->GetXmin();
1720 Double_t dEtaMax = (profilePtEta->GetYaxis())->GetXmax();
1722 Int_t nBinsPt = profilePtEta->GetNbinsX();
1724 TProfile *profileEta =
new TProfile(
"",
"",nBinsEta,dEtaMin,dEtaMax);
1726 for(Int_t e=1;e<=nBinsEta;e++)
1728 Double_t contentEta = 0.;
1729 Double_t entryEta = 0.;
1730 for(Int_t p=1;p<=nBinsPt;p++)
1732 contentEta += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
1733 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1734 entryEta += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1736 profileEta->SetBinContent(e,contentEta);
1737 profileEta->SetBinEntries(e,entryEta);
1752 Double_t dVn[4] = {0.};
1753 Double_t dVnErr[4] = {0.};
1757 for(Int_t b=0;b<4;b++)
1768 }
else if(type ==
"RP")
1778 }
else if(type ==
"POI")
1790 for(Int_t b=0;b<4;b++)
1797 TString
title =
" flow estimates from Q-cumulants";
1798 TString subtitle =
" (";
1799 TString subtitle2 =
" (rebinned in M)";
1801 if(type !=
"RF, rebinned in M")
1805 subtitle.Append(type);
1806 subtitle.Append(
", without weights)");
1809 subtitle.Append(type);
1810 subtitle.Append(
", with weights)");
1816 subtitle.Append(
"RF");
1817 subtitle.Append(
", without weights)");
1820 subtitle.Append(
"RF");
1821 subtitle.Append(
", with weights)");
1826 cout<<
"*************************************"<<endl;
1827 cout<<
"*************************************"<<endl;
1828 cout<<title.Data()<<endl;
1829 cout<<subtitle.Data()<<endl;
1830 if(type ==
"RF, rebinned in M"){cout<<subtitle2.Data()<<endl;}
1833 for(Int_t i=0;i<4;i++)
1835 cout<<
" v_"<<n<<
"{"<<2*(i+1)<<
"} = "<<dVn[i]<<
" +/- "<<dVnErr[i]<<endl;
1843 cout<<
" detector bias (corrected for): "<<endl;
1846 cout<<
" detector bias (not corrected for):"<<endl;
1852 if(type ==
"RF" || type ==
"RF, rebinned in M")
1856 else if (type ==
"RP")
1860 else if (type ==
"POI")
1865 cout<<
"*************************************"<<endl;
1866 cout<<
"*************************************"<<endl;
1876 TFile *output =
new TFile(outputFileName.Data(),
"RECREATE");
1892 outputFileName->Write(outputFileName->GetName(), TObject::kSingleKey);
1905 TString commonHistsName =
"AliFlowCommonHistQC";
1913 TString commonHists2ndOrderName =
"AliFlowCommonHist2ndOrderQC";
1918 TString commonHists4thOrderName =
"AliFlowCommonHist4thOrderQC";
1923 TString commonHists6thOrderName =
"AliFlowCommonHist6thOrderQC";
1928 TString commonHists8thOrderName =
"AliFlowCommonHist8thOrderQC";
1936 TString commonHistResults2ndOrderName =
"AliFlowCommonHistResults2ndOrderQC";
1941 TString commonHistResults4thOrderName =
"AliFlowCommonHistResults4thOrderQC";
1946 TString commonHistResults6thOrderName =
"AliFlowCommonHistResults6thOrderQC";
1951 TString commonHistResults8thOrderName =
"AliFlowCommonHistResults8thOrderQC";
1966 printf(
"\n WARNING (QC): fWeightsList is NULL in AFAWQC::BAFWH() !!!! \n\n");
1970 TString fUseParticleWeightsName =
"fUseParticleWeightsQC";
1972 fUseParticleWeights =
new TProfile(fUseParticleWeightsName.Data(),
"0 = particle weight not used, 1 = particle weight used ",5,0,5);
1986 for(Int_t c=0; c<2; c++) {
1988 Form(
"fPhiEtaWeights[%d]",c),32,0.,TMath::TwoPi(),32,-0.8,0.8);
2196 TF1 *CenFit =
new TF1(
"CenFit",
"pol0", 0., 100.);
2198 Double_t CenAv = CenFit->GetParameter(0);
2200 Double_t SemiCenAv = CenFit->GetParameter(0);
2225 TString sinCosFlag[2] = {
"sin",
"cos"};
2226 TString powerFlag[2] = {
"linear",
"quadratic"};
2229 TString intFlowFlagsName =
"fIntFlowFlags";
2231 fIntFlowFlags =
new TProfile(intFlowFlagsName.Data(),
"Flags for Integrated Flow",20,0.,20.);
2237 fIntFlowFlags->GetXaxis()->SetBinLabel(1,
"Particle Weights");
2239 fIntFlowFlags->GetXaxis()->SetBinLabel(3,
"Corrected for NUA?");
2240 fIntFlowFlags->GetXaxis()->SetBinLabel(4,
"Print RF results");
2241 fIntFlowFlags->GetXaxis()->SetBinLabel(5,
"Print RP results");
2242 fIntFlowFlags->GetXaxis()->SetBinLabel(6,
"Print POI results");
2243 fIntFlowFlags->GetXaxis()->SetBinLabel(7,
"Print RF (rebinned in M) results");
2244 fIntFlowFlags->GetXaxis()->SetBinLabel(8,
"Corrected for NUA vs M?");
2245 fIntFlowFlags->GetXaxis()->SetBinLabel(9,
"Propagate errors to v_{n} from correlations?");
2246 fIntFlowFlags->GetXaxis()->SetBinLabel(10,
"Calculate cumulants vs M");
2247 fIntFlowFlags->GetXaxis()->SetBinLabel(11,
"fMinimumBiasReferenceFlow");
2248 fIntFlowFlags->GetXaxis()->SetBinLabel(12,
"fForgetAboutCovariances");
2250 fIntFlowFlags->GetXaxis()->SetBinLabel(14,
"fFillMultipleControlHistograms");
2251 fIntFlowFlags->GetXaxis()->SetBinLabel(15,
"Calculate all correlations vs M");
2252 fIntFlowFlags->GetXaxis()->SetBinLabel(16,
"fMultiplicityIs");
2254 fIntFlowFlags->GetXaxis()->SetBinLabel(18,
"fUse2DHistograms");
2255 fIntFlowFlags->GetXaxis()->SetBinLabel(19,
"fFillProfilesVsMUsingWeights");
2256 fIntFlowFlags->GetXaxis()->SetBinLabel(20,
"fUseQvectorTerms");
2261 fReQ =
new TMatrixD(12,9);
2262 fImQ =
new TMatrixD(12,9);
2263 fSpk =
new TMatrixD(8,9);
2265 TString intFlowCorrelationsEBEName =
"fIntFlowCorrelationsEBE";
2267 fIntFlowCorrelationsEBE =
new TH1D(intFlowCorrelationsEBEName.Data(),intFlowCorrelationsEBEName.Data(),4,0,4);
2269 TString intFlowEventWeightsForCorrelationsEBEName =
"fIntFlowEventWeightsForCorrelationsEBE";
2270 intFlowEventWeightsForCorrelationsEBEName +=
fAnalysisLabel->Data();
2273 TString intFlowCorrelationsAllEBEName =
"fIntFlowCorrelationsAllEBE";
2278 TString fIntFlowCorrectionTermsForNUAEBEName =
"fIntFlowCorrectionTermsForNUAEBE";
2280 for(Int_t sc=0;sc<2;sc++)
2282 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);
2285 TString fIntFlowEventWeightForCorrectionTermsForNUAEBEName =
"fIntFlowEventWeightForCorrectionTermsForNUAEBE";
2286 fIntFlowEventWeightForCorrectionTermsForNUAEBEName +=
fAnalysisLabel->Data();
2287 for(Int_t sc=0;sc<2;sc++)
2289 fIntFlowEventWeightForCorrectionTermsForNUAEBE[sc] =
new TH1D(Form(
"%s: %s terms",fIntFlowEventWeightForCorrectionTermsForNUAEBEName.Data(),sinCosFlag[sc].Data()),Form(
"Event weights for terms for non-uniform acceptance (%s terms)",sinCosFlag[sc].
Data()),4,0,4);
2293 TString avMultiplicityName =
"fAvMultiplicity";
2295 fAvMultiplicity =
new TProfile(avMultiplicityName.Data(),
"Average multiplicities of reference particles (RPs)",9,0,9);
2312 TString correlationFlag[4] = {
"#LT#LT2#GT#GT",
"#LT#LT4#GT#GT",
"#LT#LT6#GT#GT",
"#LT#LT8#GT#GT"};
2313 TString intFlowCorrelationsProName =
"fIntFlowCorrelationsPro";
2315 fIntFlowCorrelationsPro =
new TProfile(intFlowCorrelationsProName.Data(),
"Average correlations for all events",4,0,4,
"s");
2321 for(Int_t b=0;b<4;b++)
2327 TString squaredCorrelationFlag[4] = {
"#LT#LT2#GT^{2}#GT",
"#LT#LT4#GT^{2}#GT",
"#LT#LT6#GT^{2}#GT",
"#LT#LT8#GT^{2}#GT"};
2328 TString intFlowSquaredCorrelationsProName =
"fIntFlowSquaredCorrelationsPro";
2336 for(Int_t b=0;b<4;b++)
2343 for(Int_t ci=0;ci<4;ci++)
2346 TString intFlowCorrelationsVsMProName =
"fIntFlowCorrelationsVsMPro";
2348 fIntFlowCorrelationsVsMPro[ci] =
new TProfile(Form(
"%s, %s",intFlowCorrelationsVsMProName.Data(),correlationFlag[ci].Data()),
2349 Form(
"%s vs multiplicity",correlationFlag[ci].
Data()),
2365 TString intFlowSquaredCorrelationsVsMProName =
"fIntFlowSquaredCorrelationsVsMPro";
2368 Form(
"%s vs multiplicity",squaredCorrelationFlag[ci].
Data()),
2386 TString intFlowCorrelationsAllProName =
"fIntFlowCorrelationsAllPro";
2388 fIntFlowCorrelationsAllPro =
new TProfile(intFlowCorrelationsAllProName.Data(),
"Average all correlations for all events",64,0,64);
2494 fIntFlowCorrelationsAllVsMPro[30] =
new TProfile(
"eight1n1n1n1n1n1n1n1n",
"#LT#LT8#GT#GT_{n,n,n,n|n,n,n,n}",
fnBinsMult,
fMinMult,
fMaxMult);
2528 for(Int_t n=0;n<63;n++)
2550 TString intFlowExtraCorrelationsProName =
"fIntFlowExtraCorrelationsPro";
2552 fIntFlowExtraCorrelationsPro =
new TProfile(intFlowExtraCorrelationsProName.Data(),
"Average extra correlations for all events",100,0,100,
"s");
2563 TString productFlag[6] = {
"#LT#LT2#GT#LT4#GT#GT",
"#LT#LT2#GT#LT6#GT#GT",
"#LT#LT2#GT#LT8#GT#GT",
2564 "#LT#LT4#GT#LT6#GT#GT",
"#LT#LT4#GT#LT8#GT#GT",
"#LT#LT6#GT#LT8#GT#GT"};
2565 TString intFlowProductOfCorrelationsProName =
"fIntFlowProductOfCorrelationsPro";
2572 for(Int_t b=0;b<6;b++)
2581 TString intFlowProductOfCorrelationsVsMProName =
"fIntFlowProductOfCorrelationsVsMPro";
2582 intFlowProductOfCorrelationsVsMProName +=
fAnalysisLabel->Data();
2583 for(Int_t
pi=0;
pi<6;
pi++)
2586 Form(
"%s versus multiplicity",productFlag[
pi].
Data()),
2602 TString intFlowProductOfCorrectionTermsForNUAProName =
"fIntFlowProductOfCorrectionTermsForNUAPro";
2603 intFlowProductOfCorrectionTermsForNUAProName +=
fAnalysisLabel->Data();
2638 for(Int_t sc=0;sc<2;sc++)
2640 TString intFlowCorrectionTermsForNUAProName =
"fIntFlowCorrectionTermsForNUAPro";
2642 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");
2655 TString correctionTermFlag[4] = {
"(n(phi1))",
"(n(phi1+phi2))",
"(n(phi1-phi2-phi3))",
"(n(2phi1-phi2))"};
2656 for(Int_t ci=0;ci<4;ci++)
2658 TString intFlowCorrectionTermsForNUAVsMProName =
"fIntFlowCorrectionTermsForNUAVsMPro";
2659 intFlowCorrectionTermsForNUAVsMProName +=
fAnalysisLabel->Data();
2660 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");
2668 TString intFlowCorrelationsHistName =
"fIntFlowCorrelationsHist";
2670 fIntFlowCorrelationsHist =
new TH1D(intFlowCorrelationsHistName.Data(),
"Average correlations for all events",4,0,4);
2683 for(Int_t ci=0;ci<4;ci++)
2685 TString intFlowCorrelationsVsMHistName =
"fIntFlowCorrelationsVsMHist";
2688 Form(
"%s vs multiplicity",correlationFlag[ci].
Data()),
2705 TString intFlowCorrelationsAllHistName =
"fIntFlowCorrelationsAllHist";
2746 for(Int_t sc=0;sc<2;sc++)
2748 TString intFlowCorrectionTermsForNUAHistName =
"fIntFlowCorrectionTermsForNUAHist";
2750 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);
2762 TString intFlowCovariancesName =
"fIntFlowCovariances";
2764 fIntFlowCovariances =
new TH1D(intFlowCovariancesName.Data(),
"Covariances (multiplied with weight dependent prefactor)",6,0,6);
2775 TString intFlowSumOfEventWeightsName =
"fIntFlowSumOfEventWeights";
2777 for(Int_t power=0;power<2;power++)
2779 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);
2788 }
else if (power == 1)
2798 TString intFlowSumOfProductOfEventWeightsName =
"fIntFlowSumOfProductOfEventWeights";
2814 TString intFlowCovariancesVsMName =
"fIntFlowCovariancesVsM";
2816 TString covarianceFlag[6] = {
"Cov(<2>,<4>)",
"Cov(<2>,<6>)",
"Cov(<2>,<8>)",
"Cov(<4>,<6>)",
"Cov(<4>,<8>)",
"Cov(<6>,<8>)"};
2817 for(Int_t ci=0;ci<6;ci++)
2819 fIntFlowCovariancesVsM[ci] =
new TH1D(Form(
"%s, %s",intFlowCovariancesVsMName.Data(),covarianceFlag[ci].Data()),
2820 Form(
"%s vs multiplicity",covarianceFlag[ci].
Data()),
2840 TString intFlowSumOfEventWeightsVsMName =
"fIntFlowSumOfEventWeightsVsM";
2842 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>}"},
2843 {
"#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}"}};
2844 for(Int_t si=0;si<4;si++)
2846 for(Int_t power=0;power<2;power++)
2849 Form(
"%s vs multiplicity",sumFlag[power][si].
Data()),
2871 TString intFlowSumOfProductOfEventWeightsVsMName =
"fIntFlowSumOfProductOfEventWeightsVsM";
2872 intFlowSumOfProductOfEventWeightsVsMName +=
fAnalysisLabel->Data();
2873 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>}",
2874 "#sum_{i=1}^{N} w_{<4>} w_{<6>}",
"#sum_{i=1}^{N} w_{<4>} w_{<8>}",
"#sum_{i=1}^{N} w_{<6>} w_{<8>}"};
2875 for(Int_t
pi=0;
pi<6;
pi++)
2878 Form(
"%s versus multiplicity",sopowFlag[
pi].
Data()),
2895 TString intFlowCovariancesNUAName =
"fIntFlowCovariancesNUA";
2897 fIntFlowCovariancesNUA =
new TH1D(intFlowCovariancesNUAName.Data(),
"Covariances for NUA (multiplied with weight dependent prefactor)",27,0,27);
2916 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(16,
"Cov(<cos(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2917 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(17,
"Cov(<cos(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2920 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(20,
"Cov(<sin(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2921 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(21,
"Cov(<sin(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2922 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(22,
"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}+#phi_{2})>)");
2923 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(23,
"Cov(<cos(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2924 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(24,
"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2925 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(25,
"Cov(<sin(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2926 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(26,
"Cov(<sin(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2927 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(27,
"Cov(<cos(#phi_{1}-#phi_{2}-#phi_{3}>,<sin(#phi_{1}-#phi_{2}-#phi_{3}>)");
2930 TString intFlowSumOfEventWeightsNUAName =
"fIntFlowSumOfEventWeightsNUA";
2932 for(Int_t sc=0;sc<2;sc++)
2934 for(Int_t power=0;power<2;power++)
2936 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);
2945 }
else if(power == 1)
2949 (
fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(3,Form(
"#sum_{i=1}^{N} w_{<%s(#phi_{1}-#phi_{2}-#phi_{3})>}^{2}",sinCosFlag[sc].
Data()));
2956 TString intFlowSumOfProductOfEventWeightsNUAName =
"fIntFlowSumOfProductOfEventWeightsNUA";
2957 intFlowSumOfProductOfEventWeightsNUAName +=
fAnalysisLabel->Data();
2990 TString cumulantFlag[4] = {
"QC{2}",
"QC{4}",
"QC{6}",
"QC{8}"};
2991 TString intFlowQcumulantsName =
"fIntFlowQcumulants";
2993 fIntFlowQcumulants =
new TH1D(intFlowQcumulantsName.Data(),
"Reference Q-cumulants",4,0,4);
2996 fIntFlowQcumulants->SetTitle(
"Reference Q-cumulants (error from non-isotropic terms also propagated)");
3000 for(Int_t b=0;b<4;b++)
3008 TString intFlowQcumulantsRebinnedInMName =
"fIntFlowQcumulantsRebinnedInM";
3013 for(Int_t b=0;b<4;b++)
3020 TString intFlowQcumulantsErrorSquaredRatioName =
"fIntFlowQcumulantsErrorSquaredRatio";
3021 intFlowQcumulantsErrorSquaredRatioName +=
fAnalysisLabel->Data();
3022 fIntFlowQcumulantsErrorSquaredRatio =
new TH1D(intFlowQcumulantsErrorSquaredRatioName.Data(),
"Error squared of reference Q-cumulants: #frac{with NUA terms}{without NUA terms}",4,0,4);
3025 for(Int_t b=0;b<4;b++)
3033 TString intFlowQcumulantsVsMName =
"fIntFlowQcumulantsVsM";
3035 for(Int_t co=0;co<4;co++)
3037 fIntFlowQcumulantsVsM[co] =
new TH1D(Form(
"%s, %s",intFlowQcumulantsVsMName.Data(),cumulantFlag[co].Data()),
3038 Form(
"%s vs multiplicity",cumulantFlag[co].
Data()),
3055 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)};
3056 TString intFlowName =
"fIntFlow";
3059 fIntFlow =
new TH1D(intFlowName.Data(),
"Reference flow estimates from Q-cumulants",4,0,4);
3062 for(Int_t b=0;b<4;b++)
3064 (
fIntFlow->GetXaxis())->SetBinLabel(b+1,flowFlag[b].
Data());
3070 TString intFlowRebinnedInMName =
"fIntFlowRebinnedInM";
3072 fIntFlowRebinnedInM =
new TH1D(intFlowRebinnedInMName.Data(),
"Reference flow estimates from Q-cumulants (rebinned in M)",4,0,4);
3075 for(Int_t b=0;b<4;b++)
3084 TString intFlowVsMName =
"fIntFlowVsM";
3086 for(Int_t co=0;co<4;co++)
3088 fIntFlowVsM[co] =
new TH1D(Form(
"%s, %s",intFlowVsMName.Data(),flowFlag[co].Data()),
3089 Form(
"%s vs multiplicity",flowFlag[co].
Data()),
3096 fIntFlowVsM[co]->GetXaxis()->SetTitle(
"Reference multiplicity (from ESD)");
3106 TString intFlowDetectorBiasName =
"fIntFlowDetectorBias";
3108 fIntFlowDetectorBias =
new TH1D(intFlowDetectorBiasName.Data(),
"Quantifying detector bias",4,0,4);
3111 for(Int_t ci=0;ci<4;ci++)
3113 (
fIntFlowDetectorBias->GetXaxis())->SetBinLabel(ci+1,Form(
"#frac{corrected}{measured} %s",cumulantFlag[ci].
Data()));
3119 TString intFlowDetectorBiasVsMName =
"fIntFlowDetectorBiasVsM";
3121 for(Int_t ci=0;ci<4;ci++)
3123 fIntFlowDetectorBiasVsM[ci] =
new TH1D(Form(
"%s for %s",intFlowDetectorBiasVsMName.Data(),cumulantFlag[ci].Data()),
3124 Form(
"Quantifying detector bias for %s vs multiplicity",cumulantFlag[ci].
Data()),
3153 TString controlHistogramsFlagsName =
"fControlHistogramsFlags";
3155 fControlHistogramsFlags =
new TProfile(controlHistogramsFlagsName.Data(),
"Flags for Control Histograms",2,0,2);
3169 TString sCorrelationNoRPsVsRefMultName =
"fCorrelationNoRPsVsRefMult";
3180 TString sCorrelationNoPOIsVsRefMultName =
"fCorrelationNoPOIsVsRefMult";
3191 TString sCorrelationNoRPsVsNoPOIsName =
"fCorrelationNoRPsVsNoPOIs";
3202 TString sCorrelation[4] = {
"#LT2#GT",
"#LT4#GT",
"#LT6#GT",
"#LT8#GT"};
3203 TString sMultiplicity =
"";
3206 sMultiplicity =
"# RPs";
3209 sMultiplicity =
"Reference multiplicity (from ESD)";
3212 sMultiplicity =
"# POIs";
3214 for(Int_t ci=0;ci<4;ci++)
3226 TString sCorrelationProduct[1] = {
"#LT2#GT#LT4#GT"};
3227 for(Int_t cpi=0;cpi<1;cpi++)
3241 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}}"};
3242 for(Int_t qvti=0;qvti<4;qvti++)
3269 TString bootstrapFlagsName =
"fBootstrapFlags";
3271 fBootstrapFlags =
new TProfile(bootstrapFlagsName.Data(),
"Flags for bootstrap",3,0,3);
3289 TString correlationFlag[4] = {
"#LT#LT2#GT#GT",
"#LT#LT4#GT#GT",
"#LT#LT6#GT#GT",
"#LT#LT8#GT#GT"};
3290 TString cumulantFlag[4] = {
"QC{2}",
"QC{4}",
"QC{6}",
"QC{8}"};
3294 TString bootstrapCorrelationsName =
"fBootstrapCorrelations";
3298 for(Int_t ci=0;ci<4;ci++)
3308 TString bootstrapCumulantsName =
"fBootstrapCumulants";
3312 for(Int_t co=0;co<4;co++)
3324 TString sMultiplicity =
"";
3327 sMultiplicity =
"# RPs";
3330 sMultiplicity =
"Reference multiplicity (from ESD)";
3333 sMultiplicity =
"# POIs";
3338 TString bootstrapCorrelationsVsMName =
"fBootstrapCorrelationsVsM";
3340 for(Int_t ci=0;ci<4;ci++)
3342 fBootstrapCorrelationsVsM[ci] =
new TProfile2D(Form(
"%s, %s",bootstrapCorrelationsVsMName.Data(),correlationFlag[ci].Data()),
3343 Form(
"Bootstrap Correlations Vs. M, %s",correlationFlag[ci].
Data()),
3354 TString bootstrapCumulantsVsMName =
"fBootstrapCumulantsVsM";
3356 for(Int_t co=0;co<4;co++)
3358 fBootstrapCumulantsVsM[co] =
new TH2D(Form(
"%s, %s",bootstrapCumulantsVsMName.Data(),cumulantFlag[co].Data()),
3359 Form(
"Bootstrap Cumulants Vs. M, %s",cumulantFlag[co].
Data()),
3385 TString mixedHarmonicsFlagsName =
"fMixedHarmonicsFlags";
3387 fMixedHarmonicsFlags =
new TProfile(mixedHarmonicsFlagsName.Data(),
"Flags for Mixed Harmonics",4,0,4);
3403 TString s2pCorrelationsName =
"f2pCorrelations";
3405 f2pCorrelations =
new TProfile(s2pCorrelationsName.Data(),Form(
"2-particle correlations (n = %d)",
fHarmonic),6,0,6,
"s");
3420 TString s3pCorrelationsName =
"f3pCorrelations";
3422 f3pCorrelations =
new TProfile(s3pCorrelationsName.Data(),Form(
"3-particle correlations (n = %d)",
fHarmonic),10,0,10,
"s");
3443 TString s4pCorrelationsName =
"f4pCorrelations";
3445 f4pCorrelations =
new TProfile(s4pCorrelationsName.Data(),Form(
"4-particle correlations (n = %d)",
fHarmonic),45,0,45,
"s");
3504 TString s5pCorrelationsName =
"f5pCorrelations";
3506 f5pCorrelations =
new TProfile(s5pCorrelationsName.Data(),Form(
"5-particle correlations (n = %d)",
fHarmonic),87,0,87,
"s");
3607 TString s6pCorrelationsName =
"f6pCorrelations";
3609 f6pCorrelations =
new TProfile(s6pCorrelationsName.Data(),Form(
"6-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3618 TString s7pCorrelationsName =
"f7pCorrelations";
3620 f7pCorrelations =
new TProfile(s7pCorrelationsName.Data(),Form(
"7-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3629 TString s8pCorrelationsName =
"f8pCorrelations";
3631 f8pCorrelations =
new TProfile(s8pCorrelationsName.Data(),Form(
"8-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3676 TString mixedHarmonicEventWeightsName =
"fMixedHarmonicEventWeights";
3678 TString powerFlag[2] = {
"linear",
"quadratic"};
3679 for(Int_t power=0;power<2;power++)
3681 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.);
3695 }
else if (power == 1)
3710 TString mixedHarmonicProductOfEventWeightsName =
"fMixedHarmonicProductOfEventWeights";
3711 mixedHarmonicProductOfEventWeightsName +=
fAnalysisLabel->Data();
3716 for(Int_t b=1;b<=8;b++)
3724 TString mixedHarmonicProductOfCorrelationsName =
"fMixedHarmonicProductOfCorrelations";
3725 mixedHarmonicProductOfCorrelationsName +=
fAnalysisLabel->Data();