Subroutine inj_coord_eff( ring, inj, synch_beam, closed_orbit, & coord) use bmad_interface use injlib implicit none type (lat_struct) ring type (coord_struct), allocatable :: closed_orbit(:) type (coord_struct), allocatable :: inj_orbit(:) type (inj_struct) inj type (synch_beam_struct) synch_beam integer i,j,k, index, ix_start, n, style integer lun1, lun2 integer n_part, nturns integer coord, track_state real nsig real lost_array(0:ring%n_ele_track), array(0:1000) real totweight, weight, injweight real min, max, step real injval, eff real injcoord(2) logical lostit, random ! allocate storage call reallocate_coord (inj_orbit, ring%n_ele_max) ! Set these along with angmin,angmax,angstep in data file later nsig = 2.5 n_part = 500 nturns = 50 random = .true. style = 2 index = 0 bmad_com%aperture_limit_on = .true. ! ***Do I need this??*** ! call twiss_and_track(ring, closed_orbit_) call inject_particle(ring, .false., 0, 0., weight, inj, & synch_beam,inj_orbit) if (coord==1) then print *,'Injection Position = ',inj_orbit(inj%ix_injpt)%vec(1) print *,'Enter Injection Position Min, Max, Step' read *, min, max, step else if (coord==2) then print *,'Injection Angle = ',inj_orbit(inj%ix_injpt)%vec(2) print *,'Enter Injection Angle Min, Max, Step' read *, min, max, step else print *,coord,'is an invalid coordinate or not implemented yet' return endif do injval = min, max, step call inject_particle(ring, .false., 0, 0., weight, inj, & synch_beam, inj_orbit) inj_orbit(inj%ix_injpt)%vec(coord) = injval !Take Beam to Injection Point ix_start = inj%ix_injpt n = 0 lostit = .false. !***This can be done in track_injected_particle*** !Inflate Aperture for Q34E And S34E For Zeroth Turn ring%ele(inj%ix_injpt)%value(x1_limit$)=0.10 ring%ele(inj%ix_injsex)%value(x1_limit$)=0.10 ring%ele(inj%ix_injpt)%value(x2_limit$)=0.10 ring%ele(inj%ix_injsex)%value(x2_limit$)=0.10 do while(n