aboutsummaryrefslogtreecommitdiff
path: root/noao/imred/quadred/src/ccdproc/ccdred.h
blob: ef41f5923f82b90965f107c524c2f64f622dbee9 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
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