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
|
include "../lib/apphot.h"
include "../lib/noise.h"
include "../lib/center.h"
include "../lib/fitsky.h"
# AP_YCONFIRM -- Procedure to confirm the critical polyphot parameters.
procedure ap_yconfirm (ap, out, stid)
pointer ap # pointer to the apphot structure
int out # output file descriptor
int stid # output file sequence number
pointer sp, cstr, sstr
real fwhmpsf, capert, annulus, dannulus, skysigma
real datamin, datamax
int apstati()
real apstatr(), ap_vfwhmpsf(), ap_vcapert(), ap_vsigma()
real ap_vannulus(), ap_vdannulus(), ap_vdatamin(), ap_vdatamax()
begin
call smark (sp)
call salloc (cstr, SZ_FNAME, TY_CHAR)
call salloc (sstr, SZ_FNAME, TY_CHAR)
call printf ("\n")
# Confirm the centering algorithm.
call ap_vcstring (ap, Memc[cstr], SZ_FNAME)
if (apstati (ap, CENTERFUNCTION) != AP_NONE) {
# Confirm the fwhmpsf.
if (apstati (ap, CENTERFUNCTION) != AP_CENTROID1D)
fwhmpsf = ap_vfwhmpsf (ap)
else
fwhmpsf = apstatr (ap, FWHMPSF)
# Confirm the centering box.
capert = 2.0 * ap_vcapert (ap)
} else {
fwhmpsf = apstatr (ap, FWHMPSF)
capert = 2.0 * apstatr (ap, CAPERT)
}
# Confirm the sky fitting algorithm.
call ap_vsstring (ap, Memc[sstr], SZ_FNAME)
if (apstati (ap, SKYFUNCTION) != AP_CONSTANT &&
apstati (ap, SKYFUNCTION) != AP_SKYFILE) {
# Confirm the sky annulus parameter.
annulus = ap_vannulus (ap)
# Confirm the width of the sky annulus.
dannulus = ap_vdannulus (ap)
} else {
annulus = apstatr (ap, ANNULUS)
dannulus = apstatr (ap, DANNULUS)
}
# Confirm the sky sigma parameter.
if (apstati (ap, SKYFUNCTION) != AP_SKYFILE)
skysigma = ap_vsigma (ap)
else
skysigma = apstatr (ap, SKYSIGMA)
# Confirm the datamin and datamax parameters.
datamin = ap_vdatamin (ap)
datamax = ap_vdatamax (ap)
call printf ("\n")
# Update the database file.
if (out != NULL && stid > 1) {
call ap_sparam (out, KY_CSTRING, Memc[cstr], UN_CALGORITHM,
"centering algorithm")
call ap_rparam (out, KY_FWHMPSF, fwhmpsf, UN_ASCALEUNIT,
"full width half maximum of the psf")
call ap_rparam (out, KY_CAPERT, capert, UN_CSCALEUNIT,
"width of the centering box")
call ap_sparam (out, KY_SSTRING, Memc[sstr], UN_SALGORITHM,
"sky fitting algorithm")
call ap_rparam (out, KY_ANNULUS, annulus, UN_SSCALEUNIT,
"inner radius of the sky annulus")
call ap_rparam (out, KY_DANNULUS, dannulus, UN_SSCALEUNIT,
"width of the sky annulus")
call ap_rparam (out, KY_SKYSIGMA, skysigma, UN_NCOUNTS,
"standard deviation of 1 sky pixel")
call ap_rparam (out, KY_DATAMIN, datamin, UN_ACOUNTS,
"minimum good data value")
call ap_rparam (out, KY_DATAMAX, datamax, UN_ACOUNTS,
"maximum good data value")
}
call sfree (sp)
end
|