6 #include <TClonesArray.h>
11 #include "AliParticleContainer.h"
13 ClassImp(AliParticleContainer)
15 //________________________________________________________________________
16 AliParticleContainer::AliParticleContainer():
17 AliEmcalContainer("AliParticleContainer"),
19 fParticleMinEta(-0.9),
27 // Default constructor.
31 //________________________________________________________________________
32 AliParticleContainer::AliParticleContainer(const char *name):
33 AliEmcalContainer(name),
35 fParticleMinEta(-0.9),
43 // Standard constructor.
47 //________________________________________________________________________
48 void AliParticleContainer::SetParticleArray(AliVEvent *event)
52 SetArray(event, "AliVParticle");
55 //________________________________________________________________________
56 AliVParticle* AliParticleContainer::GetLeadingParticle(const char* opt) const
58 // Get the leading particle; use p if "p" is contained in opt
63 AliVParticle *partMax = GetNextAcceptParticle(0);
64 AliVParticle *part = 0;
66 if (option.Contains("p")) {
67 while ((part = GetNextAcceptParticle())) {
68 if (part->P() > partMax->P()) partMax = part;
72 while ((part = GetNextAcceptParticle())) {
73 if (part->Pt() > partMax->Pt()) partMax = part;
80 //________________________________________________________________________
81 AliVParticle* AliParticleContainer::GetParticle(Int_t i) const {
83 //Get i^th jet in array
85 if(i<0 || i>fClArray->GetEntriesFast()) return 0;
86 AliVParticle *vp = static_cast<AliVParticle*>(fClArray->At(i));
91 //________________________________________________________________________
92 AliVParticle* AliParticleContainer::GetAcceptParticle(Int_t i) const {
93 //return pointer to particle if particle is accepted
95 AliVParticle *vp = GetParticle(i);
98 if(AcceptParticle(vp))
101 AliDebug(2,"Particle not accepted.");
106 //________________________________________________________________________
107 AliVParticle* AliParticleContainer::GetNextAcceptParticle(Int_t i) const {
109 //Get next accepted particle; if i >= 0 (re)start counter from i; return 0 if no accepted particle could be found
111 static Int_t counter = -1;
112 if (i>=0) counter = i;
114 const Int_t n = GetNEntries();
116 while (counter < n && !p) {
117 p = GetAcceptParticle(counter);
124 //________________________________________________________________________
125 void AliParticleContainer::GetMomentum(TLorentzVector &mom, Int_t i) const
127 //Get momentum of the i^th particle in array
129 AliVParticle *vp = GetParticle(i);
130 if(vp) mom.SetPtEtaPhiM(vp->Pt(),vp->Eta(),vp->Phi(),0.139);
133 //________________________________________________________________________
134 Bool_t AliParticleContainer::AcceptParticle(AliVParticle *vp) const
136 // Return true if vp is accepted.
141 if (TMath::Abs(vp->GetLabel()) > fMinMCLabel) {
142 if(vp->TestBits(fMCTrackBitMap) != (Int_t)fMCTrackBitMap) {
143 AliDebug(2,"MC particle not accepted because of MC bit map.");
148 if(vp->TestBits(fTrackBitMap) != (Int_t)fTrackBitMap) {
149 AliDebug(2,"Track not accepted because of bit map.");
154 if (vp->Pt() < fParticlePtCut)
157 if (vp->Eta() < fParticleMinEta || vp->Eta() > fParticleMaxEta ||
158 vp->Phi() < fParticleMinPhi || vp->Phi() > fParticleMaxPhi)