7 doxygen=JDATABASE::JRunQuality
9 if [ -z $JPP_DIR ]; then
10 echo "Variable JPP_DIR undefined."
14 source $JPP_DIR/setenv.sh $JPP_DIR >& /dev/null
16 # Auxiliary script to produce QA/QC data.
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].
21 # Note that if the list of values is extended, the include file JRunQuality.hh should accordingly be updated.
25 set_variable: DEBUG QAQC_DEBUG 0
26 set_variable: VERSION QAQC_VERSION D_1.0.0
27 set_variable: WORKDIR QAQC_WORKDIR ${TMPDIR:-/tmp}/.$$
31 trigger3DShower.enabled
32 triggerMXShower.enabled
39 TRIGGERS=(`JPrintTriggerBits`)
53 GIT JPP nb_of_meta UUID
54 detector run livetime_s UTCMin_s UTCMax_s
55 ${TRIGGER_PARAMETERS[*]}
59 in_sync out_sync DAQ WR HRV FIFO
60 PMTs MEAN_Rate_Hz RMS_Rate_Hz
61 hrv_fifo_failures duplic_timeslices
68 "$script (input file)+ <QA/QC file>" \
69 "\nAuxiliary script to produce the following QA/QC data:\n" \
71 "\nSee also: $JPP_PAGES/ Search \"JRunQuality\""
75 fatal "Wrong number of arguments."
78 set_array INPUT_FILES ${argv[1,-2]}
79 set_variable QAQC_FILE ${argv[-1]:a}
84 set_variable ACOUSTICS_DEBUG ${DEBUG}
85 set_variable COMPASS_DEBUG ${DEBUG}
86 set_variable DETECTOR detector.detx # detector used during data taking
91 if [[ ! -s $QAQC_FILE ]]; then
92 echo ${PARAMETERS//\.*/} > $QAQC_FILE
95 for INPUT_FILE in ${INPUT_FILES[*]}; do
99 JPrintMeta -v |& awk '/version/ { print $2 }' | read GIT_VERSION
102 JPrintMeta -f ${INPUT_FILE} -k GIT | tr '\n' ' ' | read -A DAQ_VERSION
104 echo ${(s/./)DAQ_VERSION} | read DAQ_MAJOR DAQ_MINOR DAQ_PATCH
106 if [[ -z $DAQ_VERSION ]]; then
107 JPrintMeta -f ${INPUT_FILE} -k SVN | read DAQ_VERSION
110 getUUID -f ${INPUT_FILE} -d 0 | read UUID
113 JPrintDAQHeader -f ${INPUT_FILE} -d 0 | read -A DAQ_HEADER
116 set_variable DETECTOR_ID ${DAQ_HEADER[1]}
117 set_variable RUN ${DAQ_HEADER[2]}
119 JDetectorDB -D ${DETECTOR_ID} -r ${RUN} -o ${DETECTOR} -d ${DEBUG} # install detector file as-is for a.o. JTriggerReprocessor
122 if [[ "$DAQ_MAJOR" != [0-9][0-9]* ]] || (( $DAQ_MAJOR <= 12 )); then # Jpp-version dependence
125 -P "-1 -1 set UDP_COUNTER_DISABLE" \
126 -P "-1 -1 set UDP_TRAILER_DISABLE" \
131 JAHRSCalibration.sh ${DETECTOR_ID} # install AHRS calibration file
134 getLivetime -f ${INPUT_FILE} -d 0 | read -A LIVETIME_S
137 getUTC -f ${INPUT_FILE} -d 0 | read -A UTC_S
140 {{ JTriggerMonitor -f ${INPUT_FILE} -d ${DEBUG} -Q 3 3>&1 1>&4 } | read -A TRIGGER_MONITOR } 4>&1
143 set_variable OUTPUT_FILE KM3NeT_${(l:8::0::0:)DETECTOR_ID}_${(l:8::0::0:)RUN}_reprocessor.root
145 JTriggerReprocessor \
154 JPrintTree -f ${OUTPUT_FILE} -@ "type = JDAQEvent" -k number_of_entries | read TRIGGER_REPROCESSOR
161 -Q 3 3>&1 1>&4 } | read -A TURBOT } 4>&1
164 {{ JSummaryMonitor -f ${INPUT_FILE} -t 50000 -d ${DEBUG} -Q 3 3>&1 1>&4 } | read -A SUMMARY_MONITOR } 4>&1
167 JAcousticsTriggerProcessor.sh ${DETECTOR} ${RUN}
169 if (( $? == 0 )); then
171 set_variable OUTPUT_FILE KM3NeT_${(l:8::0::0:)DETECTOR_ID}_${(l:8::0::0:)RUN}_event.root
173 JPrintTree -f ${OUTPUT_FILE} -@ "type = JACOUSTICS::JEvent" -k number_of_entries | read -A NUMBER_OF_ACOUSTICS_EVENTS
175 NUMBER_OF_ACOUSTICS_EVENTS=(0)
178 JAHRS.sh ${DETECTOR_ID} ${RUN}
180 if (( $? == 0 )); then
182 set_variable OUTPUT_FILE KM3NeT_${(l:8::0::0:)DETECTOR_ID}_${(l:8::0::0:)RUN}_ahrs.root
187 -c ahrs_calibration.txt \
190 -Q 3 3>&1 1>&4 } | read -A NUMBER_OF_AHRS_EVENTS } 4>&1
192 NUMBER_OF_AHRS_EVENTS=(0)
195 set_variable OUTPUT_FILE KM3NeT_${(l:8::0::0:)DETECTOR_ID}_${(l:8::0::0:)RUN}_trigger.root
201 -@ "trigger3DMuon.enabled = 1" \
202 -@ "trigger3DMuon.numberOfHits = 3" \
203 -@ "trigger3DMuon.numberOfModules = 3" \
204 -@ "trigger3DMuon.gridAngle_deg = 10" \
205 -@ "trigger3DMuon.TMaxExtra_ns = 500.0e3" \
206 -@ "TMaxEvent_ns = 500.0e3" \
207 -@ "TMaxLocal_ns = 20.0" \
208 -@ "L2.numberOfHits = 4" \
209 -@ "L2.TMaxLocal_ns = 20.0" \
210 -@ "L2.ctMin = 0.0" \
220 -Q 3 3>&1 1>&4 } | read -A SQUID } 4>&1
227 -Q 3 3>&1 1>&4 } | read -A MERMAID } 4>&1
231 printf " %12s" ${GIT_VERSION} >> $QAQC_FILE
232 printf " %12s" ${DAQ_VERSION[1]:-\?} >> $QAQC_FILE
233 printf " %1d" ${#DAQ_VERSION} >> $QAQC_FILE
234 printf " %s" ${UUID:-\?} >> $QAQC_FILE
235 printf " %8d" ${DAQ_HEADER[1,2]} >> $QAQC_FILE
236 printf " %9.1f" ${LIVETIME_S[1]} >> $QAQC_FILE
237 printf " %12.1f" ${UTC_S[*]} >> $QAQC_FILE
239 for KEY in ${TRIGGER_PARAMETERS[*]}; do
241 JPrintTriggerParameters -f ${INPUT_FILE} -k $KEY -d 0 | read VALUE
243 printf " %4d" ${VALUE:-0} >> $QAQC_FILE
246 for KEY in ${DAQ[*]}; do
248 JPrintTree -f ${INPUT_FILE} -@ "type = $KEY" -k number_of_entries | read VALUE
250 printf " %8d" ${VALUE:-0} >> $QAQC_FILE
253 printf " %8d" ${TRIGGER_REPROCESSOR:-0} >> $QAQC_FILE
254 printf " %8d" ${TRIGGER_MONITOR[*]} >> $QAQC_FILE
255 printf " %4d" ${TURBOT[1,2]} >> $QAQC_FILE
256 printf " %7.5f" ${SUMMARY_MONITOR[1,4]} >> $QAQC_FILE
257 printf " %8.1f" ${SUMMARY_MONITOR[5]} >> $QAQC_FILE
258 printf " %7.0f" ${SUMMARY_MONITOR[6,7]} >> $QAQC_FILE
259 printf " %8d" ${SUMMARY_MONITOR[8]} >> $QAQC_FILE
260 printf " %8d" ${SUMMARY_MONITOR[9]} >> $QAQC_FILE
261 printf " %4d" ${NUMBER_OF_ACOUSTICS_EVENTS[1]} >> $QAQC_FILE
262 printf " %8.3f" ${NUMBER_OF_AHRS_EVENTS[1]} >> $QAQC_FILE
263 printf " %4d" ${SQUID[1,2]} >> $QAQC_FILE
264 printf " %8d" ${MERMAID[1]} >> $QAQC_FILE
265 printf "\n" >> $QAQC_FILE