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;
593 for(Int_t i=0;i<nPrim;i++) {
603 dPhi = aftsTrack->
Phi();
604 dPt = aftsTrack->
Pt();
605 dEta = aftsTrack->
Eta();
632 for(Int_t m=0;m<12;m++)
634 for(Int_t k=0;k<9;k++)
636 (*fReQ)(m,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1)*n*dPhi);
637 (*fImQ)(m,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1)*n*dPhi);
641 for(Int_t p=0;p<8;p++)
643 for(Int_t k=0;k<9;k++)
645 (*fSpk)(p,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k);
654 for(Int_t k=0;k<9;k++)
656 for(Int_t m=0;m<4;m++)
662 fReRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
663 fImRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
666 fs1dEBE[0][pe][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
672 fReRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
673 fImRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
676 fs2dEBE[0][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
685 for(Int_t k=0;k<9;k++)
687 for(Int_t m=0;m<4;m++)
693 fReRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
694 fImRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
697 fs1dEBE[2][pe][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
703 fReRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
704 fImRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
707 fs2dEBE[2][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
720 dPhi = aftsTrack->
Phi();
721 dPt = aftsTrack->
Pt();
722 dEta = aftsTrack->
Eta();
723 dCharge = aftsTrack->
Charge();
724 if (dCharge > 0.) cw = 0;
725 else if (dCharge < 0.) cw = 1;
753 if(ptbin==-1)
continue;
760 for(Int_t k=0;k<9;k++)
762 for(Int_t m=0;m<4;m++)
768 fReRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
769 fImRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
774 fReRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
775 fImRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
783 fCRCQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
784 fCRCQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
785 fCRCMult[cw][h]->Fill(dEta,wPhiEta);
787 fCRC2QRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
788 fCRC2QIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
789 fCRC2Mul[cw][h]->Fill(dEta,wPhiEta);
791 fCRCZDCQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
792 fCRCZDCQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
796 fCRC2QRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
797 fCRC2QIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
802 fCRCZDCQRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
803 fCRCZDCQIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
806 fCRCZDCQRe[3][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
807 fCRCZDCQIm[3][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
812 fCMEQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
813 fCMEQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
814 fCMEMult[cw][h]->Fill(dEta,wPhiEta);
816 fCMEQRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
817 fCMEQIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
820 fCMEQRe[3][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
821 fCMEQIm[3][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
831 fPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
832 fPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
835 Int_t keta = (dEta<0.?0:1);
836 fPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
837 fPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
844 fEtaDiffQRe[h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
845 fEtaDiffQIm[h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
868 printf(
"\n WARNING (QC): No particle (i.e. aftsTrack is a NULL pointer in AFAWQC::Make())!!!!\n\n");
877 for(Int_t p=0;p<8;p++)
879 for(Int_t k=0;k<9;k++)
881 (*fSpk)(p,k)=pow((*
fSpk)(p,k),p+1);
1300 cout<<
"Skipping the event because multiplicity is "<<nPrim<<
". Too high to evaluate nested loops!"<<endl;
1304 cout<<
"Skipping the event because multiplicity is "<<nPrim<<
"."<<endl;
1396 Double_t dMult = (*fSpk)(0,0);
1399 Double_t dReQ1n = (*fReQ)(0,0);
1400 Double_t dReQ2n = (*fReQ)(1,0);
1403 Double_t dImQ1n = (*fImQ)(0,0);
1404 Double_t dImQ2n = (*fImQ)(1,0);
1409 Double_t dMultiplicityBin = 0.;
1436 Double_t cosP1n = 0.;
1440 cosP1n = dReQ1n/dMult;
1453 Double_t cosP1nP1n = 0.;
1454 Double_t cosP2nM1n = 0.;
1458 cosP1nP1n = (pow(dReQ1n,2)-pow(dImQ1n,2)-dReQ2n)/(dMult*(dMult-1));
1459 cosP2nM1n = (dReQ2n*dReQ1n+dImQ2n*dImQ1n-dReQ1n)/(dMult*(dMult-1));
1479 Double_t cosP1nM1nM1n = 0.;
1483 cosP1nM1nM1n = (dReQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2))-dReQ1n*dReQ2n-dImQ1n*dImQ2n-2.*(dMult-1)*dReQ1n)
1484 / (dMult*(dMult-1)*(dMult-2));
1505 Double_t dMult = (*fSpk)(0,0);
1508 Double_t dReQ1n = (*fReQ)(0,0);
1509 Double_t dReQ2n = (*fReQ)(1,0);
1512 Double_t dImQ1n = (*fImQ)(0,0);
1513 Double_t dImQ2n = (*fImQ)(1,0);
1518 Double_t dMultiplicityBin = 0.;
1545 Double_t sinP1n = 0.;
1549 sinP1n = dImQ1n/dMult;
1562 Double_t sinP1nP1n = 0.;
1563 Double_t sinP2nM1n = 0.;
1566 sinP1nP1n = (2.*dReQ1n*dImQ1n-dImQ2n)/(dMult*(dMult-1));
1567 sinP2nM1n = (dImQ2n*dReQ1n-dReQ2n*dImQ1n-dImQ1n)/(dMult*(dMult-1));
1587 Double_t sinP1nM1nM1n = 0.;
1591 sinP1nM1nM1n = (-dImQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2))+dReQ1n*dImQ2n-dImQ1n*dReQ2n+2.*(dMult-1)*dImQ1n)
1592 / (dMult*(dMult-1)*(dMult-2));
1622 if(outputListHistos)
1627 printf(
"\n WARNING (QC): fHistList is NULL in AFAWQC::GOH() !!!!\n\n");
1654 printf(
"\n WARNING (QC): outputListHistos is NULL in AFAWQC::GOH() !!!!\n\n");
1666 Int_t nBinsPt = profilePtEta->GetNbinsX();
1667 Double_t dPtMin = (profilePtEta->GetXaxis())->GetXmin();
1668 Double_t dPtMax = (profilePtEta->GetXaxis())->GetXmax();
1670 Int_t nBinsEta = profilePtEta->GetNbinsY();
1672 TProfile *profilePt =
new TProfile(
"",
"",nBinsPt,dPtMin,dPtMax);
1674 for(Int_t p=1;p<=nBinsPt;p++)
1676 Double_t contentPt = 0.;
1677 Double_t entryPt = 0.;
1678 Double_t spreadPt = 0.;
1682 for(Int_t e=1;e<=nBinsEta;e++)
1684 contentPt += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
1685 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1686 entryPt += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1688 sum1 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
1689 * (pow(profilePtEta->GetBinError(profilePtEta->GetBin(p,e)),2.)
1690 + pow(profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)),2.));
1691 sum2 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1692 sum3 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
1693 * (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)));
1695 if(sum2>0. && sum1/sum2-pow(sum3/sum2,2.) > 0.)
1697 spreadPt = pow(sum1/sum2-pow(sum3/sum2,2.),0.5);
1699 profilePt->SetBinContent(p,contentPt);
1700 profilePt->SetBinEntries(p,entryPt);
1702 profilePt->SetBinError(p,spreadPt);
1719 Int_t nBinsEta = profilePtEta->GetNbinsY();
1720 Double_t dEtaMin = (profilePtEta->GetYaxis())->GetXmin();
1721 Double_t dEtaMax = (profilePtEta->GetYaxis())->GetXmax();
1723 Int_t nBinsPt = profilePtEta->GetNbinsX();
1725 TProfile *profileEta =
new TProfile(
"",
"",nBinsEta,dEtaMin,dEtaMax);
1727 for(Int_t e=1;e<=nBinsEta;e++)
1729 Double_t contentEta = 0.;
1730 Double_t entryEta = 0.;
1731 for(Int_t p=1;p<=nBinsPt;p++)
1733 contentEta += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
1734 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1735 entryEta += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1737 profileEta->SetBinContent(e,contentEta);
1738 profileEta->SetBinEntries(e,entryEta);
1753 Double_t dVn[4] = {0.};
1754 Double_t dVnErr[4] = {0.};
1758 for(Int_t b=0;b<4;b++)
1769 }
else if(type ==
"RP")
1779 }
else if(type ==
"POI")
1791 for(Int_t b=0;b<4;b++)
1798 TString
title =
" flow estimates from Q-cumulants";
1799 TString subtitle =
" (";
1800 TString subtitle2 =
" (rebinned in M)";
1802 if(type !=
"RF, rebinned in M")
1806 subtitle.Append(type);
1807 subtitle.Append(
", without weights)");
1810 subtitle.Append(type);
1811 subtitle.Append(
", with weights)");
1817 subtitle.Append(
"RF");
1818 subtitle.Append(
", without weights)");
1821 subtitle.Append(
"RF");
1822 subtitle.Append(
", with weights)");
1827 cout<<
"*************************************"<<endl;
1828 cout<<
"*************************************"<<endl;
1829 cout<<title.Data()<<endl;
1830 cout<<subtitle.Data()<<endl;
1831 if(type ==
"RF, rebinned in M"){cout<<subtitle2.Data()<<endl;}
1834 for(Int_t i=0;i<4;i++)
1836 cout<<
" v_"<<n<<
"{"<<2*(i+1)<<
"} = "<<dVn[i]<<
" +/- "<<dVnErr[i]<<endl;
1844 cout<<
" detector bias (corrected for): "<<endl;
1847 cout<<
" detector bias (not corrected for):"<<endl;
1853 if(type ==
"RF" || type ==
"RF, rebinned in M")
1857 else if (type ==
"RP")
1861 else if (type ==
"POI")
1866 cout<<
"*************************************"<<endl;
1867 cout<<
"*************************************"<<endl;
1877 TFile *output =
new TFile(outputFileName.Data(),
"RECREATE");
1893 outputFileName->Write(outputFileName->GetName(), TObject::kSingleKey);
1906 TString commonHistsName =
"AliFlowCommonHistQC";
1914 TString commonHists2ndOrderName =
"AliFlowCommonHist2ndOrderQC";
1919 TString commonHists4thOrderName =
"AliFlowCommonHist4thOrderQC";
1924 TString commonHists6thOrderName =
"AliFlowCommonHist6thOrderQC";
1929 TString commonHists8thOrderName =
"AliFlowCommonHist8thOrderQC";
1937 TString commonHistResults2ndOrderName =
"AliFlowCommonHistResults2ndOrderQC";
1942 TString commonHistResults4thOrderName =
"AliFlowCommonHistResults4thOrderQC";
1947 TString commonHistResults6thOrderName =
"AliFlowCommonHistResults6thOrderQC";
1952 TString commonHistResults8thOrderName =
"AliFlowCommonHistResults8thOrderQC";
1967 printf(
"\n WARNING (QC): fWeightsList is NULL in AFAWQC::BAFWH() !!!! \n\n");
1971 TString fUseParticleWeightsName =
"fUseParticleWeightsQC";
1973 fUseParticleWeights =
new TProfile(fUseParticleWeightsName.Data(),
"0 = particle weight not used, 1 = particle weight used ",5,0,5);
1987 for(Int_t c=0; c<2; c++) {
1989 Form(
"fPhiEtaWeights[%d]",c),32,0.,TMath::TwoPi(),32,-0.8,0.8);
2197 TF1 *CenFit =
new TF1(
"CenFit",
"pol0", 0., 100.);
2199 Double_t CenAv = CenFit->GetParameter(0);
2201 Double_t SemiCenAv = CenFit->GetParameter(0);
2226 TString sinCosFlag[2] = {
"sin",
"cos"};
2227 TString powerFlag[2] = {
"linear",
"quadratic"};
2230 TString intFlowFlagsName =
"fIntFlowFlags";
2232 fIntFlowFlags =
new TProfile(intFlowFlagsName.Data(),
"Flags for Integrated Flow",20,0.,20.);
2238 fIntFlowFlags->GetXaxis()->SetBinLabel(1,
"Particle Weights");
2240 fIntFlowFlags->GetXaxis()->SetBinLabel(3,
"Corrected for NUA?");
2241 fIntFlowFlags->GetXaxis()->SetBinLabel(4,
"Print RF results");
2242 fIntFlowFlags->GetXaxis()->SetBinLabel(5,
"Print RP results");
2243 fIntFlowFlags->GetXaxis()->SetBinLabel(6,
"Print POI results");
2244 fIntFlowFlags->GetXaxis()->SetBinLabel(7,
"Print RF (rebinned in M) results");
2245 fIntFlowFlags->GetXaxis()->SetBinLabel(8,
"Corrected for NUA vs M?");
2246 fIntFlowFlags->GetXaxis()->SetBinLabel(9,
"Propagate errors to v_{n} from correlations?");
2247 fIntFlowFlags->GetXaxis()->SetBinLabel(10,
"Calculate cumulants vs M");
2248 fIntFlowFlags->GetXaxis()->SetBinLabel(11,
"fMinimumBiasReferenceFlow");
2249 fIntFlowFlags->GetXaxis()->SetBinLabel(12,
"fForgetAboutCovariances");
2251 fIntFlowFlags->GetXaxis()->SetBinLabel(14,
"fFillMultipleControlHistograms");
2252 fIntFlowFlags->GetXaxis()->SetBinLabel(15,
"Calculate all correlations vs M");
2253 fIntFlowFlags->GetXaxis()->SetBinLabel(16,
"fMultiplicityIs");
2255 fIntFlowFlags->GetXaxis()->SetBinLabel(18,
"fUse2DHistograms");
2256 fIntFlowFlags->GetXaxis()->SetBinLabel(19,
"fFillProfilesVsMUsingWeights");
2257 fIntFlowFlags->GetXaxis()->SetBinLabel(20,
"fUseQvectorTerms");
2262 fReQ =
new TMatrixD(12,9);
2263 fImQ =
new TMatrixD(12,9);
2264 fSpk =
new TMatrixD(8,9);
2266 TString intFlowCorrelationsEBEName =
"fIntFlowCorrelationsEBE";
2268 fIntFlowCorrelationsEBE =
new TH1D(intFlowCorrelationsEBEName.Data(),intFlowCorrelationsEBEName.Data(),4,0,4);
2270 TString intFlowEventWeightsForCorrelationsEBEName =
"fIntFlowEventWeightsForCorrelationsEBE";
2271 intFlowEventWeightsForCorrelationsEBEName +=
fAnalysisLabel->Data();
2274 TString intFlowCorrelationsAllEBEName =
"fIntFlowCorrelationsAllEBE";
2279 TString fIntFlowCorrectionTermsForNUAEBEName =
"fIntFlowCorrectionTermsForNUAEBE";
2281 for(Int_t sc=0;sc<2;sc++)
2283 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);
2286 TString fIntFlowEventWeightForCorrectionTermsForNUAEBEName =
"fIntFlowEventWeightForCorrectionTermsForNUAEBE";
2287 fIntFlowEventWeightForCorrectionTermsForNUAEBEName +=
fAnalysisLabel->Data();
2288 for(Int_t sc=0;sc<2;sc++)
2290 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);
2294 TString avMultiplicityName =
"fAvMultiplicity";
2296 fAvMultiplicity =
new TProfile(avMultiplicityName.Data(),
"Average multiplicities of reference particles (RPs)",9,0,9);
2313 TString correlationFlag[4] = {
"#LT#LT2#GT#GT",
"#LT#LT4#GT#GT",
"#LT#LT6#GT#GT",
"#LT#LT8#GT#GT"};
2314 TString intFlowCorrelationsProName =
"fIntFlowCorrelationsPro";
2316 fIntFlowCorrelationsPro =
new TProfile(intFlowCorrelationsProName.Data(),
"Average correlations for all events",4,0,4,
"s");
2322 for(Int_t b=0;b<4;b++)
2328 TString squaredCorrelationFlag[4] = {
"#LT#LT2#GT^{2}#GT",
"#LT#LT4#GT^{2}#GT",
"#LT#LT6#GT^{2}#GT",
"#LT#LT8#GT^{2}#GT"};
2329 TString intFlowSquaredCorrelationsProName =
"fIntFlowSquaredCorrelationsPro";
2337 for(Int_t b=0;b<4;b++)
2344 for(Int_t ci=0;ci<4;ci++)
2347 TString intFlowCorrelationsVsMProName =
"fIntFlowCorrelationsVsMPro";
2349 fIntFlowCorrelationsVsMPro[ci] =
new TProfile(Form(
"%s, %s",intFlowCorrelationsVsMProName.Data(),correlationFlag[ci].Data()),
2350 Form(
"%s vs multiplicity",correlationFlag[ci].
Data()),
2366 TString intFlowSquaredCorrelationsVsMProName =
"fIntFlowSquaredCorrelationsVsMPro";
2369 Form(
"%s vs multiplicity",squaredCorrelationFlag[ci].
Data()),
2387 TString intFlowCorrelationsAllProName =
"fIntFlowCorrelationsAllPro";
2389 fIntFlowCorrelationsAllPro =
new TProfile(intFlowCorrelationsAllProName.Data(),
"Average all correlations for all events",64,0,64);
2495 fIntFlowCorrelationsAllVsMPro[30] =
new TProfile(
"eight1n1n1n1n1n1n1n1n",
"#LT#LT8#GT#GT_{n,n,n,n|n,n,n,n}",
fnBinsMult,
fMinMult,
fMaxMult);
2529 for(Int_t n=0;n<63;n++)
2551 TString intFlowExtraCorrelationsProName =
"fIntFlowExtraCorrelationsPro";
2553 fIntFlowExtraCorrelationsPro =
new TProfile(intFlowExtraCorrelationsProName.Data(),
"Average extra correlations for all events",100,0,100,
"s");
2564 TString productFlag[6] = {
"#LT#LT2#GT#LT4#GT#GT",
"#LT#LT2#GT#LT6#GT#GT",
"#LT#LT2#GT#LT8#GT#GT",
2565 "#LT#LT4#GT#LT6#GT#GT",
"#LT#LT4#GT#LT8#GT#GT",
"#LT#LT6#GT#LT8#GT#GT"};
2566 TString intFlowProductOfCorrelationsProName =
"fIntFlowProductOfCorrelationsPro";
2573 for(Int_t b=0;b<6;b++)
2582 TString intFlowProductOfCorrelationsVsMProName =
"fIntFlowProductOfCorrelationsVsMPro";
2583 intFlowProductOfCorrelationsVsMProName +=
fAnalysisLabel->Data();
2584 for(Int_t
pi=0;
pi<6;
pi++)
2587 Form(
"%s versus multiplicity",productFlag[
pi].
Data()),
2603 TString intFlowProductOfCorrectionTermsForNUAProName =
"fIntFlowProductOfCorrectionTermsForNUAPro";
2604 intFlowProductOfCorrectionTermsForNUAProName +=
fAnalysisLabel->Data();
2639 for(Int_t sc=0;sc<2;sc++)
2641 TString intFlowCorrectionTermsForNUAProName =
"fIntFlowCorrectionTermsForNUAPro";
2643 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");
2656 TString correctionTermFlag[4] = {
"(n(phi1))",
"(n(phi1+phi2))",
"(n(phi1-phi2-phi3))",
"(n(2phi1-phi2))"};
2657 for(Int_t ci=0;ci<4;ci++)
2659 TString intFlowCorrectionTermsForNUAVsMProName =
"fIntFlowCorrectionTermsForNUAVsMPro";
2660 intFlowCorrectionTermsForNUAVsMProName +=
fAnalysisLabel->Data();
2661 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");
2669 TString intFlowCorrelationsHistName =
"fIntFlowCorrelationsHist";
2671 fIntFlowCorrelationsHist =
new TH1D(intFlowCorrelationsHistName.Data(),
"Average correlations for all events",4,0,4);
2684 for(Int_t ci=0;ci<4;ci++)
2686 TString intFlowCorrelationsVsMHistName =
"fIntFlowCorrelationsVsMHist";
2689 Form(
"%s vs multiplicity",correlationFlag[ci].
Data()),
2706 TString intFlowCorrelationsAllHistName =
"fIntFlowCorrelationsAllHist";
2747 for(Int_t sc=0;sc<2;sc++)
2749 TString intFlowCorrectionTermsForNUAHistName =
"fIntFlowCorrectionTermsForNUAHist";
2751 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);
2763 TString intFlowCovariancesName =
"fIntFlowCovariances";
2765 fIntFlowCovariances =
new TH1D(intFlowCovariancesName.Data(),
"Covariances (multiplied with weight dependent prefactor)",6,0,6);
2776 TString intFlowSumOfEventWeightsName =
"fIntFlowSumOfEventWeights";
2778 for(Int_t power=0;power<2;power++)
2780 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);
2789 }
else if (power == 1)
2799 TString intFlowSumOfProductOfEventWeightsName =
"fIntFlowSumOfProductOfEventWeights";
2815 TString intFlowCovariancesVsMName =
"fIntFlowCovariancesVsM";
2817 TString covarianceFlag[6] = {
"Cov(<2>,<4>)",
"Cov(<2>,<6>)",
"Cov(<2>,<8>)",
"Cov(<4>,<6>)",
"Cov(<4>,<8>)",
"Cov(<6>,<8>)"};
2818 for(Int_t ci=0;ci<6;ci++)
2820 fIntFlowCovariancesVsM[ci] =
new TH1D(Form(
"%s, %s",intFlowCovariancesVsMName.Data(),covarianceFlag[ci].Data()),
2821 Form(
"%s vs multiplicity",covarianceFlag[ci].
Data()),
2841 TString intFlowSumOfEventWeightsVsMName =
"fIntFlowSumOfEventWeightsVsM";
2843 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>}"},
2844 {
"#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}"}};
2845 for(Int_t si=0;si<4;si++)
2847 for(Int_t power=0;power<2;power++)
2850 Form(
"%s vs multiplicity",sumFlag[power][si].
Data()),
2872 TString intFlowSumOfProductOfEventWeightsVsMName =
"fIntFlowSumOfProductOfEventWeightsVsM";
2873 intFlowSumOfProductOfEventWeightsVsMName +=
fAnalysisLabel->Data();
2874 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>}",
2875 "#sum_{i=1}^{N} w_{<4>} w_{<6>}",
"#sum_{i=1}^{N} w_{<4>} w_{<8>}",
"#sum_{i=1}^{N} w_{<6>} w_{<8>}"};
2876 for(Int_t
pi=0;
pi<6;
pi++)
2879 Form(
"%s versus multiplicity",sopowFlag[
pi].
Data()),
2896 TString intFlowCovariancesNUAName =
"fIntFlowCovariancesNUA";
2898 fIntFlowCovariancesNUA =
new TH1D(intFlowCovariancesNUAName.Data(),
"Covariances for NUA (multiplied with weight dependent prefactor)",27,0,27);
2917 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(16,
"Cov(<cos(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2918 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(17,
"Cov(<cos(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2921 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(20,
"Cov(<sin(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2922 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(21,
"Cov(<sin(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2923 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(22,
"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}+#phi_{2})>)");
2924 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(23,
"Cov(<cos(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2925 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(24,
"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2926 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(25,
"Cov(<sin(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2927 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(26,
"Cov(<sin(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2928 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(27,
"Cov(<cos(#phi_{1}-#phi_{2}-#phi_{3}>,<sin(#phi_{1}-#phi_{2}-#phi_{3}>)");
2931 TString intFlowSumOfEventWeightsNUAName =
"fIntFlowSumOfEventWeightsNUA";
2933 for(Int_t sc=0;sc<2;sc++)
2935 for(Int_t power=0;power<2;power++)
2937 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);
2946 }
else if(power == 1)
2950 (
fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(3,Form(
"#sum_{i=1}^{N} w_{<%s(#phi_{1}-#phi_{2}-#phi_{3})>}^{2}",sinCosFlag[sc].
Data()));
2957 TString intFlowSumOfProductOfEventWeightsNUAName =
"fIntFlowSumOfProductOfEventWeightsNUA";
2958 intFlowSumOfProductOfEventWeightsNUAName +=
fAnalysisLabel->Data();
2991 TString cumulantFlag[4] = {
"QC{2}",
"QC{4}",
"QC{6}",
"QC{8}"};
2992 TString intFlowQcumulantsName =
"fIntFlowQcumulants";
2994 fIntFlowQcumulants =
new TH1D(intFlowQcumulantsName.Data(),
"Reference Q-cumulants",4,0,4);
2997 fIntFlowQcumulants->SetTitle(
"Reference Q-cumulants (error from non-isotropic terms also propagated)");
3001 for(Int_t b=0;b<4;b++)
3009 TString intFlowQcumulantsRebinnedInMName =
"fIntFlowQcumulantsRebinnedInM";
3014 for(Int_t b=0;b<4;b++)
3021 TString intFlowQcumulantsErrorSquaredRatioName =
"fIntFlowQcumulantsErrorSquaredRatio";
3022 intFlowQcumulantsErrorSquaredRatioName +=
fAnalysisLabel->Data();
3023 fIntFlowQcumulantsErrorSquaredRatio =
new TH1D(intFlowQcumulantsErrorSquaredRatioName.Data(),
"Error squared of reference Q-cumulants: #frac{with NUA terms}{without NUA terms}",4,0,4);
3026 for(Int_t b=0;b<4;b++)
3034 TString intFlowQcumulantsVsMName =
"fIntFlowQcumulantsVsM";
3036 for(Int_t co=0;co<4;co++)
3038 fIntFlowQcumulantsVsM[co] =
new TH1D(Form(
"%s, %s",intFlowQcumulantsVsMName.Data(),cumulantFlag[co].Data()),
3039 Form(
"%s vs multiplicity",cumulantFlag[co].
Data()),
3056 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)};
3057 TString intFlowName =
"fIntFlow";
3060 fIntFlow =
new TH1D(intFlowName.Data(),
"Reference flow estimates from Q-cumulants",4,0,4);
3063 for(Int_t b=0;b<4;b++)
3065 (
fIntFlow->GetXaxis())->SetBinLabel(b+1,flowFlag[b].
Data());
3071 TString intFlowRebinnedInMName =
"fIntFlowRebinnedInM";
3073 fIntFlowRebinnedInM =
new TH1D(intFlowRebinnedInMName.Data(),
"Reference flow estimates from Q-cumulants (rebinned in M)",4,0,4);
3076 for(Int_t b=0;b<4;b++)
3085 TString intFlowVsMName =
"fIntFlowVsM";
3087 for(Int_t co=0;co<4;co++)
3089 fIntFlowVsM[co] =
new TH1D(Form(
"%s, %s",intFlowVsMName.Data(),flowFlag[co].Data()),
3090 Form(
"%s vs multiplicity",flowFlag[co].
Data()),
3097 fIntFlowVsM[co]->GetXaxis()->SetTitle(
"Reference multiplicity (from ESD)");
3107 TString intFlowDetectorBiasName =
"fIntFlowDetectorBias";
3109 fIntFlowDetectorBias =
new TH1D(intFlowDetectorBiasName.Data(),
"Quantifying detector bias",4,0,4);
3112 for(Int_t ci=0;ci<4;ci++)
3114 (
fIntFlowDetectorBias->GetXaxis())->SetBinLabel(ci+1,Form(
"#frac{corrected}{measured} %s",cumulantFlag[ci].
Data()));
3120 TString intFlowDetectorBiasVsMName =
"fIntFlowDetectorBiasVsM";
3122 for(Int_t ci=0;ci<4;ci++)
3124 fIntFlowDetectorBiasVsM[ci] =
new TH1D(Form(
"%s for %s",intFlowDetectorBiasVsMName.Data(),cumulantFlag[ci].Data()),
3125 Form(
"Quantifying detector bias for %s vs multiplicity",cumulantFlag[ci].
Data()),
3154 TString controlHistogramsFlagsName =
"fControlHistogramsFlags";
3156 fControlHistogramsFlags =
new TProfile(controlHistogramsFlagsName.Data(),
"Flags for Control Histograms",2,0,2);
3170 TString sCorrelationNoRPsVsRefMultName =
"fCorrelationNoRPsVsRefMult";
3181 TString sCorrelationNoPOIsVsRefMultName =
"fCorrelationNoPOIsVsRefMult";
3192 TString sCorrelationNoRPsVsNoPOIsName =
"fCorrelationNoRPsVsNoPOIs";
3203 TString sCorrelation[4] = {
"#LT2#GT",
"#LT4#GT",
"#LT6#GT",
"#LT8#GT"};
3204 TString sMultiplicity =
"";
3207 sMultiplicity =
"# RPs";
3210 sMultiplicity =
"Reference multiplicity (from ESD)";
3213 sMultiplicity =
"# POIs";
3215 for(Int_t ci=0;ci<4;ci++)
3227 TString sCorrelationProduct[1] = {
"#LT2#GT#LT4#GT"};
3228 for(Int_t cpi=0;cpi<1;cpi++)
3242 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}}"};
3243 for(Int_t qvti=0;qvti<4;qvti++)
3270 TString bootstrapFlagsName =
"fBootstrapFlags";
3272 fBootstrapFlags =
new TProfile(bootstrapFlagsName.Data(),
"Flags for bootstrap",3,0,3);
3290 TString correlationFlag[4] = {
"#LT#LT2#GT#GT",
"#LT#LT4#GT#GT",
"#LT#LT6#GT#GT",
"#LT#LT8#GT#GT"};
3291 TString cumulantFlag[4] = {
"QC{2}",
"QC{4}",
"QC{6}",
"QC{8}"};
3295 TString bootstrapCorrelationsName =
"fBootstrapCorrelations";
3299 for(Int_t ci=0;ci<4;ci++)
3309 TString bootstrapCumulantsName =
"fBootstrapCumulants";
3313 for(Int_t co=0;co<4;co++)
3325 TString sMultiplicity =
"";
3328 sMultiplicity =
"# RPs";
3331 sMultiplicity =
"Reference multiplicity (from ESD)";
3334 sMultiplicity =
"# POIs";
3339 TString bootstrapCorrelationsVsMName =
"fBootstrapCorrelationsVsM";
3341 for(Int_t ci=0;ci<4;ci++)
3343 fBootstrapCorrelationsVsM[ci] =
new TProfile2D(Form(
"%s, %s",bootstrapCorrelationsVsMName.Data(),correlationFlag[ci].Data()),
3344 Form(
"Bootstrap Correlations Vs. M, %s",correlationFlag[ci].
Data()),
3355 TString bootstrapCumulantsVsMName =
"fBootstrapCumulantsVsM";
3357 for(Int_t co=0;co<4;co++)
3359 fBootstrapCumulantsVsM[co] =
new TH2D(Form(
"%s, %s",bootstrapCumulantsVsMName.Data(),cumulantFlag[co].Data()),
3360 Form(
"Bootstrap Cumulants Vs. M, %s",cumulantFlag[co].
Data()),
3386 TString mixedHarmonicsFlagsName =
"fMixedHarmonicsFlags";
3388 fMixedHarmonicsFlags =
new TProfile(mixedHarmonicsFlagsName.Data(),
"Flags for Mixed Harmonics",4,0,4);
3404 TString s2pCorrelationsName =
"f2pCorrelations";
3406 f2pCorrelations =
new TProfile(s2pCorrelationsName.Data(),Form(
"2-particle correlations (n = %d)",
fHarmonic),6,0,6,
"s");
3421 TString s3pCorrelationsName =
"f3pCorrelations";
3423 f3pCorrelations =
new TProfile(s3pCorrelationsName.Data(),Form(
"3-particle correlations (n = %d)",
fHarmonic),10,0,10,
"s");
3444 TString s4pCorrelationsName =
"f4pCorrelations";
3446 f4pCorrelations =
new TProfile(s4pCorrelationsName.Data(),Form(
"4-particle correlations (n = %d)",
fHarmonic),45,0,45,
"s");
3505 TString s5pCorrelationsName =
"f5pCorrelations";
3507 f5pCorrelations =
new TProfile(s5pCorrelationsName.Data(),Form(
"5-particle correlations (n = %d)",
fHarmonic),87,0,87,
"s");
3608 TString s6pCorrelationsName =
"f6pCorrelations";
3610 f6pCorrelations =
new TProfile(s6pCorrelationsName.Data(),Form(
"6-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3619 TString s7pCorrelationsName =
"f7pCorrelations";
3621 f7pCorrelations =
new TProfile(s7pCorrelationsName.Data(),Form(
"7-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3630 TString s8pCorrelationsName =
"f8pCorrelations";
3632 f8pCorrelations =
new TProfile(s8pCorrelationsName.Data(),Form(
"8-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3677 TString mixedHarmonicEventWeightsName =
"fMixedHarmonicEventWeights";
3679 TString powerFlag[2] = {
"linear",
"quadratic"};
3680 for(Int_t power=0;power<2;power++)
3682 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.);
3696 }
else if (power == 1)
3711 TString mixedHarmonicProductOfEventWeightsName =
"fMixedHarmonicProductOfEventWeights";
3712 mixedHarmonicProductOfEventWeightsName +=
fAnalysisLabel->Data();
3717 for(Int_t b=1;b<=8;b++)
3725 TString mixedHarmonicProductOfCorrelationsName =
"fMixedHarmonicProductOfCorrelations";
3726 mixedHarmonicProductOfCorrelationsName +=
fAnalysisLabel->Data();