library: libTable #include "TVolume.h"

# TVolume

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

## class TVolume : public TObjectSet, public TAttLine, public TAttFill, public TAtt3D

| Inheritance Chart:
`TObject`
| <- | `TNamed`
| <- | `TDataSet`
| <- | `TObjectSet`
`TAttLine`
`TAttFill`
`TAtt3D`
| <- | `TVolume` |

        protected:

                      virtual void Add(TDataSet* dataset)
                      virtual void Add(TVolumePosition* position)
          virtual TVolumePosition* Add(TVolume* node, TVolumePosition* nodePosition)
                     virtual Int_t DistancetoNodePrimitive(Int_t px, Int_t py, TVolumePosition* position = 0)
                      virtual void PaintNodePosition(Option_t* option = "", TVolumePosition* postion = 0)
                              void SetPositionsList(TList* list = 0)

        public:

                                     TVolume()
                                     TVolume(const Text_t* name, const Text_t* title, const Text_t* shapename, Option_t* option = "")
                                     TVolume(const Text_t* name, const Text_t* title, TShape* shape, Option_t* option = "")
                                     TVolume(TNode& node)
                                     TVolume(const TVolume&)
                             virtual ~TVolume()
            virtual TVolumePosition* Add(TVolume* node, Double_t x = 0, Double_t y = 0, Double_t z = 0, TRotMatrix* matrix = 0, UInt_t id = 0, Option_t* option = "")
            virtual TVolumePosition* Add(TVolume* node, Double_t x, Double_t y, Double_t z, const Text_t* matrixname, UInt_t id = 0, Option_t* option = "")
                        virtual void Add(TShape* shape, Bool_t IsMaster = kFALSE)
                        virtual void Browse(TBrowser* b)
                      static TClass* Class()
                      virtual TNode* CreateTNode(const TVolumePosition* position = 0)
                        virtual void DeletePosition(TVolumePosition* position)
                       virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
                        virtual void Draw(Option_t* depth = "3")
                        virtual void DrawOnly(Option_t* option = "")
                        virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py)
                  static TRotMatrix* GetIdentity()
                      virtual TList* GetListOfPositions()
                              TList* GetListOfShapes() const
                        virtual void GetLocalRange(Float_t* min, Float_t* max)
                     virtual Text_t* GetObjectInfo(Int_t px, Int_t py) const
                   virtual Option_t* GetOption() const
                             TShape* GetShape() const
          virtual TVolume::ENodeSEEN GetVisibility() const
                     virtual ULong_t Hash() const
                        virtual void ImportShapeAttributes()
                      virtual Bool_t Is3D() const
                     virtual TClass* IsA() const
                      virtual Bool_t IsMarked() const
                        static Int_t MapGEANT2StNodeVis(Int_t vis)
                        static Int_t MapStNode2GEANTVis(TVolume::ENodeSEEN vis)
                      virtual TList* Nodes() const
                        virtual void Paint(Option_t* option = "")
                        virtual void PaintShape(Option_t* option = "")
                        virtual void SetVisibility(TVolume::ENodeSEEN vis = TVolume::kBothVisible)
                        virtual void ShowMembers(TMemberInspector& insp, char* parent)
                        virtual void Sizeof3D() const
                        virtual void Streamer(TBuffer& b)
                                void StreamerNVirtual(TBuffer& b)

### Data Members

        protected:

                     TShape* fShape         Pointer to the "master" shape definition
                      TList* fListOfShapes  Pointer to the list of the shape definitions
                     TString fOption        List of options if any
          TVolume::ENodeSEEN fVisibility    Visibility flag  00 - everything visible,

        public:

          static const TVolume::ENodeSEEN kBothVisible
          static const TVolume::ENodeSEEN kSonUnvisible
          static const TVolume::ENodeSEEN kThisUnvisible
          static const TVolume::ENodeSEEN kNoneVisible

