Jpp 20.0.0-rc.8
the software that should make you happy
Loading...
Searching...
No Matches
plot-perth.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
11zmodload zsh/mathfunc
12
13set_variable DEBUG 2
14set_variable WORKDIR ${TMPDIR:-/tmp}/
15set_variable: PRECISION RECONSTRUCTION_PRECISION 0.1
16set_variable: FORMAT GRAPHICS_FORMAT gif
17set_variable+ BATCH GRAPHICS_BATCH -B
18
19if do_usage $*; then
20 usage "$script <input file>"\
21 "\nThe input file corresponds to the log file of JPerth."
22fi
23
24if (( $# != 1 )); then
25 fatal "Wrong number of arguments."
26fi
27
28set_variable INPUT_FILE $1
29
30grep "\‍(chi2\[.\]\|gradient\‍)" $INPUT_FILE > $WORKDIR/perth.txt
31
32OUTPUT_FILES=()
33
34awk '/chi2\[.\]/ { printf "%5d %9.5f\n", NR, -$3 }' $WORKDIR/perth.txt > $WORKDIR/g1.txt
35awk '/gradient/ { printf "%5d %9.5f\n", NR, $2 }' $WORKDIR/perth.txt > $WORKDIR/g2.txt
36
37JGraph \
38 -f $WORKDIR/g1.txt \
39 -o $WORKDIR/g1.root \
40 -T $TITLE
41
42awk 'BEGIN { XMAX = -1.0e10; XMIN = +1.0e10 } END { printf "%9.5f %9.5f", XMIN, XMAX} { if ($1 < XMIN) { XMIN = $1 }; if ($1 > XMAX) { XMAX = $1 }}' $WORKDIR/g1.txt | read XMIN XMAX
43awk 'BEGIN { YMAX = -1.0e10; YMIN = +1.0e10 } END { printf "%9.5f %9.5f", YMIN, YMAX} { if ($2 < YMIN) { YMIN = $2 }; if ($2 > YMAX) { YMAX = $2 }}' $WORKDIR/g1.txt | read YMIN YMAX
44
45let "XMIN -= 1.0"
46let "XMAX += 1.0"
47
48let "Y = $YMAX - $YMIN"
49let "YMAX = floor(($YMAX + 0.1 * ($Y)) / $PRECISION + 1.0) * $PRECISION"
50let "YMIN = floor(($YMIN - 0.1 * ($Y)) / $PRECISION - 0.0) * $PRECISION"
51
52OUTPUT_FILES+=$WORKDIR/g1.root
53
54awk \
55 -v YMIN=$YMIN \
56 -v YMAX=$YMAX \
57 '/gradient/ { printf "%5d %9.5f %5d %9.5f\n", NR, YMIN, NR, YMAX }' $WORKDIR/perth.txt > $WORKDIR/L1.txt
58
59JLine \
60 -p $WORKDIR/L1.txt \
61 -o $WORKDIR/L1.root \
62 -@ "width = 1" \
63 -@ "style = 2"
64
65OUTPUT_FILES+=$WORKDIR/L1.root
66
67JPlot1D \
68 -w 1200x600 \
69 -f${^OUTPUT_FILES}":.*" \
70 -> "step" \
71 -\^ "likelihood" \
72 -x "$XMIN $XMAX" \
73 -y "$YMIN $YMAX" \
74 -N "X 505" \
75 -G Y \
76 -S 0.5 \
77 -T "${${INPUT_FILE:t}:r}" \
78 -o likelihood.$FORMAT $BATCH
79
80JGraph \
81 -f $WORKDIR/g2.txt \
82 -o $WORKDIR/g2.root \
83 -T $TITLE
84
85awk 'BEGIN { YMAX = -1.0e10; YMIN = +1.0e10 } END { printf "%9.5f %9.5f", YMIN, YMAX} { if ($2 < YMIN) { YMIN = $2 }; if ($2 > YMAX) { YMAX = $2 }}' $WORKDIR/g2.txt | read YMIN YMAX
86
87let "Y = $YMAX - $YMIN"
88let "YMAX = floor(($YMAX + 0.1 * ($Y)) / $PRECISION + 1.0) * $PRECISION"
89let "YMIN = 0.0"
90
91JPlot1D \
92 -w 1200x600 \
93 -f $WORKDIR/g2.root:\.\* \
94 -> "step" \
95 -\^ "|gradient|" \
96 -x "$XMIN $XMAX" \
97 -y "$YMIN $YMAX" \
98 -N "X 505" \
99 -G Y \
100 -S 0.5 \
101 -T "${${INPUT_FILE:t}:r}" \
102 -o gradient.$FORMAT $BATCH
103
104rm -f $WORKDIR/perth.txt $WORKDIR/{g1,g2,L1}.{txt,root}