Jpp  debug
the software that should make you happy
software/JDataWriter/JDataWriter.sh
Go to the documentation of this file.
1 #!/bin/zsh
2 #
3 # \author mdejong
4 #
5 script=${0##*/}
6 
7 # ------------------------------------------------------------------------------------------
8 #
9 # Utility script to run JDataWriter and JEventGenerator.
10 #
11 # ------------------------------------------------------------------------------------------
12 
13 
14 if [ -z $JPP_DIR ]; then
15  echo "Variable JPP_DIR undefined."
16  exit
17 fi
18 
19 source $JPP_DIR/setenv.sh $JPP_DIR
20 
21 set_variable DEBUG 3
22 set_variable WORKDIR ${TMPDIR:-/tmp}/
23 set_variable DETECTOR $JPP_DATA/km3net_reference.detx
24 set_variable LOGGER_OUTPUT logger.txt
25 set_variable HOST `get_ip_address`
26 
27 if do_usage $*; then
28  usage "$script [detector file [logger file [working directory]]]"
29 fi
30 
31 case $# in
32  3) set_variable WORKDIR $3;&
33  2) set_variable LOGGER_OUTPUT $2;&
34  1) set_variable DETECTOR $1;;
35 esac
36 
37 set_variable INPUT_FILE $WORKDIR/trigger_processor.root
38 set_variable MESSAGE_SERVER localhost
39 set_variable MESSAGE_LOGGER localhost
40 set_variable DEBUG 3
41 set_variable RUN_1 1001
42 set_variable RUN_2 1002
43 set_variable TIMEOUT_S 10
44 set_variable RUNTIME_S 20
45 set_variable DETECTOR_ID 1000
46 set_variable DWRITER_HOST $HOST
47 
48 
49 if [[ ! -f $DETECTOR ]]; then
50  JDetector.sh $DETECTOR
51 fi
52 
53 if ( ! reuse_file $INPUT_FILE ); then
54 
55  set_variable singlesRate 0e3
56  set_variable doublesRate 2e3
57  set_variable numberOfSlices 10
58 
59  echo "Generating random background."
60  echo "Singles rate: $singlesRate [Hz]."
61  echo "Doubles rate: $doublesRate [Hz]."
62 
63  PIPE=${TMPDIR:-/tmp}/pipe.dat
64 
65  rm -f $PIPE
66  mkfifo $PIPE
67 
68  nohup JRandomTimesliceWriter \
69  -a $DETECTOR \
70  -o $PIPE \
71  -B "$singlesRate $doublesRate" \
72  -n $numberOfSlices \
73  -d1 > timeslice.log 2>&1 &
74 
75  echo Processing random data.
76 
77  JTriggerProcessor \
78  -a $DETECTOR \
79  -f $PIPE \
80  -@trigger3DShower.enabled=1 \
81  -@trigger3DMuon.enabled=1 \
82  -o $INPUT_FILE \
83  -d1 > trigger.log 2>&1
84 
85  rm -f $PIPE
86 
87  JPrintTree \
88  -f $INPUT_FILE
89 
90 fi
91 
92 
93 let RUN=RUN_1
94 
95 while (( $RUN <= $RUN_2 )); do
96 
97  OUTPUT_FILE=`printf %s/KM3NeT_%08d_%08d.root $WORKDIR $DETECTOR_ID $RUN`
98 
99  if [[ -f $OUTPUT_FILE ]]; then
100  rm -i $OUTPUT_FILE
101  fi
102 
103  let RUN=$RUN+1
104 done
105 
106 
107 # Event generation configure data.
108 
109 if [[ ! -f ev_configure.txt ]]; then
110 
111 cat>ev_configure.txt<<EOF
112 datawriter = $DWRITER_HOST;
113 inputFile = $INPUT_FILE;
114 eventRate_Hz = 100.0;
115 EOF
116 
117 fi
118 
119 # Driver input.
120 
121 if [[ ! -f driver.txt ]]; then
122 
123 cat>driver.txt<<EOF
124 
125 process JEventGenerator $HOST csh -c '(setenv ROOTSYS $ROOTSYS && source $JPP_DIR/setenv.csh $JPP_DIR && (JEventGenerator -H \$SERVER\$ -M \$LOGGER\$ -d $DEBUG -u \$NAME\$ </dev/null >&/dev/null &))';
126 process JDataWriter $HOST csh -c '(setenv ROOTSYS $ROOTSYS && source $JPP_DIR/setenv.csh $JPP_DIR && (JDataWriter -H \$SERVER\$ -M \$LOGGER\$ -d $DEBUG -u \$NAME\$ </dev/null >&/dev/null &))';
127 
128 enter
129 
130 event ev_init { RC_CMD }
131 EOF
132 
133 let RUN=RUN_1
134 
135 while (( $RUN <= $RUN_2 )); do
136 
137 cat>>driver.txt<<EOF
138 
139 event ev_configure {
140  RC_EVT %<ev_configure.txt>%
141  RC_DWRT path=$WORKDIR; update_s=10; logger_s=5;
142 }
143 
144 event ev_start { RC_CMD $RUN $DETECTOR_ID }
145 
146 sleep $RUNTIME_S
147 
148 event ev_pause { RC_CMD }
149 event ev_stop { RC_CMD }
150 EOF
151 
152 let RUN=$RUN+1
153 done
154 
155 cat>>driver.txt<<EOF
156 
157 event ev_reset { RC_CMD }
158 event ev_off { RC_CMD }
159 EOF
160 
161 fi
162 
163 
164 if (( 1 )); then
165 
166  JLigier.sh $MESSAGE_SERVER continue
167 
168 fi
169 
170 
171 if (( 1 )); then
172 
173  JLogger.sh $MESSAGE_LOGGER $LOGGER_OUTPUT
174 
175 fi
176 
177 
178 if (( 1 )); then
179 
180  JDAQDriver \
181  -H $MESSAGE_SERVER \
182  -M $MESSAGE_LOGGER \
183  -t $TIMEOUT_S \
184  -f driver.txt \
185  -d $DEBUG \
186  -c
187 
188 fi
189 
190 
191 if (( 1 )); then
192 
193  JStopDAQ.sh $MESSAGE_SERVER $MESSAGE_LOGGER
194 
195 fi