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.),
149 fCentralityCL1EBE(0.),
151 fCentralityTRKEBE(0.),
152 fAvMultiplicity(NULL),
153 fIntFlowCorrelationsPro(NULL),
154 fIntFlowSquaredCorrelationsPro(NULL),
155 fIntFlowCorrelationsAllPro(NULL),
156 fIntFlowExtraCorrelationsPro(NULL),
157 fIntFlowProductOfCorrelationsPro(NULL),
158 fIntFlowProductOfCorrectionTermsForNUAPro(NULL),
159 fIntFlowCorrelationsHist(NULL),
160 fIntFlowCorrelationsAllHist(NULL),
161 fIntFlowCovariances(NULL),
162 fIntFlowSumOfProductOfEventWeights(NULL),
163 fIntFlowCovariancesNUA(NULL),
164 fIntFlowSumOfProductOfEventWeightsNUA(NULL),
165 fIntFlowQcumulants(NULL),
166 fIntFlowQcumulantsRebinnedInM(NULL),
167 fIntFlowQcumulantsErrorSquaredRatio(NULL),
169 fIntFlowRebinnedInM(NULL),
170 fIntFlowDetectorBias(NULL),
173 fDiffFlowProfiles(NULL),
174 fDiffFlowResults(NULL),
176 fDiffFlowFlags(NULL),
177 fCalculateDiffFlow(kTRUE),
178 fCalculate2DDiffFlow(kFALSE),
179 fCalculateDiffFlowVsEta(kTRUE),
181 fOtherDiffCorrelatorsList(NULL),
183 fDistributionsList(NULL),
184 fDistributionsFlags(NULL),
185 fStoreDistributions(kFALSE),
186 fnBinsForCorrelations(10000),
188 fNestedLoopsList(NULL),
189 fEvaluateIntFlowNestedLoops(kFALSE),
190 fEvaluateDiffFlowNestedLoops(kFALSE),
191 fMaxAllowedMultiplicity(10),
192 fEvaluateNestedLoops(NULL),
193 fIntFlowDirectCorrelations(NULL),
194 fIntFlowExtraDirectCorrelations(NULL),
195 fCrossCheckInPtBinNo(10),
196 fCrossCheckInEtaBinNo(20),
197 fNoOfParticlesInBin(NULL),
198 fMixedHarmonicsNestedLoops(NULL),
200 fMixedHarmonicsList(NULL),
201 fMixedHarmonicsProfiles(NULL),
202 fMixedHarmonicsResults(NULL),
203 fMixedHarmonicsErrorPropagation(NULL),
204 fMixedHarmonicsFlags(NULL),
205 fCalculateMixedHarmonics(kFALSE),
206 fCalculateMixedHarmonicsVsM(kFALSE),
207 f2pCorrelations(NULL),
208 f3pCorrelations(NULL),
209 f4pCorrelations(NULL),
210 f5pCorrelations(NULL),
211 f6pCorrelations(NULL),
212 f7pCorrelations(NULL),
213 f8pCorrelations(NULL),
221 fMixedHarmonicProductOfEventWeights(NULL),
222 fMixedHarmonicProductOfCorrelations(NULL),
224 fControlHistogramsList(NULL),
225 fControlHistogramsFlags(NULL),
226 fStoreControlHistograms(kFALSE),
227 fCorrelationNoRPsVsRefMult(NULL),
228 fCorrelationNoPOIsVsRefMult(NULL),
229 fCorrelationNoRPsVsNoPOIs(NULL),
231 fBootstrapList(NULL),
232 fBootstrapProfilesList(NULL),
233 fBootstrapResultsList(NULL),
234 fBootstrapFlags(NULL),
235 fUseBootstrap(kFALSE),
236 fUseBootstrapVsM(kFALSE),
239 fBootstrapCorrelations(NULL),
240 fBootstrapCumulants(NULL),
245 fCalculateCRC(kTRUE),
246 fCalculateCRCPt(kFALSE),
247 fCalculateCME(kFALSE),
248 fCalculateCRC2(kFALSE),
249 fCalculateCRCVZ(kFALSE),
250 fCalculateCRCZDC(kFALSE),
251 fCalculateFlowQC(kFALSE),
252 fCalculateFlowZDC(kFALSE),
253 fCalculateFlowVZ(kFALSE),
256 fRecenterZDC(kFALSE),
258 fUseCRCRecenter(kFALSE),
268 fCorrWeightTPC(kUnit),
269 fCorrWeightVZ(kUnit),
270 fCorrWeightZDC(kUnit),
273 fCRCCenBinWidth(CenWidth),
274 fCRCIntRbRList(NULL),
279 fCRCQVecWeightsList(NULL),
280 fCRCZDCCalibList(NULL),
285 fCRCZDCRbRList(NULL),
293 fFlowSPZDCList(NULL),
294 fFlowSPZDCRbRList(NULL),
301 fQAZDCCutsFlag(kTRUE),
308 fHistList =
new TList();
309 fHistList->SetName(
"cobjQC");
310 fHistList->SetOwner(kTRUE);
313 fTempList =
new TList();
314 fTempList->SetName(
"temp");
315 fTempList->SetOwner(kTRUE);
318 fMultiplicityWeight =
new TString(
"combinations");
321 fAnalysisLabel =
new TString();
324 this->InitializeArraysForIntFlow();
325 this->InitializeArraysForDiffFlow();
326 this->InitializeArraysForDistributions();
327 this->InitializeArraysForVarious();
328 this->InitializeArraysForParticleWeights();
329 this->InitializeArraysForNestedLoops();
330 this->InitializeArraysForMixedHarmonics();
331 this->InitializeArraysForControlHistograms();
332 this->InitializeArraysForBootstrap();
334 fRunList = TArrayI();
337 this->InitializeCostantsForCRC();
338 this->InitializeArraysForCRC();
339 this->InitializeArraysForCRCVZ();
340 this->InitializeArraysForCRCZDC();
341 this->InitializeArraysForCRC2();
342 this->InitializeArraysForQVec();
343 this->InitializeArraysForCRCPt();
344 this->InitializeArraysForCME();
345 this->InitializeArraysForFlowEbE();
346 this->InitializeArraysForFlowQC();
347 this->InitializeArraysForFlowSPZDC();
348 this->InitializeArraysForFlowSPVZ();
383 Bool_t oldHistAddStatus = TH1::AddDirectoryStatus();
384 TH1::AddDirectory(kFALSE);
434 TH1::AddDirectory(oldHistAddStatus);
471 Double_t wTrack = 1.;
472 Double_t wPhiEta = 1.;
473 Int_t nCounterNoRPs = 0;
492 Double_t ptEta[2] = {0.,0.};
505 if(fRunBin<0 || fRunBin>=
fCRCnRun) {
return;}
507 if(fCenBin<0 || fCenBin>=
fCRCnCen) {
return;}
514 for(Int_t k=0; k<2; k++) {
523 Double_t PhiEtaAv = 0.;
524 for(Int_t k=0; k<2; k++) {
527 for(Int_t i=1; i<=nBinsEta; i++) {
528 for (Int_t j=1; j<=nBinsPhi; j++) {
532 PhiEtaAv /= 1.*nBinsPhi*nBinsEta;
533 for(Int_t i=1; i<=nBinsEta; i++) {
534 for (Int_t j=1; j<=nBinsPhi; j++) {
539 }
else cout <<
" WARNING: fPhiEtaWeights not found !!! " << endl;
572 for(Int_t i=0;i<nPrim;i++) {
582 dPhi = aftsTrack->
Phi();
583 dPt = aftsTrack->
Pt();
584 dEta = aftsTrack->
Eta();
611 for(Int_t m=0;m<12;m++)
613 for(Int_t k=0;k<9;k++)
615 (*fReQ)(m,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1)*n*dPhi);
616 (*fImQ)(m,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1)*n*dPhi);
620 for(Int_t p=0;p<8;p++)
622 for(Int_t k=0;k<9;k++)
624 (*fSpk)(p,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k);
633 for(Int_t k=0;k<9;k++)
635 for(Int_t m=0;m<4;m++)
641 fReRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
642 fImRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
645 fs1dEBE[0][pe][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
651 fReRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
652 fImRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
655 fs2dEBE[0][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
664 for(Int_t k=0;k<9;k++)
666 for(Int_t m=0;m<4;m++)
672 fReRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
673 fImRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
676 fs1dEBE[2][pe][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
682 fReRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
683 fImRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
686 fs2dEBE[2][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
699 dPhi = aftsTrack->
Phi();
700 dPt = aftsTrack->
Pt();
701 dEta = aftsTrack->
Eta();
702 dCharge = aftsTrack->
Charge();
703 if (dCharge > 0.) cw = 0;
704 else if (dCharge < 0.) cw = 1;
732 if(ptbin==-1)
continue;
739 for(Int_t k=0;k<9;k++)
741 for(Int_t m=0;m<4;m++)
747 fReRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
748 fImRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
753 fReRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
754 fImRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
762 fCRCQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
763 fCRCQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
764 fCRCMult[cw][h]->Fill(dEta,wPhiEta);
766 fCRC2QRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
767 fCRC2QIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
768 fCRC2Mul[cw][h]->Fill(dEta,wPhiEta);
770 fCRCZDCQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
771 fCRCZDCQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
775 fCRC2QRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
776 fCRC2QIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
781 fCRCZDCQRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
782 fCRCZDCQIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
785 fCRCZDCQRe[3][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
786 fCRCZDCQIm[3][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
791 fCMEQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
792 fCMEQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
793 fCMEMult[cw][h]->Fill(dEta,wPhiEta);
795 fCMEQRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
796 fCMEQIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
799 fCMEQRe[3][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
800 fCMEQIm[3][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
810 fPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
811 fPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
814 Int_t keta = (dEta<0.?0:1);
815 fPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
816 fPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
823 fEtaDiffQRe[h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
824 fEtaDiffQIm[h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
841 printf(
"\n WARNING (QC): No particle (i.e. aftsTrack is a NULL pointer in AFAWQC::Make())!!!!\n\n");
848 for(Int_t p=0;p<8;p++)
850 for(Int_t k=0;k<9;k++)
852 (*fSpk)(p,k)=pow((*
fSpk)(p,k),p+1);
1270 cout<<
"Skipping the event because multiplicity is "<<nPrim<<
". Too high to evaluate nested loops!"<<endl;
1274 cout<<
"Skipping the event because multiplicity is "<<nPrim<<
"."<<endl;
1366 Double_t dMult = (*fSpk)(0,0);
1369 Double_t dReQ1n = (*fReQ)(0,0);
1370 Double_t dReQ2n = (*fReQ)(1,0);
1373 Double_t dImQ1n = (*fImQ)(0,0);
1374 Double_t dImQ2n = (*fImQ)(1,0);
1379 Double_t dMultiplicityBin = 0.;
1406 Double_t cosP1n = 0.;
1410 cosP1n = dReQ1n/dMult;
1423 Double_t cosP1nP1n = 0.;
1424 Double_t cosP2nM1n = 0.;
1428 cosP1nP1n = (pow(dReQ1n,2)-pow(dImQ1n,2)-dReQ2n)/(dMult*(dMult-1));
1429 cosP2nM1n = (dReQ2n*dReQ1n+dImQ2n*dImQ1n-dReQ1n)/(dMult*(dMult-1));
1449 Double_t cosP1nM1nM1n = 0.;
1453 cosP1nM1nM1n = (dReQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2))-dReQ1n*dReQ2n-dImQ1n*dImQ2n-2.*(dMult-1)*dReQ1n)
1454 / (dMult*(dMult-1)*(dMult-2));
1475 Double_t dMult = (*fSpk)(0,0);
1478 Double_t dReQ1n = (*fReQ)(0,0);
1479 Double_t dReQ2n = (*fReQ)(1,0);
1482 Double_t dImQ1n = (*fImQ)(0,0);
1483 Double_t dImQ2n = (*fImQ)(1,0);
1488 Double_t dMultiplicityBin = 0.;
1515 Double_t sinP1n = 0.;
1519 sinP1n = dImQ1n/dMult;
1532 Double_t sinP1nP1n = 0.;
1533 Double_t sinP2nM1n = 0.;
1536 sinP1nP1n = (2.*dReQ1n*dImQ1n-dImQ2n)/(dMult*(dMult-1));
1537 sinP2nM1n = (dImQ2n*dReQ1n-dReQ2n*dImQ1n-dImQ1n)/(dMult*(dMult-1));
1557 Double_t sinP1nM1nM1n = 0.;
1561 sinP1nM1nM1n = (-dImQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2))+dReQ1n*dImQ2n-dImQ1n*dReQ2n+2.*(dMult-1)*dImQ1n)
1562 / (dMult*(dMult-1)*(dMult-2));
1592 if(outputListHistos)
1597 printf(
"\n WARNING (QC): fHistList is NULL in AFAWQC::GOH() !!!!\n\n");
1623 printf(
"\n WARNING (QC): outputListHistos is NULL in AFAWQC::GOH() !!!!\n\n");
1635 Int_t nBinsPt = profilePtEta->GetNbinsX();
1636 Double_t dPtMin = (profilePtEta->GetXaxis())->GetXmin();
1637 Double_t dPtMax = (profilePtEta->GetXaxis())->GetXmax();
1639 Int_t nBinsEta = profilePtEta->GetNbinsY();
1641 TProfile *profilePt =
new TProfile(
"",
"",nBinsPt,dPtMin,dPtMax);
1643 for(Int_t p=1;p<=nBinsPt;p++)
1645 Double_t contentPt = 0.;
1646 Double_t entryPt = 0.;
1647 Double_t spreadPt = 0.;
1651 for(Int_t e=1;e<=nBinsEta;e++)
1653 contentPt += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
1654 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1655 entryPt += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1657 sum1 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
1658 * (pow(profilePtEta->GetBinError(profilePtEta->GetBin(p,e)),2.)
1659 + pow(profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)),2.));
1660 sum2 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1661 sum3 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
1662 * (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)));
1664 if(sum2>0. && sum1/sum2-pow(sum3/sum2,2.) > 0.)
1666 spreadPt = pow(sum1/sum2-pow(sum3/sum2,2.),0.5);
1668 profilePt->SetBinContent(p,contentPt);
1669 profilePt->SetBinEntries(p,entryPt);
1671 profilePt->SetBinError(p,spreadPt);
1688 Int_t nBinsEta = profilePtEta->GetNbinsY();
1689 Double_t dEtaMin = (profilePtEta->GetYaxis())->GetXmin();
1690 Double_t dEtaMax = (profilePtEta->GetYaxis())->GetXmax();
1692 Int_t nBinsPt = profilePtEta->GetNbinsX();
1694 TProfile *profileEta =
new TProfile(
"",
"",nBinsEta,dEtaMin,dEtaMax);
1696 for(Int_t e=1;e<=nBinsEta;e++)
1698 Double_t contentEta = 0.;
1699 Double_t entryEta = 0.;
1700 for(Int_t p=1;p<=nBinsPt;p++)
1702 contentEta += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
1703 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1704 entryEta += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1706 profileEta->SetBinContent(e,contentEta);
1707 profileEta->SetBinEntries(e,entryEta);
1722 Double_t dVn[4] = {0.};
1723 Double_t dVnErr[4] = {0.};
1727 for(Int_t b=0;b<4;b++)
1738 }
else if(type ==
"RP")
1748 }
else if(type ==
"POI")
1760 for(Int_t b=0;b<4;b++)
1767 TString
title =
" flow estimates from Q-cumulants";
1768 TString subtitle =
" (";
1769 TString subtitle2 =
" (rebinned in M)";
1771 if(type !=
"RF, rebinned in M")
1775 subtitle.Append(type);
1776 subtitle.Append(
", without weights)");
1779 subtitle.Append(type);
1780 subtitle.Append(
", with weights)");
1786 subtitle.Append(
"RF");
1787 subtitle.Append(
", without weights)");
1790 subtitle.Append(
"RF");
1791 subtitle.Append(
", with weights)");
1796 cout<<
"*************************************"<<endl;
1797 cout<<
"*************************************"<<endl;
1798 cout<<title.Data()<<endl;
1799 cout<<subtitle.Data()<<endl;
1800 if(type ==
"RF, rebinned in M"){cout<<subtitle2.Data()<<endl;}
1803 for(Int_t i=0;i<4;i++)
1805 cout<<
" v_"<<n<<
"{"<<2*(i+1)<<
"} = "<<dVn[i]<<
" +/- "<<dVnErr[i]<<endl;
1813 cout<<
" detector bias (corrected for): "<<endl;
1816 cout<<
" detector bias (not corrected for):"<<endl;
1822 if(type ==
"RF" || type ==
"RF, rebinned in M")
1826 else if (type ==
"RP")
1830 else if (type ==
"POI")
1835 cout<<
"*************************************"<<endl;
1836 cout<<
"*************************************"<<endl;
1846 TFile *output =
new TFile(outputFileName.Data(),
"RECREATE");
1862 outputFileName->Write(outputFileName->GetName(), TObject::kSingleKey);
1875 TString commonHistsName =
"AliFlowCommonHistQC";
1883 TString commonHists2ndOrderName =
"AliFlowCommonHist2ndOrderQC";
1888 TString commonHists4thOrderName =
"AliFlowCommonHist4thOrderQC";
1893 TString commonHists6thOrderName =
"AliFlowCommonHist6thOrderQC";
1898 TString commonHists8thOrderName =
"AliFlowCommonHist8thOrderQC";
1906 TString commonHistResults2ndOrderName =
"AliFlowCommonHistResults2ndOrderQC";
1911 TString commonHistResults4thOrderName =
"AliFlowCommonHistResults4thOrderQC";
1916 TString commonHistResults6thOrderName =
"AliFlowCommonHistResults6thOrderQC";
1921 TString commonHistResults8thOrderName =
"AliFlowCommonHistResults8thOrderQC";
1936 printf(
"\n WARNING (QC): fWeightsList is NULL in AFAWQC::BAFWH() !!!! \n\n");
1940 TString fUseParticleWeightsName =
"fUseParticleWeightsQC";
1942 fUseParticleWeights =
new TProfile(fUseParticleWeightsName.Data(),
"0 = particle weight not used, 1 = particle weight used ",5,0,5);
1956 for(Int_t c=0; c<2; c++) {
1958 Form(
"fPhiEtaWeights[%d]",c),32,0.,TMath::TwoPi(),32,-0.8,0.8);
2166 TF1 *CenFit =
new TF1(
"CenFit",
"pol0", 0., 100.);
2168 Double_t CenAv = CenFit->GetParameter(0);
2170 Double_t SemiCenAv = CenFit->GetParameter(0);
2195 TString sinCosFlag[2] = {
"sin",
"cos"};
2196 TString powerFlag[2] = {
"linear",
"quadratic"};
2199 TString intFlowFlagsName =
"fIntFlowFlags";
2201 fIntFlowFlags =
new TProfile(intFlowFlagsName.Data(),
"Flags for Integrated Flow",20,0.,20.);
2207 fIntFlowFlags->GetXaxis()->SetBinLabel(1,
"Particle Weights");
2209 fIntFlowFlags->GetXaxis()->SetBinLabel(3,
"Corrected for NUA?");
2210 fIntFlowFlags->GetXaxis()->SetBinLabel(4,
"Print RF results");
2211 fIntFlowFlags->GetXaxis()->SetBinLabel(5,
"Print RP results");
2212 fIntFlowFlags->GetXaxis()->SetBinLabel(6,
"Print POI results");
2213 fIntFlowFlags->GetXaxis()->SetBinLabel(7,
"Print RF (rebinned in M) results");
2214 fIntFlowFlags->GetXaxis()->SetBinLabel(8,
"Corrected for NUA vs M?");
2215 fIntFlowFlags->GetXaxis()->SetBinLabel(9,
"Propagate errors to v_{n} from correlations?");
2216 fIntFlowFlags->GetXaxis()->SetBinLabel(10,
"Calculate cumulants vs M");
2217 fIntFlowFlags->GetXaxis()->SetBinLabel(11,
"fMinimumBiasReferenceFlow");
2218 fIntFlowFlags->GetXaxis()->SetBinLabel(12,
"fForgetAboutCovariances");
2220 fIntFlowFlags->GetXaxis()->SetBinLabel(14,
"fFillMultipleControlHistograms");
2221 fIntFlowFlags->GetXaxis()->SetBinLabel(15,
"Calculate all correlations vs M");
2222 fIntFlowFlags->GetXaxis()->SetBinLabel(16,
"fMultiplicityIs");
2224 fIntFlowFlags->GetXaxis()->SetBinLabel(18,
"fUse2DHistograms");
2225 fIntFlowFlags->GetXaxis()->SetBinLabel(19,
"fFillProfilesVsMUsingWeights");
2226 fIntFlowFlags->GetXaxis()->SetBinLabel(20,
"fUseQvectorTerms");
2231 fReQ =
new TMatrixD(12,9);
2232 fImQ =
new TMatrixD(12,9);
2233 fSpk =
new TMatrixD(8,9);
2235 TString intFlowCorrelationsEBEName =
"fIntFlowCorrelationsEBE";
2237 fIntFlowCorrelationsEBE =
new TH1D(intFlowCorrelationsEBEName.Data(),intFlowCorrelationsEBEName.Data(),4,0,4);
2239 TString intFlowEventWeightsForCorrelationsEBEName =
"fIntFlowEventWeightsForCorrelationsEBE";
2240 intFlowEventWeightsForCorrelationsEBEName +=
fAnalysisLabel->Data();
2243 TString intFlowCorrelationsAllEBEName =
"fIntFlowCorrelationsAllEBE";
2248 TString fIntFlowCorrectionTermsForNUAEBEName =
"fIntFlowCorrectionTermsForNUAEBE";
2250 for(Int_t sc=0;sc<2;sc++)
2252 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);
2255 TString fIntFlowEventWeightForCorrectionTermsForNUAEBEName =
"fIntFlowEventWeightForCorrectionTermsForNUAEBE";
2256 fIntFlowEventWeightForCorrectionTermsForNUAEBEName +=
fAnalysisLabel->Data();
2257 for(Int_t sc=0;sc<2;sc++)
2259 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);
2263 TString avMultiplicityName =
"fAvMultiplicity";
2265 fAvMultiplicity =
new TProfile(avMultiplicityName.Data(),
"Average multiplicities of reference particles (RPs)",9,0,9);
2282 TString correlationFlag[4] = {
"#LT#LT2#GT#GT",
"#LT#LT4#GT#GT",
"#LT#LT6#GT#GT",
"#LT#LT8#GT#GT"};
2283 TString intFlowCorrelationsProName =
"fIntFlowCorrelationsPro";
2285 fIntFlowCorrelationsPro =
new TProfile(intFlowCorrelationsProName.Data(),
"Average correlations for all events",4,0,4,
"s");
2291 for(Int_t b=0;b<4;b++)
2297 TString squaredCorrelationFlag[4] = {
"#LT#LT2#GT^{2}#GT",
"#LT#LT4#GT^{2}#GT",
"#LT#LT6#GT^{2}#GT",
"#LT#LT8#GT^{2}#GT"};
2298 TString intFlowSquaredCorrelationsProName =
"fIntFlowSquaredCorrelationsPro";
2306 for(Int_t b=0;b<4;b++)
2313 for(Int_t ci=0;ci<4;ci++)
2316 TString intFlowCorrelationsVsMProName =
"fIntFlowCorrelationsVsMPro";
2318 fIntFlowCorrelationsVsMPro[ci] =
new TProfile(Form(
"%s, %s",intFlowCorrelationsVsMProName.Data(),correlationFlag[ci].Data()),
2319 Form(
"%s vs multiplicity",correlationFlag[ci].
Data()),
2335 TString intFlowSquaredCorrelationsVsMProName =
"fIntFlowSquaredCorrelationsVsMPro";
2338 Form(
"%s vs multiplicity",squaredCorrelationFlag[ci].
Data()),
2356 TString intFlowCorrelationsAllProName =
"fIntFlowCorrelationsAllPro";
2358 fIntFlowCorrelationsAllPro =
new TProfile(intFlowCorrelationsAllProName.Data(),
"Average all correlations for all events",64,0,64);
2464 fIntFlowCorrelationsAllVsMPro[30] =
new TProfile(
"eight1n1n1n1n1n1n1n1n",
"#LT#LT8#GT#GT_{n,n,n,n|n,n,n,n}",
fnBinsMult,
fMinMult,
fMaxMult);
2498 for(Int_t n=0;n<63;n++)
2520 TString intFlowExtraCorrelationsProName =
"fIntFlowExtraCorrelationsPro";
2522 fIntFlowExtraCorrelationsPro =
new TProfile(intFlowExtraCorrelationsProName.Data(),
"Average extra correlations for all events",100,0,100,
"s");
2533 TString productFlag[6] = {
"#LT#LT2#GT#LT4#GT#GT",
"#LT#LT2#GT#LT6#GT#GT",
"#LT#LT2#GT#LT8#GT#GT",
2534 "#LT#LT4#GT#LT6#GT#GT",
"#LT#LT4#GT#LT8#GT#GT",
"#LT#LT6#GT#LT8#GT#GT"};
2535 TString intFlowProductOfCorrelationsProName =
"fIntFlowProductOfCorrelationsPro";
2542 for(Int_t b=0;b<6;b++)
2551 TString intFlowProductOfCorrelationsVsMProName =
"fIntFlowProductOfCorrelationsVsMPro";
2552 intFlowProductOfCorrelationsVsMProName +=
fAnalysisLabel->Data();
2553 for(Int_t
pi=0;
pi<6;
pi++)
2556 Form(
"%s versus multiplicity",productFlag[
pi].
Data()),
2572 TString intFlowProductOfCorrectionTermsForNUAProName =
"fIntFlowProductOfCorrectionTermsForNUAPro";
2573 intFlowProductOfCorrectionTermsForNUAProName +=
fAnalysisLabel->Data();
2608 for(Int_t sc=0;sc<2;sc++)
2610 TString intFlowCorrectionTermsForNUAProName =
"fIntFlowCorrectionTermsForNUAPro";
2612 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");
2625 TString correctionTermFlag[4] = {
"(n(phi1))",
"(n(phi1+phi2))",
"(n(phi1-phi2-phi3))",
"(n(2phi1-phi2))"};
2626 for(Int_t ci=0;ci<4;ci++)
2628 TString intFlowCorrectionTermsForNUAVsMProName =
"fIntFlowCorrectionTermsForNUAVsMPro";
2629 intFlowCorrectionTermsForNUAVsMProName +=
fAnalysisLabel->Data();
2630 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");
2638 TString intFlowCorrelationsHistName =
"fIntFlowCorrelationsHist";
2640 fIntFlowCorrelationsHist =
new TH1D(intFlowCorrelationsHistName.Data(),
"Average correlations for all events",4,0,4);
2653 for(Int_t ci=0;ci<4;ci++)
2655 TString intFlowCorrelationsVsMHistName =
"fIntFlowCorrelationsVsMHist";
2658 Form(
"%s vs multiplicity",correlationFlag[ci].
Data()),
2675 TString intFlowCorrelationsAllHistName =
"fIntFlowCorrelationsAllHist";
2716 for(Int_t sc=0;sc<2;sc++)
2718 TString intFlowCorrectionTermsForNUAHistName =
"fIntFlowCorrectionTermsForNUAHist";
2720 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);
2732 TString intFlowCovariancesName =
"fIntFlowCovariances";
2734 fIntFlowCovariances =
new TH1D(intFlowCovariancesName.Data(),
"Covariances (multiplied with weight dependent prefactor)",6,0,6);
2745 TString intFlowSumOfEventWeightsName =
"fIntFlowSumOfEventWeights";
2747 for(Int_t power=0;power<2;power++)
2749 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);
2758 }
else if (power == 1)
2768 TString intFlowSumOfProductOfEventWeightsName =
"fIntFlowSumOfProductOfEventWeights";
2784 TString intFlowCovariancesVsMName =
"fIntFlowCovariancesVsM";
2786 TString covarianceFlag[6] = {
"Cov(<2>,<4>)",
"Cov(<2>,<6>)",
"Cov(<2>,<8>)",
"Cov(<4>,<6>)",
"Cov(<4>,<8>)",
"Cov(<6>,<8>)"};
2787 for(Int_t ci=0;ci<6;ci++)
2789 fIntFlowCovariancesVsM[ci] =
new TH1D(Form(
"%s, %s",intFlowCovariancesVsMName.Data(),covarianceFlag[ci].Data()),
2790 Form(
"%s vs multiplicity",covarianceFlag[ci].
Data()),
2810 TString intFlowSumOfEventWeightsVsMName =
"fIntFlowSumOfEventWeightsVsM";
2812 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>}"},
2813 {
"#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}"}};
2814 for(Int_t si=0;si<4;si++)
2816 for(Int_t power=0;power<2;power++)
2819 Form(
"%s vs multiplicity",sumFlag[power][si].
Data()),
2841 TString intFlowSumOfProductOfEventWeightsVsMName =
"fIntFlowSumOfProductOfEventWeightsVsM";
2842 intFlowSumOfProductOfEventWeightsVsMName +=
fAnalysisLabel->Data();
2843 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>}",
2844 "#sum_{i=1}^{N} w_{<4>} w_{<6>}",
"#sum_{i=1}^{N} w_{<4>} w_{<8>}",
"#sum_{i=1}^{N} w_{<6>} w_{<8>}"};
2845 for(Int_t
pi=0;
pi<6;
pi++)
2848 Form(
"%s versus multiplicity",sopowFlag[
pi].
Data()),
2865 TString intFlowCovariancesNUAName =
"fIntFlowCovariancesNUA";
2867 fIntFlowCovariancesNUA =
new TH1D(intFlowCovariancesNUAName.Data(),
"Covariances for NUA (multiplied with weight dependent prefactor)",27,0,27);
2886 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(16,
"Cov(<cos(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2887 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(17,
"Cov(<cos(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2890 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(20,
"Cov(<sin(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2891 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(21,
"Cov(<sin(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2892 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(22,
"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}+#phi_{2})>)");
2893 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(23,
"Cov(<cos(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2894 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(24,
"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2895 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(25,
"Cov(<sin(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2896 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(26,
"Cov(<sin(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2897 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(27,
"Cov(<cos(#phi_{1}-#phi_{2}-#phi_{3}>,<sin(#phi_{1}-#phi_{2}-#phi_{3}>)");
2900 TString intFlowSumOfEventWeightsNUAName =
"fIntFlowSumOfEventWeightsNUA";
2902 for(Int_t sc=0;sc<2;sc++)
2904 for(Int_t power=0;power<2;power++)
2906 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);
2915 }
else if(power == 1)
2919 (
fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(3,Form(
"#sum_{i=1}^{N} w_{<%s(#phi_{1}-#phi_{2}-#phi_{3})>}^{2}",sinCosFlag[sc].
Data()));
2926 TString intFlowSumOfProductOfEventWeightsNUAName =
"fIntFlowSumOfProductOfEventWeightsNUA";
2927 intFlowSumOfProductOfEventWeightsNUAName +=
fAnalysisLabel->Data();
2960 TString cumulantFlag[4] = {
"QC{2}",
"QC{4}",
"QC{6}",
"QC{8}"};
2961 TString intFlowQcumulantsName =
"fIntFlowQcumulants";
2963 fIntFlowQcumulants =
new TH1D(intFlowQcumulantsName.Data(),
"Reference Q-cumulants",4,0,4);
2966 fIntFlowQcumulants->SetTitle(
"Reference Q-cumulants (error from non-isotropic terms also propagated)");
2970 for(Int_t b=0;b<4;b++)
2978 TString intFlowQcumulantsRebinnedInMName =
"fIntFlowQcumulantsRebinnedInM";
2983 for(Int_t b=0;b<4;b++)
2990 TString intFlowQcumulantsErrorSquaredRatioName =
"fIntFlowQcumulantsErrorSquaredRatio";
2991 intFlowQcumulantsErrorSquaredRatioName +=
fAnalysisLabel->Data();
2992 fIntFlowQcumulantsErrorSquaredRatio =
new TH1D(intFlowQcumulantsErrorSquaredRatioName.Data(),
"Error squared of reference Q-cumulants: #frac{with NUA terms}{without NUA terms}",4,0,4);
2995 for(Int_t b=0;b<4;b++)
3003 TString intFlowQcumulantsVsMName =
"fIntFlowQcumulantsVsM";
3005 for(Int_t co=0;co<4;co++)
3007 fIntFlowQcumulantsVsM[co] =
new TH1D(Form(
"%s, %s",intFlowQcumulantsVsMName.Data(),cumulantFlag[co].Data()),
3008 Form(
"%s vs multiplicity",cumulantFlag[co].
Data()),
3025 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)};
3026 TString intFlowName =
"fIntFlow";
3029 fIntFlow =
new TH1D(intFlowName.Data(),
"Reference flow estimates from Q-cumulants",4,0,4);
3032 for(Int_t b=0;b<4;b++)
3034 (
fIntFlow->GetXaxis())->SetBinLabel(b+1,flowFlag[b].
Data());
3040 TString intFlowRebinnedInMName =
"fIntFlowRebinnedInM";
3042 fIntFlowRebinnedInM =
new TH1D(intFlowRebinnedInMName.Data(),
"Reference flow estimates from Q-cumulants (rebinned in M)",4,0,4);
3045 for(Int_t b=0;b<4;b++)
3054 TString intFlowVsMName =
"fIntFlowVsM";
3056 for(Int_t co=0;co<4;co++)
3058 fIntFlowVsM[co] =
new TH1D(Form(
"%s, %s",intFlowVsMName.Data(),flowFlag[co].Data()),
3059 Form(
"%s vs multiplicity",flowFlag[co].
Data()),
3066 fIntFlowVsM[co]->GetXaxis()->SetTitle(
"Reference multiplicity (from ESD)");
3076 TString intFlowDetectorBiasName =
"fIntFlowDetectorBias";
3078 fIntFlowDetectorBias =
new TH1D(intFlowDetectorBiasName.Data(),
"Quantifying detector bias",4,0,4);
3081 for(Int_t ci=0;ci<4;ci++)
3083 (
fIntFlowDetectorBias->GetXaxis())->SetBinLabel(ci+1,Form(
"#frac{corrected}{measured} %s",cumulantFlag[ci].
Data()));
3089 TString intFlowDetectorBiasVsMName =
"fIntFlowDetectorBiasVsM";
3091 for(Int_t ci=0;ci<4;ci++)
3093 fIntFlowDetectorBiasVsM[ci] =
new TH1D(Form(
"%s for %s",intFlowDetectorBiasVsMName.Data(),cumulantFlag[ci].Data()),
3094 Form(
"Quantifying detector bias for %s vs multiplicity",cumulantFlag[ci].
Data()),
3123 TString controlHistogramsFlagsName =
"fControlHistogramsFlags";
3125 fControlHistogramsFlags =
new TProfile(controlHistogramsFlagsName.Data(),
"Flags for Control Histograms",2,0,2);
3139 TString sCorrelationNoRPsVsRefMultName =
"fCorrelationNoRPsVsRefMult";
3150 TString sCorrelationNoPOIsVsRefMultName =
"fCorrelationNoPOIsVsRefMult";
3161 TString sCorrelationNoRPsVsNoPOIsName =
"fCorrelationNoRPsVsNoPOIs";
3172 TString sCorrelation[4] = {
"#LT2#GT",
"#LT4#GT",
"#LT6#GT",
"#LT8#GT"};
3173 TString sMultiplicity =
"";
3176 sMultiplicity =
"# RPs";
3179 sMultiplicity =
"Reference multiplicity (from ESD)";
3182 sMultiplicity =
"# POIs";
3184 for(Int_t ci=0;ci<4;ci++)
3196 TString sCorrelationProduct[1] = {
"#LT2#GT#LT4#GT"};
3197 for(Int_t cpi=0;cpi<1;cpi++)
3211 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}}"};
3212 for(Int_t qvti=0;qvti<4;qvti++)
3239 TString bootstrapFlagsName =
"fBootstrapFlags";
3241 fBootstrapFlags =
new TProfile(bootstrapFlagsName.Data(),
"Flags for bootstrap",3,0,3);
3259 TString correlationFlag[4] = {
"#LT#LT2#GT#GT",
"#LT#LT4#GT#GT",
"#LT#LT6#GT#GT",
"#LT#LT8#GT#GT"};
3260 TString cumulantFlag[4] = {
"QC{2}",
"QC{4}",
"QC{6}",
"QC{8}"};
3264 TString bootstrapCorrelationsName =
"fBootstrapCorrelations";
3268 for(Int_t ci=0;ci<4;ci++)
3278 TString bootstrapCumulantsName =
"fBootstrapCumulants";
3282 for(Int_t co=0;co<4;co++)
3294 TString sMultiplicity =
"";
3297 sMultiplicity =
"# RPs";
3300 sMultiplicity =
"Reference multiplicity (from ESD)";
3303 sMultiplicity =
"# POIs";
3308 TString bootstrapCorrelationsVsMName =
"fBootstrapCorrelationsVsM";
3310 for(Int_t ci=0;ci<4;ci++)
3312 fBootstrapCorrelationsVsM[ci] =
new TProfile2D(Form(
"%s, %s",bootstrapCorrelationsVsMName.Data(),correlationFlag[ci].Data()),
3313 Form(
"Bootstrap Correlations Vs. M, %s",correlationFlag[ci].
Data()),
3324 TString bootstrapCumulantsVsMName =
"fBootstrapCumulantsVsM";
3326 for(Int_t co=0;co<4;co++)
3328 fBootstrapCumulantsVsM[co] =
new TH2D(Form(
"%s, %s",bootstrapCumulantsVsMName.Data(),cumulantFlag[co].Data()),
3329 Form(
"Bootstrap Cumulants Vs. M, %s",cumulantFlag[co].
Data()),
3355 TString mixedHarmonicsFlagsName =
"fMixedHarmonicsFlags";
3357 fMixedHarmonicsFlags =
new TProfile(mixedHarmonicsFlagsName.Data(),
"Flags for Mixed Harmonics",4,0,4);
3373 TString s2pCorrelationsName =
"f2pCorrelations";
3375 f2pCorrelations =
new TProfile(s2pCorrelationsName.Data(),Form(
"2-particle correlations (n = %d)",
fHarmonic),6,0,6,
"s");
3390 TString s3pCorrelationsName =
"f3pCorrelations";
3392 f3pCorrelations =
new TProfile(s3pCorrelationsName.Data(),Form(
"3-particle correlations (n = %d)",
fHarmonic),10,0,10,
"s");
3413 TString s4pCorrelationsName =
"f4pCorrelations";
3415 f4pCorrelations =
new TProfile(s4pCorrelationsName.Data(),Form(
"4-particle correlations (n = %d)",
fHarmonic),45,0,45,
"s");
3474 TString s5pCorrelationsName =
"f5pCorrelations";
3476 f5pCorrelations =
new TProfile(s5pCorrelationsName.Data(),Form(
"5-particle correlations (n = %d)",
fHarmonic),87,0,87,
"s");
3577 TString s6pCorrelationsName =
"f6pCorrelations";
3579 f6pCorrelations =
new TProfile(s6pCorrelationsName.Data(),Form(
"6-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3588 TString s7pCorrelationsName =
"f7pCorrelations";
3590 f7pCorrelations =
new TProfile(s7pCorrelationsName.Data(),Form(
"7-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3599 TString s8pCorrelationsName =
"f8pCorrelations";
3601 f8pCorrelations =
new TProfile(s8pCorrelationsName.Data(),Form(
"8-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3646 TString mixedHarmonicEventWeightsName =
"fMixedHarmonicEventWeights";
3648 TString powerFlag[2] = {
"linear",
"quadratic"};
3649 for(Int_t power=0;power<2;power++)
3651 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.);
3665 }
else if (power == 1)
3680 TString mixedHarmonicProductOfEventWeightsName =
"fMixedHarmonicProductOfEventWeights";
3681 mixedHarmonicProductOfEventWeightsName +=
fAnalysisLabel->Data();
3686 for(Int_t b=1;b<=8;b++)
3694 TString mixedHarmonicProductOfCorrelationsName =
"fMixedHarmonicProductOfCorrelations";
3695 mixedHarmonicProductOfCorrelationsName +=
fAnalysisLabel->Data();