aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/calc_lx_simple_v2.sh
blob: 576a43ef86979138e845254c7df7b7ab7b630a63 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#!/bin/sh
#
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'      ##
###########################################################

## usage, `path_conffile' is the configuration file
## which contains the `path' to each `repro/mass' directory
if [ $# -ne 1 ]; then
    printf "usage:\n"
    printf "    `basename $0` <mass_dir>\n"
    printf "\nNOTE:\n"
    printf "   script cannot handle \`~' in path\n"
    exit 1
fi

## set the path to the script {{{
if [ -n "${MASS_PROFILE_DIR}" ]; then
    CALCLX_SCRIPT="${MASS_PROFILE_DIR}/calc_lx"
    CFCALC_SCRIPT="${MASS_PROFILE_DIR}/coolfunc_calc.sh"
    FIT_TPRO="${MASS_PROFILE_DIR}/fit_wang2012_model"
else
    printf "ERROR: environment variable 'MASS_PROFILE_DIR' not set.\n"
    exit 2
fi

if [ -z "${CALCLX_SCRIPT}" ]; then
    printf "ERROR: \`CALCLX_SCRIPT' not set\n"
    exit 250
elif [ ! -r ${CALCLX_SCRIPT} ]; then
    printf "ERROR: CANNOT access script \`${CALCLX_SCRIPT}'\n"
    exit 251
fi
## script path }}}

# result lines
RES_LINE=100
# process dir
MDIR="$1"
# mass fitting conf
MCONF="fitting_mass.conf"

# process
cd ${MDIR}
printf "Entered dir: \``pwd`'\n"
# conf file
if [ ! -r "${MCONF}" ]; then
    printf "ERROR: configuration file \`${MCONF}' not accessiable\n"
else
    LOGFILE="calclx_`date '+%Y%m%d%H'`.log"
    [ -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 }'`
    # radius_sbp_file {{{
    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}
    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 }'`
    printf "## use logfile: \`${LOGFILE}'\n"
    printf "## working directory: \``pwd -P`'\n" | ${TOLOG}
    printf "## use configuration files: \`${MCONF}, ${SBP_CONF}'\n" | ${TOLOG}
    printf "## use radius_sbp_file: \`${RSBP}'\n" | ${TOLOG}
    printf "## R500 (kpc): \`${R500_VAL}'\n" | ${TOLOG}
    printf "## R200 (kpc): \`${R200_VAL}'\n" | ${TOLOG}
    printf "## redshift: \`${Z}'\n" | ${TOLOG}
    printf "## abund: \`${ABUND}'\n" | ${TOLOG}
    printf "## nh: \`${NH}'\n" | ${TOLOG}
    printf "## T_profile type: \`${TPRO_TYPE}'\n" | ${TOLOG}
    printf "## cfunc_file: \`${CF_FILE}'\n" | ${TOLOG}
    ## fit temperature profile {{{
    T_FILE="_tpro_dump.qdp"
    if [ "${TPRO_TYPE}" = "wang2012" ]; then
        printf "fitting temperature profile (wang2012) ...\n"
        [ -e "wang2012_dump.qdp" ] && mv -fv wang2012_dump.qdp wang2012_dump.qdp_bak
        [ -e "fit_result.qdp" ] && mv -fv fit_result.qdp fit_result.qdp_bak
        ${FIT_TPRO} ${TPRO_DATA} ${TPRO_PARA} ${cm_per_pixel} 2> /dev/null
        mv -fv wang2012_dump.qdp ${T_FILE}
        [ -e "wang2012_dump.qdp_bak" ] && mv -fv wang2012_dump.qdp_bak wang2012_dump.qdp
        [ -e "fit_result.qdp_bak" ] && mv -fv fit_result.qdp_bak fit_result.qdp
    else
        printf "ERROR: invalid tprofile type: \`${TPRO_TYPE}'\n"
        exit 10
    fi
    ## tprofile }}}
    ## calc `flux_ratio' {{{
    printf "calc flux_ratio ...\n"
    CF_FILE="_cf_data.txt"
    FLUX_RATIO="__flux_cnt_ratio.txt"
    [ -e "flux_cnt_ratio.txt" ] && mv -fv flux_cnt_ratio.txt flux_cnt_ratio.txt_bak
    printf "## CMD: sh ${CFCALC_SCRIPT} ${T_FILE} ${ABUND} ${NH} ${Z} ${CF_FILE}\n" | ${TOLOG}
    sh ${CFCALC_SCRIPT} ${T_FILE} ${ABUND} ${NH} ${Z} ${CF_FILE}
    mv -fv flux_cnt_ratio.txt ${FLUX_RATIO}
    [ -e "flux_cnt_ratio.txt_bak" ] && mv -fv flux_cnt_ratio.txt_bak flux_cnt_ratio.txt
    ## 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 }'`
    printf "L500= ${L500} erg/s\n" | ${TOLOG}
    printf "L200= ${L200} erg/s\n" | ${TOLOG}
fi
printf "\n++++++++++++++++++++++++++++++++++++++\n"