Jpp  17.2.0
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
JTriggerProfiler.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 # ------------------------------------------------------------------------------------------
9 #
10 # Utility script to plot JTriggerProcessor CPU requirements.
11 #
12 # ------------------------------------------------------------------------------------------
13 
14 
15 if [ -z $JPP_DIR ]; then
16  echo "Variable JPP_DIR undefined."
17  exit
18 fi
19 
20 
21 source $JPP_DIR/setenv.sh $JPP_DIR
22 
23 
26 set_variable DETECTOR $JPP_DATA/km3net_reference.detx
27 set_variable TRIGGER $JPP_DATA/trigger_parameters_arca.txt
29 set_variable FRAMETIME_MS 100
30 set_variable RATE_L1_HZ 500
31 set_variable: FORMAT GRAPHICS_FORMAT gif
32 set_variable+ BATCH GRAPHICS_BATCH -B
33 
34 if do_usage $*; then
35  usage "$script [detector file [trigger file [working directory]]]"
36 fi
37 
38 case $# in
42 esac
43 
44 
45 set_variable PIPE $WORKDIR/pipe.dat
46 
47 set_variable CPU_TXT $WORKDIR/cpu.txt
48 set_variable CPU_ROOT $WORKDIR/cpu.root
49 
50 set_variable RATE_TXT $WORKDIR/rate.txt
51 set_variable RATE_ROOT $WORKDIR/rate.root
52 
53 echo "Detector: $DETECTOR"
54 echo "Trigger parameters:"
55 cat $TRIGGER
56 
57 if (( 1 )); then
58 
59  for RATE_L0_HZ in 5e3 7e3 9e3 11e3 13e3 15e3 17e3 19e3; do
60 
61  LOGGER_FILE=$WORKDIR/trigger_${RATE_L0_HZ}.log
62 
63  rm -f $PIPE
64  mkfifo $PIPE
65 
66  echo "Generating random background at ${RATE_L0_HZ} Hz."
67 
68  nohup JRandomTimesliceWriter \
69  -a $DETECTOR \
70  -o $PIPE \
71  -B "$RATE_L0_HZ $RATE_L1_HZ" \
72  -n $NUMBER_OF_SLICES \
73  -d $DEBUG > /dev/null 2>&1 &
74 
75  echo Processing random data.
76 
77  JTriggerProcessor \
78  -a $DETECTOR \
79  -f $PIPE \
80  -o "/dev/null" \
81  -@"`cat $TRIGGER`" \
82  -C JDAQTimesliceL0 \
83  -d $DEBUG > $LOGGER_FILE 2>&1
84 
85  rm -f $PIPE
86 
87  done
88 fi
89 
90 
91 if (( 1 )); then
92 
93  if [[ -f $CPU_TXT ]]; then
94  rm $CPU_TXT
95  fi
96 
97  for RATE_L0_HZ in 5e3 7e3 9e3 11e3 13e3 15e3 17e3 19e3; do
98 
99  LOGGER_FILE=$WORKDIR/trigger_${RATE_L0_HZ}.log
100 
101  TOTAL_CPU=0.0
102 
103  for KEY in "Calibration" "L0" "L1" "L2" "Timeslice router" "Trigger" "Trigger router"; do
104 
105  ELAPSED_TIME=`awk -v key="$KEY" '$0 == key,/CPU/ { if ($3 == "elapsed") print $1 }' $LOGGER_FILE`
106 
107  TOTAL_CPU=$(($TOTAL_CPU + $ELAPSED_TIME / $FRAMETIME_MS))
108 
109  done
110 
111  RATE_L0_KHZ=$(($RATE_L0_HZ * 1e-3))
112 
113  echo "$RATE_L0_KHZ $TOTAL_CPU" >> $CPU_TXT
114 
115  done
116 
117  JGraph \
118  -f $CPU_TXT \
119  -o $CPU_ROOT
120 
121  JPlot1D \
122  -f $CPU_ROOT:\.\* \
123  -x "0 20" \
124  -y "0 60" \
125  -\> "Rate [kHz]" \
126  -\^ "CPU [cores]" \
127  -T "" \
128  -o cpu.$FORMAT $BATCH
129 
130 fi
131 
132 
133 if (( 1 )); then
134 
135  if [[ -f $RATE_TXT ]]; then
136  rm $RATE_TXT
137  fi
138 
139  for RATE_L0_HZ in 5e3 7e3 9e3 11e3 13e3 15e3 17e3 19e3; do
140 
141  LOGGER_FILE=$WORKDIR/trigger_${RATE_L0_HZ}.log
142 
143  TRIGGER_RATE_HZ=`awk '/Trigger rate \[Hz\]/ { print $4 }' $LOGGER_FILE`
144 
145  RATE_L0_KHZ=$(($RATE_L0_HZ * 1e-3))
146 
147  echo "$RATE_L0_KHZ $TRIGGER_RATE_HZ" >> $RATE_TXT
148 
149  done
150 
151  JGraph \
152  -f $RATE_TXT \
153  -o $RATE_ROOT
154 
155  JPlot1D \
156  -f $RATE_ROOT:\.\* \
157  -x "0 20" \
158  -y "0 100" \
159  -\> "Rate [kHz]" \
160  -\^ "Trigger rate [Hz]" \
161  -T "" \
162  -o rate.$FORMAT $BATCH
163 
164 fi
do ELAPSED_TIME
version
Definition: JEditTuneHV.sh:5
then JLigier sh continue fi cat
Definition: JDAQDriver.sh:51
do LOGGER_FILE
then set_variable singlesRate set_variable doublesRate set_variable numberOfSlices echo Generating random background echo Singles rate
o $QUALITY_ROOT d $DEBUG!JPlot1D f
Definition: JDataQuality.sh:66
exit
Definition: JPizza.sh:36
then fatal Wrong number of arguments fi JConvertDetectorFormat a o
then echo
static const double C
Physics constants.
const int n
Definition: JPolint.hh:697
&set_variable PIPE
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
do set_variable OUTPUT_DIRECTORY $WORKDIR T
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
then usage $script[detector file[output file[PMT parameters file[number of slices]]]] nAuxiliary script to produce random time slice data fi case set_variable NUMBER_OF_SLICES
then JMuonMCEvt f $INPUT_FILE o $INTERMEDIATE_FILE d
Definition: JMuonPath.sh:47
then JCalibrateToT a
Definition: JTuneHV.sh:116
then set_variable MODULE getModule a $DETECTOR L $STRING $FLOOR JEditDetector a $DETECTOR M $MODULE add $X o $DETECTOR else echo No update of detector $DETECTOR
then display $WORKDIR
Definition: plot-Domino.sh:128
set_variable 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
esac $JPP_BIN JLogger sh $LOGGER until pgrep JGetMessage</dev/null > dev null
esac done
Definition: JAddHDE.sh:21
&set_variable TRIGGER
#define DEBUG(A)
Message macros.
Definition: JMessage.hh:62