62 #ifndef G4OpBoundaryProcess_h
63 #define G4OpBoundaryProcess_h 1
182 void DielectricMetal();
183 void DielectricDielectric();
184 void DielectricLUT();
186 void ChooseReflection();
200 void CalculateReflectivity(
void);
202 void BoundaryProcessVerbose(
void)
const;
229 G4double cost1, cost2, sint1, sint2;
253 G4bool G4OpBoundaryProcess::G4BooleanRand(
const G4double prob)
const
274 void G4OpBoundaryProcess::ChooseReflection()
277 if ( rand >= 0.0 && rand < prob_ss ) {
279 theFacetNormal = theGlobalNormal;
281 else if ( rand >= prob_ss &&
282 rand <= prob_ss+prob_sl) {
285 else if ( rand > prob_ss+prob_sl &&
286 rand < prob_ss+prob_sl+prob_bs ) {
295 void G4OpBoundaryProcess::DoAbsorption()
299 if ( G4BooleanRand(theEfficiency) ) {
309 NewMomentum = OldMomentum;
310 NewPolarization = OldPolarization;
317 void G4OpBoundaryProcess::DoReflection()
322 theFacetNormal = (NewMomentum - OldMomentum).unit();
325 else if ( theFinish ==
ground ) {
328 if ( PropertyPointer1 && PropertyPointer2 ){
331 GetFacetNormal(OldMomentum,theGlobalNormal);
333 G4double PdotN = OldMomentum * theFacetNormal;
334 NewMomentum = OldMomentum - (2.*PdotN)*theFacetNormal;
340 theFacetNormal = theGlobalNormal;
341 G4double PdotN = OldMomentum * theFacetNormal;
342 NewMomentum = OldMomentum - (2.*PdotN)*theFacetNormal;
345 G4double EdotN = OldPolarization * theFacetNormal;
346 NewPolarization = -OldPolarization + (2.*EdotN)*theFacetNormal;