23 #define AliFlowAnalysisCRC_cxx
25 #include "Riostream.h"
34 #include "TParticle.h"
38 #include "TProfile2D.h"
39 #include "TProfile3D.h"
42 #include "TPaveLabel.h"
52 #include "THnSparse.h"
84 fBookOnlyBasicCCH(kTRUE),
86 fCommonHists2nd(NULL),
87 fCommonHists4th(NULL),
88 fCommonHists6th(NULL),
89 fCommonHists8th(NULL),
90 fCommonHistsResults2nd(NULL),
91 fCommonHistsResults4th(NULL),
92 fCommonHistsResults6th(NULL),
93 fCommonHistsResults8th(NULL),
106 fCommonConstants(NULL),
107 fFillMultipleControlHistograms(kFALSE),
109 fAnalysisLabel(NULL),
111 fUsePhiWeights(kFALSE),
112 fUsePtWeights(kFALSE),
113 fUseEtaWeights(kFALSE),
114 fUseTrackWeights(kFALSE),
115 fUsePhiEtaWeights(kFALSE),
116 fUseZDCESEMulWeights(kFALSE),
117 fUseZDCESESpecWeights(kFALSE),
118 fUseParticleWeights(NULL),
120 fMultiplicityWeight(NULL),
124 fIntFlowProfiles(NULL),
125 fIntFlowResults(NULL),
126 fIntFlowAllCorrelationsVsM(NULL),
128 fApplyCorrectionForNUA(kFALSE),
129 fApplyCorrectionForNUAVsM(kFALSE),
133 fPropagateErrorAlsoFromNIT(kFALSE),
134 fCalculateCumulantsVsM(kFALSE),
135 fCalculateAllCorrelationsVsM(kFALSE),
136 fMinimumBiasReferenceFlow(kTRUE),
137 fForgetAboutCovariances(kFALSE),
138 fStoreVarious(kFALSE),
140 fUse2DHistograms(kFALSE),
141 fFillProfilesVsMUsingWeights(kTRUE),
142 fUseQvectorTerms(kFALSE),
146 fIntFlowCorrelationsEBE(NULL),
147 fIntFlowEventWeightsForCorrelationsEBE(NULL),
148 fIntFlowCorrelationsAllEBE(NULL),
150 fNumberOfPOIsEBE(0.),
151 fReferenceMultiplicityEBE(0.),
153 fNewCentralityEBE(0.),
159 fCentralityCL1EBE(0.),
161 fCentralityTRKEBE(0.),
165 fAvMultiplicity(NULL),
166 fIntFlowCorrelationsPro(NULL),
167 fIntFlowSquaredCorrelationsPro(NULL),
168 fIntFlowCorrelationsAllPro(NULL),
169 fIntFlowExtraCorrelationsPro(NULL),
170 fIntFlowProductOfCorrelationsPro(NULL),
171 fIntFlowProductOfCorrectionTermsForNUAPro(NULL),
172 fIntFlowCorrelationsHist(NULL),
173 fIntFlowCorrelationsAllHist(NULL),
174 fIntFlowCovariances(NULL),
175 fIntFlowSumOfProductOfEventWeights(NULL),
176 fIntFlowCovariancesNUA(NULL),
177 fIntFlowSumOfProductOfEventWeightsNUA(NULL),
178 fIntFlowQcumulants(NULL),
179 fIntFlowQcumulantsRebinnedInM(NULL),
180 fIntFlowQcumulantsErrorSquaredRatio(NULL),
182 fIntFlowRebinnedInM(NULL),
183 fIntFlowDetectorBias(NULL),
186 fDiffFlowProfiles(NULL),
187 fDiffFlowResults(NULL),
189 fDiffFlowFlags(NULL),
190 fCalculateDiffFlow(kTRUE),
191 fCalculate2DDiffFlow(kFALSE),
192 fCalculateDiffFlowVsEta(kTRUE),
194 fOtherDiffCorrelatorsList(NULL),
196 fDistributionsList(NULL),
197 fDistributionsFlags(NULL),
198 fStoreDistributions(kFALSE),
199 fnBinsForCorrelations(10000),
201 fNestedLoopsList(NULL),
202 fEvaluateIntFlowNestedLoops(kFALSE),
203 fEvaluateDiffFlowNestedLoops(kFALSE),
204 fMaxAllowedMultiplicity(10),
205 fEvaluateNestedLoops(NULL),
206 fIntFlowDirectCorrelations(NULL),
207 fIntFlowExtraDirectCorrelations(NULL),
208 fCrossCheckInPtBinNo(10),
209 fCrossCheckInEtaBinNo(20),
210 fNoOfParticlesInBin(NULL),
211 fMixedHarmonicsNestedLoops(NULL),
213 fMixedHarmonicsList(NULL),
214 fMixedHarmonicsProfiles(NULL),
215 fMixedHarmonicsResults(NULL),
216 fMixedHarmonicsErrorPropagation(NULL),
217 fMixedHarmonicsFlags(NULL),
218 fCalculateMixedHarmonics(kFALSE),
219 fCalculateMixedHarmonicsVsM(kFALSE),
220 f2pCorrelations(NULL),
221 f3pCorrelations(NULL),
222 f4pCorrelations(NULL),
223 f5pCorrelations(NULL),
224 f6pCorrelations(NULL),
225 f7pCorrelations(NULL),
226 f8pCorrelations(NULL),
234 fMixedHarmonicProductOfEventWeights(NULL),
235 fMixedHarmonicProductOfCorrelations(NULL),
237 fControlHistogramsList(NULL),
238 fControlHistogramsFlags(NULL),
239 fStoreControlHistograms(kFALSE),
240 fCorrelationNoRPsVsRefMult(NULL),
241 fCorrelationNoPOIsVsRefMult(NULL),
242 fCorrelationNoRPsVsNoPOIs(NULL),
244 fBootstrapList(NULL),
245 fBootstrapProfilesList(NULL),
246 fBootstrapResultsList(NULL),
247 fBootstrapFlags(NULL),
248 fUseBootstrap(kFALSE),
249 fUseBootstrapVsM(kFALSE),
252 fBootstrapCorrelations(NULL),
253 fBootstrapCumulants(NULL),
258 fCalculateCRC(kTRUE),
259 fCalculateCRCPt(kFALSE),
260 fCalculateCME(kFALSE),
261 fCalculateCRC2(kFALSE),
262 fCalculateCRCVZ(kFALSE),
263 fCalculateCRCZDC(kFALSE),
264 fCalculateFlowQC(kFALSE),
265 fCalculateFlowZDC(kFALSE),
266 fCalculateFlowVZ(kFALSE),
267 fCalculateEbEFlow(kFALSE),
268 fUsePhiEtaCuts(kFALSE),
271 fRecenterZDC(kFALSE),
273 fUseCRCRecenter(kFALSE),
283 fCorrWeightTPC(kUnit),
284 fCorrWeightVZ(kUnit),
285 fCorrWeightZDC(kUnit),
288 fCRCCenBinWidth(CenWidth),
289 fCRCIntRbRList(NULL),
292 fInteractionRate(kAll),
293 fSelectCharge(kAllCh),
295 fCRCQVecWeightsList(NULL),
296 fCRCZDCCalibList(NULL),
298 fPhiEtaCutsList(NULL),
302 fCRCZDCRbRList(NULL),
310 fFlowSPZDCList(NULL),
314 fFlowQCDeltaEta(0.4),
320 fQAZDCCutsFlag(kTRUE),
327 fHistList =
new TList();
328 fHistList->SetName(
"cobjQC");
329 fHistList->SetOwner(kTRUE);
332 fTempList =
new TList();
333 fTempList->SetName(
"temp");
334 fTempList->SetOwner(kTRUE);
337 fMultiplicityWeight =
new TString(
"combinations");
340 fAnalysisLabel =
new TString();
343 this->InitializeArraysForIntFlow();
344 this->InitializeArraysForDiffFlow();
345 this->InitializeArraysForDistributions();
346 this->InitializeArraysForVarious();
347 this->InitializeArraysForNestedLoops();
348 this->InitializeArraysForMixedHarmonics();
349 this->InitializeArraysForControlHistograms();
350 this->InitializeArraysForBootstrap();
355 this->InitializeCostantsForCRC();
356 this->InitializeArraysForParticleWeights();
357 this->InitializeArraysForCRC();
358 this->InitializeArraysForCRCVZ();
359 this->InitializeArraysForCRCZDC();
360 this->InitializeArraysForCRC2();
361 this->InitializeArraysForQVec();
362 this->InitializeArraysForCRCPt();
363 this->InitializeArraysForCME();
364 this->InitializeArraysForFlowEbE();
365 this->InitializeArraysForFlowQC();
366 this->InitializeArraysForFlowQCHighOrders();
367 this->InitializeArraysForFlowSPZDC();
368 this->InitializeArraysForFlowSPVZ();
369 this->InitializeArraysForEbEFlow();
411 Bool_t oldHistAddStatus = TH1::AddDirectoryStatus();
412 TH1::AddDirectory(kFALSE);
465 TH1::AddDirectory(oldHistAddStatus);
506 Int_t nCounterNoRPs = 0;
542 if(fRunBin<0 || fRunBin>=
fCRCnRun) {
return;}
544 if(fCenBin<0 || fCenBin>=
fCRCnCen) {
return;}
596 AliWarning(Form(
"WARNING: cenphieta weights not found for run %d! \n",
fRunNum));
603 AliWarning(Form(
"WARNING: cenphieta cut not found for run %d! \n",
fRunNum));
619 for(
Int_t i=0;i<nPrim;i++) {
629 dPhi = aftsTrack->
Phi();
630 dPt = aftsTrack->
Pt();
631 dEta = aftsTrack->
Eta();
632 dCharge = aftsTrack->
Charge();
637 cw = (dCharge > 0. ? 0 : 1);
660 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
664 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
669 if(
fRandom->Uniform(1.)>wProbCut)
continue;
678 for(
Int_t m=0;m<12;m++)
680 for(
Int_t k=0;k<9;k++)
682 (*fReQ)(m,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1)*n*dPhi);
683 (*fImQ)(m,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1)*n*dPhi);
687 for(
Int_t p=0;p<8;p++)
689 for(
Int_t k=0;k<9;k++)
691 (*fSpk)(p,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k);
700 for(
Int_t k=0;k<9;k++)
702 for(
Int_t m=0;m<4;m++)
708 fReRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
709 fImRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
712 fs1dEBE[0][pe][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
718 fReRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
719 fImRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
722 fs2dEBE[0][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
731 for(
Int_t k=0;k<9;k++)
733 for(
Int_t m=0;m<4;m++)
739 fReRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
740 fImRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
743 fs1dEBE[2][pe][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
749 fReRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
750 fImRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
753 fs2dEBE[2][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
789 dPhi = aftsTrack->
Phi();
790 dPt = aftsTrack->
Pt();
791 dEta = aftsTrack->
Eta();
792 dCharge = aftsTrack->
Charge();
797 cw = (dCharge > 0. ? 0 : 1);
820 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
824 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
829 if(
fRandom->Uniform(1.)>wProbCut)
continue;
840 for(
Int_t k=0;k<9;k++)
842 for(
Int_t m=0;m<4;m++)
848 fReRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
849 fImRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
854 fReRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
855 fImRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
863 fCRCQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
864 fCRCQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
865 fCRCMult[cw][h]->Fill(dEta,wPhiEta);
867 fCRC2QRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
868 fCRC2QIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
869 fCRC2Mul[cw][h]->Fill(dEta,wPhiEta);
871 fCRCZDCQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
872 fCRCZDCQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
876 fCRC2QRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
877 fCRC2QIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
882 fCRCZDCQRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
883 fCRCZDCQIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
886 fCRCZDCQRe[3][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
887 fCRCZDCQIm[3][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
895 if(weraw > 0.) SpecWeig = 1./weraw;
897 fCMEQRe[cw][h]->Fill(dEta,SpecWeig*wPhiEta*TMath::Cos((h+1.)*dPhi));
898 fCMEQIm[cw][h]->Fill(dEta,SpecWeig*wPhiEta*TMath::Sin((h+1.)*dPhi));
899 fCMEMult[cw][h]->Fill(dEta,SpecWeig*wPhiEta);
900 fCMEQRe[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.)*TMath::Cos((h+1.)*dPhi));
901 fCMEQIm[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.)*TMath::Sin((h+1.)*dPhi));
902 fCMEMult[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.));
914 fPOIPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
915 fPOIPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
917 fPOIPhiDiffQRe[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
918 fPOIPhiDiffQIm[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
922 Int_t keta = (dEta<0.?0:1);
923 fPOIPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
924 fPOIPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
926 fPOIPhiDiffQReEG[keta][k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
927 fPOIPhiDiffQImEG[keta][k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
931 if(fabs(dEta)<0.6 && fabs(dEta)>0.3) {
932 Int_t keta = (dEta<0.?0:1);
933 fPOIPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
934 fPOIPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
942 fEtaDiffQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
943 fEtaDiffQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
954 printf(
"\n WARNING (QC): No particle (i.e. aftsTrack is a NULL pointer in AFAWQC::Make())!!!!\n\n");
962 for(
Int_t p=0;p<8;p++)
964 for(
Int_t k=0;k<9;k++)
966 (*fSpk)(p,k)=pow((*
fSpk)(p,k),p+1);
1393 cout<<
"Skipping the event because multiplicity is "<<nPrim<<
". Too high to evaluate nested loops!"<<endl;
1397 cout<<
"Skipping the event because multiplicity is "<<nPrim<<
"."<<endl;
1533 cosP1n = dReQ1n/dMult;
1551 cosP1nP1n = (pow(dReQ1n,2)-pow(dImQ1n,2)-dReQ2n)/(dMult*(dMult-1));
1552 cosP2nM1n = (dReQ2n*dReQ1n+dImQ2n*dImQ1n-dReQ1n)/(dMult*(dMult-1));
1576 cosP1nM1nM1n = (dReQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2))-dReQ1n*dReQ2n-dImQ1n*dImQ2n-2.*(dMult-1)*dReQ1n)
1577 / (dMult*(dMult-1)*(dMult-2));
1642 sinP1n = dImQ1n/dMult;
1659 sinP1nP1n = (2.*dReQ1n*dImQ1n-dImQ2n)/(dMult*(dMult-1));
1660 sinP2nM1n = (dImQ2n*dReQ1n-dReQ2n*dImQ1n-dImQ1n)/(dMult*(dMult-1));
1684 sinP1nM1nM1n = (-dImQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2))+dReQ1n*dImQ2n-dImQ1n*dReQ2n+2.*(dMult-1)*dImQ1n)
1685 / (dMult*(dMult-1)*(dMult-2));
1715 if(outputListHistos)
1720 printf(
"\n WARNING (QC): fHistList is NULL in AFAWQC::GOH() !!!!\n\n");
1748 printf(
"\n WARNING (QC): outputListHistos is NULL in AFAWQC::GOH() !!!!\n\n");
1760 Int_t nBinsPt = profilePtEta->GetNbinsX();
1761 Double_t dPtMin = (profilePtEta->GetXaxis())->GetXmin();
1762 Double_t dPtMax = (profilePtEta->GetXaxis())->GetXmax();
1764 Int_t nBinsEta = profilePtEta->GetNbinsY();
1766 TProfile *profilePt =
new TProfile(
"",
"",nBinsPt,dPtMin,dPtMax);
1768 for(
Int_t p=1;p<=nBinsPt;p++)
1776 for(
Int_t e=1;e<=nBinsEta;e++)
1778 contentPt += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
1779 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1780 entryPt += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1782 sum1 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
1783 * (pow(profilePtEta->GetBinError(profilePtEta->GetBin(p,e)),2.)
1784 + pow(profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)),2.));
1785 sum2 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1786 sum3 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
1787 * (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)));
1789 if(sum2>0. && sum1/sum2-pow(sum3/sum2,2.) > 0.)
1791 spreadPt = pow(sum1/sum2-pow(sum3/sum2,2.),0.5);
1793 profilePt->SetBinContent(p,contentPt);
1794 profilePt->SetBinEntries(p,entryPt);
1796 profilePt->SetBinError(p,spreadPt);
1813 Int_t nBinsEta = profilePtEta->GetNbinsY();
1814 Double_t dEtaMin = (profilePtEta->GetYaxis())->GetXmin();
1815 Double_t dEtaMax = (profilePtEta->GetYaxis())->GetXmax();
1817 Int_t nBinsPt = profilePtEta->GetNbinsX();
1819 TProfile *profileEta =
new TProfile(
"",
"",nBinsEta,dEtaMin,dEtaMax);
1821 for(
Int_t e=1;e<=nBinsEta;e++)
1825 for(
Int_t p=1;p<=nBinsPt;p++)
1827 contentEta += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
1828 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1829 entryEta += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1831 profileEta->SetBinContent(e,contentEta);
1832 profileEta->SetBinEntries(e,entryEta);
1852 for(
Int_t b=0;b<4;b++)
1863 }
else if(type ==
"RP")
1873 }
else if(type ==
"POI")
1885 for(
Int_t b=0;b<4;b++)
1894 TString subtitle2 =
" (rebinned in M)";
1896 if(type !=
"RF, rebinned in M")
1900 subtitle.Append(type);
1901 subtitle.Append(
", without weights)");
1904 subtitle.Append(type);
1905 subtitle.Append(
", with weights)");
1911 subtitle.Append(
"RF");
1912 subtitle.Append(
", without weights)");
1915 subtitle.Append(
"RF");
1916 subtitle.Append(
", with weights)");
1921 cout<<
"*************************************"<<endl;
1922 cout<<
"*************************************"<<endl;
1923 cout<<title.Data()<<endl;
1924 cout<<subtitle.Data()<<endl;
1925 if(type ==
"RF, rebinned in M"){cout<<subtitle2.Data()<<endl;}
1928 for(
Int_t i=0;i<4;i++)
1930 cout<<
" v_"<<n<<
"{"<<2*(i+1)<<
"} = "<<dVn[i]<<
" +/- "<<dVnErr[i]<<endl;
1938 cout<<
" detector bias (corrected for): "<<endl;
1941 cout<<
" detector bias (not corrected for):"<<endl;
1947 if(type ==
"RF" || type ==
"RF, rebinned in M")
1951 else if (type ==
"RP")
1955 else if (type ==
"POI")
1960 cout<<
"*************************************"<<endl;
1961 cout<<
"*************************************"<<endl;
1971 TFile *output =
new TFile(outputFileName.Data(),
"RECREATE");
1987 outputFileName->Write(outputFileName->GetName(), TObject::kSingleKey);
2000 TString commonHistsName =
"AliFlowCommonHistQC";
2008 TString commonHists2ndOrderName =
"AliFlowCommonHist2ndOrderQC";
2013 TString commonHists4thOrderName =
"AliFlowCommonHist4thOrderQC";
2018 TString commonHists6thOrderName =
"AliFlowCommonHist6thOrderQC";
2023 TString commonHists8thOrderName =
"AliFlowCommonHist8thOrderQC";
2031 TString commonHistResults2ndOrderName =
"AliFlowCommonHistResults2ndOrderQC";
2036 TString commonHistResults4thOrderName =
"AliFlowCommonHistResults4thOrderQC";
2041 TString commonHistResults6thOrderName =
"AliFlowCommonHistResults6thOrderQC";
2046 TString commonHistResults8thOrderName =
"AliFlowCommonHistResults8thOrderQC";
2061 printf(
"\n WARNING (QC): fWeightsList is NULL in AFAWQC::BAFWH() !!!! \n\n");
2065 TString fUseParticleWeightsName =
"fUseParticleWeightsQC";
2067 fUseParticleWeights =
new TProfile(fUseParticleWeightsName.Data(),
"0 = particle weight not used, 1 = particle weight used ",5,0,5);
2254 TF1 *CenFit =
new TF1(
"CenFit",
"pol0", 0., 100.);
2257 Double_t CenAv = CenFit->GetParameter(0);
2269 Double_t CenAv = CenFit->GetParameter(0);
2271 Double_t SemiCenAv = CenFit->GetParameter(0);
2297 TString sinCosFlag[2] = {
"sin",
"cos"};
2298 TString powerFlag[2] = {
"linear",
"quadratic"};
2301 TString intFlowFlagsName =
"fIntFlowFlags";
2303 fIntFlowFlags =
new TProfile(intFlowFlagsName.Data(),
"Flags for Integrated Flow",20,0.,20.);
2309 fIntFlowFlags->GetXaxis()->SetBinLabel(1,
"Particle Weights");
2311 fIntFlowFlags->GetXaxis()->SetBinLabel(3,
"Corrected for NUA?");
2312 fIntFlowFlags->GetXaxis()->SetBinLabel(4,
"Print RF results");
2313 fIntFlowFlags->GetXaxis()->SetBinLabel(5,
"Print RP results");
2314 fIntFlowFlags->GetXaxis()->SetBinLabel(6,
"Print POI results");
2315 fIntFlowFlags->GetXaxis()->SetBinLabel(7,
"Print RF (rebinned in M) results");
2316 fIntFlowFlags->GetXaxis()->SetBinLabel(8,
"Corrected for NUA vs M?");
2317 fIntFlowFlags->GetXaxis()->SetBinLabel(9,
"Propagate errors to v_{n} from correlations?");
2318 fIntFlowFlags->GetXaxis()->SetBinLabel(10,
"Calculate cumulants vs M");
2319 fIntFlowFlags->GetXaxis()->SetBinLabel(11,
"fMinimumBiasReferenceFlow");
2320 fIntFlowFlags->GetXaxis()->SetBinLabel(12,
"fForgetAboutCovariances");
2322 fIntFlowFlags->GetXaxis()->SetBinLabel(14,
"fFillMultipleControlHistograms");
2323 fIntFlowFlags->GetXaxis()->SetBinLabel(15,
"Calculate all correlations vs M");
2324 fIntFlowFlags->GetXaxis()->SetBinLabel(16,
"fMultiplicityIs");
2326 fIntFlowFlags->GetXaxis()->SetBinLabel(18,
"fUse2DHistograms");
2327 fIntFlowFlags->GetXaxis()->SetBinLabel(19,
"fFillProfilesVsMUsingWeights");
2328 fIntFlowFlags->GetXaxis()->SetBinLabel(20,
"fUseQvectorTerms");
2333 fReQ =
new TMatrixD(12,9);
2334 fImQ =
new TMatrixD(12,9);
2335 fSpk =
new TMatrixD(8,9);
2337 TString intFlowCorrelationsEBEName =
"fIntFlowCorrelationsEBE";
2341 TString intFlowEventWeightsForCorrelationsEBEName =
"fIntFlowEventWeightsForCorrelationsEBE";
2342 intFlowEventWeightsForCorrelationsEBEName +=
fAnalysisLabel->Data();
2345 TString intFlowCorrelationsAllEBEName =
"fIntFlowCorrelationsAllEBE";
2350 TString fIntFlowCorrectionTermsForNUAEBEName =
"fIntFlowCorrectionTermsForNUAEBE";
2352 for(
Int_t sc=0;sc<2;sc++)
2354 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);
2357 TString fIntFlowEventWeightForCorrectionTermsForNUAEBEName =
"fIntFlowEventWeightForCorrectionTermsForNUAEBE";
2358 fIntFlowEventWeightForCorrectionTermsForNUAEBEName +=
fAnalysisLabel->Data();
2359 for(
Int_t sc=0;sc<2;sc++)
2365 TString avMultiplicityName =
"fAvMultiplicity";
2367 fAvMultiplicity =
new TProfile(avMultiplicityName.Data(),
"Average multiplicities of reference particles (RPs)",9,0,9);
2384 TString correlationFlag[4] = {
"#LT#LT2#GT#GT",
"#LT#LT4#GT#GT",
"#LT#LT6#GT#GT",
"#LT#LT8#GT#GT"};
2385 TString intFlowCorrelationsProName =
"fIntFlowCorrelationsPro";
2387 fIntFlowCorrelationsPro =
new TProfile(intFlowCorrelationsProName.Data(),
"Average correlations for all events",4,0,4,
"s");
2393 for(
Int_t b=0;b<4;b++)
2399 TString squaredCorrelationFlag[4] = {
"#LT#LT2#GT^{2}#GT",
"#LT#LT4#GT^{2}#GT",
"#LT#LT6#GT^{2}#GT",
"#LT#LT8#GT^{2}#GT"};
2400 TString intFlowSquaredCorrelationsProName =
"fIntFlowSquaredCorrelationsPro";
2408 for(
Int_t b=0;b<4;b++)
2415 for(
Int_t ci=0;ci<4;ci++)
2418 TString intFlowCorrelationsVsMProName =
"fIntFlowCorrelationsVsMPro";
2420 fIntFlowCorrelationsVsMPro[ci] =
new TProfile(Form(
"%s, %s",intFlowCorrelationsVsMProName.Data(),correlationFlag[ci].Data()),
2421 Form(
"%s vs multiplicity",correlationFlag[ci].
Data()),
2437 TString intFlowSquaredCorrelationsVsMProName =
"fIntFlowSquaredCorrelationsVsMPro";
2440 Form(
"%s vs multiplicity",squaredCorrelationFlag[ci].
Data()),
2458 TString intFlowCorrelationsAllProName =
"fIntFlowCorrelationsAllPro";
2460 fIntFlowCorrelationsAllPro =
new TProfile(intFlowCorrelationsAllProName.Data(),
"Average all correlations for all events",64,0,64);
2566 fIntFlowCorrelationsAllVsMPro[30] =
new TProfile(
"eight1n1n1n1n1n1n1n1n",
"#LT#LT8#GT#GT_{n,n,n,n|n,n,n,n}",
fnBinsMult,
fMinMult,
fMaxMult);
2600 for(
Int_t n=0;n<63;n++)
2622 TString intFlowExtraCorrelationsProName =
"fIntFlowExtraCorrelationsPro";
2624 fIntFlowExtraCorrelationsPro =
new TProfile(intFlowExtraCorrelationsProName.Data(),
"Average extra correlations for all events",100,0,100,
"s");
2635 TString productFlag[6] = {
"#LT#LT2#GT#LT4#GT#GT",
"#LT#LT2#GT#LT6#GT#GT",
"#LT#LT2#GT#LT8#GT#GT",
2636 "#LT#LT4#GT#LT6#GT#GT",
"#LT#LT4#GT#LT8#GT#GT",
"#LT#LT6#GT#LT8#GT#GT"};
2637 TString intFlowProductOfCorrelationsProName =
"fIntFlowProductOfCorrelationsPro";
2644 for(
Int_t b=0;b<6;b++)
2653 TString intFlowProductOfCorrelationsVsMProName =
"fIntFlowProductOfCorrelationsVsMPro";
2654 intFlowProductOfCorrelationsVsMProName +=
fAnalysisLabel->Data();
2658 Form(
"%s versus multiplicity",productFlag[
pi].
Data()),
2674 TString intFlowProductOfCorrectionTermsForNUAProName =
"fIntFlowProductOfCorrectionTermsForNUAPro";
2675 intFlowProductOfCorrectionTermsForNUAProName +=
fAnalysisLabel->Data();
2710 for(
Int_t sc=0;sc<2;sc++)
2712 TString intFlowCorrectionTermsForNUAProName =
"fIntFlowCorrectionTermsForNUAPro";
2714 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");
2727 TString correctionTermFlag[4] = {
"(n(phi1))",
"(n(phi1+phi2))",
"(n(phi1-phi2-phi3))",
"(n(2phi1-phi2))"};
2728 for(
Int_t ci=0;ci<4;ci++)
2730 TString intFlowCorrectionTermsForNUAVsMProName =
"fIntFlowCorrectionTermsForNUAVsMPro";
2731 intFlowCorrectionTermsForNUAVsMProName +=
fAnalysisLabel->Data();
2732 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");
2740 TString intFlowCorrelationsHistName =
"fIntFlowCorrelationsHist";
2755 for(
Int_t ci=0;ci<4;ci++)
2757 TString intFlowCorrelationsVsMHistName =
"fIntFlowCorrelationsVsMHist";
2760 Form(
"%s vs multiplicity",correlationFlag[ci].
Data()),
2777 TString intFlowCorrelationsAllHistName =
"fIntFlowCorrelationsAllHist";
2818 for(
Int_t sc=0;sc<2;sc++)
2820 TString intFlowCorrectionTermsForNUAHistName =
"fIntFlowCorrectionTermsForNUAHist";
2822 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);
2834 TString intFlowCovariancesName =
"fIntFlowCovariances";
2836 fIntFlowCovariances =
new TH1D(intFlowCovariancesName.Data(),
"Covariances (multiplied with weight dependent prefactor)",6,0,6);
2847 TString intFlowSumOfEventWeightsName =
"fIntFlowSumOfEventWeights";
2849 for(
Int_t power=0;power<2;power++)
2851 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);
2860 }
else if (power == 1)
2870 TString intFlowSumOfProductOfEventWeightsName =
"fIntFlowSumOfProductOfEventWeights";
2886 TString intFlowCovariancesVsMName =
"fIntFlowCovariancesVsM";
2888 TString covarianceFlag[6] = {
"Cov(<2>,<4>)",
"Cov(<2>,<6>)",
"Cov(<2>,<8>)",
"Cov(<4>,<6>)",
"Cov(<4>,<8>)",
"Cov(<6>,<8>)"};
2889 for(
Int_t ci=0;ci<6;ci++)
2892 Form(
"%s vs multiplicity",covarianceFlag[ci].
Data()),
2912 TString intFlowSumOfEventWeightsVsMName =
"fIntFlowSumOfEventWeightsVsM";
2914 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>}"},
2915 {
"#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}"}};
2916 for(
Int_t si=0;si<4;si++)
2918 for(
Int_t power=0;power<2;power++)
2921 Form(
"%s vs multiplicity",sumFlag[power][si].
Data()),
2943 TString intFlowSumOfProductOfEventWeightsVsMName =
"fIntFlowSumOfProductOfEventWeightsVsM";
2944 intFlowSumOfProductOfEventWeightsVsMName +=
fAnalysisLabel->Data();
2945 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>}",
2946 "#sum_{i=1}^{N} w_{<4>} w_{<6>}",
"#sum_{i=1}^{N} w_{<4>} w_{<8>}",
"#sum_{i=1}^{N} w_{<6>} w_{<8>}"};
2950 Form(
"%s versus multiplicity",sopowFlag[
pi].
Data()),
2967 TString intFlowCovariancesNUAName =
"fIntFlowCovariancesNUA";
2969 fIntFlowCovariancesNUA =
new TH1D(intFlowCovariancesNUAName.Data(),
"Covariances for NUA (multiplied with weight dependent prefactor)",27,0,27);
2988 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(16,
"Cov(<cos(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2989 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(17,
"Cov(<cos(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2992 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(20,
"Cov(<sin(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2993 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(21,
"Cov(<sin(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2994 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(22,
"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}+#phi_{2})>)");
2995 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(23,
"Cov(<cos(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2996 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(24,
"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2997 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(25,
"Cov(<sin(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2998 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(26,
"Cov(<sin(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2999 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(27,
"Cov(<cos(#phi_{1}-#phi_{2}-#phi_{3}>,<sin(#phi_{1}-#phi_{2}-#phi_{3}>)");
3002 TString intFlowSumOfEventWeightsNUAName =
"fIntFlowSumOfEventWeightsNUA";
3004 for(
Int_t sc=0;sc<2;sc++)
3006 for(
Int_t power=0;power<2;power++)
3008 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);
3017 }
else if(power == 1)
3021 (
fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(3,Form(
"#sum_{i=1}^{N} w_{<%s(#phi_{1}-#phi_{2}-#phi_{3})>}^{2}",sinCosFlag[sc].
Data()));
3028 TString intFlowSumOfProductOfEventWeightsNUAName =
"fIntFlowSumOfProductOfEventWeightsNUA";
3029 intFlowSumOfProductOfEventWeightsNUAName +=
fAnalysisLabel->Data();
3062 TString cumulantFlag[4] = {
"QC{2}",
"QC{4}",
"QC{6}",
"QC{8}"};
3063 TString intFlowQcumulantsName =
"fIntFlowQcumulants";
3068 fIntFlowQcumulants->SetTitle(
"Reference Q-cumulants (error from non-isotropic terms also propagated)");
3072 for(
Int_t b=0;b<4;b++)
3080 TString intFlowQcumulantsRebinnedInMName =
"fIntFlowQcumulantsRebinnedInM";
3085 for(
Int_t b=0;b<4;b++)
3092 TString intFlowQcumulantsErrorSquaredRatioName =
"fIntFlowQcumulantsErrorSquaredRatio";
3093 intFlowQcumulantsErrorSquaredRatioName +=
fAnalysisLabel->Data();
3097 for(
Int_t b=0;b<4;b++)
3105 TString intFlowQcumulantsVsMName =
"fIntFlowQcumulantsVsM";
3107 for(
Int_t co=0;co<4;co++)
3110 Form(
"%s vs multiplicity",cumulantFlag[co].
Data()),
3127 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)};
3128 TString intFlowName =
"fIntFlow";
3131 fIntFlow =
new TH1D(intFlowName.Data(),
"Reference flow estimates from Q-cumulants",4,0,4);
3134 for(
Int_t b=0;b<4;b++)
3136 (
fIntFlow->GetXaxis())->SetBinLabel(b+1,flowFlag[b].
Data());
3142 TString intFlowRebinnedInMName =
"fIntFlowRebinnedInM";
3144 fIntFlowRebinnedInM =
new TH1D(intFlowRebinnedInMName.Data(),
"Reference flow estimates from Q-cumulants (rebinned in M)",4,0,4);
3147 for(
Int_t b=0;b<4;b++)
3156 TString intFlowVsMName =
"fIntFlowVsM";
3158 for(
Int_t co=0;co<4;co++)
3160 fIntFlowVsM[co] =
new TH1D(Form(
"%s, %s",intFlowVsMName.Data(),flowFlag[co].Data()),
3161 Form(
"%s vs multiplicity",flowFlag[co].
Data()),
3168 fIntFlowVsM[co]->GetXaxis()->SetTitle(
"Reference multiplicity (from ESD)");
3178 TString intFlowDetectorBiasName =
"fIntFlowDetectorBias";
3183 for(
Int_t ci=0;ci<4;ci++)
3185 (
fIntFlowDetectorBias->GetXaxis())->SetBinLabel(ci+1,Form(
"#frac{corrected}{measured} %s",cumulantFlag[ci].
Data()));
3191 TString intFlowDetectorBiasVsMName =
"fIntFlowDetectorBiasVsM";
3193 for(
Int_t ci=0;ci<4;ci++)
3196 Form(
"Quantifying detector bias for %s vs multiplicity",cumulantFlag[ci].
Data()),
3225 TString controlHistogramsFlagsName =
"fControlHistogramsFlags";
3227 fControlHistogramsFlags =
new TProfile(controlHistogramsFlagsName.Data(),
"Flags for Control Histograms",2,0,2);
3241 TString sCorrelationNoRPsVsRefMultName =
"fCorrelationNoRPsVsRefMult";
3252 TString sCorrelationNoPOIsVsRefMultName =
"fCorrelationNoPOIsVsRefMult";
3263 TString sCorrelationNoRPsVsNoPOIsName =
"fCorrelationNoRPsVsNoPOIs";
3274 TString sCorrelation[4] = {
"#LT2#GT",
"#LT4#GT",
"#LT6#GT",
"#LT8#GT"};
3278 sMultiplicity =
"# RPs";
3281 sMultiplicity =
"Reference multiplicity (from ESD)";
3284 sMultiplicity =
"# POIs";
3286 for(
Int_t ci=0;ci<4;ci++)
3298 TString sCorrelationProduct[1] = {
"#LT2#GT#LT4#GT"};
3299 for(
Int_t cpi=0;cpi<1;cpi++)
3313 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}}"};
3314 for(
Int_t qvti=0;qvti<4;qvti++)
3341 TString bootstrapFlagsName =
"fBootstrapFlags";
3343 fBootstrapFlags =
new TProfile(bootstrapFlagsName.Data(),
"Flags for bootstrap",3,0,3);
3355 TString correlationFlag[4] = {
"#LT#LT2#GT#GT",
"#LT#LT4#GT#GT",
"#LT#LT6#GT#GT",
"#LT#LT8#GT#GT"};
3356 TString cumulantFlag[4] = {
"QC{2}",
"QC{4}",
"QC{6}",
"QC{8}"};
3360 TString bootstrapCorrelationsName =
"fBootstrapCorrelations";
3364 for(
Int_t ci=0;ci<4;ci++)
3374 TString bootstrapCumulantsName =
"fBootstrapCumulants";
3378 for(
Int_t co=0;co<4;co++)
3393 sMultiplicity =
"# RPs";
3396 sMultiplicity =
"Reference multiplicity (from ESD)";
3399 sMultiplicity =
"# POIs";
3404 TString bootstrapCorrelationsVsMName =
"fBootstrapCorrelationsVsM";
3406 for(
Int_t ci=0;ci<4;ci++)
3408 fBootstrapCorrelationsVsM[ci] =
new TProfile2D(Form(
"%s, %s",bootstrapCorrelationsVsMName.Data(),correlationFlag[ci].Data()),
3409 Form(
"Bootstrap Correlations Vs. M, %s",correlationFlag[ci].
Data()),
3420 TString bootstrapCumulantsVsMName =
"fBootstrapCumulantsVsM";
3422 for(
Int_t co=0;co<4;co++)
3425 Form(
"Bootstrap Cumulants Vs. M, %s",cumulantFlag[co].
Data()),
3451 TString mixedHarmonicsFlagsName =
"fMixedHarmonicsFlags";
3453 fMixedHarmonicsFlags =
new TProfile(mixedHarmonicsFlagsName.Data(),
"Flags for Mixed Harmonics",4,0,4);
3469 TString s2pCorrelationsName =
"f2pCorrelations";
3471 f2pCorrelations =
new TProfile(s2pCorrelationsName.Data(),Form(
"2-particle correlations (n = %d)",
fHarmonic),6,0,6,
"s");
3486 TString s3pCorrelationsName =
"f3pCorrelations";
3488 f3pCorrelations =
new TProfile(s3pCorrelationsName.Data(),Form(
"3-particle correlations (n = %d)",
fHarmonic),10,0,10,
"s");
3509 TString s4pCorrelationsName =
"f4pCorrelations";
3511 f4pCorrelations =
new TProfile(s4pCorrelationsName.Data(),Form(
"4-particle correlations (n = %d)",
fHarmonic),45,0,45,
"s");
3570 TString s5pCorrelationsName =
"f5pCorrelations";
3572 f5pCorrelations =
new TProfile(s5pCorrelationsName.Data(),Form(
"5-particle correlations (n = %d)",
fHarmonic),87,0,87,
"s");
3673 TString s6pCorrelationsName =
"f6pCorrelations";
3675 f6pCorrelations =
new TProfile(s6pCorrelationsName.Data(),Form(
"6-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3684 TString s7pCorrelationsName =
"f7pCorrelations";
3686 f7pCorrelations =
new TProfile(s7pCorrelationsName.Data(),Form(
"7-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3695 TString s8pCorrelationsName =
"f8pCorrelations";
3697 f8pCorrelations =
new TProfile(s8pCorrelationsName.Data(),Form(
"8-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3742 TString mixedHarmonicEventWeightsName =
"fMixedHarmonicEventWeights";
3744 TString powerFlag[2] = {
"linear",
"quadratic"};
3745 for(
Int_t power=0;power<2;power++)
3747 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.);
3761 }
else if (power == 1)
3776 TString mixedHarmonicProductOfEventWeightsName =
"fMixedHarmonicProductOfEventWeights";
3777 mixedHarmonicProductOfEventWeightsName +=
fAnalysisLabel->Data();
3782 for(
Int_t b=1;b<=8;b++)
3790 TString mixedHarmonicProductOfCorrelationsName =
"fMixedHarmonicProductOfCorrelations";
3791 mixedHarmonicProductOfCorrelationsName +=
fAnalysisLabel->Data();