A++ » INCLUDE » TGeoNavigator

class TGeoNavigator: public TObject


TGeoNavigator - Class containing the implementation of all navigation
   methods.


Function Members (Methods)

public:
virtual~TGeoNavigator()
voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
voidBuildCache(Bool_t dummy = kFALSE, Bool_t nodeid = kFALSE)
Bool_tcd(const char* path = "")
voidCdDown(Int_t index)
voidCdDown(TGeoNode* node)
voidCdNext()
voidCdNode(Int_t nodeid)
voidCdTop()
voidCdUp()
Bool_tCheckPath(const char* path) const
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTObject::Clear(Option_t* = "")
virtual TObject*TObject::Clone(const char* newname = "") const
virtual Int_tTObject::Compare(const TObject* obj) const
virtual voidTObject::Copy(TObject& object) const
TGeoNode*CrossBoundaryAndLocate(Bool_t downwards, TGeoNode* skipnode)
virtual voidTObject::Delete(Option_t* option = "")MENU
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
voidDoBackupState()
voidDoRestoreState()
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() constMENU
virtual TObject*TObject::DrawClone(Option_t* option = "") constMENU
virtual voidTObject::Dump() constMENU
virtual voidTObject::Error(const char* method, const char* msgfmt) const
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
TGeoNode*FindNextBoundary(Double_t stepmax = TGeoShape::Big(), const char* path = "", Bool_t frombdr = kFALSE)
TGeoNode*FindNextBoundaryAndStep(Double_t stepmax = TGeoShape::Big(), Bool_t compsafe = kFALSE)
TGeoNode*FindNextDaughterBoundary(Double_t* point, Double_t* dir, Int_t& idaughter, Bool_t compmatrix = kFALSE)
TGeoNode*FindNode(Bool_t safe_start = kTRUE)
TGeoNode*FindNode(Double_t x, Double_t y, Double_t z)
Double_t*FindNormal(Bool_t forward = kTRUE)
Double_t*FindNormalFast()
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
voidGetBranchNames(Int_t* names) const
voidGetBranchNumbers(Int_t* copyNumbers, Int_t* volumeNumbers) const
voidGetBranchOnlys(Int_t* isonly) const
TGeoNodeCache*GetCache() const
const Double_t*GetCldir() const
const Double_t*GetCldirChecked() const
const Double_t*GetCurrentDirection() const
TGeoHMatrix*GetCurrentMatrix() const
TGeoNode*GetCurrentNode() const
Int_tGetCurrentNodeId() const
const Double_t*GetCurrentPoint() const
TGeoVolume*GetCurrentVolume() const
TGeoHMatrix*GetDivMatrix() const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
TGeoHMatrix*GetHMatrix()
virtual const char*TObject::GetIconName() const
const Double_t*GetLastPoint() const
Double_tGetLastSafety() const
Int_tGetLevel() const
TGeoNode*GetMother(Int_t up = 1) const
TGeoHMatrix*GetMotherMatrix(Int_t up = 1) const
virtual const char*TObject::GetName() const
Int_tGetNextDaughterIndex() const
TGeoNode*GetNextNode() const
Int_tGetNmany() const
Int_tGetNodeId() const
const Double_t*GetNormal() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
const char*GetPath() const
Double_tGetSafeDistance() const
Int_tGetSafeLevel() const
Int_tGetStackLevel() const
Double_tGetStep() const
Int_tGetThreadId() const
virtual const char*TObject::GetTitle() const
virtual UInt_tTObject::GetUniqueID() const
Int_tGetVirtualLevel()
Bool_tGotoSafeLevel()
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTObject::Hash() const
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
TGeoNode*InitTrack(const Double_t* point, const Double_t* dir)
TGeoNode*InitTrack(Double_t x, Double_t y, Double_t z, Double_t nx, Double_t ny, Double_t nz)
virtual voidTObject::Inspect() constMENU
voidInspectState() const
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
Bool_tIsCheckingOverlaps() const
Bool_tIsCurrentOverlapping() const
Bool_tIsEntering() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
Bool_tIsExiting() const
virtual Bool_tTObject::IsFolder() const
Bool_tIsNullStep() const
Bool_tIsOnBoundary() const
Bool_tTObject::IsOnHeap() const
Bool_tIsOutside() const
Bool_tIsSafeStep(Double_t proposed, Double_t& newsafety) const
Bool_tIsSameLocation() const
Bool_tIsSameLocation(Double_t x, Double_t y, Double_t z, Bool_t change = kFALSE)
Bool_tIsSamePoint(Double_t x, Double_t y, Double_t z) const
virtual Bool_tTObject::IsSortable() const
Bool_tIsStartSafe() const
Bool_tIsStepEntering() const
Bool_tIsStepExiting() const
Bool_tTObject::IsZombie() const
voidLocalToMaster(const Double_t* local, Double_t* master) const
voidLocalToMasterBomb(const Double_t* local, Double_t* master) const
voidLocalToMasterVect(const Double_t* local, Double_t* master) const
virtual voidTObject::ls(Option_t* option = "") const
voidMasterToLocal(const Double_t* master, Double_t* local) const
voidMasterToLocalBomb(const Double_t* master, Double_t* local) const
voidMasterToLocalVect(const Double_t* master, Double_t* local) const
voidMasterToTop(const Double_t* master, Double_t* top) const
voidTObject::MayNotUse(const char* method) const
virtual Bool_tTObject::Notify()
voidTObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const
voidTObject::operator delete(void* ptr)
voidTObject::operator delete(void* ptr, void* vp)
voidTObject::operator delete[](void* ptr)
voidTObject::operator delete[](void* ptr, void* vp)
void*TObject::operator new(size_t sz)
void*TObject::operator new(size_t sz, void* vp)
void*TObject::operator new[](size_t sz)
void*TObject::operator new[](size_t sz, void* vp)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
voidPopDummy(Int_t ipop = 9999)
Bool_tPopPath()
Bool_tPopPath(Int_t index)
Bool_tPopPoint()
Bool_tPopPoint(Int_t index)
virtual voidTObject::Print(Option_t* option = "") const
Int_tPushPath(Int_t startlevel = 0)
Int_tPushPoint(Int_t startlevel = 0)
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
voidResetAll()
voidTObject::ResetBit(UInt_t f)
voidResetState()
Double_tSafety(Bool_t inside = kFALSE)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(ostream& out, Option_t* option = "")
TGeoNode*SearchNode(Bool_t downwards = kFALSE, const TGeoNode* skipnode = 0)
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
voidSetCheckingOverlaps(Bool_t flag = kTRUE)
voidSetCldirChecked(Double_t* dir)
voidSetCurrentDirection(const Double_t* dir)
voidSetCurrentDirection(Double_t nx, Double_t ny, Double_t nz)
voidSetCurrentPoint(const Double_t* point)
voidSetCurrentPoint(Double_t x, Double_t y, Double_t z)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
voidSetLastPoint(Double_t x, Double_t y, Double_t z)
voidSetLastSafetyForPoint(Double_t safe, const Double_t* point)
voidSetLastSafetyForPoint(Double_t safe, Double_t x, Double_t y, Double_t z)
static voidTObject::SetObjectStat(Bool_t stat)
voidSetOutside(Bool_t flag = kTRUE)
voidSetStartSafe(Bool_t flag = kTRUE)
voidSetStep(Double_t step)
virtual voidTObject::SetUniqueID(UInt_t uid)
virtual voidShowMembers(TMemberInspector& insp) const
TGeoNode*Step(Bool_t is_geom = kTRUE, Bool_t cross = kTRUE)
virtual voidStreamer(TBuffer&)
voidStreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
TGeoNavigator()
TGeoNavigator(TGeoManager* geom)
voidTopToMaster(const Double_t* top, Double_t* master) const
virtual voidTObject::UseCurrentStyle()
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const
protected:
TGeoNode*CrossDivisionCell()
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
TGeoNode*FindInCluster(Int_t* cluster, Int_t nc)
Int_tGetTouchedCluster(Int_t start, Double_t* point, Int_t* check_list, Int_t ncheck, Int_t* result)
voidTObject::MakeZombie()
TGeoNavigator&operator=(const TGeoNavigator&)
voidSafetyOverlaps()
TGeoNavigator(const TGeoNavigator&)

