6 #include <TClonesArray.h>
11 #include "AliTLorentzVector.h"
23 fMCFlag(AliAODMCParticle::kPhysicalPrim)
25 fBaseClassName =
"AliAODMCParticle";
26 SetClassName(
"AliAODMCParticle");
33 AliMCParticleContainer::AliMCParticleContainer(
const char *name):
35 fMCFlag(AliAODMCParticle::kPhysicalPrim)
37 fBaseClassName =
"AliAODMCParticle";
38 SetClassName(
"AliAODMCParticle");
46 AliAODMCParticle* AliMCParticleContainer::GetMCParticleWithLabel(Int_t lab)
const
48 Int_t i = GetIndexFromLabel(lab);
49 return GetMCParticle(i);
57 AliAODMCParticle* AliMCParticleContainer::GetAcceptMCParticleWithLabel(Int_t lab)
59 Int_t i = GetIndexFromLabel(lab);
60 return GetAcceptMCParticle(i);
68 AliAODMCParticle* AliMCParticleContainer::GetMCParticle(Int_t i)
const
70 if (i == -1) i = fCurrentID;
71 if (i < 0 || i >= fClArray->GetEntriesFast())
return 0;
72 AliAODMCParticle *vp =
static_cast<AliAODMCParticle*
>(fClArray->At(i));
81 AliAODMCParticle* AliMCParticleContainer::GetAcceptMCParticle(Int_t i)
const
85 UInt_t rejectionReason = 0;
86 if (i == -1) i = fCurrentID;
87 if (AcceptMCParticle(i, rejectionReason)) {
88 return GetMCParticle(i);
91 AliDebug(2,
"Particle not accepted.");
101 AliAODMCParticle* AliMCParticleContainer::GetNextAcceptMCParticle()
103 const Int_t n = GetNEntries();
104 AliAODMCParticle *p = 0;
107 if (fCurrentID >= n)
break;
108 p = GetAcceptMCParticle(fCurrentID);
119 AliAODMCParticle* AliMCParticleContainer::GetNextMCParticle()
123 const Int_t n = GetNEntries();
124 AliAODMCParticle *p = 0;
127 if (fCurrentID >= n)
break;
128 p = GetMCParticle(fCurrentID);
143 Bool_t AliMCParticleContainer::AcceptMCParticle(
const AliAODMCParticle *vp, UInt_t &rejectionReason)
const
146 Bool_t r = ApplyMCParticleCuts(vp, rejectionReason);
147 if (!r)
return kFALSE;
149 AliTLorentzVector mom;
150 GetMomentumFromParticle(mom, vp);
152 return ApplyKinematicCuts(mom, rejectionReason);
164 Bool_t AliMCParticleContainer::AcceptMCParticle(Int_t i, UInt_t &rejectionReason)
const
167 Bool_t r = ApplyMCParticleCuts(GetMCParticle(i), rejectionReason);
168 if (!r)
return kFALSE;
170 AliTLorentzVector mom;
173 return ApplyKinematicCuts(mom, rejectionReason);
184 Bool_t AliMCParticleContainer::ApplyMCParticleCuts(
const AliAODMCParticle* vp, UInt_t &rejectionReason)
const
189 if ((vp->GetFlag() & fMCFlag) != fMCFlag) {
190 rejectionReason |= kMCFlag;
194 return ApplyParticleCuts(vp, rejectionReason);
203 const char* AliMCParticleContainer::GetTitle()
const
205 static TString trackString;
207 if (GetMinPt() == 0) {
208 trackString = TString::Format(
"%s_pT0000", GetArrayName().
Data());
210 else if (GetMinPt() < 1.0) {
211 trackString = TString::Format(
"%s_pT0%3.0f", GetArrayName().
Data(), GetMinPt()*1000.0);
214 trackString = TString::Format(
"%s_pT%4.0f", GetArrayName().
Data(), GetMinPt()*1000.0);
217 return trackString.Data();
ClassImp(AliAnalysisTaskTriggerRates) AliAnalysisTaskTriggerRates
Container for particles within the EMCAL framework.
Bool_t Data(TH1F *h, Double_t *rangefit, Bool_t writefit, Double_t &sgn, Double_t &errsgn, Double_t &bkg, Double_t &errbkg, Double_t &sgnf, Double_t &errsgnf, Double_t &sigmafit, Int_t &status)
Container for MC-true particles within the EMCAL framework.