-
Notifications
You must be signed in to change notification settings - Fork 32
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support optical surface interfaces #1351
Comments
@whokion @pcanal Do you know much about how internal reflection for optical photons (or other particles for that matter; I think neutrons can do it too under the right circumstances) works relative to the navigator, transportation process, "optical boundary process", etc.? From what I can tell, the track has to actually exit the old volume and enter the new one, then get its direction changed and return back to the original. Ideally we'd not have to leave the volume at all, since crossing in and out is expensive. But since the "border surface" condition takes precedence over the "skin surface" it seems like we wouldn't be able to determine the true reflection process until we cross the volume... As an optimization we might be able to be certain of some surfaces before crossing. And for ORANGE we might be able to certain of even more... |
As the optical boundary process is called after transportation, it seems that the redundant crossing is unavoidable if the navigator is push the particle to the other side of the boundary rather than |
The LZ and ePIC forward detectors both specify volume types not seen in the main LHC: "bordersurface" in the former, and "skinsurface" for the latter. Both are related to surface-processes for #886 . These two special GDML structure entries seem only to declare interfaces rather than "wrap" a volume: the logical volume it creates is not referenced by other parts of the geometry.
LZ, for example, has the following:
From the geant4 application guide:
We can think of these surface definitions as pairs of
{incident, exiting}
volume IDs—I think. Our volume IDs are based on the "logical" (unplaced) volume properties, but since the "border surface" can refer to specific "physical" (placed) volumes, we could need to expose extra data through the geometry. We should be able to gather these surface boundary mappings during construction through our conversion routine. In both geometry cases, I think the "which surface" evaluation has to be done during the surface crossing: we need to query the next volume without committing to it.From
G4OpBoundaryProcess::PostStepDoIt
andG4MicroElecSurface::PostStepDoIt
, where the skin surface is used, it looks like there's also a precedence if both parent and child have a skin: the child's skin overrides the parent.The text was updated successfully, but these errors were encountered: