]>
Commit | Line | Data |
---|---|---|
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 | |
19 | ClassImp(AliEmcalPicoTrackMaker) | |
20 | ||
21 | //________________________________________________________________________ | |
22 | AliEmcalPicoTrackMaker::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 | //________________________________________________________________________ | |
43 | AliEmcalPicoTrackMaker::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 | //________________________________________________________________________ | |
65 | AliEmcalPicoTrackMaker::~AliEmcalPicoTrackMaker() | |
66 | { | |
a070db7d | 67 | // Destructor. |
680855e5 | 68 | } |
69 | ||
70 | //________________________________________________________________________ | |
71 | void AliEmcalPicoTrackMaker::UserCreateOutputObjects() | |
72 | { | |
a070db7d | 73 | // Create my user objects. |
680855e5 | 74 | |
75 | fTracksOut = new TClonesArray("AliPicoTrack"); | |
76 | fTracksOut->SetName(fTracksOutName); | |
77 | } | |
78 | ||
79 | //________________________________________________________________________ | |
80 | void 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 | } |