Jpp  master_rocky
the software that should make you happy
JOperationsRunQuality.sh
Go to the documentation of this file.
1 #!/bin/zsh
2 #
3 # \author mdejong
4 #
5 # Auxiliary script to produce QA/QC data for operations (near-real-time) monitoring.
6 #
7 # The data is stored int he <qaqc file> and can be viewed with the script JOperationsRunMonitor.sh.
8 version=1.0
9 script=${0##*/}
10 
11 if [ -z $JPP_DIR ]; then
12  echo "Variable JPP_DIR undefined."
13  exit
14 fi
15 
16 source $JPP_DIR/setenv.sh $JPP_DIR >& /dev/null
17 
18 set_variable: DEBUG QAQC_DEBUG 0
19 set_variable: WORKDIR QAQC_WORKDIR ${TMPDIR:-/tmp}/.$$
20 
21 if do_usage $*; then
22  usage "$script <detector file> (run file(s))+ <qaqc file> [working directory]"
23 fi
24 
25 case $# in
26  4) set_variable WORKDIR $4;&
27  3) set_variable DETECTOR $1;
28  set_array INPUT_FILES $2;
29  set_variable QAQC_FILE $3;;
30  *) fatal "Wrong number of arguments."
31 esac
32 
33 TRIGGER_PARAMETERS=(
34  trigger3DMuon.enabled
35  trigger3DShower.enabled
36  triggerMXShower.enabled
37  triggerNB.enabled
38  writeL0.prescale
39  writeL1.prescale
40  writeL2.prescale
41  writeSN.prescale)
42 
43 TRIGGERS=(`JPrintTriggerBits`)
44 
45 DAQ=(
46  JDAQTimeslice
47  JDAQTimesliceL0
48  JDAQTimesliceL1
49  JDAQTimesliceL2
50  JDAQTimesliceSN
51  JDAQSummaryslice
52  JDAQEvent)
53 
54 typeset -a PARAMETERS
55 
56 PARAMETERS=(
57  GIT detector run livetime_s UTCMin_s UTCMax_s
58  ${TRIGGER_PARAMETERS[*]}
59  ${DAQ[*]}
60  JTriggerReprocessor
61  ${TRIGGERS[*]}
62  in-sync out-sync DAQ WR HRV FIFO
63  PMTs MEAN_Rate_Hz RMS_Rate_Hz
64 )
65 
66 mkdir -p $WORKDIR
67 
68 if [[ ! -s $QAQC_FILE ]]; then
69  echo $PARAMETERS[*] > $QAQC_FILE
70 fi
71 
72 for INPUT_FILE in ${INPUT_FILES[*]}; do
73 
74  # check presence of trigger parameters
75 
76  JPrintTriggerParameters -f ${INPUT_FILE} -d 0
77  CHECK_EXIT_CODE
78 
79  # determine values
80 
81  JTriggerMonitor -v |& awk '/version/ { print $2 }' | read GIT_VERSION
82  CHECK_EXIT_CODE
83 
84  JPrintDAQHeader -f ${INPUT_FILE} -d 0 | read -A DAQ_HEADER
85  CHECK_EXIT_CODE
86 
87 
88 
89  set_variable DETECTOR_ID ${DAQ_HEADER[1]}
90  set_variable RUN ${DAQ_HEADER[2]}
91 
92  JDetectorDB -D ${DETECTOR_ID} -r ${RUN} -o ${DETECTOR} # install detector file as-is for JTriggerReprocessor
93  CHECK_EXIT_CODE
94 
95 
96 
97 
98  getLivetime -f ${INPUT_FILE} -d 0 | read -A LIVETIME_S
99  CHECK_EXIT_CODE
100 
101  getUTC -f ${INPUT_FILE} -d 0 | read -A UTC_S
102  CHECK_EXIT_CODE
103 
104  { JTriggerMonitor -f ${INPUT_FILE} -d ${DEBUG} -Q 3 3>&1 1>&4 | read -A TRIGGER_MONITOR } 4>&1
105  CHECK_EXIT_CODE
106 
107  set_variable OUTPUT_FILE ${WORKDIR}/KM3NeT_${(l:8::0::0:)DETECTOR_ID}_${(l:8::0::0:)RUN}_trigger.root
108 
109  JTriggerReprocessor \
110  -a ${DETECTOR} \
111  -f ${INPUT_FILE} \
112  -o ${OUTPUT_FILE} \
113  -U \
114  -C -\.\* \
115  -d ${DEBUG}
116  CHECK_EXIT_CODE
117 
118  JPrintTree -f ${OUTPUT_FILE} -@ "type = JDAQEvent" -k number_of_entries | read TRIGGER_REPROCESSOR
119 
120  { JTurbot \
121  -f ${INPUT_FILE} \
122  -a ${DETECTOR} \
123  -o /dev/null \
124  -d ${DEBUG} \
125  -Q 3 3>&1 1>&4 | read -A TURBOT } 4>&1
126  CHECK_EXIT_CODE
127 
128  { JSummaryMonitor -f ${INPUT_FILE} -d ${DEBUG} -Q 3 3>&1 1>&4 | read -A SUMMARY_MONITOR } 4>&1
129  CHECK_EXIT_CODE
130 
131  set_variable RUN $DAQ_HEADER[2]
132 
133  # print values
134 
135  printf " %32s" ${GIT_VERSION} >> $QAQC_FILE
136  printf " %8d" ${DAQ_HEADER[1,2]} >> $QAQC_FILE
137  printf " %9.1f" ${LIVETIME_S[1]} >> $QAQC_FILE
138  printf " %12.1f" ${UTC_S[*]} >> $QAQC_FILE
139 
140  for KEY in ${TRIGGER_PARAMETERS[*]}; do
141 
142  JPrintTriggerParameters -f ${INPUT_FILE} -k $KEY -d 0 | read VALUE
143 
144  printf " %4d" ${VALUE-0} >> $QAQC_FILE
145  done
146 
147  for KEY in ${DAQ[*]}; do
148 
149  JPrintTree -f ${INPUT_FILE} -@ "type = $KEY" -k number_of_entries | read VALUE
150 
151  printf " %8d" ${VALUE-0} >> $QAQC_FILE
152  done
153 
154  printf " %8d" ${TRIGGER_REPROCESSOR:-0} >> $QAQC_FILE
155  printf " %8d" ${TRIGGER_MONITOR[*]} >> $QAQC_FILE
156  printf " %4d" ${TURBOT[1,2]} >> $QAQC_FILE
157  printf " %7.5f" ${SUMMARY_MONITOR[1,4]} >> $QAQC_FILE
158  printf " %8.1f" ${SUMMARY_MONITOR[5]} >> $QAQC_FILE
159  printf " %7.0f" ${SUMMARY_MONITOR[6,7]} >> $QAQC_FILE
160  printf "\n" >> $QAQC_FILE
161 done
162 
163 rm -rf $WORKDIR