Hi,
in order to directly take into account volumetric source definitions, divergence etc. provided by FLUKA input cards, you can also call the FLUKA internal routines yourself.
Take a look at the source.f provided in: Sampling from energy spectra - Advanced Features and User Routines - FLUKA User Forum (cern.ch)
Look at the call in the section with the comment “PRIMARY PARTICLE: STARTING POSITION”. If the spatial distributions that are provided out of the box are not sufficient then you need to sample the positions yourself but from your post I understand that the cylindrical distribution should work.
Hope that helps
Chris