]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG4/GammaConv/AliAnalysisTaskGammaJet.cxx
added ntuple
[u/mrichter/AliRoot.git] / PWG4 / GammaConv / AliAnalysisTaskGammaJet.cxx
CommitLineData
fae5f6bb 1#include <iostream>
332f1f44 2#include "TChain.h"
3#include "TTree.h"
4#include "TH1F.h"
5#include "TCanvas.h"
fae5f6bb 6#include "TString.h"
332f1f44 7
8#include "AliAnalysisTask.h"
9#include "AliAnalysisManager.h"
10#include "AliAnalysisTaskGammaJet.h"
11
12#include "AliESDEvent.h"
13#include "AliESDCaloCluster.h"
14#include "AliESDInputHandler.h"
15
fae5f6bb 16#include "AliAODPWG4ParticleCorrelation.h"
332f1f44 17#include "AliAODEvent.h"
18#include "AliAODHandler.h"
19#include "AliAODCaloCluster.h"
20#include "AliGammaConversionAODObject.h"
e0b4c21c 21#include "AliAODConversionParticle.h"
fae5f6bb 22#include "AliAODJet.h"
332f1f44 23
e0b4c21c 24#include "AliAODInputHandler.h"
25
4dca60a8 26// Gamma - jet correlation analysis task
27// Authors: Svein Lindal
28
332f1f44 29
30using namespace std;
31
32ClassImp(AliAnalysisTaskGammaJet)
33
4dca60a8 34//________________________________________________________________________
35AliAnalysisTaskGammaJet::AliAnalysisTaskGammaJet() : AliAnalysisTaskSE(),
36 fOutputList(NULL),
37 fHistPt(NULL),
38 fHistPtPhos(NULL),
39 fHistPtEmcal(NULL),
e0b4c21c 40
41 fHistPhotPhi(NULL),
42 fHistHadPhi(NULL),
43 fHistJetPhi(NULL),
44
4dca60a8 45 fHistPtJets(NULL),
46 fHistGammaJets(NULL),
fae5f6bb 47 fHistGammaJetsIso(NULL),
96cca36c 48 fHistMaxdPhi(NULL),
49 fHistMaxdPhiIso(NULL),
50 fHistMaxdPhiIsoPt(NULL),
e0b4c21c 51
52 fHadHistPt(NULL), //! Pt spectrum
53 fHadHistdPhi(NULL), //!Phi correlations
54 fHadHistdPhiIso(NULL), //!Phi correlations
55 fHadHistMaxdPhi(NULL), //!Phi correlations
56 fHadHistMaxdPhiIso(NULL), //!Phi correlations
57 fHadHistMaxdPhiIsoPt(NULL), //!Phi correlations
58
96cca36c 59 fMinPt(2.0),
60 fConeSize(0.9),
fae5f6bb 61 fPtThreshold(2.0),
62 fDeltaAODFileName(""),
63 fPhotons(NULL)
4dca60a8 64{
fae5f6bb 65 // Dummy Constructor
4dca60a8 66}
67
e0b4c21c 68//________________________________________________________________________________
69AliAnalysisTaskGammaJet::~AliAnalysisTaskGammaJet() {
70
71 if(fOutputList)
72 delete fOutputList;
73 fOutputList = NULL;
74
75 if(fHistPt)
76 fHistPt = NULL;
77 delete fHistPt;
78
79 if(fHistPtPhos)
80 fHistPtPhos = NULL;
81 delete fHistPtPhos;
82
83 if(fHistPtEmcal)
84 fHistPtEmcal = NULL;
85 delete fHistPtEmcal;
86
87 if(fHistPtJets)
88 fHistPtJets= NULL;
89 delete fHistPtJets;
90
91 if(fHistGammaJets)
92 fHistGammaJets = NULL;
93 delete fHistGammaJets;
94
95 if(fHistGammaJetsIso)
96 fHistGammaJetsIso = NULL;
97 delete fHistGammaJetsIso;
98
99 if(fHistMaxdPhi)
100 fHistMaxdPhi = NULL;
101 delete fHistMaxdPhi;
102
103 if(fHistMaxdPhiIso)
104 fHistMaxdPhiIso = NULL;
105 delete fHistMaxdPhiIso;
106
107 if(fHistMaxdPhiIsoPt)
108 fHistMaxdPhiIsoPt = NULL;
109 delete fHistMaxdPhiIsoPt;
110
111 if(fPhotons)
112 fPhotons = NULL;
113 delete fPhotons;
114
115
116}
117
118
4dca60a8 119
332f1f44 120//________________________________________________________________________
fae5f6bb 121AliAnalysisTaskGammaJet::AliAnalysisTaskGammaJet(const char *name) :
122 AliAnalysisTaskSE(name),
332f1f44 123 fOutputList(0),
124 fHistPt(0),
125 fHistPtPhos(0),
126 fHistPtEmcal(0),
e0b4c21c 127
128 fHistPhotPhi(NULL),
129 fHistHadPhi(NULL),
130 fHistJetPhi(NULL),
131
332f1f44 132 fHistPtJets(0),
4dca60a8 133 fHistGammaJets(NULL),
fae5f6bb 134 fHistGammaJetsIso(NULL),
96cca36c 135 fHistMaxdPhi(NULL),
136 fHistMaxdPhiIso(NULL),
137 fHistMaxdPhiIsoPt(NULL),
e0b4c21c 138
139 fHadHistPt(NULL), //! Pt spectrum
140 fHadHistdPhi(NULL), //!Phi correlations
141 fHadHistdPhiIso(NULL), //!Phi correlations
142 fHadHistMaxdPhi(NULL), //!Phi correlations
143 fHadHistMaxdPhiIso(NULL), //!Phi correlations
144 fHadHistMaxdPhiIsoPt(NULL), //!Phi correlations
145
fae5f6bb 146 fMinPt(0.0),
147 fConeSize(0.0),
148 fPtThreshold(0.0),
149 fDeltaAODFileName(""),
150 fPhotons(NULL)
332f1f44 151{
152 // Constructor
332f1f44 153 // Define input and output slots here
332f1f44 154 DefineInput(0, TChain::Class());
155 // Output slot #0 id reserved by the base class for AOD
fae5f6bb 156
332f1f44 157 // Output slot #1 writes into a TH1 container
158 DefineOutput(1, TList::Class());
159}
160
161//________________________________________________________________________
162void AliAnalysisTaskGammaJet::UserCreateOutputObjects()
163{
fae5f6bb 164 //Create histograms add, to outputlist
332f1f44 165 fOutputList = new TList();
166
167 fHistPt = new TH1F("fHistPt", "P_{T} distribution", 150, 0.1, 50);
168 fHistPt->GetXaxis()->SetTitle("P_{T} (GeV/c)");
169 fHistPt->GetYaxis()->SetTitle("dN/dP_{T} (c/GeV)");
170 fHistPt->SetMarkerStyle(kFullCircle);
fae5f6bb 171 fOutputList->Add(fHistPt);
332f1f44 172
173 fHistPtPhos = new TH1F("fHistPtPhos", "P_{T} distribution", 150, 0.1, 50);
174 fHistPtPhos->GetXaxis()->SetTitle("P_{T} (GeV/c)");
175 fHistPtPhos->GetYaxis()->SetTitle("dN/dP_{T} (c/GeV)");
176 fHistPtPhos->SetMarkerStyle(kFullCircle);
fae5f6bb 177 fOutputList->Add(fHistPtPhos);
332f1f44 178
179 fHistPtEmcal = new TH1F("fHistPtEmcal", "P_{T} distribution", 150, 0.1, 50);
180 fHistPtEmcal->GetXaxis()->SetTitle("P_{T} (GeV/c)");
181 fHistPtEmcal->GetYaxis()->SetTitle("dN/dP_{T} (c/GeV)");
182 fHistPtEmcal->SetMarkerStyle(kFullCircle);
fae5f6bb 183 fOutputList->Add(fHistPtEmcal);
332f1f44 184
e0b4c21c 185 fHistPhotPhi = new TH1F("phi gamma", "phi gamma", 120, -6.3, 6.3);
186 fOutputList->Add(fHistPhotPhi);
187 fHistHadPhi = new TH1F("phi track", "phi track", 120, -6.3, 6.3);
188 fOutputList->Add(fHistHadPhi);
189 fHistJetPhi = new TH1F("phi jet", "phi jet", 120, -6.3, 6.3);
190 fOutputList->Add(fHistJetPhi);
191
332f1f44 192
193 fHistPtJets = new TH1F("fHistPtJets", "P_{T} distribution", 150, 0.1, 50);
194 fHistPtJets->GetXaxis()->SetTitle("P_{T} (GeV/c)");
195 fHistPtJets->GetYaxis()->SetTitle("dN/dP_{T} (c/GeV)");
196 fHistPtJets->SetMarkerStyle(kFullCircle);
fae5f6bb 197 fOutputList->Add(fHistPtJets);
4dca60a8 198
96cca36c 199 fHistGammaJets = new TH1F("fHistGammaJets", "fHistGammaJets", 200, -2*TMath::Pi(), 2*TMath::Pi());
4dca60a8 200 fOutputList->Add(fHistGammaJets);
fae5f6bb 201
96cca36c 202 fHistGammaJetsIso = new TH1F("fHistGammaJetsIso", "fHistGammaJetsIso", 200, -2*TMath::Pi(), 2*TMath::Pi());
fae5f6bb 203 fOutputList->Add(fHistGammaJetsIso);
96cca36c 204
205
206 fHistMaxdPhi = new TH1F("fHistMaxdPhi", "fHistMaxdPhi", 200, -2*TMath::Pi(), 2*TMath::Pi());
207 fOutputList->Add(fHistMaxdPhi);
208
209 fHistMaxdPhiIso = new TH1F("fHistMaxdPhiIso", "fHistMaxdPhiIso", 200, -2*TMath::Pi(), 2*TMath::Pi());
210 fOutputList->Add(fHistMaxdPhiIso);
211
212 fHistMaxdPhiIsoPt = new TH1F("fHistMaxdPhiIsoPt", "fHistMaxdPhiIsoPt", 200, -2*TMath::Pi(), 2*TMath::Pi());
213 fOutputList->Add(fHistMaxdPhiIsoPt);
e0b4c21c 214
215
216
217
218 fHadHistPt = new TH1F("fHadHistPt", "P_{T} distribution", 150, 0.1, 50);
219 fHadHistPt->GetXaxis()->SetTitle("P_{T} (GeV/c)");
220 fHadHistPt->GetYaxis()->SetTitle("dN/dP_{T} (c/GeV)");
221 fHadHistPt->SetMarkerStyle(kFullCircle);
222 fOutputList->Add(fHadHistPt);
223
224
225 fHadHistdPhi = new TH1F("fHadHistdPhi", "fHadHistdPhi", 200, -2*TMath::Pi(), 2*TMath::Pi());
226 fOutputList->Add(fHadHistdPhi);
227
228 fHadHistdPhiIso = new TH1F("fHadHistdPhiIso", "fHadHistdPhiIso", 200, -2*TMath::Pi(), 2*TMath::Pi());
229 fOutputList->Add(fHadHistdPhiIso);
230
231
232 fHadHistMaxdPhi = new TH1F("fHadHistMaxdPhi", "fHadHistMaxdPhi", 200, -2*TMath::Pi(), 2*TMath::Pi());
233 fOutputList->Add(fHadHistMaxdPhi);
234
235 fHadHistMaxdPhiIso = new TH1F("fHadHistMaxdPhiIso", "fHadHistMaxdPhiIso", 200, -2*TMath::Pi(), 2*TMath::Pi());
236 fOutputList->Add(fHadHistMaxdPhiIso);
237
238 fHadHistMaxdPhiIsoPt = new TH1F("fHadHistMaxdPhiIsoPt", "fHadHistMaxdPhiIsoPt", 200, -2*TMath::Pi(), 2*TMath::Pi());
239 fOutputList->Add(fHadHistMaxdPhiIsoPt);
240
241
242
243
fae5f6bb 244
245 //TNtuple * tuple = new TNtuple("fNtuple", "fNtuple", dPhi,
246
247
248 ///Create AOD branch
249 fPhotons = new TClonesArray("AliAODPWG4ParticleCorrelation", 0);
e0b4c21c 250 fPhotons->SetName("ConversionGamma");
fae5f6bb 251 AddAODBranch("TClonesArray", &fPhotons);
252
fae5f6bb 253
332f1f44 254}
255
256//________________________________________________________________________
257void AliAnalysisTaskGammaJet::UserExec(Option_t *)
258{
e0b4c21c 259
260
261 //BALLE BALLE not do always
262 AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler()->SetFillAOD(kTRUE);
263
332f1f44 264
fae5f6bb 265 //Clear stuff for new event
266 CleanUp();
332f1f44 267
4dca60a8 268
e0b4c21c 269
270
271
fae5f6bb 272 ///Get AOD event
4dca60a8 273 AliAODEvent * aodEvent = GetAODEvent();
274 if(!aodEvent) {
fae5f6bb 275 AliError("No AOD event!!");
332f1f44 276 return;
277 }
332f1f44 278
fae5f6bb 279 ProcessConvGamma(aodEvent);
96cca36c 280 //ProcessCalorimeters(aodEvent);
4dca60a8 281
332f1f44 282
4dca60a8 283 PostData(1, fOutputList);
284
285}
fae5f6bb 286//_____________________________________________________________________
287void AliAnalysisTaskGammaJet::Terminate(Option_t *) {
332f1f44 288 // Draw result to the screen
289 // Called once at the end of the query
290}
291
fae5f6bb 292//_____________________________________________________________________
4dca60a8 293AliAODEvent * AliAnalysisTaskGammaJet::GetAODEvent() {
294 //Get the AOD event from whereever it might be
295 AliAODEvent * aodEvent = dynamic_cast<AliAODEvent*>(InputEvent());
296 if(!aodEvent) {
297 aodEvent = AODEvent();
298 }
fae5f6bb 299
4dca60a8 300 return aodEvent;
301
302}
303
304
fae5f6bb 305//_____________________________________________________________________
306TClonesArray * AliAnalysisTaskGammaJet::GetConversionGammas(const AliAODEvent * aodEvent) {
332f1f44 307
fae5f6bb 308 //Get Conversion gamma branch of AOD. First try standard AOD
309 TClonesArray * convGamma = dynamic_cast<TClonesArray*>(aodEvent->FindListObject("GammaConv_gamma"));
310
311 //If it's there, send it back
312 if(convGamma) return convGamma;
313
e0b4c21c 314
fae5f6bb 315 //If AOD not in standard file have to locate it in delta AOD
316 if( !(fDeltaAODFileName.Length() > 0) ) return NULL;
332f1f44 317
332f1f44 318 AliAODHandler * aodHandler = dynamic_cast<AliAODHandler*>(AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler());
319 if(aodHandler) {
320 AliAODExtension * gExt = dynamic_cast<AliAODExtension*>(aodHandler->GetExtensions()->FindObject(fDeltaAODFileName));
321 if(gExt) {
fae5f6bb 322 AliAODEvent * gcEvent = gExt->GetAOD();
323 return dynamic_cast<TClonesArray*>(gcEvent->FindListObject("GammaConv_gamma"));
332f1f44 324 }
325 }
326 return NULL;
327}
fae5f6bb 328
329
e0b4c21c 330// //_____________________________________________________________________
331// void AliAnalysisTaskGammaJet::FillPWG4PartCorrBranch( TClonesArray * gcBranch, TClonesArray * partCorrBranch , TString detector ) {
fae5f6bb 332
e0b4c21c 333// for(int i = 0; i < gcBranch->GetEntriesFast(); i++) {
334// AliGammaConversionAODObject * gcObject = dynamic_cast<AliGammaConversionAODObject*>(gcBranch->At(i));
335// if ( gcObject ) {
336// AliAODPWG4ParticleCorrelation pc(gcObject->Px(), gcObject->Py(), gcObject->Pz(), gcObject->E());
337// pc.SetTagged(gcObject->IsTagged());
338// pc.SetTrackLabel(gcObject->GetLabel1(), gcObject->GetLabel2());
339// pc.SetDetector(detector);
340// new((*partCorrBranch)[i]) AliAODPWG4ParticleCorrelation(pc);
fae5f6bb 341
e0b4c21c 342// } else {
343// AliError(Form("Couldn't get gamma conversion aod object"));
344// }
fae5f6bb 345
e0b4c21c 346// }
347// }
fae5f6bb 348
349
e0b4c21c 350// //_____________________________________________________________________
351// AliAODPWG4ParticleCorrelation * AliAnalysisTaskGammaJet::PWG4PartFromGammaConvAODObject(AliGammaConversionAODObject * gcObject, TString detector ) {
fae5f6bb 352
e0b4c21c 353// AliAODPWG4ParticleCorrelation * pc = new AliAODPWG4ParticleCorrelation(gcObject->Px(), gcObject->Py(), gcObject->Pz(), gcObject->E());
354// pc->SetTagged(gcObject->IsTagged());
355// pc->SetTrackLabel(gcObject->GetLabel1(), gcObject->GetLabel2());
356// pc->SetDetector(detector);
357// return pc;
358// }
fae5f6bb 359
360
361//_________________________________________________________________________
362void AliAnalysisTaskGammaJet::CleanUp() {
363 fPhotons->Delete();
364}
365
366//_________________________________________________________________________
96cca36c 367Bool_t AliAnalysisTaskGammaJet::IsIsolated( AliAODPWG4Particle * particle, TClonesArray * tracks, Float_t coneSize, Float_t ptThreshold ) {
fae5f6bb 368 //See header file for documentation
369 for(int it = 0; it < tracks->GetEntriesFast(); it++) {
370 if ( (it == particle->GetTrackLabel(0)) || it == particle->GetTrackLabel(1) )
371 continue;
372
373 //BALLE Svein:How are you checking the calorimeters for whether they are decay particles ?
374
375 AliAODTrack * track = dynamic_cast<AliAODTrack*>(tracks->At(it));
376 if (track) {
377 if ( IsInCone(particle->Eta() - track->Eta(), particle->Phi() - track->Phi(), coneSize) ) {
378 if (track->Pt() > ptThreshold) {
379 return kFALSE;
380 }
381 }
382 } else {
383 AliError(Form("Bad track!!!! "));
384 }
385 }
386
387 //No particle above threshold, it's isolated
388 return kTRUE;
389}
390
391
392//______________________________________________________________________________________________
393void AliAnalysisTaskGammaJet::ProcessCalorimeters( const AliAODEvent * const aodEvent ) {
394
395 TClonesArray * clusters = aodEvent->GetCaloClusters();
396
397
398 for(int ic = 0; ic < clusters->GetEntriesFast(); ic++) {
399 AliAODCaloCluster * cluster = dynamic_cast<AliAODCaloCluster*>(clusters->At(ic));
400 if (!cluster) {
401 AliError(Form("Error getting cluster"));
402 continue;
403 }
404
405
406 if (cluster->GetNCells() < 6) continue;
407 if (cluster->GetEmcCpvDistance() < 15) continue;
408
409 TLorentzVector tlvec;
410
411 AliAODVertex * vertex = aodEvent->GetPrimaryVertex();
412 Double_t vertexPosition[3];
413 vertex->GetXYZ(vertexPosition);
414 cluster->GetMomentum(tlvec, vertexPosition);
415 if (tlvec.Pt() < GetMinPt()) continue;
416
fae5f6bb 417 }
418
419}
e0b4c21c 420
421// // ///____________________________________________________________________________________
422// // void AddToAOD(AliAODConversionParticle * photon, TClonesArray * branch) {
423
424
425// // }
426
427
428// //__________________________________________________________________________________________
429// void AddToOutputAOD(AliGammaConversionAODObject * photon, TClonesArray * branch) {
430
431// cout <<"BALLE BALLE BALLE AddToOutputAOD"<<endl;
432
433// AliAODPWG4ParticleCorrelation particle = AliAODPWG4ParticleCorrelation(photon->Px(), photon->Py(), photon->Pz(), photon->E());
434// particle.SetTrackLabel(photon->GetLabel1(), photon->GetLabel2());
435// particle.SetDetector("CTS");
436// //particle.SetPdg(AliPID::kElecon);
437
438// Int_t i = branch->GetEntriesFast();
439// // if(! (branch.GetClass("Correlation")) ) {
440// // new((*branch)[i]) AliAODPWG4Particle(particle);
441// // } else {
442// TList * list = particle.GetObjArrayList();
443// if(list)
444// cout <<"BALLE BALLE we have the list"<<endl;
445// else
446// cout <<"BALLE BALLE we don't"<<endl;
447
448// particle.GetObjArrayList()->Dump();
449// new((*branch)[i]) AliAODPWG4ParticleCorrelation(particle);
450// //}
451// }
452
453
fae5f6bb 454//___________________________________________________________________________________________
455void AliAnalysisTaskGammaJet::ProcessConvGamma( const AliAODEvent * const aodEvent ) {
96cca36c 456
457 TClonesArray * tracks = aodEvent->GetTracks();
458 if(!tracks) {
459 cout << "No tracks!!!"<<endl;
460 return;
461 }
fae5f6bb 462
b1b4fa20 463
e0b4c21c 464 TClonesArray * convGamma = dynamic_cast<TClonesArray*>(aodEvent->FindListObject("GammaConversionTask_900356200010031"));
465
466
fae5f6bb 467 if(!convGamma) {
e0b4c21c 468
469 convGamma = GetConversionGammas(aodEvent);
470 if(!convGamma) {
471 AliError(Form("No convgamma"));
472 return;
473 }
fae5f6bb 474 }
e0b4c21c 475
476
fae5f6bb 477
478 for (Int_t iPhot = 0; iPhot < convGamma->GetEntriesFast(); iPhot++) {
96cca36c 479 AliAODPWG4Particle * photon = dynamic_cast<AliAODPWG4Particle*>(convGamma->At(iPhot));
e0b4c21c 480
481
96cca36c 482 if(!photon) {
483 AliGammaConversionAODObject * aodO = dynamic_cast<AliGammaConversionAODObject*>(convGamma->At(iPhot));
484 if (!aodO) {
485 AliError(Form("ERROR: Could not receive ga %d\n", iPhot));
486 continue;
487 }
488
b1b4fa20 489 if(aodO->Pt() < GetMinPt()) continue;
490 photon = AddToAOD(aodO, fPhotons, "ConvGamma");
96cca36c 491 }
492
493 if(photon) {
494 Bool_t isolated = IsIsolated(photon, tracks, GetConeSize(), GetPtThreshold() );
495
496
96cca36c 497 CorrelateWithJets(photon, aodEvent->GetJets(), isolated);
e0b4c21c 498 CorrelateWithHadrons(photon, aodEvent->GetTracks(), isolated);
499
96cca36c 500 fHistPt->Fill(photon->Pt());
e0b4c21c 501 fHistPhotPhi->Fill(photon->Phi());
96cca36c 502 }
fae5f6bb 503 }
504}
505
e0b4c21c 506
507AliAODPWG4ParticleCorrelation * AliAnalysisTaskGammaJet::AddToAOD(AliGammaConversionAODObject * aodO, TClonesArray * branch, TString detector) {
508 new((*branch)[branch->GetEntriesFast()]) AliAODPWG4ParticleCorrelation(aodO->Px(), aodO->Py(), aodO->Pz(), aodO->E());
509 AliAODPWG4ParticleCorrelation * photon = dynamic_cast<AliAODPWG4ParticleCorrelation*>(branch->Last());
b1b4fa20 510 if(photon) {
511 photon->SetTagged(aodO->IsTagged());
512 photon->SetTrackLabel(aodO->GetLabel1(), aodO->GetLabel2());
513 photon->SetDetector(detector);
514 }
515
e0b4c21c 516 return photon;
517}
518
519AliAODPWG4ParticleCorrelation * AliAnalysisTaskGammaJet::AddToAOD(AliAODConversionParticle * aodO, TClonesArray * branch, TString detector) {
520 new((*branch)[branch->GetEntriesFast()]) AliAODPWG4ParticleCorrelation(aodO->Px(), aodO->Py(), aodO->Pz(), aodO->E());
521 AliAODPWG4ParticleCorrelation * photon = dynamic_cast<AliAODPWG4ParticleCorrelation*>(branch->Last());
b1b4fa20 522 if(photon) {
523 photon->SetTrackLabel(aodO->GetLabel1(), aodO->GetLabel2());
524 photon->SetDetector(detector);
525 }
526
e0b4c21c 527 return photon;
528}
529
530///____________________________________________________________________________________________________
531void AliAnalysisTaskGammaJet::CorrelateWithHadrons(AliAODPWG4Particle * photon, const TClonesArray * tracks, Bool_t const isolated) {
532
533 //See header file for documentation
534 if (tracks) {
535
536 Float_t maxdPhi = 0.0;
537 Float_t maxdPhiPt = 0.0;
538
539 for(int ij = 0; ij < tracks->GetEntriesFast(); ij++) {
540 AliAODTrack * track = dynamic_cast<AliAODTrack*>(tracks->At(ij));
541 if(track) {
542 if (track->Pt() < 2.0 ) continue;
543
544 fHadHistPt->Fill(track->Pt());
545 fHistHadPhi->Fill(track->Phi());
546 Float_t dPhi = TMath::Abs(photon->Phi() - track->Phi());
547
548 fHadHistdPhi->Fill(dPhi);
549 if (isolated) {
550 fHadHistdPhiIso->Fill(dPhi, track->Pt()/photon->Pt());
551 }
552
553
554 if(photon->Phi() < 0)
555 cout << "BALLE"<<endl;
556 if(track->Phi() < 0 )
557 cout << "KUKKK"<<endl;
558
559 //cout << dPhi << " " << maxdPhi << endl;
560 //cout << TMath::Abs( dPhi - TMath::Pi() ) << " " << TMath::Abs( maxdPhi - TMath::Pi()) <<endl;;
561
562 if ( TMath::Abs( dPhi - TMath::Pi() ) < TMath::Abs( maxdPhi - TMath::Pi()) ){
563 maxdPhi = dPhi;
564
565 maxdPhiPt = track->Pt();
566 //cout << dPhi << " " << maxdPhi << endl;
567
568 }
569
570 }
571 }
572
573
574 if(tracks->GetEntriesFast() > 0) {
575 //cout << maxdPhi << endl;
576 fHadHistMaxdPhi->Fill(maxdPhi);
577 if(isolated) {
578 fHadHistMaxdPhiIso->Fill(maxdPhi);
579 fHadHistMaxdPhiIsoPt->Fill(maxdPhi, maxdPhiPt/photon->Pt());
580 }
581 }
582 }
583
584
585
586}
587
588
96cca36c 589///________________________________________________________________________________________________________________
fae5f6bb 590void AliAnalysisTaskGammaJet::CorrelateWithJets(AliAODPWG4ParticleCorrelation * photon, const TClonesArray * const jets) {
591 //See header file for documentation
592 if (jets) {
593 for(int ij = 0; ij < jets->GetEntriesFast(); ij++) {
594 AliAODJet * jet = dynamic_cast<AliAODJet*>(jets->At(ij));
595 if(jet) {
596 fHistPtJets->Fill(jet->Pt());
597
598 Float_t dPhi = TMath::Abs(photon->Phi() - jet->Phi());
599 if (photon->IsIsolated())
600 fHistGammaJetsIso->Fill(dPhi, jet->Pt()/photon->Pt());
601 else
602 fHistGammaJets->Fill(dPhi);
603
604 }
605 }
606 }
607}
96cca36c 608
609
610
611///________________________________________________________________________________________________________________
612void AliAnalysisTaskGammaJet::CorrelateWithJets(AliAODPWG4Particle * photon, const TClonesArray * const jets, Bool_t const isolated ) {
613 //See header file for documentation
614 if (jets) {
615
616 Float_t maxdPhi = 0.0;
617 Float_t maxdPhiPt = 0.0;
e0b4c21c 618
96cca36c 619 for(int ij = 0; ij < jets->GetEntriesFast(); ij++) {
620 AliAODJet * jet = dynamic_cast<AliAODJet*>(jets->At(ij));
621 if(jet) {
622 fHistPtJets->Fill(jet->Pt());
e0b4c21c 623 fHistJetPhi->Fill(jet->Phi());
96cca36c 624 Float_t dPhi = TMath::Abs(photon->Phi() - jet->Phi());
e0b4c21c 625
626 fHistGammaJets->Fill(dPhi);
627 if (isolated) {
628 fHistGammaJetsIso->Fill(dPhi, jet->Pt()/photon->Pt());
629 }
630
631
632
633 if ( TMath::Abs( dPhi - TMath::Pi() ) < TMath::Abs( maxdPhi - TMath::Pi()) ){
96cca36c 634 maxdPhi = dPhi;
e0b4c21c 635
96cca36c 636 maxdPhiPt = jet->Pt();
e0b4c21c 637 //cout << dPhi << " " << maxdPhi << endl;
638
96cca36c 639 }
640
96cca36c 641 }
642 }
643
e0b4c21c 644
645 if(jets->GetEntriesFast() > 0) {
646 //cout << maxdPhi << endl;
647 fHistMaxdPhi->Fill(maxdPhi);
648 if(isolated) {
649 fHistMaxdPhiIso->Fill(maxdPhi);
650 fHistMaxdPhiIsoPt->Fill(maxdPhi, maxdPhiPt/photon->Pt());
651 }
96cca36c 652 }
653 }
654}