]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGGA/EMCALJetTasks/AliAnalysisTaskEmcalJet.cxx
including modifications from user saiola
[u/mrichter/AliRoot.git] / PWGGA / EMCALJetTasks / AliAnalysisTaskEmcalJet.cxx
1 // $Id: AliAnalysisTaskEmcalJet.cxx 56756 2012-05-30 05:03:02Z loizides $
2 //
3 // Emcal jet analysis base task.
4 //
5 // Author: S.Aiola
6
7 #include "AliAnalysisTaskEmcalJet.h"
8
9 #include <TObject.h>
10 #include <TChain.h>
11 #include <TClonesArray.h>
12 #include <TList.h>
13
14 #include "AliESDEvent.h"
15 #include "AliAnalysisManager.h"
16 #include "AliCentrality.h"
17 #include "AliVCluster.h"
18 #include "AliVParticle.h"
19 #include "AliEmcalJet.h"
20 #include "AliVEventHandler.h"
21 #include "AliLog.h"
22 #include "AliEMCALGeometry.h"
23
24 ClassImp(AliAnalysisTaskEmcalJet)
25
26 //________________________________________________________________________
27 AliAnalysisTaskEmcalJet::AliAnalysisTaskEmcalJet() : 
28   AliAnalysisTaskEmcal("AliAnalysisTaskEmcalJet"),
29   fJetRadius(0.4),
30   fJetsName("Jets"),
31   fPtBiasJetTrack(10),
32   fPtBiasJetClus(10),
33   fJetPtCut(1),
34   fJetAreaCut(0.2),
35   fMinEta(-0.9),
36   fMaxEta(0.9),
37   fMinPhi(-10),
38   fMaxPhi(10),
39   fMaxClusterPt(100),
40   fMaxTrackPt(100),
41   fJets(0)
42 {
43   // Default constructor.
44 }
45
46 //________________________________________________________________________
47 AliAnalysisTaskEmcalJet::AliAnalysisTaskEmcalJet(const char *name) : 
48   AliAnalysisTaskEmcal(name),
49   fJetRadius(0.4),
50   fJetsName("Jets"),
51   fPtBiasJetTrack(10),
52   fPtBiasJetClus(10),
53   fJetPtCut(1),
54   fJetAreaCut(0.2),
55   fMinEta(-0.9),
56   fMaxEta(0.9),
57   fMinPhi(-10),
58   fMaxPhi(10),
59   fMaxClusterPt(100),
60   fMaxTrackPt(100),
61   fJets(0)
62 {
63   // Standard constructor.
64 }
65
66 //________________________________________________________________________
67 AliAnalysisTaskEmcalJet::AliAnalysisTaskEmcalJet(const char *name, Bool_t histo) : 
68   AliAnalysisTaskEmcal(name, histo),
69   fJetRadius(0.4),
70   fJetsName("Jets"),
71   fPtBiasJetTrack(10),
72   fPtBiasJetClus(10),
73   fJetPtCut(1),
74   fJetAreaCut(0.2),
75   fMinEta(-0.9),
76   fMaxEta(0.9),
77   fMinPhi(-10),
78   fMaxPhi(10),
79   fMaxClusterPt(100),
80   fMaxTrackPt(100),
81   fJets(0)
82 {
83   // Standard constructor.
84 }
85
86 //________________________________________________________________________
87 AliAnalysisTaskEmcalJet::~AliAnalysisTaskEmcalJet()
88 {
89   // Destructor
90 }
91
92 //________________________________________________________________________
93 Bool_t AliAnalysisTaskEmcalJet::RetrieveEventObjects()
94 {
95   // Retrieve objects from event.
96
97   if (!AliAnalysisTaskEmcal::RetrieveEventObjects())
98     return kFALSE;
99
100   if (!fJetsName.IsNull()) {
101     fJets = dynamic_cast<TClonesArray*>(InputEvent()->FindListObject(fJetsName));
102     if (!fJets) {
103       AliWarning(Form("Could not retrieve jets %s!", fJetsName.Data())); 
104     }
105   }
106
107   return kTRUE;
108 }
109
110 //________________________________________________________________________
111 Bool_t AliAnalysisTaskEmcalJet::IsJetTrack(AliEmcalJet* jet, Int_t itrack, Bool_t sorted) const
112 {
113   // Return true if track is in jet.
114
115   for (Int_t i = 0; i < jet->GetNumberOfTracks(); i++) {
116     Int_t ijettrack = jet->TrackAt(i);
117     if (sorted && ijettrack > itrack)
118       return kFALSE;
119     if (ijettrack == itrack)
120       return kTRUE;
121   }
122   return kFALSE;
123 }
124
125 //________________________________________________________________________
126 Bool_t AliAnalysisTaskEmcalJet::IsJetCluster(AliEmcalJet* jet, Int_t iclus, Bool_t sorted) const
127 {
128   // Return true if cluster is in jet.
129
130   for (Int_t i = 0; i < jet->GetNumberOfClusters(); i++) {
131     Int_t ijetclus = jet->ClusterAt(i);
132     if (sorted && ijetclus > iclus)
133       return kFALSE;
134     if (ijetclus == iclus)
135       return kTRUE;
136   }
137   return kFALSE;
138 }
139
140 //________________________________________________________________________
141 Bool_t AliAnalysisTaskEmcalJet::AcceptBiasJet(AliEmcalJet *jet) const
142
143   if (jet->MaxTrackPt() < fPtBiasJetTrack && (fAnaType == kTPC || jet->MaxClusterPt() < fPtBiasJetClus))
144     return kFALSE;
145   else
146     return kTRUE;
147 }
148
149 //________________________________________________________________________
150 Bool_t AliAnalysisTaskEmcalJet::AcceptJet(AliEmcalJet *jet, Bool_t bias, Bool_t upCut) const
151 {   
152   // Return true if jet is accepted.
153
154   if (jet->Pt() <= fJetPtCut)
155     return kFALSE;
156   if (jet->Area() <= fJetAreaCut)
157     return kFALSE;
158   if (bias && !AcceptBiasJet(jet))
159     return kFALSE;
160   if (upCut && (jet->MaxTrackPt() > fMaxTrackPt || jet->MaxClusterPt() > fMaxClusterPt))
161     return kFALSE;
162
163   return (Bool_t)(jet->Eta() > fMinEta && jet->Eta() < fMaxEta && jet->Phi() > fMinPhi && jet->Phi() < fMaxPhi);
164 }
165
166 //________________________________________________________________________
167 void AliAnalysisTaskEmcalJet::Init()
168 {
169   // Init the analysis.
170
171   if (fAnaType == kTPC) {
172     SetEtaLimits(-0.9 + fJetRadius, 0.9 - fJetRadius);
173     SetPhiLimits(-10, 10);
174   }
175   else if (fAnaType == kEMCAL) {
176     AliEMCALGeometry *geom = AliEMCALGeometry::GetInstance();
177     if (!geom) {
178       AliFatal("Can not create geometry");
179       return;
180     }
181     SetEtaLimits(geom->GetArm1EtaMin() + fJetRadius, geom->GetArm1EtaMax() - fJetRadius);
182     SetPhiLimits(geom->GetArm1PhiMin() * TMath::DegToRad() + fJetRadius, geom->GetArm1PhiMax() * TMath::DegToRad() - fJetRadius);
183   }
184   else {
185     AliWarning("Analysis type not recognized! Assuming kTPC...");
186     SetAnaType(kTPC);
187     Init();
188   }
189
190   SetInitialized();
191 }
192
193 //________________________________________________________________________
194 void AliAnalysisTaskEmcalJet::UserExec(Option_t *) 
195 {
196   if (!fInitialized) 
197     Init();
198
199   AliAnalysisTaskEmcal::UserExec("");
200 }