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.),
148 fNewCentralityEBE(0.),
154 fCentralityCL1EBE(0.),
156 fCentralityTRKEBE(0.),
160 fAvMultiplicity(NULL),
161 fIntFlowCorrelationsPro(NULL),
162 fIntFlowSquaredCorrelationsPro(NULL),
163 fIntFlowCorrelationsAllPro(NULL),
164 fIntFlowExtraCorrelationsPro(NULL),
165 fIntFlowProductOfCorrelationsPro(NULL),
166 fIntFlowProductOfCorrectionTermsForNUAPro(NULL),
167 fIntFlowCorrelationsHist(NULL),
168 fIntFlowCorrelationsAllHist(NULL),
169 fIntFlowCovariances(NULL),
170 fIntFlowSumOfProductOfEventWeights(NULL),
171 fIntFlowCovariancesNUA(NULL),
172 fIntFlowSumOfProductOfEventWeightsNUA(NULL),
173 fIntFlowQcumulants(NULL),
174 fIntFlowQcumulantsRebinnedInM(NULL),
175 fIntFlowQcumulantsErrorSquaredRatio(NULL),
177 fIntFlowRebinnedInM(NULL),
178 fIntFlowDetectorBias(NULL),
181 fDiffFlowProfiles(NULL),
182 fDiffFlowResults(NULL),
184 fDiffFlowFlags(NULL),
185 fCalculateDiffFlow(kTRUE),
186 fCalculate2DDiffFlow(kFALSE),
187 fCalculateDiffFlowVsEta(kTRUE),
189 fOtherDiffCorrelatorsList(NULL),
191 fDistributionsList(NULL),
192 fDistributionsFlags(NULL),
193 fStoreDistributions(kFALSE),
194 fnBinsForCorrelations(10000),
196 fNestedLoopsList(NULL),
197 fEvaluateIntFlowNestedLoops(kFALSE),
198 fEvaluateDiffFlowNestedLoops(kFALSE),
199 fMaxAllowedMultiplicity(10),
200 fEvaluateNestedLoops(NULL),
201 fIntFlowDirectCorrelations(NULL),
202 fIntFlowExtraDirectCorrelations(NULL),
203 fCrossCheckInPtBinNo(10),
204 fCrossCheckInEtaBinNo(20),
205 fNoOfParticlesInBin(NULL),
206 fMixedHarmonicsNestedLoops(NULL),
208 fMixedHarmonicsList(NULL),
209 fMixedHarmonicsProfiles(NULL),
210 fMixedHarmonicsResults(NULL),
211 fMixedHarmonicsErrorPropagation(NULL),
212 fMixedHarmonicsFlags(NULL),
213 fCalculateMixedHarmonics(kFALSE),
214 fCalculateMixedHarmonicsVsM(kFALSE),
215 f2pCorrelations(NULL),
216 f3pCorrelations(NULL),
217 f4pCorrelations(NULL),
218 f5pCorrelations(NULL),
219 f6pCorrelations(NULL),
220 f7pCorrelations(NULL),
221 f8pCorrelations(NULL),
229 fMixedHarmonicProductOfEventWeights(NULL),
230 fMixedHarmonicProductOfCorrelations(NULL),
232 fControlHistogramsList(NULL),
233 fControlHistogramsFlags(NULL),
234 fStoreControlHistograms(kFALSE),
235 fCorrelationNoRPsVsRefMult(NULL),
236 fCorrelationNoPOIsVsRefMult(NULL),
237 fCorrelationNoRPsVsNoPOIs(NULL),
239 fBootstrapList(NULL),
240 fBootstrapProfilesList(NULL),
241 fBootstrapResultsList(NULL),
242 fBootstrapFlags(NULL),
243 fUseBootstrap(kFALSE),
244 fUseBootstrapVsM(kFALSE),
247 fBootstrapCorrelations(NULL),
248 fBootstrapCumulants(NULL),
253 fCalculateCRC(kTRUE),
254 fCalculateCRCPt(kFALSE),
255 fCalculateCME(kFALSE),
256 fCalculateCRC2(kFALSE),
257 fCalculateCRCVZ(kFALSE),
258 fCalculateCRCZDC(kFALSE),
259 fCalculateFlowQC(kFALSE),
260 fCalculateFlowZDC(kFALSE),
261 fCalculateFlowVZ(kFALSE),
262 fCalculateEbEFlow(kFALSE),
265 fRecenterZDC(kFALSE),
267 fUseCRCRecenter(kFALSE),
277 fCorrWeightTPC(kUnit),
278 fCorrWeightVZ(kUnit),
279 fCorrWeightZDC(kUnit),
282 fCRCCenBinWidth(CenWidth),
283 fCRCIntRbRList(NULL),
288 fCRCQVecWeightsList(NULL),
289 fCRCZDCCalibList(NULL),
294 fCRCZDCRbRList(NULL),
302 fFlowSPZDCList(NULL),
303 fFlowSPZDCRbRList(NULL),
306 fFlowQCDeltaEta(0.4),
312 fQAZDCCutsFlag(kTRUE),
319 fHistList =
new TList();
320 fHistList->SetName(
"cobjQC");
321 fHistList->SetOwner(kTRUE);
324 fTempList =
new TList();
325 fTempList->SetName(
"temp");
326 fTempList->SetOwner(kTRUE);
329 fMultiplicityWeight =
new TString(
"combinations");
332 fAnalysisLabel =
new TString();
335 this->InitializeArraysForIntFlow();
336 this->InitializeArraysForDiffFlow();
337 this->InitializeArraysForDistributions();
338 this->InitializeArraysForVarious();
339 this->InitializeArraysForParticleWeights();
340 this->InitializeArraysForNestedLoops();
341 this->InitializeArraysForMixedHarmonics();
342 this->InitializeArraysForControlHistograms();
343 this->InitializeArraysForBootstrap();
345 fRunList = TArrayI();
348 this->InitializeCostantsForCRC();
349 this->InitializeArraysForCRC();
350 this->InitializeArraysForCRCVZ();
351 this->InitializeArraysForCRCZDC();
352 this->InitializeArraysForCRC2();
353 this->InitializeArraysForQVec();
354 this->InitializeArraysForCRCPt();
355 this->InitializeArraysForCME();
356 this->InitializeArraysForFlowEbE();
357 this->InitializeArraysForFlowQC();
358 this->InitializeArraysForFlowSPZDC();
359 this->InitializeArraysForFlowSPVZ();
360 this->InitializeArraysForEbEFlow();
397 Bool_t oldHistAddStatus = TH1::AddDirectoryStatus();
398 TH1::AddDirectory(kFALSE);
449 TH1::AddDirectory(oldHistAddStatus);
486 Double_t wTrack = 1.;
487 Double_t wPhiEta = 1.;
488 Int_t nCounterNoRPs = 0;
510 Double_t ptEta[2] = {0.,0.};
523 if(fRunBin<0 || fRunBin>=
fCRCnRun) {
return;}
525 if(fCenBin<0 || fCenBin>=
fCRCnCen) {
return;}
532 for(Int_t k=0; k<2; k++) {
541 Double_t PhiEtaAv = 0.;
542 for(Int_t k=0; k<2; k++) {
545 for(Int_t i=1; i<=nBinsEta; i++) {
546 for (Int_t j=1; j<=nBinsPhi; j++) {
550 PhiEtaAv /= 1.*nBinsPhi*nBinsEta;
551 for(Int_t i=1; i<=nBinsEta; i++) {
552 for (Int_t j=1; j<=nBinsPhi; j++) {
557 }
else cout <<
" WARNING: fPhiEtaWeights not found !!! " << endl;
614 for(Int_t i=0;i<nPrim;i++) {
624 dPhi = aftsTrack->
Phi();
625 dPt = aftsTrack->
Pt();
626 dEta = aftsTrack->
Eta();
653 for(Int_t m=0;m<12;m++)
655 for(Int_t k=0;k<9;k++)
657 (*fReQ)(m,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1)*n*dPhi);
658 (*fImQ)(m,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1)*n*dPhi);
662 for(Int_t p=0;p<8;p++)
664 for(Int_t k=0;k<9;k++)
666 (*fSpk)(p,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k);
675 for(Int_t k=0;k<9;k++)
677 for(Int_t m=0;m<4;m++)
683 fReRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
684 fImRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
687 fs1dEBE[0][pe][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
693 fReRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
694 fImRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
697 fs2dEBE[0][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
706 for(Int_t k=0;k<9;k++)
708 for(Int_t m=0;m<4;m++)
714 fReRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
715 fImRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
718 fs1dEBE[2][pe][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
724 fReRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
725 fImRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
728 fs2dEBE[2][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
741 dPhi = aftsTrack->
Phi();
742 dPt = aftsTrack->
Pt();
743 dEta = aftsTrack->
Eta();
744 dCharge = aftsTrack->
Charge();
745 if (dCharge > 0.) cw = 0;
746 else if (dCharge < 0.) cw = 1;
774 if(ptbin==-1)
continue;
781 for(Int_t k=0;k<9;k++)
783 for(Int_t m=0;m<4;m++)
789 fReRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
790 fImRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
795 fReRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
796 fImRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
804 fCRCQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
805 fCRCQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
806 fCRCMult[cw][h]->Fill(dEta,wPhiEta);
808 fCRC2QRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
809 fCRC2QIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
810 fCRC2Mul[cw][h]->Fill(dEta,wPhiEta);
812 fCRCZDCQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
813 fCRCZDCQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
817 fCRC2QRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
818 fCRC2QIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
823 fCRCZDCQRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
824 fCRCZDCQIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
827 fCRCZDCQRe[3][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
828 fCRCZDCQIm[3][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
833 fCMEQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
834 fCMEQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
835 fCMEMult[cw][h]->Fill(dEta,wPhiEta);
836 fCMEQRe[2+cw][h]->Fill(dEta,pow(wPhiEta,2.)*TMath::Cos((h+1.)*dPhi));
837 fCMEQIm[2+cw][h]->Fill(dEta,pow(wPhiEta,2.)*TMath::Sin((h+1.)*dPhi));
838 fCMEMult[2+cw][h]->Fill(dEta,pow(wPhiEta,2.));
846 fPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
847 fPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
850 Int_t keta = (dEta<0.?0:1);
851 fPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
852 fPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
859 fEtaDiffQRe[h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
860 fEtaDiffQIm[h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
891 printf(
"\n WARNING (QC): No particle (i.e. aftsTrack is a NULL pointer in AFAWQC::Make())!!!!\n\n");
899 for(Int_t p=0;p<8;p++)
901 for(Int_t k=0;k<9;k++)
903 (*fSpk)(p,k)=pow((*
fSpk)(p,k),p+1);
1322 cout<<
"Skipping the event because multiplicity is "<<nPrim<<
". Too high to evaluate nested loops!"<<endl;
1326 cout<<
"Skipping the event because multiplicity is "<<nPrim<<
"."<<endl;
1418 Double_t dMult = (*fSpk)(0,0);
1421 Double_t dReQ1n = (*fReQ)(0,0);
1422 Double_t dReQ2n = (*fReQ)(1,0);
1425 Double_t dImQ1n = (*fImQ)(0,0);
1426 Double_t dImQ2n = (*fImQ)(1,0);
1431 Double_t dMultiplicityBin = 0.;
1458 Double_t cosP1n = 0.;
1462 cosP1n = dReQ1n/dMult;
1475 Double_t cosP1nP1n = 0.;
1476 Double_t cosP2nM1n = 0.;
1480 cosP1nP1n = (pow(dReQ1n,2)-pow(dImQ1n,2)-dReQ2n)/(dMult*(dMult-1));
1481 cosP2nM1n = (dReQ2n*dReQ1n+dImQ2n*dImQ1n-dReQ1n)/(dMult*(dMult-1));
1501 Double_t cosP1nM1nM1n = 0.;
1505 cosP1nM1nM1n = (dReQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2))-dReQ1n*dReQ2n-dImQ1n*dImQ2n-2.*(dMult-1)*dReQ1n)
1506 / (dMult*(dMult-1)*(dMult-2));
1527 Double_t dMult = (*fSpk)(0,0);
1530 Double_t dReQ1n = (*fReQ)(0,0);
1531 Double_t dReQ2n = (*fReQ)(1,0);
1534 Double_t dImQ1n = (*fImQ)(0,0);
1535 Double_t dImQ2n = (*fImQ)(1,0);
1540 Double_t dMultiplicityBin = 0.;
1567 Double_t sinP1n = 0.;
1571 sinP1n = dImQ1n/dMult;
1584 Double_t sinP1nP1n = 0.;
1585 Double_t sinP2nM1n = 0.;
1588 sinP1nP1n = (2.*dReQ1n*dImQ1n-dImQ2n)/(dMult*(dMult-1));
1589 sinP2nM1n = (dImQ2n*dReQ1n-dReQ2n*dImQ1n-dImQ1n)/(dMult*(dMult-1));
1609 Double_t sinP1nM1nM1n = 0.;
1613 sinP1nM1nM1n = (-dImQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2))+dReQ1n*dImQ2n-dImQ1n*dReQ2n+2.*(dMult-1)*dImQ1n)
1614 / (dMult*(dMult-1)*(dMult-2));
1644 if(outputListHistos)
1649 printf(
"\n WARNING (QC): fHistList is NULL in AFAWQC::GOH() !!!!\n\n");
1676 printf(
"\n WARNING (QC): outputListHistos is NULL in AFAWQC::GOH() !!!!\n\n");
1688 Int_t nBinsPt = profilePtEta->GetNbinsX();
1689 Double_t dPtMin = (profilePtEta->GetXaxis())->GetXmin();
1690 Double_t dPtMax = (profilePtEta->GetXaxis())->GetXmax();
1692 Int_t nBinsEta = profilePtEta->GetNbinsY();
1694 TProfile *profilePt =
new TProfile(
"",
"",nBinsPt,dPtMin,dPtMax);
1696 for(Int_t p=1;p<=nBinsPt;p++)
1698 Double_t contentPt = 0.;
1699 Double_t entryPt = 0.;
1700 Double_t spreadPt = 0.;
1704 for(Int_t e=1;e<=nBinsEta;e++)
1706 contentPt += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
1707 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1708 entryPt += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1710 sum1 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
1711 * (pow(profilePtEta->GetBinError(profilePtEta->GetBin(p,e)),2.)
1712 + pow(profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)),2.));
1713 sum2 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1714 sum3 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
1715 * (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)));
1717 if(sum2>0. && sum1/sum2-pow(sum3/sum2,2.) > 0.)
1719 spreadPt = pow(sum1/sum2-pow(sum3/sum2,2.),0.5);
1721 profilePt->SetBinContent(p,contentPt);
1722 profilePt->SetBinEntries(p,entryPt);
1724 profilePt->SetBinError(p,spreadPt);
1741 Int_t nBinsEta = profilePtEta->GetNbinsY();
1742 Double_t dEtaMin = (profilePtEta->GetYaxis())->GetXmin();
1743 Double_t dEtaMax = (profilePtEta->GetYaxis())->GetXmax();
1745 Int_t nBinsPt = profilePtEta->GetNbinsX();
1747 TProfile *profileEta =
new TProfile(
"",
"",nBinsEta,dEtaMin,dEtaMax);
1749 for(Int_t e=1;e<=nBinsEta;e++)
1751 Double_t contentEta = 0.;
1752 Double_t entryEta = 0.;
1753 for(Int_t p=1;p<=nBinsPt;p++)
1755 contentEta += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
1756 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1757 entryEta += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1759 profileEta->SetBinContent(e,contentEta);
1760 profileEta->SetBinEntries(e,entryEta);
1775 Double_t dVn[4] = {0.};
1776 Double_t dVnErr[4] = {0.};
1780 for(Int_t b=0;b<4;b++)
1791 }
else if(type ==
"RP")
1801 }
else if(type ==
"POI")
1813 for(Int_t b=0;b<4;b++)
1820 TString
title =
" flow estimates from Q-cumulants";
1821 TString subtitle =
" (";
1822 TString subtitle2 =
" (rebinned in M)";
1824 if(type !=
"RF, rebinned in M")
1828 subtitle.Append(type);
1829 subtitle.Append(
", without weights)");
1832 subtitle.Append(type);
1833 subtitle.Append(
", with weights)");
1839 subtitle.Append(
"RF");
1840 subtitle.Append(
", without weights)");
1843 subtitle.Append(
"RF");
1844 subtitle.Append(
", with weights)");
1849 cout<<
"*************************************"<<endl;
1850 cout<<
"*************************************"<<endl;
1851 cout<<title.Data()<<endl;
1852 cout<<subtitle.Data()<<endl;
1853 if(type ==
"RF, rebinned in M"){cout<<subtitle2.Data()<<endl;}
1856 for(Int_t i=0;i<4;i++)
1858 cout<<
" v_"<<n<<
"{"<<2*(i+1)<<
"} = "<<dVn[i]<<
" +/- "<<dVnErr[i]<<endl;
1866 cout<<
" detector bias (corrected for): "<<endl;
1869 cout<<
" detector bias (not corrected for):"<<endl;
1875 if(type ==
"RF" || type ==
"RF, rebinned in M")
1879 else if (type ==
"RP")
1883 else if (type ==
"POI")
1888 cout<<
"*************************************"<<endl;
1889 cout<<
"*************************************"<<endl;
1899 TFile *output =
new TFile(outputFileName.Data(),
"RECREATE");
1915 outputFileName->Write(outputFileName->GetName(), TObject::kSingleKey);
1928 TString commonHistsName =
"AliFlowCommonHistQC";
1936 TString commonHists2ndOrderName =
"AliFlowCommonHist2ndOrderQC";
1941 TString commonHists4thOrderName =
"AliFlowCommonHist4thOrderQC";
1946 TString commonHists6thOrderName =
"AliFlowCommonHist6thOrderQC";
1951 TString commonHists8thOrderName =
"AliFlowCommonHist8thOrderQC";
1959 TString commonHistResults2ndOrderName =
"AliFlowCommonHistResults2ndOrderQC";
1964 TString commonHistResults4thOrderName =
"AliFlowCommonHistResults4thOrderQC";
1969 TString commonHistResults6thOrderName =
"AliFlowCommonHistResults6thOrderQC";
1974 TString commonHistResults8thOrderName =
"AliFlowCommonHistResults8thOrderQC";
1989 printf(
"\n WARNING (QC): fWeightsList is NULL in AFAWQC::BAFWH() !!!! \n\n");
1993 TString fUseParticleWeightsName =
"fUseParticleWeightsQC";
1995 fUseParticleWeights =
new TProfile(fUseParticleWeightsName.Data(),
"0 = particle weight not used, 1 = particle weight used ",5,0,5);
2009 for(Int_t c=0; c<2; c++) {
2011 Form(
"fPhiEtaWeights[%d]",c),32,0.,TMath::TwoPi(),32,-0.8,0.8);
2219 TF1 *CenFit =
new TF1(
"CenFit",
"pol0", 0., 100.);
2221 Double_t CenAv = CenFit->GetParameter(0);
2223 Double_t SemiCenAv = CenFit->GetParameter(0);
2248 TString sinCosFlag[2] = {
"sin",
"cos"};
2249 TString powerFlag[2] = {
"linear",
"quadratic"};
2252 TString intFlowFlagsName =
"fIntFlowFlags";
2254 fIntFlowFlags =
new TProfile(intFlowFlagsName.Data(),
"Flags for Integrated Flow",20,0.,20.);
2260 fIntFlowFlags->GetXaxis()->SetBinLabel(1,
"Particle Weights");
2262 fIntFlowFlags->GetXaxis()->SetBinLabel(3,
"Corrected for NUA?");
2263 fIntFlowFlags->GetXaxis()->SetBinLabel(4,
"Print RF results");
2264 fIntFlowFlags->GetXaxis()->SetBinLabel(5,
"Print RP results");
2265 fIntFlowFlags->GetXaxis()->SetBinLabel(6,
"Print POI results");
2266 fIntFlowFlags->GetXaxis()->SetBinLabel(7,
"Print RF (rebinned in M) results");
2267 fIntFlowFlags->GetXaxis()->SetBinLabel(8,
"Corrected for NUA vs M?");
2268 fIntFlowFlags->GetXaxis()->SetBinLabel(9,
"Propagate errors to v_{n} from correlations?");
2269 fIntFlowFlags->GetXaxis()->SetBinLabel(10,
"Calculate cumulants vs M");
2270 fIntFlowFlags->GetXaxis()->SetBinLabel(11,
"fMinimumBiasReferenceFlow");
2271 fIntFlowFlags->GetXaxis()->SetBinLabel(12,
"fForgetAboutCovariances");
2273 fIntFlowFlags->GetXaxis()->SetBinLabel(14,
"fFillMultipleControlHistograms");
2274 fIntFlowFlags->GetXaxis()->SetBinLabel(15,
"Calculate all correlations vs M");
2275 fIntFlowFlags->GetXaxis()->SetBinLabel(16,
"fMultiplicityIs");
2277 fIntFlowFlags->GetXaxis()->SetBinLabel(18,
"fUse2DHistograms");
2278 fIntFlowFlags->GetXaxis()->SetBinLabel(19,
"fFillProfilesVsMUsingWeights");
2279 fIntFlowFlags->GetXaxis()->SetBinLabel(20,
"fUseQvectorTerms");
2284 fReQ =
new TMatrixD(12,9);
2285 fImQ =
new TMatrixD(12,9);
2286 fSpk =
new TMatrixD(8,9);
2288 TString intFlowCorrelationsEBEName =
"fIntFlowCorrelationsEBE";
2290 fIntFlowCorrelationsEBE =
new TH1D(intFlowCorrelationsEBEName.Data(),intFlowCorrelationsEBEName.Data(),4,0,4);
2292 TString intFlowEventWeightsForCorrelationsEBEName =
"fIntFlowEventWeightsForCorrelationsEBE";
2293 intFlowEventWeightsForCorrelationsEBEName +=
fAnalysisLabel->Data();
2296 TString intFlowCorrelationsAllEBEName =
"fIntFlowCorrelationsAllEBE";
2301 TString fIntFlowCorrectionTermsForNUAEBEName =
"fIntFlowCorrectionTermsForNUAEBE";
2303 for(Int_t sc=0;sc<2;sc++)
2305 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);
2308 TString fIntFlowEventWeightForCorrectionTermsForNUAEBEName =
"fIntFlowEventWeightForCorrectionTermsForNUAEBE";
2309 fIntFlowEventWeightForCorrectionTermsForNUAEBEName +=
fAnalysisLabel->Data();
2310 for(Int_t sc=0;sc<2;sc++)
2312 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);
2316 TString avMultiplicityName =
"fAvMultiplicity";
2318 fAvMultiplicity =
new TProfile(avMultiplicityName.Data(),
"Average multiplicities of reference particles (RPs)",9,0,9);
2335 TString correlationFlag[4] = {
"#LT#LT2#GT#GT",
"#LT#LT4#GT#GT",
"#LT#LT6#GT#GT",
"#LT#LT8#GT#GT"};
2336 TString intFlowCorrelationsProName =
"fIntFlowCorrelationsPro";
2338 fIntFlowCorrelationsPro =
new TProfile(intFlowCorrelationsProName.Data(),
"Average correlations for all events",4,0,4,
"s");
2344 for(Int_t b=0;b<4;b++)
2350 TString squaredCorrelationFlag[4] = {
"#LT#LT2#GT^{2}#GT",
"#LT#LT4#GT^{2}#GT",
"#LT#LT6#GT^{2}#GT",
"#LT#LT8#GT^{2}#GT"};
2351 TString intFlowSquaredCorrelationsProName =
"fIntFlowSquaredCorrelationsPro";
2359 for(Int_t b=0;b<4;b++)
2366 for(Int_t ci=0;ci<4;ci++)
2369 TString intFlowCorrelationsVsMProName =
"fIntFlowCorrelationsVsMPro";
2371 fIntFlowCorrelationsVsMPro[ci] =
new TProfile(Form(
"%s, %s",intFlowCorrelationsVsMProName.Data(),correlationFlag[ci].Data()),
2372 Form(
"%s vs multiplicity",correlationFlag[ci].
Data()),
2388 TString intFlowSquaredCorrelationsVsMProName =
"fIntFlowSquaredCorrelationsVsMPro";
2391 Form(
"%s vs multiplicity",squaredCorrelationFlag[ci].
Data()),
2409 TString intFlowCorrelationsAllProName =
"fIntFlowCorrelationsAllPro";
2411 fIntFlowCorrelationsAllPro =
new TProfile(intFlowCorrelationsAllProName.Data(),
"Average all correlations for all events",64,0,64);
2517 fIntFlowCorrelationsAllVsMPro[30] =
new TProfile(
"eight1n1n1n1n1n1n1n1n",
"#LT#LT8#GT#GT_{n,n,n,n|n,n,n,n}",
fnBinsMult,
fMinMult,
fMaxMult);
2551 for(Int_t n=0;n<63;n++)
2573 TString intFlowExtraCorrelationsProName =
"fIntFlowExtraCorrelationsPro";
2575 fIntFlowExtraCorrelationsPro =
new TProfile(intFlowExtraCorrelationsProName.Data(),
"Average extra correlations for all events",100,0,100,
"s");
2586 TString productFlag[6] = {
"#LT#LT2#GT#LT4#GT#GT",
"#LT#LT2#GT#LT6#GT#GT",
"#LT#LT2#GT#LT8#GT#GT",
2587 "#LT#LT4#GT#LT6#GT#GT",
"#LT#LT4#GT#LT8#GT#GT",
"#LT#LT6#GT#LT8#GT#GT"};
2588 TString intFlowProductOfCorrelationsProName =
"fIntFlowProductOfCorrelationsPro";
2595 for(Int_t b=0;b<6;b++)
2604 TString intFlowProductOfCorrelationsVsMProName =
"fIntFlowProductOfCorrelationsVsMPro";
2605 intFlowProductOfCorrelationsVsMProName +=
fAnalysisLabel->Data();
2606 for(Int_t
pi=0;
pi<6;
pi++)
2609 Form(
"%s versus multiplicity",productFlag[
pi].
Data()),
2625 TString intFlowProductOfCorrectionTermsForNUAProName =
"fIntFlowProductOfCorrectionTermsForNUAPro";
2626 intFlowProductOfCorrectionTermsForNUAProName +=
fAnalysisLabel->Data();
2661 for(Int_t sc=0;sc<2;sc++)
2663 TString intFlowCorrectionTermsForNUAProName =
"fIntFlowCorrectionTermsForNUAPro";
2665 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");
2678 TString correctionTermFlag[4] = {
"(n(phi1))",
"(n(phi1+phi2))",
"(n(phi1-phi2-phi3))",
"(n(2phi1-phi2))"};
2679 for(Int_t ci=0;ci<4;ci++)
2681 TString intFlowCorrectionTermsForNUAVsMProName =
"fIntFlowCorrectionTermsForNUAVsMPro";
2682 intFlowCorrectionTermsForNUAVsMProName +=
fAnalysisLabel->Data();
2683 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");
2691 TString intFlowCorrelationsHistName =
"fIntFlowCorrelationsHist";
2693 fIntFlowCorrelationsHist =
new TH1D(intFlowCorrelationsHistName.Data(),
"Average correlations for all events",4,0,4);
2706 for(Int_t ci=0;ci<4;ci++)
2708 TString intFlowCorrelationsVsMHistName =
"fIntFlowCorrelationsVsMHist";
2711 Form(
"%s vs multiplicity",correlationFlag[ci].
Data()),
2728 TString intFlowCorrelationsAllHistName =
"fIntFlowCorrelationsAllHist";
2769 for(Int_t sc=0;sc<2;sc++)
2771 TString intFlowCorrectionTermsForNUAHistName =
"fIntFlowCorrectionTermsForNUAHist";
2773 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);
2785 TString intFlowCovariancesName =
"fIntFlowCovariances";
2787 fIntFlowCovariances =
new TH1D(intFlowCovariancesName.Data(),
"Covariances (multiplied with weight dependent prefactor)",6,0,6);
2798 TString intFlowSumOfEventWeightsName =
"fIntFlowSumOfEventWeights";
2800 for(Int_t power=0;power<2;power++)
2802 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);
2811 }
else if (power == 1)
2821 TString intFlowSumOfProductOfEventWeightsName =
"fIntFlowSumOfProductOfEventWeights";
2837 TString intFlowCovariancesVsMName =
"fIntFlowCovariancesVsM";
2839 TString covarianceFlag[6] = {
"Cov(<2>,<4>)",
"Cov(<2>,<6>)",
"Cov(<2>,<8>)",
"Cov(<4>,<6>)",
"Cov(<4>,<8>)",
"Cov(<6>,<8>)"};
2840 for(Int_t ci=0;ci<6;ci++)
2842 fIntFlowCovariancesVsM[ci] =
new TH1D(Form(
"%s, %s",intFlowCovariancesVsMName.Data(),covarianceFlag[ci].Data()),
2843 Form(
"%s vs multiplicity",covarianceFlag[ci].
Data()),
2863 TString intFlowSumOfEventWeightsVsMName =
"fIntFlowSumOfEventWeightsVsM";
2865 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>}"},
2866 {
"#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}"}};
2867 for(Int_t si=0;si<4;si++)
2869 for(Int_t power=0;power<2;power++)
2872 Form(
"%s vs multiplicity",sumFlag[power][si].
Data()),
2894 TString intFlowSumOfProductOfEventWeightsVsMName =
"fIntFlowSumOfProductOfEventWeightsVsM";
2895 intFlowSumOfProductOfEventWeightsVsMName +=
fAnalysisLabel->Data();
2896 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>}",
2897 "#sum_{i=1}^{N} w_{<4>} w_{<6>}",
"#sum_{i=1}^{N} w_{<4>} w_{<8>}",
"#sum_{i=1}^{N} w_{<6>} w_{<8>}"};
2898 for(Int_t
pi=0;
pi<6;
pi++)
2901 Form(
"%s versus multiplicity",sopowFlag[
pi].
Data()),
2918 TString intFlowCovariancesNUAName =
"fIntFlowCovariancesNUA";
2920 fIntFlowCovariancesNUA =
new TH1D(intFlowCovariancesNUAName.Data(),
"Covariances for NUA (multiplied with weight dependent prefactor)",27,0,27);
2939 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(16,
"Cov(<cos(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2940 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(17,
"Cov(<cos(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2943 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(20,
"Cov(<sin(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2944 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(21,
"Cov(<sin(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2945 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(22,
"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}+#phi_{2})>)");
2946 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(23,
"Cov(<cos(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2947 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(24,
"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2948 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(25,
"Cov(<sin(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2949 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(26,
"Cov(<sin(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2950 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(27,
"Cov(<cos(#phi_{1}-#phi_{2}-#phi_{3}>,<sin(#phi_{1}-#phi_{2}-#phi_{3}>)");
2953 TString intFlowSumOfEventWeightsNUAName =
"fIntFlowSumOfEventWeightsNUA";
2955 for(Int_t sc=0;sc<2;sc++)
2957 for(Int_t power=0;power<2;power++)
2959 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);
2968 }
else if(power == 1)
2972 (
fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(3,Form(
"#sum_{i=1}^{N} w_{<%s(#phi_{1}-#phi_{2}-#phi_{3})>}^{2}",sinCosFlag[sc].
Data()));
2979 TString intFlowSumOfProductOfEventWeightsNUAName =
"fIntFlowSumOfProductOfEventWeightsNUA";
2980 intFlowSumOfProductOfEventWeightsNUAName +=
fAnalysisLabel->Data();
3013 TString cumulantFlag[4] = {
"QC{2}",
"QC{4}",
"QC{6}",
"QC{8}"};
3014 TString intFlowQcumulantsName =
"fIntFlowQcumulants";
3016 fIntFlowQcumulants =
new TH1D(intFlowQcumulantsName.Data(),
"Reference Q-cumulants",4,0,4);
3019 fIntFlowQcumulants->SetTitle(
"Reference Q-cumulants (error from non-isotropic terms also propagated)");
3023 for(Int_t b=0;b<4;b++)
3031 TString intFlowQcumulantsRebinnedInMName =
"fIntFlowQcumulantsRebinnedInM";
3036 for(Int_t b=0;b<4;b++)
3043 TString intFlowQcumulantsErrorSquaredRatioName =
"fIntFlowQcumulantsErrorSquaredRatio";
3044 intFlowQcumulantsErrorSquaredRatioName +=
fAnalysisLabel->Data();
3045 fIntFlowQcumulantsErrorSquaredRatio =
new TH1D(intFlowQcumulantsErrorSquaredRatioName.Data(),
"Error squared of reference Q-cumulants: #frac{with NUA terms}{without NUA terms}",4,0,4);
3048 for(Int_t b=0;b<4;b++)
3056 TString intFlowQcumulantsVsMName =
"fIntFlowQcumulantsVsM";
3058 for(Int_t co=0;co<4;co++)
3060 fIntFlowQcumulantsVsM[co] =
new TH1D(Form(
"%s, %s",intFlowQcumulantsVsMName.Data(),cumulantFlag[co].Data()),
3061 Form(
"%s vs multiplicity",cumulantFlag[co].
Data()),
3078 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)};
3079 TString intFlowName =
"fIntFlow";
3082 fIntFlow =
new TH1D(intFlowName.Data(),
"Reference flow estimates from Q-cumulants",4,0,4);
3085 for(Int_t b=0;b<4;b++)
3087 (
fIntFlow->GetXaxis())->SetBinLabel(b+1,flowFlag[b].
Data());
3093 TString intFlowRebinnedInMName =
"fIntFlowRebinnedInM";
3095 fIntFlowRebinnedInM =
new TH1D(intFlowRebinnedInMName.Data(),
"Reference flow estimates from Q-cumulants (rebinned in M)",4,0,4);
3098 for(Int_t b=0;b<4;b++)
3107 TString intFlowVsMName =
"fIntFlowVsM";
3109 for(Int_t co=0;co<4;co++)
3111 fIntFlowVsM[co] =
new TH1D(Form(
"%s, %s",intFlowVsMName.Data(),flowFlag[co].Data()),
3112 Form(
"%s vs multiplicity",flowFlag[co].
Data()),
3119 fIntFlowVsM[co]->GetXaxis()->SetTitle(
"Reference multiplicity (from ESD)");
3129 TString intFlowDetectorBiasName =
"fIntFlowDetectorBias";
3131 fIntFlowDetectorBias =
new TH1D(intFlowDetectorBiasName.Data(),
"Quantifying detector bias",4,0,4);
3134 for(Int_t ci=0;ci<4;ci++)
3136 (
fIntFlowDetectorBias->GetXaxis())->SetBinLabel(ci+1,Form(
"#frac{corrected}{measured} %s",cumulantFlag[ci].
Data()));
3142 TString intFlowDetectorBiasVsMName =
"fIntFlowDetectorBiasVsM";
3144 for(Int_t ci=0;ci<4;ci++)
3146 fIntFlowDetectorBiasVsM[ci] =
new TH1D(Form(
"%s for %s",intFlowDetectorBiasVsMName.Data(),cumulantFlag[ci].Data()),
3147 Form(
"Quantifying detector bias for %s vs multiplicity",cumulantFlag[ci].
Data()),
3176 TString controlHistogramsFlagsName =
"fControlHistogramsFlags";
3178 fControlHistogramsFlags =
new TProfile(controlHistogramsFlagsName.Data(),
"Flags for Control Histograms",2,0,2);
3192 TString sCorrelationNoRPsVsRefMultName =
"fCorrelationNoRPsVsRefMult";
3203 TString sCorrelationNoPOIsVsRefMultName =
"fCorrelationNoPOIsVsRefMult";
3214 TString sCorrelationNoRPsVsNoPOIsName =
"fCorrelationNoRPsVsNoPOIs";
3225 TString sCorrelation[4] = {
"#LT2#GT",
"#LT4#GT",
"#LT6#GT",
"#LT8#GT"};
3226 TString sMultiplicity =
"";
3229 sMultiplicity =
"# RPs";
3232 sMultiplicity =
"Reference multiplicity (from ESD)";
3235 sMultiplicity =
"# POIs";
3237 for(Int_t ci=0;ci<4;ci++)
3249 TString sCorrelationProduct[1] = {
"#LT2#GT#LT4#GT"};
3250 for(Int_t cpi=0;cpi<1;cpi++)
3264 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}}"};
3265 for(Int_t qvti=0;qvti<4;qvti++)
3292 TString bootstrapFlagsName =
"fBootstrapFlags";
3294 fBootstrapFlags =
new TProfile(bootstrapFlagsName.Data(),
"Flags for bootstrap",3,0,3);
3312 TString correlationFlag[4] = {
"#LT#LT2#GT#GT",
"#LT#LT4#GT#GT",
"#LT#LT6#GT#GT",
"#LT#LT8#GT#GT"};
3313 TString cumulantFlag[4] = {
"QC{2}",
"QC{4}",
"QC{6}",
"QC{8}"};
3317 TString bootstrapCorrelationsName =
"fBootstrapCorrelations";
3321 for(Int_t ci=0;ci<4;ci++)
3331 TString bootstrapCumulantsName =
"fBootstrapCumulants";
3335 for(Int_t co=0;co<4;co++)
3347 TString sMultiplicity =
"";
3350 sMultiplicity =
"# RPs";
3353 sMultiplicity =
"Reference multiplicity (from ESD)";
3356 sMultiplicity =
"# POIs";
3361 TString bootstrapCorrelationsVsMName =
"fBootstrapCorrelationsVsM";
3363 for(Int_t ci=0;ci<4;ci++)
3365 fBootstrapCorrelationsVsM[ci] =
new TProfile2D(Form(
"%s, %s",bootstrapCorrelationsVsMName.Data(),correlationFlag[ci].Data()),
3366 Form(
"Bootstrap Correlations Vs. M, %s",correlationFlag[ci].
Data()),
3377 TString bootstrapCumulantsVsMName =
"fBootstrapCumulantsVsM";
3379 for(Int_t co=0;co<4;co++)
3381 fBootstrapCumulantsVsM[co] =
new TH2D(Form(
"%s, %s",bootstrapCumulantsVsMName.Data(),cumulantFlag[co].Data()),
3382 Form(
"Bootstrap Cumulants Vs. M, %s",cumulantFlag[co].
Data()),
3408 TString mixedHarmonicsFlagsName =
"fMixedHarmonicsFlags";
3410 fMixedHarmonicsFlags =
new TProfile(mixedHarmonicsFlagsName.Data(),
"Flags for Mixed Harmonics",4,0,4);
3426 TString s2pCorrelationsName =
"f2pCorrelations";
3428 f2pCorrelations =
new TProfile(s2pCorrelationsName.Data(),Form(
"2-particle correlations (n = %d)",
fHarmonic),6,0,6,
"s");
3443 TString s3pCorrelationsName =
"f3pCorrelations";
3445 f3pCorrelations =
new TProfile(s3pCorrelationsName.Data(),Form(
"3-particle correlations (n = %d)",
fHarmonic),10,0,10,
"s");
3466 TString s4pCorrelationsName =
"f4pCorrelations";
3468 f4pCorrelations =
new TProfile(s4pCorrelationsName.Data(),Form(
"4-particle correlations (n = %d)",
fHarmonic),45,0,45,
"s");
3527 TString s5pCorrelationsName =
"f5pCorrelations";
3529 f5pCorrelations =
new TProfile(s5pCorrelationsName.Data(),Form(
"5-particle correlations (n = %d)",
fHarmonic),87,0,87,
"s");
3630 TString s6pCorrelationsName =
"f6pCorrelations";
3632 f6pCorrelations =
new TProfile(s6pCorrelationsName.Data(),Form(
"6-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3641 TString s7pCorrelationsName =
"f7pCorrelations";
3643 f7pCorrelations =
new TProfile(s7pCorrelationsName.Data(),Form(
"7-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3652 TString s8pCorrelationsName =
"f8pCorrelations";
3654 f8pCorrelations =
new TProfile(s8pCorrelationsName.Data(),Form(
"8-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3699 TString mixedHarmonicEventWeightsName =
"fMixedHarmonicEventWeights";
3701 TString powerFlag[2] = {
"linear",
"quadratic"};
3702 for(Int_t power=0;power<2;power++)
3704 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.);
3718 }
else if (power == 1)
3733 TString mixedHarmonicProductOfEventWeightsName =
"fMixedHarmonicProductOfEventWeights";
3734 mixedHarmonicProductOfEventWeightsName +=
fAnalysisLabel->Data();
3739 for(Int_t b=1;b<=8;b++)
3747 TString mixedHarmonicProductOfCorrelationsName =
"fMixedHarmonicProductOfCorrelations";
3748 mixedHarmonicProductOfCorrelationsName +=
fAnalysisLabel->Data();