Trigger a physics process at an optical boundary

I’m wondering if there is a way of triggering a physics process for an optical photon when it its a boundary.
I want to simulate the optical photoelectric effect: when an optical photon hits a metal surface, sometimes it undergoes a photoelectric effect and produces an ionization electron, with a given probability.
I’m having problems combining the simulation of reflection (which happens, too, when the photon hits the metal), which I implement with an optical dielectric_metal surface and the photoelectric process.
Do you know if Geant4 already provides a way of doing this?
Thank you