parameter ichip cnts if ichip>0 string outfield '{field}%i1' ichip else string outfield {field} end_if string file '{field}' open shift {outfield}/{outfield}a.shift ii=1 if cnts==0 nf=nfilt else nf=1 end_if do ifilt=1,nf string var 'nframe%i1' ifilt if cnts==0 nfr={var} else nfr=1 end_if do iframe=1,nfr ! get the appropriate file name string var2 'name%i1%i2.2' ifilt iframe if ichip>0 string name '{{var2}}%i1' ichip else string name '{{var2}}' end_if ! Make links to the appropriately named PSF files string psf '{field}%i2.2' ii if ip==-1 $ln -fs {name}var.lib psf/{psf}.lib else $ln -fs {name}.lib psf/{psf}.lib end_if ! If file already exists, skip it if cnts==0 err goto dofake open tfake tmp/{name}fake.fits close tfake goto nextfr dofake: end_if ! Get frame shift parameters read shift do i=1,10 read shift string xvar 'X%i2.2' i string yvar 'Y%i2.2' i {xvar}=@shift.1 {yvar}=@shift.2 end_do !Make the fake star file if ichip==1 ng=11 d=60.2 x0=110 y0=110 else ng=23 d=30.2 x0=110 y0=110 end_if istr=1 counts=1 err=0 sky=0 niter=1 chi=1 sharp=0 $'rm' fake.str if cnts~=0 printf ' NL NX NY LOWBAD HIGHBAD THRESH AIR ITIME HJD| AP1 PH/ADU RNOISE FRAD' >./fake.nst printf ' 1 800 800 -5.0999999.0 2.0 0.00 1.00 0.00| 4.5 14.00 0.21 5.0' >>./fake.nst printf ' ' >>./fake.nst counts=cnts end_if do ix=1,ng xf=x0+(ix-1)*d do iy=1,ng yf=y0+(iy-1)*d x=xf+x01+x02*xf+x03*yf+x04*xf^2+x05*xf*yf+x06*yf^2 x=x+x07*xf^3+x08*xf^2*yf+x09*xf*yf^2+x10*yf^3 y=yf+y01+y02*xf+y03*yf+y04*xf^2+y05*xf*yf+y06*yf^2 y=y+y07*xf^3+y08*xf^2*yf+y09*xf*yf^2+y10*yf^3 if cnts==0 printf '%i6%2f9.2%2f9.3' istr x y counts sky >>./fake.str else printf '%i6%2f9.2%3f9.3%f9.1%f9.2%f9.3' | istr x y -2.5*log10[counts]+25 err sky niter chi sharp | >>./fake.nst end_if istr=istr+1 end_do end_do if cnts==0 ! Create the fake star frame rd 1 '{name}' {pictype} sub 1 1 photons 1 str=./fake.str fw=ps+1 mean=-1 psfgrid=psf/{psf}.lib | rn=0 gain=gain silent poisson wd 1 tmp/{name}fake full end_if nextfr: ii=ii+1 end_do end_do end