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.);
763 fRPPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
764 fRPPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
768 Int_t keta = (dEta<0.?0:1);
769 fRPPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
770 fRPPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
774 if(fabs(dEta)<0.6 && fabs(dEta)>0.3) {
775 Int_t keta = (dEta<0.?0:1);
776 fRPPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
777 fRPPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
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));
919 Int_t keta = (dEta<0.?0:1);
920 fPOIPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
921 fPOIPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
925 if(fabs(dEta)<0.6 && fabs(dEta)>0.3) {
926 Int_t keta = (dEta<0.?0:1);
927 fPOIPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
928 fPOIPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
936 fEtaDiffQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
937 fEtaDiffQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
948 printf(
"\n WARNING (QC): No particle (i.e. aftsTrack is a NULL pointer in AFAWQC::Make())!!!!\n\n");
956 for(
Int_t p=0;p<8;p++)
958 for(
Int_t k=0;k<9;k++)
960 (*fSpk)(p,k)=pow((*
fSpk)(p,k),p+1);
1387 cout<<
"Skipping the event because multiplicity is "<<nPrim<<
". Too high to evaluate nested loops!"<<endl;
1391 cout<<
"Skipping the event because multiplicity is "<<nPrim<<
"."<<endl;
1527 cosP1n = dReQ1n/dMult;
1545 cosP1nP1n = (pow(dReQ1n,2)-pow(dImQ1n,2)-dReQ2n)/(dMult*(dMult-1));
1546 cosP2nM1n = (dReQ2n*dReQ1n+dImQ2n*dImQ1n-dReQ1n)/(dMult*(dMult-1));
1570 cosP1nM1nM1n = (dReQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2))-dReQ1n*dReQ2n-dImQ1n*dImQ2n-2.*(dMult-1)*dReQ1n)
1571 / (dMult*(dMult-1)*(dMult-2));
1636 sinP1n = dImQ1n/dMult;
1653 sinP1nP1n = (2.*dReQ1n*dImQ1n-dImQ2n)/(dMult*(dMult-1));
1654 sinP2nM1n = (dImQ2n*dReQ1n-dReQ2n*dImQ1n-dImQ1n)/(dMult*(dMult-1));
1678 sinP1nM1nM1n = (-dImQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2))+dReQ1n*dImQ2n-dImQ1n*dReQ2n+2.*(dMult-1)*dImQ1n)
1679 / (dMult*(dMult-1)*(dMult-2));
1709 if(outputListHistos)
1714 printf(
"\n WARNING (QC): fHistList is NULL in AFAWQC::GOH() !!!!\n\n");
1742 printf(
"\n WARNING (QC): outputListHistos is NULL in AFAWQC::GOH() !!!!\n\n");
1754 Int_t nBinsPt = profilePtEta->GetNbinsX();
1755 Double_t dPtMin = (profilePtEta->GetXaxis())->GetXmin();
1756 Double_t dPtMax = (profilePtEta->GetXaxis())->GetXmax();
1758 Int_t nBinsEta = profilePtEta->GetNbinsY();
1760 TProfile *profilePt =
new TProfile(
"",
"",nBinsPt,dPtMin,dPtMax);
1762 for(
Int_t p=1;p<=nBinsPt;p++)
1770 for(
Int_t e=1;e<=nBinsEta;e++)
1772 contentPt += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
1773 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1774 entryPt += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1776 sum1 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
1777 * (pow(profilePtEta->GetBinError(profilePtEta->GetBin(p,e)),2.)
1778 + pow(profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)),2.));
1779 sum2 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1780 sum3 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
1781 * (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)));
1783 if(sum2>0. && sum1/sum2-pow(sum3/sum2,2.) > 0.)
1785 spreadPt = pow(sum1/sum2-pow(sum3/sum2,2.),0.5);
1787 profilePt->SetBinContent(p,contentPt);
1788 profilePt->SetBinEntries(p,entryPt);
1790 profilePt->SetBinError(p,spreadPt);
1807 Int_t nBinsEta = profilePtEta->GetNbinsY();
1808 Double_t dEtaMin = (profilePtEta->GetYaxis())->GetXmin();
1809 Double_t dEtaMax = (profilePtEta->GetYaxis())->GetXmax();
1811 Int_t nBinsPt = profilePtEta->GetNbinsX();
1813 TProfile *profileEta =
new TProfile(
"",
"",nBinsEta,dEtaMin,dEtaMax);
1815 for(
Int_t e=1;e<=nBinsEta;e++)
1819 for(
Int_t p=1;p<=nBinsPt;p++)
1821 contentEta += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
1822 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1823 entryEta += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1825 profileEta->SetBinContent(e,contentEta);
1826 profileEta->SetBinEntries(e,entryEta);
1846 for(
Int_t b=0;b<4;b++)
1857 }
else if(type ==
"RP")
1867 }
else if(type ==
"POI")
1879 for(
Int_t b=0;b<4;b++)
1888 TString subtitle2 =
" (rebinned in M)";
1890 if(type !=
"RF, rebinned in M")
1894 subtitle.Append(type);
1895 subtitle.Append(
", without weights)");
1898 subtitle.Append(type);
1899 subtitle.Append(
", with weights)");
1905 subtitle.Append(
"RF");
1906 subtitle.Append(
", without weights)");
1909 subtitle.Append(
"RF");
1910 subtitle.Append(
", with weights)");
1915 cout<<
"*************************************"<<endl;
1916 cout<<
"*************************************"<<endl;
1917 cout<<title.Data()<<endl;
1918 cout<<subtitle.Data()<<endl;
1919 if(type ==
"RF, rebinned in M"){cout<<subtitle2.Data()<<endl;}
1922 for(
Int_t i=0;i<4;i++)
1924 cout<<
" v_"<<n<<
"{"<<2*(i+1)<<
"} = "<<dVn[i]<<
" +/- "<<dVnErr[i]<<endl;
1932 cout<<
" detector bias (corrected for): "<<endl;
1935 cout<<
" detector bias (not corrected for):"<<endl;
1941 if(type ==
"RF" || type ==
"RF, rebinned in M")
1945 else if (type ==
"RP")
1949 else if (type ==
"POI")
1954 cout<<
"*************************************"<<endl;
1955 cout<<
"*************************************"<<endl;
1965 TFile *output =
new TFile(outputFileName.Data(),
"RECREATE");
1981 outputFileName->Write(outputFileName->GetName(), TObject::kSingleKey);
1994 TString commonHistsName =
"AliFlowCommonHistQC";
2002 TString commonHists2ndOrderName =
"AliFlowCommonHist2ndOrderQC";
2007 TString commonHists4thOrderName =
"AliFlowCommonHist4thOrderQC";
2012 TString commonHists6thOrderName =
"AliFlowCommonHist6thOrderQC";
2017 TString commonHists8thOrderName =
"AliFlowCommonHist8thOrderQC";
2025 TString commonHistResults2ndOrderName =
"AliFlowCommonHistResults2ndOrderQC";
2030 TString commonHistResults4thOrderName =
"AliFlowCommonHistResults4thOrderQC";
2035 TString commonHistResults6thOrderName =
"AliFlowCommonHistResults6thOrderQC";
2040 TString commonHistResults8thOrderName =
"AliFlowCommonHistResults8thOrderQC";
2055 printf(
"\n WARNING (QC): fWeightsList is NULL in AFAWQC::BAFWH() !!!! \n\n");
2059 TString fUseParticleWeightsName =
"fUseParticleWeightsQC";
2061 fUseParticleWeights =
new TProfile(fUseParticleWeightsName.Data(),
"0 = particle weight not used, 1 = particle weight used ",5,0,5);
2248 TF1 *CenFit =
new TF1(
"CenFit",
"pol0", 0., 100.);
2251 Double_t CenAv = CenFit->GetParameter(0);
2263 Double_t CenAv = CenFit->GetParameter(0);
2265 Double_t SemiCenAv = CenFit->GetParameter(0);
2291 TString sinCosFlag[2] = {
"sin",
"cos"};
2292 TString powerFlag[2] = {
"linear",
"quadratic"};
2295 TString intFlowFlagsName =
"fIntFlowFlags";
2297 fIntFlowFlags =
new TProfile(intFlowFlagsName.Data(),
"Flags for Integrated Flow",20,0.,20.);
2303 fIntFlowFlags->GetXaxis()->SetBinLabel(1,
"Particle Weights");
2305 fIntFlowFlags->GetXaxis()->SetBinLabel(3,
"Corrected for NUA?");
2306 fIntFlowFlags->GetXaxis()->SetBinLabel(4,
"Print RF results");
2307 fIntFlowFlags->GetXaxis()->SetBinLabel(5,
"Print RP results");
2308 fIntFlowFlags->GetXaxis()->SetBinLabel(6,
"Print POI results");
2309 fIntFlowFlags->GetXaxis()->SetBinLabel(7,
"Print RF (rebinned in M) results");
2310 fIntFlowFlags->GetXaxis()->SetBinLabel(8,
"Corrected for NUA vs M?");
2311 fIntFlowFlags->GetXaxis()->SetBinLabel(9,
"Propagate errors to v_{n} from correlations?");
2312 fIntFlowFlags->GetXaxis()->SetBinLabel(10,
"Calculate cumulants vs M");
2313 fIntFlowFlags->GetXaxis()->SetBinLabel(11,
"fMinimumBiasReferenceFlow");
2314 fIntFlowFlags->GetXaxis()->SetBinLabel(12,
"fForgetAboutCovariances");
2316 fIntFlowFlags->GetXaxis()->SetBinLabel(14,
"fFillMultipleControlHistograms");
2317 fIntFlowFlags->GetXaxis()->SetBinLabel(15,
"Calculate all correlations vs M");
2318 fIntFlowFlags->GetXaxis()->SetBinLabel(16,
"fMultiplicityIs");
2320 fIntFlowFlags->GetXaxis()->SetBinLabel(18,
"fUse2DHistograms");
2321 fIntFlowFlags->GetXaxis()->SetBinLabel(19,
"fFillProfilesVsMUsingWeights");
2322 fIntFlowFlags->GetXaxis()->SetBinLabel(20,
"fUseQvectorTerms");
2327 fReQ =
new TMatrixD(12,9);
2328 fImQ =
new TMatrixD(12,9);
2329 fSpk =
new TMatrixD(8,9);
2331 TString intFlowCorrelationsEBEName =
"fIntFlowCorrelationsEBE";
2335 TString intFlowEventWeightsForCorrelationsEBEName =
"fIntFlowEventWeightsForCorrelationsEBE";
2336 intFlowEventWeightsForCorrelationsEBEName +=
fAnalysisLabel->Data();
2339 TString intFlowCorrelationsAllEBEName =
"fIntFlowCorrelationsAllEBE";
2344 TString fIntFlowCorrectionTermsForNUAEBEName =
"fIntFlowCorrectionTermsForNUAEBE";
2346 for(
Int_t sc=0;sc<2;sc++)
2348 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);
2351 TString fIntFlowEventWeightForCorrectionTermsForNUAEBEName =
"fIntFlowEventWeightForCorrectionTermsForNUAEBE";
2352 fIntFlowEventWeightForCorrectionTermsForNUAEBEName +=
fAnalysisLabel->Data();
2353 for(
Int_t sc=0;sc<2;sc++)
2359 TString avMultiplicityName =
"fAvMultiplicity";
2361 fAvMultiplicity =
new TProfile(avMultiplicityName.Data(),
"Average multiplicities of reference particles (RPs)",9,0,9);
2378 TString correlationFlag[4] = {
"#LT#LT2#GT#GT",
"#LT#LT4#GT#GT",
"#LT#LT6#GT#GT",
"#LT#LT8#GT#GT"};
2379 TString intFlowCorrelationsProName =
"fIntFlowCorrelationsPro";
2381 fIntFlowCorrelationsPro =
new TProfile(intFlowCorrelationsProName.Data(),
"Average correlations for all events",4,0,4,
"s");
2387 for(
Int_t b=0;b<4;b++)
2393 TString squaredCorrelationFlag[4] = {
"#LT#LT2#GT^{2}#GT",
"#LT#LT4#GT^{2}#GT",
"#LT#LT6#GT^{2}#GT",
"#LT#LT8#GT^{2}#GT"};
2394 TString intFlowSquaredCorrelationsProName =
"fIntFlowSquaredCorrelationsPro";
2402 for(
Int_t b=0;b<4;b++)
2409 for(
Int_t ci=0;ci<4;ci++)
2412 TString intFlowCorrelationsVsMProName =
"fIntFlowCorrelationsVsMPro";
2414 fIntFlowCorrelationsVsMPro[ci] =
new TProfile(Form(
"%s, %s",intFlowCorrelationsVsMProName.Data(),correlationFlag[ci].Data()),
2415 Form(
"%s vs multiplicity",correlationFlag[ci].
Data()),
2431 TString intFlowSquaredCorrelationsVsMProName =
"fIntFlowSquaredCorrelationsVsMPro";
2434 Form(
"%s vs multiplicity",squaredCorrelationFlag[ci].
Data()),
2452 TString intFlowCorrelationsAllProName =
"fIntFlowCorrelationsAllPro";
2454 fIntFlowCorrelationsAllPro =
new TProfile(intFlowCorrelationsAllProName.Data(),
"Average all correlations for all events",64,0,64);
2560 fIntFlowCorrelationsAllVsMPro[30] =
new TProfile(
"eight1n1n1n1n1n1n1n1n",
"#LT#LT8#GT#GT_{n,n,n,n|n,n,n,n}",
fnBinsMult,
fMinMult,
fMaxMult);
2594 for(
Int_t n=0;n<63;n++)
2616 TString intFlowExtraCorrelationsProName =
"fIntFlowExtraCorrelationsPro";
2618 fIntFlowExtraCorrelationsPro =
new TProfile(intFlowExtraCorrelationsProName.Data(),
"Average extra correlations for all events",100,0,100,
"s");
2629 TString productFlag[6] = {
"#LT#LT2#GT#LT4#GT#GT",
"#LT#LT2#GT#LT6#GT#GT",
"#LT#LT2#GT#LT8#GT#GT",
2630 "#LT#LT4#GT#LT6#GT#GT",
"#LT#LT4#GT#LT8#GT#GT",
"#LT#LT6#GT#LT8#GT#GT"};
2631 TString intFlowProductOfCorrelationsProName =
"fIntFlowProductOfCorrelationsPro";
2638 for(
Int_t b=0;b<6;b++)
2647 TString intFlowProductOfCorrelationsVsMProName =
"fIntFlowProductOfCorrelationsVsMPro";
2648 intFlowProductOfCorrelationsVsMProName +=
fAnalysisLabel->Data();
2652 Form(
"%s versus multiplicity",productFlag[
pi].
Data()),
2668 TString intFlowProductOfCorrectionTermsForNUAProName =
"fIntFlowProductOfCorrectionTermsForNUAPro";
2669 intFlowProductOfCorrectionTermsForNUAProName +=
fAnalysisLabel->Data();
2704 for(
Int_t sc=0;sc<2;sc++)
2706 TString intFlowCorrectionTermsForNUAProName =
"fIntFlowCorrectionTermsForNUAPro";
2708 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");
2721 TString correctionTermFlag[4] = {
"(n(phi1))",
"(n(phi1+phi2))",
"(n(phi1-phi2-phi3))",
"(n(2phi1-phi2))"};
2722 for(
Int_t ci=0;ci<4;ci++)
2724 TString intFlowCorrectionTermsForNUAVsMProName =
"fIntFlowCorrectionTermsForNUAVsMPro";
2725 intFlowCorrectionTermsForNUAVsMProName +=
fAnalysisLabel->Data();
2726 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");
2734 TString intFlowCorrelationsHistName =
"fIntFlowCorrelationsHist";
2749 for(
Int_t ci=0;ci<4;ci++)
2751 TString intFlowCorrelationsVsMHistName =
"fIntFlowCorrelationsVsMHist";
2754 Form(
"%s vs multiplicity",correlationFlag[ci].
Data()),
2771 TString intFlowCorrelationsAllHistName =
"fIntFlowCorrelationsAllHist";
2812 for(
Int_t sc=0;sc<2;sc++)
2814 TString intFlowCorrectionTermsForNUAHistName =
"fIntFlowCorrectionTermsForNUAHist";
2816 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);
2828 TString intFlowCovariancesName =
"fIntFlowCovariances";
2830 fIntFlowCovariances =
new TH1D(intFlowCovariancesName.Data(),
"Covariances (multiplied with weight dependent prefactor)",6,0,6);
2841 TString intFlowSumOfEventWeightsName =
"fIntFlowSumOfEventWeights";
2843 for(
Int_t power=0;power<2;power++)
2845 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);
2854 }
else if (power == 1)
2864 TString intFlowSumOfProductOfEventWeightsName =
"fIntFlowSumOfProductOfEventWeights";
2880 TString intFlowCovariancesVsMName =
"fIntFlowCovariancesVsM";
2882 TString covarianceFlag[6] = {
"Cov(<2>,<4>)",
"Cov(<2>,<6>)",
"Cov(<2>,<8>)",
"Cov(<4>,<6>)",
"Cov(<4>,<8>)",
"Cov(<6>,<8>)"};
2883 for(
Int_t ci=0;ci<6;ci++)
2886 Form(
"%s vs multiplicity",covarianceFlag[ci].
Data()),
2906 TString intFlowSumOfEventWeightsVsMName =
"fIntFlowSumOfEventWeightsVsM";
2908 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>}"},
2909 {
"#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}"}};
2910 for(
Int_t si=0;si<4;si++)
2912 for(
Int_t power=0;power<2;power++)
2915 Form(
"%s vs multiplicity",sumFlag[power][si].
Data()),
2937 TString intFlowSumOfProductOfEventWeightsVsMName =
"fIntFlowSumOfProductOfEventWeightsVsM";
2938 intFlowSumOfProductOfEventWeightsVsMName +=
fAnalysisLabel->Data();
2939 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>}",
2940 "#sum_{i=1}^{N} w_{<4>} w_{<6>}",
"#sum_{i=1}^{N} w_{<4>} w_{<8>}",
"#sum_{i=1}^{N} w_{<6>} w_{<8>}"};
2944 Form(
"%s versus multiplicity",sopowFlag[
pi].
Data()),
2961 TString intFlowCovariancesNUAName =
"fIntFlowCovariancesNUA";
2963 fIntFlowCovariancesNUA =
new TH1D(intFlowCovariancesNUAName.Data(),
"Covariances for NUA (multiplied with weight dependent prefactor)",27,0,27);
2982 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(16,
"Cov(<cos(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2983 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(17,
"Cov(<cos(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2986 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(20,
"Cov(<sin(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2987 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(21,
"Cov(<sin(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2988 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(22,
"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}+#phi_{2})>)");
2989 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(23,
"Cov(<cos(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2990 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(24,
"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2991 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(25,
"Cov(<sin(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2992 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(26,
"Cov(<sin(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2993 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(27,
"Cov(<cos(#phi_{1}-#phi_{2}-#phi_{3}>,<sin(#phi_{1}-#phi_{2}-#phi_{3}>)");
2996 TString intFlowSumOfEventWeightsNUAName =
"fIntFlowSumOfEventWeightsNUA";
2998 for(
Int_t sc=0;sc<2;sc++)
3000 for(
Int_t power=0;power<2;power++)
3002 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);
3011 }
else if(power == 1)
3015 (
fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(3,Form(
"#sum_{i=1}^{N} w_{<%s(#phi_{1}-#phi_{2}-#phi_{3})>}^{2}",sinCosFlag[sc].
Data()));
3022 TString intFlowSumOfProductOfEventWeightsNUAName =
"fIntFlowSumOfProductOfEventWeightsNUA";
3023 intFlowSumOfProductOfEventWeightsNUAName +=
fAnalysisLabel->Data();
3056 TString cumulantFlag[4] = {
"QC{2}",
"QC{4}",
"QC{6}",
"QC{8}"};
3057 TString intFlowQcumulantsName =
"fIntFlowQcumulants";
3062 fIntFlowQcumulants->SetTitle(
"Reference Q-cumulants (error from non-isotropic terms also propagated)");
3066 for(
Int_t b=0;b<4;b++)
3074 TString intFlowQcumulantsRebinnedInMName =
"fIntFlowQcumulantsRebinnedInM";
3079 for(
Int_t b=0;b<4;b++)
3086 TString intFlowQcumulantsErrorSquaredRatioName =
"fIntFlowQcumulantsErrorSquaredRatio";
3087 intFlowQcumulantsErrorSquaredRatioName +=
fAnalysisLabel->Data();
3091 for(
Int_t b=0;b<4;b++)
3099 TString intFlowQcumulantsVsMName =
"fIntFlowQcumulantsVsM";
3101 for(
Int_t co=0;co<4;co++)
3104 Form(
"%s vs multiplicity",cumulantFlag[co].
Data()),
3121 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)};
3122 TString intFlowName =
"fIntFlow";
3125 fIntFlow =
new TH1D(intFlowName.Data(),
"Reference flow estimates from Q-cumulants",4,0,4);
3128 for(
Int_t b=0;b<4;b++)
3130 (
fIntFlow->GetXaxis())->SetBinLabel(b+1,flowFlag[b].
Data());
3136 TString intFlowRebinnedInMName =
"fIntFlowRebinnedInM";
3138 fIntFlowRebinnedInM =
new TH1D(intFlowRebinnedInMName.Data(),
"Reference flow estimates from Q-cumulants (rebinned in M)",4,0,4);
3141 for(
Int_t b=0;b<4;b++)
3150 TString intFlowVsMName =
"fIntFlowVsM";
3152 for(
Int_t co=0;co<4;co++)
3154 fIntFlowVsM[co] =
new TH1D(Form(
"%s, %s",intFlowVsMName.Data(),flowFlag[co].Data()),
3155 Form(
"%s vs multiplicity",flowFlag[co].
Data()),
3162 fIntFlowVsM[co]->GetXaxis()->SetTitle(
"Reference multiplicity (from ESD)");
3172 TString intFlowDetectorBiasName =
"fIntFlowDetectorBias";
3177 for(
Int_t ci=0;ci<4;ci++)
3179 (
fIntFlowDetectorBias->GetXaxis())->SetBinLabel(ci+1,Form(
"#frac{corrected}{measured} %s",cumulantFlag[ci].
Data()));
3185 TString intFlowDetectorBiasVsMName =
"fIntFlowDetectorBiasVsM";
3187 for(
Int_t ci=0;ci<4;ci++)
3190 Form(
"Quantifying detector bias for %s vs multiplicity",cumulantFlag[ci].
Data()),
3219 TString controlHistogramsFlagsName =
"fControlHistogramsFlags";
3221 fControlHistogramsFlags =
new TProfile(controlHistogramsFlagsName.Data(),
"Flags for Control Histograms",2,0,2);
3235 TString sCorrelationNoRPsVsRefMultName =
"fCorrelationNoRPsVsRefMult";
3246 TString sCorrelationNoPOIsVsRefMultName =
"fCorrelationNoPOIsVsRefMult";
3257 TString sCorrelationNoRPsVsNoPOIsName =
"fCorrelationNoRPsVsNoPOIs";
3268 TString sCorrelation[4] = {
"#LT2#GT",
"#LT4#GT",
"#LT6#GT",
"#LT8#GT"};
3272 sMultiplicity =
"# RPs";
3275 sMultiplicity =
"Reference multiplicity (from ESD)";
3278 sMultiplicity =
"# POIs";
3280 for(
Int_t ci=0;ci<4;ci++)
3292 TString sCorrelationProduct[1] = {
"#LT2#GT#LT4#GT"};
3293 for(
Int_t cpi=0;cpi<1;cpi++)
3307 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}}"};
3308 for(
Int_t qvti=0;qvti<4;qvti++)
3335 TString bootstrapFlagsName =
"fBootstrapFlags";
3337 fBootstrapFlags =
new TProfile(bootstrapFlagsName.Data(),
"Flags for bootstrap",3,0,3);
3349 TString correlationFlag[4] = {
"#LT#LT2#GT#GT",
"#LT#LT4#GT#GT",
"#LT#LT6#GT#GT",
"#LT#LT8#GT#GT"};
3350 TString cumulantFlag[4] = {
"QC{2}",
"QC{4}",
"QC{6}",
"QC{8}"};
3354 TString bootstrapCorrelationsName =
"fBootstrapCorrelations";
3358 for(
Int_t ci=0;ci<4;ci++)
3368 TString bootstrapCumulantsName =
"fBootstrapCumulants";
3372 for(
Int_t co=0;co<4;co++)
3387 sMultiplicity =
"# RPs";
3390 sMultiplicity =
"Reference multiplicity (from ESD)";
3393 sMultiplicity =
"# POIs";
3398 TString bootstrapCorrelationsVsMName =
"fBootstrapCorrelationsVsM";
3400 for(
Int_t ci=0;ci<4;ci++)
3402 fBootstrapCorrelationsVsM[ci] =
new TProfile2D(Form(
"%s, %s",bootstrapCorrelationsVsMName.Data(),correlationFlag[ci].Data()),
3403 Form(
"Bootstrap Correlations Vs. M, %s",correlationFlag[ci].
Data()),
3414 TString bootstrapCumulantsVsMName =
"fBootstrapCumulantsVsM";
3416 for(
Int_t co=0;co<4;co++)
3419 Form(
"Bootstrap Cumulants Vs. M, %s",cumulantFlag[co].
Data()),
3445 TString mixedHarmonicsFlagsName =
"fMixedHarmonicsFlags";
3447 fMixedHarmonicsFlags =
new TProfile(mixedHarmonicsFlagsName.Data(),
"Flags for Mixed Harmonics",4,0,4);
3463 TString s2pCorrelationsName =
"f2pCorrelations";
3465 f2pCorrelations =
new TProfile(s2pCorrelationsName.Data(),Form(
"2-particle correlations (n = %d)",
fHarmonic),6,0,6,
"s");
3480 TString s3pCorrelationsName =
"f3pCorrelations";
3482 f3pCorrelations =
new TProfile(s3pCorrelationsName.Data(),Form(
"3-particle correlations (n = %d)",
fHarmonic),10,0,10,
"s");
3503 TString s4pCorrelationsName =
"f4pCorrelations";
3505 f4pCorrelations =
new TProfile(s4pCorrelationsName.Data(),Form(
"4-particle correlations (n = %d)",
fHarmonic),45,0,45,
"s");
3564 TString s5pCorrelationsName =
"f5pCorrelations";
3566 f5pCorrelations =
new TProfile(s5pCorrelationsName.Data(),Form(
"5-particle correlations (n = %d)",
fHarmonic),87,0,87,
"s");
3667 TString s6pCorrelationsName =
"f6pCorrelations";
3669 f6pCorrelations =
new TProfile(s6pCorrelationsName.Data(),Form(
"6-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3678 TString s7pCorrelationsName =
"f7pCorrelations";
3680 f7pCorrelations =
new TProfile(s7pCorrelationsName.Data(),Form(
"7-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3689 TString s8pCorrelationsName =
"f8pCorrelations";
3691 f8pCorrelations =
new TProfile(s8pCorrelationsName.Data(),Form(
"8-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3736 TString mixedHarmonicEventWeightsName =
"fMixedHarmonicEventWeights";
3738 TString powerFlag[2] = {
"linear",
"quadratic"};
3739 for(
Int_t power=0;power<2;power++)
3741 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.);
3755 }
else if (power == 1)
3770 TString mixedHarmonicProductOfEventWeightsName =
"fMixedHarmonicProductOfEventWeights";
3771 mixedHarmonicProductOfEventWeightsName +=
fAnalysisLabel->Data();
3776 for(
Int_t b=1;b<=8;b++)
3784 TString mixedHarmonicProductOfCorrelationsName =
"fMixedHarmonicProductOfCorrelations";
3785 mixedHarmonicProductOfCorrelationsName +=
fAnalysisLabel->Data();