Data Members

public:
static TObject::(anonymous)TObject::kBitMask
static TObject::EStatusBitsTObject::kCanDelete
static TObject::EStatusBitsTObject::kCannotPick
static TObject::EStatusBitsTObject::kHasUUID
static TObject::EStatusBitsTObject::kInvalidObject
static TObject::(anonymous)TObject::kIsOnHeap
static TObject::EStatusBitsTObject::kIsReferenced
static TObject::EStatusBitsTObject::kMustCleanup
static TObject::EStatusBitsTObject::kNoContextMenu
static TObject::(anonymous)TObject::kNotDeleted
static TObject::EStatusBitsTObject::kObjInCanvas
static TObject::(anonymous)TObject::kOverwrite
static TObject::(anonymous)TObject::kSingleKey
static TObject::(anonymous)TObject::kWriteDelete
static TObject::(anonymous)TObject::kZombie
private:
TGeoCacheState*fBackupState! backup state
TGeoNodeCache*fCache! cache of states
Double_tfCldir[3]! unit vector to current closest shape
Double_tfCldirChecked[3]! unit vector to current checked shape
TGeoHMatrix*fCurrentMatrix! current stored global matrix
TGeoNode*fCurrentNode! current node
Bool_tfCurrentOverlapping! flags the type of the current node
TGeoVolume*fCurrentVolume! current volume
Double_tfDirection[3]! current direction
TGeoHMatrix*fDivMatrix! current local matrix of the selected division cell
TGeoNode*fForcedNode! current point is supposed to be inside this node
TGeoManager*fGeometry! current geometry
TGeoHMatrix*fGlobalMatrix! current pointer to cached global matrix
Bool_tfIsEntering! flag if current step just got into a new node
Bool_tfIsExiting! flag that current track is about to leave current node
Bool_tfIsNullStep! flag that last geometric step was null
Bool_tfIsOnBoundary! flag that current point is on some boundary
Bool_tfIsOutside! flag that current point is outside geometry
Bool_tfIsSameLocation! flag that a new point is in the same node as previous
Bool_tfIsStepEntering! flag that next geometric step will enter new volume
Bool_tfIsStepExiting! flag that next geometric step will exit current volume
TGeoNode*fLastNode! last searched node
Double_tfLastPoint[3]! last point for which safety was computed
Double_tfLastSafety! last computed safety radius
Int_tfLevel! current geometry level;
Int_tfNextDaughterIndex! next daughter index after FindNextBoundary
TGeoNode*fNextNode! next node that will be crossed
Int_tfNmany! number of overlapping nodes on current branch
Double_tfNormal[3]! cosine of incident angle on current checked surface
Int_t*fOverlapClusters! internal array for overlaps
Int_tfOverlapMark! current recursive position in fOverlapClusters
Int_tfOverlapSize! current size of fOverlapClusters
TStringfPath! path to current node
Double_tfPoint[3]! current point
Double_tfSafety! safety radius from current point
Bool_tfSearchOverlaps! flag set when an overlapping cluster is searched
Bool_tfStartSafe! flag a safe start for point classification
Double_tfStep! step to be done from current point and direction
Int_tfThreadId! thread id for this navigator
TGeoNode*fTopNode! top physical node

