]>
Commit | Line | Data |
---|---|---|
4d3b366f | 1 | // $Id$ |
2 | // | |
3 | // Class to make PicoTracks from jet 4-vectors | |
4 | // | |
5 | // Author: M. Verweij | |
6 | ||
7 | #include <TClonesArray.h> | |
8 | #include <TRandom3.h> | |
9 | #include "AliAODEvent.h" | |
10 | #include "AliAODTrack.h" | |
11 | #include "AliAnalysisManager.h" | |
12 | #include "AliESDtrack.h" | |
13 | #include "AliESDtrackCuts.h" | |
14 | #include "AliLog.h" | |
15 | #include "AliPicoTrack.h" | |
16 | #include "AliVTrack.h" | |
17 | #include "AliEmcalJet.h" | |
18 | #include "AliEmcalPicoTrackFromJetMaker.h" | |
19 | ||
20 | ClassImp(AliEmcalPicoTrackFromJetMaker) | |
21 | ||
22 | //________________________________________________________________________ | |
23 | AliEmcalPicoTrackFromJetMaker::AliEmcalPicoTrackFromJetMaker() : | |
24 | AliAnalysisTaskSE("AliEmcalPicoTrackFromJetMaker"), | |
25 | fTracksOutName("PicoTracksFromJets"), | |
26 | fJetsInName("tracks"), | |
27 | fJetsIn(0), | |
28 | fTracksOut(0) | |
29 | { | |
30 | // Constructor. | |
31 | } | |
32 | ||
33 | //________________________________________________________________________ | |
34 | AliEmcalPicoTrackFromJetMaker::AliEmcalPicoTrackFromJetMaker(const char *name) : | |
35 | AliAnalysisTaskSE(name), | |
36 | fTracksOutName("PicoTracksFromJets"), | |
37 | fJetsInName("tracks"), | |
38 | fJetsIn(0), | |
39 | fTracksOut(0) | |
40 | { | |
41 | // Constructor. | |
42 | } | |
43 | ||
44 | //________________________________________________________________________ | |
45 | AliEmcalPicoTrackFromJetMaker::~AliEmcalPicoTrackFromJetMaker() | |
46 | { | |
47 | // Destructor. | |
48 | } | |
49 | ||
50 | //________________________________________________________________________ | |
51 | void AliEmcalPicoTrackFromJetMaker::UserCreateOutputObjects() | |
52 | { | |
53 | // Create my user objects. | |
54 | ||
55 | fTracksOut = new TClonesArray("AliPicoTrack"); | |
56 | fTracksOut->SetName(fTracksOutName); | |
57 | } | |
58 | ||
59 | //________________________________________________________________________ | |
60 | void AliEmcalPicoTrackFromJetMaker::UserExec(Option_t *) | |
61 | { | |
62 | // Main loop, called for each event. | |
63 | ||
64 | AliAnalysisManager *am = AliAnalysisManager::GetAnalysisManager(); | |
65 | if (!am) { | |
66 | AliError("Manager zero, returning"); | |
67 | return; | |
68 | } | |
69 | ||
70 | // retrieve tracks from input. | |
71 | if (!fJetsIn) { | |
72 | fJetsIn = dynamic_cast<TClonesArray*>(InputEvent()->FindListObject(fJetsInName)); | |
73 | if (!fJetsIn) { | |
74 | AliError(Form("Could not retrieve jets %s!", fJetsInName.Data())); | |
75 | return; | |
76 | } | |
77 | if (!fJetsIn->GetClass()->GetBaseClass("AliVParticle")) { | |
78 | AliError(Form("%s: Collection %s does not contain AliVParticle objects!", GetName(), fJetsInName.Data())); | |
79 | return; | |
80 | } | |
81 | } | |
82 | ||
83 | // add tracks to event if not yet there | |
84 | fTracksOut->Delete(); | |
85 | if (!(InputEvent()->FindListObject(fTracksOutName))) { | |
86 | InputEvent()->AddObject(fTracksOut); | |
87 | } | |
88 | ||
89 | // loop over tracks | |
90 | const Int_t Njets = fJetsIn->GetEntriesFast(); | |
91 | for (Int_t iJets = 0, nacc = 0; iJets < Njets; ++iJets) { | |
92 | ||
93 | AliEmcalJet *jet = static_cast<AliEmcalJet*>(fJetsIn->At(iJets)); | |
94 | if (!jet) | |
95 | continue; | |
96 | ||
97 | Bool_t isEmc = kFALSE; | |
98 | if (TMath::Abs(jet->Eta()) < 0.75 && | |
99 | jet->Phi() > 70 * TMath::DegToRad() &&jet->Phi() < 190 * TMath::DegToRad()) | |
100 | isEmc = kTRUE; | |
101 | ||
102 | AliPicoTrack *picotrack = new ((*fTracksOut)[nacc]) AliPicoTrack(jet->Pt(), | |
103 | jet->Eta(), | |
104 | jet->Phi(), | |
105 | 1, | |
106 | 1, | |
107 | 0, | |
108 | jet->Eta(), | |
109 | jet->Phi(), | |
110 | jet->Pt(), | |
111 | isEmc, | |
112 | jet->M()); | |
113 | picotrack->SetTrackType(0); | |
114 | ++nacc; | |
115 | } | |
116 | } |