ROOT logo
ROOT » GEOM » GEOM » TGeoPhysicalNode

class TGeoPhysicalNode: public TNamed, public TAttLine

 TGeoPhysicalNode, TGeoPNEntry

 Physical nodes are the actual 'touchable' objects in the geometry, representing
 a path of positioned volumes starting with the top node:
    path=/TOP/A_1/B_4/C_3 , where A, B, C represent names of volumes.
 The number of physical nodes is given by the total number of possible of
 branches in the geometry hierarchy. In case of detector geometries and
 specially for calorimeters this number can be of the order 1e6-1e9, therefore
 it is impossible to create all physical nodes as objects in memory. In TGeo,
 physical nodes are represented by the class TGeoPhysicalNode and can be created
 on demand for alignment purposes:

    TGeoPhysicalNode *pn = new TGeoPhysicalNode("path_to_object")

 Once created, a physical node can be misaligned, meaning that its position
 or even shape can be changed:

    pn->Align(TGeoMatrix* newmat, TGeoShape* newshape, Bool_t check=kFALSE)

 The knowledge of the path to the objects that need to be misaligned is
 essential since there is no other way of identifying them. One can however
 create 'symbolic links' to any complex path to make it more representable
 for the object it designates:

    TGeoPNEntry *pne = new TGeoPNEntry("TPC_SECTOR_2", "path_to_tpc_sect2");
    pne->SetPhysicalNode(pn)

 Such a symbolic link hides the complexity of the path to the align object and
 replaces it with a more meaningful name. In addition, TGeoPNEntry objects are
 faster to search by name and they may optionally store an additional user
 matrix.

 For more details please read the misalignment section in the Users Guide.

Function Members (Methods)

