Jpp test-rotations-new
the software that should make you happy
Loading...
Searching...
No Matches
module-Z:fit.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
11set_variable: DEBUG ACOUSTICS_DEBUG 2
12set_variable: WORKDIR ACOUSTICS_WORKDIR ./
13#set_variable FORMULA "[0] + [1] * log(1.0 + 0.5*(x-[2])*(x-[2])/([3]*[3]))"
14set_variable FORMULA "[0] + [1] * ((x-[2])*(x-[2])/([3]*[3]))"
15set_variable MINIMAL_DZ 0.01
16set_variable: FORMAT GRAPHICS_FORMAT gif
17set_variable+ BATCH GRAPHICS_BATCH -B
18
19if do_usage $*; then
20 usage "$script <string identifier> <floor[-floor]> [<detector file>]"
21fi
22
23if (( $# < 2 || $# > 3 )); then
24 fatal "Wrong number of arguments."
25fi
26
27set_variable STRING $argv[1]
28set_variable FLOORS $argv[2]
29
30for (( FLOOR = ${FLOORS%%-*}; $FLOOR <= ${FLOORS##*-}; FLOOR += 1 )); do
31
32 typeset -Z 0 STRING
33 typeset -Z 0 FLOOR
34
35 set_variable MODULE_TXT $WORKDIR/modulez_${STRING}_${FLOOR}.txt
36 set_variable MODULE_ROOT $WORKDIR/modulez_${STRING}_${FLOOR}.root
37 set_variable G1_TXT $WORKDIR/g1.txt
38 set_variable G1_ROOT $WORKDIR/g1.root
39
40 if [[ ! -f $MODULE_TXT ]] then
41 fatal "No file $MODULE_TXT."
42 fi
43
44 JGraph \
45 -f $MODULE_TXT \
46 -o $MODULE_ROOT
47
48 sort -g -k 2,2 $MODULE_TXT | tail -1 | read X ZMAX RMS
49 sort -gr -k 2,2 $MODULE_TXT | tail -1 | read X ZMIN RMS
50
51 echo $X $ZMIN > $G1_TXT;
52
53 JGraph \
54 -f $G1_TXT \
55 -o $G1_ROOT
56
57 awk '
58 BEGIN {
59 XMIN = +1e3
60 XMAX = -1e3
61 }
62 END { print XMIN, XMAX }
63 {
64 if ( $1 < XMIN ) { XMIN = $1 }
65 if ( $1 > XMAX ) { XMAX = $1 }
66 }
67 ' $MODULE_TXT | read XMIN XMAX
68
69 if (( $X > $XMIN && $X < $XMAX )); then
70
71 let "DZ = 0.5*($ZMAX - $ZMIN)"
72
73 if (( $ZMAX - $ZMIN < $MINIMAL_DZ )); then
74 set_variable OPTION "-= p1 = 0.0; p2 = 0.0; p3 = 1.0"
75 else
76 set_variable OPTION
77 fi
78
79 JFit \
80 -f ${MODULE_ROOT}:\.\* \
81 -o $WORKDIR/fit.root \
82 -F "$FORMULA" \
83 -@ "p0 = $ZMIN" \
84 -@ "p1 = $DZ" \
85 -@ "p2 = $X" \
86 -@ "p3 = 0.15" \
87 "$OPTION" \
88 -d $DEBUG
89
90 set_array P2 `JPrintFit -f $WORKDIR/fit.root:\.\* -@p2`
91
92 set_variable X $P2[1]
93
94 printf "nominal %4d %2d %7.3f %7.3f\n" $STRING $FLOOR 0.0 `JPrintFit -f $WORKDIR/fit.root:\.\* -x "0.0"`
95 printf "optimal %4d %2d %7.3f %7.3f\n" $STRING $FLOOR $X `JPrintFit -f $WORKDIR/fit.root:\.\* -x "$X"`
96
97 mv $WORKDIR/fit.root $MODULE_ROOT
98
99 else
100
101 echo "Optimum value at limit; -> no fit."
102 printf "nominal %4d %2d %7.3f %7.3f\n" $STRING $FLOOR 0.0 `awk -v X=0.0 '{ if ($1 == X) { print $2 }}' $MODULE_TXT`
103 printf "optimal %4d %2d %7.3f %7.3f\n" $STRING $FLOOR $X $ZMIN
104
105 fi
106
107 if (( $# == 3 )); then
108
109 set_variable DETECTOR $argv[3]
110
111 if (( $ZMAX - $ZMIN >= $MINIMAL_DZ )); then
112
113 set_variable MODULE `getModule -a $DETECTOR -L "$STRING $FLOOR"`
114
115 JEditDetector -a $DETECTOR -M "$MODULE add 0.0 0.0 $X" -o $DETECTOR
116
117 else
118 echo "No update of detector $DETECTOR; z-range ($ZMAX-$ZMIN) < $MINIMAL_DZ."
119 fi
120 fi
121
122 typeset -Z 4 STRING
123 typeset -Z 2 FLOOR
124
125 JPlot1D \
126 -f ${MODULE_ROOT}:\.\* \
127 -f ${G1_ROOT}:\.\* \
128 -> "#Deltaz [m]" \
129 -\^ "#chi^{2}/NDF" \
130 -N "X 505" \
131 -T "($STRING,$FLOOR)" \
132 -o $WORKDIR/modulez_${STRING}_${FLOOR}.$FORMAT $BATCH
133
134 rm -f $MODULE_ROOT $G1_TXT $G1_ROOT
135
136done
137
138if [[ "$FLOORS" == "1-18" ]]; then
139
140 echo -n "Creating graphics for string $STRING.."
141
142 montage \
143 -tile 6x3 \
144 -geometry +0+0 \
145 $WORKDIR/modulez_${STRING}_*.$FORMAT \
146 $WORKDIR/modulez_${STRING}.$FORMAT >& /dev/null
147
148 echo " -> $WORKDIR/modulez_${STRING}.$FORMAT"
149
150 rm -f $WORKDIR/modulez_${STRING}_*.$FORMAT
151
152fi