| Summary: | Optical photon reflection probability is being calculated first without regard to UNIFIED model reflection constants | ||
|---|---|---|---|
| Product: | Geant4 | Reporter: | Ahmed Moustafa <ammousta> |
| Component: | processes/optical | Assignee: | Daren Sawkey <daren.sawkey> |
| Status: | REOPENED REMIND | ||
| Severity: | normal | ||
| Priority: | P4 | ||
| Version: | 10.7 | ||
| Hardware: | All | ||
| OS: | All | ||
| Attachments: | LCE_vs_roughness_plot | ||
|
Description
Ahmed Moustafa
2021-09-28 21:11:24 CEST
Thanks for reporting this, and apologies for the delay in responding. I think there are two issues you raise. 1) 100% specular spike reflection with a rough surface doesn't make much physical sense. On the other hand, as you note, one may choose parameters to match data. I don't know if this is a valid use case, but I don't want to disable something that users have potentially been using for years. Note that varying the roughness with 100% specular spike is a valid thing to do. As the roughness changes, the fraction of particles that refract or reflect changes. But of those that reflect, all are reflected specularly. 2) You find that detection efficiency varies with roughness. I'm not able to reproduce this. Additionally, in the code, absorption happens before transmission/reflection, and it doesn't look like absorption depends on the facet normal. https://geant4.kek.jp/lxr/source/processes/optical/src/G4OpBoundaryProcess.cc#L445 Please let me know if you still see a bug. Created attachment 787 [details]
LCE_vs_roughness_plot
Thanks for your response.
1) I don't think that varying the roughness with 100% specular spike is a valid thing to do because specular lobe already accounts for specular reflection around the local surface normal in case reflection is sampled. Therefore, if specular spike is 100% then it doesn't make sense to calculate the reflection probability using the local normal and that reflection afterward (if it's sampled) is done around the global normal! If I correctly understand how the UNIFIED model is structured in the paper by Levin and Moisan, then Geant4's implementation deviates from that.
2) The differences would only become apparent (and even significant) with high aspect ratio scintillators and readout photodetectors at the end of the long dimension. This is because photons undergo a higher number of reflections, compared to lower aspect ratios, before reaching the ends. My code was part of a larger framework so I can't share it all, but here is all the model information that I ran and that can be used to reproduce the differences:
1. bare 5 mm x 5 mm x 200 mm EJ-204 organic scintillation bar (n=1.58)
2. scintillation position was varied along the long dimension at discrete positions and the number of photons reaching the two ends was used to calculate the light collection efficiency (LCE)
3. plotting LCE vs scintillation position shows the differences when varying the roughness while ss is kept at 100%. I didn't set a value for absorption so it wasn't modeled.
Levin and Moisan write (bottom of page 4): The angle, theta^prime_i, between the direction of incident photon and the local micro-facet normal n' is considered to calculate the Fresnel's reflection coefficient R(0i',n1,n2) ... Based on the value of R, reflection or refraction is randomly chosen. If refraction is chosen the photon is transmitted and its direction with respect to the local normal n' is computed using Snell's law and the values of n1 and n2. If reflection occurs then a choice is made between the four different types of reflection according to the values of Csl, Css. Cbs and Cdl Geant4 implements what is written above. For a rough surface and 100% specular spike, varying the roughness will change the refraction probability. This is in agreement with your observations and mine. However, it disagrees with your expectation "This is non-physical as a 100% specular spike dictates a perfectly polished surface with no roughness." Furthermore, ss=1 with non-zero surface roughness is a valid setting. Geant4 should be coded to reflect what Levin's paper 'intends' to model (real phenomena) and not just be coded to translate the paper verbatim. However, I will assume for now that ss=1 with non-zero surface roughness is a valid setting as it is currently coded. I will raise another relevant point: as you mentioned, Geant4 is coded to sample a local normal to calculate the refraction probability. However, it reflects around the global normal if reflection is sampled and ss=1. Does it make sense to calculate the reflection probability using the local normal, then reflect afterward around the global normal? |