aboutsummaryrefslogtreecommitdiffstats
path: root/mod_ly/fit_beta_nfw_mass_profile_simple.sh
diff options
context:
space:
mode:
Diffstat (limited to 'mod_ly/fit_beta_nfw_mass_profile_simple.sh')
-rwxr-xr-xmod_ly/fit_beta_nfw_mass_profile_simple.sh135
1 files changed, 135 insertions, 0 deletions
diff --git a/mod_ly/fit_beta_nfw_mass_profile_simple.sh b/mod_ly/fit_beta_nfw_mass_profile_simple.sh
new file mode 100755
index 0000000..dc4fd3c
--- /dev/null
+++ b/mod_ly/fit_beta_nfw_mass_profile_simple.sh
@@ -0,0 +1,135 @@
+#!/bin/sh
+
+# modified by LIweitaNux, 2012/09/06
+export PATH="/usr/local/bin:/usr/bin:/bin:$PATH"
+
+if [ $# -eq 1 ]; then
+ cfg_file="$1"
+elif [ $# -eq 2 ]; then
+ cfg_file="$1"
+ CENTER_VAL="YES"
+else
+ echo "Usage: $0 <cfg_file> [c]"
+ exit 1
+fi
+
+if ! which xspec > /dev/null; then
+ printf "ERROR: please initialize HEASOFT first\n"
+ exit 2
+fi
+
+if [ -z "${HEADAS}" ]; then
+ printf "ERROR: variable \`HEADAS' not properly set\n"
+ exit 3
+fi
+
+export PGPLOT_FONT="${HEADAS}/lib/grfont.dat"
+printf "## PGPLOT_FONT: \`${PGPLOT_FONT}'\n"
+
+if [ "$0" = `basename $0` ]; then
+ script_path=`which $0`
+ base_path=`dirname ${script_path}`
+else
+ base_path=`dirname $0`
+fi
+printf "## base_path: \`${base_path}'\n"
+printf "## use configuration file: \`${cfg_file}'\n"
+
+#initialize profile type name
+t_profile_type=`grep '^t_profile' $cfg_file | awk '{print $2}'`
+printf "## t_profile_type: \`$t_profile_type'\n"
+#initialize data file name
+t_data_file=`grep '^t_data_file' $cfg_file | awk '{print $2}'`
+t_param_file=`grep '^t_param_file' $cfg_file | awk '{print $2}'`
+#initialize sbp config file
+sbp_cfg=`grep '^sbp_cfg' $cfg_file | awk '{print $2}'`
+#initialize the temperature profile file
+T_file=`grep '^T_file' $sbp_cfg | awk '{print $2}'`
+cfunc_file=`grep '^cfunc_file' ${sbp_cfg} |awk '{print $2}'`
+abund=`grep '^abund' ${cfg_file} |awk '{print $2}'`
+nh=`grep '^nh' ${cfg_file} |awk '{print $2}'`
+## calc `cm_per_pixel' instead {{{
+# cm_per_pixel=`grep '^cm_per_pixel' $sbp_cfg|awk '{print $2}'`
+z=`grep '^z' $sbp_cfg | awk '{ print $2 }'`
+cm_per_pixel=`${base_path}/calc_distance ${z} | grep 'cm_per_pixel' | awk '{ print $2 }'`
+sed -i'' "s/^cm_per_pixel.*$/cm_per_pixel ${cm_per_pixel}/" ${sbp_cfg}
+printf "## redshift: ${z}, cm_per_pixel: ${cm_per_pixel}\n"
+## cm_per_pixel }}}
+da=`python -c "print($cm_per_pixel/(.492/3600/180*3.1415926))"`
+dl=`python -c "print($da*(1+$z)**2)"`
+## sbp {{{
+sbp_data_file=`grep '^sbp_file' $sbp_cfg | awk '{print $2}'`
+radius_sbp_file=`grep '^radius_sbp_file' ${cfg_file} | awk '{print $2}'`
+
+if [ "x$radius_sbp_file" = "x" ] || [ ! -r "${radius_sbp_file}" ]; then
+ echo "ERROR, must have radius_sbp_file assigned, this file should be a 4-column file, which contains the radius, radius err, sbp, and sbp err"
+ exit 200
+fi
+
+TMP_RSBP="_tmp_rsbp.txt"
+[ -e "${TMP_RSBP}" ] && rm -f ${TMP_RSBP}
+cat ${radius_sbp_file} | sed 's/#.*$//' | grep -Ev '^\s*$' > ${TMP_RSBP}
+# mv -f _tmp_rsbp.txt ${radius_sbp_file}
+radius_sbp_file="${TMP_RSBP}"
+## sbp }}}
+
+# determine which temperature profile to be used, and fit the T profile {{{
+if [ "$t_profile_type" = "zyy" ]; then
+ $base_path/fit_zyy_model $t_data_file $t_param_file $cm_per_pixel
+ # mv -f zyy_dump.qdp ${T_file}
+ mv -f zyy_dump.qdp zyy_dump_center.qdp
+elif [ "$t_profile_type" = "m0603246" ]; then
+ $base_path/fit_m0603246 $t_data_file $cm_per_pixel
+ # mv -f m0603246_dump.qdp ${T_file}
+ mv -f m0603246_dump.qdp m0603246_dump_center.qdp
+elif [ "$t_profile_type" = "wang2012" ]; then
+ $base_path/fit_wang2012_model $t_data_file $t_param_file $cm_per_pixel 2> /dev/null | tee wang2012_center_param.txt
+ # mv -f wang2012_dump.qdp ${T_file}
+ cp -fv wang2012_dump.qdp ${T_file}
+ T_file_center="wang2012_dump_center.qdp"
+ mv -fv wang2012_dump.qdp ${T_file_center}
+ mv -fv fit_result.qdp wang2012_fit_center.qdp
+elif [ "$t_profile_type" = "allen" ]; then
+ $base_path/fit_allen_model $t_data_file $cm_per_pixel
+ # mv -f allen_dump.qdp ${T_file}
+ mv -f allen_dump.qdp allen_dump_center.qdp
+elif [ "$t_profile_type" = "zzl" ]; then
+ $base_path/fit_zzl_model $t_data_file $t_param_file
+ # mv -f zzl_dump.qdp ${T_file}
+ mv -f zzl_dump.qdp zzl_dump_center.qdp
+else
+ printf "ERROR: temperature profile name \`${t_profile_type}' invalid!\n"
+ exit 10
+fi
+# temp profile }}}
+
+$base_path/coolfunc_calc_bolo.sh ${T_file_center} $abund $nh $z cfunc_bolo.dat
+$base_path/coolfunc_calc.sh ${T_file_center} $abund $nh $z $cfunc_file
+mv -fv flux_cnt_ratio.txt flux_cnt_ratio_center.txt
+# fit sbp
+$base_path/fit_beta_sbp $sbp_cfg 2> /dev/null
+mv -fv beta_param.txt beta_param_center.txt
+mv -fv sbp_fit.qdp sbp_fit_center.qdp
+mv -fv rho_fit.qdp rho_fit_center.qdp
+$base_path/fit_nfw_mass mass_int.dat $z 2> /dev/null
+mv -fv nfw_param.txt nfw_param_center.txt
+mv -fv nfw_fit_result.qdp nfw_fit_center.qdp
+mv -fv nfw_dump.qdp mass_int_center.qdp
+mv -fv overdensity.qdp overdensity_center.qdp
+mv -fv gas_mass_int.qdp gas_mass_int_center.qdp
+
+## cooling time
+$base_path/cooling_time rho_fit_center.dat ${T_file_center} cfunc_bolo.dat $dl $cm_per_pixel > cooling_time.dat
+## radius to calculate tcool, not the cooling time!
+rcool=`$base_path/analyze_mass_profile.py 500 c | grep '^r500' | awk -F "=" '{print .048*$2}'`
+
+## center value {{{
+if [ "${CENTER_VAL}" = "YES" ]; then
+ $base_path/analyze_mass_profile.py 200 c
+ $base_path/analyze_mass_profile.py 500 c
+ exit 0
+fi
+## center value }}}
+
+exit 0
+