opticalphotons don't reflect properly at the interior boundary of a volume. The reason is that the core Geant4 navigation and transportation routines don't allow for a particle at a geometric boundary to stay in the same volume on the next step. The reflected photons end up incorrectly localized one level too high in the heirarchy, resulting in odd reflection-plus-refraction effects and/or photons passing ghostily through daughter volumes. (I tried to report this yesterday, but Bugzilla seems to have forgotten about it?) An elegant solution is to create reflected photons as secondary particles and kill the original photon, rather than attempting to modify the original photon. This requires a small change to G4OpBoundaryProcess::PostStepDoIt(). See http://www.awa.tohoku.ac.jp/~gas/geant4/G4OpBoundary.cc.fix
*** This bug has been marked as a duplicate of 140 ***