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

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

Forum: Geometry
Re: Question 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  "  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.


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 (
> ). 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:
> -------------------------------------------------------------
> Visit this GEANT4 at message (to reply or unsubscribe) at:

Inline Depth:
 1 1
 All All
Outline Depth:
 1 1
 2 2
 All All
Add message: (add)

1 None: Re: Any example (in G4 or from some user out there) for custom G4VSolid subclass?   (Michael H. Kelsey - 23 Feb, 2017)
 Add Message Add Message
to: "Re: Any example (in G4 or from some user out there) for custom G4VSolid subclass? "

 Subscribe Subscribe

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 ]