Jpp  master_rocky-40-g5f0272dcd
the software that should make you happy
input-tables.sh
Go to the documentation of this file.
1 #!/bin/zsh
2 script=${0##*/}
3 
4 # --------------------------------------------------------------------------------------------
5 #
6 # Auxiliary script to convert csv files from input-tables to input files.
7 #
8 # --------------------------------------------------------------------------------------------
9 
10 if [ -z $JPP_DIR ]; then
11  echo "Variable JPP_DIR undefined."
12  exit
13 fi
14 
15 source $JPP_DIR/setenv.sh $JPP_DIR >& /dev/null
16 
17 zmodload zsh/mathfunc
18 
19 set_variable DEBUG 2
20 set_variable WORKDIR ${TMPDIR:-/tmp}
21 
22 if do_usage $*; then
23  usage "$script <directory> <detector identifier>"\
24  "\nThe directory corresponds to the GIT repository \"calibration/input-tables\""
25 fi
26 
27 if (( $# != 2 )); then
28  fatal "Wrong number of arguments."
29 fi
30 
31 set_variable DIR $1
32 set_variable DETOID $2
33 
34 if [[ ! -d $DIR/data/${DETOID} ]]; then
35  fatal "No directory $DIR/data/${DETOID}"
36 fi
37 
38 #
39 # Create tripod file.
40 #
41 # \param 1 input file
42 # \param 2 output file
43 #
44 function tripod()
45 {
46  TRIPOD_CSV=$1
47  TRIPOD_TXT=$2
48 
49  if [[ -f $TRIPOD_CSV ]]; then
50 
51  printf "# Data from %s\n" ${TRIPOD_CSV:t} > $TRIPOD_TXT
52  egrep -v "^#" $TRIPOD_CSV | tail -n +2 | tr ',' ' ' >> $TRIPOD_TXT
53  fi
54 }
55 
56 #
57 # Create hydrophone file.
58 #
59 # \param 1 input file
60 # \param 2 output file
61 #
62 function hydrophone()
63 {
64  HYDROPHONE_CSV=$1
65  HYDROPHONE_TXT=$2
66 
67  if [[ -f $HYDROPHONE_CSV ]]; then
68 
69  egrep -v "^#" $HYDROPHONE_CSV | tail -n +2 | tr ',' ' ' > $WORKDIR/hydrophones.txt
70 
71  printf "# Data from %s\n" ${HYDROPHONE_CSV:t} > $HYDROPHONE_TXT
72 
73  while read -A BUFFER; do
74 
75  set_variable STRING $BUFFER[1]
76  set_variable FLOOR $BUFFER[2]
77  set_variable X $BUFFER[3]
78  set_variable Y $BUFFER[4]
79  set_variable ANGLE_DEG $BUFFER[5]
80  set_variable Z $BUFFER[6]
81 
82  let "X0 = -1.0 * $Y"
83  let "Y0 = -1.0 * $X"
84 
85  let "CT = cos($ANGLE_DEG * $PI / 180.0)"
86  let "ST = sin($ANGLE_DEG * $PI / 180.0)"
87 
88  let "X1 = $ST * $X0 + $CT * $Y0"
89  let "Y1 = $CT * $X0 - $ST * $Y0"
90 
91  printf "%4d %2d %6.2f %6.2f %6.2f\n" $STRING $FLOOR $X1 $Y1 $Z >> $HYDROPHONE_TXT
92 
93  done < $WORKDIR/hydrophones.txt
94 
95  rm -f $WORKDIR/hydrophones.txt
96  fi
97 }
98 
99 #
100 # Create transmitter file.
101 #
102 # \param 1 input file
103 # \param 2 output file
104 #
105 function transmitter()
106 {
107  TRANSMITTER_CSV=$1
108  TRANSMITTER_TXT=$2
109 
110  if [[ -f $TRANSMITTER_CSV ]]; then
111 
112  egrep -v "^#" $TRANSMITTER_CSV | tail -n +2 | tr ',' ' ' > $WORKDIR/transmitters.txt
113 
114  printf "# Data from %s\n" ${TRANSMITTER_CSV:t} > $TRANSMITTER_TXT
115 
116  while read -A BUFFER; do
117 
118  set_variable ID $BUFFER[1]
119  set_variable STRING $BUFFER[2]
120  set_variable FLOOR $BUFFER[3]
121  set_variable X $BUFFER[4]
122  set_variable Y $BUFFER[5]
123  set_variable ANGLE_DEG $BUFFER[6]
124  set_variable Z $BUFFER[7]
125 
126  let "X0 = -1.0 * $Y"
127  let "Y0 = -1.0 * $X"
128 
129  let "CT = cos($ANGLE_DEG * $PI / 180.0)"
130  let "ST = sin($ANGLE_DEG * $PI / 180.0)"
131 
132  let "X1 = $ST * $X0 + $CT * $Y0"
133  let "Y1 = $CT * $X0 - $ST * $Y0"
134 
135  printf "%2d %4d %2d %6.2f %6.2f %6.2f\n" $ID $STRING $FLOOR $X1 $Y1 $Z >> $TRANSMITTER_TXT
136 
137  done < $WORKDIR/transmitters.txt
138 
139  rm -f $WORKDIR/transmitters.txt
140  fi
141 }
142 
143 #
144 # Create waveform file.
145 #
146 # \param 1 input file
147 # \param 2 output file
148 #
149 function waveform()
150 {
151  WAVEFORM_CSV=$1
152  WAVEFORM_TXT=$2
153 
154  if [[ -f $WAVEFORM_CSV ]]; then
155 
156  egrep -v "^#" $WAVEFORM_CSV | tail -n +2 | tr ',' ' ' > $WORKDIR/waveforms.txt
157 
158  printf "# Data from %s\n" ${WAVEFORM_CSV:t} > $WAVEFORM_TXT
159 
160  while read -A BUFFER; do
161 
162  set_variable WAVEFORM_ID $BUFFER[1]
163  set_variable EMITTER_ID $BUFFER[2]
164 
165  printf "%3d %3d\n" $WAVEFORM_ID $EMITTER_ID >> $WAVEFORM_TXT
166 
167  done < $WORKDIR/waveforms.txt
168 
169  rm -f $WORKDIR/waveforms.txt
170  fi
171 }
172 
173 #
174 # Create mechanics file.
175 #
176 # \param 1 detector identifier
177 # \param 2 output file
178 #
179 function mechanics()
180 {
181  MECHANICS_TXT=$2
182 
183  if [[ $1 =~ ORCA ]]; then
184 
185  cat>$MECHANICS_TXT<<EOF
186  -1 0.00311 85.966
187  9 0.00087 267.054
188 EOF
189  elif [[ $1 =~ ARCA ]]; then
190 
191  cat>$MECHANICS_TXT<<EOF
192  -1 0.00094 294.291
193 EOF
194  else
195  fatal "Invalid detector identifier $1."
196  fi
197 }
198 
199 #
200 # Create sound velocity file.
201 #
202 # \param 1 detector identifier
203 # \param 2 output file
204 #
205 function sound_velocity()
206 {
207  SOUND_VELOCITY_TXT=$2
208 
209  if [[ $1 =~ ORCA ]]; then
210 
211  cat>$SOUND_VELOCITY_TXT<<EOF
212 1538.00 -17e-3 -2000.00
213 EOF
214  elif [[ $1 =~ ARCA ]]; then
215 
216  cat>$SOUND_VELOCITY_TXT<<EOF
217 1541.00 -17e-3 -2000.00
218 EOF
219  else
220  fatal "Invalid detector identifier $1."
221  fi
222 }
223 
224 #
225 # Create disable file.
226 #
227 # \param 1 detector identifier
228 # \param 2 output file
229 #
230 function disable()
231 {
232  DISABLE_TXT=$2
233 
234  cat>$DISABLE_TXT<<EOF
235 EOF
236 }
237 
238 #
239 # Create trigger parameters file.
240 #
241 # \param 1 detector identifier
242 # \param 2 output file
243 #
244 function trigger_parameters()
245 {
246  TRIGGER_PARAMETERS_TXT=$2
247 
248  cat>$TRIGGER_PARAMETERS_TXT<<EOF
249 Q = 0.0;
250 TMax_s = 0.020;
251 numberOfHits = 300;
252 EOF
253 }
254 
255 #
256 # Create fit parameters file.
257 #
258 # \param 1 detector identifier
259 # \param 2 output file
260 #
261 function fit_parameters()
262 {
263  FIT_PARAMETERS_TXT=$2
264 
265  cat>$FIT_PARAMETERS_TXT<<EOF
266 Nmin = 3;
267 Tmax_s = 600.0;
268 chi2perNDF = 100.0;
269 mestimator = 1;
270 option = 3;
271 sigma_s = 50.0e-6;
272 stdev = 10.0e+5;
273 EOF
274 }
275 
276 tripod $DIR/data/${DETOID}/${DETOID}_tripods.csv tripod.txt
277 hydrophone $DIR/data/${DETOID}/${DETOID}_hydrophones.csv hydrophone.txt
278 transmitter $DIR/data/${DETOID}/${DETOID}_transmitters.csv transmitter.txt
279 waveform $DIR/data/${DETOID}/${DETOID}_waveforms.csv waveform.txt
280 mechanics ${DETOID} mechanics.txt
281 sound_velocity ${DETOID} sound_velocity.txt
282 disable ${DETOID} disable.txt
283 trigger_parameters ${DETOID} acoustics_trigger_parameters.txt
284 fit_parameters ${DETOID} acoustics_fit_parameters.txt