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 fUsePhiEtaCuts(kFALSE),
273 fRecenterZDC(kFALSE),
275 fUseCRCRecenter(kFALSE),
285 fCorrWeightTPC(kUnit),
286 fCorrWeightVZ(kUnit),
287 fCorrWeightZDC(kUnit),
290 fCRCCenBinWidth(CenWidth),
291 fCRCIntRbRList(NULL),
294 fInteractionRate(kAll),
295 fSelectCharge(kAllCh),
297 fCRCQVecWeightsList(NULL),
298 fCRCZDCCalibList(NULL),
299 fCRCZDCResList(NULL),
304 fCRCZDCRbRList(NULL),
312 fFlowSPZDCList(NULL),
317 fFlowQCDeltaEta(0.4),
323 fQAZDCCutsFlag(kTRUE),
330 fHistList =
new TList();
331 fHistList->SetName(
"cobjQC");
332 fHistList->SetOwner(kTRUE);
335 fTempList =
new TList();
336 fTempList->SetName(
"temp");
337 fTempList->SetOwner(kTRUE);
340 fMultiplicityWeight =
new TString(
"combinations");
343 fAnalysisLabel =
new TString();
346 this->InitializeArraysForIntFlow();
347 this->InitializeArraysForDiffFlow();
348 this->InitializeArraysForDistributions();
349 this->InitializeArraysForVarious();
350 this->InitializeArraysForNestedLoops();
351 this->InitializeArraysForMixedHarmonics();
352 this->InitializeArraysForControlHistograms();
353 this->InitializeArraysForBootstrap();
358 this->InitializeCostantsForCRC();
359 this->InitializeArraysForParticleWeights();
360 this->InitializeArraysForCRC();
361 this->InitializeArraysForCRCVZ();
362 this->InitializeArraysForCRCZDC();
363 this->InitializeArraysForCRC2();
364 this->InitializeArraysForQVec();
365 this->InitializeArraysForCRCPt();
366 this->InitializeArraysForCME();
367 this->InitializeArraysForFlowEbE();
368 this->InitializeArraysForFlowQC();
369 this->InitializeArraysForFlowQCHighOrders();
370 this->InitializeArraysForFlowSPZDC();
371 this->InitializeArraysForFlowSPVZ();
372 this->InitializeArraysForEbEFlow();
414 Bool_t oldHistAddStatus = TH1::AddDirectoryStatus();
415 TH1::AddDirectory(kFALSE);
468 TH1::AddDirectory(oldHistAddStatus);
509 Int_t nCounterNoRPs = 0;
546 if(fRunBin<0 || fRunBin>=
fCRCnRun) {
return;}
548 if(fCenBin<0 || fCenBin>=
fCRCnCen) {
return;}
600 AliWarning(Form(
"WARNING: cenphieta weights not found for run %d! \n",
fRunNum));
607 AliWarning(Form(
"WARNING: pch cenphieta weights not found for run %d! \n",
fRunNum));
612 AliWarning(Form(
"WARNING: nch cenphieta weights not found for run %d! \n",
fRunNum));
620 AliWarning(Form(
"WARNING: cenphieta weights vtxdep not found for run %d! \n",
fRunNum));
637 for(
Int_t i=0;i<nPrim;i++) {
647 dPhi = aftsTrack->
Phi();
648 dPt = aftsTrack->
Pt();
649 dEta = aftsTrack->
Eta();
650 dCharge = aftsTrack->
Charge();
655 cw = (dCharge > 0. ? 0 : 1);
678 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
684 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
689 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
690 if(wt==0.) wPhiEta = 0.;
694 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
703 for(
Int_t m=0;m<12;m++)
705 for(
Int_t k=0;k<9;k++)
707 (*fReQ)(m,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1)*n*dPhi);
708 (*fImQ)(m,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1)*n*dPhi);
712 for(
Int_t p=0;p<8;p++)
714 for(
Int_t k=0;k<9;k++)
716 (*fSpk)(p,k)+=pow(wPhiEta*wPhi*wPt*wEta*wTrack,k);
725 for(
Int_t k=0;k<9;k++)
727 for(
Int_t m=0;m<4;m++)
733 fReRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
734 fImRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
737 fs1dEBE[0][pe][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
743 fReRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
744 fImRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
747 fs2dEBE[0][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
756 for(
Int_t k=0;k<9;k++)
758 for(
Int_t m=0;m<4;m++)
764 fReRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
765 fImRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
768 fs1dEBE[2][pe][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
774 fReRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
775 fImRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
778 fs2dEBE[2][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k),1.);
814 dPhi = aftsTrack->
Phi();
815 dPt = aftsTrack->
Pt();
816 dEta = aftsTrack->
Eta();
817 dCharge = aftsTrack->
Charge();
822 cw = (dCharge > 0. ? 0 : 1);
845 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
851 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
857 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
861 if(std::isfinite(1./wt)) wPhiEta *= 1./wt;
866 if(dPhi>2.136283 && dPhi<2.324779)
continue;
877 for(
Int_t k=0;k<9;k++)
879 for(
Int_t m=0;m<4;m++)
885 fReRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
886 fImRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
891 fReRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
892 fImRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhiEta*wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
900 fCRCQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
901 fCRCQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
902 fCRCMult[cw][h]->Fill(dEta,wPhiEta);
904 fCRC2QRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
905 fCRC2QIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
906 fCRC2Mul[cw][h]->Fill(dEta,wPhiEta);
908 fCRCZDCQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
909 fCRCZDCQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
913 fCRC2QRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
914 fCRC2QIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
919 fCRCZDCQRe[2][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
920 fCRCZDCQIm[2][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
923 fCRCZDCQRe[3][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
924 fCRCZDCQIm[3][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
932 if(weraw > 0.) SpecWeig = 1./weraw;
934 fCMEQRe[cw][h]->Fill(dEta,SpecWeig*wPhiEta*TMath::Cos((h+1.)*dPhi));
935 fCMEQIm[cw][h]->Fill(dEta,SpecWeig*wPhiEta*TMath::Sin((h+1.)*dPhi));
936 fCMEMult[cw][h]->Fill(dEta,SpecWeig*wPhiEta);
937 fCMEQRe[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.)*TMath::Cos((h+1.)*dPhi));
938 fCMEQIm[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.)*TMath::Sin((h+1.)*dPhi));
939 fCMEMult[2+cw][h]->Fill(dEta,pow(SpecWeig*wPhiEta,2.));
955 fPOIPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
956 fPOIPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
959 fPOIPtDiffQReCh[cw][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
960 fPOIPtDiffQImCh[cw][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
963 fPOIPhiDiffQRe[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
964 fPOIPhiDiffQIm[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
968 Int_t keta = (dEta<0.?0:1);
969 fPOIPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
970 fPOIPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
972 fPOIPhiDiffQReEG[keta][k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
973 fPOIPhiDiffQImEG[keta][k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
977 }
else if(fFlowQCDeltaEta<0. && fFlowQCDeltaEta>-1.) {
980 fPOIPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
981 fPOIPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
984 fPOIPhiDiffQRe[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
985 fPOIPhiDiffQIm[k][h]->Fill(dPhi,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
990 if((dEta>0. && dEta<0.4-boundetagap/2.) || (dEta>0.4+boundetagap/2. && dEta<0.8)) {
992 if(dEta>0. && dEta<0.4-boundetagap/2.) keta = 0;
994 fPOIPtDiffQReEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
995 fPOIPtDiffQImEG[keta][k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1003 }
else if(fFlowQCDeltaEta<-1. && fFlowQCDeltaEta>-2.) {
1006 fPOIPtDiffQRe[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Cos((h+1.)*dPhi));
1007 fPOIPtDiffQIm[k][h]->Fill(dPt,pow(wPhiEta,k)*TMath::Sin((h+1.)*dPhi));
1010 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));
1034 fEtaDiffQRe[cw][h]->Fill(dEta,wPhiEta*TMath::Cos((h+1.)*dPhi));
1035 fEtaDiffQIm[cw][h]->Fill(dEta,wPhiEta*TMath::Sin((h+1.)*dPhi));
1048 printf(
"\n WARNING (QC): No particle (i.e. aftsTrack is a NULL pointer in AFAWQC::Make())!!!!\n\n");
1056 for(
Int_t p=0;p<8;p++)
1058 for(
Int_t k=0;k<9;k++)
1060 (*fSpk)(p,k)=pow((*
fSpk)(p,k),p+1);
1489 cout<<
"Skipping the event because multiplicity is "<<nPrim<<
". Too high to evaluate nested loops!"<<endl;
1493 cout<<
"Skipping the event because multiplicity is "<<nPrim<<
"."<<endl;
1629 cosP1n = dReQ1n/dMult;
1647 cosP1nP1n = (pow(dReQ1n,2)-pow(dImQ1n,2)-dReQ2n)/(dMult*(dMult-1));
1648 cosP2nM1n = (dReQ2n*dReQ1n+dImQ2n*dImQ1n-dReQ1n)/(dMult*(dMult-1));
1672 cosP1nM1nM1n = (dReQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2))-dReQ1n*dReQ2n-dImQ1n*dImQ2n-2.*(dMult-1)*dReQ1n)
1673 / (dMult*(dMult-1)*(dMult-2));
1738 sinP1n = dImQ1n/dMult;
1755 sinP1nP1n = (2.*dReQ1n*dImQ1n-dImQ2n)/(dMult*(dMult-1));
1756 sinP2nM1n = (dImQ2n*dReQ1n-dReQ2n*dImQ1n-dImQ1n)/(dMult*(dMult-1));
1780 sinP1nM1nM1n = (-dImQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2))+dReQ1n*dImQ2n-dImQ1n*dReQ2n+2.*(dMult-1)*dImQ1n)
1781 / (dMult*(dMult-1)*(dMult-2));
1811 if(outputListHistos)
1816 printf(
"\n WARNING (QC): fHistList is NULL in AFAWQC::GOH() !!!!\n\n");
1844 printf(
"\n WARNING (QC): outputListHistos is NULL in AFAWQC::GOH() !!!!\n\n");
1856 Int_t nBinsPt = profilePtEta->GetNbinsX();
1857 Double_t dPtMin = (profilePtEta->GetXaxis())->GetXmin();
1858 Double_t dPtMax = (profilePtEta->GetXaxis())->GetXmax();
1860 Int_t nBinsEta = profilePtEta->GetNbinsY();
1862 TProfile *profilePt =
new TProfile(
"",
"",nBinsPt,dPtMin,dPtMax);
1864 for(
Int_t p=1;p<=nBinsPt;p++)
1872 for(
Int_t e=1;e<=nBinsEta;e++)
1874 contentPt += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
1875 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1876 entryPt += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1878 sum1 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
1879 * (pow(profilePtEta->GetBinError(profilePtEta->GetBin(p,e)),2.)
1880 + pow(profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)),2.));
1881 sum2 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1882 sum3 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
1883 * (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)));
1885 if(sum2>0. && sum1/sum2-pow(sum3/sum2,2.) > 0.)
1887 spreadPt = pow(sum1/sum2-pow(sum3/sum2,2.),0.5);
1889 profilePt->SetBinContent(p,contentPt);
1890 profilePt->SetBinEntries(p,entryPt);
1892 profilePt->SetBinError(p,spreadPt);
1909 Int_t nBinsEta = profilePtEta->GetNbinsY();
1910 Double_t dEtaMin = (profilePtEta->GetYaxis())->GetXmin();
1911 Double_t dEtaMax = (profilePtEta->GetYaxis())->GetXmax();
1913 Int_t nBinsPt = profilePtEta->GetNbinsX();
1915 TProfile *profileEta =
new TProfile(
"",
"",nBinsEta,dEtaMin,dEtaMax);
1917 for(
Int_t e=1;e<=nBinsEta;e++)
1921 for(
Int_t p=1;p<=nBinsPt;p++)
1923 contentEta += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
1924 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1925 entryEta += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1927 profileEta->SetBinContent(e,contentEta);
1928 profileEta->SetBinEntries(e,entryEta);
1948 for(
Int_t b=0;b<4;b++)
1959 }
else if(type ==
"RP")
1969 }
else if(type ==
"POI")
1981 for(
Int_t b=0;b<4;b++)
1990 TString subtitle2 =
" (rebinned in M)";
1992 if(type !=
"RF, rebinned in M")
1996 subtitle.Append(type);
1997 subtitle.Append(
", without weights)");
2000 subtitle.Append(type);
2001 subtitle.Append(
", with weights)");
2007 subtitle.Append(
"RF");
2008 subtitle.Append(
", without weights)");
2011 subtitle.Append(
"RF");
2012 subtitle.Append(
", with weights)");
2017 cout<<
"*************************************"<<endl;
2018 cout<<
"*************************************"<<endl;
2019 cout<<title.Data()<<endl;
2020 cout<<subtitle.Data()<<endl;
2021 if(type ==
"RF, rebinned in M"){cout<<subtitle2.Data()<<endl;}
2024 for(
Int_t i=0;i<4;i++)
2026 cout<<
" v_"<<n<<
"{"<<2*(i+1)<<
"} = "<<dVn[i]<<
" +/- "<<dVnErr[i]<<endl;
2034 cout<<
" detector bias (corrected for): "<<endl;
2037 cout<<
" detector bias (not corrected for):"<<endl;
2043 if(type ==
"RF" || type ==
"RF, rebinned in M")
2047 else if (type ==
"RP")
2051 else if (type ==
"POI")
2056 cout<<
"*************************************"<<endl;
2057 cout<<
"*************************************"<<endl;
2067 TFile *output =
new TFile(outputFileName.Data(),
"RECREATE");
2083 outputFileName->Write(outputFileName->GetName(), TObject::kSingleKey);
2096 TString commonHistsName =
"AliFlowCommonHistQC";
2104 TString commonHists2ndOrderName =
"AliFlowCommonHist2ndOrderQC";
2109 TString commonHists4thOrderName =
"AliFlowCommonHist4thOrderQC";
2114 TString commonHists6thOrderName =
"AliFlowCommonHist6thOrderQC";
2119 TString commonHists8thOrderName =
"AliFlowCommonHist8thOrderQC";
2127 TString commonHistResults2ndOrderName =
"AliFlowCommonHistResults2ndOrderQC";
2132 TString commonHistResults4thOrderName =
"AliFlowCommonHistResults4thOrderQC";
2137 TString commonHistResults6thOrderName =
"AliFlowCommonHistResults6thOrderQC";
2142 TString commonHistResults8thOrderName =
"AliFlowCommonHistResults8thOrderQC";
2157 printf(
"\n WARNING (QC): fWeightsList is NULL in AFAWQC::BAFWH() !!!! \n\n");
2161 TString fUseParticleWeightsName =
"fUseParticleWeightsQC";
2163 fUseParticleWeights =
new TProfile(fUseParticleWeightsName.Data(),
"0 = particle weight not used, 1 = particle weight used ",7,0,7);
2354 TF1 *CenFit =
new TF1(
"CenFit",
"pol0", 0., 100.);
2357 Double_t CenAv = CenFit->GetParameter(0);
2369 Double_t CenAv = CenFit->GetParameter(0);
2371 Double_t SemiCenAv = CenFit->GetParameter(0);
2397 TString sinCosFlag[2] = {
"sin",
"cos"};
2398 TString powerFlag[2] = {
"linear",
"quadratic"};
2401 TString intFlowFlagsName =
"fIntFlowFlags";
2403 fIntFlowFlags =
new TProfile(intFlowFlagsName.Data(),
"Flags for Integrated Flow",20,0.,20.);
2409 fIntFlowFlags->GetXaxis()->SetBinLabel(1,
"Particle Weights");
2411 fIntFlowFlags->GetXaxis()->SetBinLabel(3,
"Corrected for NUA?");
2412 fIntFlowFlags->GetXaxis()->SetBinLabel(4,
"Print RF results");
2413 fIntFlowFlags->GetXaxis()->SetBinLabel(5,
"Print RP results");
2414 fIntFlowFlags->GetXaxis()->SetBinLabel(6,
"Print POI results");
2415 fIntFlowFlags->GetXaxis()->SetBinLabel(7,
"Print RF (rebinned in M) results");
2416 fIntFlowFlags->GetXaxis()->SetBinLabel(8,
"Corrected for NUA vs M?");
2417 fIntFlowFlags->GetXaxis()->SetBinLabel(9,
"Propagate errors to v_{n} from correlations?");
2418 fIntFlowFlags->GetXaxis()->SetBinLabel(10,
"Calculate cumulants vs M");
2419 fIntFlowFlags->GetXaxis()->SetBinLabel(11,
"fMinimumBiasReferenceFlow");
2420 fIntFlowFlags->GetXaxis()->SetBinLabel(12,
"fForgetAboutCovariances");
2422 fIntFlowFlags->GetXaxis()->SetBinLabel(14,
"fFillMultipleControlHistograms");
2423 fIntFlowFlags->GetXaxis()->SetBinLabel(15,
"Calculate all correlations vs M");
2424 fIntFlowFlags->GetXaxis()->SetBinLabel(16,
"fMultiplicityIs");
2426 fIntFlowFlags->GetXaxis()->SetBinLabel(18,
"fUse2DHistograms");
2427 fIntFlowFlags->GetXaxis()->SetBinLabel(19,
"fFillProfilesVsMUsingWeights");
2428 fIntFlowFlags->GetXaxis()->SetBinLabel(20,
"fUseQvectorTerms");
2433 fReQ =
new TMatrixD(12,9);
2434 fImQ =
new TMatrixD(12,9);
2435 fSpk =
new TMatrixD(8,9);
2437 TString intFlowCorrelationsEBEName =
"fIntFlowCorrelationsEBE";
2441 TString intFlowEventWeightsForCorrelationsEBEName =
"fIntFlowEventWeightsForCorrelationsEBE";
2442 intFlowEventWeightsForCorrelationsEBEName +=
fAnalysisLabel->Data();
2445 TString intFlowCorrelationsAllEBEName =
"fIntFlowCorrelationsAllEBE";
2450 TString fIntFlowCorrectionTermsForNUAEBEName =
"fIntFlowCorrectionTermsForNUAEBE";
2452 for(
Int_t sc=0;sc<2;sc++)
2454 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);
2457 TString fIntFlowEventWeightForCorrectionTermsForNUAEBEName =
"fIntFlowEventWeightForCorrectionTermsForNUAEBE";
2458 fIntFlowEventWeightForCorrectionTermsForNUAEBEName +=
fAnalysisLabel->Data();
2459 for(
Int_t sc=0;sc<2;sc++)
2465 TString avMultiplicityName =
"fAvMultiplicity";
2467 fAvMultiplicity =
new TProfile(avMultiplicityName.Data(),
"Average multiplicities of reference particles (RPs)",9,0,9);
2484 TString correlationFlag[4] = {
"#LT#LT2#GT#GT",
"#LT#LT4#GT#GT",
"#LT#LT6#GT#GT",
"#LT#LT8#GT#GT"};
2485 TString intFlowCorrelationsProName =
"fIntFlowCorrelationsPro";
2487 fIntFlowCorrelationsPro =
new TProfile(intFlowCorrelationsProName.Data(),
"Average correlations for all events",4,0,4,
"s");
2493 for(
Int_t b=0;b<4;b++)
2499 TString squaredCorrelationFlag[4] = {
"#LT#LT2#GT^{2}#GT",
"#LT#LT4#GT^{2}#GT",
"#LT#LT6#GT^{2}#GT",
"#LT#LT8#GT^{2}#GT"};
2500 TString intFlowSquaredCorrelationsProName =
"fIntFlowSquaredCorrelationsPro";
2508 for(
Int_t b=0;b<4;b++)
2515 for(
Int_t ci=0;ci<4;ci++)
2518 TString intFlowCorrelationsVsMProName =
"fIntFlowCorrelationsVsMPro";
2520 fIntFlowCorrelationsVsMPro[ci] =
new TProfile(Form(
"%s, %s",intFlowCorrelationsVsMProName.Data(),correlationFlag[ci].Data()),
2521 Form(
"%s vs multiplicity",correlationFlag[ci].
Data()),
2537 TString intFlowSquaredCorrelationsVsMProName =
"fIntFlowSquaredCorrelationsVsMPro";
2540 Form(
"%s vs multiplicity",squaredCorrelationFlag[ci].
Data()),
2558 TString intFlowCorrelationsAllProName =
"fIntFlowCorrelationsAllPro";
2560 fIntFlowCorrelationsAllPro =
new TProfile(intFlowCorrelationsAllProName.Data(),
"Average all correlations for all events",64,0,64);
2666 fIntFlowCorrelationsAllVsMPro[30] =
new TProfile(
"eight1n1n1n1n1n1n1n1n",
"#LT#LT8#GT#GT_{n,n,n,n|n,n,n,n}",
fnBinsMult,
fMinMult,
fMaxMult);
2700 for(
Int_t n=0;n<63;n++)
2722 TString intFlowExtraCorrelationsProName =
"fIntFlowExtraCorrelationsPro";
2724 fIntFlowExtraCorrelationsPro =
new TProfile(intFlowExtraCorrelationsProName.Data(),
"Average extra correlations for all events",100,0,100,
"s");
2735 TString productFlag[6] = {
"#LT#LT2#GT#LT4#GT#GT",
"#LT#LT2#GT#LT6#GT#GT",
"#LT#LT2#GT#LT8#GT#GT",
2736 "#LT#LT4#GT#LT6#GT#GT",
"#LT#LT4#GT#LT8#GT#GT",
"#LT#LT6#GT#LT8#GT#GT"};
2737 TString intFlowProductOfCorrelationsProName =
"fIntFlowProductOfCorrelationsPro";
2744 for(
Int_t b=0;b<6;b++)
2753 TString intFlowProductOfCorrelationsVsMProName =
"fIntFlowProductOfCorrelationsVsMPro";
2754 intFlowProductOfCorrelationsVsMProName +=
fAnalysisLabel->Data();
2758 Form(
"%s versus multiplicity",productFlag[
pi].
Data()),
2774 TString intFlowProductOfCorrectionTermsForNUAProName =
"fIntFlowProductOfCorrectionTermsForNUAPro";
2775 intFlowProductOfCorrectionTermsForNUAProName +=
fAnalysisLabel->Data();
2810 for(
Int_t sc=0;sc<2;sc++)
2812 TString intFlowCorrectionTermsForNUAProName =
"fIntFlowCorrectionTermsForNUAPro";
2814 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");
2827 TString correctionTermFlag[4] = {
"(n(phi1))",
"(n(phi1+phi2))",
"(n(phi1-phi2-phi3))",
"(n(2phi1-phi2))"};
2828 for(
Int_t ci=0;ci<4;ci++)
2830 TString intFlowCorrectionTermsForNUAVsMProName =
"fIntFlowCorrectionTermsForNUAVsMPro";
2831 intFlowCorrectionTermsForNUAVsMProName +=
fAnalysisLabel->Data();
2832 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");
2840 TString intFlowCorrelationsHistName =
"fIntFlowCorrelationsHist";
2855 for(
Int_t ci=0;ci<4;ci++)
2857 TString intFlowCorrelationsVsMHistName =
"fIntFlowCorrelationsVsMHist";
2860 Form(
"%s vs multiplicity",correlationFlag[ci].
Data()),
2877 TString intFlowCorrelationsAllHistName =
"fIntFlowCorrelationsAllHist";
2918 for(
Int_t sc=0;sc<2;sc++)
2920 TString intFlowCorrectionTermsForNUAHistName =
"fIntFlowCorrectionTermsForNUAHist";
2922 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);
2934 TString intFlowCovariancesName =
"fIntFlowCovariances";
2936 fIntFlowCovariances =
new TH1D(intFlowCovariancesName.Data(),
"Covariances (multiplied with weight dependent prefactor)",6,0,6);
2947 TString intFlowSumOfEventWeightsName =
"fIntFlowSumOfEventWeights";
2949 for(
Int_t power=0;power<2;power++)
2951 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);
2960 }
else if (power == 1)
2970 TString intFlowSumOfProductOfEventWeightsName =
"fIntFlowSumOfProductOfEventWeights";
2986 TString intFlowCovariancesVsMName =
"fIntFlowCovariancesVsM";
2988 TString covarianceFlag[6] = {
"Cov(<2>,<4>)",
"Cov(<2>,<6>)",
"Cov(<2>,<8>)",
"Cov(<4>,<6>)",
"Cov(<4>,<8>)",
"Cov(<6>,<8>)"};
2989 for(
Int_t ci=0;ci<6;ci++)
2992 Form(
"%s vs multiplicity",covarianceFlag[ci].
Data()),
3012 TString intFlowSumOfEventWeightsVsMName =
"fIntFlowSumOfEventWeightsVsM";
3014 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>}"},
3015 {
"#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}"}};
3016 for(
Int_t si=0;si<4;si++)
3018 for(
Int_t power=0;power<2;power++)
3021 Form(
"%s vs multiplicity",sumFlag[power][si].
Data()),
3043 TString intFlowSumOfProductOfEventWeightsVsMName =
"fIntFlowSumOfProductOfEventWeightsVsM";
3044 intFlowSumOfProductOfEventWeightsVsMName +=
fAnalysisLabel->Data();
3045 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>}",
3046 "#sum_{i=1}^{N} w_{<4>} w_{<6>}",
"#sum_{i=1}^{N} w_{<4>} w_{<8>}",
"#sum_{i=1}^{N} w_{<6>} w_{<8>}"};
3050 Form(
"%s versus multiplicity",sopowFlag[
pi].
Data()),
3067 TString intFlowCovariancesNUAName =
"fIntFlowCovariancesNUA";
3069 fIntFlowCovariancesNUA =
new TH1D(intFlowCovariancesNUAName.Data(),
"Covariances for NUA (multiplied with weight dependent prefactor)",27,0,27);
3088 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(16,
"Cov(<cos(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3089 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(17,
"Cov(<cos(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3092 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(20,
"Cov(<sin(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3093 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(21,
"Cov(<sin(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3094 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(22,
"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}+#phi_{2})>)");
3095 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(23,
"Cov(<cos(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3096 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(24,
"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3097 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(25,
"Cov(<sin(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
3098 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(26,
"Cov(<sin(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
3099 (
fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(27,
"Cov(<cos(#phi_{1}-#phi_{2}-#phi_{3}>,<sin(#phi_{1}-#phi_{2}-#phi_{3}>)");
3102 TString intFlowSumOfEventWeightsNUAName =
"fIntFlowSumOfEventWeightsNUA";
3104 for(
Int_t sc=0;sc<2;sc++)
3106 for(
Int_t power=0;power<2;power++)
3108 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);
3117 }
else if(power == 1)
3121 (
fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(3,Form(
"#sum_{i=1}^{N} w_{<%s(#phi_{1}-#phi_{2}-#phi_{3})>}^{2}",sinCosFlag[sc].
Data()));
3128 TString intFlowSumOfProductOfEventWeightsNUAName =
"fIntFlowSumOfProductOfEventWeightsNUA";
3129 intFlowSumOfProductOfEventWeightsNUAName +=
fAnalysisLabel->Data();
3162 TString cumulantFlag[4] = {
"QC{2}",
"QC{4}",
"QC{6}",
"QC{8}"};
3163 TString intFlowQcumulantsName =
"fIntFlowQcumulants";
3168 fIntFlowQcumulants->SetTitle(
"Reference Q-cumulants (error from non-isotropic terms also propagated)");
3172 for(
Int_t b=0;b<4;b++)
3180 TString intFlowQcumulantsRebinnedInMName =
"fIntFlowQcumulantsRebinnedInM";
3185 for(
Int_t b=0;b<4;b++)
3192 TString intFlowQcumulantsErrorSquaredRatioName =
"fIntFlowQcumulantsErrorSquaredRatio";
3193 intFlowQcumulantsErrorSquaredRatioName +=
fAnalysisLabel->Data();
3197 for(
Int_t b=0;b<4;b++)
3205 TString intFlowQcumulantsVsMName =
"fIntFlowQcumulantsVsM";
3207 for(
Int_t co=0;co<4;co++)
3210 Form(
"%s vs multiplicity",cumulantFlag[co].
Data()),
3227 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)};
3228 TString intFlowName =
"fIntFlow";
3231 fIntFlow =
new TH1D(intFlowName.Data(),
"Reference flow estimates from Q-cumulants",4,0,4);
3234 for(
Int_t b=0;b<4;b++)
3236 (
fIntFlow->GetXaxis())->SetBinLabel(b+1,flowFlag[b].
Data());
3242 TString intFlowRebinnedInMName =
"fIntFlowRebinnedInM";
3244 fIntFlowRebinnedInM =
new TH1D(intFlowRebinnedInMName.Data(),
"Reference flow estimates from Q-cumulants (rebinned in M)",4,0,4);
3247 for(
Int_t b=0;b<4;b++)
3256 TString intFlowVsMName =
"fIntFlowVsM";
3258 for(
Int_t co=0;co<4;co++)
3260 fIntFlowVsM[co] =
new TH1D(Form(
"%s, %s",intFlowVsMName.Data(),flowFlag[co].Data()),
3261 Form(
"%s vs multiplicity",flowFlag[co].
Data()),
3268 fIntFlowVsM[co]->GetXaxis()->SetTitle(
"Reference multiplicity (from ESD)");
3278 TString intFlowDetectorBiasName =
"fIntFlowDetectorBias";
3283 for(
Int_t ci=0;ci<4;ci++)
3285 (
fIntFlowDetectorBias->GetXaxis())->SetBinLabel(ci+1,Form(
"#frac{corrected}{measured} %s",cumulantFlag[ci].
Data()));
3291 TString intFlowDetectorBiasVsMName =
"fIntFlowDetectorBiasVsM";
3293 for(
Int_t ci=0;ci<4;ci++)
3296 Form(
"Quantifying detector bias for %s vs multiplicity",cumulantFlag[ci].
Data()),
3325 TString controlHistogramsFlagsName =
"fControlHistogramsFlags";
3327 fControlHistogramsFlags =
new TProfile(controlHistogramsFlagsName.Data(),
"Flags for Control Histograms",2,0,2);
3341 TString sCorrelationNoRPsVsRefMultName =
"fCorrelationNoRPsVsRefMult";
3352 TString sCorrelationNoPOIsVsRefMultName =
"fCorrelationNoPOIsVsRefMult";
3363 TString sCorrelationNoRPsVsNoPOIsName =
"fCorrelationNoRPsVsNoPOIs";
3374 TString sCorrelation[4] = {
"#LT2#GT",
"#LT4#GT",
"#LT6#GT",
"#LT8#GT"};
3378 sMultiplicity =
"# RPs";
3381 sMultiplicity =
"Reference multiplicity (from ESD)";
3384 sMultiplicity =
"# POIs";
3386 for(
Int_t ci=0;ci<4;ci++)
3398 TString sCorrelationProduct[1] = {
"#LT2#GT#LT4#GT"};
3399 for(
Int_t cpi=0;cpi<1;cpi++)
3413 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}}"};
3414 for(
Int_t qvti=0;qvti<4;qvti++)
3441 TString bootstrapFlagsName =
"fBootstrapFlags";
3443 fBootstrapFlags =
new TProfile(bootstrapFlagsName.Data(),
"Flags for bootstrap",3,0,3);
3455 TString correlationFlag[4] = {
"#LT#LT2#GT#GT",
"#LT#LT4#GT#GT",
"#LT#LT6#GT#GT",
"#LT#LT8#GT#GT"};
3456 TString cumulantFlag[4] = {
"QC{2}",
"QC{4}",
"QC{6}",
"QC{8}"};
3460 TString bootstrapCorrelationsName =
"fBootstrapCorrelations";
3464 for(
Int_t ci=0;ci<4;ci++)
3474 TString bootstrapCumulantsName =
"fBootstrapCumulants";
3478 for(
Int_t co=0;co<4;co++)
3493 sMultiplicity =
"# RPs";
3496 sMultiplicity =
"Reference multiplicity (from ESD)";
3499 sMultiplicity =
"# POIs";
3504 TString bootstrapCorrelationsVsMName =
"fBootstrapCorrelationsVsM";
3506 for(
Int_t ci=0;ci<4;ci++)
3508 fBootstrapCorrelationsVsM[ci] =
new TProfile2D(Form(
"%s, %s",bootstrapCorrelationsVsMName.Data(),correlationFlag[ci].Data()),
3509 Form(
"Bootstrap Correlations Vs. M, %s",correlationFlag[ci].
Data()),
3520 TString bootstrapCumulantsVsMName =
"fBootstrapCumulantsVsM";
3522 for(
Int_t co=0;co<4;co++)
3525 Form(
"Bootstrap Cumulants Vs. M, %s",cumulantFlag[co].
Data()),
3551 TString mixedHarmonicsFlagsName =
"fMixedHarmonicsFlags";
3553 fMixedHarmonicsFlags =
new TProfile(mixedHarmonicsFlagsName.Data(),
"Flags for Mixed Harmonics",4,0,4);
3569 TString s2pCorrelationsName =
"f2pCorrelations";
3571 f2pCorrelations =
new TProfile(s2pCorrelationsName.Data(),Form(
"2-particle correlations (n = %d)",
fHarmonic),6,0,6,
"s");
3586 TString s3pCorrelationsName =
"f3pCorrelations";
3588 f3pCorrelations =
new TProfile(s3pCorrelationsName.Data(),Form(
"3-particle correlations (n = %d)",
fHarmonic),10,0,10,
"s");
3609 TString s4pCorrelationsName =
"f4pCorrelations";
3611 f4pCorrelations =
new TProfile(s4pCorrelationsName.Data(),Form(
"4-particle correlations (n = %d)",
fHarmonic),45,0,45,
"s");
3670 TString s5pCorrelationsName =
"f5pCorrelations";
3672 f5pCorrelations =
new TProfile(s5pCorrelationsName.Data(),Form(
"5-particle correlations (n = %d)",
fHarmonic),87,0,87,
"s");
3773 TString s6pCorrelationsName =
"f6pCorrelations";
3775 f6pCorrelations =
new TProfile(s6pCorrelationsName.Data(),Form(
"6-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3784 TString s7pCorrelationsName =
"f7pCorrelations";
3786 f7pCorrelations =
new TProfile(s7pCorrelationsName.Data(),Form(
"7-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3795 TString s8pCorrelationsName =
"f8pCorrelations";
3797 f8pCorrelations =
new TProfile(s8pCorrelationsName.Data(),Form(
"8-particle correlations (n = %d)",
fHarmonic),1,0.,1.);
3842 TString mixedHarmonicEventWeightsName =
"fMixedHarmonicEventWeights";
3844 TString powerFlag[2] = {
"linear",
"quadratic"};
3845 for(
Int_t power=0;power<2;power++)
3847 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.);
3861 }
else if (power == 1)
3876 TString mixedHarmonicProductOfEventWeightsName =
"fMixedHarmonicProductOfEventWeights";
3877 mixedHarmonicProductOfEventWeightsName +=
fAnalysisLabel->Data();
3882 for(
Int_t b=1;b<=8;b++)
3890 TString mixedHarmonicProductOfCorrelationsName =
"fMixedHarmonicProductOfCorrelations";
3891 mixedHarmonicProductOfCorrelationsName +=
fAnalysisLabel->Data();