|Message: Re: Boolean Solids||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)|
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:||Outline Depth:||Add message:|