|Message: Access to smart voxels during tracking||Not Logged In (login)|
Click on the Forum title, e.g. on the "Forums by Category" page, to read a sequence of postings to the Forum and its threads all in one page. If you are only interested in one thread or the thread following a specific posting, click the thread or the posting, which takes you to a smaller page, which contains only the part you are interested in and may be easier to navigate.
Messages are "chained" if there are only replies at the first level, i.e. 1/1.html, 1/1/1.html etc. In case of "chained" messages the message number is replaced by the icon and there is no indentation.
Inline: Display the subject line only or also the text of the posting(s); for the choice "All" the "Outline" choices are switched off.
|1||0||1||no text / full text of posting|
|2||1||All||text for level 1 only / text for All postings|
Outline: Choose the depth of the posting thread, successive toggle controls provide increasing detail.
|1||2||1||2 levels / 1 level (original posting)|
|2||3||2||3 levels / 2 levels|
|3||3||All||3 levels / all levels (all postings)|
Geant4 geometry uses smart voxels to improve the efficiency of navigating the geometry volume hierarchy. I have a similar problem in G4beamline when there is a large number of magnets in a system.
The code calculates a bounding box for the field of each magnet (including fringe fields, which can be much larger than the volume of the magnet itself). During tracking the code loops over all fields, evaluating those for which the current point is inside the bounding box. For a system with >100 magnets, this loop dominates the CPU time of tracking, and with >1000 magnets it is intolerable.
How can I access the Geant4 voxel information? I need: 1. a method to get the current voxel in which the current track is located. 2. a method to find the voxel containing any given point (independent of tracking). 3. a method to find the boundaries of any given voxel. 4. a method to enumerate all voxels (or obtain a list or vector).
The idea is to maintain a map from voxel to a (short) list of all fields whose bounding boxes intersect the voxel. The loop over all bounding boxes is only needed the first time any track enters a given voxel; after that only the short list for the voxel is scanned. This "lazy" approach avoids spending time on voxels which no track ever enters.
Is there any documentation on the use of voxels in Geant4?
|Inline Depth:||Outline Depth:||Add message:|