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 500
28set_variable RECYCLING 5 100e3
29set_variable: FORMAT GRAPHICS_FORMAT gif
30set_variable+ BATCH GRAPHICS_BATCH -B
33 usage "$script <detector file> <trigger file> [working directory]"
37 3) set_variable WORKDIR $3;&
38 2) set_variable TRIGGER $2;
39 set_variable DETECTOR $1;;
40 *) fatal "Wrong number of arguments."
44set_variable PIPE $WORKDIR/pipe.dat
45set_variable CPU_TXT $WORKDIR/cpu.txt
46set_variable CPU_ROOT $WORKDIR/cpu.root
47set_variable RATE_TXT $WORKDIR/rate.txt
48set_variable RATE_ROOT $WORKDIR/rate.root
51typeset -A SETUPS # rate -> number of slices
62if [[ -f $DETECTOR ]] && [[ -f $TRIGGER ]]; then
64 echo "Detector: $DETECTOR"
65 echo "Trigger parameters:"
68 for RATE_L0_HZ NUMBER_OF_SLICES in ${(kv)SETUPS}; do
70 LOGGER_FILE=$WORKDIR/trigger_${RATE_L0_HZ}.log
72 if [[ ! -f $LOGGER_FILE ]]; then
77 echo "Generating random background at ${RATE_L0_HZ} Hz."
79 nohup JRandomTimesliceWriter \
82 -B "$RATE_L0_HZ $RATE_L1_HZ" \
83 -n $NUMBER_OF_SLICES \
85 -d $DEBUG > /dev/null 2>&1 &
87 echo Processing random data.
96 -d $DEBUG > $LOGGER_FILE 2>&1
104rm -f $CPU_TXT $RATE_TXT >& /dev/null
105rm -f $CPU_ROOT $RATE_ROOT >& /dev/null
107for RATE_L0_HZ in `echo ${(k)SETUPS} | tr ' ' '\n' | sort -g`; do
109 LOGGER_FILE=$WORKDIR/trigger_${RATE_L0_HZ}.log
111 if [[ -f $LOGGER_FILE ]]; then
113 let "TOTAL_CPU = 0.0"
115 for KEY in "Calibration" "L0" "L1" "L2" "Timeslice router" "Trigger" "Trigger router"; do
117 ELAPSED_TIME=`awk -v key="$KEY" '$0 == key,/CPU/ { if ($3 == "elapsed") print $1 }' $LOGGER_FILE`
119 let "TOTAL_CPU += $ELAPSED_TIME / $FRAMETIME_MS"
122 TRIGGER_RATE_HZ=`awk '/Trigger rate \[Hz\]/ { print $4 }' $LOGGER_FILE`
124 echo "$(($RATE_L0_HZ * 1e-3)) $TOTAL_CPU" >> $CPU_TXT
125 echo "$(($RATE_L0_HZ * 1e-3)) $TRIGGER_RATE_HZ" >> $RATE_TXT
142 -o cpu.$FORMAT $BATCH
154 -\^ "Trigger rate [Hz]" \
157 -o rate.$FORMAT $BATCH