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 fUseZDCESEMulWeights(kFALSE),
119 fUseZDCESESpecWeights(kFALSE),
120 fUseParticleWeights(NULL),
122 fMultiplicityWeight(NULL),
126 fIntFlowProfiles(NULL),
127 fIntFlowResults(NULL),
128 fIntFlowAllCorrelationsVsM(NULL),
130 fApplyCorrectionForNUA(kFALSE),
131 fApplyCorrectionForNUAVsM(kFALSE),
135 fPropagateErrorAlsoFromNIT(kFALSE),
136 fCalculateCumulantsVsM(kFALSE),
137 fCalculateAllCorrelationsVsM(kFALSE),
138 fMinimumBiasReferenceFlow(kTRUE),
139 fForgetAboutCovariances(kFALSE),
140 fStoreVarious(kFALSE),
142 fUse2DHistograms(kFALSE),
143 fFillProfilesVsMUsingWeights(kTRUE),
144 fUseQvectorTerms(kFALSE),
148 fIntFlowCorrelationsEBE(NULL),
149 fIntFlowEventWeightsForCorrelationsEBE(NULL),
150 fIntFlowCorrelationsAllEBE(NULL),
152 fNumberOfPOIsEBE(0.),
153 fReferenceMultiplicityEBE(0.),
155 fNewCentralityEBE(0.),
161 fCentralityCL1EBE(0.),
163 fCentralityTRKEBE(0.),
167 fAvMultiplicity(NULL),
168 fIntFlowCorrelationsPro(NULL),
169 fIntFlowSquaredCorrelationsPro(NULL),
170 fIntFlowCorrelationsAllPro(NULL),
171 fIntFlowExtraCorrelationsPro(NULL),
172 fIntFlowProductOfCorrelationsPro(NULL),
173 fIntFlowProductOfCorrectionTermsForNUAPro(NULL),
174 fIntFlowCorrelationsHist(NULL),
175 fIntFlowCorrelationsAllHist(NULL),
176 fIntFlowCovariances(NULL),
177 fIntFlowSumOfProductOfEventWeights(NULL),
178 fIntFlowCovariancesNUA(NULL),
179 fIntFlowSumOfProductOfEventWeightsNUA(NULL),
180 fIntFlowQcumulants(NULL),
181 fIntFlowQcumulantsRebinnedInM(NULL),
182 fIntFlowQcumulantsErrorSquaredRatio(NULL),
184 fIntFlowRebinnedInM(NULL),
185 fIntFlowDetectorBias(NULL),
188 fDiffFlowProfiles(NULL),
189 fDiffFlowResults(NULL),
191 fDiffFlowFlags(NULL),
192 fCalculateDiffFlow(kTRUE),
193 fCalculate2DDiffFlow(kFALSE),
194 fCalculateDiffFlowVsEta(kTRUE),
196 fOtherDiffCorrelatorsList(NULL),
198 fDistributionsList(NULL),
199 fDistributionsFlags(NULL),
200 fStoreDistributions(kFALSE),
201 fnBinsForCorrelations(10000),
203 fNestedLoopsList(NULL),
204 fEvaluateIntFlowNestedLoops(kFALSE),
205 fEvaluateDiffFlowNestedLoops(kFALSE),
206 fMaxAllowedMultiplicity(10),
207 fEvaluateNestedLoops(NULL),
208 fIntFlowDirectCorrelations(NULL),
209 fIntFlowExtraDirectCorrelations(NULL),
210 fCrossCheckInPtBinNo(10),
211 fCrossCheckInEtaBinNo(20),
212 fNoOfParticlesInBin(NULL),
213 fMixedHarmonicsNestedLoops(NULL),
215 fMixedHarmonicsList(NULL),
216 fMixedHarmonicsProfiles(NULL),
217 fMixedHarmonicsResults(NULL),
218 fMixedHarmonicsErrorPropagation(NULL),
219 fMixedHarmonicsFlags(NULL),
220 fCalculateMixedHarmonics(kFALSE),
221 fCalculateMixedHarmonicsVsM(kFALSE),
222 f2pCorrelations(NULL),
223 f3pCorrelations(NULL),
224 f4pCorrelations(NULL),
225 f5pCorrelations(NULL),
226 f6pCorrelations(NULL),
227 f7pCorrelations(NULL),
228 f8pCorrelations(NULL),
236 fMixedHarmonicProductOfEventWeights(NULL),
237 fMixedHarmonicProductOfCorrelations(NULL),
239 fControlHistogramsList(NULL),
240 fControlHistogramsFlags(NULL),
241 fStoreControlHistograms(kFALSE),
242 fCorrelationNoRPsVsRefMult(NULL),
243 fCorrelationNoPOIsVsRefMult(NULL),
244 fCorrelationNoRPsVsNoPOIs(NULL),
246 fBootstrapList(NULL),
247 fBootstrapProfilesList(NULL),
248 fBootstrapResultsList(NULL),
249 fBootstrapFlags(NULL),
250 fUseBootstrap(kFALSE),
251 fUseBootstrapVsM(kFALSE),
254 fBootstrapCorrelations(NULL),
255 fBootstrapCumulants(NULL),
260 fCalculateCRC(kTRUE),
261 fCalculateCRCPt(kFALSE),
262 fCalculateCME(kFALSE),
263 fCalculateCRC2(kFALSE),
264 fCalculateCRCVZ(kFALSE),
265 fCalculateCRCZDC(kFALSE),
266 fCalculateFlowQC(kFALSE),
267 fCalculateFlowZDC(kFALSE),
268 fCalculateFlowVZ(kFALSE),
269 fCalculateEbEFlow(kFALSE),
270 fStoreZDCQVecVtxPos(kFALSE),
271 fUsePhiEtaCuts(kFALSE),
274 fRecenterZDC(kFALSE),
276 fUseCRCRecenter(kFALSE),
286 fCorrWeightTPC(kUnit),
287 fCorrWeightVZ(kUnit),
288 fCorrWeightZDC(kUnit),
291 fCRCCenBinWidth(CenWidth),
292 fCRCIntRbRList(NULL),
295 fInteractionRate(kAll),
296 fSelectCharge(kAllCh),
298 fCRCQVecListTPC(NULL),
299 fCRCQVecWeightsList(NULL),
300 fCRCZDCCalibList(NULL),
301 fCRCZDCResList(NULL),
306 fCRCZDCRbRList(NULL),
314 fFlowSPZDCList(NULL),
319 fFlowQCDeltaEta(0.4),
325 fQAZDCCutsFlag(kTRUE),
333 fHistList =
new TList();
334 fHistList->SetName(
"cobjQC");
335 fHistList->SetOwner(kTRUE);
338 fTempList =
new TList();
339 fTempList->SetName(
"temp");
340 fTempList->SetOwner(kTRUE);
343 fMultiplicityWeight =
new TString(
"combinations");
346 fAnalysisLabel =
new TString();
349 this->InitializeArraysForIntFlow();
350 this->InitializeArraysForDiffFlow();
351 this->InitializeArraysForDistributions();
352 this->InitializeArraysForVarious();
353 this->InitializeArraysForNestedLoops();
354 this->InitializeArraysForMixedHarmonics();
355 this->InitializeArraysForControlHistograms();
356 this->InitializeArraysForBootstrap();
364 this->InitializeCostantsForCRC();
365 this->InitializeArraysForParticleWeights();
366 this->InitializeArraysForCRC();
367 this->InitializeArraysForCRCVZ();
368 this->InitializeArraysForCRCZDC();
369 this->InitializeArraysForCRC2();
370 this->InitializeArraysForQVec();
371 this->InitializeArraysForCRCPt();
372 this->InitializeArraysForCME();
373 this->InitializeArraysForFlowEbE();
374 this->InitializeArraysForFlowQC();
375 this->InitializeArraysForFlowQCHighOrders();
376 this->InitializeArraysForFlowSPZDC();
377 this->InitializeArraysForFlowSPVZ();
378 this->InitializeArraysForEbEFlow();
420 Bool_t oldHistAddStatus = TH1::AddDirectoryStatus();
421 TH1::AddDirectory(kFALSE);
474 TH1::AddDirectory(oldHistAddStatus);
515 Int_t nCounterNoRPs = 0;
552 if(fRunBin<0 || fRunBin>=
fCRCnRun) {
return;}
554 if(fCenBin<0 || fCenBin>=
fCRCnCen) {
return;}
600 if(QMC>0. && sqrt(QCRe*QCRe+QCIm*QCIm)>1.E-6) {
604 if(QMA>0. && sqrt(QARe*QARe+QAIm*QAIm)>1.E-6) {
610 if(QMC>0. && sqrt(QCRe*QCRe+QCIm*QCIm)>1.E-6) {
614 if(QMA>0. && sqrt(QARe*QARe+QAIm*QAIm)>1.E-6) {
636 if(QMC>0. && sqrt(QCRe*QCRe+QCIm*QCIm)>1.E-6) {
639 if(QMA>0. && sqrt(QARe*QARe+QAIm*QAIm)>1.E-6) {
642 if(QMC>0. && QMA>0. && sqrt(QCRe*QCRe+QCIm*QCIm)>1.E-6 && sqrt(QARe*QARe+QAIm*QAIm)>1.E-6) {
675 AliWarning(Form(
"WARNING: cenphieta weights not found for run %d! \n",
fRunNum));
682 AliWarning(Form(
"WARNING: pch cenphieta weights not found for run %d! \n",
fRunNum));
687 AliWarning(Form(
"WARNING: nch cenphieta weights not found for run %d! \n",
fRunNum));
695 AliWarning(Form(
"WARNING: cenphieta weights vtxdep not found for run %d! \n",
fRunNum));
712 for(
Int_t i=0;i<nPrim;i++) {
722 dPhi = aftsTrack->
Phi();
723 dPt = aftsTrack->
Pt();
724 dEta = aftsTrack->
Eta();
725 dCharge = aftsTrack->
Charge();
730 cw = (dCharge > 0. ? 0 : 1);
753 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
759 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
764 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
765 if(wt==0.) wPhiEta = 0.;
769 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
778 for(
Int_t m=0;m<12;m++)
780 for(
Int_t k=0;k<9;k++)
782 (*fReQ)(m,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1)*n*dPhi);
783 (*fImQ)(m,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1)*n*dPhi);
787 for(
Int_t p=0;p<8;p++)
789 for(
Int_t k=0;k<9;k++)
791 (*fSpk)(p,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k);
800 for(
Int_t k=0;k<9;k++)
802 for(
Int_t m=0;m<4;m++)
808 fReRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
809 fImRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
812 fs1dEBE[0][pe][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
818 fReRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
819 fImRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
822 fs2dEBE[0][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
831 for(
Int_t k=0;k<9;k++)
833 for(
Int_t m=0;m<4;m++)
839 fReRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
840 fImRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
843 fs1dEBE[2][pe][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
849 fReRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
850 fImRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
853 fs2dEBE[2][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
889 dPhi = aftsTrack->
Phi();
890 dPt = aftsTrack->
Pt();
891 dEta = aftsTrack->
Eta();
892 dCharge = aftsTrack->
Charge();
897 cw = (dCharge > 0. ? 0 : 1);
920 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
926 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
932 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
936 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
941 if(dPhi>2.136283 && dPhi<2.324779)
continue;
952 for(
Int_t k=0;k<9;k++)
954 for(
Int_t m=0;m<4;m++)
960 fReRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
961 fImRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
966 fReRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
967 fImRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
975 fCRCQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
976 fCRCQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
977 fCRCMult[cw][h]->Fill(dEta,wPhiEta);
979 fCRC2QRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
980 fCRC2QIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
981 fCRC2Mul[cw][h]->Fill(dEta,wPhiEta);
983 fCRCZDCQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
984 fCRCZDCQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
988 fCRC2QRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
989 fCRC2QIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
994 fCRCZDCQRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
995 fCRCZDCQIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
998 fCRCZDCQRe[3][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
999 fCRCZDCQIm[3][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
1007 if(weraw > 0.) SpecWeig = 1./weraw;
1009 fCMEQRe[cw][h]->Fill(dEta,SpecWeig*wPhiEta*TMath::Cos((h+1.)*dPhi));
1010 fCMEQIm[cw][h]->Fill(dEta,SpecWeig*wPhiEta*TMath::Sin((h+1.)*dPhi));
1011 fCMEMult[cw][h]->Fill(dEta,SpecWeig*wPhiEta);
1012 fCMEQRe[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.)*TMath::Cos((h+1.)*dPhi));
1013 fCMEQIm[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.)*TMath::Sin((h+1.)*dPhi));
1014 fCMEMult[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.));
1030 fPOIPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1031 fPOIPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1034 fPOIPtDiffQReCh[cw][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1035 fPOIPtDiffQImCh[cw][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1038 fPOIPhiDiffQRe[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1039 fPOIPhiDiffQIm[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1043 Int_t keta = (dEta<0.?0:1);
1044 fPOIPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1045 fPOIPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1047 fPOIPhiDiffQReEG[keta][k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1048 fPOIPhiDiffQImEG[keta][k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1052 }
else if(fFlowQCDeltaEta<0. && fFlowQCDeltaEta>-1.) {
1055 fPOIPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1056 fPOIPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1059 fPOIPhiDiffQRe[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1060 fPOIPhiDiffQIm[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1065 if((dEta>0. && dEta<0.4-boundetagap/2.) || (dEta>0.4+boundetagap/2. && dEta<0.8)) {
1067 if(dEta>0. && dEta<0.4-boundetagap/2.) keta = 0;
1069 fPOIPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1070 fPOIPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1078 }
else if(fFlowQCDeltaEta<-1. && fFlowQCDeltaEta>-2.) {
1081 fPOIPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1082 fPOIPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1085 fPOIPhiDiffQRe[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1086 fPOIPhiDiffQIm[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1091 if((dEta<0. && dEta>-0.4+boundetagap/2.) || (dEta<-0.4-boundetagap/2. && dEta>-0.8)) {
1093 if(dEta<0. && dEta>-0.4+boundetagap/2.) keta = 0;
1095 fPOIPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1096 fPOIPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1109 fEtaDiffQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
1110 fEtaDiffQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
1125 printf(
"\n WARNING (QC): No particle (i.e. aftsTrack is a NULL pointer in AFAWQC::Make())!!!!\n\n");
1133 for(
Int_t p=0;p<8;p++)
1135 for(
Int_t k=0;k<9;k++)
1137 (*fSpk)(p,k)=pow((*
fSpk)(p,k),p+1);
1566 cout<<
"Skipping the event because multiplicity is "<<nPrim<<
". Too high to evaluate nested loops!"<<endl;
1570 cout<<
"Skipping the event because multiplicity is "<<nPrim<<
"."<<endl;
1706 cosP1n = dReQ1n/dMult;
1724 cosP1nP1n = (pow(dReQ1n,2)-pow(dImQ1n,2)-dReQ2n)/(dMult*(dMult-1));
1725 cosP2nM1n = (dReQ2n*dReQ1n+dImQ2n*dImQ1n-dReQ1n)/(dMult*(dMult-1));
1749 cosP1nM1nM1n = (dReQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2))-dReQ1n*dReQ2n-dImQ1n*dImQ2n-2.*(dMult-1)*dReQ1n)
1750 / (dMult*(dMult-1)*(dMult-2));
1815 sinP1n = dImQ1n/dMult;
1832 sinP1nP1n = (2.*dReQ1n*dImQ1n-dImQ2n)/(dMult*(dMult-1));
1833 sinP2nM1n = (dImQ2n*dReQ1n-dReQ2n*dImQ1n-dImQ1n)/(dMult*(dMult-1));
1857 sinP1nM1nM1n = (-dImQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2))+dReQ1n*dImQ2n-dImQ1n*dReQ2n+2.*(dMult-1)*dImQ1n)
1858 / (dMult*(dMult-1)*(dMult-2));
1888 if(outputListHistos)
1893 printf(
"\n WARNING (QC): fHistList is NULL in AFAWQC::GOH() !!!!\n\n");
1921 printf(
"\n WARNING (QC): outputListHistos is NULL in AFAWQC::GOH() !!!!\n\n");
1933 Int_t nBinsPt = profilePtEta->GetNbinsX();
1934 Double_t dPtMin = (profilePtEta->GetXaxis())->GetXmin();
1935 Double_t dPtMax = (profilePtEta->GetXaxis())->GetXmax();
1937 Int_t nBinsEta = profilePtEta->GetNbinsY();
1939 TProfile *profilePt =
new TProfile(
"",
"",nBinsPt,dPtMin,dPtMax);
1941 for(
Int_t p=1;p<=nBinsPt;p++)
1949 for(
Int_t e=1;e<=nBinsEta;e++)
1951 contentPt += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
1952 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1953 entryPt += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1955 sum1 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
1956 * (pow(profilePtEta->GetBinError(profilePtEta->GetBin(p,e)),2.)
1957 + pow(profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)),2.));
1958 sum2 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1959 sum3 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
1960 * (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)));
1962 if(sum2>0. && sum1/sum2-pow(sum3/sum2,2.) > 0.)
1964 spreadPt = pow(sum1/sum2-pow(sum3/sum2,2.),0.5);
1966 profilePt->SetBinContent(p,contentPt);
1967 profilePt->SetBinEntries(p,entryPt);
1969 profilePt->SetBinError(p,spreadPt);
1986 Int_t nBinsEta = profilePtEta->GetNbinsY();
1987 Double_t dEtaMin = (profilePtEta->GetYaxis())->GetXmin();
1988 Double_t dEtaMax = (profilePtEta->GetYaxis())->GetXmax();
1990 Int_t nBinsPt = profilePtEta->GetNbinsX();
1992 TProfile *profileEta =
new TProfile(
"",
"",nBinsEta,dEtaMin,dEtaMax);
1994 for(
Int_t e=1;e<=nBinsEta;e++)
1998 for(
Int_t p=1;p<=nBinsPt;p++)
2000 contentEta += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
2001 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
2002 entryEta += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
2004 profileEta->SetBinContent(e,contentEta);
2005 profileEta->SetBinEntries(e,entryEta);
2025 for(
Int_t b=0;b<4;b++)
2036 }
else if(type ==
"RP")
2046 }
else if(type ==
"POI")
2058 for(
Int_t b=0;b<4;b++)
2067 TString subtitle2 =
" (rebinned in M)";
2069 if(type !=
"RF, rebinned in M")
2073 subtitle.Append(type);
2074 subtitle.Append(
", without weights)");
2077 subtitle.Append(type);
2078 subtitle.Append(
", with weights)");
2084 subtitle.Append(
"RF");
2085 subtitle.Append(
", without weights)");
2088 subtitle.Append(
"RF");
2089 subtitle.Append(
", with weights)");
2094 cout<<
"*************************************"<<endl;
2095 cout<<
"*************************************"<<endl;
2096 cout<<title.Data()<<endl;
2097 cout<<subtitle.Data()<<endl;
2098 if(type ==
"RF, rebinned in M"){cout<<subtitle2.Data()<<endl;}
2101 for(
Int_t i=0;i<4;i++)
2103 cout<<
" v_"<<n<<
"{"<<2*(i+1)<<
"} = "<<dVn[i]<<
" +/- "<<dVnErr[i]<<endl;
2111 cout<<
" detector bias (corrected for): "<<endl;
2114 cout<<
" detector bias (not corrected for):"<<endl;
2120 if(type ==
"RF" || type ==
"RF, rebinned in M")
2124 else if (type ==
"RP")
2128 else if (type ==
"POI")
2133 cout<<
"*************************************"<<endl;
2134 cout<<
"*************************************"<<endl;
2144 TFile *output =
new TFile(outputFileName.Data(),
"RECREATE");
2160 outputFileName->Write(outputFileName->GetName(), TObject::kSingleKey);
2173 TString commonHistsName =
"AliFlowCommonHistQC";
2181 TString commonHists2ndOrderName =
"AliFlowCommonHist2ndOrderQC";
2186 TString commonHists4thOrderName =
"AliFlowCommonHist4thOrderQC";
2191 TString commonHists6thOrderName =
"AliFlowCommonHist6thOrderQC";
2196 TString commonHists8thOrderName =
"AliFlowCommonHist8thOrderQC";
2204 TString commonHistResults2ndOrderName =
"AliFlowCommonHistResults2ndOrderQC";
2209 TString commonHistResults4thOrderName =
"AliFlowCommonHistResults4thOrderQC";
2214 TString commonHistResults6thOrderName =
"AliFlowCommonHistResults6thOrderQC";
2219 TString commonHistResults8thOrderName =
"AliFlowCommonHistResults8thOrderQC";
2234 printf(
"\n WARNING (QC): fWeightsList is NULL in AFAWQC::BAFWH() !!!! \n\n");
2238 TString fUseParticleWeightsName =
"fUseParticleWeightsQC";
2240 fUseParticleWeights =
new TProfile(fUseParticleWeightsName.Data(),
"0 = particle weight not used, 1 = particle weight used ",7,0,7);
2431 TF1 *CenFit =
new TF1(
"CenFit",
"pol0", 0., 100.);
2434 Double_t CenAv = CenFit->GetParameter(0);
2446 Double_t CenAv = CenFit->GetParameter(0);
2448 Double_t SemiCenAv = CenFit->GetParameter(0);
2474 TString sinCosFlag[2] = {
"sin",
"cos"};
2475 TString powerFlag[2] = {
"linear",
"quadratic"};
2478 TString intFlowFlagsName =
"fIntFlowFlags";
2480 fIntFlowFlags =
new TProfile(intFlowFlagsName.Data(),
"Flags for Integrated Flow",20,0.,20.);
2486 fIntFlowFlags->GetXaxis()->SetBinLabel(1,
"Particle Weights");
2488 fIntFlowFlags->GetXaxis()->SetBinLabel(3,
"Corrected for NUA?");
2489 fIntFlowFlags->GetXaxis()->SetBinLabel(4,
"Print RF results");
2490 fIntFlowFlags->GetXaxis()->SetBinLabel(5,
"Print RP results");
2491 fIntFlowFlags->GetXaxis()->SetBinLabel(6,
"Print POI results");
2492 fIntFlowFlags->GetXaxis()->SetBinLabel(7,
"Print RF (rebinned in M) results");
2493 fIntFlowFlags->GetXaxis()->SetBinLabel(8,
"Corrected for NUA vs M?");
2494 fIntFlowFlags->GetXaxis()->SetBinLabel(9,
"Propagate errors to v_{n} from correlations?");
2495 fIntFlowFlags->GetXaxis()->SetBinLabel(10,
"Calculate cumulants vs M");
2496 fIntFlowFlags->GetXaxis()->SetBinLabel(11,
"fMinimumBiasReferenceFlow");
2497 fIntFlowFlags->GetXaxis()->SetBinLabel(12,
"fForgetAboutCovariances");
2499 fIntFlowFlags->GetXaxis()->SetBinLabel(14,
"fFillMultipleControlHistograms");
2500 fIntFlowFlags->GetXaxis()->SetBinLabel(15,
"Calculate all correlations vs M");
2501 fIntFlowFlags->GetXaxis()->SetBinLabel(16,
"fMultiplicityIs");
2503 fIntFlowFlags->GetXaxis()->SetBinLabel(18,
"fUse2DHistograms");
2504 fIntFlowFlags->GetXaxis()->SetBinLabel(19,
"fFillProfilesVsMUsingWeights");
2505 fIntFlowFlags->GetXaxis()->SetBinLabel(20,
"fUseQvectorTerms");
2510 fReQ =
new TMatrixD(12,9);
2511 fImQ =
new TMatrixD(12,9);
2512 fSpk =
new TMatrixD(8,9);
2514 TString intFlowCorrelationsEBEName =
"fIntFlowCorrelationsEBE";
2518 TString intFlowEventWeightsForCorrelationsEBEName =
"fIntFlowEventWeightsForCorrelationsEBE";
2519 intFlowEventWeightsForCorrelationsEBEName +=
fAnalysisLabel->Data();
2522 TString intFlowCorrelationsAllEBEName =
"fIntFlowCorrelationsAllEBE";
2527 TString fIntFlowCorrectionTermsForNUAEBEName =
"fIntFlowCorrectionTermsForNUAEBE";
2529 for(
Int_t sc=0;sc<2;sc++)
2531 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);
2534 TString fIntFlowEventWeightForCorrectionTermsForNUAEBEName =
"fIntFlowEventWeightForCorrectionTermsForNUAEBE";
2535 fIntFlowEventWeightForCorrectionTermsForNUAEBEName +=
fAnalysisLabel->Data();
2536 for(
Int_t sc=0;sc<2;sc++)
2542 TString avMultiplicityName =
"fAvMultiplicity";
2544 fAvMultiplicity =
new TProfile(avMultiplicityName.Data(),
"Average multiplicities of reference particles (RPs)",9,0,9);
2561 TString correlationFlag[4] = {
"#LT#LT2#GT#GT",
"#LT#LT4#GT#GT",
"#LT#LT6#GT#GT",
"#LT#LT8#GT#GT"};
2562 TString intFlowCorrelationsProName =
"fIntFlowCorrelationsPro";
2564 fIntFlowCorrelationsPro =
new TProfile(intFlowCorrelationsProName.Data(),
"Average correlations for all events",4,0,4,
"s");
2570 for(
Int_t b=0;b<4;b++)
2576 TString squaredCorrelationFlag[4] = {
"#LT#LT2#GT^{2}#GT",
"#LT#LT4#GT^{2}#GT",
"#LT#LT6#GT^{2}#GT",
"#LT#LT8#GT^{2}#GT"};
2577 TString intFlowSquaredCorrelationsProName =
"fIntFlowSquaredCorrelationsPro";
2585 for(
Int_t b=0;b<4;b++)
2592 for(
Int_t ci=0;ci<4;ci++)
2595 TString intFlowCorrelationsVsMProName =
"fIntFlowCorrelationsVsMPro";
2597 fIntFlowCorrelationsVsMPro[ci] =
new TProfile(Form(
"%s, %s",intFlowCorrelationsVsMProName.Data(),correlationFlag[ci].Data()),
2598 Form(
"%s vs multiplicity",correlationFlag[ci].
Data()),
2614 TString intFlowSquaredCorrelationsVsMProName =
"fIntFlowSquaredCorrelationsVsMPro";
2617 Form(
"%s vs multiplicity",squaredCorrelationFlag[ci].
Data()),
2635 TString intFlowCorrelationsAllProName =
"fIntFlowCorrelationsAllPro";
2637 fIntFlowCorrelationsAllPro =
new TProfile(intFlowCorrelationsAllProName.Data(),
"Average all correlations for all events",64,0,64);
2743 fIntFlowCorrelationsAllVsMPro[30] =
new TProfile(
"eight1n1n1n1n1n1n1n1n",
"#LT#LT8#GT#GT_{n,n,n,n|n,n,n,n}",
fnBinsMult,
fMinMult,
fMaxMult);
2777 for(
Int_t n=0;n<63;n++)
2799 TString intFlowExtraCorrelationsProName =
"fIntFlowExtraCorrelationsPro";
2801 fIntFlowExtraCorrelationsPro =
new TProfile(intFlowExtraCorrelationsProName.Data(),
"Average extra correlations for all events",100,0,100,
"s");
2812 TString productFlag[6] = {
"#LT#LT2#GT#LT4#GT#GT",
"#LT#LT2#GT#LT6#GT#GT",
"#LT#LT2#GT#LT8#GT#GT",
2813 "#LT#LT4#GT#LT6#GT#GT",
"#LT#LT4#GT#LT8#GT#GT",
"#LT#LT6#GT#LT8#GT#GT"};
2814 TString intFlowProductOfCorrelationsProName =
"fIntFlowProductOfCorrelationsPro";
2821 for(
Int_t b=0;b<6;b++)
2830 TString intFlowProductOfCorrelationsVsMProName =
"fIntFlowProductOfCorrelationsVsMPro";
2831 intFlowProductOfCorrelationsVsMProName +=
fAnalysisLabel->Data();
2835 Form(
"%s versus multiplicity",productFlag[
pi].
Data()),
2851 TString intFlowProductOfCorrectionTermsForNUAProName =
"fIntFlowProductOfCorrectionTermsForNUAPro";
2852 intFlowProductOfCorrectionTermsForNUAProName +=
fAnalysisLabel->Data();
2887 for(
Int_t sc=0;sc<2;sc++)
2889 TString intFlowCorrectionTermsForNUAProName =
"fIntFlowCorrectionTermsForNUAPro";
2891 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");
2904 TString correctionTermFlag[4] = {
"(n(phi1))",
"(n(phi1+phi2))",
"(n(phi1-phi2-phi3))",
"(n(2phi1-phi2))"};
2905 for(
Int_t ci=0;ci<4;ci++)
2907 TString intFlowCorrectionTermsForNUAVsMProName =
"fIntFlowCorrectionTermsForNUAVsMPro";
2908 intFlowCorrectionTermsForNUAVsMProName +=
fAnalysisLabel->Data();
2909 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");
2917 TString intFlowCorrelationsHistName =
"fIntFlowCorrelationsHist";
2932 for(
Int_t ci=0;ci<4;ci++)
2934 TString intFlowCorrelationsVsMHistName =
"fIntFlowCorrelationsVsMHist";
2937 Form(
"%s vs multiplicity",correlationFlag[ci].
Data()),
2954 TString intFlowCorrelationsAllHistName =
"fIntFlowCorrelationsAllHist";
2995 for(
Int_t sc=0;sc<2;sc++)
2997 TString intFlowCorrectionTermsForNUAHistName =
"fIntFlowCorrectionTermsForNUAHist";
2999 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);
3011 TString intFlowCovariancesName =
"fIntFlowCovariances";
3013 fIntFlowCovariances =
new TH1D(intFlowCovariancesName.Data(),
"Covariances (multiplied with weight dependent prefactor)",6,0,6);
3024 TString intFlowSumOfEventWeightsName =
"fIntFlowSumOfEventWeights";
3026 for(
Int_t power=0;power<2;power++)
3028 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);
3037 }
else if (power == 1)
3047 TString intFlowSumOfProductOfEventWeightsName =
"fIntFlowSumOfProductOfEventWeights";
3063 TString intFlowCovariancesVsMName =
"fIntFlowCovariancesVsM";
3065 TString covarianceFlag[6] = {
"Cov(<2>,<4>)",
"Cov(<2>,<6>)",
"Cov(<2>,<8>)",
"Cov(<4>,<6>)",
"Cov(<4>,<8>)",
"Cov(<6>,<8>)"};
3066 for(
Int_t ci=0;ci<6;ci++)
3069 Form(
"%s vs multiplicity",covarianceFlag[ci].
Data()),
3089 TString intFlowSumOfEventWeightsVsMName =
"fIntFlowSumOfEventWeightsVsM";
3091 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>}"},
3092 {
"#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}"}};
3093 for(
Int_t si=0;si<4;si++)
3095 for(
Int_t power=0;power<2;power++)
3098 Form(
"%s vs multiplicity",sumFlag[power][si].
Data()),
3120 TString intFlowSumOfProductOfEventWeightsVsMName =
"fIntFlowSumOfProductOfEventWeightsVsM";
3121 intFlowSumOfProductOfEventWeightsVsMName +=
fAnalysisLabel->Data();
3122 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>}",
3123 "#sum_{i=1}^{N} w_{<4>} w_{<6>}",
"#sum_{i=1}^{N} w_{<4>} w_{<8>}",
"#sum_{i=1}^{N} w_{<6>} w_{<8>}"};
3127 Form(
"%s versus multiplicity",sopowFlag[
pi].
Data()),
3144 TString intFlowCovariancesNUAName =
"fIntFlowCovariancesNUA";
3146 fIntFlowCovariancesNUA =
new TH1D(intFlowCovariancesNUAName.Data(),
"Covariances for NUA (multiplied with weight dependent prefactor)",27,0,27);
3165 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(16,
"Cov(<cos(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3166 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(17,
"Cov(<cos(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3169 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(20,
"Cov(<sin(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3170 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(21,
"Cov(<sin(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3171 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(22,
"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}+#phi_{2})>)");
3172 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(23,
"Cov(<cos(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3173 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(24,
"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3174 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(25,
"Cov(<sin(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3175 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(26,
"Cov(<sin(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3176 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(27,
"Cov(<cos(#phi_{1}-#phi_{2}-#phi_{3}>,<sin(#phi_{1}-#phi_{2}-#phi_{3}>)");
3179 TString intFlowSumOfEventWeightsNUAName =
"fIntFlowSumOfEventWeightsNUA";
3181 for(
Int_t sc=0;sc<2;sc++)
3183 for(
Int_t power=0;power<2;power++)
3185 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);
3194 }
else if(power == 1)
3198 (
fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(3,Form(
"#sum_{i=1}^{N} w_{<%s(#phi_{1}-#phi_{2}-#phi_{3})>}^{2}",sinCosFlag[sc].
Data()));
3205 TString intFlowSumOfProductOfEventWeightsNUAName =
"fIntFlowSumOfProductOfEventWeightsNUA";
3206 intFlowSumOfProductOfEventWeightsNUAName +=
fAnalysisLabel->Data();
3239 TString cumulantFlag[4] = {
"QC{2}",
"QC{4}",
"QC{6}",
"QC{8}"};
3240 TString intFlowQcumulantsName =
"fIntFlowQcumulants";
3245 fIntFlowQcumulants->SetTitle(
"Reference Q-cumulants (error from non-isotropic terms also propagated)");
3249 for(
Int_t b=0;b<4;b++)
3257 TString intFlowQcumulantsRebinnedInMName =
"fIntFlowQcumulantsRebinnedInM";
3262 for(
Int_t b=0;b<4;b++)
3269 TString intFlowQcumulantsErrorSquaredRatioName =
"fIntFlowQcumulantsErrorSquaredRatio";
3270 intFlowQcumulantsErrorSquaredRatioName +=
fAnalysisLabel->Data();
3274 for(
Int_t b=0;b<4;b++)
3282 TString intFlowQcumulantsVsMName =
"fIntFlowQcumulantsVsM";
3284 for(
Int_t co=0;co<4;co++)
3287 Form(
"%s vs multiplicity",cumulantFlag[co].
Data()),
3304 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)};
3305 TString intFlowName =
"fIntFlow";
3308 fIntFlow =
new TH1D(intFlowName.Data(),
"Reference flow estimates from Q-cumulants",4,0,4);
3311 for(
Int_t b=0;b<4;b++)
3313 (
fIntFlow->GetXaxis())->SetBinLabel(b+1,flowFlag[b].
Data());
3319 TString intFlowRebinnedInMName =
"fIntFlowRebinnedInM";
3321 fIntFlowRebinnedInM =
new TH1D(intFlowRebinnedInMName.Data(),
"Reference flow estimates from Q-cumulants (rebinned in M)",4,0,4);
3324 for(
Int_t b=0;b<4;b++)
3333 TString intFlowVsMName =
"fIntFlowVsM";
3335 for(
Int_t co=0;co<4;co++)
3337 fIntFlowVsM[co] =
new TH1D(Form(
"%s, %s",intFlowVsMName.Data(),flowFlag[co].Data()),
3338 Form(
"%s vs multiplicity",flowFlag[co].
Data()),
3345 fIntFlowVsM[co]->GetXaxis()->SetTitle(
"Reference multiplicity (from ESD)");
3355 TString intFlowDetectorBiasName =
"fIntFlowDetectorBias";
3360 for(
Int_t ci=0;ci<4;ci++)
3362 (
fIntFlowDetectorBias->GetXaxis())->SetBinLabel(ci+1,Form(
"#frac{corrected}{measured} %s",cumulantFlag[ci].
Data()));
3368 TString intFlowDetectorBiasVsMName =
"fIntFlowDetectorBiasVsM";
3370 for(
Int_t ci=0;ci<4;ci++)
3373 Form(
"Quantifying detector bias for %s vs multiplicity",cumulantFlag[ci].
Data()),
3402 TString controlHistogramsFlagsName =
"fControlHistogramsFlags";
3404 fControlHistogramsFlags =
new TProfile(controlHistogramsFlagsName.Data(),
"Flags for Control Histograms",2,0,2);
3418 TString sCorrelationNoRPsVsRefMultName =
"fCorrelationNoRPsVsRefMult";
3429 TString sCorrelationNoPOIsVsRefMultName =
"fCorrelationNoPOIsVsRefMult";
3440 TString sCorrelationNoRPsVsNoPOIsName =
"fCorrelationNoRPsVsNoPOIs";
3451 TString sCorrelation[4] = {
"#LT2#GT",
"#LT4#GT",
"#LT6#GT",
"#LT8#GT"};
3455 sMultiplicity =
"# RPs";
3458 sMultiplicity =
"Reference multiplicity (from ESD)";
3461 sMultiplicity =
"# POIs";
3463 for(
Int_t ci=0;ci<4;ci++)
3475 TString sCorrelationProduct[1] = {
"#LT2#GT#LT4#GT"};
3476 for(
Int_t cpi=0;cpi<1;cpi++)
3490 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}}"};
3491 for(
Int_t qvti=0;qvti<4;qvti++)
3518 TString bootstrapFlagsName =
"fBootstrapFlags";
3520 fBootstrapFlags =
new TProfile(bootstrapFlagsName.Data(),
"Flags for bootstrap",3,0,3);
3532 TString correlationFlag[4] = {
"#LT#LT2#GT#GT",
"#LT#LT4#GT#GT",
"#LT#LT6#GT#GT",
"#LT#LT8#GT#GT"};
3533 TString cumulantFlag[4] = {
"QC{2}",
"QC{4}",
"QC{6}",
"QC{8}"};
3537 TString bootstrapCorrelationsName =
"fBootstrapCorrelations";
3541 for(
Int_t ci=0;ci<4;ci++)
3551 TString bootstrapCumulantsName =
"fBootstrapCumulants";
3555 for(
Int_t co=0;co<4;co++)
3570 sMultiplicity =
"# RPs";
3573 sMultiplicity =
"Reference multiplicity (from ESD)";
3576 sMultiplicity =
"# POIs";
3581 TString bootstrapCorrelationsVsMName =
"fBootstrapCorrelationsVsM";
3583 for(
Int_t ci=0;ci<4;ci++)
3585 fBootstrapCorrelationsVsM[ci] =
new TProfile2D(Form(
"%s, %s",bootstrapCorrelationsVsMName.Data(),correlationFlag[ci].Data()),
3586 Form(
"Bootstrap Correlations Vs. M, %s",correlationFlag[ci].
Data()),
3597 TString bootstrapCumulantsVsMName =
"fBootstrapCumulantsVsM";
3599 for(
Int_t co=0;co<4;co++)
3602 Form(
"Bootstrap Cumulants Vs. M, %s",cumulantFlag[co].
Data()),
3628 TString mixedHarmonicsFlagsName =
"fMixedHarmonicsFlags";
3630 fMixedHarmonicsFlags =
new TProfile(mixedHarmonicsFlagsName.Data(),
"Flags for Mixed Harmonics",4,0,4);
3646 TString s2pCorrelationsName =
"f2pCorrelations";
3648 f2pCorrelations =
new TProfile(s2pCorrelationsName.Data(),Form(
"2-particle correlations (n = %d)",
fHarmonic),6,0,6,
"s");
3663 TString s3pCorrelationsName =
"f3pCorrelations";
3665 f3pCorrelations =
new TProfile(s3pCorrelationsName.Data(),Form(
"3-particle correlations (n = %d)",
fHarmonic),10,0,10,
"s");
3686 TString s4pCorrelationsName =
"f4pCorrelations";
3688 f4pCorrelations =
new TProfile(s4pCorrelationsName.Data(),Form(
"4-particle correlations (n = %d)",
fHarmonic),45,0,45,
"s");
3747 TString s5pCorrelationsName =
"f5pCorrelations";
3749 f5pCorrelations =
new TProfile(s5pCorrelationsName.Data(),Form(
"5-particle correlations (n = %d)",
fHarmonic),87,0,87,
"s");
3850 TString s6pCorrelationsName =
"f6pCorrelations";
3852 f6pCorrelations =
new TProfile(s6pCorrelationsName.Data(),Form(
"6-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3861 TString s7pCorrelationsName =
"f7pCorrelations";
3863 f7pCorrelations =
new TProfile(s7pCorrelationsName.Data(),Form(
"7-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3872 TString s8pCorrelationsName =
"f8pCorrelations";
3874 f8pCorrelations =
new TProfile(s8pCorrelationsName.Data(),Form(
"8-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3919 TString mixedHarmonicEventWeightsName =
"fMixedHarmonicEventWeights";
3921 TString powerFlag[2] = {
"linear",
"quadratic"};
3922 for(
Int_t power=0;power<2;power++)
3924 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.);
3938 }
else if (power == 1)
3953 TString mixedHarmonicProductOfEventWeightsName =
"fMixedHarmonicProductOfEventWeights";
3954 mixedHarmonicProductOfEventWeightsName +=
fAnalysisLabel->Data();
3959 for(
Int_t b=1;b<=8;b++)
3967 TString mixedHarmonicProductOfCorrelationsName =
"fMixedHarmonicProductOfCorrelations";
3968 mixedHarmonicProductOfCorrelationsName +=
fAnalysisLabel->Data();