class AliMCParticle: public AliVParticle {
public:
AliMCParticle();
- AliMCParticle(TParticle* part, TRefArray* rarray = 0);
- virtual ~AliMCParticle() {}
+ AliMCParticle(TParticle* part, TRefArray* rarray = 0, Int_t label=-1);
+ virtual ~AliMCParticle();
AliMCParticle(const AliMCParticle& mcPart);
AliMCParticle& operator=(const AliMCParticle& mcPart);
virtual Double_t Phi() const;
virtual Double_t Theta() const;
- virtual Double_t Xv() const;
- virtual Double_t Yv() const;
- virtual Double_t Zv() const;
+ virtual Double_t Xv() const;
+ virtual Double_t Yv() const;
+ virtual Double_t Zv() const;
virtual Bool_t XvYvZv(Double_t x[3]) const;
- virtual Double_t E() const;
- virtual Double_t M() const;
+ virtual Double_t E() const;
+ virtual Double_t M() const;
- virtual Double_t Eta() const;
- virtual Double_t Y() const;
+ virtual Double_t Eta() const;
+ virtual Double_t Y() const;
- virtual Short_t Charge() const;
+ virtual Short_t Charge() const;
+
+ virtual Int_t Label() const;
+ virtual Int_t GetLabel() const {return Label();}
+ virtual Int_t PdgCode() const {return fParticle->GetPdgCode();}
+ virtual TParticle* Particle() const {return fParticle;}
// PID
virtual const Double_t *PID() const {return 0;} // return PID object (to be defined, still)
// Track References
Int_t GetNumberOfTrackReferences() {return fNTrackRef;}
AliTrackReference* GetTrackReference(Int_t i)
- {return dynamic_cast<AliTrackReference*>((*fTrackReferences)[i]);}
+ {return dynamic_cast<AliTrackReference*>((*fTrackReferences)[i]);}
+
+ // "Trackable" criteria
+ Float_t GetTPCTrackLength(Float_t bz, Float_t ptmin, Int_t &counter, Float_t deadWidth);
+ // Navigation
+ Int_t GetMother() const {return fMother;}
+ Int_t GetFirstDaughter() const {return fFirstDaughter;}
+ Int_t GetLastDaughter() const {return fLastDaughter;}
+ void SetMother(Int_t idx) {fMother = idx;}
+ void SetFirstDaughter(Int_t idx) {fFirstDaughter = idx;}
+ void SetLastDaughter(Int_t idx) {fLastDaughter = idx;}
+ void SetLabel(Int_t label) {fLabel = label;}
+
private:
TParticle *fParticle; // The wrapped TParticle
TRefArray *fTrackReferences; // Reference array to track references
Int_t fNTrackRef; // Number of track references
+ Int_t fLabel; // fParticle Label in the Stack
+ Int_t fMother; // Mother particles
+ Int_t fFirstDaughter; // First daughter
+ Int_t fLastDaughter; // LastDaughter
ClassDef(AliMCParticle,0) // AliVParticle realisation for MCParticles
};
inline Double_t AliMCParticle::E() const {return fParticle->Energy();}
inline Double_t AliMCParticle::Eta() const {return fParticle->Eta();}
+
inline Double_t AliMCParticle::M() const
{
TParticlePDG* pdg = fParticle->GetPDG();
inline Double_t AliMCParticle::Y() const
{
Double_t e = E();
- Double_t pz = TMath::Abs(Pz());
- if (e != pz) {
+ Double_t pz = Pz();
+
+ if (e != TMath::Abs(pz)) {
return 0.5*TMath::Log((e+pz)/(e-pz));
} else {
return -999.;
}
}
+inline Int_t AliMCParticle::Label() const {return fLabel;}
+
#endif