library: libTable #include "TVolumeView.h"

# TVolumeView

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

## class TVolumeView : public TObjectSet, public TAtt3D

| Inheritance Chart:
`TObject`
| <- | `TNamed`
| <- | `TDataSet`
| <- | `TObjectSet`
`TAtt3D`
| <- | `TVolumeView` |

        protected:

                       TVolumeView(TVolumeView& viewNode)
          virtual void PaintShape(Option_t* option)

        public:

                                   TVolumeView()
                                   TVolumeView(TVolumeView* viewNode, TVolumePosition* nodePosition = 0)
                                   TVolumeView(TVolumeView* viewNode, const Char_t* NodeName1, const Char_t* NodeName2 = "0")
                                   TVolumeView(TVolumeView* viewNode, TVolumeView* topNode)
                                   TVolumeView(TVolumeView* viewNode, const TVolumeView* node1, const TVolumeView* node2)
                                   TVolumeView(TVolume& pattern, Int_t maxDepLevel = 0, const TVolumePosition* nodePosition = 0, TDataSet::EDataSetPass iopt = kMarked, TVolumeView* root = 0)
                                   TVolumeView(Double_t* translate, Double_t* rotate, UInt_t positionId, TVolume* thisNode, const Char_t* thisNodePath, const Char_t* matrixName = "0", Int_t matrixType = 0)
                                   TVolumeView(TVolume* thisNode, TVolumePosition* nodePosition)
                           virtual ~TVolumeView()
                      virtual void Add(TDataSet* dataset)
                      virtual void Add(TVolumeView* node)
                      virtual void Add(TShape* shape, Bool_t IsMaster = kFALSE)
                  virtual TVolume* AddNode(TVolume* node)
                      virtual void Browse(TBrowser* b)
                    static TClass* Class()
                     virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
                      virtual void Draw(Option_t* depth = "3")
                     virtual Int_t GetGlobalRange(const TVolumeView* rootNode, Float_t* min, Float_t* max)
                    virtual TList* GetListOfShapes() const
                      virtual void GetLocalRange(Float_t* min, Float_t* max)
                  virtual TVolume* GetNode() const
                   virtual Text_t* GetObjectInfo(Int_t px, Int_t py) const
          virtual TVolumePosition* GetPosition() const
                   virtual TShape* GetShape() const
                     virtual Int_t GetVisibility() const
                    virtual Bool_t Is3D() const
                   virtual TClass* IsA() const
                    virtual Bool_t IsMarked() const
          virtual TVolumePosition* Local2Master(const TVolumeView* localNode, const TVolumeView* masterNode = 0)
          virtual TVolumePosition* Local2Master(const Char_t* localName, const Char_t* masterName = "0")
                  virtual Float_t* Local2Master(const Float_t* local, Float_t* master, const Char_t* localName, const Char_t* masterName = "0", Int_t nVector = 1)
                  virtual Float_t* Local2Master(const Float_t* local, Float_t* master, const TVolumeView* localNode, const TVolumeView* masterNode = 0, Int_t nVector = 1)
                    virtual TList* Nodes()
                      virtual void Paint(Option_t* option = "")
                   virtual TString PathP() const
                      virtual void SavePrimitive(ofstream& out, Option_t* option = "")
                      virtual void SetLineAttributes()
                      virtual void SetVisibility(Int_t vis = 1)
                      virtual void ShowMembers(TMemberInspector& insp, char* parent)
                      virtual void Sizeof3D() const
                      virtual void Streamer(TBuffer& b)
                              void StreamerNVirtual(TBuffer& b)

### Data Members

        protected:

          TList* fListOfShapes  Pointer to the list of the "extra" shape definitions

## Class Description

     TVolumeView

     TVolumeView class is a special kind of TDataSet with one extra
     pointer to wrap any TObject onto TDataSet object

      BE CAREFUL !!!
      One has to use it carefully no control over that extra object
      is performed. This means: the object m_Obj data-member points to can
      be destroyed with no this kbject notifying.
      There is no tool /protection to check whether m_Obj is till alive.
      It is one's  code responsilitiy

TVolumeView(TVolumeView *viewNode,TVolumePosition *nodePosition) : TObjectSet(viewNode->GetName(),(TObject *)nodePosition),fListOfShapes(0) // ,fListOfAttributes(0)

     This ctor creates a TVolumeView structure from the "marked" nodes
     of the "viewNode" input structure
     It re-calculates all positions according of the new topology
     All new TVolume became UNMARKED though

TVolumeView(TVolumeView *viewNode,TVolumeView *topNode) : TObjectSet(viewNode->GetName(),(TObject *)0),fListOfShapes(0) // ,fListOfAttributes(0)

     This ctor creates a TVolumeView structure containing:

       - viewNode on the top
       - skip ALL node from the original viewNode untill topNode found
       - include all "marked" node below "topNode" if any
         topNode is always included

     It re-calculates all positions according of the new topology

TVolumeView(TVolumeView *viewNode,const Char_t *nodeName1,const Char_t *nodeName2) : TObjectSet(viewNode->GetName(),(TObject *)0),fListOfShapes(0) // ,fListOfAttributes(0)

     This ctor creates a TVolumeView structure containing:

       - viewNode on the top
       - skip ALL node from the original viewNode untill topNodeName found
       - include all "marked" node below "topNodename" if any
         topNodeName is always included

     It re-calculates all positions according of the new topology

