Jpp  15.0.0-rc.2
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
software/JReconstruction/JEnergyCorrection.sh
Go to the documentation of this file.
1 #!/bin/zsh
2 #
3 # \author mdejong
4 #
5 version=1.0
6 script=${0##*/}
7 
8 # ------------------------------------------------------------------------------------------
9 #
10 # Utility script to determine muon energy correction base on Monte Carlo simulations.
11 #
12 # ------------------------------------------------------------------------------------------
13 
14 if [ -z $JPP_DIR ]; then
15  echo "Variable JPP_DIR undefined."
16  exit
17 fi
18 
19 source $JPP_DIR/setenv.sh $JPP_DIR
20 
21 zmodload zsh/mathfunc
22 
25 set_variable NUMBER_OF_RUNS 10
26 set_variable: FORMAT GRAPHICS_FORMAT gif
27 set_variable+ BATCH GRAPHICS_BATCH -B
28 
29 if do_usage $*; then
30  usage "$script <working directory> <option>"\
31  "\nPossible options: run fit interpolate"
32 fi
33 
34 if (( $# != 2 )); then
35  fatal "Wrong number of arguments."
36 fi
37 
40 
41 if [[ $OPTION != "run" && $OPTION != "fit" && $OPTION != "interpolate" ]]; then
42  fatal "Invalid option $OPTION."
43 fi
44 
45 mkdir -p $WORKDIR
46 
47 if [[ $OPTION == "run" ]]; then
48 
50 
51  if [[ ! -f $DETECTOR ]]; then
52  JDetector.sh $DETECTOR
53  fi
54 
55  for (( i = 1; $i <= $NUMBER_OF_RUNS; ++i )); do
56  JSirene.sh $DETECTOR $JPP_DATA/genhen.km3net_wpd_V2_0.evt.gz $WORKDIR/sirene_${i}.root
57  JTriggerEfficiency.sh $DETECTOR $DETECTOR $WORKDIR/sirene_${i}.root $WORKDIR/trigger_efficiency_${i}.root
58  JARCAMuonReconstruction.sh $DETECTOR $WORKDIR/trigger_efficiency_${i}.root $WORKDIR/%_${i}.root
59  done
60 fi
61 
62 if [[ $OPTION == "fit" || $OPTION == "interpolate" ]]; then
63 
64  if ( ! reuse_file $WORKDIR/energy_correction.root ); then
65 
66  set_array INPUT_FILES `ls $WORKDIR/jchain.arca_*.root`
67 
68  if (( ${#INPUT_FILES} == 0 )); then
69  fatal "No input file in directory $WORKDIR"
70  fi
71 
72  else
73 
74  set_array INPUT_FILES `ls $WORKDIR/energy_correction.root`
75  fi
76 
77  if [[ $OPTION == "fit" ]]; then
78 
79  JEnergyCorrection \
80  -f "$INPUT_FILES[*]" \
81  -o $WORKDIR/energy_correction.root \
82  -F "[0] + [1]*x + [1]*x*x + [3]*x*x*x" \
83  -@ "p0 = 0.0" \
84  -@ "p1 = 1.0" \
85  -@ "p2 = 0.0" \
86  -@ "p3 = 0.0" \
87  -d $DEBUG --!
88 
89  elif [[ $OPTION == "interpolate" ]]; then
90 
91  JEnergyCorrection \
92  -f "$INPUT_FILES[*]" \
93  -o $WORKDIR/energy_correction.root \
94  -d $DEBUG --!
95  fi
96 
98  set_variable YMAX `JPrintResult -f $WORKDIR/energy_correction.root:h1 -F "GetMaximum + 0.5"`
99 
100  JPlot1D \
101  -f $WORKDIR/energy_correction.root:h1 \
102  -y "$YMIN $YMAX" \
103  -\> "log(E_{fit}/GeV)" \
104  -\^ "log(E_{true}/GeV)" \
105  -T "" \
106  -o E.$FORMAT
107 
108  echo result stored in $WORKDIR/energy_correction.root
109 fi
then usage $script< detector file >< detectorfile > nIf the range of floors is the first detector file is aligned to the second before the comparison fi case set_variable RANGE $argv[3]
then usage $script< detector >< run >< outputfile > fi case set_variable OPTION
Definition: JTuna.sh:26
then fatal Please specify a valid directory for local scratch files other than tmp fi elif(is_CCLyon)
then JMuonPostfit f
do JSirene sh $DETECTOR $JPP_DATA genhen km3net_wpd_V2_0 evt gz $WORKDIR sirene_
then usage $script< detector file >< inputfile > nUtility script to create PDF and CDF of transition time distribution fi case set_variable WORKDIR
Definition: JLegolas.sh:31
exit
Definition: JPizza.sh:36
then for HISTOGRAM in h0 h1
Definition: JMatrixNZ.sh:71
then usage E
Definition: JMuonPostfit.sh:35
fatal Invalid number of arguments esac let YMIN
Definition: testToT.sh:39
then echo
then echo Variable JPP_DIR undefined exit fi source $JPP_DIR setenv sh $JPP_DIR &dev null set_variable
Definition: JAcoustics.sh:20
return result
Definition: JPolint.hh:727
do set_variable OUTPUT_DIRECTORY $WORKDIR T
do $DIR JTransitTime o
Definition: JTransitTime.sh:44
then awk F
* usage
set_array INPUT_FILES
then JMuonMCEvt f $INPUT_FILE o $INTERMEDIATE_FILE d
Definition: JMuonPath.sh:47
then set_variable MODULE getModule a $DETECTOR L $STRING $FLOOR JEditDetector a $DETECTOR M $MODULE add $X o $DETECTOR else echo No update of detector $DETECTOR
then usage $script< input_file >< detector_file > fi set_variable OUTPUT_DIR set_variable SELECTOR JDAQTimesliceL1 set_variable DEBUG case set_variable DEBUG
then display $WORKDIR
Definition: plot-Domino.sh:128
set_variable DETECTOR
do set_variable DETECTOR_TXT $WORKDIR detector
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable INPUT_FILE $argv[2] eval JPrintDetector a $DETECTOR O IDENTIFIER eval JPrintDetector a $DETECTOR O SUMMARY source JAcoustics sh $DETECTOR_ID CHECK_EXIT_CODE typeset A TRIPODS get_tripods $WORKDIR tripod txt TRIPODS for EMITTER in
Definition: JCanberra.sh:41
set_variable NUMBER_OF_ITERATIONS set_variable EPSILON cat acoustics_fit_parameters txt<< EOF $CONFIGURATION[*]Nmin=3;sigma_s=100.0e-6;stdev=10.0;mestimator=0;fixStrings=0;EOF for STRING in $STRINGS[*];do#fit stretching and(z) position of given string set_variable DETECTOR_TMP/tmp/detector_A.datx JEditDetector-a $DETECTOR-o $DETECTOR_TMP-r $STRING JEditDetector-a $DETECTOR-o $DETECTOR-k $STRING for MUL in 0.005 0.001;do DX_M=0.2 for((N=0;$N< $NUMBER_OF_ITERATIONS;++N));do CHI2[3]=$CHI2[1] fitPositionOfString $STRING Z $DX_M fitStretchingOfString $STRING $MUL if(($CHI2[3]-$CHI2[1]< $EPSILON));then break fi done if(($N >=$NUMBER_OF_ITERATIONS));then printf"warning: reached maximum number of iterations %d - converenge %7.3f\n"$N $(($CHI2[3]-$CHI2[1])) fi done JMergeDetector-a $DETECTOR-a $DETECTOR_TMP-o $DETECTOR rm-f $DETECTOR_TMP JConvertDetectorFormat-a $DETECTOR-o $DETECTOR-r-d 0 > &dev null done
version
Definition: JCalibratePMT.sh:7
*fatal Wrong option $OPTION
do alias $i