Log of /trunk/geom/geom/src/TGeoVoxelFinder.cxx
Parent Directory
Revision
48928 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Mon Mar 25 15:45:11 2013 UTC (22 months ago) by
agheata
File length: 80320 byte(s)
Diff to
previous 43550
Large scale cleanup in shapes navigation interfaces adding const modifier for point and direction parameters passed as input arguments.
Revision
42982 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Mon Feb 13 10:21:23 2012 UTC (2 years, 11 months ago) by
agheata
File length: 80260 byte(s)
Diff to
previous 42459
Added support structure TGeoStateInfo to communicate stateful navigation data internally. Fully removed locking from TGeoManager and TGeoVoxelFinder.
Revision
41341 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Tue Oct 11 14:58:29 2011 UTC (3 years, 3 months ago) by
agheata
File length: 81527 byte(s)
Diff to
previous 41180
Adding thread id as parameter to methods of TGeoVoxelFinder to avoid passing through the serial TGeoManager::ThreadId. This recovers quite good the scalability with the number of threads
Revision
35047 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Fri Aug 27 14:38:41 2010 UTC (4 years, 4 months ago) by
agheata
File length: 78519 byte(s)
Diff to
previous 35004
Bounding box for assemblies is now computed dynamically when needed instead of after every AddNode operation.
The patch reduces the number of calls to TGeoShapeAssembly::ComputeBBox from 4.8 million to 12700 (!) in ALICE and gains 40% speedup in initialization time (~30sec).
Thanks to Matevz for spotting this. Also added Matevz's code for improving access by index to PNEntries.
Revision
27731 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Mon Mar 9 17:40:56 2009 UTC (5 years, 10 months ago) by
brun
File length: 77753 byte(s)
Diff to
previous 27624
From Andrei:
- Removed casting away constness in headers, and removed == and != between doubles in all geom code (Philippe's suggestion)
- Info messages suppressed now by the static TGeoManager::SetVerboseLevel(0). We should probably call this at the beginning of stressGeometry.cxx
- Fine tune in TGeoIntersection::DistFromInside() that solves inner boundary crossings in case the starting point is very close to boundary
- TGeoManager::FindInCluster() gives now priority (when selecting between MANY candidates) to the node that was proposed by FindNextBoundary()
Revision
27455 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Mon Feb 16 11:22:21 2009 UTC (5 years, 11 months ago) by
brun
File length: 77645 byte(s)
Diff to
previous 22923
From Andrei:
- Protection added in TGeoArb8::DistFromInside() which could wrongly return the distance to one of the Z endcaps when starting from lateral boundaries. Removed unnecesarry intermediat truncations in computations of distance to inside/outside
- TGeoUnion::DistFromInside() fixed to give the full distance to outside rather than the one from the current component.
Revision
21497 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Wed Dec 19 16:28:00 2007 UTC (7 years, 1 month ago) by
brun
Original Path:
trunk/geom/src/TGeoVoxelFinder.cxx
File length: 75104 byte(s)
Diff to
previous 20882
From Andrei:
Implement a custom TGeoVoxelFinder::Streamer to read the old versions of the class.
lso removed 3 obsolete voxels classes that were present in TGeoVoxelFinder.h/.cxx. Old geometry files with voxels should be readable now (tested) and produce consistent results. For me stressGeometry works.
Revision
19777 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Mon Sep 10 14:28:49 2007 UTC (7 years, 4 months ago) by
brun
Original Path:
trunk/geom/src/TGeoVoxelFinder.cxx
File length: 130815 byte(s)
Diff to
previous 17306
From Andrei:
a diff with a new class TGeoUniformVoxels that is supposed to increase navigation speed. For the moment it does not - there is still some work to be done - so it is not yet used. The patch contains also a fix for the problem of visualization of daughters of composites.
Revision
17306 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Fri Jan 12 16:03:17 2007 UTC (8 years ago) by
brun
Original Path:
trunk/geom/src/TGeoVoxelFinder.cxx
File length: 108638 byte(s)
Diff to
previous 15742
TMath::Abs, TMath::Min, TMath::Max, TMath::Sign, TMath::Range
These functions are unfortunately not defined in a standard way in std::
This include is referenced by a new version of TMath.h.
As a result, TMath.h is back compatible with the previous version.
TMathBase.h is used in place of TMath.h in all the classes
that will go into the future miniCore library.
TMath.h and the TMath implementation will go into a new math sub-directory.
TString.h uses TMathBase.h instead of TMath.h.
As a result, it was necessary to include "TMath.h" in some classes
assuming that TMath was included via TString and using other functions
than the ones defined in TMathBase.h
----------------------------------------------------------------------
Revision
15134 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Tue May 23 04:47:42 2006 UTC (8 years, 8 months ago) by
brun
Original Path:
trunk/geom/src/TGeoVoxelFinder.cxx
File length: 108473 byte(s)
Diff to
previous 14548
From Federico Carminati:
"I have implemented all copy and equal operators needed to silence all
warnings in AliRoot, as requested. I have implemented shallow copies as
would do the default operators synthetized by the compiler.
Most operators are protected. If users complain, you just have to move
them into the public area, but class derivation is of course supported.
It has been a terrible job, I have modified 278 files, but the changes
are backward compabile, and this goes a long way to permitting user to
use the effc++ flag with root headers."
Revision
14548 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Wed Apr 5 09:36:06 2006 UTC (8 years, 9 months ago) by
brun
Original Path:
trunk/geom/src/TGeoVoxelFinder.cxx
File length: 106361 byte(s)
Diff to
previous 14534
From Andrei:
I finally found and fixed the reason for the failure of stressGeom test macro when
compiling TGeo with different optimization levels. It was a precision problem in
TGeoPgon::SliceCrossingIn() method. I attached the patch, as well as a modified
stressAlice macro which in addition allows inspecting/debugging whatever differences
may appear w.r.to the used reference:
Revision
14534 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Mon Apr 3 16:19:32 2006 UTC (8 years, 9 months ago) by
brun
Original Path:
trunk/geom/src/TGeoVoxelFinder.cxx
File length: 106299 byte(s)
Diff to
previous 14240
From Andrei:
- TGeoXtru shapes with polygone vertices defined counter-clockwise in XY
plane were not valid (Andreas) - fixed
- TGeoVolume::SaveAs() works now correctly even in case of assemblies
(Ivana) - fixed by Mihaela
- Some minor precision problems fixed in divisions
- minor fix in navigation in assemblies; assemblies defined as overlapping
now forbidden
- fix for automatic re-voxelization after un-alignment
Revision
14093 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Thu Feb 23 13:23:08 2006 UTC (8 years, 11 months ago) by
brun
Original Path:
trunk/geom/src/TGeoVoxelFinder.cxx
File length: 106143 byte(s)
Diff to
previous 13986
From Andrei:
- simplification of TGeoOverlap class: derived classes TGeoNodeOverlap and
TGeoExtrusion removed
- The overlap checker perform the check also for assembly candidates
- Improvements in TGeoIterator class
- Minor fix in TGeoVoxelFinder class
Revision
13960 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Tue Jan 31 14:02:36 2006 UTC (8 years, 11 months ago) by
brun
Original Path:
trunk/geom/src/TGeoVoxelFinder.cxx
File length: 107340 byte(s)
Diff to
previous 13373
From Andrei:
1. TGeoManager::SetNodeSelectable(flag); - allows user to make nodes selected in the
pad rather that volumes(default)
2. TGeoManager::ReplaceVolume(TGeoVolume *vorig, TGeoVolume *vnew); - allows
replacement of all occurances of VORIG with VNEW in the geometry tree. VORIG is not
removed from the list of volumes, but all nodes referencing it as their volume or
mother will reference instead VNEW.
3. static TGeoVolumeAssembly::MakeAssemblyFromVolume(TGeoVolume *vorig); - creates a
sort of clone of a normal volume (same daughters inside), but this will be an
assembly. This method can be used togeather with ReplaceVolume() to change some
virtual conainers in a closed geometry with assemblies.
4. TGeoVolume::RemoveNode(TGeoNode *node) - will safely remove a daughter node of a
volume, even if the geometry is closed. Geometry is valid for navigation afterwards.
Revision
13373 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Mon Nov 28 12:55:35 2005 UTC (9 years, 1 month ago) by
brun
Original Path:
trunk/geom/src/TGeoVoxelFinder.cxx
File length: 107319 byte(s)
Diff to
previous 13303
From Andrei:
some optimizations for creating physical nodes:
- re-voxelization no more done afer each Align() call - instead a signal is sent to
the existing voxels; the first navigation query to this voxel will rebuild it.
- volumes are aware if they were positioned more than once (replicated). If this is
not the case the volume is not cloned anymore for alignment.
Revision
13271 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Thu Nov 17 13:17:55 2005 UTC (9 years, 2 months ago) by
brun
Original Path:
trunk/geom/src/TGeoVoxelFinder.cxx
File length: 105480 byte(s)
Diff to
previous 12629
From Andrei & Mihaela:
a diff containing the implementation of TGeoShape::Capacity. There are also
few other fixes (see below):
Mihaela:
New method:
Double_t TGeoShape::Capacity() const;
implemented for all supported shapes. The algorithms provide analytical computation of
shape capacity in [cm^3]. All algorithms are accurate with 2 exceptions:
- TGeoCtub : the formula is just an approximation due to the difficulties to integrate
over the phi angle in the general case.
- TGeoCompositeShape: the computation of the capacity is done by sampling, with an
accuracy of 1%.
Based on this method I extended the implementation of TGeoVolume::Weight(Double_t
precision, Option_t *option). The default value of option is now "va" meaning: verbose
+ analytical. Removing "a" from the default option performs computation of volume
weight using the old algorithm of sampling. I have checked the 2 ways of computing the
weight one against the other and they are consistent.
Andrei:
- fixed a memory leak related to TGeoShapeAssembly ownership
- fixed some tracking problems for assemblies (when the top volume was an assembly)
Revision
12025 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Mon Jun 13 12:17:32 2005 UTC (9 years, 7 months ago) by
brun
Original Path:
trunk/geom/src/TGeoVoxelFinder.cxx
File length: 104927 byte(s)
Diff to
previous 11709
From Andrei Gheata:
New developments related to assemblies. Assemblies were up to now just
a collection of nodes that could be handled together only during build
time(TGeoVolumeAssembly class).
When positioning an assembly as node in some container volume,
what happened was just that all components of the assembly were directly
put into this container (with the big disadvantage of creating a very
flat structure at the level ofthis container).
With the new implementation, an assembly volume has a shape
(TGeoShapeAssembly) that derives from TGeoShape and implements all
required navigation functionality. Practically, this behaves as the
union of all shapes positioned in the assembly, but it is not
represented as a composite shape and uses voxelization.
An assembly volume creates an hierarchical level and it geometrically
insulates the structure from the rest (as a normal volume). Physically,
a point that is INSIDE a TGeoShapeAssembly is always inside one of
the components, so a TGeoVolumeAssembly does not have a medium. Due to
the self containment of assemblies, they are very practical to use when
a container is hard to define due to possible overlaps during positioning.
For instance, it is very easy now to create honeycomb structures without
using the "MANY" (overlapping) feature that is quite expensive in
performance.
To create an assembly volume, one should:
TGeoVolume *vol = new TGeoVolumeAssembly(name);
vol->AddNode(vol1, 1, ...)
vol->AddNode(vol2, 1, ...)
....
The creation of the TGeoShapeAssembly for the assembly volume is
completely transparent to users. Its bounding box is recomputed after
the addition of a node. Users do not have to create TGeoShapeAssembly
themselves. One can even replace a container in his existing code
(if this needed to be positioned as overlapping) with an assembly, by
just replacing:
TGeoVolume *container = new TGeoVolume(name, shape, medium);
with:
TGeoVolume *container = new TGeoVolumeAssembly(name);
then replace:
some_mother_vol->AddNodeOverlap(container,1,...)
with:
some_mother_vol->AddNode(container,1,...)
One cam define assembly(assembly(assembly(...))) Usage of assemblies
does NOT imply any penalty in navigation performance in itself.
Assemblies can also be used to regroup existing flat structures of
nodes thus highly optimizing the performance.
Revision
6144 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Tue Feb 18 15:37:36 2003 UTC (11 years, 11 months ago) by
brun
Original Path:
trunk/geom/src/TGeoVoxelFinder.cxx
File length: 97519 byte(s)
Diff to
previous 6136
From Andrei;
TGeoManager :
- Safety() fully implemented using voxelization
- FindNextBoundary() modified in order to compute safety only when
needed (when a value MAXSTEP representing the physical step is given as
input).
TGeoBBox :
- correction for points exactly on box boundary for DistToIn()
TGeoVoxelFinder :
- fast check if distance to the voxel corresponding to a given node is
smaller than a input value - used in computing safety and distance to
next boundary;
TGeoChecker:
- CheckPoint() changed to use new Safety().
Revision
6136 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Mon Feb 17 11:57:31 2003 UTC (11 years, 11 months ago) by
brun
Original Path:
trunk/geom/src/TGeoVoxelFinder.cxx
File length: 96921 byte(s)
Diff to
previous 6019
m andrei;
TGeoManager :
- added TGeoManager::Safety() that computes the global safety for the
current point. This is just the first implementation, since it does not
use yet voxelization. This will be needed for the VMC because for the
time being safety is computed just for the crossed volumes along the
current direction plus the current volume, which of course is not enough
- finding the closest neighbour for a given point has to use a different
algorithm.
- added weight estimation for the top volume
TGeoMaterial :
- material index in the list of materials added as data member (as for
volumes) - I needed this for weight computation, but it will be helpfull
for any other analysis based on material indexing.
TGeoVolume :
- weight estimation method in the context menu of volumes : can be
verbose (default) or not and takes as argument the desired precision.
Prints error (1 x SIGMA)
TGeoChecker:
- implementation of weight estimation based on sampling random points
in the bounding box of a volume. Materials with rho<0.01 g/cm3 (mostly
gases) ignored due to the fact that we generally do not want to weight
the air in the top volume container (it can have quite significant mass)
other modified classes just provide redirection of Weight() method to
the geopainter package.
Revision
5972 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Thu Jan 23 14:25:37 2003 UTC (12 years ago) by
brun
Original Path:
trunk/geom/src/TGeoVoxelFinder.cxx
File length: 96954 byte(s)
Diff to
previous 5897
From Andrei:
- all shape classes : changed the prototype for Safety() method.
Eliminated validity checking in Divide() methods that are now globally
handled by TGeoVolume::Divide(). Added methods
TGeoShape::GetAxisName/Range(Int_t iaxis) which are used by the new
global division mechanism.
- safety for TGeoTrap now computed (pcon, pgon not yet)
- TGeoVolume : eliminated unnecesarry Divide() prototypes. The new
Divide() prototype is backwards compatible (old macros works with it)
but supports an option in order to allow all G3 division types. More
description in TGeoVolume::Divide().
- TGeoManager : Only one prototype for G3-like divisions left,
supporting all G3 options and also being able to assign to the division
volumes a medium different than the one of the divided volume. New
FindNode(x,y,z) implemented. New IsSameLocation(x,y,z) with the same
functionality as GINVOL.
Revision
5883 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Sun Jan 12 14:49:32 2003 UTC (12 years ago) by
brun
Original Path:
trunk/geom/src/TGeoVoxelFinder.cxx
File length: 97891 byte(s)
Diff to
previous 5850
New version of TGeo classes from Andrei:
-TGeoManager - added G3-like prototypes for building geometry
-TGeoPatternFinder - added parameters of a division (fStart, fStep, fEnd)
-TGeoVolume - fix in TGeoVolumeMulti::AddVolume() to update existing
nodes for all volumes in list
several shapes supporting divisions - using TGeoVolumeMulti for divisions
-TGeoVoxelFinder - fixed dtor
Revision
5406 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Tue Oct 8 16:17:49 2002 UTC (12 years, 3 months ago) by
brun
Original Path:
trunk/geom/src/TGeoVoxelFinder.cxx
File length: 84349 byte(s)
Diff to
previous 5354
new version of the geometry package from Andrei:
- bug fix in the destructor of TGeoPatternCylPhi
- several modifications in the default constructors of shapes.
- several corrections and "v" feature added to I/O
- removed base class for finders
Now you can save voxels and retreive them with no problem. You can use :
gGeoManager->Export("filename", "", "v") to do that. The size of files
without/with voxelization are :
Exp no voxels saved voxels saved
ALICE 404227 719703
CMS 550440 1275590
ATLAS 1858198 3335166
Be careful, the files TGeoFinder.h and TGeoFinder.cxx have been removed.
Suggest doing:
rm geom/src/*.o geom/src/G__*
Revision
5354 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Fri Sep 27 16:16:06 2002 UTC (12 years, 3 months ago) by
brun
Original Path:
trunk/geom/src/TGeoVoxelFinder.cxx
File length: 83655 byte(s)
Diff to
previous 4956
New version of the geometry package by Andrea & Mihaela Gheata
New features:
-I/O for all geometry classes. For example, to save/restore a geometry structure,
TFile f("mygeom.root","recreate");
gGeoManager->Write("mygeom");
and to read it back;
TFile f("mygeom.root");
f.Get("myGeom");
gGeoManager->CloseGeometry();
-Composite shapes fully implemented (no visualisation yet).
A composite shape is built out of basic shapes and transformations via
a simple formula mechanism, eg assuming a TGeoTube "tub1" and a TGeoMatrix "r1",
we can build a composite shape with:
TGeoCompositeShape *comp = new TGeoCompositeShape("comp",formula); where
char* formula="tub1+tub1:r1"
This will create the union of a tube with itself rotated.
The operators recognized by the geometry formula parser are "+","-","*"
for union, subtraction and intersection respectively. The colon ":" can be
used to specify a transformation for a given component.
-The voxelisation in cylindrical coordinates added as an optional optimisation
algorithm.
-Some bug fixes and several improvements in the tracking-related algorithms.
This form allows you to request diffs between any two revisions of this file.
For each of the two "sides" of the diff,
enter a numeric revision.