109 Error(
"ctor",
"volume not specified");
133 fOverlaps(gn.fOverlaps),
134 fUserExtension(gn.fUserExtension->Grab()),
135 fFWExtension(gn.fFWExtension->Grab())
189 static Int_t icall = 0;
192 if (unique_volumes) {
227 Info(
"CheckOverlaps",
"Checking overlaps for %s and daughters within %g",
fVolume->
GetName(),ovlp);
229 Info(
"CheckOverlaps",
"Checking overlaps by sampling <%s> for %s and daughters", option,
fVolume->
GetName());
230 Info(
"CheckOverlaps",
"=== NOTE: Extrusions NOT checked with sampling option ! ===");
242 while ((node=
next())) {
257 for (i=0; i<novlps; i++) {
262 Info(
"CheckOverlaps",
"Number of illegal overlaps/extrusions : %d\n", novlps);
275 if (!painter)
return dist;
287 if (!painter)
return;
298 if (!painter)
return 0;
321 printf(
" possibly overlaping with : ");
326 printf(
"Transformation matrix:\n");
374 for (i=0; i<nd; i++) {
379 for (i=0; i<
fNovlp; i++) {
395 Int_t istart = ifree;
397 for (
Int_t id=0;
id<nd;
id++) {
399 array[istart+
id] = ifree;
400 array[ifree++] = ++nodeid;
416 if (daughter==node) {
424 new_level = daughter->FindNode(node, level+1);
444 out <<
" vol = gGeoManager->GetVolume("<<quote<<
fVolume->
GetName()<<quote<<
");"<<std::endl;
447 out <<
" vol->SetVisDaughters(kFALSE);"<<std::endl;
458 out <<
" vol->SetVisibility(kFALSE);"<<std::endl;
465 for (
Int_t i=0; i<nd; i++) {
470 out <<
" vol = gGeoManager->GetVolume("<<quote<<
fVolume->
GetName()<<quote<<
");"<<std::endl;
471 out<<
" node = vol->GetNode("<<i<<
");"<<std::endl;
473 out<<
" node->VisibleDaughters(kFALSE);"<<std::endl;
478 out<<
" node->SetVisibility(kFALSE);"<<std::endl;
594 if (!painter)
return;
606 printf(
" Local : %g, %g, %g\n", point[0], point[1], point[2]);
608 printf(
"current point not inside this\n");
614 printf(
"current node divided\n");
617 printf(
"point not inside division element\n");
625 printf(
"volume not voxelized\n");
635 printf(
"no candidates for current point\n");
639 for (
Int_t id=0;
id<ncheck;
id++) {
642 else overlap =
"ONLY";
770 Int_t count = 40 + 4;
866 fOffset(gno.fOffset),
1003 fArray =
new Int_t[30];
1005 fTopName = fTop->GetName();
1007 fPluginAutoexec =
kFALSE;
1042 if (&iter ==
this)
return *
this;
1081 for (i=2; i<
fLevel+1; i++) {
1107 if (
fArray[fLevel]<nd-1) {
1116 if (
fArray[fLevel]<nd-1) {
1127 if (
fArray[fLevel]<nd-1) {
1167 if (!level || level>
fLevel)
return 0;
1206 if (top)
fTop = top;
void Add(TObject *obj, const char *name=0, Int_t check=-1)
Add object with name to browser.
virtual Int_t GetIndex() const
Get the index of this offset.
double dist(Rotation3D const &r1, Rotation3D const &r2)
TGeoPatternFinder * fFinder
void DrawOnly(Option_t *option="")
draw only this node independently of its vis options
void Start(Bool_t reset=kTRUE)
Start the stopwatch.
TGeoVolume * GetVolume() const
void SetUserPlugin(TGeoIteratorPlugin *plugin)
Set a plugin.
ClassImp(TSeqCollection) Int_t TSeqCollection TIter next(this)
Return index of object in collection.
virtual void ExecuteVolumeEvent(TGeoVolume *volume, Int_t event, Int_t px, Int_t py)=0
virtual TGeoPatternFinder * GetFinder() const
TGeoPatternFinder * GetFinder() const
Double_t Safety(const Double_t *point, Bool_t in=kTRUE) const
computes the closest distance from given point to this shape
virtual TGeoNode * FindNode(Double_t *, const Double_t *=0)
virtual Int_t * GetCheckList(const Double_t *point, Int_t &nelem, TGeoStateInfo &td)
get the list of daughter indices for which point is inside their bbox
virtual char * GetObjectInfo(Int_t px, Int_t py) const
Get node info for the browser.
TGeoStateInfo * GetInfo()
Get next state info pointer.
void CdUp()
Go one level up in geometry.
virtual void ProcessNode()=0
virtual ~TGeoIterator()
Destructor.
virtual void SetVisibility(Bool_t vis=kTRUE)
Set visibility for this object.
virtual void SetName(const char *name)
Change (i.e.
TGeoNode * GetNode(Int_t level) const
Returns current node at a given level.
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
TGeoExtension * GrabFWExtension() const
Get a copy of the framework extension pointer.
void Skip()
Stop iterating the current branch.
virtual void Draw(Option_t *option="")
draw top volume according to option
Int_t FindNode(const TGeoNode *node, Int_t level)
Search for a node within the branch of this one.
TGeoNode * Next()
Returns next node.
TGeoNode * operator()()
Returns next node.
void MasterToLocal(const Double_t *master, Double_t *local) const
void Multiply(const TGeoMatrix *right)
multiply to the right with an other transformation if right is identity matrix, just return ...
virtual void DrawOnly(Option_t *option="")
draw only this volume
void ToLower()
Change string to lower-case.
Bool_t IsVisDaughters() const
Int_t GetEntriesFast() const
virtual void Paint(Option_t *option="")
Paint this node and its content according to visualization settings.
void Reset(TGeoVolume *top=0)
Resets the iterator for volume TOP.
virtual void LocalToMasterVect(const Double_t *local, Double_t *master) const
convert a vector by multiplying its column vector (x, y, z, 1) to matrix inverse
virtual void LocalToMaster(const Double_t *local, Double_t *master) const
Convert the point coordinates from local reference system to mother reference.
void IncreaseArray()
Increase by 30 the size of the array.
Int_t GetIndex(Int_t i) const
void VisibleDaughters(Bool_t vis=kTRUE)
Set visibility of the daughters (obsolete).
Int_t GetNdaughters() const
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
virtual void ls(Option_t *option="") const
Print the path (A/B/C/...) to this node on stdout.
virtual void PaintNode(TGeoNode *node, Option_t *option="", TGeoMatrix *global=0)=0
virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py)
Execute mouse actions on this volume.
void InspectNode() const
Inspect this node.
const char * Data() const
void SetUserExtension(TGeoExtension *ext)
Connect user-defined extension to the node.
TGeoExtension * fUserExtension
virtual Int_t GetByteCount() const
return the total size in bytes of this node
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString...
Bool_t IsOverlapping() const
Bool_t IsVisStreamed() const
void SetCurrentPoint(Double_t *point)
TObjArray * GetListOfNodes()
The TNamed class is the base class for all named ROOT classes.
Bool_t IsVisDaughters() const
void SetVisStreamed(Bool_t vis=kTRUE)
Mark attributes as "streamed to file".
TVirtualGeoPainter * GetPainter() const
void SortOverlaps()
Sort overlaps by decreasing overlap distance. Extrusions comes first.
TGeoVolume * GetTopVolume() const
std::map< std::string, std::string >::const_iterator iter
void SetFWExtension(TGeoExtension *ext)
Connect framework defined extension to the node.
void GetPath(TString &path) const
Returns the path for the current node.
void SetTopName(const char *name)
Set the top name for path.
virtual void MasterToLocal(const Double_t *master, Double_t *local) const
convert a point by multiplying its column vector (x, y, z, 1) to matrix
Bool_t IsVisTouched() const
virtual TGeoMatrix * GetMatrix() const =0
virtual ~TGeoNodeOffset()
Destructor.
TGeoNode * GetDaughter(Int_t ind) const
ClassImp(TGeoNode) TGeoNode
Default constructor.
TGeoIteratorPlugin * fPlugin
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
virtual Int_t DistanceToPrimitiveVol(TGeoVolume *vol, Int_t px, Int_t py)=0
void Browse(TBrowser *b)
How-to-browse for a node.
void ReleaseInfo()
Release last used state info pointer.
void PrintOverlaps() const
print possible overlapping nodes if (!IsOverlapping()) {printf("node %s is ONLY\n", GetName()); return;}
virtual void MasterToLocalVect(const Double_t *master, Double_t *local) const
convert a point by multiplying its column vector (x, y, z, 1) to matrix
Bool_t IsOnScreen() const
check if this node is drawn. Assumes that this node is current
const TGeoMatrix * GetCurrentMatrix() const
Returns global matrix for current node.
Using a TBrowser one can browse all ROOT objects.
virtual void Release() const =0
const Double_t * GetCurrentPoint() const
void DrawOverlaps()
Method drawing the overlap candidates with this node.
Bool_t Contains(const Double_t *point) const
virtual TGeoNode * MakeCopyNode() const
Make a copy of this node.
TNamed & operator=(const TNamed &rhs)
TNamed assignment operator.
void CheckOverlaps(Double_t ovlp=0.1, Option_t *option="")
Check overlaps bigger than OVLP hierarchically, starting with this node.
void SetMotherVolume(TGeoVolume *mother)
void Clear(Option_t *option="")
clear the data for this matrix
TPaveLabel title(3, 27.1, 15, 28.7,"ROOT Environment and Tools")
void SaveAttributes(std::ostream &out)
save attributes for this node
void Draw(Option_t *option="")
draw current node according to option
TGeoExtension * fFWExtension
Transient user-defined extension to volumes.
virtual Double_t Safety(const Double_t *point, Bool_t in=kTRUE) const =0
virtual void LocalToMaster(const Double_t *local, Double_t *master) const
convert a point by multiplying its column vector (x, y, z, 1) to matrix inverse
virtual void LocalToMasterVect(const Double_t *local, Double_t *master) const
Convert a vector from local reference system to mother reference.
Bool_t IsSelected() const
void SetMatrix(const TGeoMatrix *matrix)
Matrix setter.
TGeoManager * GetGeoManager() const
virtual const char * GetName() const
Returns name of object.
TGeoNodeCache * GetCache() const
virtual TGeoNode * MakeCopyNode() const
make a copy of this node
TGeoNavigator * GetCurrentNavigator() const
Returns current navigator for the calling thread.
void SetIterator(const TGeoIterator *iter)
Bool_t TestAttBit(UInt_t f) const
void CheckOverlaps(Double_t ovlp=0.1, Option_t *option="") const
Overlap checking tool.
TGeoNode * GetNode(const char *name) const
get the pointer to a daughter node
virtual void AddAt(TObject *obj, Int_t idx)
Add object at position ids.
Int_t CountDaughters(Bool_t unique_volumes=kFALSE)
Returns the number of daughters.
TGeoNode * FindNode(Bool_t safe_start=kTRUE)
Returns deepest node containing current point.
void SetFinder(TGeoPatternFinder *finder)
void SetCloned(Bool_t flag=kTRUE)
void SetOverlapping(Bool_t flag=kTRUE)
TGeoShape * GetShape() const
R__EXTERN TGeoManager * gGeoManager
virtual void SetVisibility(Bool_t vis=kTRUE)
set visibility of this volume
TGeoVoxelFinder * GetVoxels() const
Getter for optimization structure.
void PrintCandidates() const
print daughters candidates for containing current point cd();
ClassImp(TMCParticle) void TMCParticle printf(": p=(%7.3f,%7.3f,%9.3f) ;", fPx, fPy, fPz)
void ModifiedPad() const
Send "Modified" signal to painter.
TGeoNodeMatrix & operator=(const TGeoNodeMatrix &gnm)
Assignment.
virtual const char * GetVolumeInfo(const TGeoVolume *volume, Int_t px, Int_t py) const =0
TGeoVolume * GetCurrentVolume() const
void Print(Option_t *option="") const
print the matrix in 4x4 format
void SetCheckingOverlaps(Bool_t flag=kTRUE)
Binding & operator=(OUT(*fun)(void))
TGeoNode & operator=(const TGeoNode &)
assignment operator
virtual ~TGeoNode()
Destructor.
virtual void Print(Option_t *option="") const
Print volume info.
TGeoExtension * GrabUserExtension() const
Get a copy of the user extension pointer.
void ClearOverlaps()
Clear the list of overlaps.
void CheckShapes()
check for wrong parameters in shapes
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
compute the closest distance of approach from point px,py to this node
virtual TGeoExtension * Grab()=0
R__EXTERN TGeoIdentity * gGeoIdentity
void SetVisLevel(Int_t level=3)
set default level down to which visualization is performed
void SetVisDaughters(Bool_t vis=kTRUE)
Set visibility for the daughters.
virtual void MasterToLocal(const Double_t *master, Double_t *local) const
Convert the point coordinates from mother reference to local reference system.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
virtual Bool_t IsVisible() const
virtual Int_t GetOptimalVoxels() const
— Returns type of optimal voxelization for this node.
Bool_t IsRotAboutZ() const
Returns true if no rotation or the rotation is about Z axis.
virtual ~TGeoNodeMatrix()
Destructor.
void SetVisibility(Bool_t vis=kTRUE)
Set visibility of the node (obsolete).
TObjArray * GetListOfOverlaps()
TObject * At(Int_t idx) const
void PrintVoxelLimits(const Double_t *point) const
print the voxel containing point
virtual void OpProgress(const char *opname, Long64_t current, Long64_t size, TStopwatch *watch=0, Bool_t last=kFALSE, Bool_t refresh=kFALSE, const char *msg="")=0
void SetVisTouched(Bool_t vis=kTRUE)
Mark visualization attributes as "modified".
void CheckShapes()
check for negative parameters in shapes.
TGeoNodeOffset & operator=(const TGeoNodeOffset &)
assignment operator
virtual const Double_t * GetTranslation() const =0
virtual Bool_t IsCylType() const =0
void SelectVolume(Bool_t clear=kFALSE)
Select this volume as matching an arbitrary criteria.
TVirtualGeoPainter * GetGeomPainter()
Make a default painter if none present. Returns pointer to it.
void FillIdArray(Int_t &ifree, Int_t &nodeid, Int_t *array) const
Fill array with node id. Recursive on node branch.
TGeoIterator & operator=(const TGeoIterator &iter)
Assignment.
void SetOverlaps(Int_t *ovlp, Int_t novlp)
set the list of overlaps for this node (ovlp must be created with operator new)
Bool_t MayOverlap(Int_t iother) const
Check the overlab between the bounding box of the node overlaps with the one the brother with index I...
void SetNumber(Int_t number)
Int_t GetNdaughters() const
virtual void MasterToLocalVect(const Double_t *master, Double_t *local) const
Convert a vector from mother reference to local reference system.