Geant4 Version: 4-11-04
Operating System: Ubuntu 22.04.5 LTS
Compiler/Version: g++ 11.4.0
CMake Version: 3.22.1
Greetings,
I am in the process of setting up a simulation for an array of LaBr3(Ce) scintillation detectors. To start, I have a single detector with simplified geometry: an Aluminium cylinder with the cylindrical scintillator crystal nested inside of it and a small optical photon tracking volume at the back to stand in for a SiPM. The GDML file below contains all the geometric details. The setup for the simulation is otherwise very similar to the OpNovice example provided with Geant4.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<gdml xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="http://cern.ch/service-spi/app/releases/GDML/schema/gdml.xsd">
<define>
<position name="pos_Tracker" x="0.0" y="0.0" z="25.4" unit="mm"/>
<position name="pos_Crystal" x="0.0" y="0.0" z="-1.0" unit="mm"/>
<position name="pos_Detector" x="0.0" y="0.0" z="79.2" unit="mm"/>
<!--https://www.researchgate.net/publication/254060762_Optical_Absorption_Length_Scattering_Length_and_Refractive_Index_of_LaBr3Ce3-->
<matrix coldim="2" name="LaBr3(Ce)_RINDEX" values="2.818*eV 2.18 3.875*eV 2.45"/>
<matrix coldim="2" name="LaBr3(Ce)_RAYLEIGH" values="2.818*eV 159*mm 3.875*eV 88*mm"/>
<matrix coldim="2" name="LaBr3(Ce)_ABSLENGTH" values="2.818*eV 10*m 3.468*eV 10*m 3.493*eV 240*mm 3.542*eV 52.54*mm 3.594*eV 14.57*mm 3.647*eV 5.852*mm 3.701*eV 2.739*mm 3.757*eV 1.492*mm 3.815*eV 0.5852*mm 3.875*eV 0.0*mm"/>
<matrix coldim="2" name="LaBr3(Ce)_SCINTILLATIONCOMPONENT1" values="2.817*eV 0.0 2.850*eV 0.0 2.883*eV 0.0001435 2.917*eV 0.0004305 2.952*eV 0.001148 2.988*eV 0.003157 3.024*eV 0.007750 3.061*eV 0.01464 3.100*eV 0.02511 3.139*eV 0.03774 3.179*eV 0.04937 3.220*eV 0.05626 3.241*eV 0.05755 3.263*eV 0.05755 3.306*eV 0.05697 3.328*eV 0.05841 3.351*eV 0.06228 3.397*eV 0.07893 3.444*eV 0.09544 3.468*eV 0.09931 3.493*eV 0.09673 3.542*eV 0.07577 3.594*eV 0.04262 3.647*eV 0.01737 3.701*eV 0.004592 3.757*eV 0.0007176 3.815*eV 0.0 3.875*eV 0.0"/>
<matrix coldim="2" name="LaBr3(Ce)_SCINTILLATIONCOMPONENT2" values="2.817*eV 0.0 2.850*eV 0.0 2.883*eV 0.0001435 2.917*eV 0.0004305 2.952*eV 0.001148 2.988*eV 0.003157 3.024*eV 0.007750 3.061*eV 0.01464 3.100*eV 0.02511 3.139*eV 0.03774 3.179*eV 0.04937 3.220*eV 0.05626 3.241*eV 0.05755 3.263*eV 0.05755 3.306*eV 0.05697 3.328*eV 0.05841 3.351*eV 0.06228 3.397*eV 0.07893 3.444*eV 0.09544 3.468*eV 0.09931 3.493*eV 0.09673 3.542*eV 0.07577 3.594*eV 0.04262 3.647*eV 0.01737 3.701*eV 0.004592 3.757*eV 0.0007176 3.815*eV 0.0 3.875*eV 0.0"/>
<matrix coldim="1" name="LaBr3(Ce)_SCINTILLATIONTIMECONSTANT1" values="15.0*ns"/>
<matrix coldim="1" name="LaBr3(Ce)_SCINTILLATIONTIMECONSTANT2" values="1.0*us"/>
<matrix coldim="1" name="LaBr3(Ce)_SCINTILLATIONYIELD" values="63.0/keV"/>
<matrix coldim="1" name="LaBr3(Ce)_SCINTILLATIONYIELD1" values="0.99"/>
<matrix coldim="1" name="LaBr3(Ce)_SCINTILLATIONYIELD2" values="0.01"/>
<!--Resolution currently set to 0.5 of nominal value-->
<matrix coldim="1" name="LaBr3(Ce)_RESOLUTIONSCALE" values="0.5"/>
<matrix coldim="2" name="LaBr3(Ce)_Al_REFLECTIVITY" values="2.818*eV 0.9 3.875*eV 0.9"/>
<matrix coldim="2" name="LaBr3(Ce)_Al_EFFICIENCY" values="2.818*eV 1.0 3.875*eV 1.0"/>
<matrix coldim="2" name="LaBr3(Ce)_Tracker_REFLECTIVITY" values="2.818*eV 1.0 3.875*eV 1.0"/>
<matrix coldim="2" name="LaBr3(Ce)_Tracker_EFFICIENCY" values="2.818*eV 1.0 3.875*eV 1.0"/>
<matrix coldim="2" name="Tracker_RINDEX" values="2.818*eV 2.18 3.875*eV 2.45"/>
<matrix coldim="2" name="Tracker_ABSLENGTH" values="2.818*eV 1*um 3.875*eV 1*um"/>
</define>
<materials>
<material formula=" " name="LaBr3(Ce)">
<!--Density currently set to 1x actual value-->
<D value="5.06" unit="g/cm3"/>
<fraction n="0.3486" ref="G4_La"/>
<fraction n="0.6331" ref="G4_Br"/>
<fraction n="0.0183" ref="G4_Ce"/>
<T unit="K" value="293"/>
<property name="RINDEX" ref="LaBr3(Ce)_RINDEX"/>
<property name="ABSLENGTH" ref="LaBr3(Ce)_ABSLENGTH"/>
<property name="SCINTILLATIONCOMPONENT1" ref="LaBr3(Ce)_SCINTILLATIONCOMPONENT1"/>
<property name="SCINTILLATIONCOMPONENT2" ref="LaBr3(Ce)_SCINTILLATIONCOMPONENT2"/>
<property name="SCINTILLATIONTIMECONSTANT1" ref="LaBr3(Ce)_SCINTILLATIONTIMECONSTANT1"/>
<property name="SCINTILLATIONTIMECONSTANT2" ref="LaBr3(Ce)_SCINTILLATIONTIMECONSTANT2"/>
<property name="SCINTILLATIONYIELD" ref="LaBr3(Ce)_SCINTILLATIONYIELD"/>
<property name="SCINTILLATIONYIELD1" ref="LaBr3(Ce)_SCINTILLATIONYIELD1"/>
<property name="SCINTILLATIONYIELD2" ref="LaBr3(Ce)_SCINTILLATIONYIELD2"/>
<property name="RESOLUTIONSCALE" ref="LaBr3(Ce)_RESOLUTIONSCALE"/>
</material>
<material formula="" name="Tracker">
<D value="5.06" unit="g/cm3"/>
<fraction n="0.3632" ref="G4_La"/>
<fraction n="0.6331" ref="G4_Br"/>
<fraction n="0.0037" ref="G4_Ce"/>
<T unit="K" value="293"/>
<property name="RINDEX" ref="Tracker_RINDEX"/>
<property name="ABSLENGTH" ref="Tracker_ABSLENGTH"/>
</material>
</materials>
<solids>
<!-- Box geometry: -->
<!-- x/y/z := the length of the side, i.e. -x/2 < p < x/2 -->
<box name="geo_World" x="500" y="500" z="500" lunit="mm"/>
<!-- Tube geometry: -->
<!-- dx/dy := radius in x-y plane -->
<!-- dz := half-length in the z direction, i.e. -dz < p < dz -->
<eltube name="geo_Tracker" dx="19.05" dy="19.05" dz=" 1.0" lunit="mm"/>
<eltube name="geo_Crystal" dx="19.05" dy="19.05" dz="25.4" lunit="mm"/>
<eltube name="geo_Casing" dx="21.05" dy="21.05" dz="27.4" lunit="mm"/>
<!-- Optical surface defintion fot the LaBr3-Al casing interface -->
<opticalsurface name="surface_LaBr3(Ce)_Al" finish="polished" model="glisur" type="dielectric_metal" value="1">
<property name="REFLECTIVITY" ref="LaBr3(Ce)_Al_REFLECTIVITY"/>
<property name="EFFICIENCY" ref="LaBr3(Ce)_Al_EFFICIENCY"/>
</opticalsurface>
<opticalsurface name="surface_LaBr3(Ce)_Tracker" finish="polished" model="glisur" type="dielectric_dielectric" value="1">
<property name="REFLECTIVITY" ref="LaBr3(Ce)_Tracker_REFLECTIVITY"/>
<property name="EFFICIENCY" ref="LaBr3(Ce)_Tracker_EFFICIENCY"/>
</opticalsurface>
</solids>
<structure>
<volume name="logvol_LaBr3(Ce)_Tracker">
<materialref ref="Tracker"/>
<solidref ref="geo_Tracker"/>
<auxiliary auxtype="Sensitive_Detector" auxvalue="Tracker"/>
</volume>
<volume name="logvol_LaBr3(Ce)_Crystal">
<materialref ref="LaBr3(Ce)"/>
<solidref ref="geo_Crystal"/>
<auxiliary auxtype="Sensitive_Detector" auxvalue="Crystal"/>
</volume>
<volume name="logvol_LaBr3(Ce)_Detector">
<materialref ref="G4_Al"/>
<solidref ref="geo_Casing"/>
<physvol name="physvol_LaBr3(Ce)_Tracker">
<volumeref ref="logvol_LaBr3(Ce)_Tracker"/>
<positionref ref="pos_Tracker"/>
</physvol>
<physvol name="physvol_LaBr3(Ce)_Crystal">
<volumeref ref="logvol_LaBr3(Ce)_Crystal"/>
<positionref ref="pos_Crystal"/>
</physvol>
</volume>
<volume name="World">
<materialref ref="G4_AIR"/>
<solidref ref="geo_World"/>
<physvol name="physvol_LaBr3(Ce)_Detector">
<volumeref ref="logvol_LaBr3(Ce)_Detector"/>
<positionref ref="pos_Detector"/>
</physvol>
</volume>
<bordersurface name="border_LaBr3(Ce)_Al" surfaceproperty="surface_LaBr3(Ce)_Al">
<physvolref ref="physvol_LaBr3(Ce)_Crystal"/>
<physvolref ref="physvol_LaBr3(Ce)_Detector"/>
</bordersurface>
<bordersurface name="border_LaBr3(Ce)_Tracker" surfaceproperty="surface_LaBr3(Ce)_Tracker">
<physvolref ref="physvol_LaBr3(Ce)_Crystal"/>
<physvolref ref="physvol_LaBr3(Ce)_Tracker"/>
</bordersurface>
</structure>
<setup name="Default" version="0.0.2">
<world ref="World"/>
</setup>
</gdml>
This seems to work reasonably well, except for a heavy high energy tail observed in the photopeak of the optical photon energy deposited in the tracking volume. For demonstration, I’ve run the simulation firing 500keV gammas into detector along it’s central axis. The histogram below tallies the energy deposited into the scintillation crystal by all processes excluding optical photons (black marks, using the bottom X axis) and the energy deposited in the tracking volume by only optical photons (red marks, using the top X axis).
The simulation evidently works reasonably well for the prediction of the relative position of the photopeak and Compton edge, it really is just the shape of the photopeak that is not meeting expectations. My suspicion is that this is related to the fact that the the scintillation process doesn’t conserve energy, but I’m not 100% certain of that. Would anyone here know what might cause this? Of course, I might have made a mistake somewhere as well. I’m happy to share the code if requested, but the most likely source of problems there is (I think) the GDML file.
Thanks in advance!


