Jpp  18.2.1-ARCA-DF-PATCH
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
software/JDataFilter/JDataFilter.sh
Go to the documentation of this file.
1 #!/bin/zsh
2 #
3 # \author mdejong
4 #
5 script=${0##*/}
6 
7 # ------------------------------------------------------------------------------------------
8 #
9 # Example script to run JDataFilter and JDataWriter using JDQSimulator(s)
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 TEST_DEBUG 3
22 set_variable: WORKDIR TEST_WORKDIR ${TMPDIR:-/tmp}/
23 set_variable IP_ADDRESS `get_ip_address`
24 
25 set_variable MESSAGE_SERVER localhost
26 set_variable MESSAGE_LOGGER localhost
27 
28 set_variable TIMEOUT_S 30
29 set_variable RUNTIME_S 60
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 10e3
37 set_variable DOUBLESRATE_HZ 0e3
39 
40 
41 if do_usage $*; then
42  usage "$script [working directory]"
43 fi
44 
45 case $# in
47  0) ;;
48  *) fatal "Wrong number of arguments."
49 esac
50 
51 
53 set_variable ID 1000
54 set_variable RUN 1001
55 
56 typeset -Z 8 ID
57 typeset -Z 8 RUN
58 
59 set_variable INPUT_FILE $WORKDIR/timeslice.root
61 
62 
63 function clean()
64 {
65  rm -f $DETECTOR
67  rm -f $OUTPUT_FILE
68 
69  rm -f $WORKDIR/ev_configure_datafilter.txt
70  rm -f $WORKDIR/ev_configure_dqsimulator.txt
71  rm -f $WORKDIR/driver.txt
72 
73  killall JDQSimulator >& /dev/null
74  killall JDataFilter >& /dev/null
75  killall JDataWriter >& /dev/null
76 
77  return 0;
78 }
79 
80 
81 debug "IP address $IP_ADDRESS"
82 
83 JDataFilter -h!
84 JDQSimulator -h!
85 JDataWriter -h!
86 
87 
88 # Clean
89 
90 clean
91 
92 
93 # Continue server
94 
95 JLigier-local.sh continue
96 
97 
98 # Create detector
99 
100 set_variable numberOfLines 1
101 set_variable numberOfFloors 4
102 set_variable floorDistance_m 36
103 set_variable lineDistance_m 90
104 set_variable heightOfFirstFloor_m 72
106 
107 if [[ -f $DETECTOR ]]; then
108  echo "Detector $DETECTOR aleady exists; remove to overwrite."
109  exit
110 fi
111 
112 JDetector \
113  -D $ID \
114  -@ "detectorType = $detectorType" \
115  -@ "numberOfLines = $numberOfLines" \
116  -@ "numberOfFloors = $numberOfFloors" \
117  -@ "floorDistance_m = $floorDistance_m" \
118  -@ "lineDistance_m = $lineDistance_m" \
119  -z $heightOfFirstFloor_m \
120  -f footprint.txt \
121  -o $DETECTOR -d 1 --!
122 
123 
124 # Create input data
125 
126 JRandomTimesliceWriter \
127  -a $DETECTOR \
128  -o $INPUT_FILE \
129  -B "$SINGLESRATE_HZ $DOUBLESRATE_HZ" \
130  -n $NUMBER_OF_SLICES \
131  -d1 --!
132 
133 
134 set_variable DQ_SIMULATOR JDQSimulator
136 set_variable NUMBER_OF_FRAMES `JPrintDetector -a $DETECTOR -O modules | awk '/Module/ {if ($4 != 0) {print $0}}' | wc -l`
137 
138 
139 # JDataFilter configure data
140 
141 cat>$WORKDIR/ev_configure_datafilter.txt<<EOF
142 logger_s = 5;
143 update_s = 10;
144 dataWriter = ${WRITER_HOST};
145 numberOfFramesPerSlice = ${NUMBER_OF_FRAMES};
146 detector = %<${DETECTOR}>%;
147 triggerParameters = writeSummary = 1;
148 triggerParameters = writeL0 = 1;
149 queueSize = 100000000;
150 path = $WORKDIR;
151 JDataFilter = ${DATAFILTER} ${FILTER_HOST}:${PORT};
152 JDataWriter = ${DATAWRITER} ${WRITER_HOST};
153 EOF
154 
155 
156 # JDQSimulator configure data.
157 
158 cat>$WORKDIR/ev_configure_dqsimulator.txt<<EOF
159 numberOfFrames = ${NUMBER_OF_FRAMES};
160 numberOfEvents = 1;
161 inputFile = ${INPUT_FILE};
162 target = 0 ${FILTER_HOST}:${PORT};
163 EOF
164 
165 
166 # Driver input.
167 
168 for (( i = 1; $i <= $NUMBER_OF_DQ_SIMULATORS ; ++i )); do
169 
170  let "index = ${#SOURCE_HOST} - $i % ${#SOURCE_HOST}"
171 
172  echo "source = 0 $DQ_SIMULATOR/$i;" >> $WORKDIR/ev_configure_dqsimulator.txt
173 
174  echo "process $DQ_SIMULATOR/$i $SOURCE_HOST[$index] \
175  csh -c '(setenv ROOTSYS $ROOTSYS && source $JPP_DIR/setenv.csh $JPP_DIR && ($DQ_SIMULATOR \
176  -u \$NAME\$ \
177  -H \$SERVER\$ \
178  -M \$LOGGER\$ \
179  -d $DEBUG \
180  </dev/null >&/dev/null &))';" >> $WORKDIR/driver.txt
181 done
182 
183 cat>>$WORKDIR/driver.txt<<EOF
184 
185 process ${DATAFILTER} $FILTER_HOST csh -c '(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 &))';
186 process ${DATAWRITER} $WRITER_HOST csh -c '(setenv ROOTSYS $ROOTSYS && source $JPP_DIR/setenv.csh $JPP_DIR && (JDataWriter -H \$SERVER\$ -M \$LOGGER\$ -d $DEBUG -u ${DATAWRITER} </dev/null >&/dev/null &))';
187 
188 print
189 
190 enter
191 
192 event ev_init { RC_CMD }
193 event ev_reset { RC_CMD }
194 event ev_init { RC_CMD }
195 
196 event ev_configure {
197  RC_DFLTR %<$WORKDIR/ev_configure_datafilter.txt>%
198  RC_DQSIM %<$WORKDIR/ev_configure_dqsimulator.txt>%
199  RC_DWRT path=$WORKDIR; update_s=10; logger_s=5;
200 }
201 
202 event ev_start { RC_CMD $RUN $ID }
203 
204 sleep $RUNTIME_S
205 
206 event ev_pause { RC_CMD }
207 event ev_stop { RC_CMD }
208 event ev_reset { RC_CMD }
209 event ev_off { RC_CMD }
210 
211 EOF
212 
213 
214 # Go!
215 
216 JDAQDriver \
217  -H $MESSAGE_SERVER \
218  -M $MESSAGE_LOGGER \
219  -t $TIMEOUT_S \
220  -f $WORKDIR/driver.txt \
221  -d $DEBUG \
222  -c
223 
224 
225 # Check processes
226 
227 for PROCESS in JDQSimulator JDataFilter JDataWriter; do
228 
229  set_variable PID `ps h -o "%p" -C $PROCESS`
230 
231  debug "Check $PROCESS (${PID})."
232 
233  if [[ -n "$PID" ]] then
234  error "$PROCESS still running (${PID})."
235  kill -9 $PID
236  fi
237 done
238 
239 
240 # Clean
241 
242 echo -n "clean [Y/N]? "
243 read ANSWER
244 
245 if [[ $ANSWER == "Y" || $ANSWER == "y" ]]; then
246  clean
247 fi
EOF cat ev_configure_dqueue_dqdf txt<< EOFtimeslice_duration=100;run_start_time=0;max_dump_size=0;dump_file_prefix=dump_;dump_file_postfix=.dqd;opto_ports=56015;acou_ports=56016;opto_recipients=127.0.0.1:5556;acou_recipient=127.0.0.1:5800;EOFcat > driver txt<< EOFprocess DataQueue $DATAQUEUE"DataQueue -u \$NAME\$ -H \$SERVER\$ -M \$LOGGER\$ -d $DEBUG -o -a </dev/null >& dev null& process JDataWriter $DATAWRITER JDataWriter u $NAME H $SERVER M $LOGGER d $DEBUG</dev/null >& dev null& process JDataFilter $DATAFILTER JDataFilter u $NAME P $PORT H $SERVER M $LOGGER d $DEBUG</dev/null >& dev null& enter event ev_init
remove to overwrite exit fi JDetector D $ID detectorType
then usage $script[port]< option > nPossible restart fi case set_variable OPTION set_variable PORT
event< ev_daq > ev_reset
Definition: JDAQCHSM.chsm:180
event< ev_daq > ev_stop
Definition: JDAQCHSM.chsm:179
std::istream & read(std::istream &in, JTestSummary &summary, const char delimiter= ' ')
Read test summary.
then JLigier sh continue fi cat
Definition: JDAQDriver.sh:51
o $QUALITY_ROOT d $DEBUG!CHECK_EXIT_CODE JPlot1D f
Definition: JDataQuality.sh:76
usr share Modules init zsh export TMPDIR
static const double H
Planck constant [eV s].
exit
Definition: JPizza.sh:36
event< ev_daq > ev_pause
Definition: JDAQCHSM.chsm:177
then
Definition: datalogs.sh:31
do set_variable PID ps h o p C $PROCESS debug Check $PROCESS(${PID})." if [[ -n "$PID" ]] then error "$PROCESS still running($
then fatal Wrong number of arguments fi JConvertDetectorFormat a o
static const double C
Physics constants.
const int n
Definition: JPolint.hh:786
then PID
Definition: mkqueue.sh:67
then rm
Definition: sftpput.zsh:30
do JPrintDAQHeader f $INPUT_FILE d read DETECTOR_ID RUN FRAME_INDEX TIMESLICE_START set_variable OUTPUT_FILE $WORKDIR KM3NeT_
event< ev_daq > ev_configure
Definition: JDAQCHSM.chsm:175
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
then JCalibrateToT a
Definition: JTuneHV.sh:113
case $OPTION in clean clean
then rm i $OUTPUT_FILE fi let RUN
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
$WORKDIR driver txt done cat $WORKDIR driver txt<< EOFprocess ${DATAFILTER}$FILTER_HOST csh-c '(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 &))';process ${DATAWRITER}$WRITER_HOST csh-c '(setenv ROOTSYS $ROOTSYS &&source $JPP_DIR/setenv.csh $JPP_DIR &&(JDataWriter-H\$SERVER\$-M\$LOGGER\$-d $DEBUG-u ${DATAWRITER}</dev/null > &/dev/null &))';print enterevent ev_init{RC_CMD}event ev_reset{RC_CMD}event ev_init{RC_CMD}event ev_configure{RC_DFLTR%<$WORKDIR/ev_configure_datafilter.txt > RC_DQSIM<$WORKDIR/ev_configure_dqsimulator.txt > RC_DWRT path
* usage
print
Definition: JConvertDusj.sh:44
then JFileTuna f $INPUT_FILE
Definition: file-Tuna.sh:66
rm i $OUTPUT_FILE fi set_variable DQ_SIMULATOR JDQSimulator set_variable NUMBER_OF_DQ_SIMULATORS
&set_variable OUTPUT_FILE
set_variable INPUT_FILE
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
$WORKDIR ev_configure_dqsimulator txt echo process $DQ_SIMULATOR $i $SOURCE_HOST[$index] csh c(setenv ROOTSYS $ROOTSYS &&source $JPP_DIR/setenv.csh $JPP_DIR &&($DQ_SIMULATOR\-u\$NAME\$\-H\$SERVER\$\-M\$LOGGER\$\-d $DEBUG</dev/null > &/dev/null &))'
then ls $DIR $ID
Definition: getArchive.sh:85
fi set_variable FILENAME $WORKDIR
Definition: datalogs.sh:34
then JMuonMCEvt f $INPUT_FILE o $INTERMEDIATE_FILE d
Definition: JMuonPath.sh:47
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
event< ev_daq > ev_off
Definition: JDAQCHSM.chsm:182
do set_variable MODULE getModule a $WORKDIR detector_a datx L $STRING JEditDetector a $WORKDIR detector_a datx M $MODULE setz o $WORKDIR detector_a datx JEditDetector a $WORKDIR detector_b datx M $MODULE setz o $WORKDIR detector_b datx done echo Output stored at $WORKDIR detector_a datx and $WORKDIR tripod_a txt JDrawDetector2D a $WORKDIR detector_a datx a $WORKDIR detector_b datx L BL o detector $FORMAT $BATCH JDrawDetector2D T $WORKDIR tripod_a txt T $WORKDIR tripod_b txt L BL o tripod $FORMAT $BATCH JCompareDetector a $WORKDIR detector_a datx b $WORKDIR detector_b datx o $WORKDIR abc root &dev null for KEY in X Y Z
static const JNET::JTag RC_CMD
Definition: JDAQTags.hh:60
then eval ls $DIR $ID $TYPE _
Definition: getArchive.sh:104
set_variable DETECTOR
do set_variable DETECTOR_TXT $WORKDIR detector
triggerParameters
then echo
Definition: JQAQC.sh:90
static JNullStream null
Null I/O stream.
Definition: JNullStream.hh:51
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
script
Definition: JAcoustics.sh:2
do echo Generating $dir eval D
Definition: JDrawLED.sh:53
int debug
debug level
esac done
Definition: JAddHDE.sh:21
#define DEBUG(A)
Message macros.
Definition: JMessage.hh:62
do alias $i