8# ------------------------------------------------------------------------------------------------
 
   10#     Utility script for finding PMT supply voltages corresponding to the nominal gain setting.
 
   12# ------------------------------------------------------------------------------------------------
 
   15if [ -z $JPP_DIR ]; then
 
   16    echo "Variable JPP_DIR undefined."
 
   21source $JPP_DIR/setenv.sh $JPP_DIR
 
   23set_variable:  DEBUG               CALIBRATION_DEBUG           2
 
   24set_variable:  FIT_OPTIONS         TUNEHV_GAINFIT_OPTIONS     "RME"
 
   25set_variable:  FIT_RANGE           TUNEHV_GAINFIT_RANGE       "0.0 -1.0"  # Invalid fit-range such that ToT-fit is conducted around histogram maximum (see JFitToT.hh)  
 
   26set_variable:  OUTPUT_FILE         TUNEHV_OUTPUT_FILE         "HVtuning%"
 
   27set_variable:  DB_APIVERSION       TUNEHV_DB_APIVERSION       "2.0.0"
 
   28set_variable:  DB_TESTTYPE         TUNEHV_DB_TESTTYPE         "HV-TUNING-GAIN-v3"
 
   29set_variable:  TIMESLICE_SELECTOR  TUNEHV_TIMESLICE_SELECTOR  "JDAQTimesliceL0"
 
   31set_variable   WORKDIR             ${TMPDIR:-/tmp}                       
 
   32set_variable   PMT_PARAMETER_FILE  ""                         
 
   35    usage "$script <detector file> <input files> [output directory] [PMT parameter file]\n"\
 
   36          "Note that if more than one input file is specified, all other arguments must be provided."
 
   40    4) set_variable PMT_PARAMETER_FILE $4;&
 
   41    3) set_variable WORKDIR            $3;&
 
   42    2) set_array    INPUT_FILES        $2;
 
   43       set_variable DETECTOR_FILE      $1;;
 
   44    *) set_variable DETECTOR_FILE      $1
 
   45       set_array    INPUT_FILES        $argv[2,-3]
 
   46       set_variable WORKDIR            $argv[-2]
 
   47       set_variable PMT_PARAMETER_FILE $argv[-1]
 
   50let "TIMER = $(date +%s)"
 
   54set_variable     PMT_DIR               $WORKDIR/PMTfiles
 
   55set_variable     CAL_DIR               $WORKDIR/caldata
 
   56set_variable     TOT_DIR               $WORKDIR/fitdata
 
   60for DIR in $PMT_DIR $CAL_DIR $TOT_DIR; do
 
   62    if [[ ! -d ${DIR} ]]; then
 
   63        echo "Creating output directory:\t${DIR}"
 
   71set_array                RUN_NUMBERS     ""
 
   72set_array                OUTPUT_FITS     ""
 
   74for INPUT_FILE in ${INPUT_FILES[@]}; do
 
   76    set_array            DAQHEADER       $(JPrintDAQHeader -f ${INPUT_FILE})
 
   77    set_variable         DETID           ${DAQHEADER[1]}
 
   78    set_variable         RUNID           ${DAQHEADER[2]}
 
   80    if [ -z $RUNID ]; then
 
   81        echo "WARNING: header of ${INPUT_FILE}\n"
 
   82        echo "does not contain run number; skip."
 
   86    set_array            RUN_NUMBERS     ${RUN_NUMBERS[@]} ${RUNID}    
 
   88    set_variable         FILENAME        ${${INPUT_FILE##*/}%.*}
 
   89    set_variable         OUTPUT_PMT      $PMT_DIR/${FILENAME}_PMT.txt
 
   90    set_variable         OUTPUT_CALTOT   $CAL_DIR/${FILENAME}_calToT.root
 
   91    set_variable         OUTPUT_FITTOT   $TOT_DIR/${FILENAME}_fitToT.root
 
   92    set_variable         LOG_FITTOT      $TOT_DIR/${FILENAME}_fitToT.log    
 
   95    if [ ! -z $PMT_PARAMETER_FILE ]; then
 
   96        if [ -f $PMT_PARAMETER_FILE ]; then
 
   97            cp   $PMT_PARAMETER_FILE   $OUTPUT_PMT
 
   99            echo $PMT_PARAMETER_FILE > $OUTPUT_PMT
 
  107            -a ${DETECTOR_FILE}                  \
 
  109            -C ${TIMESLICE_SELECTOR}             \
 
  110            -o ${OUTPUT_CALTOT} --!
 
  118            -a ${DETECTOR_FILE}                  \
 
  119            -f ${OUTPUT_CALTOT}                  \
 
  120            -o ${OUTPUT_FITTOT}                  \
 
  124            -d ${DEBUG} --! 2>&1 | tee ${LOG_FITTOT}
 
  127    set_array            OUTPUT_FITS     ${OUTPUT_FITS[@]} ${RUNID} ${OUTPUT_FITTOT}
 
  131# Retrieve high-voltage data
 
  136        -f "${OUTPUT_FITS[*]}"                   \
 
  137        -o ${WORKDIR}/${OUTPUT_FILE/\%/.root}    \
 
  138        -a ${DETECTOR_FILE}                      \
 
  139        -d ${DEBUG} --! 2>&1 | tee ${WORKDIR}/${OUTPUT_FILE/\%/.log}
 
  143# Fit high-voltage values
 
  151    set_variable  LOCATIONID      $(getLocationID)
 
  152    set_variable  USER            $(getUserID)
 
  157        -d 0 -- > ${WORKDIR}/upi.txt
 
  159    let "TIMER = $(date +%s) - $TIMER"
 
  162        -f ${WORKDIR}/${OUTPUT_FILE/\%/.root}    \
 
  163        -o ${WORKDIR}/${OUTPUT_FILE/\%/.json}    \
 
  164        -a ${DETECTOR_FILE}                      \
 
  165        -b ${WORKDIR}/upi.txt                    \
 
  166        -# "APIversion  = ${DB_APIVERSION}"      \
 
  167        -# "testType    = ${DB_TESTTYPE}"        \
 
  168        -# "login       = ${USER}"               \
 
  169        -# "locationID  = ${LOCATIONID}"         \
 
  170        -# "runNumbers  = ${RUN_NUMBERS[*]}"     \
 
  171        -# "elapsedTime = ${TIMER}"              \
 
  172        -d ${DEBUG} --! 2>&1 | tee -a ${WORKDIR}/${OUTPUT_FILE/\%/.log}
 
  174    rm -f ${WORKDIR}/upi.txt
 
  183        -f ${WORKDIR}/${OUTPUT_FILE/\%/.json}    \
 
  184        -a ${DETECTOR_FILE}                      \