#!/bin/sh unalias -a export LC_COLLATE=C ##################################################################### ## generate 'radius spectra profile' regions ## and 'radius surface profile' regions ## ## ChangeLogs: ## v1, 2013/10/12, LIweitiaNux ## split from 'ciao_expcorr_sbp_v3.sh' ##################################################################### SCRIPT_PATH=`readlink -f $0` SCRIPT_DIR=`dirname ${SCRIPT_PATH}` XCENTROID_SCRIPT="chandra_xcentroid.sh" GEN_SPCREG_SCRIPT="chandra_genspcreg.sh" GEN_SBPREG_SCRIPT="chandra_gensbpreg.sh" ## about, used in `usage' {{{ VERSION="v1" UPDATE="2013-10-12" ## about }}} ## err 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 ERR_ENG=42 ERR_CIAO=100 ## error code }}} ## usage {{{ case "$1" in -[hH]*|--[hH]*) printf "usage:\n" printf " `basename $0` evt= reg_in= bkgd= ds9=\n" printf "\nversion:\n" printf "${VERSION}, ${UPDATE}\n" exit ${ERR_USG} ;; esac ## usage }}} ## link needed files {{{ BKGD_FILE=`ls ../bkg/bkgcorr_bl*.pi 2> /dev/null | head -n 1` if [ -r "${BKGD_FILE}" ]; then ln -svf ${BKGD_FILE} . fi ASOL_FILE=`ls ../pcad*_asol?.fits 2> /dev/null` if [ -r "${ASOL_FILE}" ]; then ln -svf ${ASOL_FILE} . fi CELL_REG_FILE=`ls ../evt/celld*.reg 2> /dev/null | grep -v 'orig'` if [ -r "${CELL_REG_FILE}" ]; then ln -svf ${CELL_REG_FILE} . fi # }}} ## default parameters {{{ ## clean evt2 file DFT_EVT=`ls evt2*_clean.fits 2> /dev/null` ## the repro dir DFT_BASEDIR=".." # default `asol file' ASOL="`ls pcadf*_asol1.fits 2> /dev/null | head -n 1`" ## energy range # format: `E_START:E_END:E_WIDTH' DFT_ENERGY=700:7000:100 E_START=`echo ${DFT_ENERGY} | awk -F':' '{ print $1 }'` E_END=`echo ${DFT_ENERGY} | awk -F':' '{ print $2 }'` ## log file DFT_LOGFILE="genreg_`date '+%Y%m%d'`.log" ## background spectra DFT_BKGD=`ls bkgcorr_bl*.pi | head -n 1` ## default parameters }}} ## functions {{{ 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 }}} ## check ciao init and set path to solve conflit 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" ## check ciao&heasoft}}} ## parameters {{{ getopt_keyval "$@" ##log file LOGFILE="not_exist" ##check evt file if [ -r "${evt}" ]; then EVT=${evt} elif [ -r "${DFT_EVT}" ]; then EVT=${DFT_EVT} else read -p "clean evt2 file: " EVT if [ ! -r "${EVT}" ]; then printf "ERROR: cannot access given \`${EVT}' evt file\n" exit ${ERR_EVT} fi fi ##check ori sbp region if [ -r "${reg_in}" ]; then REG_IN="${reg_in}" else read -p "input region file: " REG_IN if [ ! -r "${REG_IN}" ]; then printf "ERROR: cannot access given \`${REG_IN}' evt file\n" exit ${ERR_REG} fi fi # check give basedir if [ -d "${basedir}" ]; then BASEDIR=${basedir} elif [ -d "${DFT_BASEDIR}" ]; then BASEDIR=${DFT_BASEDIR} else read -p "> basedir (contains asol files): " BASEDIR if [ ! -d "${BASEDIR}" ]; then printf "ERROR: given \`${BASEDIR}' NOT a directory\n" exit ${ERR_DIR} fi fi # remove the trailing '/' BASEDIR=`echo ${BASEDIR} | sed 's/\/*$//'` #background spectrum if [ -r "${bkgd}" ] ;then BKGD=${bkgd} elif [ -r "${DFT_BKGD}" ] ; then BKGD="${DFT_BKGD}" #ln -svf ${DFT_BKGD} . else read -p ">background spectrum file: " BKGD if [ ! -d ${BKGD} ] ; then printf "ERROR on background spectrum file" exit ${ERR_BKG} fi fi ## ds9: flag to determine whether to use ds9 check centroid and regions if [ ! -z "${ds9}" ]; then case "${ds9}" in [nN][oO]|[fF]*) F_DS9="NO" ;; *) F_DS9="YES" ;; esac else F_DS9="YES" fi ## parameters }}} ## determine ACIS type {{{ # consistent with `ciao_procevt' 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" CCD="0:3" NEW_DETNAM="ACIS-0123" ROOTNAME="c0-3_e${E_START}-${E_END}" 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" CCD="7" NEW_DETNAM="ACIS-7" ROOTNAME="c7_e${E_START}-${E_END}" else printf "ERROR: unknown detector type: ${DETNAM}\n" exit ${ERR_DET} fi ## ACIS type }}} ## filter by energy band printf "filter out events in energy band: \`${E_START}:${E_END}' ...\n" EVT_E="evt2_${ROOTNAME}.fits" if [ ! -r "${EVT_E}" ]; then punlearn dmcopy dmcopy infile="${EVT}[energy=${E_START}:${E_END}]" outfile="${EVT_E}" clobber=yes fi printf "======== X-RAY CENTROID =======\n" CMD="${SCRIPT_DIR}/${XCENTROID_SCRIPT} evt=${EVT} reg=${REG_IN} conv=yes 2>&1 | tee xcentroid.dat" printf "CMD: $CMD\n" ${SCRIPT_DIR}/${XCENTROID_SCRIPT} evt=${EVT} reg=${REG_IN} conv=yes 2>&1 | tee xcentroid.dat X=`grep '(X,Y)' xcentroid.dat | tr -d ' XY():' | awk -F',' '{ print $2 }'` Y=`grep '(X,Y)' xcentroid.dat | tr -d ' XY():' | awk -F',' '{ print $3 }'` CNTRD_WCS_REG="centroid_wcs.reg" CNTRD_PHY_REG="centroid_phy.reg" printf "## X centroid: ($X,$Y)\n" if [ "${F_DS9}" = "YES" ]; then printf "check the X centroid ...\n" ds9 ${EVT_E} -regions ${CNTRD_PHY_REG} -cmap sls -bin factor 4 fi X0=$X Y0=$Y X=`grep -i 'point' ${CNTRD_PHY_REG} | head -n 1 | tr -d 'a-zA-Z() ' | awk -F',' '{ print $1 }'` Y=`grep -i 'point' ${CNTRD_PHY_REG} | head -n 1 | tr -d 'a-zA-Z() ' | awk -F',' '{ print $2 }'` if [ "x${X}" != "x${X0}" ] || [ "x${Y}" != "x${Y0}" ]; then printf "## X CENTROID CHANGED -> ($X,$Y)\n" # update ${CNTRD_WCS_REG} printf "update ${CNTRD_WCS_REG} ...\n" rm -f ${CNTRD_WCS_REG} punlearn dmcoords dmcoords infile="${EVT}" asolfile="${ASOL}" option=sky x=${X} y=${Y} RA=`pget dmcoords ra` DEC=`pget dmcoords dec` echo "point(${RA},${DEC})" > ${CNTRD_WCS_REG} fi printf "======== X-RAY CENTROID FINISHED =======\n\n" SPC_REG=rspec.reg SBP_REG=sbprofile.reg printf "======== GENERATE SBPROFILE REGIONS =======\n" CMD="${SCRIPT_DIR}/${GEN_SBPREG_SCRIPT} ${EVT} ${EVT_E} ${X} ${Y} ${BKGD} ${SBP_REG}" printf "CMD: ${CMD}\n" ${SCRIPT_DIR}/${GEN_SBPREG_SCRIPT} ${EVT} ${EVT_E} ${X} ${Y} ${BKGD} ${SBP_REG} if [ "${F_DS9}" = "YES" ]; then printf "check SBP regions ...\n" ds9 ${EVT_E} -regions ${SBP_REG} -cmap sls -bin factor 4 fi printf "======== GENERATE SBPROFILE REGIONS FINISHED =======\n\n" printf "======== GENERATE SPECTRUM REGIONS =======\n" CMD="${SCRIPT_DIR}/${GEN_SPCREG_SCRIPT} ${EVT} ${EVT_E} ${BKGD} ${X} ${Y} ${SPC_REG}" printf "CMD: ${CMD}\n" ${SCRIPT_DIR}/${GEN_SPCREG_SCRIPT} ${EVT} ${EVT_E} ${BKGD} ${X} ${Y} ${SPC_REG} if [ "${F_DS9}" = "YES" ]; then printf "check SPC regions ...\n" ds9 ${EVT_E} -regions ${SPC_REG} -cmap sls -bin factor 4 fi printf "======== GENERATE SPECTRUM REGIONS FINISHED =======\n\n" exit 0