diff options
author | Joseph Hunkeler <jhunkeler@gmail.com> | 2015-07-08 20:46:52 -0400 |
---|---|---|
committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2015-07-08 20:46:52 -0400 |
commit | fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4 (patch) | |
tree | bdda434976bc09c864f2e4fa6f16ba1952b1e555 /noao/onedspec/sensfunc/t_sensfunc.x | |
download | iraf-linux-fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4.tar.gz |
Initial commit
Diffstat (limited to 'noao/onedspec/sensfunc/t_sensfunc.x')
-rw-r--r-- | noao/onedspec/sensfunc/t_sensfunc.x | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/noao/onedspec/sensfunc/t_sensfunc.x b/noao/onedspec/sensfunc/t_sensfunc.x new file mode 100644 index 00000000..82f18678 --- /dev/null +++ b/noao/onedspec/sensfunc/t_sensfunc.x @@ -0,0 +1,99 @@ +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 + +begin + 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 + else + 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) + return + } + 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 + else + 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) +end |