using Sinograms: SinoPar, rays, plan_fbp, fbp
using ImageGeoms: ImageGeom, fovs, MaskCircle
using ImagePhantoms: SheppLogan, shepp_logan, radon, phantom
using Unitful: mm
using MIRTjim: jim, prompt

isinteractive() ? jim(:prompt, true) : prompt(:draw);

ig = ImageGeom(MaskCircle(); dims=(128,126), deltas = (2mm,2mm) )

sg = SinoPar( ; nb = 130, d = 2mm, na = 100)

μ = 0.01 / mm # typical linear attenuation coefficient
ob = shepp_logan(SheppLogan(); fovs = fovs(ig), u = (1, 1, μ))

sino = radon(rays(sg), ob)
jim(axes(sg), sino; title="Shepp-Logan sinogram", xlabel="r", ylabel="ϕ")

# Image reconstruction via FBP

plan = plan_fbp(sg, ig)
fbp_image, sino_filt = fbp(plan, sino)

clim = (0.9, 1.1) .* μ
jim(axes(ig), fbp_image, "FBP image"; clim)

true_image = phantom(axes(ig)..., ob, 2)
jim(axes(ig)..., true_image, "True phantom image"; clim)