Logo ROOT  
Reference Guide
TVirtualGeoTrack.h
Go to the documentation of this file.
1// @(#)root/geom:$Id$
2// Author: Andrei Gheata 2003/04/10
3
4/*************************************************************************
5 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
6 * All rights reserved. *
7 * *
8 * For the licensing terms see $ROOTSYS/LICENSE. *
9 * For the list of contributors see $ROOTSYS/README/CREDITS. *
10 *************************************************************************/
11
12#ifndef ROOT_TVirtualGeoTrack
13#define ROOT_TVirtualGeoTrack
14
15#include "TObjArray.h"
16
17#include "TGeoAtt.h"
18
19#include "TAttLine.h"
20
21#include "TAttMarker.h"
22
24 public TGeoAtt,
25 public TAttLine,
26 public TAttMarker
27{
28protected:
29 Int_t fPDG{0}; // track pdg code
30 Int_t fId{-1}; // track id
31 TVirtualGeoTrack *fParent{nullptr}; // id of parent
32 TObject *fParticle{nullptr}; // particle for this track
33 TObjArray *fTracks{nullptr}; // daughter tracks
34
37
38public:
40 TVirtualGeoTrack(Int_t id, Int_t pdgcode, TVirtualGeoTrack *parent=0, TObject *particle=0);
41 virtual ~TVirtualGeoTrack();
42
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);}
52 virtual const char *GetName() const;
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;}
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 /*time*/, Double_t * /*box*/) {;}
67 virtual void PaintCollectTrack(Double_t /*time*/, Double_t * /*box*/) {;}
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;}
75
76 ClassDef(TVirtualGeoTrack, 1) // virtual geometry tracks
77};
78
79#endif
80
81
82
83
int Int_t
Definition: CPyCppyy.h:43
const Bool_t kFALSE
Definition: RtypesCore.h:101
bool Bool_t
Definition: RtypesCore.h:63
double Double_t
Definition: RtypesCore.h:59
const Bool_t kTRUE
Definition: RtypesCore.h:100
const char Option_t
Definition: RtypesCore.h:66
#define ClassDef(name, id)
Definition: Rtypes.h:325
Line Attributes class.
Definition: TAttLine.h:18
Marker Attributes class.
Definition: TAttMarker.h:19
Visualization and tracking attributes for volumes and nodes.
Definition: TGeoAtt.h:18
An array of TObjects.
Definition: TObjArray.h:37
Int_t GetEntriesFast() const
Definition: TObjArray.h:64
TObject * At(Int_t idx) const
Definition: TObjArray.h:166
Mother of all ROOT objects.
Definition: TObject.h:37
Base class for user-defined tracks attached to a geometry.
TVirtualGeoTrack * GetDaughter(Int_t index) const
Int_t GetParentId() const
virtual Int_t GetDaughterId(Int_t index) const
Returns daughter id.
Bool_t HasPoints() const
virtual TVirtualGeoTrack * AddDaughter(Int_t id, Int_t pdgcode, TObject *particle=0)=0
virtual Int_t GetNpoints() const =0
Int_t GetId() const
TVirtualGeoTrack * fParent
virtual Int_t AddDaughter(TVirtualGeoTrack *other)=0
virtual void AddPoint(Double_t x, Double_t y, Double_t z, Double_t t)=0
void SetParent(TVirtualGeoTrack *parent)
void SetName(const char *name)
Set a default name for this track.
virtual void Paint(Option_t *option="")=0
This method must be overridden if a class wants to paint itself.
virtual const char * GetName() const
Get the PDG name.
virtual void ResetTrack()=0
TVirtualGeoTrack(const TVirtualGeoTrack &)=delete
TVirtualGeoTrack * GetMother() const
TVirtualGeoTrack & operator=(const TVirtualGeoTrack &)=delete
virtual void SetParticle(TObject *particle)
TVirtualGeoTrack()
Virtual tracks default constructor.
virtual void PaintCollect(Double_t, Double_t *)
TObject * GetParticle() const
const Double_t * GetLastPoint() const
TObject * GetMotherParticle() const
Int_t GetPDG() const
virtual TVirtualGeoTrack * FindTrackWithId(Int_t id) const
Recursively search through this track for a daughter particle (at any depth) with the specified id.
virtual void SetPDG(Int_t pdgcode)
Int_t GetLastPoint(Double_t &x, Double_t &y, Double_t &z, Double_t &t) const
TObjArray * fTracks
virtual Int_t GetPoint(Int_t i, Double_t &x, Double_t &y, Double_t &z, Double_t &t) const =0
Bool_t IsInTimeRange() const
True if track TOF range overlaps with time interval of TGeoManager.
const Double_t * GetFirstPoint() const
virtual ~TVirtualGeoTrack()
Destructor.
virtual void PaintTrack(Option_t *option="")=0
void SetId(Int_t id)
virtual const Double_t * GetPoint(Int_t i) const =0
virtual void PaintCollectTrack(Double_t, Double_t *)
Int_t GetNdaughters() const
Double_t y[n]
Definition: legend1.C:17
Double_t x[n]
Definition: legend1.C:17
static const std::string name("name")