8# ------------------------------------------------------------------------------------------
10# Utility script to determine muon energy correction base on Monte Carlo simulations.
12# ------------------------------------------------------------------------------------------
14if [ -z $JPP_DIR ]; then
15 echo "Variable JPP_DIR undefined."
19source $JPP_DIR/setenv.sh $JPP_DIR
20source $JPP_DIR/externals/km3net-dataformat/definitions/reconstruction.sh
25set_variable WORKDIR ./
26set_variable: NUMBER_OF_EVENTS RECONSTRUCTION_NUMBER_OF_EVENTS 100000
27set_variable: NUMBER_OF_BINS RECONSTRUCTION_NUMBER_OF_BINS 30
28set_variable: LOGE RECONSTRUCTION_LOGE 2.5 9.0
29set_variable: FORMAT GRAPHICS_FORMAT gif
30set_variable+ BATCH GRAPHICS_BATCH -B
33 usage "$script <detector> <option> [working directory]"\
34 "\nPossible options: run fit interpolate"
38 3) set_variable WORKDIR $3;&
39 2) set_variable OPTION $2;
40 set_variable DETECTOR $1;;
41 *) fatal "Wrong number of arguments."
44if [[ $OPTION != "run" && $OPTION != "fit" && $OPTION != "interpolate" ]]; then
45 fatal "Invalid option $OPTION."
48if [[ ! -d $WORKDIR ]]; then
52let "XMIN = ${LOGE%% *}"
53let "XMAX = ${LOGE##* }"
55if [[ $OPTION == "run" ]]; then
57 if [[ ! -f $WORKDIR/generator.root ]]; then
59 eval `JPrintDetector -a $DETECTOR -O CAN`
61 let "RADIUS_M = $CAN_RADIUS_M + 200.0"
63 let "ZMAX_M = $CAN_ZMAX_M + 200.0"
66 -C "$CAN_X_M $CAN_Y_M $RADIUS_M $ZMIN_M $ZMAX_M" \
69 -n $NUMBER_OF_EVENTS \
70 -o $WORKDIR/generator.root \
74 if [[ ! -f $WORKDIR/sirene.root ]]; then
76 JSirene.sh $DETECTOR $WORKDIR/generator.root $WORKDIR/sirene.root
78 rm -f $WORKDIR/generator.root
81 if [[ ! -f $WORKDIR/trigger_efficiency.root ]]; then
83 set_variable TRIGGEREFFICIENCY_TRIGGERED_EVENTS_ONLY
85 cat>$WORKDIR/trigger_parameters.txt<<EOF
86trigger3DMuon.enabled = 1;
87trigger3DMuon.numberOfHits = 5;
88trigger3DMuon.numberOfModules = 5;
89trigger3DMuon.gridAngle_deg = 10;
95 JTriggerEfficiency.sh $DETECTOR $DETECTOR $WORKDIR/sirene.root $WORKDIR/trigger_efficiency.root $WORKDIR/trigger_parameters.txt $JPP_DATA/PMT_parameters.txt
97 rm -f $WORKDIR/sirene.root
100 if (( 0 )) && [[ ! -f $WORKDIR/jmuon.root ]]; then
102 set_variable RECONSTRUCTION_NUMBER_OF_THREADS 10
104 JARCAMuonReconstruction.sh $DETECTOR $WORKDIR/trigger_efficiency.root $WORKDIR/%.root $JPP_DATA/PMT_parameters.txt
106 rm -f $WORKDIR/trigger_efficiency.root
107 rm -f $WORKDIR/jmuon.offline.root
110 if (( 1 )) && [[ ! -f $WORKDIR/jmuon.root ]]; then
112 set_variable PDF $JPP_DATA/J%p.dat
113 set_variable NUMBER_OF_THREADS 10
114 set_variable RATE_HZ 6.0e3
116 typeset -A PARAMETERS
117 typeset -a APPLICATIONS
122 -f $WORKDIR/trigger_efficiency.root \
123 -o $WORKDIR/jmcevt.root \
126 rm -f $WORKDIR/trigger_efficiency.root
128 APPLICATIONS+=$JMCEVT
142 -f $WORKDIR/jmcevt.root \
143 -o $WORKDIR/jenergy.root \
145 -@ `make_equation PARAMETERS` \
146 -N ${NUMBER_OF_THREADS} \
149 rm -f $WORKDIR/jmcevt.root
151 APPLICATIONS+=$JMUONENERGY
154 -f $WORKDIR/jenergy.root \
155 -o $WORKDIR/jmuon.root \
156 -A "$APPLICATIONS[*]" \
159 rm -f $WORKDIR/jenergy.root
163if [[ $OPTION == "fit" || $OPTION == "interpolate" ]]; then
165 if ( ! reuse_file $WORKDIR/energy_correction.root ); then
166 set_variable INPUT_FILE $WORKDIR/jmuon.root
168 set_variable INPUT_FILE $WORKDIR/energy_correction.root
171 if [[ $OPTION == "fit" ]]; then
173 let "X0 = 0.5 * ($XMIN + $XMAX)" # central value
174 let "XR = ($XMAX - $XMIN)" # range
176 X="(x - $X0) / $XR" # normalisation
178 P0="(1.0)" # Legendre polynomials
180 P2="(0.5*(3*$X*$X - 1.0))"
181 P3="(0.5*$X*(5*$X*$X* - 3.0))"
185 -o $WORKDIR/energy_correction.root \
186 -F "[0]*$P0 + [1]*$P1 + [2]*$P2 + [3]*$P3" \
195 elif [[ $OPTION == "interpolate" ]]; then
199 -o $WORKDIR/energy_correction.root \
206 -@ "color = 1; style = 2" \
207 -p "$XMIN $XMIN $XMAX $XMAX" \
208 -o $WORKDIR/line.root
211 -f $WORKDIR/energy_correction.root:h2 \
212 -f $WORKDIR/line.root:\.\* \
214 -< "E_{true} [GeV]" \
220 -o ExE.$FORMAT $BATCH
224 -f $WORKDIR/energy_correction.root:"py\[.*\]" \
227 -\^ "number of events [a.u]" \
232 -f $WORKDIR/energy_correction.root:h1 \
233 -f $WORKDIR/line.root:\.\* \
237 -> "log(E_{fit}/GeV)" \
238 -\^ "log(E_{true}/GeV)" \
243 rm -f $WORKDIR/line.root
245 echo result stored in $WORKDIR/energy_correction.root