library: libGeom #include "TGeoCache.h"

# TGeoNodeCache

class description - source file - inheritance tree (.pdf)

## class TGeoNodeCache

| Inheritance Chart:
`TGeoNodeCache` |
<- |
`TGeoCacheDummy` |

        public:

                               TGeoNodeCache()
                               TGeoNodeCache(Bool_t nodeid)
                               TGeoNodeCache(Int_t size, Bool_t nodeid = kFALSE)
                               TGeoNodeCache(const TGeoNodeCache&)
                       virtual ~TGeoNodeCache()
                         Int_t AddNode(TGeoNode* node)
                          void BuildIdArray()
                         Int_t CacheId(Int_t nindex) const
                          void CdCache()
                virtual Bool_t CdDown(Int_t index, Bool_t make = kTRUE)
                          void CdNode(Int_t nodeid)
                  virtual void CdTop()
                  virtual void CdUp()
                static TClass* Class()
                  virtual void CleanCache()
                  virtual void ClearDaughter(Int_t index)
                  virtual void ClearNode(Int_t nindex)
                  virtual void Compact()
                  virtual void DeleteCaches()
                virtual Bool_t DumpNodes()
                          void FillIdBranch(const Int_t* br, Int_t startlevel = 0)
                 virtual void* GetBranch() const
                  virtual void GetBranchNames(Int_t*) const
                  virtual void GetBranchNumbers(Int_t*, Int_t*) const
                  virtual void GetBranchOnlys(Int_t*) const
          virtual TGeoHMatrix* GetCurrentMatrix() const
                         Int_t GetCurrentNode() const
                         Int_t GetCurrentNodeId() const
                 virtual Int_t GetFreeSpace() const
                  const Int_t* GetIdBranch() const
                         Int_t GetLevel() const
                 virtual void* GetMatrices() const
              TGeoMatrixCache* GetMatrixPool() const
             virtual TGeoNode* GetMother(Int_t up = 1) const
                 virtual Int_t GetNfree() const
             virtual TGeoNode* GetNode() const
                 virtual Int_t GetNodeId() const
                 virtual Int_t GetNused() const
           virtual const char* GetPath() const
                         Int_t GetSize() const
                         Int_t GetStackLevel() const
                         Int_t GetTopNode() const
                 virtual Int_t GetUsageCount() const
                        Bool_t HasIdArray() const
                  virtual void IncreasePool(Int_t size)
                  virtual void IncrementUsageCount()
                         Int_t Index(Int_t nindex) const
               virtual TClass* IsA() const
                virtual Bool_t IsDummy() const
                  virtual void LocalToMaster(const Double_t* local, Double_t* master) const
                  virtual void LocalToMasterBomb(const Double_t* local, Double_t* master) const
                  virtual void LocalToMasterVect(const Double_t* local, Double_t* master) const
                  virtual void MasterToLocal(const Double_t* master, Double_t* local) const
                  virtual void MasterToLocalBomb(const Double_t* master, Double_t* local) const
                  virtual void MasterToLocalVect(const Double_t* master, Double_t* local) const
                TGeoNodeCache& operator=(const TGeoNodeCache&)
                  virtual void PopDummy(Int_t ipop = 9999)
                virtual Bool_t PopState(Double_t* point = 0)
                virtual Bool_t PopState(Int_t level, Double_t* point = 0)
                  virtual void PrintNode() const
                 virtual Int_t PushState(Bool_t ovlp, Int_t startlevel = 0, Double_t* point = 0)
                  virtual void Refresh()
                          void SetDefaultLevel(Int_t level)
                        Bool_t SetPersistency()
                  virtual void ShowMembers(TMemberInspector& insp, char* parent)
                          void Status() const
                  virtual void Streamer(TBuffer& b)
                          void StreamerNVirtual(TBuffer& b)

### Data Members

        private:

                    Int_t fSize          current size of the cache
                    Int_t fNused         number of used nodes
                    Int_t fDefaultLevel  level down to which nodes will be persistent
                    Int_t fTopNode       top level physical node
                    Int_t fCount         total usage count
                    Int_t fCountLimit    count limit for which nodes become persistent
                    Int_t fCurrentNode   current physical node
                    Int_t fCurrentCache  current cache number
                    Int_t fCurrentIndex  index of current node in current cache
                   Int_t* fBranch        nodes from current branch
                   Int_t* fMatrices      matrix indices from current branch
                    Int_t fStackLevel    level in the stack of states
             TGeoHMatrix* fGlobalMatrix  current global matrix
          TGeoNodeArray** fCache         [128] cache of node arrays

        protected:

                  Double_t fGeoCacheUsageRatio    percentage of total usage count that triggers persistency
                     Int_t fGeoCacheMaxDaughters  max ndaugters for TGeoNodeArray
                     Int_t fGeoCacheMaxSize       maximum initial cache size
                     Int_t fGeoCacheDefaultLevel  default level down to store nodes
                     Int_t fGeoCacheMaxLevels     maximum supported number of levels
                     Int_t fGeoCacheObjArrayInd   maximum number of daughters stored as node arrays
                     Int_t fGeoCacheStackSize     maximum size of the stack
                     Int_t fLevel                 level in the current branch
                     Int_t fCurrentID             unique ID of current node
                   TString fPath                  path for current branch
                TObjArray* fStack                 stack of cache states
                    Int_t* fNodeIdArray           ! array of node id's
                     Int_t fIndex                 index in array of ID's
          TGeoMatrixCache* fMatrixPool            pool of compressed global matrices
                     Int_t fIdBranch[30]          current branch of indices

