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();
390 Bool_t oldHistAddStatus = TH1::AddDirectoryStatus();
391 TH1::AddDirectory(kFALSE);
442 TH1::AddDirectory(oldHistAddStatus);
479 Double_t wTrack = 1.;
480 Double_t wPhiEta = 1.;
481 Int_t nCounterNoRPs = 0;
500 Double_t ptEta[2] = {0.,0.};
513 if(fRunBin<0 || fRunBin>=
fCRCnRun) {
return;}
515 if(fCenBin<0 || fCenBin>=
fCRCnCen) {
return;}
522 for(Int_t k=0; k<2; k++) {
531 Double_t PhiEtaAv = 0.;
532 for(Int_t k=0; k<2; k++) {
535 for(Int_t i=1; i<=nBinsEta; i++) {
536 for (Int_t j=1; j<=nBinsPhi; j++) {
540 PhiEtaAv /= 1.*nBinsPhi*nBinsEta;
541 for(Int_t i=1; i<=nBinsEta; i++) {
542 for (Int_t j=1; j<=nBinsPhi; j++) {
547 }
else cout <<
" WARNING: fPhiEtaWeights not found !!! " << endl;
592 for(Int_t i=0;i<nPrim;i++) {
602 dPhi = aftsTrack->
Phi();
603 dPt = aftsTrack->
Pt();
604 dEta = aftsTrack->
Eta();
631 for(Int_t m=0;m<12;m++)
633 for(Int_t k=0;k<9;k++)
635 (*fReQ)(m,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1)*n*dPhi);
636 (*fImQ)(m,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1)*n*dPhi);
640 for(Int_t p=0;p<8;p++)
642 for(Int_t k=0;k<9;k++)
644 (*fSpk)(p,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k);
653 for(Int_t k=0;k<9;k++)
655 for(Int_t m=0;m<4;m++)
661 fReRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
662 fImRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
665 fs1dEBE[0][pe][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
671 fReRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
672 fImRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
675 fs2dEBE[0][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
684 for(Int_t k=0;k<9;k++)
686 for(Int_t m=0;m<4;m++)
692 fReRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
693 fImRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
696 fs1dEBE[2][pe][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
702 fReRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
703 fImRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
706 fs2dEBE[2][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
719 dPhi = aftsTrack->
Phi();
720 dPt = aftsTrack->
Pt();
721 dEta = aftsTrack->
Eta();
722 dCharge = aftsTrack->
Charge();
723 if (dCharge > 0.) cw = 0;
724 else if (dCharge < 0.) cw = 1;
752 if(ptbin==-1)
continue;
759 for(Int_t k=0;k<9;k++)
761 for(Int_t m=0;m<4;m++)
767 fReRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
768 fImRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
773 fReRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
774 fImRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
782 fCRCQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
783 fCRCQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
784 fCRCMult[cw][h]->Fill(dEta,wPhiEta);
786 fCRC2QRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
787 fCRC2QIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
788 fCRC2Mul[cw][h]->Fill(dEta,wPhiEta);
790 fCRCZDCQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
791 fCRCZDCQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
795 fCRC2QRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
796 fCRC2QIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
801 fCRCZDCQRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
802 fCRCZDCQIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
805 fCRCZDCQRe[3][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
806 fCRCZDCQIm[3][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
811 fCMEQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
812 fCMEQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
813 fCMEMult[cw][h]->Fill(dEta,wPhiEta);
815 fCMEQRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
816 fCMEQIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
819 fCMEQRe[3][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
820 fCMEQIm[3][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
830 fPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
831 fPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
834 Int_t keta = (dEta<0.?0:1);
835 fPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
836 fPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
843 fEtaDiffQRe[h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
844 fEtaDiffQIm[h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
865 printf(
"\n WARNING (QC): No particle (i.e. aftsTrack is a NULL pointer in AFAWQC::Make())!!!!\n\n");
872 for(Int_t p=0;p<8;p++)
874 for(Int_t k=0;k<9;k++)
876 (*fSpk)(p,k)=pow((*
fSpk)(p,k),p+1);
1295 cout<<
"Skipping the event because multiplicity is "<<nPrim<<
". Too high to evaluate nested loops!"<<endl;
1299 cout<<
"Skipping the event because multiplicity is "<<nPrim<<
"."<<endl;
1391 Double_t dMult = (*fSpk)(0,0);
1394 Double_t dReQ1n = (*fReQ)(0,0);
1395 Double_t dReQ2n = (*fReQ)(1,0);
1398 Double_t dImQ1n = (*fImQ)(0,0);
1399 Double_t dImQ2n = (*fImQ)(1,0);
1404 Double_t dMultiplicityBin = 0.;
1431 Double_t cosP1n = 0.;
1435 cosP1n = dReQ1n/dMult;
1448 Double_t cosP1nP1n = 0.;
1449 Double_t cosP2nM1n = 0.;
1453 cosP1nP1n = (pow(dReQ1n,2)-pow(dImQ1n,2)-dReQ2n)/(dMult*(dMult-1));
1454 cosP2nM1n = (dReQ2n*dReQ1n+dImQ2n*dImQ1n-dReQ1n)/(dMult*(dMult-1));
1474 Double_t cosP1nM1nM1n = 0.;
1478 cosP1nM1nM1n = (dReQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2))-dReQ1n*dReQ2n-dImQ1n*dImQ2n-2.*(dMult-1)*dReQ1n)
1479 / (dMult*(dMult-1)*(dMult-2));
1500 Double_t dMult = (*fSpk)(0,0);
1503 Double_t dReQ1n = (*fReQ)(0,0);
1504 Double_t dReQ2n = (*fReQ)(1,0);
1507 Double_t dImQ1n = (*fImQ)(0,0);
1508 Double_t dImQ2n = (*fImQ)(1,0);
1513 Double_t dMultiplicityBin = 0.;
1540 Double_t sinP1n = 0.;
1544 sinP1n = dImQ1n/dMult;
1557 Double_t sinP1nP1n = 0.;
1558 Double_t sinP2nM1n = 0.;
1561 sinP1nP1n = (2.*dReQ1n*dImQ1n-dImQ2n)/(dMult*(dMult-1));
1562 sinP2nM1n = (dImQ2n*dReQ1n-dReQ2n*dImQ1n-dImQ1n)/(dMult*(dMult-1));
1582 Double_t sinP1nM1nM1n = 0.;
1586 sinP1nM1nM1n = (-dImQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2))+dReQ1n*dImQ2n-dImQ1n*dReQ2n+2.*(dMult-1)*dImQ1n)
1587 / (dMult*(dMult-1)*(dMult-2));
1617 if(outputListHistos)
1622 printf(
"\n WARNING (QC): fHistList is NULL in AFAWQC::GOH() !!!!\n\n");
1649 printf(
"\n WARNING (QC): outputListHistos is NULL in AFAWQC::GOH() !!!!\n\n");
1661 Int_t nBinsPt = profilePtEta->GetNbinsX();
1662 Double_t dPtMin = (profilePtEta->GetXaxis())->GetXmin();
1663 Double_t dPtMax = (profilePtEta->GetXaxis())->GetXmax();
1665 Int_t nBinsEta = profilePtEta->GetNbinsY();
1667 TProfile *profilePt =
new TProfile(
"",
"",nBinsPt,dPtMin,dPtMax);
1669 for(Int_t p=1;p<=nBinsPt;p++)
1671 Double_t contentPt = 0.;
1672 Double_t entryPt = 0.;
1673 Double_t spreadPt = 0.;
1677 for(Int_t e=1;e<=nBinsEta;e++)
1679 contentPt += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
1680 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1681 entryPt += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1683 sum1 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
1684 * (pow(profilePtEta->GetBinError(profilePtEta->GetBin(p,e)),2.)
1685 + pow(profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)),2.));
1686 sum2 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1687 sum3 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
1688 * (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)));
1690 if(sum2>0. && sum1/sum2-pow(sum3/sum2,2.) > 0.)
1692 spreadPt = pow(sum1/sum2-pow(sum3/sum2,2.),0.5);
1694 profilePt->SetBinContent(p,contentPt);
1695 profilePt->SetBinEntries(p,entryPt);
1697 profilePt->SetBinError(p,spreadPt);
1714 Int_t nBinsEta = profilePtEta->GetNbinsY();
1715 Double_t dEtaMin = (profilePtEta->GetYaxis())->GetXmin();
1716 Double_t dEtaMax = (profilePtEta->GetYaxis())->GetXmax();
1718 Int_t nBinsPt = profilePtEta->GetNbinsX();
1720 TProfile *profileEta =
new TProfile(
"",
"",nBinsEta,dEtaMin,dEtaMax);
1722 for(Int_t e=1;e<=nBinsEta;e++)
1724 Double_t contentEta = 0.;
1725 Double_t entryEta = 0.;
1726 for(Int_t p=1;p<=nBinsPt;p++)
1728 contentEta += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
1729 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1730 entryEta += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1732 profileEta->SetBinContent(e,contentEta);
1733 profileEta->SetBinEntries(e,entryEta);
1748 Double_t dVn[4] = {0.};
1749 Double_t dVnErr[4] = {0.};
1753 for(Int_t b=0;b<4;b++)
1764 }
else if(type ==
"RP")
1774 }
else if(type ==
"POI")
1786 for(Int_t b=0;b<4;b++)
1793 TString
title =
" flow estimates from Q-cumulants";
1794 TString subtitle =
" (";
1795 TString subtitle2 =
" (rebinned in M)";
1797 if(type !=
"RF, rebinned in M")
1801 subtitle.Append(type);
1802 subtitle.Append(
", without weights)");
1805 subtitle.Append(type);
1806 subtitle.Append(
", with weights)");
1812 subtitle.Append(
"RF");
1813 subtitle.Append(
", without weights)");
1816 subtitle.Append(
"RF");
1817 subtitle.Append(
", with weights)");
1822 cout<<
"*************************************"<<endl;
1823 cout<<
"*************************************"<<endl;
1824 cout<<title.Data()<<endl;
1825 cout<<subtitle.Data()<<endl;
1826 if(type ==
"RF, rebinned in M"){cout<<subtitle2.Data()<<endl;}
1829 for(Int_t i=0;i<4;i++)
1831 cout<<
" v_"<<n<<
"{"<<2*(i+1)<<
"} = "<<dVn[i]<<
" +/- "<<dVnErr[i]<<endl;
1839 cout<<
" detector bias (corrected for): "<<endl;
1842 cout<<
" detector bias (not corrected for):"<<endl;
1848 if(type ==
"RF" || type ==
"RF, rebinned in M")
1852 else if (type ==
"RP")
1856 else if (type ==
"POI")
1861 cout<<
"*************************************"<<endl;
1862 cout<<
"*************************************"<<endl;
1872 TFile *output =
new TFile(outputFileName.Data(),
"RECREATE");
1888 outputFileName->Write(outputFileName->GetName(), TObject::kSingleKey);
1901 TString commonHistsName =
"AliFlowCommonHistQC";
1909 TString commonHists2ndOrderName =
"AliFlowCommonHist2ndOrderQC";
1914 TString commonHists4thOrderName =
"AliFlowCommonHist4thOrderQC";
1919 TString commonHists6thOrderName =
"AliFlowCommonHist6thOrderQC";
1924 TString commonHists8thOrderName =
"AliFlowCommonHist8thOrderQC";
1932 TString commonHistResults2ndOrderName =
"AliFlowCommonHistResults2ndOrderQC";
1937 TString commonHistResults4thOrderName =
"AliFlowCommonHistResults4thOrderQC";
1942 TString commonHistResults6thOrderName =
"AliFlowCommonHistResults6thOrderQC";
1947 TString commonHistResults8thOrderName =
"AliFlowCommonHistResults8thOrderQC";
1962 printf(
"\n WARNING (QC): fWeightsList is NULL in AFAWQC::BAFWH() !!!! \n\n");
1966 TString fUseParticleWeightsName =
"fUseParticleWeightsQC";
1968 fUseParticleWeights =
new TProfile(fUseParticleWeightsName.Data(),
"0 = particle weight not used, 1 = particle weight used ",5,0,5);
1982 for(Int_t c=0; c<2; c++) {
1984 Form(
"fPhiEtaWeights[%d]",c),32,0.,TMath::TwoPi(),32,-0.8,0.8);
2192 TF1 *CenFit =
new TF1(
"CenFit",
"pol0", 0., 100.);
2194 Double_t CenAv = CenFit->GetParameter(0);
2196 Double_t SemiCenAv = CenFit->GetParameter(0);
2221 TString sinCosFlag[2] = {
"sin",
"cos"};
2222 TString powerFlag[2] = {
"linear",
"quadratic"};
2225 TString intFlowFlagsName =
"fIntFlowFlags";
2227 fIntFlowFlags =
new TProfile(intFlowFlagsName.Data(),
"Flags for Integrated Flow",20,0.,20.);
2233 fIntFlowFlags->GetXaxis()->SetBinLabel(1,
"Particle Weights");
2235 fIntFlowFlags->GetXaxis()->SetBinLabel(3,
"Corrected for NUA?");
2236 fIntFlowFlags->GetXaxis()->SetBinLabel(4,
"Print RF results");
2237 fIntFlowFlags->GetXaxis()->SetBinLabel(5,
"Print RP results");
2238 fIntFlowFlags->GetXaxis()->SetBinLabel(6,
"Print POI results");
2239 fIntFlowFlags->GetXaxis()->SetBinLabel(7,
"Print RF (rebinned in M) results");
2240 fIntFlowFlags->GetXaxis()->SetBinLabel(8,
"Corrected for NUA vs M?");
2241 fIntFlowFlags->GetXaxis()->SetBinLabel(9,
"Propagate errors to v_{n} from correlations?");
2242 fIntFlowFlags->GetXaxis()->SetBinLabel(10,
"Calculate cumulants vs M");
2243 fIntFlowFlags->GetXaxis()->SetBinLabel(11,
"fMinimumBiasReferenceFlow");
2244 fIntFlowFlags->GetXaxis()->SetBinLabel(12,
"fForgetAboutCovariances");
2246 fIntFlowFlags->GetXaxis()->SetBinLabel(14,
"fFillMultipleControlHistograms");
2247 fIntFlowFlags->GetXaxis()->SetBinLabel(15,
"Calculate all correlations vs M");
2248 fIntFlowFlags->GetXaxis()->SetBinLabel(16,
"fMultiplicityIs");
2250 fIntFlowFlags->GetXaxis()->SetBinLabel(18,
"fUse2DHistograms");
2251 fIntFlowFlags->GetXaxis()->SetBinLabel(19,
"fFillProfilesVsMUsingWeights");
2252 fIntFlowFlags->GetXaxis()->SetBinLabel(20,
"fUseQvectorTerms");
2257 fReQ =
new TMatrixD(12,9);
2258 fImQ =
new TMatrixD(12,9);
2259 fSpk =
new TMatrixD(8,9);
2261 TString intFlowCorrelationsEBEName =
"fIntFlowCorrelationsEBE";
2263 fIntFlowCorrelationsEBE =
new TH1D(intFlowCorrelationsEBEName.Data(),intFlowCorrelationsEBEName.Data(),4,0,4);
2265 TString intFlowEventWeightsForCorrelationsEBEName =
"fIntFlowEventWeightsForCorrelationsEBE";
2266 intFlowEventWeightsForCorrelationsEBEName +=
fAnalysisLabel->Data();
2269 TString intFlowCorrelationsAllEBEName =
"fIntFlowCorrelationsAllEBE";
2274 TString fIntFlowCorrectionTermsForNUAEBEName =
"fIntFlowCorrectionTermsForNUAEBE";
2276 for(Int_t sc=0;sc<2;sc++)
2278 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);
2281 TString fIntFlowEventWeightForCorrectionTermsForNUAEBEName =
"fIntFlowEventWeightForCorrectionTermsForNUAEBE";
2282 fIntFlowEventWeightForCorrectionTermsForNUAEBEName +=
fAnalysisLabel->Data();
2283 for(Int_t sc=0;sc<2;sc++)
2285 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);
2289 TString avMultiplicityName =
"fAvMultiplicity";
2291 fAvMultiplicity =
new TProfile(avMultiplicityName.Data(),
"Average multiplicities of reference particles (RPs)",9,0,9);
2308 TString correlationFlag[4] = {
"#LT#LT2#GT#GT",
"#LT#LT4#GT#GT",
"#LT#LT6#GT#GT",
"#LT#LT8#GT#GT"};
2309 TString intFlowCorrelationsProName =
"fIntFlowCorrelationsPro";
2311 fIntFlowCorrelationsPro =
new TProfile(intFlowCorrelationsProName.Data(),
"Average correlations for all events",4,0,4,
"s");
2317 for(Int_t b=0;b<4;b++)
2323 TString squaredCorrelationFlag[4] = {
"#LT#LT2#GT^{2}#GT",
"#LT#LT4#GT^{2}#GT",
"#LT#LT6#GT^{2}#GT",
"#LT#LT8#GT^{2}#GT"};
2324 TString intFlowSquaredCorrelationsProName =
"fIntFlowSquaredCorrelationsPro";
2332 for(Int_t b=0;b<4;b++)
2339 for(Int_t ci=0;ci<4;ci++)
2342 TString intFlowCorrelationsVsMProName =
"fIntFlowCorrelationsVsMPro";
2344 fIntFlowCorrelationsVsMPro[ci] =
new TProfile(Form(
"%s, %s",intFlowCorrelationsVsMProName.Data(),correlationFlag[ci].Data()),
2345 Form(
"%s vs multiplicity",correlationFlag[ci].
Data()),
2361 TString intFlowSquaredCorrelationsVsMProName =
"fIntFlowSquaredCorrelationsVsMPro";
2364 Form(
"%s vs multiplicity",squaredCorrelationFlag[ci].
Data()),
2382 TString intFlowCorrelationsAllProName =
"fIntFlowCorrelationsAllPro";
2384 fIntFlowCorrelationsAllPro =
new TProfile(intFlowCorrelationsAllProName.Data(),
"Average all correlations for all events",64,0,64);
2490 fIntFlowCorrelationsAllVsMPro[30] =
new TProfile(
"eight1n1n1n1n1n1n1n1n",
"#LT#LT8#GT#GT_{n,n,n,n|n,n,n,n}",
fnBinsMult,
fMinMult,
fMaxMult);
2524 for(Int_t n=0;n<63;n++)
2546 TString intFlowExtraCorrelationsProName =
"fIntFlowExtraCorrelationsPro";
2548 fIntFlowExtraCorrelationsPro =
new TProfile(intFlowExtraCorrelationsProName.Data(),
"Average extra correlations for all events",100,0,100,
"s");
2559 TString productFlag[6] = {
"#LT#LT2#GT#LT4#GT#GT",
"#LT#LT2#GT#LT6#GT#GT",
"#LT#LT2#GT#LT8#GT#GT",
2560 "#LT#LT4#GT#LT6#GT#GT",
"#LT#LT4#GT#LT8#GT#GT",
"#LT#LT6#GT#LT8#GT#GT"};
2561 TString intFlowProductOfCorrelationsProName =
"fIntFlowProductOfCorrelationsPro";
2568 for(Int_t b=0;b<6;b++)
2577 TString intFlowProductOfCorrelationsVsMProName =
"fIntFlowProductOfCorrelationsVsMPro";
2578 intFlowProductOfCorrelationsVsMProName +=
fAnalysisLabel->Data();
2579 for(Int_t
pi=0;
pi<6;
pi++)
2582 Form(
"%s versus multiplicity",productFlag[
pi].
Data()),
2598 TString intFlowProductOfCorrectionTermsForNUAProName =
"fIntFlowProductOfCorrectionTermsForNUAPro";
2599 intFlowProductOfCorrectionTermsForNUAProName +=
fAnalysisLabel->Data();
2634 for(Int_t sc=0;sc<2;sc++)
2636 TString intFlowCorrectionTermsForNUAProName =
"fIntFlowCorrectionTermsForNUAPro";
2638 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");
2651 TString correctionTermFlag[4] = {
"(n(phi1))",
"(n(phi1+phi2))",
"(n(phi1-phi2-phi3))",
"(n(2phi1-phi2))"};
2652 for(Int_t ci=0;ci<4;ci++)
2654 TString intFlowCorrectionTermsForNUAVsMProName =
"fIntFlowCorrectionTermsForNUAVsMPro";
2655 intFlowCorrectionTermsForNUAVsMProName +=
fAnalysisLabel->Data();
2656 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");
2664 TString intFlowCorrelationsHistName =
"fIntFlowCorrelationsHist";
2666 fIntFlowCorrelationsHist =
new TH1D(intFlowCorrelationsHistName.Data(),
"Average correlations for all events",4,0,4);
2679 for(Int_t ci=0;ci<4;ci++)
2681 TString intFlowCorrelationsVsMHistName =
"fIntFlowCorrelationsVsMHist";
2684 Form(
"%s vs multiplicity",correlationFlag[ci].
Data()),
2701 TString intFlowCorrelationsAllHistName =
"fIntFlowCorrelationsAllHist";
2742 for(Int_t sc=0;sc<2;sc++)
2744 TString intFlowCorrectionTermsForNUAHistName =
"fIntFlowCorrectionTermsForNUAHist";
2746 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);
2758 TString intFlowCovariancesName =
"fIntFlowCovariances";
2760 fIntFlowCovariances =
new TH1D(intFlowCovariancesName.Data(),
"Covariances (multiplied with weight dependent prefactor)",6,0,6);
2771 TString intFlowSumOfEventWeightsName =
"fIntFlowSumOfEventWeights";
2773 for(Int_t power=0;power<2;power++)
2775 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);
2784 }
else if (power == 1)
2794 TString intFlowSumOfProductOfEventWeightsName =
"fIntFlowSumOfProductOfEventWeights";
2810 TString intFlowCovariancesVsMName =
"fIntFlowCovariancesVsM";
2812 TString covarianceFlag[6] = {
"Cov(<2>,<4>)",
"Cov(<2>,<6>)",
"Cov(<2>,<8>)",
"Cov(<4>,<6>)",
"Cov(<4>,<8>)",
"Cov(<6>,<8>)"};
2813 for(Int_t ci=0;ci<6;ci++)
2815 fIntFlowCovariancesVsM[ci] =
new TH1D(Form(
"%s, %s",intFlowCovariancesVsMName.Data(),covarianceFlag[ci].Data()),
2816 Form(
"%s vs multiplicity",covarianceFlag[ci].
Data()),
2836 TString intFlowSumOfEventWeightsVsMName =
"fIntFlowSumOfEventWeightsVsM";
2838 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>}"},
2839 {
"#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}"}};
2840 for(Int_t si=0;si<4;si++)
2842 for(Int_t power=0;power<2;power++)
2845 Form(
"%s vs multiplicity",sumFlag[power][si].
Data()),
2867 TString intFlowSumOfProductOfEventWeightsVsMName =
"fIntFlowSumOfProductOfEventWeightsVsM";
2868 intFlowSumOfProductOfEventWeightsVsMName +=
fAnalysisLabel->Data();
2869 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>}",
2870 "#sum_{i=1}^{N} w_{<4>} w_{<6>}",
"#sum_{i=1}^{N} w_{<4>} w_{<8>}",
"#sum_{i=1}^{N} w_{<6>} w_{<8>}"};
2871 for(Int_t
pi=0;
pi<6;
pi++)
2874 Form(
"%s versus multiplicity",sopowFlag[
pi].
Data()),
2891 TString intFlowCovariancesNUAName =
"fIntFlowCovariancesNUA";
2893 fIntFlowCovariancesNUA =
new TH1D(intFlowCovariancesNUAName.Data(),
"Covariances for NUA (multiplied with weight dependent prefactor)",27,0,27);
2912 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(16,
"Cov(<cos(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2913 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(17,
"Cov(<cos(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2916 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(20,
"Cov(<sin(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2917 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(21,
"Cov(<sin(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2918 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(22,
"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}+#phi_{2})>)");
2919 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(23,
"Cov(<cos(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2920 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(24,
"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2921 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(25,
"Cov(<sin(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2922 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(26,
"Cov(<sin(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2923 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(27,
"Cov(<cos(#phi_{1}-#phi_{2}-#phi_{3}>,<sin(#phi_{1}-#phi_{2}-#phi_{3}>)");
2926 TString intFlowSumOfEventWeightsNUAName =
"fIntFlowSumOfEventWeightsNUA";
2928 for(Int_t sc=0;sc<2;sc++)
2930 for(Int_t power=0;power<2;power++)
2932 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);
2941 }
else if(power == 1)
2945 (
fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(3,Form(
"#sum_{i=1}^{N} w_{<%s(#phi_{1}-#phi_{2}-#phi_{3})>}^{2}",sinCosFlag[sc].
Data()));
2952 TString intFlowSumOfProductOfEventWeightsNUAName =
"fIntFlowSumOfProductOfEventWeightsNUA";
2953 intFlowSumOfProductOfEventWeightsNUAName +=
fAnalysisLabel->Data();
2986 TString cumulantFlag[4] = {
"QC{2}",
"QC{4}",
"QC{6}",
"QC{8}"};
2987 TString intFlowQcumulantsName =
"fIntFlowQcumulants";
2989 fIntFlowQcumulants =
new TH1D(intFlowQcumulantsName.Data(),
"Reference Q-cumulants",4,0,4);
2992 fIntFlowQcumulants->SetTitle(
"Reference Q-cumulants (error from non-isotropic terms also propagated)");
2996 for(Int_t b=0;b<4;b++)
3004 TString intFlowQcumulantsRebinnedInMName =
"fIntFlowQcumulantsRebinnedInM";
3009 for(Int_t b=0;b<4;b++)
3016 TString intFlowQcumulantsErrorSquaredRatioName =
"fIntFlowQcumulantsErrorSquaredRatio";
3017 intFlowQcumulantsErrorSquaredRatioName +=
fAnalysisLabel->Data();
3018 fIntFlowQcumulantsErrorSquaredRatio =
new TH1D(intFlowQcumulantsErrorSquaredRatioName.Data(),
"Error squared of reference Q-cumulants: #frac{with NUA terms}{without NUA terms}",4,0,4);
3021 for(Int_t b=0;b<4;b++)
3029 TString intFlowQcumulantsVsMName =
"fIntFlowQcumulantsVsM";
3031 for(Int_t co=0;co<4;co++)
3033 fIntFlowQcumulantsVsM[co] =
new TH1D(Form(
"%s, %s",intFlowQcumulantsVsMName.Data(),cumulantFlag[co].Data()),
3034 Form(
"%s vs multiplicity",cumulantFlag[co].
Data()),
3051 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)};
3052 TString intFlowName =
"fIntFlow";
3055 fIntFlow =
new TH1D(intFlowName.Data(),
"Reference flow estimates from Q-cumulants",4,0,4);
3058 for(Int_t b=0;b<4;b++)
3060 (
fIntFlow->GetXaxis())->SetBinLabel(b+1,flowFlag[b].
Data());
3066 TString intFlowRebinnedInMName =
"fIntFlowRebinnedInM";
3068 fIntFlowRebinnedInM =
new TH1D(intFlowRebinnedInMName.Data(),
"Reference flow estimates from Q-cumulants (rebinned in M)",4,0,4);
3071 for(Int_t b=0;b<4;b++)
3080 TString intFlowVsMName =
"fIntFlowVsM";
3082 for(Int_t co=0;co<4;co++)
3084 fIntFlowVsM[co] =
new TH1D(Form(
"%s, %s",intFlowVsMName.Data(),flowFlag[co].Data()),
3085 Form(
"%s vs multiplicity",flowFlag[co].
Data()),
3092 fIntFlowVsM[co]->GetXaxis()->SetTitle(
"Reference multiplicity (from ESD)");
3102 TString intFlowDetectorBiasName =
"fIntFlowDetectorBias";
3104 fIntFlowDetectorBias =
new TH1D(intFlowDetectorBiasName.Data(),
"Quantifying detector bias",4,0,4);
3107 for(Int_t ci=0;ci<4;ci++)
3109 (
fIntFlowDetectorBias->GetXaxis())->SetBinLabel(ci+1,Form(
"#frac{corrected}{measured} %s",cumulantFlag[ci].
Data()));
3115 TString intFlowDetectorBiasVsMName =
"fIntFlowDetectorBiasVsM";
3117 for(Int_t ci=0;ci<4;ci++)
3119 fIntFlowDetectorBiasVsM[ci] =
new TH1D(Form(
"%s for %s",intFlowDetectorBiasVsMName.Data(),cumulantFlag[ci].Data()),
3120 Form(
"Quantifying detector bias for %s vs multiplicity",cumulantFlag[ci].
Data()),
3149 TString controlHistogramsFlagsName =
"fControlHistogramsFlags";
3151 fControlHistogramsFlags =
new TProfile(controlHistogramsFlagsName.Data(),
"Flags for Control Histograms",2,0,2);
3165 TString sCorrelationNoRPsVsRefMultName =
"fCorrelationNoRPsVsRefMult";
3176 TString sCorrelationNoPOIsVsRefMultName =
"fCorrelationNoPOIsVsRefMult";
3187 TString sCorrelationNoRPsVsNoPOIsName =
"fCorrelationNoRPsVsNoPOIs";
3198 TString sCorrelation[4] = {
"#LT2#GT",
"#LT4#GT",
"#LT6#GT",
"#LT8#GT"};
3199 TString sMultiplicity =
"";
3202 sMultiplicity =
"# RPs";
3205 sMultiplicity =
"Reference multiplicity (from ESD)";
3208 sMultiplicity =
"# POIs";
3210 for(Int_t ci=0;ci<4;ci++)
3222 TString sCorrelationProduct[1] = {
"#LT2#GT#LT4#GT"};
3223 for(Int_t cpi=0;cpi<1;cpi++)
3237 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}}"};
3238 for(Int_t qvti=0;qvti<4;qvti++)
3265 TString bootstrapFlagsName =
"fBootstrapFlags";
3267 fBootstrapFlags =
new TProfile(bootstrapFlagsName.Data(),
"Flags for bootstrap",3,0,3);
3285 TString correlationFlag[4] = {
"#LT#LT2#GT#GT",
"#LT#LT4#GT#GT",
"#LT#LT6#GT#GT",
"#LT#LT8#GT#GT"};
3286 TString cumulantFlag[4] = {
"QC{2}",
"QC{4}",
"QC{6}",
"QC{8}"};
3290 TString bootstrapCorrelationsName =
"fBootstrapCorrelations";
3294 for(Int_t ci=0;ci<4;ci++)
3304 TString bootstrapCumulantsName =
"fBootstrapCumulants";
3308 for(Int_t co=0;co<4;co++)
3320 TString sMultiplicity =
"";
3323 sMultiplicity =
"# RPs";
3326 sMultiplicity =
"Reference multiplicity (from ESD)";
3329 sMultiplicity =
"# POIs";
3334 TString bootstrapCorrelationsVsMName =
"fBootstrapCorrelationsVsM";
3336 for(Int_t ci=0;ci<4;ci++)
3338 fBootstrapCorrelationsVsM[ci] =
new TProfile2D(Form(
"%s, %s",bootstrapCorrelationsVsMName.Data(),correlationFlag[ci].Data()),
3339 Form(
"Bootstrap Correlations Vs. M, %s",correlationFlag[ci].
Data()),
3350 TString bootstrapCumulantsVsMName =
"fBootstrapCumulantsVsM";
3352 for(Int_t co=0;co<4;co++)
3354 fBootstrapCumulantsVsM[co] =
new TH2D(Form(
"%s, %s",bootstrapCumulantsVsMName.Data(),cumulantFlag[co].Data()),
3355 Form(
"Bootstrap Cumulants Vs. M, %s",cumulantFlag[co].
Data()),
3381 TString mixedHarmonicsFlagsName =
"fMixedHarmonicsFlags";
3383 fMixedHarmonicsFlags =
new TProfile(mixedHarmonicsFlagsName.Data(),
"Flags for Mixed Harmonics",4,0,4);
3399 TString s2pCorrelationsName =
"f2pCorrelations";
3401 f2pCorrelations =
new TProfile(s2pCorrelationsName.Data(),Form(
"2-particle correlations (n = %d)",
fHarmonic),6,0,6,
"s");
3416 TString s3pCorrelationsName =
"f3pCorrelations";
3418 f3pCorrelations =
new TProfile(s3pCorrelationsName.Data(),Form(
"3-particle correlations (n = %d)",
fHarmonic),10,0,10,
"s");
3439 TString s4pCorrelationsName =
"f4pCorrelations";
3441 f4pCorrelations =
new TProfile(s4pCorrelationsName.Data(),Form(
"4-particle correlations (n = %d)",
fHarmonic),45,0,45,
"s");
3500 TString s5pCorrelationsName =
"f5pCorrelations";
3502 f5pCorrelations =
new TProfile(s5pCorrelationsName.Data(),Form(
"5-particle correlations (n = %d)",
fHarmonic),87,0,87,
"s");
3603 TString s6pCorrelationsName =
"f6pCorrelations";
3605 f6pCorrelations =
new TProfile(s6pCorrelationsName.Data(),Form(
"6-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3614 TString s7pCorrelationsName =
"f7pCorrelations";
3616 f7pCorrelations =
new TProfile(s7pCorrelationsName.Data(),Form(
"7-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3625 TString s8pCorrelationsName =
"f8pCorrelations";
3627 f8pCorrelations =
new TProfile(s8pCorrelationsName.Data(),Form(
"8-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3672 TString mixedHarmonicEventWeightsName =
"fMixedHarmonicEventWeights";
3674 TString powerFlag[2] = {
"linear",
"quadratic"};
3675 for(Int_t power=0;power<2;power++)
3677 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.);
3691 }
else if (power == 1)
3706 TString mixedHarmonicProductOfEventWeightsName =
"fMixedHarmonicProductOfEventWeights";
3707 mixedHarmonicProductOfEventWeightsName +=
fAnalysisLabel->Data();
3712 for(Int_t b=1;b<=8;b++)
3720 TString mixedHarmonicProductOfCorrelationsName =
"fMixedHarmonicProductOfCorrelations";
3721 mixedHarmonicProductOfCorrelationsName +=
fAnalysisLabel->Data();