Message: Re: Optical boundary process and absorption at boundary Not Logged In (login)
 Next-in-Thread Next-in-Thread
 Next-in-Forum Next-in-Forum

Feedback Re: Optical boundary process and absorption at boundary 

Forum: Processes Involving Optical Photons
Date: 14 Aug, 2008
From: Gumplinger Peter <Gumplinger Peter>

> .... No G4OpticalSurface is needed for this.

Correct!

> Now I would like to add one feature: additional to this process, I want

> the photon to be absorbed with a certain probability at the boundary

> surface, where the Fresnel process takes place (this is due to

> phenomenologically introduced surface imperfections). Is this possible

> with some special G4OpticalSurface?

No, there is no special G4OpticalSurface which would accomplish this at the moment.

> If I got it right, as soon, as I introduce such a surface, the "normal" Fresnel

> type boundary process is not working anymore and all optical properties have to

> be implemented via the G4OpticalSurface.

Correct!

> So my question is: are there some standard optical properties or

> techniques implemented, or would the only solution be to go to the

> stepping level?

I'll look into extending the G4OpBoundaryProcess::PostStepDoIt so it would look for a G4OpticalSurface with a 'transmission/reflection cooefficient' defined, even for the normal Fresnel calculation (where otherwise, no G4OpticalSurface needs to be defined). In the meantime, you'll have to add code in your UserSteppingActon.

> In that case, would every single step have to be tested

> or is there a special class offering a virtual function, which is called

> when a boundary is crossed?

The G4 navigator provides you (and G4OpBoundaryProcess) the following information when a track is at a boundary:

G4StepPoint* pPostStepPoint = aStep.GetPostStepPoint();

if (pPostStepPoint->GetStepStatus() == fGeomBoundary){
   if (aTrack.GetStepLength()>kCarTolerance/2) {
      // now you want to kill the track
      G4Track* theTrack = aStep.GetTrack();
      if ( G4BooleanRand(theUserAbsorption) ) {
         theTrack->SetTrackStatus(fStopAndKill);
      }
   }
}

(you need the if-kCarTolerance because a reflected ray will have two steps on the volume boundary when it reversed direction, the 2nd of which is the 'reallocation step' of zero length - you want to sample your 'theUserAbsorption' only once, be it for a transmitted photon or reflected photon).

Hope this helps. Peter

Inline Depth:
 1 1
 All All
Outline Depth:
 1 1
 2 2
 All All
Add message: (add)

1 None: Re: Optical boundary process and absorption at boundary   (Kay Ulbrich - 15 Aug, 2008)
 Add Message Add Message
to: "Re: Optical boundary process and absorption at boundary"

 Subscribe Subscribe

This site runs SLAC HyperNews version 1.11-slac-98, derived from the original HyperNews