## Class Description

    *-*-*-*-*-*-*-*-*-*-*-* T V O L U M E  description *-*-*-*-*-*-*-*-*-*-*-*-*
    *-*                     ==========================
    *-*
    *-*    A TVolume object is used to build the geometry hierarchy.
    *-*    Since TVolume is derived from TDataSet class it may contain other volumes.
    *-*
    *-*    A geometry volume has attributes:
    *-*      - name and title
    *-*      - pointer to the referenced shape (see TShape).
    *-*      - list of TVolumePosition object defining the position of the nested volumes
    *-*        with respect to the mother node.
    *-*
    *-*
    *-*    A volume can be drawn.
    *-*
    *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

TVolume()

    *-*-*-*-*-*-*-*-*-*-*Volume default constructor*-*-*-*-*-*-*-*-*-*-*-*-*
    *-*                  ========================

TVolume(const Text_t *name, const Text_t *title, const Text_t *shapename, Option_t *option) :TObjectSet(name),TAttLine(), TAttFill(),fShape(0),fListOfShapes(0)

    *-*-*-*-*-*-*-*-*-*-*Volume normal constructor*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
    *-*                  =========================
    *-*
    *-*    name    is the name of the node
    *-*    title   is title
    *-*    shapename is the name of the referenced shape
    *-*
    *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

TVolume(const Text_t *name, const Text_t *title, TShape *shape, Option_t *option) :TObjectSet(name),TAttLine(),TAttFill(),fShape(0),fListOfShapes(0)

    *-*-*-*-*-*-*-*-*-*-*Volume normal constructor*-*-*-*-*-*-*-*-*-*-*
    *-*                  ================================
    *-*
    *-*    name    is the name of the node
    *-*    title   is title
    *-*    shape   is the pointer to the shape definition
    *-*
    *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
    *-* The color "1" - default produces a very bad 3D image with OpenGL

Int_t MapStNode2GEANTVis(ENodeSEEN vis)

     ENodeSEEN Visibility flag  00 - everything visible,
                                10 - this unvisible, but sons are visible
                                01 - this visible but sons
                                11 - neither this nor its sons are visible
     Maps the value of the visibility flag to

GEANT 3.21 "volume attributes"

Int_t MapGEANT2StNodeVis(Int_t vis)

     Maps the value of

GEANT 3.21 "volume attributes"

     to the visibility flag

TVolume(TNode &rootNode):fShape(0),fListOfShapes(0)

     Convert a TNode object into a TVolume

void Add(TShape *shape, Bool_t IsMaster)

TNode* CreateTNode(const TVolumePosition *position)

     Convert a TVolume object into a TNode

~TVolume()

    *-*-*-*-*-*-*-*-*-*-*Volume default destructor*-*-*-*-*-*-*-*-*-*-*-*-*-*
    *-*                  ======================

void Add(TVolumePosition *position)

TVolumePosition* Add(TVolume *node, TVolumePosition *nodePosition)

TVolumePosition* Add(TVolume *volume, Double_t x, Double_t y, Double_t z, TRotMatrix *matrix, UInt_t id, Option_t *)

    *-*
    *-*    volume  the pointer to the volume to be placed
    *-*    x,y,z   are the offsets of the volume with respect to his mother
    *-*    matrix  is the pointer to the rotation matrix
    *-*     id     is a unique position id
    *-*

TVolumePosition* Add(TVolume *volume, Double_t x, Double_t y, Double_t z, const Text_t *matrixname, UInt_t id, Option_t *)

    *-*
    *-*    volume      the pointer to the volume to be placed
    *-*    x,y,z       are the offsets of the volume with respect to his mother
    *-*    matrixname  is the name of the rotation matrix
    *-*     id         is a unique position id
    *-*

void Browse(TBrowser *b)

Int_t DistancetoPrimitive(Int_t px, Int_t py)

