21 #include "Riostream.h" 24 #include "AliAODEvent.h" 25 #include "AliAODInputHandler.h" 26 #include "AliAnalysisManager.h" 27 #include "AliMultSelection.h" 52 fControlHistogramsList(NULL),
63 kh1(-3), kh2(-2), kh3(3), kh4(2), kh5(0), kh6(0), kh7(0), kh8(0),
64 kSum((kh1<0?-1*kh1:kh1)+(kh2<0?-1*kh2:kh2)+(kh3<0?-1*kh3:kh3)+(kh4<0?-1*kh4:kh4)
65 + (kh5<0?-1*kh5:kh5)+(kh6<0?-1*kh6:kh6)+(kh7<0?-1*kh7:kh7)+(kh8<0?-1*kh8:kh8)),
67 kMaxPower(fMaxCorrelator+1),
77 fCounterHistogram(NULL),
79 fFinalResultsList(NULL)
83 AliDebug(2,
"AliAnalysisTaskStudentsML::AliAnalysisTaskStudentsML(const char *name, Bool_t useParticleWeights)");
86 fHistList =
new TList();
87 fHistList->SetName(
"outputStudentAnalysis");
88 fHistList->SetOwner(kTRUE);
91 this->InitializeArrays();
104 DefineOutput(1, TList::Class());
106 if(useParticleWeights)
119 fControlHistogramsList(NULL),
130 kh1(-3), kh2(-2), kh3(3), kh4(2), kh5(0), kh6(0), kh7(0), kh8(0),
131 kSum((kh1<0?-1*kh1:kh1)+(kh2<0?-1*kh2:kh2)+(kh3<0?-1*kh3:kh3)+(kh4<0?-1*kh4:kh4)
132 + (kh5<0?-1*kh5:kh5)+(kh6<0?-1*kh6:kh6)+(kh7<0?-1*kh7:kh7)+(kh8<0?-1*kh8:kh8)),
133 kMaxHarmonic(kSum+1),
134 kMaxPower(fMaxCorrelator+1),
138 fMaxCentrality(100.),
145 fCounterHistogram(NULL),
146 fFinalResultsList(NULL)
150 AliDebug(2,
"AliAnalysisTaskStudentsML::AliAnalysisTaskStudentsML()");
177 Bool_t oldHistAddStatus = TH1::AddDirectoryStatus();
178 TH1::AddDirectory(kFALSE);
188 TH1::AddDirectory(oldHistAddStatus);
216 AliMultSelection *ams = (AliMultSelection*)aAOD->FindListObject(
"MultSelection");
225 Int_t nTracks = aAOD->GetNumberOfTracks();
234 for(
Int_t iTrack=0;iTrack<nTracks;iTrack++)
236 AliAODTrack *aTrack =
dynamic_cast<AliAODTrack*
>(aAOD->GetTrack(iTrack));
237 if(!aTrack){
continue;}
238 if(!aTrack->TestFilterBit(128)){
continue;}
253 if( (-0.8 < eta) && (eta < 0.8) && (0.2 < pt) && (pt < 5.0) )
275 for(
Int_t iTrack=0;iTrack<nTracks;iTrack++)
277 AliAODTrack *aTrack =
dynamic_cast<AliAODTrack*
>(aAOD->GetTrack(iTrack));
278 if(!aTrack){
continue;}
279 if(!aTrack->TestFilterBit(128)){
continue;}
294 if( (-0.8 < eta) && (eta < 0.8) && (0.2 < pt) && (pt < 5.0) )
321 if(0. <= (ams->GetMultiplicityPercentile(
"V0M")) && (ams->GetMultiplicityPercentile(
"V0M")) < 5. ){
fCentral=2.5;}
322 if(5. <= (ams->GetMultiplicityPercentile(
"V0M")) && (ams->GetMultiplicityPercentile(
"V0M")) < 10. ){
fCentral=7.5;}
323 if(10. <= (ams->GetMultiplicityPercentile(
"V0M")) && (ams->GetMultiplicityPercentile(
"V0M")) < 20. ){
fCentral=15.5;}
324 if(20. <= (ams->GetMultiplicityPercentile(
"V0M")) && (ams->GetMultiplicityPercentile(
"V0M")) < 30. ){
fCentral=25.5;}
325 if(30. <= (ams->GetMultiplicityPercentile(
"V0M")) && (ams->GetMultiplicityPercentile(
"V0M")) < 40. ){
fCentral=35.5;}
326 if(40. <= (ams->GetMultiplicityPercentile(
"V0M")) && (ams->GetMultiplicityPercentile(
"V0M")) < 50. ){
fCentral=45.5;}
327 if(50. <= (ams->GetMultiplicityPercentile(
"V0M")) && (ams->GetMultiplicityPercentile(
"V0M")) < 60. ){
fCentral=55.5;}
328 if(60. <= (ams->GetMultiplicityPercentile(
"V0M")) && (ams->GetMultiplicityPercentile(
"V0M")) < 70. ){
fCentral=65.5;}
329 if(70. <= (ams->GetMultiplicityPercentile(
"V0M")) && (ams->GetMultiplicityPercentile(
"V0M")) < 80. ){
fCentral=75.5;}
393 TFile *f =
new TFile(
"AnalysisResults.root",
"RECREATE");
406 for(
Int_t cs=0;cs<2;cs++)
416 for(
Int_t js=0;js<17;js++)
418 for(
Int_t j=0;j<9;j++)
439 TString sMethodName =
"void AliAnalysisTaskStudentsML::BookAndNestAllLists()";
440 if(!
fHistList){Fatal(sMethodName.Data(),
"fHistList is NULL");}
444 fControlHistogramsList->SetName(
"ControlHistograms");
445 fControlHistogramsList->SetOwner(kTRUE);
474 fPtHist->SetFillColor(kBlue-10);
475 fPtHist->GetXaxis()->SetTitle(
"p_{t}");
479 fPhiHist =
new TH1F(
"fPhiHist",
"Phi Distribution",1000,0.,6.3);
480 fPhiHist->GetXaxis()->SetTitle(
"Phi");
485 fEtaHist =
new TH1F(
"fEtaHist",
"Eta Distribution",1000,-1.,1.);
486 fEtaHist->GetXaxis()->SetTitle(
"Eta");
491 fMultiHisto =
new TH1F(
"fMultiHisto",
"Multiplicity",500,0.,500.);
492 fMultiHisto->GetXaxis()->SetTitle(
"Multiplicity M");
496 fCounterHistogram =
new TH1F(
"fCounterHistogram",
"Histogram for some checks",3,0.,3.);
507 fCentrality =
new TProfile(
"fCentrality",
"Result Analysis Centrality Dependence",80,0.,80.);
529 for(
Int_t cs=0;cs<2;cs++)
561 Qvector[h][p] = TComplex(0.,0.);
578 Qvector[h][p] += TComplex(wPhiToPowerP*TMath::Cos(h*dPhi2),wPhiToPowerP*TMath::Sin(h*dPhi2));
592 if(n>=0){
return Qvector[n][p];}
593 return TComplex::Conjugate(
Qvector[-n][p]);
609 TComplex
c(
Q(harmonic[nm1], mult));
610 if (nm1 == 0)
return c;
612 if (nm1 == skip)
return c;
614 Int_t multp1 = mult+1;
617 Int_t hhold = harmonic[counter1];
618 harmonic[counter1] = harmonic[nm2];
619 harmonic[nm2] = hhold + harmonic[nm1];
620 TComplex c2(
Recursion(nm1, harmonic, multp1, nm2));
621 Int_t counter2 = n-3;
622 while (counter2 >= skip) {
623 harmonic[nm2] = harmonic[counter1];
624 harmonic[counter1] = hhold;
626 hhold = harmonic[counter1];
627 harmonic[counter1] = harmonic[nm2];
628 harmonic[nm2] = hhold + harmonic[nm1];
629 c2 +=
Recursion(nm1, harmonic, multp1, counter2);
632 harmonic[nm2] = harmonic[counter1];
633 harmonic[counter1] = hhold;
635 if (mult == 1)
return c-c2;
658 Int_t harmonicsTwoDen[2] = {0,0};
659 TComplex twoRecursion =
Recursion(2,harmonicsTwoNum)/
Recursion(2,harmonicsTwoDen).Re();
661 fRecursion[0][0]->Fill(0.5,twoRecursion.Re(),wTwoRecursion);
663 fRecursion[1][0]->Fill(0.5,twoRecursion.Im(),wTwoRecursion);
670 Int_t harmonicsThreeDen[3] = {0,0,0};
671 TComplex threeRecursion =
Recursion(3,harmonicsThreeNum)/
Recursion(3,harmonicsThreeDen).Re();
673 fRecursion[0][1]->Fill(0.5,threeRecursion.Re(),wThreeRecursion);
674 fRecursion[0][1]->Fill(1.5,wThreeRecursion,1.);
675 fRecursion[1][1]->Fill(0.5,threeRecursion.Im(),wThreeRecursion);
676 fRecursion[1][1]->Fill(1.5,wThreeRecursion,1.);
682 Int_t harmonicsFourDen[4] = {0,0,0,0};
683 TComplex fourRecursion =
Recursion(4,harmonicsFourNum)/
Recursion(4,harmonicsFourDen).Re();
685 fRecursion[0][2]->Fill(0.5,fourRecursion.Re(),wFourRecursion);
686 fRecursion[0][2]->Fill(1.5,wFourRecursion,1.);
687 fRecursion[1][2]->Fill(0.5,fourRecursion.Im(),wFourRecursion);
688 fRecursion[1][2]->Fill(1.5,wFourRecursion,1.);
694 Int_t harmonicsFiveDen[5] = {0,0,0,0,0};
695 TComplex fiveRecursion =
Recursion(5,harmonicsFiveNum)/
Recursion(5,harmonicsFiveDen).Re();
697 fRecursion[0][3]->Fill(0.5,fiveRecursion.Re(),wFiveRecursion);
698 fRecursion[0][3]->Fill(1.5,wFiveRecursion,1.);
699 fRecursion[1][3]->Fill(0.5,fiveRecursion.Im(),wFiveRecursion);
700 fRecursion[1][3]->Fill(1.5,wFiveRecursion,1.);
706 Int_t harmonicsSixDen[6] = {0,0,0,0,0,0};
707 TComplex sixRecursion =
Recursion(6,harmonicsSixNum)/
Recursion(6,harmonicsSixDen).Re();
709 fRecursion[0][4]->Fill(0.5,sixRecursion.Re(),wSixRecursion);
711 fRecursion[1][4]->Fill(0.5,sixRecursion.Im(),wSixRecursion);
719 Int_t harmonicsSevenDen[7] = {0,0,0,0,0,0,0};
720 TComplex sevenRecursion =
Recursion(7,harmonicsSevenNum)/
Recursion(7,harmonicsSevenDen).Re();
722 fRecursion[0][5]->Fill(0.5,sevenRecursion.Re(),wSevenRecursion);
723 fRecursion[0][5]->Fill(1.5,wSevenRecursion,1.);
724 fRecursion[1][5]->Fill(0.5,sevenRecursion.Im(),wSevenRecursion);
725 fRecursion[1][5]->Fill(1.5,wSevenRecursion,1.);
732 Int_t harmonicsEightDen[8] = {0,0,0,0,0,0,0,0};
733 TComplex eightRecursion =
Recursion(8,harmonicsEightNum)/
Recursion(8,harmonicsEightDen).Re();
735 fRecursion[0][6]->Fill(0.5,eightRecursion.Re(),wEightRecursion);
736 fRecursion[0][6]->Fill(1.5,wEightRecursion,1.);
737 fRecursion[1][6]->Fill(0.5,eightRecursion.Im(),wEightRecursion);
738 fRecursion[1][6]->Fill(1.5,wEightRecursion,1.);
TList * fFinalResultsList
Bool_t bUseWeights
//how can i set the 8 as fMaxCorrelator??????
virtual void Correlation()
virtual void Terminate(Option_t *)
TProfile * fCentrality
//[fMaxHarmonic*fMaxCorrelator+1][fMaxCorrelator+1]
virtual void CalculateQvectors()
virtual void InitializeArrays()
TProfile * fRecursion[2][8]
TArrayD * fWeights
Azimuthal angles.
virtual void BookFinalResultsHistograms()
virtual void BookControlHistograms()
virtual void UserCreateOutputObjects()
virtual void BookAndNestAllLists()
TComplex Q(Int_t n, Int_t p)
AliAnalysisTaskStudentsML()
virtual ~AliAnalysisTaskStudentsML()
TList * fControlHistogramsList
TComplex Recursion(Int_t n, Int_t *harmonic, Int_t mult, Int_t skip)
virtual void UserExec(Option_t *)