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 fUseZDCESEMulWeights(kFALSE),
114 fUseParticleWeights(NULL),
116 fMultiplicityWeight(NULL),
120 fIntFlowProfiles(NULL),
121 fIntFlowResults(NULL),
122 fIntFlowAllCorrelationsVsM(NULL),
124 fApplyCorrectionForNUA(kFALSE),
125 fApplyCorrectionForNUAVsM(kFALSE),
129 fPropagateErrorAlsoFromNIT(kFALSE),
130 fCalculateCumulantsVsM(kFALSE),
131 fCalculateAllCorrelationsVsM(kFALSE),
132 fMinimumBiasReferenceFlow(kTRUE),
133 fForgetAboutCovariances(kFALSE),
134 fStoreVarious(kFALSE),
136 fUse2DHistograms(kFALSE),
137 fFillProfilesVsMUsingWeights(kTRUE),
138 fUseQvectorTerms(kFALSE),
142 fIntFlowCorrelationsEBE(NULL),
143 fIntFlowEventWeightsForCorrelationsEBE(NULL),
144 fIntFlowCorrelationsAllEBE(NULL),
146 fNumberOfPOIsEBE(0.),
147 fReferenceMultiplicityEBE(0.),
149 fNewCentralityEBE(0.),
155 fCentralityCL1EBE(0.),
157 fCentralityTRKEBE(0.),
161 fAvMultiplicity(NULL),
162 fIntFlowCorrelationsPro(NULL),
163 fIntFlowSquaredCorrelationsPro(NULL),
164 fIntFlowCorrelationsAllPro(NULL),
165 fIntFlowExtraCorrelationsPro(NULL),
166 fIntFlowProductOfCorrelationsPro(NULL),
167 fIntFlowProductOfCorrectionTermsForNUAPro(NULL),
168 fIntFlowCorrelationsHist(NULL),
169 fIntFlowCorrelationsAllHist(NULL),
170 fIntFlowCovariances(NULL),
171 fIntFlowSumOfProductOfEventWeights(NULL),
172 fIntFlowCovariancesNUA(NULL),
173 fIntFlowSumOfProductOfEventWeightsNUA(NULL),
174 fIntFlowQcumulants(NULL),
175 fIntFlowQcumulantsRebinnedInM(NULL),
176 fIntFlowQcumulantsErrorSquaredRatio(NULL),
178 fIntFlowRebinnedInM(NULL),
179 fIntFlowDetectorBias(NULL),
182 fDiffFlowProfiles(NULL),
183 fDiffFlowResults(NULL),
185 fDiffFlowFlags(NULL),
186 fCalculateDiffFlow(kTRUE),
187 fCalculate2DDiffFlow(kFALSE),
188 fCalculateDiffFlowVsEta(kTRUE),
190 fOtherDiffCorrelatorsList(NULL),
192 fDistributionsList(NULL),
193 fDistributionsFlags(NULL),
194 fStoreDistributions(kFALSE),
195 fnBinsForCorrelations(10000),
197 fNestedLoopsList(NULL),
198 fEvaluateIntFlowNestedLoops(kFALSE),
199 fEvaluateDiffFlowNestedLoops(kFALSE),
200 fMaxAllowedMultiplicity(10),
201 fEvaluateNestedLoops(NULL),
202 fIntFlowDirectCorrelations(NULL),
203 fIntFlowExtraDirectCorrelations(NULL),
204 fCrossCheckInPtBinNo(10),
205 fCrossCheckInEtaBinNo(20),
206 fNoOfParticlesInBin(NULL),
207 fMixedHarmonicsNestedLoops(NULL),
209 fMixedHarmonicsList(NULL),
210 fMixedHarmonicsProfiles(NULL),
211 fMixedHarmonicsResults(NULL),
212 fMixedHarmonicsErrorPropagation(NULL),
213 fMixedHarmonicsFlags(NULL),
214 fCalculateMixedHarmonics(kFALSE),
215 fCalculateMixedHarmonicsVsM(kFALSE),
216 f2pCorrelations(NULL),
217 f3pCorrelations(NULL),
218 f4pCorrelations(NULL),
219 f5pCorrelations(NULL),
220 f6pCorrelations(NULL),
221 f7pCorrelations(NULL),
222 f8pCorrelations(NULL),
230 fMixedHarmonicProductOfEventWeights(NULL),
231 fMixedHarmonicProductOfCorrelations(NULL),
233 fControlHistogramsList(NULL),
234 fControlHistogramsFlags(NULL),
235 fStoreControlHistograms(kFALSE),
236 fCorrelationNoRPsVsRefMult(NULL),
237 fCorrelationNoPOIsVsRefMult(NULL),
238 fCorrelationNoRPsVsNoPOIs(NULL),
240 fBootstrapList(NULL),
241 fBootstrapProfilesList(NULL),
242 fBootstrapResultsList(NULL),
243 fBootstrapFlags(NULL),
244 fUseBootstrap(kFALSE),
245 fUseBootstrapVsM(kFALSE),
248 fBootstrapCorrelations(NULL),
249 fBootstrapCumulants(NULL),
254 fCalculateCRC(kTRUE),
255 fCalculateCRCPt(kFALSE),
256 fCalculateCME(kFALSE),
257 fCalculateCRC2(kFALSE),
258 fCalculateCRCVZ(kFALSE),
259 fCalculateCRCZDC(kFALSE),
260 fCalculateFlowQC(kFALSE),
261 fCalculateFlowZDC(kFALSE),
262 fCalculateFlowVZ(kFALSE),
263 fCalculateEbEFlow(kFALSE),
266 fRecenterZDC(kFALSE),
268 fUseCRCRecenter(kFALSE),
278 fCorrWeightTPC(kUnit),
279 fCorrWeightVZ(kUnit),
280 fCorrWeightZDC(kUnit),
283 fCRCCenBinWidth(CenWidth),
284 fCRCIntRbRList(NULL),
289 fCRCQVecWeightsList(NULL),
290 fCRCZDCCalibList(NULL),
295 fCRCZDCRbRList(NULL),
303 fFlowSPZDCList(NULL),
304 fFlowSPZDCRbRList(NULL),
307 fFlowQCDeltaEta(0.4),
313 fQAZDCCutsFlag(kTRUE),
320 fHistList =
new TList();
321 fHistList->SetName(
"cobjQC");
322 fHistList->SetOwner(kTRUE);
325 fTempList =
new TList();
326 fTempList->SetName(
"temp");
327 fTempList->SetOwner(kTRUE);
330 fMultiplicityWeight =
new TString(
"combinations");
333 fAnalysisLabel =
new TString();
336 this->InitializeArraysForIntFlow();
337 this->InitializeArraysForDiffFlow();
338 this->InitializeArraysForDistributions();
339 this->InitializeArraysForVarious();
340 this->InitializeArraysForParticleWeights();
341 this->InitializeArraysForNestedLoops();
342 this->InitializeArraysForMixedHarmonics();
343 this->InitializeArraysForControlHistograms();
344 this->InitializeArraysForBootstrap();
346 fRunList = TArrayI();
349 this->InitializeCostantsForCRC();
350 this->InitializeArraysForCRC();
351 this->InitializeArraysForCRCVZ();
352 this->InitializeArraysForCRCZDC();
353 this->InitializeArraysForCRC2();
354 this->InitializeArraysForQVec();
355 this->InitializeArraysForCRCPt();
356 this->InitializeArraysForCME();
357 this->InitializeArraysForFlowEbE();
358 this->InitializeArraysForFlowQC();
359 this->InitializeArraysForFlowSPZDC();
360 this->InitializeArraysForFlowSPVZ();
361 this->InitializeArraysForEbEFlow();
398 Bool_t oldHistAddStatus = TH1::AddDirectoryStatus();
399 TH1::AddDirectory(kFALSE);
450 TH1::AddDirectory(oldHistAddStatus);
487 Double_t wTrack = 1.;
488 Double_t wPhiEta = 1.;
489 Int_t nCounterNoRPs = 0;
511 Double_t ptEta[2] = {0.,0.};
524 if(fRunBin<0 || fRunBin>=
fCRCnRun) {
return;}
526 if(fCenBin<0 || fCenBin>=
fCRCnCen) {
return;}
533 for(Int_t k=0; k<2; k++) {
542 Double_t PhiEtaAv = 0.;
543 for(Int_t k=0; k<2; k++) {
546 for(Int_t i=1; i<=nBinsEta; i++) {
547 for (Int_t j=1; j<=nBinsPhi; j++) {
551 PhiEtaAv /= 1.*nBinsPhi*nBinsEta;
552 for(Int_t i=1; i<=nBinsEta; i++) {
553 for (Int_t j=1; j<=nBinsPhi; j++) {
558 }
else cout <<
" WARNING: fPhiEtaWeights not found !!! " << endl;
615 for(Int_t i=0;i<nPrim;i++) {
625 dPhi = aftsTrack->
Phi();
626 dPt = aftsTrack->
Pt();
627 dEta = aftsTrack->
Eta();
654 for(Int_t m=0;m<12;m++)
656 for(Int_t k=0;k<9;k++)
658 (*fReQ)(m,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1)*n*dPhi);
659 (*fImQ)(m,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1)*n*dPhi);
663 for(Int_t p=0;p<8;p++)
665 for(Int_t k=0;k<9;k++)
667 (*fSpk)(p,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k);
676 for(Int_t k=0;k<9;k++)
678 for(Int_t m=0;m<4;m++)
684 fReRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
685 fImRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
688 fs1dEBE[0][pe][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
694 fReRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
695 fImRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
698 fs2dEBE[0][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
707 for(Int_t k=0;k<9;k++)
709 for(Int_t m=0;m<4;m++)
715 fReRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
716 fImRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
719 fs1dEBE[2][pe][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
725 fReRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
726 fImRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
729 fs2dEBE[2][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
742 dPhi = aftsTrack->
Phi();
743 dPt = aftsTrack->
Pt();
744 dEta = aftsTrack->
Eta();
745 dCharge = aftsTrack->
Charge();
746 if (dCharge > 0.) cw = 0;
747 else if (dCharge < 0.) cw = 1;
775 if(ptbin==-1)
continue;
782 for(Int_t k=0;k<9;k++)
784 for(Int_t m=0;m<4;m++)
790 fReRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
791 fImRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
796 fReRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
797 fImRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
805 fCRCQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
806 fCRCQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
807 fCRCMult[cw][h]->Fill(dEta,wPhiEta);
809 fCRC2QRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
810 fCRC2QIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
811 fCRC2Mul[cw][h]->Fill(dEta,wPhiEta);
813 fCRCZDCQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
814 fCRCZDCQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
818 fCRC2QRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
819 fCRC2QIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
824 fCRCZDCQRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
825 fCRCZDCQIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
828 fCRCZDCQRe[3][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
829 fCRCZDCQIm[3][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
834 fCMEQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
835 fCMEQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
836 fCMEMult[cw][h]->Fill(dEta,wPhiEta);
837 fCMEQRe[2+cw][h]->Fill(dEta,pow(wPhiEta,2.)*TMath::Cos((h+1.)*dPhi));
838 fCMEQIm[2+cw][h]->Fill(dEta,pow(wPhiEta,2.)*TMath::Sin((h+1.)*dPhi));
839 fCMEMult[2+cw][h]->Fill(dEta,pow(wPhiEta,2.));
847 fPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
848 fPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
851 Int_t keta = (dEta<0.?0:1);
852 fPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
853 fPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
860 fEtaDiffQRe[h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
861 fEtaDiffQIm[h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
892 printf(
"\n WARNING (QC): No particle (i.e. aftsTrack is a NULL pointer in AFAWQC::Make())!!!!\n\n");
900 for(Int_t p=0;p<8;p++)
902 for(Int_t k=0;k<9;k++)
904 (*fSpk)(p,k)=pow((*
fSpk)(p,k),p+1);
1323 cout<<
"Skipping the event because multiplicity is "<<nPrim<<
". Too high to evaluate nested loops!"<<endl;
1327 cout<<
"Skipping the event because multiplicity is "<<nPrim<<
"."<<endl;
1419 Double_t dMult = (*fSpk)(0,0);
1422 Double_t dReQ1n = (*fReQ)(0,0);
1423 Double_t dReQ2n = (*fReQ)(1,0);
1426 Double_t dImQ1n = (*fImQ)(0,0);
1427 Double_t dImQ2n = (*fImQ)(1,0);
1432 Double_t dMultiplicityBin = 0.;
1459 Double_t cosP1n = 0.;
1463 cosP1n = dReQ1n/dMult;
1476 Double_t cosP1nP1n = 0.;
1477 Double_t cosP2nM1n = 0.;
1481 cosP1nP1n = (pow(dReQ1n,2)-pow(dImQ1n,2)-dReQ2n)/(dMult*(dMult-1));
1482 cosP2nM1n = (dReQ2n*dReQ1n+dImQ2n*dImQ1n-dReQ1n)/(dMult*(dMult-1));
1502 Double_t cosP1nM1nM1n = 0.;
1506 cosP1nM1nM1n = (dReQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2))-dReQ1n*dReQ2n-dImQ1n*dImQ2n-2.*(dMult-1)*dReQ1n)
1507 / (dMult*(dMult-1)*(dMult-2));
1528 Double_t dMult = (*fSpk)(0,0);
1531 Double_t dReQ1n = (*fReQ)(0,0);
1532 Double_t dReQ2n = (*fReQ)(1,0);
1535 Double_t dImQ1n = (*fImQ)(0,0);
1536 Double_t dImQ2n = (*fImQ)(1,0);
1541 Double_t dMultiplicityBin = 0.;
1568 Double_t sinP1n = 0.;
1572 sinP1n = dImQ1n/dMult;
1585 Double_t sinP1nP1n = 0.;
1586 Double_t sinP2nM1n = 0.;
1589 sinP1nP1n = (2.*dReQ1n*dImQ1n-dImQ2n)/(dMult*(dMult-1));
1590 sinP2nM1n = (dImQ2n*dReQ1n-dReQ2n*dImQ1n-dImQ1n)/(dMult*(dMult-1));
1610 Double_t sinP1nM1nM1n = 0.;
1614 sinP1nM1nM1n = (-dImQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2))+dReQ1n*dImQ2n-dImQ1n*dReQ2n+2.*(dMult-1)*dImQ1n)
1615 / (dMult*(dMult-1)*(dMult-2));
1645 if(outputListHistos)
1650 printf(
"\n WARNING (QC): fHistList is NULL in AFAWQC::GOH() !!!!\n\n");
1677 printf(
"\n WARNING (QC): outputListHistos is NULL in AFAWQC::GOH() !!!!\n\n");
1689 Int_t nBinsPt = profilePtEta->GetNbinsX();
1690 Double_t dPtMin = (profilePtEta->GetXaxis())->GetXmin();
1691 Double_t dPtMax = (profilePtEta->GetXaxis())->GetXmax();
1693 Int_t nBinsEta = profilePtEta->GetNbinsY();
1695 TProfile *profilePt =
new TProfile(
"",
"",nBinsPt,dPtMin,dPtMax);
1697 for(Int_t p=1;p<=nBinsPt;p++)
1699 Double_t contentPt = 0.;
1700 Double_t entryPt = 0.;
1701 Double_t spreadPt = 0.;
1705 for(Int_t e=1;e<=nBinsEta;e++)
1707 contentPt += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
1708 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1709 entryPt += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1711 sum1 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
1712 * (pow(profilePtEta->GetBinError(profilePtEta->GetBin(p,e)),2.)
1713 + pow(profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)),2.));
1714 sum2 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1715 sum3 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
1716 * (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)));
1718 if(sum2>0. && sum1/sum2-pow(sum3/sum2,2.) > 0.)
1720 spreadPt = pow(sum1/sum2-pow(sum3/sum2,2.),0.5);
1722 profilePt->SetBinContent(p,contentPt);
1723 profilePt->SetBinEntries(p,entryPt);
1725 profilePt->SetBinError(p,spreadPt);
1742 Int_t nBinsEta = profilePtEta->GetNbinsY();
1743 Double_t dEtaMin = (profilePtEta->GetYaxis())->GetXmin();
1744 Double_t dEtaMax = (profilePtEta->GetYaxis())->GetXmax();
1746 Int_t nBinsPt = profilePtEta->GetNbinsX();
1748 TProfile *profileEta =
new TProfile(
"",
"",nBinsEta,dEtaMin,dEtaMax);
1750 for(Int_t e=1;e<=nBinsEta;e++)
1752 Double_t contentEta = 0.;
1753 Double_t entryEta = 0.;
1754 for(Int_t p=1;p<=nBinsPt;p++)
1756 contentEta += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
1757 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1758 entryEta += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1760 profileEta->SetBinContent(e,contentEta);
1761 profileEta->SetBinEntries(e,entryEta);
1776 Double_t dVn[4] = {0.};
1777 Double_t dVnErr[4] = {0.};
1781 for(Int_t b=0;b<4;b++)
1792 }
else if(type ==
"RP")
1802 }
else if(type ==
"POI")
1814 for(Int_t b=0;b<4;b++)
1821 TString
title =
" flow estimates from Q-cumulants";
1822 TString subtitle =
" (";
1823 TString subtitle2 =
" (rebinned in M)";
1825 if(type !=
"RF, rebinned in M")
1829 subtitle.Append(type);
1830 subtitle.Append(
", without weights)");
1833 subtitle.Append(type);
1834 subtitle.Append(
", with weights)");
1840 subtitle.Append(
"RF");
1841 subtitle.Append(
", without weights)");
1844 subtitle.Append(
"RF");
1845 subtitle.Append(
", with weights)");
1850 cout<<
"*************************************"<<endl;
1851 cout<<
"*************************************"<<endl;
1852 cout<<title.Data()<<endl;
1853 cout<<subtitle.Data()<<endl;
1854 if(type ==
"RF, rebinned in M"){cout<<subtitle2.Data()<<endl;}
1857 for(Int_t i=0;i<4;i++)
1859 cout<<
" v_"<<n<<
"{"<<2*(i+1)<<
"} = "<<dVn[i]<<
" +/- "<<dVnErr[i]<<endl;
1867 cout<<
" detector bias (corrected for): "<<endl;
1870 cout<<
" detector bias (not corrected for):"<<endl;
1876 if(type ==
"RF" || type ==
"RF, rebinned in M")
1880 else if (type ==
"RP")
1884 else if (type ==
"POI")
1889 cout<<
"*************************************"<<endl;
1890 cout<<
"*************************************"<<endl;
1900 TFile *output =
new TFile(outputFileName.Data(),
"RECREATE");
1916 outputFileName->Write(outputFileName->GetName(), TObject::kSingleKey);
1929 TString commonHistsName =
"AliFlowCommonHistQC";
1937 TString commonHists2ndOrderName =
"AliFlowCommonHist2ndOrderQC";
1942 TString commonHists4thOrderName =
"AliFlowCommonHist4thOrderQC";
1947 TString commonHists6thOrderName =
"AliFlowCommonHist6thOrderQC";
1952 TString commonHists8thOrderName =
"AliFlowCommonHist8thOrderQC";
1960 TString commonHistResults2ndOrderName =
"AliFlowCommonHistResults2ndOrderQC";
1965 TString commonHistResults4thOrderName =
"AliFlowCommonHistResults4thOrderQC";
1970 TString commonHistResults6thOrderName =
"AliFlowCommonHistResults6thOrderQC";
1975 TString commonHistResults8thOrderName =
"AliFlowCommonHistResults8thOrderQC";
1990 printf(
"\n WARNING (QC): fWeightsList is NULL in AFAWQC::BAFWH() !!!! \n\n");
1994 TString fUseParticleWeightsName =
"fUseParticleWeightsQC";
1996 fUseParticleWeights =
new TProfile(fUseParticleWeightsName.Data(),
"0 = particle weight not used, 1 = particle weight used ",5,0,5);
2010 for(Int_t c=0; c<2; c++) {
2012 Form(
"fPhiEtaWeights[%d]",c),32,0.,TMath::TwoPi(),32,-0.8,0.8);
2220 TF1 *CenFit =
new TF1(
"CenFit",
"pol0", 0., 100.);
2223 Double_t CenAv = CenFit->GetParameter(0);
2235 Double_t CenAv = CenFit->GetParameter(0);
2237 Double_t SemiCenAv = CenFit->GetParameter(0);
2263 TString sinCosFlag[2] = {
"sin",
"cos"};
2264 TString powerFlag[2] = {
"linear",
"quadratic"};
2267 TString intFlowFlagsName =
"fIntFlowFlags";
2269 fIntFlowFlags =
new TProfile(intFlowFlagsName.Data(),
"Flags for Integrated Flow",20,0.,20.);
2275 fIntFlowFlags->GetXaxis()->SetBinLabel(1,
"Particle Weights");
2277 fIntFlowFlags->GetXaxis()->SetBinLabel(3,
"Corrected for NUA?");
2278 fIntFlowFlags->GetXaxis()->SetBinLabel(4,
"Print RF results");
2279 fIntFlowFlags->GetXaxis()->SetBinLabel(5,
"Print RP results");
2280 fIntFlowFlags->GetXaxis()->SetBinLabel(6,
"Print POI results");
2281 fIntFlowFlags->GetXaxis()->SetBinLabel(7,
"Print RF (rebinned in M) results");
2282 fIntFlowFlags->GetXaxis()->SetBinLabel(8,
"Corrected for NUA vs M?");
2283 fIntFlowFlags->GetXaxis()->SetBinLabel(9,
"Propagate errors to v_{n} from correlations?");
2284 fIntFlowFlags->GetXaxis()->SetBinLabel(10,
"Calculate cumulants vs M");
2285 fIntFlowFlags->GetXaxis()->SetBinLabel(11,
"fMinimumBiasReferenceFlow");
2286 fIntFlowFlags->GetXaxis()->SetBinLabel(12,
"fForgetAboutCovariances");
2288 fIntFlowFlags->GetXaxis()->SetBinLabel(14,
"fFillMultipleControlHistograms");
2289 fIntFlowFlags->GetXaxis()->SetBinLabel(15,
"Calculate all correlations vs M");
2290 fIntFlowFlags->GetXaxis()->SetBinLabel(16,
"fMultiplicityIs");
2292 fIntFlowFlags->GetXaxis()->SetBinLabel(18,
"fUse2DHistograms");
2293 fIntFlowFlags->GetXaxis()->SetBinLabel(19,
"fFillProfilesVsMUsingWeights");
2294 fIntFlowFlags->GetXaxis()->SetBinLabel(20,
"fUseQvectorTerms");
2299 fReQ =
new TMatrixD(12,9);
2300 fImQ =
new TMatrixD(12,9);
2301 fSpk =
new TMatrixD(8,9);
2303 TString intFlowCorrelationsEBEName =
"fIntFlowCorrelationsEBE";
2305 fIntFlowCorrelationsEBE =
new TH1D(intFlowCorrelationsEBEName.Data(),intFlowCorrelationsEBEName.Data(),4,0,4);
2307 TString intFlowEventWeightsForCorrelationsEBEName =
"fIntFlowEventWeightsForCorrelationsEBE";
2308 intFlowEventWeightsForCorrelationsEBEName +=
fAnalysisLabel->Data();
2311 TString intFlowCorrelationsAllEBEName =
"fIntFlowCorrelationsAllEBE";
2316 TString fIntFlowCorrectionTermsForNUAEBEName =
"fIntFlowCorrectionTermsForNUAEBE";
2318 for(Int_t sc=0;sc<2;sc++)
2320 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);
2323 TString fIntFlowEventWeightForCorrectionTermsForNUAEBEName =
"fIntFlowEventWeightForCorrectionTermsForNUAEBE";
2324 fIntFlowEventWeightForCorrectionTermsForNUAEBEName +=
fAnalysisLabel->Data();
2325 for(Int_t sc=0;sc<2;sc++)
2327 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);
2331 TString avMultiplicityName =
"fAvMultiplicity";
2333 fAvMultiplicity =
new TProfile(avMultiplicityName.Data(),
"Average multiplicities of reference particles (RPs)",9,0,9);
2350 TString correlationFlag[4] = {
"#LT#LT2#GT#GT",
"#LT#LT4#GT#GT",
"#LT#LT6#GT#GT",
"#LT#LT8#GT#GT"};
2351 TString intFlowCorrelationsProName =
"fIntFlowCorrelationsPro";
2353 fIntFlowCorrelationsPro =
new TProfile(intFlowCorrelationsProName.Data(),
"Average correlations for all events",4,0,4,
"s");
2359 for(Int_t b=0;b<4;b++)
2365 TString squaredCorrelationFlag[4] = {
"#LT#LT2#GT^{2}#GT",
"#LT#LT4#GT^{2}#GT",
"#LT#LT6#GT^{2}#GT",
"#LT#LT8#GT^{2}#GT"};
2366 TString intFlowSquaredCorrelationsProName =
"fIntFlowSquaredCorrelationsPro";
2374 for(Int_t b=0;b<4;b++)
2381 for(Int_t ci=0;ci<4;ci++)
2384 TString intFlowCorrelationsVsMProName =
"fIntFlowCorrelationsVsMPro";
2386 fIntFlowCorrelationsVsMPro[ci] =
new TProfile(Form(
"%s, %s",intFlowCorrelationsVsMProName.Data(),correlationFlag[ci].Data()),
2387 Form(
"%s vs multiplicity",correlationFlag[ci].
Data()),
2403 TString intFlowSquaredCorrelationsVsMProName =
"fIntFlowSquaredCorrelationsVsMPro";
2406 Form(
"%s vs multiplicity",squaredCorrelationFlag[ci].
Data()),
2424 TString intFlowCorrelationsAllProName =
"fIntFlowCorrelationsAllPro";
2426 fIntFlowCorrelationsAllPro =
new TProfile(intFlowCorrelationsAllProName.Data(),
"Average all correlations for all events",64,0,64);
2532 fIntFlowCorrelationsAllVsMPro[30] =
new TProfile(
"eight1n1n1n1n1n1n1n1n",
"#LT#LT8#GT#GT_{n,n,n,n|n,n,n,n}",
fnBinsMult,
fMinMult,
fMaxMult);
2566 for(Int_t n=0;n<63;n++)
2588 TString intFlowExtraCorrelationsProName =
"fIntFlowExtraCorrelationsPro";
2590 fIntFlowExtraCorrelationsPro =
new TProfile(intFlowExtraCorrelationsProName.Data(),
"Average extra correlations for all events",100,0,100,
"s");
2601 TString productFlag[6] = {
"#LT#LT2#GT#LT4#GT#GT",
"#LT#LT2#GT#LT6#GT#GT",
"#LT#LT2#GT#LT8#GT#GT",
2602 "#LT#LT4#GT#LT6#GT#GT",
"#LT#LT4#GT#LT8#GT#GT",
"#LT#LT6#GT#LT8#GT#GT"};
2603 TString intFlowProductOfCorrelationsProName =
"fIntFlowProductOfCorrelationsPro";
2610 for(Int_t b=0;b<6;b++)
2619 TString intFlowProductOfCorrelationsVsMProName =
"fIntFlowProductOfCorrelationsVsMPro";
2620 intFlowProductOfCorrelationsVsMProName +=
fAnalysisLabel->Data();
2621 for(Int_t
pi=0;
pi<6;
pi++)
2624 Form(
"%s versus multiplicity",productFlag[
pi].
Data()),
2640 TString intFlowProductOfCorrectionTermsForNUAProName =
"fIntFlowProductOfCorrectionTermsForNUAPro";
2641 intFlowProductOfCorrectionTermsForNUAProName +=
fAnalysisLabel->Data();
2676 for(Int_t sc=0;sc<2;sc++)
2678 TString intFlowCorrectionTermsForNUAProName =
"fIntFlowCorrectionTermsForNUAPro";
2680 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");
2693 TString correctionTermFlag[4] = {
"(n(phi1))",
"(n(phi1+phi2))",
"(n(phi1-phi2-phi3))",
"(n(2phi1-phi2))"};
2694 for(Int_t ci=0;ci<4;ci++)
2696 TString intFlowCorrectionTermsForNUAVsMProName =
"fIntFlowCorrectionTermsForNUAVsMPro";
2697 intFlowCorrectionTermsForNUAVsMProName +=
fAnalysisLabel->Data();
2698 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");
2706 TString intFlowCorrelationsHistName =
"fIntFlowCorrelationsHist";
2708 fIntFlowCorrelationsHist =
new TH1D(intFlowCorrelationsHistName.Data(),
"Average correlations for all events",4,0,4);
2721 for(Int_t ci=0;ci<4;ci++)
2723 TString intFlowCorrelationsVsMHistName =
"fIntFlowCorrelationsVsMHist";
2726 Form(
"%s vs multiplicity",correlationFlag[ci].
Data()),
2743 TString intFlowCorrelationsAllHistName =
"fIntFlowCorrelationsAllHist";
2784 for(Int_t sc=0;sc<2;sc++)
2786 TString intFlowCorrectionTermsForNUAHistName =
"fIntFlowCorrectionTermsForNUAHist";
2788 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);
2800 TString intFlowCovariancesName =
"fIntFlowCovariances";
2802 fIntFlowCovariances =
new TH1D(intFlowCovariancesName.Data(),
"Covariances (multiplied with weight dependent prefactor)",6,0,6);
2813 TString intFlowSumOfEventWeightsName =
"fIntFlowSumOfEventWeights";
2815 for(Int_t power=0;power<2;power++)
2817 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);
2826 }
else if (power == 1)
2836 TString intFlowSumOfProductOfEventWeightsName =
"fIntFlowSumOfProductOfEventWeights";
2852 TString intFlowCovariancesVsMName =
"fIntFlowCovariancesVsM";
2854 TString covarianceFlag[6] = {
"Cov(<2>,<4>)",
"Cov(<2>,<6>)",
"Cov(<2>,<8>)",
"Cov(<4>,<6>)",
"Cov(<4>,<8>)",
"Cov(<6>,<8>)"};
2855 for(Int_t ci=0;ci<6;ci++)
2857 fIntFlowCovariancesVsM[ci] =
new TH1D(Form(
"%s, %s",intFlowCovariancesVsMName.Data(),covarianceFlag[ci].Data()),
2858 Form(
"%s vs multiplicity",covarianceFlag[ci].
Data()),
2878 TString intFlowSumOfEventWeightsVsMName =
"fIntFlowSumOfEventWeightsVsM";
2880 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>}"},
2881 {
"#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}"}};
2882 for(Int_t si=0;si<4;si++)
2884 for(Int_t power=0;power<2;power++)
2887 Form(
"%s vs multiplicity",sumFlag[power][si].
Data()),
2909 TString intFlowSumOfProductOfEventWeightsVsMName =
"fIntFlowSumOfProductOfEventWeightsVsM";
2910 intFlowSumOfProductOfEventWeightsVsMName +=
fAnalysisLabel->Data();
2911 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>}",
2912 "#sum_{i=1}^{N} w_{<4>} w_{<6>}",
"#sum_{i=1}^{N} w_{<4>} w_{<8>}",
"#sum_{i=1}^{N} w_{<6>} w_{<8>}"};
2913 for(Int_t
pi=0;
pi<6;
pi++)
2916 Form(
"%s versus multiplicity",sopowFlag[
pi].
Data()),
2933 TString intFlowCovariancesNUAName =
"fIntFlowCovariancesNUA";
2935 fIntFlowCovariancesNUA =
new TH1D(intFlowCovariancesNUAName.Data(),
"Covariances for NUA (multiplied with weight dependent prefactor)",27,0,27);
2954 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(16,
"Cov(<cos(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2955 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(17,
"Cov(<cos(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2958 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(20,
"Cov(<sin(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2959 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(21,
"Cov(<sin(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2960 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(22,
"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}+#phi_{2})>)");
2961 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(23,
"Cov(<cos(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2962 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(24,
"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2963 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(25,
"Cov(<sin(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2964 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(26,
"Cov(<sin(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2965 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(27,
"Cov(<cos(#phi_{1}-#phi_{2}-#phi_{3}>,<sin(#phi_{1}-#phi_{2}-#phi_{3}>)");
2968 TString intFlowSumOfEventWeightsNUAName =
"fIntFlowSumOfEventWeightsNUA";
2970 for(Int_t sc=0;sc<2;sc++)
2972 for(Int_t power=0;power<2;power++)
2974 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);
2983 }
else if(power == 1)
2987 (
fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(3,Form(
"#sum_{i=1}^{N} w_{<%s(#phi_{1}-#phi_{2}-#phi_{3})>}^{2}",sinCosFlag[sc].
Data()));
2994 TString intFlowSumOfProductOfEventWeightsNUAName =
"fIntFlowSumOfProductOfEventWeightsNUA";
2995 intFlowSumOfProductOfEventWeightsNUAName +=
fAnalysisLabel->Data();
3028 TString cumulantFlag[4] = {
"QC{2}",
"QC{4}",
"QC{6}",
"QC{8}"};
3029 TString intFlowQcumulantsName =
"fIntFlowQcumulants";
3031 fIntFlowQcumulants =
new TH1D(intFlowQcumulantsName.Data(),
"Reference Q-cumulants",4,0,4);
3034 fIntFlowQcumulants->SetTitle(
"Reference Q-cumulants (error from non-isotropic terms also propagated)");
3038 for(Int_t b=0;b<4;b++)
3046 TString intFlowQcumulantsRebinnedInMName =
"fIntFlowQcumulantsRebinnedInM";
3051 for(Int_t b=0;b<4;b++)
3058 TString intFlowQcumulantsErrorSquaredRatioName =
"fIntFlowQcumulantsErrorSquaredRatio";
3059 intFlowQcumulantsErrorSquaredRatioName +=
fAnalysisLabel->Data();
3060 fIntFlowQcumulantsErrorSquaredRatio =
new TH1D(intFlowQcumulantsErrorSquaredRatioName.Data(),
"Error squared of reference Q-cumulants: #frac{with NUA terms}{without NUA terms}",4,0,4);
3063 for(Int_t b=0;b<4;b++)
3071 TString intFlowQcumulantsVsMName =
"fIntFlowQcumulantsVsM";
3073 for(Int_t co=0;co<4;co++)
3075 fIntFlowQcumulantsVsM[co] =
new TH1D(Form(
"%s, %s",intFlowQcumulantsVsMName.Data(),cumulantFlag[co].Data()),
3076 Form(
"%s vs multiplicity",cumulantFlag[co].
Data()),
3093 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)};
3094 TString intFlowName =
"fIntFlow";
3097 fIntFlow =
new TH1D(intFlowName.Data(),
"Reference flow estimates from Q-cumulants",4,0,4);
3100 for(Int_t b=0;b<4;b++)
3102 (
fIntFlow->GetXaxis())->SetBinLabel(b+1,flowFlag[b].
Data());
3108 TString intFlowRebinnedInMName =
"fIntFlowRebinnedInM";
3110 fIntFlowRebinnedInM =
new TH1D(intFlowRebinnedInMName.Data(),
"Reference flow estimates from Q-cumulants (rebinned in M)",4,0,4);
3113 for(Int_t b=0;b<4;b++)
3122 TString intFlowVsMName =
"fIntFlowVsM";
3124 for(Int_t co=0;co<4;co++)
3126 fIntFlowVsM[co] =
new TH1D(Form(
"%s, %s",intFlowVsMName.Data(),flowFlag[co].Data()),
3127 Form(
"%s vs multiplicity",flowFlag[co].
Data()),
3134 fIntFlowVsM[co]->GetXaxis()->SetTitle(
"Reference multiplicity (from ESD)");
3144 TString intFlowDetectorBiasName =
"fIntFlowDetectorBias";
3146 fIntFlowDetectorBias =
new TH1D(intFlowDetectorBiasName.Data(),
"Quantifying detector bias",4,0,4);
3149 for(Int_t ci=0;ci<4;ci++)
3151 (
fIntFlowDetectorBias->GetXaxis())->SetBinLabel(ci+1,Form(
"#frac{corrected}{measured} %s",cumulantFlag[ci].
Data()));
3157 TString intFlowDetectorBiasVsMName =
"fIntFlowDetectorBiasVsM";
3159 for(Int_t ci=0;ci<4;ci++)
3161 fIntFlowDetectorBiasVsM[ci] =
new TH1D(Form(
"%s for %s",intFlowDetectorBiasVsMName.Data(),cumulantFlag[ci].Data()),
3162 Form(
"Quantifying detector bias for %s vs multiplicity",cumulantFlag[ci].
Data()),
3191 TString controlHistogramsFlagsName =
"fControlHistogramsFlags";
3193 fControlHistogramsFlags =
new TProfile(controlHistogramsFlagsName.Data(),
"Flags for Control Histograms",2,0,2);
3207 TString sCorrelationNoRPsVsRefMultName =
"fCorrelationNoRPsVsRefMult";
3218 TString sCorrelationNoPOIsVsRefMultName =
"fCorrelationNoPOIsVsRefMult";
3229 TString sCorrelationNoRPsVsNoPOIsName =
"fCorrelationNoRPsVsNoPOIs";
3240 TString sCorrelation[4] = {
"#LT2#GT",
"#LT4#GT",
"#LT6#GT",
"#LT8#GT"};
3241 TString sMultiplicity =
"";
3244 sMultiplicity =
"# RPs";
3247 sMultiplicity =
"Reference multiplicity (from ESD)";
3250 sMultiplicity =
"# POIs";
3252 for(Int_t ci=0;ci<4;ci++)
3264 TString sCorrelationProduct[1] = {
"#LT2#GT#LT4#GT"};
3265 for(Int_t cpi=0;cpi<1;cpi++)
3279 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}}"};
3280 for(Int_t qvti=0;qvti<4;qvti++)
3307 TString bootstrapFlagsName =
"fBootstrapFlags";
3309 fBootstrapFlags =
new TProfile(bootstrapFlagsName.Data(),
"Flags for bootstrap",3,0,3);
3327 TString correlationFlag[4] = {
"#LT#LT2#GT#GT",
"#LT#LT4#GT#GT",
"#LT#LT6#GT#GT",
"#LT#LT8#GT#GT"};
3328 TString cumulantFlag[4] = {
"QC{2}",
"QC{4}",
"QC{6}",
"QC{8}"};
3332 TString bootstrapCorrelationsName =
"fBootstrapCorrelations";
3336 for(Int_t ci=0;ci<4;ci++)
3346 TString bootstrapCumulantsName =
"fBootstrapCumulants";
3350 for(Int_t co=0;co<4;co++)
3362 TString sMultiplicity =
"";
3365 sMultiplicity =
"# RPs";
3368 sMultiplicity =
"Reference multiplicity (from ESD)";
3371 sMultiplicity =
"# POIs";
3376 TString bootstrapCorrelationsVsMName =
"fBootstrapCorrelationsVsM";
3378 for(Int_t ci=0;ci<4;ci++)
3380 fBootstrapCorrelationsVsM[ci] =
new TProfile2D(Form(
"%s, %s",bootstrapCorrelationsVsMName.Data(),correlationFlag[ci].Data()),
3381 Form(
"Bootstrap Correlations Vs. M, %s",correlationFlag[ci].
Data()),
3392 TString bootstrapCumulantsVsMName =
"fBootstrapCumulantsVsM";
3394 for(Int_t co=0;co<4;co++)
3396 fBootstrapCumulantsVsM[co] =
new TH2D(Form(
"%s, %s",bootstrapCumulantsVsMName.Data(),cumulantFlag[co].Data()),
3397 Form(
"Bootstrap Cumulants Vs. M, %s",cumulantFlag[co].
Data()),
3423 TString mixedHarmonicsFlagsName =
"fMixedHarmonicsFlags";
3425 fMixedHarmonicsFlags =
new TProfile(mixedHarmonicsFlagsName.Data(),
"Flags for Mixed Harmonics",4,0,4);
3441 TString s2pCorrelationsName =
"f2pCorrelations";
3443 f2pCorrelations =
new TProfile(s2pCorrelationsName.Data(),Form(
"2-particle correlations (n = %d)",
fHarmonic),6,0,6,
"s");
3458 TString s3pCorrelationsName =
"f3pCorrelations";
3460 f3pCorrelations =
new TProfile(s3pCorrelationsName.Data(),Form(
"3-particle correlations (n = %d)",
fHarmonic),10,0,10,
"s");
3481 TString s4pCorrelationsName =
"f4pCorrelations";
3483 f4pCorrelations =
new TProfile(s4pCorrelationsName.Data(),Form(
"4-particle correlations (n = %d)",
fHarmonic),45,0,45,
"s");
3542 TString s5pCorrelationsName =
"f5pCorrelations";
3544 f5pCorrelations =
new TProfile(s5pCorrelationsName.Data(),Form(
"5-particle correlations (n = %d)",
fHarmonic),87,0,87,
"s");
3645 TString s6pCorrelationsName =
"f6pCorrelations";
3647 f6pCorrelations =
new TProfile(s6pCorrelationsName.Data(),Form(
"6-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3656 TString s7pCorrelationsName =
"f7pCorrelations";
3658 f7pCorrelations =
new TProfile(s7pCorrelationsName.Data(),Form(
"7-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3667 TString s8pCorrelationsName =
"f8pCorrelations";
3669 f8pCorrelations =
new TProfile(s8pCorrelationsName.Data(),Form(
"8-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3714 TString mixedHarmonicEventWeightsName =
"fMixedHarmonicEventWeights";
3716 TString powerFlag[2] = {
"linear",
"quadratic"};
3717 for(Int_t power=0;power<2;power++)
3719 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.);
3733 }
else if (power == 1)
3748 TString mixedHarmonicProductOfEventWeightsName =
"fMixedHarmonicProductOfEventWeights";
3749 mixedHarmonicProductOfEventWeightsName +=
fAnalysisLabel->Data();
3754 for(Int_t b=1;b<=8;b++)
3762 TString mixedHarmonicProductOfCorrelationsName =
"fMixedHarmonicProductOfCorrelations";
3763 mixedHarmonicProductOfCorrelationsName +=
fAnalysisLabel->Data();