library: libGeom #include "TGeoNode.h" |
TGeoNodeMatrix
class description - source file - inheritance tree (.pdf)
public:
TGeoNodeMatrix()
TGeoNodeMatrix(const TGeoVolume* vol, const TGeoMatrix* matrix)
TGeoNodeMatrix(const TGeoNodeMatrix&)
virtual ~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
TGeoNodeMatrix& operator=(const TGeoNodeMatrix&)
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
_________
A node represent a volume positioned inside another.They store links to both
volumes and to the TGeoMatrix representing the relative positioning. Node are
never instanciated directly by users, but created as a result of volume operations.
Adding a volume named A with a given user ID inside a volume B will create a node
node named A_ID. This will be added to the list of nodes stored by B. Also,
when applying a division operation in N slices to a volume A, a list of nodes
B_1, B_2, ..., B_N is also created. A node B_i does not represent a unique
object in the geometry because its container A might be at its turn positioned
as node inside several other volumes. Only when a complete branch of nodes
is fully defined up to the top node in the geometry, a given path like:
/TOP_1/.../A_3/B_7 will represent an unique object. Its global transformation
matrix can be computed as the pile-up of all local transformations in its
branch. We will therefore call "logical graph" the hierarchy defined by nodes
and volumes. The expansion of the logical graph by all possible paths defines
a tree sructure where all nodes are unique "touchable" objects. We will call
this the "physical tree". Unlike the logical graph, the physical tree can
become a huge structure with several milions of nodes in case of complex
geometries, therefore it is not always a good idea to keep it transient
in memory. Since a the logical and physical structures are correlated, the
modeller rather keeps track only of the current branch, updating the current
global matrix at each change of the level in geometry. The current physical node
is not an object that can be asked for at a given moment, but rather represented
by the combination: current node + current global matrix. However, physical nodes
have unique ID's that can be retreived for a given modeler state. These can be
fed back to the modeler in order to force a physical node to become current.
The advantage of this comes from the fact that all navigation queries check
first the current node, therefore knowing the location of a point in the
geometry can be saved as a starting state for later use.
Nodes can be declared as "overlapping" in case they do overlap with other
nodes inside the same container or extrude this container. Non-overlapping
nodes can be created with:
TGeoVolume::AddNode(TGeoVolume *daughter, Int_t copy_No, TGeoMatrix *matr);
The creation of overapping nodes can be done with a similar prototype:
TGeoVolume::AddNodeOverlap(same arguments);
When closing the geometry, overlapping nodes perform a check of possible
overlaps with their neighbours. These are stored and checked all the time
during navigation, therefore navigation is slower when embedding such nodes
into geometry.
Node have visualization attributes as volume have. When undefined by users,
painting a node on a pad will take the corresponding volume attributes.
/*
*/
TGeoNodeMatrix()
Default constructor
TGeoNodeMatrix(const TGeoVolume *vol, const TGeoMatrix *matrix) :
TGeoNode(vol)
Constructor.
~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 %s\n", 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&)
TGeoNodeMatrix& operator=(const TGeoNodeMatrix&)
Author: Andrei Gheata 24/10/01
Last update: root/geom:$Name: $:$Id: TGeoNode.cxx,v 1.25 2005/09/02 13:54:38 brun Exp $
Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
ROOT page - Class index - Class Hierarchy - 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.