Jpp test-rotations-new
the software that should make you happy
Loading...
Searching...
No Matches
plot-waveforms.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 0
12set_variable WORKDIR ${TMPDIR:-/tmp}/.$$
13set_variable FREQUENCY_HZ $((25.0e6 / 128))
14set_variable: FORMAT GRAPHICS_FORMAT gif
15set_variable+ BATCH GRAPHICS_BATCH -B
16
17if do_usage $*; then
18 usage "$script (<detector identifier>)+"\
19 "\nAuxiliary script to plot frequency spectra of waveforms for given detector identifier(s)."
20fi
21
22if (( $# == 0 )); then
23 fatal "Wrong number of arguments."
24fi
25
26source JAcousticsToolkit.sh >& /dev/null
27
28set_array DETECTORS $argv[1,-1]
29set_variable ACOUSTICS_WORKDIR $WORKDIR
30set_variable FORMULA "sin([0] + 2*$PI * ([1] + [2]*x) * x)"
31set_variable DY 1.0e-8
32
33
34mkdir $WORKDIR
35
36for DETECTOR in $DETECTORS[*]; do
37
38 (rm -f $WORKDIR/*.txt) >& /dev/null
39
40 if [[ $DETECTOR == [0-9][0-9]* ]]; then
41 set_variable ID $DETECTOR
42 set_variable DETECTOR `getDetector -D $ID`
43 else
44 set_variable ID `getDetector -D $DETECTOR`
45 fi
46
47 JAcoustics.sh $ID >& /dev/null
48
49 typeset -A WAVEFORMS
50
51 WAVEFORMS=()
52
53 get_waveforms $WORKDIR/waveform.txt WAVEFORMS
54
55 for KEY VALUE in ${(kv)WAVEFORMS}; do
56
57 if (( $KEY > 0 && $VALUE > 0 )); then
58
59 wget \
60 --load-cookies=$HOME/.km3netdb_cookie \
61 --secure-protocol=TLSv1_2 \
62 "https://km3netdbweb.in2p3.fr/xmlds/acwavfrm/s?waveformid=${KEY}" \
63 -O $WORKDIR/wv.xml >& /dev/null
64
65 xmllint $WORKDIR/wv.xml |\
66 awk '/<Description>/,/<\/Description>/ { print gensub("<[^>]*>", "", "g", $0) }' | read DESCRIPTION
67
68 xmllint $WORKDIR/wv.xml |\
69 awk '/<EncodedSamples>/,/<\/EncodedSamples>/ { print gensub("<[^>]*>", "", "g", $0) }' |\
70 tail -n +2 > $WORKDIR/wv.txt
71
72
73 JFFT \
74 -f $WORKDIR/wv.txt \
75 -o $WORKDIR/fft.txt \
76 -B $((1.0e+3 / $FREQUENCY_HZ))
77
78 JGraph \
79 -f $WORKDIR/fft.txt \
80 -o $WORKDIR/${DETECTOR}\[${VALUE}\].fft.root
81
82 JPrintQuantiles \
83 -f $WORKDIR/${DETECTOR}\[${VALUE}\].fft.root:\.\* \
84 -Q "0.3 0.7" | read -A RESULT
85
86 printf "%s %2d %7.3f %7.3f [kHz] \"%s\"\n" $DETECTOR $VALUE $((0.5 * ($RESULT[1] + $RESULT[2]))) $(($RESULT[2] - $RESULT[1])) $DESCRIPTION
87
88 Y=(`cat $WORKDIR/wv.txt`)
89
90 rm -f $WORKDIR/graph.txt
91
92 for (( i = 1; $i <= ${#Y}; ++i )); do
93
94 X=$((($i - 1) / $FREQUENCY_HZ))
95
96 echo $X $Y[$i] $DY >> $WORKDIR/graph.txt
97 done
98
99 JGraph \
100 -f $WORKDIR/graph.txt \
101 -o $WORKDIR/graph.root
102
103 # refine start values
104
105 JFit \
106 -f $WORKDIR/graph.root:\.\* \
107 -o $WORKDIR/fit\[${KEY}\].root \
108 -x "0 0.1e-3" \
109 -F "$FORMULA" \
110 -= "p0 = 0.0;" \
111 -@ "p1 = $((1.0e3 * $RESULT[1]));" \
112 -= "p2 = 0.0;" \
113 -d $DEBUG
114
115 JPrintFit -f $WORKDIR/fit\[${KEY}\].root:\.\* -@ p0 | read -A P0
116 JPrintFit -f $WORKDIR/fit\[${KEY}\].root:\.\* -@ p1 | read -A P1
117 JPrintFit -f $WORKDIR/fit\[${KEY}\].root:\.\* -@ p2 | read -A P2
118
119 JFit \
120 -f $WORKDIR/graph.root:\.\* \
121 -o $WORKDIR/fit\[${KEY}\].root \
122 -x "0 0.5e-3" \
123 -F "$FORMULA" \
124 -= "p0 = $P0[1];" \
125 -@ "p1 = $P1[1];" \
126 -@ "p2 = $P2[1];" \
127 -d $DEBUG
128
129 JPrintFit -f $WORKDIR/fit\[${KEY}\].root:\.\* -@ p0 | read -A P0
130 JPrintFit -f $WORKDIR/fit\[${KEY}\].root:\.\* -@ p1 | read -A P1
131 JPrintFit -f $WORKDIR/fit\[${KEY}\].root:\.\* -@ p2 | read -A P2
132
133 JFit \
134 -f $WORKDIR/graph.root:\.\* \
135 -o $WORKDIR/fit\[${KEY}\].root \
136 -F "$FORMULA" \
137 -= "p0 = $P0[1];" \
138 -@ "p1 = $P1[1];" \
139 -@ "p2 = $P2[1];" \
140 -d $DEBUG
141
142 JPrintFit -f $WORKDIR/fit\[${KEY}\].root:\.\* -@ p0 | read -A P0
143 JPrintFit -f $WORKDIR/fit\[${KEY}\].root:\.\* -@ p1 | read -A P1
144 JPrintFit -f $WORKDIR/fit\[${KEY}\].root:\.\* -@ p2 | read -A P2
145 JPrintFit -f $WORKDIR/fit\[${KEY}\].root:\.\* -F "GetChisquare/GetNDF" | read CHI2
146
147 printf "%s %2d %7.3f [kHz] %9.3f [kHz/s] %12.3e\n" $DETECTOR $KEY $((1.0e-3 * $P1[1])) $((1.0e-3 * $P2[1])) $CHI2
148
149 JPlot1D \
150 -w 1200x600 \
151 -f $WORKDIR/fit\[${KEY}\].root:\.\* \
152 -> "time [s]" \
153 -\^ "amplitude [a.u.]" \
154 -N "X 505" \
155 -L TR \
156 -T "$DETECTOR ($ID)" \
157 -o ${DETECTOR}.${KEY}.$FORMAT $BATCH
158 fi
159 done
160
161 INPUT_FILES=(`ls $WORKDIR/${DETECTOR}\[*\].fft.root`)
162
163 JPlot1D \
164 -f${^INPUT_FILES}:\.\* \
165 -x "10 50" \
166 -> "frequency [kHz]" \
167 -\^ "power [a.u.]" \
168 -CC \
169 -L TR \
170 -T "$DETECTOR ($ID)" \
171 -o ${DETECTOR}.$FORMAT $BATCH
172done
173
174rm -rf $WORKDIR