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 fCRCVZEROCalibList(NULL),
307 fCRCZDCResList(NULL),
311 fCRCZDCRbRList(NULL),
318 fFlowSPZDCList(NULL),
323 fFlowQCDeltaEta(0.4),
329 fQAZDCCutsFlag(kTRUE),
330 fUseTracklets(kFALSE),
333 fZDCGainAlpha(0.395),
334 fbFlagIsPosMagField(kFALSE)
339 fHistList =
new TList();
340 fHistList->SetName(
"cobjQC");
341 fHistList->SetOwner(kTRUE);
344 fTempList =
new TList();
345 fTempList->SetName(
"temp");
346 fTempList->SetOwner(kTRUE);
349 fMultiplicityWeight =
new TString(
"combinations");
352 fAnalysisLabel =
new TString();
355 this->InitializeArraysForIntFlow();
356 this->InitializeArraysForDiffFlow();
357 this->InitializeArraysForDistributions();
358 this->InitializeArraysForVarious();
359 this->InitializeArraysForNestedLoops();
360 this->InitializeArraysForMixedHarmonics();
361 this->InitializeArraysForControlHistograms();
362 this->InitializeArraysForBootstrap();
371 this->InitializeCostantsForCRC();
372 this->InitializeArraysForParticleWeights();
373 this->InitializeArraysForCRC();
374 this->InitializeArraysForCRCVZ();
375 this->InitializeArraysForCRCZDC();
376 this->InitializeArraysForCRC2();
377 this->InitializeArraysForQVec();
378 this->InitializeArraysForCRCPt();
379 this->InitializeArraysForCME();
380 this->InitializeArraysForFlowEbE();
381 this->InitializeArraysForFlowQC();
382 this->InitializeArraysForFlowQCHighOrders();
383 this->InitializeArraysForFlowSPZDC();
384 this->InitializeArraysForFlowSPVZ();
385 this->InitializeArraysForEbEFlow();
429 Bool_t oldHistAddStatus = TH1::AddDirectoryStatus();
430 TH1::AddDirectory(kFALSE);
487 TH1::AddDirectory(oldHistAddStatus);
528 Int_t nCounterNoRPs = 0;
573 if(fRunBin<0 || fRunBin>=
fCRCnRun) {
return;}
575 if(fCenBin<0 || fCenBin>=
fCRCnCen) {
return;}
587 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};
588 for (
Int_t i=0; i<40; i++) {
653 Bool_t bPassZDCcuts = kTRUE;
654 if( ZCM<=0. || ZAM<=0. || sqrt(ZCRe*ZCRe+ZCIm*ZCIm)<1.E-6 || sqrt(ZARe*ZARe+ZAIm*ZAIm)<1.E-6 ) bPassZDCcuts=kFALSE;
676 AliWarning(
"WARNING: POIExtraWeights (kEtaPhiRbR) not found ! \n");
680 for (
Int_t i=0; i<2; i++) {
684 AliWarning(
"WARNING: POIExtraWeights (kEtaPhiChRbR) not found ! \n");
692 for(
Int_t i=0;i<nPrim;i++) {
703 dPhi = aftsTrack->
Phi();
704 dPt = aftsTrack->
Pt();
705 dEta = aftsTrack->
Eta();
706 dCharge = aftsTrack->
Charge();
711 cw = (dCharge > 0. ? 0 : 1);
723 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
730 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
735 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
741 Int_t ptbebe = (dPt>1.? 2 : (dPt>0.5 ? 1 : 0));
745 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
751 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
756 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
764 for(
Int_t m=0;m<12;m++)
766 for(
Int_t k=0;k<9;k++)
768 (*fReQ)(m,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1)*n*dPhi);
769 (*fImQ)(m,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1)*n*dPhi);
773 for(
Int_t p=0;p<8;p++)
775 for(
Int_t k=0;k<9;k++)
777 (*fSpk)(p,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k);
786 for(
Int_t k=0;k<9;k++)
788 for(
Int_t m=0;m<4;m++)
794 fReRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
795 fImRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
798 fs1dEBE[0][pe][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
804 fReRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
805 fImRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
808 fs2dEBE[0][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
817 for(
Int_t k=0;k<9;k++)
819 for(
Int_t m=0;m<4;m++)
825 fReRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
826 fImRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
829 fs1dEBE[2][pe][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
835 fReRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
836 fImRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
839 fs2dEBE[2][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
856 dPhi = aftsTrack->
Phi();
857 dPt = aftsTrack->
Pt();
858 dEta = aftsTrack->
Eta();
859 dCharge = aftsTrack->
Charge();
866 if(dCharge > 0.) dPt += 1.E-2;
870 cw = (dCharge > 0. ? 0 : 1);
883 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
890 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
895 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
901 Int_t ptbebe = (dPt>1.? 2 : (dPt>0.5 ? 1 : 0));
905 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
911 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
916 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
922 if(dPhi>2.136283 && dPhi<2.324779)
continue;
928 for(
Int_t k=0;k<9;k++)
930 for(
Int_t m=0;m<4;m++)
936 fReRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
937 fImRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
942 fReRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
943 fImRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
951 fCRCQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
952 fCRCQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
953 fCRCMult[cw][h]->Fill(dEta,wPhiEta);
955 fCRC2QRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
956 fCRC2QIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
957 fCRC2Mul[cw][h]->Fill(dEta,pow(wPhiEta,h));
959 fCRCZDCQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
960 fCRCZDCQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
964 fCRC2QRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
965 fCRC2QIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
966 fCRC2Mul[2][h]->Fill(dEta,pow(wPhiEta,h));
970 fCRCZDCQRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
971 fCRCZDCQIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
974 fCRCZDCQRe[3][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
975 fCRCZDCQIm[3][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
983 if(weraw > 0.) SpecWeig = 1./weraw;
985 fCMEQRe[cw][h]->Fill(dEta,SpecWeig*wPhiEta*TMath::Cos((h+1.)*dPhi));
986 fCMEQIm[cw][h]->Fill(dEta,SpecWeig*wPhiEta*TMath::Sin((h+1.)*dPhi));
987 fCMEMult[cw][h]->Fill(dEta,SpecWeig*wPhiEta);
988 fCMEQRe[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.)*TMath::Cos((h+1.)*dPhi));
989 fCMEQIm[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.)*TMath::Sin((h+1.)*dPhi));
990 fCMEMult[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.));
1006 fPOIPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1007 fPOIPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1010 fPOIPtDiffQReCh[cw][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1011 fPOIPtDiffQImCh[cw][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1014 fPOIPhiDiffQRe[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1015 fPOIPhiDiffQIm[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1019 Int_t keta = (dEta<0.?0:1);
1020 fPOIPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1021 fPOIPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1023 fPOIPhiDiffQReEG[keta][k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1024 fPOIPhiDiffQImEG[keta][k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1028 }
else if(fFlowQCDeltaEta<0. && fFlowQCDeltaEta>-1.) {
1031 fPOIPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1032 fPOIPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1035 fPOIPhiDiffQRe[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1036 fPOIPhiDiffQIm[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1041 if((dEta>0. && dEta<0.4-boundetagap/2.) || (dEta>0.4+boundetagap/2. && dEta<0.8)) {
1043 if(dEta>0. && dEta<0.4-boundetagap/2.) keta = 0;
1045 fPOIPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1046 fPOIPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1054 }
else if(fFlowQCDeltaEta<-1. && fFlowQCDeltaEta>-2.) {
1057 fPOIPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1058 fPOIPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1061 fPOIPhiDiffQRe[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1062 fPOIPhiDiffQIm[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1067 if((dEta<0. && dEta>-0.4+boundetagap/2.) || (dEta<-0.4-boundetagap/2. && dEta>-0.8)) {
1069 if(dEta<0. && dEta>-0.4+boundetagap/2.) keta = 0;
1071 fPOIPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1072 fPOIPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1085 fEtaDiffQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
1086 fEtaDiffQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
1088 fPOIEtaPtQRe[cw][h]->Fill(dEta,dPt,wPhiEta*TMath::Cos((h+1.)*dPhi));
1089 fPOIEtaPtQIm[cw][h]->Fill(dEta,dPt,wPhiEta*TMath::Sin((h+1.)*dPhi));
1164 Int_t ptbebe = (dPt>1.? 2 : (dPt>0.5 ? 1 : 0));
1166 for (
Int_t h=0;h<6;h++) {
1199 printf(
"\n WARNING (QC): No particle (i.e. aftsTrack is a NULL pointer in AFAWQC::Make())!!!!\n\n");
1206 for(
Int_t p=0;p<8;p++)
1208 for(
Int_t k=0;k<9;k++)
1210 (*fSpk)(p,k)=pow((*
fSpk)(p,k),p+1);
1640 cout<<
"Skipping the event because multiplicity is "<<nPrim<<
". Too high to evaluate nested loops!"<<endl;
1644 cout<<
"Skipping the event because multiplicity is "<<nPrim<<
"."<<endl;
1780 cosP1n = dReQ1n/dMult;
1798 cosP1nP1n = (pow(dReQ1n,2)-pow(dImQ1n,2)-dReQ2n)/(dMult*(dMult-1));
1799 cosP2nM1n = (dReQ2n*dReQ1n+dImQ2n*dImQ1n-dReQ1n)/(dMult*(dMult-1));
1823 cosP1nM1nM1n = (dReQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2))-dReQ1n*dReQ2n-dImQ1n*dImQ2n-2.*(dMult-1)*dReQ1n)
1824 / (dMult*(dMult-1)*(dMult-2));
1889 sinP1n = dImQ1n/dMult;
1906 sinP1nP1n = (2.*dReQ1n*dImQ1n-dImQ2n)/(dMult*(dMult-1));
1907 sinP2nM1n = (dImQ2n*dReQ1n-dReQ2n*dImQ1n-dImQ1n)/(dMult*(dMult-1));
1931 sinP1nM1nM1n = (-dImQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2))+dReQ1n*dImQ2n-dImQ1n*dReQ2n+2.*(dMult-1)*dImQ1n)
1932 / (dMult*(dMult-1)*(dMult-2));
1962 if(outputListHistos)
1967 printf(
"\n WARNING (QC): fHistList is NULL in AFAWQC::GOH() !!!!\n\n");
1995 printf(
"\n WARNING (QC): outputListHistos is NULL in AFAWQC::GOH() !!!!\n\n");
2007 Int_t nBinsPt = profilePtEta->GetNbinsX();
2008 Double_t dPtMin = (profilePtEta->GetXaxis())->GetXmin();
2009 Double_t dPtMax = (profilePtEta->GetXaxis())->GetXmax();
2011 Int_t nBinsEta = profilePtEta->GetNbinsY();
2013 TProfile *profilePt =
new TProfile(
"",
"",nBinsPt,dPtMin,dPtMax);
2015 for(
Int_t p=1;p<=nBinsPt;p++)
2023 for(
Int_t e=1;e<=nBinsEta;e++)
2025 contentPt += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
2026 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
2027 entryPt += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
2029 sum1 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
2030 * (pow(profilePtEta->GetBinError(profilePtEta->GetBin(p,e)),2.)
2031 + pow(profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)),2.));
2032 sum2 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
2033 sum3 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
2034 * (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)));
2036 if(sum2>0. && sum1/sum2-pow(sum3/sum2,2.) > 0.)
2038 spreadPt = pow(sum1/sum2-pow(sum3/sum2,2.),0.5);
2040 profilePt->SetBinContent(p,contentPt);
2041 profilePt->SetBinEntries(p,entryPt);
2043 profilePt->SetBinError(p,spreadPt);
2060 Int_t nBinsEta = profilePtEta->GetNbinsY();
2061 Double_t dEtaMin = (profilePtEta->GetYaxis())->GetXmin();
2062 Double_t dEtaMax = (profilePtEta->GetYaxis())->GetXmax();
2064 Int_t nBinsPt = profilePtEta->GetNbinsX();
2066 TProfile *profileEta =
new TProfile(
"",
"",nBinsEta,dEtaMin,dEtaMax);
2068 for(
Int_t e=1;e<=nBinsEta;e++)
2072 for(
Int_t p=1;p<=nBinsPt;p++)
2074 contentEta += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
2075 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
2076 entryEta += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
2078 profileEta->SetBinContent(e,contentEta);
2079 profileEta->SetBinEntries(e,entryEta);
2099 for(
Int_t b=0;b<4;b++)
2110 }
else if(type ==
"RP")
2120 }
else if(type ==
"POI")
2132 for(
Int_t b=0;b<4;b++)
2141 TString subtitle2 =
" (rebinned in M)";
2143 if(type !=
"RF, rebinned in M")
2147 subtitle.Append(type);
2148 subtitle.Append(
", without weights)");
2151 subtitle.Append(type);
2152 subtitle.Append(
", with weights)");
2158 subtitle.Append(
"RF");
2159 subtitle.Append(
", without weights)");
2162 subtitle.Append(
"RF");
2163 subtitle.Append(
", with weights)");
2168 cout<<
"*************************************"<<endl;
2169 cout<<
"*************************************"<<endl;
2170 cout<<title.Data()<<endl;
2171 cout<<subtitle.Data()<<endl;
2172 if(type ==
"RF, rebinned in M"){cout<<subtitle2.Data()<<endl;}
2175 for(
Int_t i=0;i<4;i++)
2177 cout<<
" v_"<<n<<
"{"<<2*(i+1)<<
"} = "<<dVn[i]<<
" +/- "<<dVnErr[i]<<endl;
2185 cout<<
" detector bias (corrected for): "<<endl;
2188 cout<<
" detector bias (not corrected for):"<<endl;
2194 if(type ==
"RF" || type ==
"RF, rebinned in M")
2198 else if (type ==
"RP")
2202 else if (type ==
"POI")
2207 cout<<
"*************************************"<<endl;
2208 cout<<
"*************************************"<<endl;
2218 TFile *output =
new TFile(outputFileName.Data(),
"RECREATE");
2234 outputFileName->Write(outputFileName->GetName(), TObject::kSingleKey);
2247 TString commonHistsName =
"AliFlowCommonHistQC";
2255 TString commonHists2ndOrderName =
"AliFlowCommonHist2ndOrderQC";
2260 TString commonHists4thOrderName =
"AliFlowCommonHist4thOrderQC";
2265 TString commonHists6thOrderName =
"AliFlowCommonHist6thOrderQC";
2270 TString commonHists8thOrderName =
"AliFlowCommonHist8thOrderQC";
2278 TString commonHistResults2ndOrderName =
"AliFlowCommonHistResults2ndOrderQC";
2283 TString commonHistResults4thOrderName =
"AliFlowCommonHistResults4thOrderQC";
2288 TString commonHistResults6thOrderName =
"AliFlowCommonHistResults6thOrderQC";
2293 TString commonHistResults8thOrderName =
"AliFlowCommonHistResults8thOrderQC";
2308 printf(
"\n WARNING (QC): fWeightsList is NULL in AFAWQC::BAFWH() !!!! \n\n");
2312 TString fUseParticleWeightsName =
"fUseParticleWeightsQC";
2314 fUseParticleWeights =
new TProfile(fUseParticleWeightsName.Data(),
"0 = particle weight not used, 1 = particle weight used ",8,0,8);
2508 TF1 *CenFit =
new TF1(
"CenFit",
"pol0", 0., 100.);
2511 Double_t CenAv = CenFit->GetParameter(0);
2523 Double_t CenAv = CenFit->GetParameter(0);
2525 Double_t SemiCenAv = CenFit->GetParameter(0);
2551 TString sinCosFlag[2] = {
"sin",
"cos"};
2552 TString powerFlag[2] = {
"linear",
"quadratic"};
2555 TString intFlowFlagsName =
"fIntFlowFlags";
2557 fIntFlowFlags =
new TProfile(intFlowFlagsName.Data(),
"Flags for Integrated Flow",20,0.,20.);
2563 fIntFlowFlags->GetXaxis()->SetBinLabel(1,
"Particle Weights");
2565 fIntFlowFlags->GetXaxis()->SetBinLabel(3,
"Corrected for NUA?");
2566 fIntFlowFlags->GetXaxis()->SetBinLabel(4,
"Print RF results");
2567 fIntFlowFlags->GetXaxis()->SetBinLabel(5,
"Print RP results");
2568 fIntFlowFlags->GetXaxis()->SetBinLabel(6,
"Print POI results");
2569 fIntFlowFlags->GetXaxis()->SetBinLabel(7,
"Print RF (rebinned in M) results");
2570 fIntFlowFlags->GetXaxis()->SetBinLabel(8,
"Corrected for NUA vs M?");
2571 fIntFlowFlags->GetXaxis()->SetBinLabel(9,
"Propagate errors to v_{n} from correlations?");
2572 fIntFlowFlags->GetXaxis()->SetBinLabel(10,
"Calculate cumulants vs M");
2573 fIntFlowFlags->GetXaxis()->SetBinLabel(11,
"fMinimumBiasReferenceFlow");
2574 fIntFlowFlags->GetXaxis()->SetBinLabel(12,
"fForgetAboutCovariances");
2576 fIntFlowFlags->GetXaxis()->SetBinLabel(14,
"fFillMultipleControlHistograms");
2577 fIntFlowFlags->GetXaxis()->SetBinLabel(15,
"Calculate all correlations vs M");
2578 fIntFlowFlags->GetXaxis()->SetBinLabel(16,
"fMultiplicityIs");
2580 fIntFlowFlags->GetXaxis()->SetBinLabel(18,
"fUse2DHistograms");
2581 fIntFlowFlags->GetXaxis()->SetBinLabel(19,
"fFillProfilesVsMUsingWeights");
2582 fIntFlowFlags->GetXaxis()->SetBinLabel(20,
"fUseQvectorTerms");
2587 fReQ =
new TMatrixD(12,9);
2588 fImQ =
new TMatrixD(12,9);
2589 fSpk =
new TMatrixD(8,9);
2591 TString intFlowCorrelationsEBEName =
"fIntFlowCorrelationsEBE";
2595 TString intFlowEventWeightsForCorrelationsEBEName =
"fIntFlowEventWeightsForCorrelationsEBE";
2596 intFlowEventWeightsForCorrelationsEBEName +=
fAnalysisLabel->Data();
2599 TString intFlowCorrelationsAllEBEName =
"fIntFlowCorrelationsAllEBE";
2604 TString fIntFlowCorrectionTermsForNUAEBEName =
"fIntFlowCorrectionTermsForNUAEBE";
2606 for(
Int_t sc=0;sc<2;sc++)
2608 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);
2611 TString fIntFlowEventWeightForCorrectionTermsForNUAEBEName =
"fIntFlowEventWeightForCorrectionTermsForNUAEBE";
2612 fIntFlowEventWeightForCorrectionTermsForNUAEBEName +=
fAnalysisLabel->Data();
2613 for(
Int_t sc=0;sc<2;sc++)
2619 TString avMultiplicityName =
"fAvMultiplicity";
2621 fAvMultiplicity =
new TProfile(avMultiplicityName.Data(),
"Average multiplicities of reference particles (RPs)",9,0,9);
2638 TString correlationFlag[4] = {
"#LT#LT2#GT#GT",
"#LT#LT4#GT#GT",
"#LT#LT6#GT#GT",
"#LT#LT8#GT#GT"};
2639 TString intFlowCorrelationsProName =
"fIntFlowCorrelationsPro";
2641 fIntFlowCorrelationsPro =
new TProfile(intFlowCorrelationsProName.Data(),
"Average correlations for all events",4,0,4,
"s");
2647 for(
Int_t b=0;b<4;b++)
2653 TString squaredCorrelationFlag[4] = {
"#LT#LT2#GT^{2}#GT",
"#LT#LT4#GT^{2}#GT",
"#LT#LT6#GT^{2}#GT",
"#LT#LT8#GT^{2}#GT"};
2654 TString intFlowSquaredCorrelationsProName =
"fIntFlowSquaredCorrelationsPro";
2662 for(
Int_t b=0;b<4;b++)
2669 for(
Int_t ci=0;ci<4;ci++)
2672 TString intFlowCorrelationsVsMProName =
"fIntFlowCorrelationsVsMPro";
2674 fIntFlowCorrelationsVsMPro[ci] =
new TProfile(Form(
"%s, %s",intFlowCorrelationsVsMProName.Data(),correlationFlag[ci].Data()),
2675 Form(
"%s vs multiplicity",correlationFlag[ci].
Data()),
2691 TString intFlowSquaredCorrelationsVsMProName =
"fIntFlowSquaredCorrelationsVsMPro";
2694 Form(
"%s vs multiplicity",squaredCorrelationFlag[ci].
Data()),
2712 TString intFlowCorrelationsAllProName =
"fIntFlowCorrelationsAllPro";
2714 fIntFlowCorrelationsAllPro =
new TProfile(intFlowCorrelationsAllProName.Data(),
"Average all correlations for all events",64,0,64);
2820 fIntFlowCorrelationsAllVsMPro[30] =
new TProfile(
"eight1n1n1n1n1n1n1n1n",
"#LT#LT8#GT#GT_{n,n,n,n|n,n,n,n}",
fnBinsMult,
fMinMult,
fMaxMult);
2854 for(
Int_t n=0;n<63;n++)
2876 TString intFlowExtraCorrelationsProName =
"fIntFlowExtraCorrelationsPro";
2878 fIntFlowExtraCorrelationsPro =
new TProfile(intFlowExtraCorrelationsProName.Data(),
"Average extra correlations for all events",100,0,100,
"s");
2889 TString productFlag[6] = {
"#LT#LT2#GT#LT4#GT#GT",
"#LT#LT2#GT#LT6#GT#GT",
"#LT#LT2#GT#LT8#GT#GT",
2890 "#LT#LT4#GT#LT6#GT#GT",
"#LT#LT4#GT#LT8#GT#GT",
"#LT#LT6#GT#LT8#GT#GT"};
2891 TString intFlowProductOfCorrelationsProName =
"fIntFlowProductOfCorrelationsPro";
2898 for(
Int_t b=0;b<6;b++)
2907 TString intFlowProductOfCorrelationsVsMProName =
"fIntFlowProductOfCorrelationsVsMPro";
2908 intFlowProductOfCorrelationsVsMProName +=
fAnalysisLabel->Data();
2912 Form(
"%s versus multiplicity",productFlag[
pi].
Data()),
2928 TString intFlowProductOfCorrectionTermsForNUAProName =
"fIntFlowProductOfCorrectionTermsForNUAPro";
2929 intFlowProductOfCorrectionTermsForNUAProName +=
fAnalysisLabel->Data();
2964 for(
Int_t sc=0;sc<2;sc++)
2966 TString intFlowCorrectionTermsForNUAProName =
"fIntFlowCorrectionTermsForNUAPro";
2968 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");
2981 TString correctionTermFlag[4] = {
"(n(phi1))",
"(n(phi1+phi2))",
"(n(phi1-phi2-phi3))",
"(n(2phi1-phi2))"};
2982 for(
Int_t ci=0;ci<4;ci++)
2984 TString intFlowCorrectionTermsForNUAVsMProName =
"fIntFlowCorrectionTermsForNUAVsMPro";
2985 intFlowCorrectionTermsForNUAVsMProName +=
fAnalysisLabel->Data();
2986 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");
2994 TString intFlowCorrelationsHistName =
"fIntFlowCorrelationsHist";
3009 for(
Int_t ci=0;ci<4;ci++)
3011 TString intFlowCorrelationsVsMHistName =
"fIntFlowCorrelationsVsMHist";
3014 Form(
"%s vs multiplicity",correlationFlag[ci].
Data()),
3031 TString intFlowCorrelationsAllHistName =
"fIntFlowCorrelationsAllHist";
3072 for(
Int_t sc=0;sc<2;sc++)
3074 TString intFlowCorrectionTermsForNUAHistName =
"fIntFlowCorrectionTermsForNUAHist";
3076 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);
3088 TString intFlowCovariancesName =
"fIntFlowCovariances";
3090 fIntFlowCovariances =
new TH1D(intFlowCovariancesName.Data(),
"Covariances (multiplied with weight dependent prefactor)",6,0,6);
3101 TString intFlowSumOfEventWeightsName =
"fIntFlowSumOfEventWeights";
3103 for(
Int_t power=0;power<2;power++)
3105 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);
3114 }
else if (power == 1)
3124 TString intFlowSumOfProductOfEventWeightsName =
"fIntFlowSumOfProductOfEventWeights";
3140 TString intFlowCovariancesVsMName =
"fIntFlowCovariancesVsM";
3142 TString covarianceFlag[6] = {
"Cov(<2>,<4>)",
"Cov(<2>,<6>)",
"Cov(<2>,<8>)",
"Cov(<4>,<6>)",
"Cov(<4>,<8>)",
"Cov(<6>,<8>)"};
3143 for(
Int_t ci=0;ci<6;ci++)
3146 Form(
"%s vs multiplicity",covarianceFlag[ci].
Data()),
3166 TString intFlowSumOfEventWeightsVsMName =
"fIntFlowSumOfEventWeightsVsM";
3168 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>}"},
3169 {
"#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}"}};
3170 for(
Int_t si=0;si<4;si++)
3172 for(
Int_t power=0;power<2;power++)
3175 Form(
"%s vs multiplicity",sumFlag[power][si].
Data()),
3197 TString intFlowSumOfProductOfEventWeightsVsMName =
"fIntFlowSumOfProductOfEventWeightsVsM";
3198 intFlowSumOfProductOfEventWeightsVsMName +=
fAnalysisLabel->Data();
3199 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>}",
3200 "#sum_{i=1}^{N} w_{<4>} w_{<6>}",
"#sum_{i=1}^{N} w_{<4>} w_{<8>}",
"#sum_{i=1}^{N} w_{<6>} w_{<8>}"};
3204 Form(
"%s versus multiplicity",sopowFlag[
pi].
Data()),
3221 TString intFlowCovariancesNUAName =
"fIntFlowCovariancesNUA";
3223 fIntFlowCovariancesNUA =
new TH1D(intFlowCovariancesNUAName.Data(),
"Covariances for NUA (multiplied with weight dependent prefactor)",27,0,27);
3242 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(16,
"Cov(<cos(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3243 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(17,
"Cov(<cos(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3246 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(20,
"Cov(<sin(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3247 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(21,
"Cov(<sin(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3248 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(22,
"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}+#phi_{2})>)");
3249 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(23,
"Cov(<cos(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3250 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(24,
"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3251 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(25,
"Cov(<sin(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3252 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(26,
"Cov(<sin(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3253 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(27,
"Cov(<cos(#phi_{1}-#phi_{2}-#phi_{3}>,<sin(#phi_{1}-#phi_{2}-#phi_{3}>)");
3256 TString intFlowSumOfEventWeightsNUAName =
"fIntFlowSumOfEventWeightsNUA";
3258 for(
Int_t sc=0;sc<2;sc++)
3260 for(
Int_t power=0;power<2;power++)
3262 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);
3271 }
else if(power == 1)
3275 (
fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(3,Form(
"#sum_{i=1}^{N} w_{<%s(#phi_{1}-#phi_{2}-#phi_{3})>}^{2}",sinCosFlag[sc].
Data()));
3282 TString intFlowSumOfProductOfEventWeightsNUAName =
"fIntFlowSumOfProductOfEventWeightsNUA";
3283 intFlowSumOfProductOfEventWeightsNUAName +=
fAnalysisLabel->Data();
3316 TString cumulantFlag[4] = {
"QC{2}",
"QC{4}",
"QC{6}",
"QC{8}"};
3317 TString intFlowQcumulantsName =
"fIntFlowQcumulants";
3322 fIntFlowQcumulants->SetTitle(
"Reference Q-cumulants (error from non-isotropic terms also propagated)");
3326 for(
Int_t b=0;b<4;b++)
3334 TString intFlowQcumulantsRebinnedInMName =
"fIntFlowQcumulantsRebinnedInM";
3339 for(
Int_t b=0;b<4;b++)
3346 TString intFlowQcumulantsErrorSquaredRatioName =
"fIntFlowQcumulantsErrorSquaredRatio";
3347 intFlowQcumulantsErrorSquaredRatioName +=
fAnalysisLabel->Data();
3351 for(
Int_t b=0;b<4;b++)
3359 TString intFlowQcumulantsVsMName =
"fIntFlowQcumulantsVsM";
3361 for(
Int_t co=0;co<4;co++)
3364 Form(
"%s vs multiplicity",cumulantFlag[co].
Data()),
3381 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)};
3382 TString intFlowName =
"fIntFlow";
3385 fIntFlow =
new TH1D(intFlowName.Data(),
"Reference flow estimates from Q-cumulants",4,0,4);
3388 for(
Int_t b=0;b<4;b++)
3390 (
fIntFlow->GetXaxis())->SetBinLabel(b+1,flowFlag[b].
Data());
3396 TString intFlowRebinnedInMName =
"fIntFlowRebinnedInM";
3398 fIntFlowRebinnedInM =
new TH1D(intFlowRebinnedInMName.Data(),
"Reference flow estimates from Q-cumulants (rebinned in M)",4,0,4);
3401 for(
Int_t b=0;b<4;b++)
3410 TString intFlowVsMName =
"fIntFlowVsM";
3412 for(
Int_t co=0;co<4;co++)
3414 fIntFlowVsM[co] =
new TH1D(Form(
"%s, %s",intFlowVsMName.Data(),flowFlag[co].Data()),
3415 Form(
"%s vs multiplicity",flowFlag[co].
Data()),
3422 fIntFlowVsM[co]->GetXaxis()->SetTitle(
"Reference multiplicity (from ESD)");
3432 TString intFlowDetectorBiasName =
"fIntFlowDetectorBias";
3437 for(
Int_t ci=0;ci<4;ci++)
3439 (
fIntFlowDetectorBias->GetXaxis())->SetBinLabel(ci+1,Form(
"#frac{corrected}{measured} %s",cumulantFlag[ci].
Data()));
3445 TString intFlowDetectorBiasVsMName =
"fIntFlowDetectorBiasVsM";
3447 for(
Int_t ci=0;ci<4;ci++)
3450 Form(
"Quantifying detector bias for %s vs multiplicity",cumulantFlag[ci].
Data()),
3479 TString controlHistogramsFlagsName =
"fControlHistogramsFlags";
3481 fControlHistogramsFlags =
new TProfile(controlHistogramsFlagsName.Data(),
"Flags for Control Histograms",2,0,2);
3495 TString sCorrelationNoRPsVsRefMultName =
"fCorrelationNoRPsVsRefMult";
3506 TString sCorrelationNoPOIsVsRefMultName =
"fCorrelationNoPOIsVsRefMult";
3517 TString sCorrelationNoRPsVsNoPOIsName =
"fCorrelationNoRPsVsNoPOIs";
3528 TString sCorrelation[4] = {
"#LT2#GT",
"#LT4#GT",
"#LT6#GT",
"#LT8#GT"};
3532 sMultiplicity =
"# RPs";
3535 sMultiplicity =
"Reference multiplicity (from ESD)";
3538 sMultiplicity =
"# POIs";
3540 for(
Int_t ci=0;ci<4;ci++)
3552 TString sCorrelationProduct[1] = {
"#LT2#GT#LT4#GT"};
3553 for(
Int_t cpi=0;cpi<1;cpi++)
3567 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}}"};
3568 for(
Int_t qvti=0;qvti<4;qvti++)
3595 TString bootstrapFlagsName =
"fBootstrapFlags";
3597 fBootstrapFlags =
new TProfile(bootstrapFlagsName.Data(),
"Flags for bootstrap",3,0,3);
3609 TString correlationFlag[4] = {
"#LT#LT2#GT#GT",
"#LT#LT4#GT#GT",
"#LT#LT6#GT#GT",
"#LT#LT8#GT#GT"};
3610 TString cumulantFlag[4] = {
"QC{2}",
"QC{4}",
"QC{6}",
"QC{8}"};
3614 TString bootstrapCorrelationsName =
"fBootstrapCorrelations";
3618 for(
Int_t ci=0;ci<4;ci++)
3628 TString bootstrapCumulantsName =
"fBootstrapCumulants";
3632 for(
Int_t co=0;co<4;co++)
3647 sMultiplicity =
"# RPs";
3650 sMultiplicity =
"Reference multiplicity (from ESD)";
3653 sMultiplicity =
"# POIs";
3658 TString bootstrapCorrelationsVsMName =
"fBootstrapCorrelationsVsM";
3660 for(
Int_t ci=0;ci<4;ci++)
3662 fBootstrapCorrelationsVsM[ci] =
new TProfile2D(Form(
"%s, %s",bootstrapCorrelationsVsMName.Data(),correlationFlag[ci].Data()),
3663 Form(
"Bootstrap Correlations Vs. M, %s",correlationFlag[ci].
Data()),
3674 TString bootstrapCumulantsVsMName =
"fBootstrapCumulantsVsM";
3676 for(
Int_t co=0;co<4;co++)
3679 Form(
"Bootstrap Cumulants Vs. M, %s",cumulantFlag[co].
Data()),
3705 TString mixedHarmonicsFlagsName =
"fMixedHarmonicsFlags";
3707 fMixedHarmonicsFlags =
new TProfile(mixedHarmonicsFlagsName.Data(),
"Flags for Mixed Harmonics",4,0,4);
3723 TString s2pCorrelationsName =
"f2pCorrelations";
3725 f2pCorrelations =
new TProfile(s2pCorrelationsName.Data(),Form(
"2-particle correlations (n = %d)",
fHarmonic),6,0,6,
"s");
3740 TString s3pCorrelationsName =
"f3pCorrelations";
3742 f3pCorrelations =
new TProfile(s3pCorrelationsName.Data(),Form(
"3-particle correlations (n = %d)",
fHarmonic),10,0,10,
"s");
3763 TString s4pCorrelationsName =
"f4pCorrelations";
3765 f4pCorrelations =
new TProfile(s4pCorrelationsName.Data(),Form(
"4-particle correlations (n = %d)",
fHarmonic),45,0,45,
"s");
3824 TString s5pCorrelationsName =
"f5pCorrelations";
3826 f5pCorrelations =
new TProfile(s5pCorrelationsName.Data(),Form(
"5-particle correlations (n = %d)",
fHarmonic),87,0,87,
"s");
3927 TString s6pCorrelationsName =
"f6pCorrelations";
3929 f6pCorrelations =
new TProfile(s6pCorrelationsName.Data(),Form(
"6-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3938 TString s7pCorrelationsName =
"f7pCorrelations";
3940 f7pCorrelations =
new TProfile(s7pCorrelationsName.Data(),Form(
"7-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3949 TString s8pCorrelationsName =
"f8pCorrelations";
3951 f8pCorrelations =
new TProfile(s8pCorrelationsName.Data(),Form(
"8-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3996 TString mixedHarmonicEventWeightsName =
"fMixedHarmonicEventWeights";
3998 TString powerFlag[2] = {
"linear",
"quadratic"};
3999 for(
Int_t power=0;power<2;power++)
4001 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.);
4015 }
else if (power == 1)
4030 TString mixedHarmonicProductOfEventWeightsName =
"fMixedHarmonicProductOfEventWeights";
4031 mixedHarmonicProductOfEventWeightsName +=
fAnalysisLabel->Data();
4036 for(
Int_t b=1;b<=8;b++)
4044 TString mixedHarmonicProductOfCorrelationsName =
"fMixedHarmonicProductOfCorrelations";
4045 mixedHarmonicProductOfCorrelationsName +=
fAnalysisLabel->Data();