Jpp test-rotations-old-533-g2bdbdb559
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
34
35for DETECTOR in $DETECTORS[*]; do
36
37 if [[ $DETECTOR == [0-9][0-9]* ]]; then
38 set_variable ID $DETECTOR
39 set_variable DETECTOR `getDetector -D $ID`
40 else
41 set_variable ID `getDetector -D $DETECTOR`
42 fi
43
44 rm -f waveform.txt >& /dev/null
45
46 getFile.sh $ARCHIVE $ID 1 waveform waveform
47
48 typeset -A WAVEFORMS
49
50 WAVEFORMS=()
51
52 get_waveforms $WORKDIR/waveform.txt WAVEFORMS
53
54 for KEY VALUE in ${(kv)WAVEFORMS}; do
55
56 if (( $KEY > 0 && $VALUE > 0 )); then
57
58 wget \
59 --load-cookies=$HOME/.km3netdb_cookie \
60 --secure-protocol=TLSv1_2 \
61 "https://km3netdbweb.in2p3.fr/xmlds/acwavfrm/s?waveformid=${KEY}" \
62 -O $WORKDIR/wv.xml >& /dev/null
63
64 xmllint $WORKDIR/wv.xml |\
65 awk '/<Description>/,/<\/Description>/ { print gensub("<[^>]*>", "", "g", $0) }' | read DESCRIPTION
66
67 xmllint $WORKDIR/wv.xml |\
68 awk '/<EncodedSamples>/,/<\/EncodedSamples>/ { print gensub("<[^>]*>", "", "g", $0) }' |\
69 tail -n +2 > $WORKDIR/wv.txt
70
71
72 JFFT \
73 -f $WORKDIR/wv.txt \
74 -o $WORKDIR/fft.txt \
75 -B $((1.0e+3 / $FREQUENCY_HZ))
76
77 JGraph \
78 -f $WORKDIR/fft.txt \
79 -o $WORKDIR/${DETECTOR}\[${VALUE}\].fft.root
80
81 JPrintQuantiles \
82 -f $WORKDIR/${DETECTOR}\[${VALUE}\].fft.root:\.\* \
83 -Q "0.3 0.7" | read -A RESULT
84
85 printf "%s %2d %7.3f %7.3f [kHz] \"%s\"\n" $DETECTOR $VALUE $((0.5 * ($RESULT[1] + $RESULT[2]))) $(($RESULT[2] - $RESULT[1])) $DESCRIPTION
86
87 Y=(`cat $WORKDIR/wv.txt`)
88
89 rm -f $WORKDIR/graph.txt
90
91 for (( i = 1; $i <= ${#Y}; ++i )); do
92
93 X=$((($i - 1) / $FREQUENCY_HZ))
94
95 echo $X $Y[$i] $DY >> $WORKDIR/graph.txt
96 done
97
98 JGraph \
99 -f $WORKDIR/graph.txt \
100 -o $WORKDIR/graph.root
101
102 # refine start values
103
104 JFit \
105 -f $WORKDIR/graph.root:\.\* \
106 -o $WORKDIR/fit\[${KEY}\].root \
107 -x "0 0.1e-3" \
108 -F "$FORMULA" \
109 -= "p0 = 0.0;" \
110 -@ "p1 = $((1.0e3 * $RESULT[1]));" \
111 -= "p2 = 0.0;" \
112 -d $DEBUG
113
114 JPrintFit -f $WORKDIR/fit\[${KEY}\].root:\.\* -@ p0 | read -A P0
115 JPrintFit -f $WORKDIR/fit\[${KEY}\].root:\.\* -@ p1 | read -A P1
116 JPrintFit -f $WORKDIR/fit\[${KEY}\].root:\.\* -@ p2 | read -A P2
117
118 JFit \
119 -f $WORKDIR/graph.root:\.\* \
120 -o $WORKDIR/fit\[${KEY}\].root \
121 -x "0 0.5e-3" \
122 -F "$FORMULA" \
123 -= "p0 = $P0[1];" \
124 -@ "p1 = $P1[1];" \
125 -@ "p2 = $P2[1];" \
126 -d $DEBUG
127
128 JPrintFit -f $WORKDIR/fit\[${KEY}\].root:\.\* -@ p0 | read -A P0
129 JPrintFit -f $WORKDIR/fit\[${KEY}\].root:\.\* -@ p1 | read -A P1
130 JPrintFit -f $WORKDIR/fit\[${KEY}\].root:\.\* -@ p2 | read -A P2
131
132 JFit \
133 -f $WORKDIR/graph.root:\.\* \
134 -o $WORKDIR/fit\[${KEY}\].root \
135 -F "$FORMULA" \
136 -= "p0 = $P0[1];" \
137 -@ "p1 = $P1[1];" \
138 -@ "p2 = $P2[1];" \
139 -d $DEBUG
140
141 JPrintFit -f $WORKDIR/fit\[${KEY}\].root:\.\* -@ p0 | read -A P0
142 JPrintFit -f $WORKDIR/fit\[${KEY}\].root:\.\* -@ p1 | read -A P1
143 JPrintFit -f $WORKDIR/fit\[${KEY}\].root:\.\* -@ p2 | read -A P2
144 JPrintFit -f $WORKDIR/fit\[${KEY}\].root:\.\* -F "GetChisquare/GetNDF" | read CHI2
145
146 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
147 printf "\n"
148
149 JPlot1D \
150 -w 1200x600 \
151 -f $WORKDIR/fit\[${KEY}\].root:\.\* \
152 -> "time [s]" \
153 -\^ "amplitude [a.u.]" \
154 -N "X 505" \
155 -T "$DETECTOR ($ID) $KEY/$VALUE" \
156 -o ${DETECTOR}.${KEY}.$FORMAT $BATCH
157 fi
158 done
159
160 INPUT_FILES=(`ls $WORKDIR/${DETECTOR}\[*\].fft.root`)
161
162 JPlot1D \
163 -f${^INPUT_FILES}:\.\* \
164 -x "10 50" \
165 -> "frequency [kHz]" \
166 -\^ "power [a.u.]" \
167 -CC \
168 -L "TR 0.7" \
169 -T "$DETECTOR ($ID)" \
170 -o ${DETECTOR}.$FORMAT $BATCH
171done