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.),
155 fReferenceMultiplicityRecEBE(0.),
157 fNewCentralityEBE(0.),
163 fCentralityCL1EBE(0.),
165 fCentralityTRKEBE(0.),
169 fAvMultiplicity(NULL),
170 fIntFlowCorrelationsPro(NULL),
171 fIntFlowSquaredCorrelationsPro(NULL),
172 fIntFlowCorrelationsAllPro(NULL),
173 fIntFlowExtraCorrelationsPro(NULL),
174 fIntFlowProductOfCorrelationsPro(NULL),
175 fIntFlowProductOfCorrectionTermsForNUAPro(NULL),
176 fIntFlowCorrelationsHist(NULL),
177 fIntFlowCorrelationsAllHist(NULL),
178 fIntFlowCovariances(NULL),
179 fIntFlowSumOfProductOfEventWeights(NULL),
180 fIntFlowCovariancesNUA(NULL),
181 fIntFlowSumOfProductOfEventWeightsNUA(NULL),
182 fIntFlowQcumulants(NULL),
183 fIntFlowQcumulantsRebinnedInM(NULL),
184 fIntFlowQcumulantsErrorSquaredRatio(NULL),
186 fIntFlowRebinnedInM(NULL),
187 fIntFlowDetectorBias(NULL),
190 fDiffFlowProfiles(NULL),
191 fDiffFlowResults(NULL),
193 fDiffFlowFlags(NULL),
194 fCalculateDiffFlow(kTRUE),
195 fCalculate2DDiffFlow(kFALSE),
196 fCalculateDiffFlowVsEta(kTRUE),
198 fOtherDiffCorrelatorsList(NULL),
200 fDistributionsList(NULL),
201 fDistributionsFlags(NULL),
202 fStoreDistributions(kFALSE),
203 fnBinsForCorrelations(10000),
205 fNestedLoopsList(NULL),
206 fEvaluateIntFlowNestedLoops(kFALSE),
207 fEvaluateDiffFlowNestedLoops(kFALSE),
208 fMaxAllowedMultiplicity(10),
209 fEvaluateNestedLoops(NULL),
210 fIntFlowDirectCorrelations(NULL),
211 fIntFlowExtraDirectCorrelations(NULL),
212 fCrossCheckInPtBinNo(10),
213 fCrossCheckInEtaBinNo(20),
214 fNoOfParticlesInBin(NULL),
215 fMixedHarmonicsNestedLoops(NULL),
217 fMixedHarmonicsList(NULL),
218 fMixedHarmonicsProfiles(NULL),
219 fMixedHarmonicsResults(NULL),
220 fMixedHarmonicsErrorPropagation(NULL),
221 fMixedHarmonicsFlags(NULL),
222 fCalculateMixedHarmonics(kFALSE),
223 fCalculateMixedHarmonicsVsM(kFALSE),
224 f2pCorrelations(NULL),
225 f3pCorrelations(NULL),
226 f4pCorrelations(NULL),
227 f5pCorrelations(NULL),
228 f6pCorrelations(NULL),
229 f7pCorrelations(NULL),
230 f8pCorrelations(NULL),
238 fMixedHarmonicProductOfEventWeights(NULL),
239 fMixedHarmonicProductOfCorrelations(NULL),
241 fControlHistogramsList(NULL),
242 fControlHistogramsFlags(NULL),
243 fStoreControlHistograms(kFALSE),
244 fCorrelationNoRPsVsRefMult(NULL),
245 fCorrelationNoPOIsVsRefMult(NULL),
246 fCorrelationNoRPsVsNoPOIs(NULL),
248 fBootstrapList(NULL),
249 fBootstrapProfilesList(NULL),
250 fBootstrapResultsList(NULL),
251 fBootstrapFlags(NULL),
252 fUseBootstrap(kFALSE),
253 fUseBootstrapVsM(kFALSE),
256 fBootstrapCorrelations(NULL),
257 fBootstrapCumulants(NULL),
262 fCalculateCRC(kTRUE),
263 fCalculateCRCPt(kFALSE),
264 fCalculateCME(kFALSE),
265 fCalculateCRCInt(kFALSE),
266 fCalculateCRC2(kFALSE),
267 fCalculateCRCVZ(kFALSE),
268 fCalculateCRCZDC(kFALSE),
269 fCalculateFlowQC(kFALSE),
270 fCalculateFlowZDC(kFALSE),
271 fCalculateFlowVZ(kFALSE),
272 fCalculateEbEFlow(kFALSE),
273 fStoreZDCQVecVtxPos(kFALSE),
274 fUsePhiEtaCuts(kFALSE),
277 fRecenterZDC(kFALSE),
279 fUseCRCRecenter(kFALSE),
290 fCorrWeightTPC(kUnit),
291 fCorrWeightVZ(kUnit),
292 fCorrWeightZDC(kUnit),
295 fCRCCenBinWidth(CenWidth),
296 fCRCIntRbRList(NULL),
299 fInteractionRate(kAll),
300 fSelectCharge(kAllCh),
301 fPOIExtraWeights(kNone),
303 fCRCQVecListTPC(NULL),
304 fCRCQVecWeightsList(NULL),
305 fCRCZDCCalibList(NULL),
306 fCRCZDC2DCutList(NULL),
307 fCRCVZEROCalibList(NULL),
308 fCRCZDCResList(NULL),
312 fCRCZDCRbRList(NULL),
319 fFlowSPZDCList(NULL),
324 fFlowQCDeltaEta(0.4),
330 fQAZDCCutsFlag(kTRUE),
331 fUseTracklets(kFALSE),
334 fZDCGainAlpha(0.395),
335 fbFlagIsPosMagField(kFALSE)
340 fHistList =
new TList();
341 fHistList->SetName(
"cobjQC");
342 fHistList->SetOwner(kTRUE);
345 fTempList =
new TList();
346 fTempList->SetName(
"temp");
347 fTempList->SetOwner(kTRUE);
350 fMultiplicityWeight =
new TString(
"combinations");
353 fAnalysisLabel =
new TString();
356 this->InitializeArraysForIntFlow();
357 this->InitializeArraysForDiffFlow();
358 this->InitializeArraysForDistributions();
359 this->InitializeArraysForVarious();
360 this->InitializeArraysForNestedLoops();
361 this->InitializeArraysForMixedHarmonics();
362 this->InitializeArraysForControlHistograms();
363 this->InitializeArraysForBootstrap();
372 this->InitializeCostantsForCRC();
373 this->InitializeArraysForParticleWeights();
374 this->InitializeArraysForCRC();
375 this->InitializeArraysForCRCVZ();
376 this->InitializeArraysForCRCZDC();
377 this->InitializeArraysForCRC2();
378 this->InitializeArraysForQVec();
379 this->InitializeArraysForCRCPt();
380 this->InitializeArraysForCME();
381 this->InitializeArraysForFlowEbE();
382 this->InitializeArraysForFlowQC();
383 this->InitializeArraysForFlowQCHighOrders();
384 this->InitializeArraysForFlowSPZDC();
385 this->InitializeArraysForFlowSPVZ();
386 this->InitializeArraysForEbEFlow();
431 Bool_t oldHistAddStatus = TH1::AddDirectoryStatus();
432 TH1::AddDirectory(kFALSE);
489 TH1::AddDirectory(oldHistAddStatus);
530 Int_t nCounterNoRPs = 0;
578 if(fRunBin<0 || fRunBin>=
fCRCnRun) {
return;}
580 if(fCenBin<0 || fCenBin>=
fCRCnCen) {
return;}
592 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};
593 for (
Int_t i=0; i<40; i++) {
656 Bool_t bPassZDCcuts = kTRUE;
657 if( ZCM<=0. || ZAM<=0. || sqrt(ZCRe*ZCRe+ZCIm*ZCIm)<1.E-6 || sqrt(ZARe*ZARe+ZAIm*ZAIm)<1.E-6 ) bPassZDCcuts=kFALSE;
679 AliWarning(
"WARNING: POIExtraWeights (kEtaPhiRbR) not found ! \n");
683 for (
Int_t i=0; i<2; i++) {
687 AliWarning(
"WARNING: POIExtraWeights (kEtaPhiChRbR) not found ! \n");
695 for(
Int_t i=0;i<nPrim;i++) {
706 dPhi = aftsTrack->
Phi();
707 dPt = aftsTrack->
Pt();
708 dEta = aftsTrack->
Eta();
709 dCharge = aftsTrack->
Charge();
714 cw = (dCharge > 0. ? 0 : 1);
726 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
733 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
738 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
744 Int_t ptbebe = (dPt>1.? 2 : (dPt>0.5 ? 1 : 0));
748 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
754 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
759 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
767 for(
Int_t m=0;m<12;m++)
769 for(
Int_t k=0;k<9;k++)
771 (*fReQ)(m,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1)*n*dPhi);
772 (*fImQ)(m,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1)*n*dPhi);
776 for(
Int_t p=0;p<8;p++)
778 for(
Int_t k=0;k<9;k++)
780 (*fSpk)(p,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k);
789 for(
Int_t k=0;k<9;k++)
791 for(
Int_t m=0;m<4;m++)
797 fReRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
798 fImRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
801 fs1dEBE[0][pe][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
807 fReRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
808 fImRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
811 fs2dEBE[0][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
820 for(
Int_t k=0;k<9;k++)
822 for(
Int_t m=0;m<4;m++)
828 fReRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
829 fImRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
832 fs1dEBE[2][pe][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
838 fReRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
839 fImRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
842 fs2dEBE[2][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
859 dPhi = aftsTrack->
Phi();
860 dPt = aftsTrack->
Pt();
861 dEta = aftsTrack->
Eta();
862 dCharge = aftsTrack->
Charge();
869 if(dCharge > 0.) dPt += 1.E-2;
873 cw = (dCharge > 0. ? 0 : 1);
886 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
893 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
898 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
904 Int_t ptbebe = (dPt>1.? 2 : (dPt>0.5 ? 1 : 0));
908 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 if(dPhi>2.136283 && dPhi<2.324779)
continue;
931 for(
Int_t k=0;k<9;k++)
933 for(
Int_t m=0;m<4;m++)
939 fReRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
940 fImRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
945 fReRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
946 fImRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
954 fCRCQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
955 fCRCQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
956 fCRCMult[cw][h]->Fill(dEta,wPhiEta);
958 fCRC2QRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
959 fCRC2QIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
960 fCRC2Mul[cw][h]->Fill(dEta,pow(wPhiEta,h));
962 fCRCZDCQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
963 fCRCZDCQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
967 fCRC2QRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
968 fCRC2QIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
969 fCRC2Mul[2][h]->Fill(dEta,pow(wPhiEta,h));
973 fCRCZDCQRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
974 fCRCZDCQIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
977 fCRCZDCQRe[3][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
978 fCRCZDCQIm[3][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
986 if(weraw > 0.) SpecWeig = 1./weraw;
988 fCMEQRe[cw][h]->Fill(dEta,SpecWeig*wPhiEta*TMath::Cos((h+1.)*dPhi));
989 fCMEQIm[cw][h]->Fill(dEta,SpecWeig*wPhiEta*TMath::Sin((h+1.)*dPhi));
990 fCMEMult[cw][h]->Fill(dEta,SpecWeig*wPhiEta);
991 fCMEQRe[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.)*TMath::Cos((h+1.)*dPhi));
992 fCMEQIm[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.)*TMath::Sin((h+1.)*dPhi));
993 fCMEMult[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.));
1009 fPOIPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1010 fPOIPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1013 fPOIPtDiffQReCh[cw][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1014 fPOIPtDiffQImCh[cw][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1017 fPOIPhiDiffQRe[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1018 fPOIPhiDiffQIm[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1021 fPOIPhiEtaDiffQRe[ITStype][k][h]->Fill(dPhi,dEta,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1022 fPOIPhiEtaDiffQIm[ITStype][k][h]->Fill(dPhi,dEta,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1026 Int_t keta = (dEta<0.?0:1);
1027 fPOIPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1028 fPOIPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1030 fPOIPhiDiffQReEG[keta][k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1031 fPOIPhiDiffQImEG[keta][k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1035 }
else if(fFlowQCDeltaEta<0. && fFlowQCDeltaEta>-1.) {
1038 fPOIPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1039 fPOIPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1042 fPOIPhiDiffQRe[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1043 fPOIPhiDiffQIm[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1048 if((dEta>0. && dEta<0.4-boundetagap/2.) || (dEta>0.4+boundetagap/2. && dEta<0.8)) {
1050 if(dEta>0. && dEta<0.4-boundetagap/2.) keta = 0;
1052 fPOIPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1053 fPOIPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1061 }
else if(fFlowQCDeltaEta<-1. && fFlowQCDeltaEta>-2.) {
1064 fPOIPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1065 fPOIPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1068 fPOIPhiDiffQRe[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1069 fPOIPhiDiffQIm[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1074 if((dEta<0. && dEta>-0.4+boundetagap/2.) || (dEta<-0.4-boundetagap/2. && dEta>-0.8)) {
1076 if(dEta<0. && dEta>-0.4+boundetagap/2.) keta = 0;
1078 fPOIPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1079 fPOIPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1092 fEtaDiffQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
1093 fEtaDiffQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
1095 fPOIEtaPtQRe[cw][h]->Fill(dEta,dPt,wPhiEta*TMath::Cos((h+1.)*dPhi));
1096 fPOIEtaPtQIm[cw][h]->Fill(dEta,dPt,wPhiEta*TMath::Sin((h+1.)*dPhi));
1125 for (
Int_t h=0;h<6;h++) {
1135 if(vxbin>0 && vxbin<fkNVXVYBins && vybin>0 && vybin<
fkNVXVYBins) {
1145 printf(
"\n WARNING (QC): No particle (i.e. aftsTrack is a NULL pointer in AFAWQC::Make())!!!!\n\n");
1152 for(
Int_t p=0;p<8;p++)
1154 for(
Int_t k=0;k<9;k++)
1156 (*fSpk)(p,k)=pow((*
fSpk)(p,k),p+1);
1585 cout<<
"Skipping the event because multiplicity is "<<nPrim<<
". Too high to evaluate nested loops!"<<endl;
1589 cout<<
"Skipping the event because multiplicity is "<<nPrim<<
"."<<endl;
1725 cosP1n = dReQ1n/dMult;
1743 cosP1nP1n = (pow(dReQ1n,2)-pow(dImQ1n,2)-dReQ2n)/(dMult*(dMult-1));
1744 cosP2nM1n = (dReQ2n*dReQ1n+dImQ2n*dImQ1n-dReQ1n)/(dMult*(dMult-1));
1768 cosP1nM1nM1n = (dReQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2))-dReQ1n*dReQ2n-dImQ1n*dImQ2n-2.*(dMult-1)*dReQ1n)
1769 / (dMult*(dMult-1)*(dMult-2));
1834 sinP1n = dImQ1n/dMult;
1851 sinP1nP1n = (2.*dReQ1n*dImQ1n-dImQ2n)/(dMult*(dMult-1));
1852 sinP2nM1n = (dImQ2n*dReQ1n-dReQ2n*dImQ1n-dImQ1n)/(dMult*(dMult-1));
1876 sinP1nM1nM1n = (-dImQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2))+dReQ1n*dImQ2n-dImQ1n*dReQ2n+2.*(dMult-1)*dImQ1n)
1877 / (dMult*(dMult-1)*(dMult-2));
1907 if(outputListHistos)
1912 printf(
"\n WARNING (QC): fHistList is NULL in AFAWQC::GOH() !!!!\n\n");
1940 printf(
"\n WARNING (QC): outputListHistos is NULL in AFAWQC::GOH() !!!!\n\n");
1952 Int_t nBinsPt = profilePtEta->GetNbinsX();
1953 Double_t dPtMin = (profilePtEta->GetXaxis())->GetXmin();
1954 Double_t dPtMax = (profilePtEta->GetXaxis())->GetXmax();
1956 Int_t nBinsEta = profilePtEta->GetNbinsY();
1958 TProfile *profilePt =
new TProfile(
"",
"",nBinsPt,dPtMin,dPtMax);
1960 for(
Int_t p=1;p<=nBinsPt;p++)
1968 for(
Int_t e=1;e<=nBinsEta;e++)
1970 contentPt += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
1971 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1972 entryPt += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1974 sum1 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
1975 * (pow(profilePtEta->GetBinError(profilePtEta->GetBin(p,e)),2.)
1976 + pow(profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)),2.));
1977 sum2 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1978 sum3 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
1979 * (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)));
1981 if(sum2>0. && sum1/sum2-pow(sum3/sum2,2.) > 0.)
1983 spreadPt = pow(sum1/sum2-pow(sum3/sum2,2.),0.5);
1985 profilePt->SetBinContent(p,contentPt);
1986 profilePt->SetBinEntries(p,entryPt);
1988 profilePt->SetBinError(p,spreadPt);
2005 Int_t nBinsEta = profilePtEta->GetNbinsY();
2006 Double_t dEtaMin = (profilePtEta->GetYaxis())->GetXmin();
2007 Double_t dEtaMax = (profilePtEta->GetYaxis())->GetXmax();
2009 Int_t nBinsPt = profilePtEta->GetNbinsX();
2011 TProfile *profileEta =
new TProfile(
"",
"",nBinsEta,dEtaMin,dEtaMax);
2013 for(
Int_t e=1;e<=nBinsEta;e++)
2017 for(
Int_t p=1;p<=nBinsPt;p++)
2019 contentEta += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
2020 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
2021 entryEta += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
2023 profileEta->SetBinContent(e,contentEta);
2024 profileEta->SetBinEntries(e,entryEta);
2044 for(
Int_t b=0;b<4;b++)
2055 }
else if(type ==
"RP")
2065 }
else if(type ==
"POI")
2077 for(
Int_t b=0;b<4;b++)
2086 TString subtitle2 =
" (rebinned in M)";
2088 if(type !=
"RF, rebinned in M")
2092 subtitle.Append(type);
2093 subtitle.Append(
", without weights)");
2096 subtitle.Append(type);
2097 subtitle.Append(
", with weights)");
2103 subtitle.Append(
"RF");
2104 subtitle.Append(
", without weights)");
2107 subtitle.Append(
"RF");
2108 subtitle.Append(
", with weights)");
2113 cout<<
"*************************************"<<endl;
2114 cout<<
"*************************************"<<endl;
2115 cout<<title.Data()<<endl;
2116 cout<<subtitle.Data()<<endl;
2117 if(type ==
"RF, rebinned in M"){cout<<subtitle2.Data()<<endl;}
2120 for(
Int_t i=0;i<4;i++)
2122 cout<<
" v_"<<n<<
"{"<<2*(i+1)<<
"} = "<<dVn[i]<<
" +/- "<<dVnErr[i]<<endl;
2130 cout<<
" detector bias (corrected for): "<<endl;
2133 cout<<
" detector bias (not corrected for):"<<endl;
2139 if(type ==
"RF" || type ==
"RF, rebinned in M")
2143 else if (type ==
"RP")
2147 else if (type ==
"POI")
2152 cout<<
"*************************************"<<endl;
2153 cout<<
"*************************************"<<endl;
2163 TFile *output =
new TFile(outputFileName.Data(),
"RECREATE");
2179 outputFileName->Write(outputFileName->GetName(), TObject::kSingleKey);
2192 TString commonHistsName =
"AliFlowCommonHistQC";
2200 TString commonHists2ndOrderName =
"AliFlowCommonHist2ndOrderQC";
2205 TString commonHists4thOrderName =
"AliFlowCommonHist4thOrderQC";
2210 TString commonHists6thOrderName =
"AliFlowCommonHist6thOrderQC";
2215 TString commonHists8thOrderName =
"AliFlowCommonHist8thOrderQC";
2223 TString commonHistResults2ndOrderName =
"AliFlowCommonHistResults2ndOrderQC";
2228 TString commonHistResults4thOrderName =
"AliFlowCommonHistResults4thOrderQC";
2233 TString commonHistResults6thOrderName =
"AliFlowCommonHistResults6thOrderQC";
2238 TString commonHistResults8thOrderName =
"AliFlowCommonHistResults8thOrderQC";
2253 printf(
"\n WARNING (QC): fWeightsList is NULL in AFAWQC::BAFWH() !!!! \n\n");
2257 TString fUseParticleWeightsName =
"fUseParticleWeightsQC";
2259 fUseParticleWeights =
new TProfile(fUseParticleWeightsName.Data(),
"0 = particle weight not used, 1 = particle weight used ",8,0,8);
2453 TF1 *CenFit =
new TF1(
"CenFit",
"pol0", 0., 100.);
2456 Double_t CenAv = CenFit->GetParameter(0);
2468 Double_t CenAv = CenFit->GetParameter(0);
2470 Double_t SemiCenAv = CenFit->GetParameter(0);
2496 TString sinCosFlag[2] = {
"sin",
"cos"};
2497 TString powerFlag[2] = {
"linear",
"quadratic"};
2500 TString intFlowFlagsName =
"fIntFlowFlags";
2502 fIntFlowFlags =
new TProfile(intFlowFlagsName.Data(),
"Flags for Integrated Flow",20,0.,20.);
2508 fIntFlowFlags->GetXaxis()->SetBinLabel(1,
"Particle Weights");
2510 fIntFlowFlags->GetXaxis()->SetBinLabel(3,
"Corrected for NUA?");
2511 fIntFlowFlags->GetXaxis()->SetBinLabel(4,
"Print RF results");
2512 fIntFlowFlags->GetXaxis()->SetBinLabel(5,
"Print RP results");
2513 fIntFlowFlags->GetXaxis()->SetBinLabel(6,
"Print POI results");
2514 fIntFlowFlags->GetXaxis()->SetBinLabel(7,
"Print RF (rebinned in M) results");
2515 fIntFlowFlags->GetXaxis()->SetBinLabel(8,
"Corrected for NUA vs M?");
2516 fIntFlowFlags->GetXaxis()->SetBinLabel(9,
"Propagate errors to v_{n} from correlations?");
2517 fIntFlowFlags->GetXaxis()->SetBinLabel(10,
"Calculate cumulants vs M");
2518 fIntFlowFlags->GetXaxis()->SetBinLabel(11,
"fMinimumBiasReferenceFlow");
2519 fIntFlowFlags->GetXaxis()->SetBinLabel(12,
"fForgetAboutCovariances");
2521 fIntFlowFlags->GetXaxis()->SetBinLabel(14,
"fFillMultipleControlHistograms");
2522 fIntFlowFlags->GetXaxis()->SetBinLabel(15,
"Calculate all correlations vs M");
2523 fIntFlowFlags->GetXaxis()->SetBinLabel(16,
"fMultiplicityIs");
2525 fIntFlowFlags->GetXaxis()->SetBinLabel(18,
"fUse2DHistograms");
2526 fIntFlowFlags->GetXaxis()->SetBinLabel(19,
"fFillProfilesVsMUsingWeights");
2527 fIntFlowFlags->GetXaxis()->SetBinLabel(20,
"fUseQvectorTerms");
2532 fReQ =
new TMatrixD(12,9);
2533 fImQ =
new TMatrixD(12,9);
2534 fSpk =
new TMatrixD(8,9);
2536 TString intFlowCorrelationsEBEName =
"fIntFlowCorrelationsEBE";
2540 TString intFlowEventWeightsForCorrelationsEBEName =
"fIntFlowEventWeightsForCorrelationsEBE";
2541 intFlowEventWeightsForCorrelationsEBEName +=
fAnalysisLabel->Data();
2544 TString intFlowCorrelationsAllEBEName =
"fIntFlowCorrelationsAllEBE";
2549 TString fIntFlowCorrectionTermsForNUAEBEName =
"fIntFlowCorrectionTermsForNUAEBE";
2551 for(
Int_t sc=0;sc<2;sc++)
2553 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);
2556 TString fIntFlowEventWeightForCorrectionTermsForNUAEBEName =
"fIntFlowEventWeightForCorrectionTermsForNUAEBE";
2557 fIntFlowEventWeightForCorrectionTermsForNUAEBEName +=
fAnalysisLabel->Data();
2558 for(
Int_t sc=0;sc<2;sc++)
2564 TString avMultiplicityName =
"fAvMultiplicity";
2566 fAvMultiplicity =
new TProfile(avMultiplicityName.Data(),
"Average multiplicities of reference particles (RPs)",9,0,9);
2583 TString correlationFlag[4] = {
"#LT#LT2#GT#GT",
"#LT#LT4#GT#GT",
"#LT#LT6#GT#GT",
"#LT#LT8#GT#GT"};
2584 TString intFlowCorrelationsProName =
"fIntFlowCorrelationsPro";
2586 fIntFlowCorrelationsPro =
new TProfile(intFlowCorrelationsProName.Data(),
"Average correlations for all events",4,0,4,
"s");
2592 for(
Int_t b=0;b<4;b++)
2598 TString squaredCorrelationFlag[4] = {
"#LT#LT2#GT^{2}#GT",
"#LT#LT4#GT^{2}#GT",
"#LT#LT6#GT^{2}#GT",
"#LT#LT8#GT^{2}#GT"};
2599 TString intFlowSquaredCorrelationsProName =
"fIntFlowSquaredCorrelationsPro";
2607 for(
Int_t b=0;b<4;b++)
2614 for(
Int_t ci=0;ci<4;ci++)
2617 TString intFlowCorrelationsVsMProName =
"fIntFlowCorrelationsVsMPro";
2619 fIntFlowCorrelationsVsMPro[ci] =
new TProfile(Form(
"%s, %s",intFlowCorrelationsVsMProName.Data(),correlationFlag[ci].Data()),
2620 Form(
"%s vs multiplicity",correlationFlag[ci].
Data()),
2636 TString intFlowSquaredCorrelationsVsMProName =
"fIntFlowSquaredCorrelationsVsMPro";
2639 Form(
"%s vs multiplicity",squaredCorrelationFlag[ci].
Data()),
2657 TString intFlowCorrelationsAllProName =
"fIntFlowCorrelationsAllPro";
2659 fIntFlowCorrelationsAllPro =
new TProfile(intFlowCorrelationsAllProName.Data(),
"Average all correlations for all events",64,0,64);
2765 fIntFlowCorrelationsAllVsMPro[30] =
new TProfile(
"eight1n1n1n1n1n1n1n1n",
"#LT#LT8#GT#GT_{n,n,n,n|n,n,n,n}",
fnBinsMult,
fMinMult,
fMaxMult);
2799 for(
Int_t n=0;n<63;n++)
2821 TString intFlowExtraCorrelationsProName =
"fIntFlowExtraCorrelationsPro";
2823 fIntFlowExtraCorrelationsPro =
new TProfile(intFlowExtraCorrelationsProName.Data(),
"Average extra correlations for all events",100,0,100,
"s");
2834 TString productFlag[6] = {
"#LT#LT2#GT#LT4#GT#GT",
"#LT#LT2#GT#LT6#GT#GT",
"#LT#LT2#GT#LT8#GT#GT",
2835 "#LT#LT4#GT#LT6#GT#GT",
"#LT#LT4#GT#LT8#GT#GT",
"#LT#LT6#GT#LT8#GT#GT"};
2836 TString intFlowProductOfCorrelationsProName =
"fIntFlowProductOfCorrelationsPro";
2843 for(
Int_t b=0;b<6;b++)
2852 TString intFlowProductOfCorrelationsVsMProName =
"fIntFlowProductOfCorrelationsVsMPro";
2853 intFlowProductOfCorrelationsVsMProName +=
fAnalysisLabel->Data();
2857 Form(
"%s versus multiplicity",productFlag[
pi].
Data()),
2873 TString intFlowProductOfCorrectionTermsForNUAProName =
"fIntFlowProductOfCorrectionTermsForNUAPro";
2874 intFlowProductOfCorrectionTermsForNUAProName +=
fAnalysisLabel->Data();
2909 for(
Int_t sc=0;sc<2;sc++)
2911 TString intFlowCorrectionTermsForNUAProName =
"fIntFlowCorrectionTermsForNUAPro";
2913 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");
2926 TString correctionTermFlag[4] = {
"(n(phi1))",
"(n(phi1+phi2))",
"(n(phi1-phi2-phi3))",
"(n(2phi1-phi2))"};
2927 for(
Int_t ci=0;ci<4;ci++)
2929 TString intFlowCorrectionTermsForNUAVsMProName =
"fIntFlowCorrectionTermsForNUAVsMPro";
2930 intFlowCorrectionTermsForNUAVsMProName +=
fAnalysisLabel->Data();
2931 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");
2939 TString intFlowCorrelationsHistName =
"fIntFlowCorrelationsHist";
2954 for(
Int_t ci=0;ci<4;ci++)
2956 TString intFlowCorrelationsVsMHistName =
"fIntFlowCorrelationsVsMHist";
2959 Form(
"%s vs multiplicity",correlationFlag[ci].
Data()),
2976 TString intFlowCorrelationsAllHistName =
"fIntFlowCorrelationsAllHist";
3017 for(
Int_t sc=0;sc<2;sc++)
3019 TString intFlowCorrectionTermsForNUAHistName =
"fIntFlowCorrectionTermsForNUAHist";
3021 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);
3033 TString intFlowCovariancesName =
"fIntFlowCovariances";
3035 fIntFlowCovariances =
new TH1D(intFlowCovariancesName.Data(),
"Covariances (multiplied with weight dependent prefactor)",6,0,6);
3046 TString intFlowSumOfEventWeightsName =
"fIntFlowSumOfEventWeights";
3048 for(
Int_t power=0;power<2;power++)
3050 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);
3059 }
else if (power == 1)
3069 TString intFlowSumOfProductOfEventWeightsName =
"fIntFlowSumOfProductOfEventWeights";
3085 TString intFlowCovariancesVsMName =
"fIntFlowCovariancesVsM";
3087 TString covarianceFlag[6] = {
"Cov(<2>,<4>)",
"Cov(<2>,<6>)",
"Cov(<2>,<8>)",
"Cov(<4>,<6>)",
"Cov(<4>,<8>)",
"Cov(<6>,<8>)"};
3088 for(
Int_t ci=0;ci<6;ci++)
3091 Form(
"%s vs multiplicity",covarianceFlag[ci].
Data()),
3111 TString intFlowSumOfEventWeightsVsMName =
"fIntFlowSumOfEventWeightsVsM";
3113 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>}"},
3114 {
"#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}"}};
3115 for(
Int_t si=0;si<4;si++)
3117 for(
Int_t power=0;power<2;power++)
3120 Form(
"%s vs multiplicity",sumFlag[power][si].
Data()),
3142 TString intFlowSumOfProductOfEventWeightsVsMName =
"fIntFlowSumOfProductOfEventWeightsVsM";
3143 intFlowSumOfProductOfEventWeightsVsMName +=
fAnalysisLabel->Data();
3144 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>}",
3145 "#sum_{i=1}^{N} w_{<4>} w_{<6>}",
"#sum_{i=1}^{N} w_{<4>} w_{<8>}",
"#sum_{i=1}^{N} w_{<6>} w_{<8>}"};
3149 Form(
"%s versus multiplicity",sopowFlag[
pi].
Data()),
3166 TString intFlowCovariancesNUAName =
"fIntFlowCovariancesNUA";
3168 fIntFlowCovariancesNUA =
new TH1D(intFlowCovariancesNUAName.Data(),
"Covariances for NUA (multiplied with weight dependent prefactor)",27,0,27);
3187 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(16,
"Cov(<cos(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3188 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(17,
"Cov(<cos(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3191 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(20,
"Cov(<sin(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3192 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(21,
"Cov(<sin(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3193 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(22,
"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}+#phi_{2})>)");
3194 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(23,
"Cov(<cos(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3195 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(24,
"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3196 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(25,
"Cov(<sin(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3197 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(26,
"Cov(<sin(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3198 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(27,
"Cov(<cos(#phi_{1}-#phi_{2}-#phi_{3}>,<sin(#phi_{1}-#phi_{2}-#phi_{3}>)");
3201 TString intFlowSumOfEventWeightsNUAName =
"fIntFlowSumOfEventWeightsNUA";
3203 for(
Int_t sc=0;sc<2;sc++)
3205 for(
Int_t power=0;power<2;power++)
3207 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);
3216 }
else if(power == 1)
3220 (
fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(3,Form(
"#sum_{i=1}^{N} w_{<%s(#phi_{1}-#phi_{2}-#phi_{3})>}^{2}",sinCosFlag[sc].
Data()));
3227 TString intFlowSumOfProductOfEventWeightsNUAName =
"fIntFlowSumOfProductOfEventWeightsNUA";
3228 intFlowSumOfProductOfEventWeightsNUAName +=
fAnalysisLabel->Data();
3261 TString cumulantFlag[4] = {
"QC{2}",
"QC{4}",
"QC{6}",
"QC{8}"};
3262 TString intFlowQcumulantsName =
"fIntFlowQcumulants";
3267 fIntFlowQcumulants->SetTitle(
"Reference Q-cumulants (error from non-isotropic terms also propagated)");
3271 for(
Int_t b=0;b<4;b++)
3279 TString intFlowQcumulantsRebinnedInMName =
"fIntFlowQcumulantsRebinnedInM";
3284 for(
Int_t b=0;b<4;b++)
3291 TString intFlowQcumulantsErrorSquaredRatioName =
"fIntFlowQcumulantsErrorSquaredRatio";
3292 intFlowQcumulantsErrorSquaredRatioName +=
fAnalysisLabel->Data();
3296 for(
Int_t b=0;b<4;b++)
3304 TString intFlowQcumulantsVsMName =
"fIntFlowQcumulantsVsM";
3306 for(
Int_t co=0;co<4;co++)
3309 Form(
"%s vs multiplicity",cumulantFlag[co].
Data()),
3326 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)};
3327 TString intFlowName =
"fIntFlow";
3330 fIntFlow =
new TH1D(intFlowName.Data(),
"Reference flow estimates from Q-cumulants",4,0,4);
3333 for(
Int_t b=0;b<4;b++)
3335 (
fIntFlow->GetXaxis())->SetBinLabel(b+1,flowFlag[b].
Data());
3341 TString intFlowRebinnedInMName =
"fIntFlowRebinnedInM";
3343 fIntFlowRebinnedInM =
new TH1D(intFlowRebinnedInMName.Data(),
"Reference flow estimates from Q-cumulants (rebinned in M)",4,0,4);
3346 for(
Int_t b=0;b<4;b++)
3355 TString intFlowVsMName =
"fIntFlowVsM";
3357 for(
Int_t co=0;co<4;co++)
3359 fIntFlowVsM[co] =
new TH1D(Form(
"%s, %s",intFlowVsMName.Data(),flowFlag[co].Data()),
3360 Form(
"%s vs multiplicity",flowFlag[co].
Data()),
3367 fIntFlowVsM[co]->GetXaxis()->SetTitle(
"Reference multiplicity (from ESD)");
3377 TString intFlowDetectorBiasName =
"fIntFlowDetectorBias";
3382 for(
Int_t ci=0;ci<4;ci++)
3384 (
fIntFlowDetectorBias->GetXaxis())->SetBinLabel(ci+1,Form(
"#frac{corrected}{measured} %s",cumulantFlag[ci].
Data()));
3390 TString intFlowDetectorBiasVsMName =
"fIntFlowDetectorBiasVsM";
3392 for(
Int_t ci=0;ci<4;ci++)
3395 Form(
"Quantifying detector bias for %s vs multiplicity",cumulantFlag[ci].
Data()),
3424 TString controlHistogramsFlagsName =
"fControlHistogramsFlags";
3426 fControlHistogramsFlags =
new TProfile(controlHistogramsFlagsName.Data(),
"Flags for Control Histograms",2,0,2);
3440 TString sCorrelationNoRPsVsRefMultName =
"fCorrelationNoRPsVsRefMult";
3451 TString sCorrelationNoPOIsVsRefMultName =
"fCorrelationNoPOIsVsRefMult";
3462 TString sCorrelationNoRPsVsNoPOIsName =
"fCorrelationNoRPsVsNoPOIs";
3473 TString sCorrelation[4] = {
"#LT2#GT",
"#LT4#GT",
"#LT6#GT",
"#LT8#GT"};
3477 sMultiplicity =
"# RPs";
3480 sMultiplicity =
"Reference multiplicity (from ESD)";
3483 sMultiplicity =
"# POIs";
3485 for(
Int_t ci=0;ci<4;ci++)
3497 TString sCorrelationProduct[1] = {
"#LT2#GT#LT4#GT"};
3498 for(
Int_t cpi=0;cpi<1;cpi++)
3512 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}}"};
3513 for(
Int_t qvti=0;qvti<4;qvti++)
3540 TString bootstrapFlagsName =
"fBootstrapFlags";
3542 fBootstrapFlags =
new TProfile(bootstrapFlagsName.Data(),
"Flags for bootstrap",3,0,3);
3554 TString correlationFlag[4] = {
"#LT#LT2#GT#GT",
"#LT#LT4#GT#GT",
"#LT#LT6#GT#GT",
"#LT#LT8#GT#GT"};
3555 TString cumulantFlag[4] = {
"QC{2}",
"QC{4}",
"QC{6}",
"QC{8}"};
3559 TString bootstrapCorrelationsName =
"fBootstrapCorrelations";
3563 for(
Int_t ci=0;ci<4;ci++)
3573 TString bootstrapCumulantsName =
"fBootstrapCumulants";
3577 for(
Int_t co=0;co<4;co++)
3592 sMultiplicity =
"# RPs";
3595 sMultiplicity =
"Reference multiplicity (from ESD)";
3598 sMultiplicity =
"# POIs";
3603 TString bootstrapCorrelationsVsMName =
"fBootstrapCorrelationsVsM";
3605 for(
Int_t ci=0;ci<4;ci++)
3607 fBootstrapCorrelationsVsM[ci] =
new TProfile2D(Form(
"%s, %s",bootstrapCorrelationsVsMName.Data(),correlationFlag[ci].Data()),
3608 Form(
"Bootstrap Correlations Vs. M, %s",correlationFlag[ci].
Data()),
3619 TString bootstrapCumulantsVsMName =
"fBootstrapCumulantsVsM";
3621 for(
Int_t co=0;co<4;co++)
3624 Form(
"Bootstrap Cumulants Vs. M, %s",cumulantFlag[co].
Data()),
3650 TString mixedHarmonicsFlagsName =
"fMixedHarmonicsFlags";
3652 fMixedHarmonicsFlags =
new TProfile(mixedHarmonicsFlagsName.Data(),
"Flags for Mixed Harmonics",4,0,4);
3668 TString s2pCorrelationsName =
"f2pCorrelations";
3670 f2pCorrelations =
new TProfile(s2pCorrelationsName.Data(),Form(
"2-particle correlations (n = %d)",
fHarmonic),6,0,6,
"s");
3685 TString s3pCorrelationsName =
"f3pCorrelations";
3687 f3pCorrelations =
new TProfile(s3pCorrelationsName.Data(),Form(
"3-particle correlations (n = %d)",
fHarmonic),10,0,10,
"s");
3708 TString s4pCorrelationsName =
"f4pCorrelations";
3710 f4pCorrelations =
new TProfile(s4pCorrelationsName.Data(),Form(
"4-particle correlations (n = %d)",
fHarmonic),45,0,45,
"s");
3769 TString s5pCorrelationsName =
"f5pCorrelations";
3771 f5pCorrelations =
new TProfile(s5pCorrelationsName.Data(),Form(
"5-particle correlations (n = %d)",
fHarmonic),87,0,87,
"s");
3872 TString s6pCorrelationsName =
"f6pCorrelations";
3874 f6pCorrelations =
new TProfile(s6pCorrelationsName.Data(),Form(
"6-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3883 TString s7pCorrelationsName =
"f7pCorrelations";
3885 f7pCorrelations =
new TProfile(s7pCorrelationsName.Data(),Form(
"7-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3894 TString s8pCorrelationsName =
"f8pCorrelations";
3896 f8pCorrelations =
new TProfile(s8pCorrelationsName.Data(),Form(
"8-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3941 TString mixedHarmonicEventWeightsName =
"fMixedHarmonicEventWeights";
3943 TString powerFlag[2] = {
"linear",
"quadratic"};
3944 for(
Int_t power=0;power<2;power++)
3946 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.);
3960 }
else if (power == 1)
3975 TString mixedHarmonicProductOfEventWeightsName =
"fMixedHarmonicProductOfEventWeights";
3976 mixedHarmonicProductOfEventWeightsName +=
fAnalysisLabel->Data();
3981 for(
Int_t b=1;b<=8;b++)
3989 TString mixedHarmonicProductOfCorrelationsName =
"fMixedHarmonicProductOfCorrelations";
3990 mixedHarmonicProductOfCorrelationsName +=
fAnalysisLabel->Data();