4source $JPP_DIR/setenv.sh $JPP_DIR >& /dev/null
5source $JPP_BIN/gradient.sh
7set_variable: DEBUG SCRIPTS_DEBUG 3
10 usage "$script [number of tests]"
14 set_variable NUMBER_OF_TESTS $1
16 set_variable NUMBER_OF_TESTS 0
31 let "u = ($1 - $2) / $3"
33 echo $(( $4 * exp(-0.5*u*u) / (sqrt(2.0*$PI) * $3) + $5 ))
40typeset -A DATA # (x,y) values
44# Generate random data according true parameters.
50 for (( X = -5.0; $X <= +5.0; X += 0.5 )); do
52 let "Y = `gauss $X $TRUE_MEAN $TRUE_SIGMA $TRUE_SIGNAL $TRUE_BACKGROUND`"
54 DATA[$X]=`$JPP_DIR/examples/JMath/getPoisson -e $Y`
62# The function is evaluated using parameters MEAN, SIGMA, SIGNAL and BACKGROUND.
64# \param 1 variable containing chi2 value on return
71 for X Y in ${(kv)DATA}; do
73 let "F = `gauss $X $MEAN $SIGMA $SIGNAL $BACKGROUND`"
74 let "DY = ($F - $Y) * ($F - $Y)"
94let "TRUE_SIGNAL = 1000.0"
95let "TRUE_BACKGROUND = 10.0"
103 for KEY in MEAN SIGMA SIGNAL BACKGROUND; do
106 set_variable P2 TRUE_$KEY
108 printf "%-12s %12.3f (fit) %12.3f (true)\n" $KEY ${(P)P1} ${(P)P2}
113if (( $NUMBER_OF_TESTS == 0 )); then
134 PARAMETERS['let "MEAN += %"']=1.0e-2
135 PARAMETERS['let "SIGMA += %"']=1.0e-2
136 PARAMETERS['let "SIGNAL += %"']=5.0e-0
137 PARAMETERS['let "BACKGROUND += %"']=5.0e-1
144 let "BACKGROUND = 0.0"
148 printf "chi2/NDF %12.5f (fit) (gradient)\n" $(($Y1 / (${#DATA} - ${#PARAMETERS})))
152 printf "chi2/NDF %12.5f (fit) (simplex) \n" $(($Y1 / (${#DATA} - ${#PARAMETERS})))
156 let "MEAN = $TRUE_MEAN"
157 let "SIGMA = $TRUE_SIGMA"
158 let "SIGNAL = $TRUE_SIGNAL"
159 let "BACKGROUND = $TRUE_BACKGROUND"
163 printf "chi2/NDF %12.5f (fit) %12.5f (true)\n" $(($Y1 / (${#DATA} - ${#PARAMETERS}))) $(($Y2 / ${#DATA}))
167 set_variable: DEBUG SCRIPTS_DEBUG 1
170 let "CHI2_TRUE = 0.0"
172 for (( m = 0; $m != $NUMBER_OF_TESTS; ++m )); do
180 PARAMETERS['let "MEAN += %"']=1.0e-2
181 PARAMETERS['let "SIGMA += %"']=1.0e-2
182 PARAMETERS['let "SIGNAL += %"']=5.0e-0
183 PARAMETERS['let "BACKGROUND += %"']=5.0e-1
190 let "BACKGROUND = 0.0"
194 let "MEAN = $TRUE_MEAN"
195 let "SIGMA = $TRUE_SIGMA"
196 let "SIGNAL = $TRUE_SIGNAL"
197 let "BACKGROUND = $TRUE_BACKGROUND"
201 printf "chi2/NDF %3d %12.5f (fit) %12.5f (true)\n" $m $(($Y1 / (${#DATA} - ${#PARAMETERS}))) $(($Y2 / ${#DATA}))
203 let "CHI2_FIT += $Y1 / (${#DATA} - ${#PARAMETERS})"
204 let "CHI2_TRUE += $Y2 / ${#DATA}"
207 printf "<> %12.5f (fit) %12.5f (true)\n" $(($CHI2_FIT / $NUMBER_OF_TESTS)) $(($CHI2_TRUE / $NUMBER_OF_TESTS))