Jpp  17.1.0
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
acoustics-fit-toolkit2.sh
Go to the documentation of this file.
1 #!/bin/zsh
2 script=${0##*/}
3 
4 # -----------------------------------------------------------------------------------------------------
5 #
6 # Toolkit for the determination of the fixed parameters in the system, a.k.a. "pre-calibration".
7 # The list of parameters includes (x,y,z) positions of strings and tripods, stretching of strings,
8 # z-positions of the optical modules, orientations of the strings and possibly z-positions of anchors.
9 #
10 # The value of a given parameter is optimised by minimising the average chi2/NDF
11 # of a series of global fits applied to a predefined set of acoustic events.
12 # For each parameter, there exists a designated function.
13 #
14 # There are also steering functions to consistently determine the optimal values for a set of parameters.
15 # In these, the current accuracy of the parameter values is taken into account.
16 # These are therefore referred to as "stages".
17 # The pre-calibration thus consists of a sequence of stages.
18 # For each detector, a complete pre-calibration procedure is implemented in a designated script.
19 #
20 # Mandatory input variables:
21 #
22 # DETECTOR # detector file
23 # TRIPOD # tripod file
24 # INPUT_FILES # list of input files (output of JAcousticsEventBuilder[.sh])
25 #
26 # Optional input variables:
27 #
28 # HYDROPHONE # if defined, use hydrophones in global fit; else do not use hydrophones
29 #
30 # In the following:
31 #
32 # STRINGS corresponds to list of strings to be fitted; this can be changed with function fixStrings.
33 # TRIPODS corresponds to list of tripods to be fitted; this can be changed with function fixTripods.
34 #
35 # TRANSMITTERS corresponds to list of strings which have an emitter on the anchor (maybe empty).
36 # For these strings, the orientations and the z-positions of the anchors will separately be fitted.
37 # This list will also be changed with function fixStrings.
38 # -----------------------------------------------------------------------------------------------------
39 
40 source $JPP_DIR/setenv.sh $JPP_DIR >& /dev/null
41 source $JPP_BIN/gradient.sh
42 
43 if do_usage $*; then
44  usage "source $script"\
45  "\nThis script contains auxiliary functions for the pre-calibration of specific detectors."\
46  "\nIt should be sourced by the detector specific scripts."
47 fi
48 
49 source JAcousticsToolkit.sh
50 
54 
55 typeset -A TRIPODS # tripods
56 typeset -a CHI2 # chi2 values; index [1] corresponds to best value
57 
58 let "NUMBER_OF_ITERATIONS = 100" # maximal number of iterations
59 let "EPSILON = 5.0E-4" # maximal distance to minimum of chi2
60 let "RADIUS_M = 1.0" # maximal horizontal distance between T-bar and emitter/hydrophone
61 
62 
63 # -----------------------------------------------------------------------------------------------------
64 # Initialise.
65 #
66 # Install input files in working directory and create temporary directory TMPDIR.
67 #
68 # -----------------------------------------------------------------------------------------------------
69 function initialise()
70 {
71  eval `JPrintDetector -a $DETECTOR -O IDENTIFIER`
72  eval `JPrintDetector -a $DETECTOR -O SUMMARY`
73  eval `JPrintDetector -a $DETECTOR -O CAN`
74 
75  JAcoustics.sh $DETECTOR_ID
76 
77  get_tripods $TRIPOD TRIPODS
78 
79  TRANSMITTERS=(`get_strings_with_transmitter $WORKDIR/transmitter.txt`)
80 
81  mkdir -p $TMPDIR
82 }
83 
84 
85 # -----------------------------------------------------------------------------------------------------
86 # Backup files in given directory.
87 #
88 # \param 1 directory
89 # -----------------------------------------------------------------------------------------------------
90 function backup()
91 {
92  mkdir -p $1
93 
94  cp -p {$DETECTOR,tripod.txt,transmitter.txt,hydrophone.txt} $1
95 
96 }
97 
98 
99 # -----------------------------------------------------------------------------------------------------
100 # Remove temporary directory and restore input files in working directory.
101 #
102 # -----------------------------------------------------------------------------------------------------
103 function clean()
104 {
105  rm -rf $TMPDIR >& /dev/null
106 
107  rm -f {acoustics_fit_parameters,acoustics_trigger_parameters}.txt
108 
109  JAcoustics.sh $DETECTOR_ID
110 }
111 
112 
113 # -----------------------------------------------------------------------------------------------------
114 # Fix strings.
115 #
116 # \param 1-N identifiers
117 # -----------------------------------------------------------------------------------------------------
118 function fixStrings()
119 {
120  typeset -a BUFFER
121 
122  BUFFER=(`echo $*`)
123 
124  if (( ${#BUFFER} > 0 )); then
125  STRINGS=(${STRINGS:|BUFFER})
126  TRANSMITTERS=(${TRANSMITTERS:|BUFFER})
127  fi
128 }
129 
130 
131 # -----------------------------------------------------------------------------------------------------
132 # Fix tripods.
133 #
134 # \param 1-N identifiers
135 # -----------------------------------------------------------------------------------------------------
136 function fixTripods()
137 {
138  typeset -a BUFFER
139 
140  BUFFER=(`echo $*`)
141 
142  if (( ${#BUFFER} > 0 )); then
143  for ID in $BUFFER[*]; do
144  unset "TRIPODS[${ID}]"
145  done
146  fi
147 }
148 
149 
150 # -----------------------------------------------------------------------------------------------------
151 # Evaluate current chi2.
152 #
153 # \param 1 variable containing chi2 value on return
154 # -----------------------------------------------------------------------------------------------------
155 function getChi2()
156 {
157  for (( m = 0; $m != 3; ++m )); do
158 
159  rm -f $TMPDIR/katoomba.{root,log} >& /dev/null
160 
161  date >& $TMPDIR/katoomba.log
162 
163  JKatoomba \
164  -a $DETECTOR \
165  -f "$INPUT_FILES[*]" \
166  -o $TMPDIR/katoomba.root \
167  -T $TRIPOD \
168  -Y $WORKDIR/transmitter.txt \
169  -V $WORKDIR/sound_velocity.txt \
170  -M $WORKDIR/mechanics.txt \
171  -@ $TMPDIR/acoustics_fit_parameters.txt \
172  -! $WORKDIR/disable.txt \
173  ${HYDROPHONE:+-H $WORKDIR/hydrophone.txt} \
174  -F 2 \
175  -u \
176  -d 2 --! >>& $TMPDIR/katoomba.log
177 
178  ERROR=$?
179 
180  if (( $ERROR == 0 )); then
181 
182  let "UV = $(JPrintResult -f $TMPDIR/katoomba.root:chi2 -F GetMean)" >>& $TMPDIR/katoomba.log
183 
184  ERROR=$?
185 
186  if (( $ERROR == 0 )); then
187 
188  eval $1=$UV
189 
190  return
191  else
192  printf "warning: exit code let %d\n" $ERROR
193  fi
194  else
195  printf "warning: exit code JKatoomba %d\n" $ERROR
196  fi
197 
198  # backup error status
199 
200  set_variable UDIR `mktemp -d $WORKDIR/XXXXXX`
201 
202  cp -p $TMPDIR/katoomba.log $UDIR
203  cp -p $TMPDIR/katoomba.root $UDIR
204  cp -p $DETECTOR $UDIR
205  cp -p $TRIPOD $UDIR
206  cp -p $WORKDIR/transmitter.txt $UDIR
207 
208  printf "warning: backup %s\n" $UDIR
209  done
210 
211  printf "warning: no valid chi2 -> exit\n"
212  exit 1
213 }
214 
215 
216 # -----------------------------------------------------------------------------------------------------
217 # Stage 0.
218 # This stage can be used to determine the (x,y,z) positions of tripods when a number of strings is fixed.
219 #
220 # -----------------------------------------------------------------------------------------------------
221 function stage_0()
222 {
223  cat>$TMPDIR/acoustics_fit_parameters.txt<<EOF
224 `egrep Tmax_s $WORKDIR/acoustics_fit_parameters.txt`
225 Nmin = 3;
226 sigma_s = 100.0e-6;
227 stdev = 10.0;
228 mestimator = 0;
229 option = 1;
230 EOF
231 
232  if (( ${#STRINGS} > 0 )); then
233  JEditDetector -a $DETECTOR -o $TMPDIR/detector_0.datx -k "$STRINGS[*]" -q -d 0 >& /dev/null
234  JEditDetector -a $DETECTOR -o $DETECTOR -r "$STRINGS[*]" -q -d 0 >& /dev/null
235  fi
236 
237  let "MOBILITY = 10"
238  let "DX_M = 0.50"
239 
240  PARAMETERS=()
241 
242  for ID in ${(k)TRIPODS}; do
243  PARAMETERS['JEditTripod -f $TRIPOD -T "$ID addx %" -T "$ID suby %" -o $TRIPOD -q -d 0 >& /dev/null']=$DX_M
244  PARAMETERS['JEditTripod -f $TRIPOD -T "$ID addx %" -T "$ID addy %" -o $TRIPOD -q -d 0 >& /dev/null']=$DX_M
245  PARAMETERS['JEditTripod -f $TRIPOD -T "$ID addz %" -o $TRIPOD -q -d 0 >& /dev/null']=$DX_M
246  done
247 
248  gradient Y
249 
250  printf "detector %6d %8.4f\n" $N $Y
251 
252  if (( ${#STRINGS} > 0 )); then
253  JMergeDetector -a $DETECTOR -a $TMPDIR/detector_0.datx -o $DETECTOR >& /dev/null
254  fi
255 }
256 
257 
258 # -----------------------------------------------------------------------------------------------------
259 # Stage 1A.
260 # This stage can be used to roughly determine the positions of the strings, tripods and modules.
261 # During this procedure, the strings are kept vertical in the global fits.
262 #
263 # -----------------------------------------------------------------------------------------------------
264 function stage_1A()
265 {
266  cat>$TMPDIR/acoustics_fit_parameters.txt<<EOF
267 `egrep Tmax_s $WORKDIR/acoustics_fit_parameters.txt`
268 Nmin = 3;
269 sigma_s = 250.0e-6;
270 stdev = 10.0;
271 mestimator = 2;
272 option = 0;
273 EOF
274 
275  let "MOBILITY = 10"
276  let "DX_M = 0.5"
277  let "A_RAD = $DX_M / $RADIUS_M"
278 
279  PARAMETERS=()
280 
281  for STRING in $STRINGS[*]; do
282  PARAMETERS['JEditDetector -a $DETECTOR -S "$STRING addx %" -o $DETECTOR -q -d 0 >& /dev/null']=$DX_M
283  PARAMETERS['JEditDetector -a $DETECTOR -S "$STRING addy %" -o $DETECTOR -q -d 0 >& /dev/null']=$DX_M
284  PARAMETERS['JEditDetector -a $DETECTOR -s "$STRING addz %" -o $DETECTOR -q -d 0 >& /dev/null']=$DX_M
285  done
286 
287  for ID in ${(k)TRIPODS}; do
288  PARAMETERS['JEditTripod -f $TRIPOD -T "$ID addx %" -o $TRIPOD -q -d 0 >& /dev/null']=$((2.5 * $DX_M))
289  PARAMETERS['JEditTripod -f $TRIPOD -T "$ID addy %" -o $TRIPOD -q -d 0 >& /dev/null']=$((2.5 * $DX_M))
290  PARAMETERS['JEditTripod -f $TRIPOD -T "$ID addz %" -o $TRIPOD -q -d 0 >& /dev/null']=$((2.5 * $DX_M))
291  done
292 
293  for STRING in $TRANSMITTERS[*]; do
294 
295  set_variable MODULE `getModule -a $DETECTOR -L "$STRING 0"`
296 
297  PARAMETERS['JEditDetector -a $DETECTOR -M "$MODULE addz %" -o $DETECTOR -q -d 0 >& /dev/null']=$DX_M
298  done
299 
300  gradient Y
301 
302  printf "detector %6d %8.4f\n" $N $Y
303 
304 
305  let "DX_M = 0.1"
306 
307  PARAMETERS=()
308 
309  for STRING in $STRINGS[*]; do
310 
311  for (( FLOOR = 1; $FLOOR <= 18; FLOOR += 1 )); do
312 
313  set_variable MODULE `getModule -a $DETECTOR -L "$STRING $FLOOR"`
314 
315  PARAMETERS['JEditDetector -a $DETECTOR -M "$MODULE addz %" -o $DETECTOR -q -d 0 >& /dev/null']=$DX_M
316  done
317  done
318 
319  #gradient Y
320  simplex Y
321 
322  printf "detector %6d %8.4f\n" $N $Y
323 }
324 
325 
326 # -----------------------------------------------------------------------------------------------------
327 # Stage 1B.
328 # This stage can be used to determine the z-positions and stretching of individual strings.
329 #
330 # -----------------------------------------------------------------------------------------------------
331 function stage_1B()
332 {
333  cat>$TMPDIR/acoustics_fit_parameters.txt<<EOF
334 `egrep Tmax_s $WORKDIR/acoustics_fit_parameters.txt`
335 Nmin = 3;
336 sigma_s = 100.0e-6;
337 stdev = 10.0;
338 mestimator = 0;
339 option = 1;
340 EOF
341 
342  let "MOBILITY = 0"
343  let "MUL = 0.002"
344  let "DX_M = 0.10"
345 
346  for STRING in $STRINGS[*]; do
347 
348  JEditDetector -a $DETECTOR -o $TMPDIR/detector_1.datx -r "$STRING" -q -d 0 >& /dev/null
349  JEditDetector -a $DETECTOR -o $DETECTOR -k "$STRING" -q -d 0 >& /dev/null
350 
351  PARAMETERS=()
352 
353  PARAMETERS['JEditDetector -a $DETECTOR -s "$STRING addz %" -o $DETECTOR -q -d 0 >& /dev/null']=$DX_M
354  PARAMETERS['JEditDetector -a $DETECTOR -s "$STRING mul %" -o $DETECTOR -q -d 0 >& /dev/null; JEditDetector -a $DETECTOR -s "$STRING subz \$\(\(% * $CAN_ZMAX_M\)\)" -o $DETECTOR -q -d 0 >& /dev/null']=$MUL
355 
356  gradient Y
357 
358  printf "string %04d %6d %8.4f\n" $STRING $N $Y
359 
360  JMergeDetector -a $DETECTOR -a $TMPDIR/detector_1.datx -o $DETECTOR >& /dev/null
361  done
362 }
363 
364 
365 # -----------------------------------------------------------------------------------------------------
366 # Stage 2a.
367 # This stage can be used to improve the determination the positions of the strings, tripods and modules.
368 #
369 # -----------------------------------------------------------------------------------------------------
370 function stage_2a()
371 {
372  cat>$TMPDIR/acoustics_fit_parameters.txt<<EOF
373 `egrep Tmax_s $WORKDIR/acoustics_fit_parameters.txt`
374 Nmin = 3;
375 sigma_s = 100.0e-6;
376 stdev = 10.0;
377 mestimator = 0;
378 option = 1;
379 EOF
380 
381  let "MOBILITY = 10"
382  let "DX_M = 0.2"
383  let "A_RAD = $DX_M / $RADIUS_M"
384 
385  PARAMETERS=()
386 
387  for STRING in $STRINGS[*]; do
388  PARAMETERS['JEditDetector -a $DETECTOR -S "$STRING addx %" -o $DETECTOR -q -d 0 >& /dev/null']=$DX_M
389  PARAMETERS['JEditDetector -a $DETECTOR -S "$STRING addy %" -o $DETECTOR -q -d 0 >& /dev/null']=$DX_M
390  PARAMETERS['JEditDetector -a $DETECTOR -s "$STRING addz %" -o $DETECTOR -q -d 0 >& /dev/null']=$DX_M
391  done
392 
393  for ID in ${(k)TRIPODS}; do
394  PARAMETERS['JEditTripod -f $TRIPOD -T "$ID addx %" -o $TRIPOD -q -d 0 >& /dev/null']=$((2.5 * $DX_M))
395  PARAMETERS['JEditTripod -f $TRIPOD -T "$ID addy %" -o $TRIPOD -q -d 0 >& /dev/null']=$((2.5 * $DX_M))
396  PARAMETERS['JEditTripod -f $TRIPOD -T "$ID addz %" -o $TRIPOD -q -d 0 >& /dev/null']=$((2.5 * $DX_M))
397  done
398 
399  for STRING in $TRANSMITTERS[*]; do
400 
401  set_variable MODULE `getModule -a $DETECTOR -L "$STRING 0"`
402 
403  PARAMETERS['JEditDetector -a $DETECTOR -M "$MODULE addz %" -o $DETECTOR -q -d 0 >& /dev/null']=$DX_M
404  done
405 
406  for STRING in ${TRANSMITTERS:*STRINGS}; do
407  PARAMETERS['JEditHydrophone -f $WORKDIR/hydrophone.txt -S "$STRING rot %" -o $WORKDIR/hydrophone.txt -q -d 0 >& /dev/null; JEditTransmitter -f $WORKDIR/transmitter.txt -S "$STRING rot %" -o $WORKDIR/transmitter.txt -q -d 0 >& /dev/null']=$A_RAD
408  done
409 
410  gradient Y
411 
412  printf "detector %6d %8.4f\n" $N $Y
413 }
414 
415 
416 # -----------------------------------------------------------------------------------------------------
417 # Stage 2b.
418 # This stage can be used to improve the determination the positions of the strings, tripods and modules.
419 #
420 # -----------------------------------------------------------------------------------------------------
421 function stage_2b()
422 {
423  cat>$TMPDIR/acoustics_fit_parameters.txt<<EOF
424 `egrep Tmax_s $WORKDIR/acoustics_fit_parameters.txt`
425 Nmin = 3;
426 sigma_s = 100.0e-6;
427 stdev = 10.0;
428 mestimator = 0;
429 option = 1;
430 EOF
431 
432  let "MOBILITY = 10"
433  let "DZ_M = 0.05"
434  #let "DX_M = 0.10"
435 
436  PARAMETERS=()
437 
438  for STRING in $STRINGS[*]; do
439 
440  for (( FLOOR = 1; $FLOOR <= 18; FLOOR += 1 )); do
441 
442  set_variable MODULE `getModule -a $DETECTOR -L "$STRING $FLOOR"`
443 
444  PARAMETERS['JEditDetector -a $DETECTOR -M "$MODULE addz %" -o $DETECTOR -q -d 0 >& /dev/null']=$DZ_M
445  done
446 
447  #PARAMETERS['JEditDetector -a $DETECTOR -S "$STRING addx %" -o $DETECTOR -q -d 0 >& /dev/null']=$DX_M
448  #PARAMETERS['JEditDetector -a $DETECTOR -S "$STRING addy %" -o $DETECTOR -q -d 0 >& /dev/null']=$DX_M
449  done
450 
451  #gradient Y
452  simplex Y
453 
454  printf "detector %6d %8.4f\n" $N $Y
455 }
456 
457 
458 
459 
460 # -----------------------------------------------------------------------------------------------------
461 # Stage 2.
462 # This stage can be used to improve the determination the positions of the strings, tripods and modules.
463 #
464 # -----------------------------------------------------------------------------------------------------
465 function stage_2()
466 {
467  stage_2a
468  stage_2b
469 }
470 
471 
472 # -----------------------------------------------------------------------------------------------------
473 # Stage 3a.
474 # This stage can be used to finalise the determination of the positions of the strings, tripods and modules.
475 #
476 # -----------------------------------------------------------------------------------------------------
477 function stage_3a()
478 {
479  cat>$TMPDIR/acoustics_fit_parameters.txt<<EOF
480 `egrep Tmax_s $WORKDIR/acoustics_fit_parameters.txt`
481 Nmin = 3;
482 sigma_s = 50.0e-6;
483 stdev = 10.0;
484 mestimator = 0;
485 option = 1;
486 EOF
487 
488  let "MOBILITY = 10"
489  let "DX_M = 0.2"
490  let "A_RAD = $DX_M / $RADIUS_M"
491 
492  PARAMETERS=()
493 
494  for STRING in $STRINGS[*]; do
495  PARAMETERS['JEditDetector -a $DETECTOR -S "$STRING addx %" -o $DETECTOR -q -d 0 >& /dev/null']=$DX_M
496  PARAMETERS['JEditDetector -a $DETECTOR -S "$STRING addy %" -o $DETECTOR -q -d 0 >& /dev/null']=$DX_M
497  PARAMETERS['JEditDetector -a $DETECTOR -s "$STRING addz %" -o $DETECTOR -q -d 0 >& /dev/null']=$DX_M
498  done
499 
500  for ID in ${(k)TRIPODS}; do
501  PARAMETERS['JEditTripod -f $TRIPOD -T "$ID addx %" -o $TRIPOD -q -d 0 >& /dev/null']=$((2.5 * $DX_M))
502  PARAMETERS['JEditTripod -f $TRIPOD -T "$ID addy %" -o $TRIPOD -q -d 0 >& /dev/null']=$((2.5 * $DX_M))
503  PARAMETERS['JEditTripod -f $TRIPOD -T "$ID addz %" -o $TRIPOD -q -d 0 >& /dev/null']=$((2.5 * $DX_M))
504  done
505 
506  for STRING in $TRANSMITTERS[*]; do
507 
508  set_variable MODULE `getModule -a $DETECTOR -L "$STRING 0"`
509 
510  PARAMETERS['JEditDetector -a $DETECTOR -M "$MODULE addz %" -o $DETECTOR -q -d 0 >& /dev/null']=$DX_M
511  done
512 
513  for STRING in ${TRANSMITTERS:*STRINGS}; do
514 
515  PARAMETERS['JEditHydrophone -f $WORKDIR/hydrophone.txt -S "$STRING rot %" -o $WORKDIR/hydrophone.txt -q -d 0 >& /dev/null; JEditTransmitter -f $WORKDIR/transmitter.txt -S "$STRING rot %" -o $WORKDIR/transmitter.txt -q -d 0 >& /dev/null']=$A_RAD
516  done
517 
518  gradient Y
519 
520  printf "detector %6d %8.4f\n" $N $Y
521 }
522 
523 
524 # -----------------------------------------------------------------------------------------------------
525 # Stage 3b.
526 # This stage can be used to finalise the determination of the positions of the strings, tripods and modules.
527 #
528 # -----------------------------------------------------------------------------------------------------
529 function stage_3b()
530 {
531  cat>$TMPDIR/acoustics_fit_parameters.txt<<EOF
532 `egrep Tmax_s $WORKDIR/acoustics_fit_parameters.txt`
533 Nmin = 3;
534 sigma_s = 50.0e-6;
535 stdev = 10.0;
536 mestimator = 0;
537 option = 1;
538 EOF
539 
540  let "MOBILITY = 10"
541  let "DZ_M = 0.05"
542  #let "DX_M = 0.10"
543 
544  PARAMETERS=()
545 
546  for STRING in $STRINGS[*]; do
547 
548  for (( FLOOR = 1; $FLOOR <= 18; FLOOR += 1 )); do
549 
550  set_variable MODULE `getModule -a $DETECTOR -L "$STRING $FLOOR"`
551 
552  PARAMETERS['JEditDetector -a $DETECTOR -M "$MODULE addz %" -o $DETECTOR -q -d 0 >& /dev/null']=$DZ_M
553  done
554 
555  #PARAMETERS['JEditDetector -a $DETECTOR -S "$STRING addx %" -o $DETECTOR -q -d 0 >& /dev/null']=$DX_M
556  #PARAMETERS['JEditDetector -a $DETECTOR -S "$STRING addy %" -o $DETECTOR -q -d 0 >& /dev/null']=$DX_M
557  done
558 
559  #gradient Y
560  simplex Y
561 
562  printf "detector %6d %8.4f\n" $N $Y
563 }
564 
565 
566 
567 
568 # -----------------------------------------------------------------------------------------------------
569 # Stage 3.
570 # This stage can be used to finalise the determination of the positions of the strings, tripods and modules.
571 #
572 # -----------------------------------------------------------------------------------------------------
573 function stage_3()
574 {
575  stage_3a
576  stage_3b
577 }
578 
579 
580 # -----------------------------------------------------------------------------------------------------
581 # Stage D.
582 # This stage can be used to determine the rotations of the strings and z-positions of the anchors
583 # including the response of hydrophones.
584 # It includes a determination of the positions of the strings, tripods and modules.
585 #
586 # -----------------------------------------------------------------------------------------------------
587 function stage_D()
588 {
589  cat>$TMPDIR/acoustics_fit_parameters.txt<<EOF
590 `egrep Tmax_s $WORKDIR/acoustics_fit_parameters.txt`
591 Nmin = 3;
592 sigma_s = 50.0e-6;
593 stdev = 10.0;
594 mestimator = 0;
595 option = 1;
596 EOF
597 
599 
600  let "MOBILITY = 10"
601  let "DX_M = 0.05"
602  let "A_RAD = $DX_M / $RADIUS_M"
603 
604  PARAMETERS=()
605 
606  for STRING in $STRINGS[*]; do
607 
608  set_variable MODULE `getModule -a $DETECTOR -L "$STRING 0"`
609 
610  PARAMETERS['JEditDetector -a $DETECTOR -S "$STRING addx %" -o $DETECTOR -q -d 0 >& /dev/null']=$DX_M
611  PARAMETERS['JEditDetector -a $DETECTOR -S "$STRING addy %" -o $DETECTOR -q -d 0 >& /dev/null']=$DX_M
612  PARAMETERS['JEditDetector -a $DETECTOR -s "$STRING addz %" -o $DETECTOR -q -d 0 >& /dev/null']=$DX_M
613  PARAMETERS['JEditDetector -a $DETECTOR -M "$MODULE addz %" -o $DETECTOR -q -d 0 >& /dev/null']=$DX_M
614 
615  PARAMETERS['JEditHydrophone -f $WORKDIR/hydrophone.txt -S "$STRING rot %" -o $WORKDIR/hydrophone.txt -q -d 0 >& /dev/null; JEditTransmitter -f $WORKDIR/transmitter.txt -S "$STRING rot %" -o $WORKDIR/transmitter.txt -q -d 0 >& /dev/null']=$A_RAD
616  done
617 
618  for ID in ${(k)TRIPODS}; do
619  PARAMETERS['JEditTripod -f $TRIPOD -T "$ID addx %" -o $TRIPOD -q -d 0 >& /dev/null']=$((2.5 * $DX_M))
620  PARAMETERS['JEditTripod -f $TRIPOD -T "$ID addy %" -o $TRIPOD -q -d 0 >& /dev/null']=$((2.5 * $DX_M))
621  PARAMETERS['JEditTripod -f $TRIPOD -T "$ID addz %" -o $TRIPOD -q -d 0 >& /dev/null']=$((2.5 * $DX_M))
622  done
623 
624  for STRING in ${TRANSMITTERS:*STRINGS}; do
625 
626  PARAMETERS['JEditHydrophone -f $WORKDIR/hydrophone.txt -S "$STRING rot %" -o $WORKDIR/hydrophone.txt -q -d 0 >& /dev/null; JEditTransmitter -f $WORKDIR/transmitter.txt -S "$STRING rot %" -o $WORKDIR/transmitter.txt -q -d 0 >& /dev/null']=$A_RAD
627  done
628 
629  gradient Y
630 
631  printf "detector %6d %8.4f\n" $N $Y
632 }
then cat $TRIPOD_INITIAL<< EOF1 256877.5 4743716.7-2438.42 256815.5 4743395.0-2435.53 257096.2 4743636.0-2439.5EOFfiJEditDetector-a $DETECTOR_INITIAL-s"-1 addz -6.9"-o $DETECTOReval`JPrintDetector-a $DETECTOR-O SUMMARY`for STRING in ${STRINGS[*]};do set_variable MODULE`getModule-a $DETECTOR-L"$STRING 0"`JEditDetector-a $DETECTOR-M"$MODULE setz -2.9"-o $DETECTORdonecp-p $TRIPOD_INITIAL $TRIPODJAcoustics.sh $DETECTOR_IDcat > acoustics_trigger_parameters txt<< EOFQ=0.0;TMax_s=0.020;numberOfHits=90;EOFJAcousticsEventBuilder.sh $DETECTOR $RUNS[*]INPUT_FILES=(`ls KM3NeT_ ${(l:8::0::0:) DETECTOR_ID}_0 *${^RUNS}_event.root`) cd $WORKDIRif[!$HOMEDIR-ef $WORKDIR];then cp-p $HOMEDIR/$DETECTOR $WORKDIR cp-p $HOMEDIR/$TRIPOD $WORKDIR cp-p $HOMEDIR/${^INPUT_FILES}$WORKDIR cp-p $HOMEDIR/{acoustics_fit_parameters, acoustics_trigger_parameters, disable, hydrophone, mechanics, sound_velocity, tripod, waveform}.txt $WORKDIRfisource $JPP_DIR/examples/JAcoustics/acoustics-fit-toolkit.shtimer_startinitialise stage_1B > &stage log
function stage_1A()
then fatal No hydrophone data file $HYDROPHONE_TXT fi sort gr k
clean eval JPrintDetector a $DETECTOR O IDENTIFIER eval JPrintDetector a $DETECTOR O SUMMARY set_variable STRING
std::vector< T >::difference_type distance(typename std::vector< T >::const_iterator first, typename PhysicsEvent::const_iterator< T > second)
Specialisation of STL distance.
then JLigier sh continue fi cat
Definition: JDAQDriver.sh:51
o $QUALITY_ROOT d $DEBUG!JPlot1D f
Definition: JDataQuality.sh:66
then JShowerPostfit f $INPUT_FILE o $OUTPUT_FILE N
static const double H
Planck constant [eV s].
exit
Definition: JPizza.sh:36
then fatal Number of tripods
Definition: JFootprint.sh:45
function stage_0()
data_type r[M+1]
Definition: JPolint.hh:758
then usage $script< input file > nFor possible input files
Definition: JMechanics.sh:23
then fatal Wrong number of arguments fi set_variable STRING $argv[1] set_variable DETECTORXY_TXT $WORKDIR $DETECTORXY_TXT tail read X Y CHI2 RMS printf optimum n $X $Y $CHI2 $RMS awk v Y
then usage source $script nThis script contains auxiliary functions for the pre calibration of specific detectors nIt should be sourced by the detector specific scripts fi source JAcousticsToolkit sh set_variable WORKDIR pwd set_variable TMPDIR $WORKDIR typeset A TRIPODS typeset a CHI2 set_variable PRECISION set_variable EPSILON set_variable RADIUS_M function initialise()
clean for KEY in pcal ccal tripod transmitter hydrophone
V(JDAQEvent-JTriggerReprocessor)*1.0/(JDAQEvent+1.0e-10)
then fatal Wrong number of arguments fi JConvertDetectorFormat a o
function fixTripods()
then echo Variable JPP_DIR undefined exit fi source $JPP_DIR setenv sh $JPP_DIR &dev null if do_usage *then usage source $script nToolkit for acoustics scripts fi function get_tripods()
then echo
do JCanberra a $DETECTOR f $INPUT_FILE o $WORKDIR canberra[${EMITTER}\] root T $WORKDIR tripod txt V $WORKDIR sound_velocity txt M $WORKDIR mechanics txt H $WORKDIR hydrophone txt E $EMITTER $DISABLE d $DEBUG!done kill_child_processes_at_exit attach getModule a $DETECTOR typeset Z STRING typeset Z FLOOR for STRING in $STRINGS[*]
Definition: JCanberra.sh:68
function stage_1B()
then fatal Invalid string $STRING
then echo Variable JPP_DIR undefined exit fi source $JPP_DIR setenv sh $JPP_DIR &dev null set_variable
Definition: JAcoustics.sh:21
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
do set_variable OUTPUT_DIRECTORY $WORKDIR T
#define ERROR(A)
Definition: JMessage.hh:66
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
function getChi2()
then awk F
* usage
set_array INPUT_FILES argv[2,$((START_INDEX_STRING-1))] set_array STRINGS
do JPlot2D f $WORKDIR detector root
then $DIR JKatoomba a $DETECTOR o $WORKDIR katoomba root T $TRIPOD n sigma_s
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
static const JPBS_t HYDROPHONE(4, 5)
PBS of hydrophone
then if[[!-f $DETECTOR]] then JDetector sh $DETECTOR fi cat $WORKDIR trigger_parameters txt<< EOFtrigger3DMuon.enabled=1;trigger3DMuon.numberOfHits=5;trigger3DMuon.gridAngle_deg=1;ctMin=0.0;TMaxLocal_ns=15.0;EOF set_variable TRIGGEREFFICIENCY_TRIGGERED_EVENTS_ONLY INPUT_FILES=() for((i=1;$i<=$NUMBER_OF_RUNS;++i));do JSirene.sh $DETECTOR $JPP_DATA/genhen.km3net_wpd_V2_0.evt.gz $WORKDIR/sirene_ ${i}.root JTriggerEfficiency.sh $DETECTOR $DETECTOR $WORKDIR/sirene_ ${i}.root $WORKDIR/trigger_efficiency_ ${i}.root $WORKDIR/trigger_parameters.txt $JPP_DATA/PMT_parameters.txt INPUT_FILES+=($WORKDIR/trigger_efficiency_ ${i}.root) done for ANGLE_DEG in $ANGLES_DEG[*];do set_variable SIGMA_NS 3.0 set_variable OUTLIERS 3 set_variable OUTPUT_FILE $WORKDIR/matrix\[${ANGLE_DEG}\deg\].root $JPP_DIR/examples/JReconstruction-f"$INPUT_FILES[*]"-o $OUTPUT_FILE-S ${SIGMA_NS}-A ${ANGLE_DEG}-O ${OUTLIERS}-d ${DEBUG}--!fiif[[$OPTION=="plot"]];then if((0));then for H1 in h0 h1;do JPlot1D-f"$WORKDIR/matrix["${^ANGLES_DEG}" deg].root:${H1}"-y"1 2e3"-Y-L TR-T""-\^"number of events [a.u.]"-> o chi2
Definition: JMatrixNZ.sh:106
esac typeset A BUFFER $JPP_DIR examples JAcoustics JCreep f $INPUT_FILE BUFFER
Definition: JCreep.sh:34
then display $WORKDIR
Definition: plot-Domino.sh:128
function stage_2()
then cp
possible values
then echo Creating output directory
Definition: JTuneHV.sh:83
double u[N+1]
Definition: JPolint.hh:755
function fixStrings()
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
source $JPP_DIR setenv csh $JPP_DIR &dev null eval JShellParser o a A
function stage_3()
script
Definition: JAcoustics.sh:2
then fatal Invalid tripod $TRIPOD
esac $JPP_BIN JLogger sh $LOGGER until pgrep JGetMessage</dev/null > dev null
const JModule & getModule(const JDetector &detector, const JModuleLocation &location)
find module with a given string and floor number
then usage $script< archive >< detectorfile >< run > nGet tripod
esac done
Definition: JAddHDE.sh:21
#define DEBUG(A)
Message macros.
Definition: JMessage.hh:62
function stage_D()