8# ------------------------------------------------------------------------------------------
10# Utility script to plot JTriggerProcessor CPU requirements.
12# ------------------------------------------------------------------------------------------
15if [ -z $JPP_DIR ]; then
16 echo "Variable JPP_DIR undefined."
21source $JPP_DIR/setenv.sh $JPP_DIR
25set_variable WORKDIR ./
26set_variable FRAMETIME_MS 100
27set_variable: RATE_L1_HZ PROFILER_RATE_L1_HZ 500
28set_variable: LIVETIME PROFILER_LIVETIME 1
29set_variable RECYCLING 5 100e3
30set_variable: FORMAT GRAPHICS_FORMAT gif
31set_variable+ BATCH GRAPHICS_BATCH -B
34 usage "$script <detector file> <trigger file> [working directory]"
38 3) set_variable WORKDIR $3;&
39 2) set_variable TRIGGER $2;
40 set_variable DETECTOR $1;;
41 *) fatal "Wrong number of arguments."
45set_variable PIPE $WORKDIR/pipe.dat
46set_variable CPU_TXT $WORKDIR/cpu.txt
47set_variable CPU_ROOT $WORKDIR/cpu.root
48set_variable RATE_TXT $WORKDIR/rate.txt
49set_variable RATE_ROOT $WORKDIR/rate.root
52typeset -A SETUPS # PMT rate -> number of slices
54SETUPS[5e3]=$(($LIVETIME * 100))
55SETUPS[7e3]=$(($LIVETIME * 100))
56SETUPS[9e3]=$(($LIVETIME * 100))
57SETUPS[11e3]=$(($LIVETIME * 100))
58SETUPS[13e3]=$(($LIVETIME * 50))
59SETUPS[15e3]=$(($LIVETIME * 50))
60SETUPS[17e3]=$(($LIVETIME * 50))
61SETUPS[19e3]=$(($LIVETIME * 20))
65 echo "Detector: $DETECTOR"
66 echo "Trigger parameters:"
69 for RATE_L0_HZ NUMBER_OF_SLICES in ${(kv)SETUPS}; do
71 LOGGER_FILE=$WORKDIR/trigger_${RATE_L0_HZ}.log
73 if [[ ! -f $LOGGER_FILE ]]; then
78 echo "Generating random background at ${RATE_L0_HZ} Hz."
80 nohup JRandomTimesliceWriter \
83 -B "$RATE_L0_HZ $RATE_L1_HZ" \
84 -n $NUMBER_OF_SLICES \
86 -d $DEBUG > /dev/null 2>&1 &
88 echo Processing random data.
97 -d $DEBUG > $LOGGER_FILE 2>&1
105rm -f $CPU_TXT $RATE_TXT >& /dev/null
106rm -f $CPU_ROOT $RATE_ROOT >& /dev/null
108for RATE_L0_HZ in `echo ${(k)SETUPS} | tr ' ' '\n' | sort -g`; do
110 LOGGER_FILE=$WORKDIR/trigger_${RATE_L0_HZ}.log
112 if [[ -f $LOGGER_FILE ]]; then
114 let "TOTAL_CPU = 0.0"
116 for KEY in "Calibration" "L0" "L1" "L2" "Timeslice router" "Trigger" "Trigger router"; do
118 ELAPSED_TIME=`awk -v key="$KEY" '$0 == key,/CPU/ { if ($3 == "elapsed") print $1 }' $LOGGER_FILE`
120 let "TOTAL_CPU += $ELAPSED_TIME / $FRAMETIME_MS"
123 TRIGGER_RATE_HZ=`awk '/Trigger rate \[Hz\]/ { print $4 }' $LOGGER_FILE`
125 echo "$(($RATE_L0_HZ * 1e-3)) $TOTAL_CPU" >> $CPU_TXT
126 echo "$(($RATE_L0_HZ * 1e-3)) $TRIGGER_RATE_HZ" >> $RATE_TXT
143 -o cpu.$FORMAT $BATCH
155 -\^ "Trigger rate [Hz]" \
158 -o rate.$FORMAT $BATCH