Jpp test-rotations-old
the software that should make you happy
Loading...
Searching...
No Matches
JTuneHV.sh
Go to the documentation of this file.
1#!/usr/bin/env zsh
2#
3# \author bjung
4#
5version=1.0
6script=${0##*/}
7
8# ------------------------------------------------------------------------------------------------
9#
10# Utility script for finding PMT supply voltages corresponding to the nominal gain setting.
11#
12# ------------------------------------------------------------------------------------------------
13
14
15if [ -z $JPP_DIR ]; then
16 echo "Variable JPP_DIR undefined."
17 exit
18fi
19
20
21source $JPP_DIR/setenv.sh $JPP_DIR
22
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"
30
31set_variable WORKDIR ${TMPDIR:-/tmp}
32set_variable PMT_PARAMETER_FILE ""
33
34if do_usage $*; then
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."
37fi
38
39case $# in
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]
48esac
49
50let "TIMER = $(date +%s)"
51
52# Define directories
53
54set_variable PMT_DIR $WORKDIR/PMTfiles
55set_variable CAL_DIR $WORKDIR/caldata
56set_variable TOT_DIR $WORKDIR/fitdata
57
58# Create directories
59
60for DIR in $PMT_DIR $CAL_DIR $TOT_DIR; do
61
62 if [[ ! -d ${DIR} ]]; then
63 echo "Creating output directory:\t${DIR}"
64 mkdir -p ${DIR}
65 fi
66done
67
68
69# Fit gain-values
70
71set_array RUN_NUMBERS ""
72set_array OUTPUT_FITS ""
73
74for INPUT_FILE in ${INPUT_FILES[@]}; do
75
76 set_array DAQHEADER $(JPrintDAQHeader -f ${INPUT_FILE})
77 set_variable DETID ${DAQHEADER[1]}
78 set_variable RUNID ${DAQHEADER[2]}
79
80 if [ -z $RUNID ]; then
81 echo "WARNING: header of ${INPUT_FILE}\n"
82 echo "does not contain run number; skip."
83 continue;
84 fi
85
86 set_array RUN_NUMBERS ${RUN_NUMBERS[@]} ${RUNID}
87
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
93
94
95 if [ ! -z $PMT_PARAMETER_FILE ]; then
96 if [ -f $PMT_PARAMETER_FILE ]; then
97 cp $PMT_PARAMETER_FILE $OUTPUT_PMT
98 else
99 echo $PMT_PARAMETER_FILE > $OUTPUT_PMT
100 fi
101 fi
102
103
104 if (( 1 )); then
105
106 JCalibrateToT \
107 -a ${DETECTOR_FILE} \
108 -f ${INPUT_FILE} \
109 -C ${TIMESLICE_SELECTOR} \
110 -o ${OUTPUT_CALTOT} --!
111 fi
112
113
114 if (( 1 )); then
115
116 JFitToT \
117 -w \
118 -a ${DETECTOR_FILE} \
119 -f ${OUTPUT_CALTOT} \
120 -o ${OUTPUT_FITTOT} \
121 -P ${OUTPUT_PMT} \
122 -x "${FIT_RANGE}" \
123 -O ${FIT_OPTIONS} \
124 -d ${DEBUG} --! 2>&1 | tee ${LOG_FITTOT}
125 fi
126
127 set_array OUTPUT_FITS ${OUTPUT_FITS[@]} ${RUNID} ${OUTPUT_FITTOT}
128done
129
130
131# Retrieve high-voltage data
132
133if (( 1 )); then
134
135 JGetInputTuneHV \
136 -f "${OUTPUT_FITS[*]}" \
137 -o ${WORKDIR}/${OUTPUT_FILE/\%/.root} \
138 -a ${DETECTOR_FILE} \
139 -d ${DEBUG} --! 2>&1 | tee ${WORKDIR}/${OUTPUT_FILE/\%/.log}
140fi
141
142
143# Fit high-voltage values
144
145if (( 1 )); then
146
147# Retrieve cookie
148
149 JCookie.sh
150
151 set_variable LOCATIONID $(getLocationID)
152 set_variable USER $(getUserID)
153
154 JAsciiDB \
155 -q upi \
156 -@ "pbs = 3.4.2.3" \
157 -d 0 -- > ${WORKDIR}/upi.txt
158
159 let "TIMER = $(date +%s) - $TIMER"
160
161 JTuneHV \
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}
173
174 rm -f ${WORKDIR}/upi.txt
175fi
176
177
178# Print summary
179
180if (( 1 )); then
181
182 JPrintTuneHV \
183 -f ${WORKDIR}/${OUTPUT_FILE/\%/.json} \
184 -a ${DETECTOR_FILE} \
185 -d ${DEBUG} --!
186fi
187
188
189