I want to simulate ground surfaces of a crystal. I am using the UNIFIED model for it.
However, I see that despite the value of Lambertian coefficient (up to 1) the refraction on the surface isn’t affected by this value. I could overcome it by the setting value of sigmaAlpha greater than zero but then I would also change the reflection, wouldn’t I?
So my question is what should I do in this situation? I don’t consider that optical photons are absorbed on the surface.
Yes, I though so but wasn’t sure.
Another question. Here is my piece of code responsible for the boundary simulation:
ProjectConstants.h file:
...
//simulation of the side faces of the crystal
//-----------------------------------------
namespace side
{
...
//Probabilities for each wavelength must add to 1
static G4double specularSpike[] = { 0.200, 0.200 };
static G4double specularLobe[] = { 0.000, 0.000 };
static G4double backScattering[] = { 0.000, 0.000 };
//the remaining is LAMBERTIAN reflection = 1 - specularSpike - specularLobe - backScattering
const G4double sigmaAlpha = 0.5*radian;
const G4double polishValue = 0.0;//isn't used for the UNIFIED model
}
//-----------------------------------------
And DetectorConstruction.cc:
//Border surface between side faces of crystal and air
//------------------------------------------------------
G4MaterialPropertiesTable* sideSurfMPT = new G4MaterialPropertiesTable();
sideSurfMPT->AddProperty( "REFLECTIVITY", cs::crystal::photonEnergy, cs::wrapper::side::reflectivity, 2 )->SetSpline( true );
sideSurfMPT->AddProperty( "SPECULARSPIKECONSTANT", cs::crystal::photonEnergy, cs::wrapper::side::specularSpike, 2 )->SetSpline( true );
sideSurfMPT->AddProperty( "SPECULARLOBECONSTANT", cs::crystal::photonEnergy, cs::wrapper::side::specularLobe, 2 )->SetSpline( true );
sideSurfMPT->AddProperty( "BACKSCATTERCONSTANT", cs::crystal::photonEnergy, cs::wrapper::side::backScattering, 2 )->SetSpline( true );
fCrystalSideSurface = new G4OpticalSurface( "crystalSurface" );
fCrystalSideSurface->SetModel( G4OpticalSurfaceModel::unified );
fCrystalSideSurface->SetType( G4SurfaceType::dielectric_dielectric );
fCrystalSideSurface->SetFinish( G4OpticalSurfaceFinish::ground );
fCrystalSideSurface->SetSigmaAlpha( cs::wrapper::side::sigmaAlpha );
fCrystalSideSurface->SetMaterialPropertiesTable( sideSurfMPT );
//------------------------------------------------------
The question is the following:
Provided that only LAMBERTIAN and SPECULAR SPIKE constants are non-zero for the reflection, and SIGMA ALPHA is also set to non-zero value is the following correct?
When a photon reaches the boundary the normal of a microfacet is randomly picked from a gaussian distribution (here the SIGMA ALPHA is used). Then if Snell’s law results in reflection either specular reflection is performed about the average normal (not about the normal of a microfacet) or diffuse reflection about the normal of a microfacet. If Snell’s law results in refraction then the usual refraction (according to the indices of refraction) about the normal of a microfacet is performed.