]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG/EMCAL/AliEmcalPicoTrackMaker.cxx
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / PWG / EMCAL / AliEmcalPicoTrackMaker.cxx
CommitLineData
980821ba 1// $Id$
680855e5 2//
3// Class to make PicoTracks in AOD/ESD events.
4//
cd231d42 5// Author: S.Aiola, C.Loizides
680855e5 6
7#include <TClonesArray.h>
11d18b51 8#include <TRandom3.h>
a070db7d 9#include "AliAODEvent.h"
680855e5 10#include "AliAODTrack.h"
a070db7d 11#include "AliAnalysisManager.h"
680855e5 12#include "AliESDtrack.h"
13#include "AliESDtrackCuts.h"
cc67ea22 14#include "AliEmcalPicoTrackMaker.h"
680855e5 15#include "AliLog.h"
a070db7d 16#include "AliPicoTrack.h"
17#include "AliVTrack.h"
680855e5 18
19ClassImp(AliEmcalPicoTrackMaker)
20
21//________________________________________________________________________
22AliEmcalPicoTrackMaker::AliEmcalPicoTrackMaker() :
23 AliAnalysisTaskSE("AliEmcalPicoTrackMaker"),
680855e5 24 fTracksOutName("PicoTracks"),
25 fTracksInName("tracks"),
9733b37f 26 fMinTrackPt(0),
11d18b51 27 fMaxTrackPt(1000),
d2343e15 28 fMinTrackEta(-10),
29 fMaxTrackEta(10),
9733b37f 30 fMinTrackPhi(-10),
31 fMaxTrackPhi(10),
11d18b51 32 fTrackEfficiency(1),
680855e5 33 fTracksIn(0),
34 fTracksOut(0)
35{
36 // Constructor.
ab292aef 37
1187666b 38 fAODfilterBits[0] = -1;
39 fAODfilterBits[1] = -1;
680855e5 40}
41
42//________________________________________________________________________
43AliEmcalPicoTrackMaker::AliEmcalPicoTrackMaker(const char *name) :
a070db7d 44 AliAnalysisTaskSE(name),
680855e5 45 fTracksOutName("PicoTracks"),
46 fTracksInName("tracks"),
9733b37f 47 fMinTrackPt(0),
11d18b51 48 fMaxTrackPt(1000),
d2343e15 49 fMinTrackEta(-10),
50 fMaxTrackEta(10),
9733b37f 51 fMinTrackPhi(-10),
52 fMaxTrackPhi(10),
11d18b51 53 fTrackEfficiency(1),
680855e5 54 fTracksIn(0),
55 fTracksOut(0)
56{
57 // Constructor.
58
1187666b 59 fAODfilterBits[0] = -1;
60 fAODfilterBits[1] = -1;
680855e5 61 fBranchNames = "ESD:AliESDHeader.,AliESDRun.,SPDVertex.,Tracks";
62}
63
64//________________________________________________________________________
65AliEmcalPicoTrackMaker::~AliEmcalPicoTrackMaker()
66{
a070db7d 67 // Destructor.
680855e5 68}
69
70//________________________________________________________________________
71void AliEmcalPicoTrackMaker::UserCreateOutputObjects()
72{
a070db7d 73 // Create my user objects.
680855e5 74
75 fTracksOut = new TClonesArray("AliPicoTrack");
76 fTracksOut->SetName(fTracksOutName);
77}
78
79//________________________________________________________________________
80void AliEmcalPicoTrackMaker::UserExec(Option_t *)
81{
82 // Main loop, called for each event.
83
84 AliAnalysisManager *am = AliAnalysisManager::GetAnalysisManager();
85 if (!am) {
86 AliError("Manager zero, returning");
87 return;
88 }
89
a070db7d 90 // retrieve tracks from input.
e44e8726 91 if (!fTracksIn) {
92 fTracksIn = dynamic_cast<TClonesArray*>(InputEvent()->FindListObject(fTracksInName));
93 if (!fTracksIn) {
94 AliError(Form("Could not retrieve tracks %s!", fTracksInName.Data()));
95 return;
96 }
97 if (!fTracksIn->GetClass()->GetBaseClass("AliVParticle")) {
98 AliError(Form("%s: Collection %s does not contain AliVParticle objects!", GetName(), fTracksInName.Data()));
99 return;
100 }
a070db7d 101 }
102
103 // add tracks to event if not yet there
71c1dd76 104 fTracksOut->Delete();
c4a9715d 105 if (!(InputEvent()->FindListObject(fTracksOutName))) {
680855e5 106 InputEvent()->AddObject(fTracksOut);
c4a9715d 107 }
c4a9715d 108
a070db7d 109 // loop over tracks
110 const Int_t Ntracks = fTracksIn->GetEntriesFast();
680855e5 111 for (Int_t iTracks = 0, nacc = 0; iTracks < Ntracks; ++iTracks) {
85fbcc1d 112
e44e8726 113 AliVTrack *track = static_cast<AliVTrack*>(fTracksIn->At(iTracks));
85fbcc1d 114
a070db7d 115 if (!track)
680855e5 116 continue;
85fbcc1d 117
9733b37f 118 if (track->Pt() > fMaxTrackPt || track->Pt() < fMinTrackPt)
119 continue;
120
121 if (track->Eta() < fMinTrackEta || track->Eta() > fMaxTrackEta ||
122 track->Phi() < fMinTrackPhi || track->Phi() > fMaxTrackPhi)
85fbcc1d 123 continue;
11d18b51 124
11d18b51 125 if (fTrackEfficiency < 1) {
126 Double_t r = gRandom->Rndm();
127 if (fTrackEfficiency < r)
128 continue;
129 }
130
b3bef4aa 131 Bool_t isEmc = kFALSE;
132 if (TMath::Abs(track->GetTrackEtaOnEMCal()) < 0.75 &&
133 track->GetTrackPhiOnEMCal() > 70 * TMath::DegToRad() &&
134 track->GetTrackPhiOnEMCal() < 190 * TMath::DegToRad())
135 isEmc = kTRUE;
136
33a8056d 137 AliPicoTrack *picotrack = new ((*fTracksOut)[nacc]) AliPicoTrack(track->Pt(),
dac83212 138 track->Eta(),
139 track->Phi(),
140 track->Charge(),
141 track->GetLabel(),
142 AliPicoTrack::GetTrackType(track),
143 track->GetTrackEtaOnEMCal(),
144 track->GetTrackPhiOnEMCal(),
145 track->GetTrackPtOnEMCal(),
146 isEmc);
33a8056d 147 picotrack->SetTrack(track);
680855e5 148 ++nacc;
149 }
150}