Jpp  debug
the software that should make you happy
JTuneHV.sh
Go to the documentation of this file.
1 #!/bin/zsh
2 #
3 # \author bjung
4 #
5 version=1.0
6 script=${0##*/}
7 
8 # ------------------------------------------------------------------------------------------------
9 #
10 # Utility script for finding PMT supply voltages corresponding to the nominal gain setting.
11 #
12 # ------------------------------------------------------------------------------------------------
13 
14 
15 if [ -z $JPP_DIR ]; then
16  echo "Variable JPP_DIR undefined."
17  exit
18 fi
19 
20 
21 source $JPP_DIR/setenv.sh $JPP_DIR
22 
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"
30 
31 set_variable WORKDIR ${TMPDIR:-/tmp}
32 set_variable PMT_PARAMETER_FILE ""
33 
34 if 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."
37 fi
38 
39 case $# 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]
48 esac
49 
50 let "TIMER = $(date +%s)"
51 
52 # Define directories
53 
54 set_variable PMT_DIR $WORKDIR/PMTfiles
55 set_variable CAL_DIR $WORKDIR/caldata
56 set_variable TOT_DIR $WORKDIR/fitdata
57 
58 # Create directories
59 
60 for 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
66 done
67 
68 
69 # Fit gain-values
70 
71 set_array RUN_NUMBERS ""
72 set_array OUTPUT_FITS ""
73 
74 for 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}
128 done
129 
130 
131 # Retrieve high-voltage data
132 
133 if (( 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}
140 fi
141 
142 
143 # Fit high-voltage values
144 
145 if (( 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
175 fi
176 
177 
178 # Print summary
179 
180 if (( 1 )); then
181 
182  JPrintTuneHV \
183  -f ${WORKDIR}/${OUTPUT_FILE/\%/.json} \
184  -a ${DETECTOR_FILE} \
185  -d ${DEBUG} --!
186 fi
187 
188 
189