aboutsummaryrefslogtreecommitdiff
path: root/pkg/images/immatch/src/linmatch/rglpars.x
blob: d5f66320dc595d56abc5935d2e85891050e22a95 (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
include <lexnum.h>
include "linmatch.h"


# RG_GLPARS -- Fetch the algorithm parameters required by the intensity scaling
# task.

procedure rg_glpars (ls)

pointer ls              #I pointer to iscale structure

int	ip, nchars
pointer sp, str1, str2
int     clgeti(), nscan(), lexnum()
real    clgetr()

begin
        # Allocate working space.
        call smark (sp)
        call salloc (str1, SZ_LINE, TY_CHAR)
        call salloc (str2, SZ_LINE, TY_CHAR)

        # Initialize the linscale structure.
        call rg_linit (ls, clgeti ("maxnregions"))

	# Get the x and y shifts.
	call rg_lsetr (ls, XSHIFT, clgetr("xshift"))
	call rg_lsetr (ls, YSHIFT, clgetr("yshift"))

        # Get the scaling algorithm parameters.
        call clgstr ("scaling", Memc[str1], SZ_LINE)
	call sscan (Memc[str1])
	    call gargwrd (Memc[str1], SZ_LINE)
	    call gargwrd (Memc[str2], SZ_LINE)
        call rg_lsets (ls, BSSTRING, Memc[str1])
	ip = 1
	if (nscan() == 2)
            call rg_lsets (ls, BZSTRING, Memc[str2])
	else if (lexnum(Memc[str1], ip, nchars) == LEX_NONNUM)
            call rg_lsets (ls, BZSTRING, Memc[str1])
	else
            call rg_lsets (ls, BZSTRING, "0.0")

        call rg_lseti (ls, DNX, clgeti ("dnx"))
        call rg_lseti (ls, DNY, clgeti ("dny"))
        call rg_lseti (ls, MAXITER, clgeti ("maxiter"))
        call rg_lsetr (ls, DATAMIN, clgetr ("datamin"))
        call rg_lsetr (ls, DATAMAX, clgetr ("datamax"))
        call rg_lseti (ls, NREJECT, clgeti ("nreject"))
        call rg_lsetr (ls, LOREJECT, clgetr ("loreject"))
        call rg_lsetr (ls, HIREJECT, clgetr ("hireject"))

        call clgstr ("gain", Memc[str1], SZ_LINE)
	call rg_lsets (ls, CCDGAIN, Memc[str1])
        call clgstr ("readnoise", Memc[str1], SZ_LINE)
	call rg_lsets (ls, CCDREAD, Memc[str1])

        call sfree (sp)
end


# RG_PLPARS -- Save the intensity scaling parameters in the .par file.

procedure rg_plpars (ls)

pointer	ls		# pointer to the linscale structure

pointer	sp, str1, str2, str
int	rg_lstati()
real	rg_lstatr()

begin
	# Allocate working space.
	call smark (sp)
	call salloc (str1, SZ_LINE, TY_CHAR)
	call salloc (str2, SZ_LINE, TY_CHAR)
	call salloc (str, SZ_LINE, TY_CHAR)

	# Set the x and y shifts parameters.
	call clputr ("xshift", rg_lstatr (ls, XSHIFT))
	call clputr ("yshift", rg_lstatr (ls, YSHIFT))

	# Scaling algorithm parameters.
	call rg_lstats (ls, BSSTRING, Memc[str1], SZ_LINE)
	call rg_lstats (ls, BZSTRING, Memc[str2], SZ_LINE)
	call sprintf (Memc[str], SZ_FNAME, "%s %s")
	    call pargstr (Memc[str1])
	    call pargstr (Memc[str2])
	call clpstr ("scaling", Memc[str])
	call clputi ("dnx", rg_lstati (ls, DNX))
	call clputi ("dny", rg_lstati (ls, DNY))
	call clputi ("maxiter", rg_lstati (ls, MAXITER))
	call clputr ("datamin", rg_lstatr (ls, DATAMIN))
	call clputr ("datamax", rg_lstatr (ls, DATAMAX))
	call clputi ("nreject", rg_lstati (ls, NREJECT))
	call clputr ("loreject", rg_lstatr (ls, LOREJECT))
	call clputr ("hireject", rg_lstatr (ls, HIREJECT))
	call rg_lstats (ls, CCDGAIN, Memc[str], SZ_FNAME)
	call clpstr ("gain", Memc[str])
	call rg_lstats (ls, CCDREAD, Memc[str], SZ_FNAME)
	call clpstr ("readnoise", Memc[str])

	call sfree (sp)
end