|Message: Re: Is it possible to set reflectivity of an optical surface dependent on the angle of incidence of an optical photon?||Not Logged In (login)|
|1||0||1||no text / full text of posting|
|2||1||All||text for level 1 only / text for All postings|
|1||2||1||2 levels / 1 level (original posting)|
|2||3||2||3 levels / 2 levels|
|3||3||All||3 levels / all levels (all postings)|
> First of all, if I read the code correctly, I will have to set the > transmittance to 1 for the angles for which the total internal > reflection criterion (classically speaking) is not met. Taking the Geant > formalism, this would be between angles 0 and theta_c, the critical > angle.
> For angles over this, I would then calculate the reflectivity > based on the formula mentioned before, and make a lookup table to feed > to the DichroicVector.
> The first question I have is at which point the total internal > reflection condition is checked? My understanding so far is, that if I > choose to set the surface to Dichroic, then this would not be determined > at all, but it would just take the information it needs from the > reflection / transmittance table.
> The main issues I have with this approach is that the available > granularity in the angular part is fairly coarse - per degree.
> If I read > the code on the levels below it correctly, this could be solved by not > flooring the angle before calling the Value() function of the > G4Physics2DVector and setting SetBicubicInterpolation (G4bool) to 1.
I guess, you are right! I don't even know now why I chose the angles to be per degree. The BicubicInterpolation may not be a good choice where the reflectivity goes from 0 to a finite value and the derivative is undefined.
> This would allow the table to be as granular as desired, but the payoff > would be in efficiency - the speed of the computation goes with the size > of the table. To give you an idea of how precise I would like to be able > to set this, about to 1 mrad precision (~1/50 of a degree). > > However, the function that I would have calculate the reflectivity / > transmittance is known and simple, as stated before. Would it be > possible to use that formula instead to calculate the reflectivity > "live"?
Absolutely! You've read the code well and should be able to make this change.
> It would also require either calculation of or looking up the > phase refractive index of the material.
Again, I believe the framework is flexible enough that with some modest modifications of the code you can accomplish all of this. Mind you, the storing of information in the MaterialPropertiesTable is NOT limited to the once we currently have. You can store any const or wavelength dependent quantity in that table and retrieve it in the (your) code where you need it for calculation.
> Finally, an issue raised by my colleagues is that there's a compound > effect caused by the Fresnel effect that would change the reflectivity > slightly again. This would require calculation of the s and p components > of the wave, from the product of the plane normal vector and the photon > polarization, and calculating the Fresnel reflectivity based on this > (also using the refractive indices of the materials on both sides).
Once you start hacking the code .... there are no limits of what you can do - that's why we are proud to be an open source collaboration.
> Finally, the product of the Fresnel reflectivity and the roughness > reflectivity (as above) would then decide the number that goes into the > boolean decision maker. The decision on which process to take if it > doesn't perfectly reflect, would be based on the relative size of the > two reflectivity factors. > > My apologies for making this so complicated, it took a while for me to > sort out in my head and write it down. I hope it is clear like this, if > you have any questions let me know.
I am sorry but I didn't all follow this.
> I am happy to input this into Geant myself, and / or help write a > separate type of reflection that is handled in the manner described > above.
Great - I am curious.
> As far as I can tell, Geant does not currently add in the Fresnel > effect, is this correct?
Sorry, but what do you mean by 'add in the Fresnel effect'? Geant does calculate the relectivity following Fresnel's Law between two dielectric media. But it seems, I am ignorant of some physics that is going on here....
Best regards, Peter