Jpp master_rocky-44-g75b7c4f75
the software that should make you happy
Loading...
Searching...
No Matches
JARCAEnergyCorrection.sh
Go to the documentation of this file.
1#!/bin/zsh
2#
3# \author mdejong
4#
5version=1.0
6script=${0##*/}
7
8# ------------------------------------------------------------------------------------------
9#
10# Utility script to determine muon energy correction base on Monte Carlo simulations.
11#
12# ------------------------------------------------------------------------------------------
13
14if [ -z $JPP_DIR ]; then
15 echo "Variable JPP_DIR undefined."
16 exit
17fi
18
19source $JPP_DIR/setenv.sh $JPP_DIR
20
21zmodload zsh/mathfunc
22
23set_variable DEBUG 2
24set_variable WORKDIR ${TMPDIR:-/tmp}/
25set_variable NUMBER_OF_RUNS 10
26set_variable NUMBER_OF_BINS 40
27set_variable RANGE_LOGE 3.0 6.5
28set_variable: FORMAT GRAPHICS_FORMAT gif
29set_variable+ BATCH GRAPHICS_BATCH -B
30
31if do_usage $*; then
32 usage "$script <working directory> <option>"\
33 "\nPossible options: run fit interpolate"
34fi
35
36if (( $# != 2 )); then
37 fatal "Wrong number of arguments."
38fi
39
40set_variable WORKDIR $argv[1]
41set_variable OPTION $argv[2]
42
43if [[ $OPTION != "run" && $OPTION != "fit" && $OPTION != "interpolate" ]]; then
44 fatal "Invalid option $OPTION."
45fi
46
47mkdir -p $WORKDIR
48
49if [[ $OPTION == "run" ]]; then
50
51 set_variable DETECTOR $WORKDIR/detector.detx
52
53 if [[ ! -f $DETECTOR ]]; then
54 JDetector.sh $DETECTOR
55 fi
56
57 for (( i = 1; $i <= $NUMBER_OF_RUNS; ++i )); do
58 JSirene.sh $DETECTOR $JPP_DATA/genhen.km3net_wpd_V2_0.evt.gz $WORKDIR/sirene_${i}.root
59 JTriggerEfficiency.sh $DETECTOR $DETECTOR $WORKDIR/sirene_${i}.root $WORKDIR/trigger_efficiency_${i}.root
60 JARCAMuonReconstruction.sh $DETECTOR $WORKDIR/trigger_efficiency_${i}.root $WORKDIR/%_${i}.root $JPP_DATA/PMT_parameters.txt
61 done
62fi
63
64if [[ $OPTION == "fit" || $OPTION == "interpolate" ]]; then
65
66 if ( ! reuse_file $WORKDIR/energy_correction.root ); then
67
68 set_array INPUT_FILES `ls $WORKDIR/jchain.arca_*.root`
69
70 if (( ${#INPUT_FILES} == 0 )); then
71 fatal "No input file in directory $WORKDIR"
72 fi
73
74 else
75
76 set_array INPUT_FILES `ls $WORKDIR/energy_correction.root`
77 fi
78
79 if [[ $OPTION == "fit" ]]; then
80
81 JEnergyCorrection \
82 -f "$INPUT_FILES[*]" \
83 -o $WORKDIR/energy_correction.root \
84 -F "[0] + [1]*x + [2]*x*x + [3]*x*x*x" \
85 -@ "p0 = 0.0" \
86 -@ "p1 = 1.0" \
87 -@ "p2 = 0.0" \
88 -@ "p3 = 0.0" \
89 -N $NUMBER_OF_BINS \
90 -x "$RANGE_LOGE" \
91 -d $DEBUG --!
92
93 elif [[ $OPTION == "interpolate" ]]; then
94
95 JEnergyCorrection \
96 -f "$INPUT_FILES[*]" \
97 -o $WORKDIR/energy_correction.root \
98 -N $NUMBER_OF_BINS \
99 -x "$RANGE_LOGE" \
100 -d $DEBUG --!
101 fi
102
103 JPlot2D \
104 -f $WORKDIR/energy_correction.root:h2 \
105 -> "E_{fit} [GeV]" \
106 -< "E_{true} [GeV]" \
107 -XX \
108 -YY \
109 -Z \
110 -O COLZ \
111 -T "" \
112 -o ExE.$FORMAT $BATCH
113
114 set_variable YMIN 0
115 set_variable YMAX `JPrintResult -f $WORKDIR/energy_correction.root:h1 -F "GetMaximum + 0.5"`
116
117 JPlot1D \
118 -f $WORKDIR/energy_correction.root:h1 \
119 -y "$YMIN $YMAX" \
120 -> "log(E_{fit}/GeV)" \
121 -\^ "log(E_{true}/GeV)" \
122 -T "" \
123 -o E.$FORMAT $BATCH
124
125 echo result stored in $WORKDIR/energy_correction.root
126fi