Jpp  18.2.1
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: FORMAT GRAPHICS_FORMAT gif
15 set_variable+ BATCH GRAPHICS_BATCH -B
16 
17 if do_usage $*; then
18  usage "$script (<detector identifier>)+"\
19  "\nAuxiliary script to plot frequency spectra of waveforms for given detector identifier(s)."
20 fi
21 
22 if (( $# == 0 )); then
23  fatal "Wrong number of arguments."
24 fi
25 
26 source JAcousticsToolkit.sh >& /dev/null
27 
28 set_array DETECTORS $argv[1,-1]
29 set_variable ACOUSTICS_WORKDIR $WORKDIR
30 set_variable FORMULA "sin([0] + 2*$PI * ([1] + [2]*x) * x)"
31 set_variable DY 1.0e-8
32 
33 
34 mkdir $WORKDIR
35 
36 for 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
172 done
173 
174 rm -rf $WORKDIR
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!CHECK_EXIT_CODE JPlot1D f
Definition: JDataQuality.sh:76
usr share Modules init zsh export TMPDIR
exit
Definition: JPizza.sh:36
then
Definition: datalogs.sh:31
then rm
Definition: sftpput.zsh:30
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
fi set_variable FILENAME $WORKDIR
Definition: datalogs.sh:34
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 echo
Definition: JQAQC.sh:90
then usage $script(input file)+< output file >" fi if (( $ fatal "Wrong number of arguments." fi set_array INPUT_FILES $argv[1
static JNullStream null
Null I/O stream.
Definition: JNullStream.hh:51
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
#define DEBUG(A)
Message macros.
Definition: JMessage.hh:62