Jpp test-rotations-new
the software that should make you happy
Loading...
Searching...
No Matches
examples/JTrigger/JTriggerEfficiencyRunByRun.sh
Go to the documentation of this file.
1#!/usr/bin/env zsh
2#
3# \author mdejong
4#
5version=1.0
6script=${0##*/}
7
8# ------------------------------------------------------------------------------------------
9#
10# Utility script to test JTriggerEfficiency in run-by-run mode.
11#
12# ------------------------------------------------------------------------------------------
13
14
15if [ -z $JPP_DIR ]; then
16 echo "Variable JPP_DIR undefined."
17 exit
18fi
19
20
21source $JPP_DIR/setenv.sh $JPP_DIR
22
23
24set_variable DEBUG 2
25set_variable WORKDIR ${TMPDIR:-/tmp}/
26set_variable INPUT_FILE $JPP_DATA/sirene.root
27set_variable DETECTOR $JPP_DATA/km3net_reference.detx
28set_variable TRIGGER $JPP_DATA/trigger_parameters_arca.txt
29set_variable BACKGROUND_HZ 5.0e3
30set_variable FRAME_DURATION_NS 100.0e6
31set_variable NUMBER_OF_PMTS 31
32
33
34if do_usage $*; then
35 usage "$script [input file [working directory]]"
36fi
37
38case $# in
39 2) set_variable WORKDIR $2;&
40 1) set_variable INPUT_FILE $1;;
41esac
42
43set_variable DETECTOR_OUT_OF_SYNC $WORKDIR/detector_out_of_sync.detx
44set_variable DAQ_FILE_OUT_OF_SYNC $WORKDIR/trigger_efficiency_out_of_sync.root
45set_variable OUTPUT_FILE $WORKDIR/trigger_efficiency.root
46set_variable TRIGGEREFFICIENCY_TURBOT $WORKDIR/turbot.detx
47set_variable TRIGGEREFFICIENCY_TRIGGERED_EVENTS_ONLY Y
48
49
50function clean()
51{
52 rm -f $DETECTOR_OUT_OF_SYNC
53 rm -f $DAQ_FILE_OUT_OF_SYNC
54 rm -f $OUTPUT_FILE
55 rm -f $TRIGGEREFFICIENCY_TURBOT
56}
57
58
59clean
60
61eval `JPrintDetector -a $DETECTOR -O IDENTIFIER`
62eval `JPrintDetector -a $DETECTOR -O SUMMARY`
63
64set_variable STRING ${STRINGS[1]}
65set_variable MODULE `getModule -a $DETECTOR -L "$STRING 10"`
66
67
68# distort detector file
69
70JEditDetector \
71 -a $DETECTOR \
72 -o $DETECTOR_OUT_OF_SYNC \
73 -M "$MODULE add $FRAME_DURATION_NS"
74
75# generate fake raw data file, with distorted detector file.
76# make sure to write summary data for JTriggerEfficiency and
77# L2 data for JTurbot (inside JTriggerEfficiencyRunByRun.sh).
78
79JTriggerEfficiency \
80 -a ${DETECTOR_OUT_OF_SYNC} \
81 -f ${INPUT_FILE} \
82 -o ${DAQ_FILE_OUT_OF_SYNC} \
83 -@ ${TRIGGER} \
84 -@ "writeL0 = 0;" \
85 -@ "writeL1 = 0;" \
86 -@ "writeL2 = 1;" \
87 -@ "writeSN = 0;" \
88 -@ "writeSummary = 1;" \
89 -d ${DEBUG} \
90 -B "$BACKGROUND_HZ" \
91 --!
92
93rm -f $OUTPUT_FILE
94
95$JPP_BIN/JTriggerEfficiencyRunByRun.sh \
96 $DETECTOR \
97 $DETECTOR \
98 $INPUT_FILE \
99 $OUTPUT_FILE \
100 $DAQ_FILE_OUT_OF_SYNC
101
102for (( PMT = 0; $PMT != $NUMBER_OF_PMTS; ++PMT )); do
103
104 set_variable RESULT `getPMTStatus -a $TRIGGEREFFICIENCY_TURBOT -P "$MODULE $PMT" | sed -n 's/.*OUT_OF_SYNC *\‍([0-1]\‍)/\1/p'`
105
106 echo "PMT ($MODULE,$PMT) has OUT_OF_SYNC $RESULT"
107
108 if (( $RESULT != 1 )); then
109 fatal "PMT ($MODULE,$PMT) has OUT_OF_SYNC $RESULT != 1"
110 fi
111done
112
113set_array RESULT `$JPP_DIR/examples/JTrigger/JDAQHit -f $OUTPUT_FILE | grep "^ *$MODULE "`
114
115printf "Module %10d: %8d %8d\n" $MODULE $RESULT[2] $RESULT[3]
116
117if (( ${#RESULT} >= 3 )); then
118
119 if (( $RESULT[2] >= 20 )); then
120 fatal "Module $MODULE has too many trigger hits $RESULT[2]"
121 fi
122
123 if (( $RESULT[3] <= 20 )); then
124 fatal "Module $MODULE has too few snapshot hits $RESULT[3]"
125 fi
126else
127
128 fatal "Module $MODULE has no data."
129fi
130
131clean