program OW_off2ang
! 3D-linear Radon transform

  use sep
  use OW_type
  use OW_sltpar
  use OW2_3dslt
  use solver_tiny_mod1
  use solver_prc_mod 
  use igrad1
  use cgstep_mod1

  implicit none

  real, allocatable, dimension (:)		:: in,out
  integer					:: stat,ix,ih,iz,ind

  call sep_init()
  call sep_begin_prog()
  call owsltpar()

  if (o2a) then
     allocate(in(sog%z%n*sog%sh%n*sog%xm%n))
     allocate(out(sog%z%n*nah*sog%xm%n))
     call sreed("in",in,4*sog%z%n*sog%sh%n*sog%xm%n)
     stat = ow3dslant(.true.,.false.,out,in)
     call srite("out",out,4*sog%z%n*nah*sog%xm%n)
  else if (a2o) then
     allocate(in(sog%z%n*nah*sog%xm%n))
     allocate(out(sog%z%n*sog%sh%n*sog%xm%n))
     call sreed("in",in,4*sog%z%n*nah*sog%xm%n)
     stat = ow3dslant(.false.,.false.,in,out)
     call srite("out",out,4*sog%z%n*sog%sh%n*sog%xm%n)
  end if
!     call sreed("in",in,4*sog%z%n*sog%sh%n*sog%xm%n)
!  call solver_tiny(m=out, d=in, Fop=ow3dslant, stepper=cgstep, niter=niter)
!  call solver_prc( m=out,d=in, Fop=ow3dslant, Sop=igrad1_lop, stepper=cgstep, nSop=size(out1), niter=niter,eps=eps,&
!                   verb=.true.)
!  if (teste) then
!     stat = ow3dslant(.false.,.false.,out,in)
!     call srite("out",in,4*sog%z%n*sog%sh%n*sog%xm%n)
!  else if (rot) then
!     stat = ow3drot(.true.,.false.,in,out)
!     call srite("out",out,4*sog%z%n*sog%sh%n*sog%xm%n)
!  else
!  end if
  deallocate(in,out)
  call sep_end_prog()
end program 
