diff options
Diffstat (limited to 'noao/imred/quadred/src/ccdproc/ccdred.h')
-rw-r--r-- | noao/imred/quadred/src/ccdproc/ccdred.h | 155 |
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 |