#!/usr/bin/env bash
set -eo pipefail

if [[ $# -ne 3 ]]; then
    echo "Usage: $0 WORKDIR ELOW_EV EHIGH_EV" >&2
    exit 2
fi

WORKDIR=$(realpath "$1")
ELOW=$2
EHIGH=$3
PROJECT_ROOT=/u/Lang3/program/XARTATOMS
OBSROOT=/u/Lang3/program/XARTATOMS/data/0900170101
ESAS_CALDB=/home/huangrui/software/sas/CALDB/esas_ccf

set +u
source /home/huangrui/perl5/perlbrew/etc/bashrc
perlbrew switch perl-5.30.3 >/dev/null
export HEADAS=/home/huangrui/software/miniconda3/envs/heasoft/heasoft
source "$HEADAS/BUILD_DIR/headas-init.sh"
export SAS_DIR=/home/huangrui/software/sas/xmmsas_20211130_0941
export SAS_PATH="$SAS_DIR"
export SAS_CCFPATH=/home/huangrui/software/sas/CALDB/sas_ccf
source "$SAS_DIR/setsas.sh"
export CALDB=/home/huangrui/software/sas/CALDB
export ESAS_CCFPATH=$ESAS_CALDB
export LHEAPERL
LHEAPERL=$(which perl)
export FEL_FKEYPAR_RESULT="$WORKDIR/.fkeypar_last_value"
trap 'rm -f "$FEL_FKEYPAR_RESULT"' EXIT
export PATH="$PROJECT_ROOT/fel_sas_bin":/home/huangrui/software/sas/bin:$PATH
export SAS_CCF=$OBSROOT/rpc_hermes_v2/ccf.cif
export SAS_ODF=$OBSROOT/odf/4128_0900170101_SCX00000SUM.SAS
set -u

cd "$WORKDIR"
for input in mos2U005-clean.fits mos2U005-corn.fits mos2U005-corevc.fits atthk.fits empty_region.txt; do
    [[ -e "$input" ]] || { echo "Missing input: $WORKDIR/$input" >&2; exit 3; }
done

CCD_ARGS=(ccd1=1 ccd2=1 ccd3=1 ccd4=1 ccd5=0 ccd6=1 ccd7=1)

mos-spectra \
    prefix=2U005 \
    caldb="$ESAS_CALDB" \
    region=empty_region.txt \
    mask=0 \
    elow="$ELOW" \
    ehigh="$EHIGH" \
    "${CCD_ARGS[@]}"

mos_back \
    prefix=2U005 \
    caldb="$ESAS_CALDB" \
    diag=0 \
    elow="$ELOW" \
    ehigh="$EHIGH" \
    "${CCD_ARGS[@]}"

rot-im-det-sky \
    prefix=2U005 \
    mask=none \
    elow="$ELOW" \
    ehigh="$EHIGH" \
    mode=1 \
    clobber=yes

for output in \
    "mos2U005-obj-im-${ELOW}-${EHIGH}.fits" \
    "mos2U005-exp-im-${ELOW}-${EHIGH}.fits" \
    "mos2U005-mask-im-${ELOW}-${EHIGH}.fits" \
    "mos2U005-back-im-det-${ELOW}-${EHIGH}.fits" \
    "mos2U005-back-im-sky-${ELOW}-${EHIGH}.fits" \
    mos2U005-obj.pi mos2U005-back.pi mos2U005.arf mos2U005.rmf; do
    [[ -s "$output" ]] || { echo "Missing or empty output: $WORKDIR/$output" >&2; exit 4; }
done

printf 'ESAS exact-band products complete: %s %s-%s eV\n' "$WORKDIR" "$ELOW" "$EHIGH"
