STScI Logo


include	"sensfunc.h"

# T_SENSFUNC -- Determine sensitivities and residual extinctions.
# The input is a file of standard star produced by the task STANDARD.
# The input data is read into an array of structures, one per standard
# star.  The stars common to the aperture to be fit are flagged
# and then the data is passed to the main routine SF_SENSFUNC.
# This routine determines a sensitivity curve for the aperture which
# is output by the procedure as well as some optional statistical
# information.  It returns an optional residual extinction curve
# for each aperture.  The residual extinctions curves are finally combined
# and output as a revised extinction table.

procedure t_sensfunc ()

pointer	standards		# Input standard star data filename
pointer	sensitivity		# Output root sensitivity function imagename
pointer	aps			# Aperture list
bool	ignoreaps		# Ignore apertures?	
pointer	logfile			# Output log for statistics
pointer	function		# Sensitivity function type
int	order			# Order of sensitivity function
int	interactive		# Interactive?

int	i, j, aperture, nstds, napertures, nextn, clgeti()
pointer	sp, str, stds, apertures, wextn, extn, ecvs, gp
bool	clgetb()
pointer	rng_open()
errchk	sf_sensfunc

	call smark (sp)
	call salloc (standards, SZ_FNAME, TY_CHAR)
	call salloc (sensitivity, SZ_FNAME, TY_CHAR) 
	call salloc (str, SZ_LINE, TY_CHAR) 
	call salloc (logfile, SZ_FNAME, TY_CHAR) 
	call salloc (function, SZ_FNAME, TY_CHAR)

	# CL parameter input.
	call clgstr ("standards", Memc[standards], SZ_FNAME)
	call clgstr ("sensitivity", Memc[sensitivity], SZ_FNAME) 
	call clgstr ("apertures", Memc[str], SZ_LINE)
	ignoreaps = clgetb ("ignoreaps")
	call clgstr ("logfile", Memc[logfile], SZ_FNAME) 
	call clgstr ("function", Memc[function], SZ_FNAME)
	order = clgeti ("order")
	if (clgetb ("interactive"))
	    interactive = 2
	    interactive = 3

	# Decode aperture list.
	iferr (aps = rng_open (Memc[str], INDEF, INDEF, INDEF))
	    call error (0, "Bad aperture list")

	# Get the standard star data, the aperture array, and the
	# extinction table, and allocate and initialize an array of
	# residual extinction curves for each aperture.

	call sf_stds (Memc[standards], aps, ignoreaps, stds, nstds)
	if (nstds == 0) {
	    call sfree (sp)
	call sf_apertures (Memi[stds], nstds, apertures, napertures)
	call ext_load (wextn, extn, nextn)
	call salloc (ecvs, napertures, TY_INT)
	call amovki (NULL, Memi[ecvs], napertures)

	# For each aperture flag standard stars to be used and call sf_sensfunc.
	gp = NULL
	do j = 1, napertures {
	    aperture = Memi[apertures+j-1]
	    do i = 1, nstds - 2
		if (STD_BEAM(Memi[stds+i-1]) == aperture)
		    STD_FLAG(Memi[stds+i-1]) = SF_INCLUDE
		    STD_FLAG(Memi[stds+i-1]) = SF_EXCLUDE
	    call sf_sensfunc (gp, Memi[stds], nstds, Memr[wextn], Memr[extn],
		nextn, Memc[sensitivity], Memc[logfile], Memi[ecvs+j-1],
		Memc[function], order, ignoreaps, interactive)
	call sf_gfree (gp)

	# Output a revised extinction table by combining the residual
	# extinction curves for the apertures.  The table name is obtained
	# by this proceudre.

	call sf_eout (Memr[wextn], Memr[extn], nextn, Memi[ecvs], napertures)

	# Finish up.
	call sf_free (stds, nstds, apertures, napertures)
	call ext_free (wextn, extn)
	do j = 1, napertures
	    call cvfree (Memi[ecvs+j-1])
	call rng_close (aps)
	call sfree (sp)

Source Code · Search Form · STSDAS