TVolumeView(TVolumeView *viewNode,const TVolumeView *node1,const TVolumeView *node2) : TObjectSet(viewNode->GetName(),(TObject *)0),fListOfShapes(0) // ,fListOfAttributes(0)

     This ctor creates a TVolumeView structure containing:

       - viewNode on the top
       - skip ALL node from the original viewNode untill topNodeName found
       - include all "marked" node below "topNodename" if any
         topNodeName is always included

     It re-calculates all positions according of the new topology

TVolumeView(TVolume &pattern,Int_t maxDepLevel, const TVolumePosition *nodePosition,EDataSetPass iopt, TVolumeView *rootVolume) : TObjectSet(pattern.GetName(),(TObject *)nodePosition),fListOfShapes(0)

     Creates TVolumeView (view) with a topology similar with TVolume *pattern

      Parameters:
      -----------
      pattern        - the pattern dataset
      iopt = kStruct - clone only my structural links
             kAll    - clone all links
             kRefs   - clone only refs
             kMarked - clone marked (not implemented yet) only

       All new-created sets become the structural ones anyway.

      cout << "ctor for " << GetName() << " - " << GetTitle() << endl;

TVolumeView(TVolumeView &viewNode): TObjectSet(viewNode.GetName(),(TObject *)viewNode.GetPosition()) ,TAtt3D() ,fListOfShapes(viewNode.GetListOfShapes())

TVolumeView(Double_t *translate, Double_t *rotate, UInt_t positionId, TVolume *topNode, const Char_t *thisNodePath, const Char_t *matrixName, Int_t matrixType) // : fListOfAttributes(0)

     Special ctor to back TVolumeView::SavePrimitive() method

TVolumeView(TVolume *thisNode,TVolumePosition *nodePosition) : TObjectSet(thisNode?thisNode->GetName():"",(TObject *)nodePosition),fListOfShapes(0)

~TVolumeView()

     default dtor (empty for this class)

TVolume* AddNode(TVolume *node)

     Add the TVolume in the Tnode data-structure refered
     by this TVolumeView object
     Return TVolume * the input TVolume * was attached to

void Add(TShape *shape, Bool_t IsMaster)

void Browse(TBrowser *b)

Int_t DistancetoPrimitive(Int_t px, Int_t py)

    *-*-*-*-*-*-*-*-*Compute distance from point px,py to a TVolumeView*-*-*-*-*-*
    *-*                  ===========================================
    *-*  Compute the closest distance of approach from point px,py to the position of
    *-*  this node.
    *-*  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*-*-*-*
    *-*                   =============================================

TVolume* GetNode() const

Int_t GetGlobalRange(const TVolumeView *rootNode,Float_t *globalMin,Float_t *globalMax)

     Calculate the position of the vertrex of the outlined cube in repect
     of the given TVolumeView object

void GetLocalRange(Float_t *min, Float_t *max)

      GetRange

      Calculates the size of 3 box the node occupies.
      Return:
        two floating point arrays with the bound of box
         surroundind all shapes of this TModeView

Text_t* GetObjectInfo(Int_t px, Int_t py) const

TVolumePosition* Local2Master(const Char_t *localName, const Char_t *masterName)

TVolumePosition* Local2Master(const TVolumeView *localNode,const TVolumeView *masterNode)

Float_t* Local2Master(const Float_t *local, Float_t *master, const Char_t *localName, const Char_t *masterName, Int_t nVector)

     calculate  transformation  master = (M-local->master )*local + (T-local->master )
      where
         M-local->master - rotation matrix 3 x 3 from the master node to the local node
         T-local->master - trasport vector 3 from the master node to the local node

     returns a "master" pointer if transformation has been found
            otherwise 0;

Float_t* Local2Master(const Float_t *local, Float_t *master, const TVolumeView *localNode, const TVolumeView *masterNode, Int_t nVector)

     calculate  transformation  master = (M-local->master )*local + (T-local->master )
      where
         M-local->master - rotation matrix 3 x 3 from the master node to the local node
         T-local->master - trasport vector 3 from the master node to the local node

     returns a "master" pointer if transformation has been found
            otherwise 0;

void Paint(Option_t *option)

    *-*-*-*-*-*-*-*-*-*-*-*Paint Referenced node 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
    *-*
    *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

     It draw the TVolumeView layers from the iFirst one (form the zero) till
     iLast one reached.

     restrict the levels for "range" option

void PaintShape(Option_t *option)

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

TString PathP() const

     return the full path of this data set

void SavePrimitive(ofstream &out, Option_t *)

void SetLineAttributes()

void SetVisibility(Int_t vis)

void Sizeof3D() const

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

### Inline Functions

                 TVolumeView TVolumeView(TVolume* thisNode, TVolumePosition* nodePosition)
                        void Add(TVolumeView* node)
                        void Add(TShape* shape, Bool_t IsMaster = kFALSE)
            TVolumePosition* GetPosition() const
                      TList* GetListOfShapes() const
                     TShape* GetShape() const
                       Int_t GetVisibility() const
                      Bool_t IsMarked() const
                      Bool_t Is3D() const
                      TList* Nodes()
                     TClass* Class()
                     TClass* IsA() const
                        void ShowMembers(TMemberInspector& insp, char* parent)
                        void Streamer(TBuffer& b)
                        void StreamerNVirtual(TBuffer& b)

Author: Valery Fine(fine@bnl.gov) 25/12/98
Last update: root/star:$Name: $:$Id: TVolumeView.cxx,v 1.11 2005/05/02 17:53:58 brun Exp $