]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskEmcalJetSpectra.cxx
move EMCALJetTasks from PWGGA to PWGJE
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / UserTasks / AliAnalysisTaskEmcalJetSpectra.cxx
CommitLineData
9993af2d 1// $Id$
2//
3// Jet spectrum task.
4//
5// Author: R.Reed, M.Connors
6
7#include "AliAnalysisTaskEmcalJetSpectra.h"
8
9#include <TCanvas.h>
74ec9ac9 10#include <TChain.h>
9993af2d 11#include <TClonesArray.h>
74ec9ac9 12#include <TH1F.h>
13#include <TH2F.h>
9993af2d 14#include <TList.h>
020052e4 15#include <TLorentzVector.h>
74ec9ac9 16#include <TParameter.h>
9993af2d 17#include <TParticle.h>
18#include <TTree.h>
19#include <TVector3.h>
020052e4 20
9993af2d 21#include "AliAODEvent.h"
020052e4 22#include "AliAnalysisManager.h"
9993af2d 23#include "AliAnalysisTask.h"
24#include "AliCentrality.h"
020052e4 25#include "AliESDEvent.h"
020052e4 26#include "AliESDInputHandler.h"
9993af2d 27#include "AliEmcalJet.h"
28#include "AliVCluster.h"
020052e4 29
30ClassImp(AliAnalysisTaskEmcalJetSpectra)
31
32//________________________________________________________________________
9993af2d 33AliAnalysisTaskEmcalJetSpectra::AliAnalysisTaskEmcalJetSpectra() :
34 AliAnalysisTaskSE(),
35 fTracksName("tracks"),
36 fJetsName("jets"),
37 fClustersName("clusters"),
38 fRhos1Name("fArrRhos"),
39 fRhos2Name("fArrRhos"),
40 fRhos3Name("fArrRhos"),
41 fPhimin(-10),
42 fPhimax(10),
43 fEtamin(-0.9),
44 fEtamax(0.9),
45 fAreacut(0.0),
46 fESD(0),
47 fOutputList(0),
48 fHistCentrality(0),
49 fHistDeltaRho12vsCent(0),
50 fHistDeltaRho13vsCent(0),
51 fHistDeltaRho23vsCent(0),
52 fHistDeltaJetPt12vsCent(0),
53 fHistDeltaJetPt13vsCent(0),
54 fHistDeltaJetPt23vsCent(0),
55 fHistRho1vsCent(0),
56 fHistRho2vsCent(0),
57 fHistRho3vsCent(0)
58{
59 // Default constructor.
020052e4 60
9993af2d 61 for (Int_t i = 0;i<6;++i) {
62 fHistRawJetPt[i] = 0;
63 fHistAreavsRawPt[i] = 0;
64 for (Int_t j = 0;j<4;++j) {
65 fHistNEFvsPt[i][j] = 0;
020052e4 66 fHistZvsPt[i][j] = 0;
67 fHistZchvsPt[i][j] = 0;
68 fHistZemvsPt[i][j] = 0;
020052e4 69 fHistJetPt[i][j] = 0;
70 fHistNconsvsPt[i][j] = 0;
6802bfed 71 fHistJetPt3[i][j] = 0;
6172360f 72 fHistJetPt5[i][j] = 0;
6172360f 73 fHistJetPt7[i][j] = 0;
6802bfed 74 fHistJetPt9[i][j] = 0;
9993af2d 75 }
76 }
020052e4 77}
9993af2d 78
020052e4 79//________________________________________________________________________
9993af2d 80AliAnalysisTaskEmcalJetSpectra::AliAnalysisTaskEmcalJetSpectra(const char *name) :
81 AliAnalysisTaskSE(name),
82 fTracksName("tracks"),
83 fJetsName("jets"),
84 fClustersName("clusters"),
85 fRhos1Name("fArrRhos"),
86 fRhos2Name("fArrRhos"),
87 fRhos3Name("fArrRhos"),
88 fPhimin(-10),
89 fPhimax(10),
90 fEtamin(-0.9),
91 fEtamax(0.9),
92 fAreacut(0.0),
93 fESD(0),
94 fOutputList(0),
95 fHistCentrality(0),
96 fHistDeltaRho12vsCent(0),
97 fHistDeltaRho13vsCent(0),
98 fHistDeltaRho23vsCent(0),
99 fHistDeltaJetPt12vsCent(0),
100 fHistDeltaJetPt13vsCent(0),
101 fHistDeltaJetPt23vsCent(0),
102 fHistRho1vsCent(0),
103 fHistRho2vsCent(0),
104 fHistRho3vsCent(0)
020052e4 105{
106 // Constructor
9993af2d 107
108 for (Int_t i = 0;i<6;++i) {
109 fHistRawJetPt[i] = 0;
110 fHistAreavsRawPt[i] = 0;
111 for (Int_t j = 0;j<4;++j) {
112 fHistNEFvsPt[i][j] = 0;
113 fHistZvsPt[i][j] = 0;
114 fHistZchvsPt[i][j] = 0;
115 fHistZemvsPt[i][j] = 0;
116 fHistJetPt[i][j] = 0;
117 fHistNconsvsPt[i][j] = 0;
6802bfed 118 fHistJetPt3[i][j] = 0;
9993af2d 119 fHistJetPt5[i][j] = 0;
9993af2d 120 fHistJetPt7[i][j] = 0;
6802bfed 121 fHistJetPt9[i][j] = 0;
9993af2d 122 }
123 }
020052e4 124
125 DefineInput(0, TChain::Class());
126 DefineOutput(1, TList::Class());
127}
128
129//________________________________________________________________________
130void AliAnalysisTaskEmcalJetSpectra::UserCreateOutputObjects()
131{
9993af2d 132 // Called once at the beginning of the analysis.
020052e4 133
134 AliVEventHandler* handler = AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler();
135 if (!handler) {
136 AliError("Input handler not available!");
137 return;
138 }
139
020052e4 140 OpenFile(1);
141 fOutputList = new TList();
142 fOutputList->SetOwner();
143
9993af2d 144 fHistCentrality = new TH1F("Centrality", "Centrality", 101, -1, 100);
145 fHistDeltaRho12vsCent = new TH2F("DeltaRho12vsCent", "DeltaRho12vsCent", 100, 0.0, 100.0, 500,-250,250);
146 fHistDeltaRho13vsCent = new TH2F("DeltaRho13vsCent", "DeltaRho13vsCent", 100, 0.0, 100.0, 500,-250,250);
147 fHistDeltaRho23vsCent = new TH2F("DeltaRho23vsCent", "DeltaRho23vsCent", 100, 0.0, 100.0, 500,-250,250);
148 fHistDeltaJetPt12vsCent = new TH2F("DeltaJetPt12vsCent", "DeltaJetPt12vsCent", 100, 0.0, 100.0, 500,-250,250);
149 fHistDeltaJetPt13vsCent = new TH2F("DeltaJetPt13vsCent", "DeltaJetPt13vsCent", 100, 0.0, 100.0, 500,-250,250);
150 fHistDeltaJetPt23vsCent = new TH2F("DeltaJetPt23vsCent", "DeltaJetPt23vsCent", 100, 0.0, 100.0, 500,-250,250);
020052e4 151 fHistRho1vsCent = new TH2F("Rho1vsCent", "Rho1vsCent", 100, 0.0, 100.0, 500, 0, 500);
152 fHistRho2vsCent = new TH2F("Rho2vsCent", "Rho2vsCent", 100, 0.0, 100.0, 500, 0, 500);
153 fHistRho3vsCent = new TH2F("Rho3vsCent", "Rho3vsCent", 100, 0.0, 100.0, 500, 0, 500);
154
9993af2d 155 for (Int_t i = 0;i<6;++i) {
156 TString name00(Form("fHistRawJetPt_%i",i));
157 fHistRawJetPt[i] = new TH1F(name00,name00,250,0,500);
158 fOutputList->Add(fHistRawJetPt[i]);
159 TString name01(Form("fHistAreavsRawPt_%i",i));
160 fHistAreavsRawPt[i] = new TH2F(name01,name01,250,0,500,100,0,1);
161 fOutputList->Add(fHistAreavsRawPt[i]);
162 for (Int_t j = 0;j<4;j++) {
163 TString name0(Form("fHistNEFvsPt_%i_%i",i,j));
164 fHistNEFvsPt[i][j] = new TH2F(name0,name0,250,-250,250,200,0,2);
165 fOutputList->Add(fHistNEFvsPt[i][j]);
166 TString name1(Form("fHistZvsPt_%i_%i",i,j));
167 fHistZvsPt[i][j] = new TH2F(name1,name1,250,-250,250,200,0,2);
168 fOutputList->Add(fHistZvsPt[i][j]);
169 TString name2(Form("fHistZchvsPt_%i_%i",i,j));
170 fHistZchvsPt[i][j] = new TH2F(name2,name2,250,-250,250,200,0,2);
171 fOutputList->Add(fHistZchvsPt[i][j]);
172 TString name3(Form("fHistZemvsPt_%i_%i",i,j));
173 fHistZemvsPt[i][j] = new TH2F(name3,name3,250,-250,250,200,0,2);
174 fOutputList->Add(fHistZemvsPt[i][j]);
175 TString name5(Form("fHistJetPt_%i_%i",i,j));
176 fHistJetPt[i][j] = new TH1F(name5,name5,250,-250,250);
177 fOutputList->Add(fHistJetPt[i][j]);
178 TString name6(Form("fHistNconsvsPt_%i_%i",i,j));
179 fHistNconsvsPt[i][j] = new TH2F(name6,name6,250,-250,250,500,0,500);
180 fOutputList->Add(fHistNconsvsPt[i][j]);
6802bfed 181 TString name7(Form("fHistJetPt3_%i_%i",i,j));
182 fHistJetPt3[i][j] = new TH1F(name7,name7,250,-250,250);
183 fOutputList->Add(fHistJetPt3[i][j]);
184 TString name8(Form("fHistJetPt5_%i_%i",i,j));
185 fHistJetPt5[i][j] = new TH1F(name8,name8,250,-250,250);
9993af2d 186 fOutputList->Add(fHistJetPt5[i][j]);
9993af2d 187 TString name9(Form("fHistJetPt7_%i_%i",i,j));
188 fHistJetPt7[i][j] = new TH1F(name9,name9,250,-250,250);
189 fOutputList->Add(fHistJetPt7[i][j]);
6802bfed 190 TString name10(Form("fHistJetPt9_%i_%i",i,j));
191 fHistJetPt9[i][j] = new TH1F(name10,name10,250,-250,250);
192 fOutputList->Add(fHistJetPt9[i][j]);
9993af2d 193 }
020052e4 194 }
195 fOutputList->Add(fHistCentrality);
020052e4 196 fOutputList->Add(fHistDeltaRho12vsCent);
197 fOutputList->Add(fHistDeltaRho13vsCent);
198 fOutputList->Add(fHistDeltaRho23vsCent);
6172360f 199 fOutputList->Add(fHistDeltaJetPt12vsCent);
200 fOutputList->Add(fHistDeltaJetPt13vsCent);
201 fOutputList->Add(fHistDeltaJetPt23vsCent);
020052e4 202 fOutputList->Add(fHistRho1vsCent);
203 fOutputList->Add(fHistRho2vsCent);
204 fOutputList->Add(fHistRho3vsCent);
205
9993af2d 206 PostData(1, fOutputList);
020052e4 207}
9993af2d 208
020052e4 209//________________________________________________________________________
9993af2d 210Int_t AliAnalysisTaskEmcalJetSpectra::GetCentBin(Double_t cent) const
211{
212 // Get centrality bin.
020052e4 213
020052e4 214 Int_t centbin = -1;
215 if (cent>=0 && cent<10)
216 centbin = 0;
217 else if (cent>=10 && cent<20)
218 centbin = 1;
219 else if (cent>=20 && cent<30)
220 centbin = 2;
221 else if (cent>=30 && cent<40)
222 centbin = 3;
223 else if (cent>=40 && cent<50)
224 centbin = 4;
225 else if (cent>=50 && cent<90)
226 centbin = 5;
227 return centbin;
228}
9993af2d 229
020052e4 230//________________________________________________________________________
231void AliAnalysisTaskEmcalJetSpectra::UserExec(Option_t *)
232{
233 // Main loop, called for each event.
234
235 // esd or aod mode
236 Bool_t esdMode = kTRUE;
237 if (dynamic_cast<AliAODEvent*>(InputEvent()))
238 esdMode = kFALSE;
239
9993af2d 240 if (esdMode) {
241 // optimization in case autobranch loading is off
242 AliAnalysisManager *am = AliAnalysisManager::GetAnalysisManager();
243 if (fTracksName == "Tracks")
244 am->LoadBranch("Tracks");
245 }
020052e4 246
247 // get centrality
248 Double_t fCent = -1;
249 TList *l = InputEvent()->GetList();
250 AliCentrality *centrality = InputEvent()->GetCentrality() ;
251 if (centrality)
252 fCent = centrality->GetCentralityPercentile("V0M");
253 else
254 fCent=99; // probably pp data
255 if (fCent<0) {
256 AliError(Form("Centrality negative: %f", fCent));
257 return;
258 }
259
260 Int_t centbin = GetCentBin(fCent);
261
262 //don't want to analyze events 90-100
263 if (centbin < 0)
264 return;
265
266 TClonesArray *jets = 0;
267 TClonesArray *tracks = 0;
020052e4 268
269 tracks = dynamic_cast<TClonesArray*>(l->FindObject(fTracksName));
270 if (!tracks) {
271 AliError(Form("Pointer to tracks %s == 0", fTracksName.Data() ));
272 return;
273 }
6802bfed 274
020052e4 275 jets = dynamic_cast<TClonesArray*>(l->FindObject(fJetsName));
276 if (!jets) {
277 AliError(Form("Pointer to tracks %s == 0", fTracksName.Data() ));
278 return;
279 }
280
6802bfed 281 Double_t rho1 = 0;
6172360f 282 TParameter<Double_t> *Rho1Param = dynamic_cast<TParameter<Double_t>*>(InputEvent()->FindListObject(fRhos1Name));
283 if (Rho1Param)
284 rho1 = Rho1Param->GetVal();
74ec9ac9 285
6802bfed 286 Double_t rho2 = 0;
6172360f 287 TParameter<Double_t> *Rho2Param = dynamic_cast<TParameter<Double_t>*>(InputEvent()->FindListObject(fRhos2Name));
288 if (Rho2Param)
289 rho2 = Rho2Param->GetVal();
020052e4 290
6802bfed 291 Double_t rho3 = 0;
6172360f 292 TParameter<Double_t> *Rho3Param = dynamic_cast<TParameter<Double_t>*>(InputEvent()->FindListObject(fRhos3Name));
293 if (Rho3Param)
294 rho3 = Rho3Param->GetVal();
020052e4 295
6802bfed 296 fHistRho1vsCent->Fill(fCent,rho1);
297 fHistRho2vsCent->Fill(fCent,rho2);
298 fHistRho3vsCent->Fill(fCent,rho3);
299
020052e4 300 if (( rho1>0 ) && ( rho2>0 ))
301 fHistDeltaRho12vsCent->Fill(fCent,rho1-rho2);
302 if (( rho1>0 ) && ( rho3>0 ))
303 fHistDeltaRho13vsCent->Fill(fCent,rho1-rho3);
304 if (( rho2>0 ) && ( rho3>0 ))
305 fHistDeltaRho23vsCent->Fill(fCent,rho2-rho3);
306 fHistCentrality->Fill(fCent);
307
9993af2d 308 Double_t lJetPt = -500;
020052e4 309 Double_t lJetPtun = -500;
020052e4 310 const Int_t Njets = jets->GetEntries();
311 Int_t NjetAcc = 0;
020052e4 312
313 for (Int_t iJets = 0; iJets < Njets; ++iJets) {
020052e4 314 AliEmcalJet *jet = static_cast<AliEmcalJet*>(jets->At(iJets));
315 if (!jet)
316 continue;
9993af2d 317 if ((jet->Phi()<fPhimin)||(jet->Phi()>fPhimax))
020052e4 318 continue;
9993af2d 319 if ((jet->Eta()<fEtamin)||(jet->Eta()>fEtamax))
020052e4 320 continue;
321 fHistAreavsRawPt[centbin]->Fill(jet->Pt(),jet->Area());
9993af2d 322 if (jet->Area()<fAreacut)
020052e4 323 continue;
324 //prevents 0 area jets from sneaking by when area cut == 0
325 if (jet->Area()==0)
326 continue;
6802bfed 327 if (jet->Pt()==0)
328 continue;
329 if (jet->MaxTrackPt()>100)
330 continue;
020052e4 331 fHistRawJetPt[centbin]->Fill(jet->Pt());
332
333 NjetAcc++;
9993af2d 334 Double_t Z;
335 Double_t jetPt1 = -500;
336 Double_t jetPt2 = -500;
337 Double_t jetPt3 = -500;
6802bfed 338 jetPt1 = jet->Pt()-jet->Area()*rho1;
339 jetPt2 = jet->Pt()-jet->Area()*rho2;
340 jetPt3 = jet->Pt()-jet->Area()*rho3;
9993af2d 341 if (( rho1>0 ) && ( rho2>0 ))
342 fHistDeltaJetPt12vsCent->Fill(fCent,jetPt1-jetPt2);
343 if (( rho1>0 ) && ( rho3>0 ))
344 fHistDeltaJetPt13vsCent->Fill(fCent,jetPt1-jetPt3);
345 if (( rho2>0 ) && ( rho3>0 ))
346 fHistDeltaJetPt23vsCent->Fill(fCent,jetPt2-jetPt3);
347
348 if (lJetPt < jetPt2) {
020052e4 349 lJetPt= jetPt2;
350 lJetPtun = jet->Pt();
351 }
6802bfed 352
353 Z = jet->MaxTrackPt();
354
74ec9ac9 355 fHistNEFvsPt[centbin][0]->Fill(jet->Pt(),jet->NEF());
6172360f 356 fHistZvsPt[centbin][0]->Fill(jet->Pt(),Z/jet->Pt());
357 fHistZchvsPt[centbin][0]->Fill(jet->Pt(),jet->MaxTrackPt()/jet->Pt());
358 fHistZemvsPt[centbin][0]->Fill(jet->Pt(),jet->MaxClusterPt()/jet->Pt());
74ec9ac9 359 fHistJetPt[centbin][0]->Fill(jet->Pt());
360 fHistNconsvsPt[centbin][0]->Fill(jet->Pt(),jet->N());
6802bfed 361 if (jet->MaxTrackPt()>3)
362 fHistJetPt3[centbin][0]->Fill(jet->Pt());
363 if (jet->MaxTrackPt()>5)
6172360f 364 fHistJetPt5[centbin][0]->Fill(jet->Pt());
6802bfed 365 if (jet->MaxTrackPt()>7)
6172360f 366 fHistJetPt7[centbin][0]->Fill(jet->Pt());
6802bfed 367 if (jet->MaxTrackPt()>9)
368 fHistJetPt9[centbin][0]->Fill(jet->Pt());
369
370 if (jetPt1!=0){
371 fHistNEFvsPt[centbin][1]->Fill(jetPt1,jet->NEF());
372 fHistZvsPt[centbin][1]->Fill(jetPt1,Z/jetPt1);
373 fHistZchvsPt[centbin][1]->Fill(jetPt1,jet->MaxTrackPt()/jetPt1);
374 fHistZemvsPt[centbin][1]->Fill(jetPt1,jet->MaxClusterPt()/jetPt1);
375 fHistJetPt[centbin][1]->Fill(jetPt1);
376 fHistNconsvsPt[centbin][1]->Fill(jetPt1,jet->N());
377 if (jet->MaxTrackPt()>3)
378 fHistJetPt3[centbin][1]->Fill(jetPt1);
379 if (jet->MaxTrackPt()>5)
380 fHistJetPt5[centbin][1]->Fill(jetPt1);
381 if (jet->MaxTrackPt()>7)
382 fHistJetPt7[centbin][1]->Fill(jetPt1);
383 if (jet->MaxTrackPt()>9)
384 fHistJetPt9[centbin][1]->Fill(jetPt1);}
385
386 if (jetPt2!=0){
387 fHistNEFvsPt[centbin][2]->Fill(jetPt2,jet->NEF());
388 fHistZvsPt[centbin][2]->Fill(jetPt2,Z/jetPt2);
389 fHistZchvsPt[centbin][2]->Fill(jetPt2,jet->MaxTrackPt()/jetPt2);
390 fHistZemvsPt[centbin][2]->Fill(jetPt2,jet->MaxClusterPt()/jetPt2);
391 fHistJetPt[centbin][2]->Fill(jetPt2);
392 fHistNconsvsPt[centbin][2]->Fill(jetPt2,jet->N());
393 if (jet->MaxTrackPt()>3)
394 fHistJetPt3[centbin][2]->Fill(jetPt2);
395 if (jet->MaxTrackPt()>5)
396 fHistJetPt5[centbin][2]->Fill(jetPt2);
397 if (jet->MaxTrackPt()>7)
398 fHistJetPt7[centbin][2]->Fill(jetPt2);
399 if (jet->MaxTrackPt()>9)
400 fHistJetPt9[centbin][2]->Fill(jetPt2);}
401
402 if (jetPt3!=0){
403 fHistNEFvsPt[centbin][3]->Fill(jetPt3,jet->NEF());
404 fHistZvsPt[centbin][3]->Fill(jetPt3,Z/jetPt3);
405 fHistZchvsPt[centbin][3]->Fill(jetPt3,jet->MaxTrackPt()/jetPt3);
406 fHistZemvsPt[centbin][3]->Fill(jetPt3,jet->MaxClusterPt()/jetPt3);
407 fHistJetPt[centbin][3]->Fill(jetPt3);
408 fHistNconsvsPt[centbin][3]->Fill(jetPt3,jet->N());
409 if (jet->MaxTrackPt()>3)
410 fHistJetPt3[centbin][3]->Fill(jetPt3);
411 if (jet->MaxTrackPt()>5)
412 fHistJetPt5[centbin][3]->Fill(jetPt3);
413 if (jet->MaxTrackPt()>7)
414 fHistJetPt7[centbin][3]->Fill(jetPt3);
415 if (jet->MaxTrackPt()>9)
416 fHistJetPt9[centbin][3]->Fill(jetPt3);}
020052e4 417 }
6802bfed 418
020052e4 419 PostData(1, fOutputList);
420}
421
422//________________________________________________________________________
423void AliAnalysisTaskEmcalJetSpectra::Terminate(Option_t *)
424{
9993af2d 425 // Called once at the end of the analysis.
020052e4 426}
427
428