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} \