7 # ------------------------------------------------------------------------------------------
9 # Utility script to run JDataFilter and JDOMSimulator(s)
11 # ------------------------------------------------------------------------------------------
14 if [ -z $JPP_DIR ]; then
15 echo "Variable JPP_DIR undefined."
19 source $JPP_DIR/setenv.sh $JPP_DIR
22 set_variable WORKDIR /tmp/
23 set_variable IP_ADDRESS `get_ip_address`
25 set_variable MESSAGE_SERVER localhost
26 set_variable MESSAGE_LOGGER localhost
28 set_variable TIMEOUT_S 10
29 set_variable RUNTIME_S 30
30 set_variable PORT 5551
31 set_array SOURCE_HOST $IP_ADDRESS $IP_ADDRESS $IP_ADDRESS
32 set_variable FILTER_HOST $IP_ADDRESS
33 set_variable WRITER_HOST $IP_ADDRESS
34 set_variable DATAFILTER F001/F001
35 set_variable DATAWRITER W000/W000
36 set_variable SINGLESRATE_HZ 0e3
37 set_variable DOUBLESRATE_HZ 2e3
38 set_variable NUMBER_OF_SLICES 10
40 set_variable DETECTOR $JPP_DATA/km3net_reference.detx
41 set_variable LOGGER_OUTPUT $WORKDIR/logger.txt
43 if ( do_usage $* ); then
44 usage "$script [detector file [logger file [working directory]]]"
48 3) set_variable WORKDIR $3;&
49 2) set_variable LOGGER_OUTPUT $2;&
50 1) set_variable DETECTOR $1;;
52 *) fatal "Wrong number of arguments."
55 set_variable ID `JPrintDetector -a $JPP_DATA/km3net_reference.detx -O identifier | sed 's/Detector//'`
61 set_variable INPUT_FILE $WORKDIR/timeslice.root
62 set_variable OUTPUT_FILE $WORKDIR/KM3NeT_${ID}_${RUN}.root
67 if [[ ! -f $DETECTOR ]]; then
68 JDetector.sh $DETECTOR
74 if ( ! reuse_file $INPUT_FILE ); then
76 JRandomTimesliceWriter \
79 -B "$SINGLESRATE_HZ $DOUBLESRATE_HZ" \
80 -n $NUMBER_OF_SLICES \
87 if [[ -f $OUTPUT_FILE ]]; then;
92 set_variable DOM_SIMULATOR JDOMSimulator
93 set_variable NUMBER_OF_DOM_SIMULATORS ${#SOURCE_HOST}
94 set_variable NUMBER_OF_FRAMES `JPrintDetector -a $DETECTOR -O modules | egrep Module | wc -l`
97 # JDataFilter configure data
99 cat>$WORKDIR/ev_configure_datafilter.txt<<EOF
102 dataWriter = ${WRITER_HOST};
103 numberOfFramesPerSlice = ${NUMBER_OF_FRAMES};
104 detector = %<${DETECTOR}>%;
105 triggerParameters = trigger3DMuon.enabled = 1;
106 triggerParameters = trigger3DShower.enabled = 1;
107 triggerParameters = writeSummary = 1;
108 triggerParameters = writeSN = 1;
109 triggerParameters = SN.numberOfHits = 4; SN.TMaxLocal_ns = 10.0; SN.ctMin = 0.0;
111 queueSize = 100000000;
113 JDataFilter = ${DATAFILTER} ${FILTER_HOST}:${PORT};
114 JDataWriter = ${DATAWRITER} ${WRITER_HOST};
117 # JDOMSimulator configure data.
119 cat>$WORKDIR/ev_configure_domsimulator.txt<<EOF
120 numberOfFrames = ${NUMBER_OF_FRAMES};
122 inputFile = ${INPUT_FILE};
123 target = 0 ${FILTER_HOST}:${PORT};
129 rm -f $WORKDIR/driver.txt
131 for (( i = 1; $i <= $NUMBER_OF_DOM_SIMULATORS ; ++i )); do
133 let index="${#SOURCE_HOST} - $i % ${#SOURCE_HOST}"
135 echo "source = 0 $DOM_SIMULATOR/$i;" >> $WORKDIR/ev_configure_domsimulator.txt
137 echo "process $DOM_SIMULATOR/$i $SOURCE_HOST[$index] \
138 (setenv ROOTSYS $ROOTSYS && source $JPP_DIR/setenv.csh $JPP_DIR && $DOM_SIMULATOR \
143 </dev/null >&/dev/null) &;" >> $WORKDIR/driver.txt
146 let HALF_RUNTIME_S="${RUNTIME_S} / 2 + 1"
148 cat>>$WORKDIR/driver.txt<<EOF
150 process ${DATAFILTER} $FILTER_HOST ssh $FILTER_HOST "(setenv ROOTSYS $ROOTSYS && source $JPP_DIR/setenv.csh $JPP_DIR && JDataFilter -H \$SERVER\$ -M \$LOGGER\$ -d $DEBUG -u ${DATAFILTER} -P $PORT </dev/null >&/dev/null) &";
151 process ${DATAWRITER} $WRITER_HOST ssh $FILTER_HOST "(setenv ROOTSYS $ROOTSYS && source $JPP_DIR/setenv.csh $JPP_DIR && JDataWriter -H \$SERVER\$ -M \$LOGGER\$ -d $DEBUG -u ${DATAWRITER} </dev/null >&/dev/null) &";
157 event ev_init { RC_CMD }
160 RC_DFLTR %<$WORKDIR/ev_configure_datafilter.txt>%
161 RC_DOM %<$WORKDIR/ev_configure_domsimulator.txt>%
162 RC_DWRT path=$WORKDIR; update_s=10; logger_s=5;
165 event ev_start { RC_CMD $RUN $ID }
167 sleep $HALF_RUNTIME_S
168 message RC_ALRT Test;
169 sleep $HALF_RUNTIME_S
171 event ev_pause { RC_CMD }
172 event ev_stop { RC_CMD }
173 event ev_reset { RC_CMD }
174 event ev_off { RC_CMD }
179 JLigier.sh $MESSAGE_SERVER continue
180 JLigier.sh $MESSAGE_LOGGER continue
181 JLigier.sh $WRITER_HOST continue
184 if [[ -n "$LOGGER_OUTPUT" ]]; then
185 JLogger.sh $MESSAGE_LOGGER $LOGGER_OUTPUT
195 -f $WORKDIR/driver.txt \
208 JStopDAQ.sh $MESSAGE_SERVER $MESSAGE_LOGGER
211 ssh $WRITER_HOST "killall JDataWriter"
212 ssh $FILTER_HOST "killall JDataFilter"
213 killall JDOMSimulator