23 #define AliFlowAnalysisCRC_cxx
25 #include "Riostream.h"
34 #include "TParticle.h"
38 #include "TProfile2D.h"
39 #include "TProfile3D.h"
42 #include "TPaveLabel.h"
52 #include "THnSparse.h"
84 fBookOnlyBasicCCH(kTRUE),
86 fCommonHists2nd(NULL),
87 fCommonHists4th(NULL),
88 fCommonHists6th(NULL),
89 fCommonHists8th(NULL),
90 fCommonHistsResults2nd(NULL),
91 fCommonHistsResults4th(NULL),
92 fCommonHistsResults6th(NULL),
93 fCommonHistsResults8th(NULL),
106 fCommonConstants(NULL),
107 fFillMultipleControlHistograms(kFALSE),
109 fAnalysisLabel(NULL),
111 fUsePhiWeights(kFALSE),
112 fUsePtWeights(kFALSE),
113 fUseEtaWeights(kFALSE),
114 fUseTrackWeights(kFALSE),
115 fUsePhiEtaWeights(kFALSE),
116 fUsePhiEtaWeightsChDep(kFALSE),
117 fUsePhiEtaWeightsVtxDep(kFALSE),
118 fUsePhiEtaWeightsChPtDep(kFALSE),
119 fUseZDCESEMulWeights(kFALSE),
120 fUseZDCESESpecWeights(kFALSE),
121 fUseParticleWeights(NULL),
123 fMultiplicityWeight(NULL),
127 fIntFlowProfiles(NULL),
128 fIntFlowResults(NULL),
129 fIntFlowAllCorrelationsVsM(NULL),
131 fApplyCorrectionForNUA(kFALSE),
132 fApplyCorrectionForNUAVsM(kFALSE),
136 fPropagateErrorAlsoFromNIT(kFALSE),
137 fCalculateCumulantsVsM(kFALSE),
138 fCalculateAllCorrelationsVsM(kFALSE),
139 fMinimumBiasReferenceFlow(kTRUE),
140 fForgetAboutCovariances(kFALSE),
141 fStoreVarious(kFALSE),
143 fUse2DHistograms(kFALSE),
144 fFillProfilesVsMUsingWeights(kTRUE),
145 fUseQvectorTerms(kFALSE),
149 fIntFlowCorrelationsEBE(NULL),
150 fIntFlowEventWeightsForCorrelationsEBE(NULL),
151 fIntFlowCorrelationsAllEBE(NULL),
153 fNumberOfPOIsEBE(0.),
154 fReferenceMultiplicityEBE(0.),
156 fNewCentralityEBE(0.),
162 fCentralityCL1EBE(0.),
164 fCentralityTRKEBE(0.),
168 fAvMultiplicity(NULL),
169 fIntFlowCorrelationsPro(NULL),
170 fIntFlowSquaredCorrelationsPro(NULL),
171 fIntFlowCorrelationsAllPro(NULL),
172 fIntFlowExtraCorrelationsPro(NULL),
173 fIntFlowProductOfCorrelationsPro(NULL),
174 fIntFlowProductOfCorrectionTermsForNUAPro(NULL),
175 fIntFlowCorrelationsHist(NULL),
176 fIntFlowCorrelationsAllHist(NULL),
177 fIntFlowCovariances(NULL),
178 fIntFlowSumOfProductOfEventWeights(NULL),
179 fIntFlowCovariancesNUA(NULL),
180 fIntFlowSumOfProductOfEventWeightsNUA(NULL),
181 fIntFlowQcumulants(NULL),
182 fIntFlowQcumulantsRebinnedInM(NULL),
183 fIntFlowQcumulantsErrorSquaredRatio(NULL),
185 fIntFlowRebinnedInM(NULL),
186 fIntFlowDetectorBias(NULL),
189 fDiffFlowProfiles(NULL),
190 fDiffFlowResults(NULL),
192 fDiffFlowFlags(NULL),
193 fCalculateDiffFlow(kTRUE),
194 fCalculate2DDiffFlow(kFALSE),
195 fCalculateDiffFlowVsEta(kTRUE),
197 fOtherDiffCorrelatorsList(NULL),
199 fDistributionsList(NULL),
200 fDistributionsFlags(NULL),
201 fStoreDistributions(kFALSE),
202 fnBinsForCorrelations(10000),
204 fNestedLoopsList(NULL),
205 fEvaluateIntFlowNestedLoops(kFALSE),
206 fEvaluateDiffFlowNestedLoops(kFALSE),
207 fMaxAllowedMultiplicity(10),
208 fEvaluateNestedLoops(NULL),
209 fIntFlowDirectCorrelations(NULL),
210 fIntFlowExtraDirectCorrelations(NULL),
211 fCrossCheckInPtBinNo(10),
212 fCrossCheckInEtaBinNo(20),
213 fNoOfParticlesInBin(NULL),
214 fMixedHarmonicsNestedLoops(NULL),
216 fMixedHarmonicsList(NULL),
217 fMixedHarmonicsProfiles(NULL),
218 fMixedHarmonicsResults(NULL),
219 fMixedHarmonicsErrorPropagation(NULL),
220 fMixedHarmonicsFlags(NULL),
221 fCalculateMixedHarmonics(kFALSE),
222 fCalculateMixedHarmonicsVsM(kFALSE),
223 f2pCorrelations(NULL),
224 f3pCorrelations(NULL),
225 f4pCorrelations(NULL),
226 f5pCorrelations(NULL),
227 f6pCorrelations(NULL),
228 f7pCorrelations(NULL),
229 f8pCorrelations(NULL),
237 fMixedHarmonicProductOfEventWeights(NULL),
238 fMixedHarmonicProductOfCorrelations(NULL),
240 fControlHistogramsList(NULL),
241 fControlHistogramsFlags(NULL),
242 fStoreControlHistograms(kFALSE),
243 fCorrelationNoRPsVsRefMult(NULL),
244 fCorrelationNoPOIsVsRefMult(NULL),
245 fCorrelationNoRPsVsNoPOIs(NULL),
247 fBootstrapList(NULL),
248 fBootstrapProfilesList(NULL),
249 fBootstrapResultsList(NULL),
250 fBootstrapFlags(NULL),
251 fUseBootstrap(kFALSE),
252 fUseBootstrapVsM(kFALSE),
255 fBootstrapCorrelations(NULL),
256 fBootstrapCumulants(NULL),
261 fCalculateCRC(kTRUE),
262 fCalculateCRCPt(kFALSE),
263 fCalculateCME(kFALSE),
264 fCalculateCRCInt(kFALSE),
265 fCalculateCRC2(kFALSE),
266 fCalculateCRCVZ(kFALSE),
267 fCalculateCRCZDC(kFALSE),
268 fCalculateFlowQC(kFALSE),
269 fCalculateFlowZDC(kFALSE),
270 fCalculateFlowVZ(kFALSE),
271 fCalculateEbEFlow(kFALSE),
272 fStoreZDCQVecVtxPos(kFALSE),
273 fUsePhiEtaCuts(kFALSE),
276 fRecenterZDC(kFALSE),
278 fUseCRCRecenter(kFALSE),
288 fCorrWeightTPC(kUnit),
289 fCorrWeightVZ(kUnit),
290 fCorrWeightZDC(kUnit),
293 fCRCCenBinWidth(CenWidth),
294 fCRCIntRbRList(NULL),
297 fInteractionRate(kAll),
298 fSelectCharge(kAllCh),
299 fPOIExtraWeights(kNone),
301 fCRCQVecListTPC(NULL),
302 fCRCQVecWeightsList(NULL),
303 fCRCZDCCalibList(NULL),
304 fCRCVZEROCalibList(NULL),
305 fCRCZDCResList(NULL),
309 fCRCZDCRbRList(NULL),
316 fFlowSPZDCList(NULL),
321 fFlowQCDeltaEta(0.4),
327 fQAZDCCutsFlag(kTRUE),
335 fHistList =
new TList();
336 fHistList->SetName(
"cobjQC");
337 fHistList->SetOwner(kTRUE);
340 fTempList =
new TList();
341 fTempList->SetName(
"temp");
342 fTempList->SetOwner(kTRUE);
345 fMultiplicityWeight =
new TString(
"combinations");
348 fAnalysisLabel =
new TString();
351 this->InitializeArraysForIntFlow();
352 this->InitializeArraysForDiffFlow();
353 this->InitializeArraysForDistributions();
354 this->InitializeArraysForVarious();
355 this->InitializeArraysForNestedLoops();
356 this->InitializeArraysForMixedHarmonics();
357 this->InitializeArraysForControlHistograms();
358 this->InitializeArraysForBootstrap();
366 this->InitializeCostantsForCRC();
367 this->InitializeArraysForParticleWeights();
368 this->InitializeArraysForCRC();
369 this->InitializeArraysForCRCVZ();
370 this->InitializeArraysForCRCZDC();
371 this->InitializeArraysForCRC2();
372 this->InitializeArraysForQVec();
373 this->InitializeArraysForCRCPt();
374 this->InitializeArraysForCME();
375 this->InitializeArraysForFlowEbE();
376 this->InitializeArraysForFlowQC();
377 this->InitializeArraysForFlowQCHighOrders();
378 this->InitializeArraysForFlowSPZDC();
379 this->InitializeArraysForFlowSPVZ();
380 this->InitializeArraysForEbEFlow();
423 Bool_t oldHistAddStatus = TH1::AddDirectoryStatus();
424 TH1::AddDirectory(kFALSE);
477 TH1::AddDirectory(oldHistAddStatus);
518 Int_t nCounterNoRPs = 0;
555 if(fRunBin<0 || fRunBin>=
fCRCnRun) {
return;}
557 if(fCenBin<0 || fCenBin>=
fCRCnCen) {
return;}
629 if(QMC>0. && sqrt(QCRe*QCRe+QCIm*QCIm)>1.E-6) {
633 if(QMA>0. && sqrt(QARe*QARe+QAIm*QAIm)>1.E-6) {
661 if(QMC>0. && QMA>0. && sqrt(QCRe*QCRe+QCIm*QCIm)>1.E-6 && sqrt(QARe*QARe+QAIm*QAIm)>1.E-6) {
703 for(
Int_t i=0;i<nPrim;i++) {
713 dPhi = aftsTrack->
Phi();
714 dPt = aftsTrack->
Pt();
715 dEta = aftsTrack->
Eta();
716 dCharge = aftsTrack->
Charge();
721 cw = (dCharge > 0. ? 0 : 1);
734 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
741 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
746 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
752 Int_t ptbebe = (dPt>1.? 2 : (dPt>0.5 ? 1 : 0));
756 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
760 for(
Int_t m=0;m<12;m++)
762 for(
Int_t k=0;k<9;k++)
764 (*fReQ)(m,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1)*n*dPhi);
765 (*fImQ)(m,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1)*n*dPhi);
769 for(
Int_t p=0;p<8;p++)
771 for(
Int_t k=0;k<9;k++)
773 (*fSpk)(p,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k);
782 for(
Int_t k=0;k<9;k++)
784 for(
Int_t m=0;m<4;m++)
790 fReRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
791 fImRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
794 fs1dEBE[0][pe][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
800 fReRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
801 fImRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
804 fs2dEBE[0][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
813 for(
Int_t k=0;k<9;k++)
815 for(
Int_t m=0;m<4;m++)
821 fReRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
822 fImRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
825 fs1dEBE[2][pe][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
831 fReRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
832 fImRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
835 fs2dEBE[2][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
848 dPhi = aftsTrack->
Phi();
849 dPt = aftsTrack->
Pt();
850 dEta = aftsTrack->
Eta();
851 dCharge = aftsTrack->
Charge();
856 cw = (dCharge > 0. ? 0 : 1);
869 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
876 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
881 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
887 Int_t ptbebe = (dPt>1.? 2 : (dPt>0.5 ? 1 : 0));
891 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
897 if(dPhi>2.136283 && dPhi<2.324779)
continue;
903 for(
Int_t k=0;k<9;k++)
905 for(
Int_t m=0;m<4;m++)
911 fReRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
912 fImRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
917 fReRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
918 fImRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
926 fCRCQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
927 fCRCQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
928 fCRCMult[cw][h]->Fill(dEta,wPhiEta);
930 fCRC2QRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
931 fCRC2QIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
932 fCRC2Mul[cw][h]->Fill(dEta,pow(wPhiEta,h));
934 fCRCZDCQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
935 fCRCZDCQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
939 fCRC2QRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
940 fCRC2QIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
941 fCRC2Mul[2][h]->Fill(dEta,pow(wPhiEta,h));
945 fCRCZDCQRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
946 fCRCZDCQIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
949 fCRCZDCQRe[3][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
950 fCRCZDCQIm[3][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
958 if(weraw > 0.) SpecWeig = 1./weraw;
960 fCMEQRe[cw][h]->Fill(dEta,SpecWeig*wPhiEta*TMath::Cos((h+1.)*dPhi));
961 fCMEQIm[cw][h]->Fill(dEta,SpecWeig*wPhiEta*TMath::Sin((h+1.)*dPhi));
962 fCMEMult[cw][h]->Fill(dEta,SpecWeig*wPhiEta);
963 fCMEQRe[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.)*TMath::Cos((h+1.)*dPhi));
964 fCMEQIm[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.)*TMath::Sin((h+1.)*dPhi));
965 fCMEMult[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.));
981 fPOIPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
982 fPOIPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
985 fPOIPtDiffQReCh[cw][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
986 fPOIPtDiffQImCh[cw][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
989 fPOIPhiDiffQRe[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
990 fPOIPhiDiffQIm[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
994 Int_t keta = (dEta<0.?0:1);
995 fPOIPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
996 fPOIPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
998 fPOIPhiDiffQReEG[keta][k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
999 fPOIPhiDiffQImEG[keta][k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1003 }
else if(fFlowQCDeltaEta<0. && fFlowQCDeltaEta>-1.) {
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 fPOIPhiDiffQRe[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1011 fPOIPhiDiffQIm[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1016 if((dEta>0. && dEta<0.4-boundetagap/2.) || (dEta>0.4+boundetagap/2. && dEta<0.8)) {
1018 if(dEta>0. && dEta<0.4-boundetagap/2.) keta = 0;
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));
1029 }
else if(fFlowQCDeltaEta<-1. && fFlowQCDeltaEta>-2.) {
1032 fPOIPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1033 fPOIPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1036 fPOIPhiDiffQRe[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1037 fPOIPhiDiffQIm[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1042 if((dEta<0. && dEta>-0.4+boundetagap/2.) || (dEta<-0.4-boundetagap/2. && dEta>-0.8)) {
1044 if(dEta<0. && dEta>-0.4+boundetagap/2.) keta = 0;
1046 fPOIPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1047 fPOIPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1060 fEtaDiffQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
1061 fEtaDiffQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
1063 fPOIEtaPtQRe[cw][h]->Fill(dEta,dPt,wPhiEta*TMath::Cos((h+1.)*dPhi));
1064 fPOIEtaPtQIm[cw][h]->Fill(dEta,dPt,wPhiEta*TMath::Sin((h+1.)*dPhi));
1074 Int_t ptbebe = (dPt>1.? 2 : (dPt>0.5 ? 1 : 0));
1076 for (
Int_t h=0;h<6;h++) {
1088 printf(
"\n WARNING (QC): No particle (i.e. aftsTrack is a NULL pointer in AFAWQC::Make())!!!!\n\n");
1095 for(
Int_t p=0;p<8;p++)
1097 for(
Int_t k=0;k<9;k++)
1099 (*fSpk)(p,k)=pow((*
fSpk)(p,k),p+1);
1528 cout<<
"Skipping the event because multiplicity is "<<nPrim<<
". Too high to evaluate nested loops!"<<endl;
1532 cout<<
"Skipping the event because multiplicity is "<<nPrim<<
"."<<endl;
1668 cosP1n = dReQ1n/dMult;
1686 cosP1nP1n = (pow(dReQ1n,2)-pow(dImQ1n,2)-dReQ2n)/(dMult*(dMult-1));
1687 cosP2nM1n = (dReQ2n*dReQ1n+dImQ2n*dImQ1n-dReQ1n)/(dMult*(dMult-1));
1711 cosP1nM1nM1n = (dReQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2))-dReQ1n*dReQ2n-dImQ1n*dImQ2n-2.*(dMult-1)*dReQ1n)
1712 / (dMult*(dMult-1)*(dMult-2));
1777 sinP1n = dImQ1n/dMult;
1794 sinP1nP1n = (2.*dReQ1n*dImQ1n-dImQ2n)/(dMult*(dMult-1));
1795 sinP2nM1n = (dImQ2n*dReQ1n-dReQ2n*dImQ1n-dImQ1n)/(dMult*(dMult-1));
1819 sinP1nM1nM1n = (-dImQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2))+dReQ1n*dImQ2n-dImQ1n*dReQ2n+2.*(dMult-1)*dImQ1n)
1820 / (dMult*(dMult-1)*(dMult-2));
1850 if(outputListHistos)
1855 printf(
"\n WARNING (QC): fHistList is NULL in AFAWQC::GOH() !!!!\n\n");
1883 printf(
"\n WARNING (QC): outputListHistos is NULL in AFAWQC::GOH() !!!!\n\n");
1895 Int_t nBinsPt = profilePtEta->GetNbinsX();
1896 Double_t dPtMin = (profilePtEta->GetXaxis())->GetXmin();
1897 Double_t dPtMax = (profilePtEta->GetXaxis())->GetXmax();
1899 Int_t nBinsEta = profilePtEta->GetNbinsY();
1901 TProfile *profilePt =
new TProfile(
"",
"",nBinsPt,dPtMin,dPtMax);
1903 for(
Int_t p=1;p<=nBinsPt;p++)
1911 for(
Int_t e=1;e<=nBinsEta;e++)
1913 contentPt += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
1914 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1915 entryPt += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1917 sum1 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
1918 * (pow(profilePtEta->GetBinError(profilePtEta->GetBin(p,e)),2.)
1919 + pow(profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)),2.));
1920 sum2 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1921 sum3 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
1922 * (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)));
1924 if(sum2>0. && sum1/sum2-pow(sum3/sum2,2.) > 0.)
1926 spreadPt = pow(sum1/sum2-pow(sum3/sum2,2.),0.5);
1928 profilePt->SetBinContent(p,contentPt);
1929 profilePt->SetBinEntries(p,entryPt);
1931 profilePt->SetBinError(p,spreadPt);
1948 Int_t nBinsEta = profilePtEta->GetNbinsY();
1949 Double_t dEtaMin = (profilePtEta->GetYaxis())->GetXmin();
1950 Double_t dEtaMax = (profilePtEta->GetYaxis())->GetXmax();
1952 Int_t nBinsPt = profilePtEta->GetNbinsX();
1954 TProfile *profileEta =
new TProfile(
"",
"",nBinsEta,dEtaMin,dEtaMax);
1956 for(
Int_t e=1;e<=nBinsEta;e++)
1960 for(
Int_t p=1;p<=nBinsPt;p++)
1962 contentEta += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
1963 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1964 entryEta += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1966 profileEta->SetBinContent(e,contentEta);
1967 profileEta->SetBinEntries(e,entryEta);
1987 for(
Int_t b=0;b<4;b++)
1998 }
else if(type ==
"RP")
2008 }
else if(type ==
"POI")
2020 for(
Int_t b=0;b<4;b++)
2029 TString subtitle2 =
" (rebinned in M)";
2031 if(type !=
"RF, rebinned in M")
2035 subtitle.Append(type);
2036 subtitle.Append(
", without weights)");
2039 subtitle.Append(type);
2040 subtitle.Append(
", with weights)");
2046 subtitle.Append(
"RF");
2047 subtitle.Append(
", without weights)");
2050 subtitle.Append(
"RF");
2051 subtitle.Append(
", with weights)");
2056 cout<<
"*************************************"<<endl;
2057 cout<<
"*************************************"<<endl;
2058 cout<<title.Data()<<endl;
2059 cout<<subtitle.Data()<<endl;
2060 if(type ==
"RF, rebinned in M"){cout<<subtitle2.Data()<<endl;}
2063 for(
Int_t i=0;i<4;i++)
2065 cout<<
" v_"<<n<<
"{"<<2*(i+1)<<
"} = "<<dVn[i]<<
" +/- "<<dVnErr[i]<<endl;
2073 cout<<
" detector bias (corrected for): "<<endl;
2076 cout<<
" detector bias (not corrected for):"<<endl;
2082 if(type ==
"RF" || type ==
"RF, rebinned in M")
2086 else if (type ==
"RP")
2090 else if (type ==
"POI")
2095 cout<<
"*************************************"<<endl;
2096 cout<<
"*************************************"<<endl;
2106 TFile *output =
new TFile(outputFileName.Data(),
"RECREATE");
2122 outputFileName->Write(outputFileName->GetName(), TObject::kSingleKey);
2135 TString commonHistsName =
"AliFlowCommonHistQC";
2143 TString commonHists2ndOrderName =
"AliFlowCommonHist2ndOrderQC";
2148 TString commonHists4thOrderName =
"AliFlowCommonHist4thOrderQC";
2153 TString commonHists6thOrderName =
"AliFlowCommonHist6thOrderQC";
2158 TString commonHists8thOrderName =
"AliFlowCommonHist8thOrderQC";
2166 TString commonHistResults2ndOrderName =
"AliFlowCommonHistResults2ndOrderQC";
2171 TString commonHistResults4thOrderName =
"AliFlowCommonHistResults4thOrderQC";
2176 TString commonHistResults6thOrderName =
"AliFlowCommonHistResults6thOrderQC";
2181 TString commonHistResults8thOrderName =
"AliFlowCommonHistResults8thOrderQC";
2196 printf(
"\n WARNING (QC): fWeightsList is NULL in AFAWQC::BAFWH() !!!! \n\n");
2200 TString fUseParticleWeightsName =
"fUseParticleWeightsQC";
2202 fUseParticleWeights =
new TProfile(fUseParticleWeightsName.Data(),
"0 = particle weight not used, 1 = particle weight used ",8,0,8);
2396 TF1 *CenFit =
new TF1(
"CenFit",
"pol0", 0., 100.);
2399 Double_t CenAv = CenFit->GetParameter(0);
2411 Double_t CenAv = CenFit->GetParameter(0);
2413 Double_t SemiCenAv = CenFit->GetParameter(0);
2439 TString sinCosFlag[2] = {
"sin",
"cos"};
2440 TString powerFlag[2] = {
"linear",
"quadratic"};
2443 TString intFlowFlagsName =
"fIntFlowFlags";
2445 fIntFlowFlags =
new TProfile(intFlowFlagsName.Data(),
"Flags for Integrated Flow",20,0.,20.);
2451 fIntFlowFlags->GetXaxis()->SetBinLabel(1,
"Particle Weights");
2453 fIntFlowFlags->GetXaxis()->SetBinLabel(3,
"Corrected for NUA?");
2454 fIntFlowFlags->GetXaxis()->SetBinLabel(4,
"Print RF results");
2455 fIntFlowFlags->GetXaxis()->SetBinLabel(5,
"Print RP results");
2456 fIntFlowFlags->GetXaxis()->SetBinLabel(6,
"Print POI results");
2457 fIntFlowFlags->GetXaxis()->SetBinLabel(7,
"Print RF (rebinned in M) results");
2458 fIntFlowFlags->GetXaxis()->SetBinLabel(8,
"Corrected for NUA vs M?");
2459 fIntFlowFlags->GetXaxis()->SetBinLabel(9,
"Propagate errors to v_{n} from correlations?");
2460 fIntFlowFlags->GetXaxis()->SetBinLabel(10,
"Calculate cumulants vs M");
2461 fIntFlowFlags->GetXaxis()->SetBinLabel(11,
"fMinimumBiasReferenceFlow");
2462 fIntFlowFlags->GetXaxis()->SetBinLabel(12,
"fForgetAboutCovariances");
2464 fIntFlowFlags->GetXaxis()->SetBinLabel(14,
"fFillMultipleControlHistograms");
2465 fIntFlowFlags->GetXaxis()->SetBinLabel(15,
"Calculate all correlations vs M");
2466 fIntFlowFlags->GetXaxis()->SetBinLabel(16,
"fMultiplicityIs");
2468 fIntFlowFlags->GetXaxis()->SetBinLabel(18,
"fUse2DHistograms");
2469 fIntFlowFlags->GetXaxis()->SetBinLabel(19,
"fFillProfilesVsMUsingWeights");
2470 fIntFlowFlags->GetXaxis()->SetBinLabel(20,
"fUseQvectorTerms");
2475 fReQ =
new TMatrixD(12,9);
2476 fImQ =
new TMatrixD(12,9);
2477 fSpk =
new TMatrixD(8,9);
2479 TString intFlowCorrelationsEBEName =
"fIntFlowCorrelationsEBE";
2483 TString intFlowEventWeightsForCorrelationsEBEName =
"fIntFlowEventWeightsForCorrelationsEBE";
2484 intFlowEventWeightsForCorrelationsEBEName +=
fAnalysisLabel->Data();
2487 TString intFlowCorrelationsAllEBEName =
"fIntFlowCorrelationsAllEBE";
2492 TString fIntFlowCorrectionTermsForNUAEBEName =
"fIntFlowCorrectionTermsForNUAEBE";
2494 for(
Int_t sc=0;sc<2;sc++)
2496 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);
2499 TString fIntFlowEventWeightForCorrectionTermsForNUAEBEName =
"fIntFlowEventWeightForCorrectionTermsForNUAEBE";
2500 fIntFlowEventWeightForCorrectionTermsForNUAEBEName +=
fAnalysisLabel->Data();
2501 for(
Int_t sc=0;sc<2;sc++)
2507 TString avMultiplicityName =
"fAvMultiplicity";
2509 fAvMultiplicity =
new TProfile(avMultiplicityName.Data(),
"Average multiplicities of reference particles (RPs)",9,0,9);
2526 TString correlationFlag[4] = {
"#LT#LT2#GT#GT",
"#LT#LT4#GT#GT",
"#LT#LT6#GT#GT",
"#LT#LT8#GT#GT"};
2527 TString intFlowCorrelationsProName =
"fIntFlowCorrelationsPro";
2529 fIntFlowCorrelationsPro =
new TProfile(intFlowCorrelationsProName.Data(),
"Average correlations for all events",4,0,4,
"s");
2535 for(
Int_t b=0;b<4;b++)
2541 TString squaredCorrelationFlag[4] = {
"#LT#LT2#GT^{2}#GT",
"#LT#LT4#GT^{2}#GT",
"#LT#LT6#GT^{2}#GT",
"#LT#LT8#GT^{2}#GT"};
2542 TString intFlowSquaredCorrelationsProName =
"fIntFlowSquaredCorrelationsPro";
2550 for(
Int_t b=0;b<4;b++)
2557 for(
Int_t ci=0;ci<4;ci++)
2560 TString intFlowCorrelationsVsMProName =
"fIntFlowCorrelationsVsMPro";
2562 fIntFlowCorrelationsVsMPro[ci] =
new TProfile(Form(
"%s, %s",intFlowCorrelationsVsMProName.Data(),correlationFlag[ci].Data()),
2563 Form(
"%s vs multiplicity",correlationFlag[ci].
Data()),
2579 TString intFlowSquaredCorrelationsVsMProName =
"fIntFlowSquaredCorrelationsVsMPro";
2582 Form(
"%s vs multiplicity",squaredCorrelationFlag[ci].
Data()),
2600 TString intFlowCorrelationsAllProName =
"fIntFlowCorrelationsAllPro";
2602 fIntFlowCorrelationsAllPro =
new TProfile(intFlowCorrelationsAllProName.Data(),
"Average all correlations for all events",64,0,64);
2708 fIntFlowCorrelationsAllVsMPro[30] =
new TProfile(
"eight1n1n1n1n1n1n1n1n",
"#LT#LT8#GT#GT_{n,n,n,n|n,n,n,n}",
fnBinsMult,
fMinMult,
fMaxMult);
2742 for(
Int_t n=0;n<63;n++)
2764 TString intFlowExtraCorrelationsProName =
"fIntFlowExtraCorrelationsPro";
2766 fIntFlowExtraCorrelationsPro =
new TProfile(intFlowExtraCorrelationsProName.Data(),
"Average extra correlations for all events",100,0,100,
"s");
2777 TString productFlag[6] = {
"#LT#LT2#GT#LT4#GT#GT",
"#LT#LT2#GT#LT6#GT#GT",
"#LT#LT2#GT#LT8#GT#GT",
2778 "#LT#LT4#GT#LT6#GT#GT",
"#LT#LT4#GT#LT8#GT#GT",
"#LT#LT6#GT#LT8#GT#GT"};
2779 TString intFlowProductOfCorrelationsProName =
"fIntFlowProductOfCorrelationsPro";
2786 for(
Int_t b=0;b<6;b++)
2795 TString intFlowProductOfCorrelationsVsMProName =
"fIntFlowProductOfCorrelationsVsMPro";
2796 intFlowProductOfCorrelationsVsMProName +=
fAnalysisLabel->Data();
2800 Form(
"%s versus multiplicity",productFlag[
pi].
Data()),
2816 TString intFlowProductOfCorrectionTermsForNUAProName =
"fIntFlowProductOfCorrectionTermsForNUAPro";
2817 intFlowProductOfCorrectionTermsForNUAProName +=
fAnalysisLabel->Data();
2852 for(
Int_t sc=0;sc<2;sc++)
2854 TString intFlowCorrectionTermsForNUAProName =
"fIntFlowCorrectionTermsForNUAPro";
2856 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");
2869 TString correctionTermFlag[4] = {
"(n(phi1))",
"(n(phi1+phi2))",
"(n(phi1-phi2-phi3))",
"(n(2phi1-phi2))"};
2870 for(
Int_t ci=0;ci<4;ci++)
2872 TString intFlowCorrectionTermsForNUAVsMProName =
"fIntFlowCorrectionTermsForNUAVsMPro";
2873 intFlowCorrectionTermsForNUAVsMProName +=
fAnalysisLabel->Data();
2874 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");
2882 TString intFlowCorrelationsHistName =
"fIntFlowCorrelationsHist";
2897 for(
Int_t ci=0;ci<4;ci++)
2899 TString intFlowCorrelationsVsMHistName =
"fIntFlowCorrelationsVsMHist";
2902 Form(
"%s vs multiplicity",correlationFlag[ci].
Data()),
2919 TString intFlowCorrelationsAllHistName =
"fIntFlowCorrelationsAllHist";
2960 for(
Int_t sc=0;sc<2;sc++)
2962 TString intFlowCorrectionTermsForNUAHistName =
"fIntFlowCorrectionTermsForNUAHist";
2964 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);
2976 TString intFlowCovariancesName =
"fIntFlowCovariances";
2978 fIntFlowCovariances =
new TH1D(intFlowCovariancesName.Data(),
"Covariances (multiplied with weight dependent prefactor)",6,0,6);
2989 TString intFlowSumOfEventWeightsName =
"fIntFlowSumOfEventWeights";
2991 for(
Int_t power=0;power<2;power++)
2993 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);
3002 }
else if (power == 1)
3012 TString intFlowSumOfProductOfEventWeightsName =
"fIntFlowSumOfProductOfEventWeights";
3028 TString intFlowCovariancesVsMName =
"fIntFlowCovariancesVsM";
3030 TString covarianceFlag[6] = {
"Cov(<2>,<4>)",
"Cov(<2>,<6>)",
"Cov(<2>,<8>)",
"Cov(<4>,<6>)",
"Cov(<4>,<8>)",
"Cov(<6>,<8>)"};
3031 for(
Int_t ci=0;ci<6;ci++)
3034 Form(
"%s vs multiplicity",covarianceFlag[ci].
Data()),
3054 TString intFlowSumOfEventWeightsVsMName =
"fIntFlowSumOfEventWeightsVsM";
3056 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>}"},
3057 {
"#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}"}};
3058 for(
Int_t si=0;si<4;si++)
3060 for(
Int_t power=0;power<2;power++)
3063 Form(
"%s vs multiplicity",sumFlag[power][si].
Data()),
3085 TString intFlowSumOfProductOfEventWeightsVsMName =
"fIntFlowSumOfProductOfEventWeightsVsM";
3086 intFlowSumOfProductOfEventWeightsVsMName +=
fAnalysisLabel->Data();
3087 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>}",
3088 "#sum_{i=1}^{N} w_{<4>} w_{<6>}",
"#sum_{i=1}^{N} w_{<4>} w_{<8>}",
"#sum_{i=1}^{N} w_{<6>} w_{<8>}"};
3092 Form(
"%s versus multiplicity",sopowFlag[
pi].
Data()),
3109 TString intFlowCovariancesNUAName =
"fIntFlowCovariancesNUA";
3111 fIntFlowCovariancesNUA =
new TH1D(intFlowCovariancesNUAName.Data(),
"Covariances for NUA (multiplied with weight dependent prefactor)",27,0,27);
3130 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(16,
"Cov(<cos(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3131 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(17,
"Cov(<cos(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3134 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(20,
"Cov(<sin(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3135 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(21,
"Cov(<sin(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3136 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(22,
"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}+#phi_{2})>)");
3137 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(23,
"Cov(<cos(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3138 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(24,
"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3139 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(25,
"Cov(<sin(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3140 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(26,
"Cov(<sin(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3141 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(27,
"Cov(<cos(#phi_{1}-#phi_{2}-#phi_{3}>,<sin(#phi_{1}-#phi_{2}-#phi_{3}>)");
3144 TString intFlowSumOfEventWeightsNUAName =
"fIntFlowSumOfEventWeightsNUA";
3146 for(
Int_t sc=0;sc<2;sc++)
3148 for(
Int_t power=0;power<2;power++)
3150 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);
3159 }
else if(power == 1)
3163 (
fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(3,Form(
"#sum_{i=1}^{N} w_{<%s(#phi_{1}-#phi_{2}-#phi_{3})>}^{2}",sinCosFlag[sc].
Data()));
3170 TString intFlowSumOfProductOfEventWeightsNUAName =
"fIntFlowSumOfProductOfEventWeightsNUA";
3171 intFlowSumOfProductOfEventWeightsNUAName +=
fAnalysisLabel->Data();
3204 TString cumulantFlag[4] = {
"QC{2}",
"QC{4}",
"QC{6}",
"QC{8}"};
3205 TString intFlowQcumulantsName =
"fIntFlowQcumulants";
3210 fIntFlowQcumulants->SetTitle(
"Reference Q-cumulants (error from non-isotropic terms also propagated)");
3214 for(
Int_t b=0;b<4;b++)
3222 TString intFlowQcumulantsRebinnedInMName =
"fIntFlowQcumulantsRebinnedInM";
3227 for(
Int_t b=0;b<4;b++)
3234 TString intFlowQcumulantsErrorSquaredRatioName =
"fIntFlowQcumulantsErrorSquaredRatio";
3235 intFlowQcumulantsErrorSquaredRatioName +=
fAnalysisLabel->Data();
3239 for(
Int_t b=0;b<4;b++)
3247 TString intFlowQcumulantsVsMName =
"fIntFlowQcumulantsVsM";
3249 for(
Int_t co=0;co<4;co++)
3252 Form(
"%s vs multiplicity",cumulantFlag[co].
Data()),
3269 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)};
3270 TString intFlowName =
"fIntFlow";
3273 fIntFlow =
new TH1D(intFlowName.Data(),
"Reference flow estimates from Q-cumulants",4,0,4);
3276 for(
Int_t b=0;b<4;b++)
3278 (
fIntFlow->GetXaxis())->SetBinLabel(b+1,flowFlag[b].
Data());
3284 TString intFlowRebinnedInMName =
"fIntFlowRebinnedInM";
3286 fIntFlowRebinnedInM =
new TH1D(intFlowRebinnedInMName.Data(),
"Reference flow estimates from Q-cumulants (rebinned in M)",4,0,4);
3289 for(
Int_t b=0;b<4;b++)
3298 TString intFlowVsMName =
"fIntFlowVsM";
3300 for(
Int_t co=0;co<4;co++)
3302 fIntFlowVsM[co] =
new TH1D(Form(
"%s, %s",intFlowVsMName.Data(),flowFlag[co].Data()),
3303 Form(
"%s vs multiplicity",flowFlag[co].
Data()),
3310 fIntFlowVsM[co]->GetXaxis()->SetTitle(
"Reference multiplicity (from ESD)");
3320 TString intFlowDetectorBiasName =
"fIntFlowDetectorBias";
3325 for(
Int_t ci=0;ci<4;ci++)
3327 (
fIntFlowDetectorBias->GetXaxis())->SetBinLabel(ci+1,Form(
"#frac{corrected}{measured} %s",cumulantFlag[ci].
Data()));
3333 TString intFlowDetectorBiasVsMName =
"fIntFlowDetectorBiasVsM";
3335 for(
Int_t ci=0;ci<4;ci++)
3338 Form(
"Quantifying detector bias for %s vs multiplicity",cumulantFlag[ci].
Data()),
3367 TString controlHistogramsFlagsName =
"fControlHistogramsFlags";
3369 fControlHistogramsFlags =
new TProfile(controlHistogramsFlagsName.Data(),
"Flags for Control Histograms",2,0,2);
3383 TString sCorrelationNoRPsVsRefMultName =
"fCorrelationNoRPsVsRefMult";
3394 TString sCorrelationNoPOIsVsRefMultName =
"fCorrelationNoPOIsVsRefMult";
3405 TString sCorrelationNoRPsVsNoPOIsName =
"fCorrelationNoRPsVsNoPOIs";
3416 TString sCorrelation[4] = {
"#LT2#GT",
"#LT4#GT",
"#LT6#GT",
"#LT8#GT"};
3420 sMultiplicity =
"# RPs";
3423 sMultiplicity =
"Reference multiplicity (from ESD)";
3426 sMultiplicity =
"# POIs";
3428 for(
Int_t ci=0;ci<4;ci++)
3440 TString sCorrelationProduct[1] = {
"#LT2#GT#LT4#GT"};
3441 for(
Int_t cpi=0;cpi<1;cpi++)
3455 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}}"};
3456 for(
Int_t qvti=0;qvti<4;qvti++)
3483 TString bootstrapFlagsName =
"fBootstrapFlags";
3485 fBootstrapFlags =
new TProfile(bootstrapFlagsName.Data(),
"Flags for bootstrap",3,0,3);
3497 TString correlationFlag[4] = {
"#LT#LT2#GT#GT",
"#LT#LT4#GT#GT",
"#LT#LT6#GT#GT",
"#LT#LT8#GT#GT"};
3498 TString cumulantFlag[4] = {
"QC{2}",
"QC{4}",
"QC{6}",
"QC{8}"};
3502 TString bootstrapCorrelationsName =
"fBootstrapCorrelations";
3506 for(
Int_t ci=0;ci<4;ci++)
3516 TString bootstrapCumulantsName =
"fBootstrapCumulants";
3520 for(
Int_t co=0;co<4;co++)
3535 sMultiplicity =
"# RPs";
3538 sMultiplicity =
"Reference multiplicity (from ESD)";
3541 sMultiplicity =
"# POIs";
3546 TString bootstrapCorrelationsVsMName =
"fBootstrapCorrelationsVsM";
3548 for(
Int_t ci=0;ci<4;ci++)
3550 fBootstrapCorrelationsVsM[ci] =
new TProfile2D(Form(
"%s, %s",bootstrapCorrelationsVsMName.Data(),correlationFlag[ci].Data()),
3551 Form(
"Bootstrap Correlations Vs. M, %s",correlationFlag[ci].
Data()),
3562 TString bootstrapCumulantsVsMName =
"fBootstrapCumulantsVsM";
3564 for(
Int_t co=0;co<4;co++)
3567 Form(
"Bootstrap Cumulants Vs. M, %s",cumulantFlag[co].
Data()),
3593 TString mixedHarmonicsFlagsName =
"fMixedHarmonicsFlags";
3595 fMixedHarmonicsFlags =
new TProfile(mixedHarmonicsFlagsName.Data(),
"Flags for Mixed Harmonics",4,0,4);
3611 TString s2pCorrelationsName =
"f2pCorrelations";
3613 f2pCorrelations =
new TProfile(s2pCorrelationsName.Data(),Form(
"2-particle correlations (n = %d)",
fHarmonic),6,0,6,
"s");
3628 TString s3pCorrelationsName =
"f3pCorrelations";
3630 f3pCorrelations =
new TProfile(s3pCorrelationsName.Data(),Form(
"3-particle correlations (n = %d)",
fHarmonic),10,0,10,
"s");
3651 TString s4pCorrelationsName =
"f4pCorrelations";
3653 f4pCorrelations =
new TProfile(s4pCorrelationsName.Data(),Form(
"4-particle correlations (n = %d)",
fHarmonic),45,0,45,
"s");
3712 TString s5pCorrelationsName =
"f5pCorrelations";
3714 f5pCorrelations =
new TProfile(s5pCorrelationsName.Data(),Form(
"5-particle correlations (n = %d)",
fHarmonic),87,0,87,
"s");
3815 TString s6pCorrelationsName =
"f6pCorrelations";
3817 f6pCorrelations =
new TProfile(s6pCorrelationsName.Data(),Form(
"6-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3826 TString s7pCorrelationsName =
"f7pCorrelations";
3828 f7pCorrelations =
new TProfile(s7pCorrelationsName.Data(),Form(
"7-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3837 TString s8pCorrelationsName =
"f8pCorrelations";
3839 f8pCorrelations =
new TProfile(s8pCorrelationsName.Data(),Form(
"8-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3884 TString mixedHarmonicEventWeightsName =
"fMixedHarmonicEventWeights";
3886 TString powerFlag[2] = {
"linear",
"quadratic"};
3887 for(
Int_t power=0;power<2;power++)
3889 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.);
3903 }
else if (power == 1)
3918 TString mixedHarmonicProductOfEventWeightsName =
"fMixedHarmonicProductOfEventWeights";
3919 mixedHarmonicProductOfEventWeightsName +=
fAnalysisLabel->Data();
3924 for(
Int_t b=1;b<=8;b++)
3932 TString mixedHarmonicProductOfCorrelationsName =
"fMixedHarmonicProductOfCorrelations";
3933 mixedHarmonicProductOfCorrelationsName +=
fAnalysisLabel->Data();