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;
505 Double_t ptEta[2] = {0.,0.};
518 if(fRunBin<0 || fRunBin>=
fCRCnRun) {
return;}
520 if(fCenBin<0 || fCenBin>=
fCRCnCen) {
return;}
527 for(Int_t k=0; k<2; k++) {
536 Double_t PhiEtaAv = 0.;
537 for(Int_t k=0; k<2; k++) {
540 for(Int_t i=1; i<=nBinsEta; i++) {
541 for (Int_t j=1; j<=nBinsPhi; j++) {
545 PhiEtaAv /= 1.*nBinsPhi*nBinsEta;
546 for(Int_t i=1; i<=nBinsEta; i++) {
547 for (Int_t j=1; j<=nBinsPhi; j++) {
552 }
else cout <<
" WARNING: fPhiEtaWeights not found !!! " << endl;
596 for(Int_t i=0;i<nPrim;i++) {
606 dPhi = aftsTrack->
Phi();
607 dPt = aftsTrack->
Pt();
608 dEta = aftsTrack->
Eta();
635 for(Int_t m=0;m<12;m++)
637 for(Int_t k=0;k<9;k++)
639 (*fReQ)(m,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1)*n*dPhi);
640 (*fImQ)(m,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1)*n*dPhi);
644 for(Int_t p=0;p<8;p++)
646 for(Int_t k=0;k<9;k++)
648 (*fSpk)(p,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k);
657 for(Int_t k=0;k<9;k++)
659 for(Int_t m=0;m<4;m++)
665 fReRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
666 fImRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
669 fs1dEBE[0][pe][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
675 fReRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
676 fImRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
679 fs2dEBE[0][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
688 for(Int_t k=0;k<9;k++)
690 for(Int_t m=0;m<4;m++)
696 fReRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
697 fImRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
700 fs1dEBE[2][pe][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
706 fReRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
707 fImRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
710 fs2dEBE[2][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
723 dPhi = aftsTrack->
Phi();
724 dPt = aftsTrack->
Pt();
725 dEta = aftsTrack->
Eta();
726 dCharge = aftsTrack->
Charge();
727 if (dCharge > 0.) cw = 0;
728 else if (dCharge < 0.) cw = 1;
756 if(ptbin==-1)
continue;
763 for(Int_t k=0;k<9;k++)
765 for(Int_t m=0;m<4;m++)
771 fReRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
772 fImRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
777 fReRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
778 fImRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
786 fCRCQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
787 fCRCQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
788 fCRCMult[cw][h]->Fill(dEta,wPhiEta);
790 fCRC2QRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
791 fCRC2QIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
792 fCRC2Mul[cw][h]->Fill(dEta,wPhiEta);
794 fCRCZDCQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
795 fCRCZDCQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
799 fCRC2QRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
800 fCRC2QIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
805 fCRCZDCQRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
806 fCRCZDCQIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
809 fCRCZDCQRe[3][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
810 fCRCZDCQIm[3][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
815 fCMEQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
816 fCMEQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
817 fCMEMult[cw][h]->Fill(dEta,wPhiEta);
819 fCMEQRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
820 fCMEQIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
823 fCMEQRe[3][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
824 fCMEQIm[3][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
834 fPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
835 fPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
838 Int_t keta = (dEta<0.?0:1);
839 fPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
840 fPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
847 fEtaDiffQRe[h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
848 fEtaDiffQIm[h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
871 printf(
"\n WARNING (QC): No particle (i.e. aftsTrack is a NULL pointer in AFAWQC::Make())!!!!\n\n");
881 for(Int_t p=0;p<8;p++)
883 for(Int_t k=0;k<9;k++)
885 (*fSpk)(p,k)=pow((*
fSpk)(p,k),p+1);
1304 cout<<
"Skipping the event because multiplicity is "<<nPrim<<
". Too high to evaluate nested loops!"<<endl;
1308 cout<<
"Skipping the event because multiplicity is "<<nPrim<<
"."<<endl;
1400 Double_t dMult = (*fSpk)(0,0);
1403 Double_t dReQ1n = (*fReQ)(0,0);
1404 Double_t dReQ2n = (*fReQ)(1,0);
1407 Double_t dImQ1n = (*fImQ)(0,0);
1408 Double_t dImQ2n = (*fImQ)(1,0);
1413 Double_t dMultiplicityBin = 0.;
1440 Double_t cosP1n = 0.;
1444 cosP1n = dReQ1n/dMult;
1457 Double_t cosP1nP1n = 0.;
1458 Double_t cosP2nM1n = 0.;
1462 cosP1nP1n = (pow(dReQ1n,2)-pow(dImQ1n,2)-dReQ2n)/(dMult*(dMult-1));
1463 cosP2nM1n = (dReQ2n*dReQ1n+dImQ2n*dImQ1n-dReQ1n)/(dMult*(dMult-1));
1483 Double_t cosP1nM1nM1n = 0.;
1487 cosP1nM1nM1n = (dReQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2))-dReQ1n*dReQ2n-dImQ1n*dImQ2n-2.*(dMult-1)*dReQ1n)
1488 / (dMult*(dMult-1)*(dMult-2));
1509 Double_t dMult = (*fSpk)(0,0);
1512 Double_t dReQ1n = (*fReQ)(0,0);
1513 Double_t dReQ2n = (*fReQ)(1,0);
1516 Double_t dImQ1n = (*fImQ)(0,0);
1517 Double_t dImQ2n = (*fImQ)(1,0);
1522 Double_t dMultiplicityBin = 0.;
1549 Double_t sinP1n = 0.;
1553 sinP1n = dImQ1n/dMult;
1566 Double_t sinP1nP1n = 0.;
1567 Double_t sinP2nM1n = 0.;
1570 sinP1nP1n = (2.*dReQ1n*dImQ1n-dImQ2n)/(dMult*(dMult-1));
1571 sinP2nM1n = (dImQ2n*dReQ1n-dReQ2n*dImQ1n-dImQ1n)/(dMult*(dMult-1));
1591 Double_t sinP1nM1nM1n = 0.;
1595 sinP1nM1nM1n = (-dImQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2))+dReQ1n*dImQ2n-dImQ1n*dReQ2n+2.*(dMult-1)*dImQ1n)
1596 / (dMult*(dMult-1)*(dMult-2));
1626 if(outputListHistos)
1631 printf(
"\n WARNING (QC): fHistList is NULL in AFAWQC::GOH() !!!!\n\n");
1658 printf(
"\n WARNING (QC): outputListHistos is NULL in AFAWQC::GOH() !!!!\n\n");
1670 Int_t nBinsPt = profilePtEta->GetNbinsX();
1671 Double_t dPtMin = (profilePtEta->GetXaxis())->GetXmin();
1672 Double_t dPtMax = (profilePtEta->GetXaxis())->GetXmax();
1674 Int_t nBinsEta = profilePtEta->GetNbinsY();
1676 TProfile *profilePt =
new TProfile(
"",
"",nBinsPt,dPtMin,dPtMax);
1678 for(Int_t p=1;p<=nBinsPt;p++)
1680 Double_t contentPt = 0.;
1681 Double_t entryPt = 0.;
1682 Double_t spreadPt = 0.;
1686 for(Int_t e=1;e<=nBinsEta;e++)
1688 contentPt += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
1689 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1690 entryPt += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1692 sum1 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
1693 * (pow(profilePtEta->GetBinError(profilePtEta->GetBin(p,e)),2.)
1694 + pow(profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)),2.));
1695 sum2 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1696 sum3 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
1697 * (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)));
1699 if(sum2>0. && sum1/sum2-pow(sum3/sum2,2.) > 0.)
1701 spreadPt = pow(sum1/sum2-pow(sum3/sum2,2.),0.5);
1703 profilePt->SetBinContent(p,contentPt);
1704 profilePt->SetBinEntries(p,entryPt);
1706 profilePt->SetBinError(p,spreadPt);
1723 Int_t nBinsEta = profilePtEta->GetNbinsY();
1724 Double_t dEtaMin = (profilePtEta->GetYaxis())->GetXmin();
1725 Double_t dEtaMax = (profilePtEta->GetYaxis())->GetXmax();
1727 Int_t nBinsPt = profilePtEta->GetNbinsX();
1729 TProfile *profileEta =
new TProfile(
"",
"",nBinsEta,dEtaMin,dEtaMax);
1731 for(Int_t e=1;e<=nBinsEta;e++)
1733 Double_t contentEta = 0.;
1734 Double_t entryEta = 0.;
1735 for(Int_t p=1;p<=nBinsPt;p++)
1737 contentEta += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
1738 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1739 entryEta += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1741 profileEta->SetBinContent(e,contentEta);
1742 profileEta->SetBinEntries(e,entryEta);
1757 Double_t dVn[4] = {0.};
1758 Double_t dVnErr[4] = {0.};
1762 for(Int_t b=0;b<4;b++)
1773 }
else if(type ==
"RP")
1783 }
else if(type ==
"POI")
1795 for(Int_t b=0;b<4;b++)
1802 TString
title =
" flow estimates from Q-cumulants";
1803 TString subtitle =
" (";
1804 TString subtitle2 =
" (rebinned in M)";
1806 if(type !=
"RF, rebinned in M")
1810 subtitle.Append(type);
1811 subtitle.Append(
", without weights)");
1814 subtitle.Append(type);
1815 subtitle.Append(
", with weights)");
1821 subtitle.Append(
"RF");
1822 subtitle.Append(
", without weights)");
1825 subtitle.Append(
"RF");
1826 subtitle.Append(
", with weights)");
1831 cout<<
"*************************************"<<endl;
1832 cout<<
"*************************************"<<endl;
1833 cout<<title.Data()<<endl;
1834 cout<<subtitle.Data()<<endl;
1835 if(type ==
"RF, rebinned in M"){cout<<subtitle2.Data()<<endl;}
1838 for(Int_t i=0;i<4;i++)
1840 cout<<
" v_"<<n<<
"{"<<2*(i+1)<<
"} = "<<dVn[i]<<
" +/- "<<dVnErr[i]<<endl;
1848 cout<<
" detector bias (corrected for): "<<endl;
1851 cout<<
" detector bias (not corrected for):"<<endl;
1857 if(type ==
"RF" || type ==
"RF, rebinned in M")
1861 else if (type ==
"RP")
1865 else if (type ==
"POI")
1870 cout<<
"*************************************"<<endl;
1871 cout<<
"*************************************"<<endl;
1881 TFile *output =
new TFile(outputFileName.Data(),
"RECREATE");
1897 outputFileName->Write(outputFileName->GetName(), TObject::kSingleKey);
1910 TString commonHistsName =
"AliFlowCommonHistQC";
1918 TString commonHists2ndOrderName =
"AliFlowCommonHist2ndOrderQC";
1923 TString commonHists4thOrderName =
"AliFlowCommonHist4thOrderQC";
1928 TString commonHists6thOrderName =
"AliFlowCommonHist6thOrderQC";
1933 TString commonHists8thOrderName =
"AliFlowCommonHist8thOrderQC";
1941 TString commonHistResults2ndOrderName =
"AliFlowCommonHistResults2ndOrderQC";
1946 TString commonHistResults4thOrderName =
"AliFlowCommonHistResults4thOrderQC";
1951 TString commonHistResults6thOrderName =
"AliFlowCommonHistResults6thOrderQC";
1956 TString commonHistResults8thOrderName =
"AliFlowCommonHistResults8thOrderQC";
1971 printf(
"\n WARNING (QC): fWeightsList is NULL in AFAWQC::BAFWH() !!!! \n\n");
1975 TString fUseParticleWeightsName =
"fUseParticleWeightsQC";
1977 fUseParticleWeights =
new TProfile(fUseParticleWeightsName.Data(),
"0 = particle weight not used, 1 = particle weight used ",5,0,5);
1991 for(Int_t c=0; c<2; c++) {
1993 Form(
"fPhiEtaWeights[%d]",c),32,0.,TMath::TwoPi(),32,-0.8,0.8);
2201 TF1 *CenFit =
new TF1(
"CenFit",
"pol0", 0., 100.);
2203 Double_t CenAv = CenFit->GetParameter(0);
2205 Double_t SemiCenAv = CenFit->GetParameter(0);
2230 TString sinCosFlag[2] = {
"sin",
"cos"};
2231 TString powerFlag[2] = {
"linear",
"quadratic"};
2234 TString intFlowFlagsName =
"fIntFlowFlags";
2236 fIntFlowFlags =
new TProfile(intFlowFlagsName.Data(),
"Flags for Integrated Flow",20,0.,20.);
2242 fIntFlowFlags->GetXaxis()->SetBinLabel(1,
"Particle Weights");
2244 fIntFlowFlags->GetXaxis()->SetBinLabel(3,
"Corrected for NUA?");
2245 fIntFlowFlags->GetXaxis()->SetBinLabel(4,
"Print RF results");
2246 fIntFlowFlags->GetXaxis()->SetBinLabel(5,
"Print RP results");
2247 fIntFlowFlags->GetXaxis()->SetBinLabel(6,
"Print POI results");
2248 fIntFlowFlags->GetXaxis()->SetBinLabel(7,
"Print RF (rebinned in M) results");
2249 fIntFlowFlags->GetXaxis()->SetBinLabel(8,
"Corrected for NUA vs M?");
2250 fIntFlowFlags->GetXaxis()->SetBinLabel(9,
"Propagate errors to v_{n} from correlations?");
2251 fIntFlowFlags->GetXaxis()->SetBinLabel(10,
"Calculate cumulants vs M");
2252 fIntFlowFlags->GetXaxis()->SetBinLabel(11,
"fMinimumBiasReferenceFlow");
2253 fIntFlowFlags->GetXaxis()->SetBinLabel(12,
"fForgetAboutCovariances");
2255 fIntFlowFlags->GetXaxis()->SetBinLabel(14,
"fFillMultipleControlHistograms");
2256 fIntFlowFlags->GetXaxis()->SetBinLabel(15,
"Calculate all correlations vs M");
2257 fIntFlowFlags->GetXaxis()->SetBinLabel(16,
"fMultiplicityIs");
2259 fIntFlowFlags->GetXaxis()->SetBinLabel(18,
"fUse2DHistograms");
2260 fIntFlowFlags->GetXaxis()->SetBinLabel(19,
"fFillProfilesVsMUsingWeights");
2261 fIntFlowFlags->GetXaxis()->SetBinLabel(20,
"fUseQvectorTerms");
2266 fReQ =
new TMatrixD(12,9);
2267 fImQ =
new TMatrixD(12,9);
2268 fSpk =
new TMatrixD(8,9);
2270 TString intFlowCorrelationsEBEName =
"fIntFlowCorrelationsEBE";
2272 fIntFlowCorrelationsEBE =
new TH1D(intFlowCorrelationsEBEName.Data(),intFlowCorrelationsEBEName.Data(),4,0,4);
2274 TString intFlowEventWeightsForCorrelationsEBEName =
"fIntFlowEventWeightsForCorrelationsEBE";
2275 intFlowEventWeightsForCorrelationsEBEName +=
fAnalysisLabel->Data();
2278 TString intFlowCorrelationsAllEBEName =
"fIntFlowCorrelationsAllEBE";
2283 TString fIntFlowCorrectionTermsForNUAEBEName =
"fIntFlowCorrectionTermsForNUAEBE";
2285 for(Int_t sc=0;sc<2;sc++)
2287 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);
2290 TString fIntFlowEventWeightForCorrectionTermsForNUAEBEName =
"fIntFlowEventWeightForCorrectionTermsForNUAEBE";
2291 fIntFlowEventWeightForCorrectionTermsForNUAEBEName +=
fAnalysisLabel->Data();
2292 for(Int_t sc=0;sc<2;sc++)
2294 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);
2298 TString avMultiplicityName =
"fAvMultiplicity";
2300 fAvMultiplicity =
new TProfile(avMultiplicityName.Data(),
"Average multiplicities of reference particles (RPs)",9,0,9);
2317 TString correlationFlag[4] = {
"#LT#LT2#GT#GT",
"#LT#LT4#GT#GT",
"#LT#LT6#GT#GT",
"#LT#LT8#GT#GT"};
2318 TString intFlowCorrelationsProName =
"fIntFlowCorrelationsPro";
2320 fIntFlowCorrelationsPro =
new TProfile(intFlowCorrelationsProName.Data(),
"Average correlations for all events",4,0,4,
"s");
2326 for(Int_t b=0;b<4;b++)
2332 TString squaredCorrelationFlag[4] = {
"#LT#LT2#GT^{2}#GT",
"#LT#LT4#GT^{2}#GT",
"#LT#LT6#GT^{2}#GT",
"#LT#LT8#GT^{2}#GT"};
2333 TString intFlowSquaredCorrelationsProName =
"fIntFlowSquaredCorrelationsPro";
2341 for(Int_t b=0;b<4;b++)
2348 for(Int_t ci=0;ci<4;ci++)
2351 TString intFlowCorrelationsVsMProName =
"fIntFlowCorrelationsVsMPro";
2353 fIntFlowCorrelationsVsMPro[ci] =
new TProfile(Form(
"%s, %s",intFlowCorrelationsVsMProName.Data(),correlationFlag[ci].Data()),
2354 Form(
"%s vs multiplicity",correlationFlag[ci].
Data()),
2370 TString intFlowSquaredCorrelationsVsMProName =
"fIntFlowSquaredCorrelationsVsMPro";
2373 Form(
"%s vs multiplicity",squaredCorrelationFlag[ci].
Data()),
2391 TString intFlowCorrelationsAllProName =
"fIntFlowCorrelationsAllPro";
2393 fIntFlowCorrelationsAllPro =
new TProfile(intFlowCorrelationsAllProName.Data(),
"Average all correlations for all events",64,0,64);
2499 fIntFlowCorrelationsAllVsMPro[30] =
new TProfile(
"eight1n1n1n1n1n1n1n1n",
"#LT#LT8#GT#GT_{n,n,n,n|n,n,n,n}",
fnBinsMult,
fMinMult,
fMaxMult);
2533 for(Int_t n=0;n<63;n++)
2555 TString intFlowExtraCorrelationsProName =
"fIntFlowExtraCorrelationsPro";
2557 fIntFlowExtraCorrelationsPro =
new TProfile(intFlowExtraCorrelationsProName.Data(),
"Average extra correlations for all events",100,0,100,
"s");
2568 TString productFlag[6] = {
"#LT#LT2#GT#LT4#GT#GT",
"#LT#LT2#GT#LT6#GT#GT",
"#LT#LT2#GT#LT8#GT#GT",
2569 "#LT#LT4#GT#LT6#GT#GT",
"#LT#LT4#GT#LT8#GT#GT",
"#LT#LT6#GT#LT8#GT#GT"};
2570 TString intFlowProductOfCorrelationsProName =
"fIntFlowProductOfCorrelationsPro";
2577 for(Int_t b=0;b<6;b++)
2586 TString intFlowProductOfCorrelationsVsMProName =
"fIntFlowProductOfCorrelationsVsMPro";
2587 intFlowProductOfCorrelationsVsMProName +=
fAnalysisLabel->Data();
2588 for(Int_t
pi=0;
pi<6;
pi++)
2591 Form(
"%s versus multiplicity",productFlag[
pi].
Data()),
2607 TString intFlowProductOfCorrectionTermsForNUAProName =
"fIntFlowProductOfCorrectionTermsForNUAPro";
2608 intFlowProductOfCorrectionTermsForNUAProName +=
fAnalysisLabel->Data();
2643 for(Int_t sc=0;sc<2;sc++)
2645 TString intFlowCorrectionTermsForNUAProName =
"fIntFlowCorrectionTermsForNUAPro";
2647 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");
2660 TString correctionTermFlag[4] = {
"(n(phi1))",
"(n(phi1+phi2))",
"(n(phi1-phi2-phi3))",
"(n(2phi1-phi2))"};
2661 for(Int_t ci=0;ci<4;ci++)
2663 TString intFlowCorrectionTermsForNUAVsMProName =
"fIntFlowCorrectionTermsForNUAVsMPro";
2664 intFlowCorrectionTermsForNUAVsMProName +=
fAnalysisLabel->Data();
2665 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");
2673 TString intFlowCorrelationsHistName =
"fIntFlowCorrelationsHist";
2675 fIntFlowCorrelationsHist =
new TH1D(intFlowCorrelationsHistName.Data(),
"Average correlations for all events",4,0,4);
2688 for(Int_t ci=0;ci<4;ci++)
2690 TString intFlowCorrelationsVsMHistName =
"fIntFlowCorrelationsVsMHist";
2693 Form(
"%s vs multiplicity",correlationFlag[ci].
Data()),
2710 TString intFlowCorrelationsAllHistName =
"fIntFlowCorrelationsAllHist";
2751 for(Int_t sc=0;sc<2;sc++)
2753 TString intFlowCorrectionTermsForNUAHistName =
"fIntFlowCorrectionTermsForNUAHist";
2755 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);
2767 TString intFlowCovariancesName =
"fIntFlowCovariances";
2769 fIntFlowCovariances =
new TH1D(intFlowCovariancesName.Data(),
"Covariances (multiplied with weight dependent prefactor)",6,0,6);
2780 TString intFlowSumOfEventWeightsName =
"fIntFlowSumOfEventWeights";
2782 for(Int_t power=0;power<2;power++)
2784 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);
2793 }
else if (power == 1)
2803 TString intFlowSumOfProductOfEventWeightsName =
"fIntFlowSumOfProductOfEventWeights";
2819 TString intFlowCovariancesVsMName =
"fIntFlowCovariancesVsM";
2821 TString covarianceFlag[6] = {
"Cov(<2>,<4>)",
"Cov(<2>,<6>)",
"Cov(<2>,<8>)",
"Cov(<4>,<6>)",
"Cov(<4>,<8>)",
"Cov(<6>,<8>)"};
2822 for(Int_t ci=0;ci<6;ci++)
2824 fIntFlowCovariancesVsM[ci] =
new TH1D(Form(
"%s, %s",intFlowCovariancesVsMName.Data(),covarianceFlag[ci].Data()),
2825 Form(
"%s vs multiplicity",covarianceFlag[ci].
Data()),
2845 TString intFlowSumOfEventWeightsVsMName =
"fIntFlowSumOfEventWeightsVsM";
2847 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>}"},
2848 {
"#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}"}};
2849 for(Int_t si=0;si<4;si++)
2851 for(Int_t power=0;power<2;power++)
2854 Form(
"%s vs multiplicity",sumFlag[power][si].
Data()),
2876 TString intFlowSumOfProductOfEventWeightsVsMName =
"fIntFlowSumOfProductOfEventWeightsVsM";
2877 intFlowSumOfProductOfEventWeightsVsMName +=
fAnalysisLabel->Data();
2878 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>}",
2879 "#sum_{i=1}^{N} w_{<4>} w_{<6>}",
"#sum_{i=1}^{N} w_{<4>} w_{<8>}",
"#sum_{i=1}^{N} w_{<6>} w_{<8>}"};
2880 for(Int_t
pi=0;
pi<6;
pi++)
2883 Form(
"%s versus multiplicity",sopowFlag[
pi].
Data()),
2900 TString intFlowCovariancesNUAName =
"fIntFlowCovariancesNUA";
2902 fIntFlowCovariancesNUA =
new TH1D(intFlowCovariancesNUAName.Data(),
"Covariances for NUA (multiplied with weight dependent prefactor)",27,0,27);
2921 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(16,
"Cov(<cos(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2922 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(17,
"Cov(<cos(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2925 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(20,
"Cov(<sin(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2926 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(21,
"Cov(<sin(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2927 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(22,
"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}+#phi_{2})>)");
2928 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(23,
"Cov(<cos(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2929 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(24,
"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2930 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(25,
"Cov(<sin(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2931 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(26,
"Cov(<sin(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2932 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(27,
"Cov(<cos(#phi_{1}-#phi_{2}-#phi_{3}>,<sin(#phi_{1}-#phi_{2}-#phi_{3}>)");
2935 TString intFlowSumOfEventWeightsNUAName =
"fIntFlowSumOfEventWeightsNUA";
2937 for(Int_t sc=0;sc<2;sc++)
2939 for(Int_t power=0;power<2;power++)
2941 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);
2950 }
else if(power == 1)
2954 (
fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(3,Form(
"#sum_{i=1}^{N} w_{<%s(#phi_{1}-#phi_{2}-#phi_{3})>}^{2}",sinCosFlag[sc].
Data()));
2961 TString intFlowSumOfProductOfEventWeightsNUAName =
"fIntFlowSumOfProductOfEventWeightsNUA";
2962 intFlowSumOfProductOfEventWeightsNUAName +=
fAnalysisLabel->Data();
2995 TString cumulantFlag[4] = {
"QC{2}",
"QC{4}",
"QC{6}",
"QC{8}"};
2996 TString intFlowQcumulantsName =
"fIntFlowQcumulants";
2998 fIntFlowQcumulants =
new TH1D(intFlowQcumulantsName.Data(),
"Reference Q-cumulants",4,0,4);
3001 fIntFlowQcumulants->SetTitle(
"Reference Q-cumulants (error from non-isotropic terms also propagated)");
3005 for(Int_t b=0;b<4;b++)
3013 TString intFlowQcumulantsRebinnedInMName =
"fIntFlowQcumulantsRebinnedInM";
3018 for(Int_t b=0;b<4;b++)
3025 TString intFlowQcumulantsErrorSquaredRatioName =
"fIntFlowQcumulantsErrorSquaredRatio";
3026 intFlowQcumulantsErrorSquaredRatioName +=
fAnalysisLabel->Data();
3027 fIntFlowQcumulantsErrorSquaredRatio =
new TH1D(intFlowQcumulantsErrorSquaredRatioName.Data(),
"Error squared of reference Q-cumulants: #frac{with NUA terms}{without NUA terms}",4,0,4);
3030 for(Int_t b=0;b<4;b++)
3038 TString intFlowQcumulantsVsMName =
"fIntFlowQcumulantsVsM";
3040 for(Int_t co=0;co<4;co++)
3042 fIntFlowQcumulantsVsM[co] =
new TH1D(Form(
"%s, %s",intFlowQcumulantsVsMName.Data(),cumulantFlag[co].Data()),
3043 Form(
"%s vs multiplicity",cumulantFlag[co].
Data()),
3060 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)};
3061 TString intFlowName =
"fIntFlow";
3064 fIntFlow =
new TH1D(intFlowName.Data(),
"Reference flow estimates from Q-cumulants",4,0,4);
3067 for(Int_t b=0;b<4;b++)
3069 (
fIntFlow->GetXaxis())->SetBinLabel(b+1,flowFlag[b].
Data());
3075 TString intFlowRebinnedInMName =
"fIntFlowRebinnedInM";
3077 fIntFlowRebinnedInM =
new TH1D(intFlowRebinnedInMName.Data(),
"Reference flow estimates from Q-cumulants (rebinned in M)",4,0,4);
3080 for(Int_t b=0;b<4;b++)
3089 TString intFlowVsMName =
"fIntFlowVsM";
3091 for(Int_t co=0;co<4;co++)
3093 fIntFlowVsM[co] =
new TH1D(Form(
"%s, %s",intFlowVsMName.Data(),flowFlag[co].Data()),
3094 Form(
"%s vs multiplicity",flowFlag[co].
Data()),
3101 fIntFlowVsM[co]->GetXaxis()->SetTitle(
"Reference multiplicity (from ESD)");
3111 TString intFlowDetectorBiasName =
"fIntFlowDetectorBias";
3113 fIntFlowDetectorBias =
new TH1D(intFlowDetectorBiasName.Data(),
"Quantifying detector bias",4,0,4);
3116 for(Int_t ci=0;ci<4;ci++)
3118 (
fIntFlowDetectorBias->GetXaxis())->SetBinLabel(ci+1,Form(
"#frac{corrected}{measured} %s",cumulantFlag[ci].
Data()));
3124 TString intFlowDetectorBiasVsMName =
"fIntFlowDetectorBiasVsM";
3126 for(Int_t ci=0;ci<4;ci++)
3128 fIntFlowDetectorBiasVsM[ci] =
new TH1D(Form(
"%s for %s",intFlowDetectorBiasVsMName.Data(),cumulantFlag[ci].Data()),
3129 Form(
"Quantifying detector bias for %s vs multiplicity",cumulantFlag[ci].
Data()),
3158 TString controlHistogramsFlagsName =
"fControlHistogramsFlags";
3160 fControlHistogramsFlags =
new TProfile(controlHistogramsFlagsName.Data(),
"Flags for Control Histograms",2,0,2);
3174 TString sCorrelationNoRPsVsRefMultName =
"fCorrelationNoRPsVsRefMult";
3185 TString sCorrelationNoPOIsVsRefMultName =
"fCorrelationNoPOIsVsRefMult";
3196 TString sCorrelationNoRPsVsNoPOIsName =
"fCorrelationNoRPsVsNoPOIs";
3207 TString sCorrelation[4] = {
"#LT2#GT",
"#LT4#GT",
"#LT6#GT",
"#LT8#GT"};
3208 TString sMultiplicity =
"";
3211 sMultiplicity =
"# RPs";
3214 sMultiplicity =
"Reference multiplicity (from ESD)";
3217 sMultiplicity =
"# POIs";
3219 for(Int_t ci=0;ci<4;ci++)
3231 TString sCorrelationProduct[1] = {
"#LT2#GT#LT4#GT"};
3232 for(Int_t cpi=0;cpi<1;cpi++)
3246 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}}"};
3247 for(Int_t qvti=0;qvti<4;qvti++)
3274 TString bootstrapFlagsName =
"fBootstrapFlags";
3276 fBootstrapFlags =
new TProfile(bootstrapFlagsName.Data(),
"Flags for bootstrap",3,0,3);
3294 TString correlationFlag[4] = {
"#LT#LT2#GT#GT",
"#LT#LT4#GT#GT",
"#LT#LT6#GT#GT",
"#LT#LT8#GT#GT"};
3295 TString cumulantFlag[4] = {
"QC{2}",
"QC{4}",
"QC{6}",
"QC{8}"};
3299 TString bootstrapCorrelationsName =
"fBootstrapCorrelations";
3303 for(Int_t ci=0;ci<4;ci++)
3313 TString bootstrapCumulantsName =
"fBootstrapCumulants";
3317 for(Int_t co=0;co<4;co++)
3329 TString sMultiplicity =
"";
3332 sMultiplicity =
"# RPs";
3335 sMultiplicity =
"Reference multiplicity (from ESD)";
3338 sMultiplicity =
"# POIs";
3343 TString bootstrapCorrelationsVsMName =
"fBootstrapCorrelationsVsM";
3345 for(Int_t ci=0;ci<4;ci++)
3347 fBootstrapCorrelationsVsM[ci] =
new TProfile2D(Form(
"%s, %s",bootstrapCorrelationsVsMName.Data(),correlationFlag[ci].Data()),
3348 Form(
"Bootstrap Correlations Vs. M, %s",correlationFlag[ci].
Data()),
3359 TString bootstrapCumulantsVsMName =
"fBootstrapCumulantsVsM";
3361 for(Int_t co=0;co<4;co++)
3363 fBootstrapCumulantsVsM[co] =
new TH2D(Form(
"%s, %s",bootstrapCumulantsVsMName.Data(),cumulantFlag[co].Data()),
3364 Form(
"Bootstrap Cumulants Vs. M, %s",cumulantFlag[co].
Data()),
3390 TString mixedHarmonicsFlagsName =
"fMixedHarmonicsFlags";
3392 fMixedHarmonicsFlags =
new TProfile(mixedHarmonicsFlagsName.Data(),
"Flags for Mixed Harmonics",4,0,4);
3408 TString s2pCorrelationsName =
"f2pCorrelations";
3410 f2pCorrelations =
new TProfile(s2pCorrelationsName.Data(),Form(
"2-particle correlations (n = %d)",
fHarmonic),6,0,6,
"s");
3425 TString s3pCorrelationsName =
"f3pCorrelations";
3427 f3pCorrelations =
new TProfile(s3pCorrelationsName.Data(),Form(
"3-particle correlations (n = %d)",
fHarmonic),10,0,10,
"s");
3448 TString s4pCorrelationsName =
"f4pCorrelations";
3450 f4pCorrelations =
new TProfile(s4pCorrelationsName.Data(),Form(
"4-particle correlations (n = %d)",
fHarmonic),45,0,45,
"s");
3509 TString s5pCorrelationsName =
"f5pCorrelations";
3511 f5pCorrelations =
new TProfile(s5pCorrelationsName.Data(),Form(
"5-particle correlations (n = %d)",
fHarmonic),87,0,87,
"s");
3612 TString s6pCorrelationsName =
"f6pCorrelations";
3614 f6pCorrelations =
new TProfile(s6pCorrelationsName.Data(),Form(
"6-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3623 TString s7pCorrelationsName =
"f7pCorrelations";
3625 f7pCorrelations =
new TProfile(s7pCorrelationsName.Data(),Form(
"7-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3634 TString s8pCorrelationsName =
"f8pCorrelations";
3636 f8pCorrelations =
new TProfile(s8pCorrelationsName.Data(),Form(
"8-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3681 TString mixedHarmonicEventWeightsName =
"fMixedHarmonicEventWeights";
3683 TString powerFlag[2] = {
"linear",
"quadratic"};
3684 for(Int_t power=0;power<2;power++)
3686 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.);
3700 }
else if (power == 1)
3715 TString mixedHarmonicProductOfEventWeightsName =
"fMixedHarmonicProductOfEventWeights";
3716 mixedHarmonicProductOfEventWeightsName +=
fAnalysisLabel->Data();
3721 for(Int_t b=1;b<=8;b++)
3729 TString mixedHarmonicProductOfCorrelationsName =
"fMixedHarmonicProductOfCorrelations";
3730 mixedHarmonicProductOfCorrelationsName +=
fAnalysisLabel->Data();