Jpp  master_rocky
the software that should make you happy
JOMGsim.sh
Go to the documentation of this file.
1 #!/bin/zsh
2 #
3 #
4 # \author mdejong
5 #
6 version=1.0
7 script=${0##*/}
8 
9 # ------------------------------------------------------------------------------------------
10 #
11 # Utility script to process OMGsim output.
12 #
13 # ------------------------------------------------------------------------------------------
14 
15 if [ -z $JPP_DIR ]; then
16  echo "Variable JPP_DIR undefined."
17  exit
18 fi
19 
20 source $JPP_DIR/setenv.sh $JPP_DIR
21 
22 zmodload zsh/mathfunc
23 
24 set_variable DEBUG 2
25 set_variable WORKDIR ./
26 set_variable DIR $JPP_DIR/examples/JCalibrate/
27 set_variable OMGSIM $DIR/OMGsim.txt
28 set_variable: FACTOR OMGSIM_FACTOR 0.5
29 set_variable: FORMAT GRAPHICS_FORMAT gif
30 set_variable+ BATCH GRAPHICS_BATCH -B
31 
32 if do_usage $*; then
33  usage "$script <detector file> <file name pattern> <OMGsim data card>"
34 fi
35 
36 case $# in
37  3) set_variable OMGSIM $argv[3];&
38  2) set_variable FILE_NAME_PATTERN $argv[2];
39  set_variable DETECTOR $argv[1];;
40  *) fatal "Wrong number of arguments."
41 esac
42 
43 function getv() { JPrintProperties -f $OMGSIM -k $1 -@ "cc=#" }
44 
45 typeset -A BUFFER
46 
47 let "BUFFER[K40Glass] = `getv glass.K40 ` * `getv mass.glass`"
48 let "BUFFER[Th232Glass] = `getv glass.Th232` * `getv mass.glass`"
49 let "BUFFER[U238Glass] = `getv glass.U238 ` * `getv mass.glass`"
50 let "BUFFER[K40Water] = `getv water.K40 ` * (4.0/3.0) * acos(-1.0) * (`getv radius.K40 `**3 - `getv radius.glass`**3)"
51 let "BUFFER[U238Water] = `getv water.U238 ` * (4.0/3.0) * acos(-1.0) * (`getv radius.U238`**3 - `getv radius.glass`**3)"
52 
53 echo Radio activities:
54 
55 for KEY VALUE in ${(kv)BUFFER}; do
56  printf "%-12s %12.2f [Bq]\n" $KEY $VALUE
57 done
58 
59 typeset -a KEYS
60 
61 for KEY VALUE in ${(kv)BUFFER}; do
62 
63  set_variable INPUT_FILE ${FILE_NAME_PATTERN/\%/$KEY}
64  set_variable OUTPUT_FILE $WORKDIR/\[${KEY}\].root
65 
66  echo $INPUT_FILE
67 
68  if [[ -f $INPUT_FILE ]] && [[ ! -f $OUTPUT_FILE ]]; then
69 
70  $DIR/JOMGsim \
71  -a $DETECTOR \
72  -f $INPUT_FILE \
73  -o $OUTPUT_FILE \
74  -R $VALUE \
75  -P "QE = $FACTOR" \
76  -d $DEBUG --!
77  fi
78 
79  if [[ -f $OUTPUT_FILE ]]; then
80  KEYS+=($KEY)
81  fi
82 done
83 
84 JOpera2D \
85  -f$WORKDIR/\[${^KEYS}\].root:1.2S \
86  -u Add \
87  -O = \
88  -o $WORKDIR/\[Total\].root >& /dev/null
89 
90 JPlot2D \
91  -w 1200x600 \
92  -f $WORKDIR/\[Total\].root:1.2S \
93  -> "PMT pair" \
94  -< "#DeltaT [ns]" \
95  -\^ "rate [Hz]" \
96  -O COLZ \
97  -T "OMGsim" \
98  -o monitor.$FORMAT $BATCH
99 
100