Message: Re: Any example (in G4 or from some user out there) for custom G4VSolid subclass? Not Logged In (login)

## Re: Any example (in G4 or from some user out there) for custom G4VSolid subclass?

Forum: Geometry
Re: Any example (in G4 or from some user out there) for custom G4VSolid subclass? (Michael H. Kelsey)
Date: 23 Feb, 2017
From: John Apostolakis <John Apostolakis>

 ```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 "4.1.2.4. 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:

1 Re: Any example (in G4 or from some user out there) for custom G4VSolid subclass?   (Michael H. Kelsey - 23 Feb, 2017)
 to: "Re: Any example (in G4 or from some user out there) for custom G4VSolid subclass? "
This site runs SLAC HyperNews version 1.11-slac-98, derived from the original HyperNews

[ Geant 4 Home | Geant 4 HyperNews | Search | Request New Forum | Feedback ]