ROOT logo
ROOT » GEOM » GEOM » TGeoNodeOffset

class TGeoNodeOffset: public TGeoNode

 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.


/* */

Function Members (Methods)

public:
TGeoNodeOffset()
TGeoNodeOffset(const TGeoVolume* vol, Int_t index, Double_t offset)
virtual~TGeoNodeOffset()
voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTGeoNode::Browse(TBrowser* b)
virtual voidcd() const
voidTGeoNode::CheckOverlaps(Double_t ovlp = 0.1, Option_t* option = "")MENU
voidTGeoNode::CheckShapes()
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
Int_tTGeoNode::CountDaughters(Bool_t unique_volumes = kFALSE)
virtual voidTObject::Delete(Option_t* option = "")MENU
virtual Int_tTGeoNode::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidTGeoNode::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() constMENU
virtual TObject*TObject::DrawClone(Option_t* option = "") constMENU
voidTGeoNode::DrawOnly(Option_t* option = "")
voidTGeoNode::DrawOverlaps()
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 voidTGeoNode::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)
voidTGeoNode::FillIdArray(Int_t& ifree, Int_t& nodeid, Int_t* array) const
Int_tTGeoNode::FindNode(const TGeoNode* node, Int_t level)
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
virtual Int_tTGeoNode::GetByteCount() const
Int_tTGeoNode::GetColour() const
TGeoNode*TGeoNode::GetDaughter(Int_t ind) const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual TGeoPatternFinder*GetFinder() const
TGeoExtension*TGeoNode::GetFWExtension() const
virtual const char*TObject::GetIconName() const
virtual Int_tGetIndex() const
virtual TGeoMatrix*GetMatrix() const
TGeoMedium*TGeoNode::GetMedium() const
TGeoVolume*TGeoNode::GetMotherVolume() const
virtual const char*TNamed::GetName() const
Int_tTGeoNode::GetNdaughters() const
TObjArray*TGeoNode::GetNodes() const
Int_tTGeoNode::GetNumber() const
virtual char*TGeoNode::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
Double_tGetOffset() const
virtual Int_tTGeoNode::GetOptimalVoxels() const
virtual Option_t*TObject::GetOption() const
Int_t*TGeoNode::GetOverlaps(Int_t& novlp) const
virtual const char*TNamed::GetTitle() const
virtual UInt_tTObject::GetUniqueID() const
TGeoExtension*TGeoNode::GetUserExtension() const
TGeoVolume*TGeoNode::GetVolume() const
TGeoExtension*TGeoNode::GrabFWExtension() const
TGeoExtension*TGeoNode::GrabUserExtension() 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
voidTGeoNode::InspectNode() constMENU
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
Bool_tTGeoAtt::IsActive() const
Bool_tTGeoAtt::IsActiveDaughters() const
Bool_tTGeoNode::IsCloned() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTGeoNode::IsFolder() const
Bool_tTGeoNode::IsOffset() const
Bool_tTObject::IsOnHeap() const
Bool_tTGeoNode::IsOnScreen() constMENU
Bool_tTGeoNode::IsOverlapping() const
virtual Bool_tTNamed::IsSortable() const
Bool_tTGeoNode::IsVirtual() const
Bool_tTGeoAtt::IsVisBranch() const
Bool_tTGeoAtt::IsVisContainers() const
Bool_tTGeoNode::IsVisDaughters() const
Bool_tTGeoNode::IsVisible() const
Bool_tTGeoAtt::IsVisLeaves() const
Bool_tTGeoAtt::IsVisOnly() const
Bool_tTGeoAtt::IsVisRaytrace() const
Bool_tTGeoAtt::IsVisStreamed() const
Bool_tTGeoAtt::IsVisTouched() const
Bool_tTObject::IsZombie() const
virtual voidTGeoNode::LocalToMaster(const Double_t* local, Double_t* master) const
virtual voidTGeoNode::LocalToMasterVect(const Double_t* local, Double_t* master) const
virtual voidTGeoNode::ls(Option_t* option = "") const
virtual TGeoNode*MakeCopyNode() const
virtual voidTGeoNode::MasterToLocal(const Double_t* master, Double_t* local) const
virtual voidTGeoNode::MasterToLocalVect(const Double_t* master, Double_t* local) const
voidTObject::MayNotUse(const char* method) const
Bool_tTGeoNode::MayOverlap(Int_t iother) const
virtual Bool_tTObject::Notify()
voidTObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const
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 voidTGeoNode::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidTNamed::Print(Option_t* option = "") const
voidTGeoNode::PrintCandidates() constMENU
voidTGeoNode::PrintOverlaps() constMENU
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
voidTGeoAtt::ResetAttBit(UInt_t f)
voidTObject::ResetBit(UInt_t f)
Double_tTGeoNode::Safety(const Double_t* point, Bool_t in = kTRUE) const
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
voidTGeoNode::SaveAttributes(ostream& out)
virtual voidTObject::SavePrimitive(ostream& out, Option_t* option = "")
voidTGeoAtt::SetActiveDaughters(Bool_t flag = kTRUE)
voidTGeoAtt::SetActivity(Bool_t flag = kTRUE)
voidTGeoNode::SetAllInvisible()MENU
voidTGeoAtt::SetAttBit(UInt_t f)
voidTGeoAtt::SetAttBit(UInt_t f, Bool_t set)
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
voidTGeoNode::SetCloned(Bool_t flag = kTRUE)
voidTGeoNode::SetCurrentPoint(Double_t x, Double_t y, Double_t z)MENU
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
voidSetFinder(TGeoPatternFinder* finder)
voidTGeoNode::SetFWExtension(TGeoExtension* ext)
voidTGeoNode::SetInvisible()MENU
voidTGeoNode::SetMotherVolume(TGeoVolume* mother)
virtual voidTNamed::SetName(const char* name)MENU
virtual voidTNamed::SetNameTitle(const char* name, const char* title)
voidTGeoNode::SetNumber(Int_t number)
static voidTObject::SetObjectStat(Bool_t stat)
voidTGeoAtt::SetOptimization(Option_t* option)
voidTGeoNode::SetOverlapping(Bool_t flag = kTRUE)
voidTGeoNode::SetOverlaps(Int_t* ovlp, Int_t novlp)
virtual voidTNamed::SetTitle(const char* title = "")MENU
virtual voidTObject::SetUniqueID(UInt_t uid)
voidTGeoNode::SetUserExtension(TGeoExtension* ext)
voidTGeoNode::SetVirtual()
voidTGeoAtt::SetVisBranch()
virtual voidTGeoAtt::SetVisContainers(Bool_t flag = kTRUE)
voidTGeoAtt::SetVisDaughters(Bool_t vis = kTRUE)
virtual voidTGeoNode::SetVisibility(Bool_t vis = kTRUE)MENU
virtual voidTGeoAtt::SetVisLeaves(Bool_t flag = kTRUE)
virtual voidTGeoAtt::SetVisOnly(Bool_t flag = kTRUE)
voidTGeoAtt::SetVisRaytrace(Bool_t flag = kTRUE)
voidTGeoAtt::SetVisStreamed(Bool_t vis = kTRUE)
voidTGeoAtt::SetVisTouched(Bool_t vis = kTRUE)
voidTGeoNode::SetVolume(TGeoVolume* volume)
virtual voidShowMembers(TMemberInspector&)
virtual Int_tTNamed::Sizeof() const
virtual voidStreamer(TBuffer&)
voidStreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTGeoAtt::TestAttBit(UInt_t f) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
virtual voidTObject::UseCurrentStyle()
voidTGeoNode::VisibleDaughters(Bool_t vis = kTRUE)MENU
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:
TGeoNodeOffset(const TGeoNodeOffset&)
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
voidTObject::MakeZombie()
TGeoNodeOffset&operator=(const TGeoNodeOffset&)

