diff options
Diffstat (limited to 'scripts')
| -rwxr-xr-x | scripts/analyze_path.sh | 2 | ||||
| -rwxr-xr-x | scripts/calc_lx_simple.sh | 61 | ||||
| -rwxr-xr-x | scripts/chandra_bkg_rescale.sh | 32 | ||||
| -rwxr-xr-x | scripts/chandra_ccdgap_rect.py | 6 | ||||
| -rwxr-xr-x | scripts/chandra_collect_data_v3.sh | 296 | ||||
| -rwxr-xr-x | scripts/chandra_gensbpreg.sh | 56 | ||||
| -rwxr-xr-x | scripts/chandra_genspcreg.sh | 70 | ||||
| -rwxr-xr-x | scripts/chandra_pb_flux.sh | 38 | ||||
| -rwxr-xr-x | scripts/chandra_update_xcentroid.sh | 64 | ||||
| -rwxr-xr-x | scripts/chandra_xcentroid.sh | 66 | ||||
| -rwxr-xr-x | scripts/chandra_xpeak_coord.sh | 52 | ||||
| -rwxr-xr-x | scripts/ciao_bkg_spectra.sh | 156 | ||||
| -rwxr-xr-x | scripts/ciao_blanksky.sh | 39 | ||||
| -rwxr-xr-x | scripts/ciao_calc_csb.sh | 81 | ||||
| -rwxr-xr-x | scripts/ciao_calc_ct.sh | 151 | ||||
| -rwxr-xr-x | scripts/ciao_calc_ct_csb.sh | 24 | ||||
| -rwxr-xr-x | scripts/ciao_check_offset.sh | 49 | ||||
| -rwxr-xr-x | scripts/ciao_deproj_spectra.sh | 31 | ||||
| -rwxr-xr-x | scripts/ciao_expcorr.sh | 102 | ||||
| -rwxr-xr-x | scripts/ciao_expcorr_sbp.sh | 28 | ||||
| -rwxr-xr-x | scripts/ciao_genregs.sh | 78 | ||||
| -rwxr-xr-x | scripts/ciao_procevt.sh | 50 | ||||
| -rwxr-xr-x | scripts/ciao_r500avgt.sh | 125 | ||||
| -rwxr-xr-x | scripts/ciao_sbp.sh | 60 | ||||
| -rwxr-xr-x | scripts/make_infojson.sh | 32 | 
25 files changed, 1122 insertions, 627 deletions
| diff --git a/scripts/analyze_path.sh b/scripts/analyze_path.sh index 684fc9c..9a1a7b9 100755 --- a/scripts/analyze_path.sh +++ b/scripts/analyze_path.sh @@ -3,7 +3,7 @@  analyze_path() {      # extract `obs_id' and `source name' from path      # -    # LIweitiaNux <liweitianux@gmail.com> +    # Weitian LI <liweitianux@gmail.com>      # 2013/02/04      #      # input: diff --git a/scripts/calc_lx_simple.sh b/scripts/calc_lx_simple.sh index a13c67b..a5ae978 100755 --- a/scripts/calc_lx_simple.sh +++ b/scripts/calc_lx_simple.sh @@ -1,20 +1,23 @@  #!/bin/sh -# +## +## Run calc_lx in BATCH mode +## +## Weitian LI <liweitianux@gmail.com> +## Created: 2012/08/31 +## +UPDATED="2014/06/18" +## +## Changelogs: +## 2015/06/03: +##   * Replaced 'grep' with '\grep', 'ls' with '\ls' +## 2014/06/18: +##   * use env variable 'MASS_PROFILE_DIR' +## +  unalias -a  export LC_COLLATE=C  # fix path for python -export PATH="/usr/bin:$PATH" -########################################################### -## calc_lx in BATCH mode                                 ## -##                                                       ## -## LIweitiaNux <liweitianux@gmail.com>                   ## -## August 31, 2012                                       ## -##                                                       ## -## ChangeLog:                                            ## -##  2014/06/18: use env variable 'MASS_PROFILE_DIR'      ## -########################################################### - -UPDATED="2014/06/18" +export PATH="/usr/bin:/usr/local/bin:$PATH"  ## usage, `path_conffile' is the configuration file  ## which contains the `path' to each `repro/mass' directory @@ -64,25 +67,25 @@ else      [ -e "${LOGFILE}" ] && mv -fv ${LOGFILE} ${LOGFILE}_bak      TOLOG="tee -a ${LOGFILE}"      # fitting_mass logfile, get R500 from it -    MLOG=`ls ${MCONF%.[confgCONFG]*}*.log | tail -n 1` -    R500_VAL=`tail -n ${RES_LINE} ${MLOG} | grep '^r500' | awk '{ print $2 }'` -    R200_VAL=`tail -n ${RES_LINE} ${MLOG} | grep '^r200' | awk '{ print $2 }'` +    MLOG=`\ls ${MCONF%.[confgCONFG]*}*.log | tail -n 1` +    R500_VAL=`tail -n ${RES_LINE} ${MLOG} | \grep '^r500' | awk '{ print $2 }'` +    R200_VAL=`tail -n ${RES_LINE} ${MLOG} | \grep '^r200' | awk '{ print $2 }'`      # radius_sbp_file {{{ -    RSBP=`grep '^radius_sbp_file' ${MCONF} | awk '{ print $2 }'` +    RSBP=`\grep '^radius_sbp_file' ${MCONF} | awk '{ print $2 }'`      TMP_RSBP="_tmp_rsbp.txt"      [ -e "${TMP_RSBP}" ] && rm -f ${TMP_RSBP} -    cat ${RSBP} | sed 's/#.*$//' | grep -Ev '^\s*$' > ${TMP_RSBP} +    cat ${RSBP} | sed 's/#.*$//' | \grep -Ev '^\s*$' > ${TMP_RSBP}      RSBP="${TMP_RSBP}"      # rsbp }}} -    TPRO_TYPE=`grep '^t_profile' ${MCONF} | awk '{ print $2 }'` -    TPRO_DATA=`grep '^t_data_file' ${MCONF} | awk '{ print $2 }'` -    TPRO_PARA=`grep '^t_param_file' ${MCONF} | awk '{ print $2 }'` -    SBP_CONF=`grep '^sbp_cfg' ${MCONF} | awk '{ print $2 }'` -    ABUND=`grep '^abund' ${MCONF} | awk '{ print $2 }'` -    NH=`grep '^nh' ${MCONF} | awk '{ print $2 }'` -    Z=`grep '^z' ${SBP_CONF} | awk '{ print $2 }'` -    cm_per_pixel=`grep '^cm_per_pixel' ${SBP_CONF} | awk '{ print $2 }'` -    CF_FILE=`grep '^cfunc_file' ${SBP_CONF} | awk '{ print $2 }'` +    TPRO_TYPE=`\grep '^t_profile' ${MCONF} | awk '{ print $2 }'` +    TPRO_DATA=`\grep '^t_data_file' ${MCONF} | awk '{ print $2 }'` +    TPRO_PARA=`\grep '^t_param_file' ${MCONF} | awk '{ print $2 }'` +    SBP_CONF=`\grep '^sbp_cfg' ${MCONF} | awk '{ print $2 }'` +    ABUND=`\grep '^abund' ${MCONF} | awk '{ print $2 }'` +    NH=`\grep '^nh' ${MCONF} | awk '{ print $2 }'` +    Z=`\grep '^z' ${SBP_CONF} | awk '{ print $2 }'` +    cm_per_pixel=`\grep '^cm_per_pixel' ${SBP_CONF} | awk '{ print $2 }'` +    CF_FILE=`\grep '^cfunc_file' ${SBP_CONF} | awk '{ print $2 }'`      printf "## use logfile: \`${LOGFILE}'\n"      printf "## working directory: \``pwd -P`'\n" | ${TOLOG}      printf "## use configuration files: \`${MCONF}, ${SBP_CONF}'\n" | ${TOLOG} @@ -121,8 +124,8 @@ else      ## flux_ratio }}}      printf "## CMD: ${CALCLX_SCRIPT} ${RSBP} ${FLUX_RATIO} ${Z} ${R500_VAL} ${TPRO_DATA}\n" | ${TOLOG}      printf "## CMD: ${CALCLX_SCRIPT} ${RSBP} ${FLUX_RATIO} ${Z} ${R200_VAL} ${TPRO_DATA}\n" | ${TOLOG} -    L500=`${CALCLX_SCRIPT} ${RSBP} ${FLUX_RATIO} ${Z} ${R500_VAL} ${TPRO_DATA} | grep '^Lx' | awk '{ print $2,$3,$4 }'` -    L200=`${CALCLX_SCRIPT} ${RSBP} ${FLUX_RATIO} ${Z} ${R200_VAL} ${TPRO_DATA} | grep '^Lx' | awk '{ print $2,$3,$4 }'` +    L500=`${CALCLX_SCRIPT} ${RSBP} ${FLUX_RATIO} ${Z} ${R500_VAL} ${TPRO_DATA} | \grep '^Lx' | awk '{ print $2,$3,$4 }'` +    L200=`${CALCLX_SCRIPT} ${RSBP} ${FLUX_RATIO} ${Z} ${R200_VAL} ${TPRO_DATA} | \grep '^Lx' | awk '{ print $2,$3,$4 }'`      printf "L500= ${L500} erg/s\n" | ${TOLOG}      printf "L200= ${L200} erg/s\n" | ${TOLOG}  fi diff --git a/scripts/chandra_bkg_rescale.sh b/scripts/chandra_bkg_rescale.sh index ae13af1..8d4abc7 100755 --- a/scripts/chandra_bkg_rescale.sh +++ b/scripts/chandra_bkg_rescale.sh @@ -3,8 +3,15 @@  # background rescale, by adjusting `BACKSCAL'  # according to the photon flux values in `9.5-12.0 keV'  # -# LIweitiaNux <liweitianux@gmail.com> -# August 14, 2012 +# Weitian LI <liweitianux@gmail.com> +# 2012/08/14 +# +# Changelogs: +# 2015/06/03, Aaron LI +#   * Copy needed pfiles to tmp directory, +#     set environment variable $PFILES to use these first. +#     and remove them after usage. +#  ## background rescale (BACKSCAL) {{{  # rescale background according to particle background @@ -39,7 +46,7 @@ bkg_rescale() {  }  ## bkg rescale }}} -if [ $# -ne 2 ]; then +if [ $# -ne 2 ] || [ "x$1" = "x-h" ]; then      printf "usage:\n"      printf "    `basename $0` <src_spec> <bkg_spec>\n"      printf "\nNOTE:\n" @@ -47,8 +54,27 @@ if [ $# -ne 2 ]; then      exit 1  fi +## prepare parameter files (pfiles) {{{ +CIAO_TOOLS="dmstat dmkeypar dmhedit" + +PFILES_TMPDIR="/tmp/pfiles-$$" +[ -d "${PFILES_TMPDIR}" ] && rm -rf ${PFILES_TMPDIR} || mkdir ${PFILES_TMPDIR} + +# Copy necessary pfiles for localized usage +for tool in ${CIAO_TOOLS}; do +    pfile=`paccess ${tool}` +    [ -n "${pfile}" ] && punlearn ${tool} && cp -Lvf ${pfile} ${PFILES_TMPDIR}/ +done + +# Modify environment variable 'PFILES' to use local pfiles first +export PFILES="${PFILES_TMPDIR}:${PFILES}" +## pfiles }}} +  # perform `bkg_rescale'  bkg_rescale "$1" "$2" +# clean pfiles +rm -rf ${PFILES_TMPDIR} +  exit 0 diff --git a/scripts/chandra_ccdgap_rect.py b/scripts/chandra_ccdgap_rect.py index 60bcdac..d95129a 100755 --- a/scripts/chandra_ccdgap_rect.py +++ b/scripts/chandra_ccdgap_rect.py @@ -1,6 +1,5 @@  #!/usr/bin/python -  import sys  import math  import re @@ -71,10 +70,11 @@ def poly2rect(plist):  if __name__=='__main__':      if len(sys.argv)!=2: -        print("Usage:%s %s"%(sys.argv[0]," <input regfile, including only polygens>")) +        print("Usage:") +        print("    %s <input regfile (only polygens)>" % sys.argv[0])          sys.exit()      for i in open(sys.argv[1]):          if re.match('.*olygon',i):              reg=poly2rect(parse_poly(i))              print(reg) -             + diff --git a/scripts/chandra_collect_data_v3.sh b/scripts/chandra_collect_data_v3.sh index a1b56d8..d78d1da 100755 --- a/scripts/chandra_collect_data_v3.sh +++ b/scripts/chandra_collect_data_v3.sh @@ -3,38 +3,39 @@  unalias -a  export LC_COLLATE=C  # fix path for python -export PATH=/usr/bin:$PATH +export PATH=/usr/bin:/usr/local/bin:$PATH  ######################################################################### -## collect needed data and save to a JSON file +## Collect the calculated mass data and write to the JSON file.  ## -## LIweitiaNux <liweitianux@gmail.com> +## Weitian LI <liweitianux@gmail.com>  ## August 31, 2012  ##  ## ChangeLogs:  ##   check JSON syntax, modify output to agree with the syntax  ##   Ref: http://json.parser.online.fr/ -## v1.1, 2012/09/05, LIweitiaNux +## v1.1, 2012/09/05, Weitian LI  ##   add `T_avg(0.2-0.5 R500)' and `T_err' -## v2.0, 2012/10/14, LIweitiaNux +## v2.0, 2012/10/14, Weitian LI  ##   add parameters -## v2.1, 2012/11/07, LIweitiaNux +## v2.1, 2012/11/07, Weitian LI  ##   account for `fitting_dbeta' -## v2.2, 2012/12/18, LIweitiaNux +## v2.2, 2012/12/18, Weitian LI  ##   add `beta' and `cooling time' parameters -## v3.0, 2013/02/09, LIweitiaNux +## v3.0, 2013/02/09, Weitian LI  ##   modified for `new sample info format' -## v3.1, 2013/05/18, LIweitiaNux +## v3.1, 2013/05/18, Weitian LI  ##   add key `Feature' -## v3.2, 2013/05/29, LIweitiaNux +## v3.2, 2013/05/29, Weitian LI  ##   add key `XCNTRD_RA, XCNTRD_DEC' -## v3.3, 2013/10/14, LIweitiaNux +## v3.3, 2013/10/14, Weitian LI  ##   add key `Unified Name' -######################################################################### - -## about, used in `usage' {{{ -VERSION="v3.0" -UPDATE="2013-02-09" -## about }}} +## v3.4, 2015/06/03, Aaron LI +##   * Copy needed pfiles to current working directory, and +##     set environment variable $PFILES to use these first. +##   * Replaced 'grep' with '\grep', 'ls' with '\ls' +## +VERSION="v3.4" +UPDATED="2015/06/03"  ## error code {{{  ERR_USG=1 @@ -56,7 +57,7 @@ case "$1" in          printf "usage:\n"          printf "    `basename $0` json=<info_json> cfg=<main_cfg> res=<final_result> basedir=<repro_dir> massdir=<mass_dir>\n"          printf "\nversion:\n" -        printf "${VERSION}, ${UPDATE}\n" +        printf "${VERSION}, ${UPDATED}\n"          exit ${ERR_USG}          ;;  esac @@ -110,16 +111,16 @@ INIT_DIR=`pwd -P`  # check given parameters  # check given dir -if [ -d "${basedir}" ] && ls ${basedir}/*repro_evt2.fits > /dev/null 2>&1; then +if [ -d "${basedir}" ] && \ls ${basedir}/*repro_evt2.fits > /dev/null 2>&1; then      BASEDIR=${basedir} -elif [ -d "${DFT_BASEDIR}" ] && ls ${DFT_BASEDIR}/*repro_evt2.fits > /dev/null 2>&1; then +elif [ -d "${DFT_BASEDIR}" ] && \ls ${DFT_BASEDIR}/*repro_evt2.fits > /dev/null 2>&1; then      BASEDIR=${DFT_BASEDIR}  else      read -p "> basedir (contains info json): " BASEDIR      if [ ! -d "${BASEDIR}" ]; then          printf "ERROR: given \`${BASEDIR}' NOT a directory\n"          exit ${ERR_DIR} -    elif ! ls ${BASEDIR}/*repro_evt2.fits > /dev/null 2>&1; then +    elif ! \ls ${BASEDIR}/*repro_evt2.fits > /dev/null 2>&1; then          printf "ERROR: given \`${BASEDIR}' NOT contains needed evt files\n"          exit ${ERR_DIR}      fi @@ -145,8 +146,8 @@ printf "## use massdir: \`${MASS_DIR}'\n"  # check json file  if [ ! -z "${json}" ] && [ -r "${BASEDIR}/${json}" ]; then      JSON_FILE="${json}" -elif [ "`ls ${BASEDIR}/${DFT_JSON_PAT} | wc -l`" -eq 1 ]; then -    JSON_FILE=`( cd ${BASEDIR} && ls ${DFT_JSON_PAT} )` +elif [ "`\ls ${BASEDIR}/${DFT_JSON_PAT} | wc -l`" -eq 1 ]; then +    JSON_FILE=`( cd ${BASEDIR} && \ls ${DFT_JSON_PAT} )`  else      read -p "> info json file: " JSON_FILE      if ! [ -r "${BASEDIR}/${JSON_FILE}" ]; then @@ -168,7 +169,7 @@ else      fi  fi  printf "## use main config file: \`${CFG_FILE}'\n" -SBP_CFG=`grep '^sbp_cfg' ${CFG_FILE} | awk '{ print $2 }'` +SBP_CFG=`\grep '^sbp_cfg' ${CFG_FILE} | awk '{ print $2 }'`  printf "## sbp config file: \`${SBP_CFG}'\n"  # check final result file  if [ ! -z "${res}" ] && [ -r "${res}" ]; then @@ -198,20 +199,33 @@ IMG_DIR="${BASEDIR}/img"  SPEC_DIR="${BASEDIR}/spc/profile"  ## dir & file }}} +## prepare parameter files (pfiles) {{{ +CIAO_TOOLS="dmkeypar" + +# 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 }}} +  cd ${BASEDIR}  printf "## enter directory: `pwd -P`\n"  ## in dir `repro' {{{  punlearn dmkeypar -EVT_RAW=`ls *repro_evt2.fits` +EVT_RAW=`\ls *repro_evt2.fits`  OBS_ID=`dmkeypar ${EVT_RAW} OBS_ID echo=yes`  DATE_OBS=`dmkeypar ${EVT_RAW} DATE-OBS echo=yes`  EXPOSURE_RAW=`dmkeypar ${EVT_RAW} EXPOSURE echo=yes | awk '{ print $1/1000 }'`  ## ACIS_TYPE  DETNAM=`dmkeypar ${EVT_RAW} DETNAM echo=yes` -if echo ${DETNAM} | grep -q 'ACIS-0123'; then +if echo ${DETNAM} | \grep -q 'ACIS-0123'; then      ACIS_TYPE="ACIS-I" -elif echo ${DETNAM} | grep -q 'ACIS-[0-6]*7'; then +elif echo ${DETNAM} | \grep -q 'ACIS-[0-6]*7'; then      ACIS_TYPE="ACIS-S"  else      printf "*** ERROR: unknown detector type: ${DETNAM}\n" @@ -221,7 +235,7 @@ fi  ## in dir `repro/evt' {{{  cd ${EVT_DIR} -EVT_CLEAN=`ls evt2_c*_clean.fits` +EVT_CLEAN=`\ls evt2_c*_clean.fits`  EXPOSURE_CLEAN=`dmkeypar ${EVT_CLEAN} EXPOSURE echo=yes | awk '{ print $1/1000 }'`  ## dir `repro/evt' }}} @@ -229,26 +243,26 @@ EXPOSURE_CLEAN=`dmkeypar ${EVT_CLEAN} EXPOSURE echo=yes | awk '{ print $1/1000 }  cd ${MASS_DIR}  # misc {{{ -N_H=`grep '^nh' ${CFG_FILE} | awk '{ print $2 }'` -Z=`grep '^z' ${SBP_CFG} | awk '{ print $2 }'` -T_DATA_FILE=`grep '^t_data_file' ${CFG_FILE} | awk '{ print $2 }'` -NFW_RMIN_KPC=`grep '^nfw_rmin_kpc' ${CFG_FILE} | awk '{ print $2 }'` -E_Z=`${COSMO_CALC} ${Z} | grep -i 'Hubble_parameter' | awk '{ print $3 }'` -KPC_PER_PIXEL=`${COSMO_CALC} ${Z} | grep 'kpc/pixel' | awk '{ print $3 }'` -RADIUS_SBP_FILE=`grep '^radius_sbp_file' ${CFG_FILE} | awk '{ print $2 }'` +N_H=`\grep '^nh' ${CFG_FILE} | awk '{ print $2 }'` +Z=`\grep '^z' ${SBP_CFG} | awk '{ print $2 }'` +T_DATA_FILE=`\grep '^t_data_file' ${CFG_FILE} | awk '{ print $2 }'` +NFW_RMIN_KPC=`\grep '^nfw_rmin_kpc' ${CFG_FILE} | awk '{ print $2 }'` +E_Z=`${COSMO_CALC} ${Z} | \grep -i 'Hubble_parameter' | awk '{ print $3 }'` +KPC_PER_PIXEL=`${COSMO_CALC} ${Z} | \grep 'kpc/pixel' | awk '{ print $3 }'` +RADIUS_SBP_FILE=`\grep '^radius_sbp_file' ${CFG_FILE} | awk '{ print $2 }'`  RMAX_SBP_PIX=`tail -n 1 ${RADIUS_SBP_FILE} | awk '{ print $1+$2 }'`  RMAX_SBP_KPC=`echo "${RMAX_SBP_PIX} ${KPC_PER_PIXEL}" | awk '{ printf("%.2f", $1*$2) }'`  SPC_DIR=`eval ${DFT_SPC_DIR_CMD}`  if [ -f "${SPC_DIR}/${DFT_RSPEC_REG}" ]; then -    RMAX_TPRO_PIX=`grep -iE '(pie|annulus)' ${SPC_DIR}/${DFT_RSPEC_REG} | tail -n 1 | awk -F',' '{ print $4 }'` +    RMAX_TPRO_PIX=`\grep -iE '(pie|annulus)' ${SPC_DIR}/${DFT_RSPEC_REG} | tail -n 1 | awk -F',' '{ print $4 }'`      RMAX_TPRO_KPC=`echo "${RMAX_TPRO_PIX} ${KPC_PER_PIXEL}" | awk '{ printf("%.2f", $1*$2) }'`  fi  IMG_DIR=`eval ${DFT_IMG_DIR_CMD}` -EXPCORR_CONF=`ls ${IMG_DIR}/${DFT_EXPCORR_CONF_PAT} 2> /dev/null` +EXPCORR_CONF=`\ls ${IMG_DIR}/${DFT_EXPCORR_CONF_PAT} 2> /dev/null`  echo "EXPCORR_CONF: ${EXPCORR_CONF}"  if [ -f "${EXPCORR_CONF}" ]; then -    T_REF=`grep '^temp' ${EXPCORR_CONF} | awk '{ print $2 }'` -    Z_REF=`grep '^abund' ${EXPCORR_CONF} | awk '{ print $2 }'` +    T_REF=`\grep '^temp' ${EXPCORR_CONF} | awk '{ print $2 }'` +    Z_REF=`\grep '^abund' ${EXPCORR_CONF} | awk '{ print $2 }'`  fi  [ -z "${NFW_RMIN_KPC}" ] && NFW_RMIN_KPC="null"  [ -z "${RMAX_SBP_PIX}" ] && RMAX_SBP_PIX="null" @@ -258,17 +272,17 @@ fi  # misc }}}  ## determine single/double beta {{{ -if grep -q '^beta2' ${SBP_CFG}; then +if \grep -q '^beta2' ${SBP_CFG}; then      MODEL_SBP="double-beta" -    n01=`grep '^n01' ${RES_FINAL} | awk '{ print $2 }'` -    beta1=`grep '^beta1' ${RES_FINAL} | awk '{ print $2 }'` -    rc1=`grep -E '^rc1\s' ${RES_FINAL} | awk '{ print $2 }'` -    rc1_kpc=`grep '^rc1_kpc' ${RES_FINAL} | awk '{ print $2 }'` -    n02=`grep '^n02' ${RES_FINAL} | awk '{ print $2 }'` -    beta2=`grep '^beta2' ${RES_FINAL} | awk '{ print $2 }'` -    rc2=`grep -E '^rc2\s' ${RES_FINAL} | awk '{ print $2 }'` -    rc2_kpc=`grep '^rc2_kpc' ${RES_FINAL} | awk '{ print $2 }'` -    BKG=`grep '^bkg' ${RES_FINAL} | awk '{ print $2 }'` +    n01=`\grep '^n01' ${RES_FINAL} | awk '{ print $2 }'` +    beta1=`\grep '^beta1' ${RES_FINAL} | awk '{ print $2 }'` +    rc1=`\grep -E '^rc1\s' ${RES_FINAL} | awk '{ print $2 }'` +    rc1_kpc=`\grep '^rc1_kpc' ${RES_FINAL} | awk '{ print $2 }'` +    n02=`\grep '^n02' ${RES_FINAL} | awk '{ print $2 }'` +    beta2=`\grep '^beta2' ${RES_FINAL} | awk '{ print $2 }'` +    rc2=`\grep -E '^rc2\s' ${RES_FINAL} | awk '{ print $2 }'` +    rc2_kpc=`\grep '^rc2_kpc' ${RES_FINAL} | awk '{ print $2 }'` +    BKG=`\grep '^bkg' ${RES_FINAL} | awk '{ print $2 }'`      # beta1 -> smaller rc; beta2 -> bigger rc      if [ `echo "${rc1} < ${rc2}" | bc -l` -eq 1 ]; then          N01=${n01} @@ -296,30 +310,30 @@ else      BETA1="null"      RC1="null"      RC1_KPC="null" -    N02=`grep '^n0' ${RES_FINAL} | awk '{ print $2 }'` -    BETA2=`grep '^beta' ${RES_FINAL} | awk '{ print $2 }'` -    RC2=`grep -E '^rc\s' ${RES_FINAL} | awk '{ print $2 }'` -    RC2_KPC=`grep '^rc_kpc' ${RES_FINAL} | awk '{ print $2 }'` -    BKG=`grep '^bkg' ${RES_FINAL} | awk '{ print $2 }'` +    N02=`\grep '^n0' ${RES_FINAL} | awk '{ print $2 }'` +    BETA2=`\grep '^beta' ${RES_FINAL} | awk '{ print $2 }'` +    RC2=`\grep -E '^rc\s' ${RES_FINAL} | awk '{ print $2 }'` +    RC2_KPC=`\grep '^rc_kpc' ${RES_FINAL} | awk '{ print $2 }'` +    BKG=`\grep '^bkg' ${RES_FINAL} | awk '{ print $2 }'`  fi  ## single/double beta }}}  ## get `mass/virial_radius/luminosity' {{{  # 200 data {{{ -R200_VAL=`grep '^r200' ${RES_FINAL} | awk '{ print $2 }'` -R200_ERR_L=`grep '^r200' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $1 }'` -R200_ERR_U=`grep '^r200' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $2 }' | tr -d '+'` -M200_VAL=`grep '^m200' ${RES_FINAL} | awk '{ print $2 }'` -M200_ERR_L=`grep '^m200' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $1 }'` -M200_ERR_U=`grep '^m200' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $2 }' | tr -d '+'` -L200_VAL=`grep '^L200' ${RES_FINAL} | awk '{ print $2 }'` -L200_ERR=`grep '^L200' ${RES_FINAL} | awk '{ print $4 }'` -MGAS200_VAL=`grep '^gas_m200' ${RES_FINAL} | awk '{ print $2 }'` -MGAS200_ERR_L=`grep '^gas_m200' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $1 }'` -MGAS200_ERR_U=`grep '^gas_m200' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $2 }' | tr -d '+'` -FGAS200_VAL=`grep '^gas_fraction200' ${RES_FINAL} | awk '{ print $2 }'` -FGAS200_ERR_L=`grep '^gas_fraction200' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $1 }'` -FGAS200_ERR_U=`grep '^gas_fraction200' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $2 }' | tr -d '+'` +R200_VAL=`\grep '^r200' ${RES_FINAL} | awk '{ print $2 }'` +R200_ERR_L=`\grep '^r200' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $1 }'` +R200_ERR_U=`\grep '^r200' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $2 }' | tr -d '+'` +M200_VAL=`\grep '^m200' ${RES_FINAL} | awk '{ print $2 }'` +M200_ERR_L=`\grep '^m200' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $1 }'` +M200_ERR_U=`\grep '^m200' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $2 }' | tr -d '+'` +L200_VAL=`\grep '^L200' ${RES_FINAL} | awk '{ print $2 }'` +L200_ERR=`\grep '^L200' ${RES_FINAL} | awk '{ print $4 }'` +MGAS200_VAL=`\grep '^gas_m200' ${RES_FINAL} | awk '{ print $2 }'` +MGAS200_ERR_L=`\grep '^gas_m200' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $1 }'` +MGAS200_ERR_U=`\grep '^gas_m200' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $2 }' | tr -d '+'` +FGAS200_VAL=`\grep '^gas_fraction200' ${RES_FINAL} | awk '{ print $2 }'` +FGAS200_ERR_L=`\grep '^gas_fraction200' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $1 }'` +FGAS200_ERR_U=`\grep '^gas_fraction200' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $2 }' | tr -d '+'`  [ -z "${R200_VAL}" ]       && R200_VAL="null"  [ -z "${R200_ERR_L}" ]     && R200_ERR_L="null"  [ -z "${R200_ERR_U}" ]     && R200_ERR_U="null" @@ -336,20 +350,20 @@ FGAS200_ERR_U=`grep '^gas_fraction200' ${RES_FINAL} | awk '{ print $3 }' | awk -  [ -z "${FGAS200_ERR_U}" ]  && FGAS200_ERR_U="null"  # 200 }}}  # 500 data {{{ -R500_VAL=`grep '^r500' ${RES_FINAL} | awk '{ print $2 }'` -R500_ERR_L=`grep '^r500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $1 }'` -R500_ERR_U=`grep '^r500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $2 }' | tr -d '+'` -M500_VAL=`grep '^m500' ${RES_FINAL} | awk '{ print $2 }'` -M500_ERR_L=`grep '^m500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $1 }'` -M500_ERR_U=`grep '^m500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $2 }' | tr -d '+'` -L500_VAL=`grep '^L500' ${RES_FINAL} | awk '{ print $2 }'` -L500_ERR=`grep '^L500' ${RES_FINAL} | awk '{ print $4 }'` -MGAS500_VAL=`grep '^gas_m500' ${RES_FINAL} | awk '{ print $2 }'` -MGAS500_ERR_L=`grep '^gas_m500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $1 }'` -MGAS500_ERR_U=`grep '^gas_m500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $2 }' | tr -d '+'` -FGAS500_VAL=`grep '^gas_fraction500' ${RES_FINAL} | awk '{ print $2 }'` -FGAS500_ERR_L=`grep '^gas_fraction500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $1 }'` -FGAS500_ERR_U=`grep '^gas_fraction500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $2 }' | tr -d '+'` +R500_VAL=`\grep '^r500' ${RES_FINAL} | awk '{ print $2 }'` +R500_ERR_L=`\grep '^r500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $1 }'` +R500_ERR_U=`\grep '^r500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $2 }' | tr -d '+'` +M500_VAL=`\grep '^m500' ${RES_FINAL} | awk '{ print $2 }'` +M500_ERR_L=`\grep '^m500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $1 }'` +M500_ERR_U=`\grep '^m500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $2 }' | tr -d '+'` +L500_VAL=`\grep '^L500' ${RES_FINAL} | awk '{ print $2 }'` +L500_ERR=`\grep '^L500' ${RES_FINAL} | awk '{ print $4 }'` +MGAS500_VAL=`\grep '^gas_m500' ${RES_FINAL} | awk '{ print $2 }'` +MGAS500_ERR_L=`\grep '^gas_m500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $1 }'` +MGAS500_ERR_U=`\grep '^gas_m500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $2 }' | tr -d '+'` +FGAS500_VAL=`\grep '^gas_fraction500' ${RES_FINAL} | awk '{ print $2 }'` +FGAS500_ERR_L=`\grep '^gas_fraction500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $1 }'` +FGAS500_ERR_U=`\grep '^gas_fraction500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $2 }' | tr -d '+'`  [ -z "${R500_VAL}" ]       && R500_VAL="null"  [ -z "${R500_ERR_L}" ]     && R500_ERR_L="null"  [ -z "${R500_ERR_U}" ]     && R500_ERR_U="null" @@ -366,20 +380,20 @@ FGAS500_ERR_U=`grep '^gas_fraction500' ${RES_FINAL} | awk '{ print $3 }' | awk -  [ -z "${FGAS500_ERR_U}" ]  && FGAS500_ERR_U="null"  # 500 }}}  # 1500 data {{{ -R1500_VAL=`grep '^r1500' ${RES_FINAL} | awk '{ print $2 }'` -R1500_ERR_L=`grep '^r1500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $1 }'` -R1500_ERR_U=`grep '^r1500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $2 }' | tr -d '+'` -M1500_VAL=`grep '^m1500' ${RES_FINAL} | awk '{ print $2 }'` -M1500_ERR_L=`grep '^m1500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $1 }'` -M1500_ERR_U=`grep '^m1500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $2 }' | tr -d '+'` -L1500_VAL=`grep '^L1500' ${RES_FINAL} | awk '{ print $2 }'` -L1500_ERR=`grep '^L1500' ${RES_FINAL} | awk '{ print $4 }'` -MGAS1500_VAL=`grep '^gas_m1500' ${RES_FINAL} | awk '{ print $2 }'` -MGAS1500_ERR_L=`grep '^gas_m1500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $1 }'` -MGAS1500_ERR_U=`grep '^gas_m1500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $2 }' | tr -d '+'` -FGAS1500_VAL=`grep '^gas_fraction1500' ${RES_FINAL} | awk '{ print $2 }'` -FGAS1500_ERR_L=`grep '^gas_fraction1500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $1 }'` -FGAS1500_ERR_U=`grep '^gas_fraction1500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $2 }' | tr -d '+'` +R1500_VAL=`\grep '^r1500' ${RES_FINAL} | awk '{ print $2 }'` +R1500_ERR_L=`\grep '^r1500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $1 }'` +R1500_ERR_U=`\grep '^r1500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $2 }' | tr -d '+'` +M1500_VAL=`\grep '^m1500' ${RES_FINAL} | awk '{ print $2 }'` +M1500_ERR_L=`\grep '^m1500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $1 }'` +M1500_ERR_U=`\grep '^m1500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $2 }' | tr -d '+'` +L1500_VAL=`\grep '^L1500' ${RES_FINAL} | awk '{ print $2 }'` +L1500_ERR=`\grep '^L1500' ${RES_FINAL} | awk '{ print $4 }'` +MGAS1500_VAL=`\grep '^gas_m1500' ${RES_FINAL} | awk '{ print $2 }'` +MGAS1500_ERR_L=`\grep '^gas_m1500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $1 }'` +MGAS1500_ERR_U=`\grep '^gas_m1500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $2 }' | tr -d '+'` +FGAS1500_VAL=`\grep '^gas_fraction1500' ${RES_FINAL} | awk '{ print $2 }'` +FGAS1500_ERR_L=`\grep '^gas_fraction1500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $1 }'` +FGAS1500_ERR_U=`\grep '^gas_fraction1500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $2 }' | tr -d '+'`  [ -z "${R1500_VAL}" ]      && R1500_VAL="null"  [ -z "${R1500_ERR_L}" ]    && R1500_ERR_L="null"  [ -z "${R1500_ERR_U}" ]    && R1500_ERR_U="null" @@ -396,20 +410,20 @@ FGAS1500_ERR_U=`grep '^gas_fraction1500' ${RES_FINAL} | awk '{ print $3 }' | awk  [ -z "${FGAS1500_ERR_U}" ] && FGAS1500_ERR_U="null"  # 1500 }}}  # 2500 data {{{ -R2500_VAL=`grep '^r2500' ${RES_FINAL} | awk '{ print $2 }'` -R2500_ERR_L=`grep '^r2500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $1 }'` -R2500_ERR_U=`grep '^r2500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $2 }' | tr -d '+'` -M2500_VAL=`grep '^m2500' ${RES_FINAL} | awk '{ print $2 }'` -M2500_ERR_L=`grep '^m2500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $1 }'` -M2500_ERR_U=`grep '^m2500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $2 }' | tr -d '+'` -L2500_VAL=`grep '^L2500' ${RES_FINAL} | awk '{ print $2 }'` -L2500_ERR=`grep '^L2500' ${RES_FINAL} | awk '{ print $4 }'` -MGAS2500_VAL=`grep '^gas_m2500' ${RES_FINAL} | awk '{ print $2 }'` -MGAS2500_ERR_L=`grep '^gas_m2500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $1 }'` -MGAS2500_ERR_U=`grep '^gas_m2500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $2 }' | tr -d '+'` -FGAS2500_VAL=`grep '^gas_fraction2500' ${RES_FINAL} | awk '{ print $2 }'` -FGAS2500_ERR_L=`grep '^gas_fraction2500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $1 }'` -FGAS2500_ERR_U=`grep '^gas_fraction2500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $2 }' | tr -d '+'` +R2500_VAL=`\grep '^r2500' ${RES_FINAL} | awk '{ print $2 }'` +R2500_ERR_L=`\grep '^r2500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $1 }'` +R2500_ERR_U=`\grep '^r2500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $2 }' | tr -d '+'` +M2500_VAL=`\grep '^m2500' ${RES_FINAL} | awk '{ print $2 }'` +M2500_ERR_L=`\grep '^m2500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $1 }'` +M2500_ERR_U=`\grep '^m2500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $2 }' | tr -d '+'` +L2500_VAL=`\grep '^L2500' ${RES_FINAL} | awk '{ print $2 }'` +L2500_ERR=`\grep '^L2500' ${RES_FINAL} | awk '{ print $4 }'` +MGAS2500_VAL=`\grep '^gas_m2500' ${RES_FINAL} | awk '{ print $2 }'` +MGAS2500_ERR_L=`\grep '^gas_m2500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $1 }'` +MGAS2500_ERR_U=`\grep '^gas_m2500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $2 }' | tr -d '+'` +FGAS2500_VAL=`\grep '^gas_fraction2500' ${RES_FINAL} | awk '{ print $2 }'` +FGAS2500_ERR_L=`\grep '^gas_fraction2500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $1 }'` +FGAS2500_ERR_U=`\grep '^gas_fraction2500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $2 }' | tr -d '+'`  [ -z "${R2500_VAL}" ]      && R2500_VAL="null"  [ -z "${R2500_ERR_L}" ]    && R2500_ERR_L="null"  [ -z "${R2500_ERR_U}" ]    && R2500_ERR_U="null" @@ -425,17 +439,17 @@ FGAS2500_ERR_U=`grep '^gas_fraction2500' ${RES_FINAL} | awk '{ print $3 }' | awk  [ -z "${FGAS2500_ERR_L}" ] && FGAS2500_ERR_L="null"  [ -z "${FGAS2500_ERR_U}" ] && FGAS2500_ERR_U="null"  # 2500 }}} -FGRR=`grep '^gas_fraction.*r2500.*r500=' ${RES_FINAL} | sed 's/^.*r500=//' | awk '{ print $1 }'` -FGRR_ERR_L=`grep '^gas_fraction.*r2500.*r500=' ${RES_FINAL} | sed 's/^.*r500=//' | awk '{ print $2 }' | awk -F'/' '{ print $1 }'` -FGRR_ERR_U=`grep '^gas_fraction.*r2500.*r500=' ${RES_FINAL} | sed 's/^.*r500=//' | awk '{ print $2 }' | awk -F'/' '{ print $2 }' | tr -d '+'` +FGRR=`\grep '^gas_fraction.*r2500.*r500=' ${RES_FINAL} | sed 's/^.*r500=//' | awk '{ print $1 }'` +FGRR_ERR_L=`\grep '^gas_fraction.*r2500.*r500=' ${RES_FINAL} | sed 's/^.*r500=//' | awk '{ print $2 }' | awk -F'/' '{ print $1 }'` +FGRR_ERR_U=`\grep '^gas_fraction.*r2500.*r500=' ${RES_FINAL} | sed 's/^.*r500=//' | awk '{ print $2 }' | awk -F'/' '{ print $2 }' | tr -d '+'`  [ -z "${FGRR}" ]       && FGRR="null"  [ -z "${FGRR_ERR_L}" ] && FGRR_ERR_L="null"  [ -z "${FGRR_ERR_U}" ] && FGRR_ERR_U="null"  ## mrl }}}  ## rcool & cooling time {{{ -RCOOL=`grep '^cooling' ${RES_FINAL} | awk '{ print $4 }'` -COOLING_TIME=`grep '^cooling' ${RES_FINAL} | awk -F'=' '{ print $2 }' | tr -d ' Gyr'` +RCOOL=`\grep '^cooling' ${RES_FINAL} | awk '{ print $4 }'` +COOLING_TIME=`\grep '^cooling' ${RES_FINAL} | awk -F'=' '{ print $2 }' | tr -d ' Gyr'`  [ -z "${RCOOL}" ] && RCOOL="null"  [ -z "${COOLING_TIME}" ] && COOLING_TIME="null"  ## cooling time }}} @@ -444,35 +458,35 @@ COOLING_TIME=`grep '^cooling' ${RES_FINAL} | awk -F'=' '{ print $2 }' | tr -d '  cd ${BASEDIR}  ## orig json file {{{  printf "## collect data from original info file ...\n" -OBJ_NAME=`grep '"Source\ Name' ${JSON_FILE} | sed 's/.*"Source.*":\ //' | sed 's/^"//' | sed 's/"\ *,$//'` -OBJ_UNAME=`grep '"Unified\ Name' ${JSON_FILE} | sed 's/.*"Unified.*":\ //' | sed 's/^"//' | sed 's/"\ *,$//'` -OBJ_RA=`grep '"R\.\ A\.' ${JSON_FILE} | sed 's/.*"R\.\ A\.":\ //' | sed 's/^"//' | sed 's/"\ *,$//'` -OBJ_DEC=`grep '"Dec\.' ${JSON_FILE} | sed 's/.*"Dec\.":\ //' | sed 's/^"//' | sed 's/"\ *,$//'` -OBJ_XCRA=`grep '"XCNTRD_RA' ${JSON_FILE} | sed 's/.*"XCNTRD_RA":\ //' | sed 's/^"//' | sed 's/"\ *,$//'` -OBJ_XCDEC=`grep '"XCNTRD_DEC' ${JSON_FILE} | sed 's/.*"XCNTRD_DEC":\ //' | sed 's/^"//' | sed 's/"\ *,$//'` -REDSHIFT=`grep '"redshift' ${JSON_FILE} | sed 's/.*"redshift.*":\ //' | sed 's/\ *,$//'` -COOLCORE=`grep -i '"cool.*core' ${JSON_FILE} | sed 's/.*"[cC]ool.*":\ //' | sed 's/\ *,$//'` +OBJ_NAME=`\grep '"Source\ Name' ${JSON_FILE} | sed 's/.*"Source.*":\ //' | sed 's/^"//' | sed 's/"\ *,$//'` +OBJ_UNAME=`\grep '"Unified\ Name' ${JSON_FILE} | sed 's/.*"Unified.*":\ //' | sed 's/^"//' | sed 's/"\ *,$//'` +OBJ_RA=`\grep '"R\.\ A\.' ${JSON_FILE} | sed 's/.*"R\.\ A\.":\ //' | sed 's/^"//' | sed 's/"\ *,$//'` +OBJ_DEC=`\grep '"Dec\.' ${JSON_FILE} | sed 's/.*"Dec\.":\ //' | sed 's/^"//' | sed 's/"\ *,$//'` +OBJ_XCRA=`\grep '"XCNTRD_RA' ${JSON_FILE} | sed 's/.*"XCNTRD_RA":\ //' | sed 's/^"//' | sed 's/"\ *,$//'` +OBJ_XCDEC=`\grep '"XCNTRD_DEC' ${JSON_FILE} | sed 's/.*"XCNTRD_DEC":\ //' | sed 's/^"//' | sed 's/"\ *,$//'` +REDSHIFT=`\grep '"redshift' ${JSON_FILE} | sed 's/.*"redshift.*":\ //' | sed 's/\ *,$//'` +COOLCORE=`\grep -i '"cool.*core' ${JSON_FILE} | sed 's/.*"[cC]ool.*":\ //' | sed 's/\ *,$//'`  [ -z "${COOLCORE}" ] && COOLCORE="null" -OBJ_FEATURE=`grep '"Feature' ${JSON_FILE} | sed 's/.*"Feature":\ //' | sed 's/^"//' | sed 's/"\ *,*$//'` -OBJ_NOTE=`grep '"NOTE' ${JSON_FILE} | sed 's/.*"NOTE":\ //' | sed 's/^"//' | sed 's/"\ *,*$//'` +OBJ_FEATURE=`\grep '"Feature' ${JSON_FILE} | sed 's/.*"Feature":\ //' | sed 's/^"//' | sed 's/"\ *,*$//'` +OBJ_NOTE=`\grep '"NOTE' ${JSON_FILE} | sed 's/.*"NOTE":\ //' | sed 's/^"//' | sed 's/"\ *,*$//'`  # T & Z {{{ -T_1R500=`grep '"T(0\.1.*R500' ${JSON_FILE} | sed 's/.*"T.*":\ //' | sed 's/\ *,$//'` -T_1ERR=`grep '"T_err(.*0\.1.*R500' ${JSON_FILE} | sed 's/.*"T.*":\ //' | sed 's/\ *,$//'` -T_1ERR_L=`grep '"T_err_l.*0\.1.*R500' ${JSON_FILE} | sed 's/.*"T.*":\ //' | sed 's/\ *,$//'` -T_1ERR_U=`grep '"T_err_u.*0\.1.*R500' ${JSON_FILE} | sed 's/.*"T.*":\ //' | sed 's/\ *,$//'` -Z_1R500=`grep '"Z(0\.1.*R500' ${JSON_FILE} | sed 's/.*"Z.*":\ //' | sed 's/\ *,$//'` -Z_1ERR=`grep '"Z_err(.*0\.1.*R500' ${JSON_FILE} | sed 's/.*"Z.*":\ //' | sed 's/\ *,$//'` -Z_1ERR_L=`grep '"Z_err_l.*0\.1.*R500' ${JSON_FILE} | sed 's/.*"Z.*":\ //' | sed 's/\ *,$//'` -Z_1ERR_U=`grep '"Z_err_u.*0\.1.*R500' ${JSON_FILE} | sed 's/.*"Z.*":\ //' | sed 's/\ *,$//'` -T_2R500=`grep '"T(0\.2.*R500' ${JSON_FILE} | sed 's/.*"T.*":\ //' | sed 's/\ *,$//'` -T_2ERR=`grep '"T_err(.*0\.2.*R500' ${JSON_FILE} | sed 's/.*"T.*":\ //' | sed 's/\ *,$//'` -T_2ERR_L=`grep '"T_err_l.*0\.2.*R500' ${JSON_FILE} | sed 's/.*"T.*":\ //' | sed 's/\ *,$//'` -T_2ERR_U=`grep '"T_err_u.*0\.2.*R500' ${JSON_FILE} | sed 's/.*"T.*":\ //' | sed 's/\ *,$//'` -Z_2R500=`grep '"Z(0\.2.*R500' ${JSON_FILE} | sed 's/.*"Z.*":\ //' | sed 's/\ *,$//'` -Z_2ERR=`grep '"Z_err(.*0\.2.*R500' ${JSON_FILE} | sed 's/.*"Z.*":\ //' | sed 's/\ *,$//'` -Z_2ERR_L=`grep '"Z_err_l.*0\.2.*R500' ${JSON_FILE} | sed 's/.*"Z.*":\ //' | sed 's/\ *,$//'` -Z_2ERR_U=`grep '"Z_err_u.*0\.2.*R500' ${JSON_FILE} | sed 's/.*"Z.*":\ //' | sed 's/\ *,$//'` +T_1R500=`\grep '"T(0\.1.*R500' ${JSON_FILE} | sed 's/.*"T.*":\ //' | sed 's/\ *,$//'` +T_1ERR=`\grep '"T_err(.*0\.1.*R500' ${JSON_FILE} | sed 's/.*"T.*":\ //' | sed 's/\ *,$//'` +T_1ERR_L=`\grep '"T_err_l.*0\.1.*R500' ${JSON_FILE} | sed 's/.*"T.*":\ //' | sed 's/\ *,$//'` +T_1ERR_U=`\grep '"T_err_u.*0\.1.*R500' ${JSON_FILE} | sed 's/.*"T.*":\ //' | sed 's/\ *,$//'` +Z_1R500=`\grep '"Z(0\.1.*R500' ${JSON_FILE} | sed 's/.*"Z.*":\ //' | sed 's/\ *,$//'` +Z_1ERR=`\grep '"Z_err(.*0\.1.*R500' ${JSON_FILE} | sed 's/.*"Z.*":\ //' | sed 's/\ *,$//'` +Z_1ERR_L=`\grep '"Z_err_l.*0\.1.*R500' ${JSON_FILE} | sed 's/.*"Z.*":\ //' | sed 's/\ *,$//'` +Z_1ERR_U=`\grep '"Z_err_u.*0\.1.*R500' ${JSON_FILE} | sed 's/.*"Z.*":\ //' | sed 's/\ *,$//'` +T_2R500=`\grep '"T(0\.2.*R500' ${JSON_FILE} | sed 's/.*"T.*":\ //' | sed 's/\ *,$//'` +T_2ERR=`\grep '"T_err(.*0\.2.*R500' ${JSON_FILE} | sed 's/.*"T.*":\ //' | sed 's/\ *,$//'` +T_2ERR_L=`\grep '"T_err_l.*0\.2.*R500' ${JSON_FILE} | sed 's/.*"T.*":\ //' | sed 's/\ *,$//'` +T_2ERR_U=`\grep '"T_err_u.*0\.2.*R500' ${JSON_FILE} | sed 's/.*"T.*":\ //' | sed 's/\ *,$//'` +Z_2R500=`\grep '"Z(0\.2.*R500' ${JSON_FILE} | sed 's/.*"Z.*":\ //' | sed 's/\ *,$//'` +Z_2ERR=`\grep '"Z_err(.*0\.2.*R500' ${JSON_FILE} | sed 's/.*"Z.*":\ //' | sed 's/\ *,$//'` +Z_2ERR_L=`\grep '"Z_err_l.*0\.2.*R500' ${JSON_FILE} | sed 's/.*"Z.*":\ //' | sed 's/\ *,$//'` +Z_2ERR_U=`\grep '"Z_err_u.*0\.2.*R500' ${JSON_FILE} | sed 's/.*"Z.*":\ //' | sed 's/\ *,$//'`  [ -z "${T_1R500}" ]  && T_1R500="null"  [ -z "${T_1ERR}" ]   && T_1ERR="null"  [ -z "${T_1ERR_L}" ] && T_1ERR_L="null" diff --git a/scripts/chandra_gensbpreg.sh b/scripts/chandra_gensbpreg.sh index ecc1fe9..9a2014e 100755 --- a/scripts/chandra_gensbpreg.sh +++ b/scripts/chandra_gensbpreg.sh @@ -14,7 +14,13 @@  ## Author: Zhenghao ZHU  ## Created: ??? (TODO)  ## +UPDATED="2015/06/03"  ## ChangeLogs: +## v3.0, 2015/06/03, Aaron LI +##   * Copy needed pfiles to current working directory, and +##     set environment variable $PFILES to use these first. +##   * Added missing punlearn +##   * Removed the section of dmlist.par & dmextract.par deletion  ## v2.1, 2015/02/13, Weitian LI  ##   * added '1' to denominators when calculate STN to avoid division by zero  ##   * added script description @@ -22,7 +28,6 @@  ##   * added the parameter `-t' to print STN results for testing  ## -UPDATED="2015/02/13"  # minimal counts  CNT_MIN=50 @@ -35,11 +40,26 @@ CH_HI=479  CH_BKG_LOW=651  CH_BKG_HI=822 +## prepare parameter files (pfiles) {{{ +CIAO_TOOLS="dmstat dmlist dmextract" + +# 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 }}} +  if [ $# -lt 6 ]; then      printf "usage:\n"      printf "    `basename $0` <evt> <evt_e> <x> <y> <bkg_pi> <reg_out>\n"      printf "    `basename $0` -t <evt> <evt_e> <x> <y> <bkg_pi> <rin1> ...\n" +    printf "updated:\n" +    printf "    ${UPDATED}\n"      exit 1  fi @@ -59,10 +79,11 @@ if [ "x$1" = "x-t" ] && [ $# -ge 7 ]; then          TMP_SPC="_tmpspc.pi"          punlearn dmextract          dmextract infile="${EVT}[sky=${TMP_REG}][bin pi]" outfile=${TMP_SPC} wmap="[energy=300:12000][bin det=8]" clobber=yes -        INDEX_SRC=`dmstat "${TMP_SPC}[channel=${CH_BKG_LOW}:${CH_BKG_HI}][cols counts]" | grep "sum:" | awk '{print $2}'` -        INDEX_BKG=`dmstat "${BKGSPC}[channel=${CH_BKG_LOW}:${CH_BKG_HI}][cols counts]" | grep "sum:" | awk '{print $2}'` -        COUNT_SRC=`dmstat "${TMP_SPC}[channel=${CH_LOW}:${CH_HI}][cols counts]" | grep "sum:" | awk '{print $2}'` -        COUNT_BKG=`dmstat "${BKGSPC}[channel=${CH_LOW}:${CH_HI}][cols counts]" | grep "sum:" | awk '{print $2}'` +        punlearn dmstat +        INDEX_SRC=`dmstat "${TMP_SPC}[channel=${CH_BKG_LOW}:${CH_BKG_HI}][cols counts]" | \grep "sum:" | awk '{print $2}'` +        INDEX_BKG=`dmstat "${BKGSPC}[channel=${CH_BKG_LOW}:${CH_BKG_HI}][cols counts]" | \grep "sum:" | awk '{print $2}'` +        COUNT_SRC=`dmstat "${TMP_SPC}[channel=${CH_LOW}:${CH_HI}][cols counts]" | \grep "sum:" | awk '{print $2}'` +        COUNT_BKG=`dmstat "${BKGSPC}[channel=${CH_LOW}:${CH_HI}][cols counts]" | \grep "sum:" | awk '{print $2}'`          # echo "CNT_SRC: ${COUNT_SRC}, IDX_SRC: ${INDEX_SRC}, CNT_BKG: ${COUNT_BKG}, IDX_BKG: ${INDEX_BKG}"          # exit          STN=`echo ${COUNT_SRC} ${INDEX_SRC} ${COUNT_BKG} ${INDEX_BKG} | awk '{ printf("%f",$1/$2/$3*$4) }'` @@ -88,13 +109,6 @@ echo "Y:        ${Y}"  echo "BKGSPC:   ${BKGSPC}"  echo "" -### -printf "## remove dmlist.par dmextract.par\n" -DMLIST_PAR="$HOME/cxcds_param4/dmlist.par" -DMEXTRACT_PAR="$HOME/cxcds_param4/dmextract.par" -[ -f "${DMLIST_PAR}" ] && rm -f ${DMLIST_PAR} -[ -f "${DMEXTRACT_PAR}" ] && rm -f ${DMEXTRACT_PAR} -  RIN=0  ROUT=0  CNTS=0 @@ -102,11 +116,13 @@ for i in `seq 1 10`; do      printf "gen reg #$i @ cnts:${CNT_MIN} ...\n"      ROUT=`expr $RIN + 5`      TMP_REG="pie($X,$Y,$RIN,$ROUT,0,360)" -    CNTS=`dmlist "${EVT_E}[sky=${TMP_REG}]" blocks | grep 'EVENTS' | awk '{ print $8 }'` +    punlearn dmlist +    CNTS=`dmlist "${EVT_E}[sky=${TMP_REG}]" blocks | \grep 'EVENTS' | awk '{ print $8 }'`      while [ `echo "$CNTS < $CNT_MIN" | bc -l` -eq 1 ]; do          ROUT=`expr $ROUT + 1`          TMP_REG="pie($X,$Y,$RIN,$ROUT,0,360)" -        CNTS=`dmlist "${EVT_E}[sky=${TMP_REG}]" blocks | grep 'EVENTS' | awk '{ print $8 }'` +        punlearn dmlist +        CNTS=`dmlist "${EVT_E}[sky=${TMP_REG}]" blocks | \grep 'EVENTS' | awk '{ print $8 }'`      done      TMP_REG="pie($X,$Y,$RIN,$ROUT,0,360)"      echo "${TMP_REG}" >> ${REG_OUT} @@ -134,18 +150,20 @@ while [ `echo "${STN} > 1.5" | bc -l` -eq 1 ]; do      TMP_SPC=_tmpspc.pi      punlearn dmextract      dmextract infile="${EVT}[sky=${TMP_REG}][bin pi]" outfile=${TMP_SPC} wmap="[energy=300:12000][bin det=8]" clobber=yes -    INDEX_SRC=`dmstat "${TMP_SPC}[channel=${CH_BKG_LOW}:${CH_BKG_HI}][cols counts]" | grep "sum:" | awk '{print $2}'` -    INDEX_BKG=`dmstat "${BKGSPC}[channel=${CH_BKG_LOW}:${CH_BKG_HI}][cols counts]" | grep "sum:" | awk '{print $2}'` +    punlearn dmstat +    INDEX_SRC=`dmstat "${TMP_SPC}[channel=${CH_BKG_LOW}:${CH_BKG_HI}][cols counts]" | \grep "sum:" | awk '{print $2}'` +    INDEX_BKG=`dmstat "${BKGSPC}[channel=${CH_BKG_LOW}:${CH_BKG_HI}][cols counts]" | \grep "sum:" | awk '{print $2}'` -    COUNT_SRC=`dmstat "${TMP_SPC}[channel=${CH_LOW}:${CH_HI}][cols counts]" | grep "sum:" | awk '{print $2}'` -    COUNT_BKG=`dmstat "${BKGSPC}[channel=${CH_LOW}:${CH_HI}][cols counts]" | grep "sum:" | awk '{print $2}'` +    COUNT_SRC=`dmstat "${TMP_SPC}[channel=${CH_LOW}:${CH_HI}][cols counts]" | \grep "sum:" | awk '{print $2}'` +    COUNT_BKG=`dmstat "${BKGSPC}[channel=${CH_LOW}:${CH_HI}][cols counts]" | \grep "sum:" | awk '{print $2}'`      #echo "CNT_SRC: ${COUNT_SRC}, IDX_SRC: ${INDEX_SRC}, CNT_BKG: ${COUNT_BKG}, IDX_BKG: ${INDEX_BKG}"      #exit 99      # Add '1' to the denominators to avoid division by zero.      STN=`echo ${COUNT_SRC} ${INDEX_SRC} ${COUNT_BKG} ${INDEX_BKG} | awk '{ printf("%f", ($1 / ($2 + 1)) / ($3 / ($4 + 1))) }'` -    CNT=`dmlist "${EVT_E}[sky=${TMP_REG}]" blocks | grep 'EVENTS' | awk '{ print $8 }'` +    punlearn dmlist +    CNT=`dmlist "${EVT_E}[sky=${TMP_REG}]" blocks | \grep 'EVENTS' | awk '{ print $8 }'`      echo "CNT: ${CNT}"      echo "CNT_MIN: ${CNT_MIN}"      if [ `echo "${CNT} < ${CNT_MIN}" | bc -l` -eq 1 ]; then  diff --git a/scripts/chandra_genspcreg.sh b/scripts/chandra_genspcreg.sh index 5099136..2c0a8d3 100755 --- a/scripts/chandra_genspcreg.sh +++ b/scripts/chandra_genspcreg.sh @@ -1,9 +1,42 @@  #!/bin/sh +## +## This script generate a series of regions for the extraction of +## radial surface brightness profile (SBP). +## +## Regions geneartion algorithm: +## (TODO) +## +## Author: Zhenghao ZHU +## Created: ??? +## +UPDATED="2015/06/03" +## ChangeLogs: +## v2.0, 2015/06/03, Aaron LI +##   * Copy needed pfiles to current working directory, and +##     set environment variable $PFILES to use these first. +##   * Added missing punlearn +##   * Removed the section of dmlist.par & dmextract.par deletion +## + +## prepare parameter files (pfiles) {{{ +CIAO_TOOLS="dmstat dmlist dmextract" + +# 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 }}}  if [ $# -ne 6 ] ; then -   printf "usage:\n" -   printf " `basename $0` <evt> <evt_e> <bkg_pi> <x> <y>  <reg_out>\n" -   exit 1 +    printf "usage:\n" +    printf " `basename $0` <evt> <evt_e> <bkg_pi> <x> <y>  <reg_out>\n" +    printf "updated:\n" +    printf "    ${UPDATED}\n" +    exit 1  fi  EVT=$1 @@ -21,13 +54,6 @@ echo "X:        ${X}"  echo "Y:        ${Y}"  echo "" -### -printf "## remove dmlist.par dmextract.par\n" -DMLIST_PAR="$HOME/cxcds_param4/dmlist.par" -DMEXTRACT_PAR="$HOME/cxcds_param4/dmextract.par" -[ -f "${DMLIST_PAR}" ] && rm -fv ${DMLIST_PAR} -[ -f "${DMEXTRACT_PAR}" ] && rm -fv ${DMEXTRACT_PAR} -  #min counts  CNT_MIN=2500  #singal to noise @@ -49,7 +75,6 @@ STN_FILE="spc_stn.dat"  [ -e ${STN_FILE} ] && mv -fv ${STN_FILE} ${STN_FILE}_bak  i=0  while [ `echo "$STN > 2 "| bc -l` -eq 1 ]  ; do -    ## LIweitiaNux      if [ `echo "$ROUT > $ROUT_MAX" | bc -l` -eq 1 ]; then          break      fi @@ -64,23 +89,26 @@ while [ `echo "$STN > 2 "| bc -l` -eq 1 ]  ; do          ROUT=5      fi      TMP_REG="pie($X,$Y,$RIN,$ROUT,0,360)" -    CNTS=`dmlist "${EVT_E}[sky=${TMP_REG}]" blocks | grep 'EVENTS' | awk '{print $8}'` +    punlearn dmlist +    CNTS=`dmlist "${EVT_E}[sky=${TMP_REG}]" blocks | \grep 'EVENTS' | awk '{print $8}'`      while [ ${CNTS} -lt ${CNT_MIN} ]; do          ROUT=`expr $ROUT + 1 `          if [ `echo "$ROUT > $ROUT_MAX" | bc -l` -eq 1 ]; then              break          fi          TMP_REG="pie($X,$Y,$RIN,$ROUT,0,360)" -        CNTS=`dmlist "${EVT_E}[sky=${TMP_REG}]" blocks | grep 'EVENTS' | awk '{print $8}'` +        punlearn dmlist +        CNTS=`dmlist "${EVT_E}[sky=${TMP_REG}]" blocks | \grep 'EVENTS' | awk '{print $8}'`      done      TMP_SPC=_tmpspc.pi      punlearn dmextract      dmextract infile="${EVT}[sky=${TMP_REG}][bin pi]" outfile=${TMP_SPC} wmap="[energy=300:12000][bin tdet=8]" clobber=yes -    INDEX_SRC=`dmstat "${TMP_SPC}[channel=${CH_BKG_LOW}:${CH_BKG_HI}][cols counts]"  | grep "sum:" | awk '{print $2}' ` -    INDEX_BKG=`dmstat "${BKGSPC}[channel=${CH_BKG_LOW}:${CH_BKG_HI}][cols counts]" | grep "sum:" | awk '{print $2}' ` +    punlearn dmstat +    INDEX_SRC=`dmstat "${TMP_SPC}[channel=${CH_BKG_LOW}:${CH_BKG_HI}][cols counts]"  | \grep "sum:" | awk '{print $2}' ` +    INDEX_BKG=`dmstat "${BKGSPC}[channel=${CH_BKG_LOW}:${CH_BKG_HI}][cols counts]" | \grep "sum:" | awk '{print $2}' ` -    COUNT_SRC=`dmstat "${TMP_SPC}[channel=${CH_LOW}:${CH_HI}][cols counts]" | grep "sum:" | awk '{print $2}' ` -    COUNT_BKG=`dmstat "${BKGSPC}[channel=${CH_LOW}:${CH_HI}][cols counts]" | grep "sum:" | awk '{print $2}' ` +    COUNT_SRC=`dmstat "${TMP_SPC}[channel=${CH_LOW}:${CH_HI}][cols counts]" | \grep "sum:" | awk '{print $2}' ` +    COUNT_BKG=`dmstat "${BKGSPC}[channel=${CH_LOW}:${CH_HI}][cols counts]" | \grep "sum:" | awk '{print $2}' `      if [ ${INDEX_SRC} -eq 0 ] ;then           STN=10000      else @@ -89,7 +117,7 @@ while [ `echo "$STN > 2 "| bc -l` -eq 1 ]  ; do      echo "  STN: ${STN}"      echo "${STN}" >> "${STN_FILE}"  done -## LIweitiaNux +  ## fix 'i', to consistent with the actual annuluses  i=`expr $i - 1` @@ -104,7 +132,8 @@ if [ $i -lt 3 ]; then  elif [ $i -gt 6 ]; then      mv -fv ${REG_OUT} ${REG_OUT}_2500bak      CNTS=0 -    CNTS_TOTAL=`dmlist "${EVT_E}[sky=pie($X,$Y,0,$RIN,0,360)]" blocks | grep 'EVENTS' | awk '{print $8}'` +    punlearn dmlist +    CNTS_TOTAL=`dmlist "${EVT_E}[sky=pie($X,$Y,0,$RIN,0,360)]" blocks | \grep 'EVENTS' | awk '{print $8}'`      CNTS_USE=`echo "${CNTS_TOTAL} 6" | awk '{printf("%d", $1/$2)}'`      echo "CNT_USE: ${CNT_USE}"      printf "*** too many annulus ***\n" @@ -119,7 +148,8 @@ elif [ $i -gt 6 ]; then                 break             fi             TMP_REG="pie($X,$Y,$RIN,$ROUT,0,360)" -           CNTS=`dmlist "${EVT_E}[sky=${TMP_REG}]" blocks | grep 'EVENTS' | awk '{print $8}'` +           punlearn dmlist +           CNTS=`dmlist "${EVT_E}[sky=${TMP_REG}]" blocks | \grep 'EVENTS' | awk '{print $8}'`         done         j=`expr $j + 1 `         echo "${TMP_REG}" >> ${REG_OUT} diff --git a/scripts/chandra_pb_flux.sh b/scripts/chandra_pb_flux.sh index d6860f8..59d4418 100755 --- a/scripts/chandra_pb_flux.sh +++ b/scripts/chandra_pb_flux.sh @@ -4,25 +4,48 @@  # 9.5-12.0 keV (channel: 651-822)  # PI = [ energy(eV) / 14.6 eV + 1 ]  # -# LIweitiaNux <liweitianux@gmail.com> -# July 30, 2012 +# Weitian <liweitianux@gmail.com> +# 2012/07/30  #  # ChangeLog: -#   v1.1: August 2, 2012 -#       fix bugs with scientific notation in `bc' +# v2.0, 2015/06/03, Aaron LI +#   * Copy needed pfiles to tmp directory, +#     set environment variable $PFILES to use these first. +#     and remove them after usage. +# v1.1: August 2, 2012 +#   * fix bugs with scientific notation in `bc'  # -if [ $# -eq 0 ]; then +if [ $# -eq 0 ] || [ "x$1" = "x-h" ]; then      echo "usage:"      echo "    `basename $0` <spec> ..."      exit 1  fi  ## energy range: 9.5 -- 12.0 keV +EN_LOW="9.5" +EN_HI="12.0"  CH_LOW=651  CH_HI=822 -echo "CHANNEL: $CH_LOW -- $CH_HI" +echo "Energy: $EN_LOW -- $EN_HI (keV)" +echo "Channel: $CH_LOW -- $CH_HI" + +## prepare parameter files (pfiles) {{{ +CIAO_TOOLS="dmstat dmkeypar" + +PFILES_TMPDIR="/tmp/pfiles-$$" +[ -d "${PFILES_TMPDIR}" ] && rm -rf ${PFILES_TMPDIR} || mkdir ${PFILES_TMPDIR} + +# Copy necessary pfiles for localized usage +for tool in ${CIAO_TOOLS}; do +    pfile=`paccess ${tool}` +    [ -n "${pfile}" ] && punlearn ${tool} && cp -Lvf ${pfile} ${PFILES_TMPDIR}/ +done + +# Modify environment variable 'PFILES' to use local pfiles first +export PFILES="${PFILES_TMPDIR}:${PFILES}" +## pfiles }}}  while ! [ -z $1 ]; do      f=$1 @@ -41,3 +64,6 @@ while ! [ -z $1 ]; do      echo "    ${PB_FLUX}"  done +# clean pfiles +rm -rf ${PFILES_TMPDIR} + diff --git a/scripts/chandra_update_xcentroid.sh b/scripts/chandra_update_xcentroid.sh index 3f2a907..958942d 100755 --- a/scripts/chandra_update_xcentroid.sh +++ b/scripts/chandra_update_xcentroid.sh @@ -2,25 +2,24 @@  #  unalias -a  export LC_COLLATE=C -########################################################### -## based on `ciao_expcorr_sbp.sh'                        ## -## get `xcentroid' from region `sbprofile.reg'           ## -## convert from physical coords to WCS corrds            ## -## add/update xcentroid WCS to info.json                 ## -##                                                       ## -## LIweitiaNux <liweitianux@gmail.com>                   ## -## 2013/05/29                                            ## -########################################################### - -########################################################### +## +## based on `ciao_expcorr_sbp.sh' +## get `xcentroid' from region `sbprofile.reg' +## convert from physical coords to WCS corrds +## add/update xcentroid WCS to info.json +## +## Weitian LI <liweitianux@gmail.com> +## 2013/05/29 +## +VERSION="v2.0" +UPDATED="2015/06/03" +##  ## ChangeLogs: -## v1.0, 2013/05/29, LIweitiaNux -########################################################### - -## about, used in `usage' {{{ -VERSION="v1.0" -UPDATE="2013-05-29" -## about }}} +## v2.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' +##  ## error code {{{  ERR_USG=1 @@ -46,7 +45,7 @@ case "$1" in          printf "usage:\n"          printf "    `basename $0` evt=<evt_file> reg=<sbp_reg> basedir=<base_dir> info=<INFO.json> update=<yes|no>\n"          printf "\nversion:\n" -        printf "${VERSION}, ${UPDATE}\n" +        printf "${VERSION}, ${UPDATED}\n"          exit ${ERR_USG}          ;;  esac @@ -55,7 +54,7 @@ esac  ## default parameters {{{  # default `event file' which used to match `blanksky' files  #DFT_EVT="_NOT_EXIST_" -DFT_EVT="`ls evt2*_clean.fits 2> /dev/null`" +DFT_EVT="`\ls evt2*_clean.fits 2> /dev/null`"  # default dir which contains `asols, asol.lis, ...' files  # DFT_BASEDIR="_NOT_EXIST_"  DFT_BASEDIR=".." @@ -146,8 +145,8 @@ printf "## use basedir: \`${BASEDIR}'\n" | ${TOLOG}  # check INFO.json file  if [ ! -z "${info}" ] && [ -r "${BASEDIR}/${info}" ]; then      INFO_JSON="${info}" -elif [ "`ls ${BASEDIR}/${DFT_INFO_PAT} | wc -l`" -eq 1 ]; then -    INFO_JSON=`( cd ${BASEDIR} && ls ${DFT_INFO_PAT} )` +elif [ "`\ls ${BASEDIR}/${DFT_INFO_PAT} | wc -l`" -eq 1 ]; then +    INFO_JSON=`( cd ${BASEDIR} && \ls ${DFT_INFO_PAT} )`  else      read -p "> info json file: " INFO_JSON      if ! [ -r "${BASEDIR}/${INFO_JSON}" ]; then @@ -172,14 +171,27 @@ else  fi  ## parameters }}} +## prepare parameter files (pfiles) {{{ +CIAO_TOOLS="dmcoords" + +# 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 process {{{  # asolis -ASOLIS=`( cd ${BASEDIR} && ls ${DFT_ASOLIS_PAT} 2> /dev/null )` +ASOLIS=`( cd ${BASEDIR} && \ls ${DFT_ASOLIS_PAT} 2> /dev/null )`  # get (x,y) from sbp region  printf "get (x,y) from ${SBP_REG}\n" -X=`grep -iE '(pie|annulus)' ${SBP_REG} | head -n 1 | awk -F',' '{ print $1 }' | tr -d 'a-zA-Z() '` -Y=`grep -iE '(pie|annulus)' ${SBP_REG} | head -n 1 | awk -F',' '{ print $2 }' | tr -d 'a-zA-Z() '` +X=`\grep -iE '(pie|annulus)' ${SBP_REG} | head -n 1 | awk -F',' '{ print $1 }' | tr -d 'a-zA-Z() '` +Y=`\grep -iE '(pie|annulus)' ${SBP_REG} | head -n 1 | awk -F',' '{ print $2 }' | tr -d 'a-zA-Z() '`  # dmcoords to convert (x,y) to (ra,dec)  printf "\`dmcoords' to convert (x,y) to (ra,dec) ...\n" @@ -194,7 +206,7 @@ printf "## (ra,dec): ($RA,$DEC)\n"  if [ "${F_UPDATE}" = "YES" ]; then      cp -f ${INFO_JSON} ${INFO_JSON}_bak      printf "update xcentroid for info.json ...\n" -    if grep -qE 'XCNTRD_(RA|DEC)' ${INFO_JSON}; then +    if \grep -qE 'XCNTRD_(RA|DEC)' ${INFO_JSON}; then          printf "update ...\n"          sed -i'' "s/XCNTRD_RA.*$/XCNTRD_RA\":\ \"${RA}\",/" ${INFO_JSON}          sed -i'' "s/XCNTRD_DEC.*$/XCNTRD_DEC\":\ \"${DEC}\",/" ${INFO_JSON} diff --git a/scripts/chandra_xcentroid.sh b/scripts/chandra_xcentroid.sh index 14be6a5..5a1e908 100755 --- a/scripts/chandra_xcentroid.sh +++ b/scripts/chandra_xcentroid.sh @@ -12,25 +12,27 @@  ## if `DETNAM' has `0123', then `ACIS-I'                 ##  ## if `DETNAM' has `7', then `ACIS-S'                    ##  ##                                                       ## -## LIweitiaNux <liweitianux@gmail.com>                   ## -## November 8, 2012                                      ## -########################################################### - +## Weitian LI <liweitianux@gmail.com>                    ## +## 2012/11/08                                            ##  ########################################################### +## +VERSION="v3.0" +UPDATED="2015/06/03" +##  ## ChangeLogs: -## v2.1, 2013/10/12, LIweitiaNux +## 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, LIweitiaNux +## v2.0, 2013/01/22, Weitian LI  ##   aconvolve switch -##   add iterations for better confidence -## v1.1, 2012/11/08, LIweitiaNux +##   add iterations for better accuracy +## v1.1, 2012/11/08, Weitian LI  ##   get x-ray peak coord from given region file -########################################################### - -## about, used in `usage' {{{ -VERSION="v2.1" -UPDATE="2013-10-12" -## about }}} +##  ## error code {{{  ERR_USG=1 @@ -53,7 +55,7 @@ case "$1" in          printf "usage:\n"          printf "    `basename $0` evt=<evt_cl> reg=<reg> [ asol=<asol> chip=<chip> ] [ conv=yes|No ]\n"          printf "\nversion:\n" -        printf "${VERSION}, ${UPDATE}\n" +        printf "${VERSION}, ${UPDATED}\n"          exit ${ERR_USG}          ;;  esac @@ -78,11 +80,11 @@ 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`" +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`" +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`" +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 @@ -153,8 +155,8 @@ else  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 }'` +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" @@ -181,12 +183,12 @@ else      # determine chip by ACIS type      punlearn dmkeypar      DETNAM=`dmkeypar ${EVT} DETNAM echo=yes` -    if echo ${DETNAM} | grep -q 'ACIS-0123'; then +    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 +    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" @@ -198,13 +200,18 @@ else  fi  ## parameters }}} -## dmstat.par {{{ -## 2013/02/07, LIweitiaNux -## for some unknown reason, the wrong parameter file will cause dmstat failed to run -printf "remove \`dmstat.par' ...\n" -DMSTAT_PAR="$HOME/cxcds_param4/dmstat.par" -[ -f "${DMSTAT_PAR}" ] && rm -fv ${DMSTAT_PAR} -## dmstat.par }}} +## prepare parameter files (pfiles) {{{ +CIAO_TOOLS="dmkeypar dmcopy dmstat dmcoords skyfov aconvolve" + +# 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 {{{  # generate `skyfov' @@ -244,7 +251,6 @@ 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=1      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` diff --git a/scripts/chandra_xpeak_coord.sh b/scripts/chandra_xpeak_coord.sh index 8b0644a..beb2698 100755 --- a/scripts/chandra_xpeak_coord.sh +++ b/scripts/chandra_xpeak_coord.sh @@ -12,20 +12,21 @@  ## if `DETNAM' has `0123', then `ACIS-I'                 ##  ## if `DETNAM' has `7', then `ACIS-S'                    ##  ##                                                       ## -## LIweitiaNux <liweitianux@gmail.com>                   ## -## November 8, 2012                                      ## -########################################################### - +## Weitian LI <liweitianux@gmail.com>                    ## +## 2012/11/08                                            ##  ########################################################### +## +VERSION="v2.0" +UPDATED="2015/06/03" +##  ## ChangeLogs: -## v1.1, 2012/11/08, LIweitiaNux +## v2.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' +## v1.1, 2012/11/08, Weitian LI  ##   get x-ray peak coord from given region file -########################################################### - -## about, used in `usage' {{{ -VERSION="v1.1" -UPDATE="2012-11-08" -## about }}} +##  ## error code {{{  ERR_USG=1 @@ -48,7 +49,7 @@ case "$1" in          printf "usage:\n"          printf "    `basename $0` evt=<evt_cl> asol=<asol> [ reg=<reg> chip=<chip> ]\n"          printf "\nversion:\n" -        printf "${VERSION}, ${UPDATE}\n" +        printf "${VERSION}, ${UPDATED}\n"          exit ${ERR_USG}          ;;  esac @@ -56,11 +57,11 @@ esac  ## default parameters {{{  # default `evt clean file' -DFT_EVT="`ls evt*clean.fits *clean*evt*.fits 2> /dev/null | head -n 1`" +DFT_EVT="`\ls evt*clean.fits *clean*evt*.fits 2> /dev/null | head -n 1`"  # default `asol file' -DFT_ASOL="`ls ../pcadf*_asol1.fits pcadf*_asol1.fits 2> /dev/null | head -n 1`" +DFT_ASOL="`\ls ../pcadf*_asol1.fits 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`" +DFT_REG="`\ls sbprofile.reg rspec.reg 2> /dev/null | head -n 1`"  ## default parameters }}}  ## functions {{{ @@ -128,12 +129,12 @@ else      # determine chip by ACIS type      punlearn dmkeypar      DETNAM=`dmkeypar ${EVT} DETNAM echo=yes` -    if echo ${DETNAM} | grep -q 'ACIS-0123'; then +    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 +    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" @@ -145,6 +146,19 @@ else  fi  ## parameters }}} +## prepare parameter files (pfiles) {{{ +CIAO_TOOLS="dmkeypar dmcopy dmstat dmcoords skyfov aconvolve" + +# 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 {{{  # generate `skyfov'  SKYFOV="_skyfov.fits" @@ -199,8 +213,8 @@ printf "  (RA,DEC):   (${MAX_RA},${MAX_DEC})\n"  ## region file based {{{  if [ -r "${REG}" ]; then -    MAX_X2=`grep -iE '(pie|annulus)' ${REG} | head -n 1 | tr -d 'a-zA-Z()' | awk -F',' '{ print $1 }'` -    MAX_Y2=`grep -iE '(pie|annulus)' ${REG} | head -n 1 | tr -d 'a-zA-Z()' | awk -F',' '{ print $2 }'` +    MAX_X2=`\grep -iE '(pie|annulus)' ${REG} | head -n 1 | tr -d 'a-zA-Z()' | awk -F',' '{ print $1 }'` +    MAX_Y2=`\grep -iE '(pie|annulus)' ${REG} | head -n 1 | tr -d 'a-zA-Z()' | awk -F',' '{ print $2 }'`      punlearn dmcoords      dmcoords infile="${EVT}" asolfile="${ASOL}" option=sky x=${MAX_X2} y=${MAX_Y2}      MAX_RA2=`pget dmcoords ra` diff --git a/scripts/ciao_bkg_spectra.sh b/scripts/ciao_bkg_spectra.sh index 4cb8475..96560e6 100755 --- a/scripts/ciao_bkg_spectra.sh +++ b/scripts/ciao_bkg_spectra.sh @@ -1,8 +1,6 @@ -#!/bin/sh - +#!/bin/sh  # -trap date INT  unalias -a -export GREP_OPTIONS=""  export LC_COLLATE=C  ###########################################################  ## extract background spectra from src and blanksky      ## @@ -15,14 +13,22 @@ export LC_COLLATE=C  ## Ref: CIAO v4.4 region bugs                            ##  ## http://cxc.harvard.edu/ciao/bugs/regions.html#bug-12187  ##                                                       ## -## LIweitiaNux, July 24, 2012                            ## +## Weitian LI                                            ## +## 2012/07/24                                            ##  ########################################################### -########################################################### +VERSION="v5.0" +UPDATED="2015/06/02"  # ChangeLogs: -# v3, 2012/08/09 -#   fix `scientific notation' for `bc' -#   change `spec group' method to `min 15' +# v5.0, 2015/06/02, Aaron LI +#   * Removed 'GREP_OPTIONS' and replace 'grep' with '\grep' +#   * Removed 'trap INT date' +#   * Copy needed pfiles to current working directory, and +#     set environment variable $PFILES to use these first. +#   * replaced 'grppha' with 'dmgroup' to group spectra +#     (dmgroup will add history to fits file, while grppha NOT) +# v4.1, 2014/07/29, Weitian LI +#   fix 'pbkfile' parameters for CIAO-4.6  # v4, 2012/08/13  #   add `clobber=yes'  #   improve error code @@ -31,22 +37,22 @@ export LC_COLLATE=C  #     (through cmdline which similar to CIAO,  #     and default filename match patterns)  #   add simple `logging' function -# v4.1, 2014/07/29, Weitian LI -#   fix 'pbkfile' parameters for CIAO-4.6 -########################################################### +# v3, 2012/08/09 +#   fix `scientific notation' for `bc' +#   change `spec group' method to `min 15' +# -## about, used in `usage' {{{ -VERSION="v4" -UPDATE="2012-08-14" -## about }}}  ## usage, help {{{  case "$1" in      -[hH]*|--[hH]*)          printf "usage:\n" -        printf "    `basename $0` evt=<evt2_clean> reg=<reglist> blank=<blanksky_evt> basedir=<base_dir> nh=<nH> z=<redshift> [ grpcmd=<grppha_cmd> log=<log_file> ]\n" +        printf "    `basename $0` evt=<evt2_clean> reg=<reglist> blank=<blanksky_evt> basedir=<base_dir> nh=<nH> z=<redshift> [ grouptype=<NUM_CTS|BIN> grouptypeval=<number> binspec=<binspec> log=<log_file> ]\n" +        printf "\nNotes:\n" +        printf "    If grouptype=NUM_CTS, then grouptypeval required.\n" +        printf "    If grouptype=BIN, then binspec required.\n"          printf "\nversion:\n" -        printf "${VERSION}, ${UPDATE}\n" +        printf "    ${VERSION}, ${UPDATED}\n"          exit ${ERR_USG}          ;;  esac @@ -55,16 +61,18 @@ esac  ## default parameters {{{  # default `event file' which used to match `blanksky' files  #DFT_EVT="_NOT_EXIST_" -DFT_EVT="`ls evt2*_clean.fits`" +DFT_EVT="`\ls evt2*_clean.fits`"  # default `blanksky file'  #DFT_BLANK="_NOT_EXIST_" -DFT_BLANK="`ls blanksky*.fits`" +DFT_BLANK="`\ls blanksky*.fits`"  # default dir which contains `asols, asol.lis, ...' files  #DFT_BASEDIR="_NOT_EXIST_"  DFT_BASEDIR=".." -# default `group command' for `grppha' -#DFT_GRP_CMD="group 1 128 2 129 256 4 257 512 8 513 1024 16" -DFT_GRP_CMD="group min 20" +# default parameters for 'dmgroup' +DFT_GROUPTYPE="NUM_CTS" +DFT_GROUPTYPEVAL="20" +#DFT_GROUPTYPE="BIN" +DFT_BINSPEC="1:128:2,129:256:4,257:512:8,513:1024:16"  # default `log file'  DFT_LOGFILE="bkg_spectra_`date '+%Y%m%d'`.log" @@ -115,7 +123,7 @@ CH_LOW=651  CH_HI=822  pb_flux() {      punlearn dmstat -    COUNTS=`dmstat "$1[channel=${CH_LOW}:${CH_HI}][cols COUNTS]" | grep -i 'sum:' | awk '{ print $2 }'` +    COUNTS=`dmstat "$1[channel=${CH_LOW}:${CH_HI}][cols COUNTS]" | \grep -i 'sum:' | awk '{ print $2 }'`      punlearn dmkeypar      EXPTIME=`dmkeypar $1 EXPOSURE echo=yes`      BACK=`dmkeypar $1 BACKSCAL echo=yes` @@ -222,13 +230,28 @@ fi  # remove the trailing '/'  BASEDIR=`echo ${BASEDIR} | sed 's/\/*$//'`  printf "## use basedir: \`${BASEDIR}'\n" | ${TOLOG} -# check given `grpcmd' -if [ ! -z "${grpcmd}" ]; then -    GRP_CMD="${grpcmd}" +# check given dmgroup parameters: grouptype, grouptypeval, binspec +if [ -z "${grouptype}" ]; then +    GROUPTYPE="${DFT_GROUPTYPE}" +elif [ "x${grouptype}" = "xNUM_CTS" ] || [ "x${grouptype}" = "xBIN" ]; then +    GROUPTYPE="${grouptype}" +else +    printf "ERROR: given grouptype \`${grouptype}' invalid.\n" +    exit ${ERR_GRPTYPE} +fi +printf "## use grouptype: \`${GROUPTYPE}'\n" | ${TOLOG} +if [ ! -z "${grouptypeval}" ]; then +    GROUPTYPEVAL="${grouptypeval}"  else -    GRP_CMD="${DFT_GRP_CMD}" +    GROUPTYPEVAL="${DFT_GROUPTYPEVAL}"  fi -printf "## use grppha cmd: \`${GRP_CMD}'\n" | ${TOLOG} +printf "## use grouptypeval: \`${GROUPTYPEVAL}'\n" | ${TOLOG} +if [ ! -z "${binspec}" ]; then +    BINSPEC="${binspec}" +else +    BINSPEC="${DFT_BINSPEC}" +fi +printf "## use binspec: \`${BINSPEC}'\n" | ${TOLOG}  ## parameters }}}  ## check needed files {{{ @@ -242,7 +265,7 @@ for reg_f in ${REGLIST}; do  done  # check the validity of *pie* regions  printf "check pie reg validity ...\n" -INVALID=`cat ${REGLIST} | grep -i 'pie' | awk -F, '{ print $6 }' | tr -d ')' | awk '$1 > 360'` +INVALID=`cat ${REGLIST} | \grep -i 'pie' | awk -F, '{ print $6 }' | tr -d ')' | awk '$1 > 360'`  if [ "x${INVALID}" != "x" ]; then      printf "WARNING: some pie region's END_ANGLE > 360\n" | ${TOLOG}      printf "    CIAO v4.4 tools may run into trouble\n" @@ -251,28 +274,28 @@ fi  # check files in `basedir'  printf "check needed files in basedir \`${BASEDIR}' ...\n"  # check asolis files -ASOLIS=`ls -1 ${BASEDIR}/${DFT_ASOLIS_PAT} | head -n 1` +ASOLIS=`\ls -1 ${BASEDIR}/${DFT_ASOLIS_PAT} | head -n 1`  if [ -z "${ASOLIS}" ]; then      printf "ERROR: cannot find \"${DFT_ASOLIS_PAT}\" in dir \`${BASEDIR}'\n"      exit ${ERR_ASOL}  fi  printf "## use asolis: \`${ASOLIS}'\n" | ${TOLOG}  # check badpixel file -BPIX=`ls -1 ${BASEDIR}/${DFT_BPIX_PAT} | head -n 1` +BPIX=`\ls -1 ${BASEDIR}/${DFT_BPIX_PAT} | head -n 1`  if [ -z "${BPIX}" ]; then      printf "ERROR: cannot find \"${DFT_BPIX_PAT}\" in dir \`${BASEDIR}'\n"      exit ${ERR_BPIX}  fi  printf "## use badpixel: \`${BPIX}'\n" | ${TOLOG}  # check pbk file -PBK=`ls -1 ${BASEDIR}/${DFT_PBK_PAT} | head -n 1` +PBK=`\ls -1 ${BASEDIR}/${DFT_PBK_PAT} | head -n 1`  if [ -z "${PBK}" ]; then      printf "ERROR: cannot find \"${DFT_PBK_PAT}\" in dir \`${BASEDIR}'\n"      exit ${ERR_PBK}  fi  printf "## use pbk: \`${PBK}'\n" | ${TOLOG}  # check msk file -MSK=`ls -1 ${BASEDIR}/${DFT_MSK_PAT} | head -n 1` +MSK=`\ls -1 ${BASEDIR}/${DFT_MSK_PAT} | head -n 1`  if [ -z "${MSK}" ]; then      printf "ERROR: cannot find \"${DFT_MSK_PAT}\" in dir \`${BASEDIR}'\n"      exit ${ERR_MSK} @@ -280,6 +303,19 @@ fi  printf "## use msk: \`${MSK}'\n" | ${TOLOG}  ## check files }}} +## prepare parameter files (pfiles) {{{ +CIAO_TOOLS="dmstat dmkeypar dmhedit specextract dmextract dmgroup" + +# 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 {{{  ## use 'for' loop to process every region file  for reg_i in ${REGLIST}; do @@ -290,7 +326,7 @@ for reg_i in ${REGLIST}; do      [ -f "${REG_TMP}" ] && rm -fv ${REG_TMP}         # remove tmp files      cp -fv ${reg_i} ${REG_TMP}      # check the validity of *pie* regions {{{ -    INVALID=`grep -i 'pie' ${REG_TMP} | awk -F, '{ print $6 }' | tr -d ')' | awk '$1 > 360'` +    INVALID=`\grep -i 'pie' ${REG_TMP} | awk -F, '{ print $6 }' | tr -d ')' | awk '$1 > 360'`      if [ "x${INVALID}" != "x" ]; then          printf "WARNING: fix for *pie* region in file \`${reg_i}'\n"          cat ${REG_TMP} @@ -303,30 +339,52 @@ for reg_i in ${REGLIST}; do      ## check pie region }}}      LBKG_PI="${reg_i%.reg}.pi" + +    printf "use \`specextract' to generate spectra and response ...\n"      ## use `specextract' to extract local bkg spectrum {{{      # NOTE: set `binarfwmap=2' to save the time for generating `ARF'      # I have tested that this bin factor has little impact on the results.      # NO background response files      # NO background spectrum (generate by self) -    # NO spectrum grouping (group by self using `grppha') +    # NO spectrum grouping (group by self using `dmgroup') +    # Determine parameters for different versions of specextract {{{      # 'pbkfile' parameter deprecated in CIAO-4.6      if `pget specextract pbkfile >/dev/null 2>&1`; then          P_PBKFILE="pbkfile=${PBK}"      else          P_PBKFILE=""      fi -    # -    printf "use \`specextract' to generate spectra and response ...\n" +    # specextract: revision 2013-06: +    # 'correct' parameter renamed to 'correctpsf' +    if `pget specextract correct >/dev/null 2>&1`; then +        P_CORRECT="correct=no" +    else +        P_CORRECT="correctpsf=no" +    fi +    # specextract: revision 2013-12: +    # 'weight' parameter controls whether ONLY ARFs are weighted. +    # 'weight_rmf' added to control whether RMFs are weighted. +    # NOTE:  +    #   (1) only when 'weight=yes' will the 'weight_rmf' parameter be used. +    #   (2) no longer distingush between unweighted and weighted reponses +    #       in file extension; only .arf & .rmf are now used. +    if `pget specextract weight_rmf >/dev/null 2>&1`; then +        P_WEIGHTRMF="weight_rmf=yes" +    else +        P_WEIGHTRMF="" +    fi +    # }}}      punlearn specextract      specextract infile="${EVT}[sky=region(${REG_TMP})]" \          outroot=${LBKG_PI%.pi} bkgfile="" asp="@${ASOLIS}" \ -        ${P_PBKFILE} mskfile="${MSK}" badpixfile="${BPIX}" \ -        weight=yes correct=no bkgresp=no \ +        mskfile="${MSK}" badpixfile="${BPIX}" \ +        ${P_PBKFILE} ${P_CORRECT} \ +        weight=yes ${P_WEIGHTRMF} \          energy="0.3:11.0:0.01" channel="1:1024:1" \ -        combine=no binarfwmap=2 \ +        bkgresp=no combine=no binarfwmap=2 \          grouptype=NONE binspec=NONE \ -        verbose=2 clobber=yes -    # `specextract' }}} +        clobber=yes verbose=2 +    # specextract }}}      ## generate the blanksky bkg spectrum {{{      printf "generate the blanksky bkg spectrum ...\n" @@ -342,11 +400,16 @@ for reg_i in ${REGLIST}; do      ## bkg renorm }}}      ## group spectrum {{{ -    printf "group spectrum using \`grppha'\n" +    # use 'dmgroup' instead of 'grppha', because 'dmgroup' will add +    # command history to FITS header (maybe useful for later reference). +    printf "group spectrum using \`dmgroup'\n"      LBKG_GRP_PI="${LBKG_PI%.pi}_grp.pi" -    grppha infile="${LBKG_PI}" outfile="${LBKG_GRP_PI}" \ -        comm="${GRP_CMD} & exit" clobber=yes > /dev/null -    ## group spectra }}} +    punlearn dmgroup +    dmgroup infile="${LBKG_PI}" outfile="${LBKG_GRP_PI}" \ +        grouptype="${GROUPTYPE}" grouptypeval=${GROUPTYPEVAL} \ +        binspec="${BINSPEC}" xcolumn="CHANNEL" ycolumn="COUNTS" \ +        clobber=yes +    ## group }}}      ## generate a script for XSPEC {{{      XSPEC_XCM="xspec_${LBKG_PI%.pi}_model.xcm" @@ -420,6 +483,5 @@ printf "clean ...\n"  rm -f ${REG_TMP}  printf "DONE\n" -###########################################################  # vim: set ts=8 sw=4 tw=0 fenc=utf-8 ft=sh: # diff --git a/scripts/ciao_blanksky.sh b/scripts/ciao_blanksky.sh index da1d6f6..acd821e 100755 --- a/scripts/ciao_blanksky.sh +++ b/scripts/ciao_blanksky.sh @@ -13,7 +13,8 @@ export LC_COLLATE=C  ## output: `blanksky_c7.fits' for ACIS-S,                ##  ##         `blanksky-c0-3.fits' for ACIS-I               ##  ##                                                       ## -## LIweitiaNux, January 11, 2011                         ## +## Weitian LI                                            ## +## 2011/01/11                                            ##  ###########################################################  ########################################################### @@ -22,10 +23,17 @@ export LC_COLLATE=C  ##   add ACIS-I support (chips 0-3)  ## v3: 2012/08/06, Junhua Gu  ##   pass parameters by cmd line param -## v4: 2012/08/13, LIweitiaNux +## v4: 2012/08/13, Weitian LI  ##   add `clobber=yes' parameters to CIAO tools  ##   improve `commandline arguements'  ##   add `default parameters' +## v5.0, 2015/06/02, Aaron LI +##   * Replaced 'ls' with '\ls' +##   * Copy needed pfiles to current working directory, and +##     set environment variable $PFILES to use these first. +##   * Strip the directory of asol files in the 'asol*.lis' file. +##     CIAO-4.6 save the *absolute path* of asol files in 'asol*.lis', +##     which may cause problems if the data directory was moved later.  ###########################################################  ## about, used in `usage' {{{ @@ -48,7 +56,7 @@ esac  ## default parameters {{{  # default `event file' which used to match `blanksky' files  #DFT_EVT="_NOT_EXIST_" -DFT_EVT="`ls evt2*_clean.fits`" +DFT_EVT="`\ls evt2*_clean.fits`"  # default dir which contains `asols, asol.lis, ...' files  # DFT_BASEDIR="_NOT_EXIST_"  DFT_BASEDIR=".." @@ -140,17 +148,36 @@ printf "## use basedir: \`${BASEDIR}'\n"  ## check files in `basedir' {{{  # check asol files -ASOLIS=`ls -1 ${BASEDIR}/${DFT_ASOLIS_PAT} | head -n 1` +ASOLIS=`\ls -1 ${BASEDIR}/${DFT_ASOLIS_PAT} | head -n 1`  if [ -z ${ASOLIS} ]; then      printf "ERROR: cannot find \"${DFT_ASOLIS_PAT}\" in dir \`${BASEDIR}'\n"      exit ${ERR_ASOL}  fi  printf "## use asolis: \`${ASOLIS}'\n"  ## check files }}} -#exit 0          # test script + +## prepare parameter files (pfiles) {{{ +CIAO_TOOLS="acis_bkgrnd_lookup dmmerge dmcopy dmmakepar dmreadpar reproject_events acis_process_events" + +# 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 start {{{ +# Strip the directory of asol files in the 'asol*.lis' file +# CIAO-4.6 save the absolute path of asol files in 'asol*.lis' file, +# which may cause problems if the data directory was moved later. +mv -fv ${ASOLIS} ${ASOLIS}_bak +awk -F'/' '{ print $NF }' ${ASOLIS}_bak > ${ASOLIS} +  printf "look up coresponding background file ...\n" +punlearn acis_bkgrnd_lookup  BKG_LKP="`acis_bkgrnd_lookup ${EVT}`"  AS_NUM=`echo ${BKG_LKP} | tr ' ' '\n' | \grep 'acis7sD' | wc -l`  AI_NUM=`echo ${BKG_LKP} | tr ' ' '\n' | \grep 'acis[0123]iD' | wc -l` @@ -216,7 +243,7 @@ EVT_HEADER="_evt_header.par"  EVT_PNT="_evt_pnt.par"  punlearn dmmakepar  dmmakepar ${EVT} ${EVT_HEADER} clobber=yes -grep -i '_pnt' ${EVT_HEADER} > ${EVT_PNT} +\grep -i '_pnt' ${EVT_HEADER} > ${EVT_PNT}  punlearn dmreadpar  dmreadpar ${EVT_PNT} "${BKG_ROOT}_orig.fits[EVENTS]" clobber=yes  printf "DONE\n" diff --git a/scripts/ciao_calc_csb.sh b/scripts/ciao_calc_csb.sh index ff922ee..dd44dad 100755 --- a/scripts/ciao_calc_csb.sh +++ b/scripts/ciao_calc_csb.sh @@ -1,15 +1,29 @@  #!/bin/sh  # +# Calculate the Csb values.  # for 'z>0.3' or 'counts_in_0.048R500<500' -# execute this script in dir 'spc/profile'  # -# original filename: 'proxy_calc.sh', by Zhu Zhenhao +# Reference: ??? (TODO) +# +# Note: execute this script in dir 'spc/profile' +# +# origin filename: 'proxy_calc.sh', by Zhenhao ZHU  # modified by: Weitian LI  # -# ChangeLog: -# 2014/12/15: (1) prompt and record the modification to csb region; -#             (2) added 'm' answer for WR: modified. -# 2014/06/18: added answer for WR (warn region) +# +UPDATED="2015/06/03" +# +# Changelogs: +# 2015/06/03, Aaron LI +#   * Copy needed pfiles to current working directory, and +#     set environment variable $PFILES to use these first. +#   * Replaced 'grep' with '\grep', 'ls' with '\ls' +#   * ds9 colormap changed from 'sls' to 'he' +# 2014/12/15, Weitian LI +#   * prompt and record the modification to csb region; +#   * added 'm' answer for WR: modified. +# 2014/06/18, Weitian LI +#   * added answer for WR (warn region)  #  ## error code {{{ @@ -28,7 +42,9 @@ case "$1" in      -[hH]*|--[hH]*)          printf "usage:\n"          printf "    `basename $0` evt_e=<evt_e_name> expmap=<expmap_name> basedir=<base_dir> imgdir=<img_dir> json=<json_name>\n" -        printf "NOTE: exec this script in dir 'spc/profile'\n" +        printf "\nNOTE: exec this script in dir 'spc/profile'\n" +        printf "\nupdated:\n" +        printf "    ${UPDATED}\n"          exit ${ERR_USG}          ;;  esac @@ -114,8 +130,8 @@ printf "## use imgdir: \`${IMG_DIR}'\n"  # info json  if [ ! -z "${json}" ] && [ -r "${BASEDIR}/${json}" ]; then      JSON_FILE="${BASEDIR}/${json}" -elif [ `ls -1 ${BASEDIR}/${DFT_JSON_PAT} 2>/dev/null | wc -l` -eq 1 ]; then -    JSON_FILE="`ls ${BASEDIR}/${DFT_JSON_PAT} 2>/dev/null`" +elif [ `\ls -1 ${BASEDIR}/${DFT_JSON_PAT} 2>/dev/null | wc -l` -eq 1 ]; then +    JSON_FILE="`\ls ${BASEDIR}/${DFT_JSON_PAT} 2>/dev/null`"  else      read -p "> info json: " JSON_FILE      if [ ! -r "${BASEDIR}/${JSON_FILE}" ]; then @@ -127,8 +143,8 @@ printf "## use json_file: \`${JSON_FILE}'\n"  # expmap  if [ ! -z "${expmap}" ] && [ -r "${IMG_DIR}/${expmap}" ]; then      EXPMAP="${expmap}" -elif [ `ls -1 ${IMG_DIR}/${DFT_EXPMAP_PAT} 2>/dev/null | wc -l` -eq 1 ]; then -    EXPMAP="`( cd ${IMG_DIR} && ls ${DFT_EXPMAP_PAT} 2>/dev/null )`" +elif [ `\ls -1 ${IMG_DIR}/${DFT_EXPMAP_PAT} 2>/dev/null | wc -l` -eq 1 ]; then +    EXPMAP="`( cd ${IMG_DIR} && \ls ${DFT_EXPMAP_PAT} 2>/dev/null )`"  else      read -p "> expmap filename: " EXPMAP      if [ ! -r "${IMG_DIR}/${EXPMAP}" ]; then @@ -140,8 +156,8 @@ printf "## use expmap: \`${EXPMAP}'\n"  # evt_e  if [ ! -z "${evt_e}" ] && [ -r "${IMG_DIR}/${evt_e}" ]; then      EVT_E="${evt_e}" -elif [ `ls -1 ${IMG_DIR}/${DFT_EVTE_PAT} 2>/dev/null | wc -l` -eq 1 ]; then -    EVT_E="`( cd ${IMG_DIR} && ls ${DFT_EVTE_PAT} 2>/dev/null )`" +elif [ `\ls -1 ${IMG_DIR}/${DFT_EVTE_PAT} 2>/dev/null | wc -l` -eq 1 ]; then +    EVT_E="`( cd ${IMG_DIR} && \ls ${DFT_EVTE_PAT} 2>/dev/null )`"  else      read -p "> evt_e filename: " EVT_E      if [ ! -r "${IMG_DIR}/${EVT_E}" ]; then @@ -152,16 +168,29 @@ fi  printf "## use evt_e: \`${EVT_E}'\n"  ## }}} +## prepare parameter files (pfiles) {{{ +CIAO_TOOLS="dmlist dmextract" + +# 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 {{{  # in 'spc/profile' -X=`grep -iE '(pie|annulus)' ${RSPEC_REG} | head -n 1 | awk -F'(' '{ print $2 }' | awk -F',' '{ print $1 }'` -Y=`grep -iE '(pie|annulus)' ${RSPEC_REG} | head -n 1 | awk -F'(' '{ print $2 }' | awk -F',' '{ print $2 }'` +X=`\grep -iE '(pie|annulus)' ${RSPEC_REG} | head -n 1 | awk -F'(' '{ print $2 }' | awk -F',' '{ print $1 }'` +Y=`\grep -iE '(pie|annulus)' ${RSPEC_REG} | head -n 1 | awk -F'(' '{ print $2 }' | awk -F',' '{ print $2 }'`  # json file -Z=`grep -i '"redshift"' ${JSON_FILE} | awk -F':' '{ print $2 }' | tr -d ' ,'` -R500=`grep '"R500.*kpc' ${JSON_FILE} | awk -F':' '{ print $2 }' | tr -d ' ,'` -OBS_ID=`grep '"Obs.*ID' ${JSON_FILE} | awk -F':' '{ print $2 }' | tr -d ' ,'` -OBJ_NAME=`grep '"Source\ Name' ${JSON_FILE} | awk -F':' '{ print $2 }' | sed -e 's/\ *"//' -e 's/"\ *,$//'` -#CT=`grep '"Cooling_time' ${JSON_FILE} | awk -F':' '{ print $2 }' | tr -d ' ,'` +Z=`\grep -i '"redshift"' ${JSON_FILE} | awk -F':' '{ print $2 }' | tr -d ' ,'` +R500=`\grep '"R500.*kpc' ${JSON_FILE} | awk -F':' '{ print $2 }' | tr -d ' ,'` +OBS_ID=`\grep '"Obs.*ID' ${JSON_FILE} | awk -F':' '{ print $2 }' | tr -d ' ,'` +OBJ_NAME=`\grep '"Source\ Name' ${JSON_FILE} | awk -F':' '{ print $2 }' | sed -e 's/\ *"//' -e 's/"\ *,$//'` +#CT=`\grep '"Cooling_time' ${JSON_FILE} | awk -F':' '{ print $2 }' | tr -d ' ,'`  cd ${IMG_DIR}  printf "entered img directory\n" @@ -174,13 +203,13 @@ if [ `echo "${Z} < 0.3" | bc -l` -eq 1 ]; then  #    exit ${ERR_Z}  fi -#KPC_PER_PIX=`${COSMO_CALC} ${Z} | grep 'kpc/pixel' | awk '{ print $3 }'` -KPC_PER_PIX=`${COSMO_CALC} ${Z} | grep 'kpc.*pix' | tr -d 'a-zA-Z_#=(),:/ '` +#KPC_PER_PIX=`${COSMO_CALC} ${Z} | \grep 'kpc/pixel' | awk '{ print $3 }'` +KPC_PER_PIX=`${COSMO_CALC} ${Z} | \grep 'kpc.*pix' | tr -d 'a-zA-Z_#=(),:/ '`  RC_PIX=`echo "scale=2; 0.048 * ${R500} / ${KPC_PER_PIX}" | bc -l`  # test counts_in_0.048R500<500?  RC_REG="pie(${X},${Y},0,${RC_PIX},0,360)"  punlearn dmlist -CNT_RC=`dmlist infile="${EVT_E}[sky=${RC_REG}]" opt=block | grep 'EVENTS' | awk '{ print $8 }'` +CNT_RC=`dmlist infile="${EVT_E}[sky=${RC_REG}]" opt=block | \grep 'EVENTS' | awk '{ print $8 }'`  printf "R500=${R500}, 0.048R500_pix=${RC_PIX}, counts_in_0.048R500=${CNT_RC}\n"  if [ ${CNT_RC} -gt 500 ]; then      F_WC=true @@ -202,7 +231,7 @@ _EOF_  printf "CHECK the regions (R1=${R1}, R2=${R2}) ...\n"  printf "modify if necessary and save with the same name: \`${TMP_REG}'\n"  cp -fv ${TMP_REG} ${TMP_REG%.reg}_orig.reg -ds9 ${EVT_E} -regions ${TMP_REG} -cmap sls -bin factor 4 +ds9 ${EVT_E} -regions ${TMP_REG} -cmap he -bin factor 4  read -p "> Whether the region exceeds ccd edge?(No/yes/modified) " WR_ANS  case "${WR_ANS}" in      [yY]*) @@ -220,8 +249,8 @@ esac  punlearn dmextract  dmextract infile="${EVT_E}[bin sky=@${TMP_REG}]" outfile="${TMP_S}" exp=${EXPMAP} opt=generic clobber=yes  punlearn dmlist -S1=`dmlist "${TMP_S}[cols SUR_FLUX]" opt="data,clean" | grep -v '#' | sed -n -e 's/\ *//' -e '1p'` -S2=`dmlist "${TMP_S}[cols SUR_FLUX]" opt="data,clean" | grep -v '#' | sed -n -e 's/\ *//' -e '2p'` +S1=`dmlist "${TMP_S}[cols SUR_FLUX]" opt="data,clean" | \grep -v '#' | sed -n -e 's/\ *//' -e '1p'` +S2=`dmlist "${TMP_S}[cols SUR_FLUX]" opt="data,clean" | \grep -v '#' | sed -n -e 's/\ *//' -e '2p'`  CSB=`echo "${S1} ${S2}" | awk '{ print $1/$2/100 }'`   ## back to original spc/profile directory diff --git a/scripts/ciao_calc_ct.sh b/scripts/ciao_calc_ct.sh index 5f76ed5..58bf566 100755 --- a/scripts/ciao_calc_ct.sh +++ b/scripts/ciao_calc_ct.sh @@ -3,30 +3,34 @@  unalias -a  export LC_COLLATE=C  ########################################################### -## based on `ciao_r500avgt'                              ## -## for calculating the `cooling time '                   ## +## based on `ciao_r500avgt.sh'                           ## +## for calculating the `cooling time'                    ##  ## within (0.-0.048 r500) region                         ##  ##                                                       ## -## Junhua Gu                                             ## -## August 22, 2012                                       ## +## Author: Junhua GU                                     ## +## Created: 2012/08/22                                   ##  ##                                                       ## -## LIweitiaNux                                           ## +## Modified by: Weitian LI                               ##  ## 2013/04/28                                            ##  ########################################################### - -########################################################### -## ChangeLogs -## v1.1, 2014/06/18 -##   'cooling_time2.sh' -> 'ciao_calc_ct.sh' -## v1.2, 2015/05/27, Weitian LI +## +VERSION="v2.0" +UPDATE="2015/06/03" +## +## Changelogs: +## v2.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' +##   * replaced 'grppha' with 'dmgroup' to group spectra +##     (dmgroup will add history to fits file, while grppha NOT) +##   * ds9 colormap changed from 'sls' to 'he' +## v1.2, 2015/05/27, Aaron LI  ##   update 'DFT_ARF' & 'DFT_RMF' to find '*.arf' & '*.rmf' files  ##   (specextract only use .arf & .rmf extensions since revision 2014-12) -########################################################### - -## about, used in `usage' {{{ -VERSION="v1.2" -UPDATE="2015-05-27" -## about }}} +## v1.1, 2014/06/18 +##   'cooling_time2.sh' -> 'ciao_calc_ct.sh' +##  ## error code {{{  ERR_USG=1 @@ -49,17 +53,15 @@ ERR_UNI=61  case "$1" in      -[hH]*|--[hH]*)          printf "usage:\n" -        printf "    `basename $0` basedir=<repro_dir> evt=<evt2_clean> r500=<r500_kpc> regin=<input_reg> regout=<output_reg> bkgd=<blank_evt | lbkg_reg | bkg_spec> nh=<nH> z=<redshift> arf=<arf_file> rmf=<rmf_file> [ grpcmd=<grppha_cmd> log=<log_file> ]\n" +        printf "    `basename $0` basedir=<repro_dir> evt=<evt2_clean> r500=<r500_kpc> regin=<input_reg> regout=<output_reg> bkgd=<blank_evt | lbkg_reg | bkg_spec> nh=<nH> z=<redshift> arf=<arf_file> rmf=<rmf_file> [ grouptype=<NUM_CTS|BIN> grouptypeval=<number> binspec=<binspec> log=<log_file> ]\n"          printf "\nversion:\n" -        printf "${VERSION}, ${UPDATE}\n" +        printf "    ${VERSION}, ${UPDATED}\n"          exit ${ERR_USG}          ;;  esac  ## usage, help }}}  ## comology calculator {{{ -## XXX: MODIFY THIS TO YOUR OWN CASE -## and make sure this `calc' is executable  ## NOTES: use `$HOME' instead of `~' in path  BASE_PATH=`dirname $0`  COSCALC="`which cosmo_calc calc_distance 2>/dev/null | head -n 1`" @@ -72,9 +74,9 @@ fi  ## default parameters {{{  # default `event file' which used to match `blanksky' files  #DFT_EVT="_NOT_EXIST_" -DFT_EVT="`ls evt2*_clean.fits 2> /dev/null`" +DFT_EVT="`\ls evt2*_clean.fits 2> /dev/null`"  # default `bkgd', use `bkgcorr_blanksky*' corrected bkg spectrum -DFT_BKGD="`ls bkgcorr_blanksky_*.pi 2> /dev/null`" +DFT_BKGD="`\ls bkgcorr_blanksky_*.pi 2> /dev/null`"  # default basedir  DFT_BASEDIR="../.."  # default info_json pattern @@ -85,14 +87,14 @@ DFT_REG_IN="rspec.reg"  # default output region file (0.1-0.5 r500 region)  DFT_REG_OUT="cooling.reg"  # default ARF/RMF, the one of the outmost region -DFT_ARF="`ls r1_*.warf r1_*.arf 2> /dev/null`" -DFT_RMF="`ls r1_*.wrmf r1_*.rmf 2> /dev/null`" +DFT_ARF="`\ls r1_*.warf r1_*.arf 2> /dev/null`" +DFT_RMF="`\ls r1_*.wrmf r1_*.rmf 2> /dev/null`" -# default `group command' for `grppha' -#DFT_GRP_CMD="group 1 128 2 129 256 4 257 512 8 513 1024 16" -DFT_GRP_CMD="group min 20" -# default `log file' -DFT_LOGFILE="cooling_`date '+%Y%m%d'`.log" +# default parameters for 'dmgroup' +DFT_GROUPTYPE="NUM_CTS" +DFT_GROUPTYPEVAL="20" +#DFT_GROUPTYPE="BIN" +DFT_BINSPEC="1:128:2,129:256:4,257:512:8,513:1024:16"  INNER=0.0  OUTER=0.048 @@ -102,6 +104,9 @@ XSPEC_SCRIPT="xspec_cooling.xcm"  # deproj xspec script, generated by `deproj_spectra'  # from which get `nh' and `redshift'  XSPEC_DEPROJ="xspec_deproj.xcm" + +# default `log file' +DFT_LOGFILE="cooling_`date '+%Y%m%d'`.log"  ## default parameters }}}  ## functions {{{ @@ -126,7 +131,7 @@ CH_LOW=651  CH_HI=822  pb_flux() {      punlearn dmstat -    COUNTS=`dmstat "$1[channel=${CH_LOW}:${CH_HI}][cols COUNTS]" | grep -i 'sum:' | awk '{ print $2 }'` +    COUNTS=`dmstat "$1[channel=${CH_LOW}:${CH_HI}][cols COUNTS]" | \grep -i 'sum:' | awk '{ print $2 }'`      punlearn dmkeypar      EXPTIME=`dmkeypar $1 EXPOSURE echo=yes`      BACK=`dmkeypar $1 BACKSCAL echo=yes` @@ -179,7 +184,7 @@ if [ ! -r "${XSPEC_DEPROJ}" ]; then      read -p "> value of redshift: " REDSHIFT  else      # get `nh' and `redshift' from xspec script -    LN=`grep -n 'projct\*wabs\*apec' ${XSPEC_DEPROJ} | tail -n 1 | cut -d':' -f1` +    LN=`\grep -n 'projct\*wabs\*apec' ${XSPEC_DEPROJ} | tail -n 1 | cut -d':' -f1`      # calc the line number of which contains `nh'      LN_NH=`expr ${LN} + 4`      NH_XCM=`head -n ${LN_NH} ${XSPEC_DEPROJ} | tail -n 1 | awk '{ print $1 }'` @@ -215,8 +220,8 @@ fi  # json file  if [ ! -z "${json}" ] && [ -r "${BASEDIR}/${json}" ]; then      JSON_FILE="${BASEDIR}/${json}" -elif [ `ls ${BASEDIR}/${DFT_JSON_PAT} 2> /dev/null | wc -l` -eq 1 ]; then -    JSON_FILE=`ls ${BASEDIR}/${DFT_JSON_PAT}` +elif [ `\ls ${BASEDIR}/${DFT_JSON_PAT} 2> /dev/null | wc -l` -eq 1 ]; then +    JSON_FILE=`\ls ${BASEDIR}/${DFT_JSON_PAT}`  else      read -p "> JSON_file: " JSON_FILE      if [ ! -r "${JSON_FILE}" ]; then @@ -227,7 +232,7 @@ fi  printf "## use json_file: \`${JSON_FILE}'\n" | ${TOLOG}  # process `r500' {{{ -R500_RAW=`grep '"R500.*kpc' ${JSON_FILE} | sed 's/.*"R500.*":\ //' | sed 's/\ *,$//'` +R500_RAW=`\grep '"R500.*kpc' ${JSON_FILE} | sed 's/.*"R500.*":\ //' | sed 's/\ *,$//'`  if [ ! -z "${r500}" ]; then      R500_RAW=${r500}  fi @@ -247,7 +252,7 @@ case "${R500_UNI}" in          ;;      *)          printf "## units in \`kpc', convert to \`Chandra pixel'\n" | ${TOLOG} -        KPC_PER_PIX=`${COSCALC} ${REDSHIFT} | grep 'kpc.*pix' | tr -d 'a-zA-Z_#=(),:/ '` +        KPC_PER_PIX=`${COSCALC} ${REDSHIFT} | \grep 'kpc.*pix' | tr -d 'a-zA-Z_#=(),:/ '`          # convert scientific notation for `bc'          KPC_PER_PIX_B=`echo ${KPC_PER_PIX} | sed 's/[eE]/\*10\^/' | sed 's/+//'`          printf "## calculated \`kpc/pixel': ${KPC_PER_PIX_B}\n" @@ -299,7 +304,7 @@ printf "## set output regfile (0.1-0.5 r500 region): \`${REG_OUT}'\n" | ${TOLOG}  # get center position from `regin'  # only consider `pie' or `annulus'-shaped region -TMP_REG=`grep -iE '(pie|annulus)' ${REG_IN} | head -n 1` +TMP_REG=`\grep -iE '(pie|annulus)' ${REG_IN} | head -n 1`  XC=`echo ${TMP_REG} | tr -d ' ' | awk -F'[(),]' '{ print $2 }'`  YC=`echo ${TMP_REG} | tr -d ' ' | awk -F'[(),]' '{ print $3 }'`  printf "## get center coord: (${XC},${YC})\n" | ${TOLOG} @@ -321,7 +326,7 @@ printf "## use bkgd: \`${BKGD}'\n" | ${TOLOG}  # determine bkg type: blanksky, lbkg_reg, bkg_spec ?  # according to file type first: text / FITS  # if FITS, then get values of `HDUCLAS1' and `OBJECT' -if file -bL ${BKGD} | grep -qi 'text'; then +if file -bL ${BKGD} | \grep -qi 'text'; then      printf "## given \`${BKGD}' is a \`text file'\n"      printf "##   use it as local bkg region file\n"      printf "##   use *LOCAL BKG SPEC*\n" | ${TOLOG} @@ -329,9 +334,10 @@ if file -bL ${BKGD} | grep -qi 'text'; then      USE_LBKG_REG=YES      USE_BLANKSKY=NO      USE_BKG_SPEC=NO -elif file -bL ${BKGD} | grep -qi 'FITS'; then +elif file -bL ${BKGD} | \grep -qi 'FITS'; then      printf "## given \`${BKGD}' is a \`FITS file'\n"      # get FITS header keyword +    punlearn dmkeypar      HDUCLAS1=`dmkeypar ${BKGD} HDUCLAS1 echo=yes`      if [ "${HDUCLAS1}" = "EVENTS" ]; then          # event file @@ -400,21 +406,49 @@ fi  printf "## use RMF: \`${RMF}'\n" | ${TOLOG}  # arf & rmf }}} -# check given `grpcmd' -if [ ! -z "${grpcmd}" ]; then -    GRP_CMD="${grpcmd}" +# check given dmgroup parameters: grouptype, grouptypeval, binspec +if [ -z "${grouptype}" ]; then +    GROUPTYPE="${DFT_GROUPTYPE}" +elif [ "x${grouptype}" = "xNUM_CTS" ] || [ "x${grouptype}" = "xBIN" ]; then +    GROUPTYPE="${grouptype}" +else +    printf "ERROR: given grouptype \`${grouptype}' invalid.\n" +    exit ${ERR_GRPTYPE} +fi +printf "## use grouptype: \`${GROUPTYPE}'\n" | ${TOLOG} +if [ ! -z "${grouptypeval}" ]; then +    GROUPTYPEVAL="${grouptypeval}"  else -    GRP_CMD="${DFT_GRP_CMD}" +    GROUPTYPEVAL="${DFT_GROUPTYPEVAL}"  fi -printf "## use grppha cmd: \`${GRP_CMD}'\n" | ${TOLOG} +printf "## use grouptypeval: \`${GROUPTYPEVAL}'\n" | ${TOLOG} +if [ ! -z "${binspec}" ]; then +    BINSPEC="${binspec}" +else +    BINSPEC="${DFT_BINSPEC}" +fi +printf "## use binspec: \`${BINSPEC}'\n" | ${TOLOG}  ## parameters }}} -################################################## -#### main -## D_A -#D_A_CM=`${COSCALC} ${REDSHIFT} | grep '^d_a_cm' | awk '{ print $2 }'` -D_A_CM=`${COSCALC} ${REDSHIFT} | grep -i 'd_a.*cm' | awk -F'=' '{ print $2 }' | awk '{ print $1 }'` +## prepare parameter files (pfiles) {{{ +CIAO_TOOLS="dmstat dmkeypar dmhedit dmextract dmlist dmgroup" + +# 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 ### + +## D_A {{{ +D_A_CM=`${COSCALC} ${REDSHIFT} | \grep -i 'd_a.*cm' | awk -F'=' '{ print $2 }' | awk '{ print $1 }'`  printf "D_A_CM(${REDSHIFT})= ${D_A_CM}\n" +## D_A }}}  ## region related {{{  ## generate the needed region file @@ -427,11 +461,11 @@ _EOF_  ## open the evt file to verify or modify  printf "## check the generated pie region ...\n"  printf "## if modified, save with the same name \`${REG_OUT}' (overwrite)\n" -ds9 ${EVT} -regions ${REG_OUT} -cmap sls -bin factor 4 +ds9 ${EVT} -regions ${REG_OUT} -cmap he -bin factor 4  ## check the (modified) region (pie region end angle)  printf "check the above region (for pie region end angle) ...\n" -INVALID=`grep -i 'pie' ${REG_OUT} | awk -F'[,()]' '$7 > 360'` +INVALID=`\grep -i 'pie' ${REG_OUT} | awk -F'[,()]' '$7 > 360'`  if [ "x${INVALID}" != "x" ]; then      printf "*** WARNING: there are pie regions' END_ANGLE > 360\n" | ${TOLOG}      printf "*** will to fix ...\n" @@ -452,7 +486,7 @@ fi  ## generate spectrum {{{  # check counts  punlearn dmlist -CNT_RC=`dmlist infile="${EVT}[sky=region(${REG_OUT})][energy=700:7000]" opt=block | grep 'EVENTS' | awk '{ print $8 }'` +CNT_RC=`dmlist infile="${EVT}[sky=region(${REG_OUT})][energy=700:7000]" opt=block | \grep 'EVENTS' | awk '{ print $8 }'`  if [ ${CNT_RC} -lt 500 ]; then      F_WC=true      WC="LOW_COUNTS" @@ -468,8 +502,11 @@ dmextract infile="${EVT}[sky=region(${REG_OUT})][bin PI]" \      outfile="${AVGT_SPEC}" wmap="[bin det=8]" clobber=yes  # group spectrum  printf "group object spectrum ...\n" -grppha infile="${AVGT_SPEC}" outfile="${AVGT_SPEC_GRP}" \ -    comm="${GRP_CMD} & exit" clobber=yes > /dev/null +punlearn dmgroup +dmgroup infile="${AVGT_SPEC}" outfile="${AVGT_SPEC_GRP}" \ +    grouptype="${GROUPTYPE}" grouptypeval=${GROUPTYPEVAL} \ +    binspec="${BINSPEC}" xcolumn="CHANNEL" ycolumn="COUNTS" \ +    clobber=yes  # background  printf "generate the background spectrum ...\n" @@ -585,9 +622,9 @@ else      printf "invoking XSPEC to calculate cooling time ...\n"      xspec - ${XSPEC_SCRIPT} | tee ${CT_RES} -    OBS_ID=`grep '"Obs.*ID' ${JSON_FILE} | awk -F':' '{ print $2 }' | tr -d ' ,'` -    OBJ_NAME=`grep '"Source\ Name' ${JSON_FILE} | awk -F':' '{ print $2 }' | sed -e 's/\ *"//' -e 's/"\ *,$//'` -    CT=`grep -i '^Cooling_time' ${CT_RES} | awk '{ print $2 }'` +    OBS_ID=`\grep '"Obs.*ID' ${JSON_FILE} | awk -F':' '{ print $2 }' | tr -d ' ,'` +    OBJ_NAME=`\grep '"Source\ Name' ${JSON_FILE} | awk -F':' '{ print $2 }' | sed -e 's/\ *"//' -e 's/"\ *,$//'` +    CT=`\grep -i '^Cooling_time' ${CT_RES} | awk '{ print $2 }'`      printf "\n" | tee -a ${CT_RES}      printf "# OBS_ID,OBJ_NAME,CT_gyr\n" | tee -a ${CT_RES} diff --git a/scripts/ciao_calc_ct_csb.sh b/scripts/ciao_calc_ct_csb.sh index bee6316..04ef343 100755 --- a/scripts/ciao_calc_ct_csb.sh +++ b/scripts/ciao_calc_ct_csb.sh @@ -1,16 +1,16 @@  #!/bin/sh -# -########################################################### -## Invoke 'ciao_calc_ct.sh' and 'ciao_calc_csb.sh'       ## -## to calculate cooling time and Csb value.              ## -##                                                       ## -## Weitian LI                                            ## -## 2014/06/18                                            ## -##                                                       ## -## ChangeLog:                                            ## -## 1.1, 2014/12/11, Weitian LI                           ## -##   test ${CT_RES} before read                          ## -########################################################### +## +## +## Invoke 'ciao_calc_ct.sh' and 'ciao_calc_csb.sh' +## to calculate cooling time and Csb value. +## +## Weitian LI +## 2014/06/18 +## +## Changelogs: +## v1.1, 2014/12/11, Weitian LI +##   * test ${CT_RES} before read +##  BASE_PATH=`dirname $0`  SCRIPT_CT="${BASE_PATH}/ciao_calc_ct.sh" diff --git a/scripts/ciao_check_offset.sh b/scripts/ciao_check_offset.sh index af9bae1..c57bbaf 100755 --- a/scripts/ciao_check_offset.sh +++ b/scripts/ciao_check_offset.sh @@ -1,5 +1,6 @@  #!/bin/sh  # +unalias -a  export LC_COLLATE=C  ###########################################################  ## based on `ciao_update_xcentroid.sh'                   ## @@ -10,11 +11,16 @@ export LC_COLLATE=C  ## Weitian LI <liweitianux@gmail.com>                    ##  ## 2014/06/25                                            ##  ########################################################### - -## about, used in `usage' {{{ -VERSION="v1.0" -UPDATE="2014-06-25" -## about }}} +## +VERSION="v2.0" +UPDATED="2015/06/03" +## +## Changelogs: +## v2.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' +##  ## error code {{{  ERR_USG=1 @@ -40,7 +46,7 @@ case "$1" in          printf "usage:\n"          printf "    `basename $0` evt=<evt_file> reg=<sbp_reg> basedir=<base_dir>\n"          printf "\nversion:\n" -        printf "${VERSION}, ${UPDATE}\n" +        printf "    ${VERSION}, ${UPDATED}\n"          exit ${ERR_USG}          ;;  esac @@ -53,7 +59,7 @@ OFF_CRIT_I="0:7:0"  # 0deg 7min 0sec  # default `event file' which used to match `blanksky' files  #DFT_EVT="_NOT_EXIST_" -DFT_EVT="`ls evt2*_clean.fits 2> /dev/null`" +DFT_EVT="`\ls evt2*_clean.fits 2> /dev/null`"  # default dir which contains `asols, asol.lis, ...' files  # DFT_BASEDIR="_NOT_EXIST_"  DFT_BASEDIR=".." @@ -85,8 +91,8 @@ getopt_keyval() {  ddmmss2deg() {      # convert 'dd:mm:ss' to 'deg'      echo "$1" | awk -F':' ' -    function abs(x) { return ((x<0.0)? (-x) : x) } -    function sign(x) { return ((x<0.0)? (-1.0) : 1.0) } +    function abs(x) { return ((x<0.0) ? (-x) : x) } +    function sign(x) { return ((x<0.0) ? (-1.0) : 1.0) }      {          value = abs($1) + ($2)/60.0 + ($3)/3600.0;          printf("%.8f", sign($1)*value); @@ -96,7 +102,7 @@ ddmmss2deg() {  deg2ddmmss() {      # convert 'deg' to 'dd:mm:ss'      echo "$1" | awk ' -    function abs(x) { return ((x<0.0)? (-x) : x) } +    function abs(x) { return ((x<0.0) ? (-x) : x) }      {          deg = $1;          dd = int(deg); @@ -166,14 +172,27 @@ BASEDIR=`echo ${BASEDIR} | sed 's/\/*$//'`  printf "## use basedir: \`${BASEDIR}'\n" | ${TOLOG}  ## parameters }}} +## prepare parameter files (pfiles) {{{ +CIAO_TOOLS="dmkeypar dmcoords" + +# 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 process {{{  # asolis -ASOLIS=`( cd ${BASEDIR} && ls ${DFT_ASOLIS_PAT} 2> /dev/null )` +ASOLIS=`( cd ${BASEDIR} && \ls ${DFT_ASOLIS_PAT} 2> /dev/null )`  # get (x,y) from sbp region  printf "get (x,y) from ${SBP_REG}\n" -X=`grep -iE '(pie|annulus)' ${SBP_REG} | head -n 1 | awk -F',' '{ print $1 }' | tr -d 'a-zA-Z() '` -Y=`grep -iE '(pie|annulus)' ${SBP_REG} | head -n 1 | awk -F',' '{ print $2 }' | tr -d 'a-zA-Z() '` +X=`\grep -iE '(pie|annulus)' ${SBP_REG} | head -n 1 | awk -F',' '{ print $1 }' | tr -d 'a-zA-Z() '` +Y=`\grep -iE '(pie|annulus)' ${SBP_REG} | head -n 1 | awk -F',' '{ print $2 }' | tr -d 'a-zA-Z() '`  # dmcoords to convert (x,y) to (ra,dec)  printf "\`dmcoords' to convert (x,y) to (ra,dec) ...\n" @@ -190,11 +209,11 @@ DEC_PNT=`dmkeypar infile="${EVT}" keyword="DEC_PNT" echo=yes`  ## determine ACIS type {{{  punlearn dmkeypar  DETNAM=`dmkeypar ${EVT} DETNAM echo=yes` -if echo ${DETNAM} | grep -q 'ACIS-0123'; then +if echo ${DETNAM} | \grep -q 'ACIS-0123'; then      #printf "## \`DETNAM' (${DETNAM}) has chips 0123\n"      #printf "## ACIS-I\n"      ACIS_TYPE="ACIS-I" -elif echo ${DETNAM} | grep -q 'ACIS-[0-6]*7'; then +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" diff --git a/scripts/ciao_deproj_spectra.sh b/scripts/ciao_deproj_spectra.sh index c869d8a..1ec5ed6 100755 --- a/scripts/ciao_deproj_spectra.sh +++ b/scripts/ciao_deproj_spectra.sh @@ -37,10 +37,14 @@  ##  AUTHOR="Weitian LI <liweitianux@gmail.com>"  CREATED="2012/07/24" -UPDATED="2015/02/12" -VERSION="v9.0" +UPDATED="2015/06/03" +VERSION="v10.0"  ##  ## ChangeLogs: +## v10.0, 2015/06/03, Aaron LI +##   * Copy needed pfiles to current working directory, and +##     set environment variable $PFILES to use these first. +##   * Replace 'ls' with '\ls'  ## v9.0, 2015/02/12, Weitian LI  ##   * updated parameter settings for 'specextract' to match  ##     specextract revision 2013-12. @@ -98,7 +102,7 @@ esac  ## default parameters {{{  # default `event file' which used to match `blanksky' files  #DFT_EVT="_NOT_EXIST_" -DFT_EVT="`ls evt2*_clean.fits`" +DFT_EVT="`\ls evt2*_clean.fits`"  # default `radial region file'  #DFT_REG_IN="_NOT_EXIST_"  DFT_REG_IN="rspec.reg" @@ -371,28 +375,28 @@ fi  # check files in `basedir'  printf "check needed files in basedir \`${BASEDIR}' ...\n"  # check asolis files -ASOLIS=`ls -1 ${BASEDIR}/${DFT_ASOLIS_PAT} | head -n 1` +ASOLIS=`\ls -1 ${BASEDIR}/${DFT_ASOLIS_PAT} | head -n 1`  if [ -z "${ASOLIS}" ]; then      printf "ERROR: cannot find \"${DFT_ASOLIS_PAT}\" in dir \`${BASEDIR}'\n"      exit ${ERR_ASOL}  fi  printf "## use asolis: \`${ASOLIS}'\n" | ${TOLOG}  # check badpixel file -BPIX=`ls -1 ${BASEDIR}/${DFT_BPIX_PAT} | head -n 1` +BPIX=`\ls -1 ${BASEDIR}/${DFT_BPIX_PAT} | head -n 1`  if [ -z "${BPIX}" ]; then      printf "ERROR: cannot find \"${DFT_BPIX_PAT}\" in dir \`${BASEDIR}'\n"      exit ${ERR_BPIX}  fi  printf "## use badpixel: \`${BPIX}'\n" | ${TOLOG}  # check pbk file -PBK=`ls -1 ${BASEDIR}/${DFT_PBK_PAT} | head -n 1` +PBK=`\ls -1 ${BASEDIR}/${DFT_PBK_PAT} | head -n 1`  if [ -z "${PBK}" ]; then      printf "ERROR: cannot find \"${DFT_PBK_PAT}\" in dir \`${BASEDIR}'\n"      exit ${ERR_PBK}  fi  printf "## use pbk: \`${PBK}'\n" | ${TOLOG}  # check msk file -MSK=`ls -1 ${BASEDIR}/${DFT_MSK_PAT} | head -n 1` +MSK=`\ls -1 ${BASEDIR}/${DFT_MSK_PAT} | head -n 1`  if [ -z "${MSK}" ]; then      printf "ERROR: cannot find \"${DFT_MSK_PAT}\" in dir \`${BASEDIR}'\n"      exit ${ERR_MSK} @@ -400,6 +404,19 @@ fi  printf "## use msk: \`${MSK}'\n" | ${TOLOG}  ## check files }}} +## prepare parameter files (pfiles) {{{ +CIAO_TOOLS="dmstat dmkeypar dmhedit specextract dmextract dmgroup" + +# 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 }}} +  ## process local background {{{  if [ "${USE_LBKG_REG}" = "YES" ]; then      BKG_EVT=${EVT} diff --git a/scripts/ciao_expcorr.sh b/scripts/ciao_expcorr.sh index c1d7905..ecb2806 100755 --- a/scripts/ciao_expcorr.sh +++ b/scripts/ciao_expcorr.sh @@ -1,10 +1,13 @@  #!/bin/sh  ## -## make `image' from `evt file' -## make `spectral weight' using `make_instmap_weights' -## use `fluximage' to generating `exposure map' -## make `exposure-corrected' image -## and extract `surface brighness profile' +## This script performs exposure correction to images, and +## finally produce the exposure-corrected image. +## +## * make `image' from `evt file' +## * make `spectral weight' using `make_instmap_weights' +## * use `fluximage' to generating `exposure map' +## * make `exposure-corrected' image +## * and extract `surface brighness profile'  ##  ## NOTES:  ## only ACIS-I (chip: 0-3) and ACIS-S (chip: 7) supported @@ -12,16 +15,23 @@  ##  ## Weitian LI  ## 2012/08/16 -UPDATED="2014/10/30" +## +VERSION="v3.0" +UPDATED="2015/06/03"  ##  ## ChangeLogs: +## v3.0, 2015/06/03, Aaron LI +##   * Changed to use 'fluximage' by default, and fallback to 'merge_all' +##   * Copy needed pfiles to current working directory, and +##     set environment variable $PFILES to use these first. +##   * Replaced 'grep' with '\grep', 'ls' with '\ls'  ## v2.1, 2014/10/30, Weitian LI  ##   Add 'aspect' parameter for 'skyfov' to fix the 'FoV shift bug'  ## v2.0, 2014/07/29, Weitian LI  ##   `merge_all' deprecated, use `fluximage' if possible -## v1.2, 2012-08-21, LIweitiaNux +## v1.2, 2012/08/21, Weitian LI  ##   set `ardlib' before process `merge_all' -## v1.1, 2012-08-21, LIweitiaNux +## v1.1, 2012/08/21, Weitian LI  ##   fix a bug with `sed'  ## @@ -43,6 +53,7 @@ ERR_SPEC=32  ERR_DET=41  ERR_ENG=42  ERR_CIAO=100 +ERR_TOOL=110  ## error code }}}  ## usage, help {{{ @@ -50,8 +61,8 @@ case "$1" in      -[hH]*|--[hH]*)          printf "usage:\n"          printf "    `basename $0` evt=<evt_file> energy=<e_start:e_end:e_width> basedir=<base_dir> nh=<nH> z=<redshift> temp=<avg_temperature> abund=<avg_abund> [ logfile=<log_file> ]\n" -        printf "\nupdated:\n" -        printf "${UPDATED}\n" +        printf "\nversion:\n" +        printf "    ${VERSION}, ${UPDATED}\n"          exit ${ERR_USG}          ;;  esac @@ -60,7 +71,7 @@ esac  ## default parameters {{{  # default `event file' which used to match `blanksky' files  #DFT_EVT="_NOT_EXIST_" -DFT_EVT="`ls evt2*_clean.fits 2> /dev/null`" +DFT_EVT="`\ls evt2*_clean.fits 2> /dev/null`"  # default dir which contains `asols, asol.lis, ...' files  # DFT_BASEDIR="_NOT_EXIST_"  DFT_BASEDIR=".." @@ -225,23 +236,36 @@ BASEDIR=`echo ${BASEDIR} | sed 's/\/*$//'`  printf "## use basedir: \`${BASEDIR}'\n" | ${TOLOG}  ## parameters }}} +## prepare parameter files (pfiles) {{{ +CIAO_TOOLS="dmkeypar dmcopy dmhedit dmimgcalc ardlib make_instmap_weights skyfov get_sky_limits fluximage merge_all" + +# 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 }}} +  ## check files in `basedir' {{{  # check asol files -ASOLIS=`ls -1 ${BASEDIR}/${DFT_ASOLIS_PAT} | head -n 1` +ASOLIS=`\ls -1 ${BASEDIR}/${DFT_ASOLIS_PAT} | head -n 1`  if [ -z "${ASOLIS}" ]; then      printf "ERROR: cannot find \"${DFT_ASOLIS_PAT}\" in dir \`${BASEDIR}'\n"      exit ${ERR_ASOL}  fi  printf "## use asolis: \`${ASOLIS}'\n"  # check badpixel file -BPIX=`ls -1 ${BASEDIR}/${DFT_BPIX_PAT} | head -n 1` +BPIX=`\ls -1 ${BASEDIR}/${DFT_BPIX_PAT} | head -n 1`  if [ -z "${BPIX}" ]; then      printf "ERROR: cannot find \"${DFT_BPIX_PAT}\" in dir \`${BASEDIR}'\n"      exit ${ERR_BPIX}  fi  printf "## use badpixel: \`${BPIX}'\n" | ${TOLOG}  # check msk file -MSK=`ls -1 ${BASEDIR}/${DFT_MSK_PAT} | head -n 1` +MSK=`\ls -1 ${BASEDIR}/${DFT_MSK_PAT} | head -n 1`  if [ -z "${MSK}" ]; then      printf "ERROR: cannot find \"${DFT_MSK_PAT}\" in dir \`${BASEDIR}'\n"      exit ${ERR_MSK} @@ -253,14 +277,14 @@ printf "## use msk file: \`${MSK}'\n" | ${TOLOG}  # consistent with `ciao_procevt'  punlearn dmkeypar  DETNAM=`dmkeypar ${EVT} DETNAM echo=yes` -if echo ${DETNAM} | grep -q 'ACIS-0123'; then +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 +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" @@ -273,7 +297,6 @@ else  fi  ## ACIS type }}} -  ## main process {{{  ## set `ardlib' at first  printf "set \`ardlib' first ...\n" @@ -330,14 +353,25 @@ printf "## get \`xygrid': \`${XYGRID}'\n" | ${TOLOG}  EXPMAP="expmap_${ROOTNAME}.fits"  IMG_EXPCORR="img_expcorr_${ROOTNAME}.fits" -if `which merge_all >/dev/null 2>&1`; then -    # merge_all available -    printf "merge_all ...\n" -    ## set `ardlib' again to make sure the matched bpix file specified -    printf "set \`ardlib' again for \`merge_all' ...\n" -    punlearn ardlib -    acis_set_ardlib badpixfile="${BPIX}" -     +if `which fluximage >/dev/null 2>&1`; then +    ## 'fluximage' is available, use it by default +    ## use 'fluximage' to generate `exposure map' and apply exposure correction +    printf "use fluximage to generate expmap and apply correction ...\n" +    punlearn fluximage +    fluximage infile="${EVT_E}" outroot="${ROOTNAME}" \ +        binsize=1 bands="${SPEC_WGT}" xygrid="${XYGRID}" \ +        asol="@${ASOLIS}" badpixfile="${BPIX}" \ +        maskfile="${MSK}" clobber=yes +    ## make symbolic links +    # clipped counts image +    ln -svf ${ROOTNAME}*band*thresh.img ${IMG_ORIG%.fits}_thresh.fits +    # clipped exposure map +    ln -svf ${ROOTNAME}*band*thresh.expmap ${EXPMAP} +    # exposure-corrected image +    ln -svf ${ROOTNAME}*band*flux.img ${IMG_EXPCORR} +elif `which merge_all >/dev/null 2>&1`; then +    # 'merge_all' is available, fallback to this +    printf "fallback to merge_all ...\n"      ## XXX: `merge_all' needs `asol files' in working directory      printf "link asol files into currect dir (\`merge_all' needed) ...\n"      for f in `cat ${ASOLIS}`; do @@ -359,21 +393,9 @@ if `which merge_all >/dev/null 2>&1`; then      dmimgcalc infile="${IMG_ORIG}" infile2="${EXPMAP}" \          outfile="${IMG_EXPCORR}" operation=div clobber=yes  else -    ## `merge_all' deprecated and not available -    ## use 'fluximage' to generate `exposure map' and apply exposure correction -    printf "fluximage ...\n" -    punlearn fluximage -    fluximage infile="${EVT_E}" outroot="${ROOTNAME}" \ -        binsize=1 bands="${SPEC_WGT}" xygrid="${XYGRID}" \ -        asol="@${ASOLIS}" badpixfile="${BPIX}" \ -        maskfile="${MSK}" clobber=yes -    ## make symbolic links -    # clipped counts image -    ln -svf ${ROOTNAME}*band*thresh.img ${IMG_ORIG%.fits}_thresh.fits -    # clipped exposure map -    ln -svf ${ROOTNAME}*band*thresh.expmap ${EXPMAP} -    # exposure-corrected image -    ln -svf ${ROOTNAME}*band*flux.img ${IMG_EXPCORR} +    # neither 'fluximage' nor 'merge_all' is available +    printf "ERROR: neither 'fluximage' nor 'merge_all' is available\n" +    exit ${ERR_TOOL}  fi  ## main }}} diff --git a/scripts/ciao_expcorr_sbp.sh b/scripts/ciao_expcorr_sbp.sh index 022bfcf..5416085 100755 --- a/scripts/ciao_expcorr_sbp.sh +++ b/scripts/ciao_expcorr_sbp.sh @@ -3,7 +3,14 @@  ## Make exposure map and exposure-corrected image (revoke 'ciao_expcorr.sh'),  ## and extract surface brightness profile (revoke 'ciao_sbp.sh').  ## -## ChangeLogs: +## Author: Weitian LI +## +VERSION="v4.3" +UPDATED="2015/06/03" +## +## Changelogs: +## v4.3, 2015/06/03, Aaron LI +##   * Replaced 'ls' with '\ls'  ## v4.2, 2015/03/05, Weitian LI  ##   * Added exit code check for the 'EXPCORR_SCRIPT' and 'EXTRACT_SBP_SCRIPT'  ##   * Removed the code of 'spc_fit.cfg' generation @@ -11,14 +18,12 @@  ## v4.1, 2014/10/30, Weitian LI  ##   * updated 'EXPCORR_SCRIPT' & 'EXTRACT_SBP_SCRIPT',  ##   * removed version number in scripts filename. -## v4, 2013/10/12, LIweitiaNux +## v4, 2013/10/12, Weitian LI  ##   * split out the 'generate regions' parts -> 'ciao_genreg_v1.sh' -## v3, 2013/05/03, LIweitiaNux +## v3, 2013/05/03, Weitian LI  ##   * add parameter 'ds9' to check the centroid and regions  ## -UPDATED="2015/03/05" -  unalias -a  export LC_COLLATE=C @@ -49,7 +54,8 @@ case "$1" in      -[hH]*|--[hH]*)          printf "usage:\n"          printf "    `basename $0` evt=<evt2_clean> sbp_reg=<sbprofile.reg> nh=<nh> z=<redshift> temp=<avg_temp> abund=<avg_abund> cellreg=<celld_reg> expcorr=<yes|no>\n" -        printf "\nVersion: ${UPDATED}\n" +        printf "\nversion:\n" +        printf "    ${VERSION}, ${UPDATED}\n"          exit ${ERR_USG}          ;;  esac @@ -57,7 +63,7 @@ esac  ## default parameters {{{   ## clean evt2 file -DFT_EVT=`ls evt2*_clean.fits 2> /dev/null` +DFT_EVT=`\ls evt2*_clean.fits 2> /dev/null`  ## the repro dir  DFT_BASEDIR=".." @@ -68,10 +74,10 @@ DFT_SBP_REG="sbprofile.reg"  DFT_LOGFILE="expcorr_sbp_`date '+%Y%m%d'`.log"  ## cell region -DFT_CELL_REG=`ls celld*.reg 2> /dev/null` +DFT_CELL_REG=`\ls celld*.reg 2> /dev/null`  ## background spectra -DFT_BKGD=`ls bkgcorr_bl*.pi 2> /dev/null` +DFT_BKGD=`\ls bkgcorr_bl*.pi 2> /dev/null`  ## default parameters }}}  ## functions {{{ @@ -215,8 +221,8 @@ else      printf "======== EXPOSURE CORRECTION FINISHED =======\n\n"  fi -EXPMAP=`ls expmap*e700-7000*fits 2> /dev/null` -EVT_E=`ls evt*e700-7000*fits 2> /dev/null` +EXPMAP=`\ls expmap*e700-7000*fits 2> /dev/null` +EVT_E=`\ls evt*e700-7000*fits 2> /dev/null`  printf "======== EXTRACT SBP =======\n"  CMD="${SCRIPT_DIR}/${EXTRACT_SBP_SCRIPT} evt_e=${EVT_E} reg=${SBP_REG} expmap=${EXPMAP} cellreg=${CELL_REG}" diff --git a/scripts/ciao_genregs.sh b/scripts/ciao_genregs.sh index 643acba..1f6c58a 100755 --- a/scripts/ciao_genregs.sh +++ b/scripts/ciao_genregs.sh @@ -1,15 +1,27 @@  #!/bin/sh -unalias -a -export LC_COLLATE=C - -##################################################################### -## generate 'radius spectra profile' regions -## and 'radius surface profile' regions  ## -## ChangeLogs: -## v1, 2013/10/12, LIweitiaNux +## Generate regions for 'radial spectra analysis' (rspec.reg), +## and regions for 'surface brightness profile' extraction. +## +## Author: Weitian LI +## Created: 2013/10/12 +## +VERSION="v1.0" +UPDATE="2013/10/12" +## +## Changelogs: +## v2.0, 2015/06/03, Aaron LI +##   * Updated script description +##   * Replaced 'grep' with '\grep', 'ls' with '\ls' +##   * ds9 colormap changed from 'sls' to 'he' +##   * Copy needed pfiles to current working directory, and +##     set environment variable $PFILES to use these first. +## v1.0, 2013/10/12, Weitian LI  ##   split from 'ciao_expcorr_sbp_v3.sh' -##################################################################### +## + +unalias -a +export LC_COLLATE=C  SCRIPT_PATH=`readlink -f $0`  SCRIPT_DIR=`dirname ${SCRIPT_PATH}` @@ -17,11 +29,6 @@ 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 @@ -45,22 +52,22 @@ case "$1" in          printf "usage:\n"          printf "    `basename $0` evt=<evt2_clean> reg_in=<reg_in> bkgd=<bkgd_spec> ds9=<Yes|no>\n"          printf "\nversion:\n" -        printf "${VERSION}, ${UPDATE}\n" +        printf "    ${VERSION}, ${UPDATED}\n"          exit ${ERR_USG}          ;;  esac  ## usage }}}  ## link needed files {{{ -BKGD_FILE=`ls ../bkg/bkgcorr_bl*.pi 2> /dev/null | head -n 1` +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` +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'` +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 @@ -68,11 +75,11 @@ fi  ## default parameters {{{   ## clean evt2 file -DFT_EVT=`ls evt2*_clean.fits 2> /dev/null` +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`" +ASOL="`\ls pcadf*_asol1.fits 2> /dev/null | head -n 1`"  ## energy range  # format: `E_START:E_END:E_WIDTH' @@ -84,7 +91,7 @@ E_END=`echo ${DFT_ENERGY} | awk -F':' '{ print $2 }'`  DFT_LOGFILE="genreg_`date '+%Y%m%d'`.log"  ## background spectra -DFT_BKGD=`ls bkgcorr_bl*.pi | head -n 1` +DFT_BKGD=`\ls bkgcorr_bl*.pi | head -n 1`  ## default parameters }}}  ## functions {{{ @@ -188,18 +195,31 @@ else  fi  ## parameters }}} +## prepare parameter files (pfiles) {{{ +CIAO_TOOLS="dmkeypar dmcopy dmcoords" + +# 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 }}} +  ## determine ACIS type {{{  # consistent with `ciao_procevt'  punlearn dmkeypar  DETNAM=`dmkeypar ${EVT} DETNAM echo=yes` -if echo ${DETNAM} | grep -q 'ACIS-0123'; then +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 +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" @@ -224,19 +244,19 @@ 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 }'` +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 +    ds9 ${EVT_E} -regions ${CNTRD_PHY_REG} -cmap he -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 }'` +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} @@ -269,7 +289,7 @@ 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 +    ds9 ${EVT_E} -regions ${SPC_REG} -cmap he -bin factor 4  fi  printf "======== GENERATE SPECTRUM REGIONS FINISHED =======\n\n" diff --git a/scripts/ciao_procevt.sh b/scripts/ciao_procevt.sh index d73bfaf..90162bb 100755 --- a/scripts/ciao_procevt.sh +++ b/scripts/ciao_procevt.sh @@ -1,5 +1,7 @@  #!/bin/sh  # +unalias -a +export LC_COLLATE=C  ###########################################################  ## process `evt2 file' generated by `chandra_repro'      ##  ## to produce a `clean evt2 file'                        ## @@ -13,23 +15,26 @@  ## if `DETNAM' has `0123', then `ACIS-I'                 ##  ## if `DETNAM' has `7', then `ACIS-S'                    ##  ##                                                       ## -## LIweitiaNux <liweitianux@gmail.com>                   ## -## August 16, 2012                                       ## -########################################################### - +## Weitian LI <liweitianux@gmail.com>#                   ## +## 2012/08/16                                            ##  ########################################################### +## +VERSION="v3.0" +UPDATED="2015/06/02" +##  ## ChangeLogs: +## v3.0, 2015/06/02, Aaron LI +##   * Added 'unalias -a' and 'export LC_COLLATE=C' +##   * Replaced 'grep' with '\grep', 'ls' with '\ls' +##   * Copy needed pfiles to current working directory, and +##     set environment variable $PFILES to use these first.  ## v2.2, 2014/10/30, Weitian LI -##  small fix to the generation of chips script: -##  changed '>>' to '>' -## v2.1, 2012/08/16, LIweitiaNux +##   small fix to the generation of chips script: +##   changed '>>' to '>' +## v2.1, 2012/08/16, Weitian LI  ##   improve invoke `chips', run it in a separate terminal -########################################################### +## -## about, used in `usage' {{{ -VERSION="v2" -UPDATE="2012-08-16" -## about }}}  ## error code {{{  ERR_USG=1 @@ -52,7 +57,7 @@ case "$1" in          printf "usage:\n"          printf "    `basename $0` evt=<raw_evt_file>\n"          printf "\nversion:\n" -        printf "${VERSION}, ${UPDATE}\n" +        printf "    ${VERSION}, ${UPDATED}\n"          exit ${ERR_USG}          ;;  esac @@ -61,7 +66,7 @@ esac  ## default parameters {{{  # default `event file' which used to match `blanksky' files  #DFT_EVT="_NOT_EXIST_" -DFT_EVT="`ls acisf?????*_repro_evt2.fits 2> /dev/null`" +DFT_EVT="`\ls acisf?????*_repro_evt2.fits 2> /dev/null`"  ## default parameters }}}  ## functions {{{ @@ -100,16 +105,29 @@ fi  printf "## use evt file: \`${EVT}'\n"  ## parameters }}} +## prepare parameter files (pfiles) {{{ +CIAO_TOOLS="dmkeypar dmcopy celldetect dmextract" + +# 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 }}} +  ## determine ACIS type {{{  punlearn dmkeypar  DETNAM=`dmkeypar ${EVT} DETNAM echo=yes` -if echo ${DETNAM} | grep -q 'ACIS-0123'; then +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"      ROOTNAME="evt2_c`echo ${CCD} | tr ':' '-'`" -elif echo ${DETNAM} | grep -q 'ACIS-[0-6]*7'; then +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" diff --git a/scripts/ciao_r500avgt.sh b/scripts/ciao_r500avgt.sh index 3318bb4..feed110 100755 --- a/scripts/ciao_r500avgt.sh +++ b/scripts/ciao_r500avgt.sh @@ -15,11 +15,10 @@ export LC_COLLATE=C  ## 3) ARF/RMF files either provided or use the ARF/RMF   ##  ## of the outmost region                                 ##  ##                                                       ## -## LIweitiaNux <liweitianux@gmail.com>                   ## -## August 22, 2012                                       ## -########################################################### - +## Weitian LI <liweitianux@gmail.com>                    ## +## 2012/08/22                                            ##  ########################################################### +##  ## ChangeLogs  ## v1.1, 2012/08/26, LIweitiaNux  ##   modify `KPC_PER_PIX', able to use the newest version `calc_distance' @@ -32,15 +31,20 @@ export LC_COLLATE=C  ##   change `DFT_GRP_CMD' to `group 1 128 4 ...'  ## v3.0, 2013/02/09, LIweitiaNux  ##   modify for new process -## v3.1, 2015/05/27, Weitian LI +## v3.1, 2015/05/27, Aaron LI  ##   update 'DFT_ARF' & 'DFT_RMF' to find '*.arf' & '*.rmf' files  ##   (specextract only use .arf & .rmf extensions since revision 2014-12) -########################################################### - -## about, used in `usage' {{{ -VERSION="v3.1" -UPDATE="2015-05-27" -## about }}} +## v3.2, 2015/05/30, Aaron LI +##   Added options '-cmap he -bin factor 4' to ds9 command +## v4.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' +##   * replaced 'grppha' with 'dmgroup' to group spectra +##     (dmgroup will add history to fits file, while grppha NOT) +## +VERSION="v4.1" +UPDATED="2015/06/03"  ## error code {{{  ERR_USG=1 @@ -64,9 +68,9 @@ ERR_UNI=61  case "$1" in      -[hH]*|--[hH]*)          printf "usage:\n" -        printf "    `basename $0` evt=<evt2_clean> r500=<r500_kpc> basedir=<basedir> info=<info_json> inner=<inner_val> outer=<outer_val> regin=<input_reg> regout=<output_reg> bkgd=<blank_evt|lbkg_reg|bkg_spec> nh=<nH> z=<redshift> arf=<arf_file> rmf=<rmf_file> [ grpcmd=<grppha_cmd> log=<log_file> ]\n" +        printf "    `basename $0` evt=<evt2_clean> r500=<r500_kpc> basedir=<basedir> info=<info_json> inner=<inner_val> outer=<outer_val> regin=<input_reg> regout=<output_reg> bkgd=<blank_evt|lbkg_reg|bkg_spec> nh=<nH> z=<redshift> arf=<arf_file> rmf=<rmf_file> [ grouptype=<NUM_CTS|BIN> grouptypeval=<number> binspec=<binspec> log=<log_file> ]\n"          printf "\nversion:\n" -        printf "${VERSION}, ${UPDATE}\n" +        printf "    ${VERSION}, ${UPDATED}\n"          exit ${ERR_USG}          ;;  esac @@ -88,9 +92,9 @@ fi  ## default parameters {{{  # default `event file' which used to match `blanksky' files  #DFT_EVT="_NOT_EXIST_" -DFT_EVT="`ls evt2*_clean.fits 2> /dev/null`" +DFT_EVT="`\ls evt2*_clean.fits 2> /dev/null`"  # default `bkgd', use `bkgcorr_blanksky*' corrected bkg spectrum -DFT_BKGD="`ls bkgcorr_blanksky_*.pi 2> /dev/null`" +DFT_BKGD="`\ls bkgcorr_blanksky_*.pi 2> /dev/null`"  # default basedir  DFT_BASEDIR="../.."  # default `radial region file' @@ -100,18 +104,20 @@ DFT_REG_IN="rspec.reg"  DFT_INNER="0.1"  DFT_OUTER="0.5"  # default ARF/RMF, the one of the outmost region -DFT_ARF="`ls -1 r?_*.warf r?_*.arf 2> /dev/null | tail -n 1`" -DFT_RMF="`ls -1 r?_*.wrmf r?_*.rmf 2> /dev/null | tail -n 1`" +DFT_ARF="`\ls -1 r?_*.warf r?_*.arf 2> /dev/null | tail -n 1`" +DFT_RMF="`\ls -1 r?_*.wrmf r?_*.rmf 2> /dev/null | tail -n 1`" -# default `group command' for `grppha' -DFT_GRP_CMD="group min 25" -#DFT_GRP_CMD="group 1 128 2 129 256 4 257 512 8 513 1024 16" -#DFT_GRP_CMD="group 1 128 4 129 256 8 257 512 16 513 1024 32" -# default `log file' -DFT_LOGFILE="r500avgt_`date '+%Y%m%d%H'`.log" +# default parameters for 'dmgroup' +DFT_GROUPTYPE="NUM_CTS" +DFT_GROUPTYPEVAL="25" +#DFT_GROUPTYPE="BIN" +DFT_BINSPEC="1:128:2,129:256:4,257:512:8,513:1024:16"  # default JSON pattern  DFT_JSON_PAT="*_INFO.json" + +# default `log file' +DFT_LOGFILE="r500avgt_`date '+%Y%m%d%H'`.log"  ## default parameters }}}  ## functions {{{ @@ -136,7 +142,7 @@ CH_LOW=651  CH_HI=822  pb_flux() {      punlearn dmstat -    COUNTS=`dmstat "$1[channel=${CH_LOW}:${CH_HI}][cols COUNTS]" | grep -i 'sum:' | awk '{ print $2 }'` +    COUNTS=`dmstat "$1[channel=${CH_LOW}:${CH_HI}][cols COUNTS]" | \grep -i 'sum:' | awk '{ print $2 }'`      punlearn dmkeypar      EXPTIME=`dmkeypar $1 EXPOSURE echo=yes`      BACK=`dmkeypar $1 BACKSCAL echo=yes` @@ -151,6 +157,7 @@ bkg_renorm() {      # $1: src spectrum, $2: back spectrum      PBFLUX_SRC=`pb_flux $1`      PBFLUX_BKG=`pb_flux $2` +    punlearn dmkeypar      BACK_OLD=`dmkeypar $2 BACKSCAL echo=yes`      BACK_OLD_B=`echo "( ${BACK_OLD} )" | sed 's/[eE]/\*10\^/' | sed 's/+//'`      BACK_NEW=`echo "scale = 16; ${BACK_OLD_B} * ${PBFLUX_BKG} / ${PBFLUX_SRC}" | bc -l` @@ -189,7 +196,7 @@ fi  if [ ! -z "${json}" ] && [ -r "${BASEDIR}/${json}" ]; then      JSON_FILE="${BASEDIR}/${json}"  elif ls ${BASEDIR}/${DFT_JSON_PAT} > /dev/null 2>&1; then -    JSON_FILE=`ls ${BASEDIR}/${DFT_JSON_PAT}` +    JSON_FILE=`\ls ${BASEDIR}/${DFT_JSON_PAT}`  else      read -p "> JSON_file: " JSON_FILE      if [ ! -r "${JSON_FILE}" ]; then @@ -200,8 +207,8 @@ fi  printf "## use json_file: \`${JSON_FILE}'\n" | ${TOLOG}  # process `nh' and `redshift' {{{ -NH_JSON=`grep '"nH' ${JSON_FILE} | sed 's/.*"nH.*":\ //' | sed 's/\ *,$//'` -Z_JSON=`grep '"redshift' ${JSON_FILE} | sed 's/.*"redshift.*":\ //' | sed 's/\ *,$//'` +NH_JSON=`\grep '"nH' ${JSON_FILE} | sed 's/.*"nH.*":\ //' | sed 's/\ *,$//'` +Z_JSON=`\grep '"redshift' ${JSON_FILE} | sed 's/.*"redshift.*":\ //' | sed 's/\ *,$//'`  printf "## get nh: \`${NH_JSON}' (from \`${JSON_FILE}')\n" | ${TOLOG}  printf "## get redshift: \`${Z_JSON}' (from \`${JSON_FILE}')\n" | ${TOLOG}  ## if `nh' and `redshift' supplied in cmdline, then use them @@ -235,7 +242,7 @@ printf "## region range: (${INNER} - ${OUTER} R500)\n" | ${TOLOG}  # range }}}  # process `r500' {{{ -R500_RAW=`grep '"R500.*kpc' ${JSON_FILE} | sed 's/.*"R500.*":\ //' | sed 's/\ *,$//'` +R500_RAW=`\grep '"R500.*kpc' ${JSON_FILE} | sed 's/.*"R500.*":\ //' | sed 's/\ *,$//'`  if [ ! -z "${r500}" ]; then      R500_RAW=${r500}  fi @@ -255,7 +262,7 @@ case "${R500_UNI}" in          ;;      *)          printf "## units in \`kpc', convert to \`Chandra pixel'\n" | ${TOLOG} -        KPC_PER_PIX=`${COSCALC} ${REDSHIFT} | grep 'kpc.*pix' | tr -d 'a-zA-Z_#=(),:/ '` +        KPC_PER_PIX=`${COSCALC} ${REDSHIFT} | \grep 'kpc.*pix' | tr -d 'a-zA-Z_#=(),:/ '`          # convert scientific notation for `bc'          KPC_PER_PIX_B=`echo ${KPC_PER_PIX} | sed 's/[eE]/\*10\^/' | sed 's/+//'`          printf "## calculated \`kpc/pixel': ${KPC_PER_PIX_B}\n" @@ -307,7 +314,7 @@ printf "## set output regfile: \`${REG_OUT}'\n" | ${TOLOG}  # get center position from `regin'  # only consider `pie' or `annulus'-shaped region -TMP_REG=`grep -iE '(pie|annulus)' ${REG_IN} | head -n 1` +TMP_REG=`\grep -iE '(pie|annulus)' ${REG_IN} | head -n 1`  XC=`echo ${TMP_REG} | tr -d 'a-zA-Z() ' | awk -F',' '{ print $1 }'`  YC=`echo ${TMP_REG} | tr -d 'a-zA-Z() ' | awk -F',' '{ print $2 }'`  printf "## get center coord: (${XC},${YC})\n" | ${TOLOG} @@ -329,7 +336,7 @@ printf "## use bkgd: \`${BKGD}'\n" | ${TOLOG}  # determine bkg type: blanksky, lbkg_reg, bkg_spec ?  # according to file type first: text / FITS  # if FITS, then get values of `HDUCLAS1' and `OBJECT' -if file -bL ${BKGD} | grep -qi 'text'; then +if file -bL ${BKGD} | \grep -qi 'text'; then      printf "## given \`${BKGD}' is a \`text file'\n"      printf "##   use it as local bkg region file\n"      printf "##   use *LOCAL BKG SPEC*\n" | ${TOLOG} @@ -337,9 +344,10 @@ if file -bL ${BKGD} | grep -qi 'text'; then      USE_LBKG_REG=YES      USE_BLANKSKY=NO      USE_BKG_SPEC=NO -elif file -bL ${BKGD} | grep -qi 'FITS'; then +elif file -bL ${BKGD} | \grep -qi 'FITS'; then      printf "## given \`${BKGD}' is a \`FITS file'\n"      # get FITS header keyword +    punlearn dmkeypar      HDUCLAS1=`dmkeypar ${BKGD} HDUCLAS1 echo=yes`      if [ "${HDUCLAS1}" = "EVENTS" ]; then          # event file @@ -408,17 +416,45 @@ fi  printf "## use RMF: \`${RMF}'\n" | ${TOLOG}  # arf & rmf }}} -# check given `grpcmd' -if [ ! -z "${grpcmd}" ]; then -    GRP_CMD="${grpcmd}" +# check given dmgroup parameters: grouptype, grouptypeval, binspec +if [ -z "${grouptype}" ]; then +    GROUPTYPE="${DFT_GROUPTYPE}" +elif [ "x${grouptype}" = "xNUM_CTS" ] || [ "x${grouptype}" = "xBIN" ]; then +    GROUPTYPE="${grouptype}" +else +    printf "ERROR: given grouptype \`${grouptype}' invalid.\n" +    exit ${ERR_GRPTYPE} +fi +printf "## use grouptype: \`${GROUPTYPE}'\n" | ${TOLOG} +if [ ! -z "${grouptypeval}" ]; then +    GROUPTYPEVAL="${grouptypeval}" +else +    GROUPTYPEVAL="${DFT_GROUPTYPEVAL}" +fi +printf "## use grouptypeval: \`${GROUPTYPEVAL}'\n" | ${TOLOG} +if [ ! -z "${binspec}" ]; then +    BINSPEC="${binspec}"  else -    GRP_CMD="${DFT_GRP_CMD}" +    BINSPEC="${DFT_BINSPEC}"  fi -printf "## use grppha cmd: \`${GRP_CMD}'\n" | ${TOLOG} +printf "## use binspec: \`${BINSPEC}'\n" | ${TOLOG}  ## parameters }}} -################################################## -#### main +## prepare parameter files (pfiles) {{{ +CIAO_TOOLS="dmstat dmkeypar dmhedit dmextract dmgroup" + +# 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 ### +  ## region related {{{  ## generate the needed region file  printf "generate the output region file ...\n" @@ -430,11 +466,11 @@ _EOF_  ## open the evt file to verify or modify  printf "## check the generated pie region ...\n"  printf "## if modified, save with the same name \`${REG_OUT}' (overwrite)\n" -ds9 ${EVT} -region ${REG_OUT} +ds9 ${EVT} -region ${REG_OUT} -cmap he -bin factor 4  ## check the (modified) region (pie region end angle)  printf "check the above region (for pie region end angle) ...\n" -INVALID=`grep -i 'pie' ${REG_OUT} | awk -F'[,()]' '$7 > 360'` +INVALID=`\grep -i 'pie' ${REG_OUT} | awk -F'[,()]' '$7 > 360'`  if [ "x${INVALID}" != "x" ]; then      printf "*** WARNING: there are pie regions' END_ANGLE > 360\n" | ${TOLOG}      printf "*** will to fix ...\n" @@ -462,8 +498,11 @@ dmextract infile="${EVT}[sky=region(${REG_OUT})][bin PI]" \      outfile="${AVGT_SPEC}" wmap="[bin det=8]" clobber=yes  # group spectrum  printf "group object spectrum ...\n" -grppha infile="${AVGT_SPEC}" outfile="${AVGT_SPEC_GRP}" \ -    comm="${GRP_CMD} & exit" clobber=yes > /dev/null +punlearn dmgroup +dmgroup infile="${AVGT_SPEC}" outfile="${AVGT_SPEC_GRP}" \ +    grouptype="${GROUPTYPE}" grouptypeval=${GROUPTYPEVAL} \ +    binspec="${BINSPEC}" xcolumn="CHANNEL" ycolumn="COUNTS" \ +    clobber=yes  # background  printf "generate the background spectrum ...\n" diff --git a/scripts/ciao_sbp.sh b/scripts/ciao_sbp.sh index ef636ca..0e7acd5 100755 --- a/scripts/ciao_sbp.sh +++ b/scripts/ciao_sbp.sh @@ -1,25 +1,31 @@  #!/bin/sh  ## -## Extract `surface brighness profile' +## Extract `surface brighness profile' after exposure correction finished.  ##  ## NOTES:  ## * Only ACIS-I (chip: 0-3) and ACIS-S (chip: 7) supported  ##  ## Weitian LI <liweitianux@gmail.com>  ## Created: 2012/08/16 -UPDATED="2015/03/29" +## +VERSION="v4.0" +UPDATED="2015/06/03"  ##  ## ChangeLogs: -## 2015/03/29, Weitian LI +## v4.0, 2015/06/03, Aaron LI +##   * Copy needed pfiles to current working directory, and +##     set environment variable $PFILES to use these first. +##   * Replaced 'grep' with '\grep', 'ls' with '\ls' +## v3.3, 2015/03/29, Weitian LI  ##   * Skip skyfov generation if it already exists.  ##   * Rename parameter 'aspec' to 'aspect' to match with 'skyfov' -## 2015/03/06, Weitian LI +## v3.2, 2015/03/06, Weitian LI  ##   * Updated this document of the script.  ##   * Added 'SKIP SINGLE' to the generated QDP of SBP file. -## v3.1: 2013/02/01, Zhenghao ZHU -##   removes the region in ccd gap of ACIS_I  -##   removes the region in the area of point source -##   need asol file to prevent offset  +## v3.1, 2013/02/01, Zhenghao ZHU +##   * removes the region in ccd gap of ACIS_I  +##   * removes the region in the area of point source +##   * provide asol file to correct offset   ##  unalias -a @@ -52,8 +58,8 @@ case "$1" in      -[hH]*|--[hH]*)          printf "usage:\n"          printf "    `basename $0` evt_e=<evt_e_file> reg=<sbp_reg> expmap=<exp_map> cellreg=<cell_reg> aspect=<asol_file> [bkg=<bkg> log=<logfile> ]\n" -        printf "\nupdated:\n" -        printf "${UPDATED}\n" +        printf "\nversion:\n" +        printf "    ${VERSION}, ${UPDATED}\n"          exit ${ERR_USG}          ;;  esac @@ -66,16 +72,16 @@ E_RANGE="700:7000"  DFT_CCD_EDGECUT=25  # default `event file' which used to match `blanksky' files  #DFT_EVT="_NOT_EXIST_" -DFT_EVT_E="`ls evt2_*_e*.fits 2> /dev/null`" +DFT_EVT_E="`\ls evt2_*_e*.fits 2> /dev/null`"  # default expmap -DFT_EXPMAP="`ls expmap*.fits 2> /dev/null | head -n 1`" +DFT_EXPMAP="`\ls expmap*.fits 2> /dev/null | head -n 1`"  # default `radial region file' to extract surface brightness  #DFT_SBP_REG="_NOT_EXIST_"  DFT_SBP_REG="sbprofile.reg"  # defalut pointsource region file  -DFT_CELL_REG="`ls celld*.reg 2> /dev/null`" +DFT_CELL_REG="`\ls celld*.reg 2> /dev/null`"  # defalut asol file -DFT_ASOL_FILE="`ls -1 pcad*asol*fits 2> /dev/null`" +DFT_ASOL_FILE="`\ls -1 pcad*asol*fits 2> /dev/null`"  # default `log file'  DFT_LOGFILE="sbp_`date '+%Y%m%d'`.log" @@ -206,15 +212,28 @@ fi  printf "## use asol file(s) : \`${ASOL_FILE}'\n" | ${TOLOG}  ## parameters }}} +## prepare parameter files (pfiles) {{{ +CIAO_TOOLS="dmkeypar dmlist dmextract dmtcalc 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 }}} +  ## determine ACIS type {{{  # consistent with `ciao_procevt'  punlearn dmkeypar  DETNAM=`dmkeypar ${EVT_E} DETNAM echo=yes` -if echo ${DETNAM} | grep -q 'ACIS-0123'; then +if echo ${DETNAM} | \grep -q 'ACIS-0123'; then      printf "## \`DETNAM' (${DETNAM}) has chips 0123 -> ACIS-I\n"      ACIS_TYPE="I"      CCD="0:3" -elif echo ${DETNAM} | grep -q 'ACIS-[0-6]*7'; then +elif echo ${DETNAM} | \grep -q 'ACIS-[0-6]*7'; then      printf "## \`DETNAM' (${DETNAM}) has chip 7 -> ACIS-S\n"      ACIS_TYPE="S"      CCD="7" @@ -225,7 +244,7 @@ fi  ## ACIS type }}}  ## check validity of pie region {{{ -INVALID=`grep -i 'pie' ${SBP_REG} | awk -F'[,()]' '$7 > 360'` +INVALID=`\grep -i 'pie' ${SBP_REG} | awk -F'[,()]' '$7 > 360'`  SBP_REG_FIX="_${SBP_REG%.reg}_fix.reg"  if [ "x${INVALID}" != "x" ]; then      printf "*** WARNING: some pie regions' END_ANGLE > 360\n" | ${TOLOG} @@ -436,12 +455,12 @@ echo "${REG_CCD_RAW}" >_ccd_raw.reg  SBP_REG_INCCD="_${SBP_REG%.reg}_inccd.reg"  [ -e "${SBP_REG_INCCD}" ] && mv -fv ${SBP_REG_INCCD} ${SBP_REG_INCCD}_bak -echo "CMD: cat ${CELL_REG} | grep \( | sed -e ':a;N;s/\n/-/;ta'" -CELL_REG_USE=`cat ${CELL_REG} | grep \( | sed -e ':a;N;s/\n/-/;ta'` +echo "CMD: cat ${CELL_REG} | \grep \( | sed -e ':a;N;s/\n/-/;ta'" +CELL_REG_USE=`cat ${CELL_REG} | \grep \( | sed -e ':a;N;s/\n/-/;ta'`  # exit 233  if [ "${ACIS_TYPE}" = "S" ]; then -    grep -iE '^(pie|annulus)' ${SBP_REG_FIX} | sed "s/$/\ \&\ `cat ${REG_FILE_CCD}`/" | sed "s/$/\ \-\ ${CELL_REG_USE}/" > ${SBP_REG_INCCD} +    \grep -iE '^(pie|annulus)' ${SBP_REG_FIX} | sed "s/$/\ \&\ `cat ${REG_FILE_CCD}`/" | sed "s/$/\ \-\ ${CELL_REG_USE}/" > ${SBP_REG_INCCD}      else       L=`cat ${SBP_REG_FIX} | wc -l ` @@ -457,6 +476,7 @@ printf "extract surface brightness profile ...\n"  SBP_DAT="${SBP_REG%.reg}.fits"  [ -e "${SBP_DAT}" ] && mv -fv ${SBP_DAT} ${SBP_DAT}_bak  if [ -r "${BKG}" ]; then +    punlearn dmkeypar      EXPO_EVT=`dmkeypar ${EVT_E} EXPOSURE echo=yes`      EXPO_BKG=`dmkeypar ${BKG} EXPOSURE echo=yes`      BKG_NORM=`echo "${EXPO_EVT} ${EXPO_BKG}" | awk '{ printf("%g", $1/$2) }'` diff --git a/scripts/make_infojson.sh b/scripts/make_infojson.sh index 17fd2a8..85706c0 100755 --- a/scripts/make_infojson.sh +++ b/scripts/make_infojson.sh @@ -10,7 +10,15 @@  # Weitian LI <liweitianux@gmail.com>  # 2014/06/24  # +# +VERSION="v2.0" +UPDATED="2015/06/03" +#  # ChangeLog: +# v2.0, 2015/06/03, Aaron LI +#   * Copy needed pfiles to tmp directory, +#     set environment variable $PFILES to use these first. +#     and remove them after usage.  # v1.1, 2014/12/05, Weitian LI  #   regex '\s+' not supported by old grep version, change to use '[[:space:]]+'  # @@ -20,7 +28,10 @@ case "$1" in      -[hH]*|--[hH]*)          printf "usage:\n"          printf "    `basename $0` evtdir=<evt_dir> spcdir=<spc_dir> imgdir=<img_dir> massdir=<mass_dir> json=<info_json>\n" -        printf "NOTE: run this script in dir 'repro/'\n" +        printf "\nNOTE:\n" +        printf "    run this script in dir 'repro/'\n" +        printf "\nversion:\n" +        printf "    ${VERSION}, ${UPDATED}\n"          exit 1          ;;  esac @@ -126,6 +137,22 @@ fi  printf "## use massdir: \`${MASS_DIR}'\n"  ## }}} +## prepare parameter files (pfiles) {{{ +CIAO_TOOLS="dmkeypar" + +PFILES_TMPDIR="/tmp/pfiles-$$" +[ -d "${PFILES_TMPDIR}" ] && rm -rf ${PFILES_TMPDIR} || mkdir ${PFILES_TMPDIR} + +# Copy necessary pfiles for localized usage +for tool in ${CIAO_TOOLS}; do +    pfile=`paccess ${tool}` +    punlearn ${tool} && cp -Lvf ${pfile} ${PFILES_TMPDIR}/ +done + +# Modify environment variable 'PFILES' to use local pfiles first +export PFILES="${PFILES_TMPDIR}:${PFILES}" +## pfiles }}} +  # set files  EVT2_CLEAN=`readlink -f ${EVT_DIR}/evt2*_clean*.fits | head -n 1`  MASS_SBP_CFG=`readlink -f ${MASS_DIR}/source.cfg` @@ -159,3 +186,6 @@ cat > ${JSON_FILE} << _EOF_  },  _EOF_ +# clean pfiles +rm -rf ${PFILES_TMPDIR} + | 
