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