Logo ROOT  
Reference Guide
TGeoPhysicalNode.h
Go to the documentation of this file.
1// @(#)root/geom:$Id$
2// Author: Andrei Gheata 17/02/04
3
4/*************************************************************************
5 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
6 * All rights reserved. *
7 * *
8 * For the licensing terms see $ROOTSYS/LICENSE. *
9 * For the list of contributors see $ROOTSYS/README/CREDITS. *
10 *************************************************************************/
11
12#ifndef ROOT_TGeoPhysicalNode
13#define ROOT_TGeoPhysicalNode
14
15#include "TNamed.h"
16
17#include "TAttLine.h"
18
19// forward declarations
20class TGeoHMatrix;
21class TGeoMatrix;
22class TGeoVolume;
23class TGeoNode;
24class TGeoShape;
25class TGeoNavigator;
26class TObjArray;
27
28//////////////////////////////////////////////////////////////////////////////
29// //
30// TGeoPhysicalNode - class representing an unique object associated with a //
31// path. //
32// //
33//////////////////////////////////////////////////////////////////////////////
34
35class TGeoPhysicalNode : public TNamed,
36 public TAttLine
37{
38protected:
39 Int_t fLevel; // depth in the geometry tree
40 TObjArray *fMatrices; // global transformation matrices
41 TObjArray *fNodes; // branch of nodes
42 TGeoHMatrix *fMatrixOrig; // original local matrix of the last node in the path
43
46
48 Bool_t SetPath(const char *path);
49 void SetBranchAsState();
50
51public:
52 enum {
53 kGeoPNodeFull = BIT(10), // full branch is visible (default only last node)
54 kGeoPNodeVisible = BIT(11), // this node is visible (default)
55 kGeoPNodeVolAtt = BIT(12), // preserve volume attributes (default)
56 kGeoPNodeAligned = BIT(13) // alignment bit
57 };
58
59 // constructors
61 TGeoPhysicalNode(const char *path);
62 // destructor
63 virtual ~TGeoPhysicalNode();
64
65 Bool_t Align(TGeoMatrix *newmat=0, TGeoShape *newshape=0, Bool_t check=kFALSE, Double_t ovlp=0.001);
66 void cd() const;
67 void Draw(Option_t *option="");
68 Int_t GetLevel() const {return fLevel;}
69 TGeoHMatrix *GetMatrix(Int_t level=-1) const;
71 TGeoNode *GetMother(Int_t levup=1) const;
72 TGeoNode *GetNode(Int_t level=-1) const;
73 TGeoShape *GetShape(Int_t level=-1) const;
74 TGeoVolume *GetVolume(Int_t level=-1) const;
75
76
82
83 virtual void Print(Option_t *option="") const;
84 void Refresh();
85
86 void SetMatrixOrig(const TGeoMatrix *local);
90 virtual void Paint(Option_t *option = "");
91
92
93 ClassDef(TGeoPhysicalNode, 1) // base class for physical nodes
94};
95
96///////////////////////////////////////////////////////////////////////////////
97// //
98// TGeoPNEntry - class representing physical node entry having a unique name //
99// associated to a path. //
100// //
101///////////////////////////////////////////////////////////////////////////////
102
103class TGeoPNEntry : public TNamed
104{
105private:
108 };
109 TGeoPhysicalNode *fNode; // Physical node to which this applies
110 const TGeoHMatrix *fMatrix; // Additional matrix
111 TGeoHMatrix *fGlobalOrig; // Original global matrix for the linked physical node
112
113protected:
115 : TNamed(pne), fNode(pne.fNode), fMatrix(NULL), fGlobalOrig(NULL) { }
117 {if(this!=&pne) {TNamed::operator=(pne); fNode=pne.fNode; fMatrix=pne.fMatrix;}
118 return *this;}
119
120public:
121 TGeoPNEntry();
122 TGeoPNEntry(const char *unique_name, const char *path);
123 virtual ~TGeoPNEntry();
124
125 inline const char *GetPath() const {return GetTitle();}
126 const TGeoHMatrix *GetMatrix() const {return fMatrix;}
127 TGeoHMatrix *GetMatrixOrig() const {if (fNode) return fNode->GetOriginalMatrix(); else return NULL;};
130 void SetMatrix(const TGeoHMatrix *matrix);
132
133 ClassDef(TGeoPNEntry, 4) // a physical node entry with unique name
134};
135
136#endif
137
int Int_t
Definition: CPyCppyy.h:43
const Bool_t kFALSE
Definition: RtypesCore.h:101
bool Bool_t
Definition: RtypesCore.h:63
double Double_t
Definition: RtypesCore.h:59
const Bool_t kTRUE
Definition: RtypesCore.h:100
const char Option_t
Definition: RtypesCore.h:66
#define ClassDef(name, id)
Definition: Rtypes.h:325
#define BIT(n)
Definition: Rtypes.h:85
Line Attributes class.
Definition: TAttLine.h:18
Matrix class used for computing global transformations Should NOT be used for node definition.
Definition: TGeoMatrix.h:421
Geometrical transformation package.
Definition: TGeoMatrix.h:41
Class providing navigation API for TGeo geometries.
Definition: TGeoNavigator.h:34
A node represent a volume positioned inside another.They store links to both volumes and to the TGeoM...
Definition: TGeoNode.h:41
The knowledge of the path to the objects that need to be misaligned is essential since there is no ot...
TGeoPhysicalNode * GetPhysicalNode() const
const TGeoHMatrix * fMatrix
TGeoPNEntry & operator=(const TGeoPNEntry &pne)
TGeoHMatrix * GetMatrixOrig() const
void SetPhysicalNode(TGeoPhysicalNode *node)
Setter for the corresponding physical node.
TGeoPhysicalNode * fNode
TGeoHMatrix * fGlobalOrig
const char * GetPath() const
TGeoPNEntry()
Default constructor.
virtual ~TGeoPNEntry()
Destructor.
TGeoPNEntry(const TGeoPNEntry &pne)
const TGeoHMatrix * GetMatrix() const
void SetMatrix(const TGeoHMatrix *matrix)
Set the additional matrix for this node entry.
TGeoHMatrix * GetGlobalOrig() const
Physical nodes are the actual 'touchable' objects in the geometry, representing a path of positioned ...
void SetBranchAsState()
Set node branch according to current state.
Bool_t IsAligned() const
virtual ~TGeoPhysicalNode()
Destructor.
TGeoNode * GetMother(Int_t levup=1) const
Return parent at LEVUP generation.
void Draw(Option_t *option="")
Draw this node.
Int_t GetLevel() const
TGeoNode * GetNode(Int_t level=-1) const
Return node in branch at LEVEL. If not specified, return last leaf.
void Refresh()
Refresh this physical node.
Bool_t SetPath(const char *path)
Specify the path for this node.
virtual void Print(Option_t *option="") const
Print info about this node.
Bool_t IsVisible() const
TGeoHMatrix * GetOriginalMatrix() const
void SetVisibility(Bool_t flag=kTRUE)
TGeoPhysicalNode()
Default constructor.
Bool_t Align(TGeoMatrix *newmat=0, TGeoShape *newshape=0, Bool_t check=kFALSE, Double_t ovlp=0.001)
Align a physical node with a new relative matrix/shape.
void SetAligned(Bool_t flag=kTRUE)
void SetVisibleFull(Bool_t flag=kTRUE)
Bool_t IsVisibleFull() const
Bool_t IsMatchingState(TGeoNavigator *nav) const
Checks if a given navigator state matches this physical node.
TObjArray * fNodes
void SetMatrixOrig(const TGeoMatrix *local)
Allows PN entries (or users) to preset the local original matrix for the last node pointed by the pat...
TGeoHMatrix * GetMatrix(Int_t level=-1) const
Return global matrix for node at LEVEL.
TGeoHMatrix * fMatrixOrig
Bool_t IsVolAttributes() const
TGeoPhysicalNode & operator=(const TGeoPhysicalNode &)=delete
virtual void Paint(Option_t *option="")
Paint this node and its content according to visualization settings.
TGeoPhysicalNode(const TGeoPhysicalNode &)=delete
TGeoVolume * GetVolume(Int_t level=-1) const
Return volume associated with node at LEVEL in the branch.
void SetIsVolAtt(Bool_t flag=kTRUE)
TGeoShape * GetShape(Int_t level=-1) const
Return shape associated with volume.
TObjArray * fMatrices
Base abstract class for all shapes.
Definition: TGeoShape.h:26
TGeoVolume, TGeoVolumeMulti, TGeoVolumeAssembly are the volume classes.
Definition: TGeoVolume.h:49
The TNamed class is the base class for all named ROOT classes.
Definition: TNamed.h:29
virtual const char * GetTitle() const
Returns title of object.
Definition: TNamed.h:48
TNamed & operator=(const TNamed &rhs)
TNamed assignment operator.
Definition: TNamed.cxx:51
An array of TObjects.
Definition: TObjArray.h:37
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
Definition: TObject.h:187
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
Definition: TObject.cxx:696