|Message: Any examples of building BREPS 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've been talking with Matt Worden (Florida A&M) here at the SLAC GEANT4 workshop. His geometry problem is interesting, and it seems to me there should be two reasonable solutions, but I can't find good examples for how to implement them.
He has a quartz sphere to which he wants to attach a square array of parallel cylindrical channels, quartz-to-quartz so there are no surface reflection/refraction effects. Since solids can't overlap, each channel needs to be built as a truncated cylinder, where the cut surface is a spherical piece unique to that cylinder's position. Those solids can then be directly butted to the quartz sphere.
It seems clear that the array of volumes containing the cylinders should be implemented as nested divided volumes (i.e., G4PVNestedParametrization), so that the "x" and "y" indices of the replica and mother, respectively, map directly to coordinates on the plane normal to the cylinder array. For each replica volume, then, a G4VSolid* gets created (or stored in a list and returned on demand) based on those coordinates. It's how to make those solids that confuses me.
One option would be a subtracted Boolean solid, using a simple cylinder with the original sphere subtracted from it. The interface here is direct enough that I think I could help Matt write the code, but I'm concerned about speed, efficiency, and memory explosions with the number of replicas.
Another option would be a BREPS solid, with a cylindrical boundary, a circular base, and a spherical surface for the truncated end. I'm equally concerned about the performance issues, but there's someing more basic. I can't find _any_ example in the G4 distribution which show how BREPS are used, that is, |find examples -name '*.cc' | xargs grep BREP| returns nothing.
Could somebody point me to an example of making a custom BREP solid?
-- Michael Kelsey
|Inline Depth:||Outline Depth:||Add message:|