Actual step size used in iFOD2

Hi there,

I am new to study MRtrix. I ran tckgen using a single-voxel seed image
tckgen -algorithm iFOD2 -mask MaskImage.nii.gz -seed_image OneVoxelSeedImage.nii.gz -nthread 16 -step 0.5 -minlength 30 -maxlength 2000 -cutoff 0.1 -select 100 -stop FODImage0T.nii.gz -force FODmOutT.tck -downsample 1 -output_seeds seesInd.txt
tckconvert FODmOutT.tck -force FODmOutiFOD2T_forDebug.vtk
tckstats FODmOutT.tck -dump lengths.txt -force
Then I used VTK to read all streamlines from FODmOutiFOD2T_forDebug.vtk, found out the longest one, and dumped all points inside. I then found that the step size between each successive point ( I keep -sample 4 as default) became around 0.66, not 0.5 (spacings of my image is 1mm along all axes). Looking at MRtrix’s code, void SharedBase::set_step_and_angle() and float vox () const, the step size should be 0.5mm. I cannot find out where MRtrix changed the value internally as I have examined all init(), next(), and other functions in exec.h and iFOD2.h etc. Could you please explain what MRtrix does internally, and show me the location of the code? Many thanks.

Furthermore, I checked -debug information from tckgen, it does say that min_radius is 0.65 in my case, which is confirmed by the distance of the first and last points of each group of 4 successive points in my dumped data. But since my downsampling ratio is 1, in downsampler.cpp, the in streamline is directly assigned to the out streamline, hence I have no idea where either step size is changed or where and how min_radius affects the final positions of points in a streamline

Best Wishes,
Yours faithfully,
Theron