]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG/EMCAL/AliEmcalTrackPropagatorTask.cxx
Make the EMCal trigger 1024 adc bug rejection optional (now *disabled* by default...
[u/mrichter/AliRoot.git] / PWG / EMCAL / AliEmcalTrackPropagatorTask.cxx
CommitLineData
5f2a3bf7 1// $Id: AliEmcalTrackPropagatorTask.cxx | Mon Dec 9 12:59:28 2013 +0100 | Constantin Loizides $
6ea93b32 2//
3// Task to propagate tracks to EMCAL surface.
4//
cd231d42 5// Author: C.Loizides
6ea93b32 6
5f2a3bf7 7#include "AliEmcalTrackPropagatorTask.h"
6ea93b32 8#include <TClonesArray.h>
5f2a3bf7 9#include "AliAODEvent.h"
6ea93b32 10#include "AliAnalysisManager.h"
11#include "AliEMCALRecoUtils.h"
12#include "AliESDEvent.h"
6ea93b32 13
14ClassImp(AliEmcalTrackPropagatorTask)
15
16//________________________________________________________________________
17AliEmcalTrackPropagatorTask::AliEmcalTrackPropagatorTask() :
27fde6c7 18 AliAnalysisTaskSE("AliEmcalTrackPropagatorTask"),
5f2a3bf7 19 fTracksInName(),
20 fTracksOutName(),
af2f024d 21 fDist(440),
5f2a3bf7 22 fOnlyIfNotSet(kTRUE),
23 fTracksIn(0),
24 fTracksOut(0)
6ea93b32 25{
26 // Constructor.
27}
28
29//________________________________________________________________________
30AliEmcalTrackPropagatorTask::AliEmcalTrackPropagatorTask(const char *name) :
27fde6c7 31 AliAnalysisTaskSE("AliEmcalTrackPropagatorTask"),
5f2a3bf7 32 fTracksInName(),
33 fTracksOutName(),
af2f024d 34 fDist(440),
5f2a3bf7 35 fOnlyIfNotSet(kTRUE),
36 fTracksIn(0),
37 fTracksOut(0)
6ea93b32 38{
39 // Constructor.
27fde6c7 40
41 if (!name)
42 return;
43
44 SetName(name);
45
6ea93b32 46 fBranchNames = "ESD:AliESDHeader.,Tracks";
47}
48
49//________________________________________________________________________
50AliEmcalTrackPropagatorTask::~AliEmcalTrackPropagatorTask()
51{
a7985532 52 // Destructor.
6ea93b32 53}
54
55//________________________________________________________________________
56void AliEmcalTrackPropagatorTask::UserCreateOutputObjects()
57{
5f2a3bf7 58 // User create output objects.
6ea93b32 59}
60
61//________________________________________________________________________
62void AliEmcalTrackPropagatorTask::UserExec(Option_t *)
63{
64 // Main loop, called for each event.
65
5f2a3bf7 66 AliESDEvent *esdev = dynamic_cast<AliESDEvent*>(InputEvent());
67 AliAODEvent *aodev = 0;
68 if (!esdev) {
69 aodev = dynamic_cast<AliAODEvent*>(InputEvent());
70 if (!aodev) {
71 AliError("Task needs AOD or ESD event, returning");
72 return;
73 }
74 }
75
76 if (fTracksInName.Length()==0) {
77 if (esdev) {
78 fTracksInName = "Tracks";
79 } else {
80 fTracksInName = "tracks";
81 }
6ea93b32 82 }
83
84 AliAnalysisManager *am = AliAnalysisManager::GetAnalysisManager();
85 if (!am) {
86 AliError("Manager zero, returning");
87 return;
88 }
5f2a3bf7 89 if (fTracksInName == "Tracks")
6ea93b32 90 am->LoadBranch("Tracks");
5f2a3bf7 91 else if (fTracksInName == "tracks")
92 am->LoadBranch("tracks");
93
94 if (!fTracksIn) {
95 fTracksIn = dynamic_cast<TClonesArray*>((InputEvent()->FindListObject(fTracksInName)));
96 if (!fTracksIn) {
97 AliError(Form("Could not get tracks %s, returning", fTracksInName.Data()));
98 return;
99 }
6ea93b32 100 }
101
5f2a3bf7 102 if ((fTracksOutName.Length()>0) && !fTracksOut) {
103 if ((InputEvent()->FindListObject(fTracksOutName))) {
104 AliError(Form("Could not add tracks %s to event, returning", fTracksOutName.Data()));
105 return;
af2f024d 106 }
5f2a3bf7 107 if (esdev)
18a566f2 108 fTracksOut = new TClonesArray("AliESDtrack");
5f2a3bf7 109 else
94b25737 110 fTracksOut = new TClonesArray("AliAODTrack");
5f2a3bf7 111 fTracksOut->SetName(fTracksOutName);
112 InputEvent()->AddObject(fTracksOut);
113 }
6ea93b32 114
5f2a3bf7 115 const Int_t ntr = fTracksIn->GetEntries();
116 for (Int_t i=0; i<ntr; ++i) {
117 AliVTrack *inTrack = dynamic_cast<AliVTrack*>(fTracksIn->At(i));
118 if (!inTrack)
6ea93b32 119 continue;
5f2a3bf7 120 if (inTrack->IsExtrapolatedToEMCAL() && fOnlyIfNotSet)
6c11816d 121 continue;
5f2a3bf7 122 AliVTrack *outTrack = inTrack;
123 if (fTracksOut) {
124 if (esdev)
125 outTrack = new ((*fTracksOut)[i]) AliESDtrack(*((AliESDtrack*)inTrack));
126 else
127 outTrack = new ((*fTracksOut)[i]) AliAODTrack(*((AliAODTrack*)inTrack));
128 }
129 AliEMCALRecoUtils::ExtrapolateTrackToEMCalSurface(outTrack,fDist);
6ea93b32 130 }
131}