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
|
# SDOARCS -- Determine dispersion relation for spectrum based on refernece arcs.
procedure sdoarcs (spec, arcref1, reextract, logfile, batch)
file spec
file arcref1
bool reextract
file logfile
bool batch
struct *fd
begin
file temp, arc1, arc2, str1
string imtype, mstype, reid
bool verbose1
int i, n
imtype = "." // envget ("imtype")
i = stridx (",", imtype)
if (i > 0)
imtype = substr (imtype, 1, i-1)
mstype = ".ms" // imtype
n = strlen (imtype)
temp = mktemp ("tmp$iraf")
for (j=1; j<=2; j+=1) {
# Setup interactive/batch parameters
if (batch) {
verbose1 = no
reid = "no"
} else {
verbose1 = verbose
reidentify.answer.p_mode = "h"
reid = reidentify.answer
reidentify.answer.p_mode = "q"
if (reid == "no")
reid = "yes"
}
# The reference spectra refer initially to the 2D image. At the
# end we will reset them to refer to the 1D spectra.
hselect (spec, "refspec"//j, yes, > temp)
fd = temp
i = fscan (fd, arc1, str1)
fd = ""; delete (temp, verify=no)
if (nscan() < 1)
break
# Strip possible image extension.
i = strlen (arc1)
if (i > n && substr (arc1, i-n+1, i) == imtype)
arc1 = substr (arc1, 1, i-n)
# Set extraction output and aperture reference depending on whether
# the arcs are to be rextracted using recentered or retraced object
# apertures.
arc2 = spec // arc1
if (access (arc2//mstype))
imdelete (arc2//mstype, verify=no)
delete (database//"/id"//arc2//".ms*", verify = no, >& "dev$null")
# Extract and determine dispersion function if necessary.
if (!access (arc2//mstype)) {
if (!batch)
print ("Extract and reidentify arc spectrum ", arc1)
print ("Extract and reidentify arc spectrum ", arc1, >> logfile)
apslitproc (arc1, output=arc2//".ms", references=spec,
background="none", clean=no, weights="none",
verbose=verbose1)
delete (database//"/id"//arc2//".ms*", verify = no,
>& "dev$null")
reidentify (arcref1//".ms", arc2//".ms", interactive=reid,
section="middle line", shift=0., step=1, nsum=1,
cradius=sparams.cradius, threshold=sparams.threshold,
nlost=100, refit=sparams.refit, trace=no, override=no,
newaps=yes, addfeatures=sparams.addfeatures,
coordlist=sparams.coordlist, match=sparams.match,
maxfeatures=50, minsep=2., database=database,
plotfile=plotfile, logfiles=logfile, verbose=verbose1)
# If not reextracting arcs based on object apertures
# then save the extracted arc to avoid doing it again.
if (arc1 != arc2)
imdelete (arc2//".ms", verify=no)
}
# Set the REFSPEC parameters for multispec spectrum.
if (nscan() == 1)
hedit (spec//".ms", "refspec"//j, arc2//".ms", add=yes,
verify=no, show=no, update=yes)
else
hedit (spec//".ms", "refspec"//j, arc2//".ms "//str1,
add=yes, verify=no, show=no, update=yes)
}
end
|