7 #include <THistManager.h>
18 namespace EMCalTriggerPtAnalysis {
23 fTrackSelection(NULL),
25 fNameJetContainer(
""),
26 fNameTrackContainer(
"")
33 fTrackSelection(NULL),
35 fNameJetContainer(
""),
36 fNameTrackContainer(
"")
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++){
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()));
132 jetparticle = *trackiter;
133 if(TMath::Abs(jetparticle->Eta()) > 0.8)
continue;
135 fHistos->FillTH1(
"hTrackPtSel", TMath::Abs(jetparticle->Pt()));
140 fHistos->FillTH2(
"hJetMultiplicity", myjet->Pt(), myjet->GetNumberOfConstituents());
142 for(
int iconst = 0; iconst < myjet->GetNumberOfTracks(); iconst++){
143 jetparticle = myjet->TrackAt(iconst, tcont->GetArray());
144 if(TMath::Abs(jetparticle->Eta()) > 0.8)
continue;
146 fHistos->FillTH2(
"hParticlePtJet", myjet->Pt(), jetparticle->Pt());
149 for(
int irad = 0 ; irad < jetradii.GetSize()-1; irad++){
150 for(
int ptstep = 0; ptstep < ptminsteps.GetSize(); ptstep++){
151 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.)),
152 TMath::Abs(myjet->Pt()),
GetParticleMultiplicity(*myjet, *tcont, ptminsteps[ptstep], 10000., jetradii[irad], jetradii[irad+1]));
154 double jetptmin, jetptmax;
156 if(jetptmin > 0 && jetptmax > 0){
157 for(
int ptstep = 0; ptstep < particlePtBinning.GetSize()-1; ptstep++){
158 double mean = (particlePtBinning[ptstep] + particlePtBinning[ptstep+1])/2.;
159 fHistos->FillTH2(Form(
"trackDensityParticle_r%d_%d_jetpt%d_%d", static_cast<int>(jetradii[irad] * 100.),static_cast<int>(jetradii[irad+1] * 100.),
160 static_cast<int>(jetptmin), static_cast<int>(jetptmax)), mean,
GetParticleMultiplicity(*myjet, *tcont, particlePtBinning[ptstep], particlePtBinning[+1], jetradii[irad], jetradii[irad+1]));
170 AliDebug(1, Form(
"Next jet: %s\n", jet.
toString().Data()));
171 TLorentzVector jetaxis(jet.
Px(), jet.
Py(), jet.
Pz(), jet.
E());
173 AliVParticle *jetparticle(NULL);
175 jetparticle =
static_cast<AliVParticle *
>(jet.
TrackAt(ipart, partcont.GetArray()));
176 if(TMath::Abs(jetparticle->Eta()) > 0.8)
continue;
178 double partpt = TMath::Abs(jetparticle->Pt());
179 if(partpt >= ptmin && partpt < ptmax){
180 TLorentzVector partvector(jetparticle->Px(), jetparticle->Py(), jetparticle->Pz(), jetparticle->E());
181 double r = TMath::Abs(jetaxis.DeltaR(partvector));
182 if(r >= rmin && r < rmax) nselected++;
191 double jetpt = TMath::Abs(jet->
Pt());
192 for(
int ptstep = 0; ptstep < jetptlarge.GetSize() - 1; ptstep++){
193 if(jetpt >= jetptlarge[ptstep] && jetpt < jetptlarge[ptstep+1]){
194 ptmin = jetptlarge[ptstep];
195 ptmax = jetptlarge[ptstep+1];
TString fNameTrackContainer
name of the jet container
AliJetContainer * GetJetContainer(Int_t i=0) const
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)
bidirectional stl iterator over the EMCAL iterable container
Container for particles within the EMCAL framework.
UShort_t GetNumberOfTracks() const
Global binning handler used by several analysis components.
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()
AliEmcalList * fOutput
!output list
Short_t TrackAt(Int_t idx) const
AliEMCalTriggerBinningComponent * fBinHandler
EMCAL track selection.
virtual ~AliAnalysisTaskTrackDensityData()
AliTrackContainer * GetTrackContainer(Int_t i=0) const
void SetMakeGeneralHistograms(Bool_t g)
Base task in the EMCAL jet framework.
Represent a jet reconstructed using the EMCal jet framework.
TString fNameJetContainer
Binning handler.
void UserCreateOutputObjects()
const AliJetIterableContainer accepted() const
virtual void UserCreateOutputObjects()
Container for jet within the EMCAL jet framework.
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