#ifndef ALIJMCTRACK_H
#define ALIJMCTRACK_H
#ifndef ROOT_TObject
#include <TObject.h>
#endif
#include <TDatabasePDG.h>
#include "AliJBaseTrack.h"
class AliJMCTrack : public AliJBaseTrack {
public:
enum { kPrimary=AliJBaseTrack::kNFlag, kPHOS, kEMCAL, kTPC, kInjected, kNFlag };
enum { kFinal=AliJBaseTrack::kNFlag };
AliJMCTrack();
AliJMCTrack(const AliJMCTrack& a);
~AliJMCTrack(){;}
Int_t GetPdgCode() const {return fPdgCode;}
Int_t GetMother (Int_t i) const {return fMother[i];}
Int_t GetDaughter(Int_t i) const {return fDaughter[i];}
Double32_t GetVx() const{return fVx;}
Double32_t GetVy() const{return fVy;}
Double32_t GetVz() const{return fVz;}
const TParticlePDG& GetPDGData() const ;
void SetPdgCode(Int_t icode);
void SetMother (int m0, int m1){ fMother[0] = m0;fMother[1]=m1; }
void SetDaughter(int d0, int d1){ fDaughter[0]=d0;fDaughter[1]=d1; }
void SetProductionVertex(Double_t vx, Double_t vy, Double_t vz)
{fVx=vx; fVy=vy; fVz=vz;}
AliJMCTrack& operator=(const AliJMCTrack& trk);
Bool_t IsFinal() const { return IsTrue( kFinal ); }
void SetIsFinal(Bool_t t){ SetFlag( kFinal, t );}
Bool_t IsHadron() const;
Bool_t IsCharged() const { return GetCharge(); }
Bool_t IsParton() const {return ( fPdgCode > -7 && fPdgCode < 7 && fPdgCode !=0 );}
private:
Short_t fPdgCode;
Short_t fMother[2];
Short_t fDaughter[2];
Double32_t fVx;
Double32_t fVy;
Double32_t fVz;
ClassDef(AliJMCTrack,2)
};
#endif