I was trying to simulate a large CsI crystal layer coupled to small SiPM with a reflective cavity. The optics here seems that adding a anti-reflective layer on the CsI crystal’s cavity-facing surface can help improve performance.
However I’m quite confused about how the finish
parameters should be set. And also, the code seems to read the surface’s RINDEX
property and use it with COATEDRINDEX
, what do they represent respectively? And what does the flag COATEDFRUSTRATEDTRANSMISSION
do?
My current code looks like this:
G4OpticalSurface* opCrystalCavitySurface = new G4OpticalSurface("CrystalCavitySurface");
opCrystalCavitySurface->SetType(coated);
opCrystalCavitySurface->SetFinish(polishedbackpainted);
opCrystalCavitySurface->SetModel(unified);
/* the rindex table */
G4MaterialPropertiesTable* myST = new G4MaterialPropertiesTable();
myST->AddProperty("COATEDRINDEX", photonEnergy, rindex, count);
myST->AddConstProperty("COATEDTHICKNESS", 550*nm * 0.25);
myST->AddConstProperty("COATEDFRUSTRATEDTRANSMISSION", 0);
opCrystalCavitySurface->SetMaterialPropertiesTable(myST);
The COATEDRINDEX
is set to 1.37 to represent MgF2 coating. Using polishedbackpainted
stops much of the optical photons at boundary, whereas polishedfrontpainted
and polished
reflects much more than not specifying the surface as optical surface and adding the AR coating.
Geant4 Version: geant4-11-01-patch-01 [MT] (10-February-2023)
Operating System: Windows
Compiler/Version: MSVC
CMake Version: 3.24.2