22 #include "AliAODTrack.h" 24 #include "TClonesArray.h" 60 fAxesList.SetOwner(kFALSE);
61 fTrackAxisList.SetOwner(kFALSE);
62 fTrigAxisList.SetOwner(kFALSE);
75 CreateBaseHistograms();
81 fAxisdEta.Set(32, -1.6, 1.6);
82 fAxisdEta.SetNameTitle(
"dEta",
"delta eta");
84 fAxisTrigEta.SetNameTitle(
"tEta",
"Eta");
85 fAxisTrigEta.Set(320, -0.8, 0.8);
87 fAxisAssEta.SetNameTitle(
"aEta",
"Eta");
88 fAxisAssEta.Set(360, -0.9, 0.9);
90 fAxisdPhi.Set(32, -TMath::PiOver2(), 3*TMath::PiOver2());
91 fAxisdPhi.SetNameTitle(
"dPhi",
"delta Phi");
93 Double_t tptbins[15] = {2.0, 3.0, 3.5, 4.0, 5.0, 6.0, 8.0, 10.0, 12.5, 15, 20, 25, 30, 50, 100};
94 fAxistPt.Set(13, tptbins);
95 fAxistPt.SetNameTitle(
"tPt",
"trigger Pt");
97 Double_t cptbins[19] = {0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 5.0, 6.0, 8.0, 10.0, 12.5, 15, 20, 25, 30, 50, 100};
98 fAxiscPt.Set(18, cptbins);
99 fAxiscPt.SetNameTitle(
"cPt",
"track Pt");
101 fAxisCent.SetNameTitle(
"centrality",
"centrality");
102 fAxisCent.Set(1, -999, 999);
103 fAxisZ.SetNameTitle(
"vtxz",
"vtxz");
104 Double_t zbins[6] = {-10, -5, -1.5, 1.5, 5, 10 };
105 fAxisZ.Set(5, zbins);
107 fAxisIso.Set(1, -0.5, 2.5);
108 fAxisIso.SetNameTitle(
"iso",
"isolation");
110 fAxesList.AddAt(&fAxisdEta, 0);
111 fAxesList.AddAt(&fAxisdPhi, 1);
112 fAxesList.AddAt(&fAxistPt, 2);
113 fAxesList.AddAt(&fAxiscPt, 3);
114 fAxesList.AddAt(&fAxisCent, 4);
115 fAxesList.AddAt(&fAxisZ, 5);
117 fTrackAxisList.AddAt(&fAxisAssEta, 0);
118 fTrackAxisList.AddAt(&fAxistPt, 1);
119 fTrackAxisList.AddAt(&fAxiscPt, 2);
120 fTrackAxisList.AddAt(&fAxisCent, 3);
121 fTrackAxisList.AddAt(&fAxisZ, 4);
123 fTrigAxisList.AddAt(&fAxisTrigEta, 0);
124 fTrigAxisList.AddAt(&fAxistPt, 1);
125 fTrigAxisList.AddAt(&fAxisCent, 2);
126 fTrigAxisList.AddAt(&fAxisZ, 3);
138 fHistograms =
new TList();
139 fHistograms->SetOwner(kTRUE);
140 fHistograms->SetName(fName);
144 fCorrSparse = CreateSparse(GetName(), GetTitle(), &fAxesList);
145 fHistograms->Add(fCorrSparse);
147 fTrackSparse = CreateSparse(Form(
"%s_%s", GetName(),
"METrack"), Form(
"%s %s", GetTitle(),
"ME Tracks"), &fTrackAxisList);
148 fHistograms->Add(fTrackSparse);
150 fTrigSparse = CreateSparse(Form(
"%s_%s", GetName(),
"METrig"), Form(
"%s %s", GetTitle(),
"ME Triggers"), &fTrigAxisList);
151 fHistograms->Add(fTrigSparse);
158 const Int_t dim = axesList->GetSize();
167 for(
Int_t i = 0; i<dim; i++) {
168 TAxis * axis =
dynamic_cast<TAxis*
>(axesList->At(i));
169 if(axis) axes[i] = axis;
171 cout <<
"AliAnalysisTaskdPhi::CreateSparse: Error error, all the axes are not present in axis list" << endl;
176 for(
Int_t i = 0; i<dim; i++) {
178 bins[i] = axes[i]->GetNbins();
179 min[i] = axes[i]->GetBinLowEdge(1);
180 max[i] = axes[i]->GetBinUpEdge(axes[i]->GetNbins());
183 THnSparseF * sparse =
new THnSparseF(Form(
"%s", nameString.Data()),
184 Form(
"%s", titleString.Data()),
185 dim, bins, min, max);
187 for(
Int_t i = 0; i<dim; i++) {
188 sparse->GetAxis(i)->SetNameTitle(axes[i]->GetName(), axes[i]->GetTitle() );
189 if(axes[i]->GetXbins()->GetSize() > 0) {
190 sparse->SetBinEdges(i, axes[i]->GetXbins()->GetArray() );
204 tmap[ptbin] = kFALSE;
208 Double_t trackValues[fTrackAxisList.GetSize()];
209 trackValues[3] = cent;
210 trackValues[4] = vtxz;
212 for(
Int_t ip = 0; ip < particles->GetEntriesFast(); ip++){
215 Int_t tbin = fAxistPt.FindFixBin(particle->Pt());
216 if (tbin > 0 && tbin < nbins + 1) {
217 if(tmap[tbin - 1] == kTRUE) {
220 tmap[tbin -1 ] = kTRUE;
222 if( fTrackAxisList.GetSize() > 5){
223 trackValues[5] = particle->M();
226 for(
int ij = 0; ij < tracks->GetEntriesFast(); ij++) {
227 AliVTrack * track =
static_cast<AliVTrack*
>(tracks->UncheckedAt(ij));
228 trackValues[0] = track->Eta();
229 trackValues[1] = particle->Pt();
230 trackValues[2] = track->Pt();
231 fTrackSparse->Fill(trackValues);
243 const Int_t nDim = fAxesList.GetSize();
245 dphivalues[4] = cent;
246 dphivalues[5] = vtxz;
249 Double_t trigValues[fTrigAxisList.GetSize()];
250 trigValues[0] = particle->Eta();
251 trigValues[1] = particle->Pt();
252 trigValues[2] = cent;
253 trigValues[3] = vtxz;
256 dphivalues[6] = particle->M();
257 trigValues[4] = particle->M();
260 fTrigSparse->Fill(trigValues);
262 for(
int ij = 0; ij < tracks->GetEntriesFast(); ij++) {
263 AliVTrack * track =
static_cast<AliVTrack*
>(tracks->UncheckedAt(ij));
265 Int_t tid = track->GetID();
267 if((tid > 0) && (tid == tIDs[0] || tid == tIDs[1] || tid == tIDs[2] || tid == tIDs[3]) ) {
271 dphivalues[0] = particle->Eta() - track->Eta();
272 dphivalues[1] = GetDPhi(particle->
Phi() - track->Phi());
273 dphivalues[2] = particle->Pt();
274 dphivalues[3] = track->Pt();
275 fCorrSparse->Fill(dphivalues);
THnSparseF * CreateSparse(TString name, TString title, TList *axes)
virtual void CreateHistograms()
void FillCounters(TObjArray *particles, TObjArray *tracks, Float_t cent, Float_t vtxz)
virtual ~AliAnaConvCorrBase()
void CreateBaseHistograms()
void CorrelateWithTracks(AliAODConversionParticle *particle, TObjArray *tracks, const Int_t tIDs[4], Float_t cent, Float_t vtxz)