7doxygen=JDATABASE::JRunQuality
 
    9if [ -z $JPP_DIR ]; then
 
   10    echo "Variable JPP_DIR undefined."
 
   14source $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.
 
   25set_variable:  DEBUG              QAQC_DEBUG    0
 
   26set_variable:  VERSION            QAQC_VERSION  D_1.0.0
 
   27set_variable:  WORKDIR            QAQC_WORKDIR  ${TMPDIR:-/tmp}/.$$
 
   31    trigger3DShower.enabled
 
   32    triggerMXShower.enabled
 
   39TRIGGERS=(`JPrintTriggerBits`)
 
   57    GIT JPP nb_of_meta UUID
 
   58    detector run livetime_s UTCMin_s UTCMax_s
 
   59    ${TRIGGER_PARAMETERS[*]}
 
   63    in_sync out_sync DAQ WR HRV FIFO
 
   64    PMTs MEAN_Rate_Hz RMS_Rate_Hz
 
   65    hrv_fifo_failures duplic_timeslices
 
   72        "$script (input file)+ <QA/QC file>"                                                \
 
   73        "\nAuxiliary script to produce the following QA/QC data:\n"                         \
 
   75        "\nSee also: $JPP_PAGES/ Search \"JRunQuality\""
 
   79    fatal "Wrong number of arguments."
 
   82set_array      INPUT_FILES        ${argv[1,-2]}
 
   83set_variable   QAQC_FILE          ${argv[-1]:a}
 
   85for (( i = 1; $i <= ${#INPUT_FILES}; i += 1 )); do
 
   86    if [[ -f $INPUT_FILES[$i] ]]; then
 
   87        INPUT_FILES[$i]=${INPUT_FILES[$i]:a}
 
   94set_variable   ACOUSTICS_DEBUG    ${DEBUG}
 
   95set_variable   COMPASS_DEBUG      ${DEBUG}
 
   96set_variable   DETECTOR           detector.detx                              # detector used during data taking
 
  101if [[ ! -s $QAQC_FILE ]]; then
 
  102    echo ${PARAMETERS//\.*/}                                             > $QAQC_FILE
 
  105for INPUT_FILE in ${INPUT_FILES[*]}; do
 
  107    debug "Processing $INPUT_FILE"
 
  111    JPrintMeta -v |& awk '/version/ { print $2 }'                        | read     GIT_VERSION
 
  113    debug "GIT version $GIT_VERSION"
 
  115    set_array     DAQ_VERSION    `JPrintMeta -f ${INPUT_FILE} -k GIT`
 
  116    debug "DAQ version $DAQ_VERSION[*]"
 
  118    echo ${(s/./)DAQ_VERSION[1]}                                         | read     DAQ_MAJOR DAQ_MINOR DAQ_PATCH
 
  120    if [[ -z $DAQ_VERSION[1] ]]; then
 
  121        JPrintMeta -f ${INPUT_FILE} -k SVN                               | read     DAQ_VERSION
 
  124    getUUID -f ${INPUT_FILE} -d 0                                        | read     UUID
 
  127    set_array     DAQ_HEADER     `JPrintDAQHeader -f ${INPUT_FILE} -d 0`
 
  128    set_variable  DETECTOR_ID    ${DAQ_HEADER[1]}
 
  129    set_variable  RUN            ${DAQ_HEADER[2]}
 
  131    JDetectorDB -D ${DETECTOR_ID} -r ${RUN} -o ${DETECTOR} -WW -d ${DEBUG}   # install detector file as-is for a.o. JTriggerReprocessor
 
  134    if [[ "$DAQ_MAJOR" != [0-9][0-9]* ]] || (( $DAQ_MAJOR <= 12 )); then     # Jpp-version dependence
 
  137            -P "-1 -1 set UDP_COUNTER_DISABLE"  \
 
  138            -P "-1 -1 set UDP_TRAILER_DISABLE"  \
 
  143    JAHRSCalibration.sh     ${DETECTOR_ID}                                   # install AHRS calibration file
 
  146    set_array     LIVETIME_S     `getLivetime -f ${INPUT_FILE} -d 0`
 
  147    set_array     UTC_S          `getUTC      -f ${INPUT_FILE} -d 0`
 
  149    {{ JTriggerMonitor -f ${INPUT_FILE} -d ${DEBUG} -Q 3 3>&1 1>&4 }     | read -A  TRIGGER_MONITOR } 4>&1
 
  152    set_variable  OUTPUT_FILE   KM3NeT_${(l:8::0::0:)DETECTOR_ID}_${(l:8::0::0:)RUN}_reprocessor.root
 
  154    JTriggerReprocessor \
 
  163    JPrintTree -f ${OUTPUT_FILE} -@ "type = JDAQEvent" -k number_of_entries               | read     TRIGGER_REPROCESSOR
 
  170        -Q 3 3>&1 1>&4 }                                                                  | read -A  TURBOT } 4>&1
 
  173    {{ JSummaryMonitor -f ${INPUT_FILE} -t 50000 -d ${DEBUG} -Q 3 3>&1 1>&4 }             | read -A  SUMMARY_MONITOR } 4>&1
 
  176    JAcousticsTriggerProcessor.sh  ${DETECTOR}  ${RUN}
 
  178    if (( $? == 0 )); then
 
  180        set_variable  OUTPUT_FILE    KM3NeT_${(l:8::0::0:)DETECTOR_ID}_${(l:8::0::0:)RUN}_event.root
 
  182        NUMBER_OF_ACOUSTICS_EVENTS=(`JPrintTree -f ${OUTPUT_FILE} -@ "type = JACOUSTICS::JEvent" -k number_of_entries`)
 
  184        NUMBER_OF_ACOUSTICS_EVENTS=(0)
 
  187    JAHRS.sh  ${DETECTOR_ID}  ${RUN}
 
  189    if (( $? == 0 )); then
 
  191        set_variable  OUTPUT_FILE    KM3NeT_${(l:8::0::0:)DETECTOR_ID}_${(l:8::0::0:)RUN}_ahrs.root
 
  196            -c ahrs_calibration.txt             \
 
  199            -Q 3 3>&1 1>&4 }                                             | read -A  AHRS_MONITOR } 4>&1
 
  204    set_variable  OUTPUT_FILE    KM3NeT_${(l:8::0::0:)DETECTOR_ID}_${(l:8::0::0:)RUN}_trigger.root
 
  210        -@ "trigger3DMuon.enabled         =  1"           \
 
  211        -@ "trigger3DMuon.numberOfHits    =  3"           \
 
  212        -@ "trigger3DMuon.numberOfModules =  3"           \
 
  213        -@ "trigger3DMuon.gridAngle_deg   = 10"           \
 
  214        -@ "trigger3DMuon.TMaxExtra_ns    = 500.0e3"      \
 
  215        -@ "TMaxEvent_ns    = 500.0e3"                    \
 
  216        -@ "TMaxLocal_ns    = 20.0"                       \
 
  217        -@ "L2.numberOfHits = 4"                          \
 
  218        -@ "L2.TMaxLocal_ns = 20.0"                       \
 
  219        -@ "L2.ctMin        = 0.0"                        \
 
  229        -Q 3 3>&1 1>&4 }                                                 | read -A  SQUID } 4>&1
 
  236        -Q 3 3>&1 1>&4 }                                                 | read -A  MERMAID } 4>&1
 
  240    printf " %12s"   ${GIT_VERSION}                                      >> $QAQC_FILE
 
  241    printf " %12s"   ${DAQ_VERSION[1]:-\?}                               >> $QAQC_FILE
 
  242    printf " %1d"    ${#DAQ_VERSION}                                     >> $QAQC_FILE
 
  243    printf " %s"     ${UUID:-\?}                                         >> $QAQC_FILE
 
  244    printf " %8d"    ${DAQ_HEADER[1,2]}                                  >> $QAQC_FILE
 
  245    printf " %9.1f"  ${LIVETIME_S[1]}                                    >> $QAQC_FILE
 
  246    printf " %12.1f" ${UTC_S[1,2]}                                       >> $QAQC_FILE
 
  248    for KEY in ${TRIGGER_PARAMETERS[*]}; do
 
  250        JPrintTriggerParameters -f ${INPUT_FILE} -k $KEY -d 0                   | read VALUE
 
  252        printf " %4d" ${VALUE:-0}                                        >> $QAQC_FILE
 
  255    for KEY in ${DAQ[*]}; do
 
  257        JPrintTree -f ${INPUT_FILE} -@ "type = $KEY" -k number_of_entries       | read VALUE
 
  259        printf " %8d" ${VALUE:-0}                                        >> $QAQC_FILE
 
  262    printf " %8d"   ${TRIGGER_REPROCESSOR:-0}                            >> $QAQC_FILE
 
  263    printf " %8d"   ${TRIGGER_MONITOR[*]}                                >> $QAQC_FILE
 
  264    printf " %4d"   ${TURBOT[1,2]}                                       >> $QAQC_FILE
 
  265    printf " %7.5f" ${SUMMARY_MONITOR[1,4]}                              >> $QAQC_FILE
 
  266    printf " %8.1f" ${SUMMARY_MONITOR[5]}                                >> $QAQC_FILE
 
  267    printf " %7.0f" ${SUMMARY_MONITOR[6,7]}                              >> $QAQC_FILE
 
  268    printf " %8d"   ${SUMMARY_MONITOR[8]}                                >> $QAQC_FILE
 
  269    printf " %8d"   ${SUMMARY_MONITOR[9]}                                >> $QAQC_FILE
 
  270    printf " %4d"   ${NUMBER_OF_ACOUSTICS_EVENTS[1]}                     >> $QAQC_FILE
 
  271    printf " %5d"   ${AHRS_MONITOR[1]}                                   >> $QAQC_FILE
 
  272    printf " %8.3f" ${AHRS_MONITOR[2]}                                   >> $QAQC_FILE
 
  273    printf " %4d"   ${SQUID[1,2]}                                        >> $QAQC_FILE
 
  274    printf " %8d"   ${MERMAID[1]}                                        >> $QAQC_FILE
 
  275    printf "\n"                                                          >> $QAQC_FILE