using Unitful: mm, ° using UnitfulRecipes using Plots # must precede 'using Sinograms' for sino_plot_rays to work using Sinograms: SinoPar, SinoMoj, SinoFanArc, SinoFanFlat, SinoFan using Sinograms: sino_plot_rays using MIRTjim: jim, prompt using InteractiveUtils: versioninfo isinteractive() ? jim(:prompt, true) : prompt(:draw); SinoPar() sg = SinoPar( ; nb = 64, # number of radial samples ("bins") na = 30, # number of angular samples d = 2mm, # detector spacing offset = 0.25, # quarter detector offset (unitless) orbit = 180, # angular range (in degrees) orbit_start = 0, # starting angle (in degrees) strip_width = 2mm, # detector width ) sg.ad sino_plot_rays(sg; ylims=(0,180), yticks=(0:90:180), widen=true, title="Parallel") prompt() sg = SinoFanArc( ; nb=888, na=984, d=1.0239mm, offset=1.25, dsd=949.075mm, dod=408.075mm) sg = SinoFanArc( ; nb=64, na=30, d=20mm, offset=0.25, dsd=900mm, dod=400mm) sino_plot_rays(sg; ylims=(-50,400), yticks=(0:180:360), widen=true, title="Fan-beam for arc detector") prompt() sg = SinoFanFlat( ; nb=64, na=30, d=20mm, offset=0.25, dsd=900mm, dod=400mm) sino_plot_rays(sg; ylims=(-50,400), yticks=(0:180:360), widen=true, title="Fan-beam for flat detector") prompt() SinoMoj()