#ifndef AliEveMUONTrack_H
#define AliEveMUONTrack_H
#include <TEveTrack.h>
class AliMUONTrack;
class AliMUONTriggerTrack;
class AliMagF;
class AliESDMuonTrack;
class AliTrackReference;
class TParticle;
class TEveTrackPropagator;
class AliEveMUONTrack: public TEveTrack
{
public:
AliEveMUONTrack(TEveRecTrack* t, TEveTrackPropagator* rs);
virtual ~AliEveMUONTrack();
virtual void MakeTrack(Bool_t =kFALSE) {}
void MakeMUONTrack(AliMUONTrack *mtrack);
void MakeMUONTriggerTrack(AliESDMuonTrack *mtrack);
void MakeESDTrack(AliESDMuonTrack *mtrack);
void MakeMCTrack(TParticle *part);
void MakeRefTrack(AliMUONTrack *mtrack);
void Propagate(Float_t *xr, Float_t *yr, Float_t *zr, Int_t i1, Int_t i2);
void OneStepRungekutta(Double_t charge, Double_t step,
Double_t* vect, Double_t* vout);
Int_t ColorIndex(Float_t val);
Bool_t IsMUONTrack() const { return fIsMUONTrack; }
Bool_t IsMUONTriggerTrack() const { return fIsMUONTrack; }
Bool_t IsESDTrack() const { return fIsESDTrack; }
Bool_t IsMCTrack() const { return fIsMCTrack; }
Bool_t IsRefTrack() const { return fIsRefTrack; }
void PrintMCTrackInfo();
void PrintMUONTrackInfo();
void PrintMUONTriggerTrackInfo();
void PrintESDTrackInfo();
void MUONTrackInfo();
void MUONTriggerInfo();
private:
AliEveMUONTrack(const AliEveMUONTrack&);
AliEveMUONTrack& operator=(const AliEveMUONTrack&);
AliMUONTrack *fTrack;
TParticle *fPart;
Int_t fCount;
Bool_t fIsMUONTrack;
Bool_t fIsMUONTriggerTrack;
Bool_t fIsESDTrack;
Bool_t fIsMCTrack;
Bool_t fIsRefTrack;
ClassDef(AliEveMUONTrack, 0);
};
class AliEveMUONTrackList : public TEveTrackList
{
public:
AliEveMUONTrackList(TEveTrackPropagator* rs=0) : TEveTrackList(rs) {}
AliEveMUONTrackList(const Text_t* name, TEveTrackPropagator* rs=0) : TEveTrackList(name, rs) {}
virtual ~AliEveMUONTrackList() {}
void HackMomentumLimits(Bool_t recurse=kTRUE);
ClassDef(AliEveMUONTrackList, 0);
};
#endif