## Class Description

     Physical tree description.

/* */

TGeoNodeCache()

     dummy constructor

TGeoNodeCache(Bool_t nodeid)

     dummy constructor

TGeoNodeCache(Int_t size, Bool_t nodeid)

     constructor

~TGeoNodeCache()

     dtor

void BuildIdArray()

     Builds node id array.

Int_t GetCurrentNodeId() const

     Returns a fixed ID for current physical node

void Compact()

     compact arrays

void DeleteCaches()

     delete all node caches

Int_t AddNode(TGeoNode *node)

     add a logical node in the cache corresponding to ndaughters

void CdNode(Int_t nodeid)

     Change current path to point to the node having this id.
     Node id has to be in range : 0 to fNNodes-1 (no check for performance reasons)

Bool_t CdDown(Int_t index, Bool_t make)

     make daughter 'index' of current node current
     first make sure that current node is also current in its cache

void CdUp()

     change current path to mother.

void CleanCache()

     free nodes which are not persistent from cache
     except the current branch
     first compute count limit for persistency

Bool_t DumpNodes()

     dump all non-persistent branches

void ClearNode(Int_t nindex)

     clear the only the node nindex
       printf("clearing node %x\n", (UInt_t)nindex);

TGeoNode* GetMother(Int_t up) const

     get mother of current logical node, <up> levels up

Int_t GetNodeId() const

     Get unique node id.

const char* GetPath()

     prints the current path

void PrintNode() const

Int_t PushState(Bool_t ovlp, Int_t startlevel, Double_t *point)

void Refresh()

Bool_t PopState(Double_t *point)

Bool_t PopState(Int_t level, Double_t *point)

Bool_t SetPersistency()

void Status() const

     print status of cache

### Inline Functions

                       Int_t CacheId(Int_t nindex) const
                        void CdCache()
                        void CdTop()
                        void ClearDaughter(Int_t index)
                        void FillIdBranch(const Int_t* br, Int_t startlevel = 0)
                const Int_t* GetIdBranch() const
                       void* GetBranch() const
                        void GetBranchNames(Int_t*) const
                        void GetBranchNumbers(Int_t*, Int_t*) const
                        void GetBranchOnlys(Int_t*) const
                       void* GetMatrices() const
                TGeoHMatrix* GetCurrentMatrix() const
                       Int_t GetCurrentNode() const
                   TGeoNode* GetNode() const
                       Int_t GetStackLevel() const
                       Int_t GetTopNode() const
                       Int_t GetLevel() const
                       Int_t GetFreeSpace() const
            TGeoMatrixCache* GetMatrixPool() const
                       Int_t GetNfree() const
                       Int_t GetNused() const
                       Int_t GetSize() const
                       Int_t GetUsageCount() const
                      Bool_t HasIdArray() const
                        void IncreasePool(Int_t size)
                        void IncrementUsageCount()
                       Int_t Index(Int_t nindex) const
                      Bool_t IsDummy() const
                        void LocalToMaster(const Double_t* local, Double_t* master) const
                        void MasterToLocal(const Double_t* master, Double_t* local) const
                        void LocalToMasterVect(const Double_t* local, Double_t* master) const
                        void MasterToLocalVect(const Double_t* master, Double_t* local) const
                        void LocalToMasterBomb(const Double_t* local, Double_t* master) const
                        void MasterToLocalBomb(const Double_t* master, Double_t* local) const
                        void PopDummy(Int_t ipop = 9999)
                        void SetDefaultLevel(Int_t level)
                     TClass* Class()
                     TClass* IsA() const
                        void ShowMembers(TMemberInspector& insp, char* parent)
                        void Streamer(TBuffer& b)
                        void StreamerNVirtual(TBuffer& b)
               TGeoNodeCache TGeoNodeCache(const TGeoNodeCache&)
              TGeoNodeCache& operator=(const TGeoNodeCache&)

Author: Andrei Gheata 18/03/02
Last update: root/geom:$Name: $:$Id: TGeoCache.cxx,v 1.35 2005/05/26 13:20:26 brun Exp $
Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *