aboutsummaryrefslogtreecommitdiff
path: root/noao/rv/rvidlines/idlog.x
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2015-07-08 20:46:52 -0400
committerJoseph Hunkeler <jhunkeler@gmail.com>2015-07-08 20:46:52 -0400
commitfa080de7afc95aa1c19a6e6fc0e0708ced2eadc4 (patch)
treebdda434976bc09c864f2e4fa6f16ba1952b1e555 /noao/rv/rvidlines/idlog.x
downloadiraf-linux-fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4.tar.gz
Initial commit
Diffstat (limited to 'noao/rv/rvidlines/idlog.x')
-rw-r--r--noao/rv/rvidlines/idlog.x190
1 files changed, 190 insertions, 0 deletions
diff --git a/noao/rv/rvidlines/idlog.x b/noao/rv/rvidlines/idlog.x
new file mode 100644
index 00000000..58645fc1
--- /dev/null
+++ b/noao/rv/rvidlines/idlog.x
@@ -0,0 +1,190 @@
+include <smw.h>
+include <time.h>
+include "identify.h"
+
+
+# ID_LOG -- Write log
+
+procedure id_log (id, file, logfd)
+
+pointer id # ID pointer
+char file[ARB] # Log file
+int logfd # Log fd
+
+char str[SZ_TIME]
+int i, fd, nrms
+double z, zrms, zerr, zhelio, resid, rms, v, verr, vhelio, hjd
+
+int open()
+double id_zshiftd(), id_zval()
+long clktime()
+errchk open, id_velocity, id_vhelio
+
+begin
+ if (ID_NFEATURES(id) == 0)
+ return
+
+ if (logfd == NULL)
+ fd = open (file, APPEND, TEXT_FILE)
+ else
+ fd = logfd
+
+ if (ID_TASK(id) == IDENTIFY) {
+
+ call cnvtime (clktime (0), str, SZ_TIME)
+ call fprintf (fd, "\n%s\n")
+ call pargstr (str)
+ call fprintf (fd, "Features identified in image %s%s: %s\n")
+ call pargstr (Memc[ID_IMAGE(id)])
+ call pargstr (Memc[ID_SECTION(id)])
+ call pargstr (TITLE(ID_SH(id)))
+
+ call fprintf (fd, " %8s %10s %10s %10s %5s %s\n")
+ call pargstr ("Pixel")
+ call pargstr ("Fit")
+ call pargstr ("User")
+ call pargstr ("Residual")
+ call pargstr ("Fwidth")
+ call pargstr ("Wt")
+ call pargstr ("Label")
+
+ rms = 0.
+ nrms = 0
+ do i = 1, ID_NFEATURES(id) {
+ call fprintf (fd,
+ "%2d %8.2f %10.8g %10.8g %10.4g %4f %s\n")
+ call pargi (i)
+ call pargd (PIX(id,i))
+ call pargd (FIT(id,i))
+ call pargd (USER(id,i))
+ if (IS_INDEFD (USER(id,i)))
+ call pargd (USER(id,i))
+ else {
+ resid = FIT(id,i) - USER(id,i)
+ call pargd (resid)
+ if (WTS(id,i) > 0.) {
+ rms = rms + resid ** 2
+ nrms = nrms + 1
+ }
+ }
+ call pargd (WTS(id,i))
+ if (Memi[ID_LABEL(id)+i-1] != NULL)
+ call pargstr (Memc[Memi[ID_LABEL(id)+i-1]])
+ else
+ call pargstr ("")
+ }
+
+ if (nrms > 1) {
+ call fprintf (fd, "RMS = %0.6g\n")
+ call pargd (sqrt (rms / nrms))
+ }
+
+ } else {
+ call id_velocity (id, NO)
+ z = ID_REDSHIFT(id)
+ zrms = ID_RMSRED(id)
+ zhelio = ID_ZHELIO(id)
+ v = ID_REDSHIFT(id) * VLIGHT
+ call id_vhelio (IM(ID_SH(id)), vhelio, hjd, fd)
+
+ call cnvtime (clktime (0), str, SZ_TIME)
+ call fprintf (fd, "\n%s\n")
+ call pargstr (str)
+ call fprintf (fd, "Features identified in image %s%s: %s\n")
+ call pargstr (Memc[ID_IMAGE(id)])
+ call pargstr (Memc[ID_SECTION(id)])
+ call pargstr (TITLE(ID_SH(id)))
+
+ call fprintf (fd, "%10s %10s %10s %10s %10s %5s %s\n")
+ call pargstr ("Measured")
+ call pargstr ("User")
+ call pargstr ("Residual")
+ call pargstr ("Velocity")
+ call pargstr ("Residual")
+ call pargstr ("Wt")
+ call pargstr ("Label")
+
+ rms = 0.
+ nrms = 0
+ do i = 1, ID_NFEATURES(id) {
+ call fprintf (fd,
+ "%10.8g %10.8g %10.4g %10.8g %10.4g %4f %s\n")
+ call pargd (id_zshiftd (id, FIT(id,i), 0))
+ if (IS_INDEFD (USER(id,i))) {
+ call pargd (INDEFD)
+ call pargd (INDEFD)
+ call pargd (INDEFD)
+ call pargd (INDEFD)
+ } else {
+ call pargd (USER(id,i))
+ resid = id_zshiftd (id, FIT(id,i), 0) - USER(id,i)
+ call pargd (resid)
+ if (WTS(id,i) > 0.) {
+ rms = rms + resid ** 2
+ nrms = nrms + 1
+ }
+ verr = id_zval (id, FIT(id,i), USER(id,i)) * VLIGHT
+ call pargd (verr + vhelio)
+ call pargd (verr - v)
+ }
+ call pargd (WTS(id,i))
+ if (Memi[ID_LABEL(id)+i-1] != NULL)
+ call pargstr (Memc[Memi[ID_LABEL(id)+i-1]])
+ else
+ call pargstr ("")
+ }
+
+ if (nrms > 1) {
+ call fprintf (fd, "Wavelength RMS = %0.6g\n")
+ call pargd (sqrt (rms / nrms))
+ call fprintf (fd, "Velocity RMS = %8.5g\n")
+ call pargd (zrms * VLIGHT)
+ }
+
+ zerr = zrms
+ if (nrms > 1)
+ zerr = zerr / sqrt (nrms - 1.)
+ v = z * VLIGHT
+ verr = zerr * VLIGHT
+
+ call fprintf (fd, "\n")
+ call fprintf (fd, "%s %3d : Zobs = %10.5g, ")
+ call pargstr (Memc[ID_IMAGE(id)])
+ call pargi (ID_AP(id,1))
+ call pargd (z)
+ call fprintf (fd, "Mean err = %10.5g, Lines = %3d\n")
+ call pargd (zerr)
+ call pargi (nrms)
+ call fprintf (fd, "%s %3d : Vobs = %8.5g km/s, ")
+ call pargstr (Memc[ID_IMAGE(id)])
+ call pargi (ID_AP(id,1))
+ call pargd (v)
+ call fprintf (fd, "Mean err = %8.5g km/s, Lines = %3d\n")
+ call pargd (verr)
+ call pargi (nrms)
+ if (zhelio != 0D0) {
+ call fprintf (fd, "%s %3d : Zhelio = %10.5g, ")
+ call pargstr (Memc[ID_IMAGE(id)])
+ call pargi (ID_AP(id,1))
+ call pargd (z + zhelio)
+ call fprintf (fd, "Mean err = %8.5g km/s, Lines = %3d\n")
+ call pargd (zerr)
+ call pargi (nrms)
+ call fprintf (fd, "%s %3d : Vhelio = %8.5g km/s, ")
+ call pargstr (Memc[ID_IMAGE(id)])
+ call pargi (ID_AP(id,1))
+ call pargd (v + vhelio)
+ call fprintf (fd, "Mean err = %8.5g km/s, Lines = %3d\n")
+ call pargd (verr)
+ call pargi (nrms)
+ call fprintf (fd, "%s %3d : HJD = %g\n")
+ call pargstr (Memc[ID_IMAGE(id)])
+ call pargi (ID_AP(id,1))
+ call pargd (hjd)
+ }
+ call fprintf (fd, "\n")
+ }
+
+ if (logfd == NULL)
+ call close (fd)
+end