|Message: Re: Any example (in G4 or from some user out there) for custom G4VSolid subclass?||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)|
Hi Mike, I think that it should be possible to create a working implementation without creating your own solid. If I understand the geometry correctly I would do the following: - Use five solids (shapes) for the top plate of your cylinder. The innermost should be solid (without holes) and represent the part inside all the holes. - Then use one solid/volume for each ring, which I see as one of the concentric arrangements of holes. For example the first one can represent the inner set of holes. - In each ring put a replica volume to split the ring into segments which each have one (or a few) hole(s). Inside this small (replicated) volume put the place the hole. In this way, you will need a stack three deep of volume ( ring, replicated segment and hole ), which can be handled easily by Geant4. The disadvantage of this approach is that the ring volume appears in your setup - so you cannot have a different volume piercing the plate (e.g. a wire ). If this is a problem, I would suggest to adapt the approach by creating a unit volume composed of a segment of a ring with one or a few holes. Then simply place these individual segments next to each other. This uses the power of the navigator efficiently to locate a hole, and will be much more performant than the current boolean solids. If you are using the Unified Solids installation of Geant4, you could also use the MultiUnion solid which also provides good navigation properties - see section "188.8.131.52. Unified Solids" of the User Guide for Application Developers: "G4MultiUnion structure, in particular, allows for the description of a Boolean union of many displaced solids at once, therefore representing volumes with the same associated material. NOTE: MultiUnion structures can only be defined for usage with USolids primitives enabled ! " Hope these suggestions help you to find an answer. John On 22/02/17 23:10, Michael H. Kelsey wrote: > *** Discussion title: Geometry > > I have a situation in my geometry which has managed to kill both > visualization and tracking :-) We have a multistage cryostat with > detectors and electronics at the center. To get all of the readout and > control cables out to room temperature, we will have more than 200 holes > and feedthroughs on the lid of the 4K stage (see the attached picture). > > I would like to model this detailed structure explicitly, in order to do > thermal studies tracking how IR photons get through the holes to the low > temperature stages. The obvious (and horribly wrong) solution is to > subtract each hole from the cylindrical can of the cryostat. When I do > this, both visualization and tracking hang up in a lovely 250-deep > calling stack as "DistanceToIn()" calls down through all of the nested > boolean solids. > > To replace this, I suspect that writing a custom G4VSolid subclass > (maybe even a G4Tubs subclass?) is a much better approach. Then the > coded in hole positions could be used to determine in vs. out, normals, > etc. This was mentioned in a similar posting several years ago ( > http://hypernews.slac.stanford.edu:5090/HyperNews/geant4/get/geometry/1146/1.html > ). My question is whether anyone out there has an example of how to > properly write a solid subclass, which they would be willing to share. I > don't believe any of the G4 examples have one. > > -- Michael Kelsey > > Attachment: > http://hypernews.slac.stanford.edu/HyperNews/geant4/get/AUX/2017/02/22/13.58-71579-feedthroughs_0.gif > > ------------------------------------------------------------- > Visit this GEANT4 at hypernews.slac.stanford.edu message (to reply or unsubscribe) at: > http://hypernews.slac.stanford.edu/HyperNews/geant4/get/geometry/1521.html
|Inline Depth:||Outline Depth:||Add message:|