64#ifndef G4OpBoundaryProcess_h
65#define G4OpBoundaryProcess_h 1
134 const G4Step& aStep)
override;
156 void DielectricMetal();
157 void DielectricDielectric();
159 void DielectricLUT();
160 void DielectricLUTDAVIS();
162 void DielectricDichroic();
164 void ChooseReflection();
176 void CalculateReflectivity(
void);
178 void BoundaryProcessVerbose(
void)
const;
205 G4double cost1, cost2, sint1, sint2;
230 size_t idx_rindex1 = 0;
231 size_t idx_rindex_surface = 0;
232 size_t idx_reflect = 0;
234 size_t idx_trans = 0;
236 size_t idx_spike = 0;
238 size_t idx_rindex2 = 0;
239 size_t idx_groupvel = 0;
240 size_t idx_rrindex = 0;
241 size_t idx_irindex = 0;
248inline G4bool G4OpBoundaryProcess::G4BooleanRand(
const G4double prob)
const
267inline void G4OpBoundaryProcess::ChooseReflection()
270 if(rand >= 0.0 && rand < prob_ss)
273 theFacetNormal = theGlobalNormal;
275 else if(rand >= prob_ss && rand <= prob_ss + prob_sl)
279 else if(rand > prob_ss + prob_sl && rand < prob_ss + prob_sl + prob_bs)
289inline void G4OpBoundaryProcess::DoAbsorption()
293 if(G4BooleanRand(theEfficiency))
304 NewMomentum = OldMomentum;
305 NewPolarization = OldPolarization;
310inline void G4OpBoundaryProcess::DoReflection()
315 theFacetNormal = (NewMomentum - OldMomentum).unit();
317 else if(theFinish ==
ground)
320 if(fRealRIndexMPV && fImagRIndexMPV)
326 theFacetNormal = GetFacetNormal(OldMomentum, theGlobalNormal);
328 G4double PdotN = OldMomentum * theFacetNormal;
329 NewMomentum = OldMomentum - (2. * PdotN) * theFacetNormal;
334 theFacetNormal = theGlobalNormal;
335 G4double PdotN = OldMomentum * theFacetNormal;
336 NewMomentum = OldMomentum - (2. * PdotN) * theFacetNormal;
338 G4double EdotN = OldPolarization * theFacetNormal;
339 NewPolarization = -OldPolarization + (2. * EdotN) * theFacetNormal;
G4double condition(const G4ErrorSymMatrix &m)
G4OpBoundaryProcessStatus
@ PolishedTiOAirReflection
@ GroundTeflonAirReflection
@ EtchedVM2000AirReflection
@ EtchedVM2000GlueReflection
@ GroundLumirrorGlueReflection
@ GroundTyvekAirReflection
@ PolishedVM2000GlueReflection
@ PolishedTeflonAirReflection
@ EtchedTyvekAirReflection
@ EtchedLumirrorGlueReflection
@ GroundVM2000AirReflection
@ PolishedTyvekAirReflection
@ PolishedVM2000AirReflection
@ EtchedTeflonAirReflection
@ GroundVM2000GlueReflection
@ PolishedLumirrorGlueReflection
@ TotalInternalReflection
@ PolishedLumirrorAirReflection
@ EtchedLumirrorAirReflection
@ GroundLumirrorAirReflection
virtual ~G4OpBoundaryProcess()
virtual G4OpBoundaryProcessStatus GetStatus() const
virtual G4bool IsApplicable(const G4ParticleDefinition &aParticleType) override
virtual void Initialise()
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