24 #define AliFlowAnalysisWithMultiparticleCorrelations_cxx 41 fInternalFlagsPro(NULL),
42 fUseInternalFlags(kFALSE),
46 fPropagateError(kTRUE),
48 fDumpThePoints(kFALSE),
49 fMaxNoEventsPerFile(100),
50 fSelectRandomlyRPs(kFALSE),
51 fnSelectedRandomlyRPs(-44),
52 fRandomIndicesRPs(NULL),
54 fControlHistogramsList(NULL),
55 fControlHistogramsFlagsPro(NULL),
56 fFillControlHistograms(kFALSE),
57 fFillKinematicsHist(kFALSE),
58 fFillMultDistributionsHist(kFALSE),
59 fFillMultCorrelationsHist(kFALSE),
60 fSkipSomeIntervals(kFALSE),
61 fNumberOfSkippedRPParticles(0),
64 fQvectorFlagsPro(NULL),
65 fCalculateQvector(kFALSE),
66 fCalculateDiffQvectors(kFALSE),
68 fCorrelationsList(NULL),
69 fCorrelationsFlagsPro(NULL),
70 fCalculateCorrelations(kFALSE),
73 fCalculateIsotropic(kFALSE),
74 fCalculateSame(kFALSE),
75 fSkipZeroHarmonics(kFALSE),
76 fCalculateSameIsotropic(kFALSE),
77 fCalculateAll(kFALSE),
79 fCalculateOnlyForHarmonicQC(kFALSE),
80 fCalculateOnlyForSC(kFALSE),
81 fCalculateOnlyCos(kFALSE),
82 fCalculateOnlySin(kFALSE),
84 fEbECumulantsList(NULL),
85 fEbECumulantsFlagsPro(NULL),
86 fCalculateEbECumulants(kFALSE),
89 fWeightsFlagsPro(NULL),
91 fNestedLoopsList(NULL),
92 fNestedLoopsFlagsPro(NULL),
93 fCrossCheckWithNestedLoops(kFALSE),
94 fCrossCheckDiffWithNestedLoops(kFALSE),
95 fNestedLoopsResultsCosPro(NULL),
96 fNestedLoopsResultsSinPro(NULL),
97 fNestedLoopsDiffResultsPro(NULL),
99 fStandardCandlesList(NULL),
100 fStandardCandlesFlagsPro(NULL),
101 fCalculateStandardCandles(kFALSE),
102 fPropagateErrorSC(kTRUE),
103 fStandardCandlesHist(NULL),
104 fProductsSCPro(NULL),
106 fQcumulantsList(NULL),
107 fQcumulantsFlagsPro(NULL),
108 fCalculateQcumulants(kFALSE),
110 fPropagateErrorQC(kTRUE),
111 fQcumulantsHist(NULL),
112 fReferenceFlowHist(NULL),
113 fProductsQCPro(NULL),
115 fDiffCorrelationsList(NULL),
116 fDiffCorrelationsFlagsPro(NULL),
117 fCalculateDiffCorrelations(kFALSE),
118 fCalculateDiffCos(kTRUE),
119 fCalculateDiffSin(kFALSE),
120 fCalculateDiffCorrelationsVsPt(kTRUE),
121 fUseDefaultBinning(kTRUE),
123 fRangesDiffBins(NULL),
126 fSymmetryPlanesList(NULL),
127 fSymmetryPlanesFlagsPro(NULL),
128 fCalculateSymmetryPlanes(kFALSE),
131 fEtaGapsFlagsPro(NULL),
132 fCalculateEtaGaps(kFALSE),
133 fLowestHarmonicEtaGaps(1),
134 fHighestHarmonicEtaGaps(6)
142 fHistList =
new TList();
143 fHistList->SetName(
"cobjMPC");
144 fHistList->SetOwner(kTRUE);
147 this->InitializeArraysForControlHistograms();
148 this->InitializeArraysForQvector();
149 this->InitializeArraysForCorrelations();
150 this->InitializeArraysForEbECumulants();
151 this->InitializeArraysForWeights();
152 this->InitializeArraysForQcumulants();
153 this->InitializeArraysForDiffCorrelations();
154 this->InitializeArraysForSymmetryPlanes();
155 this->InitializeArraysForNestedLoops();
156 this->InitializeArraysForEtaGaps();
188 Bool_t oldHistAddStatus = TH1::AddDirectoryStatus();
189 TH1::AddDirectory(kFALSE);
213 TH1::AddDirectory(oldHistAddStatus);
256 for(
Int_t t=0;t<nTracks;t++)
259 if(!pTrack){printf(
"\n AAAARGH: pTrack is NULL in MPC::FCH() !!!!");
continue;}
268 Double_t dPhiPtEta[3] = {dPhi,dPt,dEta};
272 Bool_t bAlreadyCounted = kFALSE;
273 for(
Int_t ppe=0;ppe<3;ppe++)
276 for(
Int_t b=0;b<10;b+=2)
279 if(dPhiPtEta[ppe]>=
fSkip[ppe][b] && dPhiPtEta[ppe]<
fSkip[ppe][b+1])
285 bAlreadyCounted = kTRUE;
291 if(!bPasses){
continue;}
358 printf(
"\n ... Closing the curtains ... \n\n");
372 TString sMethodName =
"AliFlowAnalysisWithMultiparticleCorrelations::CrossCheckPointersUsedInFinish()";
377 for(
Int_t cs=0;cs<2;cs++)
385 if(!
fCorrelationsPro[cs][
c]){Fatal(sMethodName.Data(),
"fCorrelationsPro[%d][%d] is NULL, for one reason or another...",cs,
c);}
389 {Fatal(sMethodName.Data(),
"fCalculateQcumulants && fPropagateErrorQC && !fProductsQCPro");}
395 if(!
fStandardCandlesHist){Fatal(sMethodName.Data(),
"fStandardCandlesHist is NULL, for one reason or another...");}
398 if(!
fProductsSCPro){Fatal(sMethodName.Data(),
"fProductsSCPro is NULL, for one reason or another...");}
405 if(!
fQcumulantsHist){Fatal(sMethodName.Data(),
"fQcumulantsHist is NULL, for one reason or another...");}
406 if(!
fReferenceFlowHist){Fatal(sMethodName.Data(),
"fReferenceFlowHist is NULL, for one reason or another...");}
409 if(!
fProductsQCPro){Fatal(sMethodName.Data(),
"fProductsQCPro is NULL, for one reason or another...");}
425 TString sMethodName =
"AliFlowAnalysisWithMultiparticleCorrelations::CrossCheckPointersUsedInMake()";
430 for(
Int_t cs=0;cs<2;cs++)
438 if(!
fCorrelationsPro[cs][
c]){Fatal(sMethodName.Data(),
"fCorrelationsPro[%d][%d] is NULL, for one reason or another...",cs,
c);}
442 {Fatal(sMethodName.Data(),
"fCalculateQcumulants && fPropagateErrorQC && !fProductsQCPro");}
448 for(
Int_t cs=0;cs<2;cs++)
452 if(!
fEbECumulantsPro[cs][
c]){Fatal(sMethodName.Data(),
"fEbECumulantsPro[%d][%d] is NULL, for one reason or another...",cs,
c);}
476 for(
Int_t i=0;i<nPrim;i++)
480 for(
Int_t i=nPrim-1;i>=1;i--)
499 TString sMethodName =
"AliFlowAnalysisWithMultiparticleCorrelations::CalculateStandardCandles()";
504 for(
Int_t b=1;b<=nBins;b++)
523 if(n1.EqualTo(
"-") || n1.EqualTo(
",")){Fatal(sMethodName.Data(),
"n1.EqualTo...");}
524 if(n2.EqualTo(
"-") || n2.EqualTo(
",")){Fatal(sMethodName.Data(),
"n2.EqualTo...");}
525 TString labeln1n1 = Form(
"Cos(-%s,%s)",n1.Data(),n1.Data());
526 TString labeln2n2 = Form(
"Cos(-%s,%s)",n2.Data(),n2.Data());
533 for(
Int_t b4p=1;b4p<=nBins4p;b4p++)
535 if(labeln1n2n2n1.EqualTo(
fCorrelationsPro[0][3]->GetXaxis()->GetBinLabel(b4p)))
543 if(TMath::Abs(dCosn1n2n2n1) < 1.e-44)
545 cout<<Form(
"labeln1n2n2n1 = %s",labeln1n2n2n1.Data())<<endl;
546 Warning(sMethodName.Data(),
"TMath::Abs(dCosn1n2n2n1) < 1.e-44 !!!!");
550 for(
Int_t b2p=1;b2p<=nBins2p;b2p++)
558 else if(labeln2n2.EqualTo(
fCorrelationsPro[0][1]->GetXaxis()->GetBinLabel(b2p)))
564 if(TMath::Abs(dCosn1n1) > 0. && TMath::Abs(dCosn2n2) > 0.){
break;}
566 if(TMath::Abs(dCosn1n1) < 1.e-44)
568 cout<<Form(
"labeln1n1 = %s",labeln1n1.Data())<<endl;
569 Warning(sMethodName.Data(),
"TMath::Abs(dCosn1n1) < 1.e-44 !!!!");
571 if(TMath::Abs(dCosn2n2) < 1.e-44)
573 cout<<Form(
"labeln2n2 = %s",labeln2n2.Data())<<endl;
574 Warning(sMethodName.Data(),
"TMath::Abs(dCosn2n2) < 1.e-44 !!!!");
578 dSCn1n2n2n1 = dCosn1n2n2n1-dCosn1n1*dCosn2n2;
596 Double_t dSCn1n2n2n1ErrSquared = pow(dCosn1n1,2.)*pow(dCosn2n2Err,2.) + pow(dCosn2n2,2.)*pow(dCosn1n1Err,2.)
597 + pow(dCosn1n2n2n1Err,2.) + 2.*dCosn1n1*dCosn2n2*wCovCosn1n1Cosn2n2
598 - 2.*dCosn1n1*wCovCosn1n2n2n1Cosn2n2 - 2.*dCosn2n2*wCovCosn1n2n2n1Cosn1n1;
599 if(dSCn1n2n2n1ErrSquared > 0.)
601 dSCn1n2n2n1Err = pow(dSCn1n2n2n1ErrSquared,0.5);
604 Warning(sMethodName.Data(),
"dSCn1n2n2n1ErrSquared > 0. is not satisfied for %s !!!!",labeln1n2n2n1.ReplaceAll(
"Cos",
"SC").Data());
627 for(
Int_t cs=0;cs<2;cs++)
643 for(
Int_t cs=0;cs<2;cs++)
659 for(
Int_t cs=0;cs<2;cs++)
690 for(
Int_t gc=0;gc<1;gc++)
692 for(
Int_t n=0;n<2;n++)
718 for(
Int_t h=0;h<6;h++)
735 TString sMethodName =
"AliFlowAnalysisWithMultiparticleCorrelations::CalculateCorrelations(AliFlowEventSimple *anEvent)";
736 if(!anEvent){Fatal(sMethodName.Data(),
"'anEvent'!?!? You again!!!!");}
742 for(
Int_t cs=0;cs<2;cs++)
746 for(
Int_t co=0;co<8;co++)
748 if(dMultRP < co+1){
break;}
752 for(
Int_t b=1;b<=nBins;b++)
755 if(sBinLabel.EqualTo(
"")){
break;}
762 }
else{Warning(sMethodName.Data(),
"if(den>0.)");}
781 TString sMethodName =
"AliFlowAnalysisWithMultiparticleCorrelations::CalculateCorrelations(AliFlowEventSimple *anEvent)";
782 if(!anEvent){Fatal(sMethodName.Data(),
"'anEvent'!?!? You again!!!!");}
785 for(
Int_t cs=0;cs<2;cs++)
787 if(nBins != 0){
break;}
788 for(
Int_t co=0;co<4;co++)
800 for(
Int_t b=1;b<=nBins;b++)
823 for(
Int_t b=1;b<=nBins;b++)
852 TString sMethodName =
"AliFlowAnalysisWithMultiparticleCorrelations::CalculateEtaGaps(AliFlowEventSimple *anEvent)";
853 if(!anEvent){Fatal(sMethodName.Data(),
"'anEvent'? What's wrong with you today...");}
855 TComplex Qa[6][11] = {{TComplex(0.,0.)}};
857 TComplex Qb[6][11] = {{TComplex(0.,0.)}};
859 Double_t dEtaGaps[11] = {1.0,0.9,0.8,0.7,0.6,0.5,0.4,0.3,0.2,0.1,0.0};
865 for(
Int_t t=0;t<nTracks;t++)
868 if(!pTrack){printf(
"\n pTrack is NULL in MPC::CalculateEtaGaps(AliFlowEventSimple *anEvent) !!!!");
continue;}
874 dPhi = pTrack->
Phi();
880 dEta = pTrack->
Eta();
888 for(
Int_t eg=0;eg<11;eg++)
890 if(dEta<-1.*dEtaGaps[eg]/2.)
892 Qa[h][eg] += TComplex(wToPowerP*TMath::Cos((h+1)*dPhi),wToPowerP*TMath::Sin((h+1)*dPhi));
893 Ma[h][eg]+=wToPowerP;
902 for(
Int_t eg=0;eg<11;eg++)
904 if(dEta>dEtaGaps[eg]/2.)
906 Qb[h][eg] += TComplex(wToPowerP*TMath::Cos((h+1)*dPhi),wToPowerP*TMath::Sin((h+1)*dPhi));
907 Mb[h][eg]+=wToPowerP;
918 for(
Int_t eg=0;eg<11;eg++)
920 if(!(Qa[h][eg].Rho()>0. && Qb[h][eg].Rho()>0.)){
continue;}
921 if(!(Ma[h][eg]>0. && Mb[h][eg]>0.)){
continue;}
922 fEtaGapsPro[h]->Fill(eg+0.5,TComplex(Qa[h][eg]*TComplex::Conjugate(Qb[h][eg])).Re()/(Ma[h][eg]*Mb[h][eg]),Ma[h][eg]*Mb[h][eg]);
944 TString sMethodName =
"AliFlowAnalysisWithMultiparticleCorrelations::CastStringToCorrelation(const char *string, Bool_t numerator)";
946 if(!(
TString(
string).BeginsWith(
"Cos") ||
TString(
string).BeginsWith(
"Sin")))
948 cout<<Form(
"And the fatal string is... '%s'. Congratulations!!",
string)<<endl;
949 Fatal(sMethodName.Data(),
"!(TString(string).BeginsWith(...");
953 if(
TString(
string).BeginsWith(
"Sin")){bRealPart = kFALSE;}
955 Int_t n[8] = {0,0,0,0,0,0,0,0};
959 if(
TString(
string[t]).EqualTo(
",") ||
TString(
string[t]).EqualTo(
")"))
961 n[whichCorr] =
string[t-1] -
'0';
962 if(
TString(
string[t-2]).EqualTo(
"-")){n[whichCorr] = -1*n[whichCorr];}
963 if(!(
TString(
string[t-2]).EqualTo(
"-")
964 ||
TString(
string[t-2]).EqualTo(
",")
965 ||
TString(
string[t-2]).EqualTo(
"(")))
967 cout<<Form(
"And the fatal string is... '%s'. Congratulations!!",
string)<<endl;
968 Fatal(sMethodName.Data(),
"!(TString(string[t-2]).EqualTo(...");
971 if(whichCorr>=9){Fatal(sMethodName.Data(),
"whichCorr>=9");}
978 if(!numerator){dValue =
One(0).Re();}
979 else if(bRealPart){dValue =
One(n[0]).Re();}
980 else{dValue =
One(n[0]).Im();}
984 if(!numerator){dValue =
Two(0,0).Re();}
985 else if(bRealPart){dValue =
Two(n[0],n[1]).Re();}
986 else{dValue =
Two(n[0],n[1]).Im();}
990 if(!numerator){dValue =
Three(0,0,0).Re();}
991 else if(bRealPart){dValue =
Three(n[0],n[1],n[2]).Re();}
992 else{dValue =
Three(n[0],n[1],n[2]).Im();}
996 if(!numerator){dValue =
Four(0,0,0,0).Re();}
997 else if(bRealPart){dValue =
Four(n[0],n[1],n[2],n[3]).Re();}
998 else{dValue =
Four(n[0],n[1],n[2],n[3]).Im();}
1002 if(!numerator){dValue =
Five(0,0,0,0,0).Re();}
1003 else if(bRealPart){dValue =
Five(n[0],n[1],n[2],n[3],n[4]).Re();}
1004 else{dValue =
Five(n[0],n[1],n[2],n[3],n[4]).Im();}
1008 if(!numerator){dValue =
Six(0,0,0,0,0,0).Re();}
1009 else if(bRealPart){dValue =
Six(n[0],n[1],n[2],n[3],n[4],n[5]).Re();}
1010 else{dValue =
Six(n[0],n[1],n[2],n[3],n[4],n[5]).Im();}
1014 if(!numerator){dValue =
Seven(0,0,0,0,0,0,0).Re();}
1015 else if(bRealPart){dValue =
Seven(n[0],n[1],n[2],n[3],n[4],n[5],n[6]).Re();}
1016 else{dValue =
Seven(n[0],n[1],n[2],n[3],n[4],n[5],n[6]).Im();}
1020 if(!numerator){dValue =
Eight(0,0,0,0,0,0,0,0).Re();}
1021 else if(bRealPart){dValue =
Eight(n[0],n[1],n[2],n[3],n[4],n[5],n[6],n[7]).Re();}
1022 else{dValue =
Eight(n[0],n[1],n[2],n[3],n[4],n[5],n[6],n[7]).Im();}
1026 cout<<Form(
"And the fatal 'whichCorr' value is... %d. Congratulations!!",whichCorr)<<endl;
1027 Fatal(sMethodName.Data(),
"switch(whichCorr)");
1040 TString sMethodName =
"AliFlowAnalysisWithMultiparticleCorrelations::CalculateProductsOfCorrelations(AliFlowEventSimple *anEvent, TProfile2D *profile2D)";
1041 if(!anEvent){Fatal(sMethodName.Data(),
"Sorry, 'anEvent' is on holidays.");}
1042 if(!profile2D){Fatal(sMethodName.Data(),
"Sorry, 'profile2D' is on holidays.");}
1044 Int_t nBins = profile2D->GetXaxis()->GetNbins();
1045 for(
Int_t bx=2;bx<=nBins;bx++)
1047 for(
Int_t by=1;by<bx;by++)
1049 const char *binLabelX = profile2D->GetXaxis()->GetBinLabel(bx);
1050 const char *binLabelY = profile2D->GetYaxis()->GetBinLabel(by);
1057 if(TMath::Abs(denX) > 0. && TMath::Abs(denY) > 0.)
1059 profile2D->Fill(bx-0.5,by-0.5,(numX/denX)*(numY/denY),wX*wY);
1063 cout<<
"Cannot calculate product for:"<<endl;
1064 cout<<Form(
"binLabelX = %s",binLabelX)<<endl;
1065 cout<<Form(
"binLabelY = %s",binLabelY)<<endl;
1066 cout<<Form(
"anEvent->GetNumberOfRPs() = %d",anEvent->
GetNumberOfRPs())<<endl;
1068 Fatal(sMethodName.Data(),
"if(TMath::Abs(denX) > 0. && TMath::Abs(denY) > 0.)");
1085 TString sMethodName =
"AliFlowAnalysisWithMultiparticleCorrelations::CalculateEbECumulants(AliFlowEventSimple *anEvent)";
1086 if(!anEvent){Fatal(sMethodName.Data(),
"'anEvent'!?!? You again!!!!");}
1100 TComplex oneN =
One(n1);
1103 if(oneD>0. && dMultRP>=1)
1107 }
else {Warning(sMethodName.Data(),
"if(oneD>0. && dMultRP>=1) ");}
1120 - (
One(n1).Re()/
One(0).Re())*(
One(n2).Re()/
One(0).Re())
1121 + (
One(n1).Im()/
One(0).Re())*(
One(n2).Im()/
One(0).Re());
1124 - (
One(n1).Re()/
One(0).Re())*(
One(n2).Im()/
One(0).Re())
1125 - (
One(n2).Re()/
One(0).Re())*(
One(n1).Im()/
One(0).Re());
1131 }
else {Warning(sMethodName.Data(),
"/*twoD>0. &&*/ dMultRP>=2");}
1283 if(!pTrack){exit(0);}
1288 Double_t dPhiPtEta[3] = {dPhi,dPt,dEta};
1292 for(
Int_t ppe=0;ppe<3;ppe++)
1294 if(!bPasses){
break;}
1295 for(
Int_t b=0;b<10;b+=2)
1298 if(dPhiPtEta[ppe]>=
fSkip[ppe][b] && dPhiPtEta[ppe]<
fSkip[ppe][b+1])
1331 if(TMath::Abs(
One(0).Re())>0.)
1336 if(TMath::Abs(
Two(0,0).Re())>0.)
1341 if(TMath::Abs(
Three(0,0,0).Re())>0.)
1346 if(TMath::Abs(
Four(0,0,0,0).Re())>0.)
1348 fNestedLoopsResultsCosPro->Fill(7.5,
Four(h1,h2,h3,h4).Re()/
Four(0,0,0,0).Re(),
Four(0,0,0,0).Re());
1349 fNestedLoopsResultsSinPro->Fill(7.5,
Four(h1,h2,h3,h4).Im()/
Four(0,0,0,0).Re(),
Four(0,0,0,0).Re());
1351 if(TMath::Abs(
Five(0,0,0,0,0).Re())>0.)
1353 fNestedLoopsResultsCosPro->Fill(9.5,
Five(h1,h2,h3,h4,h5).Re()/
Five(0,0,0,0,0).Re(),
Five(0,0,0,0,0).Re());
1354 fNestedLoopsResultsSinPro->Fill(9.5,
Five(h1,h2,h3,h4,h5).Im()/
Five(0,0,0,0,0).Re(),
Five(0,0,0,0,0).Re());
1356 if(TMath::Abs(
Six(0,0,0,0,0,0).Re())>0.)
1358 fNestedLoopsResultsCosPro->Fill(11.5,
Six(h1,h2,h3,h4,h5,h6).Re()/
Six(0,0,0,0,0,0).Re(),
Six(0,0,0,0,0,0).Re());
1359 fNestedLoopsResultsSinPro->Fill(11.5,
Six(h1,h2,h3,h4,h5,h6).Im()/
Six(0,0,0,0,0,0).Re(),
Six(0,0,0,0,0,0).Re());
1361 if(TMath::Abs(
Seven(0,0,0,0,0,0,0).Re())>0.)
1363 fNestedLoopsResultsCosPro->Fill(13.5,
Seven(h1,h2,h3,h4,h5,h6,h7).Re()/
Seven(0,0,0,0,0,0,0).Re(),
Seven(0,0,0,0,0,0,0).Re());
1364 fNestedLoopsResultsSinPro->Fill(13.5,
Seven(h1,h2,h3,h4,h5,h6,h7).Im()/
Seven(0,0,0,0,0,0,0).Re(),
Seven(0,0,0,0,0,0,0).Re());
1366 if(TMath::Abs(
Eight(0,0,0,0,0,0,0,0).Re())>0.)
1368 fNestedLoopsResultsCosPro->Fill(15.5,
Eight(h1,h2,h3,h4,h5,h6,h7,h8).Re()/
Eight(0,0,0,0,0,0,0,0).Re(),
Eight(0,0,0,0,0,0,0,0).Re());
1369 fNestedLoopsResultsSinPro->Fill(15.5,
Eight(h1,h2,h3,h4,h5,h6,h7,h8).Im()/
Eight(0,0,0,0,0,0,0,0).Re(),
Eight(0,0,0,0,0,0,0,0).Re());
1375 Double_t dPhi1=0.,dPhi2=0.,dPhi3=0.,dPhi4=0.,dPhi5=0.,dPhi6=0.,dPhi7=0.,dPhi8=0.;
1376 Double_t wPhi1=1.,wPhi2=1.,wPhi3=1.,wPhi4=1.,wPhi5=1.,wPhi6=1.,wPhi7=1.,wPhi8=1.;
1381 for(
Int_t i1=0;i1<nPrim;i1++)
1386 dPhi1 = aftsTrack->
Phi();
1397 for(
Int_t i1=0;i1<nPrim;i1++)
1402 dPhi1 = aftsTrack->
Phi();
1404 for(
Int_t i2=0;i2<nPrim;i2++)
1406 if(i2==i1){
continue;}
1410 dPhi2 = aftsTrack->
Phi();
1422 for(
Int_t i1=0;i1<nPrim;i1++)
1427 dPhi1=aftsTrack->
Phi();
1429 for(
Int_t i2=0;i2<nPrim;i2++)
1431 if(i2==i1){
continue;}
1435 dPhi2=aftsTrack->
Phi();
1437 for(
Int_t i3=0;i3<nPrim;i3++)
1439 if(i3==i1||i3==i2){
continue;}
1443 dPhi3=aftsTrack->
Phi();
1456 for(
Int_t i1=0;i1<nPrim;i1++)
1461 dPhi1=aftsTrack->
Phi();
1463 for(
Int_t i2=0;i2<nPrim;i2++)
1465 if(i2==i1){
continue;}
1469 dPhi2=aftsTrack->
Phi();
1471 for(
Int_t i3=0;i3<nPrim;i3++)
1473 if(i3==i1||i3==i2){
continue;}
1477 dPhi3=aftsTrack->
Phi();
1479 for(
Int_t i4=0;i4<nPrim;i4++)
1481 if(i4==i1||i4==i2||i4==i3){
continue;}
1485 dPhi4=aftsTrack->
Phi();
1499 for(
Int_t i1=0;i1<nPrim;i1++)
1504 dPhi1=aftsTrack->
Phi();
1506 for(
Int_t i2=0;i2<nPrim;i2++)
1508 if(i2==i1){
continue;}
1512 dPhi2=aftsTrack->
Phi();
1514 for(
Int_t i3=0;i3<nPrim;i3++)
1516 if(i3==i1||i3==i2){
continue;}
1520 dPhi3=aftsTrack->
Phi();
1522 for(
Int_t i4=0;i4<nPrim;i4++)
1524 if(i4==i1||i4==i2||i4==i3){
continue;}
1528 dPhi4=aftsTrack->
Phi();
1530 for(
Int_t i5=0;i5<nPrim;i5++)
1532 if(i5==i1||i5==i2||i5==i3||i5==i4){
continue;}
1536 dPhi5=aftsTrack->
Phi();
1539 fNestedLoopsResultsCosPro->Fill(8.5,TMath::Cos(h1*dPhi1+h2*dPhi2+h3*dPhi3+h4*dPhi4+h5*dPhi5),wPhi1*wPhi2*wPhi3*wPhi4*wPhi5);
1540 fNestedLoopsResultsSinPro->Fill(8.5,TMath::Sin(h1*dPhi1+h2*dPhi2+h3*dPhi3+h4*dPhi4+h5*dPhi5),wPhi1*wPhi2*wPhi3*wPhi4*wPhi5);
1551 for(
Int_t i1=0;i1<nPrim;i1++)
1556 dPhi1=aftsTrack->
Phi();
1558 for(
Int_t i2=0;i2<nPrim;i2++)
1560 if(i2==i1){
continue;}
1564 dPhi2=aftsTrack->
Phi();
1566 for(
Int_t i3=0;i3<nPrim;i3++)
1568 if(i3==i1||i3==i2){
continue;}
1572 dPhi3=aftsTrack->
Phi();
1574 for(
Int_t i4=0;i4<nPrim;i4++)
1576 if(i4==i1||i4==i2||i4==i3){
continue;}
1580 dPhi4=aftsTrack->
Phi();
1582 for(
Int_t i5=0;i5<nPrim;i5++)
1584 if(i5==i1||i5==i2||i5==i3||i5==i4){
continue;}
1588 dPhi5=aftsTrack->
Phi();
1590 for(
Int_t i6=0;i6<nPrim;i6++)
1592 if(i6==i1||i6==i2||i6==i3||i6==i4||i6==i5){
continue;}
1596 dPhi6=aftsTrack->
Phi();
1599 fNestedLoopsResultsCosPro->Fill(10.5,TMath::Cos(h1*dPhi1+h2*dPhi2+h3*dPhi3+h4*dPhi4+h5*dPhi5+h6*dPhi6),wPhi1*wPhi2*wPhi3*wPhi4*wPhi5*wPhi6);
1600 fNestedLoopsResultsSinPro->Fill(10.5,TMath::Sin(h1*dPhi1+h2*dPhi2+h3*dPhi3+h4*dPhi4+h5*dPhi5+h6*dPhi6),wPhi1*wPhi2*wPhi3*wPhi4*wPhi5*wPhi6);
1612 for(
Int_t i1=0;i1<nPrim;i1++)
1617 dPhi1=aftsTrack->
Phi();
1619 for(
Int_t i2=0;i2<nPrim;i2++)
1621 if(i2==i1){
continue;}
1625 dPhi2=aftsTrack->
Phi();
1627 for(
Int_t i3=0;i3<nPrim;i3++)
1629 if(i3==i1||i3==i2){
continue;}
1633 dPhi3=aftsTrack->
Phi();
1635 for(
Int_t i4=0;i4<nPrim;i4++)
1637 if(i4==i1||i4==i2||i4==i3){
continue;}
1641 dPhi4=aftsTrack->
Phi();
1643 for(
Int_t i5=0;i5<nPrim;i5++)
1645 if(i5==i1||i5==i2||i5==i3||i5==i4){
continue;}
1649 dPhi5=aftsTrack->
Phi();
1651 for(
Int_t i6=0;i6<nPrim;i6++)
1653 if(i6==i1||i6==i2||i6==i3||i6==i4||i6==i5){
continue;}
1657 dPhi6=aftsTrack->
Phi();
1659 for(
Int_t i7=0;i7<nPrim;i7++)
1661 if(i7==i1||i7==i2||i7==i3||i7==i4||i7==i5||i7==i6){
continue;}
1665 dPhi7=aftsTrack->
Phi();
1668 fNestedLoopsResultsCosPro->Fill(12.5,TMath::Cos(h1*dPhi1+h2*dPhi2+h3*dPhi3+h4*dPhi4+h5*dPhi5+h6*dPhi6+h7*dPhi7),wPhi1*wPhi2*wPhi3*wPhi4*wPhi5*wPhi6*wPhi7);
1669 fNestedLoopsResultsSinPro->Fill(12.5,TMath::Sin(h1*dPhi1+h2*dPhi2+h3*dPhi3+h4*dPhi4+h5*dPhi5+h6*dPhi6+h7*dPhi7),wPhi1*wPhi2*wPhi3*wPhi4*wPhi5*wPhi6*wPhi7);
1682 for(
Int_t i1=0;i1<nPrim;i1++)
1687 dPhi1=aftsTrack->
Phi();
1689 for(
Int_t i2=0;i2<nPrim;i2++)
1691 if(i2==i1){
continue;}
1695 dPhi2=aftsTrack->
Phi();
1697 for(
Int_t i3=0;i3<nPrim;i3++)
1699 if(i3==i1||i3==i2){
continue;}
1703 dPhi3=aftsTrack->
Phi();
1705 for(
Int_t i4=0;i4<nPrim;i4++)
1707 if(i4==i1||i4==i2||i4==i3){
continue;}
1711 dPhi4=aftsTrack->
Phi();
1713 for(
Int_t i5=0;i5<nPrim;i5++)
1715 if(i5==i1||i5==i2||i5==i3||i5==i4){
continue;}
1719 dPhi5=aftsTrack->
Phi();
1721 for(
Int_t i6=0;i6<nPrim;i6++)
1723 if(i6==i1||i6==i2||i6==i3||i6==i4||i6==i5){
continue;}
1727 dPhi6=aftsTrack->
Phi();
1729 for(
Int_t i7=0;i7<nPrim;i7++)
1731 if(i7==i1||i7==i2||i7==i3||i7==i4||i7==i5||i7==i6){
continue;}
1735 dPhi7=aftsTrack->
Phi();
1737 for(
Int_t i8=0;i8<nPrim;i8++)
1739 if(i8==i1||i8==i2||i8==i3||i8==i4||i8==i5||i8==i6||i8==i7){
continue;}
1743 dPhi8=aftsTrack->
Phi();
1746 fNestedLoopsResultsCosPro->Fill(14.5,TMath::Cos(h1*dPhi1+h2*dPhi2+h3*dPhi3+h4*dPhi4+h5*dPhi5+h6*dPhi6+h7*dPhi7+h8*dPhi8),wPhi1*wPhi2*wPhi3*wPhi4*wPhi5*wPhi6*wPhi7*wPhi8);
1747 fNestedLoopsResultsSinPro->Fill(14.5,TMath::Sin(h1*dPhi1+h2*dPhi2+h3*dPhi3+h4*dPhi4+h5*dPhi5+h6*dPhi6+h7*dPhi7+h8*dPhi8),wPhi1*wPhi2*wPhi3*wPhi4*wPhi5*wPhi6*wPhi7*wPhi8);
1759 printf(
"\n cosine:");
1777 printf(
"\n\n sinus:");
1805 TString sMethodName =
"AliFlowAnalysisWithMultiparticleCorrelations::CrossCheckDiffWithNestedLoops(AliFlowEventSimple *anEvent)";
1809 Double_t dPsi1=0.,dPhi2=0.,dPhi3=0.,dPhi4=0.;
1810 Double_t wPsi1=1.,wPhi2=1.,wPhi3=1.,wPhi4=1.;
1815 Bool_t bCrossCheck2p = kFALSE;
1816 Bool_t bCrossCheck3p = kFALSE;
1817 Bool_t bCrossCheck4p = kFALSE;
1823 if(
Int_t(bCrossCheck2p + bCrossCheck3p + bCrossCheck4p) > 1)
1825 Fatal(sMethodName.Data(),
"Int_t(bCrossCheck2p + bCrossCheck3p + bCrossCheck4p) > 1");
1827 if(!(bCrossCheck2p || bCrossCheck3p || bCrossCheck4p))
1829 Fatal(sMethodName.Data(),
"!(bCrossCheck2p || bCrossCheck3p || bCrossCheck4p)");
1835 for(
Int_t i1=0;i1<nPrim;i1++)
1840 dPsi1=aftsTrack->
Phi();
1843 dPt=aftsTrack->
Pt();
1847 dEta=aftsTrack->
Eta();
1851 for(
Int_t i2=0;i2<nPrim;i2++)
1853 if(i2==i1){
continue;}
1857 dPhi2=aftsTrack->
Phi();
1871 for(
Int_t i1=0;i1<nPrim;i1++)
1876 dPsi1=aftsTrack->
Phi();
1879 dPt=aftsTrack->
Pt();
1883 dEta=aftsTrack->
Eta();
1887 for(
Int_t i2=0;i2<nPrim;i2++)
1889 if(i2==i1){
continue;}
1893 dPhi2=aftsTrack->
Phi();
1895 for(
Int_t i3=0;i3<nPrim;i3++)
1897 if(i3==i1||i3==i2){
continue;}
1901 dPhi3=aftsTrack->
Phi();
1916 for(
Int_t i1=0;i1<nPrim;i1++)
1921 dPsi1=aftsTrack->
Phi();
1924 dPt=aftsTrack->
Pt();
1928 dEta=aftsTrack->
Eta();
1932 for(
Int_t i2=0;i2<nPrim;i2++)
1934 if(i2==i1){
continue;}
1938 dPhi2=aftsTrack->
Phi();
1940 for(
Int_t i3=0;i3<nPrim;i3++)
1942 if(i3==i1||i3==i2){
continue;}
1946 dPhi3=aftsTrack->
Phi();
1948 for(
Int_t i4=0;i4<nPrim;i4++)
1950 if(i4==i1||i4==i2||i4==i3){
continue;}
1954 dPhi4=aftsTrack->
Phi();
2002 Int_t nCounterRPs = 0;
2003 for(
Int_t t=0;t<nTracks;t++)
2015 if(!pTrack){printf(
"\n AAAARGH: pTrack is NULL in MPC::FillQvector(...) !!!!");
continue;}
2026 wPhi = 1.; wPt = 1.; wEta = 1.; wToPowerP = 1.;
2029 dPhi = pTrack->
Phi();
2035 dEta = pTrack->
Eta();
2041 for(
Int_t wp=0;wp<fMaxCorrelator+1;wp++)
2044 fQvector[h][wp] += TComplex(wToPowerP*TMath::Cos(h*dPhi),wToPowerP*TMath::Sin(h*dPhi));
2053 wPhi = 1.; wPt = 1.; wEta = 1.; wToPowerP = 1.;
2056 dPhi = pTrack->
Phi();
2062 dEta = pTrack->
Eta();
2077 for(
Int_t wp=0;wp<fMaxCorrelator+1;wp++)
2080 fpvector[binNo-1][h][wp] += TComplex(wToPowerP*TMath::Cos(h*dPhi),wToPowerP*TMath::Sin(h*dPhi));
2085 wPhi = 1.; wPt = 1.; wEta = 1.; wToPowerP = 1.;
2098 fqvector[binNo-1][h][wp] += TComplex(wToPowerP*TMath::Cos(h*dPhi),wToPowerP*TMath::Sin(h*dPhi));
2124 TString sMethodName =
"AliFlowAnalysisWithMultiparticleCorrelations::CrossCheckSettings()";
2135 if(iSum>1){Fatal(sMethodName.Data(),
"iSum is doing crazy things...");}
2141 Fatal(sMethodName.Data(),
"fCalculateStandardCandles && !fCalculateCorrelations");
2145 Fatal(sMethodName.Data(),
"fCalculateStandardCandles && fCalculateCorrelations && fCalculateSameIsotropic");
2149 Fatal(sMethodName.Data(),
"fCalculateStandardCandles && fCalculateOnlyForHarmonicQC");
2153 Fatal(sMethodName.Data(),
"fCalculateStandardCandles && fCalculateOnlyForSC && (4!=fDontGoBeyond)");
2157 Warning(sMethodName.Data(),
"fCalculateStandardCandles && !fPropagateErrorSC");
2161 Fatal(sMethodName.Data(),
"fCalculateStandardCandles && fCalculateOnlySin");
2165 Fatal(sMethodName.Data(),
"fCalculateStandardCandles && fDontGoBeyond < 3");
2171 Fatal(sMethodName.Data(),
"fCalculateQcumulants && !fCalculateCorrelations");
2175 Fatal(sMethodName.Data(),
"fCalculateQcumulants && !(fHarmonicQC > 0)");
2179 Fatal(sMethodName.Data(),
"fCalculateQcumulants && fCalculateOnlyForSC");
2183 Warning(sMethodName.Data(),
"fCalculateQcumulants && !fPropagateErrorQC");
2187 Fatal(sMethodName.Data(),
"fCalculateQcumulants && fCalculateOnlySin");
2191 for(
Int_t rp=0;rp<2;rp++)
2193 for(
Int_t ppe=0;ppe<3;ppe++)
2197 Fatal(sMethodName.Data(),
"fUseWeights[rp][ppe] && !fWeightsHist[rp][ppe], rp = %d, ppe = %d",rp,ppe);
2205 Fatal(sMethodName.Data(),
"fCalculateDiffCorrelations && !fCalculateDiffQvectors");
2209 Fatal(sMethodName.Data(),
"fCalculateDiffCorrelations && !fCalculateQvector");
2213 Fatal(sMethodName.Data(),
"!fCalculateDiffCorrelations && fCalculateDiffQvectors");
2217 Fatal(sMethodName.Data(),
"fCalculateDiffCorrelations && !fUseDefaultBinning && (fnDiffBins < 1 || !fRangesDiffBins)");
2221 Fatal(sMethodName.Data(),
"fCalculateDiffCorrelations && !(fCalculateDiffCos || fCalculateDiffSin)");
2225 Warning(sMethodName.Data(),
"fCalculateDiffCorrelations && fDontFill[1]");
2231 Fatal(sMethodName.Data(),
"fCrossCheckDiffWithNestedLoops && (1 == fCrossCheckDiffCSCOBN[0] && !CalculateDiffSin)");
2235 Fatal(sMethodName.Data(),
"fCrossCheckDiffWithNestedLoops && (0 == fCrossCheckDiffCSCOBN[0] && !CalculateDiffCos)");
2241 Fatal(sMethodName.Data(),
"if(fDumpThePoints && !fFillMultDistributionsHist)");
2245 Fatal(sMethodName.Data(),
"if(fDumpThePoints && fMaxNoEventsPerFile <= 0)");
2342 TFile *output =
new TFile(outputFileName.Data(),
"RECREATE");
2356 outputFileName->Write(outputFileName->GetName(),TObject::kSingleKey);
2394 TString name[2][3] = {{
"RP,phi",
"RP,pt",
"RP,eta"},{
"POI,phi",
"POI,pt",
"POI,eta"}};
2395 TString title[2] = {
"Reference particles (RP)",
"Particles of interest (POI)"};
2396 Int_t lineColor[2] = {kBlue,kRed};
2397 Int_t fillColor[2] = {kBlue-10,kRed-10};
2398 TString xAxisTitle[3] = {
"#phi",
"p_{T}",
"#eta"};
2401 for(
Int_t rp=0;rp<2;rp++)
2404 for(
Int_t ppe=0;ppe<3;ppe++)
2417 TString nameMult[3] = {
"Multiplicity (RP)",
"Multiplicity (POI)",
"Multiplicity (REF)"};
2418 TString titleMult[3] = {
"Reference particles (RP)",
"Particles of interest (POI)",
""};
2419 Int_t lineColorMult[3] = {kBlue,kRed,kGreen+2};
2420 Int_t fillColorMult[3] = {kBlue-10,kRed-10,kGreen-10};
2421 TString xAxisTitleMult[3] = {
"Multiplicity (RP)",
"Multiplicity (POI)",
"Multiplicity (REF)"};
2424 for(
Int_t rprm=0;rprm<3;rprm++)
2473 Int_t nCounterRPs = 0;
2477 for(
Int_t t=0;t<nTracks;t++)
2488 if(!pTrack){printf(
"\n AAAARGH: pTrack is NULL in MPC::FCH() !!!!");
continue;}
2505 Double_t dPhiPtEta[3] = {dPhi,dPt,dEta};
2507 for(
Int_t rp=0;rp<2;rp++)
2509 for(
Int_t ppe=0;ppe<3;ppe++)
2532 Double_t dMult[3] = {dMultRP,dMultPOI,dMultREF};
2533 for(
Int_t rprm=0;rprm<3;rprm++)
2563 for(
Int_t rp=0;rp<2;rp++)
2565 for(
Int_t ppe=0;ppe<3;ppe++)
2572 for(
Int_t rprm=0;rprm<3;rprm++)
2578 for(
Int_t r=0;r<3;r++)
2584 for(
Int_t rpr=0;rpr<3;rpr++)
2605 fMax[0][0] = TMath::TwoPi();
2608 fMax[1][0] = TMath::TwoPi();
2627 for(
Int_t ppe=0;ppe<3;ppe++)
2629 for(
Int_t i=0;i<10;i++)
2631 fSkip[ppe][i] = -44.;
2647 fQvectorFlagsPro =
new TProfile(
"fQvectorFlagsPro",
"Flags for Q-vectors",2,0,2);
2674 TString sMethodName =
"void AliFlowAnalysisWithMultiparticleCorrelations::BookEverythingForCorrelations()";
2703 cout<<
" => Booking TProfile *fCorrelationsPro[2][8]..."<<endl;
2704 TString sCosSin[2] = {
"Cos",
"Sin"};
2705 Int_t markerColor[2] = {kBlue,kRed};
2706 Int_t markerStyle[2] = {kFullSquare,kFullSquare};
2707 Int_t nBins[8] = {1,1,1,1,1,1,1,1};
2708 Int_t nBinsTitle[8] = {1,1,1,1,1,1,1,1};
2709 Int_t nToBeFilled[8] = {0,0,0,0,0,0,0,0};
2716 / (TMath::Factorial(2*
fMaxHarmonic+1-1)*TMath::Factorial(
c+1)));
2717 nBinsTitle[
c] = nBins[
c];
2720 for(
Int_t cs=0;cs<2;cs++)
2728 fCorrelationsPro[cs][
c] =
new TProfile(Form(
"%dpCorrelations%s",
c+1,sCosSin[cs].
Data()),
"",nBins[
c],0.,1.*nBins[c]);
2738 for(
Int_t cs=0;cs<2;cs++)
2755 for(
Int_t cs=0;cs<2;cs++)
2773 for(
Int_t cs=0;cs<2;cs++)
2787 || (
fCalculateSameIsotropic && 0==n1+n2+n3 && TMath::Abs(n1)==TMath::Abs(n2) && TMath::Abs(n1)==TMath::Abs(n3))
2790 for(
Int_t cs=0;cs<2;cs++)
2804 || (
fCalculateSameIsotropic && 0==n1+n2+n3+n4 && TMath::Abs(n1)==TMath::Abs(n2) && TMath::Abs(n1)==TMath::Abs(n3) && TMath::Abs(n1)==TMath::Abs(n4))
2808 for(
Int_t cs=0;cs<2;cs++)
2822 || (
fCalculateSame && TMath::Abs(n1)==TMath::Abs(n2) && TMath::Abs(n1)==TMath::Abs(n3) && TMath::Abs(n1)==TMath::Abs(n4) && TMath::Abs(n1)==TMath::Abs(n5))
2823 || (
fCalculateSameIsotropic && 0==n1+n2+n3+n4+n5 && TMath::Abs(n1)==TMath::Abs(n2) && TMath::Abs(n1)==TMath::Abs(n3) && TMath::Abs(n1)==TMath::Abs(n4) && TMath::Abs(n1)==TMath::Abs(n5))
2826 for(
Int_t cs=0;cs<2;cs++)
2830 if(
fCorrelationsPro[cs][4]){
fCorrelationsPro[cs][4]->GetXaxis()->SetBinLabel(binNo[cs][4]++,Form(
"%s(%d,%d,%d,%d,%d)",sCosSin[cs].
Data(),n1,n2,n3,n4,n5));}
2840 || (
fCalculateSame && TMath::Abs(n1)==TMath::Abs(n2) && TMath::Abs(n1)==TMath::Abs(n3) && TMath::Abs(n1)==TMath::Abs(n4)
2841 && TMath::Abs(n1)==TMath::Abs(n5) && TMath::Abs(n1)==TMath::Abs(n6))
2842 || (
fCalculateSameIsotropic && 0==n1+n2+n3+n4+n5+n6 && TMath::Abs(n1)==TMath::Abs(n2) && TMath::Abs(n1)==TMath::Abs(n3)
2843 && TMath::Abs(n1)==TMath::Abs(n4) && TMath::Abs(n1)==TMath::Abs(n5) && TMath::Abs(n1)==TMath::Abs(n6))
2846 for(
Int_t cs=0;cs<2;cs++)
2850 if(
fCorrelationsPro[cs][5]){
fCorrelationsPro[cs][5]->GetXaxis()->SetBinLabel(binNo[cs][5]++,Form(
"%s(%d,%d,%d,%d,%d,%d)",sCosSin[cs].
Data(),n1,n2,n3,n4,n5,n6));}
2860 || (
fCalculateSame && TMath::Abs(n1)==TMath::Abs(n2) && TMath::Abs(n1)==TMath::Abs(n3) && TMath::Abs(n1)==TMath::Abs(n4)
2861 && TMath::Abs(n1)==TMath::Abs(n5) && TMath::Abs(n1)==TMath::Abs(n6) && TMath::Abs(n1)==TMath::Abs(n7))
2862 || (
fCalculateSameIsotropic && 0==n1+n2+n3+n4+n5+n6+n7 && TMath::Abs(n1)==TMath::Abs(n2) && TMath::Abs(n1)==TMath::Abs(n3) && TMath::Abs(n1)==TMath::Abs(n4)
2863 && TMath::Abs(n1)==TMath::Abs(n5) && TMath::Abs(n1)==TMath::Abs(n6) && TMath::Abs(n1)==TMath::Abs(n7))
2866 for(
Int_t cs=0;cs<2;cs++)
2870 if(
fCorrelationsPro[cs][6]){
fCorrelationsPro[cs][6]->GetXaxis()->SetBinLabel(binNo[cs][6]++,Form(
"%s(%d,%d,%d,%d,%d,%d,%d)",sCosSin[cs].
Data(),n1,n2,n3,n4,n5,n6,n7));}
2880 || (
fCalculateSame && TMath::Abs(n1)==TMath::Abs(n2) && TMath::Abs(n1)==TMath::Abs(n3) && TMath::Abs(n1)==TMath::Abs(n4)
2881 && TMath::Abs(n1)==TMath::Abs(n5) && TMath::Abs(n1)==TMath::Abs(n6) && TMath::Abs(n1)==TMath::Abs(n7) && TMath::Abs(n1)==TMath::Abs(n8))
2882 || (
fCalculateSameIsotropic && 0==n1+n2+n3+n4+n5+n6+n7+n8 && TMath::Abs(n1)==TMath::Abs(n2) && TMath::Abs(n1)==TMath::Abs(n3)
2883 && TMath::Abs(n1)==TMath::Abs(n4) && TMath::Abs(n1)==TMath::Abs(n5) && TMath::Abs(n1)==TMath::Abs(n6) && TMath::Abs(n1)==TMath::Abs(n7)
2884 && TMath::Abs(n1)==TMath::Abs(n8))
2887 for(
Int_t cs=0;cs<2;cs++)
2891 if(
fCorrelationsPro[cs][7]){
fCorrelationsPro[cs][7]->GetXaxis()->SetBinLabel(binNo[cs][7]++,Form(
"%s(%d,%d,%d,%d,%d,%d,%d,%d)",sCosSin[cs].
Data(),n1,n2,n3,n4,n5,n6,n7,n8));}
2904 for(
Int_t cs=0;cs<2;cs++)
2911 fCorrelationsPro[cs][
c]->SetTitle(Form(
"%d-p correlations, %s terms, %d/%d in total",c+1,sCosSin[cs].
Data(),nToBeFilled[c],nBinsTitle[c]));
2915 cout<<
" Booked. "<<endl;
2928 TString sMethodName =
"void AliFlowAnalysisWithMultiparticleCorrelations::BookEverythingForDiffCorrelations()";
2949 Bool_t fDiffStore[2][4] = {{0,1,1,1},{0,0,0,0}};
2950 Int_t markerColor[2] = {kRed,kGreen};
2951 Int_t markerStyle[2] = {kFullSquare,kOpenSquare};
2952 TString sCosSin[2] = {
"Cos",
"Sin"};
2958 for(
Int_t cs=0;cs<2;cs++)
2971 Form(
"%s(%s)",sCosSin[cs].
Data(),sLabel[
c].
Data()),
2977 Form(
"%s(%s)",sCosSin[cs].
Data(),sLabel[
c].
Data()),
2992 Form(
"%s(%s)",sCosSin[cs].
Data(),sLabel[
c].
Data()),
2998 Form(
"%s(%s)",sCosSin[cs].
Data(),sLabel[
c].
Data()),
3022 TString sMethodName =
"void AliFlowAnalysisWithMultiparticleCorrelations::BookEverythingForSymmetryPlanes()";
3025 fSymmetryPlanesFlagsPro =
new TProfile(
"fSymmetryPlanesFlagsPro",
"Flags for Symmetry Plane Correlations (SPC)",1,0,1);
3040 TString sTitle[1][2] = {
"#LT#LTcos[4(#psi_{2}-#psi_{1})]#GT#GT",
"#LT#LTcos[4(#psi_{4}-#psi_{2})]#GT#GT"};
3041 TString sLabels[4] = {
"k = 0",
"k = 1",
"k = 2",
"k = 3"};
3042 for(
Int_t gc=0;gc<1;gc++)
3044 for(
Int_t n=0;n<2;n++)
3053 for(
Int_t o=0;o<4;o++)
3072 TString sMethodName =
"void AliFlowAnalysisWithMultiparticleCorrelations::BookEverythingForEtaGaps()";
3075 fEtaGapsFlagsPro =
new TProfile(
"fEtaGapsFlagsPro",
"Flags for correlations with eta gaps",1,0,1);
3091 Int_t markerColor[6] = {kBlue,kRed,kGreen+2,kBlack,kBlack,kBlack};
3092 TString sEtaGaps[11] = {
"|#Delta#eta| > 1.0",
"|#Delta#eta| > 0.9",
"|#Delta#eta| > 0.8",
"|#Delta#eta| > 0.7",
"|#Delta#eta| > 0.6",
"|#Delta#eta| > 0.5",
"|#Delta#eta| > 0.4",
"|#Delta#eta| > 0.3",
"|#Delta#eta| > 0.2",
"|#Delta#eta| > 0.1",
"|#Delta#eta| > 0.0"};
3095 fEtaGapsPro[h] =
new TProfile(Form(
"EtaGaps_v%d",h+1),Form(
"2-p correlation for harmonic v_{%d} with eta gaps",h+1),11,0.,11.);
3103 for(
Int_t eg=0;eg<11;eg++)
3121 TString sMethodName =
"void AliFlowAnalysisWithMultiparticleCorrelations::BookEverythingForEbECumulants()";
3138 TString sCosSin[2] = {
"Cos",
"Sin"};
3139 Int_t markerColor[2] = {kBlue,kRed};
3140 Int_t markerStyle[2] = {kFullSquare,kFullSquare};
3141 Int_t nBins[8] = {1,1,1,1,1,1,1,1};
3142 Int_t nBinsTitle[8] = {1,1,1,1,1,1,1,1};
3143 Int_t nToBeFilled[8] = {0,0,0,0,0,0,0,0};
3150 / (TMath::Factorial(2*
fMaxHarmonic+1-1)*TMath::Factorial(
c+1)));
3151 nBinsTitle[
c] = nBins[
c];
3154 for(
Int_t cs=0;cs<2;cs++)
3158 fEbECumulantsPro[cs][
c] =
new TProfile(Form(
"%dpEbECumulants%s",
c+1,sCosSin[cs].
Data()),
"",nBins[
c],0.,1.*nBins[c]);
3173 fEbECumulantsPro[0][0]->GetXaxis()->SetBinLabel(binNo[0],Form(
"Cos(%d)",n1));
3174 fEbECumulantsPro[1][0]->GetXaxis()->SetBinLabel(binNo[0]++,Form(
"Sin(%d)",n1));
3184 fEbECumulantsPro[0][1]->GetXaxis()->SetBinLabel(binNo[1],Form(
"Cos(%d,%d)",n1,n2));
3185 fEbECumulantsPro[1][1]->GetXaxis()->SetBinLabel(binNo[1]++,Form(
"Sin(%d,%d)",n1,n2));
3193 || (
fCalculateSameIsotropic && 0==n1+n2+n3 && TMath::Abs(n1)==TMath::Abs(n2) && TMath::Abs(n1)==TMath::Abs(n3)))
3195 fEbECumulantsPro[0][2]->GetXaxis()->SetBinLabel(binNo[2],Form(
"Cos(%d,%d,%d)",n1,n2,n3));
3196 fEbECumulantsPro[1][2]->GetXaxis()->SetBinLabel(binNo[2]++,Form(
"Sin(%d,%d,%d)",n1,n2,n3));
3204 || (
fCalculateSameIsotropic && 0==n1+n2+n3+n4 && TMath::Abs(n1)==TMath::Abs(n2) && TMath::Abs(n1)==TMath::Abs(n3) && TMath::Abs(n1)==TMath::Abs(n4)))
3206 fEbECumulantsPro[0][3]->GetXaxis()->SetBinLabel(binNo[3],Form(
"Cos(%d,%d,%d,%d)",n1,n2,n3,n4));
3207 fEbECumulantsPro[1][3]->GetXaxis()->SetBinLabel(binNo[3]++,Form(
"Sin(%d,%d,%d,%d)",n1,n2,n3,n4));
3215 || (
fCalculateSame && TMath::Abs(n1)==TMath::Abs(n2) && TMath::Abs(n1)==TMath::Abs(n3) && TMath::Abs(n1)==TMath::Abs(n4) && TMath::Abs(n1)==TMath::Abs(n5))
3216 || (
fCalculateSameIsotropic && 0==n1+n2+n3+n4+n5 && TMath::Abs(n1)==TMath::Abs(n2) && TMath::Abs(n1)==TMath::Abs(n3) && TMath::Abs(n1)==TMath::Abs(n4) && TMath::Abs(n1)==TMath::Abs(n5)))
3218 fEbECumulantsPro[0][4]->GetXaxis()->SetBinLabel(binNo[4],Form(
"Cos(%d,%d,%d,%d,%d)",n1,n2,n3,n4,n5));
3219 fEbECumulantsPro[1][4]->GetXaxis()->SetBinLabel(binNo[4]++,Form(
"Sin(%d,%d,%d,%d,%d)",n1,n2,n3,n4,n5));
3227 || (
fCalculateSame && TMath::Abs(n1)==TMath::Abs(n2) && TMath::Abs(n1)==TMath::Abs(n3) && TMath::Abs(n1)==TMath::Abs(n4)
3228 && TMath::Abs(n1)==TMath::Abs(n5) && TMath::Abs(n1)==TMath::Abs(n6))
3229 || (
fCalculateSameIsotropic && 0==n1+n2+n3+n4+n5+n6 && TMath::Abs(n1)==TMath::Abs(n2) && TMath::Abs(n1)==TMath::Abs(n3)
3230 && TMath::Abs(n1)==TMath::Abs(n4) && TMath::Abs(n1)==TMath::Abs(n5) && TMath::Abs(n1)==TMath::Abs(n6)))
3232 fEbECumulantsPro[0][5]->GetXaxis()->SetBinLabel(binNo[5],Form(
"Cos(%d,%d,%d,%d,%d,%d)",n1,n2,n3,n4,n5,n6));
3233 fEbECumulantsPro[1][5]->GetXaxis()->SetBinLabel(binNo[5]++,Form(
"Sin(%d,%d,%d,%d,%d,%d)",n1,n2,n3,n4,n5,n6));
3241 || (
fCalculateSame && TMath::Abs(n1)==TMath::Abs(n2) && TMath::Abs(n1)==TMath::Abs(n3) && TMath::Abs(n1)==TMath::Abs(n4)
3242 && TMath::Abs(n1)==TMath::Abs(n5) && TMath::Abs(n1)==TMath::Abs(n6) && TMath::Abs(n1)==TMath::Abs(n7))
3243 || (
fCalculateSameIsotropic && 0==n1+n2+n3+n4+n5+n6+n7 && TMath::Abs(n1)==TMath::Abs(n2) && TMath::Abs(n1)==TMath::Abs(n3) && TMath::Abs(n1)==TMath::Abs(n4)
3244 && TMath::Abs(n1)==TMath::Abs(n5) && TMath::Abs(n1)==TMath::Abs(n6) && TMath::Abs(n1)==TMath::Abs(n7)))
3246 fEbECumulantsPro[0][6]->GetXaxis()->SetBinLabel(binNo[6],Form(
"Cos(%d,%d,%d,%d,%d,%d,%d)",n1,n2,n3,n4,n5,n6,n7));
3247 fEbECumulantsPro[1][6]->GetXaxis()->SetBinLabel(binNo[6]++,Form(
"Sin(%d,%d,%d,%d,%d,%d,%d)",n1,n2,n3,n4,n5,n6,n7));
3255 || (
fCalculateSame && TMath::Abs(n1)==TMath::Abs(n2) && TMath::Abs(n1)==TMath::Abs(n3) && TMath::Abs(n1)==TMath::Abs(n4)
3256 && TMath::Abs(n1)==TMath::Abs(n5) && TMath::Abs(n1)==TMath::Abs(n6) && TMath::Abs(n1)==TMath::Abs(n7) && TMath::Abs(n1)==TMath::Abs(n8))
3257 || (
fCalculateSameIsotropic && 0==n1+n2+n3+n4+n5+n6+n7+n8 && TMath::Abs(n1)==TMath::Abs(n2) && TMath::Abs(n1)==TMath::Abs(n3)
3258 && TMath::Abs(n1)==TMath::Abs(n4) && TMath::Abs(n1)==TMath::Abs(n5) && TMath::Abs(n1)==TMath::Abs(n6) && TMath::Abs(n1)==TMath::Abs(n7)
3259 && TMath::Abs(n1)==TMath::Abs(n8)))
3261 fEbECumulantsPro[0][7]->GetXaxis()->SetBinLabel(binNo[7],Form(
"Cos(%d,%d,%d,%d,%d,%d,%d,%d)",n1,n2,n3,n4,n5,n6,n7,n8));
3262 fEbECumulantsPro[1][7]->GetXaxis()->SetBinLabel(binNo[7]++,Form(
"Sin(%d,%d,%d,%d,%d,%d,%d,%d)",n1,n2,n3,n4,n5,n6,n7,n8));
3274 for(
Int_t cs=0;cs<2;cs++)
3278 fEbECumulantsPro[cs][
c]->SetTitle(Form(
"%d-p e-b-e cumulants, %s terms, %d/%d in total",
c+1,sCosSin[cs].
Data(),nToBeFilled[
c],nBinsTitle[c]));
3350 fNestedLoopsResultsCosPro->GetXaxis()->SetBinLabel(9,Form(
"N: 5p(%d,%d,%d,%d,%d)",h1,h2,h3,h4,h5));
3351 fNestedLoopsResultsCosPro->GetXaxis()->SetBinLabel(10,Form(
"Q: 5p(%d,%d,%d,%d,%d)",h1,h2,h3,h4,h5));
3352 fNestedLoopsResultsCosPro->GetXaxis()->SetBinLabel(11,Form(
"N: 6p(%d,%d,%d,%d,%d,%d)",h1,h2,h3,h4,h5,h6));
3353 fNestedLoopsResultsCosPro->GetXaxis()->SetBinLabel(12,Form(
"Q: 6p(%d,%d,%d,%d,%d,%d)",h1,h2,h3,h4,h5,h6));
3354 fNestedLoopsResultsCosPro->GetXaxis()->SetBinLabel(13,Form(
"N: 7p(%d,%d,%d,%d,%d,%d,%d)",h1,h2,h3,h4,h5,h6,h7));
3355 fNestedLoopsResultsCosPro->GetXaxis()->SetBinLabel(14,Form(
"Q: 7p(%d,%d,%d,%d,%d,%d,%d)",h1,h2,h3,h4,h5,h6,h7));
3356 fNestedLoopsResultsCosPro->GetXaxis()->SetBinLabel(15,Form(
"N: 8p(%d,%d,%d,%d,%d,%d,%d,%d)",h1,h2,h3,h4,h5,h6,h7,h8));
3357 fNestedLoopsResultsCosPro->GetXaxis()->SetBinLabel(16,Form(
"Q: 8p(%d,%d,%d,%d,%d,%d,%d,%d)",h1,h2,h3,h4,h5,h6,h7,h8));
3375 fNestedLoopsResultsSinPro->GetXaxis()->SetBinLabel(9,Form(
"N: 5p(%d,%d,%d,%d,%d)",h1,h2,h3,h4,h5));
3376 fNestedLoopsResultsSinPro->GetXaxis()->SetBinLabel(10,Form(
"Q: 5p(%d,%d,%d,%d,%d)",h1,h2,h3,h4,h5));
3377 fNestedLoopsResultsSinPro->GetXaxis()->SetBinLabel(11,Form(
"N: 6p(%d,%d,%d,%d,%d,%d)",h1,h2,h3,h4,h5,h6));
3378 fNestedLoopsResultsSinPro->GetXaxis()->SetBinLabel(12,Form(
"Q: 6p(%d,%d,%d,%d,%d,%d)",h1,h2,h3,h4,h5,h6));
3379 fNestedLoopsResultsSinPro->GetXaxis()->SetBinLabel(13,Form(
"N: 7p(%d,%d,%d,%d,%d,%d,%d)",h1,h2,h3,h4,h5,h6,h7));
3380 fNestedLoopsResultsSinPro->GetXaxis()->SetBinLabel(14,Form(
"Q: 7p(%d,%d,%d,%d,%d,%d,%d)",h1,h2,h3,h4,h5,h6,h7));
3381 fNestedLoopsResultsSinPro->GetXaxis()->SetBinLabel(15,Form(
"N: 8p(%d,%d,%d,%d,%d,%d,%d,%d)",h1,h2,h3,h4,h5,h6,h7,h8));
3382 fNestedLoopsResultsSinPro->GetXaxis()->SetBinLabel(16,Form(
"Q: 8p(%d,%d,%d,%d,%d,%d,%d,%d)",h1,h2,h3,h4,h5,h6,h7,h8));
3402 TString sMethodName =
"AliFlowAnalysisWithMultiparticleCorrelations::BookEverythingForStandardCandles()";
3422 fStandardCandlesHist->SetStats(kFALSE);
3423 fStandardCandlesHist->SetMarkerStyle(kFullSquare);
3424 fStandardCandlesHist->SetMarkerColor(kBlue);
3425 fStandardCandlesHist->SetLineColor(kBlue);
3429 for(
Int_t n2=n1+1;n2<=-1;n2++)
3431 fStandardCandlesHist->GetXaxis()->SetBinLabel(binNo++,Form(
"SC(%d,%d,%d,%d)",n1,n2,-1*n2,-1*n1));
3434 if(binNo-1 != nBins){Fatal(sMethodName.Data(),
"Well, binNo-1 != nBins ... :'( ");}
3441 if(nBins2D<=0){Fatal(sMethodName.Data(),
"nBins2D<=0");}
3442 fProductsSCPro =
new TProfile2D(
"fProductsSCPro",
"Products of correlations",nBins2D,0.,nBins2D,nBins2D,0.,nBins2D);
3443 fProductsSCPro->SetStats(kFALSE);
3444 fProductsSCPro->Sumw2();
3453 if(sBinLabel.EqualTo(
"")){Fatal(sMethodName.Data(),
"sBinLabel.EqualTo...");}
3454 fProductsSCPro->GetXaxis()->SetBinLabel(b,sBinLabel.ReplaceAll(
"SC",
"Cos").Data());
3455 fProductsSCPro->GetYaxis()->SetBinLabel(b,sBinLabel.ReplaceAll(
"SC",
"Cos").Data());
3477 TString sMethodName =
"AliFlowAnalysisWithMultiparticleCorrelations::GetOutputHistograms(TList *histList)";
3481 if(!
fHistList){Fatal(sMethodName.Data(),
"fHistList is malicious today...");}
3485 if(!fInternalFlagsPro){Fatal(sMethodName.Data(),
"fInternalFlagsPro");}
3525 TString sMethodName =
"AliFlowAnalysisWithMultiparticleCorrelations::GetPointersForQvector()";
3529 if(!
fQvectorList){Fatal(sMethodName.Data(),
"fQvectorList");}
3533 if(!fQvectorFlagsPro){Fatal(sMethodName.Data(),
"fQvectorFlagsPro");}
3553 TString sMethodName =
"AliFlowAnalysisWithMultiparticleCorrelations::GetPointersForStandardCandles()";
3561 if(!fStandardCandlesFlagsPro){Fatal(sMethodName.Data(),
"fStandardCandlesFlagsPro");}
3567 if(!fCalculateStandardCandles){
return;}
3592 TString sMethodName =
"AliFlowAnalysisWithMultiparticleCorrelations::GetPointersForControlHistograms()";
3600 if(!fControlHistogramsFlagsPro){Fatal(sMethodName.Data(),
"fControlHistogramsFlagsPro");}
3607 fDontFill[0] = fControlHistogramsFlagsPro->GetBinContent(5);
3608 fDontFill[1] = fControlHistogramsFlagsPro->GetBinContent(6);
3609 fDontFill[2] = fControlHistogramsFlagsPro->GetBinContent(7);
3611 if(!fFillControlHistograms){
return;}
3614 TString name[2][3] = {{
"RP,phi",
"RP,pt",
"RP,eta"},{
"POI,phi",
"POI,pt",
"POI,eta"}};
3615 for(
Int_t rp=0;rp<2;rp++)
3618 for(
Int_t ppe=0;ppe<3;ppe++)
3626 TString nameMult[3] = {
"Multiplicity (RP)",
"Multiplicity (POI)",
"Multiplicity (REF)"};
3627 for(
Int_t rprm=0;rprm<3;rprm++)
3664 TString sMethodName =
"AliFlowAnalysisWithMultiparticleCorrelations::GetPointersForCorrelations()";
3673 if(!fCorrelationsFlagsPro){Fatal(sMethodName.Data(),
"fCorrelationsFlagsPro");}
3690 if(!fCalculateCorrelations){
return;}
3693 TString sCosSin[2] = {
"Cos",
"Sin"};
3694 for(
Int_t cs=0;cs<2;cs++)
3703 if(!
fCorrelationsPro[cs][
c]){Fatal(sMethodName.Data(),
"%dpCorrelations%s",c+1,sCosSin[cs].Data());}
3722 TString sMethodName =
"AliFlowAnalysisWithMultiparticleCorrelations::GetPointersForQcumulants()";
3730 if(!fQcumulantsFlagsPro){Fatal(sMethodName.Data(),
"fQcumulantsFlagsPro");}
3737 if(!fCalculateQcumulants){
return;}
3745 if(!fReferenceFlowHist){Fatal(sMethodName.Data(),
"fReferenceFlowHist");}
3766 TString sMethodName =
"AliFlowAnalysisWithMultiparticleCorrelations::GetPointersForDiffCorrelations()";
3774 if(!fDiffCorrelationsFlagsPro){Fatal(sMethodName.Data(),
"fDiffCorrelationsFlagsPro");}
3779 if(!fCalculateDiffCorrelations){
return;}
3811 TString sMethodName =
"AliFlowAnalysisWithMultiparticleCorrelations::GetPointersForSymmetryPlanes()";
3819 if(!fSymmetryPlanesFlagsPro){Fatal(sMethodName.Data(),
"fSymmetryPlanesFlagsPro");}
3824 if(!fCalculateSymmetryPlanes){
return;}
3827 for(
Int_t gc=0;gc<1;gc++)
3829 for(
Int_t n=0;n<2;n++)
3832 if(!
fSymmetryPlanesPro[gc][n]){Fatal(sMethodName.Data(),
"fSymmetryPlanesPro[%d][%d]",gc,n);}
3846 for(
Int_t wp=0;wp<fMaxCorrelator+1;wp++)
3849 for(
Int_t b=0;b<100;b++)
3851 fpvector[b][h][wp] = TComplex(0.,0.);
3852 fqvector[b][h][wp] = TComplex(0.,0.);
3867 for(
Int_t wp=0;wp<fMaxCorrelator+1;wp++)
3871 for(
Int_t b=0;b<100;b++)
3873 fpvector[b][h][wp] = TComplex(0.,0.);
3874 fqvector[b][h][wp] = TComplex(0.,0.);
3888 return TComplex::Conjugate(
fQvector[-n][wp]);
3913 if(nUseWeightsForPOI == 1 && nUseWeightsForRP == 0){wp=1;}
3914 else if(nUseWeightsForPOI == 0 && nUseWeightsForRP == 1){wp-=1;}
3927 TComplex one =
Q(n1,1);
3939 TComplex two =
Q(n1,1)*
Q(n2,1)-
Q(n1+n2,2);
3951 TComplex three =
Q(n1,1)*
Q(n2,1)*
Q(n3,1)-
Q(n1+n2,2)*
Q(n3,1)-
Q(n2,1)*
Q(n1+n3,2)
3952 -
Q(n1,1)*
Q(n2+n3,2)+2.*
Q(n1+n2+n3,3);
3964 TComplex four =
Q(n1,1)*
Q(n2,1)*
Q(n3,1)*
Q(n4,1)-
Q(n1+n2,2)*
Q(n3,1)*
Q(n4,1)-
Q(n2,1)*
Q(n1+n3,2)*
Q(n4,1)
3965 -
Q(n1,1)*
Q(n2+n3,2)*
Q(n4,1)+2.*
Q(n1+n2+n3,3)*
Q(n4,1)-
Q(n2,1)*
Q(n3,1)*
Q(n1+n4,2)
3966 +
Q(n2+n3,2)*
Q(n1+n4,2)-
Q(n1,1)*
Q(n3,1)*
Q(n2+n4,2)+
Q(n1+n3,2)*
Q(n2+n4,2)
3967 + 2.*
Q(n3,1)*
Q(n1+n2+n4,3)-
Q(n1,1)*
Q(n2,1)*
Q(n3+n4,2)+
Q(n1+n2,2)*
Q(n3+n4,2)
3968 + 2.*
Q(n2,1)*
Q(n1+n3+n4,3)+2.*
Q(n1,1)*
Q(n2+n3+n4,3)-6.*
Q(n1+n2+n3+n4,4);
3980 TComplex five =
Q(n1,1)*
Q(n2,1)*
Q(n3,1)*
Q(n4,1)*
Q(n5,1)-
Q(n1+n2,2)*
Q(n3,1)*
Q(n4,1)*
Q(n5,1)
3981 -
Q(n2,1)*
Q(n1+n3,2)*
Q(n4,1)*
Q(n5,1)-
Q(n1,1)*
Q(n2+n3,2)*
Q(n4,1)*
Q(n5,1)
3982 + 2.*
Q(n1+n2+n3,3)*
Q(n4,1)*
Q(n5,1)-
Q(n2,1)*
Q(n3,1)*
Q(n1+n4,2)*
Q(n5,1)
3983 +
Q(n2+n3,2)*
Q(n1+n4,2)*
Q(n5,1)-
Q(n1,1)*
Q(n3,1)*
Q(n2+n4,2)*
Q(n5,1)
3984 +
Q(n1+n3,2)*
Q(n2+n4,2)*
Q(n5,1)+2.*
Q(n3,1)*
Q(n1+n2+n4,3)*
Q(n5,1)
3985 -
Q(n1,1)*
Q(n2,1)*
Q(n3+n4,2)*
Q(n5,1)+
Q(n1+n2,2)*
Q(n3+n4,2)*
Q(n5,1)
3986 + 2.*
Q(n2,1)*
Q(n1+n3+n4,3)*
Q(n5,1)+2.*
Q(n1,1)*
Q(n2+n3+n4,3)*
Q(n5,1)
3987 - 6.*
Q(n1+n2+n3+n4,4)*
Q(n5,1)-
Q(n2,1)*
Q(n3,1)*
Q(n4,1)*
Q(n1+n5,2)
3988 +
Q(n2+n3,2)*
Q(n4,1)*
Q(n1+n5,2)+
Q(n3,1)*
Q(n2+n4,2)*
Q(n1+n5,2)
3989 +
Q(n2,1)*
Q(n3+n4,2)*
Q(n1+n5,2)-2.*
Q(n2+n3+n4,3)*
Q(n1+n5,2)
3990 -
Q(n1,1)*
Q(n3,1)*
Q(n4,1)*
Q(n2+n5,2)+
Q(n1+n3,2)*
Q(n4,1)*
Q(n2+n5,2)
3991 +
Q(n3,1)*
Q(n1+n4,2)*
Q(n2+n5,2)+
Q(n1,1)*
Q(n3+n4,2)*
Q(n2+n5,2)
3992 - 2.*
Q(n1+n3+n4,3)*
Q(n2+n5,2)+2.*
Q(n3,1)*
Q(n4,1)*
Q(n1+n2+n5,3)
3993 - 2.*
Q(n3+n4,2)*
Q(n1+n2+n5,3)-
Q(n1,1)*
Q(n2,1)*
Q(n4,1)*
Q(n3+n5,2)
3994 +
Q(n1+n2,2)*
Q(n4,1)*
Q(n3+n5,2)+
Q(n2,1)*
Q(n1+n4,2)*
Q(n3+n5,2)
3995 +
Q(n1,1)*
Q(n2+n4,2)*
Q(n3+n5,2)-2.*
Q(n1+n2+n4,3)*
Q(n3+n5,2)
3996 + 2.*
Q(n2,1)*
Q(n4,1)*
Q(n1+n3+n5,3)-2.*
Q(n2+n4,2)*
Q(n1+n3+n5,3)
3997 + 2.*
Q(n1,1)*
Q(n4,1)*
Q(n2+n3+n5,3)-2.*
Q(n1+n4,2)*
Q(n2+n3+n5,3)
3998 - 6.*
Q(n4,1)*
Q(n1+n2+n3+n5,4)-
Q(n1,1)*
Q(n2,1)*
Q(n3,1)*
Q(n4+n5,2)
3999 +
Q(n1+n2,2)*
Q(n3,1)*
Q(n4+n5,2)+
Q(n2,1)*
Q(n1+n3,2)*
Q(n4+n5,2)
4000 +
Q(n1,1)*
Q(n2+n3,2)*
Q(n4+n5,2)-2.*
Q(n1+n2+n3,3)*
Q(n4+n5,2)
4001 + 2.*
Q(n2,1)*
Q(n3,1)*
Q(n1+n4+n5,3)-2.*
Q(n2+n3,2)*
Q(n1+n4+n5,3)
4002 + 2.*
Q(n1,1)*
Q(n3,1)*
Q(n2+n4+n5,3)-2.*
Q(n1+n3,2)*
Q(n2+n4+n5,3)
4003 - 6.*
Q(n3,1)*
Q(n1+n2+n4+n5,4)+2.*
Q(n1,1)*
Q(n2,1)*
Q(n3+n4+n5,3)
4004 - 2.*
Q(n1+n2,2)*
Q(n3+n4+n5,3)-6.*
Q(n2,1)*
Q(n1+n3+n4+n5,4)
4005 - 6.*
Q(n1,1)*
Q(n2+n3+n4+n5,4)+24.*
Q(n1+n2+n3+n4+n5,5);
4017 TComplex six =
Q(n1,1)*
Q(n2,1)*
Q(n3,1)*
Q(n4,1)*
Q(n5,1)*
Q(n6,1)-
Q(n1+n2,2)*
Q(n3,1)*
Q(n4,1)*
Q(n5,1)*
Q(n6,1)
4018 -
Q(n2,1)*
Q(n1+n3,2)*
Q(n4,1)*
Q(n5,1)*
Q(n6,1)-
Q(n1,1)*
Q(n2+n3,2)*
Q(n4,1)*
Q(n5,1)*
Q(n6,1)
4019 + 2.*
Q(n1+n2+n3,3)*
Q(n4,1)*
Q(n5,1)*
Q(n6,1)-
Q(n2,1)*
Q(n3,1)*
Q(n1+n4,2)*
Q(n5,1)*
Q(n6,1)
4020 +
Q(n2+n3,2)*
Q(n1+n4,2)*
Q(n5,1)*
Q(n6,1)-
Q(n1,1)*
Q(n3,1)*
Q(n2+n4,2)*
Q(n5,1)*
Q(n6,1)
4021 +
Q(n1+n3,2)*
Q(n2+n4,2)*
Q(n5,1)*
Q(n6,1)+2.*
Q(n3,1)*
Q(n1+n2+n4,3)*
Q(n5,1)*
Q(n6,1)
4022 -
Q(n1,1)*
Q(n2,1)*
Q(n3+n4,2)*
Q(n5,1)*
Q(n6,1)+
Q(n1+n2,2)*
Q(n3+n4,2)*
Q(n5,1)*
Q(n6,1)
4023 + 2.*
Q(n2,1)*
Q(n1+n3+n4,3)*
Q(n5,1)*
Q(n6,1)+2.*
Q(n1,1)*
Q(n2+n3+n4,3)*
Q(n5,1)*
Q(n6,1)
4024 - 6.*
Q(n1+n2+n3+n4,4)*
Q(n5,1)*
Q(n6,1)-
Q(n2,1)*
Q(n3,1)*
Q(n4,1)*
Q(n1+n5,2)*
Q(n6,1)
4025 +
Q(n2+n3,2)*
Q(n4,1)*
Q(n1+n5,2)*
Q(n6,1)+
Q(n3,1)*
Q(n2+n4,2)*
Q(n1+n5,2)*
Q(n6,1)
4026 +
Q(n2,1)*
Q(n3+n4,2)*
Q(n1+n5,2)*
Q(n6,1)-2.*
Q(n2+n3+n4,3)*
Q(n1+n5,2)*
Q(n6,1)
4027 -
Q(n1,1)*
Q(n3,1)*
Q(n4,1)*
Q(n2+n5,2)*
Q(n6,1)+
Q(n1+n3,2)*
Q(n4,1)*
Q(n2+n5,2)*
Q(n6,1)
4028 +
Q(n3,1)*
Q(n1+n4,2)*
Q(n2+n5,2)*
Q(n6,1)+
Q(n1,1)*
Q(n3+n4,2)*
Q(n2+n5,2)*
Q(n6,1)
4029 - 2.*
Q(n1+n3+n4,3)*
Q(n2+n5,2)*
Q(n6,1)+2.*
Q(n3,1)*
Q(n4,1)*
Q(n1+n2+n5,3)*
Q(n6,1)
4030 - 2.*
Q(n3+n4,2)*
Q(n1+n2+n5,3)*
Q(n6,1)-
Q(n1,1)*
Q(n2,1)*
Q(n4,1)*
Q(n3+n5,2)*
Q(n6,1)
4031 +
Q(n1+n2,2)*
Q(n4,1)*
Q(n3+n5,2)*
Q(n6,1)+
Q(n2,1)*
Q(n1+n4,2)*
Q(n3+n5,2)*
Q(n6,1)
4032 +
Q(n1,1)*
Q(n2+n4,2)*
Q(n3+n5,2)*
Q(n6,1)-2.*
Q(n1+n2+n4,3)*
Q(n3+n5,2)*
Q(n6,1)
4033 + 2.*
Q(n2,1)*
Q(n4,1)*
Q(n1+n3+n5,3)*
Q(n6,1)-2.*
Q(n2+n4,2)*
Q(n1+n3+n5,3)*
Q(n6,1)
4034 + 2.*
Q(n1,1)*
Q(n4,1)*
Q(n2+n3+n5,3)*
Q(n6,1)-2.*
Q(n1+n4,2)*
Q(n2+n3+n5,3)*
Q(n6,1)
4035 - 6.*
Q(n4,1)*
Q(n1+n2+n3+n5,4)*
Q(n6,1)-
Q(n1,1)*
Q(n2,1)*
Q(n3,1)*
Q(n4+n5,2)*
Q(n6,1)
4036 +
Q(n1+n2,2)*
Q(n3,1)*
Q(n4+n5,2)*
Q(n6,1)+
Q(n2,1)*
Q(n1+n3,2)*
Q(n4+n5,2)*
Q(n6,1)
4037 +
Q(n1,1)*
Q(n2+n3,2)*
Q(n4+n5,2)*
Q(n6,1)-2.*
Q(n1+n2+n3,3)*
Q(n4+n5,2)*
Q(n6,1)
4038 + 2.*
Q(n2,1)*
Q(n3,1)*
Q(n1+n4+n5,3)*
Q(n6,1)-2.*
Q(n2+n3,2)*
Q(n1+n4+n5,3)*
Q(n6,1)
4039 + 2.*
Q(n1,1)*
Q(n3,1)*
Q(n2+n4+n5,3)*
Q(n6,1)-2.*
Q(n1+n3,2)*
Q(n2+n4+n5,3)*
Q(n6,1)
4040 - 6.*
Q(n3,1)*
Q(n1+n2+n4+n5,4)*
Q(n6,1)+2.*
Q(n1,1)*
Q(n2,1)*
Q(n3+n4+n5,3)*
Q(n6,1)
4041 - 2.*
Q(n1+n2,2)*
Q(n3+n4+n5,3)*
Q(n6,1)-6.*
Q(n2,1)*
Q(n1+n3+n4+n5,4)*
Q(n6,1)
4042 - 6.*
Q(n1,1)*
Q(n2+n3+n4+n5,4)*
Q(n6,1)+24.*
Q(n1+n2+n3+n4+n5,5)*
Q(n6,1)
4043 -
Q(n2,1)*
Q(n3,1)*
Q(n4,1)*
Q(n5,1)*
Q(n1+n6,2)+
Q(n2+n3,2)*
Q(n4,1)*
Q(n5,1)*
Q(n1+n6,2)
4044 +
Q(n3,1)*
Q(n2+n4,2)*
Q(n5,1)*
Q(n1+n6,2)+
Q(n2,1)*
Q(n3+n4,2)*
Q(n5,1)*
Q(n1+n6,2)
4045 - 2.*
Q(n2+n3+n4,3)*
Q(n5,1)*
Q(n1+n6,2)+
Q(n3,1)*
Q(n4,1)*
Q(n2+n5,2)*
Q(n1+n6,2)
4046 -
Q(n3+n4,2)*
Q(n2+n5,2)*
Q(n1+n6,2)+
Q(n2,1)*
Q(n4,1)*
Q(n3+n5,2)*
Q(n1+n6,2)
4047 -
Q(n2+n4,2)*
Q(n3+n5,2)*
Q(n1+n6,2)-2.*
Q(n4,1)*
Q(n2+n3+n5,3)*
Q(n1+n6,2)
4048 +
Q(n2,1)*
Q(n3,1)*
Q(n4+n5,2)*
Q(n1+n6,2)-
Q(n2+n3,2)*
Q(n4+n5,2)*
Q(n1+n6,2)
4049 - 2.*
Q(n3,1)*
Q(n2+n4+n5,3)*
Q(n1+n6,2)-2.*
Q(n2,1)*
Q(n3+n4+n5,3)*
Q(n1+n6,2)
4050 + 6.*
Q(n2+n3+n4+n5,4)*
Q(n1+n6,2)-
Q(n1,1)*
Q(n3,1)*
Q(n4,1)*
Q(n5,1)*
Q(n2+n6,2)
4051 +
Q(n1+n3,2)*
Q(n4,1)*
Q(n5,1)*
Q(n2+n6,2)+
Q(n3,1)*
Q(n1+n4,2)*
Q(n5,1)*
Q(n2+n6,2)
4052 +
Q(n1,1)*
Q(n3+n4,2)*
Q(n5,1)*
Q(n2+n6,2)-2.*
Q(n1+n3+n4,3)*
Q(n5,1)*
Q(n2+n6,2)
4053 +
Q(n3,1)*
Q(n4,1)*
Q(n1+n5,2)*
Q(n2+n6,2)-
Q(n3+n4,2)*
Q(n1+n5,2)*
Q(n2+n6,2)
4054 +
Q(n1,1)*
Q(n4,1)*
Q(n3+n5,2)*
Q(n2+n6,2)-
Q(n1+n4,2)*
Q(n3+n5,2)*
Q(n2+n6,2)
4055 - 2.*
Q(n4,1)*
Q(n1+n3+n5,3)*
Q(n2+n6,2)+
Q(n1,1)*
Q(n3,1)*
Q(n4+n5,2)*
Q(n2+n6,2)
4056 -
Q(n1+n3,2)*
Q(n4+n5,2)*
Q(n2+n6,2)-2.*
Q(n3,1)*
Q(n1+n4+n5,3)*
Q(n2+n6,2)
4057 - 2.*
Q(n1,1)*
Q(n3+n4+n5,3)*
Q(n2+n6,2)+6.*
Q(n1+n3+n4+n5,4)*
Q(n2+n6,2)
4058 + 2.*
Q(n3,1)*
Q(n4,1)*
Q(n5,1)*
Q(n1+n2+n6,3)-2.*
Q(n3+n4,2)*
Q(n5,1)*
Q(n1+n2+n6,3)
4059 - 2.*
Q(n4,1)*
Q(n3+n5,2)*
Q(n1+n2+n6,3)-2.*
Q(n3,1)*
Q(n4+n5,2)*
Q(n1+n2+n6,3)
4060 + 4.*
Q(n3+n4+n5,3)*
Q(n1+n2+n6,3)-
Q(n1,1)*
Q(n2,1)*
Q(n4,1)*
Q(n5,1)*
Q(n3+n6,2)
4061 +
Q(n1+n2,2)*
Q(n4,1)*
Q(n5,1)*
Q(n3+n6,2)+
Q(n2,1)*
Q(n1+n4,2)*
Q(n5,1)*
Q(n3+n6,2)
4062 +
Q(n1,1)*
Q(n2+n4,2)*
Q(n5,1)*
Q(n3+n6,2)-2.*
Q(n1+n2+n4,3)*
Q(n5,1)*
Q(n3+n6,2)
4063 +
Q(n2,1)*
Q(n4,1)*
Q(n1+n5,2)*
Q(n3+n6,2)-
Q(n2+n4,2)*
Q(n1+n5,2)*
Q(n3+n6,2)
4064 +
Q(n1,1)*
Q(n4,1)*
Q(n2+n5,2)*
Q(n3+n6,2)-
Q(n1+n4,2)*
Q(n2+n5,2)*
Q(n3+n6,2)
4065 - 2.*
Q(n4,1)*
Q(n1+n2+n5,3)*
Q(n3+n6,2)+
Q(n1,1)*
Q(n2,1)*
Q(n4+n5,2)*
Q(n3+n6,2)
4066 -
Q(n1+n2,2)*
Q(n4+n5,2)*
Q(n3+n6,2)-2.*
Q(n2,1)*
Q(n1+n4+n5,3)*
Q(n3+n6,2)
4067 - 2.*
Q(n1,1)*
Q(n2+n4+n5,3)*
Q(n3+n6,2)+6.*
Q(n1+n2+n4+n5,4)*
Q(n3+n6,2)
4068 + 2.*
Q(n2,1)*
Q(n4,1)*
Q(n5,1)*
Q(n1+n3+n6,3)-2.*
Q(n2+n4,2)*
Q(n5,1)*
Q(n1+n3+n6,3)
4069 - 2.*
Q(n4,1)*
Q(n2+n5,2)*
Q(n1+n3+n6,3)-2.*
Q(n2,1)*
Q(n4+n5,2)*
Q(n1+n3+n6,3)
4070 + 4.*
Q(n2+n4+n5,3)*
Q(n1+n3+n6,3)+2.*
Q(n1,1)*
Q(n4,1)*
Q(n5,1)*
Q(n2+n3+n6,3)
4071 - 2.*
Q(n1+n4,2)*
Q(n5,1)*
Q(n2+n3+n6,3)-2.*
Q(n4,1)*
Q(n1+n5,2)*
Q(n2+n3+n6,3)
4072 - 2.*
Q(n1,1)*
Q(n4+n5,2)*
Q(n2+n3+n6,3)+4.*
Q(n1+n4+n5,3)*
Q(n2+n3+n6,3)
4073 - 6.*
Q(n4,1)*
Q(n5,1)*
Q(n1+n2+n3+n6,4)+6.*
Q(n4+n5,2)*
Q(n1+n2+n3+n6,4)
4074 -
Q(n1,1)*
Q(n2,1)*
Q(n3,1)*
Q(n5,1)*
Q(n4+n6,2)+
Q(n1+n2,2)*
Q(n3,1)*
Q(n5,1)*
Q(n4+n6,2)
4075 +
Q(n2,1)*
Q(n1+n3,2)*
Q(n5,1)*
Q(n4+n6,2)+
Q(n1,1)*
Q(n2+n3,2)*
Q(n5,1)*
Q(n4+n6,2)
4076 - 2.*
Q(n1+n2+n3,3)*
Q(n5,1)*
Q(n4+n6,2)+
Q(n2,1)*
Q(n3,1)*
Q(n1+n5,2)*
Q(n4+n6,2)
4077 -
Q(n2+n3,2)*
Q(n1+n5,2)*
Q(n4+n6,2)+
Q(n1,1)*
Q(n3,1)*
Q(n2+n5,2)*
Q(n4+n6,2)
4078 -
Q(n1+n3,2)*
Q(n2+n5,2)*
Q(n4+n6,2)-2.*
Q(n3,1)*
Q(n1+n2+n5,3)*
Q(n4+n6,2)
4079 +
Q(n1,1)*
Q(n2,1)*
Q(n3+n5,2)*
Q(n4+n6,2)-
Q(n1+n2,2)*
Q(n3+n5,2)*
Q(n4+n6,2)
4080 - 2.*
Q(n2,1)*
Q(n1+n3+n5,3)*
Q(n4+n6,2)-2.*
Q(n1,1)*
Q(n2+n3+n5,3)*
Q(n4+n6,2)
4081 + 6.*
Q(n1+n2+n3+n5,4)*
Q(n4+n6,2)+2.*
Q(n2,1)*
Q(n3,1)*
Q(n5,1)*
Q(n1+n4+n6,3)
4082 - 2.*
Q(n2+n3,2)*
Q(n5,1)*
Q(n1+n4+n6,3)-2.*
Q(n3,1)*
Q(n2+n5,2)*
Q(n1+n4+n6,3)
4083 - 2.*
Q(n2,1)*
Q(n3+n5,2)*
Q(n1+n4+n6,3)+4.*
Q(n2+n3+n5,3)*
Q(n1+n4+n6,3)
4084 + 2.*
Q(n1,1)*
Q(n3,1)*
Q(n5,1)*
Q(n2+n4+n6,3)-2.*
Q(n1+n3,2)*
Q(n5,1)*
Q(n2+n4+n6,3)
4085 - 2.*
Q(n3,1)*
Q(n1+n5,2)*
Q(n2+n4+n6,3)-2.*
Q(n1,1)*
Q(n3+n5,2)*
Q(n2+n4+n6,3)
4086 + 4.*
Q(n1+n3+n5,3)*
Q(n2+n4+n6,3)-6.*
Q(n3,1)*
Q(n5,1)*
Q(n1+n2+n4+n6,4)
4087 + 6.*
Q(n3+n5,2)*
Q(n1+n2+n4+n6,4)+2.*
Q(n1,1)*
Q(n2,1)*
Q(n5,1)*
Q(n3+n4+n6,3)
4088 - 2.*
Q(n1+n2,2)*
Q(n5,1)*
Q(n3+n4+n6,3)-2.*
Q(n2,1)*
Q(n1+n5,2)*
Q(n3+n4+n6,3)
4089 - 2.*
Q(n1,1)*
Q(n2+n5,2)*
Q(n3+n4+n6,3)+4.*
Q(n1+n2+n5,3)*
Q(n3+n4+n6,3)
4090 - 6.*
Q(n2,1)*
Q(n5,1)*
Q(n1+n3+n4+n6,4)+6.*
Q(n2+n5,2)*
Q(n1+n3+n4+n6,4)
4091 - 6.*
Q(n1,1)*
Q(n5,1)*
Q(n2+n3+n4+n6,4)+6.*
Q(n1+n5,2)*
Q(n2+n3+n4+n6,4)
4092 + 24.*
Q(n5,1)*
Q(n1+n2+n3+n4+n6,5)-
Q(n1,1)*
Q(n2,1)*
Q(n3,1)*
Q(n4,1)*
Q(n5+n6,2)
4093 +
Q(n1+n2,2)*
Q(n3,1)*
Q(n4,1)*
Q(n5+n6,2)+
Q(n2,1)*
Q(n1+n3,2)*
Q(n4,1)*
Q(n5+n6,2)
4094 +
Q(n1,1)*
Q(n2+n3,2)*
Q(n4,1)*
Q(n5+n6,2)-2.*
Q(n1+n2+n3,3)*
Q(n4,1)*
Q(n5+n6,2)
4095 +
Q(n2,1)*
Q(n3,1)*
Q(n1+n4,2)*
Q(n5+n6,2)-
Q(n2+n3,2)*
Q(n1+n4,2)*
Q(n5+n6,2)
4096 +
Q(n1,1)*
Q(n3,1)*
Q(n2+n4,2)*
Q(n5+n6,2)-
Q(n1+n3,2)*
Q(n2+n4,2)*
Q(n5+n6,2)
4097 - 2.*
Q(n3,1)*
Q(n1+n2+n4,3)*
Q(n5+n6,2)+
Q(n1,1)*
Q(n2,1)*
Q(n3+n4,2)*
Q(n5+n6,2)
4098 -
Q(n1+n2,2)*
Q(n3+n4,2)*
Q(n5+n6,2)-2.*
Q(n2,1)*
Q(n1+n3+n4,3)*
Q(n5+n6,2)
4099 - 2.*
Q(n1,1)*
Q(n2+n3+n4,3)*