library: libGeom #include "TGeoCache.h"

# TGeoNodeArray

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

## class TGeoNodeArray : public TObject

| Inheritance Chart:
`TObject`
| <- | `TGeoNodeArray` |
<- |
`TGeoNodeObjArray` |

        public:

                            TGeoNodeArray()
                            TGeoNodeArray(Int_t ndaughters, Int_t size = 0)
                            TGeoNodeArray(const TGeoNodeArray&)
                    virtual ~TGeoNodeArray()
              virtual Int_t AddDaughter(TGeoNode* node, Int_t i)
              virtual Int_t AddMatrix(TGeoMatrix* global)
              virtual Int_t AddNode(TGeoNode* node)
               virtual void cd(Int_t inode)
             static TClass* Class()
               virtual void ClearDaughter(Int_t ind)
               virtual void ClearMatrix()
               virtual void ClearNode()
               virtual void Compact()
                       void DeleteArray()
              virtual Int_t GetDaughter(Int_t ind) const
              virtual Int_t GetMatrixInd() const
              virtual Int_t GetNdaughters() const
          virtual TGeoNode* GetNode() const
                      Int_t GetNused() const
                      Int_t GetSize() const
              virtual Int_t GetUsageCount() const
             virtual Bool_t HasDaughters() const
               virtual void IncreaseArray()
               virtual void IncrementUsageCount()
            virtual TClass* IsA() const
             virtual Bool_t IsPersistent() const
             TGeoNodeArray& operator=(const TGeoNodeArray&)
               virtual void SetMatrix(Int_t mind)
               virtual void SetPersistency(Bool_t flag = kTRUE)
               virtual void ShowMembers(TMemberInspector& insp, char* parent)
               virtual void Streamer(TBuffer& b)
                       void StreamerNVirtual(TBuffer& b)

### Data Members

        private:

           Int_t fNodeSize    size of a node in bytes
           Int_t fNdaughters  number of daughters for nodes in this array
          Int_t* fOffset      [fSize*fNodeSize] offset of the current node
          Int_t* fArray       array of nodes

        protected:

           Int_t fSize       number of nodes stored in array
           Int_t fFirstFree  index of first free location
           Int_t fCurrent    index of current node
           Int_t fNused      number of used nodes
          TBits* fBitsArray  occupancy flags

        public:

          static const Int_t kGeoArrayMaxSize   maximum cache size
          static const Int_t kGeoArrayInitSize  initial cache size
          static const Int_t kGeoReleasedSpace  default number of nodes released on cleaning

## Class Description

     Physical tree description.

/* */

TGeoNodeArray()

     dummy ctor

TGeoNodeArray(Int_t ndaughters, Int_t size)

     default constructor

~TGeoNodeArray()

     destructor
       DeleteArray();

Int_t AddDaughter(TGeoNode *node, Int_t i)

    --- Add node as i-th daughter of current node of this array

Int_t AddMatrix(TGeoMatrix *global)

     Adds a global matrix to the current node in this array

void Compact()

     compact the array

void DeleteArray()

Int_t AddNode(TGeoNode *node)

     Add node in the node array. The number of daughters
     MUST be equal to fNdaughters (no check for speed reasons)
     It does not check if node is already in the cache. This is
     done by AddDaughter
     first compute the offset of the first free location

void ClearDaughter(Int_t ind)

     clear the daughter ind from the list of the current node. Send the
     signal back to TGeoNodeCache, that proceeds with dispatching the
     clear signal for all the branch

void ClearMatrix()

     clears the global matrix of this node from matrix cache

void ClearNode()

     clear the current node. All branch from this point downwords
     will be deleted
     remember the current node

Bool_t HasDaughters() const

void IncreaseArray()

     Doubles the array size unless maximum cache limit is reached or
     global cache limit is reached. In this case forces the cache
     manager to do the garbage collection.
       printf("Increasing array %i\n", fNdaughters);

Bool_t IsPersistent() const

     returns persistency flag of the node

void SetPersistency(Bool_t flag)

### Inline Functions

                      void cd(Int_t inode)
                     Int_t GetDaughter(Int_t ind) const
                     Int_t GetMatrixInd() const
                     Int_t GetNdaughters() const
                 TGeoNode* GetNode() const
                     Int_t GetNused() const
                     Int_t GetSize() const
                     Int_t GetUsageCount() const
                      void IncrementUsageCount()
                      void SetMatrix(Int_t mind)
                   TClass* Class()
                   TClass* IsA() const
                      void ShowMembers(TMemberInspector& insp, char* parent)
                      void Streamer(TBuffer& b)
                      void StreamerNVirtual(TBuffer& b)
             TGeoNodeArray TGeoNodeArray(const TGeoNodeArray&)
            TGeoNodeArray& operator=(const TGeoNodeArray&)

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. *