aboutsummaryrefslogtreecommitdiff
path: root/noao/imred/ccdred/ccdtest/artobs.cl
diff options
context:
space:
mode:
Diffstat (limited to 'noao/imred/ccdred/ccdtest/artobs.cl')
-rw-r--r--noao/imred/ccdred/ccdtest/artobs.cl109
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