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 fUsePhiEtaWeightsChDep(kFALSE),
117 fUsePhiEtaWeightsVtxDep(kFALSE),
118 fUsePhiEtaWeightsChPtDep(kFALSE),
119 fUseZDCESEMulWeights(kFALSE),
120 fUseZDCESESpecWeights(kFALSE),
121 fUseParticleWeights(NULL),
123 fMultiplicityWeight(NULL),
127 fIntFlowProfiles(NULL),
128 fIntFlowResults(NULL),
129 fIntFlowAllCorrelationsVsM(NULL),
131 fApplyCorrectionForNUA(kFALSE),
132 fApplyCorrectionForNUAVsM(kFALSE),
136 fPropagateErrorAlsoFromNIT(kFALSE),
137 fCalculateCumulantsVsM(kFALSE),
138 fCalculateAllCorrelationsVsM(kFALSE),
139 fMinimumBiasReferenceFlow(kTRUE),
140 fForgetAboutCovariances(kFALSE),
141 fStoreVarious(kFALSE),
143 fUse2DHistograms(kFALSE),
144 fFillProfilesVsMUsingWeights(kTRUE),
145 fUseQvectorTerms(kFALSE),
149 fIntFlowCorrelationsEBE(NULL),
150 fIntFlowEventWeightsForCorrelationsEBE(NULL),
151 fIntFlowCorrelationsAllEBE(NULL),
153 fNumberOfPOIsEBE(0.),
154 fReferenceMultiplicityEBE(0.),
156 fNewCentralityEBE(0.),
162 fCentralityCL1EBE(0.),
164 fCentralityTRKEBE(0.),
168 fAvMultiplicity(NULL),
169 fIntFlowCorrelationsPro(NULL),
170 fIntFlowSquaredCorrelationsPro(NULL),
171 fIntFlowCorrelationsAllPro(NULL),
172 fIntFlowExtraCorrelationsPro(NULL),
173 fIntFlowProductOfCorrelationsPro(NULL),
174 fIntFlowProductOfCorrectionTermsForNUAPro(NULL),
175 fIntFlowCorrelationsHist(NULL),
176 fIntFlowCorrelationsAllHist(NULL),
177 fIntFlowCovariances(NULL),
178 fIntFlowSumOfProductOfEventWeights(NULL),
179 fIntFlowCovariancesNUA(NULL),
180 fIntFlowSumOfProductOfEventWeightsNUA(NULL),
181 fIntFlowQcumulants(NULL),
182 fIntFlowQcumulantsRebinnedInM(NULL),
183 fIntFlowQcumulantsErrorSquaredRatio(NULL),
185 fIntFlowRebinnedInM(NULL),
186 fIntFlowDetectorBias(NULL),
189 fDiffFlowProfiles(NULL),
190 fDiffFlowResults(NULL),
192 fDiffFlowFlags(NULL),
193 fCalculateDiffFlow(kTRUE),
194 fCalculate2DDiffFlow(kFALSE),
195 fCalculateDiffFlowVsEta(kTRUE),
197 fOtherDiffCorrelatorsList(NULL),
199 fDistributionsList(NULL),
200 fDistributionsFlags(NULL),
201 fStoreDistributions(kFALSE),
202 fnBinsForCorrelations(10000),
204 fNestedLoopsList(NULL),
205 fEvaluateIntFlowNestedLoops(kFALSE),
206 fEvaluateDiffFlowNestedLoops(kFALSE),
207 fMaxAllowedMultiplicity(10),
208 fEvaluateNestedLoops(NULL),
209 fIntFlowDirectCorrelations(NULL),
210 fIntFlowExtraDirectCorrelations(NULL),
211 fCrossCheckInPtBinNo(10),
212 fCrossCheckInEtaBinNo(20),
213 fNoOfParticlesInBin(NULL),
214 fMixedHarmonicsNestedLoops(NULL),
216 fMixedHarmonicsList(NULL),
217 fMixedHarmonicsProfiles(NULL),
218 fMixedHarmonicsResults(NULL),
219 fMixedHarmonicsErrorPropagation(NULL),
220 fMixedHarmonicsFlags(NULL),
221 fCalculateMixedHarmonics(kFALSE),
222 fCalculateMixedHarmonicsVsM(kFALSE),
223 f2pCorrelations(NULL),
224 f3pCorrelations(NULL),
225 f4pCorrelations(NULL),
226 f5pCorrelations(NULL),
227 f6pCorrelations(NULL),
228 f7pCorrelations(NULL),
229 f8pCorrelations(NULL),
237 fMixedHarmonicProductOfEventWeights(NULL),
238 fMixedHarmonicProductOfCorrelations(NULL),
240 fControlHistogramsList(NULL),
241 fControlHistogramsFlags(NULL),
242 fStoreControlHistograms(kFALSE),
243 fCorrelationNoRPsVsRefMult(NULL),
244 fCorrelationNoPOIsVsRefMult(NULL),
245 fCorrelationNoRPsVsNoPOIs(NULL),
247 fBootstrapList(NULL),
248 fBootstrapProfilesList(NULL),
249 fBootstrapResultsList(NULL),
250 fBootstrapFlags(NULL),
251 fUseBootstrap(kFALSE),
252 fUseBootstrapVsM(kFALSE),
255 fBootstrapCorrelations(NULL),
256 fBootstrapCumulants(NULL),
261 fCalculateCRC(kTRUE),
262 fCalculateCRCPt(kFALSE),
263 fCalculateCME(kFALSE),
264 fCalculateCRCInt(kFALSE),
265 fCalculateCRC2(kFALSE),
266 fCalculateCRCVZ(kFALSE),
267 fCalculateCRCZDC(kFALSE),
268 fCalculateFlowQC(kFALSE),
269 fCalculateFlowZDC(kFALSE),
270 fCalculateFlowVZ(kFALSE),
271 fCalculateEbEFlow(kFALSE),
272 fStoreZDCQVecVtxPos(kFALSE),
273 fUsePhiEtaCuts(kFALSE),
276 fRecenterZDC(kFALSE),
278 fUseCRCRecenter(kFALSE),
288 fCorrWeightTPC(kUnit),
289 fCorrWeightVZ(kUnit),
290 fCorrWeightZDC(kUnit),
293 fCRCCenBinWidth(CenWidth),
294 fCRCIntRbRList(NULL),
297 fInteractionRate(kAll),
298 fSelectCharge(kAllCh),
299 fPOIExtraWeights(kNone),
301 fCRCQVecListTPC(NULL),
302 fCRCQVecWeightsList(NULL),
303 fCRCZDCCalibList(NULL),
304 fCRCVZEROCalibList(NULL),
305 fCRCZDCResList(NULL),
309 fCRCZDCRbRList(NULL),
316 fFlowSPZDCList(NULL),
321 fFlowQCDeltaEta(0.4),
327 fQAZDCCutsFlag(kTRUE),
330 fZDCGainAlpha(0.395),
331 fbFlagIsPosMagField(kFALSE)
336 fHistList =
new TList();
337 fHistList->SetName(
"cobjQC");
338 fHistList->SetOwner(kTRUE);
341 fTempList =
new TList();
342 fTempList->SetName(
"temp");
343 fTempList->SetOwner(kTRUE);
346 fMultiplicityWeight =
new TString(
"combinations");
349 fAnalysisLabel =
new TString();
352 this->InitializeArraysForIntFlow();
353 this->InitializeArraysForDiffFlow();
354 this->InitializeArraysForDistributions();
355 this->InitializeArraysForVarious();
356 this->InitializeArraysForNestedLoops();
357 this->InitializeArraysForMixedHarmonics();
358 this->InitializeArraysForControlHistograms();
359 this->InitializeArraysForBootstrap();
367 this->InitializeCostantsForCRC();
368 this->InitializeArraysForParticleWeights();
369 this->InitializeArraysForCRC();
370 this->InitializeArraysForCRCVZ();
371 this->InitializeArraysForCRCZDC();
372 this->InitializeArraysForCRC2();
373 this->InitializeArraysForQVec();
374 this->InitializeArraysForCRCPt();
375 this->InitializeArraysForCME();
376 this->InitializeArraysForFlowEbE();
377 this->InitializeArraysForFlowQC();
378 this->InitializeArraysForFlowQCHighOrders();
379 this->InitializeArraysForFlowSPZDC();
380 this->InitializeArraysForFlowSPVZ();
381 this->InitializeArraysForEbEFlow();
424 Bool_t oldHistAddStatus = TH1::AddDirectoryStatus();
425 TH1::AddDirectory(kFALSE);
478 TH1::AddDirectory(oldHistAddStatus);
519 Int_t nCounterNoRPs = 0;
556 if(fRunBin<0 || fRunBin>=
fCRCnRun) {
return;}
558 if(fCenBin<0 || fCenBin>=
fCRCnCen) {
return;}
662 if(QMC>0. && QMA>0. && sqrt(QCRe*QCRe+QCIm*QCIm)>1.E-6 && sqrt(QARe*QARe+QAIm*QAIm)>1.E-6) {
709 AliWarning(
"WARNING: POIExtraWeights (kEtaPhiRbR) not found ! \n");
713 for (
Int_t i=0; i<2; i++) {
717 AliWarning(
"WARNING: POIExtraWeights (kEtaPhiChRbR) not found ! \n");
722 Int_t dRun15hPos[] = {246390, 246391, 246392, 246994, 246991, 246989, 246984, 246982, 246980, 246948, 246945, 246928, 246851, 246847, 246846, 246845, 246844, 246810, 246809, 246808, 246807, 246805, 246804, 246766, 246765, 246763, 246760, 246759, 246758, 246757, 246751, 246750, 246495, 246493, 246488, 246487, 246434, 246431, 246428, 246424};
723 for (
Int_t i=0; i<40; i++) {
730 for(
Int_t i=0;i<nPrim;i++) {
740 dPhi = aftsTrack->
Phi();
741 dPt = aftsTrack->
Pt();
742 dEta = aftsTrack->
Eta();
743 dCharge = aftsTrack->
Charge();
748 cw = (dCharge > 0. ? 0 : 1);
761 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
768 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
773 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
779 Int_t ptbebe = (dPt>1.? 2 : (dPt>0.5 ? 1 : 0));
783 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
789 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
794 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
798 for(
Int_t m=0;m<12;m++)
800 for(
Int_t k=0;k<9;k++)
802 (*fReQ)(m,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1)*n*dPhi);
803 (*fImQ)(m,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1)*n*dPhi);
807 for(
Int_t p=0;p<8;p++)
809 for(
Int_t k=0;k<9;k++)
811 (*fSpk)(p,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k);
820 for(
Int_t k=0;k<9;k++)
822 for(
Int_t m=0;m<4;m++)
828 fReRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
829 fImRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
832 fs1dEBE[0][pe][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
838 fReRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
839 fImRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
842 fs2dEBE[0][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
851 for(
Int_t k=0;k<9;k++)
853 for(
Int_t m=0;m<4;m++)
859 fReRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
860 fImRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
863 fs1dEBE[2][pe][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
869 fReRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
870 fImRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
873 fs2dEBE[2][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
886 dPhi = aftsTrack->
Phi();
887 dPt = aftsTrack->
Pt();
888 dEta = aftsTrack->
Eta();
889 dCharge = aftsTrack->
Charge();
894 cw = (dCharge > 0. ? 0 : 1);
907 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
914 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
919 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
925 Int_t ptbebe = (dPt>1.? 2 : (dPt>0.5 ? 1 : 0));
929 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
935 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
940 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
946 if(dPhi>2.136283 && dPhi<2.324779)
continue;
952 for(
Int_t k=0;k<9;k++)
954 for(
Int_t m=0;m<4;m++)
960 fReRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
961 fImRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
966 fReRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
967 fImRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
975 fCRCQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
976 fCRCQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
977 fCRCMult[cw][h]->Fill(dEta,wPhiEta);
979 fCRC2QRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
980 fCRC2QIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
981 fCRC2Mul[cw][h]->Fill(dEta,pow(wPhiEta,h));
983 fCRCZDCQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
984 fCRCZDCQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
988 fCRC2QRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
989 fCRC2QIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
990 fCRC2Mul[2][h]->Fill(dEta,pow(wPhiEta,h));
994 fCRCZDCQRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
995 fCRCZDCQIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
998 fCRCZDCQRe[3][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
999 fCRCZDCQIm[3][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
1007 if(weraw > 0.) SpecWeig = 1./weraw;
1009 fCMEQRe[cw][h]->Fill(dEta,SpecWeig*wPhiEta*TMath::Cos((h+1.)*dPhi));
1010 fCMEQIm[cw][h]->Fill(dEta,SpecWeig*wPhiEta*TMath::Sin((h+1.)*dPhi));
1011 fCMEMult[cw][h]->Fill(dEta,SpecWeig*wPhiEta);
1012 fCMEQRe[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.)*TMath::Cos((h+1.)*dPhi));
1013 fCMEQIm[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.)*TMath::Sin((h+1.)*dPhi));
1014 fCMEMult[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.));
1030 fPOIPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1031 fPOIPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1034 fPOIPtDiffQReCh[cw][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1035 fPOIPtDiffQImCh[cw][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1038 fPOIPhiDiffQRe[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1039 fPOIPhiDiffQIm[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1043 Int_t keta = (dEta<0.?0:1);
1044 fPOIPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1045 fPOIPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1047 fPOIPhiDiffQReEG[keta][k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1048 fPOIPhiDiffQImEG[keta][k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1052 }
else if(fFlowQCDeltaEta<0. && fFlowQCDeltaEta>-1.) {
1055 fPOIPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1056 fPOIPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1059 fPOIPhiDiffQRe[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1060 fPOIPhiDiffQIm[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1065 if((dEta>0. && dEta<0.4-boundetagap/2.) || (dEta>0.4+boundetagap/2. && dEta<0.8)) {
1067 if(dEta>0. && dEta<0.4-boundetagap/2.) keta = 0;
1069 fPOIPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1070 fPOIPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1078 }
else if(fFlowQCDeltaEta<-1. && fFlowQCDeltaEta>-2.) {
1081 fPOIPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1082 fPOIPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1085 fPOIPhiDiffQRe[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1086 fPOIPhiDiffQIm[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1091 if((dEta<0. && dEta>-0.4+boundetagap/2.) || (dEta<-0.4-boundetagap/2. && dEta>-0.8)) {
1093 if(dEta<0. && dEta>-0.4+boundetagap/2.) keta = 0;
1095 fPOIPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1096 fPOIPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1109 fEtaDiffQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
1110 fEtaDiffQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
1112 fPOIEtaPtQRe[cw][h]->Fill(dEta,dPt,wPhiEta*TMath::Cos((h+1.)*dPhi));
1113 fPOIEtaPtQIm[cw][h]->Fill(dEta,dPt,wPhiEta*TMath::Sin((h+1.)*dPhi));
1124 Int_t ptbebe = (dPt>1.? 2 : (dPt>0.5 ? 1 : 0));
1126 for (
Int_t h=0;h<6;h++) {
1141 printf(
"\n WARNING (QC): No particle (i.e. aftsTrack is a NULL pointer in AFAWQC::Make())!!!!\n\n");
1148 for(
Int_t p=0;p<8;p++)
1150 for(
Int_t k=0;k<9;k++)
1152 (*fSpk)(p,k)=pow((*
fSpk)(p,k),p+1);
1581 cout<<
"Skipping the event because multiplicity is "<<nPrim<<
". Too high to evaluate nested loops!"<<endl;
1585 cout<<
"Skipping the event because multiplicity is "<<nPrim<<
"."<<endl;
1721 cosP1n = dReQ1n/dMult;
1739 cosP1nP1n = (pow(dReQ1n,2)-pow(dImQ1n,2)-dReQ2n)/(dMult*(dMult-1));
1740 cosP2nM1n = (dReQ2n*dReQ1n+dImQ2n*dImQ1n-dReQ1n)/(dMult*(dMult-1));
1764 cosP1nM1nM1n = (dReQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2))-dReQ1n*dReQ2n-dImQ1n*dImQ2n-2.*(dMult-1)*dReQ1n)
1765 / (dMult*(dMult-1)*(dMult-2));
1830 sinP1n = dImQ1n/dMult;
1847 sinP1nP1n = (2.*dReQ1n*dImQ1n-dImQ2n)/(dMult*(dMult-1));
1848 sinP2nM1n = (dImQ2n*dReQ1n-dReQ2n*dImQ1n-dImQ1n)/(dMult*(dMult-1));
1872 sinP1nM1nM1n = (-dImQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2))+dReQ1n*dImQ2n-dImQ1n*dReQ2n+2.*(dMult-1)*dImQ1n)
1873 / (dMult*(dMult-1)*(dMult-2));
1903 if(outputListHistos)
1908 printf(
"\n WARNING (QC): fHistList is NULL in AFAWQC::GOH() !!!!\n\n");
1936 printf(
"\n WARNING (QC): outputListHistos is NULL in AFAWQC::GOH() !!!!\n\n");
1948 Int_t nBinsPt = profilePtEta->GetNbinsX();
1949 Double_t dPtMin = (profilePtEta->GetXaxis())->GetXmin();
1950 Double_t dPtMax = (profilePtEta->GetXaxis())->GetXmax();
1952 Int_t nBinsEta = profilePtEta->GetNbinsY();
1954 TProfile *profilePt =
new TProfile(
"",
"",nBinsPt,dPtMin,dPtMax);
1956 for(
Int_t p=1;p<=nBinsPt;p++)
1964 for(
Int_t e=1;e<=nBinsEta;e++)
1966 contentPt += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
1967 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1968 entryPt += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1970 sum1 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
1971 * (pow(profilePtEta->GetBinError(profilePtEta->GetBin(p,e)),2.)
1972 + pow(profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)),2.));
1973 sum2 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1974 sum3 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
1975 * (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)));
1977 if(sum2>0. && sum1/sum2-pow(sum3/sum2,2.) > 0.)
1979 spreadPt = pow(sum1/sum2-pow(sum3/sum2,2.),0.5);
1981 profilePt->SetBinContent(p,contentPt);
1982 profilePt->SetBinEntries(p,entryPt);
1984 profilePt->SetBinError(p,spreadPt);
2001 Int_t nBinsEta = profilePtEta->GetNbinsY();
2002 Double_t dEtaMin = (profilePtEta->GetYaxis())->GetXmin();
2003 Double_t dEtaMax = (profilePtEta->GetYaxis())->GetXmax();
2005 Int_t nBinsPt = profilePtEta->GetNbinsX();
2007 TProfile *profileEta =
new TProfile(
"",
"",nBinsEta,dEtaMin,dEtaMax);
2009 for(
Int_t e=1;e<=nBinsEta;e++)
2013 for(
Int_t p=1;p<=nBinsPt;p++)
2015 contentEta += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
2016 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
2017 entryEta += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
2019 profileEta->SetBinContent(e,contentEta);
2020 profileEta->SetBinEntries(e,entryEta);
2040 for(
Int_t b=0;b<4;b++)
2051 }
else if(type ==
"RP")
2061 }
else if(type ==
"POI")
2073 for(
Int_t b=0;b<4;b++)
2082 TString subtitle2 =
" (rebinned in M)";
2084 if(type !=
"RF, rebinned in M")
2088 subtitle.Append(type);
2089 subtitle.Append(
", without weights)");
2092 subtitle.Append(type);
2093 subtitle.Append(
", with weights)");
2099 subtitle.Append(
"RF");
2100 subtitle.Append(
", without weights)");
2103 subtitle.Append(
"RF");
2104 subtitle.Append(
", with weights)");
2109 cout<<
"*************************************"<<endl;
2110 cout<<
"*************************************"<<endl;
2111 cout<<title.Data()<<endl;
2112 cout<<subtitle.Data()<<endl;
2113 if(type ==
"RF, rebinned in M"){cout<<subtitle2.Data()<<endl;}
2116 for(
Int_t i=0;i<4;i++)
2118 cout<<
" v_"<<n<<
"{"<<2*(i+1)<<
"} = "<<dVn[i]<<
" +/- "<<dVnErr[i]<<endl;
2126 cout<<
" detector bias (corrected for): "<<endl;
2129 cout<<
" detector bias (not corrected for):"<<endl;
2135 if(type ==
"RF" || type ==
"RF, rebinned in M")
2139 else if (type ==
"RP")
2143 else if (type ==
"POI")
2148 cout<<
"*************************************"<<endl;
2149 cout<<
"*************************************"<<endl;
2159 TFile *output =
new TFile(outputFileName.Data(),
"RECREATE");
2175 outputFileName->Write(outputFileName->GetName(), TObject::kSingleKey);
2188 TString commonHistsName =
"AliFlowCommonHistQC";
2196 TString commonHists2ndOrderName =
"AliFlowCommonHist2ndOrderQC";
2201 TString commonHists4thOrderName =
"AliFlowCommonHist4thOrderQC";
2206 TString commonHists6thOrderName =
"AliFlowCommonHist6thOrderQC";
2211 TString commonHists8thOrderName =
"AliFlowCommonHist8thOrderQC";
2219 TString commonHistResults2ndOrderName =
"AliFlowCommonHistResults2ndOrderQC";
2224 TString commonHistResults4thOrderName =
"AliFlowCommonHistResults4thOrderQC";
2229 TString commonHistResults6thOrderName =
"AliFlowCommonHistResults6thOrderQC";
2234 TString commonHistResults8thOrderName =
"AliFlowCommonHistResults8thOrderQC";
2249 printf(
"\n WARNING (QC): fWeightsList is NULL in AFAWQC::BAFWH() !!!! \n\n");
2253 TString fUseParticleWeightsName =
"fUseParticleWeightsQC";
2255 fUseParticleWeights =
new TProfile(fUseParticleWeightsName.Data(),
"0 = particle weight not used, 1 = particle weight used ",8,0,8);
2449 TF1 *CenFit =
new TF1(
"CenFit",
"pol0", 0., 100.);
2452 Double_t CenAv = CenFit->GetParameter(0);
2464 Double_t CenAv = CenFit->GetParameter(0);
2466 Double_t SemiCenAv = CenFit->GetParameter(0);
2492 TString sinCosFlag[2] = {
"sin",
"cos"};
2493 TString powerFlag[2] = {
"linear",
"quadratic"};
2496 TString intFlowFlagsName =
"fIntFlowFlags";
2498 fIntFlowFlags =
new TProfile(intFlowFlagsName.Data(),
"Flags for Integrated Flow",20,0.,20.);
2504 fIntFlowFlags->GetXaxis()->SetBinLabel(1,
"Particle Weights");
2506 fIntFlowFlags->GetXaxis()->SetBinLabel(3,
"Corrected for NUA?");
2507 fIntFlowFlags->GetXaxis()->SetBinLabel(4,
"Print RF results");
2508 fIntFlowFlags->GetXaxis()->SetBinLabel(5,
"Print RP results");
2509 fIntFlowFlags->GetXaxis()->SetBinLabel(6,
"Print POI results");
2510 fIntFlowFlags->GetXaxis()->SetBinLabel(7,
"Print RF (rebinned in M) results");
2511 fIntFlowFlags->GetXaxis()->SetBinLabel(8,
"Corrected for NUA vs M?");
2512 fIntFlowFlags->GetXaxis()->SetBinLabel(9,
"Propagate errors to v_{n} from correlations?");
2513 fIntFlowFlags->GetXaxis()->SetBinLabel(10,
"Calculate cumulants vs M");
2514 fIntFlowFlags->GetXaxis()->SetBinLabel(11,
"fMinimumBiasReferenceFlow");
2515 fIntFlowFlags->GetXaxis()->SetBinLabel(12,
"fForgetAboutCovariances");
2517 fIntFlowFlags->GetXaxis()->SetBinLabel(14,
"fFillMultipleControlHistograms");
2518 fIntFlowFlags->GetXaxis()->SetBinLabel(15,
"Calculate all correlations vs M");
2519 fIntFlowFlags->GetXaxis()->SetBinLabel(16,
"fMultiplicityIs");
2521 fIntFlowFlags->GetXaxis()->SetBinLabel(18,
"fUse2DHistograms");
2522 fIntFlowFlags->GetXaxis()->SetBinLabel(19,
"fFillProfilesVsMUsingWeights");
2523 fIntFlowFlags->GetXaxis()->SetBinLabel(20,
"fUseQvectorTerms");
2528 fReQ =
new TMatrixD(12,9);
2529 fImQ =
new TMatrixD(12,9);
2530 fSpk =
new TMatrixD(8,9);
2532 TString intFlowCorrelationsEBEName =
"fIntFlowCorrelationsEBE";
2536 TString intFlowEventWeightsForCorrelationsEBEName =
"fIntFlowEventWeightsForCorrelationsEBE";
2537 intFlowEventWeightsForCorrelationsEBEName +=
fAnalysisLabel->Data();
2540 TString intFlowCorrelationsAllEBEName =
"fIntFlowCorrelationsAllEBE";
2545 TString fIntFlowCorrectionTermsForNUAEBEName =
"fIntFlowCorrectionTermsForNUAEBE";
2547 for(
Int_t sc=0;sc<2;sc++)
2549 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);
2552 TString fIntFlowEventWeightForCorrectionTermsForNUAEBEName =
"fIntFlowEventWeightForCorrectionTermsForNUAEBE";
2553 fIntFlowEventWeightForCorrectionTermsForNUAEBEName +=
fAnalysisLabel->Data();
2554 for(
Int_t sc=0;sc<2;sc++)
2560 TString avMultiplicityName =
"fAvMultiplicity";
2562 fAvMultiplicity =
new TProfile(avMultiplicityName.Data(),
"Average multiplicities of reference particles (RPs)",9,0,9);
2579 TString correlationFlag[4] = {
"#LT#LT2#GT#GT",
"#LT#LT4#GT#GT",
"#LT#LT6#GT#GT",
"#LT#LT8#GT#GT"};
2580 TString intFlowCorrelationsProName =
"fIntFlowCorrelationsPro";
2582 fIntFlowCorrelationsPro =
new TProfile(intFlowCorrelationsProName.Data(),
"Average correlations for all events",4,0,4,
"s");
2588 for(
Int_t b=0;b<4;b++)
2594 TString squaredCorrelationFlag[4] = {
"#LT#LT2#GT^{2}#GT",
"#LT#LT4#GT^{2}#GT",
"#LT#LT6#GT^{2}#GT",
"#LT#LT8#GT^{2}#GT"};
2595 TString intFlowSquaredCorrelationsProName =
"fIntFlowSquaredCorrelationsPro";
2603 for(
Int_t b=0;b<4;b++)
2610 for(
Int_t ci=0;ci<4;ci++)
2613 TString intFlowCorrelationsVsMProName =
"fIntFlowCorrelationsVsMPro";
2615 fIntFlowCorrelationsVsMPro[ci] =
new TProfile(Form(
"%s, %s",intFlowCorrelationsVsMProName.Data(),correlationFlag[ci].Data()),
2616 Form(
"%s vs multiplicity",correlationFlag[ci].
Data()),
2632 TString intFlowSquaredCorrelationsVsMProName =
"fIntFlowSquaredCorrelationsVsMPro";
2635 Form(
"%s vs multiplicity",squaredCorrelationFlag[ci].
Data()),
2653 TString intFlowCorrelationsAllProName =
"fIntFlowCorrelationsAllPro";
2655 fIntFlowCorrelationsAllPro =
new TProfile(intFlowCorrelationsAllProName.Data(),
"Average all correlations for all events",64,0,64);
2761 fIntFlowCorrelationsAllVsMPro[30] =
new TProfile(
"eight1n1n1n1n1n1n1n1n",
"#LT#LT8#GT#GT_{n,n,n,n|n,n,n,n}",
fnBinsMult,
fMinMult,
fMaxMult);
2795 for(
Int_t n=0;n<63;n++)
2817 TString intFlowExtraCorrelationsProName =
"fIntFlowExtraCorrelationsPro";
2819 fIntFlowExtraCorrelationsPro =
new TProfile(intFlowExtraCorrelationsProName.Data(),
"Average extra correlations for all events",100,0,100,
"s");
2830 TString productFlag[6] = {
"#LT#LT2#GT#LT4#GT#GT",
"#LT#LT2#GT#LT6#GT#GT",
"#LT#LT2#GT#LT8#GT#GT",
2831 "#LT#LT4#GT#LT6#GT#GT",
"#LT#LT4#GT#LT8#GT#GT",
"#LT#LT6#GT#LT8#GT#GT"};
2832 TString intFlowProductOfCorrelationsProName =
"fIntFlowProductOfCorrelationsPro";
2839 for(
Int_t b=0;b<6;b++)
2848 TString intFlowProductOfCorrelationsVsMProName =
"fIntFlowProductOfCorrelationsVsMPro";
2849 intFlowProductOfCorrelationsVsMProName +=
fAnalysisLabel->Data();
2853 Form(
"%s versus multiplicity",productFlag[
pi].
Data()),
2869 TString intFlowProductOfCorrectionTermsForNUAProName =
"fIntFlowProductOfCorrectionTermsForNUAPro";
2870 intFlowProductOfCorrectionTermsForNUAProName +=
fAnalysisLabel->Data();
2905 for(
Int_t sc=0;sc<2;sc++)
2907 TString intFlowCorrectionTermsForNUAProName =
"fIntFlowCorrectionTermsForNUAPro";
2909 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");
2922 TString correctionTermFlag[4] = {
"(n(phi1))",
"(n(phi1+phi2))",
"(n(phi1-phi2-phi3))",
"(n(2phi1-phi2))"};
2923 for(
Int_t ci=0;ci<4;ci++)
2925 TString intFlowCorrectionTermsForNUAVsMProName =
"fIntFlowCorrectionTermsForNUAVsMPro";
2926 intFlowCorrectionTermsForNUAVsMProName +=
fAnalysisLabel->Data();
2927 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");
2935 TString intFlowCorrelationsHistName =
"fIntFlowCorrelationsHist";
2950 for(
Int_t ci=0;ci<4;ci++)
2952 TString intFlowCorrelationsVsMHistName =
"fIntFlowCorrelationsVsMHist";
2955 Form(
"%s vs multiplicity",correlationFlag[ci].
Data()),
2972 TString intFlowCorrelationsAllHistName =
"fIntFlowCorrelationsAllHist";
3013 for(
Int_t sc=0;sc<2;sc++)
3015 TString intFlowCorrectionTermsForNUAHistName =
"fIntFlowCorrectionTermsForNUAHist";
3017 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);
3029 TString intFlowCovariancesName =
"fIntFlowCovariances";
3031 fIntFlowCovariances =
new TH1D(intFlowCovariancesName.Data(),
"Covariances (multiplied with weight dependent prefactor)",6,0,6);
3042 TString intFlowSumOfEventWeightsName =
"fIntFlowSumOfEventWeights";
3044 for(
Int_t power=0;power<2;power++)
3046 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);
3055 }
else if (power == 1)
3065 TString intFlowSumOfProductOfEventWeightsName =
"fIntFlowSumOfProductOfEventWeights";
3081 TString intFlowCovariancesVsMName =
"fIntFlowCovariancesVsM";
3083 TString covarianceFlag[6] = {
"Cov(<2>,<4>)",
"Cov(<2>,<6>)",
"Cov(<2>,<8>)",
"Cov(<4>,<6>)",
"Cov(<4>,<8>)",
"Cov(<6>,<8>)"};
3084 for(
Int_t ci=0;ci<6;ci++)
3087 Form(
"%s vs multiplicity",covarianceFlag[ci].
Data()),
3107 TString intFlowSumOfEventWeightsVsMName =
"fIntFlowSumOfEventWeightsVsM";
3109 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>}"},
3110 {
"#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}"}};
3111 for(
Int_t si=0;si<4;si++)
3113 for(
Int_t power=0;power<2;power++)
3116 Form(
"%s vs multiplicity",sumFlag[power][si].
Data()),
3138 TString intFlowSumOfProductOfEventWeightsVsMName =
"fIntFlowSumOfProductOfEventWeightsVsM";
3139 intFlowSumOfProductOfEventWeightsVsMName +=
fAnalysisLabel->Data();
3140 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>}",
3141 "#sum_{i=1}^{N} w_{<4>} w_{<6>}",
"#sum_{i=1}^{N} w_{<4>} w_{<8>}",
"#sum_{i=1}^{N} w_{<6>} w_{<8>}"};
3145 Form(
"%s versus multiplicity",sopowFlag[
pi].
Data()),
3162 TString intFlowCovariancesNUAName =
"fIntFlowCovariancesNUA";
3164 fIntFlowCovariancesNUA =
new TH1D(intFlowCovariancesNUAName.Data(),
"Covariances for NUA (multiplied with weight dependent prefactor)",27,0,27);
3183 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(16,
"Cov(<cos(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3184 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(17,
"Cov(<cos(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3187 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(20,
"Cov(<sin(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3188 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(21,
"Cov(<sin(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3189 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(22,
"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}+#phi_{2})>)");
3190 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(23,
"Cov(<cos(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3191 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(24,
"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3192 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(25,
"Cov(<sin(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3193 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(26,
"Cov(<sin(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3194 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(27,
"Cov(<cos(#phi_{1}-#phi_{2}-#phi_{3}>,<sin(#phi_{1}-#phi_{2}-#phi_{3}>)");
3197 TString intFlowSumOfEventWeightsNUAName =
"fIntFlowSumOfEventWeightsNUA";
3199 for(
Int_t sc=0;sc<2;sc++)
3201 for(
Int_t power=0;power<2;power++)
3203 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);
3212 }
else if(power == 1)
3216 (
fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(3,Form(
"#sum_{i=1}^{N} w_{<%s(#phi_{1}-#phi_{2}-#phi_{3})>}^{2}",sinCosFlag[sc].
Data()));
3223 TString intFlowSumOfProductOfEventWeightsNUAName =
"fIntFlowSumOfProductOfEventWeightsNUA";
3224 intFlowSumOfProductOfEventWeightsNUAName +=
fAnalysisLabel->Data();
3257 TString cumulantFlag[4] = {
"QC{2}",
"QC{4}",
"QC{6}",
"QC{8}"};
3258 TString intFlowQcumulantsName =
"fIntFlowQcumulants";
3263 fIntFlowQcumulants->SetTitle(
"Reference Q-cumulants (error from non-isotropic terms also propagated)");
3267 for(
Int_t b=0;b<4;b++)
3275 TString intFlowQcumulantsRebinnedInMName =
"fIntFlowQcumulantsRebinnedInM";
3280 for(
Int_t b=0;b<4;b++)
3287 TString intFlowQcumulantsErrorSquaredRatioName =
"fIntFlowQcumulantsErrorSquaredRatio";
3288 intFlowQcumulantsErrorSquaredRatioName +=
fAnalysisLabel->Data();
3292 for(
Int_t b=0;b<4;b++)
3300 TString intFlowQcumulantsVsMName =
"fIntFlowQcumulantsVsM";
3302 for(
Int_t co=0;co<4;co++)
3305 Form(
"%s vs multiplicity",cumulantFlag[co].
Data()),
3322 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)};
3323 TString intFlowName =
"fIntFlow";
3326 fIntFlow =
new TH1D(intFlowName.Data(),
"Reference flow estimates from Q-cumulants",4,0,4);
3329 for(
Int_t b=0;b<4;b++)
3331 (
fIntFlow->GetXaxis())->SetBinLabel(b+1,flowFlag[b].
Data());
3337 TString intFlowRebinnedInMName =
"fIntFlowRebinnedInM";
3339 fIntFlowRebinnedInM =
new TH1D(intFlowRebinnedInMName.Data(),
"Reference flow estimates from Q-cumulants (rebinned in M)",4,0,4);
3342 for(
Int_t b=0;b<4;b++)
3351 TString intFlowVsMName =
"fIntFlowVsM";
3353 for(
Int_t co=0;co<4;co++)
3355 fIntFlowVsM[co] =
new TH1D(Form(
"%s, %s",intFlowVsMName.Data(),flowFlag[co].Data()),
3356 Form(
"%s vs multiplicity",flowFlag[co].
Data()),
3363 fIntFlowVsM[co]->GetXaxis()->SetTitle(
"Reference multiplicity (from ESD)");
3373 TString intFlowDetectorBiasName =
"fIntFlowDetectorBias";
3378 for(
Int_t ci=0;ci<4;ci++)
3380 (
fIntFlowDetectorBias->GetXaxis())->SetBinLabel(ci+1,Form(
"#frac{corrected}{measured} %s",cumulantFlag[ci].
Data()));
3386 TString intFlowDetectorBiasVsMName =
"fIntFlowDetectorBiasVsM";
3388 for(
Int_t ci=0;ci<4;ci++)
3391 Form(
"Quantifying detector bias for %s vs multiplicity",cumulantFlag[ci].
Data()),
3420 TString controlHistogramsFlagsName =
"fControlHistogramsFlags";
3422 fControlHistogramsFlags =
new TProfile(controlHistogramsFlagsName.Data(),
"Flags for Control Histograms",2,0,2);
3436 TString sCorrelationNoRPsVsRefMultName =
"fCorrelationNoRPsVsRefMult";
3447 TString sCorrelationNoPOIsVsRefMultName =
"fCorrelationNoPOIsVsRefMult";
3458 TString sCorrelationNoRPsVsNoPOIsName =
"fCorrelationNoRPsVsNoPOIs";
3469 TString sCorrelation[4] = {
"#LT2#GT",
"#LT4#GT",
"#LT6#GT",
"#LT8#GT"};
3473 sMultiplicity =
"# RPs";
3476 sMultiplicity =
"Reference multiplicity (from ESD)";
3479 sMultiplicity =
"# POIs";
3481 for(
Int_t ci=0;ci<4;ci++)
3493 TString sCorrelationProduct[1] = {
"#LT2#GT#LT4#GT"};
3494 for(
Int_t cpi=0;cpi<1;cpi++)
3508 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}}"};
3509 for(
Int_t qvti=0;qvti<4;qvti++)
3536 TString bootstrapFlagsName =
"fBootstrapFlags";
3538 fBootstrapFlags =
new TProfile(bootstrapFlagsName.Data(),
"Flags for bootstrap",3,0,3);
3550 TString correlationFlag[4] = {
"#LT#LT2#GT#GT",
"#LT#LT4#GT#GT",
"#LT#LT6#GT#GT",
"#LT#LT8#GT#GT"};
3551 TString cumulantFlag[4] = {
"QC{2}",
"QC{4}",
"QC{6}",
"QC{8}"};
3555 TString bootstrapCorrelationsName =
"fBootstrapCorrelations";
3559 for(
Int_t ci=0;ci<4;ci++)
3569 TString bootstrapCumulantsName =
"fBootstrapCumulants";
3573 for(
Int_t co=0;co<4;co++)
3588 sMultiplicity =
"# RPs";
3591 sMultiplicity =
"Reference multiplicity (from ESD)";
3594 sMultiplicity =
"# POIs";
3599 TString bootstrapCorrelationsVsMName =
"fBootstrapCorrelationsVsM";
3601 for(
Int_t ci=0;ci<4;ci++)
3603 fBootstrapCorrelationsVsM[ci] =
new TProfile2D(Form(
"%s, %s",bootstrapCorrelationsVsMName.Data(),correlationFlag[ci].Data()),
3604 Form(
"Bootstrap Correlations Vs. M, %s",correlationFlag[ci].
Data()),
3615 TString bootstrapCumulantsVsMName =
"fBootstrapCumulantsVsM";
3617 for(
Int_t co=0;co<4;co++)
3620 Form(
"Bootstrap Cumulants Vs. M, %s",cumulantFlag[co].
Data()),
3646 TString mixedHarmonicsFlagsName =
"fMixedHarmonicsFlags";
3648 fMixedHarmonicsFlags =
new TProfile(mixedHarmonicsFlagsName.Data(),
"Flags for Mixed Harmonics",4,0,4);
3664 TString s2pCorrelationsName =
"f2pCorrelations";
3666 f2pCorrelations =
new TProfile(s2pCorrelationsName.Data(),Form(
"2-particle correlations (n = %d)",
fHarmonic),6,0,6,
"s");
3681 TString s3pCorrelationsName =
"f3pCorrelations";
3683 f3pCorrelations =
new TProfile(s3pCorrelationsName.Data(),Form(
"3-particle correlations (n = %d)",
fHarmonic),10,0,10,
"s");
3704 TString s4pCorrelationsName =
"f4pCorrelations";
3706 f4pCorrelations =
new TProfile(s4pCorrelationsName.Data(),Form(
"4-particle correlations (n = %d)",
fHarmonic),45,0,45,
"s");
3765 TString s5pCorrelationsName =
"f5pCorrelations";
3767 f5pCorrelations =
new TProfile(s5pCorrelationsName.Data(),Form(
"5-particle correlations (n = %d)",
fHarmonic),87,0,87,
"s");
3868 TString s6pCorrelationsName =
"f6pCorrelations";
3870 f6pCorrelations =
new TProfile(s6pCorrelationsName.Data(),Form(
"6-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3879 TString s7pCorrelationsName =
"f7pCorrelations";
3881 f7pCorrelations =
new TProfile(s7pCorrelationsName.Data(),Form(
"7-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3890 TString s8pCorrelationsName =
"f8pCorrelations";
3892 f8pCorrelations =
new TProfile(s8pCorrelationsName.Data(),Form(
"8-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3937 TString mixedHarmonicEventWeightsName =
"fMixedHarmonicEventWeights";
3939 TString powerFlag[2] = {
"linear",
"quadratic"};
3940 for(
Int_t power=0;power<2;power++)
3942 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.);
3956 }
else if (power == 1)
3971 TString mixedHarmonicProductOfEventWeightsName =
"fMixedHarmonicProductOfEventWeights";
3972 mixedHarmonicProductOfEventWeightsName +=
fAnalysisLabel->Data();
3977 for(
Int_t b=1;b<=8;b++)
3985 TString mixedHarmonicProductOfCorrelationsName =
"fMixedHarmonicProductOfCorrelations";
3986 mixedHarmonicProductOfCorrelationsName +=
fAnalysisLabel->Data();