public:
TGeoPhysicalNode()
TGeoPhysicalNode(const char* path)
virtual~TGeoPhysicalNode()
voidTObject::AbstractMethod(const char* method) const
voidAlign(TGeoMatrix* newmat = 0, TGeoShape* newshape = 0, Bool_t check = kFALSE, Double_t ovlp = 0.001)
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
voidcd() const
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTNamed::Clear(Option_t* option = "")
virtual TObject*TNamed::Clone(const char* newname = "") const
virtual Int_tTNamed::Compare(const TObject* obj) const
virtual voidTNamed::Copy(TObject& named) const
virtual voidTObject::Delete(Option_t* option = "")MENU
Int_tTAttLine::DistancetoLine(Int_t px, Int_t py, Double_t xp1, Double_t yp1, Double_t xp2, Double_t yp2)
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidDraw(Option_t* option = "")
virtual voidTObject::DrawClass() constMENU
virtual TObject*TObject::DrawClone(Option_t* option = "") constMENU
virtual voidTObject::Dump() constMENU
virtual voidTObject::Error(const char* method, const char* msgfmt) const
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
virtual voidTNamed::FillBuffer(char*& buffer)
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual const char*TObject::GetIconName() const
Int_tGetLevel() const
virtual Color_tTAttLine::GetLineColor() const
virtual Style_tTAttLine::GetLineStyle() const
virtual Width_tTAttLine::GetLineWidth() const
TGeoHMatrix*GetMatrix(Int_t level = -1) const
TGeoNode*GetMother(Int_t levup = 1) const
virtual const char*TNamed::GetName() const
TGeoNode*GetNode(Int_t level = -1) const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
TGeoHMatrix*GetOriginalMatrix() const
TGeoShape*GetShape(Int_t level = -1) const
virtual const char*TNamed::GetTitle() const
virtual UInt_tTObject::GetUniqueID() const
TGeoVolume*GetVolume(Int_t level = -1) const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTNamed::Hash() const
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
virtual voidTObject::Inspect() constMENU
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
Bool_tIsAligned() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tTObject::IsOnHeap() const
virtual Bool_tTNamed::IsSortable() const
Bool_tIsVisible() const
Bool_tIsVisibleFull() const
Bool_tIsVolAttributes() const
Bool_tTObject::IsZombie() const
virtual voidTNamed::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
virtual voidTAttLine::Modify()
virtual Bool_tTObject::Notify()
static voidTObject::operator delete(void* ptr)
static voidTObject::operator delete(void* ptr, void* vp)
static voidTObject::operator delete[](void* ptr)
static voidTObject::operator delete[](void* ptr, void* vp)
void*TObject::operator new(size_t sz)
void*TObject::operator new(size_t sz, void* vp)
void*TObject::operator new[](size_t sz)
void*TObject::operator new[](size_t sz, void* vp)
virtual voidPaint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidPrint(Option_t* option = "") const
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
voidRefresh()
virtual voidTAttLine::ResetAttLine(Option_t* option = "")
voidTObject::ResetBit(UInt_t f)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTAttLine::SaveLineAttributes(ostream& out, const char* name, Int_t coldef = 1, Int_t stydef = 1, Int_t widdef = 1)
virtual voidTObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "")
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
voidSetIsVolAtt(Bool_t flag = kTRUE)
virtual voidTAttLine::SetLineAttributes()MENU
virtual voidTAttLine::SetLineColor(Color_t lcolor)
virtual voidTAttLine::SetLineStyle(Style_t lstyle)
virtual voidTAttLine::SetLineWidth(Width_t lwidth)
voidSetMatrixOrig(const TGeoMatrix* local)
virtual voidTNamed::SetName(const char* name)MENU
virtual voidTNamed::SetNameTitle(const char* name, const char* title)
static voidTObject::SetObjectStat(Bool_t stat)
virtual voidTNamed::SetTitle(const char* title = "")MENU
virtual voidTObject::SetUniqueID(UInt_t uid)
voidSetVisibility(Bool_t flag = kTRUE)
voidSetVisibleFull(Bool_t flag = kTRUE)
virtual voidShowMembers(TMemberInspector& insp, char* parent)
virtual Int_tTNamed::Sizeof() const
virtual voidStreamer(TBuffer& b)
voidStreamerNVirtual(TBuffer& b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
virtual voidTObject::UseCurrentStyle()
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const
protected:
TGeoPhysicalNode(const TGeoPhysicalNode&)
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
voidTObject::MakeZombie()
TGeoPhysicalNode&operator=(const TGeoPhysicalNode&)
voidSetAligned(Bool_t flag = kTRUE)
voidSetBranchAsState()
Bool_tSetPath(const char* path)

Data Members

public:
enum { kGeoPNodeFull
kGeoPNodeVisible
kGeoPNodeVolAtt
kGeoPNodeAligned
};
enum TObject::EStatusBits { kCanDelete
kMustCleanup
kObjInCanvas
kIsReferenced
kHasUUID
kCannotPick
kNoContextMenu
kInvalidObject
};
enum TObject::[unnamed] { kIsOnHeap
kNotDeleted
kZombie
kBitMask
kSingleKey
kOverwrite
kWriteDelete
};
protected:
Int_tfLeveldepth in the geometry tree
Color_tTAttLine::fLineColorline color
Style_tTAttLine::fLineStyleline style
Width_tTAttLine::fLineWidthline width
TObjArray*fMatricesglobal transformation matrices
TGeoHMatrix*fMatrixOrigoriginal local matrix of the last node in the path
TStringTNamed::fNameobject identifier
TObjArray*fNodesbranch of nodes
TStringTNamed::fTitleobject title

Class Charts

Inheritance Inherited Members Includes Libraries
Class Charts

Function documentation

TGeoPhysicalNode()
 Default constructor
TGeoPhysicalNode(const char *path)
 Constructor
TGeoPhysicalNode(const TGeoPhysicalNode& gpn)
copy constructor
TGeoPhysicalNode& operator=(const TGeoPhysicalNode& )
assignment operator
~TGeoPhysicalNode()
 Destructor
void 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.
 Example: /TOP_1/A_1/B_1/C_1
    node->Align(transl_1, box) will perform:
    - change RELATIVE translation of C_1 node (with respect to its
      container volume B) to transl_1
    - change the shape of the C volume
 *NOTE* The operations will affect ONLY the LAST node in the branch. All
   volumes/nodes in the branch represented by this physical node are
   CLONED so the operation does not affect other possible replicas.
void cd() const
void Draw(Option_t* option = "")
 Draw this node.
TGeoNode * GetMother(Int_t levup = 1) const
 Return parent at LEVUP generation
TGeoHMatrix * GetMatrix(Int_t level = -1) const
 Return global matrix for node at LEVEL.
TGeoNode * GetNode(Int_t level = -1) const
 Return node in branch at LEVEL. If not specified, return last leaf.
TGeoVolume * GetVolume(Int_t level = -1) const
 Return volume associated with node at LEVEL in the branch
TGeoShape * GetShape(Int_t level = -1) const
 Return shape associated with volume.
void Paint(Option_t* option = "")
 Paint this node and its content according to visualization settings.
void Print(Option_t* option = "") const
 Print info about this node.
void Refresh()
 Refresh this physical node. Called for all registered physical nodes
 after an Align() call.
void SetBranchAsState()
 Set node branch according to current state
void SetMatrixOrig(const TGeoMatrix* local)
 Allows PN entries (or users) to preset the local original matrix for the
 last node pointed by the path.
Bool_t SetPath(const char* path)
 Specify the path for this node.
void SetAligned(Bool_t flag = kTRUE)
Int_t GetLevel() const
{return fLevel;}
TGeoHMatrix * GetOriginalMatrix() const
{return fMatrixOrig;}
Bool_t IsAligned() const
Bool_t IsVolAttributes() const
Bool_t IsVisible() const
Bool_t IsVisibleFull() const
void SetIsVolAtt(Bool_t flag = kTRUE)
void SetVisibility(Bool_t flag = kTRUE)
void SetVisibleFull(Bool_t flag = kTRUE)