Message: Re: Boolean Solids Not Logged In (login)
 Next-in-Thread Next-in-Thread
 Next-in-Forum Next-in-Forum

None Re: Boolean Solids 

Forum: Geometry
Re: None Boolean Solids (Victor)
Date: 16 Aug, 2011
From: Tom Roberts <Tom Roberts>

I doubt very much that you can model a micro-channel plate using Boolean solids. And even if you succeed, tracking will be QUITE slow, as at each step it will loop over all the holes (steps inside the plate and steps inside the plate's parent volume)....

This is the sort of situation that replicated and parametrized volumes were invented for. Construct a solid and a logical volume for one hole, and place it many times into the plate. Unfortunately, for millions of holes the tracking will also be very slow, as it will again loop over all of the holes at every step inside the plate. It might be possible to use geometry voxelization to optimize the tracking to loop over just a handful of holes in each voxel; I'm not familiar with doing that.

I think the only practical way to model an MCP is to construct a solid specifically for it that knows about the holes. Then in the various function of G4VSolid you don't need to loop over the holes, you can determine which ones are relevant algorithmically. This assumes the holes are regularly spaced so you can construct such an algorithm.

I believe that a solid need not be simply connected, so if your holes are plated with another material, you could implement a single solid that models that for all of the holes. It would, of course, need to be matched to the solid that models the bulk of the MCP.

The best approach is probably to combine these: one simple solid for the plate itself, and one custom solid for all of the holes. Create a LogicalVolume for each, and place the latter as daughter of the first. If you have plating of the holes, re-use the custom solid with slightly larger hole diameter, and place its LogicalVolume between the other two. The custom solid would select the relevant hole(s) algorithmically, and the tracking loop has only a single daughter of the plate's volume.

Note the holes should be a micron or two longer than the plate is thick. Otherwise there might be a thin "membrane" of the plate at each end of the holes.

A whole different approach might be possible, since it is now possible to "open" a subset of the geometry, and then close and re-optimize it. The manual is not clear whether this can only happen between runs, or if it can be used while tracking; I suspect the latter and assume that is so. Then don't place any holes at all when you construct your detector. In your UserSteppingAction(), when a track reaches the plate volume's boundary entering the volume, open the geometry at the plate's physical volume, remove any daughters (holes from previous track), and place only the nearest holes as daughters of the plate's volume. Then close the geometry at that physical volume and let tracking resume. Beware of tracks created inside the plate's volume, and/or inside a hole's volume (perhaps keep track of which holes have been placed, to avoid duplicates, and remove holes only in PostEventUserAction()). If this works, it may well be the simplest and most efficient approach; I do not know if it will work, however. (See "Dynamic Geometry Setups" in the Users Guide.)

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

1 None: Re: Boolean Solids   (John Allison - 17 Aug, 2011)
 Add Message Add Message
to: "Re: Boolean Solids"

 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 ]