94 Error(
"ctor",
"path not valid");
139 Error(
"Align",
"Not performed. Geometry in LOCKED mode !");
143 Error(
"Align",
"Cannot align using gGeoIdentity. Use some default matrix constructor to represent identities.");
148 Error(
"Align",
"Cannot align division nodes: %s\n", node->
GetName());
159 for (i = 0; i <
fLevel; i++) {
163 id[i] =
vd->GetIndex(node);
170 for (i = 0; i <
fLevel; i++) {
187 Fatal(
"Align",
"Cannot make copy node for %s", node->
GetName());
197 vm->GetNodes()->RemoveAt(
id[i]);
198 vm->GetNodes()->AddAt(
nnode,
id[i]);
222 Int_t nd =
vm->GetNdaughters();
224 if (
nnode->GetMatrix()->IsShared()) {
226 for (i = 0; i < nd; i++) {
227 node =
vm->GetNode(i);
236 if (
cs->GetBoolNode()->GetRightMatrix() !=
nnode->GetMatrix())
250 Error(
"Align",
"Cannot clone node %s", node->
GetName());
258 vm->GetNodes()->RemoveAt(i);
263 Error(
"Align",
"The matrix replaced for %s is not actually shared",
GetName());
266 if (
vd->GetShape()->IsComposite()) {
268 if (
cs->GetBoolNode()->GetRightMatrix()->IsShared()) {
269 if (!
nnode->GetMatrix()->IsIdentity()) {
270 Error(
"Align",
"The composite shape having a shared matrix on the subtracted branch must be "
271 "positioned using identity matrix.");
288 if (!
newmat->IsRegistered())
289 newmat->RegisterYourself();
304 for (i =
fLevel - 1; i > 0; i--) {
313 vd->GetVoxels()->SetNeedRebuild();
335 "The check for overlaps for node: \n%s\n cannot be performed since the node is declared possibly "
341 while ((node =
GetNode(--i))) {
347 "The check for overlaps for assembly node: \n%s\n cannot be performed since the parent %s is declared "
348 "possibly overlapping",
453 printf(
" local matrix:\n");
458 printf(
" global matrix:\n");
465 printf(
" original local matrix:\n");
486 Error(
"SetBranchAsState",
"no state available");
490 Error(
"SetBranchAsState",
"not implemented for full cache");
542 Error(
"SetPath",
"wrong path -> maybe RestoreMasterVolume");
556 Fatal(
"SetBranchAsState",
"no state available");
589 TString errmsg(
"Cannot define a physical node link without a closed geometry and a valid path !");
619 Warning(
"SetPhysicalNode",
"Physical node changed for entry %s",
GetName());
const char Option_t
Option string (const char)
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize id
R__EXTERN TGeoManager * gGeoManager
R__EXTERN TGeoIdentity * gGeoIdentity
Composite shapes are Boolean combinations of two or more shape components.
Matrix class used for computing global transformations Should NOT be used for node definition.
void Clear(Option_t *option="") override
clear the data for this matrix
virtual Bool_t cd(const char *path="")
Browse the tree of nodes starting from fTopNode according to pathname.
static Bool_t IsLocked()
Check lock state.
TVirtualGeoPainter * GetGeomPainter()
Make a default painter if none present. Returns pointer to it.
Bool_t CheckPath(const char *path) const
Check if a geometry path is valid without changing the state of the current navigator.
TObjArray * GetListOfGShapes() const
TGeoHMatrix * GetCurrentMatrix() const
TGeoNode * GetTopNode() const
TGeoNodeCache * GetCache() const
void SetCheckedNode(TGeoNode *node)
Assign a given node to be checked for overlaps. Any other overlaps will be ignored.
void CdTop()
Make top level node the current node.
Int_t PushPath(Int_t startlevel=0)
Geometrical transformation package.
void Print(Option_t *option="") const override
print the matrix in 4x4 format
Class providing navigation API for TGeo geometries.
Special pool of reusable nodes.
void * GetMatrices() const
A node containing local transformation.
A node represent a volume positioned inside another.They store links to both volumes and to the TGeoM...
Bool_t IsOverlapping() const
TGeoVolume * GetVolume() const
virtual TGeoMatrix * GetMatrix() const =0
virtual TGeoNode * MakeCopyNode() const
void CheckOverlaps(Double_t ovlp=0.1, Option_t *option="")
Check overlaps bigger than OVLP hierarchically, starting with this node.
const TGeoHMatrix * fMatrix
~TGeoPNEntry() override
Destructor.
void SetPhysicalNode(TGeoPhysicalNode *node)
Setter for the corresponding physical node.
TGeoHMatrix * fGlobalOrig
TGeoPNEntry()
Default constructor.
void SetMatrix(const TGeoHMatrix *matrix)
Set the additional matrix for this node entry.
Physical nodes are the actual 'touchable' objects in the geometry, representing a path of positioned ...
void SetBranchAsState()
Set node branch according to current state.
TGeoNode * GetMother(Int_t levup=1) const
Return parent at LEVUP generation.
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.
void SetVisibility(Bool_t flag=kTRUE)
TGeoPhysicalNode()
Default constructor.
void SetAligned(Bool_t flag=kTRUE)
void Paint(Option_t *option="") override
Paint this node and its content according to visualization settings.
void Print(Option_t *option="") const override
Print info about this node.
~TGeoPhysicalNode() override
Destructor.
void SetVisibleFull(Bool_t flag=kTRUE)
Bool_t IsMatchingState(TGeoNavigator *nav) const
Checks if a given navigator state matches this physical node.
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.
void Draw(Option_t *option="") override
Draw this node.
TGeoHMatrix * fMatrixOrig
Bool_t Align(TGeoMatrix *newmat=nullptr, TGeoShape *newshape=nullptr, Bool_t check=kFALSE, Double_t ovlp=0.001)
Align a physical node with a new relative matrix/shape.
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.
The shape encapsulating an assembly (union) of volumes.
Base abstract class for all shapes.
virtual Bool_t IsComposite() const
TGeoVolume, TGeoVolumeMulti, TGeoVolumeAssembly are the volume classes.
virtual TGeoVolume * CloneVolume() const
Clone this volume.
TGeoShape * GetShape() const
virtual Bool_t IsAssembly() const
Returns true if the volume is an assembly or a scaled assembly.
Finder class handling voxels.
The TNamed class is the base class for all named ROOT classes.
const char * GetName() const override
Returns name of object.
void AddAt(TObject *obj, Int_t idx) override
Add object at position ids.
virtual void AddAtAndExpand(TObject *obj, Int_t idx)
Add object at position idx.
void Delete(Option_t *option="") override
Remove all objects from the array AND delete all heap based objects.
TObject * At(Int_t idx) const override
TObject * UncheckedAt(Int_t i) const
TObject * RemoveAt(Int_t idx) override
Remove object at index idx.
void Add(TObject *obj) override
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
virtual void Fatal(const char *method, const char *msgfmt,...) const
Issue fatal error message.
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
const char * Data() const
Abstract class for geometry painters.