31 #define AliFlowAnalysisWithMixedHarmonics_cxx
33 #include "Riostream.h"
42 #include "TProfile2D.h"
61 fAnalysisSettings(NULL),
62 fNoOfMultipicityBins(100),
63 fMultipicityBinWidth(1),
65 fOppositeChargesPOI(kFALSE),
66 fEvaluateDifferential3pCorrelator(kFALSE),
67 fCorrectForDetectorEffects(kFALSE),
68 fPrintOnTheScreen(kTRUE),
69 fCalculateVsM(kFALSE),
70 fShowBinLabelsVsM(kFALSE),
84 fCommonConstants(NULL),
86 fUsePhiWeights(kFALSE),
87 fUsePtWeights(kFALSE),
88 fUseEtaWeights(kFALSE),
89 fUseParticleWeights(NULL),
97 f3pCorrelatorPro(NULL),
98 f5pCorrelatorPro(NULL),
99 fNonIsotropicTermsPro(NULL),
100 f3pCorrelatorVsMPro(NULL),
101 f3pPOICorrelatorVsM(NULL),
102 fNonIsotropicTermsVsMPro(NULL),
103 fNonIsotropicTermsList(NULL),
104 f2pCorrelatorCosPsiDiffPtDiff(NULL),
105 f2pCorrelatorCosPsiSumPtDiff(NULL),
106 f2pCorrelatorSinPsiDiffPtDiff(NULL),
107 f2pCorrelatorSinPsiSumPtDiff(NULL),
108 f2pCorrelatorCosPsiDiffPtSum(NULL),
109 f2pCorrelatorCosPsiSumPtSum(NULL),
110 f2pCorrelatorSinPsiDiffPtSum(NULL),
111 f2pCorrelatorSinPsiSumPtSum(NULL),
112 f2pCorrelatorCosPsiDiffEtaDiff(NULL),
113 f2pCorrelatorCosPsiSumEtaDiff(NULL),
114 f2pCorrelatorSinPsiDiffEtaDiff(NULL),
115 f2pCorrelatorSinPsiSumEtaDiff(NULL),
116 f2pCorrelatorCosPsiDiffEtaSum(NULL),
117 f2pCorrelatorCosPsiSumEtaSum(NULL),
118 f2pCorrelatorSinPsiDiffEtaSum(NULL),
119 f2pCorrelatorSinPsiSumEtaSum(NULL),
121 f3pCorrelatorHist(NULL),
122 fDetectorBiasHist(NULL),
123 f3pCorrelatorVsMHist(NULL),
124 fDetectorBiasVsMHist(NULL)
129 fHistList =
new TList();
130 fHistListName =
new TString(
"cobjMH");
131 fHistList->SetName(fHistListName->Data());
132 fHistList->SetOwner(kTRUE);
135 fWeightsList =
new TList();
138 fProfileList =
new TList();
141 fNonIsotropicTermsList =
new TList();
144 fResultsList =
new TList();
147 this->InitializeArrays();
179 Bool_t oldHistAddStatus = TH1::AddDirectoryStatus();
180 TH1::AddDirectory(kFALSE);
182 TH1::SetDefaultSumw2();
194 TH1::AddDirectory(oldHistAddStatus);
235 for(
Int_t i=0;i<nPrim;i++)
244 dPhi = aftsTrack->
Phi();
245 dPt = aftsTrack->
Pt();
246 dEta = aftsTrack->
Eta();
260 for(
Int_t m=0;m<6;m++)
262 for(
Int_t k=0;k<4;k++)
264 (*fReQnk)(m,k)+=pow(wPhi*wPt*wEta,k)*TMath::Cos((m+1)*n*dPhi);
265 (*fImQnk)(m,k)+=pow(wPhi*wPt*wEta,k)*TMath::Sin((m+1)*n*dPhi);
269 for(
Int_t p=0;p<4;p++)
271 for(
Int_t k=0;k<4;k++)
273 (*fSpk)(p,k)+=pow(wPhi*wPt*wEta,k);
286 Bool_t b1stPOIisAlsoRP = kFALSE;
288 for(
Int_t j=0;j<nPrim;j++)
299 Bool_t b2ndPOIisAlsoRP = kFALSE;
303 fRePEBE[0]->Fill((dPt1+dPt2)/2.,TMath::Cos(n*(dPsi1+dPsi2)),1.);
304 fImPEBE[0]->Fill((dPt1+dPt2)/2.,TMath::Sin(n*(dPsi1+dPsi2)),1.);
305 fRePEBE[1]->Fill(TMath::Abs(dPt1-dPt2),TMath::Cos(n*(dPsi1+dPsi2)),1.);
306 fImPEBE[1]->Fill(TMath::Abs(dPt1-dPt2),TMath::Sin(n*(dPsi1+dPsi2)),1.);
309 fReEtaEBE[0]->Fill((dEta1+dEta2)/2.,TMath::Cos(n*(dPsi1+dPsi2)),1.);
310 fImEtaEBE[0]->Fill((dEta1+dEta2)/2.,TMath::Sin(n*(dPsi1+dPsi2)),1.);
311 fReEtaEBE[1]->Fill(TMath::Abs(dEta1-dEta2),TMath::Cos(n*(dPsi1+dPsi2)),1.);
312 fImEtaEBE[1]->Fill(TMath::Abs(dEta1-dEta2),TMath::Sin(n*(dPsi1+dPsi2)),1.);
341 fReNITEBE[0][0][0]->Fill((dPt1+dPt2)/2.,TMath::Cos(n*(dPsi1)),1.);
342 fReNITEBE[0][0][1]->Fill(TMath::Abs(dPt1-dPt2),TMath::Cos(n*(dPsi1)),1.);
343 fReNITEBE[0][0][2]->Fill((dEta1+dEta2)/2.,TMath::Cos(n*(dPsi1)),1.);
344 fReNITEBE[0][0][3]->Fill(TMath::Abs(dEta1-dEta2),TMath::Cos(n*(dPsi1)),1.);
345 fImNITEBE[0][0][0]->Fill((dPt1+dPt2)/2.,TMath::Sin(n*(dPsi1)),1.);
346 fImNITEBE[0][0][1]->Fill(TMath::Abs(dPt1-dPt2),TMath::Sin(n*(dPsi1)),1.);
347 fImNITEBE[0][0][2]->Fill((dEta1+dEta2)/2.,TMath::Sin(n*(dPsi1)),1.);
348 fImNITEBE[0][0][3]->Fill(TMath::Abs(dEta1-dEta2),TMath::Sin(n*(dPsi1)),1.);
350 fReNITEBE[1][0][0]->Fill((dPt1+dPt2)/2.,TMath::Cos(n*(dPsi2)),1.);
351 fReNITEBE[1][0][1]->Fill(TMath::Abs(dPt1-dPt2),TMath::Cos(n*(dPsi2)),1.);
352 fReNITEBE[1][0][2]->Fill((dEta1+dEta2)/2.,TMath::Cos(n*(dPsi2)),1.);
353 fReNITEBE[1][0][3]->Fill(TMath::Abs(dEta1-dEta2),TMath::Cos(n*(dPsi2)),1.);
354 fImNITEBE[1][0][0]->Fill((dPt1+dPt2)/2.,TMath::Sin(n*(dPsi2)),1.);
355 fImNITEBE[1][0][1]->Fill(TMath::Abs(dPt1-dPt2),TMath::Sin(n*(dPsi2)),1.);
356 fImNITEBE[1][0][2]->Fill((dEta1+dEta2)/2.,TMath::Sin(n*(dPsi2)),1.);
357 fImNITEBE[1][0][3]->Fill(TMath::Abs(dEta1-dEta2),TMath::Sin(n*(dPsi2)),1.);
361 fOverlapEBE[0][0]->Fill((dPt1+dPt2)/2.,TMath::Cos(n*(dPsi1-dPsi2)),1.);
362 fOverlapEBE[0][1]->Fill(TMath::Abs(dPt1-dPt2),TMath::Cos(n*(dPsi1-dPsi2)),1.);
363 fOverlapEBE2[0][0]->Fill((dEta1+dEta2)/2.,TMath::Cos(n*(dPsi1-dPsi2)),1.);
364 fOverlapEBE2[0][1]->Fill(TMath::Abs(dEta1-dEta2),TMath::Cos(n*(dPsi1-dPsi2)),1.);
366 fReNITEBE[0][1][0]->Fill((dPt1+dPt2)/2.,TMath::Cos(n*(dPsi1)),1.);
367 fReNITEBE[0][1][1]->Fill(TMath::Abs(dPt1-dPt2),TMath::Cos(n*(dPsi1)),1.);
368 fReNITEBE[0][1][2]->Fill((dEta1+dEta2)/2.,TMath::Cos(n*(dPsi1)),1.);
369 fReNITEBE[0][1][3]->Fill(TMath::Abs(dEta1-dEta2),TMath::Cos(n*(dPsi1)),1.);
370 fImNITEBE[0][1][0]->Fill((dPt1+dPt2)/2.,TMath::Sin(n*(dPsi1)),1.);
371 fImNITEBE[0][1][1]->Fill(TMath::Abs(dPt1-dPt2),TMath::Sin(n*(dPsi1)),1.);
372 fImNITEBE[0][1][2]->Fill((dEta1+dEta2)/2.,TMath::Sin(n*(dPsi1)),1.);
373 fImNITEBE[0][1][3]->Fill(TMath::Abs(dEta1-dEta2),TMath::Sin(n*(dPsi1)),1.);
377 fOverlapEBE[1][0]->Fill((dPt1+dPt2)/2.,TMath::Cos(n*(dPsi1-dPsi2)),1.);
378 fOverlapEBE[1][1]->Fill(TMath::Abs(dPt1-dPt2),TMath::Cos(n*(dPsi1-dPsi2)),1.);
379 fOverlapEBE2[1][0]->Fill((dEta1+dEta2)/2.,TMath::Cos(n*(dPsi1-dPsi2)),1.);
380 fOverlapEBE2[1][1]->Fill(TMath::Abs(dEta1-dEta2),TMath::Cos(n*(dPsi1-dPsi2)),1.);
382 fReNITEBE[1][1][0]->Fill((dPt1+dPt2)/2.,TMath::Cos(n*(dPsi2)),1.);
383 fReNITEBE[1][1][1]->Fill(TMath::Abs(dPt1-dPt2),TMath::Cos(n*(dPsi2)),1.);
384 fReNITEBE[1][1][2]->Fill((dEta1+dEta2)/2.,TMath::Cos(n*(dPsi2)),1.);
385 fReNITEBE[1][1][3]->Fill(TMath::Abs(dEta1-dEta2),TMath::Cos(n*(dPsi2)),1.);
386 fImNITEBE[1][1][0]->Fill((dPt1+dPt2)/2.,TMath::Sin(n*(dPsi2)),1.);
387 fImNITEBE[1][1][1]->Fill(TMath::Abs(dPt1-dPt2),TMath::Sin(n*(dPsi2)),1.);
388 fImNITEBE[1][1][2]->Fill((dEta1+dEta2)/2.,TMath::Sin(n*(dPsi2)),1.);
389 fImNITEBE[1][1][3]->Fill(TMath::Abs(dEta1-dEta2),TMath::Sin(n*(dPsi2)),1.);
398 cout<<
" WARNING (MH): No particle! (i.e. aftsTrack is a NULL pointer in Make().)"<<endl;
404 for(
Int_t p=0;p<4;p++)
406 for(
Int_t k=0;k<4;k++)
408 (*fSpk)(p,k)=pow((*
fSpk)(p,k),p+1);
426 Double_t gIntegrated3pCorrelator = 0.;
473 cout<<
" WARNING (MH): fHistList is NULL in GetOutputHistograms() !!!!"<<endl;
484 cout<<
" WARNING (MH): outputListHistos is NULL in GetOutputHistograms() !!!!"<<endl;
497 TString analysisSettingsName =
"fAnalysisSettings";
498 TProfile *analysisSettings =
dynamic_cast<TProfile*
>(
fHistList->FindObject(analysisSettingsName.Data()));
505 cout<<
" WARNING (MH): analysisSettings is NULL in GetPointersForBaseHistograms() !!!!"<<endl;
510 TString sCommonConstantsName =
"fCommonConstants";
514 printf(
"\n WARNING (MH): fCommonConstants is NULL in GetPointersForBaseHistograms() !!!!\n\n");
526 TString commonHistsName =
"AliFlowCommonHistMH";
534 cout<<
" WARNING (MH): commonHist is NULL in GetPointersForCommonHistograms() !!!!"<<endl;
547 TList *profileList = NULL;
548 profileList =
dynamic_cast<TList*
>(
fHistList->FindObject(
"Profiles"));
552 cout<<
" WARNING (MH): profileList is NULL in GetPointersForAllEventProfiles() !!!!"<<endl;
556 TList *nonIsotropicTermsList = NULL;
557 nonIsotropicTermsList =
dynamic_cast<TList*
>(profileList->FindObject(
"Nonisotropic Terms"));
561 cout<<
" WARNING (MH): nonIsotropicTerms is NULL in GetPointersForAllEventProfiles() !!!!"<<endl;
566 TString s3pCorrelatorProName =
"f3pCorrelatorPro";
567 TProfile *p3pCorrelatorPro =
dynamic_cast<TProfile*
>(profileList->FindObject(s3pCorrelatorProName.Data()));
572 TString s3pCorrelatorVsMProName =
"f3pCorrelatorVsMPro";
573 TProfile *p3pCorrelatorVsMPro =
dynamic_cast<TProfile*
>(profileList->FindObject(s3pCorrelatorVsMProName.Data()));
574 if(p3pCorrelatorVsMPro)
578 TString s3pPOICorrelatorVsMName =
"f3pPOICorrelatorVsM";
579 TProfile *p3pPOICorrelatorVsM =
dynamic_cast<TProfile*
>(profileList->FindObject(s3pPOICorrelatorVsMName.Data()));
580 if(p3pPOICorrelatorVsM)
584 TString nonIsotropicTermsProName =
"fNonIsotropicTermsPro";
585 TProfile *nonIsotropicTermsPro =
dynamic_cast<TProfile*
>(profileList->FindObject(nonIsotropicTermsProName.Data()));
586 if(nonIsotropicTermsPro)
590 TString nonIsotropicTermsVsMProName =
"fNonIsotropicTermsVsMPro";
591 TProfile2D *nonIsotropicTermsVsMPro =
dynamic_cast<TProfile2D*
>(profileList->FindObject(nonIsotropicTermsVsMProName.Data()));
592 if(nonIsotropicTermsVsMPro)
596 TString psdFlag[2] = {
"PtSum",
"PtDiff"};
597 TString psdFlag2[2] = {
"EtaSum",
"EtaDiff"};
598 TString nonIsotropicTerm[10] = {
"#LT#LTcos(#psi_{POI_1})#GT#GT",
"#LT#LTsin(#psi_{POI_1})#GT#GT",
599 "#LT#LTcos(#psi_{POI_2})#GT#GT",
"#LT#LTsin(#psi_{POI_2})#GT#GT",
600 "#LT#LTcos(#psi_{POI_1}-2#phi_{RP})#GT#GT",
"#LT#LTsin(#psi_{POI_1}-2#phi_{RP})#GT#GT",
601 "#LT#LTcos(#psi_{POI_2}-2#phi_{RP})#GT#GT",
"#LT#LTsin(#psi_{POI_2}-2#phi_{RP})#GT#GT",
602 "#LT#LTcos(#psi_{POI_1}+#psi_{POI_2})#GT#GT",
"#LT#LTsin(#psi_{POI_1}+#psi_{POI_2})#GT#GT"};
603 for(
Int_t sd=0;sd<2;sd++)
605 TProfile *p3pCorrelatorVsPtSumDiffPro =
dynamic_cast<TProfile*
>(profileList->FindObject(Form(
"f3pCorrelatorVs%sPro",psdFlag[sd].
Data())));
606 if(p3pCorrelatorVsPtSumDiffPro)
610 TProfile *p3pCorrelatorVsEtaSumDiffPro =
dynamic_cast<TProfile*
>(profileList->FindObject(Form(
"f3pCorrelatorVs%sPro",psdFlag2[sd].
Data())));
611 if(p3pCorrelatorVsEtaSumDiffPro)
615 if(nonIsotropicTermsList)
617 for(
Int_t t=0;t<10;t++)
620 TProfile *pNonIsotropicTermsVsPtSumDiffPro =
dynamic_cast<TProfile*
>
621 (nonIsotropicTermsList->FindObject(Form(
"fNonIsotropicTermsVs%sPro %s",psdFlag[sd].
Data(),nonIsotropicTerm[t].
Data())));
622 if(pNonIsotropicTermsVsPtSumDiffPro)
627 TProfile *pNonIsotropicTermsVsEtaSumDiffPro =
dynamic_cast<TProfile*
>
628 (nonIsotropicTermsList->FindObject(Form(
"fNonIsotropicTermsVs%sPro %s",psdFlag2[sd].
Data(),nonIsotropicTerm[t].
Data())));
629 if(pNonIsotropicTermsVsEtaSumDiffPro)
638 TProfile *g2pCorrelatorCosPsiDiffPtDiff =
dynamic_cast<TProfile *
>(profileList->FindObject(
"f2pCorrelatorCosPsiDiffPtDiff"));
639 if(g2pCorrelatorCosPsiDiffPtDiff)
641 TProfile *g2pCorrelatorCosPsiSumPtDiff =
dynamic_cast<TProfile *
>(profileList->FindObject(
"f2pCorrelatorCosPsiSumPtDiff"));
642 if(g2pCorrelatorCosPsiSumPtDiff)
644 TProfile *g2pCorrelatorSinPsiDiffPtDiff =
dynamic_cast<TProfile *
>(profileList->FindObject(
"f2pCorrelatorSinPsiDiffPtDiff"));
645 if(g2pCorrelatorSinPsiDiffPtDiff)
647 TProfile *g2pCorrelatorSinPsiSumPtDiff =
dynamic_cast<TProfile *
>(profileList->FindObject(
"f2pCorrelatorSinPsiSumPtDiff"));
648 if(g2pCorrelatorSinPsiSumPtDiff)
652 TProfile *g2pCorrelatorCosPsiDiffPtSum =
dynamic_cast<TProfile *
>(profileList->FindObject(
"f2pCorrelatorCosPsiDiffPtSum"));
653 if(g2pCorrelatorCosPsiDiffPtSum)
655 TProfile *g2pCorrelatorCosPsiSumPtSum =
dynamic_cast<TProfile *
>(profileList->FindObject(
"f2pCorrelatorCosPsiSumPtSum"));
656 if(g2pCorrelatorCosPsiSumPtSum)
658 TProfile *g2pCorrelatorSinPsiDiffPtSum =
dynamic_cast<TProfile *
>(profileList->FindObject(
"f2pCorrelatorSinPsiDiffPtSum"));
659 if(g2pCorrelatorSinPsiDiffPtSum)
661 TProfile *g2pCorrelatorSinPsiSumPtSum =
dynamic_cast<TProfile *
>(profileList->FindObject(
"f2pCorrelatorSinPsiSumPtSum"));
662 if(g2pCorrelatorSinPsiSumPtSum)
666 TProfile *g2pCorrelatorCosPsiDiffEtaDiff =
dynamic_cast<TProfile *
>(profileList->FindObject(
"f2pCorrelatorCosPsiDiffEtaDiff"));
667 if(g2pCorrelatorCosPsiDiffEtaDiff)
669 TProfile *g2pCorrelatorCosPsiSumEtaDiff =
dynamic_cast<TProfile *
>(profileList->FindObject(
"f2pCorrelatorCosPsiSumEtaDiff"));
670 if(g2pCorrelatorCosPsiSumEtaDiff)
672 TProfile *g2pCorrelatorSinPsiDiffEtaDiff =
dynamic_cast<TProfile *
>(profileList->FindObject(
"f2pCorrelatorSinPsiDiffEtaDiff"));
673 if(g2pCorrelatorSinPsiDiffEtaDiff)
675 TProfile *g2pCorrelatorSinPsiSumEtaDiff =
dynamic_cast<TProfile *
>(profileList->FindObject(
"f2pCorrelatorSinPsiSumEtaDiff"));
676 if(g2pCorrelatorSinPsiSumEtaDiff)
680 TProfile *g2pCorrelatorCosPsiDiffEtaSum =
dynamic_cast<TProfile *
>(profileList->FindObject(
"f2pCorrelatorCosPsiDiffEtaSum"));
681 if(g2pCorrelatorCosPsiDiffEtaSum)
683 TProfile *g2pCorrelatorCosPsiSumEtaSum =
dynamic_cast<TProfile *
>(profileList->FindObject(
"f2pCorrelatorCosPsiSumEtaSum"));
684 if(g2pCorrelatorCosPsiSumEtaSum)
686 TProfile *g2pCorrelatorSinPsiDiffEtaSum =
dynamic_cast<TProfile *
>(profileList->FindObject(
"f2pCorrelatorSinPsiDiffEtaSum"));
687 if(g2pCorrelatorSinPsiDiffEtaSum)
689 TProfile *g2pCorrelatorSinPsiSumEtaSum =
dynamic_cast<TProfile *
>(profileList->FindObject(
"f2pCorrelatorSinPsiSumEtaSum"));
690 if(g2pCorrelatorSinPsiSumEtaSum)
693 TString s5pCorrelatorProName =
"f5pCorrelatorPro";
694 TProfile *p5pCorrelatorPro =
dynamic_cast<TProfile*
>(profileList->FindObject(s5pCorrelatorProName.Data()));
708 TList *resultsList = NULL;
709 resultsList =
dynamic_cast<TList*
>(
fHistList->FindObject(
"Results"));
713 cout<<
" WARNING (MH): resultsList is NULL in GetPointersForResultsHistograms() !!!!"<<endl;
717 TString s3pCorrelatorHistName =
"f3pCorrelatorHist";
718 TH1D *h3pCorrelatorHist =
dynamic_cast<TH1D*
>(resultsList->FindObject(s3pCorrelatorHistName.Data()));
719 if(h3pCorrelatorHist)
723 TString s3pCorrelatorVsMHistName =
"f3pCorrelatorVsMHist";
724 TH1D *h3pCorrelatorVsMHist =
dynamic_cast<TH1D*
>(resultsList->FindObject(s3pCorrelatorVsMHistName.Data()));
725 if(h3pCorrelatorVsMHist)
729 TString detectorBiasHistName =
"fDetectorBiasHist";
730 TH1D *detectorBiasHist =
dynamic_cast<TH1D*
>(resultsList->FindObject(detectorBiasHistName.Data()));
735 TString detectorBiasVsMHistName =
"fDetectorBiasVsMHist";
736 TH1D *detectorBiasVsMHist =
dynamic_cast<TH1D*
>(resultsList->FindObject(detectorBiasVsMHistName.Data()));
737 if(detectorBiasVsMHist)
742 TString psdFlag[2] = {
"PtSum",
"PtDiff"};
743 TString psdFlag2[2] = {
"EtaSum",
"EtaDiff"};
744 for(
Int_t sd=0;sd<2;sd++)
746 TH1D *h3pCorrelatorVsPtSumDiffHist =
dynamic_cast<TH1D*
>(resultsList->FindObject(Form(
"f3pCorrelatorVs%sHist",psdFlag[sd].
Data())));
747 if(h3pCorrelatorVsPtSumDiffHist)
751 TH1D *h3pCorrelatorVsEtaSumDiffHist =
dynamic_cast<TH1D*
>(resultsList->FindObject(Form(
"f3pCorrelatorVs%sHist",psdFlag2[sd].
Data())));
752 if(h3pCorrelatorVsEtaSumDiffHist)
765 TFile *output =
new TFile(outputFileName.Data(),
"RECREATE");
778 outputFileName->Write(outputFileName->GetName(),TObject::kSingleKey);
797 for(
Int_t sd=0;sd<2;sd++)
807 for(
Int_t t=0;t<10;t++)
813 for(
Int_t fs=0;fs<2;fs++)
815 for(
Int_t sd=0;sd<2;sd++)
821 for(
Int_t p12=0;p12<2;p12++)
823 for(
Int_t ao=0;ao<2;ao++)
825 for(
Int_t pe=0;pe<4;pe++)
866 TString analysisSettingsName =
"fAnalysisSettings";
867 fAnalysisSettings =
new TProfile(analysisSettingsName.Data(),
"Settings for analysis with mixed harmonics",10,0,10);
884 fAnalysisSettings->GetXaxis()->SetBinLabel(8,
"fEvaluateDifferential3pCorrelator");
900 TString commonHistsName =
"AliFlowCommonHistMH";
913 fReQnk =
new TMatrixD(6,9);
914 fImQnk =
new TMatrixD(6,9);
915 fSpk =
new TMatrixD(4,4);
919 TString psdFlag[2] = {
"PtSum",
"PtDiff"};
920 TString p2sdFlag[2] = {
"PtSum",
"PtDiff"};
921 TString fsFlag[2] = {
"1st",
"2nd"};
922 for(
Int_t sd=0;sd<2;sd++)
929 for(
Int_t fs=0;fs<2;fs++)
931 for(
Int_t sd=0;sd<2;sd++)
940 for(
Int_t p12=0;p12<2;p12++)
942 for(
Int_t ao=0;ao<2;ao++)
944 for(
Int_t pe=0;pe<4;pe++)
946 fReNITEBE[p12][ao][pe] =
new TProfile(Form(
"fReNITEBE%d%d%d",p12,ao,pe),
"",nBinsPtEta[pe],dPtEtaMin[pe],dPtEtaMax[pe]);
947 fImNITEBE[p12][ao][pe] =
new TProfile(Form(
"fImNITEBE%d%d%d",p12,ao,pe),
"",nBinsPtEta[pe],dPtEtaMin[pe],dPtEtaMax[pe]);
983 TString s3pCorrelatorProName =
"f3pCorrelatorPro";
990 f3pCorrelatorPro->GetXaxis()->SetBinLabel(1,
"#LT#LTcos(#phi_{1}+#phi_{2}-2#phi_{3})#GT#GT");
998 TString nonIsotropicTermsProName =
"fNonIsotropicTermsPro";
1003 fNonIsotropicTermsPro->SetTitle(
"Non-isotropic terms in decomposition of #LT#LTcos(#phi_{1}+#phi_{2}-2#phi_{3})#GT#GT");
1031 TString s3pCorrelatorHistName =
"f3pCorrelatorHist";
1038 f3pCorrelatorHist->GetXaxis()->SetBinLabel(1,
"#LT#LTcos(#phi_{1}+#phi_{2}-2#phi_{3})#GT#GT");
1046 TString detectorBiasHistName =
"fDetectorBiasHist";
1047 fDetectorBiasHist =
new TH1D(detectorBiasHistName.Data(),
"Bias coming from detector inefficiences",1,0,1);
1051 fDetectorBiasHist->GetXaxis()->SetBinLabel(1,
"#frac{corrected}{measured} #LT#LTcos(#phi_{1}+#phi_{2}-2#phi_{3})#GT#GT");
1054 fDetectorBiasHist->GetXaxis()->SetBinLabel(1,Form(
"#frac{corrected}{measured} #LT#LTcos[%i(#phi_{1}+#phi_{2}-2#phi_{3})]#GT#GT",
fHarmonic));
1059 TString s5pCorrelatorProName =
"f5pCorrelatorPro";
1066 f5pCorrelatorPro->GetXaxis()->SetBinLabel(1,
"#LT#LTcos(2#phi_{1}+2#phi_{2}+2#phi_{3}-3#phi_{4}-3#phi_{5})#GT#GT");
1069 f5pCorrelatorPro->GetXaxis()->SetBinLabel(1,Form(
"#LT#LTcos[%i(2#phi_{1}+2#phi_{2}+2#phi_{3}-3#phi_{4}-3#phi_{5})]#GT#GT",
fHarmonic));
1087 TString s3pCorrelatorVsMProName =
"f3pCorrelatorVsMPro";
1092 f3pCorrelatorVsMPro->SetTitle(
"#LT#LTcos(#phi_{1}+#phi_{2}-2#phi_{3})#GT#GT #font[72]{vs} M");
1111 TString s3pPOICorrelatorVsMName =
"f3pPOICorrelatorVsM";
1116 f3pPOICorrelatorVsM->SetTitle(
"#LT#LTcos(#psi_{1}+#psi_{2}-2#phi_{3})#GT#GT #font[72]{vs} M");
1136 TString s3pCorrelatorVsMHistName =
"f3pCorrelatorVsMHist";
1161 TString nonIsotropicTermsVsMProName =
"fNonIsotropicTermsVsMPro";
1166 fNonIsotropicTermsVsMPro->SetTitle(
"Non-isotropic terms in decomposition of #LT#LTcos(#phi_{1}+#phi_{2}-2#phi_{3})#GT#GT #font[72]{vs} M");
1206 TString detectorBiasVsMHistName =
"fDetectorBiasVsMHist";
1211 fDetectorBiasVsMHist->SetTitle(
"#frac{corrected}{measured} #LT#LTcos(#phi_{1}+#phi_{2}-2#phi_{3})#GT#GT #font[72]{vs} M");
1214 fDetectorBiasVsMHist->SetTitle(Form(
"#frac{corrected}{measured} #LT#LTcos[%d(#phi_{1}+#phi_{2}-2#phi_{3})]#GT#GT #font[72]{vs} M",
fHarmonic));
1238 TString psdFlag[2] = {
"PtSum",
"PtDiff"};
1239 TString psdTitleFlag[2] = {
"(p_{T,1}+ p_{T,2})/2",
"#left|p_{T,1}- p_{T,2}#right|"};
1240 TString psdFlag2[2] = {
"EtaSum",
"EtaDiff"};
1241 TString psdTitleFlag2[2] = {
"(#eta_{1}+ #eta_{2})/2",
"#left|#eta_{1}- #eta_{2}#right|"};
1243 for(
Int_t sd=0;sd<2;sd++)
1267 for(
Int_t sd=0;sd<2;sd++)
1294 TString nonIsotropicTerm[10] = {
"#LT#LTcos(#psi_{POI_1})#GT#GT",
"#LT#LTsin(#psi_{POI_1})#GT#GT",
1295 "#LT#LTcos(#psi_{POI_2})#GT#GT",
"#LT#LTsin(#psi_{POI_2})#GT#GT",
1296 "#LT#LTcos(#psi_{POI_1}-2#phi_{RP})#GT#GT",
"#LT#LTsin(#psi_{POI_1}-2#phi_{RP})#GT#GT",
1297 "#LT#LTcos(#psi_{POI_2}-2#phi_{RP})#GT#GT",
"#LT#LTsin(#psi_{POI_2}-2#phi_{RP})#GT#GT",
1298 "#LT#LTcos(#psi_{POI_1}+#psi_{POI_2})#GT#GT",
"#LT#LTsin(#psi_{POI_1}+#psi_{POI_2})#GT#GT"};
1299 for(
Int_t sd=0;sd<2;sd++)
1301 for(
Int_t t=0;t<10;t++)
1434 if(method ==
"Init")
1451 TString fCommonConstantsName =
"fCommonConstants";
1452 fCommonConstants =
new TProfile(fCommonConstantsName.Data(),
"Common constants",9,0.,9.);
1474 else if(method ==
"Finish")
1479 printf(
"\n WARNING (MH): fCommonConstants is NULL in AFAWMH::AC(\"%s\") !!!!\n\n",method.Data());
1517 cout<<
" WARNING (MH): fWeightsList is NULL in BookAndFillWeightsHistograms() !!!!"<<endl;
1522 TString fUseParticleWeightsName =
"fUseParticleWeightsMH";
1523 fUseParticleWeights =
new TProfile(fUseParticleWeightsName.Data(),
"0 = particle weight not used, 1 = particle weight used ",3,0,3);
1541 printf(
"WARNING: no phi weights. bye!\n");
1547 cout<<
" WARNING (MH): Inconsistent binning in histograms for phi-weights throughout the code."<<endl;
1554 cout<<
" WARNING (MH): fWeightsList->FindObject(\"phi_weights\") is NULL in BookAndFillWeightsHistograms() !!!!"<<endl;
1567 printf(
"WARNING: no pt weights. bye!\n");
1573 cout<<
" WARNING (MH): Inconsistent binning in histograms for pt-weights throughout the code."<<endl;
1580 cout<<
" WARNING (MH): fWeightsList->FindObject(\"pt_weights\") is NULL in BookAndFillWeightsHistograms() !!!!"<<endl;
1593 printf(
"WARNING: no pt weights. bye!\n");
1599 cout<<
" WARNING (MH): Inconsistent binning in histograms for eta-weights throughout the code."<<endl;
1606 cout<<
" WARNING (MH): fUseEtaWeights && fWeightsList->FindObject(\"eta_weights\") is NULL in BookAndFillWeightsHistograms() !!!!"<<endl;
1623 cout<<
" WARNING (MH): fReQnk || fImQnk || fSpk is NULL in CheckPointersUsedInMake() !!!!"<<endl;
1630 cout<<
" WARNING (MH): f3pCorrelatorPro is NULL in CheckPointersUsedInMake() !!!!"<<endl;
1637 cout<<
" WARNING (MH): f5pCorrelatorPro is NULL in CheckPointersUsedInMake() !!!!"<<endl;
1644 cout<<
" WARNING (MH): fNonIsotropicTermsPro is NULL in CheckPointersUsedInMake() !!!!"<<endl;
1651 cout<<
" WARNING (MH): f3pCorrelatorVsMPro is NULL in CheckPointersUsedInMake() !!!!"<<endl;
1658 cout<<
" WARNING (MH): f3pPOICorrelatorVsM is NULL in CheckPointersUsedInMake() !!!!"<<endl;
1665 cout<<
" WARNING (MH): fNonIsotropicTermsVsMPro is NULL in CheckPointersUsedInMake() !!!!"<<endl;
1672 for(
Int_t sd=0;sd<2;sd++)
1677 cout<<
" WARNING (MH): "<<Form(
"f3pCorrelatorVsPtSumDiffPro[%d]",sd)<<
" is NULL in CheckPointersUsedInMake() !!!!"<<endl;
1684 cout<<
" WARNING (MH): "<<Form(
"f3pCorrelatorVsEtaSumDiffPro[%d]",sd)<<
" is NULL in CheckPointersUsedInMake() !!!!"<<endl;
1688 for(
Int_t t=0;t<10;t++)
1693 cout<<
" WARNING (MH): "<<Form(
"fNonIsotropicTermsVsPtSumDiffPro[%d][%d]",sd,t)<<
" is NULL in CheckPointersUsedInMake() !!!!"<<endl;
1700 cout<<
" WARNING (MH): "<<Form(
"fNonIsotropicTermsVsEtaSumDiffPro[%d][%d]",sd,t)<<
" is NULL in CheckPointersUsedInMake() !!!!"<<endl;
1706 for(
Int_t sd=0;sd<2;sd++)
1711 cout<<
" WARNING (MH): "<<Form(
"!fRePEBE[%d]||!fImPEBE[%d]",sd,sd)<<
" is NULL in CheckPointersUsedInMake() !!!!"<<endl;
1718 cout<<
" WARNING (MH): "<<Form(
"!fReEtaEBE[%d]||!fImEtaEBE[%d]",sd,sd)<<
" is NULL in CheckPointersUsedInMake() !!!!"<<endl;
1722 for(
Int_t fs=0;fs<2;fs++)
1727 cout<<
" WARNING (MH): "<<Form(
"!fOverlapEBE[%d][%d]||!fOverlapEBE[%d][%d]",fs,sd,fs,sd)<<
" is NULL in CheckPointersUsedInMake() !!!!"<<endl;
1734 cout<<
" WARNING (MH): "<<Form(
"!fOverlapEBE2[%d][%d]||!fOverlapEBE2[%d][%d]",fs,sd,fs,sd)<<
" is NULL in CheckPointersUsedInMake() !!!!"<<endl;
1740 for(
Int_t p12=0;p12<2;p12++)
1742 for(
Int_t ao=0;ao<2;ao++)
1744 for(
Int_t pe=0;pe<4;pe++)
1749 cout<<
" WARNING (MH): "<<Form(
"!fReNITEBE[%d][%d][%d]||!fImNITEBE[%d][%d][%d]",p12,ao,pe,p12,ao,pe)<<
" is NULL in CheckPointersUsedInMake() !!!!"<<endl;
1760 cout<<
" WARNING (MH): f2pCorrelatorCosPsiDiffPtDiff is NULL in CheckPointersUsedInMake() !!!!"<<endl;
1766 cout<<
" WARNING (MH): f2pCorrelatorCosPsiSumPtDiff is NULL in CheckPointersUsedInMake() !!!!"<<endl;
1772 cout<<
" WARNING (MH): f2pCorrelatorSinPsiDiffPtDiff is NULL in CheckPointersUsedInMake() !!!!"<<endl;
1778 cout<<
" WARNING (MH): f2pCorrelatorSinPsiSumPtDiff is NULL in CheckPointersUsedInMake() !!!!"<<endl;
1786 cout<<
" WARNING (MH): f2pCorrelatorCosPsiDiffPtSum is NULL in CheckPointersUsedInMake() !!!!"<<endl;
1792 cout<<
" WARNING (MH): f2pCorrelatorCosPsiSumPtSum is NULL in CheckPointersUsedInMake() !!!!"<<endl;
1798 cout<<
" WARNING (MH): f2pCorrelatorSinPsiDiffPtSum is NULL in CheckPointersUsedInMake() !!!!"<<endl;
1804 cout<<
" WARNING (MH): f2pCorrelatorSinPsiSumPtSum is NULL in CheckPointersUsedInMake() !!!!"<<endl;
1812 cout<<
" WARNING (MH): f2pCorrelatorCosPsiDiffEtaDiff is NULL in CheckPointersUsedInMake() !!!!"<<endl;
1818 cout<<
" WARNING (MH): f2pCorrelatorCosPsiSumEtaDiff is NULL in CheckPointersUsedInMake() !!!!"<<endl;
1824 cout<<
" WARNING (MH): f2pCorrelatorSinPsiDiffEtaDiff is NULL in CheckPointersUsedInMake() !!!!"<<endl;
1830 cout<<
" WARNING (MH): f2pCorrelatorSinPsiSumEtaDiff is NULL in CheckPointersUsedInMake() !!!!"<<endl;
1838 cout<<
" WARNING (MH): f2pCorrelatorCosPsiDiffEtaSum is NULL in CheckPointersUsedInMake() !!!!"<<endl;
1844 cout<<
" WARNING (MH): f2pCorrelatorCosPsiSumEtaSum is NULL in CheckPointersUsedInMake() !!!!"<<endl;
1850 cout<<
" WARNING (MH): f2pCorrelatorSinPsiDiffEtaSum is NULL in CheckPointersUsedInMake() !!!!"<<endl;
1856 cout<<
" WARNING (MH): f2pCorrelatorSinPsiSumEtaSum is NULL in CheckPointersUsedInMake() !!!!"<<endl;
1872 cout<<
" WARNING (MH): fAnalysisSettings is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
1879 cout<<
" WARNING (MH): f3pCorrelatorPro is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
1886 cout<<
" WARNING (MH): fNonIsotropicTermsPro is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
1893 cout<<
" WARNING (MH): f3pPOICorrelatorVsM is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
1900 cout<<
" WARNING (MH): f3pCorrelatorVsMPro is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
1907 cout<<
" WARNING (MH): f3pCorrelatorVsMHist is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
1914 cout<<
" WARNING (MH): fNonIsotropicTermsVsMPro is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
1922 cout<<
" WARNING (MH): f3pCorrelatorHist is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
1929 cout<<
" WARNING (MH): fDetectorBiasHist is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
1945 for(
Int_t sd=0;sd<2;sd++)
1950 cout<<
" WARNING (MH): "<<Form(
"f3pCorrelatorVsPtSumDiffPro[%d]",sd)<<
" is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
1957 cout<<
" WARNING (MH): "<<Form(
"f3pCorrelatorVsEtaSumDiffPro[%d]",sd)<<
" is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
1964 cout<<
" WARNING (MH): "<<Form(
"f3pCorrelatorVsPtSumDiffHist[%d]",sd)<<
" is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
1971 cout<<
" WARNING (MH): "<<Form(
"f3pCorrelatorVsEtaSumDiffHist[%d]",sd)<<
" is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
1975 for(
Int_t t=0;t<10;t++)
1980 cout<<
" WARNING (MH): "<<Form(
"fNonIsotropicTermsVsPtSumDiffPro[%d][%d]",sd,t)<<
" is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
1987 cout<<
" WARNING (MH): "<<Form(
"fNonIsotropicTermsVsEtaSumDiffPro[%d][%d]",sd,t)<<
" is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
1996 cout<<
" WARNING (MH): f2pCorrelatorCosPsiDiffPtDiff is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
2002 cout<<
" WARNING (MH): f2pCorrelatorCosPsiSumPtDiff is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
2008 cout<<
" WARNING (MH): f2pCorrelatorSinPsiDiffPtDiff is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
2014 cout<<
" WARNING (MH): f2pCorrelatorSinPsiSumPtDiff is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
2022 cout<<
" WARNING (MH): f2pCorrelatorCosPsiDiffPtSum is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
2028 cout<<
" WARNING (MH): f2pCorrelatorCosPsiSumPtSum is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
2034 cout<<
" WARNING (MH): f2pCorrelatorSinPsiDiffPtSum is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
2040 cout<<
" WARNING (MH): f2pCorrelatorSinPsiSumPtSum is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
2048 cout<<
" WARNING (MH): f2pCorrelatorCosPsiDiffEtaDiff is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
2054 cout<<
" WARNING (MH): f2pCorrelatorCosPsiSumEtaDiff is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
2060 cout<<
" WARNING (MH): f2pCorrelatorSinPsiDiffEtaDiff is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
2066 cout<<
" WARNING (MH): f2pCorrelatorSinPsiSumEtaDiff is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
2074 cout<<
" WARNING (MH): f2pCorrelatorCosPsiDiffEtaSum is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
2080 cout<<
" WARNING (MH): f2pCorrelatorCosPsiSumEtaSum is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
2086 cout<<
" WARNING (MH): f2pCorrelatorSinPsiDiffEtaSum is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
2092 cout<<
" WARNING (MH): f2pCorrelatorSinPsiSumEtaSum is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
2120 Double_t d3pCorrelatorPoiError = 0.;
2126 d3pCorrelatorPoiError);
2129 cout<<
"*******************************************************"<<endl;
2130 cout<<
"*******************************************************"<<endl;
2131 cout<<
" Mixed Harmonics "<<endl;
2135 cout<<
" cos["<<
fHarmonic<<
"(phi1+phi2-2phi3)] = "<<d3pCorrelator<<
" +/- "<<d3pCorrelatorError<<endl;
2136 cout<<
" cos["<<
fHarmonic<<
"(psi1+psi2-2phi3)] = "<<d3pCorrelatorPoi<<
" +/- "<<d3pCorrelatorPoiError<<endl;
2139 cout<<
" cos(phi1+phi2-2phi3) = "<<d3pCorrelator<<
" +/- "<<d3pCorrelatorError<<endl;
2140 cout<<
" cos(psi1+psi2-2phi3) = "<<d3pCorrelatorPoi<<
" +/- "<<d3pCorrelatorPoiError<<endl;
2144 cout<<
" Detector Bias = "<<
fDetectorBiasHist->GetBinContent(1)<<
" (not corrected for)"<<endl;
2147 cout<<
" Detector Bias = "<<
fDetectorBiasHist->GetBinContent(1)<<
" (corrected for)"<<endl;
2151 cout<<
"*******************************************************"<<endl;
2152 cout<<
"*******************************************************"<<endl;
2184 Double_t corrected3pCorrelator = 0.;
2185 Double_t nonIsotropicTerms[10] = {0.};
2186 for(
Int_t nit=0;nit<10;nit++)
2191 corrected3pCorrelator = measured3pCorrelator
2192 - nonIsotropicTerms[2]*nonIsotropicTerms[4]
2193 - nonIsotropicTerms[3]*nonIsotropicTerms[5]
2194 - 2.*nonIsotropicTerms[0]*nonIsotropicTerms[6]
2195 - 2.*nonIsotropicTerms[1]*nonIsotropicTerms[7]
2196 + 2.*nonIsotropicTerms[2]*(pow(nonIsotropicTerms[0],2.)-pow(nonIsotropicTerms[1],2.))
2197 + 4.*nonIsotropicTerms[3]*nonIsotropicTerms[0]*nonIsotropicTerms[1];
2209 if(TMath::Abs(measured3pCorrelator)>1.e-44)
2211 bias = corrected3pCorrelator/measured3pCorrelator;
2217 for(
Int_t sd=0;sd<2;sd++)
2226 Double_t correctedErr = measuredErr;
2241 corrected = measured
2242 - (cosPsiPOI1*cosPsiPOI2m2PhiRP-sinPsiPOI1*sinPsiPOI2m2PhiRP
2243 + cosPsiPOI2*cosPsiPOI1m2PhiRP-sinPsiPOI2*sinPsiPOI1m2PhiRP
2244 + cos2PhiRP*cosPsiPOI1pPsiPOI2+sin2PhiRP*sinPsiPOI1pPsiPOI2)
2245 + 2.*cos2PhiRP*(cosPsiPOI1*cosPsiPOI2-sinPsiPOI1*sinPsiPOI2)
2246 + 2.*sin2PhiRP*(cosPsiPOI1*sinPsiPOI2+sinPsiPOI1*cosPsiPOI2);
2261 Double_t correctedErr = measuredErr;
2276 corrected = measured
2277 - (cosPsiPOI1*cosPsiPOI2m2PhiRP-sinPsiPOI1*sinPsiPOI2m2PhiRP
2278 + cosPsiPOI2*cosPsiPOI1m2PhiRP-sinPsiPOI2*sinPsiPOI1m2PhiRP
2279 + cos2PhiRP*cosPsiPOI1pPsiPOI2+sin2PhiRP*sinPsiPOI1pPsiPOI2)
2280 + 2.*cos2PhiRP*(cosPsiPOI1*cosPsiPOI2-sinPsiPOI1*sinPsiPOI2)
2281 + 2.*sin2PhiRP*(cosPsiPOI1*sinPsiPOI2+sinPsiPOI1*cosPsiPOI2);
2301 Double_t corrected3pCorrelator = 0.;
2302 Double_t nonIsotropicTerms[10] = {0.};
2303 for(
Int_t nit=0;nit<10;nit++)
2308 corrected3pCorrelator = measured3pCorrelator
2309 - nonIsotropicTerms[2]*nonIsotropicTerms[4]
2310 - nonIsotropicTerms[3]*nonIsotropicTerms[5]
2311 - 2.*nonIsotropicTerms[0]*nonIsotropicTerms[6]
2312 - 2.*nonIsotropicTerms[1]*nonIsotropicTerms[7]
2313 + 2.*nonIsotropicTerms[2]*(pow(nonIsotropicTerms[0],2.)-pow(nonIsotropicTerms[1],2.))
2314 + 4.*nonIsotropicTerms[3]*nonIsotropicTerms[0]*nonIsotropicTerms[1];
2326 if(measured3pCorrelator)
2328 bias = corrected3pCorrelator/measured3pCorrelator;
2346 for(
Int_t sd=0;sd<2;sd++)
2353 for(
Int_t fs=0;fs<2;fs++)
2355 for(
Int_t sd=0;sd<2;sd++)
2361 for(
Int_t p12=0;p12<2;p12++)
2363 for(
Int_t ao=0;ao<2;ao++)
2365 for(
Int_t pe=0;pe<4;pe++)
2395 Double_t three1n1n2n = (pow(dReQ1n,2.)*dReQ2n + 2.*dReQ1n*dImQ1n*dImQ2n - pow(dImQ1n,2.)*dReQ2n
2396 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
2397 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*dMult)
2398 / (dMult*(dMult-1.)*(dMult-2.));
2458 Double_t reQ2nQ2nQ2nQ3nstarQ3nstar = pow(dReQ2n,3.)*pow(dReQ3n,2.)
2459 - 3.*dReQ2n*pow(dReQ3n,2.)*pow(dImQ2n,2.)
2460 + 6.*pow(dReQ2n,2.)*dReQ3n*dImQ2n*dImQ3n
2461 - 2.*dReQ3n*pow(dImQ2n,3.)*dImQ3n-pow(dReQ2n,3.)*pow(dImQ3n,2.)
2462 + 3.*dReQ2n*pow(dImQ2n,2.)*pow(dImQ3n,2.);
2463 Double_t reQ2nQ2nQ2nQ6nstar = dReQ6n*pow(dReQ2n,3)-3.*dReQ2n*dReQ6n*pow(dImQ2n,2)
2464 + 3.*dImQ2n*dImQ6n*pow(dReQ2n,2)-dImQ6n*pow(dImQ2n,3);
2465 Double_t reQ4nQ2nQ3nstarQ3nstar = (dReQ4n*dReQ2n-dImQ4n*dImQ2n)*(dReQ3n*dReQ3n-dImQ3n*dImQ3n)
2466 + 2.*(dReQ4n*dImQ2n+dImQ4n*dReQ2n)*dReQ3n*dImQ3n;
2467 Double_t reQ2nQ2nQ1nstarQ3nstar = (pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)
2468 + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n);
2469 Double_t reQ6nQ3nstarQ3nstar = pow(dReQ3n,2.)*dReQ6n + 2.*dReQ3n*dImQ3n*dImQ6n
2470 - pow(dImQ3n,2.)*dReQ6n;
2471 Double_t reQ4nQ2nQ6nstar = dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n
2472 + dImQ6n*dImQ4n*dReQ2n;
2473 Double_t reQ4nQ1nstarQ3nstar = dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n);
2474 Double_t reQ2nQ2nQ4nstar = pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n;
2475 Double_t reQ2nQ1nQ3nstar = dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n
2476 + dImQ3n*dImQ2n*dReQ1n;
2477 Double_t reQ2nQ1nstarQ1nstar = pow(dReQ1n,2.)*dReQ2n + 2.*dReQ1n*dImQ1n*dImQ2n - pow(dImQ1n,2.)*dReQ2n;
2479 five2n2n2n3n3n = (reQ2nQ2nQ2nQ3nstarQ3nstar-reQ2nQ2nQ2nQ6nstar-3.*reQ4nQ2nQ3nstarQ3nstar
2480 - 6.*reQ2nQ2nQ1nstarQ3nstar+2.*reQ6nQ3nstarQ3nstar+3.*reQ4nQ2nQ6nstar
2481 + 6.*reQ4nQ1nstarQ3nstar+6.*reQ2nQ2nQ4nstar
2482 + 12.*reQ2nQ1nQ3nstar+6.*reQ2nQ1nstarQ1nstar
2483 - 2.*((pow(dReQ6n,2.)+pow(dImQ6n,2.))
2484 + 3.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
2485 + 6.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
2486 + 9.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
2487 + 6.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-12.*dMult))
2488 /(dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
2490 f5pCorrelatorPro->Fill(0.5,five2n2n2n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
2540 cosP1n = dReQ1n/dMult;
2541 sinP1n = dImQ1n/dMult;
2542 cosP2n = dReQ2n/dMult;
2543 sinP2n = dImQ2n/dMult;
2580 cosP1nP1n = (pow(dReQ1n,2)-pow(dImQ1n,2)-dReQ2n)/(dMult*(dMult-1));
2581 sinP1nP1n = (2.*dReQ1n*dImQ1n-dImQ2n)/(dMult*(dMult-1));
2582 cosP2nM1n = (dReQ2n*dReQ1n+dImQ2n*dImQ1n-dReQ1n)/(dMult*(dMult-1));
2583 sinP2nM1n = (dImQ2n*dReQ1n-dReQ2n*dImQ1n-dImQ1n)/(dMult*(dMult-1));
2670 Int_t iBinCounter = 0;
2671 Double_t gSumBinContentTimesWeight = 0., gSumWeight = 0.;
2672 Double_t gSumBinContentTimesWeightSquared = 0.;
2679 for(
Int_t sd=0;sd<2;sd++)
2699 Double_t weight = mp*dMult-mOverlap1-mOverlap2;
2701 Double_t cosP2nphi1M1npsi2M1npsi2 = 0;
2704 cosP2nphi1M1npsi2M1npsi2 = (p1nRe*dReQ2n+p1nIm*dImQ2n-overlap1-overlap2)/(weight);
2712 gSumBinContentTimesWeightSquared += TMath::Power(gSumBinContentTimesWeight,2);
2730 if(weight>0. && mpPOI1>0.)
2735 if(weight>0. && mpPOI2>0.)
2740 if(weight>0. && mpPOI1*dMult-mqPOI1>0.)
2743 (p1nRePOI1*dReQ2n+p1nImPOI1*dImQ2n-q1nRePOI1)/(mpPOI1*dMult-mqPOI1),mpPOI1*dMult-mqPOI1);
2745 (p1nImPOI1*dReQ2n-p1nRePOI1*dImQ2n+q1nImPOI1)/(mpPOI1*dMult-mqPOI1),mpPOI1*dMult-mqPOI1);
2747 if(weight>0. && mpPOI2*dMult-mqPOI2>0.)
2750 (p1nRePOI2*dReQ2n+p1nImPOI2*dImQ2n-q1nRePOI2)/(mpPOI2*dMult-mqPOI2),mpPOI2*dMult-mqPOI2);
2752 (p1nImPOI2*dReQ2n-p1nRePOI2*dImQ2n+q1nImPOI2)/(mpPOI2*dMult-mqPOI2),mpPOI2*dMult-mqPOI2);
2754 if(weight>0. && mp>0.)
2779 Double_t weight = mp*dMult-mOverlap1-mOverlap2;
2781 Double_t cosP2nphi1M1npsi2M1npsi2 = 0;
2784 cosP2nphi1M1npsi2M1npsi2 = (p1nRe*dReQ2n+p1nIm*dImQ2n-overlap1-overlap2)/(weight);
2803 if(weight>0. && mpPOI1>0.)
2808 if(weight>0. && mpPOI2>0.)
2813 if(weight>0. && mpPOI1*dMult-mqPOI1>0.)
2816 (p1nRePOI1*dReQ2n+p1nImPOI1*dImQ2n-q1nRePOI1)/(mpPOI1*dMult-mqPOI1),mpPOI1*dMult-mqPOI1);
2818 (p1nImPOI1*dReQ2n-p1nRePOI1*dImQ2n+q1nImPOI1)/(mpPOI1*dMult-mqPOI1),mpPOI1*dMult-mqPOI1);
2820 if(weight>0. && mpPOI2*dMult-mqPOI2>0.)
2823 (p1nRePOI2*dReQ2n+p1nImPOI2*dImQ2n-q1nRePOI2)/(mpPOI2*dMult-mqPOI2),mpPOI2*dMult-mqPOI2);
2825 (p1nImPOI2*dReQ2n-p1nRePOI2*dImQ2n+q1nImPOI2)/(mpPOI2*dMult-mqPOI2),mpPOI2*dMult-mqPOI2);
2827 if(weight>0. && mp>0.)
2835 gIntegratedValue = -1000.;
2836 if((gSumWeight)&&(iBinCounter))
2837 gIntegratedValue = gSumBinContentTimesWeight/gSumWeight;
2861 for(
Int_t iBin = 1; iBin <= g3pCorrelatorVsPt->GetNbinsX(); iBin++) {
2862 gSumXi += g3pCorrelatorVsPt->GetBinEntries(iBin);
2863 gSumYi += g3pCorrelatorVsPt->GetBinContent(iBin);
2864 gSumXiYi += g3pCorrelatorVsPt->GetBinEntries(iBin)*g3pCorrelatorVsPt->GetBinContent(iBin);
2865 gSumXiYi2 += g3pCorrelatorVsPt->GetBinEntries(iBin)*TMath::Power(g3pCorrelatorVsPt->GetBinContent(iBin),2);
2866 gSumXi2Yi2 += TMath::Power(g3pCorrelatorVsPt->GetBinEntries(iBin)*g3pCorrelatorVsPt->GetBinContent(iBin),2);
2867 gSumDeltaXi2 += TMath::Power(g3pCorrelatorVsPt->GetBinError(iBin),2);
2868 gSumYi2DeltaXi2 += TMath::Power(g3pCorrelatorVsPt->GetBinContent(iBin),2) + TMath::Power(g3pCorrelatorVsPt->GetBinError(iBin),2);
2871 g3pCorrelatorValue = -1000.;
2872 g3pCorrelatorError = 1000.;
2875 g3pCorrelatorValue = gSumXiYi/gSumXi;
2876 if((gSumXi != 0.)&&(gSumXiYi != 0.))
2877 g3pCorrelatorError = TMath::Abs((gSumXiYi/gSumXi))*TMath::Sqrt(TMath::Power((TMath::Sqrt(gSumYi2DeltaXi2)/gSumXiYi),2) + TMath::Power((gSumDeltaXi2/gSumXi),2));
Double_t GetEtaMax() const
void SetAnalysisSettings(TProfile *const as)
TList * fNonIsotropicTermsList
TProfile * fCommonConstants
virtual void WriteHistograms(TString outputFileName)
virtual void StoreHarmonic()
void Set2pCorrelatorSinPsiDiffEtaSum(TProfile *const g2pCorrelatorSinPsiDiffEtaSum)
TProfile * f3pPOICorrelatorVsM
void Set3pCorrelatorVsEtaSumDiffPro(TProfile *const s3pcvpsd, Int_t const sd)
Double_t fMinMultiplicity
AliFlowCommonHist * fCommonHists
virtual void GetOutputHistograms(TList *outputListHistos)
virtual void PrintOnTheScreen()
TProfile * f2pCorrelatorSinPsiSumEtaDiff
TProfile * fUseParticleWeights
void Set2pCorrelatorSinPsiSumEtaSum(TProfile *const g2pCorrelatorSinPsiSumEtaSum)
TProfile * f2pCorrelatorCosPsiDiffEtaDiff
void SetDetectorBiasHist(TH1D *const dbHist)
void Set3pCorrelatorVsPtSumDiffPro(TProfile *const s3pcvpsd, Int_t const sd)
void Set2pCorrelatorSinPsiDiffPtDiff(TProfile *const g2pCorrelatorSinPsiDiffPtDiff)
void Set3pCorrelatorVsMHist(TH1D *const s3pVsMHist)
virtual void CalculateNonIsotropicTerms()
void SetCommonHists(AliFlowCommonHist *const ch)
TProfile * fImNITEBE[2][2][4]
AliFlowTrackSimple * GetTrack(Int_t i)
TProfile * f3pCorrelatorPro
void Set2pCorrelatorSinPsiDiffPtSum(TProfile *const g2pCorrelatorSinPsiDiffPtSum)
TProfile * f2pCorrelatorSinPsiDiffEtaDiff
void SetDetectorBiasVsMHist(TH1D *const dbVsMHist)
Bool_t fCorrectForDetectorEffects
TProfile * f2pCorrelatorCosPsiDiffEtaSum
virtual void BookDefault()
virtual void BookDifferential()
Int_t GetNbinsPhi() const
void Set2pCorrelatorCosPsiSumEtaDiff(TProfile *const g2pCorrelatorCosPsiSumEtaDiff)
Double_t GetPtMin() const
Int_t GetEventNSelTracksRP() const
Double_t fMultipicityBinWidth
void Set2pCorrelatorCosPsiSumPtSum(TProfile *const g2pCorrelatorCosPsiSumPtSum)
Double_t GetPtMax() const
TProfile * f2pCorrelatorSinPsiDiffPtSum
void Set2pCorrelatorSinPsiSumPtSum(TProfile *const g2pCorrelatorSinPsiSumPtSum)
TProfile * fOverlapEBE2[2][2]
void Set3pCorrelatorHist(TH1D *const s3pHist)
TH1D * f3pCorrelatorVsEtaSumDiffHist[2]
TProfile * f3pCorrelatorVsPtSumDiffPro[2]
virtual void AccessSettings()
Bool_t InRPSelection() const
Bool_t FillControlHistograms(AliFlowEventSimple *anEvent, TList *weightsList=NULL, Bool_t usePhiWeights=kFALSE, Bool_t usePtWeights=kFALSE, Bool_t useEtaWeights=kFALSE)
TProfile * f2pCorrelatorCosPsiDiffPtDiff
virtual void Calculate3pCorrelator()
Bool_t fEvaluateDifferential3pCorrelator
TProfile * f2pCorrelatorSinPsiSumPtDiff
virtual void ResetEventByEventQuantities()
TProfile * f5pCorrelatorPro
virtual void CorrectForDetectorEffectsVsM()
void Set3pCorrelatorVsEtaSumDiffHist(TH1D *const hist, Int_t const sd)
TProfile * f2pCorrelatorCosPsiSumEtaDiff
virtual void GetPointersForBaseHistograms()
virtual void Make(AliFlowEventSimple *anEvent)
TProfile * f2pCorrelatorSinPsiSumPtSum
TProfile * f2pCorrelatorCosPsiSumEtaSum
TProfile * f2pCorrelatorCosPsiDiffPtSum
TProfile * fNonIsotropicTermsVsEtaSumDiffPro[2][10]
TProfile * f2pCorrelatorSinPsiSumEtaSum
virtual void BookProfileHoldingSettings()
void Set2pCorrelatorSinPsiDiffEtaDiff(TProfile *const g2pCorrelatorSinPsiDiffEtaDiff)
virtual void GetCorrelatorAndError(TProfile *g3pCorrelatorVsPt, Double_t &g3pCorrelatorValue, Double_t &g3pCorrelatorError)
void Set2pCorrelatorCosPsiDiffPtDiff(TProfile *const g2pCorrelatorCosPsiDiffPtDiff)
Double_t GetPhiMax() const
virtual void BookAndNestAllLists()
Int_t fNoOfMultipicityBins
TProfile * f3pCorrelatorVsEtaSumDiffPro[2]
void Set2pCorrelatorSinPsiSumPtDiff(TProfile *const g2pCorrelatorSinPsiSumPtDiff)
virtual void GetPointersForAllEventProfiles()
virtual void CrossCheckSettings()
TProfile * f3pCorrelatorVsMPro
virtual void CalculateDifferential3pCorrelator(Double_t &gIntegratedValue)
Int_t GetNbinsEta() const
void Set2pCorrelatorSinPsiSumEtaDiff(TProfile *const g2pCorrelatorSinPsiSumEtaDiff)
virtual ~AliFlowAnalysisWithMixedHarmonics()
virtual void BookAllEventByEventQuantities()
void SetHistList(TList *const hl)
static AliFlowCommonConstants * GetMaster()
TProfile * fOverlapEBE[2][2]
void Set3pCorrelatorPro(TProfile *const s3pPro)
Bool_t fOppositeChargesPOI
virtual void CheckPointersUsedInMake()
void Set2pCorrelatorCosPsiSumEtaSum(TProfile *const g2pCorrelatorCosPsiSumEtaSum)
virtual void BookAllAllEventQuantities()
Bool_t Data(TH1F *h, Double_t *rangefit, Bool_t writefit, Double_t &sgn, Double_t &errsgn, Double_t &bkg, Double_t &errbkg, Double_t &sgnf, Double_t &errsgnf, Double_t &sigmafit, Int_t &status)
TH1D * fDetectorBiasVsMHist
void Set3pPOICorrelatorVsM(TProfile *const s3pPOIVsM)
TProfile * f2pCorrelatorCosPsiSumPtDiff
ClassImp(AliFlowAnalysisWithMixedHarmonics) AliFlowAnalysisWithMixedHarmonics
void SetNonIsotropicTermsVsMPro(TProfile2D *const nitVsMPro)
TProfile * f2pCorrelatorSinPsiDiffPtDiff
TH1D * f3pCorrelatorVsMHist
Int_t GetReferenceMultiplicity() const
void SetNonIsotropicTermsVsPtSumDiffPro(TProfile *const nt, Int_t const sd, Int_t const t)
virtual void CorrectForDetectorEffects()
virtual void BookAndFillWeightsHistograms()
TProfile * f2pCorrelatorSinPsiDiffEtaSum
Double_t GetPhiMin() const
Double_t GetEtaMin() const
void Set5pCorrelatorPro(TProfile *const s5pPro)
void SetNonIsotropicTermsVsEtaSumDiffPro(TProfile *const nt, Int_t const sd, Int_t const t)
TProfile * fNonIsotropicTermsVsPtSumDiffPro[2][10]
TProfile * f2pCorrelatorCosPsiSumPtSum
TProfile2D * fNonIsotropicTermsVsMPro
Bool_t InPOISelection(Int_t poiType=1) const
TH1D * f3pCorrelatorVsPtSumDiffHist[2]
void Set2pCorrelatorCosPsiDiffPtSum(TProfile *const g2pCorrelatorCosPsiDiffPtSum)
TProfile * fAnalysisSettings
virtual void Calculate5pCorrelator()
TProfile * fNonIsotropicTermsPro
void Set3pCorrelatorVsPtSumDiffHist(TH1D *const hist, Int_t const sd)
virtual void GetPointersForCommonHistograms()
void SetNonIsotropicTermsPro(TProfile *const nitPro)
void Set2pCorrelatorCosPsiDiffEtaDiff(TProfile *const g2pCorrelatorCosPsiDiffEtaDiff)
void Set2pCorrelatorCosPsiSumPtDiff(TProfile *const g2pCorrelatorCosPsiSumPtDiff)
void Set2pCorrelatorCosPsiDiffEtaSum(TProfile *const g2pCorrelatorCosPsiDiffEtaSum)
virtual void CheckPointersUsedInFinish()
virtual void InitializeArrays()
virtual void BookCommonHistograms()
virtual void GetPointersForResultsHistograms()
TProfile * fReNITEBE[2][2][4]
virtual void AccessConstants(TString method)
void Set3pCorrelatorVsMPro(TProfile *const s3pVsMPro)
Int_t NumberOfTracks() const