Forced scattering towards detector


I am simulating an x-ray fluorescence spectrometer geometry with sample excitation using an external (placed outside fluorescence test sample) collimated x-ray beam. The SensitiveDetector consists of a shielded spectrometer placed orthogonal to the excitation beam direction with a small pinhole aperture/collimator before the detector to allow only the scattered (Compton, Rayleigh) and fluorescence x-ray photons to reach the sensitive material.

The problem I face is that I get very low detected counts of either scattered or fluorescence photons due to the small solid angle of detection from the pinhole. I would like to find an effective way to force the scattered/fluorescence x-rays towards my detector via the pinhole. I tried several forms of biasing techniques like:

1. Geometry biasing - similar to example GB03 using GB03BOptrGeometryBasedBiasing.hh as the biasing operator and GB03BOptnSplitOrKillOnBoundary.hh performing the splitting and killing process, where I split gammas at the interaction point if the GetPreStepPoint()->GetMomentumDirection() vector is within a certain emission angle (found from the acos() of the dot product between GetMomentumDirection() and unit vector to the pinhole center from the interaction point). The splitting is performed for both scattering and fluorescence events in this cone. There is a small enhancement in the counts, however, not sufficient for my analysis.

2. Physics-based EM secondary biasing - For biasing secondary processes of interest like the Compton, Rayleigh, and Photoelectric effect (for fluorescence production), I use secondary cross-section biasing through macro commands, maximizing gamma process and minimizing electron process.

/process/em/setSecBiasing compt sample 10 100 keV
/process/em/setSecBiasing Rayl sample 10 100 keV
/process/em/setSecBiasing eIoni sample 0.1 100 keV
/process/em/setSecBiasing eBrem sample 0.1 100 keV
/process/em/setSecBiasing phot sample 10 100 keV

I combine physics biasing and geometry biasing as mentioned above and get a little better result, but still not sufficient !!

3. Reverse Monte Carlo - I am thinking to implement this, however, Reverse MC doesn’t make much sense for this case since, besides a small SensitiveDetector geometry due to pinhole (opening diameter in mm scale), my excitation source is also small (disk diameter in mm scale).

I looked into the status of a "DXTRAN " MCNP-like option to bias particles towards a preferred solid angle (the pinhole opening in my case) but it seems this is still not yet implemented. I currently use Geant4 10.1 for my simulations. What can potentially solve this problem? am I missing something? are there any other options?.

Any help is much appreciated !!!