53 #ifndef _G4StationSimulatorOG_G4TankOpBoundaryProcess_h_
54 #define _G4StationSimulatorOG_G4TankOpBoundaryProcess_h_
57 #include "templates.hh"
58 #include "geomdefs.hh"
59 #include "Randomize.hh"
61 #include "G4VDiscreteProcess.hh"
62 #include "G4DynamicParticle.hh"
63 #include "G4Material.hh"
64 #include "G4LogicalBorderSurface.hh"
65 #include "G4LogicalSkinSurface.hh"
66 #include "G4OpticalSurface.hh"
67 #include "G4OpticalPhoton.hh"
68 #include "G4TransportationManager.hh"
69 #include "G4PhysicalConstants.hh"
75 namespace G4StationSimulatorOG {
99 const G4ProcessType type = fOptical);
105 virtual G4bool
IsApplicable(
const G4ParticleDefinition& particleType)
override
106 {
return &particleType == G4OpticalPhoton::OpticalPhoton(); }
113 G4ForceCondition*
const condition)
override
114 { *condition = Forced;
return DBL_MAX; }
117 virtual G4VParticleChange*
PostStepDoIt(
const G4Track& track,
const G4Step& step)
override;
123 G4bool
G4BooleanRand(
const G4double prob)
const {
return G4UniformRand() < prob; }
132 G4ThreeVector
GetFacetNormal(
const G4ThreeVector& momentum,
const G4ThreeVector& normal)
const;
G4ThreeVector fOldPolarization
G4ThreeVector G4LambertianRand(const G4ThreeVector &normal) const
G4ThreeVector GetFacetNormal(const G4ThreeVector &momentum, const G4ThreeVector &normal) const
G4ThreeVector fGlobalNormal
G4ThreeVector fOldMomentum
G4TankOpBoundaryProcessStatus fStatus
G4OpticalSurfaceFinish fFinish
G4bool G4BooleanRand(const G4double prob) const
void DielectricDielectric()
G4OpticalSurfaceModel fModel
virtual ~G4TankOpBoundaryProcess()
virtual G4VParticleChange * PostStepDoIt(const G4Track &track, const G4Step &step) override
void SetModel(const G4OpticalSurfaceModel model)
G4TankOpBoundaryProcess(const G4String &processName="OpBoundary", const G4ProcessType type=fOptical)
virtual G4bool IsApplicable(const G4ParticleDefinition &particleType) override
G4ThreeVector fNewPolarization
G4ThreeVector G4PlaneVectorRand(const G4ThreeVector &normal) const
G4ThreeVector fFacetNormal
virtual G4double GetMeanFreePath(const G4Track &, const G4double, G4ForceCondition *const condition) override
G4OpticalSurface * fOpticalSurface
G4ThreeVector fNewMomentum
G4ThreeVector G4IsotropicRand() const
G4TankOpBoundaryProcessStatus