#!/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=$PROJECT_ROOT/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_proton_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"
proton \
    prefix=2U005 \
    caldb="$ESAS_CALDB" \
    specname=mos2U005-obj.pi \
    elow="$ELOW" \
    ehigh="$EHIGH" \
    spectrumcontrol=2 \
    bindl=0.0004674319966132056 \
    bbreak=3.2 \
    bindh=0.5001 \
    bnorm=0.0012180544154899433 \
    ccd1=1 ccd2=1 ccd3=1 ccd4=1 ccd5=0 ccd6=1 ccd7=1

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

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

printf 'ESAS native-MOS2 proton products complete: %s %s-%s eV\n' "$WORKDIR" "$ELOW" "$EHIGH"
