]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGJE/EMCALJetTasks/AliAnalysisTaskEmcalJet.cxx
remove unneccassary TStopWatch
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / AliAnalysisTaskEmcalJet.cxx
CommitLineData
8628b70c 1// $Id$
a546db49 2//
3// Emcal jet analysis base task.
4//
9239b066 5// Author: S.Aiola, M. Verweij
a546db49 6
7#include "AliAnalysisTaskEmcalJet.h"
8
a546db49 9#include <TClonesArray.h>
10#include <TList.h>
11
a546db49 12#include "AliAnalysisManager.h"
13#include "AliCentrality.h"
8f3e275e 14#include "AliEMCALGeometry.h"
15#include "AliESDEvent.h"
a546db49 16#include "AliEmcalJet.h"
a546db49 17#include "AliLog.h"
e2c9f708 18#include "AliRhoParameter.h"
7dd1eeea 19#include "AliLocalRhoParameter.h"
8f3e275e 20#include "AliVCluster.h"
21#include "AliVEventHandler.h"
22#include "AliVParticle.h"
9239b066 23#include "AliJetContainer.h"
a546db49 24
25ClassImp(AliAnalysisTaskEmcalJet)
26
27//________________________________________________________________________
28AliAnalysisTaskEmcalJet::AliAnalysisTaskEmcalJet() :
29 AliAnalysisTaskEmcal("AliAnalysisTaskEmcalJet"),
a487deae 30 fRhoName(),
7dd1eeea 31 fLocalRhoName(),
9239b066 32 fJetCollArray(),
a487deae 33 fJets(0),
34 fRho(0),
7dd1eeea 35 fLocalRho(0),
a487deae 36 fRhoVal(0)
a546db49 37{
38 // Default constructor.
9239b066 39
40 fJetCollArray.SetOwner(kTRUE);
a546db49 41}
42
a546db49 43//________________________________________________________________________
44AliAnalysisTaskEmcalJet::AliAnalysisTaskEmcalJet(const char *name, Bool_t histo) :
45 AliAnalysisTaskEmcal(name, histo),
a487deae 46 fRhoName(),
7dd1eeea 47 fLocalRhoName(),
9239b066 48 fJetCollArray(),
a487deae 49 fJets(0),
50 fRho(0),
7dd1eeea 51 fLocalRho(0),
a487deae 52 fRhoVal(0)
a546db49 53{
54 // Standard constructor.
9239b066 55
56 fJetCollArray.SetOwner(kTRUE);
a546db49 57}
58
59//________________________________________________________________________
60AliAnalysisTaskEmcalJet::~AliAnalysisTaskEmcalJet()
61{
62 // Destructor
63}
64
2bddb6ae 65//________________________________________________________________________
9239b066 66Bool_t AliAnalysisTaskEmcalJet::AcceptBiasJet(AliEmcalJet *jet, Int_t c)
2bddb6ae 67{
76bc10fe 68 // Accept jet with a bias.
69
9239b066 70 AliJetContainer *cont = GetJetContainer(c);
71 if(!cont) {
72 AliError(Form("%s:Container %d not found",GetName(),c));
73 return 0;
83888eef 74 }
75
9239b066 76 return cont->AcceptBiasJet(jet);
83888eef 77}
78
79//________________________________________________________________________
80Float_t* AliAnalysisTaskEmcalJet::GenerateFixedBinArray(Int_t n, Float_t min, Float_t max) const
81{
82 Float_t *bins = new Float_t[n+1];
83
84 Float_t binWidth = (max-min)/n;
85 bins[0] = min;
86 for (Int_t i = 1; i <= n; i++) {
87 bins[i] = bins[i-1]+binWidth;
88 }
89
90 return bins;
91}
92
93//________________________________________________________________________
9239b066 94Double_t AliAnalysisTaskEmcalJet::GetLeadingHadronPt(AliEmcalJet *jet, Int_t c)
83888eef 95{
9239b066 96
97 AliJetContainer *cont = GetJetContainer(c);
98 if(!cont) {
99 AliError(Form("%s:Container %d not found",GetName(),c));
100 return 0;
101 }
102
103 return cont->GetLeadingHadronPt(jet);
2bddb6ae 104}
105
a546db49 106//________________________________________________________________________
9239b066 107Bool_t AliAnalysisTaskEmcalJet::AcceptJet(AliEmcalJet *jet, Int_t c)
a546db49 108{
109 // Return true if jet is accepted.
2103dc6a 110 if (!jet)
111 return kFALSE;
112
9239b066 113 AliJetContainer *cont = GetJetContainer(c);
114 if(!cont) {
115 AliError(Form("%s:Container %d not found",GetName(),c));
116 return 0;
117 }
85d48773 118
9239b066 119 return cont->AcceptJet(jet);
1f6fff78 120}
121
e2c9f708 122//________________________________________________________________________
123AliRhoParameter *AliAnalysisTaskEmcalJet::GetRhoFromEvent(const char *name)
124{
125 // Get rho from event.
126
127 AliRhoParameter *rho = 0;
128 TString sname(name);
129 if (!sname.IsNull()) {
130 rho = dynamic_cast<AliRhoParameter*>(InputEvent()->FindListObject(sname));
131 if (!rho) {
132 AliWarning(Form("%s: Could not retrieve rho with name %s!", GetName(), name));
133 return 0;
134 }
135 }
136 return rho;
137}
9239b066 138
7dd1eeea 139//________________________________________________________________________
140AliLocalRhoParameter *AliAnalysisTaskEmcalJet::GetLocalRhoFromEvent(const char *name)
141{
142 // Get local rho from event.
143 AliLocalRhoParameter *rho = 0;
144 TString sname(name);
145 if (!sname.IsNull()) {
146 rho = dynamic_cast<AliLocalRhoParameter*>(InputEvent()->FindListObject(sname));
147 if (!rho) {
9239b066 148 AliWarning(Form("%s: Could not retrieve local rho with name %s!", GetName(), name));
7dd1eeea 149 return 0;
150 }
151 }
152 return rho;
153}
9239b066 154
155
1f6fff78 156//________________________________________________________________________
abc24170 157void AliAnalysisTaskEmcalJet::ExecOnce()
1f6fff78 158{
159 // Init the analysis.
160
a487deae 161 AliAnalysisTaskEmcal::ExecOnce();
162
9239b066 163 if (!fRhoName.IsNull() && !fRho) { // get rho from the event
a487deae 164 fRho = dynamic_cast<AliRhoParameter*>(InputEvent()->FindListObject(fRhoName));
165 if (!fRho) {
166 AliError(Form("%s: Could not retrieve rho %s!", GetName(), fRhoName.Data()));
167 fInitialized = kFALSE;
168 return;
169 }
170 }
171
7dd1eeea 172 if (!fLocalRhoName.IsNull() && !fLocalRho) {
173 fLocalRho = dynamic_cast<AliLocalRhoParameter*>(InputEvent()->FindListObject(fLocalRhoName));
174 if (!fLocalRho) {
175 AliError(Form("%s: Could not retrieve local rho %s!", GetName(), fLocalRhoName.Data()));
176 fInitialized = kFALSE;
177 return;
178 }
179 }
180
9239b066 181 //Load all requested jet branches - each container knows name already
182 if(fJetCollArray.GetEntriesFast()==0) {
183 AliWarning("There are no jet collections");
184 return;
1f6fff78 185 }
a487deae 186
9239b066 187 for(Int_t i =0; i<fJetCollArray.GetEntriesFast(); i++) {
188 AliJetContainer *cont = static_cast<AliJetContainer*>(fJetCollArray.At(i));
189 cont->SetRunNumber(InputEvent()->GetRunNumber());
190 cont->SetEMCALGeometry();
191 cont->SetArray(InputEvent());
192 cont->LoadRho(InputEvent());
a487deae 193 }
194
9239b066 195 //Get Jets, cuts and rho for first jet container
196 AliJetContainer *cont = GetJetContainer(0);
197
198 if (!cont->GetArrayName().IsNull()) {
199 fJets = cont->GetArray();
200 if(!fJets && fJetCollArray.GetEntriesFast()>0) {
201 AliError(Form("%s: Could not retrieve first jet branch!", GetName()));
202 fInitialized = kFALSE;
203 return;
a487deae 204 }
205 }
206
9239b066 207 if (!fRho) { // if rho name is not provided, tries to use the rho object of the first jet branch
208 fRhoName = cont->GetRhoName();
209 fRho = cont->GetRhoParameter();
a487deae 210 }
1f6fff78 211}
212
213//________________________________________________________________________
76bc10fe 214Bool_t AliAnalysisTaskEmcalJet::IsJetCluster(AliEmcalJet* jet, Int_t iclus, Bool_t sorted) const
215{
216 // Return true if cluster is in jet.
217
218 for (Int_t i = 0; i < jet->GetNumberOfClusters(); ++i) {
219 Int_t ijetclus = jet->ClusterAt(i);
220 if (sorted && ijetclus > iclus)
221 return kFALSE;
222 if (ijetclus == iclus)
223 return kTRUE;
224 }
225 return kFALSE;
226}
227
228//________________________________________________________________________
229Bool_t AliAnalysisTaskEmcalJet::IsJetTrack(AliEmcalJet* jet, Int_t itrack, Bool_t sorted) const
230{
231 // Return true if track is in jet.
232
233 for (Int_t i = 0; i < jet->GetNumberOfTracks(); ++i) {
234 Int_t ijettrack = jet->TrackAt(i);
235 if (sorted && ijettrack > itrack)
236 return kFALSE;
237 if (ijettrack == itrack)
238 return kTRUE;
239 }
240 return kFALSE;
241}
242
243//________________________________________________________________________
244Bool_t AliAnalysisTaskEmcalJet::RetrieveEventObjects()
1f6fff78 245{
76bc10fe 246 // Retrieve objects from event.
1f6fff78 247
76bc10fe 248 if (!AliAnalysisTaskEmcal::RetrieveEventObjects())
249 return kFALSE;
250
a487deae 251 if (fRho)
252 fRhoVal = fRho->GetVal();
76bc10fe 253
254 return kTRUE;
a546db49 255}
9239b066 256
257//________________________________________________________________________
258AliJetContainer* AliAnalysisTaskEmcalJet::AddJetContainer(const char *n, TString defaultCutType, Float_t jetRadius) {
259
260 // Add particle container
261 // will be called in AddTask macro
262
263 TString tmp = TString(n);
264 if(tmp.IsNull()) return 0;
265
266 AliJetContainer *cont = 0x0;
267 cont = new AliJetContainer();
268 cont->SetArrayName(n);
269 cont->SetJetRadius(jetRadius);
270
271 defaultCutType.ToUpper();
272
273 if(!defaultCutType.IsNull() && !defaultCutType.EqualTo("USER")) {
274 if(defaultCutType.EqualTo("TPC"))
275 cont->SetJetAcceptanceType(AliJetContainer::kTPC);
276 else if(defaultCutType.EqualTo("EMCAL"))
277 cont->SetJetAcceptanceType(AliJetContainer::kEMCAL);
278 else
279 AliWarning(Form("%s: default cut type %s not recognized. Not setting cuts.",GetName(),defaultCutType.Data()));
280 } else
281 cont->SetJetAcceptanceType(AliJetContainer::kUser);
282
283 fJetCollArray.Add(cont);
284
285 return cont;
286}
287
288//________________________________________________________________________
289AliJetContainer* AliAnalysisTaskEmcalJet::GetJetContainer(Int_t i) const{
290 // Get i^th jet container
291
292 if(i<0 || i>=fJetCollArray.GetEntriesFast()) return 0;
293 AliJetContainer *cont = static_cast<AliJetContainer*>(fJetCollArray.At(i));
294 return cont;
295}
296
297//________________________________________________________________________
298AliJetContainer* AliAnalysisTaskEmcalJet::GetJetContainer(const char* name) const{
299 // Get the jet container with name
300
301 AliJetContainer *cont = static_cast<AliJetContainer*>(fJetCollArray.FindObject(name));
302 return cont;
303}
304
305//________________________________________________________________________
306void AliAnalysisTaskEmcalJet::SetJetAcceptanceType(UInt_t t, Int_t c)
307{
308 // Set acceptance cuts
309 AliJetContainer *cont = GetJetContainer(c);
310 if (cont) {
311 cont->SetJetAcceptanceType((AliJetContainer::JetAcceptanceType)t);
312 }
313 else {
314 AliError(Form("%s in SetJetAcceptanceType(...): container %d not found!",GetName(),c));
315 }
316}
317
318//________________________________________________________________________
319void AliAnalysisTaskEmcalJet::SetJetAcceptanceType(TString cutType, Int_t c) {
320 //set acceptance cuts
321
322 AliJetContainer *cont = GetJetContainer(c);
323 if (!cont) {
324 AliError(Form("%s in SetJetAcceptanceType(...): container %d not found",GetName(),c));
325 return;
326 }
327
328 cutType.ToUpper();
329
330 if(!cutType.IsNull() && !cutType.EqualTo("USER")) {
331 if(cutType.EqualTo("TPC"))
332 cont->SetJetAcceptanceType(AliJetContainer::kTPC);
333 else if(cutType.EqualTo("EMCAL"))
334 cont->SetJetAcceptanceType(AliJetContainer::kEMCAL);
335 else
336 AliWarning(Form("%s: default cut type %s not recognized. Not setting cuts.",GetName(),cutType.Data()));
337 } else
338 cont->SetJetAcceptanceType(AliJetContainer::kUser);
339}
340
341//________________________________________________________________________
342void AliAnalysisTaskEmcalJet::SetRhoName(const char *n, Int_t c)
343{
344 if (c >= 0) {
345 AliJetContainer *cont = GetJetContainer(c);
346 if (cont) cont->SetRhoName(n);
347 else AliError(Form("%s in SetRhoName(...): container %d not found",GetName(),c));
348 }
349 else {
350 fRhoName = n;
351 }
352}
353
354//________________________________________________________________________
355void AliAnalysisTaskEmcalJet::SetJetEtaLimits(Float_t min, Float_t max, Int_t c)
356{
357 AliJetContainer *cont = GetJetContainer(c);
358 if (cont) cont->SetJetEtaLimits(min,max);
359 else AliError(Form("%s in SetJetEtaLimits(...): container %d not found",GetName(),c));
360}
361
362//________________________________________________________________________
363void AliAnalysisTaskEmcalJet::SetJetPhiLimits(Float_t min, Float_t max, Int_t c)
364{
365 AliJetContainer *cont = GetJetContainer(c);
366 if (cont) cont->SetJetPhiLimits(min,max);
367 else AliError(Form("%s in SetJetPhiLimits(...): container %d not found",GetName(),c));
368}
369
370//________________________________________________________________________
371void AliAnalysisTaskEmcalJet::SetJetAreaCut(Float_t cut, Int_t c)
372{
373 AliJetContainer *cont = GetJetContainer(c);
374 if (cont) cont->SetJetAreaCut(cut);
375 else AliError(Form("%s in SetJetAreaCut(...): container %d not found",GetName(),c));
376}
377
378//________________________________________________________________________
379void AliAnalysisTaskEmcalJet::SetPercAreaCut(Float_t p, Int_t c)
380{
381 AliJetContainer *cont = GetJetContainer(c);
382 if (cont) cont->SetPercAreaCut(p);
383 else AliError(Form("%s in SetPercAreaCut(...): container %d not found",GetName(),c));
384}
385
386//________________________________________________________________________
387void AliAnalysisTaskEmcalJet::SetZLeadingCut(Float_t zemc, Float_t zch, Int_t c)
388{
389 AliJetContainer *cont = GetJetContainer(c);
390 if (cont) cont->SetZLeadingCut(zemc,zch);
391 else AliError(Form("%s in SetZLeadingCut(...): container %d not found",GetName(),c));
392}
393
394//________________________________________________________________________
395void AliAnalysisTaskEmcalJet::SetNEFCut(Float_t min, Float_t max, Int_t c)
396{
397 AliJetContainer *cont = GetJetContainer(c);
398 if (cont) cont->SetNEFCut(min,max);
399 else AliError(Form("%s in SetNEFCut(...): container %d not found",GetName(),c));
400}
401
402//________________________________________________________________________
403void AliAnalysisTaskEmcalJet::SetAreaEmcCut(Double_t a, Int_t c)
404{
405 AliJetContainer *cont = GetJetContainer(c);
406 if (cont) cont->SetAreaEmcCut(a);
407 else AliError(Form("%s in SetAreaEmcCut(...): container %d not found",GetName(),c));
408}
409
410//________________________________________________________________________
411void AliAnalysisTaskEmcalJet::SetJetPtCut(Float_t cut, Int_t c)
412{
413 AliJetContainer *cont = GetJetContainer(c);
414 if (cont) cont->SetJetPtCut(cut);
415 else AliError(Form("%s in SetJetPtCut(...): container %d not found",GetName(),c));
416}
417
418//________________________________________________________________________
419void AliAnalysisTaskEmcalJet::SetJetRadius(Float_t r, Int_t c)
420{
421 AliJetContainer *cont = GetJetContainer(c);
422 if (cont) cont->SetJetRadius(r);
423 else AliError(Form("%s in SetJetRadius(...): container %d not found",GetName(),c));
424}
425
426//________________________________________________________________________
427void AliAnalysisTaskEmcalJet::SetMaxClusterPt(Float_t cut, Int_t c)
428{
429 AliJetContainer *cont = GetJetContainer(c);
430 if (cont) cont->SetMaxClusterPt(cut);
431 else AliError(Form("%s in SetMaxClusterPt(...): container %d not found",GetName(),c));
432}
433
434//________________________________________________________________________
435void AliAnalysisTaskEmcalJet::SetMaxTrackPt(Float_t cut, Int_t c)
436{
437 AliJetContainer *cont = GetJetContainer(c);
438 if (cont) cont->SetMaxTrackPt(cut);
439 else AliError(Form("%s in SetMaxTrackPt(...): container %d not found",GetName(),c));
440}
441
442//________________________________________________________________________
443void AliAnalysisTaskEmcalJet::SetPtBiasJetClus(Float_t cut, Int_t c)
444{
445 AliJetContainer *cont = GetJetContainer(c);
446 if (cont) cont->SetPtBiasJetClus(cut);
447 else AliError(Form("%s in SetPtBiasJetClus(...): container %d not found",GetName(),c));
448}
449
450//________________________________________________________________________
451void AliAnalysisTaskEmcalJet::SetPtBiasJetTrack(Float_t cut, Int_t c)
452{
453 AliJetContainer *cont = GetJetContainer(c);
454 if (cont) cont->SetPtBiasJetTrack(cut);
455 else AliError(Form("%s in SetPtBiasJetTrack(...): container %d not found",GetName(),c));
456}
457
458//________________________________________________________________________
459void AliAnalysisTaskEmcalJet::SetLeadingHadronType(Int_t t, Int_t c)
460{
461 AliJetContainer *cont = GetJetContainer(c);
462 if (cont) cont->SetLeadingHadronType(t);
463 else AliError(Form("%s in SetLeadingHadronType(...): container %d not found",GetName(),c));
464}
465
466//________________________________________________________________________
467void AliAnalysisTaskEmcalJet::SetNLeadingJets(Int_t t, Int_t c)
468{
469 AliJetContainer *cont = GetJetContainer(c);
470 if (cont) cont->SetNLeadingJets(t);
471 else AliError(Form("%s in SetNLeadingJets(...): container %d not found",GetName(),c));
472}
473
474//________________________________________________________________________
475void AliAnalysisTaskEmcalJet::SetJetBitMap(UInt_t m, Int_t c)
476{
477 AliJetContainer *cont = GetJetContainer(c);
478 if (cont) cont->SetJetBitMap(m);
479 else AliError(Form("%s in SetJetBitMap(...): container %d not found",GetName(),c));
480}
481
482//________________________________________________________________________
483void AliAnalysisTaskEmcalJet::SetIsParticleLevel(Bool_t b, Int_t c)
484{
485 AliJetContainer *cont = GetJetContainer(c);
486 if (cont) cont->SetIsParticleLevel(b);
487 else AliError(Form("%s in SetIsParticleLevel(...): container %d not found",GetName(),c));
488}
489
490//________________________________________________________________________
491const TString& AliAnalysisTaskEmcalJet::GetRhoName(Int_t c) const
492{
493 if (c >= 0) {
494 AliJetContainer *cont = GetJetContainer(c);
495 if (cont) return cont->GetRhoName();
496 else { AliError(Form("%s in GetRhoName(...): container %d not found. Returning fRhoName...",GetName(),c)); return fRhoName; }
497 }
498 else {
499 return fRhoName;
500 }
501}
502
503//________________________________________________________________________
504TClonesArray* AliAnalysisTaskEmcalJet::GetJetArray(Int_t i) const {
505 // Get i^th TClonesArray with AliEmcalJet
506
507 AliJetContainer *cont = GetJetContainer(i);
508 if(!cont) {
509 AliError(Form("%s:Container %d not found",GetName(),i));
510 return 0;
511 }
512 return cont->GetArray();
513}
514
515//________________________________________________________________________
516Double_t AliAnalysisTaskEmcalJet::GetJetRadius(Int_t i) const {
517 // Get jet radius from jet container i
518
519 AliJetContainer *cont = GetJetContainer(i);
520 if(!cont) {
521 AliError(Form("%s:Container %d not found",GetName(),i));
522 return 0;
523 }
524
525 return cont->GetJetRadius();
526}
527
528//________________________________________________________________________
529AliEmcalJet* AliAnalysisTaskEmcalJet::GetJetFromArray(Int_t j, Int_t c) const {
530 // Get jet j if accepted from container c
531 // If jet not accepted return 0
532
533 AliJetContainer *cont = GetJetContainer(c);
534 if(!cont) {
535 AliError(Form("%s:Container %d not found",GetName(),c));
536 return 0;
537 }
538 AliEmcalJet *jet = cont->GetJet(j);
539
540 return jet;
541}
542
543//________________________________________________________________________
544AliEmcalJet* AliAnalysisTaskEmcalJet::GetAcceptJetFromArray(Int_t j, Int_t c) const {
545 // Get jet j if accepted from container c
546 // If jet not accepted return 0
547
548 AliJetContainer *cont = GetJetContainer(c);
549 if(!cont) {
550 AliError(Form("%s:Container %d not found",GetName(),c));
551 return 0;
552 }
553 AliEmcalJet *jet = cont->GetAcceptJet(j);
554
555 return jet;
556}
557
558//________________________________________________________________________
559Int_t AliAnalysisTaskEmcalJet::GetNJets(Int_t i) const {
560 // Get number of entries in jet array i
561
562 AliJetContainer *cont = GetJetContainer(i);
563 if(!cont) {
564 AliError(Form("%s:Container %d not found",GetName(),i));
565 return 0;
566 }
567 return cont->GetNJets();
568
569}
570
571//________________________________________________________________________
572Double_t AliAnalysisTaskEmcalJet::GetRhoVal(Int_t i) const {
573 // Get rho corresponding to jet array i
574
575 AliJetContainer *cont = GetJetContainer(i);
576 if(!cont) {
577 AliError(Form("%s:Container %d not found",GetName(),i));
578 return 0;
579 }
580 return cont->GetRhoVal();
581}