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))