22 #include <AliESDEvent.h> 23 #include <AliAODEvent.h> 24 #include "AliESDVertex.h" 25 #include "AliAODVertex.h" 26 #include <AliAODTrack.h> 27 #include <TClonesArray.h> 39 AliAnalysisTaskEmcalJet("
AliAnalysisTaskChargedJetsHadronToy", kTRUE), fDistributionMultiplicity(0), fDistributionPt(0), fDistributionEtaPhi(0), fMinCentrality(0), fMaxCentrality(10), fDistributionV2(0), fDistributionV3(0), fDistributionV4(0), fDistributionV5(0), fInputArrayName(""), fOutputArrayName(""), fInputArray(0), fOutputArray(0), fRandom(), fToyCent(0), fRandomPsi3(0), fRandomPsi4(0), fRandomPsi5(0)
46 AliAnalysisTaskEmcalJet(name, kTRUE), fDistributionMultiplicity(0), fDistributionPt(0), fDistributionEtaPhi(0), fMinCentrality(0), fMaxCentrality(10), fDistributionV2(0), fDistributionV3(0), fDistributionV4(0), fDistributionV5(0), fInputArrayName(
""), fOutputArrayName(
""), fInputArray(0), fOutputArray(0), fRandom(), fToyCent(0), fRandomPsi3(0), fRandomPsi4(0), fRandomPsi5(0)
70 AddHistogram1D<TH1D>(
"hTrackPt",
"Tracks p_{T} distribution",
"", 300, 0., 300.,
"p_{T} (GeV/c)",
"dN^{Tracks}/dp_{T}");
71 AddHistogram2D<TH2D>(
"hTrackPhiEta",
"Track angular distribution #phi/#eta",
"COLZ", 180, 0., 2*TMath::Pi(), 100, -2.5, 2.5,
"#phi",
"#eta",
"dN^{Tracks}/d#phi d#eta");
72 AddHistogram1D<TH1D>(
"hMultiplicity",
"Number of tracks in acceptance vs. centrality",
"", 500, 0., 5000.,
"N tracks",
"dN^{Events}/dN^{Tracks}");
95 AliFatal(Form(
"Output array '%s' already exists in the event! Rename it.",
fOutputArrayName.Data()));
121 Int_t particleCount = 0;
126 AliAODTrack* inputParticle =
static_cast<AliAODTrack*
>(
fInputArray->At(iPart));
127 new ((*fOutputArray)[particleCount]) AliAODTrack(*inputParticle);
133 if(dynamic_cast<AliESDEvent*>(InputEvent()))
135 if(!(dynamic_cast<AliESDEvent*>(InputEvent()))->GetPrimaryVertexTracks()->GetNContributors())
136 static_cast<AliESDEvent*>(fInputEvent)->SetPrimaryVertexTracks(
new AliESDVertex(0.,0., 100));
138 else if(dynamic_cast<AliAODEvent*>(InputEvent()))
140 if( (!(dynamic_cast<AliAODEvent*>(InputEvent()))->GetPrimaryVertex()) || (!(dynamic_cast<AliAODEvent*>(InputEvent()))->GetPrimaryVertex()->GetNContributors()) )
143 p[0] = 0.; p[1] = 0.; p[2] = 0.;
144 AliAODVertex* vertex =
new AliAODVertex(p,1.);
145 vertex->SetNContributors(100);
146 vertex->SetName(
"PrimaryVertex");
147 static_cast<AliAODEvent*
>(fInputEvent)->AddVertex(vertex);
153 for(
Int_t i=0;i<multiplicity; i++)
159 Double_t trackTheta = 2.*atan(exp(-trackEta));
162 if(trackCharge>0) trackCharge = 1;
else trackCharge = -1;
166 trackPhi =
AddFlow(trackPhi, trackPt);
170 new ((*fOutputArray)[particleCount]) AliAODTrack();
171 static_cast<AliAODTrack*
>(
fOutputArray->At(particleCount))->SetPt(trackPt);
172 static_cast<AliAODTrack*
>(
fOutputArray->At(particleCount))->SetPhi(trackPhi);
173 static_cast<AliAODTrack*
>(
fOutputArray->At(particleCount))->SetTheta(trackTheta);
174 static_cast<AliAODTrack*
>(
fOutputArray->At(particleCount))->SetCharge(trackCharge);
175 static_cast<AliAODTrack*
>(
fOutputArray->At(particleCount))->SetLabel(100000 + i);
176 static_cast<AliAODTrack*
>(
fOutputArray->At(particleCount))->SetIsHybridGlobalConstrainedGlobal();
187 AliAODTrack* track =
static_cast<AliAODTrack*
>(
fOutputArray->At(iTrack));
200 Int_t maxNumberOfIterations = 200;
253 for (
Int_t i=0; i<maxNumberOfIterations; i++)
257 + v2*TMath::Sin(2.*(phi-(
fEPV0+(TMath::Pi()/2.))))
263 +v2*TMath::Cos(2.*(phi-(
fEPV0+(TMath::Pi()/2.))))
269 if (TMath::AreEqualAbs(phiprev,phi,precisionPhi))
break;
282 AliError(Form(
"Cannot find histogram <%s> ",key)) ;
295 AliError(Form(
"Cannot find histogram <%s> ",key));
299 if (tmpHist->IsA()->GetBaseClass(
"TH1"))
300 static_cast<TH1*>(tmpHist)->Fill(x,y);
301 else if (tmpHist->IsA()->GetBaseClass(
"TH2"))
302 static_cast<TH2*>(tmpHist)->Fill(x,y);
311 AliError(Form(
"Cannot find histogram <%s> ",key));
315 tmpHist->Fill(x,y,add);
321 T* tmpHist =
new T(name, title, xBins, xMin, xMax);
323 tmpHist->GetXaxis()->SetTitle(xTitle);
324 tmpHist->GetYaxis()->SetTitle(yTitle);
325 tmpHist->SetOption(options);
326 tmpHist->SetMarkerStyle(kFullCircle);
335 template <
class T>
T*
AliAnalysisTaskChargedJetsHadronToy::AddHistogram2D(
const char* name,
const char*
title,
const char* options,
Int_t xBins,
Double_t xMin,
Double_t xMax,
Int_t yBins,
Double_t yMin,
Double_t yMax,
const char* xTitle,
const char* yTitle,
const char* zTitle)
337 T* tmpHist =
new T(name, title, xBins, xMin, xMax, yBins, yMin, yMax);
338 tmpHist->GetXaxis()->SetTitle(xTitle);
339 tmpHist->GetYaxis()->SetTitle(yTitle);
340 tmpHist->GetZaxis()->SetTitle(zTitle);
341 tmpHist->SetOption(options);
342 tmpHist->SetMarkerStyle(kFullCircle);
TH2 * fDistributionV5
Distribution for v4 in bins of pt and centrality.
Bool_t Run()
eventwise calculated psi 5
TH2 * fDistributionV3
Distribution for v2 in bins of pt and centrality.
Double_t fToyCent
random number generator
Double_t fRandomPsi4
eventwise calculated psi 3
TClonesArray * fOutputArray
input array containing tracks from events
TH1 * fDistributionMultiplicity
Double_t fEPV0
!event plane V0
void FillHistogram(const char *key, Double_t x)
T * AddHistogram1D(const char *name="CustomHistogram", const char *title="NO_TITLE", const char *options="", Int_t xBins=100, Double_t xMin=0.0, Double_t xMax=20.0, const char *xTitle="x axis", const char *yTitle="y axis")
UShort_t T(UShort_t m, UShort_t t)
TRandom3 * fRandom
input array containing tracks from events
TString fInputArrayName
Distribution for v5 in bins of pt and centrality.
TClonesArray * fInputArray
TH2 * fDistributionV4
Distribution for v3 in bins of pt and centrality.
Double_t fRandomPsi5
eventwise calculated psi 4
void UserCreateOutputObjects()
void Terminate(Option_t *)
AliAnalysisTaskChargedJetsHadronToy()
Double_t AddFlow(Double_t phi, Double_t pt)
AliEmcalList * fOutput
!output list
TH1 * fDistributionEtaPhi
Double_t fRandomPsi3
eventwise centrality value
Base task in the EMCAL jet framework.
T * AddHistogram2D(const char *name="CustomHistogram", const char *title="NO_TITLE", const char *options="", Int_t xBins=100, Double_t xMin=0.0, Double_t xMax=20.0, Int_t yBins=100, Double_t yMin=0.0, Double_t yMax=20.0, const char *xTitle="x axis", const char *yTitle="y axis", const char *zTitle="z axis")
void UserCreateOutputObjects()
Main initialization function on the worker.
virtual ~AliAnalysisTaskChargedJetsHadronToy()
void ExecOnce()
Perform steps needed to initialize the analysis.