Jpp master_rocky-44-g75b7c4f75
the software that should make you happy
Loading...
Searching...
No Matches
examples/JAcoustics/plot-canberra.sh
Go to the documentation of this file.
1#!/bin/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
13set_variable: DEBUG ACOUSTICS_DEBUG 2
14set_variable: WORKDIR ACOUSTICS_WORKDIR ./
15set_variable FORMULA "[0] * exp(-0.5 * (x-[1])*(x-[1]) / ([2]*[2]))"
16set_variable NUMBER_OF_ENTRIES 100
17set_variable TMIN_MS -1.0
18set_variable TMAX_MS +1.0
19set_variable RANGE 0-18
20set_variable: FORMAT GRAPHICS_FORMAT gif
21set_variable+ BATCH GRAPHICS_BATCH -B
22
23if do_usage $*; then
24 usage "$script <detector file> <input file> [<lower floor>-<upper floor>]"\
25 "\nInput file corresponds to the output of JKatoomba[.sh]."
26fi
27
28case $# in
29 3) set_variable RANGE $argv[3];&
30 2) set_variable DETECTOR $argv[1];
31 set_variable INPUT_FILE $argv[2];;
32 *) fatal "Wrong number of arguments."
33esac
34
35eval `JPrintDetector -a $DETECTOR -O IDENTIFIER`
36eval `JPrintDetector -a $DETECTOR -O SUMMARY`
37
38set_variable FIRST_FLOOR ${RANGE%%-*}
39set_variable LAST_FLOOR ${RANGE##*-}
40
41JAcoustics.sh $DETECTOR_ID
42
43JCanberra.sh $DETECTOR $INPUT_FILE $WORKDIR/canberra\[%\].root
44
45source JAcousticsToolkit.sh
46
47CHECK_EXIT_CODE
48
49typeset -Z 4 STRING
50typeset -Z 2 FLOOR
51
52typeset -A EMITTERS
53
54get_tripods+ $WORKDIR/tripod.txt EMITTERS
55get_transmitters+ $WORKDIR/transmitter.txt EMITTERS
56
57kill_child_processes_at_exit
58
59attach getModule -a $DETECTOR
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
74 for (( FLOOR = $FIRST_FLOOR; $FLOOR <= $LAST_FLOOR; FLOOR += 1 )); do
75
76 sput $STRING $FLOOR
77 sget MODULE
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 rm -f $STRING_TXT
115
116 JGraph \
117 -f $STRING_TXT \
118 -o $STRING_ROOT
119
120 HISTOGRAMS+=(${STRING_ROOT})
121 done
122
123 JPlot1D \
124 -f${^HISTOGRAMS}":.*" \
125 -w 800x400 \
126 -x "-0.5 18.5" \
127 -y "$TMIN_MS $TMAX_MS" \
128 -> "floor" \
129 -\^ "#Deltat [ms]" \
130 -N "X 505" \
131 -T "[$STRING]" \
132 -L TR \
133 -o $WORKDIR/string_${STRING}.$FORMAT $BATCH
134
135 echo " -> $WORKDIR/string_${STRING}.$FORMAT"
136
137 rm -f $HISTOGRAMS[*]
138done
139
140detach
141
142# summary plots
143
144HISTOGRAMS=()
145
146for EMITTER in ${(@k)EMITTERS}; do
147 HISTOGRAMS+=("$WORKDIR/canberra[${EMITTER}].root")
148done
149
150JOpera1D \
151 -f${^HISTOGRAMS}":.*toa" \
152 -u Add \
153 -o $WORKDIR/sum.root >& /dev/null
154
155set_array Q `JPrintQuantiles -f $WORKDIR/sum.root:\.\* -Q "0.33 0.50 0.66"`
156
157JFit \
158 -f $WORKDIR/sum.root:\.\* \
159 -F "$FORMULA" \
160 -@ "p0 = GetMaximum" \
161 -@ "p1 = $Q[2]" \
162 -@ "p2 = 0.5*($Q[3] - $Q[1])" \
163 -o $WORKDIR/fit.root \
164 -d $DEBUG
165
166let "XMIN = $TMIN_MS * 1.0e-3"
167let "XMAX = $TMAX_MS * 1.0e-3"
168
169JPlot1D \
170 -f $WORKDIR/fit.root:\.\* \
171 -> "#Deltat [s]" \
172 -x "$XMIN $XMAX" \
173 -N "X 505" \
174 -T "" \
175 -s 0 \
176 -o $WORKDIR/canberra.$FORMAT $BATCH
177
178rm -f $WORKDIR/sum.root $WORKDIR/fit.root
179rm -f $WORKDIR/p1.{txt,root}
180rm -f $WORKDIR/p2.{txt,root}
181
182for STRING in $STRINGS[*]; do
183 for EMITTER in ${(@k)EMITTERS}; do
184
185 set_variable STRING_TXT
186
187 awk '{ print $2 }' $WORKDIR/string_${STRING}\[${EMITTER}\].txt >> $WORKDIR/p1.txt
188 awk '{ print $3 }' $WORKDIR/string_${STRING}\[${EMITTER}\].txt >> $WORKDIR/p2.txt
189 done
190done
191
192$JPP_DIR/examples/JGizmo/JHistogram1D \
193 -x "200 $TMIN_MS $TMAX_MS" \
194 -f $WORKDIR/p1.txt \
195 -o $WORKDIR/p1.root
196
197$JPP_DIR/examples/JGizmo/JHistogram1D \
198 -x "200 0.0 0.2" \
199 -f $WORKDIR/p2.txt \
200 -o $WORKDIR/p2.root
201
202typeset -A X_LABEL
203
204X_LABEL[p1]="#Deltat [ms]"
205X_LABEL[p2]="#sigma [ms]"
206
207for P in p1 p2; do
208
209 JPlot1D \
210 -f $WORKDIR/${P}.root:\.\* \
211 -> "$X_LABEL[${P}]" \
212 -\^ "number of modules" \
213 -N "X 505" \
214 -T "" \
215 -s 1110 \
216 -o $WORKDIR/${P}.$FORMAT $BATCH
217done
218
219rm -f $WORKDIR/p1.{txt,root}
220rm -f $WORKDIR/p2.{txt,root}