Jpp 19.3.0-rc.1
the software that should make you happy
Loading...
Searching...
No Matches
hydrophone-phi:fit.sh
Go to the documentation of this file.
1#!/usr/bin/env zsh
2script=${0##*/}
3
4if [ -z $JPP_DIR ]; then
5 echo "Variable JPP_DIR undefined."
6 exit
7fi
8
9source $JPP_DIR/setenv.sh $JPP_DIR >& /dev/null
10
11set_variable: DEBUG ACOUSTICS_DEBUG 2
12set_variable: WORKDIR ACOUSTICS_WORKDIR ./
13set_variable+ ALIGN ACOUSTICS_ALIGN Y
14set_variable FORMULA "[0] + [1]*(sqrt(1.0 + 0.5*(x-[2])*(x-[2])/([3]*[3])) - 1.0)"
15set_variable: FORMAT GRAPHICS_FORMAT gif
16set_variable+ BATCH GRAPHICS_BATCH -B
17
18if do_usage $*; then
19 usage "$script <string identifier> [<hydrophone file>]"
20fi
21
22if (( $# == 0 || $# > 2 )); then
23 fatal "Wrong number of arguments."
24fi
25
26set_variable STRING $argv[1]
27
28set_variable HYDROPHONE_TXT $WORKDIR/hydrophonephi_${STRING}.txt
29set_variable HYDROPHONE_ROOT $WORKDIR/hydrophonephi_${STRING}.root
30
31if [[ ! -f $HYDROPHONE_TXT ]]; then
32 fatal "No hydrophone data file $HYDROPHONE_TXT."
33fi
34
35sort -gr -k 2,2 $HYDROPHONE_TXT | tail -1 | read X Y
36
37if [[ "$ALIGN" == "Y" ]]; then
38
39 echo "Apply alignment."
40
41 awk -v X=$X 'BEGIN { PI = atan2(0.0,-1.0) } { \
42 x=($1 - X); \
43 if (x < -PI) { x += 2*PI };
44 if (x > +PI) { x -= 2*PI };
45 printf "%7.3f %12.5f\n", x, $2 \
46 } ' $HYDROPHONE_TXT > ${TMPDIR:-/tmp}/hydrophone.txt
47
48 X1=0.0
49else
50
51 cp $HYDROPHONE_TXT ${TMPDIR:-/tmp}/hydrophone.txt
52
53 X1=$X
54 X=0.0
55fi
56
57JGraph \
58 -f ${TMPDIR:-/tmp}/hydrophone.txt \
59 -o $HYDROPHONE_ROOT
60
61let "XMIN = $X1 - 0.35"
62let "XMAX = $X1 + 0.35"
63
64JFit \
65 -f ${HYDROPHONE_ROOT}:\.\* \
66 -o $WORKDIR/fit.root \
67 -F "$FORMULA" \
68 -x "$XMIN $XMAX" \
69 -@"p0 = $Y" \
70 -@"p1 = 1.0" \
71 -@"p2 = $X1" \
72 -@"p3 = 0.4" \
73 -d $DEBUG
74
75set_array P2 `JPrintFit -f $WORKDIR/fit.root:\.\* -@p2`
76
77P2[1]=$(($P2[1] + $X))
78
79printf "result %10.5f +/- %10.5f [rad]\n" $P2[1] $P2[2]
80printf "result %10.3f +/- %10.3f [deg]\n" $(($P2[1] * 180.0 / 3.1415)) $(($P2[2] * 180.0 / 3.1415))
81
82if (( $# == 2 )); then
83
84 set_variable HYDROPHONE $2
85 set_variable PHI $P2[1]
86
87 JEditHydrophone -f $HYDROPHONE -S "$STRING rot $PHI" -o $HYDROPHONE
88fi
89
90mv $WORKDIR/fit.root $HYDROPHONE_ROOT
91
92typeset -Z 4 STRING
93
94JPlot1D \
95 -f ${HYDROPHONE_ROOT}:\.\* \
96 -> "#phi [rad]" \
97 -\^ "RMS [ms]" \
98 -T "[$STRING]" \
99 -o $WORKDIR/hydrophonephi_${STRING}.$FORMAT $BATCH
100
101rm -f $HYDROPHONE_ROOT
102rm -f ${TMPDIR:-/tmp}/hydrophone.txt