For PICK if IGE_REG_TYP = cur_region_type (i.e. this GEDX is being
called to generate PICK point).
- If more than one OR primitive select randomly on the basis of their
relative volumes.
- Call boundary manager to start new GEDX:-
call geb_start_gedx(cur_region_type, cur_region_serial)
- Call GEP for selected OR primitive passing request type KGE_PICK.
- Call GEP for remaining list of OR primtives (if any) passing request
type = KGE_NEAR. If LGE_PICK_FAIL set go back to step 2. The purpose
of this is to deal with overlaps by rejecting a fraction of points
based on the number of overlaps.
- Call GEP for list of NOT primtives (if any) passing request type =
KGE_NEAR. if LGE_PICK_FAIL set go back to step 2. The purpose of this
is to reject any point that falls within a NOT primitive.
- Call boundary manager to end GEDX:-
call geb_end_gedx
- If the detector element is rotated or translated away from the detector
origin the rotate and translate the picked position from detector element
coordinates back to detector coordinates.
Note: This is the general model but there are cases when it will be crazy to
do this. For example picking points in acrylic vessel. In this case the code
will throw away almost all the points because they will lie within the
D
O external boundary. In this case the GEDX calls a special routine
GEP_SHELL_PICK to do the PICKing.