diff options
Diffstat (limited to 'noao/imred/ccdred/ccdtest/artobs.cl')
-rw-r--r-- | noao/imred/ccdred/ccdtest/artobs.cl | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/noao/imred/ccdred/ccdtest/artobs.cl b/noao/imred/ccdred/ccdtest/artobs.cl new file mode 100644 index 00000000..b64294a6 --- /dev/null +++ b/noao/imred/ccdred/ccdtest/artobs.cl @@ -0,0 +1,109 @@ +# ARTOBS -- Make a CCD observation + +procedure artobs (image, exptime, ccdtype) + +string image {prompt="Image name"} +real exptime {prompt="Exposure time"} +string ccdtype {prompt="CCD type"} + +int ncols=132 {prompt="Number of columns"} +int nlines=100 {prompt="Number of lines"} +string filter="" {prompt="Filter"} +string datasec="[1:100,1:100]" {prompt="Data section"} +string trimsec="[3:98,3:98]" {prompt="Trim section"} +string biassec="[103:130,*]" {prompt="Bias section"} + +file imdata="" {prompt="Image data"} +real skyrate=0. {prompt="Sky count rate"} +file badpix="" {prompt="Bad pixel regions"} +real biasval=500. {prompt="Bias value"} +real badval=500. {prompt="Bad pixel value"} +real zeroval=100. {prompt="Zero level value"} +real darkrate=1. {prompt="Dark count rate"} +real zeroslope=0.01 {prompt="Slope of zero level"} +real darkslope=0.002 {prompt="Slope of dark count rate"} +real flatslope=0.0003 {prompt="Flat field slope"} +real sigma=5. {prompt="Gaussian sigma"} +int seed=0 {prompt="Random number seed"} +bool overwrite=no {prompt="Overwrite existing image?"} + +begin + int c1, c2, l1, l2 + real exp, value, valslope + string im, type, s + + im = image + exp = exptime + type = ccdtype + + if (access (im//".imh") == yes) + im = im // ".imh" + if (access (im//".hhh") == yes) + im = im // ".hhh" + if (access (im) == yes) { + if (overwrite == yes) + imdelete (im, verify=no) + else + return + } + + # Create the image. + s = str (ncols) // " " // str (nlines) + mkimage (im, "make", 0., 2, s, pixtype="short", slope=0., sigma=sigma, + seed=seed) + + # Add a data image. + if (access (imdata//".imh") == yes) + imdata = imdata // ".imh" + if (access (imdata//".hhh") == yes) + imdata = imdata // ".hhh" + if (access (imdata) == yes) + imcopy (imdata//datasec, im//datasec, verbose=no) + + # Add sky. + value = exp * skyrate + if (value != 0.) + mkimage (im//datasec, "add", value, slope=0., sigma=0.) + + # Add flat field response. + if (flatslope != 0.) + mkimage (im//datasec, "mul", 1., slope=flatslope, sigma=0.) + + # Add zero level and dark count. + value = zeroval + exp * darkrate + valslope = zeroslope + exp * darkslope + if ((value != 0.) && (valslope != 0.)) + mkimage (im//datasec, "add", value, slope=valslope, sigma=0.) + + # Add bias. + if (biasval != 0.) + mkimage (im, "add", biasval, slope=0., sigma=sigma, seed=0) + + # Set bad pixels. + if (access (badpix)) { + list = badpix + while (fscan (list, c1, c2, l1, l2) != EOF) { + if (nscan() != 4) + next + c1 = max (1, c1) + c2 = min (ncols, c2) + l1 = max (1, l1) + l2 = min (nlines, l2) + s = "["//c1//":"//c2//","//l1//":"//l2//"]" + mkimage (im//s, "replace", badval, slope=0., sigma=0.) + } + } + + # Set image header + ccdhedit (im, "exptime", exp, type="real") + if (type != "") + ccdhedit (im, "imagetyp", type, type="string") + if (datasec != "") + ccdhedit (im, "datasec", datasec, type="string") + if (trimsec != "") + ccdhedit (im, "trimsec", trimsec, type="string") + if (biassec != "") + ccdhedit (im, "biassec", biassec, type="string") + if (filter != "") + ccdhedit (im, "subset", filter, type="string") +end |