12 #ifndef ROOT_TGeoPhysicalNode
13 #define ROOT_TGeoPhysicalNode
36 class TGeoPhysicalNode :
public TNamed,
43 TGeoHMatrix *fMatrixOrig;
45 TGeoPhysicalNode(
const TGeoPhysicalNode&);
46 TGeoPhysicalNode& operator=(
const TGeoPhysicalNode&);
48 void SetAligned(Bool_t flag=kTRUE) {TObject::SetBit(kGeoPNodeAligned,flag);}
49 Bool_t SetPath(
const char *path);
50 void SetBranchAsState();
54 kGeoPNodeFull = BIT(10),
55 kGeoPNodeVisible = BIT(11),
56 kGeoPNodeVolAtt = BIT(12),
57 kGeoPNodeAligned = BIT(13)
62 TGeoPhysicalNode(
const char *path);
64 virtual ~TGeoPhysicalNode();
66 Bool_t Align(TGeoMatrix *newmat=0, TGeoShape *newshape=0, Bool_t check=kFALSE, Double_t ovlp=0.001);
68 void Draw(Option_t *option=
"");
69 Int_t GetLevel()
const {
return fLevel;}
70 TGeoHMatrix *GetMatrix(Int_t level=-1)
const;
71 TGeoHMatrix *GetOriginalMatrix()
const {
return fMatrixOrig;}
72 TGeoNode *GetMother(Int_t levup=1)
const;
73 TGeoNode *GetNode(Int_t level=-1)
const;
74 TGeoShape *GetShape(Int_t level=-1)
const;
75 TGeoVolume *GetVolume(Int_t level=-1)
const;
78 Bool_t IsAligned()
const {
return TObject::TestBit(kGeoPNodeAligned);}
79 Bool_t IsMatchingState(TGeoNavigator *nav)
const;
80 Bool_t IsVolAttributes()
const {
return TObject::TestBit(kGeoPNodeVolAtt);}
81 Bool_t IsVisible()
const {
return TObject::TestBit(kGeoPNodeVisible);}
82 Bool_t IsVisibleFull()
const {
return TObject::TestBit(kGeoPNodeFull);}
84 virtual void Print(Option_t *option=
"")
const;
87 void SetMatrixOrig(
const TGeoMatrix *local);
88 void SetIsVolAtt(Bool_t flag=kTRUE) {TObject::SetBit(kGeoPNodeVolAtt,flag);}
89 void SetVisibility(Bool_t flag=kTRUE) {TObject::SetBit(kGeoPNodeVisible,flag);}
90 void SetVisibleFull(Bool_t flag=kTRUE) {TObject::SetBit(kGeoPNodeFull,flag);}
91 virtual void Paint(Option_t *option =
"");
94 ClassDef(TGeoPhysicalNode, 1)
104 class TGeoPNEntry :
public TNamed
108 kPNEntryOwnMatrix = BIT(14)
110 TGeoPhysicalNode *fNode;
111 const TGeoHMatrix *fMatrix;
112 TGeoHMatrix *fGlobalOrig;
115 TGeoPNEntry(
const TGeoPNEntry& pne)
116 : TNamed(pne), fNode(pne.fNode), fMatrix(NULL), fGlobalOrig(NULL) { }
117 TGeoPNEntry& operator=(
const TGeoPNEntry& pne)
118 {
if(
this!=&pne) {TNamed::operator=(pne); fNode=pne.fNode; fMatrix=pne.fMatrix;}
123 TGeoPNEntry(
const char *unique_name,
const char *path);
124 virtual ~TGeoPNEntry();
126 inline const char *GetPath()
const {
return GetTitle();}
127 const TGeoHMatrix *GetMatrix()
const {
return fMatrix;}
128 TGeoHMatrix *GetMatrixOrig()
const {
if (fNode)
return fNode->GetOriginalMatrix();
else return NULL;};
129 TGeoHMatrix *GetGlobalOrig()
const {
return fGlobalOrig;}
130 TGeoPhysicalNode *GetPhysicalNode()
const {
return fNode;}
131 void SetMatrix(
const TGeoHMatrix *matrix);
132 void SetPhysicalNode(TGeoPhysicalNode *node);
134 ClassDef(TGeoPNEntry, 4)