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),
291 fCorrWeightTPC(kUnit),
292 fCorrWeightVZ(kUnit),
293 fCorrWeightZDC(kUnit),
296 fCRCCenBinWidth(CenWidth),
297 fCRCIntRbRList(NULL),
300 fInteractionRate(kAll),
301 fSelectCharge(kAllCh),
302 fPOIExtraWeights(kNone),
304 fCRCQVecListTPC(NULL),
305 fCRCQVecWeightsList(NULL),
306 fCRCZDCCalibList(NULL),
307 fCRCVZEROCalibList(NULL),
308 fCRCZDCResList(NULL),
312 fCRCZDCRbRList(NULL),
319 fFlowSPZDCList(NULL),
324 fFlowQCDeltaEta(0.4),
330 fQAZDCCutsFlag(kTRUE),
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;
576 if(fRunBin<0 || fRunBin>=
fCRCnRun) {
return;}
578 if(fCenBin<0 || fCenBin>=
fCRCnCen) {
return;}
586 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};
587 for (
Int_t i=0; i<40; i++) {
652 Bool_t bPassZDCcuts = kTRUE;
653 if( ZCM<=0. || ZAM<=0. || sqrt(ZCRe*ZCRe+ZCIm*ZCIm)<1.E-6 || sqrt(ZARe*ZARe+ZAIm*ZAIm)<1.E-6 ) bPassZDCcuts=kFALSE;
675 AliWarning(
"WARNING: POIExtraWeights (kEtaPhiRbR) not found ! \n");
679 for (
Int_t i=0; i<2; i++) {
683 AliWarning(
"WARNING: POIExtraWeights (kEtaPhiChRbR) not found ! \n");
691 for(
Int_t i=0;i<nPrim;i++) {
701 dPhi = aftsTrack->
Phi();
702 dPt = aftsTrack->
Pt();
703 dEta = aftsTrack->
Eta();
704 dCharge = aftsTrack->
Charge();
709 cw = (dCharge > 0. ? 0 : 1);
722 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
729 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
734 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
740 Int_t ptbebe = (dPt>1.? 2 : (dPt>0.5 ? 1 : 0));
744 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
750 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
755 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
763 for(
Int_t m=0;m<12;m++)
765 for(
Int_t k=0;k<9;k++)
767 (*fReQ)(m,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1)*n*dPhi);
768 (*fImQ)(m,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1)*n*dPhi);
772 for(
Int_t p=0;p<8;p++)
774 for(
Int_t k=0;k<9;k++)
776 (*fSpk)(p,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k);
785 for(
Int_t k=0;k<9;k++)
787 for(
Int_t m=0;m<4;m++)
793 fReRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
794 fImRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
797 fs1dEBE[0][pe][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
803 fReRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
804 fImRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
807 fs2dEBE[0][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
816 for(
Int_t k=0;k<9;k++)
818 for(
Int_t m=0;m<4;m++)
824 fReRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
825 fImRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
828 fs1dEBE[2][pe][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
834 fReRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
835 fImRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
838 fs2dEBE[2][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
851 dPhi = aftsTrack->
Phi();
852 dPt = aftsTrack->
Pt();
853 dEta = aftsTrack->
Eta();
854 dCharge = aftsTrack->
Charge();
861 if(dCharge > 0.) dPt += 1.E-2;
865 cw = (dCharge > 0. ? 0 : 1);
878 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
885 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
890 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
896 Int_t ptbebe = (dPt>1.? 2 : (dPt>0.5 ? 1 : 0));
900 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
906 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
911 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
917 if(dPhi>2.136283 && dPhi<2.324779)
continue;
923 for(
Int_t k=0;k<9;k++)
925 for(
Int_t m=0;m<4;m++)
931 fReRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
932 fImRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
937 fReRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
938 fImRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
946 fCRCQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
947 fCRCQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
948 fCRCMult[cw][h]->Fill(dEta,wPhiEta);
950 fCRC2QRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
951 fCRC2QIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
952 fCRC2Mul[cw][h]->Fill(dEta,pow(wPhiEta,h));
954 fCRCZDCQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
955 fCRCZDCQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
959 fCRC2QRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
960 fCRC2QIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
961 fCRC2Mul[2][h]->Fill(dEta,pow(wPhiEta,h));
965 fCRCZDCQRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
966 fCRCZDCQIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
969 fCRCZDCQRe[3][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
970 fCRCZDCQIm[3][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
978 if(weraw > 0.) SpecWeig = 1./weraw;
980 fCMEQRe[cw][h]->Fill(dEta,SpecWeig*wPhiEta*TMath::Cos((h+1.)*dPhi));
981 fCMEQIm[cw][h]->Fill(dEta,SpecWeig*wPhiEta*TMath::Sin((h+1.)*dPhi));
982 fCMEMult[cw][h]->Fill(dEta,SpecWeig*wPhiEta);
983 fCMEQRe[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.)*TMath::Cos((h+1.)*dPhi));
984 fCMEQIm[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.)*TMath::Sin((h+1.)*dPhi));
985 fCMEMult[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.));
1001 fPOIPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1002 fPOIPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1005 fPOIPtDiffQReCh[cw][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1006 fPOIPtDiffQImCh[cw][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1009 fPOIPhiDiffQRe[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1010 fPOIPhiDiffQIm[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1014 Int_t keta = (dEta<0.?0:1);
1015 fPOIPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1016 fPOIPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1018 fPOIPhiDiffQReEG[keta][k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1019 fPOIPhiDiffQImEG[keta][k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1023 }
else if(fFlowQCDeltaEta<0. && fFlowQCDeltaEta>-1.) {
1026 fPOIPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1027 fPOIPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1030 fPOIPhiDiffQRe[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1031 fPOIPhiDiffQIm[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1036 if((dEta>0. && dEta<0.4-boundetagap/2.) || (dEta>0.4+boundetagap/2. && dEta<0.8)) {
1038 if(dEta>0. && dEta<0.4-boundetagap/2.) keta = 0;
1040 fPOIPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1041 fPOIPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1049 }
else if(fFlowQCDeltaEta<-1. && fFlowQCDeltaEta>-2.) {
1052 fPOIPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1053 fPOIPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1056 fPOIPhiDiffQRe[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1057 fPOIPhiDiffQIm[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1062 if((dEta<0. && dEta>-0.4+boundetagap/2.) || (dEta<-0.4-boundetagap/2. && dEta>-0.8)) {
1064 if(dEta<0. && dEta>-0.4+boundetagap/2.) keta = 0;
1066 fPOIPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1067 fPOIPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1080 fEtaDiffQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
1081 fEtaDiffQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
1083 fPOIEtaPtQRe[cw][h]->Fill(dEta,dPt,wPhiEta*TMath::Cos((h+1.)*dPhi));
1084 fPOIEtaPtQIm[cw][h]->Fill(dEta,dPt,wPhiEta*TMath::Sin((h+1.)*dPhi));
1091 if(bFillDis && bPassZDCcuts) {
1159 Int_t ptbebe = (dPt>1.? 2 : (dPt>0.5 ? 1 : 0));
1161 for (
Int_t h=0;h<6;h++) {
1204 printf(
"\n WARNING (QC): No particle (i.e. aftsTrack is a NULL pointer in AFAWQC::Make())!!!!\n\n");
1211 for(
Int_t p=0;p<8;p++)
1213 for(
Int_t k=0;k<9;k++)
1215 (*fSpk)(p,k)=pow((*
fSpk)(p,k),p+1);
1645 cout<<
"Skipping the event because multiplicity is "<<nPrim<<
". Too high to evaluate nested loops!"<<endl;
1649 cout<<
"Skipping the event because multiplicity is "<<nPrim<<
"."<<endl;
1785 cosP1n = dReQ1n/dMult;
1803 cosP1nP1n = (pow(dReQ1n,2)-pow(dImQ1n,2)-dReQ2n)/(dMult*(dMult-1));
1804 cosP2nM1n = (dReQ2n*dReQ1n+dImQ2n*dImQ1n-dReQ1n)/(dMult*(dMult-1));
1828 cosP1nM1nM1n = (dReQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2))-dReQ1n*dReQ2n-dImQ1n*dImQ2n-2.*(dMult-1)*dReQ1n)
1829 / (dMult*(dMult-1)*(dMult-2));
1894 sinP1n = dImQ1n/dMult;
1911 sinP1nP1n = (2.*dReQ1n*dImQ1n-dImQ2n)/(dMult*(dMult-1));
1912 sinP2nM1n = (dImQ2n*dReQ1n-dReQ2n*dImQ1n-dImQ1n)/(dMult*(dMult-1));
1936 sinP1nM1nM1n = (-dImQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2))+dReQ1n*dImQ2n-dImQ1n*dReQ2n+2.*(dMult-1)*dImQ1n)
1937 / (dMult*(dMult-1)*(dMult-2));
1967 if(outputListHistos)
1972 printf(
"\n WARNING (QC): fHistList is NULL in AFAWQC::GOH() !!!!\n\n");
2000 printf(
"\n WARNING (QC): outputListHistos is NULL in AFAWQC::GOH() !!!!\n\n");
2012 Int_t nBinsPt = profilePtEta->GetNbinsX();
2013 Double_t dPtMin = (profilePtEta->GetXaxis())->GetXmin();
2014 Double_t dPtMax = (profilePtEta->GetXaxis())->GetXmax();
2016 Int_t nBinsEta = profilePtEta->GetNbinsY();
2018 TProfile *profilePt =
new TProfile(
"",
"",nBinsPt,dPtMin,dPtMax);
2020 for(
Int_t p=1;p<=nBinsPt;p++)
2028 for(
Int_t e=1;e<=nBinsEta;e++)
2030 contentPt += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
2031 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
2032 entryPt += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
2034 sum1 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
2035 * (pow(profilePtEta->GetBinError(profilePtEta->GetBin(p,e)),2.)
2036 + pow(profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)),2.));
2037 sum2 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
2038 sum3 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
2039 * (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)));
2041 if(sum2>0. && sum1/sum2-pow(sum3/sum2,2.) > 0.)
2043 spreadPt = pow(sum1/sum2-pow(sum3/sum2,2.),0.5);
2045 profilePt->SetBinContent(p,contentPt);
2046 profilePt->SetBinEntries(p,entryPt);
2048 profilePt->SetBinError(p,spreadPt);
2065 Int_t nBinsEta = profilePtEta->GetNbinsY();
2066 Double_t dEtaMin = (profilePtEta->GetYaxis())->GetXmin();
2067 Double_t dEtaMax = (profilePtEta->GetYaxis())->GetXmax();
2069 Int_t nBinsPt = profilePtEta->GetNbinsX();
2071 TProfile *profileEta =
new TProfile(
"",
"",nBinsEta,dEtaMin,dEtaMax);
2073 for(
Int_t e=1;e<=nBinsEta;e++)
2077 for(
Int_t p=1;p<=nBinsPt;p++)
2079 contentEta += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
2080 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
2081 entryEta += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
2083 profileEta->SetBinContent(e,contentEta);
2084 profileEta->SetBinEntries(e,entryEta);
2104 for(
Int_t b=0;b<4;b++)
2115 }
else if(type ==
"RP")
2125 }
else if(type ==
"POI")
2137 for(
Int_t b=0;b<4;b++)
2146 TString subtitle2 =
" (rebinned in M)";
2148 if(type !=
"RF, rebinned in M")
2152 subtitle.Append(type);
2153 subtitle.Append(
", without weights)");
2156 subtitle.Append(type);
2157 subtitle.Append(
", with weights)");
2163 subtitle.Append(
"RF");
2164 subtitle.Append(
", without weights)");
2167 subtitle.Append(
"RF");
2168 subtitle.Append(
", with weights)");
2173 cout<<
"*************************************"<<endl;
2174 cout<<
"*************************************"<<endl;
2175 cout<<title.Data()<<endl;
2176 cout<<subtitle.Data()<<endl;
2177 if(type ==
"RF, rebinned in M"){cout<<subtitle2.Data()<<endl;}
2180 for(
Int_t i=0;i<4;i++)
2182 cout<<
" v_"<<n<<
"{"<<2*(i+1)<<
"} = "<<dVn[i]<<
" +/- "<<dVnErr[i]<<endl;
2190 cout<<
" detector bias (corrected for): "<<endl;
2193 cout<<
" detector bias (not corrected for):"<<endl;
2199 if(type ==
"RF" || type ==
"RF, rebinned in M")
2203 else if (type ==
"RP")
2207 else if (type ==
"POI")
2212 cout<<
"*************************************"<<endl;
2213 cout<<
"*************************************"<<endl;
2223 TFile *output =
new TFile(outputFileName.Data(),
"RECREATE");
2239 outputFileName->Write(outputFileName->GetName(), TObject::kSingleKey);
2252 TString commonHistsName =
"AliFlowCommonHistQC";
2260 TString commonHists2ndOrderName =
"AliFlowCommonHist2ndOrderQC";
2265 TString commonHists4thOrderName =
"AliFlowCommonHist4thOrderQC";
2270 TString commonHists6thOrderName =
"AliFlowCommonHist6thOrderQC";
2275 TString commonHists8thOrderName =
"AliFlowCommonHist8thOrderQC";
2283 TString commonHistResults2ndOrderName =
"AliFlowCommonHistResults2ndOrderQC";
2288 TString commonHistResults4thOrderName =
"AliFlowCommonHistResults4thOrderQC";
2293 TString commonHistResults6thOrderName =
"AliFlowCommonHistResults6thOrderQC";
2298 TString commonHistResults8thOrderName =
"AliFlowCommonHistResults8thOrderQC";
2313 printf(
"\n WARNING (QC): fWeightsList is NULL in AFAWQC::BAFWH() !!!! \n\n");
2317 TString fUseParticleWeightsName =
"fUseParticleWeightsQC";
2319 fUseParticleWeights =
new TProfile(fUseParticleWeightsName.Data(),
"0 = particle weight not used, 1 = particle weight used ",8,0,8);
2513 TF1 *CenFit =
new TF1(
"CenFit",
"pol0", 0., 100.);
2516 Double_t CenAv = CenFit->GetParameter(0);
2528 Double_t CenAv = CenFit->GetParameter(0);
2530 Double_t SemiCenAv = CenFit->GetParameter(0);
2556 TString sinCosFlag[2] = {
"sin",
"cos"};
2557 TString powerFlag[2] = {
"linear",
"quadratic"};
2560 TString intFlowFlagsName =
"fIntFlowFlags";
2562 fIntFlowFlags =
new TProfile(intFlowFlagsName.Data(),
"Flags for Integrated Flow",20,0.,20.);
2568 fIntFlowFlags->GetXaxis()->SetBinLabel(1,
"Particle Weights");
2570 fIntFlowFlags->GetXaxis()->SetBinLabel(3,
"Corrected for NUA?");
2571 fIntFlowFlags->GetXaxis()->SetBinLabel(4,
"Print RF results");
2572 fIntFlowFlags->GetXaxis()->SetBinLabel(5,
"Print RP results");
2573 fIntFlowFlags->GetXaxis()->SetBinLabel(6,
"Print POI results");
2574 fIntFlowFlags->GetXaxis()->SetBinLabel(7,
"Print RF (rebinned in M) results");
2575 fIntFlowFlags->GetXaxis()->SetBinLabel(8,
"Corrected for NUA vs M?");
2576 fIntFlowFlags->GetXaxis()->SetBinLabel(9,
"Propagate errors to v_{n} from correlations?");
2577 fIntFlowFlags->GetXaxis()->SetBinLabel(10,
"Calculate cumulants vs M");
2578 fIntFlowFlags->GetXaxis()->SetBinLabel(11,
"fMinimumBiasReferenceFlow");
2579 fIntFlowFlags->GetXaxis()->SetBinLabel(12,
"fForgetAboutCovariances");
2581 fIntFlowFlags->GetXaxis()->SetBinLabel(14,
"fFillMultipleControlHistograms");
2582 fIntFlowFlags->GetXaxis()->SetBinLabel(15,
"Calculate all correlations vs M");
2583 fIntFlowFlags->GetXaxis()->SetBinLabel(16,
"fMultiplicityIs");
2585 fIntFlowFlags->GetXaxis()->SetBinLabel(18,
"fUse2DHistograms");
2586 fIntFlowFlags->GetXaxis()->SetBinLabel(19,
"fFillProfilesVsMUsingWeights");
2587 fIntFlowFlags->GetXaxis()->SetBinLabel(20,
"fUseQvectorTerms");
2592 fReQ =
new TMatrixD(12,9);
2593 fImQ =
new TMatrixD(12,9);
2594 fSpk =
new TMatrixD(8,9);
2596 TString intFlowCorrelationsEBEName =
"fIntFlowCorrelationsEBE";
2600 TString intFlowEventWeightsForCorrelationsEBEName =
"fIntFlowEventWeightsForCorrelationsEBE";
2601 intFlowEventWeightsForCorrelationsEBEName +=
fAnalysisLabel->Data();
2604 TString intFlowCorrelationsAllEBEName =
"fIntFlowCorrelationsAllEBE";
2609 TString fIntFlowCorrectionTermsForNUAEBEName =
"fIntFlowCorrectionTermsForNUAEBE";
2611 for(
Int_t sc=0;sc<2;sc++)
2613 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);
2616 TString fIntFlowEventWeightForCorrectionTermsForNUAEBEName =
"fIntFlowEventWeightForCorrectionTermsForNUAEBE";
2617 fIntFlowEventWeightForCorrectionTermsForNUAEBEName +=
fAnalysisLabel->Data();
2618 for(
Int_t sc=0;sc<2;sc++)
2624 TString avMultiplicityName =
"fAvMultiplicity";
2626 fAvMultiplicity =
new TProfile(avMultiplicityName.Data(),
"Average multiplicities of reference particles (RPs)",9,0,9);
2643 TString correlationFlag[4] = {
"#LT#LT2#GT#GT",
"#LT#LT4#GT#GT",
"#LT#LT6#GT#GT",
"#LT#LT8#GT#GT"};
2644 TString intFlowCorrelationsProName =
"fIntFlowCorrelationsPro";
2646 fIntFlowCorrelationsPro =
new TProfile(intFlowCorrelationsProName.Data(),
"Average correlations for all events",4,0,4,
"s");
2652 for(
Int_t b=0;b<4;b++)
2658 TString squaredCorrelationFlag[4] = {
"#LT#LT2#GT^{2}#GT",
"#LT#LT4#GT^{2}#GT",
"#LT#LT6#GT^{2}#GT",
"#LT#LT8#GT^{2}#GT"};
2659 TString intFlowSquaredCorrelationsProName =
"fIntFlowSquaredCorrelationsPro";
2667 for(
Int_t b=0;b<4;b++)
2674 for(
Int_t ci=0;ci<4;ci++)
2677 TString intFlowCorrelationsVsMProName =
"fIntFlowCorrelationsVsMPro";
2679 fIntFlowCorrelationsVsMPro[ci] =
new TProfile(Form(
"%s, %s",intFlowCorrelationsVsMProName.Data(),correlationFlag[ci].Data()),
2680 Form(
"%s vs multiplicity",correlationFlag[ci].
Data()),
2696 TString intFlowSquaredCorrelationsVsMProName =
"fIntFlowSquaredCorrelationsVsMPro";
2699 Form(
"%s vs multiplicity",squaredCorrelationFlag[ci].
Data()),
2717 TString intFlowCorrelationsAllProName =
"fIntFlowCorrelationsAllPro";
2719 fIntFlowCorrelationsAllPro =
new TProfile(intFlowCorrelationsAllProName.Data(),
"Average all correlations for all events",64,0,64);
2825 fIntFlowCorrelationsAllVsMPro[30] =
new TProfile(
"eight1n1n1n1n1n1n1n1n",
"#LT#LT8#GT#GT_{n,n,n,n|n,n,n,n}",
fnBinsMult,
fMinMult,
fMaxMult);
2859 for(
Int_t n=0;n<63;n++)
2881 TString intFlowExtraCorrelationsProName =
"fIntFlowExtraCorrelationsPro";
2883 fIntFlowExtraCorrelationsPro =
new TProfile(intFlowExtraCorrelationsProName.Data(),
"Average extra correlations for all events",100,0,100,
"s");
2894 TString productFlag[6] = {
"#LT#LT2#GT#LT4#GT#GT",
"#LT#LT2#GT#LT6#GT#GT",
"#LT#LT2#GT#LT8#GT#GT",
2895 "#LT#LT4#GT#LT6#GT#GT",
"#LT#LT4#GT#LT8#GT#GT",
"#LT#LT6#GT#LT8#GT#GT"};
2896 TString intFlowProductOfCorrelationsProName =
"fIntFlowProductOfCorrelationsPro";
2903 for(
Int_t b=0;b<6;b++)
2912 TString intFlowProductOfCorrelationsVsMProName =
"fIntFlowProductOfCorrelationsVsMPro";
2913 intFlowProductOfCorrelationsVsMProName +=
fAnalysisLabel->Data();
2917 Form(
"%s versus multiplicity",productFlag[
pi].
Data()),
2933 TString intFlowProductOfCorrectionTermsForNUAProName =
"fIntFlowProductOfCorrectionTermsForNUAPro";
2934 intFlowProductOfCorrectionTermsForNUAProName +=
fAnalysisLabel->Data();
2969 for(
Int_t sc=0;sc<2;sc++)
2971 TString intFlowCorrectionTermsForNUAProName =
"fIntFlowCorrectionTermsForNUAPro";
2973 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");
2986 TString correctionTermFlag[4] = {
"(n(phi1))",
"(n(phi1+phi2))",
"(n(phi1-phi2-phi3))",
"(n(2phi1-phi2))"};
2987 for(
Int_t ci=0;ci<4;ci++)
2989 TString intFlowCorrectionTermsForNUAVsMProName =
"fIntFlowCorrectionTermsForNUAVsMPro";
2990 intFlowCorrectionTermsForNUAVsMProName +=
fAnalysisLabel->Data();
2991 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");
2999 TString intFlowCorrelationsHistName =
"fIntFlowCorrelationsHist";
3014 for(
Int_t ci=0;ci<4;ci++)
3016 TString intFlowCorrelationsVsMHistName =
"fIntFlowCorrelationsVsMHist";
3019 Form(
"%s vs multiplicity",correlationFlag[ci].
Data()),
3036 TString intFlowCorrelationsAllHistName =
"fIntFlowCorrelationsAllHist";
3077 for(
Int_t sc=0;sc<2;sc++)
3079 TString intFlowCorrectionTermsForNUAHistName =
"fIntFlowCorrectionTermsForNUAHist";
3081 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);
3093 TString intFlowCovariancesName =
"fIntFlowCovariances";
3095 fIntFlowCovariances =
new TH1D(intFlowCovariancesName.Data(),
"Covariances (multiplied with weight dependent prefactor)",6,0,6);
3106 TString intFlowSumOfEventWeightsName =
"fIntFlowSumOfEventWeights";
3108 for(
Int_t power=0;power<2;power++)
3110 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);
3119 }
else if (power == 1)
3129 TString intFlowSumOfProductOfEventWeightsName =
"fIntFlowSumOfProductOfEventWeights";
3145 TString intFlowCovariancesVsMName =
"fIntFlowCovariancesVsM";
3147 TString covarianceFlag[6] = {
"Cov(<2>,<4>)",
"Cov(<2>,<6>)",
"Cov(<2>,<8>)",
"Cov(<4>,<6>)",
"Cov(<4>,<8>)",
"Cov(<6>,<8>)"};
3148 for(
Int_t ci=0;ci<6;ci++)
3151 Form(
"%s vs multiplicity",covarianceFlag[ci].
Data()),
3171 TString intFlowSumOfEventWeightsVsMName =
"fIntFlowSumOfEventWeightsVsM";
3173 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>}"},
3174 {
"#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}"}};
3175 for(
Int_t si=0;si<4;si++)
3177 for(
Int_t power=0;power<2;power++)
3180 Form(
"%s vs multiplicity",sumFlag[power][si].
Data()),
3202 TString intFlowSumOfProductOfEventWeightsVsMName =
"fIntFlowSumOfProductOfEventWeightsVsM";
3203 intFlowSumOfProductOfEventWeightsVsMName +=
fAnalysisLabel->Data();
3204 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>}",
3205 "#sum_{i=1}^{N} w_{<4>} w_{<6>}",
"#sum_{i=1}^{N} w_{<4>} w_{<8>}",
"#sum_{i=1}^{N} w_{<6>} w_{<8>}"};
3209 Form(
"%s versus multiplicity",sopowFlag[
pi].
Data()),
3226 TString intFlowCovariancesNUAName =
"fIntFlowCovariancesNUA";
3228 fIntFlowCovariancesNUA =
new TH1D(intFlowCovariancesNUAName.Data(),
"Covariances for NUA (multiplied with weight dependent prefactor)",27,0,27);
3247 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(16,
"Cov(<cos(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3248 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(17,
"Cov(<cos(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3251 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(20,
"Cov(<sin(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3252 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(21,
"Cov(<sin(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3253 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(22,
"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}+#phi_{2})>)");
3254 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(23,
"Cov(<cos(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3255 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(24,
"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3256 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(25,
"Cov(<sin(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3257 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(26,
"Cov(<sin(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3258 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(27,
"Cov(<cos(#phi_{1}-#phi_{2}-#phi_{3}>,<sin(#phi_{1}-#phi_{2}-#phi_{3}>)");
3261 TString intFlowSumOfEventWeightsNUAName =
"fIntFlowSumOfEventWeightsNUA";
3263 for(
Int_t sc=0;sc<2;sc++)
3265 for(
Int_t power=0;power<2;power++)
3267 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);
3276 }
else if(power == 1)
3280 (
fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(3,Form(
"#sum_{i=1}^{N} w_{<%s(#phi_{1}-#phi_{2}-#phi_{3})>}^{2}",sinCosFlag[sc].
Data()));
3287 TString intFlowSumOfProductOfEventWeightsNUAName =
"fIntFlowSumOfProductOfEventWeightsNUA";
3288 intFlowSumOfProductOfEventWeightsNUAName +=
fAnalysisLabel->Data();
3321 TString cumulantFlag[4] = {
"QC{2}",
"QC{4}",
"QC{6}",
"QC{8}"};
3322 TString intFlowQcumulantsName =
"fIntFlowQcumulants";
3327 fIntFlowQcumulants->SetTitle(
"Reference Q-cumulants (error from non-isotropic terms also propagated)");
3331 for(
Int_t b=0;b<4;b++)
3339 TString intFlowQcumulantsRebinnedInMName =
"fIntFlowQcumulantsRebinnedInM";
3344 for(
Int_t b=0;b<4;b++)
3351 TString intFlowQcumulantsErrorSquaredRatioName =
"fIntFlowQcumulantsErrorSquaredRatio";
3352 intFlowQcumulantsErrorSquaredRatioName +=
fAnalysisLabel->Data();
3356 for(
Int_t b=0;b<4;b++)
3364 TString intFlowQcumulantsVsMName =
"fIntFlowQcumulantsVsM";
3366 for(
Int_t co=0;co<4;co++)
3369 Form(
"%s vs multiplicity",cumulantFlag[co].
Data()),
3386 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)};
3387 TString intFlowName =
"fIntFlow";
3390 fIntFlow =
new TH1D(intFlowName.Data(),
"Reference flow estimates from Q-cumulants",4,0,4);
3393 for(
Int_t b=0;b<4;b++)
3395 (
fIntFlow->GetXaxis())->SetBinLabel(b+1,flowFlag[b].
Data());
3401 TString intFlowRebinnedInMName =
"fIntFlowRebinnedInM";
3403 fIntFlowRebinnedInM =
new TH1D(intFlowRebinnedInMName.Data(),
"Reference flow estimates from Q-cumulants (rebinned in M)",4,0,4);
3406 for(
Int_t b=0;b<4;b++)
3415 TString intFlowVsMName =
"fIntFlowVsM";
3417 for(
Int_t co=0;co<4;co++)
3419 fIntFlowVsM[co] =
new TH1D(Form(
"%s, %s",intFlowVsMName.Data(),flowFlag[co].Data()),
3420 Form(
"%s vs multiplicity",flowFlag[co].
Data()),
3427 fIntFlowVsM[co]->GetXaxis()->SetTitle(
"Reference multiplicity (from ESD)");
3437 TString intFlowDetectorBiasName =
"fIntFlowDetectorBias";
3442 for(
Int_t ci=0;ci<4;ci++)
3444 (
fIntFlowDetectorBias->GetXaxis())->SetBinLabel(ci+1,Form(
"#frac{corrected}{measured} %s",cumulantFlag[ci].
Data()));
3450 TString intFlowDetectorBiasVsMName =
"fIntFlowDetectorBiasVsM";
3452 for(
Int_t ci=0;ci<4;ci++)
3455 Form(
"Quantifying detector bias for %s vs multiplicity",cumulantFlag[ci].
Data()),
3484 TString controlHistogramsFlagsName =
"fControlHistogramsFlags";
3486 fControlHistogramsFlags =
new TProfile(controlHistogramsFlagsName.Data(),
"Flags for Control Histograms",2,0,2);
3500 TString sCorrelationNoRPsVsRefMultName =
"fCorrelationNoRPsVsRefMult";
3511 TString sCorrelationNoPOIsVsRefMultName =
"fCorrelationNoPOIsVsRefMult";
3522 TString sCorrelationNoRPsVsNoPOIsName =
"fCorrelationNoRPsVsNoPOIs";
3533 TString sCorrelation[4] = {
"#LT2#GT",
"#LT4#GT",
"#LT6#GT",
"#LT8#GT"};
3537 sMultiplicity =
"# RPs";
3540 sMultiplicity =
"Reference multiplicity (from ESD)";
3543 sMultiplicity =
"# POIs";
3545 for(
Int_t ci=0;ci<4;ci++)
3557 TString sCorrelationProduct[1] = {
"#LT2#GT#LT4#GT"};
3558 for(
Int_t cpi=0;cpi<1;cpi++)
3572 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}}"};
3573 for(
Int_t qvti=0;qvti<4;qvti++)
3600 TString bootstrapFlagsName =
"fBootstrapFlags";
3602 fBootstrapFlags =
new TProfile(bootstrapFlagsName.Data(),
"Flags for bootstrap",3,0,3);
3614 TString correlationFlag[4] = {
"#LT#LT2#GT#GT",
"#LT#LT4#GT#GT",
"#LT#LT6#GT#GT",
"#LT#LT8#GT#GT"};
3615 TString cumulantFlag[4] = {
"QC{2}",
"QC{4}",
"QC{6}",
"QC{8}"};
3619 TString bootstrapCorrelationsName =
"fBootstrapCorrelations";
3623 for(
Int_t ci=0;ci<4;ci++)
3633 TString bootstrapCumulantsName =
"fBootstrapCumulants";
3637 for(
Int_t co=0;co<4;co++)
3652 sMultiplicity =
"# RPs";
3655 sMultiplicity =
"Reference multiplicity (from ESD)";
3658 sMultiplicity =
"# POIs";
3663 TString bootstrapCorrelationsVsMName =
"fBootstrapCorrelationsVsM";
3665 for(
Int_t ci=0;ci<4;ci++)
3667 fBootstrapCorrelationsVsM[ci] =
new TProfile2D(Form(
"%s, %s",bootstrapCorrelationsVsMName.Data(),correlationFlag[ci].Data()),
3668 Form(
"Bootstrap Correlations Vs. M, %s",correlationFlag[ci].
Data()),
3679 TString bootstrapCumulantsVsMName =
"fBootstrapCumulantsVsM";
3681 for(
Int_t co=0;co<4;co++)
3684 Form(
"Bootstrap Cumulants Vs. M, %s",cumulantFlag[co].
Data()),
3710 TString mixedHarmonicsFlagsName =
"fMixedHarmonicsFlags";
3712 fMixedHarmonicsFlags =
new TProfile(mixedHarmonicsFlagsName.Data(),
"Flags for Mixed Harmonics",4,0,4);
3728 TString s2pCorrelationsName =
"f2pCorrelations";
3730 f2pCorrelations =
new TProfile(s2pCorrelationsName.Data(),Form(
"2-particle correlations (n = %d)",
fHarmonic),6,0,6,
"s");
3745 TString s3pCorrelationsName =
"f3pCorrelations";
3747 f3pCorrelations =
new TProfile(s3pCorrelationsName.Data(),Form(
"3-particle correlations (n = %d)",
fHarmonic),10,0,10,
"s");
3768 TString s4pCorrelationsName =
"f4pCorrelations";
3770 f4pCorrelations =
new TProfile(s4pCorrelationsName.Data(),Form(
"4-particle correlations (n = %d)",
fHarmonic),45,0,45,
"s");
3829 TString s5pCorrelationsName =
"f5pCorrelations";
3831 f5pCorrelations =
new TProfile(s5pCorrelationsName.Data(),Form(
"5-particle correlations (n = %d)",
fHarmonic),87,0,87,
"s");
3932 TString s6pCorrelationsName =
"f6pCorrelations";
3934 f6pCorrelations =
new TProfile(s6pCorrelationsName.Data(),Form(
"6-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3943 TString s7pCorrelationsName =
"f7pCorrelations";
3945 f7pCorrelations =
new TProfile(s7pCorrelationsName.Data(),Form(
"7-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3954 TString s8pCorrelationsName =
"f8pCorrelations";
3956 f8pCorrelations =
new TProfile(s8pCorrelationsName.Data(),Form(
"8-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
4001 TString mixedHarmonicEventWeightsName =
"fMixedHarmonicEventWeights";
4003 TString powerFlag[2] = {
"linear",
"quadratic"};
4004 for(
Int_t power=0;power<2;power++)
4006 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.);
4020 }
else if (power == 1)
4035 TString mixedHarmonicProductOfEventWeightsName =
"fMixedHarmonicProductOfEventWeights";
4036 mixedHarmonicProductOfEventWeightsName +=
fAnalysisLabel->Data();
4041 for(
Int_t b=1;b<=8;b++)
4049 TString mixedHarmonicProductOfCorrelationsName =
"fMixedHarmonicProductOfCorrelations";
4050 mixedHarmonicProductOfCorrelationsName +=
fAnalysisLabel->Data();