Jpp 20.0.0-rc.7
the software that should make you happy
Loading...
Searching...
No Matches
observation_mset.sh
Go to the documentation of this file.
1#!/bin/env zsh
2#
3# \author mdejong
4#
5version=1.0
6script=${0##*/}
7
8source $JPP_DIR/setenv.sh $JPP_DIR >& /dev/null
9
10zmodload zsh/mathfunc
11
12set_variable DEBUG 2
13set_variable: SNR ASTRONOMY_SNR 0.2
14set_variable: M_SIZE ASTRONOMY_M_SIZE 10000
15set_variable: NUISANCE ASTRONOMY_NUISANCE fixed fixed
16set_variable: FORMAT GRAPHICS_FORMAT gif
17set_variable+ BATCH GRAPHICS_BATCH -B
18
19if do_usage $*; then
20 usage "$script <config file name for data> <config file name for pseudosets>"\
21 "\nThe histograms correspond to \"<file name>:<histogram name>\"."
22fi
23
24if (( $# != 2 )); then
25 fatal "Wrong number of arguments."
26fi
27
28set_variable CONFIG_DATA $argv[1]
29set_variable CONFIG_PSEUDO $argv[2]
30
31timer_start
32
33let "NUMBER_OF_TESTS = 100000"
34
35$JPP_DIR/examples/JAstronomy/JRealExperiment \
36 -E $CONFIG_DATA \
37 -R $SNR \
38 -n $NUMBER_OF_TESTS \
39 -d $DEBUG >& benchmark.data.log
40
41awk '/result:/ { print $(NF - 1) }' benchmark.data.log | read LIKELIHOOD_RATIO
42awk '/result:/ { print $(NF) }' benchmark.data.log | read SIGNAL
43awk '/upper limit:/ { print $(NF) }' benchmark.data.log | read UPPER_LIMIT
44
45SIGMA_UPPER_LIMIT=$(( $UPPER_LIMIT * sqrt(1.0 / ($NUMBER_OF_TESTS*1.0)*0.9/0.1) ))
46
47#test p-value calculation: for a best fitted signal build pseudoexperiments with such a signal and find fraction of pex with TS > TS_observed
48$JPP_DIR/examples/JAstronomy/JGen2 \
49 -o /dev/null \
50 -E $CONFIG_PSEUDO \
51 -n 10000 \
52 -s $SIGNAL \
53 -Q $LIKELIHOOD_RATIO \
54 -R $SNR \
55 -M $M_SIZE \
56 -d $DEBUG >& benchmark.$SIGNAL.log
57
58awk '/Maximal probability:/ { print $(NF - 1) }' benchmark.$SIGNAL.log | read PCHECK
59
60if (( $(echo "$LIKELIHOOD_RATIO <= 0" |bc -l) )); then
61 printf "Observed likelihood ratio: %1.2e signal\t%1.2e pcheck\t%1.2e\n\t\t\t\t\t\t" $LIKELIHOOD_RATIO $SIGNAL $PCHECK
62fi
63
64H0=0
65
66let "NUMBER_OF_TESTS = 100000"
67
68if (( $LIKELIHOOD_RATIO > 0 )); then
69
70 for (( ; 1 ; )); do # p-vale
71 $JPP_DIR/examples/JAstronomy/JGen2 \
72 -o /dev/null \
73 -E $CONFIG_PSEUDO \
74 -n $NUMBER_OF_TESTS \
75 -s $H0 \
76 -Q $LIKELIHOOD_RATIO \
77 -R $SNR \
78 -M $M_SIZE \
79 -d $DEBUG >& benchmark.$H0.log
80
81 awk '/Maximal probability:/ { print $(NF - 1) }' benchmark.$H0.log | read P
82
83 if (( $P*($NUMBER_OF_TESTS*1.0) > 1.0e3 )); then
84 break
85 else
86 let "NUMBER_OF_TESTS *= 10"
87 fi
88 done
89
90 STDERR=$(( sqrt($P/($NUMBER_OF_TESTS*1.0)) ))
91
92 printf "Observed likelihood ratio: %1.2e signal\t%1.2e pcheck\t%1.2e\t -> P = %1.2e+-%1.2e, \t n=%1.2e\tUL = %1.2e+-%1.2e \n" $LIKELIHOOD_RATIO $SIGNAL $PCHECK $P $STDERR $NUMBER_OF_TESTS $UPPER_LIMIT $SIGMA_UPPER_LIMIT
93fi