Jpp  17.3.2
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
JQAQC.sh
Go to the documentation of this file.
1 #!/bin/zsh
2 #
3 # \author mdejong
4 #
5 version=1.0
6 script=${0##*/}
7 
8 if [ -z $JPP_DIR ]; then
9  echo "Variable JPP_DIR undefined."
10  exit
11 fi
12 
13 source $JPP_DIR/setenv.sh $JPP_DIR >& /dev/null
14 
15 # Auxiliary script to produce QA/QC data.
16 #
17 # The output data are uploaded to the database with a tool that is part of the km3pipe package.
18 # The locally produced data as well as the uploaded data can be viewed with applications/scripts JDataMonitor[.sh] and JDataQuality[.sh].
19 #
20 # Note that if the list of values is extended, the include file JRunQuality.hh should accordingly be updated.
21 
22 set_variable: DEBUG QAQC_DEBUG 0
23 set_variable: WORKDIR QAQC_WORKDIR ${TMPDIR:-/tmp}/.$$
24 
26  trigger3DMuon.enabled
27  trigger3DShower.enabled
28  triggerMXShower.enabled
29  triggerNB.enabled
30  writeL0.prescale
31  writeL1.prescale
32  writeL2.prescale
33  writeSN.prescale)
34 
35 TRIGGERS=(`JPrintTriggerBits`)
36 
37 DAQ=(
38  JDAQTimeslice
39  JDAQTimesliceL0
40  JDAQTimesliceL1
41  JDAQTimesliceL2
43  JDAQSummaryslice
44  JDAQEvent)
45 
46 typeset -a PARAMETERS
47 
48 PARAMETERS=(
49  GIT JPP UUID
50  detector run livetime_s UTCMin_s UTCMax_s
51  ${TRIGGER_PARAMETERS[*]}
52  ${DAQ[*]}
53  JTriggerReprocessor
54  ${TRIGGERS[*]}
55  in_sync out_sync DAQ WR HRV FIFO
57  Acoustics AHRS
58  in_usync out_usync
59  event_duration)
60 
61 if do_usage $*; then
62  usage \
63  "$script (input file)+ <QA/QC file>" \
64  "\nAuxiliary script to produce the following QA/QC data:\n" \
65  ${PARAMETERS//\.*}
66 fi
67 
68 if (( $# < 2 )); then
69  fatal "Wrong number of arguments."
70 fi
71 
72 set_array INPUT_FILES $argv[1,-2]
73 set_variable QAQC_FILE $argv[-1]
74 
75 
76 mkdir -p $WORKDIR
77 
78 set_variable ACOUSTICS_DEBUG ${DEBUG}
79 set_variable ACOUSTICS_WORKDIR ${WORKDIR}
80 set_variable COMPASS_DEBUG ${DEBUG}
81 set_variable COMPASS_WORKDIR ${WORKDIR}
83 
84 JCookie.sh
85 CHECK_EXIT_CODE
86 
87 if [[ ! -s $QAQC_FILE ]]; then
88  echo ${PARAMETERS//\.*/} > $QAQC_FILE
89 fi
90 
91 for INPUT_FILE in ${INPUT_FILES[*]}; do
92 
93  # determine values
94 
95  JPrintMeta -v |& awk '/version/ { print $2 }' | read GIT_VERSION
96  CHECK_EXIT_CODE
97 
98  JPrintMeta -f ${INPUT_FILE} -k GIT | read DAQ_VERSION
99 
100  echo ${(s/./)DAQ_VERSION} | read DAQ_MAJOR DAQ_MINOR DAQ_PATCH
101 
102  if [[ -z $DAQ_VERSION ]]; then
103  JPrintMeta -f ${INPUT_FILE} -k SVN | read DAQ_VERSION
104  fi
105 
106  getUUID -f ${INPUT_FILE} -d 0 | read UUID
107  CHECK_EXIT_CODE
108 
109  JPrintDAQHeader -f ${INPUT_FILE} -d 0 | read -A DAQ_HEADER
110  CHECK_EXIT_CODE
111 
112  set_variable DETECTOR_ID ${DAQ_HEADER[1]}
113  set_variable RUN ${DAQ_HEADER[2]}
114 
115  JDetectorDB -D ${DETECTOR_ID} -r ${RUN} -o ${DETECTOR} -d ${DEBUG} # install detector file as-is for JTriggerReprocessor
116  CHECK_EXIT_CODE
117 
118  if [[ "$DAQ_MAJOR" != [0-9][0-9]* ]] || (( $DAQ_MAJOR <= 12 )); then # Jpp-version dependence
119  JEditDetector \
120  -a ${DETECTOR} \
121  -P "-1 -1 set UDP_COUNTER_DISABLE" \
122  -P "-1 -1 set UDP_TRAILER_DISABLE" \
123  -o ${DETECTOR} \
124  -d ${DEBUG}
125  fi
126 
127  JAHRSCalibration.sh ${DETECTOR_ID} # install AHRS calibration file
128  CHECK_EXIT_CODE
129 
130  getLivetime -f ${INPUT_FILE} -d 0 | read -A LIVETIME_S
131  CHECK_EXIT_CODE
132 
133  getUTC -f ${INPUT_FILE} -d 0 | read -A UTC_S
134  CHECK_EXIT_CODE
135 
136  {{ JTriggerMonitor -f ${INPUT_FILE} -d ${DEBUG} -Q 3 3>&1 1>&4 } | read -A TRIGGER_MONITOR } 4>&1
137  CHECK_EXIT_CODE
138 
139  set_variable OUTPUT_FILE ${WORKDIR}/KM3NeT_${(l:8::0::0:)DETECTOR_ID}_${(l:8::0::0:)RUN}_reprocessor.root
140 
141  JTriggerReprocessor \
142  -a ${DETECTOR} \
143  -f ${INPUT_FILE} \
144  -o ${OUTPUT_FILE} \
145  -U \
146  -C -\.\* \
147  -d ${DEBUG}
148  CHECK_EXIT_CODE
149 
150  JPrintTree -f ${OUTPUT_FILE} |& awk '/JDAQEvent/ { print $3 }' | read TRIGGER_REPROCESSOR
151 
152  {{ JTurbot \
153  -f ${INPUT_FILE} \
154  -a ${DETECTOR} \
155  -o /dev/null \
156  -d ${DEBUG} \
157  -Q 3 3>&1 1>&4 } | read -A TURBOT } 4>&1
158  CHECK_EXIT_CODE
159 
160  {{ JSummaryMonitor -f ${INPUT_FILE} -d ${DEBUG} -Q 3 3>&1 1>&4 } | read -A SUMMARY_MONITOR } 4>&1
161  CHECK_EXIT_CODE
162 
163  JDetectorDB -a ${DETECTOR} -o ${DETECTOR} -WW -d ${DEBUG} # update detector file with base modules
164 
165  JAcousticsEventBuilder.sh ${DETECTOR} ${RUN}
166 
167  if (( $? == 0 )); then
168 
169  set_variable OUTPUT_FILE $WORKDIR/KM3NeT_${(l:8::0::0:)DETECTOR_ID}_${(l:8::0::0:)RUN}_event.root
170 
171  JPrintTree -f ${OUTPUT_FILE} |& awk '/JACOUSTICS::JEvent/ { print $3 }' | read -A NUMBER_OF_ACOUSTICS_EVENTS
172  else
173  NUMBER_OF_ACOUSTICS_EVENTS=(0)
174  fi
175 
176  JAHRS.sh ${DETECTOR_ID} ${RUN}
177 
178  if (( $? == 0 )); then
179 
180  set_variable OUTPUT_FILE ${WORKDIR}/KM3NeT_${(l:8::0::0:)DETECTOR_ID}_${(l:8::0::0:)RUN}_ahrs.root
181 
182  {{ JAHRSMonitor \
183  -a ${DETECTOR} \
184  -f ${OUTPUT_FILE} \
185  -c ${WORKDIR}/ahrs_calibration.txt \
186  -q 0.2 \
187  -d ${DEBUG} \
188  -Q 3 3>&1 1>&4 } | read -A NUMBER_OF_AHRS_EVENTS } 4>&1
189  else
190  NUMBER_OF_AHRS_EVENTS=(0)
191  fi
192 
193  set_variable OUTPUT_FILE ${WORKDIR}/KM3NeT_${(l:8::0::0:)DETECTOR_ID}_${(l:8::0::0:)RUN}_trigger.root
194 
195  JTriggerProcessor \
196  -a ${DETECTOR} \
197  -f ${INPUT_FILE} \
198  -C JDAQTimesliceSN \
199  -@ "trigger3DMuon.enabled = 1" \
200  -@ "trigger3DMuon.numberOfHits = 3" \
201  -@ "trigger3DMuon.numberOfModules = 3" \
202  -@ "trigger3DMuon.gridAngle_deg = 10" \
203  -@ "trigger3DMuon.TMaxExtra_ns = 500.0e3" \
204  -@ "TMaxEvent_ns = 500.0e3" \
205  -@ "TMaxLocal_ns = 20.0" \
206  -@ "L2.numberOfHits = 4" \
207  -@ "L2.TMaxLocal_ns = 20.0" \
208  -@ "L2.ctMin = 0.0" \
209  -o ${OUTPUT_FILE} \
210  -d ${DEBUG}
211  CHECK_EXIT_CODE
212 
213  {{ JSquid \
214  -a ${DETECTOR} \
215  -f ${OUTPUT_FILE} \
216  -o /dev/null \
217  -d ${DEBUG} \
218  -Q 3 3>&1 1>&4 } | read -A SQUID } 4>&1
219 
220  {{ JMermaid \
221  -a ${DETECTOR} \
222  -f ${INPUT_FILE} \
223  -o /dev/null \
224  -d ${DEBUG} \
225  -Q 3 3>&1 1>&4 } | read -A MERMAID } 4>&1
226 
227  # print values
228 
229  printf " %12s" ${GIT_VERSION} >> $QAQC_FILE
230  printf " %12s" ${DAQ_VERSION:-\?} >> $QAQC_FILE
231  printf " %s" ${UUID:-\?} >> $QAQC_FILE
232  printf " %8d" ${DAQ_HEADER[1,2]} >> $QAQC_FILE
233  printf " %9.1f" ${LIVETIME_S[1]} >> $QAQC_FILE
234  printf " %12.1f" ${UTC_S[*]} >> $QAQC_FILE
235 
236  for KEY in ${TRIGGER_PARAMETERS[*]}; do
237 
238  JPrintTriggerParameters -f ${INPUT_FILE} -k $KEY -d 0 | read VALUE
239 
240  printf " %4d" ${VALUE:-0} >> $QAQC_FILE
241  done
242 
243  for KEY in ${DAQ[*]}; do
244 
245  JPrintTree -f ${INPUT_FILE} |& eval awk \'/${KEY}/ \{ print \$3 \}\' | read VALUE
246 
247  printf " %8d" ${VALUE:-0} >> $QAQC_FILE
248  done
249 
250  printf " %8d" ${TRIGGER_REPROCESSOR:-0} >> $QAQC_FILE
251  printf " %8d" ${TRIGGER_MONITOR[*]} >> $QAQC_FILE
252  printf " %4d" ${TURBOT[1,2]} >> $QAQC_FILE
253  printf " %7.5f" ${SUMMARY_MONITOR[1,4]} >> $QAQC_FILE
254  printf " %8.1f" ${SUMMARY_MONITOR[5]} >> $QAQC_FILE
255  printf " %7.0f" ${SUMMARY_MONITOR[6,7]} >> $QAQC_FILE
256  printf " %4d" ${NUMBER_OF_ACOUSTICS_EVENTS[1]} >> $QAQC_FILE
257  printf " %8.3f" ${NUMBER_OF_AHRS_EVENTS[1]} >> $QAQC_FILE
258  printf " %4d" ${SQUID[1,2]} >> $QAQC_FILE
259  printf " %8d" ${MERMAID[1]} >> $QAQC_FILE
260  printf "\n" >> $QAQC_FILE
261 done
262 
263 rm -rf $WORKDIR
then usage $script< detector identifier >< startdate\"YYYY-MM-DDHH:MM:SS\"><finaldate\"YYYY-MM-DDHH:MM:SS\"><QA/QCfile> fi case set_variable QAQC_TXT $argv[4]
Definition: JDataMonitor.sh:24
then fatal No hydrophone data file $HYDROPHONE_TXT fi sort gr k
Q(UTCMax_s-UTCMin_s)-livetime_s
V out_sync
Definition: JDataQuality.sh:67
std::istream & read(std::istream &in, JTestSummary &summary, const char delimiter= ' ')
Read test summary.
*fatal Wrong number of arguments esac check_input_file $INPUT_FILE for TIMESLICE in JDAQTimeslice JDAQTimesliceL0 JDAQTimesliceL1 JDAQTimesliceL2 JDAQTimesliceSN
then usage $script[< detector identifier >< run range >]< QA/QCfile > nExample script to produce data quality plots nWhen a detector identifier and run range are data are downloaded from the database nand subsequently stored in the given QA QC file
Definition: JDataQuality.sh:19
*fatal Wrong number of arguments esac TRIGGER_PARAMETERS
version
Definition: JEditTuneHV.sh:5
set_variable QAQC_FILE
Q MEAN_Rate_Hz
Definition: JDataQuality.sh:62
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable INPUT_FILE $argv[2] eval JPrintDetector a $DETECTOR O SUMMARY JPrintDAQHeader f $INPUT_FILE read A DAQ_HEADER set_variable DETECTOR_ID
Definition: JSquid.sh:28
o $QUALITY_ROOT d $DEBUG!CHECK_EXIT_CODE JPlot1D f
Definition: JDataQuality.sh:76
usr share Modules init zsh export TMPDIR
exit
Definition: JPizza.sh:36
data_type r[M+1]
Definition: JPolint.hh:779
is
Definition: JDAQCHSM.chsm:167
then fatal Wrong number of arguments fi JConvertDetectorFormat a o
Q JDAQEvent livetime_s
Definition: JDataQuality.sh:57
then echo
static const double C
Physics constants.
do JPrintDAQHeader f $INPUT_FILE d read DETECTOR_ID RUN FRAME_INDEX TIMESLICE_START set_variable OUTPUT_FILE $WORKDIR KM3NeT_
then echo Variable JPP_DIR undefined exit fi source $JPP_DIR setenv sh $JPP_DIR &dev null set_variable
Definition: JAcoustics.sh:21
do set_variable STRING_TXT awk
then JCalibrateToT a
Definition: JTuneHV.sh:116
then rm i $OUTPUT_FILE fi let RUN
Q DAQ
Definition: JDataQuality.sh:59
then echo Variable JPP_DIR undefined exit fi source $JPP_DIR setenv sh $JPP_DIR &dev null set_variable DEBUG set_variable WORKDIR
Definition: JLegolas.sh:20
* usage
&set_variable OUTPUT_FILE
set_variable INPUT_FILE
do sput $STRING $FLOOR sget MODULE INPUT_FILES
Definition: JCanberra.sh:77
Q RMS_Rate_Hz
Definition: JDataQuality.sh:63
$WORKDIR ev_configure_dqsimulator txt echo process $DQ_SIMULATOR $i $SOURCE_HOST[$index] csh c(setenv ROOTSYS $ROOTSYS &&source $JPP_DIR/setenv.csh $JPP_DIR &&($DQ_SIMULATOR\-u\$NAME\$\-H\$SERVER\$\-M\$LOGGER\$\-d $DEBUG</dev/null > &/dev/null &))'
then JMuonMCEvt f $INPUT_FILE o $INTERMEDIATE_FILE d
Definition: JMuonPath.sh:47
Q FIFO
Definition: JDataQuality.sh:61
double getLivetime(const std::string &file_name)
Get data taking live time.
then display $WORKDIR
Definition: plot-Domino.sh:128
set_variable DETECTOR
do set_variable DETECTOR_TXT $WORKDIR detector
data_type v[N+1][M+1]
Definition: JPolint.hh:777
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable INPUT_FILE $argv[2] eval JPrintDetector a $DETECTOR O IDENTIFIER eval JPrintDetector a $DETECTOR O SUMMARY JAcoustics sh $DETECTOR_ID source JAcousticsToolkit sh CHECK_EXIT_CODE typeset A EMITTERS get_tripods $WORKDIR tripod txt EMITTERS get_transmitters $WORKDIR transmitter txt EMITTERS for EMITTER in
Definition: JCanberra.sh:46
source $JPP_DIR setenv csh $JPP_DIR &dev null eval JShellParser o a A
do echo Generating $dir eval D
Definition: JDrawLED.sh:53
esac $JPP_BIN JLogger sh $LOGGER until pgrep JGetMessage</dev/null > dev null
Q HRV
Definition: JDataQuality.sh:58
V out_usync
Definition: JDataQuality.sh:68
static const JPBS_t AHRS(3, 4, 3, 4)
PBS of compass
then $DIR JPlotNPE PDG P
Definition: JPlotNPE-PDG.sh:62
esac done
Definition: JAddHDE.sh:21
#define DEBUG(A)
Message macros.
Definition: JMessage.hh:62
Q WR
Definition: JDataQuality.sh:60