http://geant4-userdoc.web.cern.ch/geant4-userdoc/UsersGuides/ForApplicationDeveloper/html/TrackingAndPhysics/physicsProcess.html#gamma-nuclear-and-lepto-nuclear-processes

Gamma-nuclear and lepto-nuclear reactions are handled in Geant4 as hybrid processes which typically require both electromagnetic and hadronic models for their implementation. While neutrino-induced reactions are not currently provided, the Geant4 hadronic framework is general enough to include their future implementation as a hybrid of weak and hadronic models.

The general scheme followed is to factor the full interaction into an electromagnetic (or weak) vertex, in which a virtual particle is generated, and a hadronic vertex in which the virtual particle interacts with a target nucleus. In most cases the hadronic vertex is implemented by an existing Geant4 model which handles the intra-nuclear propagation.

The cross sections for these processes are parameterizations, either directly of data or of theoretical distributions determined from the integration of lepton-nucleon cross sections double differential in energy loss and momentum transfer.

For the most part gammas can be treated as hadrons and in fact they interact that way with the nucleus when the Bertini-style cascade G4CascadeInterface and QGSP models are used. These models may be assigned to G4PhotoNuclearProcess as shown in the following partial code:

G4TheoFSGenerator* theHEModel = new G4TheoFSGenerator;
G4QGSModel* theStringModel = new G4QGSModel<G4GammaParticipants>;
G4ExcitedStringDecay* theStringDecay =
new G4ExcitedStringDecay(theFragmentation=new G4QGSMFragmentation);
theStringModel->SetFragmentationModel(theStringDecay);

theHEModel->SetHighEnergyGenerator(theStringModel);
theHEModel->SetTransport(new G4GeneratorPrecompoundInterface);
theHEModel->SetMinEnergy(8*GeV);

theLEModel->SetMaxEnergy(10*GeV);

G4PhotoNuclearProcess* thePhotoNuclearProcess = new G4PhotoNuclearProcess;
thePhotoNuclearProcess->RegisterMe(theLEModel);
thePhotoNuclearProcess->RegisterMe(theHEModel);

G4ProcessManager* procMan = G4Gamma::Gamma()->GetProcessManager();