 program test
 use bmad
 implicit none
   type (lat_struct) lat
   type (ele_struct) ele_inf, ele_start
   type(coord_struct) start_orb, end_orb
   integer nargs, ix,i,j,k, ix_ele
   character*60 lat_file, line
   logical err_flag
   real(rp) max_beta, min_max_beta,dist

      nargs = cesr_iargc()
      if(nargs == 1)then
         call cesr_getarg(1,lat_file)
         print *, 'Using ', trim(lat_file)
       else
      lat_file = 'bmad.'
      print '(a,$)',' Lattice file name ? (default= bmad.) '
      read(5,'(a)') line
       call string_trim(line, line, ix)
       lat_file = line
       if(ix == 0) lat_file = 'bmad.'
       print *, ' lat_file = ', lat_file
      endif

       call tester
  
!     if(1<0)then
       call bmad_parser (lat_file, lat)
       start_orb%vec(1:6)=0
       start_orb%vec(1) = 0.0
       start_orb%vec(2) = 0.0
       start_orb%vec(3) = 0.0
       call track1(start_orb,lat%ele(1),lat%param, end_orb)
      if(1<0)then
print *,' Just before make_mat6'
       call make_mat6 (lat%ele(1), lat%param, start_orb, err_flag=err_flag)
print *,' Just after make_mat6'
       call type_ele (lat%ele(1), type_floor_coords=.true.)
       ele_start = lat%ele(0)
  min_max_beta = 100.
!  do j = -10,10,1
!    lat%ele(0)%x%etap = ele_start%x%etap + j*0.02
!    do k=-10,10,1
!      lat%ele(0)%x%eta = ele_start%x%eta + k*0.02

       call twiss_propagate_all(lat)
       call element_locator('INCOMING',lat,ix_ele)
       dist = lat%ele(ix_ele)%s - 1.72
       call twiss_and_track_at_s(lat,dist,ele_inf)
       print '(a16,2i4,7es12.4)',ele_inf%name, j,k,ele_inf%s, ele_inf%a%beta, ele_inf%b%beta, ele_inf%a%alpha, ele_inf%b%alpha, &
                   ele_inf%x%eta,  ele_inf%x%etap

       max_beta = 0.      
!        if(lat%ele(1)%b%beta < 20.0 .and. ele_inf%b%beta < 20.0)then
       write(16,'(/,a,/)')'#'
         do i = 0,lat%n_ele_track
           if(index(lat%ele(i)%name, 'INCOMING')/= 0)then
           print '(a,7es12.4)',ele_inf%name, ele_inf%s, ele_inf%a%beta, ele_inf%b%beta, ele_inf%a%alpha, ele_inf%b%alpha, &
                   ele_inf%x%eta,  ele_inf%x%etap
                 write(16, '(a16,7es12.4)')ele_inf%name,ele_inf%s, ele_inf%a%beta, ele_inf%b%beta, ele_inf%a%alpha, ele_inf%b%alpha, &
                   ele_inf%x%eta,  ele_inf%x%etap
           endif
           print '(a,7es12.4)',lat%ele(i)%name, lat%ele(i)%s, lat%ele(i)%a%beta, lat%ele(i)%b%beta, lat%ele(i)%a%alpha, lat%ele(i)%b%alpha, &
                   lat%ele(i)%x%eta,  lat%ele(i)%x%etap
           write(16, '(a16,7es12.4)')lat%ele(i)%name,lat%ele(i)%s, lat%ele(i)%a%beta, lat%ele(i)%b%beta, lat%ele(i)%a%alpha, lat%ele(i)%b%alpha, &
                   lat%ele(i)%x%eta,  lat%ele(i)%x%etap
          max_beta = max(lat%ele(i)%x%eta, max_beta)
         end do
         write(16,'(a,es12.4,2i4)')'Max beta = ',max_beta, j,k
         print '(a,es12.4)','Max beta = ',max_beta
       min_max_beta = min(max_beta,min_max_beta)
!        endif

!      end do
!     end do
      endif
     print *,' min_max_beta = ',min_max_beta
       end
