Jpp 19.3.0-rc.2
the software that should make you happy
Loading...
Searching...
No Matches
examples/JDataWriter/JDataWriter.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 run JDataWriter and JEventGenerator.
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 3
25set_variable WORKDIR $JPP_DATA
26set_variable DETECTOR $JPP_DATA/km3net_reference.detx
27set_variable LOGGER_OUTPUT logger.txt
28
29
30if do_usage $*; then
31 usage "$script [detector file] [logger file [working directory]]]"
32fi
33
34case $# in
35 3) set_variable WORKDIR $3;&
36 2) set_variable LOGGER_OUTPUT $2;&
37 1) set_variable DETECTOR $1;;
38esac
39
40
41set_variable INPUT_FILE $WORKDIR/trigger_processor.root
42
43set_variable MESSAGE_SERVER localhost
44set_variable MESSAGE_LOGGER localhost
45
46set_variable DEBUG 3
47
48set_variable RUN_1 1001
49set_variable RUN_2 1002
50set_variable TIMEOUT_S 10
51set_variable RUNTIME_S 20
52
53set_variable DWRITER_HOST $HOSTNAME
54
55print_variable MESSAGE_SERVER MESSAGE_SERVER TIMEOUT_S RUNTIME_S
56
57
58if [[ ! -f $DETECTOR ]]; then
59
60 detectorType=5
61 numberOfLines=115
62 numberOfFloors=18
63 floorDistance_m=36
64 lineDistance_m=90
65 heightOfFirstFloor=100
66
67 echo "Creating detector $DETECTOR, with parameters:"
68
69 JDetector \
70 -D 1000 \
71 -@detectorType=$detectorType \
72 -@numberOfLines=$numberOfLines \
73 -@numberOfFloors=$numberOfFloors \
74 -@floorDistance_m=$floorDistance_m \
75 -@lineDistance_m=$lineDistance_m \
76 -z $heightOfFirstFloor \
77 -f footprint_extended.txt \
78 -V V2 \
79 -o $DETECTOR -d 1 --!
80fi
81
82
83if [[ ! -f $INPUT_FILE ]]; then
84
85 singlesRate=0e3
86 doublesRate=2e3
87 numberOfSlices=10
88
89 echo "Generating random background."
90 echo "Singles rate: $singlesRate [Hz]."
91 echo "Doubles rate: $doublesRate [Hz]."
92
93 PIPE=${TMPDIR:-/tmp}/pipe.dat
94
95 rm -f $PIPE
96 mkfifo $PIPE
97
98 nohup JRandomTimesliceWriter \
99 -a $DETECTOR \
100 -o $PIPE \
101 -B "$singlesRate $doublesRate" \
102 -n $numberOfSlices \
103 -d1 > timeslice.log 2>&1 &
104
105 echo Processing random data.
106
107 JTriggerProcessor \
108 -a $DETECTOR \
109 -f $PIPE \
110 -@trigger3DShower.enabled=1 \
111 -@trigger3DMuon.enabled=1 \
112 -o $INPUT_FILE \
113 -d1 > trigger.log 2>&1
114
115 rm -f $PIPE
116
117 JPrintTree \
118 -f $INPUT_FILE
119
120fi
121
122
123let RUN=RUN_1
124
125while (( $RUN <= $RUN_2 )); do
126
127 OUTPUT_FILE=`printf %s/KM3NeT_%08d.root $WORKDIR $RUN`
128
129 if [[ -f $OUTPUT_FILE ]]; then;
130 rm -i $OUTPUT_FILE
131 fi
132
133 let RUN=$RUN+1
134done
135
136
137# Event generation configure data.
138
139if [[ ! -f ev_configure.txt ]]; then
140
141cat>ev_configure.txt<<EOF
142datawriter = $DWRITER_HOST;
143inputFile = $INPUT_FILE;
144eventRate_Hz = 100.0;
145EOF
146
147fi
148
149# Driver input.
150
151if [[ ! -f driver.txt ]]; then
152
153cat>driver.txt<<EOF
154
155# To avoid unnecessary shell processes, the process I/O is redirected to /dev/null and the ssh command is quoted.
156
157process JEventGenerator $HOSTNAME ssh \$HOST\$ "JEventGenerator -u \$NAME\$ -H \$SERVER\$ -M \$LOGGER\$ -d $DEBUG </dev/null >&/dev/null &";
158process JDataWriter $HOSTNAME ssh \$HOST\$ "JDataWriter -u \$NAME\$ -H \$SERVER\$ -M \$LOGGER\$ -d $DEBUG </dev/null >&/dev/null &";
159
160enter
161
162event ev_init { RC_CMD }
163EOF
164
165let RUN=RUN_1
166
167while (( $RUN <= $RUN_2 )); do
168
169cat>>driver.txt<<EOF
170
171event ev_configure {
172 RC_EVT %<ev_configure.txt>%
173 RC_DWRT path=$WORKDIR; update_s=10; logger_s=5;
174}
175
176event ev_start { RC_CMD $RUN }
177
178sleep $RUNTIME_S
179
180event ev_pause { RC_CMD }
181event ev_stop { RC_CMD }
182EOF
183
184let RUN=$RUN+1
185done
186
187cat>>driver.txt<<EOF
188
189event ev_reset { RC_CMD }
190event ev_off { RC_CMD }
191EOF
192
193fi
194
195
196if (( 1 )); then
197
198 JLigier.sh $MESSAGE_SERVER continue
199
200fi
201
202
203if (( 1 )); then
204
205 JLogger.sh $MESSAGE_LOGGER $LOGGER_OUTPUT
206
207fi
208
209
210if (( 1 )); then
211
212 JDAQDriver \
213 -H $MESSAGE_SERVER \
214 -M $MESSAGE_LOGGER \
215 -t $TIMEOUT_S \
216 -f driver.txt \
217 -d $DEBUG \
218 -c
219
220fi
221
222
223if (( 1 )); then
224
225 JStopDAQ.sh $MESSAGE_SERVER $MESSAGE_LOGGER
226
227fi