Problem 2431 - Optical photon reflection probability is being calculated first without regard to UNIFIED model reflection constants
Summary: Optical photon reflection probability is being calculated first without regar...
Status: REOPENED REMIND
Alias: None
Product: Geant4
Classification: Unclassified
Component: processes/optical (show other problems)
Version: 10.7
Hardware: All All
: P4 normal
Assignee: Daren Sawkey
URL:
Depends on:
Blocks:
 
Reported: 2021-09-28 21:11 CEST by Ahmed Moustafa
Modified: 2023-11-13 01:26 CET (History)
0 users

See Also:


Attachments
LCE_vs_roughness_plot (132.86 KB, image/png)
2022-10-24 00:25 CEST, Ahmed Moustafa
Details

Note You need to log in before you can comment on or make changes to this problem.
Description Ahmed Moustafa 2021-09-28 21:11:24 CEST
For dielectric-dielectric boundary surfaces, theFacetNormal is being sampled first using the roughness parameter in order to calculate the reflection/transmission probabilities (line 1086 in G4OpBoundaryProcess.cc). Upon reflection, and with ground surfaces, the reflection constants are then looked up through the ChooseReflection() method (line 1115) to sample a reflection mode.

This choice of sequence leads to different light collection efficiencies with different roughness levels in the case of 100% specular spike (ss). The changes are significant with higher number of reflections before optical photons are detected. This is non-physical as a 100% specular spike dictates a perfectly polished surface with no roughness.

A suggested better implementation would be to first check the ss constant value and only sample a local facet if it's any value other than 1.

I understand that users shouldn't set ss=1 with a non-zero roughness (or should instead use finish=polished), but many users perform minimization optimization to fit the UNIFIED model reflection mode constants to their measured metrics since it's hard to practically choose a set of values.
Comment 1 Daren Sawkey 2022-10-18 12:24:41 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.
Comment 2 Ahmed Moustafa 2022-10-24 00:25:33 CEST
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.
Comment 3 Daren Sawkey 2023-08-30 23:36:29 CEST
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.
Comment 4 Ahmed Moustafa 2023-11-13 01:26:19 CET
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?