TGeoNodeMatrix
class description - source file - inheritance tree
public:
TGeoNodeMatrix TGeoNodeMatrix()
TGeoNodeMatrix TGeoNodeMatrix(const TGeoVolume* vol, const TGeoMatrix* matrix)
TGeoNodeMatrix TGeoNodeMatrix(const TGeoNodeMatrix&)
virtual void ~TGeoNodeMatrix()
static TClass* Class()
virtual Int_t GetByteCount() const
virtual TGeoMatrix* GetMatrix() const
virtual Int_t GetOptimalVoxels() const
virtual TClass* IsA() const
virtual Bool_t IsFolder() const
virtual TGeoNode* MakeCopyNode() const
void SetMatrix(const TGeoMatrix* matrix)
virtual void ShowMembers(TMemberInspector& insp, char* parent)
virtual void Streamer(TBuffer& b)
void StreamerNVirtual(TBuffer& b)
private:
TGeoMatrix* fMatrix transf. matrix of fNode in fMother system
TGeoNode
_________
Nodes are positioned volumes. They have a pointer to the corresponding
volume. Nodes always belong to a mother container volume, so they also
have a pointer to this. The base class for nodes is TGeoNode, describing only
the logical tree. The position of the node with respect to its mother is
defined by classes deriving from TGeoNode and is stored as a transformation
matrix by TGeoNodeMatrix or just an offset by division nodes (TGeoNodeXXX).
Nodes are invisible to user at build time : to create a node one has only
to call TGeoVolume::AddNode() or TGeoVolume::Divide() methods. In the first
case, the volume pointed by the node and the geometrical transformation with
respect to the mother must be created a priori :
TGeoVolume *vol = new TGeoSphere("SPH", 200, 400);
TGeoVolume *mother = gGeoManager->MakeBox("HALL", "mat1", 1000, 1000, 3000);
TGeoTranslation *t1 = new TGeoTranslation(0, 0, 300);
mother->AddNode(vol, t1);
The last line will create a branch : HALL->SPH . A node named SPH:0 will
be created. If trying to place the same volume many times inside the same
mother, the automatic naming scheme for the corresponding nodes is just
appending <:copy_number> to the name of the volume. Therefore :
TGeoTranslation *t2 = new TGeoTranslation(0,0,-300);
mother->AddNode(vol, t2);
will create a TGeoNodeMatrix named SPH:1 inside HALL.
When creating division nodes (TGeoVolume::Divide()), one has to specify the
number of divisions, optionally the range for dividing and an string option
specifying the division type. A list of TGeoNodeOffset will be generated :
mother->Divide(5, "X");
will create five TGeoNodeOffset nodes, pointing to the same basic cell volume
which is automatically generated :
HALL:0 --|
HALL:1 --|
HALL:2 --|---> HALL_C = gGeoManager->MakeBox("HALL_C", "mat1", 200, 1000, 3000)
HALL:3 --|
HALL:4 --|
One can subsequently add usual nodes inside HALL_C cell or divide it, and the
action will affect all nodes HALL:i .
If the basic cell volumes coming from a division operation are not identical,
a volume will be generated per division node, and the naming sheme for them
will be HALL_d1, HALL_d2, ... .
Browsing nodes. (to be added)
Node flags.(to be added)
/*
*/
TGeoNodeMatrix()
Default constructor
TGeoNodeMatrix(const TGeoVolume *vol, const TGeoMatrix *matrix) :
TGeoNode(vol)
Constructor. Null pointer to matrix means identity transformation
~TGeoNodeMatrix()
Destructor
Int_t GetByteCount() const
return the total size in bytes of this node
Int_t GetOptimalVoxels() const
--- Returns type of optimal voxelization for this node.
type = 0 -> cartesian
type = 1 -> cylindrical
TGeoNode* MakeCopyNode() const
make a copy of this node
printf(" Making a copy of node %sn", GetName());
Inline Functions
Bool_t IsFolder() const
TGeoMatrix* GetMatrix() const
void SetMatrix(const TGeoMatrix* matrix)
TClass* Class()
TClass* IsA() const
void ShowMembers(TMemberInspector& insp, char* parent)
void Streamer(TBuffer& b)
void StreamerNVirtual(TBuffer& b)
TGeoNodeMatrix TGeoNodeMatrix(const TGeoNodeMatrix&)
Author: Andrei Gheata 24/10/01
Last update: root/geom:$Name: $:$Id: TGeoNode.cxx,v 1.17 2003/01/27 13:16:26 brun Exp $
Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
ROOT page - Class index - Top of the page
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.