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 fCRCQVecWeightsList(NULL),
299 fCRCZDCCalibList(NULL),
300 fCRCZDCResList(NULL),
305 fCRCZDCRbRList(NULL),
313 fFlowSPZDCList(NULL),
318 fFlowQCDeltaEta(0.4),
324 fQAZDCCutsFlag(kTRUE),
332 fHistList =
new TList();
333 fHistList->SetName(
"cobjQC");
334 fHistList->SetOwner(kTRUE);
337 fTempList =
new TList();
338 fTempList->SetName(
"temp");
339 fTempList->SetOwner(kTRUE);
342 fMultiplicityWeight =
new TString(
"combinations");
345 fAnalysisLabel =
new TString();
348 this->InitializeArraysForIntFlow();
349 this->InitializeArraysForDiffFlow();
350 this->InitializeArraysForDistributions();
351 this->InitializeArraysForVarious();
352 this->InitializeArraysForNestedLoops();
353 this->InitializeArraysForMixedHarmonics();
354 this->InitializeArraysForControlHistograms();
355 this->InitializeArraysForBootstrap();
363 this->InitializeCostantsForCRC();
364 this->InitializeArraysForParticleWeights();
365 this->InitializeArraysForCRC();
366 this->InitializeArraysForCRCVZ();
367 this->InitializeArraysForCRCZDC();
368 this->InitializeArraysForCRC2();
369 this->InitializeArraysForQVec();
370 this->InitializeArraysForCRCPt();
371 this->InitializeArraysForCME();
372 this->InitializeArraysForFlowEbE();
373 this->InitializeArraysForFlowQC();
374 this->InitializeArraysForFlowQCHighOrders();
375 this->InitializeArraysForFlowSPZDC();
376 this->InitializeArraysForFlowSPVZ();
377 this->InitializeArraysForEbEFlow();
419 Bool_t oldHistAddStatus = TH1::AddDirectoryStatus();
420 TH1::AddDirectory(kFALSE);
473 TH1::AddDirectory(oldHistAddStatus);
514 Int_t nCounterNoRPs = 0;
551 if(fRunBin<0 || fRunBin>=
fCRCnRun) {
return;}
553 if(fCenBin<0 || fCenBin>=
fCRCnCen) {
return;}
599 if(QMC>0. && sqrt(QCRe*QCRe+QCIm*QCIm)>1.E-6) {
603 if(QMA>0. && sqrt(QARe*QARe+QAIm*QAIm)>1.E-6) {
609 if(QMC>0. && sqrt(QCRe*QCRe+QCIm*QCIm)>1.E-6) {
613 if(QMA>0. && sqrt(QARe*QARe+QAIm*QAIm)>1.E-6) {
635 if(QMC>0. && sqrt(QCRe*QCRe+QCIm*QCIm)>1.E-6) {
638 if(QMA>0. && sqrt(QARe*QARe+QAIm*QAIm)>1.E-6) {
641 if(QMC>0. && QMA>0. && sqrt(QCRe*QCRe+QCIm*QCIm)>1.E-6 && sqrt(QARe*QARe+QAIm*QAIm)>1.E-6) {
674 AliWarning(Form(
"WARNING: cenphieta weights not found for run %d! \n",
fRunNum));
681 AliWarning(Form(
"WARNING: pch cenphieta weights not found for run %d! \n",
fRunNum));
686 AliWarning(Form(
"WARNING: nch cenphieta weights not found for run %d! \n",
fRunNum));
694 AliWarning(Form(
"WARNING: cenphieta weights vtxdep not found for run %d! \n",
fRunNum));
711 for(
Int_t i=0;i<nPrim;i++) {
721 dPhi = aftsTrack->
Phi();
722 dPt = aftsTrack->
Pt();
723 dEta = aftsTrack->
Eta();
724 dCharge = aftsTrack->
Charge();
729 cw = (dCharge > 0. ? 0 : 1);
752 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
758 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
763 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
764 if(wt==0.) wPhiEta = 0.;
768 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
777 for(
Int_t m=0;m<12;m++)
779 for(
Int_t k=0;k<9;k++)
781 (*fReQ)(m,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1)*n*dPhi);
782 (*fImQ)(m,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1)*n*dPhi);
786 for(
Int_t p=0;p<8;p++)
788 for(
Int_t k=0;k<9;k++)
790 (*fSpk)(p,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k);
799 for(
Int_t k=0;k<9;k++)
801 for(
Int_t m=0;m<4;m++)
807 fReRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
808 fImRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
811 fs1dEBE[0][pe][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
817 fReRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
818 fImRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
821 fs2dEBE[0][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
830 for(
Int_t k=0;k<9;k++)
832 for(
Int_t m=0;m<4;m++)
838 fReRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
839 fImRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
842 fs1dEBE[2][pe][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
848 fReRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
849 fImRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
852 fs2dEBE[2][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
888 dPhi = aftsTrack->
Phi();
889 dPt = aftsTrack->
Pt();
890 dEta = aftsTrack->
Eta();
891 dCharge = aftsTrack->
Charge();
896 cw = (dCharge > 0. ? 0 : 1);
919 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
925 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
931 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
935 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
940 if(dPhi>2.136283 && dPhi<2.324779)
continue;
951 for(
Int_t k=0;k<9;k++)
953 for(
Int_t m=0;m<4;m++)
959 fReRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
960 fImRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
965 fReRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
966 fImRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
974 fCRCQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
975 fCRCQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
976 fCRCMult[cw][h]->Fill(dEta,wPhiEta);
978 fCRC2QRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
979 fCRC2QIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
980 fCRC2Mul[cw][h]->Fill(dEta,wPhiEta);
982 fCRCZDCQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
983 fCRCZDCQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
987 fCRC2QRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
988 fCRC2QIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
993 fCRCZDCQRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
994 fCRCZDCQIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
997 fCRCZDCQRe[3][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
998 fCRCZDCQIm[3][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
1006 if(weraw > 0.) SpecWeig = 1./weraw;
1008 fCMEQRe[cw][h]->Fill(dEta,SpecWeig*wPhiEta*TMath::Cos((h+1.)*dPhi));
1009 fCMEQIm[cw][h]->Fill(dEta,SpecWeig*wPhiEta*TMath::Sin((h+1.)*dPhi));
1010 fCMEMult[cw][h]->Fill(dEta,SpecWeig*wPhiEta);
1011 fCMEQRe[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.)*TMath::Cos((h+1.)*dPhi));
1012 fCMEQIm[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.)*TMath::Sin((h+1.)*dPhi));
1013 fCMEMult[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.));
1029 fPOIPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1030 fPOIPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1033 fPOIPtDiffQReCh[cw][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1034 fPOIPtDiffQImCh[cw][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1037 fPOIPhiDiffQRe[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1038 fPOIPhiDiffQIm[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1042 Int_t keta = (dEta<0.?0:1);
1043 fPOIPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1044 fPOIPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1046 fPOIPhiDiffQReEG[keta][k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1047 fPOIPhiDiffQImEG[keta][k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1051 }
else if(fFlowQCDeltaEta<0. && fFlowQCDeltaEta>-1.) {
1054 fPOIPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1055 fPOIPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1058 fPOIPhiDiffQRe[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1059 fPOIPhiDiffQIm[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1064 if((dEta>0. && dEta<0.4-boundetagap/2.) || (dEta>0.4+boundetagap/2. && dEta<0.8)) {
1066 if(dEta>0. && dEta<0.4-boundetagap/2.) keta = 0;
1068 fPOIPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1069 fPOIPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1077 }
else if(fFlowQCDeltaEta<-1. && fFlowQCDeltaEta>-2.) {
1080 fPOIPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1081 fPOIPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1084 fPOIPhiDiffQRe[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1085 fPOIPhiDiffQIm[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1090 if((dEta<0. && dEta>-0.4+boundetagap/2.) || (dEta<-0.4-boundetagap/2. && dEta>-0.8)) {
1092 if(dEta<0. && dEta>-0.4+boundetagap/2.) keta = 0;
1094 fPOIPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1095 fPOIPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1108 fEtaDiffQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
1109 fEtaDiffQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
1122 printf(
"\n WARNING (QC): No particle (i.e. aftsTrack is a NULL pointer in AFAWQC::Make())!!!!\n\n");
1130 for(
Int_t p=0;p<8;p++)
1132 for(
Int_t k=0;k<9;k++)
1134 (*fSpk)(p,k)=pow((*
fSpk)(p,k),p+1);
1563 cout<<
"Skipping the event because multiplicity is "<<nPrim<<
". Too high to evaluate nested loops!"<<endl;
1567 cout<<
"Skipping the event because multiplicity is "<<nPrim<<
"."<<endl;
1703 cosP1n = dReQ1n/dMult;
1721 cosP1nP1n = (pow(dReQ1n,2)-pow(dImQ1n,2)-dReQ2n)/(dMult*(dMult-1));
1722 cosP2nM1n = (dReQ2n*dReQ1n+dImQ2n*dImQ1n-dReQ1n)/(dMult*(dMult-1));
1746 cosP1nM1nM1n = (dReQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2))-dReQ1n*dReQ2n-dImQ1n*dImQ2n-2.*(dMult-1)*dReQ1n)
1747 / (dMult*(dMult-1)*(dMult-2));
1812 sinP1n = dImQ1n/dMult;
1829 sinP1nP1n = (2.*dReQ1n*dImQ1n-dImQ2n)/(dMult*(dMult-1));
1830 sinP2nM1n = (dImQ2n*dReQ1n-dReQ2n*dImQ1n-dImQ1n)/(dMult*(dMult-1));
1854 sinP1nM1nM1n = (-dImQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2))+dReQ1n*dImQ2n-dImQ1n*dReQ2n+2.*(dMult-1)*dImQ1n)
1855 / (dMult*(dMult-1)*(dMult-2));
1885 if(outputListHistos)
1890 printf(
"\n WARNING (QC): fHistList is NULL in AFAWQC::GOH() !!!!\n\n");
1918 printf(
"\n WARNING (QC): outputListHistos is NULL in AFAWQC::GOH() !!!!\n\n");
1930 Int_t nBinsPt = profilePtEta->GetNbinsX();
1931 Double_t dPtMin = (profilePtEta->GetXaxis())->GetXmin();
1932 Double_t dPtMax = (profilePtEta->GetXaxis())->GetXmax();
1934 Int_t nBinsEta = profilePtEta->GetNbinsY();
1936 TProfile *profilePt =
new TProfile(
"",
"",nBinsPt,dPtMin,dPtMax);
1938 for(
Int_t p=1;p<=nBinsPt;p++)
1946 for(
Int_t e=1;e<=nBinsEta;e++)
1948 contentPt += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
1949 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1950 entryPt += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1952 sum1 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
1953 * (pow(profilePtEta->GetBinError(profilePtEta->GetBin(p,e)),2.)
1954 + pow(profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)),2.));
1955 sum2 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1956 sum3 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
1957 * (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)));
1959 if(sum2>0. && sum1/sum2-pow(sum3/sum2,2.) > 0.)
1961 spreadPt = pow(sum1/sum2-pow(sum3/sum2,2.),0.5);
1963 profilePt->SetBinContent(p,contentPt);
1964 profilePt->SetBinEntries(p,entryPt);
1966 profilePt->SetBinError(p,spreadPt);
1983 Int_t nBinsEta = profilePtEta->GetNbinsY();
1984 Double_t dEtaMin = (profilePtEta->GetYaxis())->GetXmin();
1985 Double_t dEtaMax = (profilePtEta->GetYaxis())->GetXmax();
1987 Int_t nBinsPt = profilePtEta->GetNbinsX();
1989 TProfile *profileEta =
new TProfile(
"",
"",nBinsEta,dEtaMin,dEtaMax);
1991 for(
Int_t e=1;e<=nBinsEta;e++)
1995 for(
Int_t p=1;p<=nBinsPt;p++)
1997 contentEta += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
1998 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1999 entryEta += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
2001 profileEta->SetBinContent(e,contentEta);
2002 profileEta->SetBinEntries(e,entryEta);
2022 for(
Int_t b=0;b<4;b++)
2033 }
else if(type ==
"RP")
2043 }
else if(type ==
"POI")
2055 for(
Int_t b=0;b<4;b++)
2064 TString subtitle2 =
" (rebinned in M)";
2066 if(type !=
"RF, rebinned in M")
2070 subtitle.Append(type);
2071 subtitle.Append(
", without weights)");
2074 subtitle.Append(type);
2075 subtitle.Append(
", with weights)");
2081 subtitle.Append(
"RF");
2082 subtitle.Append(
", without weights)");
2085 subtitle.Append(
"RF");
2086 subtitle.Append(
", with weights)");
2091 cout<<
"*************************************"<<endl;
2092 cout<<
"*************************************"<<endl;
2093 cout<<title.Data()<<endl;
2094 cout<<subtitle.Data()<<endl;
2095 if(type ==
"RF, rebinned in M"){cout<<subtitle2.Data()<<endl;}
2098 for(
Int_t i=0;i<4;i++)
2100 cout<<
" v_"<<n<<
"{"<<2*(i+1)<<
"} = "<<dVn[i]<<
" +/- "<<dVnErr[i]<<endl;
2108 cout<<
" detector bias (corrected for): "<<endl;
2111 cout<<
" detector bias (not corrected for):"<<endl;
2117 if(type ==
"RF" || type ==
"RF, rebinned in M")
2121 else if (type ==
"RP")
2125 else if (type ==
"POI")
2130 cout<<
"*************************************"<<endl;
2131 cout<<
"*************************************"<<endl;
2141 TFile *output =
new TFile(outputFileName.Data(),
"RECREATE");
2157 outputFileName->Write(outputFileName->GetName(), TObject::kSingleKey);
2170 TString commonHistsName =
"AliFlowCommonHistQC";
2178 TString commonHists2ndOrderName =
"AliFlowCommonHist2ndOrderQC";
2183 TString commonHists4thOrderName =
"AliFlowCommonHist4thOrderQC";
2188 TString commonHists6thOrderName =
"AliFlowCommonHist6thOrderQC";
2193 TString commonHists8thOrderName =
"AliFlowCommonHist8thOrderQC";
2201 TString commonHistResults2ndOrderName =
"AliFlowCommonHistResults2ndOrderQC";
2206 TString commonHistResults4thOrderName =
"AliFlowCommonHistResults4thOrderQC";
2211 TString commonHistResults6thOrderName =
"AliFlowCommonHistResults6thOrderQC";
2216 TString commonHistResults8thOrderName =
"AliFlowCommonHistResults8thOrderQC";
2231 printf(
"\n WARNING (QC): fWeightsList is NULL in AFAWQC::BAFWH() !!!! \n\n");
2235 TString fUseParticleWeightsName =
"fUseParticleWeightsQC";
2237 fUseParticleWeights =
new TProfile(fUseParticleWeightsName.Data(),
"0 = particle weight not used, 1 = particle weight used ",7,0,7);
2428 TF1 *CenFit =
new TF1(
"CenFit",
"pol0", 0., 100.);
2431 Double_t CenAv = CenFit->GetParameter(0);
2443 Double_t CenAv = CenFit->GetParameter(0);
2445 Double_t SemiCenAv = CenFit->GetParameter(0);
2471 TString sinCosFlag[2] = {
"sin",
"cos"};
2472 TString powerFlag[2] = {
"linear",
"quadratic"};
2475 TString intFlowFlagsName =
"fIntFlowFlags";
2477 fIntFlowFlags =
new TProfile(intFlowFlagsName.Data(),
"Flags for Integrated Flow",20,0.,20.);
2483 fIntFlowFlags->GetXaxis()->SetBinLabel(1,
"Particle Weights");
2485 fIntFlowFlags->GetXaxis()->SetBinLabel(3,
"Corrected for NUA?");
2486 fIntFlowFlags->GetXaxis()->SetBinLabel(4,
"Print RF results");
2487 fIntFlowFlags->GetXaxis()->SetBinLabel(5,
"Print RP results");
2488 fIntFlowFlags->GetXaxis()->SetBinLabel(6,
"Print POI results");
2489 fIntFlowFlags->GetXaxis()->SetBinLabel(7,
"Print RF (rebinned in M) results");
2490 fIntFlowFlags->GetXaxis()->SetBinLabel(8,
"Corrected for NUA vs M?");
2491 fIntFlowFlags->GetXaxis()->SetBinLabel(9,
"Propagate errors to v_{n} from correlations?");
2492 fIntFlowFlags->GetXaxis()->SetBinLabel(10,
"Calculate cumulants vs M");
2493 fIntFlowFlags->GetXaxis()->SetBinLabel(11,
"fMinimumBiasReferenceFlow");
2494 fIntFlowFlags->GetXaxis()->SetBinLabel(12,
"fForgetAboutCovariances");
2496 fIntFlowFlags->GetXaxis()->SetBinLabel(14,
"fFillMultipleControlHistograms");
2497 fIntFlowFlags->GetXaxis()->SetBinLabel(15,
"Calculate all correlations vs M");
2498 fIntFlowFlags->GetXaxis()->SetBinLabel(16,
"fMultiplicityIs");
2500 fIntFlowFlags->GetXaxis()->SetBinLabel(18,
"fUse2DHistograms");
2501 fIntFlowFlags->GetXaxis()->SetBinLabel(19,
"fFillProfilesVsMUsingWeights");
2502 fIntFlowFlags->GetXaxis()->SetBinLabel(20,
"fUseQvectorTerms");
2507 fReQ =
new TMatrixD(12,9);
2508 fImQ =
new TMatrixD(12,9);
2509 fSpk =
new TMatrixD(8,9);
2511 TString intFlowCorrelationsEBEName =
"fIntFlowCorrelationsEBE";
2515 TString intFlowEventWeightsForCorrelationsEBEName =
"fIntFlowEventWeightsForCorrelationsEBE";
2516 intFlowEventWeightsForCorrelationsEBEName +=
fAnalysisLabel->Data();
2519 TString intFlowCorrelationsAllEBEName =
"fIntFlowCorrelationsAllEBE";
2524 TString fIntFlowCorrectionTermsForNUAEBEName =
"fIntFlowCorrectionTermsForNUAEBE";
2526 for(
Int_t sc=0;sc<2;sc++)
2528 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);
2531 TString fIntFlowEventWeightForCorrectionTermsForNUAEBEName =
"fIntFlowEventWeightForCorrectionTermsForNUAEBE";
2532 fIntFlowEventWeightForCorrectionTermsForNUAEBEName +=
fAnalysisLabel->Data();
2533 for(
Int_t sc=0;sc<2;sc++)
2539 TString avMultiplicityName =
"fAvMultiplicity";
2541 fAvMultiplicity =
new TProfile(avMultiplicityName.Data(),
"Average multiplicities of reference particles (RPs)",9,0,9);
2558 TString correlationFlag[4] = {
"#LT#LT2#GT#GT",
"#LT#LT4#GT#GT",
"#LT#LT6#GT#GT",
"#LT#LT8#GT#GT"};
2559 TString intFlowCorrelationsProName =
"fIntFlowCorrelationsPro";
2561 fIntFlowCorrelationsPro =
new TProfile(intFlowCorrelationsProName.Data(),
"Average correlations for all events",4,0,4,
"s");
2567 for(
Int_t b=0;b<4;b++)
2573 TString squaredCorrelationFlag[4] = {
"#LT#LT2#GT^{2}#GT",
"#LT#LT4#GT^{2}#GT",
"#LT#LT6#GT^{2}#GT",
"#LT#LT8#GT^{2}#GT"};
2574 TString intFlowSquaredCorrelationsProName =
"fIntFlowSquaredCorrelationsPro";
2582 for(
Int_t b=0;b<4;b++)
2589 for(
Int_t ci=0;ci<4;ci++)
2592 TString intFlowCorrelationsVsMProName =
"fIntFlowCorrelationsVsMPro";
2594 fIntFlowCorrelationsVsMPro[ci] =
new TProfile(Form(
"%s, %s",intFlowCorrelationsVsMProName.Data(),correlationFlag[ci].Data()),
2595 Form(
"%s vs multiplicity",correlationFlag[ci].
Data()),
2611 TString intFlowSquaredCorrelationsVsMProName =
"fIntFlowSquaredCorrelationsVsMPro";
2614 Form(
"%s vs multiplicity",squaredCorrelationFlag[ci].
Data()),
2632 TString intFlowCorrelationsAllProName =
"fIntFlowCorrelationsAllPro";
2634 fIntFlowCorrelationsAllPro =
new TProfile(intFlowCorrelationsAllProName.Data(),
"Average all correlations for all events",64,0,64);
2740 fIntFlowCorrelationsAllVsMPro[30] =
new TProfile(
"eight1n1n1n1n1n1n1n1n",
"#LT#LT8#GT#GT_{n,n,n,n|n,n,n,n}",
fnBinsMult,
fMinMult,
fMaxMult);
2774 for(
Int_t n=0;n<63;n++)
2796 TString intFlowExtraCorrelationsProName =
"fIntFlowExtraCorrelationsPro";
2798 fIntFlowExtraCorrelationsPro =
new TProfile(intFlowExtraCorrelationsProName.Data(),
"Average extra correlations for all events",100,0,100,
"s");
2809 TString productFlag[6] = {
"#LT#LT2#GT#LT4#GT#GT",
"#LT#LT2#GT#LT6#GT#GT",
"#LT#LT2#GT#LT8#GT#GT",
2810 "#LT#LT4#GT#LT6#GT#GT",
"#LT#LT4#GT#LT8#GT#GT",
"#LT#LT6#GT#LT8#GT#GT"};
2811 TString intFlowProductOfCorrelationsProName =
"fIntFlowProductOfCorrelationsPro";
2818 for(
Int_t b=0;b<6;b++)
2827 TString intFlowProductOfCorrelationsVsMProName =
"fIntFlowProductOfCorrelationsVsMPro";
2828 intFlowProductOfCorrelationsVsMProName +=
fAnalysisLabel->Data();
2832 Form(
"%s versus multiplicity",productFlag[
pi].
Data()),
2848 TString intFlowProductOfCorrectionTermsForNUAProName =
"fIntFlowProductOfCorrectionTermsForNUAPro";
2849 intFlowProductOfCorrectionTermsForNUAProName +=
fAnalysisLabel->Data();
2884 for(
Int_t sc=0;sc<2;sc++)
2886 TString intFlowCorrectionTermsForNUAProName =
"fIntFlowCorrectionTermsForNUAPro";
2888 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");
2901 TString correctionTermFlag[4] = {
"(n(phi1))",
"(n(phi1+phi2))",
"(n(phi1-phi2-phi3))",
"(n(2phi1-phi2))"};
2902 for(
Int_t ci=0;ci<4;ci++)
2904 TString intFlowCorrectionTermsForNUAVsMProName =
"fIntFlowCorrectionTermsForNUAVsMPro";
2905 intFlowCorrectionTermsForNUAVsMProName +=
fAnalysisLabel->Data();
2906 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");
2914 TString intFlowCorrelationsHistName =
"fIntFlowCorrelationsHist";
2929 for(
Int_t ci=0;ci<4;ci++)
2931 TString intFlowCorrelationsVsMHistName =
"fIntFlowCorrelationsVsMHist";
2934 Form(
"%s vs multiplicity",correlationFlag[ci].
Data()),
2951 TString intFlowCorrelationsAllHistName =
"fIntFlowCorrelationsAllHist";
2992 for(
Int_t sc=0;sc<2;sc++)
2994 TString intFlowCorrectionTermsForNUAHistName =
"fIntFlowCorrectionTermsForNUAHist";
2996 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);
3008 TString intFlowCovariancesName =
"fIntFlowCovariances";
3010 fIntFlowCovariances =
new TH1D(intFlowCovariancesName.Data(),
"Covariances (multiplied with weight dependent prefactor)",6,0,6);
3021 TString intFlowSumOfEventWeightsName =
"fIntFlowSumOfEventWeights";
3023 for(
Int_t power=0;power<2;power++)
3025 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);
3034 }
else if (power == 1)
3044 TString intFlowSumOfProductOfEventWeightsName =
"fIntFlowSumOfProductOfEventWeights";
3060 TString intFlowCovariancesVsMName =
"fIntFlowCovariancesVsM";
3062 TString covarianceFlag[6] = {
"Cov(<2>,<4>)",
"Cov(<2>,<6>)",
"Cov(<2>,<8>)",
"Cov(<4>,<6>)",
"Cov(<4>,<8>)",
"Cov(<6>,<8>)"};
3063 for(
Int_t ci=0;ci<6;ci++)
3066 Form(
"%s vs multiplicity",covarianceFlag[ci].
Data()),
3086 TString intFlowSumOfEventWeightsVsMName =
"fIntFlowSumOfEventWeightsVsM";
3088 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>}"},
3089 {
"#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}"}};
3090 for(
Int_t si=0;si<4;si++)
3092 for(
Int_t power=0;power<2;power++)
3095 Form(
"%s vs multiplicity",sumFlag[power][si].
Data()),
3117 TString intFlowSumOfProductOfEventWeightsVsMName =
"fIntFlowSumOfProductOfEventWeightsVsM";
3118 intFlowSumOfProductOfEventWeightsVsMName +=
fAnalysisLabel->Data();
3119 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>}",
3120 "#sum_{i=1}^{N} w_{<4>} w_{<6>}",
"#sum_{i=1}^{N} w_{<4>} w_{<8>}",
"#sum_{i=1}^{N} w_{<6>} w_{<8>}"};
3124 Form(
"%s versus multiplicity",sopowFlag[
pi].
Data()),
3141 TString intFlowCovariancesNUAName =
"fIntFlowCovariancesNUA";
3143 fIntFlowCovariancesNUA =
new TH1D(intFlowCovariancesNUAName.Data(),
"Covariances for NUA (multiplied with weight dependent prefactor)",27,0,27);
3162 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(16,
"Cov(<cos(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3163 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(17,
"Cov(<cos(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3166 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(20,
"Cov(<sin(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3167 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(21,
"Cov(<sin(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3168 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(22,
"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}+#phi_{2})>)");
3169 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(23,
"Cov(<cos(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3170 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(24,
"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3171 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(25,
"Cov(<sin(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3172 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(26,
"Cov(<sin(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3173 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(27,
"Cov(<cos(#phi_{1}-#phi_{2}-#phi_{3}>,<sin(#phi_{1}-#phi_{2}-#phi_{3}>)");
3176 TString intFlowSumOfEventWeightsNUAName =
"fIntFlowSumOfEventWeightsNUA";
3178 for(
Int_t sc=0;sc<2;sc++)
3180 for(
Int_t power=0;power<2;power++)
3182 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);
3191 }
else if(power == 1)
3195 (
fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(3,Form(
"#sum_{i=1}^{N} w_{<%s(#phi_{1}-#phi_{2}-#phi_{3})>}^{2}",sinCosFlag[sc].
Data()));
3202 TString intFlowSumOfProductOfEventWeightsNUAName =
"fIntFlowSumOfProductOfEventWeightsNUA";
3203 intFlowSumOfProductOfEventWeightsNUAName +=
fAnalysisLabel->Data();
3236 TString cumulantFlag[4] = {
"QC{2}",
"QC{4}",
"QC{6}",
"QC{8}"};
3237 TString intFlowQcumulantsName =
"fIntFlowQcumulants";
3242 fIntFlowQcumulants->SetTitle(
"Reference Q-cumulants (error from non-isotropic terms also propagated)");
3246 for(
Int_t b=0;b<4;b++)
3254 TString intFlowQcumulantsRebinnedInMName =
"fIntFlowQcumulantsRebinnedInM";
3259 for(
Int_t b=0;b<4;b++)
3266 TString intFlowQcumulantsErrorSquaredRatioName =
"fIntFlowQcumulantsErrorSquaredRatio";
3267 intFlowQcumulantsErrorSquaredRatioName +=
fAnalysisLabel->Data();
3271 for(
Int_t b=0;b<4;b++)
3279 TString intFlowQcumulantsVsMName =
"fIntFlowQcumulantsVsM";
3281 for(
Int_t co=0;co<4;co++)
3284 Form(
"%s vs multiplicity",cumulantFlag[co].
Data()),
3301 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)};
3302 TString intFlowName =
"fIntFlow";
3305 fIntFlow =
new TH1D(intFlowName.Data(),
"Reference flow estimates from Q-cumulants",4,0,4);
3308 for(
Int_t b=0;b<4;b++)
3310 (
fIntFlow->GetXaxis())->SetBinLabel(b+1,flowFlag[b].
Data());
3316 TString intFlowRebinnedInMName =
"fIntFlowRebinnedInM";
3318 fIntFlowRebinnedInM =
new TH1D(intFlowRebinnedInMName.Data(),
"Reference flow estimates from Q-cumulants (rebinned in M)",4,0,4);
3321 for(
Int_t b=0;b<4;b++)
3330 TString intFlowVsMName =
"fIntFlowVsM";
3332 for(
Int_t co=0;co<4;co++)
3334 fIntFlowVsM[co] =
new TH1D(Form(
"%s, %s",intFlowVsMName.Data(),flowFlag[co].Data()),
3335 Form(
"%s vs multiplicity",flowFlag[co].
Data()),
3342 fIntFlowVsM[co]->GetXaxis()->SetTitle(
"Reference multiplicity (from ESD)");
3352 TString intFlowDetectorBiasName =
"fIntFlowDetectorBias";
3357 for(
Int_t ci=0;ci<4;ci++)
3359 (
fIntFlowDetectorBias->GetXaxis())->SetBinLabel(ci+1,Form(
"#frac{corrected}{measured} %s",cumulantFlag[ci].
Data()));
3365 TString intFlowDetectorBiasVsMName =
"fIntFlowDetectorBiasVsM";
3367 for(
Int_t ci=0;ci<4;ci++)
3370 Form(
"Quantifying detector bias for %s vs multiplicity",cumulantFlag[ci].
Data()),
3399 TString controlHistogramsFlagsName =
"fControlHistogramsFlags";
3401 fControlHistogramsFlags =
new TProfile(controlHistogramsFlagsName.Data(),
"Flags for Control Histograms",2,0,2);
3415 TString sCorrelationNoRPsVsRefMultName =
"fCorrelationNoRPsVsRefMult";
3426 TString sCorrelationNoPOIsVsRefMultName =
"fCorrelationNoPOIsVsRefMult";
3437 TString sCorrelationNoRPsVsNoPOIsName =
"fCorrelationNoRPsVsNoPOIs";
3448 TString sCorrelation[4] = {
"#LT2#GT",
"#LT4#GT",
"#LT6#GT",
"#LT8#GT"};
3452 sMultiplicity =
"# RPs";
3455 sMultiplicity =
"Reference multiplicity (from ESD)";
3458 sMultiplicity =
"# POIs";
3460 for(
Int_t ci=0;ci<4;ci++)
3472 TString sCorrelationProduct[1] = {
"#LT2#GT#LT4#GT"};
3473 for(
Int_t cpi=0;cpi<1;cpi++)
3487 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}}"};
3488 for(
Int_t qvti=0;qvti<4;qvti++)
3515 TString bootstrapFlagsName =
"fBootstrapFlags";
3517 fBootstrapFlags =
new TProfile(bootstrapFlagsName.Data(),
"Flags for bootstrap",3,0,3);
3529 TString correlationFlag[4] = {
"#LT#LT2#GT#GT",
"#LT#LT4#GT#GT",
"#LT#LT6#GT#GT",
"#LT#LT8#GT#GT"};
3530 TString cumulantFlag[4] = {
"QC{2}",
"QC{4}",
"QC{6}",
"QC{8}"};
3534 TString bootstrapCorrelationsName =
"fBootstrapCorrelations";
3538 for(
Int_t ci=0;ci<4;ci++)
3548 TString bootstrapCumulantsName =
"fBootstrapCumulants";
3552 for(
Int_t co=0;co<4;co++)
3567 sMultiplicity =
"# RPs";
3570 sMultiplicity =
"Reference multiplicity (from ESD)";
3573 sMultiplicity =
"# POIs";
3578 TString bootstrapCorrelationsVsMName =
"fBootstrapCorrelationsVsM";
3580 for(
Int_t ci=0;ci<4;ci++)
3582 fBootstrapCorrelationsVsM[ci] =
new TProfile2D(Form(
"%s, %s",bootstrapCorrelationsVsMName.Data(),correlationFlag[ci].Data()),
3583 Form(
"Bootstrap Correlations Vs. M, %s",correlationFlag[ci].
Data()),
3594 TString bootstrapCumulantsVsMName =
"fBootstrapCumulantsVsM";
3596 for(
Int_t co=0;co<4;co++)
3599 Form(
"Bootstrap Cumulants Vs. M, %s",cumulantFlag[co].
Data()),
3625 TString mixedHarmonicsFlagsName =
"fMixedHarmonicsFlags";
3627 fMixedHarmonicsFlags =
new TProfile(mixedHarmonicsFlagsName.Data(),
"Flags for Mixed Harmonics",4,0,4);
3643 TString s2pCorrelationsName =
"f2pCorrelations";
3645 f2pCorrelations =
new TProfile(s2pCorrelationsName.Data(),Form(
"2-particle correlations (n = %d)",
fHarmonic),6,0,6,
"s");
3660 TString s3pCorrelationsName =
"f3pCorrelations";
3662 f3pCorrelations =
new TProfile(s3pCorrelationsName.Data(),Form(
"3-particle correlations (n = %d)",
fHarmonic),10,0,10,
"s");
3683 TString s4pCorrelationsName =
"f4pCorrelations";
3685 f4pCorrelations =
new TProfile(s4pCorrelationsName.Data(),Form(
"4-particle correlations (n = %d)",
fHarmonic),45,0,45,
"s");
3744 TString s5pCorrelationsName =
"f5pCorrelations";
3746 f5pCorrelations =
new TProfile(s5pCorrelationsName.Data(),Form(
"5-particle correlations (n = %d)",
fHarmonic),87,0,87,
"s");
3847 TString s6pCorrelationsName =
"f6pCorrelations";
3849 f6pCorrelations =
new TProfile(s6pCorrelationsName.Data(),Form(
"6-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3858 TString s7pCorrelationsName =
"f7pCorrelations";
3860 f7pCorrelations =
new TProfile(s7pCorrelationsName.Data(),Form(
"7-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3869 TString s8pCorrelationsName =
"f8pCorrelations";
3871 f8pCorrelations =
new TProfile(s8pCorrelationsName.Data(),Form(
"8-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3916 TString mixedHarmonicEventWeightsName =
"fMixedHarmonicEventWeights";
3918 TString powerFlag[2] = {
"linear",
"quadratic"};
3919 for(
Int_t power=0;power<2;power++)
3921 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.);
3935 }
else if (power == 1)
3950 TString mixedHarmonicProductOfEventWeightsName =
"fMixedHarmonicProductOfEventWeights";
3951 mixedHarmonicProductOfEventWeightsName +=
fAnalysisLabel->Data();
3956 for(
Int_t b=1;b<=8;b++)
3964 TString mixedHarmonicProductOfCorrelationsName =
"fMixedHarmonicProductOfCorrelations";
3965 mixedHarmonicProductOfCorrelationsName +=
fAnalysisLabel->Data();