7 #include <THistManager.h>
10 #include "AliEmcalJet.h"
11 #include "AliJetContainer.h"
18 namespace EMCalTriggerPtAnalysis {
21 AliAnalysisTaskEmcalJet(),
23 fTrackSelection(NULL),
25 fNameJetContainer(
""),
26 fNameTrackContainer(
"")
31 AliAnalysisTaskEmcalJet(name, true),
33 fTrackSelection(NULL),
35 fNameJetContainer(
""),
36 fNameTrackContainer(
"")
38 SetMakeGeneralHistograms(
true);
39 double defaultJetRadii[] = {0, 0.01, 0.02, 0.05, 0.1, 0.2, 0.4},
40 defaultPtMinSteps[] = {0.5, 1, 2, 5, 10, 20},
41 defaultJetPtBins[] = {20, 40, 60, 80, 100, 150, 200, 1000};
58 fHistos =
new THistManager(
"histos");
71 fHistos->CreateTH1(
"hTrackPtSel",
"Pt spectrum of selected tracks", trackptbinning);
72 fHistos->CreateTH1(
"hTrackPtSelEvent",
"Pt spectrum of selected tracks (directly from the input event)", trackptbinning);
73 fHistos->CreateTH2(
"hJetMultiplicity",
"Multiplicity of particles in jets", jetptbinning, contributorbinning);
74 fHistos->CreateTH2(
"hParticlePtJet",
"Correlation between track pt and jet pt", jetptbinning, trackptbinning);
76 for(
int irad = 0; irad < jetradii.GetSize()-1; irad++){
77 for(
int ptstep = 0; ptstep <ptminsteps.GetSize(); ptstep++){
78 fHistos->CreateTH2(Form(
"trackDensityJet_r%d_%d_minpt%d",
79 static_cast<int>(jetradii[irad] * 100.),
80 static_cast<int>(jetradii[irad+1] * 100.),
81 static_cast<int>(ptminsteps[ptstep] * 10.)),
82 Form(
"Density of tracks with p_{t} > %f GeV/c in r [%.2f, %.2f]; p_{t, jet} (GeV/c); Number of tracks",
89 for(
int jetptbin = 0 ; jetptbin < jetptlarge.GetSize()-1; jetptbin++){
90 fHistos->CreateTH2(Form(
"trackDensityParticle_r%d_%d_jetpt%d_%d",
91 static_cast<int>(jetradii[irad] * 100.),
92 static_cast<int>(jetradii[irad+1] * 100.),
93 static_cast<int>(jetptlarge[jetptbin]),
94 static_cast<int>(jetptlarge[jetptbin+1])),
95 Form(
"Density of tracks in jet with p_{t} [%.1f, %.1f] in r[%.2f,%2f]",
97 jetptlarge[jetptbin+1],
100 trackptbinning, contributorbinning);
104 for(THistManager::iterator it =
fHistos->begin(); it !=
fHistos->end(); it++){
119 AliEmcalJet *myjet = NULL;
120 AliVParticle *jetparticle = NULL;
124 for(
int ipart = 0; ipart < InputEvent()->GetNumberOfTracks(); ipart++){
125 jetparticle = InputEvent()->GetTrack(ipart);
126 if(TMath::Abs(jetparticle->Eta()) > 0.8)
continue;
128 fHistos->FillTH1(
"hTrackPtSelEvent", TMath::Abs(jetparticle->Pt()));
131 jetparticle = *trackiter;
132 if(TMath::Abs(jetparticle->Eta()) > 0.8)
continue;
134 fHistos->FillTH1(
"hTrackPtSel", TMath::Abs(jetparticle->Pt()));
136 for(AliJetContainer::accept_iterator jetiter = jcont->accept_begin(); jetiter != jcont->accept_end(); ++jetiter){
137 myjet =
static_cast<AliEmcalJet *
>(*jetiter);
138 fHistos->FillTH2(
"hJetMultiplicity", myjet->Pt(), myjet->GetNumberOfConstituents());
140 for(
int iconst = 0; iconst < myjet->GetNumberOfTracks(); iconst++){
141 jetparticle = myjet->TrackAt(iconst, tcont->GetArray());
142 if(TMath::Abs(jetparticle->Eta()) > 0.8)
continue;
144 fHistos->FillTH2(
"hParticlePtJet", myjet->Pt(), jetparticle->Pt());
147 for(
int irad = 0 ; irad < jetradii.GetSize()-1; irad++){
148 for(
int ptstep = 0; ptstep < ptminsteps.GetSize(); ptstep++){
149 fHistos->FillTH2(Form(
"trackDensityJet_r%d_%d_minpt%d", static_cast<int>(jetradii[irad] * 100.), static_cast<int>(jetradii[irad+1] * 100.), static_cast<int>(ptminsteps[ptstep] * 10.)),
150 TMath::Abs(myjet->Pt()),
GetParticleMultiplicity(*myjet, *tcont, ptminsteps[ptstep], 10000., jetradii[irad], jetradii[irad+1]));
152 double jetptmin, jetptmax;
154 if(jetptmin > 0 && jetptmax > 0){
155 for(
int ptstep = 0; ptstep < particlePtBinning.GetSize()-1; ptstep++){
156 double mean = (particlePtBinning[ptstep] + particlePtBinning[ptstep+1])/2.;
157 fHistos->FillTH2(Form(
"trackDensityParticle_r%d_%d_jetpt%d_%d", static_cast<int>(jetradii[irad] * 100.),static_cast<int>(jetradii[irad+1] * 100.),
158 static_cast<int>(jetptmin), static_cast<int>(jetptmax)), mean,
GetParticleMultiplicity(*myjet, *tcont, particlePtBinning[ptstep], particlePtBinning[+1], jetradii[irad], jetradii[irad+1]));
168 AliDebug(1, Form(
"Next jet: %s\n", jet.toString().Data()));
169 TLorentzVector jetaxis(jet.Px(), jet.Py(), jet.Pz(), jet.E());
171 AliVParticle *jetparticle(NULL);
172 for(
int ipart = 0; ipart < jet.GetNumberOfTracks(); ipart++){
173 jetparticle =
static_cast<AliVParticle *
>(jet.TrackAt(ipart, partcont.
GetArray()));
174 if(TMath::Abs(jetparticle->Eta()) > 0.8)
continue;
176 double partpt = TMath::Abs(jetparticle->Pt());
177 if(partpt >= ptmin && partpt < ptmax){
178 TLorentzVector partvector(jetparticle->Px(), jetparticle->Py(), jetparticle->Pz(), jetparticle->E());
179 double r = TMath::Abs(jetaxis.DeltaR(partvector));
180 if(r >= rmin && r < rmax) nselected++;
189 double jetpt = TMath::Abs(jet->Pt());
190 for(
int ptstep = 0; ptstep < jetptlarge.GetSize() - 1; ptstep++){
191 if(jetpt >= jetptlarge[ptstep] && jetpt < jetptlarge[ptstep+1]){
192 ptmin = jetptlarge[ptstep];
193 ptmax = jetptlarge[ptstep+1];
TString fNameTrackContainer
name of the jet container
const TArrayD & GetBinning() const
Container with name, TClonesArray and cuts for particles.
int GetParticleMultiplicity(const AliEmcalJet &jet, const AliParticleContainer &partcont, double ptmin, double ptmax, double rmin, double rmax) const
void Create(AliEMCalTriggerBinningComponent *const data)
Container for particles within the EMCAL framework.
Global binning handler used by several analysis components.
TClonesArray * GetArray() const
stl iterator over accepted clusters
void SetBinning(const char *dimname, int nbins, const double *binning)
AliEMCalTriggerBinningDimension * GetBinning(const char *name) const
Global binning definition for the high- charged particle analysis.
AliAnalysisTaskTrackDensityData()
AliEMCalTriggerBinningComponent * fBinHandler
EMCAL track selection.
virtual ~AliAnalysisTaskTrackDensityData()
TString fNameJetContainer
Binning handler.
void UserCreateOutputObjects()
virtual void UserCreateOutputObjects()
virtual bool IsTrackAccepted(AliVTrack *const trk)=0
void SetLinearBinning(const char *dirname, int nbins, double min, double max)
void FindJetPtBin(const AliEmcalJet *const jet, double &ptmin, double &ptmax) const
AliEmcalTrackSelection * fTrackSelection