Jpp test-rotations-old-533-g2bdbdb559
the software that should make you happy
Loading...
Searching...
No Matches
JQAQC.sh
Go to the documentation of this file.
1#!/usr/bin/env zsh
2#
3# \author mdejong
4#
5script=${0##*/}
6version=1.0
7doxygen=JDATABASE::JRunQuality
8
9if [ -z $JPP_DIR ]; then
10 echo "Variable JPP_DIR undefined."
11 exit
12fi
13
14source $JPP_DIR/setenv.sh $JPP_DIR >& /dev/null
15
16# Auxiliary script to produce QA/QC data.
17#
18# The output data are uploaded to the database with a tool that is part of the km3pipe package.
19# The locally produced data as well as the uploaded data can be viewed with applications/scripts JDataMonitor[.sh] and JDataQuality[.sh].
20#
21# Note that if the list of values is extended, the include file JRunQuality.hh should accordingly be updated.
22
23
24set_variable: DEBUG QAQC_DEBUG 0
25set_variable: VERSION QAQC_VERSION D_1.0.0
26set_variable: WORKDIR QAQC_WORKDIR ${TMPDIR:-/tmp}
27
28TRIGGER_PARAMETERS=(
29 trigger3DMuon.enabled
30 trigger3DShower.enabled
31 triggerMXShower.enabled
32 triggerNB.enabled
33 writeL0.prescale
34 writeL1.prescale
35 writeL2.prescale
36 writeSN.prescale)
37
38TRIGGERS=(`JPrintTriggerBits`)
39
40DAQ_PARAMETERS=(
41 JDAQTimeslice
42 JDAQTimesliceL0
43 JDAQTimesliceL1
44 JDAQTimesliceL2
45 JDAQTimesliceSN
46 JDAQSummaryslice
47 JDAQEvent)
48
49AHRS=(
50 zero_AHRS
51 mean_AHRS)
52
53typeset -a PARAMETERS
54
55PARAMETERS=(
56 GIT JPP nb_of_meta UUID
57 detector run livetime_s UTCMin_s UTCMax_s
58 ${TRIGGER_PARAMETERS[*]}
59 ${DAQ_PARAMETERS[*]}
60 JTriggerReprocessor
61 ${TRIGGERS[*]}
62 in_sync out_sync DAQ WR HRV FIFO
63 PMTs MEAN_Rate_Hz RMS_Rate_Hz
64 hrv_fifo_failures duplic_timeslices
65 Acoustics ${AHRS[*]}
66 in_usync out_usync
67 event_duration
68 HV_check
69 DB_check)
70
71if do_usage $*; then
72 usage \
73 "$script (input file)+ <QA/QC file>" \
74 "\nAuxiliary script to produce the following QA/QC data:\n" \
75 ${PARAMETERS//\.*} \
76 "\nSee also: $JPP_PAGES/ Search \"JRunQuality\""
77fi
78
79if (( $# < 2 )); then
80 fatal "Wrong number of arguments."
81fi
82
83set_array INPUT_FILES ${argv[1,-2]}
84set_variable QAQC_FILE ${argv[-1]:a}
85
86for (( i = 1; $i <= ${#INPUT_FILES}; i += 1 )); do
87 if [[ -f $INPUT_FILES[$i] ]]; then
88 INPUT_FILES[$i]=${INPUT_FILES[$i]:a}
89 fi
90done
91
92set_variable ACOUSTICS_DEBUG ${DEBUG}
93set_variable COMPASS_DEBUG ${DEBUG}
94set_variable DETECTOR detector.detx # detector used during data taking
95
96JCookie.sh
97CHECK_EXIT_CODE
98
99if [[ ! -s $QAQC_FILE ]]; then
100 flock -n $QAQC_FILE echo ${PARAMETERS//\.*/} > $QAQC_FILE
101fi
102
103if [[ ! -d $WORKDIR ]]; then
104 mkdir -p $WORKDIR
105fi
106
107for INPUT_FILE in ${INPUT_FILES[*]}; do
108
109 set_variable DIR `mktemp -d $WORKDIR/qaqc.XXXXXX`
110
111 mkdir -p ${DIR}
112 pushd ${DIR}
113
114 debug "Processing $INPUT_FILE"
115
116 # Locally install input files.
117
118 cat>sound_velocity.txt<<EOF
119 1539.50 -17e-3 -2000.00
120EOF
121
122 # determine values
123
124 JPrintMeta -v |& awk '/version/ { print $2 }' | read GIT_VERSION
125 CHECK_EXIT_CODE
126 debug "GIT version $GIT_VERSION"
127
128 set_array DAQ_VERSION `JPrintMeta -f ${INPUT_FILE} -k GIT`
129 debug "DAQ version $DAQ_VERSION[*]"
130
131 echo ${(s/./)DAQ_VERSION[1]} | read DAQ_MAJOR DAQ_MINOR DAQ_PATCH
132
133 if [[ -z $DAQ_VERSION[1] ]]; then
134 JPrintMeta -f ${INPUT_FILE} -k SVN | read DAQ_VERSION
135 fi
136
137 getUUID -f ${INPUT_FILE} -d 0 | read UUID
138 CHECK_EXIT_CODE
139
140 set_array DAQ_HEADER `JPrintDAQHeader -f ${INPUT_FILE} -d 0`
141 set_variable DETECTOR_ID ${DAQ_HEADER[1]}
142 set_variable RUN ${DAQ_HEADER[2]}
143
144 JDetectorDB -D ${DETECTOR_ID} -r ${RUN} -o ${DETECTOR} -WW -d ${DEBUG} # install detector file as-is for a.o. JTriggerReprocessor
145 CHECK_EXIT_CODE
146
147 if [[ "$DAQ_MAJOR" != [0-9][0-9]* ]] || (( $DAQ_MAJOR <= 12 )); then # Jpp-version dependence
148 JEditDetector \
149 -a ${DETECTOR} \
150 -P "-1 -1 set UDP_COUNTER_DISABLE" \
151 -P "-1 -1 set UDP_TRAILER_DISABLE" \
152 -o ${DETECTOR} \
153 -d ${DEBUG}
154 fi
155
156 JAHRSCalibration.sh ${DETECTOR_ID} # install AHRS calibration file
157 CHECK_EXIT_CODE
158
159 set_array LIVETIME_S `getLivetime -f ${INPUT_FILE} -d 0`
160 set_array UTC_S `getUTC -f ${INPUT_FILE} -d 0`
161
162 TRIGGER_VALUES=()
163
164 for KEY in ${TRIGGER_PARAMETERS[*]}; do
165
166 VALUE=$(JPrintTriggerParameters -f ${INPUT_FILE} -k $KEY -d 0)
167
168 TRIGGER_VALUES+=(${VALUE:-0})
169 done
170
171 DAQ_VALUES=()
172
173 for KEY in ${DAQ_PARAMETERS[*]}; do
174
175 VALUE=$(JPrintTree -f ${INPUT_FILE} -@ "type = $KEY" -k number_of_entries)
176
177 DAQ_VALUES+=(${VALUE:-0})
178 done
179
180 {{ JTriggerMonitor -f ${INPUT_FILE} -d ${DEBUG} -Q 3 3>&1 1>&4 } | read -A TRIGGER_MONITOR } 4>&1
181 CHECK_EXIT_CODE
182
183 set_variable OUTPUT_FILE KM3NeT_${(l:8::0::0:)DETECTOR_ID}_${(l:8::0::0:)RUN}_reprocessor.root
184
185 JTriggerReprocessor \
186 -a ${DETECTOR} \
187 -f ${INPUT_FILE} \
188 -o ${OUTPUT_FILE} \
189 -U \
190 -C -\.\* \
191 -d ${DEBUG}
192 CHECK_EXIT_CODE
193
194 JPrintTree -f ${OUTPUT_FILE} -@ "type = JDAQEvent" -k number_of_entries | read TRIGGER_REPROCESSOR
195
196 {{ JTurbot \
197 -f ${INPUT_FILE} \
198 -a ${DETECTOR} \
199 -o /dev/null \
200 -d ${DEBUG} \
201 -Q 3 3>&1 1>&4 } | read -A TURBOT } 4>&1
202 CHECK_EXIT_CODE
203
204 set_variable OUTPUT_FILE KM3NeT_${(l:8::0::0:)DETECTOR_ID}_${(l:8::0::0:)RUN}_reprocessor2.root
205
206 JTriggerReprocessor \
207 -a ${DETECTOR} \
208 -f ${INPUT_FILE} \
209 -o ${OUTPUT_FILE} \
210 -US \
211 -C -\.\* \
212 -d ${DEBUG}
213 CHECK_EXIT_CODE
214
215 {{ JCoelacanth \
216 -f ${INPUT_FILE} \
217 -f ${OUTPUT_FILE} \
218 -a ${DETECTOR} \
219 -d ${DEBUG} \
220 -Q 3 3>&1 1>&4 } | read -A COELACANTH } 4>&1
221 CHECK_EXIT_CODE
222
223 {{ JSummaryMonitor -f ${INPUT_FILE} -t 50000 -d ${DEBUG} -Q 3 3>&1 1>&4 } | read -A SUMMARY_MONITOR } 4>&1
224 CHECK_EXIT_CODE
225
226 JAcousticsTriggerProcessor.sh ${DETECTOR} ${RUN}
227
228 if (( $? == 0 )); then
229
230 set_variable OUTPUT_FILE KM3NeT_${(l:8::0::0:)DETECTOR_ID}_${(l:8::0::0:)RUN}_event.root
231
232 NUMBER_OF_ACOUSTICS_EVENTS=(`JPrintTree -f ${OUTPUT_FILE} -@ "type = JACOUSTICS::JEvent" -k number_of_entries`)
233 else
234 NUMBER_OF_ACOUSTICS_EVENTS=(0)
235 fi
236
237 JAHRS.sh ${DETECTOR_ID} ${RUN}
238
239 if (( $? == 0 )); then
240
241 set_variable OUTPUT_FILE KM3NeT_${(l:8::0::0:)DETECTOR_ID}_${(l:8::0::0:)RUN}_ahrs.root
242
243 {{ JAHRSMonitor \
244 -a ${DETECTOR} \
245 -f ${OUTPUT_FILE} \
246 -c ahrs_calibration.txt \
247 -q 0.2 \
248 -d ${DEBUG} \
249 -Q 3 3>&1 1>&4 } | read -A AHRS_MONITOR } 4>&1
250 else
251 AHRS_MONITOR=(0,0)
252 fi
253
254 set_variable OUTPUT_FILE KM3NeT_${(l:8::0::0:)DETECTOR_ID}_${(l:8::0::0:)RUN}_trigger.root
255
256 JTriggerProcessor \
257 -a ${DETECTOR} \
258 -f ${INPUT_FILE} \
259 -C JDAQTimesliceSN \
260 -@ "trigger3DMuon.enabled = 1" \
261 -@ "trigger3DMuon.numberOfHits = 3" \
262 -@ "trigger3DMuon.numberOfModules = 3" \
263 -@ "trigger3DMuon.gridAngle_deg = 10" \
264 -@ "trigger3DMuon.TMaxExtra_ns = 500.0e3" \
265 -@ "TMaxEvent_ns = 500.0e3" \
266 -@ "TMaxLocal_ns = 20.0" \
267 -@ "L2.numberOfHits = 4" \
268 -@ "L2.TMaxLocal_ns = 20.0" \
269 -@ "L2.ctMin = 0.0" \
270 -o ${OUTPUT_FILE} \
271 -d ${DEBUG}
272 CHECK_EXIT_CODE
273
274 {{ JSquid \
275 -a ${DETECTOR} \
276 -f ${OUTPUT_FILE} \
277 -o /dev/null \
278 -d ${DEBUG} \
279 -Q 3 3>&1 1>&4 } | read -A SQUID } 4>&1
280
281 {{ JMermaid \
282 -a ${DETECTOR} \
283 -f ${INPUT_FILE} \
284 -o /dev/null \
285 -d ${DEBUG} \
286 -Q 3 3>&1 1>&4 } | read -A MERMAID } 4>&1
287
288 {{ JCheckHV \
289 -D ${DETECTOR_ID} \
290 -R ${RUN} \
291 -d ${DEBUG} \
292 -Q 3 3>&1 1>&4 } | read -A HV_CHECK } 4>&1
293 if (( $? != 0 )); then
294 HV_CHECK[1]=-1
295 fi
296
297 # print values
298
299 ( flock 9; \
300 print -u 9 -f " %12s" ${GIT_VERSION}; \
301 print -u 9 -f " %12s" ${DAQ_VERSION[1]:-\?}; \
302 print -u 9 -f " %1d" ${#DAQ_VERSION}; \
303 print -u 9 -f " %s" ${UUID:-\?}; \
304 print -u 9 -f " %8d" ${DAQ_HEADER[1,2]}; \
305 print -u 9 -f " %9.1f" ${LIVETIME_S[1]}; \
306 print -u 9 -f " %12.1f" ${UTC_S[1,2]}; \
307 print -u 9 -f " %4d" ${TRIGGER_VALUES[*]}; \
308 print -u 9 -f " %8d" ${DAQ_VALUES[*]}; \
309 print -u 9 -f " %8d" ${TRIGGER_REPROCESSOR:-0}; \
310 print -u 9 -f " %8d" ${TRIGGER_MONITOR[*]}; \
311 print -u 9 -f " %4d" ${TURBOT[1,2]}; \
312 print -u 9 -f " %7.5f" ${SUMMARY_MONITOR[1,4]}; \
313 print -u 9 -f " %8.1f" ${SUMMARY_MONITOR[5]}; \
314 print -u 9 -f " %7.0f" ${SUMMARY_MONITOR[6,7]}; \
315 print -u 9 -f " %8d" ${SUMMARY_MONITOR[8]}; \
316 print -u 9 -f " %8d" ${SUMMARY_MONITOR[9]}; \
317 print -u 9 -f " %4d" ${NUMBER_OF_ACOUSTICS_EVENTS[1]}; \
318 print -u 9 -f " %5d" ${AHRS_MONITOR[1]}; \
319 print -u 9 -f " %8.3f" ${AHRS_MONITOR[2]}; \
320 print -u 9 -f " %4d" ${SQUID[1,2]}; \
321 print -u 9 -f " %8d" ${MERMAID[1]}; \
322 print -u 9 -f " %8d" ${HV_CHECK[1]}; \
323 print -u 9 -f " %8d" ${COELACANTH[1]}; \
324 print -u 9 -f "\n"; ) 9>>$QAQC_FILE
325
326 popd
327
328 rm -rf ${DIR}
329done
330