#include <TClonesArray.h>
#include "AliVEvent.h"
#include "AliLog.h"
#include "AliParticleContainer.h"
ClassImp(AliParticleContainer)
AliParticleContainer::AliParticleContainer():
AliEmcalContainer("AliParticleContainer"),
fParticlePtCut(0.15),
fParticleMinEta(-0.9),
fParticleMaxEta(0.9),
fParticleMinPhi(-10),
fParticleMaxPhi(10),
fMinDistanceTPCSectorEdge(-1),
fTrackBitMap(0),
fMCTrackBitMap(0),
fMinMCLabel(0),
fMinMCLabelAccept(-1),
fMCFlag(0),
fGeneratorIndex(-1),
fCharge(-1)
{
fClassName = "AliVParticle";
}
AliParticleContainer::AliParticleContainer(const char *name):
AliEmcalContainer(name),
fParticlePtCut(0.15),
fParticleMinEta(-0.9),
fParticleMaxEta(0.9),
fParticleMinPhi(-10),
fParticleMaxPhi(10),
fMinDistanceTPCSectorEdge(-1),
fTrackBitMap(0),
fMCTrackBitMap(0),
fMinMCLabel(0),
fMinMCLabelAccept(-1),
fMCFlag(0),
fGeneratorIndex(-1),
fCharge(-1)
{
fClassName = "AliVParticle";
}
AliVParticle* AliParticleContainer::GetLeadingParticle(const char* opt)
{
TString option(opt);
option.ToLower();
Int_t tempID = fCurrentID;
AliVParticle *partMax = GetNextAcceptParticle(0);
AliVParticle *part = 0;
if (option.Contains("p")) {
while ((part = GetNextAcceptParticle())) {
if (part->P() > partMax->P()) partMax = part;
}
}
else {
while ((part = GetNextAcceptParticle())) {
if (part->Pt() > partMax->Pt()) partMax = part;
}
}
fCurrentID = tempID;
return partMax;
}
AliVParticle* AliParticleContainer::GetParticle(Int_t i) const
{
if(i<0 || i>=fClArray->GetEntriesFast()) return 0;
AliVParticle *vp = static_cast<AliVParticle*>(fClArray->At(i));
return vp;
}
AliVParticle* AliParticleContainer::GetAcceptParticle(Int_t i) {
AliVParticle *vp = GetParticle(i);
if(!vp) return 0;
if(AcceptParticle(vp))
return vp;
else {
AliDebug(2,"Particle not accepted.");
return 0;
}
}
AliVParticle* AliParticleContainer::GetParticleWithLabel(Int_t lab) const
{
Int_t i = GetIndexFromLabel(lab);
return GetParticle(i);
}
AliVParticle* AliParticleContainer::GetAcceptParticleWithLabel(Int_t lab)
{
Int_t i = GetIndexFromLabel(lab);
return GetAcceptParticle(i);
}
AliVParticle* AliParticleContainer::GetNextAcceptParticle(Int_t i)
{
if (i>=0) fCurrentID = i;
const Int_t n = GetNEntries();
AliVParticle *p = 0;
while (fCurrentID < n && !p) {
p = GetAcceptParticle(fCurrentID);
fCurrentID++;
}
return p;
}
AliVParticle* AliParticleContainer::GetNextParticle(Int_t i)
{
if (i>=0) fCurrentID = i;
const Int_t n = GetNEntries();
AliVParticle *p = 0;
while (fCurrentID < n && !p) {
p = GetParticle(fCurrentID);
fCurrentID++;
}
return p;
}
void AliParticleContainer::GetMomentum(TLorentzVector &mom, Int_t i) const
{
AliVParticle *vp = GetParticle(i);
if(vp) mom.SetPtEtaPhiM(vp->Pt(),vp->Eta(),vp->Phi(),0.139);
}
Bool_t AliParticleContainer::AcceptParticle(AliVParticle *vp)
{
fRejectionReason = 0;
if (!vp) {
fRejectionReason |= kNullObject;
return kFALSE;
}
if (vp->Pt() < fParticlePtCut) {
fRejectionReason |= kPtCut;
return kFALSE;
}
if (vp->Eta() < fParticleMinEta || vp->Eta() > fParticleMaxEta ||
vp->Phi() < fParticleMinPhi || vp->Phi() > fParticleMaxPhi) {
fRejectionReason |= kAcceptanceCut;
return kFALSE;
}
if(fMinDistanceTPCSectorEdge>0.) {
const Double_t pi = TMath::Pi();
const Double_t kSector = pi/9;
Double_t phiDist = TMath::Abs(vp->Phi() - TMath::FloorNint(vp->Phi()/kSector)*kSector);
if(phiDist<fMinDistanceTPCSectorEdge) {
fRejectionReason |= kMinDistanceTPCSectorEdgeCut;
return kFALSE;
}
}
if (TMath::Abs(vp->GetLabel()) < fMinMCLabelAccept) {
AliDebug(2,"Particle not accepted because label too small.");
fRejectionReason |= kMinMCLabelAccept;
return kFALSE;
}
if (TMath::Abs(vp->GetLabel()) > fMinMCLabel) {
if(vp->TestBits(fMCTrackBitMap) != (Int_t)fMCTrackBitMap) {
AliDebug(2,"MC particle not accepted because of MC bit map.");
fRejectionReason |= kBitMapCut;
return kFALSE;
}
}
else {
if(vp->TestBits(fTrackBitMap) != (Int_t)fTrackBitMap) {
AliDebug(2,"Track not accepted because of bit map.");
fRejectionReason |= kBitMapCut;
return kFALSE;
}
}
if ((vp->GetFlag() & fMCFlag) != fMCFlag) {
fRejectionReason |= kMCFlag;
return kFALSE;
}
if (fGeneratorIndex >= 0 && fGeneratorIndex != vp->GetGeneratorIndex()) {
fRejectionReason |= kMCGeneratorCut;
return kFALSE;
}
if (fCharge>=0 && fCharge != vp->Charge()) {
fRejectionReason |= kChargeCut;
return kFALSE;
}
return kTRUE;
}
Int_t AliParticleContainer::GetNAcceptedParticles()
{
Int_t nPart = 0;
AliVParticle *vp = GetNextAcceptParticle(0);
if(vp) nPart = 1;
while (GetNextAcceptParticle())
nPart++;
return nPart;
}
void AliParticleContainer::SetClassName(const char *clname)
{
TClass cls(clname);
if (cls.InheritsFrom("AliVParticle")) fClassName = clname;
else AliError(Form("Unable to set class name %s for a AliParticleContainer, it must inherits from AliVParticle!",clname));
}
AliParticleContainer.cxx:1 AliParticleContainer.cxx:2 AliParticleContainer.cxx:3 AliParticleContainer.cxx:4 AliParticleContainer.cxx:5 AliParticleContainer.cxx:6 AliParticleContainer.cxx:7 AliParticleContainer.cxx:8 AliParticleContainer.cxx:9 AliParticleContainer.cxx:10 AliParticleContainer.cxx:11 AliParticleContainer.cxx:12 AliParticleContainer.cxx:13 AliParticleContainer.cxx:14 AliParticleContainer.cxx:15 AliParticleContainer.cxx:16 AliParticleContainer.cxx:17 AliParticleContainer.cxx:18 AliParticleContainer.cxx:19 AliParticleContainer.cxx:20 AliParticleContainer.cxx:21 AliParticleContainer.cxx:22 AliParticleContainer.cxx:23 AliParticleContainer.cxx:24 AliParticleContainer.cxx:25 AliParticleContainer.cxx:26 AliParticleContainer.cxx:27 AliParticleContainer.cxx:28 AliParticleContainer.cxx:29 AliParticleContainer.cxx:30 AliParticleContainer.cxx:31 AliParticleContainer.cxx:32 AliParticleContainer.cxx:33 AliParticleContainer.cxx:34 AliParticleContainer.cxx:35 AliParticleContainer.cxx:36 AliParticleContainer.cxx:37 AliParticleContainer.cxx:38 AliParticleContainer.cxx:39 AliParticleContainer.cxx:40 AliParticleContainer.cxx:41 AliParticleContainer.cxx:42 AliParticleContainer.cxx:43 AliParticleContainer.cxx:44 AliParticleContainer.cxx:45 AliParticleContainer.cxx:46 AliParticleContainer.cxx:47 AliParticleContainer.cxx:48 AliParticleContainer.cxx:49 AliParticleContainer.cxx:50 AliParticleContainer.cxx:51 AliParticleContainer.cxx:52 AliParticleContainer.cxx:53 AliParticleContainer.cxx:54 AliParticleContainer.cxx:55 AliParticleContainer.cxx:56 AliParticleContainer.cxx:57 AliParticleContainer.cxx:58 AliParticleContainer.cxx:59 AliParticleContainer.cxx:60 AliParticleContainer.cxx:61 AliParticleContainer.cxx:62 AliParticleContainer.cxx:63 AliParticleContainer.cxx:64 AliParticleContainer.cxx:65 AliParticleContainer.cxx:66 AliParticleContainer.cxx:67 AliParticleContainer.cxx:68 AliParticleContainer.cxx:69 AliParticleContainer.cxx:70 AliParticleContainer.cxx:71 AliParticleContainer.cxx:72 AliParticleContainer.cxx:73 AliParticleContainer.cxx:74 AliParticleContainer.cxx:75 AliParticleContainer.cxx:76 AliParticleContainer.cxx:77 AliParticleContainer.cxx:78 AliParticleContainer.cxx:79 AliParticleContainer.cxx:80 AliParticleContainer.cxx:81 AliParticleContainer.cxx:82 AliParticleContainer.cxx:83 AliParticleContainer.cxx:84 AliParticleContainer.cxx:85 AliParticleContainer.cxx:86 AliParticleContainer.cxx:87 AliParticleContainer.cxx:88 AliParticleContainer.cxx:89 AliParticleContainer.cxx:90 AliParticleContainer.cxx:91 AliParticleContainer.cxx:92 AliParticleContainer.cxx:93 AliParticleContainer.cxx:94 AliParticleContainer.cxx:95 AliParticleContainer.cxx:96 AliParticleContainer.cxx:97 AliParticleContainer.cxx:98 AliParticleContainer.cxx:99 AliParticleContainer.cxx:100 AliParticleContainer.cxx:101 AliParticleContainer.cxx:102 AliParticleContainer.cxx:103 AliParticleContainer.cxx:104 AliParticleContainer.cxx:105 AliParticleContainer.cxx:106 AliParticleContainer.cxx:107 AliParticleContainer.cxx:108 AliParticleContainer.cxx:109 AliParticleContainer.cxx:110 AliParticleContainer.cxx:111 AliParticleContainer.cxx:112 AliParticleContainer.cxx:113 AliParticleContainer.cxx:114 AliParticleContainer.cxx:115 AliParticleContainer.cxx:116 AliParticleContainer.cxx:117 AliParticleContainer.cxx:118 AliParticleContainer.cxx:119 AliParticleContainer.cxx:120 AliParticleContainer.cxx:121 AliParticleContainer.cxx:122 AliParticleContainer.cxx:123 AliParticleContainer.cxx:124 AliParticleContainer.cxx:125 AliParticleContainer.cxx:126 AliParticleContainer.cxx:127 AliParticleContainer.cxx:128 AliParticleContainer.cxx:129 AliParticleContainer.cxx:130 AliParticleContainer.cxx:131 AliParticleContainer.cxx:132 AliParticleContainer.cxx:133 AliParticleContainer.cxx:134 AliParticleContainer.cxx:135 AliParticleContainer.cxx:136 AliParticleContainer.cxx:137 AliParticleContainer.cxx:138 AliParticleContainer.cxx:139 AliParticleContainer.cxx:140 AliParticleContainer.cxx:141 AliParticleContainer.cxx:142 AliParticleContainer.cxx:143 AliParticleContainer.cxx:144 AliParticleContainer.cxx:145 AliParticleContainer.cxx:146 AliParticleContainer.cxx:147 AliParticleContainer.cxx:148 AliParticleContainer.cxx:149 AliParticleContainer.cxx:150 AliParticleContainer.cxx:151 AliParticleContainer.cxx:152 AliParticleContainer.cxx:153 AliParticleContainer.cxx:154 AliParticleContainer.cxx:155 AliParticleContainer.cxx:156 AliParticleContainer.cxx:157 AliParticleContainer.cxx:158 AliParticleContainer.cxx:159 AliParticleContainer.cxx:160 AliParticleContainer.cxx:161 AliParticleContainer.cxx:162 AliParticleContainer.cxx:163 AliParticleContainer.cxx:164 AliParticleContainer.cxx:165 AliParticleContainer.cxx:166 AliParticleContainer.cxx:167 AliParticleContainer.cxx:168 AliParticleContainer.cxx:169 AliParticleContainer.cxx:170 AliParticleContainer.cxx:171 AliParticleContainer.cxx:172 AliParticleContainer.cxx:173 AliParticleContainer.cxx:174 AliParticleContainer.cxx:175 AliParticleContainer.cxx:176 AliParticleContainer.cxx:177 AliParticleContainer.cxx:178 AliParticleContainer.cxx:179 AliParticleContainer.cxx:180 AliParticleContainer.cxx:181 AliParticleContainer.cxx:182 AliParticleContainer.cxx:183 AliParticleContainer.cxx:184 AliParticleContainer.cxx:185 AliParticleContainer.cxx:186 AliParticleContainer.cxx:187 AliParticleContainer.cxx:188 AliParticleContainer.cxx:189 AliParticleContainer.cxx:190 AliParticleContainer.cxx:191 AliParticleContainer.cxx:192 AliParticleContainer.cxx:193 AliParticleContainer.cxx:194 AliParticleContainer.cxx:195 AliParticleContainer.cxx:196 AliParticleContainer.cxx:197 AliParticleContainer.cxx:198 AliParticleContainer.cxx:199 AliParticleContainer.cxx:200 AliParticleContainer.cxx:201 AliParticleContainer.cxx:202 AliParticleContainer.cxx:203 AliParticleContainer.cxx:204 AliParticleContainer.cxx:205 AliParticleContainer.cxx:206 AliParticleContainer.cxx:207 AliParticleContainer.cxx:208 AliParticleContainer.cxx:209 AliParticleContainer.cxx:210 AliParticleContainer.cxx:211 AliParticleContainer.cxx:212 AliParticleContainer.cxx:213 AliParticleContainer.cxx:214 AliParticleContainer.cxx:215 AliParticleContainer.cxx:216 AliParticleContainer.cxx:217 AliParticleContainer.cxx:218 AliParticleContainer.cxx:219 AliParticleContainer.cxx:220 AliParticleContainer.cxx:221 AliParticleContainer.cxx:222 AliParticleContainer.cxx:223 AliParticleContainer.cxx:224 AliParticleContainer.cxx:225 AliParticleContainer.cxx:226 AliParticleContainer.cxx:227 AliParticleContainer.cxx:228 AliParticleContainer.cxx:229 AliParticleContainer.cxx:230 AliParticleContainer.cxx:231 AliParticleContainer.cxx:232 AliParticleContainer.cxx:233 AliParticleContainer.cxx:234 AliParticleContainer.cxx:235 AliParticleContainer.cxx:236 AliParticleContainer.cxx:237 AliParticleContainer.cxx:238 AliParticleContainer.cxx:239 AliParticleContainer.cxx:240 AliParticleContainer.cxx:241 AliParticleContainer.cxx:242 AliParticleContainer.cxx:243 AliParticleContainer.cxx:244 AliParticleContainer.cxx:245 AliParticleContainer.cxx:246 AliParticleContainer.cxx:247 AliParticleContainer.cxx:248 AliParticleContainer.cxx:249 AliParticleContainer.cxx:250 AliParticleContainer.cxx:251 AliParticleContainer.cxx:252 AliParticleContainer.cxx:253 AliParticleContainer.cxx:254 AliParticleContainer.cxx:255 AliParticleContainer.cxx:256 AliParticleContainer.cxx:257 AliParticleContainer.cxx:258 AliParticleContainer.cxx:259 AliParticleContainer.cxx:260 AliParticleContainer.cxx:261 AliParticleContainer.cxx:262 AliParticleContainer.cxx:263 AliParticleContainer.cxx:264 AliParticleContainer.cxx:265 AliParticleContainer.cxx:266 AliParticleContainer.cxx:267 AliParticleContainer.cxx:268 AliParticleContainer.cxx:269 AliParticleContainer.cxx:270 AliParticleContainer.cxx:271 AliParticleContainer.cxx:272