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
|
include "refspectra.h"
# REFAVERAGE -- Assign reference spectrum by averageing reference list.
# In earlier version the reference apertures were always set to all
procedure refaverage (input, refs)
pointer input # List of input spectra
pointer refs # List of reference spectra
int ap
double sortval
real wt1, wt2
pointer sp, image, ref1, ref2, gval
bool refgref(), refginput()
int imtgetim(), imtlen()
begin
call smark (sp)
call salloc (image, SZ_FNAME, TY_CHAR)
call salloc (ref1, SZ_FNAME, TY_CHAR)
call salloc (ref2, SZ_FNAME, TY_CHAR)
# Get reference spectra to average.
switch (imtlen (refs)) {
case 0:
call error (0, "No reference spectra specified")
case 1:
ap = imtgetim (refs, Memc[ref1], SZ_FNAME)
call refnoextn (Memc[ref1])
if (!refgref (Memc[ref1], ap, sortval, gval)) {
call sfree (sp)
return
}
wt1 = 1.
wt2 = 0.
case 2:
ap = imtgetim (refs, Memc[ref1], SZ_FNAME)
ap = imtgetim (refs, Memc[ref2], SZ_FNAME)
call refnoextn (Memc[ref1])
call refnoextn (Memc[ref2])
if (!refgref (Memc[ref1], ap, sortval, gval)) {
call sfree (sp)
return
}
if (!refgref (Memc[ref2], ap, sortval, gval)) {
call sfree (sp)
return
}
wt1 = 0.5
wt2 = 0.5
default:
ap = imtgetim (refs, Memc[ref1], SZ_FNAME)
ap = imtgetim (refs, Memc[ref2], SZ_FNAME)
call refnoextn (Memc[ref1])
call refnoextn (Memc[ref2])
if (!refgref (Memc[ref1], ap, sortval, gval)) {
call sfree (sp)
return
}
if (!refgref (Memc[ref2], ap, sortval, gval)) {
call sfree (sp)
return
}
wt1 = 0.5
wt2 = 0.5
call eprintf ("WARNING: Averaging only first two reference spectra")
}
# Assign reference spectra to each input spectrum.
# Skip spectra which are not of the appropriate aperture
# or have been assigned previously (unless overriding).
while (imtgetim (input, Memc[image], SZ_FNAME) != EOF) {
call refnoextn (Memc[image])
if (!refginput (Memc[image], ap, sortval, gval))
next
call refspectra (Memc[image], Memc[ref1], wt1, Memc[ref2], wt2)
}
call sfree (sp)
end
|