12 #ifndef ROOT_TVirtualGeoTrack
13 #define ROOT_TVirtualGeoTrack
23 class TVirtualGeoTrack :
public TObject,
31 TVirtualGeoTrack *fParent;
35 TVirtualGeoTrack(
const TVirtualGeoTrack&);
36 TVirtualGeoTrack& operator=(
const TVirtualGeoTrack&);
40 TVirtualGeoTrack(Int_t
id, Int_t pdgcode, TVirtualGeoTrack *parent=0, TObject *particle=0);
41 virtual ~TVirtualGeoTrack();
43 virtual TVirtualGeoTrack *AddDaughter(Int_t
id, Int_t pdgcode, TObject *particle=0) = 0;
44 virtual Int_t AddDaughter(TVirtualGeoTrack *other) = 0;
45 virtual void AddPoint(Double_t x, Double_t y, Double_t z, Double_t t) = 0;
46 virtual TVirtualGeoTrack *FindTrackWithId(Int_t
id)
const;
47 Int_t GetId()
const {
return fId;}
48 virtual Int_t GetDaughterId(Int_t index)
const;
49 TVirtualGeoTrack *GetDaughter(Int_t index)
const {
return (TVirtualGeoTrack*)fTracks->At(index);}
50 TVirtualGeoTrack *GetMother()
const {
return fParent;}
51 TObject *GetMotherParticle()
const {
return (fParent)?fParent->GetParticle():0;}
52 virtual const char *GetName()
const;
53 Int_t GetNdaughters()
const {
return (fTracks)?fTracks->GetEntriesFast():0;}
54 virtual Int_t GetNpoints()
const = 0;
55 Int_t GetParentId()
const {
return (fParent)?fParent->GetId():-1;}
56 TObject *GetParticle()
const {
return fParticle;}
57 Int_t GetPDG()
const {
return fPDG;}
58 Int_t GetLastPoint(Double_t &x, Double_t &y, Double_t &z, Double_t &t)
const {
return GetPoint(GetNpoints()-1,x,y,z,t);}
59 const Double_t *GetFirstPoint()
const {
return GetPoint(0);}
60 const Double_t *GetLastPoint()
const {
return GetPoint(GetNpoints()-1);}
61 virtual Int_t GetPoint(Int_t i, Double_t &x, Double_t &y, Double_t &z, Double_t &t)
const = 0;
62 virtual const Double_t *GetPoint(Int_t i)
const = 0;
63 Bool_t HasPoints()
const {
return (GetNpoints()==0)?kFALSE:kTRUE;}
64 Bool_t IsInTimeRange()
const;
65 virtual void Paint(Option_t *option=
"") = 0;
66 virtual void PaintCollect(Double_t , Double_t * ) {;}
67 virtual void PaintCollectTrack(Double_t , Double_t * ) {;}
68 virtual void PaintTrack(Option_t *option=
"") = 0;
69 virtual void ResetTrack() = 0;
70 void SetName(
const char *name);
71 virtual void SetParticle(TObject *particle) {fParticle=particle;}
72 void SetParent(TVirtualGeoTrack *parent) {fParent = parent;}
73 void SetId(Int_t
id) {fId = id;}
74 virtual void SetPDG(Int_t pdgcode) {fPDG = pdgcode;}
76 ClassDef(TVirtualGeoTrack, 1)