]>
Commit | Line | Data |
---|---|---|
43d99a73 | 1 | // $Id: AliEmcalParticleMaker.cxx 56635 2012-05-22 22:49:56Z loizides $ |
2 | // | |
3 | // Class to make emcal particles in AOD/ESD events. | |
4 | // | |
5 | // Author: S.Aiola | |
6 | ||
7 | #include <TClonesArray.h> | |
8 | ||
9 | #include "AliLog.h" | |
10 | #include "AliVTrack.h" | |
11 | #include "AliVCluster.h" | |
12 | #include "AliEmcalParticle.h" | |
13 | ||
14 | #include "AliEmcalParticleMaker.h" | |
15 | ||
16 | ClassImp(AliEmcalParticleMaker) | |
17 | ||
18 | //________________________________________________________________________ | |
19 | AliEmcalParticleMaker::AliEmcalParticleMaker() : | |
20 | AliAnalysisTaskEmcal("AliEmcalParticleMaker"), | |
21 | fTracksOutName("EmcalTracks"), | |
22 | fCaloOutName("EmcalClusters"), | |
23 | fTracksOut(0), | |
24 | fCaloClustersOut(0) | |
25 | { | |
26 | // Constructor. | |
27 | } | |
28 | ||
29 | //________________________________________________________________________ | |
30 | AliEmcalParticleMaker::AliEmcalParticleMaker(const char *name) : | |
31 | AliAnalysisTaskEmcal(name), | |
32 | fTracksOutName("EmcalTracks"), | |
33 | fCaloOutName("EmcalClusters"), | |
34 | fTracksOut(0), | |
35 | fCaloClustersOut(0) | |
36 | { | |
37 | // Constructor. | |
38 | ||
39 | } | |
40 | ||
41 | //________________________________________________________________________ | |
42 | AliEmcalParticleMaker::~AliEmcalParticleMaker() | |
43 | { | |
44 | // Destructor. | |
45 | } | |
46 | ||
47 | //________________________________________________________________________ | |
48 | void AliEmcalParticleMaker::UserCreateOutputObjects() | |
49 | { | |
50 | // Create my user objects. | |
51 | ||
52 | fTracksOut = new TClonesArray("AliEmcalParticle"); | |
53 | fTracksOut->SetName(fTracksOutName); | |
54 | ||
55 | fCaloClustersOut = new TClonesArray("AliEmcalParticle"); | |
56 | fCaloClustersOut->SetName(fCaloOutName); | |
57 | } | |
58 | ||
59 | //________________________________________________________________________ | |
60 | Bool_t AliEmcalParticleMaker::Run() | |
61 | { | |
62 | // Create th emcal particles | |
63 | ||
64 | // add tracks to event if not yet there | |
65 | if (!(InputEvent()->FindListObject(fTracksOutName))) { | |
66 | InputEvent()->AddObject(fTracksOut); | |
67 | } | |
68 | if (!(InputEvent()->FindListObject(fCaloOutName))) { | |
69 | InputEvent()->AddObject(fCaloClustersOut); | |
70 | } | |
71 | ||
72 | // clear container (normally a null operation as the event should clean it already) | |
73 | fTracksOut->Delete(); | |
74 | fCaloClustersOut->Delete(); | |
75 | ||
76 | // loop over tracks | |
77 | const Int_t Ntracks = fTracks->GetEntries(); | |
78 | for (Int_t iTracks = 0; iTracks < Ntracks; ++iTracks) { | |
79 | ||
80 | AliVTrack *track = dynamic_cast<AliVTrack*>(fTracks->At(iTracks)); | |
81 | new ((*fTracksOut)[iTracks]) AliEmcalParticle(track, iTracks); | |
82 | } | |
83 | ||
6f63ed90 | 84 | Double_t vtx[3] = {0}; |
85 | InputEvent()->GetPrimaryVertex()->GetXYZ(vtx); | |
86 | ||
43d99a73 | 87 | // loop over clusters |
88 | const Int_t Nclusters = fCaloClusters->GetEntries(); | |
89 | for (Int_t iClusters = 0; iClusters < Nclusters; ++iClusters) { | |
90 | ||
91 | AliVCluster *cluster = dynamic_cast<AliVCluster*>(fCaloClusters->At(iClusters)); | |
6f63ed90 | 92 | new ((*fCaloClustersOut)[iClusters]) AliEmcalParticle(cluster, iClusters, vtx[0], vtx[1], vtx[2]); |
43d99a73 | 93 | } |
94 | ||
95 | return kTRUE; | |
96 | } |