Data Members

public:
enum TGeoNode::[unnamed] { kGeoNodeMatrix
kGeoNodeOffset
kGeoNodeVC
kGeoNodeOverlap
kGeoNodeCloned
};
enum TObject::EStatusBits { kCanDelete
kMustCleanup
kObjInCanvas
kIsReferenced
kHasUUID
kCannotPick
kNoContextMenu
kInvalidObject
};
enum TObject::[unnamed] { kIsOnHeap
kNotDeleted
kZombie
kBitMask
kSingleKey
kOverwrite
kWriteDelete
};
enum TGeoAtt::[unnamed] { kBitMask
};
enum TGeoAtt::EGeoVisibilityAtt { kVisOverride
kVisNone
kVisThis
kVisDaughters
kVisOneLevel
kVisStreamed
kVisTouched
kVisOnScreen
kVisContainers
kVisOnly
kVisBranch
kVisRaytrace
};
enum TGeoAtt::EGeoActivityAtt { kActOverride
kActNone
kActThis
kActDaughters
};
enum TGeoAtt::EGeoOptimizationAtt { kUseBoundingBox
kUseVoxels
kUseGsord
};
enum TGeoAtt::EGeoSavePrimitiveAtt { kSavePrimitiveAtt
kSaveNodesAtt
};
protected:
TGeoExtension*TGeoNode::fFWExtension! Transient framework-defined extension to volumes
UInt_tTGeoAtt::fGeoAttoption flags
TGeoVolume*TGeoNode::fMothermother volume
TStringTNamed::fNameobject identifier
Int_tTGeoNode::fNovlpnumber of overlaps
Int_tTGeoNode::fNumbercopy number
Int_t*TGeoNode::fOverlaps[fNovlp] list of indices for overlapping brothers
TStringTNamed::fTitleobject title
TGeoExtension*TGeoNode::fUserExtension! Transient user-defined extension to volumes
TGeoVolume*TGeoNode::fVolumevolume associated with this
private:
TGeoPatternFinder*fFinderfinder for this node
Int_tfIndexindex of this node in the division
Double_tfOffsetX offset for this node with respect to its mother

Class Charts

Inheritance Inherited Members Includes Libraries
Class Charts

Function documentation

TGeoNodeOffset()
 Default constructor
TGeoNodeOffset(const TGeoVolume* vol, Int_t index, Double_t offset)
 Constructor. Null pointer to matrix means identity transformation
TGeoNodeOffset(const TGeoNodeOffset& )
copy constructor
TGeoNodeOffset& operator=(const TGeoNodeOffset& )
assignment operator
~TGeoNodeOffset()
 Destructor
Int_t GetIndex() const
 Get the index of this offset.
TGeoNode * MakeCopyNode() const
 make a copy of this node
void cd() const
{;}
TGeoMatrix * GetMatrix() const
TGeoPatternFinder * GetFinder() const
{return 0;}
Double_t GetOffset() const
{return fOffset;}
void SetFinder(TGeoPatternFinder* finder)
{fFinder = finder;}