8 # ------------------------------------------------------------------------------------------------
 
   10 #     Utility script for finding PMT supply voltages corresponding to the nominal gain setting.
 
   12 # ------------------------------------------------------------------------------------------------
 
   15 if [ -z $JPP_DIR ]; then
 
   16     echo "Variable JPP_DIR undefined."
 
   21 source $JPP_DIR/setenv.sh $JPP_DIR
 
   23 set_variable:  DEBUG               CALIBRATION_DEBUG           2
 
   24 set_variable:  FIT_OPTIONS         TUNEHV_GAINFIT_OPTIONS     "RME"
 
   25 set_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)  
 
   26 set_variable:  OUTPUT_FILE         TUNEHV_OUTPUT_FILE         "HVtuning%"
 
   27 set_variable:  DB_APIVERSION       TUNEHV_DB_APIVERSION       "2.0.0"
 
   28 set_variable:  DB_TESTTYPE         TUNEHV_DB_TESTTYPE         "HV-TUNING-GAIN-v3"
 
   29 set_variable:  TIMESLICE_SELECTOR  TUNEHV_TIMESLICE_SELECTOR  "JDAQTimesliceL0"
 
   31 set_variable   WORKDIR             ${TMPDIR:-/tmp}                       
 
   32 set_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]
 
   50 let "TIMER = $(date +%s)"
 
   54 set_variable     PMT_DIR               $WORKDIR/PMTfiles
 
   55 set_variable     CAL_DIR               $WORKDIR/caldata
 
   56 set_variable     TOT_DIR               $WORKDIR/fitdata
 
   60 for DIR in $PMT_DIR $CAL_DIR $TOT_DIR; do
 
   62     if [[ ! -d ${DIR} ]]; then
 
   63         echo "Creating output directory:\t${DIR}"
 
   71 set_array                RUN_NUMBERS     ""
 
   72 set_array                OUTPUT_FITS     ""
 
   74 for 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}                      \