22 #include <TClonesArray.h>
26 #include "AliESDEvent.h"
27 #include "AliESDtrack.h"
28 #include "AliESDtrackCuts.h"
30 #include "AliPicoTrack.h"
35 namespace EMCalTriggerPtAnalysis {
38 AliEMCalPtTaskTrackSelectionESD::AliEMCalPtTaskTrackSelectionESD():
39 AliEMCalPtTaskVTrackSelection(),
48 AliEMCalPtTaskTrackSelectionESD::AliEMCalPtTaskTrackSelectionESD(AliESDtrackCuts* cuts):
49 AliEMCalPtTaskVTrackSelection(),
58 AliEMCalPtTaskTrackSelectionESD::AliEMCalPtTaskTrackSelectionESD(
59 const AliEMCalPtTaskTrackSelectionESD& ref):
60 AliEMCalPtTaskVTrackSelection(ref),
66 if(ref.fTrackCuts) fTrackCuts =
new AliESDtrackCuts(*(ref.fTrackCuts));
70 AliEMCalPtTaskTrackSelectionESD& AliEMCalPtTaskTrackSelectionESD::operator=(
71 const AliEMCalPtTaskTrackSelectionESD& ref)
76 AliEMCalPtTaskVTrackSelection::operator=(ref);
82 if(ref.fTrackCuts) fTrackCuts =
new AliESDtrackCuts(*(ref.fTrackCuts));
88 AliEMCalPtTaskTrackSelectionESD::~AliEMCalPtTaskTrackSelectionESD() {
92 if(fTrackCuts)
delete fTrackCuts;
96 TObjArray* AliEMCalPtTaskTrackSelectionESD::GetAcceptedTracks(
97 const TClonesArray*
const tracks) {
104 if(!fListOfTracks) fListOfTracks =
new TObjArray;
105 else fListOfTracks->Clear();
107 AliError(
"Track cuts not provided");
108 return fListOfTracks;
110 TIter trackIter(tracks);
111 AliESDtrack *track(NULL);
112 AliPicoTrack *picoTrack(NULL);
113 TObject *containerObject(NULL);
114 while((containerObject = dynamic_cast<TObject *>(trackIter()))){
116 if((picoTrack = dynamic_cast<AliPicoTrack *>(containerObject)))
117 track =
dynamic_cast<AliESDtrack *
>(picoTrack->GetTrack());
119 track =
dynamic_cast<AliESDtrack *
>(containerObject);
120 if(fTrackCuts->AcceptTrack(track)) fListOfTracks->AddLast(track);
122 return fListOfTracks;
128 TObjArray* AliEMCalPtTaskTrackSelectionESD::GetAcceptedTracks(
const AliVEvent*
const event) {
135 if(!fListOfTracks) fListOfTracks =
new TObjArray;
136 else fListOfTracks->Clear();
138 AliError(
"Track cuts not provided");
139 return fListOfTracks;
141 const AliESDEvent *esd =
dynamic_cast<const AliESDEvent *
>(event);
143 AliError(
"Event not of type AliESDEvent");
144 return fListOfTracks;
146 std::auto_ptr<TObjArray> accepted(fTrackCuts->GetAcceptedTracks(esd));
147 TIter trackIter(accepted.get());
148 AliESDtrack *track(NULL);
149 while((track = dynamic_cast<AliESDtrack *>(trackIter()))){
150 fListOfTracks->AddLast(track);
152 return fListOfTracks;
156 bool AliEMCalPtTaskTrackSelectionESD::IsTrackAccepted(AliVTrack*
const trk) {
163 AliESDtrack *esdt =
dynamic_cast<AliESDtrack *
>(trk);
165 AliPicoTrack *picoTrack =
dynamic_cast<AliPicoTrack *
>(trk);
167 esdt =
dynamic_cast<AliESDtrack*
>(picoTrack->GetTrack());
169 AliError(
"Neither Pico nor ESD track");
173 return fTrackCuts->AcceptTrack(esdt);
ClassImp(EMCalTriggerPtAnalysis::AliEMCalPtTaskTrackSelectionESD) namespace EMCalTriggerPtAnalysis