Jpp test-rotations-old
the software that should make you happy
Loading...
Searching...
No Matches
examples/JAcoustics/plot-canberra.sh
Go to the documentation of this file.
1#!/usr/bin/env zsh
2script=${0##*/}
3
4zmodload zsh/mathfunc
5
6if [ -z $JPP_DIR ]; then
7 echo "Variable JPP_DIR undefined."
8 exit
9fi
10
11source $JPP_DIR/setenv.sh $JPP_DIR >& /dev/null
12
13zmodload zsh/mathfunc
14
15set_variable: DEBUG ACOUSTICS_DEBUG 2
16set_variable: WORKDIR ACOUSTICS_WORKDIR ./
17set_variable FORMULA "[0] * exp(-0.5 * (x-[1])*(x-[1]) / ([2]*[2]))"
18set_variable NUMBER_OF_ENTRIES 100
19set_variable TMIN_MS -1.0
20set_variable TMAX_MS +1.0
21set_variable RANGE 0-18
22set_variable: FORMAT GRAPHICS_FORMAT gif
23set_variable+ BATCH GRAPHICS_BATCH -B
24
25if do_usage $*; then
26 usage "$script <detector file> <input file> [<lower floor>-<upper floor>]"\
27 "\nInput file corresponds to the output of JKatoomba[.sh]."
28fi
29
30case $# in
31 3) set_variable RANGE $argv[3];&
32 2) set_variable DETECTOR $argv[1];
33 set_variable INPUT_FILE $argv[2];;
34 *) fatal "Wrong number of arguments."
35esac
36
37eval `JPrintDetector -a $DETECTOR -O IDENTIFIER`
38eval `JPrintDetector -a $DETECTOR -O SUMMARY`
39
40set_variable FIRST_FLOOR ${RANGE%%-*}
41set_variable LAST_FLOOR ${RANGE##*-}
42
43JAcoustics.sh $DETECTOR_ID
44
45JCanberra.sh $DETECTOR $INPUT_FILE $WORKDIR/canberra\[%\].root
46
47source JAcousticsToolkit.sh
48
49CHECK_EXIT_CODE
50
51typeset -Z 4 STRING
52typeset -Z 2 FLOOR
53
54typeset -A EMITTERS
55
56get_tripods+ $WORKDIR/tripod.txt EMITTERS
57get_transmitters+ $WORKDIR/transmitter.txt EMITTERS
58
59
60
61for STRING in $STRINGS[*]; do
62
63 echo -n "Creating graphics for string $STRING.."
64
65 HISTOGRAMS=()
66
67 for EMITTER in ${(@k)EMITTERS}; do
68
69 set_variable STRING_TXT $WORKDIR/string_${STRING}\[${EMITTER}\].txt
70 set_variable STRING_ROOT $WORKDIR/string_${STRING}\[${EMITTER}\].root
71
72 rm -f $STRING_TXT
73 rm -f $STRING_ROOT
74
75 for (( FLOOR = $FIRST_FLOOR; $FLOOR <= $LAST_FLOOR; FLOOR += 1 )); do
76
77 eval MODULE=\${STRING_${(l:4::0::0:)STRING}\[$(($FLOOR))\]:--1}
78
79 set_variable N `JPrintResult -f $WORKDIR/canberra\[$EMITTER\].root:${MODULE} -F GetEntries`
80
81 if [[ -n "$N" ]] && (( $N >= $NUMBER_OF_ENTRIES )); then
82
83 set_array Q `JPrintQuantiles -f $WORKDIR/canberra\[$EMITTER\].root:${MODULE} -Q "0.33 0.50 0.66"`
84
85 let "XMIN = $Q[2] - 5.0*($Q[3] - $Q[1])"
86 let "XMAX = $Q[2] + 5.0*($Q[3] - $Q[1])"
87
88 JFit \
89 -f $WORKDIR/canberra\[$EMITTER\].root:${MODULE} \
90 -F "$FORMULA" \
91 -@ "p0 = GetMaximum" \
92 -@ "p1 = $Q[2]" \
93 -@ "p2 = 0.5*($Q[3] - $Q[1])" \
94 -x "$XMIN $XMAX" \
95 -O L \
96 -o $WORKDIR/fit.root \
97 -d $DEBUG
98
99 if ( `JPrintFit -f $WORKDIR/fit.root:\.\* -@p0 >& /dev/null` ); then
100
101 set_array P1 `JPrintFit -f $WORKDIR/fit.root:\.\* -@p1`
102 set_array P2 `JPrintFit -f $WORKDIR/fit.root:\.\* -@p2`
103
104 ((P1[1] = $P1[1] * 1.0e3)) # [ms]
105 ((P2[1] = abs($P2[1]) * 1.0e3)) # [ms]
106
107 printf "%2d %9.6f %9.6f\n" $FLOOR $P1[1] $P2[1] >> $STRING_TXT
108 fi
109
110 rm -f $WORKDIR/fit.root
111 fi
112 done
113
114 JGraph \
115 -f $STRING_TXT \
116 -o $STRING_ROOT
117
118 HISTOGRAMS+=(${STRING_ROOT})
119 done
120
121 JPlot1D \
122 -f${^HISTOGRAMS}":.*" \
123 -w 800x400 \
124 -x "-0.5 18.5" \
125 -y "$TMIN_MS $TMAX_MS" \
126 -> "floor" \
127 -\^ "#Deltat [ms]" \
128 -N "X 505" \
129 -T "[$STRING]" \
130 -L TR \
131 -o $WORKDIR/string_${STRING}.$FORMAT $BATCH
132
133 echo " -> $WORKDIR/string_${STRING}.$FORMAT"
134
135 rm -f $HISTOGRAMS[*]
136done
137
138
139# summary plots
140
141HISTOGRAMS=()
142
143for EMITTER in ${(@k)EMITTERS}; do
144 HISTOGRAMS+=("$WORKDIR/canberra[${EMITTER}].root")
145done
146
147JOpera1D \
148 -f${^HISTOGRAMS}":.*toa" \
149 -u Add \
150 -o $WORKDIR/sum.root >& /dev/null
151
152set_array Q `JPrintQuantiles -f $WORKDIR/sum.root:\.\* -Q "0.33 0.50 0.66"`
153
154JFit \
155 -f $WORKDIR/sum.root:\.\* \
156 -F "$FORMULA" \
157 -@ "p0 = GetMaximum" \
158 -@ "p1 = $Q[2]" \
159 -@ "p2 = 0.5*($Q[3] - $Q[1])" \
160 -o $WORKDIR/fit.root \
161 -d $DEBUG
162
163let "XMIN = $TMIN_MS * 1.0e-3"
164let "XMAX = $TMAX_MS * 1.0e-3"
165
166JPlot1D \
167 -f $WORKDIR/fit.root:\.\* \
168 -> "#Deltat [s]" \
169 -x "$XMIN $XMAX" \
170 -N "X 505" \
171 -T "" \
172 -s 0 \
173 -o $WORKDIR/canberra.$FORMAT $BATCH
174
175rm -f $WORKDIR/sum.root $WORKDIR/fit.root
176rm -f $WORKDIR/p1.{txt,root}
177rm -f $WORKDIR/p2.{txt,root}
178
179for STRING in $STRINGS[*]; do
180 for EMITTER in ${(@k)EMITTERS}; do
181
182 set_variable STRING_TXT
183
184 awk '{ print $2 }' $WORKDIR/string_${STRING}\[${EMITTER}\].txt >> $WORKDIR/p1.txt
185 awk '{ print $3 }' $WORKDIR/string_${STRING}\[${EMITTER}\].txt >> $WORKDIR/p2.txt
186 done
187done
188
189$JPP_DIR/examples/JGizmo/JHistogram1D \
190 -x "200 $TMIN_MS $TMAX_MS" \
191 -f $WORKDIR/p1.txt \
192 -o $WORKDIR/p1.root
193
194$JPP_DIR/examples/JGizmo/JHistogram1D \
195 -x "200 0.0 0.2" \
196 -f $WORKDIR/p2.txt \
197 -o $WORKDIR/p2.root
198
199typeset -A X_LABEL
200
201X_LABEL[p1]="#Deltat [ms]"
202X_LABEL[p2]="#sigma [ms]"
203
204for P in p1 p2; do
205
206 JPlot1D \
207 -f $WORKDIR/${P}.root:\.\* \
208 -> "$X_LABEL[${P}]" \
209 -\^ "number of modules" \
210 -N "X 505" \
211 -T "" \
212 -s 1110 \
213 -o $WORKDIR/${P}.$FORMAT $BATCH
214done
215
216rm -f $WORKDIR/p1.{txt,root}
217rm -f $WORKDIR/p2.{txt,root}