5 #include <TLorentzVector.h> 7 #include <TParticlePDG.h> 11 #include <TStopwatch.h> 14 CPart::CPart(
const TParticle &p) : fPt(p.Pt()), fEta(p.Eta()), fPhi(TVector2::Phi_0_2pi(p.Phi()))
16 TParticlePDG *
pdg = p.GetPDG(1);
21 TNamed(name,
""), fCumMBins(mbins), fMinM(minM), fEtaMin(-1), fEtaMax(1), fPtMin(0.3), fPtMax(3), fDoEtaGap(0),
22 fDoCharge(1), fDoQC(0), fDoQC44(0), fMaxNL4(50), fEGminNL4(0), fDoQC43(0), fMaxNL3(100), fEGminNL3(0),
23 fDoQC4withEG(0), fDoDebug(0), fDoPrint(0)
36 Info(
"Cumulants",
"Standalone version 1.0 started");
61 Double_t etacuts[] = {0.1,0.2,0.3,0.4,0.5,0.6,0.8,1.0,1.2,1.4,1.6,1.8,2.0,2.5};
70 for (
Int_t i=0;i<N;++i) {
72 fHists[hindex] =
new TProfile(Form(
"fEtaGapC2%02d",
Int_t(etacuts[i]*10)),Form(
";M;#LTcos(2#phi_{1}-2#phi_{2})#GT (|#eta|>%.1f)",etacuts[i]),
fCumMBins,0,
fCumMBins);
75 fHists[hindex] =
new TProfile(Form(
"fEtaGapC3%02d",
Int_t(etacuts[i]*10)),Form(
";M;#LTcos(3#phi_{1}-3#phi_{2})#GT (|#eta|>%.1f)",etacuts[i]),
fCumMBins,0,
fCumMBins);
78 fHists[hindex] =
new TProfile(Form(
"fEtaGapS2%02d",
Int_t(etacuts[i]*10)),Form(
";M;#LTsin(2#phi_{1}-2#phi_{2})#GT (|#eta|>%.1f)",etacuts[i]),
fCumMBins,0,
fCumMBins);
81 fHists[hindex] =
new TProfile(Form(
"fEtaGapS3%02d",
Int_t(etacuts[i]*10)),Form(
";M;#LTsin(3#phi_{1}-3#phi_{2})#GT (|#eta|>%.1f)",etacuts[i]),
fCumMBins,0,
fCumMBins);
160 for (
Int_t i=0;i<6;++i) {
175 for (
Int_t i=0;i<6;++i) {
186 for (
Double_t eg=0.05;eg<=0.5;eg+=0.05)
244 for (
UInt_t k=0;k<N;++k) {
257 for (
UInt_t i=0;i<N;++i) {
278 for (
Int_t k=2; k<7; ++k) {
279 fQC[k] += TComplex(TMath::Cos(k*phi),TMath::Sin(k*phi));
288 Double_t Q32re = (
fQC[6]*TComplex::Power(TComplex::Conjugate(
fQC[3]),2)).Re();
289 Double_t Q42re = TComplex(
fQC[4]*TComplex::Power(TComplex::Conjugate(
fQC[2]),2)).Re();
290 Double_t Q6are = TComplex(
fQC[4]*
fQC[2]*TComplex::Power(TComplex::Conjugate(
fQC[2]),3)).Re();
291 Double_t Q6bre = TComplex(
fQC[6]*TComplex::Power(TComplex::Conjugate(
fQC[2]),3)).Re();
292 Double_t Q6cre = TComplex(
fQC[6]*TComplex::Conjugate(
fQC[4])*TComplex::Conjugate(
fQC[2])).Re();
296 Int_t M4 = M*(M-1)*(M-2)*(M-3);
308 fHists[hindex++]->Fill(M,(Q22-M)/M2);
310 Double_t qc42tmp = (Q22*Q22+Q42-2*Q42re-4*(M-2)*Q22+2*M*(M-3));
311 fHists[hindex]->Fill(M,qc42tmp/M4);
315 Double_t qc6tmp = Q22*Q22*Q22 + 9*Q42*Q22 - 6*Q6are
317 + 18*(M-4)*Q42re + 4*Q62
318 - 9*(M-4)*Q22*Q22 - 9*(M-4)*Q42
321 fHists[hindex]->Fill(M,qc6tmp/M/(M-1)/(M-2)/(M-3)/(M-4)/(M-5));
324 fHists[hindex++]->Fill(M,(Q32-M)/M2);
326 Double_t qc43tmp = (Q32*Q32+Q62-2*Q32re-4*(M-2)*Q32+2*M*(M-3));
327 fHists[hindex]->Fill(M,qc43tmp/M4);
335 TComplex qcpp[7],qcnn[7];
336 qcpp[2]=0;qcpp[3]=0;qcpp[4]=0,qcpp[5]=0,qcpp[6]=0;
337 qcnn[2]=0;qcnn[3]=0;qcnn[4]=0,qcnn[5]=0,qcnn[6]=0;
346 for (
Int_t k=2; k<5; ++k)
347 qcpp[k] += TComplex(TMath::Cos(k*phi),TMath::Sin(k*phi));
350 for (
Int_t k=2; k<5; ++k)
351 qcnn[k] += TComplex(TMath::Cos(k*phi),TMath::Sin(k*phi));
359 Double_t Q32ppre = (qcpp[6]*TComplex::Power(TComplex::Conjugate(qcpp[3]),2)).Re();
360 Double_t Q42ppre = (qcpp[4]*TComplex::Power(TComplex::Conjugate(qcpp[2]),2)).Re();
365 Double_t Q32nnre = (qcnn[6]*TComplex::Power(TComplex::Conjugate(qcnn[3]),2)).Re();
366 Double_t Q42nnre = (qcnn[4]*TComplex::Power(TComplex::Conjugate(qcnn[2]),2)).Re();
369 const Int_t sind=280;
372 Int_t Mpp2 = Mpp*(Mpp-1);
373 Int_t Mpp4 = Mpp*(Mpp-1)*(Mpp-2)*(Mpp-3);
374 Int_t Mnn2 = Mnn*(Mnn-1);
375 Int_t Mnn4 = Mnn*(Mnn-1)*(Mnn-2)*(Mnn-3);
377 fHists[262]->Fill(Mpp,(Q22pp-Mpp)/Mpp2);
378 fHists[280]->Fill(M,(Q22pp-Mpp)/Mpp2);
379 fHists[263]->Fill(Mpp,(Q32pp-Mpp)/Mpp2);
380 fHists[282]->Fill(M,(Q32pp-Mpp)/Mpp2);
382 Double_t qc4tmp = (Q22pp*Q22pp+Q42pp-2*Q42ppre-4*(Mpp-2)*Q22pp+2*Mpp*(Mpp-3));
383 fHists[264]->Fill(Mpp,qc4tmp/Mpp4);
384 fHists[281]->Fill(M,qc4tmp/Mpp4);
385 Double_t qc43tmp = (Q32pp*Q32pp+Q62pp-2*Q32ppre-4*(Mpp-2)*Q32pp+2*Mpp*(Mpp-3));
386 fHists[265]->Fill(Mpp,qc43tmp/Mpp4);
387 fHists[283]->Fill(M,qc43tmp/Mpp4);
391 fHists[266]->Fill(Mnn,(Q22nn-Mnn)/Mnn2);
392 fHists[280]->Fill(M,(Q22nn-Mnn)/Mnn2);
393 fHists[267]->Fill(Mnn,(Q32nn-Mnn)/Mnn2);
394 fHists[282]->Fill(M,(Q32nn-Mnn)/Mnn2);
396 Double_t qc4tmp = (Q22nn*Q22nn+Q42nn-2*Q42nnre-4*(Mnn-2)*Q22nn+2*Mnn*(Mnn-3));
397 fHists[268]->Fill(Mnn,qc4tmp/Mnn4);
398 fHists[281]->Fill(M,qc4tmp/Mnn4);
399 Double_t qc43tmp = (Q32nn*Q32nn+Q62nn-2*Q32nnre-4*(Mnn-2)*Q32nn+2*Mnn*(Mnn-3));
400 fHists[269]->Fill(Mnn,qc43tmp/Mnn4);
401 fHists[283]->Fill(M,qc43tmp/Mnn4);
415 for (
Int_t i1=0; i1<
fM; ++i1) {
419 for (
Int_t i2=0; i2<
fM; ++i2) {
424 Double_t eta12=TMath::Abs(eta1-eta2);
428 for (
Int_t i3=0; i3<
fM; ++i3) {
435 Double_t eta13=TMath::Abs(eta1-eta3);
438 Double_t eta23=TMath::Abs(eta2-eta3);
442 for (
Int_t i4=0; i4<
fM; ++i4) {
452 Double_t eta14=TMath::Abs(eta1-eta4);
453 Double_t eta24=TMath::Abs(eta2-eta4);
454 Double_t eta34=TMath::Abs(eta3-eta4);
463 for (
Int_t eg=0;eg<6;++eg) {
465 if ((eta12>etagap)&&(eta13>etagap)&&(eta14>etagap)&&
466 (eta23>etagap)&&(eta24>etagap)&&(eta34>etagap)) {
477 for (
Int_t eg=0;eg<6;++eg) {
482 fHists[hindex+eg]->Fill(fM,val);
492 TComplex nq2[6],nq3[6],nq4[6];
493 Int_t np[6]={0}, ns[6]={0};
494 for (
Int_t i1=0; i1<
fM; ++i1) {
498 for (
Int_t i2=0; i2<
fM; ++i2) {
503 Double_t eta12=TMath::Abs(eta1-eta2);
508 TComplex v2(TMath::Cos(2*phi12),TMath::Sin(2*phi12));
509 TComplex v4(1+TMath::Cos(4*phi12),TMath::Sin(4*phi12));
510 for (
Int_t eg=0;eg<6;++eg) {
519 for (
Int_t i3=0; i3<
fM; ++i3) {
527 Double_t eta13=TMath::Abs(eta1-eta3);
530 Double_t eta23=TMath::Abs(eta2-eta3);
535 Double_t t1=2*TMath::Cos(2*(phi12+phi13))+2*TMath::Cos(2*(phi12-phi13));
536 Double_t t2=2*TMath::Sin(2*(phi12+phi13))+2*TMath::Sin(2*(phi12-phi13));
538 for (
Int_t eg=0;eg<6;++eg) {
540 if ((eta13>etagap)&&(eta23>etagap)) {
550 for (
Int_t eg=0;eg<6;++eg) {
551 Int_t n=np[eg]*np[eg]-ns[eg];
554 Double_t val=TComplex(nq2[eg]*nq2[eg]-nq4[eg]-nq3[eg]).Re()/n;
555 fHists[hindex+eg]->Fill(fM,val);
563 const Double_t el=-TMath::Abs(etagap);
564 const Double_t eh=+TMath::Abs(etagap);
565 TComplex cp[5][5]={0};
566 TComplex cm[5][5]={0};
574 for(
Int_t iharm=0; iharm<5; ++iharm) {
575 for(
Int_t ipow=0; ipow<5; ++ipow) {
576 cm[iharm][ipow] += TComplex(TMath::Power(TMath::Cos(iharm*phi),ipow),TMath::Power(TMath::Sin(iharm*phi),ipow));
581 for(
Int_t iharm=0; iharm<5; ++iharm) {
582 for(
Int_t ipow=0; ipow<5; ++ipow) {
583 cp[iharm][ipow] += TComplex(TMath::Power(TMath::Cos(iharm*phi),ipow),TMath::Power(TMath::Sin(iharm*phi),ipow));
590 val2 = TComplex(cp[2][1]*TComplex::Conjugate(cm[2][1])).Re()/nn/np;
592 TComplex Dn4Gap(cp[0][1]*cp[0][1]*cm[0][1]*cm[0][1] - cp[0][2]*cm[0][1]*cm[0][1] - cp[0][1]*cp[0][1]*cm[0][2] + cp[0][2]*cm[0][2]);
593 TComplex v24Gap(cp[2][1]*cp[2][1]*TComplex::Conjugate(cm[2][1])*TComplex::Conjugate(cm[2][1])
594 - cp[4][2]*TComplex::Conjugate(cm[2][1])*TComplex::Conjugate(cm[2][1])
595 - cp[2][1]*cp[2][1]*TComplex::Conjugate(cm[4][2]) + cp[4][2]*TComplex::Conjugate(cm[4][2]));
597 val4 = v24Gap.Re()/Dn4Gap.Re();
608 for (
Int_t i=0;i<n;++i) {
611 Int_t hindex=400+4*i;
612 fHists[hindex++]->Fill(nn);
613 fHists[hindex++]->Fill(np);
628 const Int_t en = trks.GetEntries();
629 for (
Int_t i=0;i<en;++i) {
631 AliVParticle *pav =
dynamic_cast<AliVParticle*
>(trks.At(i));
635 TParticle *par =
dynamic_cast<TParticle*
>(trks.At(i));
639 ::Error(
"Cumulants::SetTracks",
"Type of particle not known!");
667 TProfile* hqqqqG =
new TProfile(
"hqqqqG",
";multiplicity;Q_{1}Q_{2}Q_{3}^{*}Q_{4}^{*}/(M_{1}M_{2}M_{3}M_{4})", 30, 0, 150);
669 TProfile* hqqG13 =
new TProfile(
"hqqG13",
";multiplicity;Q_{1}Q_{2}^{*}/(M_{1}M_{2})", 30, 0, 150);
670 TProfile* hqqG24 =
new TProfile(
"hqqG24",
";multiplicity;Q_{1}Q_{2}^{*}/(M_{1}M_{2})", 30, 0, 150);
671 TProfile* hqqG14 =
new TProfile(
"hqqG14",
";multiplicity;Q_{1}Q_{2}^{*}/(M_{1}M_{2})", 30, 0, 150);
672 TProfile* hqqG23 =
new TProfile(
"hqqG23",
";multiplicity;Q_{1}Q_{2}^{*}/(M_{1}M_{2})", 30, 0, 150);
673 TProfile* hqqG34 =
new TProfile(
"hqqG34",
";multiplicity;Q_{1}Q_{2}^{*}/(M_{1}M_{2})", 30, 0, 150);
678 Int_t nTracks = trackArray->GetEntries();
683 Int_t mult1g = 0, mult2g = 0, mult3g = 0, mult4g = 0;
685 for(
Int_t i = 0; i < nTracks; i++) {
688 if ((trk->eta>-0.8) && (trk->eta<-0.55)){
689 QxRnd1g += TMath::Cos(2*trk->phi);
690 QyRnd1g += TMath::Sin(2*trk->phi);
694 if ((trk->eta>-0.35) && (trk->eta<-0.1)){
695 QxRnd2g += TMath::Cos(2*trk->phi);
696 QyRnd2g += TMath::Sin(2*trk->phi);
700 if ((trk->eta>0.1) && (trk->eta<0.35)){
701 QxRnd3g += TMath::Cos(2*trk->phi);
702 QyRnd3g += TMath::Sin(2*trk->phi);
706 if ((trk->eta>0.55) && (trk->eta<0.8)){
707 QxRnd4g += TMath::Cos(2*trk->phi);
708 QyRnd4g += TMath::Sin(2*trk->phi);
714 if (mult1g != 0 && mult2g != 0 && mult3g != 0 && mult4g != 0){
716 Double_t qqqqg = QxRnd1g*QxRnd2g*QxRnd3g*QxRnd4g - QxRnd1g*QxRnd2g*QyRnd3g*QyRnd4g + QxRnd1g*QyRnd2g*QxRnd3g*QyRnd4g + QxRnd1g*QyRnd2g*QyRnd3g*QxRnd4g + QyRnd1g*QxRnd2g*QxRnd3g*QyRnd4g + QyRnd1g*QxRnd2g*QyRnd3g*QxRnd4g - QyRnd1g*QyRnd2g*QxRnd3g*QxRnd4g + QyRnd1g*QyRnd2g*QyRnd3g*QyRnd4g;
717 hqqqqG->Fill(mult, qqqqg/
Double_t(mult1g*mult2g*mult3g*mult4g));
719 hqqG13->Fill(mult, (QxRnd1g*QxRnd3g + QyRnd1g*QyRnd3g)/
Double_t(mult1g*mult3g));
720 hqqG24->Fill(mult, (QxRnd2g*QxRnd4g + QyRnd2g*QyRnd4g)/
Double_t(mult2g*mult4g));
721 hqqG14->Fill(mult, (QxRnd1g*QxRnd4g + QyRnd1g*QyRnd4g)/
Double_t(mult1g*mult4g));
722 hqqG23->Fill(mult, (QxRnd2g*QxRnd3g + QyRnd2g*QyRnd3g)/
Double_t(mult2g*mult3g));
723 hqqG34->Fill(mult, (QxRnd3g*QxRnd4g + QyRnd3g*QyRnd4g)/
Double_t(mult3g*mult4g));
std::vector< Double_t > fEGQCCuts
void EnableQC4with4NL(Int_t mn=50, Double_t etamin=0.0)
void AddQC4withEG(Double_t etagap)
TList * fList
vector with particles
TH1 * fHists[999]
list with histograms
std::vector< CPart > fParts
number of particles
std::vector< Double_t > fEGC3
eta gap c2
std::vector< Double_t > fEGCuts
TString part
use mixed event to constrain combinatorial background
std::vector< Double_t > fEGS2
eta gap c3
TComplex fQC[7]
eta counts per gap
void SetTracks(TObjArray &trks, Bool_t doKinCuts=1)
std::vector< Double_t > fEGS3
eta gap s2
std::vector< Double_t > fEGC2
Double_t nEvents
plot quality messages
std::vector< Int_t > fEGCounts
eta gap s3
Cumulants(const char *name="cumulants", Int_t mbins=350, Int_t minM=10)
void EnableQC4with3NL(Int_t mn=100, Double_t etamin=0.0)