diff --git a/source/processes/optical/src/G4OpBoundaryProcess.cc b/source/processes/optical/src/G4OpBoundaryProcess.cc index 72ad2a7200d42e4b9905ff6876eea4266e464a41..832f17334ee697bbddbd9c282f2709faf83ef6b8 100644 --- a/source/processes/optical/src/G4OpBoundaryProcess.cc +++ b/source/processes/optical/src/G4OpBoundaryProcess.cc @@ -191,6 +191,20 @@ G4VParticleChange* G4OpBoundaryProcess::PostStepDoIt(const G4Track& aTrack, theStatus = StepTooSmall; if(verboseLevel > 1) BoundaryProcessVerbose(); + + // Backport from Geant4 11.0, fixes https://bugzilla-geant4.kek.jp/show_bug.cgi?id=2438 + G4MaterialPropertyVector* groupvel = nullptr; + G4MaterialPropertiesTable* aMPT = Material2->GetMaterialPropertiesTable(); + if(aMPT != nullptr) + { + groupvel = aMPT->GetProperty(kGROUPVEL); + } + + if(groupvel != nullptr) + { + aParticleChange.ProposeVelocity( + groupvel->Value(thePhotonMomentum, idx_groupvel)); + } return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep); }