aboutsummaryrefslogtreecommitdiff
path: root/noao/nproto/ace/objs.h
blob: 20dff95a8cd97161a9c9790e2ec877dfb057222c (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
# This file defines the object parameters.

# The following are the parameter ids which are the offsets into the object
# data structure.  Note that the first group of parameters are those
# determined during detection for potential objects.  The second group
# are parameters added after an object has been accepted.

define	ID_ROW		 0 # i "" ""		"Catalog row"
define  ID_NUM           1 # i "" ""		"Object number"
define  ID_PNUM          2 # i "" ""		"Parent number"
define	ID_XAP		 3 # r pixels %.2f	"X aperture coordinate"
define	ID_YAP		 4 # r pixels %.2f	"Y aperture coordinate"
define	ID_FLUX		 5 # r counts ""	"Isophotal flux (I - sky)"
define	ID_NPIX		 6 # i pixels ""	"Number of pixels"
define	ID_NDETECT	 7 # i pixels ""	"Number of detected pixels"
define	ID_ISIGAVG	 8 # r sigma ""		"Average (I - sky) / sig"
define	ID_ISIGMAX	 9 # r sigma ""		"Maximum (I - sky) / sig"
define	ID_ISIGAVG2	10 # r sigma ""		"*Ref average (I - sky) / sig"
define	ID_FLAGS	11 # 8 "" ""		"Flags"

define	ID_SKY		12 # r counts ""	"Mean sky"
define	ID_SIG		13 # r counts ""	"Sky sigma"
define	ID_PEAK		14 # r counts ""	"Peak pixel value above sky"
define	ID_APFLUX	15 # r counts ""	"Aperture fluxes"
define	ID_FRACFLUX	16 # r counts ""	"Apportioned flux"
define	ID_FRAC		17 # r "" ""		"Apportioned fraction"
define	ID_XMIN		18 # i pixels ""	"Minimum X"
define	ID_XMAX		19 # i pixels ""	"Maxium X"
define	ID_YMIN		20 # i pixels ""	"Minimum Y"
define	ID_YMAX		21 # i pixels ""	"Maxium Y"
define	ID_WX		22 # d pixels %.2f	"X world coordinate"
define	ID_WY		24 # d pixels %.2f	"Y world coordinate"
define	ID_X1		26 # r pixels %.2f	"X centroid"
define	ID_Y1		27 # r pixels %.2f	"Y centroid"
define	ID_X2		28 # r pixels ""	"X 2nd moment"
define	ID_Y2		29 # r pixels ""	"Y 2nd moment"
define	ID_XY		30 # r pixels ""	"X 2nd cross moment"

define	ID_FLUXVAR	31 # r counts ""	"*Variance in the flux"
define	ID_XVAR		32 # r pixels ""	"*Variance in X centroid"
define	ID_YVAR		33 # r pixels ""	"*Variance in Y centroid"
define	ID_XYCOV	34 # r pixels ""	"*Covariance of X and Y"

# The following are derived quantities which have ids above 1000.

define	ID_A		1001 # r pixels ""	"Semimajor axis"
define	ID_B		1002 # r pixels ""	"Semiminor axis"
define	ID_THETA	1003 # r degrees ""	"Position angle"
define	ID_ELONG	1004 # r "" ""		"Elongation = A/B"
define	ID_ELLIP	1005 # r "" ""		"Ellipticity = 1 - B/A"
define	ID_R		1006 # r pixels "" 	"Second moment radius"
define	ID_CXX		1007 # r pixels ""	"Second moment ellipse"
define	ID_CYY		1008 # r pixels ""	"Second moment ellipse"
define	ID_CXY		1009 # r pixels ""	"Second moment ellipse"

define	ID_FLUXERR	1011 # r counts ""	"Error in flux"
define	ID_XERR		1012 # r pixels ""	"Error in X centroid"
define	ID_YERR		1013 # r pixels ""	"Error in Y centroid"
define	ID_AERR		1014 # r "" ""		"Error in A"
define	ID_BERR		1015 # r "" ""		"Error in B"
define	ID_THETAERR	1016 # r degrees ""	"Error in THETA"
define	ID_CXXERR	1017 # r pixels ""	"Error in CXX"
define	ID_CYYERR	1018 # r pixels ""	"Error in CYY"
define	ID_CXYERR	1019 # r pixels ""	"Error in CXY"


# Reference to elements of the object data structure may be made with
# the generic OBJ[IRDC] macros or with the individual structure macros.

define	OBJI		Memi[$1+$2]		# Reference integer parameter
define	OBJR		Memr[P2R($1+$2)]	# Reference real parameter
define	OBJD		Memd[P2D($1+$2)]	# Reference double parameter
define	OBJC		Memc[P2C($1+$2)]	# Reference char parameter

define	OBJ_DETLEN	12			# Length for candidate objects
define	OBJ_LEN		35			# Length for accepted objects

# Detection pass parameters.
define	OBJ_ROW		OBJI($1,ID_ROW)		# Catalog row
define	OBJ_NUM		OBJI($1,ID_NUM)		# Object number
define	OBJ_PNUM	OBJI($1,ID_PNUM)	# Parent object number
define	OBJ_XAP		OBJR($1,ID_XAP)		# X aperture coordinate
define	OBJ_YAP		OBJR($1,ID_YAP)		# Y aperture coordinate
define	OBJ_NPIX	OBJI($1,ID_NPIX)	# Number of pixels
define	OBJ_NDETECT	OBJI($1,ID_NDETECT)	# Number of detected pixels
define	OBJ_ISIGAVG	OBJR($1,ID_ISIGAVG)	# Average (I - sky) / sig
define	OBJ_ISIGMAX	OBJR($1,ID_ISIGMAX)	# Maximum (I - sky) / sig
define	OBJ_ISIGAVG2	OBJR($1,ID_ISIGAVG2)	# Ref average (I - sky) / sig
define	OBJ_FLAGS	OBJI($1,ID_FLAGS)	# Flags

define	OBJ_SKY		OBJR($1,ID_SKY)		# Mean sky
define	OBJ_SIG		OBJR($1,ID_SIG)		# Sky sigma
define	OBJ_PEAK	OBJR($1,ID_PEAK)	# Peak pixel value above sky
define	OBJ_FLUX	OBJR($1,ID_FLUX)	# Isophotal flux (I - sky)
define	OBJ_APFLUX	OBJI($1,ID_APFLUX)	# Array of aperture fluxes (ptr)
define	OBJ_FRACFLUX	OBJR($1,ID_FRACFLUX)	# Apportioned flux
define	OBJ_FRAC	OBJR($1,ID_FRAC)	# Approtioned fraction
define	OBJ_XMIN	OBJI($1,ID_XMIN)	# Minimum X
define	OBJ_XMAX	OBJI($1,ID_XMAX)	# Maxium X
define	OBJ_YMIN	OBJI($1,ID_YMIN)	# Minimum Y
define	OBJ_YMAX	OBJI($1,ID_YMAX)	# Maxium Y
define	OBJ_WX		OBJD($1,ID_WX)		# X world coordinate
define	OBJ_WY		OBJD($1,ID_WY)		# Y world coordinate
define	OBJ_X1		OBJR($1,ID_X1)		# X centroid
define	OBJ_Y1		OBJR($1,ID_Y1)		# Y centroid
define	OBJ_X2		OBJR($1,ID_X2)		# X centroid
define	OBJ_Y2		OBJR($1,ID_Y2)		# Y centroid
define	OBJ_XY		OBJR($1,ID_XY)		# X centroid

define	OBJ_FLUXVAR	OBJR($1,ID_FLUXVAR)	# Variance in flux
define	OBJ_XVAR	OBJR($1,ID_XVAR)	# Variance in X centroid
define	OBJ_YVAR	OBJR($1,ID_YVAR)	# Variance in Y centroid
define	OBJ_XYCOV	OBJR($1,ID_XYCOV)	# Covariance of X and Y centroid




# Object flags.
define	OBJ_EVAL	001B		# Object was evaluated
define	OBJ_GROW	002B		# Object was grown
define	OBJ_SPLIT	004B		# Object was split
define	OBJ_SINGLE	010B		# Object was not split
define	OBJ_DARK	020B		# Object was below sky

define	FLAGSET		(andi(OBJ_FLAGS($1),$2)!=0)
define	FLAGNOTSET	(andi(OBJ_FLAGS($1),$2)==0)
define	SETFLAG		OBJ_FLAGS($1)=ori(OBJ_FLAGS($1),$2)
define	UNSETFLAG	OBJ_FLAGS($1)=andi(OBJ_FLAGS($1),noti($2))

define	DARK		(andi(OBJ_FLAGS($1),OBJ_DARK)!=0)
define	EVAL		(andi(OBJ_FLAGS($1),OBJ_EVAL)!=0)
define	SPLIT		(andi(OBJ_FLAGS($1),OBJ_SPLIT)!=0)
define	NOTSPLIT	(andi(OBJ_FLAGS($1),OBJ_SPLIT)==0)
define	SINGLE		(andi(OBJ_FLAGS($1),OBJ_SINGLE)!=0)
define	NOTSINGLE	(andi(OBJ_FLAGS($1),OBJ_SINGLE)==0)
define	GROWN		(andi(OBJ_FLAGS($1),OBJ_GROW)!=0)
define	NOTGROWN	(andi(OBJ_FLAGS($1),OBJ_GROW)==0)

define	SZ_FLAGS	5		# Size of flag string