aboutsummaryrefslogtreecommitdiffstats
path: root/astro/xmm/sky2det_manual.sh
diff options
context:
space:
mode:
Diffstat (limited to 'astro/xmm/sky2det_manual.sh')
-rw-r--r--astro/xmm/sky2det_manual.sh80
1 files changed, 80 insertions, 0 deletions
diff --git a/astro/xmm/sky2det_manual.sh b/astro/xmm/sky2det_manual.sh
new file mode 100644
index 0000000..589a0b2
--- /dev/null
+++ b/astro/xmm/sky2det_manual.sh
@@ -0,0 +1,80 @@
+#!/bin/sh
+#
+# Convert from SKY(X,Y) coordinate to (DETX,DETY) coordinate for XMM.
+# The required conversion coefficients are extracted from input FITS header.
+#
+#
+# Weitian LI
+# Created: 2015-11-09
+# Updated: 2015-11-09
+#
+
+case "$1" in
+ -[hH]*|--[hH]*)
+ printf "usage:\n"
+ printf " `basename $0` evt=<evt> x=<sky_x> y=<sky_y>\n"
+ exit 1
+ ;;
+esac
+
+## functions {{{
+# process commandline arguments
+# cmdline arg format: `KEY=VALUE'
+getopt_keyval() {
+ until [ -z "$1" ]
+ do
+ key=${1%%=*} # extract key
+ val=${1#*=} # extract value
+ keyval="${key}=\"${val}\""
+ echo "## getopt: eval '${keyval}'"
+ eval ${keyval}
+ shift # shift, process next one
+ done
+}
+
+sky2wcs() {
+ sky_val=$1
+ crpx=$2
+ crvl=$3
+ cdlt=$4
+ wcs_val=`python -c "import math; print(${crvl} + math.tan(${cdlt} * (${sky_val} - (${crpx}))))"`
+ echo ${wcs_val}
+}
+## functions }}}
+
+# process cmdline args using `getopt_keyval'
+getopt_keyval "$@"
+
+[ ! -e "${evt}" ] && echo "ERROR: ${evt} not exist" && exit 11
+
+# Get the WCS conversion coefficients
+fkeypar "${evt}" REFXCTYP
+REFXCTYP=`pget fkeypar value`
+fkeypar "${evt}" REFXCRPX
+REFXCRPX=`pget fkeypar value`
+fkeypar "${evt}" REFXCRVL
+REFXCRVL=`pget fkeypar value`
+fkeypar "${evt}" REFXCDLT
+REFXCDLT=`pget fkeypar value`
+fkeypar "${evt}" REFYCTYP
+REFYCTYP=`pget fkeypar value`
+fkeypar "${evt}" REFYCRPX
+REFYCRPX=`pget fkeypar value`
+fkeypar "${evt}" REFYCRVL
+REFYCRVL=`pget fkeypar value`
+fkeypar "${evt}" REFYCDLT
+REFYCDLT=`pget fkeypar value`
+echo "(X,Y) => (RA,DEC)"
+echo " RA = ${REFXCRVL} + TAN[ (${REFXCDLT}) * (X - (${REFXCRPX})) ]"
+echo " DEC = ${REFYCRVL} + TAN[ (${REFYCDLT}) * (Y - (${REFYCRPX})) ]"
+
+RA=`sky2wcs ${x} ${REFXCRPX} ${REFXCRVL} ${REFXCDLT}`
+DEC=`sky2wcs ${y} ${REFYCRPX} ${REFYCRVL} ${REFYCDLT}`
+echo "sky(${x},${y}) => wcs(${RA},${DEC})"
+
+DETXY=`esky2det datastyle=user ra=${RA} dec=${DEC} outunit=det calinfostyle=set calinfoset="${evt}" | \
+ grep -A 1 -E '^#\s+detX\s+detY' | tail -n 1`
+detx=`echo ${DETXY} | awk '{ print $1 }'`
+dety=`echo ${DETXY} | awk '{ print $2 }'`
+echo "(RA,DEC) => DETXY(${detx},${dety})"
+