aboutsummaryrefslogtreecommitdiff
path: root/noao/imred/quadred/src/ccdproc/ccdred.h
diff options
context:
space:
mode:
Diffstat (limited to 'noao/imred/quadred/src/ccdproc/ccdred.h')
-rw-r--r--noao/imred/quadred/src/ccdproc/ccdred.h155
1 files changed, 155 insertions, 0 deletions
diff --git a/noao/imred/quadred/src/ccdproc/ccdred.h b/noao/imred/quadred/src/ccdproc/ccdred.h
new file mode 100644
index 00000000..ef41f592
--- /dev/null
+++ b/noao/imred/quadred/src/ccdproc/ccdred.h
@@ -0,0 +1,155 @@
+# CCDRED Data Structures and Definitions
+
+# The CCD structure: This structure is used to communicate processing
+# parameters between the package procedures. It contains pointers to
+# data, calibration image IMIO pointers, scaling parameters, and the
+# correction flags. The corrections flags indicate which processing
+# operations are to be performed. The subsection parameters do not
+# include a step size. A step size is assumed. If arbitrary subsampling
+# is desired this would be the next generalization.
+
+define LEN_CCD 75 # Length of CCD structure
+
+# CCD data coordinates
+define CCD_C1 Memi[$1] # CCD starting column
+define CCD_C2 Memi[$1+1] # CCD ending column
+define CCD_L1 Memi[$1+2] # CCD starting line
+define CCD_L2 Memi[$1+3] # CCD ending line
+
+# Input data
+define IN_IM Memi[$1+4] # Input image pointer
+define IN_C1 Memi[$1+5] # Input data starting column
+define IN_C2 Memi[$1+6] # Input data ending column
+define IN_L1 Memi[$1+7] # Input data starting line
+define IN_L2 Memi[$1+8] # Input data ending line
+define IN_NSEC Memi[$1+71] # Number of input pieces
+define IN_SEC Memi[$1+72] # Pointer to sections (c1,c2,l1,l2)xn
+
+# Output data
+define OUT_IM Memi[$1+9] # Output image pointer
+define OUT_C1 Memi[$1+10] # Output data starting column
+define OUT_C2 Memi[$1+11] # Output data ending column
+define OUT_L1 Memi[$1+12] # Output data starting line
+define OUT_L2 Memi[$1+13] # Output data ending line
+define OUT_SEC Memi[$1+73] # Pointer to sections (c1,c2,l1,l2)xn
+
+# Zero level data
+define ZERO_IM Memi[$1+14] # Zero level image pointer
+define ZERO_C1 Memi[$1+15] # Zero level data starting column
+define ZERO_C2 Memi[$1+16] # Zero level data ending column
+define ZERO_L1 Memi[$1+17] # Zero level data starting line
+define ZERO_L2 Memi[$1+18] # Zero level data ending line
+
+# Dark count data
+define DARK_IM Memi[$1+19] # Dark count image pointer
+define DARK_C1 Memi[$1+20] # Dark count data starting column
+define DARK_C2 Memi[$1+21] # Dark count data ending column
+define DARK_L1 Memi[$1+22] # Dark count data starting line
+define DARK_L2 Memi[$1+23] # Dark count data ending line
+
+# Flat field data
+define FLAT_IM Memi[$1+24] # Flat field image pointer
+define FLAT_C1 Memi[$1+25] # Flat field data starting column
+define FLAT_C2 Memi[$1+26] # Flat field data ending column
+define FLAT_L1 Memi[$1+27] # Flat field data starting line
+define FLAT_L2 Memi[$1+28] # Flat field data ending line
+
+# Illumination data
+define ILLUM_IM Memi[$1+29] # Illumination image pointer
+define ILLUM_C1 Memi[$1+30] # Illumination data starting column
+define ILLUM_C2 Memi[$1+31] # Illumination data ending column
+define ILLUM_L1 Memi[$1+32] # Illumination data starting line
+define ILLUM_L2 Memi[$1+33] # Illumination data ending line
+
+# Fringe data
+define FRINGE_IM Memi[$1+34] # Fringe image pointer
+define FRINGE_C1 Memi[$1+35] # Fringe data starting column
+define FRINGE_C2 Memi[$1+36] # Fringe data ending column
+define FRINGE_L1 Memi[$1+37] # Fringe data starting line
+define FRINGE_L2 Memi[$1+38] # Fringe data ending line
+
+# Trim section
+define TRIM_C1 Memi[$1+39] # Trim starting column
+define TRIM_C2 Memi[$1+40] # Trim ending column
+define TRIM_L1 Memi[$1+41] # Trim starting line
+define TRIM_L2 Memi[$1+42] # Trim ending line
+
+# Bias section
+define BIAS_C1 Memi[$1+43] # Bias starting column
+define BIAS_C2 Memi[$1+44] # Bias ending column
+define BIAS_L1 Memi[$1+45] # Bias starting line
+define BIAS_L2 Memi[$1+46] # Bias ending line
+define BIAS_SEC Memi[$1+74] # Multiple bias sections
+
+define READAXIS Memi[$1+47] # Read out axis (1=cols, 2=lines)
+define CALCTYPE Memi[$1+48] # Calculation data type
+define NBADCOLS Memi[$1+49] # Number of column interpolation regions
+define BADCOLS Memi[$1+50] # Pointer to col interpolation regions
+define NBADLINES Memi[$1+51] # Number of line interpolation regions
+define BADLINES Memi[$1+52] # Pointer to line interpolation regions
+define OVERSCAN_VEC Memi[$1+53] # Pointer to overscan vector
+define DARKSCALE Memr[P2R($1+54)] # Dark count scale factor
+define FRINGESCALE Memr[P2R($1+55)] # Fringe scale factor
+define FLATSCALE Memr[P2R($1+56)] # Flat field scale factor
+define ILLUMSCALE Memr[P2R($1+57)] # Illumination scale factor
+define MINREPLACE Memr[P2R($1+58)] # Minimum replacement value
+define MEAN Memr[P2R($1+59)] # Mean of output image
+define COR Memi[$1+60] # Overall correction flag
+define CORS Memi[$1+61+($2-1)] # Individual correction flags
+
+# Individual components of input, output, and bias section pieces.
+define IN_SC1 Memi[IN_SEC($1)+4*$2-4]
+define IN_SC2 Memi[IN_SEC($1)+4*$2-3]
+define IN_SL1 Memi[IN_SEC($1)+4*$2-2]
+define IN_SL2 Memi[IN_SEC($1)+4*$2-1]
+define OUT_SC1 Memi[OUT_SEC($1)+4*$2-4]
+define OUT_SC2 Memi[OUT_SEC($1)+4*$2-3]
+define OUT_SL1 Memi[OUT_SEC($1)+4*$2-2]
+define OUT_SL2 Memi[OUT_SEC($1)+4*$2-1]
+define BIAS_SC1 Memi[BIAS_SEC($1)+4*$2-4]
+define BIAS_SC2 Memi[BIAS_SEC($1)+4*$2-3]
+define BIAS_SL1 Memi[BIAS_SEC($1)+4*$2-2]
+define BIAS_SL2 Memi[BIAS_SEC($1)+4*$2-1]
+
+# The correction array contains the following elements with array indices
+# given by the macro definitions.
+
+define NCORS 10 # Number of corrections
+
+define FIXPIX 1 # Fix bad pixels
+define TRIM 2 # Trim image
+define OVERSCAN 3 # Apply overscan correction
+define ZEROCOR 4 # Apply zero level correction
+define DARKCOR 5 # Apply dark count correction
+define FLATCOR 6 # Apply flat field correction
+define ILLUMCOR 7 # Apply illumination correction
+define FRINGECOR 8 # Apply fringe correction
+define FINDMEAN 9 # Find the mean of the output image
+define MINREP 10 # Check and replace minimum value
+
+# The following definitions identify the correction values in the correction
+# array. They are defined in terms of bit fields so that it is possible to
+# add corrections to form unique combination corrections. Some of
+# these combinations are implemented as compound operations for efficiency.
+
+define O 001B # overscan
+define Z 002B # zero level
+define D 004B # dark count
+define F 010B # flat field
+define I 020B # Illumination
+define Q 040B # Fringe
+
+# The following correction combinations are recognized.
+
+define ZO 003B # zero level + overscan
+define DO 005B # dark count + overscan
+define DZ 006B # dark count + zero level
+define DZO 007B # dark count + zero level + overscan
+define FO 011B # flat field + overscan
+define FZ 012B # flat field + zero level
+define FZO 013B # flat field + zero level + overscan
+define FD 014B # flat field + dark count
+define FDO 015B # flat field + dark count + overscan
+define FDZ 016B # flat field + dark count + zero level
+define FDZO 017B # flat field + dark count + zero level + overscan
+define QI 060B # fringe + illumination