Jpp  17.2.0
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 JDOMSimulator(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 
22 set_variable: DEBUG TEST_DEBUG 3
23 set_variable: WORKDIR TEST_WORKDIR ${TMPDIR:-/tmp}/
24 set_variable IP_ADDRESS `get_ip_address`
25 
26 set_variable MESSAGE_SERVER localhost
27 set_variable MESSAGE_LOGGER localhost
28 
29 set_variable TIMEOUT_S 30
30 set_variable RUNTIME_S 60
31 set_variable PORT 5551
32 set_array SOURCE_HOST $IP_ADDRESS $IP_ADDRESS $IP_ADDRESS
33 set_variable FILTER_HOST $IP_ADDRESS
34 set_variable WRITER_HOST $IP_ADDRESS
35 set_variable DATAFILTER F001/F001
36 set_variable DATAWRITER W000/W000
37 set_variable SINGLESRATE_HZ 10e3
38 set_variable DOUBLESRATE_HZ 0e3
40 
41 
42 if do_usage $*; then
43  usage "$script [working directory]"
44 fi
45 
46 case $# in
48  0) ;;
49  *) fatal "Wrong number of arguments."
50 esac
51 
52 
54 set_variable ID 1000
55 set_variable RUN 1001
56 
57 typeset -Z 8 ID
58 typeset -Z 8 RUN
59 
60 set_variable INPUT_FILE $WORKDIR/timeslice.root
62 
63 
64 function clean()
65 {
66  rm -f $DETECTOR
68  rm -f $OUTPUT_FILE
69 
70  rm -f $WORKDIR/ev_configure_datafilter.txt
71  rm -f $WORKDIR/ev_configure_domsimulator.txt
72  rm -f $WORKDIR/driver.txt
73 
74  killall JDOMSimulator >& /dev/null
75  killall JDataFilter >& /dev/null
76  killall JDataWriter >& /dev/null
77 
78  return 0;
79 }
80 
81 
82 debug "IP address $IP_ADDRESS"
83 
84 JDataFilter -h!
85 JDOMSimulator -h!
86 JDataWriter -h!
87 
88 
89 # Clean
90 
91 clean
92 
93 
94 # Continue server
95 
96 JLigier-local.sh continue
97 
98 
99 # Create detector
100 
101 set_variable numberOfLines 1
102 set_variable numberOfFloors 4
103 set_variable floorDistance_m 36
104 set_variable lineDistance_m 90
105 set_variable heightOfFirstFloor_m 72
107 
108 if [[ -f $DETECTOR ]]; then
109  echo "Detector $DETECTOR aleady exists; remove to overwrite."
110  exit
111 fi
112 
113 JDetector \
114  -D $ID \
115  -@ "detectorType = $detectorType" \
116  -@ "numberOfLines = $numberOfLines" \
117  -@ "numberOfFloors = $numberOfFloors" \
118  -@ "floorDistance_m = $floorDistance_m" \
119  -@ "lineDistance_m = $lineDistance_m" \
120  -z $heightOfFirstFloor_m \
121  -f footprint.txt \
122  -o $DETECTOR -d 1 --!
123 
124 
125 # Create input data
126 
127 JRandomTimesliceWriter \
128  -a $DETECTOR \
129  -o $INPUT_FILE \
130  -B "$SINGLESRATE_HZ $DOUBLESRATE_HZ" \
131  -n $NUMBER_OF_SLICES \
132  -d1 --!
133 
134 
135 set_variable DOM_SIMULATOR JDOMSimulator
137 set_variable NUMBER_OF_FRAMES `JPrintDetector -a $DETECTOR -O modules | awk '/Module/ {if ($4 != 0) {print $0}}' | wc -l`
138 
139 
140 # JDataFilter configure data
141 
142 cat>$WORKDIR/ev_configure_datafilter.txt<<EOF
143 logger_s = 5;
144 update_s = 10;
145 dataWriter = ${WRITER_HOST};
146 numberOfFramesPerSlice = ${NUMBER_OF_FRAMES};
147 detector = %<${DETECTOR}>%;
148 triggerParameters = writeSummary = 1;
149 triggerParameters = writeL0 = 1;
150 queueSize = 100000000;
151 path = $WORKDIR;
152 JDataFilter = ${DATAFILTER} ${FILTER_HOST}:${PORT};
153 JDataWriter = ${DATAWRITER} ${WRITER_HOST};
154 EOF
155 
156 
157 # JDOMSimulator configure data.
158 
159 cat>$WORKDIR/ev_configure_domsimulator.txt<<EOF
160 numberOfFrames = ${NUMBER_OF_FRAMES};
161 numberOfEvents = 1;
162 inputFile = ${INPUT_FILE};
163 target = 0 ${FILTER_HOST}:${PORT};
164 EOF
165 
166 
167 # Driver input.
168 
169 for (( i = 1; $i <= $NUMBER_OF_DOM_SIMULATORS ; ++i )); do
170 
171  let "index = ${#SOURCE_HOST} - $i % ${#SOURCE_HOST}"
172 
173  echo "source = 0 $DOM_SIMULATOR/$i;" >> $WORKDIR/ev_configure_domsimulator.txt
174 
175  echo "process $DOM_SIMULATOR/$i $SOURCE_HOST[$index] \
176  csh -c '(setenv ROOTSYS $ROOTSYS && source $JPP_DIR/setenv.csh $JPP_DIR && ($DOM_SIMULATOR \
177  -u \$NAME\$ \
178  -H \$SERVER\$ \
179  -M \$LOGGER\$ \
180  -d $DEBUG \
181  </dev/null >&/dev/null &))';" >> $WORKDIR/driver.txt
182 done
183 
184 cat>>$WORKDIR/driver.txt<<EOF
185 
186 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 &))';
187 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 &))';
188 
189 print
190 
191 enter
192 
193 event ev_init { RC_CMD }
194 event ev_reset { RC_CMD }
195 event ev_init { RC_CMD }
196 
197 event ev_configure {
198  RC_DFLTR %<$WORKDIR/ev_configure_datafilter.txt>%
199  RC_DOM %<$WORKDIR/ev_configure_domsimulator.txt>%
200  RC_DWRT path=$WORKDIR; update_s=10; logger_s=5;
201 }
202 
203 event ev_start { RC_CMD $RUN $ID }
204 
205 sleep $RUNTIME_S
206 
207 event ev_pause { RC_CMD }
208 event ev_stop { RC_CMD }
209 event ev_reset { RC_CMD }
210 event ev_off { RC_CMD }
211 
212 EOF
213 
214 
215 # Go!
216 
217 JDAQDriver \
218  -H $MESSAGE_SERVER \
219  -M $MESSAGE_LOGGER \
220  -t $TIMEOUT_S \
221  -f $WORKDIR/driver.txt \
222  -d $DEBUG \
223  -c
224 
225 
226 # Check processes
227 
228 for PROCESS in JDOMSimulator JDataFilter JDataWriter; do
229 
230  set_variable PID `ps h -o "%p" -C $PROCESS`
231 
232  debug "Check $PROCESS (${PID})."
233 
234  if [[ -n "$PID" ]] then
235  error "$PROCESS still running (${PID})."
236  kill -9 $PID
237  fi
238 done
239 
240 
241 # Clean
242 
243 echo -n "clean [Y/N]? "
244 read ANSWER
245 
246 if [[ $ANSWER == "Y" || $ANSWER == "y" ]]; then
247  clean
248 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!JPlot1D f
Definition: JDataQuality.sh:66
static const double H
Planck constant [eV s].
exit
Definition: JPizza.sh:36
event< ev_daq > ev_pause
Definition: JDAQCHSM.chsm:177
then fatal Wrong number of arguments fi JConvertDetectorFormat a o
do set_variable PID ps h o p C $PROCESS debug Check $PROCESS(${PID})." if [[ -n "$PID" ]] then error "$PROCESS still running($
then echo
static const double C
Physics constants.
const int n
Definition: JPolint.hh:697
then PID
Definition: mkqueue.sh:67
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
case $OPTION in clean clean
then echo Variable JPP_DIR undefined exit fi source $JPP_DIR setenv sh $JPP_DIR if do_usage *then usage $script[(input file)+] fi set_variable DEBUG set_variable WORKDIR TMPDIR
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_DOM<$WORKDIR/ev_configure_domsimulator.txt > RC_DWRT path
* usage
print
Definition: JConvertDusj.sh:44
then JFileTuna f $INPUT_FILE
Definition: file-Tuna.sh:66
&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
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
rm i $OUTPUT_FILE fi set_variable DOM_SIMULATOR JDOMSimulator set_variable NUMBER_OF_DOM_SIMULATORS
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:44
$WORKDIR ev_configure_domsimulator txt echo process $DOM_SIMULATOR $i $SOURCE_HOST[$index] csh c(setenv ROOTSYS $ROOTSYS &&source $JPP_DIR/setenv.csh $JPP_DIR &&($DOM_SIMULATOR\-u\$NAME\$\-H\$SERVER\$\-M\$LOGGER\$\-d $DEBUG</dev/null > &/dev/null &))'
set_variable DETECTOR
do set_variable DETECTOR_TXT $WORKDIR detector
triggerParameters
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
esac $JPP_BIN JLogger sh $LOGGER until pgrep JGetMessage</dev/null > dev null
int debug
debug level
esac done
Definition: JAddHDE.sh:21
#define DEBUG(A)
Message macros.
Definition: JMessage.hh:62
do alias $i