Int_t DistancetoNodePrimitive(Int_t px, Int_t py,TVolumePosition *pos)

    *-*-*-*-*-*-*-*-*Compute distance from point px,py to a TVolumeView*-*-*-*-*-*
    *-*                  ===========================================
    *-*  Compute the closest distance of approach from point px,py to the position of
    *-*  this volume.
    *-*  The distance is computed in pixels units.
    *-*
    *-*  It is restricted by 2 levels of TVolumes
    *-*
    *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

void Draw(Option_t *option)

    *-*-*-*-*-*-*-*-*-*-*-*Draw Referenced node with current parameters*-*-*-*
    *-*                   =============================================

void DrawOnly(Option_t *option)

    *-*-*-*-*-*-*-*-*-*Draw only Sons of this node*-*-*-*-*-*-*-*-*-*-*-*-*
    *-*                ===========================

void ExecuteEvent(Int_t, Int_t, Int_t)

    *-*-*-*-*-*-*-*-*-*-*Execute action corresponding to one event*-*-*-*
    *-*                  =========================================
    *-*  This member function must be implemented to realize the action
    *-*  corresponding to the mouse click on the object in the window
    *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

TRotMatrix* GetIdentity()

Text_t* GetObjectInfo(Int_t px, Int_t py) const

void ImportShapeAttributes()

    *-*-*-*-*-*-*Copy shape attributes as node attributes*-*-*-*-*--*-*-*-*-*-*
    *-*          ========================================

void Paint(Option_t *opt)

    *-*- Draw Referenced node

void PaintNodePosition(Option_t *option,TVolumePosition *pos)

    *-*-*-*-*-*-*-*-*-*-*-*Paint Referenced volume with current parameters*-*-*-*
    *-*                   ==============================================
    *-*
    *-*  vis = 1  (default) shape is drawn
    *-*  vis = 0  shape is not drawn but its sons may be not drawn
    *-*  vis = -1 shape is not drawn. Its sons are not drawn
    *-*  vis = -2 shape is drawn. Its sons are not drawn
    *-*
    *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

void PaintShape(Option_t *option)

     Paint shape of the volume
     To be called from the TObject::Paint method only

void DeletePosition(TVolumePosition *position)

     DeletePosition deletes the position of the TVolume *node from this TVolume
     and removes that volume from the list of the nodes of this TVolume

void GetLocalRange(Float_t *min, Float_t *max)

      GetRange

      Calculates the size of 3 box the volume occupies,
      Return:
        two floating point arrays with the bound of box
         surroundind all shapes of this TVolumeView

void SetVisibility(ENodeSEEN vis)

    *-*-*-*-*-*-*Set visibility for this volume and its sons*-*-*-*-*--*-*-*-*-*-*
    *-*          =========================================
     ENodeSEEN Visibility flag  00 - everything visible,
                                10 - this unvisible, but sons are visible
                                01 - this visible but sons
                                11 - neither this nor its sons are visible
    *-*
    *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

void Sizeof3D() const

    *-*-*-*-*-*-*Return total size of this 3-D volume with its attributes*-*-*
    *-*          ==========================================================

### Inline Functions

                          void SetPositionsList(TList* list = 0)
                          void Add(TShape* shape, Bool_t IsMaster = kFALSE)
                     Option_t* GetOption() const
                       TShape* GetShape() const
                        TList* GetListOfShapes() const
            TVolume::ENodeSEEN GetVisibility() const
                        TList* GetListOfPositions()
                       ULong_t Hash() const
                        Bool_t IsMarked() const
                        Bool_t Is3D() const
                        TList* Nodes() const
                       TClass* Class()
                       TClass* IsA() const
                          void ShowMembers(TMemberInspector& insp, char* parent)
                          void Streamer(TBuffer& b)
                          void StreamerNVirtual(TBuffer& b)
                       TVolume TVolume(const TVolume&)

Author: Valery Fine 10/12/98
Last update: root/star:$Name: $:$Id: TVolume.cxx,v 1.8 2005/06/01 15:41:46 rdm Exp $
Copyright (c) 1998, FineSoft, All rights reserved. Valery Fine (Faine) *