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
25 set_variable FIT_RANGE 0.0 -1.0 # Invalid fit-range such that ToT-fit
is conducted around histogram maximum (see JFitToT.hh)
37 usage "
$script <
detector file> <input files> [output directory] [
json output] [
root output] [test type] [test product] [timeslice selector] [default
PMT parameter file]"
50 *) fatal
"Wrong number of arguments.";;
63 OUTPUT_DIRS=(
$PMT_DIR $K40_DIR $TOT_DIR $FIG_DIR $FAILED_FIG_DIR $EXTRAP_FIG_DIR)
64 for DIR in $OUTPUT_DIRS;
do
66 echo "Creating output directory: ${DIR}"
74 for FILEPATH
in "${FILEPATHS[@]}";
do
80 if [ -z $PREFIX ] || [ -z $DETID ] || [ -z $RUNID ];
then
81 echo "WARNING: $FILEPATH does not contain correct prefix (i.e. KM3NeT_{DETID}_{RUNID}); skip."
86 set_variable OUTPUT_CALTOT $K40_DIR/${PREFIX}_calToT.root
87 set_variable OUTPUT_FITTOT $TOT_DIR/${PREFIX}_fitToT.root
89 if ( ! reuse_file $OUTPUT_PMT );
then
91 echo "Removing ${OUTPUT_PMT}"
94 if [ ! -z $PMT_DEFAULT ];
then
95 if [ -
f $PMT_DEFAULT ];
then
96 cp $PMT_DEFAULT $OUTPUT_PMT
98 echo $PMT_DEFAULT > $OUTPUT_PMT
106 -
a ${DETECTOR_FILE} \
109 -o ${OUTPUT_CALTOT} --!
118 -
a ${DETECTOR_FILE} \
119 -
f ${OUTPUT_CALTOT} \
120 -o ${OUTPUT_FITTOT} \
123 -O
"${FIT_OPTIONS}" \
127 HVTUNING_INPUT+=
"$RUNID $OUTPUT_FITTOT "
131 # Fit high-voltage values
134 set_variable OUTPUT_LOG
"${OUTPUT_DIR}/${OUTPUT_JSON%.*}.log"
137 -
f ${HVTUNING_INPUT} \
138 -O
"${OUTPUT_DIR}/${OUTPUT_JSON}" \
139 -o
"${OUTPUT_DIR}/${OUTPUT_ROOT}" \
142 -
P "${TESTPRODUCT}" \
143 -
d ${
DEBUG} --! 2>&1 | tee ${OUTPUT_LOG}
149 echo "Summarizing output..."
151 set_variable OUTPUT_LOG
"${OUTPUT_DIR}/${OUTPUT_JSON%.*}.log"
152 set_variable SUMMARY_LOG
"${OUTPUT_DIR}/${OUTPUT_JSON%.*}_summary.log"
154 if ( ! reuse_file $SUMMARY_LOG );
then
156 if [ -
f $SUMMARY_LOG ];
then
161 set_variable N_FAILED $(grep -c
"Setting closest values\!" ${OUTPUT_LOG})
164 echo "##### Summary log-file #####" >> ${SUMMARY_LOG}
165 echo "### Statistics ###" >> ${SUMMARY_LOG}
166 echo "Number of evaluated PMTs: ${N_TOTAL}" >> ${SUMMARY_LOG}
167 echo "Number of failed evaluations: ${N_FAILED}" >> ${SUMMARY_LOG}
168 echo "Number of successful evaluations: ${N_SUCCESS}\n" >> ${SUMMARY_LOG}
180 if [[ $LINE =~
"WARNING" ]];
then
181 if [[ $LINE =~
"Setting closest values\!" ]];
then
182 FAILED+=
"$PREVIOUS\n"
183 FAILED_SERIAL+=(
"${${PREVIOUS##*a.k.a. }% /*}")
184 FAILED_LOCATION+=(
"${${PREVIOUS##*/ }%)*}")
185 elif [[ $LINE =~
"Extrapolation failed" ]];
then
186 FAILED_EXTRAP+=
"${PREVIOUS}\n"
187 EXTRAP_SERIAL+=(
"${${PREVIOUS##*a.k.a. }% /*}")
188 EXTRAP_LOCATION+=(
"${${PREVIOUS##*/ }%)*}")
189 elif [[ $LINE =~
"Extrapolation successful" ]];
then
191 SUCCESS_EXTRAP+=
"${PREVIOUS} (HV,G) = (${NEXT})\n"
192 EXTRAP_SERIAL+=(
"${${PREVIOUS##*a.k.a. }% /*}")
193 EXTRAP_LOCATION+=(
"${${PREVIOUS##*/ }%)*}")
200 echo "### List of failed evaluations ###" >> ${SUMMARY_LOG}
201 echo "${FAILED}\n" >> ${SUMMARY_LOG}
202 echo "### List of failed extrapolations ###" >> ${SUMMARY_LOG}
203 echo "${FAILED_EXTRAP}\n" >> ${SUMMARY_LOG}
204 echo "### List of successful extrapolations ###" >> ${SUMMARY_LOG}
205 echo "${SUCCESS_EXTRAP}\n" >> ${SUMMARY_LOG}
208 # Plot (log10|HV|, log10(G))-diagrams for failed evaluations
210 for INDEX in `seq 1
"${#FAILED_SERIAL[@]}"`;
do
216 -
f "${OUTPUT_DIR}/${OUTPUT_ROOT}:${SERIALID}" \
217 -o
"${FAILED_FIG_DIR}/HVxG_${SERIALID}.png" \
220 -\>
"Log_{10}(|HV| / 1V)" \
222 -
T "${SERIALID} / ${LOCATION}" \
226 for INDEX in `seq 1
"${#EXTRAP_SERIAL[@]}"`;
do
232 -
f "${OUTPUT_DIR}/${OUTPUT_ROOT}:${SERIALID}" \
233 -o
"${EXTRAP_FIG_DIR}/HVxG_${SERIALID}.png" \
236 -\>
"Log_{10}(|HV| / 1V)" \
238 -
T "${SERIALID} / ${LOCATION}" \
246 # Create transfer file
249 echo "Creating transfer file..."
250 set_variable OUTPUT_TRANSFER
"${OUTPUT_DIR}/${OUTPUT_JSON%.*}.transfer"
252 if ( ! reuse_file $OUTPUT_TRANSFER );
then
254 if [ -
f $OUTPUT_TRANSFER ];
then
258 set_variable CONTENT_STRING
"Content-Disposition: form-data; name="
267 echo "${SEPARATOR}\n${CONTENT_STRING}\"usr\"\n\n${USRNAME}" >> $OUTPUT_TRANSFER
268 echo "${SEPARATOR}\n${CONTENT_STRING}\"pwd\"\n\n${PASSWRD}" >> $OUTPUT_TRANSFER
269 echo "${SEPARATOR}\n${CONTENT_STRING}\"mode\"\n\nsrv" >> $OUTPUT_TRANSFER
270 echo "${SEPARATOR}\n${CONTENT_STRING}\"jsonfile\"; filename=\"data.json\"\n" >> $OUTPUT_TRANSFER
272 cat
"${OUTPUT_DIR}/${OUTPUT_JSON}" >> $OUTPUT_TRANSFER
273 echo "\n${SEPARATOR}" >> $OUTPUT_TRANSFER
275 unix2dos $OUTPUT_TRANSFER
do echo Generating $dir eval D
void set_variable(const std::string &name, const std::string &value)
Set environment variable.
bool read(Vec &v, std::istream &is)
Read a Vec(tor) from a stream.
then usage for INPUT_FILE in $INPUT_FILES[*]
then JPlot1D f $WORKDIR postfit[prefit\] root
esac print_variable DETECTOR INPUT_FILE OUTPUT_FILE CDF for TYPE in
fi set_variable OUTPUT_PMT $PMT_DIR
do echo Generating $dir eval DIR
fi JEventTimesliceWriter a
*fatal Wrong number of arguments esac if[!-d ${OUTPUT_DIR}]
then echo Variable JPP_DIR undefined exit fi source $JPP_DIR setenv sh $JPP_DIR set_variable DEBUG set_variable NPE set_variable FIT_RANGE set_variable OUTPUT_DIR tmp set_variable OUTPUT_JSON $OUTPUT_DIR HVtuning json set_variable OUTPUT_ROOT $OUTPUT_DIR HVtuning root set_variable FIT_OPTIONS RME set_variable PMT_DEFAULT gain
then usage $script(input file)+" fi if (( $ fatal "Invalid number of arguments." fi JCookie.sh set_array INPUT_FILES $argv[1
do montage tile geometry tmp
do set_variable OUTPUT_DIRECTORY $WORKDIR T
then print_variable DETECTOR INPUT_FILE INTERMEDIATE_FILE check_input_file $DETECTOR $INPUT_FILE check_output_file $INTERMEDIATE_FILE $OUTPUT_FILE JMCEvt f $INPUT_FILE o $INTERMEDIATE_FILE d
then usage $script[input file[working directory[option]]] nWhere option can be LINE
then fatal Not enough arguments fi set_variable DETECTOR $argv[1] INPUT_FILES
JDAQPMTIdentifier PMT
Command line options.
#define DEBUG(A)
Message macros.