40 #ifndef OpBoundaryProcessSimple_h
41 #define OpBoundaryProcessSimple_h 1
43 #include "Geant4/G4ForceCondition.hh"
44 #include "Geant4/G4OpticalPhoton.hh"
45 #include "Geant4/G4ProcessType.hh"
46 #include "Geant4/G4String.hh"
47 #include "Geant4/G4Types.hh"
48 #include "Geant4/G4VDiscreteProcess.hh"
49 #include "Geant4/Randomize.hh"
51 class G4ParticleDefinition;
54 class G4VParticleChange;
105 G4ProcessType
type = fOptical);
108 G4bool
IsApplicable(
const G4ParticleDefinition& aParticleType);
114 G4double
GetMeanFreePath(
const G4Track&, G4double, G4ForceCondition* condition);
117 G4VParticleChange*
PostStepDoIt(
const G4Track& aTrack,
const G4Step& aStep);
136 return (G4UniformRand() < prob);
142 return (&aParticleType == G4OpticalPhoton::OpticalPhoton());
OpBoundaryProcessSimpleStatus
G4bool IsApplicable(const G4ParticleDefinition &aParticleType)
G4VParticleChange * PostStepDoIt(const G4Track &aTrack, const G4Step &aStep)
OpBoundaryProcessSimpleStatus GetStatus() const
OpBoundaryProcessSimpleStatus fTheStatus
Discrete process for reflection and diffusion at optical interfaces.
G4bool G4BooleanRand(const G4double prob) const
G4double GetMeanFreePath(const G4Track &, G4double, G4ForceCondition *condition)
OpBoundaryProcessSimple(const G4String &processName="OpBoundary", G4ProcessType type=fOptical)