Class Charts

Inheritance Chart:
TObject
TGeoNavigator

Function documentation

TGeoNavigator(const TGeoNavigator& )
TGeoNavigator& operator=(const TGeoNavigator& )
TGeoNode * FindInCluster(Int_t* cluster, Int_t nc)
Int_t GetTouchedCluster(Int_t start, Double_t* point, Int_t* check_list, Int_t ncheck, Int_t* result)
void SafetyOverlaps()
TGeoNavigator()
TGeoNavigator(TGeoManager* geom)
virtual ~TGeoNavigator()
void BuildCache(Bool_t dummy = kFALSE, Bool_t nodeid = kFALSE)
Bool_t cd(const char* path = "")
Bool_t CheckPath(const char* path) const
void CdNode(Int_t nodeid)
void CdDown(Int_t index)
void CdDown(TGeoNode* node)
void CdUp()
void CdTop()
void CdNext()
void GetBranchNames(Int_t* names) const
void GetBranchNumbers(Int_t* copyNumbers, Int_t* volumeNumbers) const
void GetBranchOnlys(Int_t* isonly) const
Int_t GetNmany() const
--- geometry queries
{return fNmany;}
TGeoNode * CrossBoundaryAndLocate(Bool_t downwards, TGeoNode* skipnode)
TGeoNode * FindNextBoundary(Double_t stepmax = TGeoShape::Big(), const char* path = "", Bool_t frombdr = kFALSE)
TGeoNode * FindNextDaughterBoundary(Double_t* point, Double_t* dir, Int_t& idaughter, Bool_t compmatrix = kFALSE)
TGeoNode * FindNextBoundaryAndStep(Double_t stepmax = TGeoShape::Big(), Bool_t compsafe = kFALSE)
TGeoNode * FindNode(Bool_t safe_start = kTRUE)
TGeoNode * FindNode(Double_t x, Double_t y, Double_t z)
Double_t * FindNormal(Bool_t forward = kTRUE)
Double_t * FindNormalFast()
TGeoNode * InitTrack(const Double_t* point, const Double_t* dir)
TGeoNode * InitTrack(Double_t x, Double_t y, Double_t z, Double_t nx, Double_t ny, Double_t nz)
void ResetState()
void ResetAll()
Double_t Safety(Bool_t inside = kFALSE)
TGeoNode * SearchNode(Bool_t downwards = kFALSE, const TGeoNode* skipnode = 0)
TGeoNode * Step(Bool_t is_geom = kTRUE, Bool_t cross = kTRUE)
const Double_t * GetLastPoint() const
{return fLastPoint;}
Int_t GetVirtualLevel()
Bool_t GotoSafeLevel()
Int_t GetSafeLevel() const
Double_t GetSafeDistance() const
{return fSafety;}
Double_t GetLastSafety() const
{return fLastSafety;}
Double_t GetStep() const
{return fStep;}
Int_t GetThreadId() const
{return fThreadId;}
void InspectState() const
Bool_t IsSafeStep(Double_t proposed, Double_t& newsafety) const
Bool_t IsSameLocation(Double_t x, Double_t y, Double_t z, Bool_t change = kFALSE)
Bool_t IsSameLocation() const
{return fIsSameLocation;}
Bool_t IsSamePoint(Double_t x, Double_t y, Double_t z) const
Bool_t IsStartSafe() const
{return fStartSafe;}
void SetStartSafe(Bool_t flag = kTRUE)
{fStartSafe=flag;}
void SetStep(Double_t step)
{fStep=step;}
Bool_t IsCheckingOverlaps() const
{return fSearchOverlaps;}
Bool_t IsCurrentOverlapping() const
Bool_t IsEntering() const
{return fIsEntering;}
Bool_t IsExiting() const
{return fIsExiting;}
Bool_t IsStepEntering() const
{return fIsStepEntering;}
Bool_t IsStepExiting() const
{return fIsStepExiting;}
Bool_t IsOutside() const
{return fIsOutside;}
Bool_t IsOnBoundary() const
{return fIsOnBoundary;}
Bool_t IsNullStep() const
{return fIsNullStep;}
void SetCheckingOverlaps(Bool_t flag = kTRUE)
{fSearchOverlaps = flag;}
void SetOutside(Bool_t flag = kTRUE)
--- modeler state getters/setters
{fIsOutside = flag;}
void DoBackupState()
void DoRestoreState()
Int_t GetNodeId() const
{return fCache->GetNodeId();}
Int_t GetNextDaughterIndex() const
TGeoNode * GetNextNode() const
{return fNextNode;}
TGeoNode * GetMother(Int_t up = 1) const
{return fCache->GetMother(up);}
TGeoHMatrix * GetMotherMatrix(Int_t up = 1) const
{return fCache->GetMotherMatrix(up);}
TGeoHMatrix * GetHMatrix()
TGeoHMatrix * GetCurrentMatrix() const
TGeoNode * GetCurrentNode() const
{return fCurrentNode;}
Int_t GetCurrentNodeId() const
const Double_t * GetCurrentPoint() const
{return fPoint;}
const Double_t * GetCurrentDirection() const
{return fDirection;}
TGeoVolume * GetCurrentVolume() const
{return fCurrentNode->GetVolume();}
const Double_t * GetCldirChecked() const
{return fCldirChecked;}
const Double_t * GetCldir() const
{return fCldir;}
TGeoHMatrix * GetDivMatrix() const
   Double_t               GetNormalChecked() const {return fNormalChecked;}
{return fDivMatrix;}
const Double_t * GetNormal() const
{return fNormal;}
Int_t GetLevel() const
{return fLevel;}
const char * GetPath() const
Int_t GetStackLevel() const
{return fCache->GetStackLevel();}
void SetCurrentPoint(const Double_t* point)
{memcpy(fPoint,point,3*sizeof(Double_t));}
void SetCurrentPoint(Double_t x, Double_t y, Double_t z)
void SetLastPoint(Double_t x, Double_t y, Double_t z)
void SetCurrentDirection(const Double_t* dir)
{memcpy(fDirection,dir,3*sizeof(Double_t));}
void SetCurrentDirection(Double_t nx, Double_t ny, Double_t nz)
void SetCldirChecked(Double_t* dir)
   void                   SetNormalChecked(Double_t norm) {fNormalChecked=norm;}
{memcpy(fCldirChecked, dir, 3*sizeof(Double_t));}
void SetLastSafetyForPoint(Double_t safe, const Double_t* point)
{fLastSafety=safe; memcpy(fLastPoint,point,3*sizeof(Double_t));}
void SetLastSafetyForPoint(Double_t safe, Double_t x, Double_t y, Double_t z)
{fLastSafety=safe; fLastPoint[0]=x; fLastPoint[1]=y, fLastPoint[2]=z;}
void LocalToMaster(const Double_t* local, Double_t* master) const
--- point/vector reference frame conversion
{fCache->LocalToMaster(local, master);}
void LocalToMasterVect(const Double_t* local, Double_t* master) const
{fCache->LocalToMasterVect(local, master);}
void LocalToMasterBomb(const Double_t* local, Double_t* master) const
{fCache->LocalToMasterBomb(local, master);}
void MasterToLocal(const Double_t* master, Double_t* local) const
{fCache->MasterToLocal(master, local);}
void MasterToLocalVect(const Double_t* master, Double_t* local) const
{fCache->MasterToLocalVect(master, local);}
void MasterToLocalBomb(const Double_t* master, Double_t* local) const
{fCache->MasterToLocalBomb(master, local);}
void MasterToTop(const Double_t* master, Double_t* top) const
void TopToMaster(const Double_t* top, Double_t* master) const
TGeoNodeCache * GetCache() const
   void                   SetCache(const TGeoNodeCache *cache) {fCache = (TGeoNodeCache*)cache;}
--- stack manipulation
{return fCache;}
Int_t PushPath(Int_t startlevel = 0)
{return fCache->PushState(fCurrentOverlapping, startlevel, fNmany);}
Bool_t PopPath()
Bool_t PopPath(Int_t index)
Int_t PushPoint(Int_t startlevel = 0)
Bool_t PopPoint()
Bool_t PopPoint(Int_t index)
void PopDummy(Int_t ipop = 9999)
{fCache->PopDummy(ipop);}