diff options
author | Aaron LI <aaronly.me@outlook.com> | 2017-02-20 21:18:58 +0800 |
---|---|---|
committer | Aaron LI <aaronly.me@outlook.com> | 2017-02-20 21:18:58 +0800 |
commit | 94cc6537335556c9a2d3127164637b79e8d1a45b (patch) | |
tree | fdc95cf9dc75fe96576554a479cd170c34b5b9f0 /scripts | |
parent | 2b77021c11ef3ca89575aec1092f1487fa5a32b0 (diff) | |
download | chandra-acis-analysis-94cc6537335556c9a2d3127164637b79e8d1a45b.tar.bz2 |
Remove 'chandra_xcentroid.sh' (replaced by calc_centroid.py)
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/chandra_xcentroid.sh | 332 |
1 files changed, 0 insertions, 332 deletions
diff --git a/scripts/chandra_xcentroid.sh b/scripts/chandra_xcentroid.sh deleted file mode 100755 index 856a863..0000000 --- a/scripts/chandra_xcentroid.sh +++ /dev/null @@ -1,332 +0,0 @@ -#!/bin/sh -# -########################################################### -## get the coord of the X-ray centroid in given evt file ## -## 1) given `evt_clean' file ## -## 2) `aconvolve' and then `dmstat' ## -## 3) `dmcoords' convert `sky x, y' to `ra, dec' ## -## ## -## NOTES: ## -## support ACIS-I(chip: 0-3) and ACIS-S(chip: 7) ## -## determine by check `DETNAM' for chip number ## -## if `DETNAM' has `0123', then `ACIS-I' ## -## if `DETNAM' has `7', then `ACIS-S' ## -## ## -## Weitian LI <liweitianux@gmail.com> ## -## 2012/11/08 ## -########################################################### -## -VERSION="v3.2" -UPDATED="2017-02-06" -## -## ChangeLogs: -## v3.2, 2017-02-06, Aaron LI -## * Generate skyfov if no previous skyfov found -## v3.1, 2015-11-08, Aaron LI -## * Use previously generated skyfov instead to make a new one without asol -## v3.0, 2015/06/03, Aaron LI -## * Copy needed pfiles to current working directory, and -## set environment variable $PFILES to use these first. -## * Replace 'grep' with '\grep', 'ls' with '\ls' -## * Removed section of 'dmstat.par' deletion -## v2.1, 2013/10/12, Weitian LI -## add support for extract center coordinates from 'point' and 'circle' regs -## v2.0, 2013/01/22, Weitian LI -## aconvolve switch -## add iterations for better accuracy -## v1.1, 2012/11/08, Weitian LI -## get x-ray peak coord from given region file -## - -## error code {{{ -ERR_USG=1 -ERR_DIR=11 -ERR_EVT=12 -ERR_BKG=13 -ERR_REG=14 -ERR_ASOL=21 -ERR_BPIX=22 -ERR_PBK=23 -ERR_MSK=24 -ERR_BKGTY=31 -ERR_SPEC=32 -ERR_DET=41 -## error code }}} - -## usage, help {{{ -case "$1" in - -[hH]*|--[hH]*) - printf "usage:\n" - printf " `basename $0` evt=<evt_cl> reg=<reg> [ asol=<asol> chip=<chip> ] [ conv=yes|No ]\n" - printf "\nversion:\n" - printf "${VERSION}, ${UPDATED}\n" - exit ${ERR_USG} - ;; -esac -## usage, help }}} - -## check ciao init & solve confilt with heasoft {{{ -if [ -z "${ASCDS_INSTALL}" ]; then - printf "ERROR: CIAO NOT initialized\n" - exit ${ERR_CIAO} -fi - -## XXX: heasoft's `pget' etc. tools conflict with some CIAO tools -printf "set \$PATH to avoid conflicts between HEAsoft and CIAO\n" -export PATH="${ASCDS_BIN}:${ASCDS_CONTRIB}:${PATH}" -printf "## PATH: ${PATH}\n" - -## ciao & heasoft }}} - -## default parameters {{{ -# critical offset (in pixel) -OFFSET_CRIC=10 -# energy range: 700-2000 eV -E_RANGE="700:2000" -# default `evt clean file' -DFT_EVT="`\ls evt*clean.fits *clean*evt*.fits 2> /dev/null | head -n 1`" -# default `asol file' -DFT_ASOL="`\ls pcadf*_asol1.fits 2> /dev/null | head -n 1`" -# default region file -DFT_REG="`\ls sbprofile.reg rspec.reg 2> /dev/null | head -n 1`" -# iteration step, ~150 arcsec, ~50 arcsec -R_STP1=300 -R_STP2=100 -## default parameters }}} - -## 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 -} -## functions }}} - -## parameters {{{ -# process cmdline args using `getopt_keyval' -getopt_keyval "$@" - -## check given parameters -# check evt file -if [ -r "${evt}" ]; then - EVT=${evt} -elif [ -r "${DFT_EVT}" ]; then - EVT=${DFT_EVT} -else - read -p "evt clean file: " EVT - if ! [ -r "${EVT}" ]; then - printf "ERROR: cannot access given \`${EVT}' evt file\n" - exit ${ERR_EVT} - fi -fi -printf "## use evt file: \`${EVT}'\n" - -# asol -if [ ! -z "${asol}" ]; then - ASOL=${asol} -elif [ -r "${DFT_ASOL}" ]; then - ASOL=${DFT_ASOL} -else - # read -p "asol file: " ASOL - # if ! [ -r "${ASOL}" ]; then - # printf "ERROR: cannot access given \`${ASOL}' asol file\n" - # exit ${ERR_ASOL} - # fi - ASOL="NO" - printf "## asol file not supplied !\n" -fi -printf "## use asol file: \`${ASOL}'\n" - -# region file (optional) -if [ -r "${reg}" ]; then - REG=${reg} -elif [ -r "${DFT_REG}" ]; then - REG=${DFT_REG} -else - read -p "region file: " REG - if [ ! -r "${REG}" ]; then - printf "ERROR: cannot access given \`${REG}' region file\n" - exit ${ERR_REG} - fi -fi -printf "## use reg file: \`${REG}'\n" -# get centroid from the regionnn file -CNTRD_X2=`\grep -iE '(point|circle|pie|annulus)' ${REG} | head -n 1 | tr -d 'a-zA-Z()' | awk -F',' '{ print $1 }'` -CNTRD_Y2=`\grep -iE '(point|circle|pie|annulus)' ${REG} | head -n 1 | tr -d 'a-zA-Z()' | awk -F',' '{ print $2 }'` -printf "## center from given regfile: (${CNTRD_X2},${CNTRD_Y2})\n" - - -# convolve (optional) -if [ -z "${conv}" ]; then - CONV="NO" -else - case "${conv}" in - [yY]*) - CONV="YES" - printf "## apply \`aconvolve' !\n" - ;; - *) - CONV="NO" - ;; - esac -fi - -# determine chip -if [ ! -z "${chip}" ]; then - CHIP="${chip}" - printf "## use chip: \`${CHIP}'\n" -else - # determine chip by ACIS type - punlearn dmkeypar - DETNAM=`dmkeypar ${EVT} DETNAM echo=yes` - if echo ${DETNAM} | \grep -q 'ACIS-0123'; then - printf "## \`DETNAM' (${DETNAM}) has chips 0123\n" - printf "## ACIS-I\n" - ACIS_TYPE="ACIS-I" - CHIP="0:3" - elif echo ${DETNAM} | \grep -q 'ACIS-[0-6]*7'; then - printf "## \`DETNAM' (${DETNAM}) has chip 7\n" - printf "## ACIS-S\n" - ACIS_TYPE="ACIS-S" - CHIP="7" - else - printf "ERROR: unknown detector type: ${DETNAM}\n" - exit ${ERR_DET} - fi -fi -## parameters }}} - -## prepare parameter files (pfiles) {{{ -CIAO_TOOLS="dmkeypar dmcopy dmstat dmcoords aconvolve skyfov" - -# Copy necessary pfiles for localized usage -for tool in ${CIAO_TOOLS}; do - pfile=`paccess ${tool}` - [ -n "${pfile}" ] && punlearn ${tool} && cp -Lvf ${pfile} . -done - -# Modify environment variable 'PFILES' to use local pfiles first -export PFILES="./:${PFILES}" -## pfiles }}} - -## main part {{{ -# Try to use previously generated `skyfov' -SKYFOV=`\ls *skyfov*.fits 2>/dev/null | head -n 1` -if [ -z "${SKYFOV}" ]; then - # Generate skyfov - SKYFOV="skyfov.fits" - punlearn skyfov - skyfov infile="${EVT}" outfile="${SKYFOV}" aspect="${ASOL}" - printf "Generated skyfov: ${SKYFOV}\n" -else - printf "Use previously generated skyfov: ${SKYFOV}\n" -fi - -# generate image -IMG="img_c`echo ${CHIP} | tr ':' '-'`_e`echo ${E_RANGE} | tr ':' '-'`.fits" -printf "generate image: \`${IMG}' ...\n" -punlearn dmcopy -dmcopy infile="${EVT}[sky=region(${SKYFOV}[ccd_id=${CHIP}])][energy=${E_RANGE}][bin sky=::1]" outfile="${IMG}" clobber=yes - -# aconvolve -if [ "${CONV}" = "YES" ]; then - IMG_ACONV="${IMG%.fits}_aconv.fits" - KERNELSPEC="lib:gaus(2,5,1,10,10)" - METHOD="fft" - printf "\`aconvolve' to smooth img: \`${IMG_ACONV}' ...\n" - printf "## aconvolve: kernelspec=\"${KERNELSPEC}\" method=\"${METHOD}\"\n" - punlearn aconvolve - aconvolve infile="${IMG}" outfile="${IMG_ACONV}" kernelspec="${KERNELSPEC}" method="${METHOD}" clobber=yes -else - IMG_ACONV=${IMG} -fi - -# tmp analysis region -TMP_REG="_tmp_centroid.reg" -[ -r "${TMP_REG}" ] && rm -f ${TMP_REG} -echo "circle(${CNTRD_X2},${CNTRD_Y2},${R_STP1})" > ${TMP_REG} - -# dmstat to find the centroid -printf "\`dmstat' to find the centroid ...\n" -# step1 -printf " region size ${R_STP1}pix: " -for i in `seq 1 5`; do - printf "#$i ... " - punlearn dmstat - dmstat infile="${IMG_ACONV}[sky=region(${TMP_REG})]" centroid=yes verbose=0 - CNTRD_X=`pget dmstat out_cntrd_phys | cut -d',' -f1` - CNTRD_Y=`pget dmstat out_cntrd_phys | cut -d',' -f2` - # printf "\n${CNTRD_X},${CNTRD_Y}\n" - echo "circle(${CNTRD_X},${CNTRD_Y},${R_STP1})" > ${TMP_REG} -done -printf " done\n" - echo "circle(${CNTRD_X},${CNTRD_Y},${R_STP2})" >${TMP_REG} -# step2 -printf " region size ${R_STP2}pix: " -for i in `seq 1 5`; do - printf "#$i ... " - punlearn dmstat - dmstat infile="${IMG_ACONV}[sky=region(${TMP_REG})]" centroid=yes verbose=0 - CNTRD_X=`pget dmstat out_cntrd_phys | cut -d',' -f1` - CNTRD_Y=`pget dmstat out_cntrd_phys | cut -d',' -f2` - # printf "\n${CNTRD_X},${CNTRD_Y}\n" - echo "circle(${CNTRD_X},${CNTRD_Y},${R_STP2})" > ${TMP_REG} -done -printf " done\n" - -# calc offset vs. given -OFFSET=`echo "scale=5; sqrt((${CNTRD_X}-${CNTRD_X2})^2 + (${CNTRD_Y}-${CNTRD_Y2})^2)" | bc -l` - -# output -CNTRD_PHY_REG="centroid_phy.reg" -[ -e "${CNTRD_PHY_REG}" ] && mv -f ${CNTRD_PHY_REG} ${CNTRD_PHY_REG}_bak -echo "point(${CNTRD_X},${CNTRD_Y})" > ${CNTRD_PHY_REG} - -# dmcoords to convert (x,y) to (ra,dec) -if [ -r "${ASOL}" ]; then - printf "\`dmcoords' to convert (x,y) to (ra,dec) ...\n" - punlearn dmcoords - dmcoords infile="${EVT}" asolfile="${ASOL}" option=sky x=${CNTRD_X} y=${CNTRD_Y} - CNTRD_RA=`pget dmcoords ra` - CNTRD_DEC=`pget dmcoords dec` - CNTRD_WCS_REG="centroid_wcs.reg" - [ -e "${CNTRD_WCS_REG}" ] && mv -f ${CNTRD_WCS_REG} ${CNTRD_WCS_REG}_bak - echo "point(${CNTRD_RA},${CNTRD_DEC})" > ${CNTRD_WCS_REG} - ## from region - punlearn dmcoords - dmcoords infile="${EVT}" asolfile="${ASOL}" option=sky x=${CNTRD_X2} y=${CNTRD_Y2} - CNTRD_RA2=`pget dmcoords ra` - CNTRD_DEC2=`pget dmcoords dec` -fi - -printf "\n" -printf "++++++++++++++++++++++++++++++++++++++++++++\n" -printf "X-ray centroid coordinates:\n" -printf "via dmstat:\n" -printf " (X,Y): (${CNTRD_X},${CNTRD_Y})\n" -if [ -r "${ASOL}" ]; then - printf " (RA,DEC): (${CNTRD_RA},${CNTRD_DEC})\n" -fi -printf "via region:\n" -printf " (X2,Y2): (${CNTRD_X2},${CNTRD_Y2})\n" -if [ -r "${ASOL}" ]; then - printf " (RA2,DEC2): (${CNTRD_RA2},${CNTRD_DEC2})\n" -fi -printf "offset (unit pixel):\n" -printf " offset: ${OFFSET}\n" -if [ `echo "${OFFSET} > ${OFFSET_CRIC}" | bc -l` -eq 1 ]; then - printf "*****************************\n" - printf "*** WARNING: large offset ***\n" -fi -printf "++++++++++++++++++++++++++++++++++++++++++++\n" -## main }}} - -exit 0 |