64#ifndef G4OpBoundaryProcess_h
65#define G4OpBoundaryProcess_h 1
137 const G4Step& aStep)
override;
161 void DielectricMetal();
162 void DielectricDielectric();
164 void DielectricLUT();
165 void DielectricLUTDAVIS();
167 void DielectricDichroic();
168 void CoatedDielectricDielectric();
170 void ChooseReflection();
187 void CalculateReflectivity();
189 void BoundaryProcessVerbose()
const;
223 G4double fProb_sl, fProb_ss, fProb_bs;
227 G4double fCoatedRindex, fCoatedThickness;
237 size_t idx_dichroicX = 0;
238 size_t idx_dichroicY = 0;
239 size_t idx_rindex1 = 0;
240 size_t idx_rindex_surface = 0;
241 size_t idx_reflect = 0;
243 size_t idx_trans = 0;
245 size_t idx_spike = 0;
247 size_t idx_rindex2 = 0;
248 size_t idx_groupvel = 0;
249 size_t idx_rrindex = 0;
250 size_t idx_irindex = 0;
251 size_t idx_coatedrindex = 0;
254 G4bool fCoatedFrustratedTransmission =
true;
263inline G4bool G4OpBoundaryProcess::G4BooleanRand(
const G4double prob)
const
280inline void G4OpBoundaryProcess::ChooseReflection()
286 fFacetNormal = fGlobalNormal;
288 else if(rand < fProb_ss + fProb_sl)
292 else if(rand < fProb_ss + fProb_sl + fProb_bs)
302inline void G4OpBoundaryProcess::DoAbsorption()
306 if(G4BooleanRand(fEfficiency))
317 fNewMomentum = fOldMomentum;
318 fNewPolarization = fOldPolarization;
323inline void G4OpBoundaryProcess::DoReflection()
328 fFacetNormal = (fNewMomentum - fOldMomentum).unit();
330 else if(fFinish ==
ground)
333 if(!fRealRIndexMPV || !fImagRIndexMPV)
335 fFacetNormal = GetFacetNormal(fOldMomentum, fGlobalNormal);
340 fOldMomentum - (2. * fOldMomentum * fFacetNormal * fFacetNormal);
345 fFacetNormal = fGlobalNormal;
347 fOldMomentum - (2. * fOldMomentum * fFacetNormal * fFacetNormal);
350 -fOldPolarization + (2. * fOldPolarization * fFacetNormal * fFacetNormal);
G4double condition(const G4ErrorSymMatrix &m)
G4OpBoundaryProcessStatus
@ PolishedTiOAirReflection
@ GroundTeflonAirReflection
@ EtchedVM2000AirReflection
@ CoatedDielectricReflection
@ EtchedVM2000GlueReflection
@ GroundLumirrorGlueReflection
@ GroundTyvekAirReflection
@ PolishedVM2000GlueReflection
@ PolishedTeflonAirReflection
@ EtchedTyvekAirReflection
@ EtchedLumirrorGlueReflection
@ GroundVM2000AirReflection
@ PolishedTyvekAirReflection
@ PolishedVM2000AirReflection
@ EtchedTeflonAirReflection
@ GroundVM2000GlueReflection
@ PolishedLumirrorGlueReflection
@ TotalInternalReflection
@ CoatedDielectricFrustratedTransmission
@ PolishedLumirrorAirReflection
@ EtchedLumirrorAirReflection
@ GroundLumirrorAirReflection
@ CoatedDielectricRefraction
virtual ~G4OpBoundaryProcess()
virtual G4OpBoundaryProcessStatus GetStatus() const
virtual G4bool IsApplicable(const G4ParticleDefinition &aParticleType) override
virtual void Initialise()
void SetVerboseLevel(G4int)
G4VParticleChange * PostStepDoIt(const G4Track &aTrack, const G4Step &aStep) override
virtual void SetInvokeSD(G4bool)
virtual G4double GetMeanFreePath(const G4Track &, G4double, G4ForceCondition *condition) override
virtual void PreparePhysicsTable(const G4ParticleDefinition &) override
static G4OpticalPhoton * OpticalPhoton()
void ProposeTrackStatus(G4TrackStatus status)
void ProposeLocalEnergyDeposit(G4double anEnergyPart)
G4ParticleChange aParticleChange