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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
|
include "../lib/daophotdef.h"
include "../lib/apseldef.h"
include "../lib/allstardef.h"
# DP_INIT - Procedure to initialize the daophot structure.
procedure dp_init (dp)
pointer dp # pointer to the daophot structure
begin
# Set the daophot structure.
call calloc (dp, LEN_DPSTRUCT, TY_STRUCT)
# Initalize the output type parameters.
DP_TEXT(dp) = YES
DP_VERBOSE(dp) = YES
# Initialize the wcs parameters.
DP_MW(dp) = NULL
DP_WCSIN(dp) = WCS_LOGICAL
DP_WCSOUT(dp) = WCS_LOGICAL
DP_WCSPSF(dp) = WCS_LOGICAL
DP_CTIN(dp) = NULL
DP_CTOUT(dp) = NULL
DP_CTPSF(dp) = NULL
# Initialize the data depedent parameters.
DP_SCALE(dp) = DEF_SCALE
DP_SFWHMPSF(dp) = DEF_FWHMPSF
DP_FWHMPSF(dp) = DEF_FWHMPSF / DEF_SCALE
DP_MINGDATA(dp) = INDEFR
DP_MAXGDATA(dp) = INDEFR
# Initialize the noise parameters
DP_CCDGAIN(dp) = EOS
DP_PHOTADU(dp) = INDEFR
DP_CCDREAD(dp) = EOS
DP_READNOISE(dp) = INDEFR
# Initialize the observing parameters.
DP_EXPTIME(dp) = EOS
DP_ITIME(dp) = INDEFR
DP_AIRMASS(dp) = EOS
DP_XAIRMASS(dp) = INDEFR
DP_FILTER(dp) = EOS
DP_IFILTER(dp) = EOS
DP_OBSTIME(dp) = EOS
DP_OTIME(dp) = EOS
# Initialize the psf fitting parameters.
call strcpy (",gauss,", DP_FUNCLIST(dp), SZ_FNAME)
call strcpy ("gauss", DP_FUNCTION(dp), SZ_FNAME)
DP_VARORDER(dp) = -1
DP_FEXPAND(dp) = NO
DP_SATURATED(dp) = NO
DP_RPSFRAD(dp) = DEF_PSFRAD / DEF_SCALE
DP_SPSFRAD (dp) = DEF_PSFRAD / DEF_SCALE
DP_PSFRAD (dp) = DEF_PSFRAD
# Initialize the fitting parameters.
DP_SFITRAD(dp) = DEF_FITRAD / DEF_SCALE
DP_FITRAD(dp) = DEF_FITRAD
DP_SANNULUS(dp) = DEF_ANNULUS / DEF_SCALE
DP_ANNULUS(dp) = DEF_ANNULUS
DP_SDANNULUS(dp) = DEF_DANNULUS / DEF_SCALE
DP_DANNULUS(dp) = DEF_DANNULUS
DP_MAXITER(dp) = DEF_MAXITER
DP_MAXGROUP(dp) = DEF_MAXGROUP
DP_MAXNSTAR(dp) = DEF_MAXNSTAR
DP_RECENTER(dp) = YES
DP_FITSKY(dp) = NO
DP_GROUPSKY(dp) = YES
# Initialize the file names.
DP_INIMAGE(dp) = EOS
DP_COORDS(dp) = EOS
DP_INPHOTFILE(dp) = EOS
DP_PSFIMAGE(dp) = EOS
DP_OUTPHOTFILE(dp) = EOS
DP_OUTIMAGE(dp) = EOS
DP_OUTREJFILE(dp) = EOS
# Initialize the substructure pointers.
DP_PSF(dp) = NULL
DP_PSFFIT(dp) = NULL
DP_GROUP(dp) = NULL
DP_PEAK(dp) = NULL
DP_NSTAR(dp) = NULL
DP_SUBSTAR(dp) = NULL
DP_ADDSTAR(dp) = NULL
DP_ALLSTAR(dp) = NULL
DP_APSEL(dp) = NULL
end
# DP_FITSETUP -- Setup the current PSF parameters given that the fitting
# parameters have been correctly read in.
procedure dp_fitsetup (dp)
pointer dp # pointer to daophot structure
pointer psffit
bool streq()
begin
# Set up the psf fit structure.
call malloc (DP_PSFFIT(dp), LEN_PSFFIT, TY_STRUCT)
psffit = DP_PSFFIT(dp)
call calloc (DP_PSFPARS(psffit), MAX_NFCTNPARS, TY_REAL)
# Define the psf function. The if user entered string is "auto"
# or a list then intialize the psf function to "gauss" or the
# first function in the list respectively.
if (streq (DP_FUNCTION(dp), "gauss")) {
DP_PSFUNCTION(psffit) = FCTN_GAUSS
} else if (streq (DP_FUNCTION(dp), "moffat25")) {
DP_PSFUNCTION(psffit) = FCTN_MOFFAT25
} else if (streq (DP_FUNCTION(dp), "penny1")) {
DP_PSFUNCTION(psffit) = FCTN_PENNY1
} else if (streq (DP_FUNCTION(dp), "moffat15")) {
DP_PSFUNCTION(psffit) = FCTN_MOFFAT15
} else if (streq (DP_FUNCTION(dp), "penny2")) {
DP_PSFUNCTION(psffit) = FCTN_PENNY2
} else if (streq (DP_FUNCTION(dp), "lorentz")) {
DP_PSFUNCTION(psffit) = FCTN_LORENTZ
} else if (streq (DP_FUNCTION(dp), "auto")) {
DP_PSFUNCTION(psffit) = FCTN_GAUSS
} else {
call error (0, "Unknown analytic PSF function")
}
switch (DP_VARORDER(dp)) {
case -1:
DP_NVLTABLE(psffit) = 0
case 0:
DP_NVLTABLE(psffit) = 1
case 1:
DP_NVLTABLE(psffit) = 3
case 2:
DP_NVLTABLE(psffit) = 6
}
if (DP_FEXPAND(dp) == NO)
DP_NFEXTABLE(psffit) = 0
else
DP_NFEXTABLE(psffit) = 5
# Set the initial values of the function parameters.
switch (DP_PSFUNCTION(psffit)) {
case FCTN_GAUSS:
DP_PSFNPARS(psffit) = 2
Memr[DP_PSFPARS(psffit)] = DP_FWHMPSF(dp) / 2.0
Memr[DP_PSFPARS(psffit)+1] = DP_FWHMPSF(dp) / 2.0
case FCTN_MOFFAT25:
DP_PSFNPARS(psffit) = 3
Memr[DP_PSFPARS(psffit)] = DP_FWHMPSF(dp) / 2.0
Memr[DP_PSFPARS(psffit)+1] = DP_FWHMPSF(dp) / 2.0
Memr[DP_PSFPARS(psffit)+2] = 0.0
Memr[DP_PSFPARS(psffit)+3] = 2.5
case FCTN_PENNY1:
DP_PSFNPARS(psffit) = 4
Memr[DP_PSFPARS(psffit)] = DP_FWHMPSF(dp) / 2.0
Memr[DP_PSFPARS(psffit)+1] = DP_FWHMPSF(dp) / 2.0
Memr[DP_PSFPARS(psffit)+2] = 0.75
Memr[DP_PSFPARS(psffit)+3] = 0.0
case FCTN_MOFFAT15:
DP_PSFNPARS(psffit) = 3
Memr[DP_PSFPARS(psffit)] = DP_FWHMPSF(dp) / 2.0
Memr[DP_PSFPARS(psffit)+1] = DP_FWHMPSF(dp) / 2.0
Memr[DP_PSFPARS(psffit)+2] = 0.0
Memr[DP_PSFPARS(psffit)+3] = 1.5
case FCTN_PENNY2:
DP_PSFNPARS(psffit) = 5
Memr[DP_PSFPARS(psffit)] = DP_FWHMPSF(dp) / 2.0
Memr[DP_PSFPARS(psffit)+1] = DP_FWHMPSF(dp) / 2.0
Memr[DP_PSFPARS(psffit)+2] = 0.75
Memr[DP_PSFPARS(psffit)+3] = 0.0
Memr[DP_PSFPARS(psffit)+4] = 0.0
case FCTN_LORENTZ:
DP_PSFNPARS(psffit) = 3
Memr[DP_PSFPARS(psffit)] = DP_FWHMPSF(dp) / 2.0
Memr[DP_PSFPARS(psffit)+1] = DP_FWHMPSF(dp) / 2.0
Memr[DP_PSFPARS(psffit)+2] = 0.0
default:
call error (0, "Unknown analytic PSF function")
}
DP_PSFHEIGHT(psffit) = INDEFR
DP_PSFMAG(psffit) = INDEFR
DP_PSFX(psffit) = INDEFR
DP_PSFY(psffit) = INDEFR
DP_PSFSIZE(psffit) = 0
DP_PSFLUT(psffit) = NULL
end
# DP_APSELSETUP -- Procedure to set up the APSEL parameters.
procedure dp_apselsetup (dp)
pointer dp # pointer to daophot structure
pointer apsel
begin
# APSEL structure
call malloc (DP_APSEL(dp), LEN_DPAPSTRUCT, TY_STRUCT)
apsel = DP_APSEL(dp)
call malloc (DP_APRESULT(apsel), NAPPAR, TY_INT)
# Set the default values for the apsel parameters.
DP_APID(apsel) = NULL
DP_APXCEN(apsel)= NULL
DP_APYCEN(apsel)= NULL
DP_APMAG(apsel) = NULL
DP_APERR(apsel) = NULL
DP_APMSKY(apsel)= NULL
DP_APGROUP(apsel) = NULL
DP_APNITER(apsel) = NULL
DP_APCHI(apsel) = NULL
DP_APSHARP(apsel) = NULL
end
|