Jpp  17.2.1-pre0
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
plot-waveforms.sh
Go to the documentation of this file.
1 #!/bin/zsh
2 script=${0##*/}
3 
4 if [ -z $JPP_DIR ]; then
5  echo "Variable JPP_DIR undefined."
6  exit
7 fi
8 
9 source $JPP_DIR/setenv.sh $JPP_DIR >& /dev/null
10 
13 set_variable FREQUENCY_HZ $((25.0e6 / 128))
14 set_variable: OPTION GRAPHICS_OPTION
15 set_variable: FORMAT GRAPHICS_FORMAT gif
16 set_variable+ BATCH GRAPHICS_BATCH -B
17 
18 if do_usage $*; then
19  usage "$script (<detector identifier>)+"\
20  "\nAuxiliary script to plot frequency spectra of waveforms for given detector identifier(s)."
21 fi
22 
23 if (( $# == 0 )); then
24  fatal "Wrong number of arguments."
25 fi
26 
27 source JAcousticsToolkit.sh >& /dev/null
28 
29 set_array DETECTORS $argv[1,-1]
30 set_variable ACOUSTICS_WORKDIR $WORKDIR
31 set_variable FORMULA "sin([0] + 6.28 * ([1] + [2]*x) * x)"
32 set_variable DY 1.0e-8
33 
34 
35 mkdir $WORKDIR
36 
37 for DETECTOR in $DETECTORS[*]; do
38 
39  (rm -f $WORKDIR/*.txt) >& /dev/null
40 
41  if [[ $DETECTOR == [0-9][0-9]* ]]; then
42  set_variable ID $DETECTOR
43  set_variable DETECTOR `getDetector -D $ID`
44  else
45  set_variable ID `getDetector -D $DETECTOR`
46  fi
47 
48  JAcoustics.sh $ID >& /dev/null
49 
50  typeset -A WAVEFORMS
51 
52  WAVEFORMS=()
53 
54  get_waveforms $WORKDIR/waveform.txt WAVEFORMS
55 
56  for KEY VALUE in ${(kv)WAVEFORMS}; do
57 
58  if (( $KEY > 0 && $VALUE > 0 )); then
59 
60  wget \
61  --load-cookies=$HOME/.km3netdb_cookie \
62  --secure-protocol=TLSv1_2 \
63  "https://km3netdbweb.in2p3.fr/xmlds/acwavfrm/s?waveformid=${KEY}" \
64  -O $WORKDIR/wv.xml >& /dev/null
65 
66  xmllint $WORKDIR/wv.xml |\
67  awk '/<Description>/,/<\/Description>/ { print gensub("<[^>]*>", "", "g", $0) }' | read DESCRIPTION
68 
69  xmllint $WORKDIR/wv.xml |\
70  awk '/<EncodedSamples>/,/<\/EncodedSamples>/ { print gensub("<[^>]*>", "", "g", $0) }' |\
71  tail -n +2 > $WORKDIR/wv.txt
72 
73 
74  JFFT \
75  -f $WORKDIR/wv.txt \
76  -o $WORKDIR/fft.txt \
77  -B $((1.0e+3 / $FREQUENCY_HZ))
78 
79  JGraph \
80  -f $WORKDIR/fft.txt \
81  -o $WORKDIR/${DETECTOR}\[${VALUE}\].fft.root
82 
83  JPrintQuantiles \
84  -f $WORKDIR/${DETECTOR}\[${VALUE}\].fft.root:\.\* \
85  -Q "0.3 0.7" | read -A RESULT
86 
87  printf "%s %2d %7.3f %7.3f [kHz] \"%s\"\n" $DETECTOR $VALUE $((0.5 * ($RESULT[1] + $RESULT[2]))) $(($RESULT[2] - $RESULT[1])) $DESCRIPTION
88 
89  Y=(`cat $WORKDIR/wv.txt`)
90 
91  rm -f $WORKDIR/graph.txt
92 
93  for (( i = 1; $i <= ${#Y}; ++i )); do
94 
95  X=$((($i - 1) / $FREQUENCY_HZ))
96 
97  echo $X $Y[$i] $DY >> $WORKDIR/graph.txt
98  done
99 
100  JGraph \
101  -f $WORKDIR/graph.txt \
102  -o $WORKDIR/graph.root
103 
104  # refine start values
105 
106  JFit \
107  -f $WORKDIR/graph.root:\.\* \
108  -o $WORKDIR/fit\[${KEY}\].root \
109  -x "0 0.1e-3" \
110  -F "$FORMULA" \
111  -= "p0 = 0.0;" \
112  -@ "p1 = $((1.0e3 * $RESULT[1]));" \
113  -= "p2 = 0.0;" \
114  -d $DEBUG
115 
116  JPrintFit -f $WORKDIR/fit\[${KEY}\].root:\.\* -@ p0 | read -A P0
117  JPrintFit -f $WORKDIR/fit\[${KEY}\].root:\.\* -@ p1 | read -A P1
118  JPrintFit -f $WORKDIR/fit\[${KEY}\].root:\.\* -@ p2 | read -A P2
119 
120  JFit \
121  -f $WORKDIR/graph.root:\.\* \
122  -o $WORKDIR/fit\[${KEY}\].root \
123  -x "0 0.5e-3" \
124  -F "$FORMULA" \
125  -= "p0 = $P0[1];" \
126  -@ "p1 = $P1[1];" \
127  -@ "p2 = $P2[1];" \
128  -d $DEBUG
129 
130  JPrintFit -f $WORKDIR/fit\[${KEY}\].root:\.\* -@ p0 | read -A P0
131  JPrintFit -f $WORKDIR/fit\[${KEY}\].root:\.\* -@ p1 | read -A P1
132  JPrintFit -f $WORKDIR/fit\[${KEY}\].root:\.\* -@ p2 | read -A P2
133 
134  JFit \
135  -f $WORKDIR/graph.root:\.\* \
136  -o $WORKDIR/fit\[${KEY}\].root \
137  -F "$FORMULA" \
138  -= "p0 = $P0[1];" \
139  -@ "p1 = $P1[1];" \
140  -@ "p2 = $P2[1];" \
141  -d $DEBUG
142 
143  JPrintFit -f $WORKDIR/fit\[${KEY}\].root:\.\* -@ p0 | read -A P0
144  JPrintFit -f $WORKDIR/fit\[${KEY}\].root:\.\* -@ p1 | read -A P1
145  JPrintFit -f $WORKDIR/fit\[${KEY}\].root:\.\* -@ p2 | read -A P2
146  JPrintFit -f $WORKDIR/fit\[${KEY}\].root:\.\* -F "GetChisquare/GetNDF" | read CHI2
147 
148  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
149 
150  JPlot1D \
151  -w 1200x600 \
152  -f $WORKDIR/fit\[${KEY}\].root:\.\* \
153  -> "time [s]" \
154  -\^ "amplitude [a.u.]" \
155  -N "X 505" \
156  -L TR \
157  -T "$DETECTOR ($ID)" \
158  -o ${DETECTOR}.${KEY}.$FORMAT $BATCH
159  fi
160  done
161 
162  INPUT_FILES=(`ls $WORKDIR/${DETECTOR}\[*\].fft.root`)
163 
164  JPlot1D \
165  -f${^INPUT_FILES}:\.\* \
166  -x "10 50" \
167  -> "frequency [kHz]" \
168  -\^ "power [a.u.]" \
169  $OPTION \
170  -L TR \
171  -T "$DETECTOR ($ID)" \
172  -o ${DETECTOR}.$FORMAT $BATCH
173 done
174 
175 rm -rf $WORKDIR
then usage $script< detector >< run >< outputfile > fi case set_variable OPTION
Definition: JTuna.sh:26
then usage $script< detector identifier >< startdate\"YYYY-MM-DDHH:MM:SS\"><finaldate\"YYYY-MM-DDHH:MM:SS\"><QA/QCfile> fi case set_variable QAQC_TXT $argv[4]
Definition: JDataMonitor.sh:24
then usage $script< option > nPossible plot
Definition: JMatrixNZ.sh:34
o $QUALITY_ROOT d $DEBUG!JPlot1D f
Definition: JDataQuality.sh:66
usr share Modules init zsh export TMPDIR
exit
Definition: JPizza.sh:36
then echo
then echo Variable JPP_DIR undefined exit fi source $JPP_DIR setenv sh $JPP_DIR &dev null set_variable
Definition: JAcoustics.sh:21
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
* usage
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable TRIPOD $argv[2] set_variable TX $argv[3] set_variable TY $argv[4] if[[!-f $DETECTOR]]
Definition: JFootprint.sh:28
&set_variable FORMULA
then echo Variable JPP_DIR undefined exit fi source $JPP_DIR setenv sh $JPP_DIR set_variable DEBUG set_variable WORKDIR if do_usage *then usage $script(input file)+" fi if (( $ fatal "Invalid number of arguments." fi JCookie.sh set_array INPUT_FILES $argv[1
then display $WORKDIR
Definition: plot-Domino.sh:128
do echo n Creating graphics for string $STRING for((FLOOR=$FIRST_FLOOR;$FLOOR<=$LAST_FLOOR;FLOOR+=1))
set_variable DETECTOR
do set_variable DETECTOR_TXT $WORKDIR detector
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
script
Definition: JAcoustics.sh:2
esac $JPP_BIN JLogger sh $LOGGER until pgrep JGetMessage</dev/null > dev null
#define DEBUG(A)
Message macros.
Definition: JMessage.hh:62