3 // Class to make emcal particles in AOD/ESD events.
7 #include <TClonesArray.h>
10 #include "AliVTrack.h"
11 #include "AliVCluster.h"
12 #include "AliEmcalParticle.h"
14 #include "AliEmcalParticleMaker.h"
16 ClassImp(AliEmcalParticleMaker)
18 //________________________________________________________________________
19 AliEmcalParticleMaker::AliEmcalParticleMaker() :
20 AliAnalysisTaskEmcal("AliEmcalParticleMaker",kFALSE),
21 fTracksOutName("EmcalTracks"),
22 fCaloOutName("EmcalClusters"),
29 //________________________________________________________________________
30 AliEmcalParticleMaker::AliEmcalParticleMaker(const char *name) :
31 AliAnalysisTaskEmcal(name,kFALSE),
32 fTracksOutName("EmcalTracks"),
33 fCaloOutName("EmcalClusters"),
41 //________________________________________________________________________
42 AliEmcalParticleMaker::~AliEmcalParticleMaker()
47 //________________________________________________________________________
48 void AliEmcalParticleMaker::UserCreateOutputObjects()
50 // Create my user objects.
52 fTracksOut = new TClonesArray("AliEmcalParticle");
53 fTracksOut->SetName(fTracksOutName);
55 fCaloClustersOut = new TClonesArray("AliEmcalParticle");
56 fCaloClustersOut->SetName(fCaloOutName);
59 //________________________________________________________________________
60 Bool_t AliEmcalParticleMaker::Run()
62 // Create th emcal particles
64 // add tracks to event if not yet there
65 if (!(InputEvent()->FindListObject(fTracksOutName))) {
66 InputEvent()->AddObject(fTracksOut);
68 if (!(InputEvent()->FindListObject(fCaloOutName))) {
69 InputEvent()->AddObject(fCaloClustersOut);
72 // clear container (normally a null operation as the event should clean it already)
74 fCaloClustersOut->Delete();
78 const Int_t Ntracks = fTracks->GetEntries();
79 for (Int_t iTracks = 0; iTracks < Ntracks; ++iTracks) {
81 AliVTrack *track = dynamic_cast<AliVTrack*>(fTracks->At(iTracks));
82 new ((*fTracksOut)[iTracks]) AliEmcalParticle(track, iTracks);
88 const Int_t Nclusters = fCaloClusters->GetEntries();
89 for (Int_t iClusters = 0; iClusters < Nclusters; ++iClusters) {
91 AliVCluster *cluster = dynamic_cast<AliVCluster*>(fCaloClusters->At(iClusters));
92 new ((*fCaloClustersOut)[iClusters]) AliEmcalParticle(cluster, iClusters, fVertex[0], fVertex[1], fVertex[2]);