I think I have a somehow related problem. Optical photons seem to be absorbed at the boundary between a scintillator and a reflector. Similarly as @akhilsadam I did set Reflectivity of the reflector to 1.0, but around 1% of photons are absorbed at the boundary with the reflector and lost from detection. I followed the above instruction and used /process/optical/boundary/verbose 2 to see more details. Clearly, a photon got absorbed at the boundary despite Reflectivity settings:
G4WT0 > *********************************************************************************************************
G4WT0 > * G4Track Information: Particle = opticalphoton, Track ID = 1, Parent ID = 0
G4WT0 > *********************************************************************************************************
G4WT0 >
G4WT0 > Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName
G4WT0 > 0 0 0 0 2.5e-06 0 0 0 singlepixel_scint_phys initStep
G4WT0 > G4VDiscreteProcess::PostStepGetPhysicalInteractionLength() - [ OpBoundary]
G4WT0 > Particle type - opticalphoton
G4WT0 > mass: 0[GeV]
G4WT0 > charge: 0[e]
G4WT0 > Direction x: 0, y: 0, z: -1
G4WT0 > Total Momentum = 2.5e-09[GeV]
G4WT0 > Momentum: 0[GeV], y: 0[GeV], z: -2.5e-09[GeV]
G4WT0 > Total Energy = 2.5e-09[GeV]
G4WT0 > Kinetic Energy = 2.5e-09[GeV]
G4WT0 > MagneticMoment [MeV/T]: 0
G4WT0 > ProperTime = 0[ns]
G4WT0 > in Material MPND_gagg
G4WT0 > InteractionLength= 1.797693134862316e+307[cm]
G4WT0 > Photon at Boundary!
G4WT0 > thePrePV: singlepixel_scint_phys
G4WT0 > thePostPV: singlepixel_refl_phy
G4WT0 > Old Momentum Direction: (0,0,-1)
G4WT0 > Old Polarization: (0.9910420793306229,-0.1335499793936159,0)
G4WT0 > New Momentum Direction: (0.3580643026832863,0.04749786964020635,0.9324880200429247)
G4WT0 > New Polarization: (-0.726204458224364,-0.6135640599208351,0.3101068029381492)
G4WT0 > *** FresnelRefraction ***
G4WT0 > 1 0 0 -10 2.5e-06 0 10 10 singlepixel_refl_phy Transportation
G4WT0 > G4VDiscreteProcess::PostStepGetPhysicalInteractionLength() - [ OpBoundary]
G4WT0 > Particle type - opticalphoton
G4WT0 > mass: 0[GeV]
G4WT0 > charge: 0[e]
G4WT0 > Direction x: 0.3580643026832863, y: 0.04749786964020635, z: 0.9324880200429247
G4WT0 > Total Momentum = 2.5e-09[GeV]
G4WT0 > Momentum: 8.951607567082157e-10[GeV], y: 1.187446741005159e-10[GeV], z: 2.331220050107312e-09[GeV]
G4WT0 > Total Energy = 2.5e-09[GeV]
G4WT0 > Kinetic Energy = 2.5e-09[GeV]
G4WT0 > MagneticMoment [MeV/T]: 0
G4WT0 > ProperTime = 0[ns]
G4WT0 > in Material G4_AIR
G4WT0 > InteractionLength= 1.797693134862316e+307[cm]
G4WT0 > Photon at Boundary!
G4WT0 > thePrePV: singlepixel_refl_phy
G4WT0 > thePostPV: singlepixel_scint_phys
G4WT0 > *** StepTooSmall ***
G4WT0 > 2 0 0 -10 2.5e-06 0 0 10 singlepixel_scint_phys Transportation
G4WT0 > G4VDiscreteProcess::PostStepGetPhysicalInteractionLength() - [ OpBoundary]
G4WT0 > Particle type - opticalphoton
G4WT0 > mass: 0[GeV]
G4WT0 > charge: 0[e]
G4WT0 > Direction x: 0.3580643026832863, y: 0.04749786964020635, z: 0.9324880200429247
G4WT0 > Total Momentum = 2.5e-09[GeV]
G4WT0 > Momentum: 8.951607567082157e-10[GeV], y: 1.187446741005159e-10[GeV], z: 2.331220050107312e-09[GeV]
G4WT0 > Total Energy = 2.5e-09[GeV]
G4WT0 > Kinetic Energy = 2.5e-09[GeV]
G4WT0 > MagneticMoment [MeV/T]: 0
G4WT0 > ProperTime = 0[ns]
G4WT0 > in Material MPND_gagg
G4WT0 > InteractionLength= 1.797693134862316e+307[cm]
G4WT0 > Photon at Boundary!
G4WT0 > thePrePV: singlepixel_scint_phys
G4WT0 > thePostPV: singlepixel_refl_phy
G4WT0 > Old Momentum Direction: (0.3580643026832863,0.04749786964020635,0.9324880200429247)
G4WT0 > Old Polarization: (-0.726204458224364,-0.6135640599208351,0.3101068029381492)
G4WT0 > New Momentum Direction: (-0.3483424556083636,0.02523961606095498,0.9370274784667901)
G4WT0 > New Polarization: (-0.7673112789465003,0.5665046970079638,-0.3005092834995303)
G4WT0 > *** LobeReflection ***
G4WT0 > 3 5 0.663 3.02 2.5e-06 0 14 24 singlepixel_refl_phy Transportation
G4WT0 > G4VDiscreteProcess::PostStepGetPhysicalInteractionLength() - [ OpBoundary]
G4WT0 > Particle type - opticalphoton
G4WT0 > mass: 0[GeV]
G4WT0 > charge: 0[e]
G4WT0 > Direction x: -0.3483424556083636, y: 0.02523961606095498, z: 0.9370274784667901
G4WT0 > Total Momentum = 2.5e-09[GeV]
G4WT0 > Momentum: -8.708561390209091e-10[GeV], y: 6.309904015238746e-11[GeV], z: 2.342568696166975e-09[GeV]
G4WT0 > Total Energy = 2.5e-09[GeV]
G4WT0 > Kinetic Energy = 2.5e-09[GeV]
G4WT0 > MagneticMoment [MeV/T]: 0
G4WT0 > ProperTime = 0[ns]
G4WT0 > in Material G4_AIR
G4WT0 > InteractionLength= 1.797693134862316e+307[cm]
G4WT0 > Photon at Boundary!
G4WT0 > thePrePV: singlepixel_refl_phy
G4WT0 > thePostPV: singlepixel_scint_phys
G4WT0 > *** StepTooSmall ***
G4WT0 > 4 5 0.663 3.02 2.5e-06 0 0 24 singlepixel_scint_phys Transportation
G4WT0 > G4VDiscreteProcess::PostStepGetPhysicalInteractionLength() - [ OpBoundary]
G4WT0 > Particle type - opticalphoton
G4WT0 > mass: 0[GeV]
G4WT0 > charge: 0[e]
G4WT0 > Direction x: -0.3483424556083636, y: 0.02523961606095498, z: 0.9370274784667901
G4WT0 > Total Momentum = 2.5e-09[GeV]
G4WT0 > Momentum: -8.708561390209091e-10[GeV], y: 6.309904015238746e-11[GeV], z: 2.342568696166975e-09[GeV]
G4WT0 > Total Energy = 2.5e-09[GeV]
G4WT0 > Kinetic Energy = 2.5e-09[GeV]
G4WT0 > MagneticMoment [MeV/T]: 0
G4WT0 > ProperTime = 0[ns]
G4WT0 > in Material MPND_gagg
G4WT0 > InteractionLength= 1.797693134862316e+307[cm]
G4WT0 > Photon at Boundary!
G4WT0 > thePrePV: singlepixel_scint_phys
G4WT0 > thePostPV: singlepixel_pmt_phys
G4WT0 > Old Momentum Direction: (-0.3483424556083636,0.02523961606095498,0.9370274784667901)
G4WT0 > Old Polarization: (-0.7673112789465003,0.5665046970079638,-0.3005092834995303)
G4WT0 > New Momentum Direction: (-0.3483424556083636,0.02523961606095498,-0.9370274784667901)
G4WT0 > New Polarization: (-0.8183637310103038,-0.4956518298805093,0.2908780969805015)
G4WT0 > *** FresnelReflection ***
G4WT0 > 5 2.41 0.851 10 2.5e-06 0 7.45 31.4 singlepixel_pmt_phys Transportation
G4WT0 > G4VDiscreteProcess::PostStepGetPhysicalInteractionLength() - [ OpBoundary]
G4WT0 > Particle type - opticalphoton
G4WT0 > mass: 0[GeV]
G4WT0 > charge: 0[e]
G4WT0 > Direction x: -0.3483424556083636, y: 0.02523961606095498, z: -0.9370274784667901
G4WT0 > Total Momentum = 2.5e-09[GeV]
G4WT0 > Momentum: -8.708561390209091e-10[GeV], y: 6.309904015238746e-11[GeV], z: -2.342568696166975e-09[GeV]
G4WT0 > Total Energy = 2.5e-09[GeV]
G4WT0 > Kinetic Energy = 2.5e-09[GeV]
G4WT0 > MagneticMoment [MeV/T]: 0
G4WT0 > ProperTime = 0[ns]
G4WT0 > in Material G4_Si
G4WT0 > InteractionLength= 1.797693134862316e+307[cm]
G4WT0 > Photon at Boundary!
G4WT0 > thePrePV: singlepixel_pmt_phys
G4WT0 > thePostPV: singlepixel_scint_phys
G4WT0 > *** StepTooSmall ***
G4WT0 > 6 2.41 0.851 10 2.5e-06 0 0 31.4 singlepixel_scint_phys Transportation
G4WT0 > G4VDiscreteProcess::PostStepGetPhysicalInteractionLength() - [ OpBoundary]
G4WT0 > Particle type - opticalphoton
G4WT0 > mass: 0[GeV]
G4WT0 > charge: 0[e]
G4WT0 > Direction x: -0.3483424556083636, y: 0.02523961606095498, z: -0.9370274784667901
G4WT0 > Total Momentum = 2.5e-09[GeV]
G4WT0 > Momentum: -8.708561390209091e-10[GeV], y: 6.309904015238746e-11[GeV], z: -2.342568696166975e-09[GeV]
G4WT0 > Total Energy = 2.5e-09[GeV]
G4WT0 > Kinetic Energy = 2.5e-09[GeV]
G4WT0 > MagneticMoment [MeV/T]: 0
G4WT0 > ProperTime = 0[ns]
G4WT0 > in Material MPND_gagg
G4WT0 > InteractionLength= 1.797693134862316e+307[cm]
G4WT0 > Photon at Boundary!
G4WT0 > thePrePV: singlepixel_scint_phys
G4WT0 > thePostPV: singlepixel_refl_phy
G4WT0 > Old Momentum Direction: (-0.3483424556083636,0.02523961606095498,-0.9370274784667901)
G4WT0 > Old Polarization: (-0.8183637310103038,-0.4956518298805093,0.2908780969805015)
G4WT0 > New Momentum Direction: (0.2814837006225525,0.03157577099009305,-0.959046347665333)
G4WT0 > New Polarization: (-0.8464714571198213,0.4789033135175184,-0.2326750708249342)
G4WT0 > *** LobeReflection ***
G4WT0 > 7 -5 1.39 -9.92 2.5e-06 0 21.3 52.7 singlepixel_refl_phy Transportation
G4WT0 > G4VDiscreteProcess::PostStepGetPhysicalInteractionLength() - [ OpBoundary]
G4WT0 > Particle type - opticalphoton
G4WT0 > mass: 0[GeV]
G4WT0 > charge: 0[e]
G4WT0 > Direction x: 0.2814837006225525, y: 0.03157577099009305, z: -0.959046347665333
G4WT0 > Total Momentum = 2.5e-09[GeV]
G4WT0 > Momentum: 7.037092515563814e-10[GeV], y: 7.893942747523265e-11[GeV], z: -2.397615869163333e-09[GeV]
G4WT0 > Total Energy = 2.5e-09[GeV]
G4WT0 > Kinetic Energy = 2.5e-09[GeV]
G4WT0 > MagneticMoment [MeV/T]: 0
G4WT0 > ProperTime = 0[ns]
G4WT0 > in Material G4_AIR
G4WT0 > InteractionLength= 1.797693134862316e+307[cm]
G4WT0 > Photon at Boundary!
G4WT0 > thePrePV: singlepixel_refl_phy
G4WT0 > thePostPV: singlepixel_scint_phys
G4WT0 > *** StepTooSmall ***
G4WT0 > 8 -5 1.39 -9.92 2.5e-06 0 0 52.7 singlepixel_scint_phys Transportation
G4WT0 > G4VDiscreteProcess::PostStepGetPhysicalInteractionLength() - [ OpBoundary]
G4WT0 > Particle type - opticalphoton
G4WT0 > mass: 0[GeV]
G4WT0 > charge: 0[e]
G4WT0 > Direction x: 0.2814837006225525, y: 0.03157577099009305, z: -0.959046347665333
G4WT0 > Total Momentum = 2.5e-09[GeV]
G4WT0 > Momentum: 7.037092515563814e-10[GeV], y: 7.893942747523265e-11[GeV], z: -2.397615869163333e-09[GeV]
G4WT0 > Total Energy = 2.5e-09[GeV]
G4WT0 > Kinetic Energy = 2.5e-09[GeV]
G4WT0 > MagneticMoment [MeV/T]: 0
G4WT0 > ProperTime = 0[ns]
G4WT0 > in Material MPND_gagg
G4WT0 > InteractionLength= 1.797693134862316e+307[cm]
G4WT0 > Photon at Boundary!
G4WT0 > thePrePV: singlepixel_scint_phys
G4WT0 > thePostPV: singlepixel_refl_phy
G4WT0 > Old Momentum Direction: (0.2814837006225525,0.03157577099009305,-0.959046347665333)
G4WT0 > Old Polarization: (-0.8464714571198213,0.4789033135175184,-0.2326750708249342)
G4WT0 > New Momentum Direction: (0.4040918759733085,0.04884714297335606,-0.9134132210537095)
G4WT0 > New Polarization: (-0.8116962453950581,0.479543364443296,-0.3334476972929483)
G4WT0 > *** Absorption ***
G4WT0 > 9 -4.98 1.39 -10 2.5e-06 0 0.0825 52.8 singlepixel_refl_phy Transportation
The scintillator is wrapped in an ideal reflector material:
//ideal reflector
auto idealReflector = new G4OpticalSurface("idealReflector");
idealReflector->SetType(dielectric_dielectric);
idealReflector->SetModel(unified);
idealReflector->SetFinish(groundbackpainted); //Lambertian reflection
idealReflector->SetSigmaAlpha(1.3*degree); //
G4MaterialPropertiesTable *idealReflector_MPT = new G4MaterialPropertiesTable();
G4double pp[NUM] = {1 * eV, 7 * eV};
G4double specularlobe[NUM] = {0.0, 0.0};
G4double specularspike[NUM] = {0.0, 0.0};
G4double backscatter[NUM] = {0.0, 0.0};
G4double lambertian[NUM] = {1, 1}; //redundant
G4double idealReflector_rindex[NUM] = {1.35, 1.35};
G4double idealReflector_refl[NUM] = {1.0, 1.0}; //reflect everything
G4double idealReflector_eff[NUM] = {0.0, 0.0}; //don't' detect anything
idealReflector_MPT->AddProperty("RINDEX", pp, idealReflector_rindex, NUM);
idealReflector_MPT->AddProperty("REFLECTIVITY", pp, idealReflector_refl, NUM);
idealReflector_MPT->AddProperty("EFFICIENCY", pp, idealReflector_eff, NUM);
idealReflector_MPT->AddProperty("SPECULARLOBECONSTANT", pp, specularlobe, NUM);
idealReflector_MPT->AddProperty("SPECULARSPIKECONSTANT", pp, specularspike, NUM);
idealReflector_MPT->AddProperty("BACKSCATTERCONSTANT", pp, backscatter, NUM);
idealReflector->SetMaterialPropertiesTable(idealReflector_MPT);
new G4LogicalBorderSurface("scintillator_reflector_border", scint_phy, refl_phy, idealReflector);
Despite 100% reflectivity, the photon was killed in the last Transportation step. This shouldn’t happen. What’s wrong here?