aboutsummaryrefslogtreecommitdiff
path: root/noao/imred/ccdred/src/generic/ccdred.h
blob: 2d370d8675ea8155893fa7cd2f5456a6fd99a55d (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
# 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		131		# 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+10]	# Input image pointer
define	IN_C1		Memi[$1+11]	# Input data starting column
define	IN_C2		Memi[$1+12]	# Input data ending column
define	IN_L1		Memi[$1+13]	# Input data starting line
define	IN_L2		Memi[$1+14]	# Input data ending line

# Output data
define	OUT_IM		Memi[$1+20]	# Output image pointer
define	OUT_C1		Memi[$1+21]	# Output data starting column
define	OUT_C2		Memi[$1+22]	# Output data ending column
define	OUT_L1		Memi[$1+23]	# Output data starting line
define	OUT_L2		Memi[$1+24]	# Output data ending line

# Mask data
define  MASK_IM         Memi[$1+30]     # Mask image pointer
define  MASK_C1         Memi[$1+31]     # Mask data starting column
define  MASK_C2         Memi[$1+32]     # Mask data ending column
define  MASK_L1         Memi[$1+33]     # Mask data starting line
define  MASK_L2         Memi[$1+34]     # Mask data ending line
define  MASK_PM         Memi[$1+35]     # Mask pointer
define  MASK_FP         Memi[$1+36]     # Mask fixpix data

# Zero level data
define	ZERO_IM		Memi[$1+40]	# Zero level image pointer
define	ZERO_C1		Memi[$1+41]	# Zero level data starting column
define	ZERO_C2		Memi[$1+42]	# Zero level data ending column
define	ZERO_L1		Memi[$1+43]	# Zero level data starting line
define	ZERO_L2		Memi[$1+44]	# Zero level data ending line

# Dark count data
define	DARK_IM		Memi[$1+50]	# Dark count image pointer
define	DARK_C1		Memi[$1+51]	# Dark count data starting column
define	DARK_C2		Memi[$1+52]	# Dark count data ending column
define	DARK_L1		Memi[$1+53]	# Dark count data starting line
define	DARK_L2		Memi[$1+54]	# Dark count data ending line

# Flat field data
define	FLAT_IM		Memi[$1+60]	# Flat field image pointer
define	FLAT_C1		Memi[$1+61]	# Flat field data starting column
define	FLAT_C2		Memi[$1+62]	# Flat field data ending column
define	FLAT_L1		Memi[$1+63]	# Flat field data starting line
define	FLAT_L2		Memi[$1+64]	# Flat field data ending line

# Illumination data
define	ILLUM_IM	Memi[$1+70]	# Illumination image pointer
define	ILLUM_C1	Memi[$1+71]	# Illumination data starting column
define	ILLUM_C2	Memi[$1+72]	# Illumination data ending column
define	ILLUM_L1	Memi[$1+73]	# Illumination data starting line
define	ILLUM_L2	Memi[$1+74]	# Illumination data ending line

# Fringe data
define	FRINGE_IM	Memi[$1+80]	# Fringe image pointer
define	FRINGE_C1	Memi[$1+81]	# Fringe data starting column
define	FRINGE_C2	Memi[$1+82]	# Fringe data ending column
define	FRINGE_L1	Memi[$1+83]	# Fringe data starting line
define	FRINGE_L2	Memi[$1+84]	# Fringe data ending line

# Trim section
define	TRIM_C1		Memi[$1+90]	# Trim starting column
define	TRIM_C2		Memi[$1+91]	# Trim ending column
define	TRIM_L1		Memi[$1+92]	# Trim starting line
define	TRIM_L2		Memi[$1+93]	# Trim ending line

# Bias section
define	BIAS_C1		Memi[$1+100]	# Bias starting column
define	BIAS_C2		Memi[$1+101]	# Bias ending column
define	BIAS_L1		Memi[$1+102]	# Bias starting line
define	BIAS_L2		Memi[$1+103]	# Bias ending line

define	READAXIS	Memi[$1+110]	# Read out axis (1=cols, 2=lines)
define	CALCTYPE	Memi[$1+111]	# Calculation data type
define	OVERSCAN_TYPE	Memi[$1+112]	# Overscan type
define	OVERSCAN_VEC	Memi[$1+113]	# Pointer to overscan vector
define	DARKSCALE	Memr[P2R($1+114)]	# Dark count scale factor
define	FRINGESCALE	Memr[P2R($1+115)]	# Fringe scale factor
define	FLATSCALE	Memr[P2R($1+116)]	# Flat field scale factor
define	ILLUMSCALE	Memr[P2R($1+117)]	# Illumination scale factor
define	MINREPLACE	Memr[P2R($1+118)]	# Minimum replacement value
define	MEAN		Memr[P2R($1+119)]	# Mean of output image
define	COR		Memi[$1+120]	# Overall correction flag
define	CORS		Memi[$1+121+($2-1)]  # Individual correction flags

# 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

# The following overscan functions are recognized.
define  OVERSCAN_TYPES "|mean|median|minmax|chebyshev|legendre|spline3|spline1|"
define  OVERSCAN_MEAN   1               # Mean of overscan
define  OVERSCAN_MEDIAN 2               # Median of overscan
define  OVERSCAN_MINMAX 3               # Minmax of overscan
define  OVERSCAN_FIT    4               # Following codes are function fits