Jpp test-rotations-new
the software that should make you happy
Loading...
Searching...
No Matches
JCalibratePMT.sh
Go to the documentation of this file.
1#!/usr/bin/env zsh
2#
3# \author rgruiz, mdejong
4#
5script=${0##*/}
6
7# ------------------------------------------------------------------------------------------
8#
9# Script to run complete PMT calibration.
10#
11# ------------------------------------------------------------------------------------------
12
13if [ -z $JPP_DIR ]; then
14 echo "Variable JPP_DIR undefined."
15 exit
16fi
17
18source $JPP_DIR/setenv.sh $JPP_DIR
19
20set_variable: WORKDIR CALIBRATION_WORKDIR ./
21set_variable: DEBUG CALIBRATION_DEBUG 2
22set_variable+ OPTION CALIBRATION_OPTION -A
23set_variable+ ANGLE_DEPENDENCE CALIBRATION_ANGLE_DEPENDENCE -D
24set_variable+ NOISE_DEPENDENCE CALIBRATION_NOISE_DEPENDENCE -B
25set_variable: QE_MAX CALIBRATION_QEMAX 2.0
26set_variable: MU CALIBRATION_MU 0.25
27set_variable: TOT_MIN_NS CALIBRATION_TOT_MIN_NS 0.0
28set_variable: TOT_MAX_NS CALIBRATION_TOT_MAX_NS 35.0
29
30if do_usage $*; then
31 usage "$script <detector_file> (input file)+ <PMT parameters file>"
32fi
33
34if (( $# < 3 )); then
35 fatal "Wrong number of arguments."
36fi
37
38set_variable DETECTOR $argv[1]
39set_array INPUT_FILES $argv[2,-2]
40set_variable PMT_FILE $argv[-1]
41
42if [[ ! -d $WORKDIR ]]; then
43 mkdir -p $WORKDIR
44fi
45
46JCookie.sh
47
48eval `JPrintDetector -a $DETECTOR -O IDENTIFIER`
49eval `JPrintDetector -a $DETECTOR -O SUMMARY`
50
51debug "$DETECTOR $DETECTOR_ID"
52
53if [[ "$DETECTOR_ID" != [1-9][0-9]* ]]; then
54 fatal "Invalid detector identifier \"$DETECTOR_ID\"."
55fi
56
57# evaluate inputs
58
59set_variable RUNSETUPID
60typeset -a RANGE
61
62RANGE[1]=99999999
63RANGE[2]=0
64
65for INPUT_FILE in $INPUT_FILES[*]; do
66
67 JPrintDAQHeader -f $INPUT_FILE | read ID RUN FRAME_INDEX UTC
68
69 if (( $DETECTOR_ID != $ID )); then
70 fatal "Inconsistent detector identifier $DETECTOR_ID != $ID."
71 fi
72
73 JRuns -D $DETECTOR_ID -@ "RUN = $RUN" -F RUNSETUPID | read SETUP
74
75 debug "Run $RUN -> $SETUP."
76
77 if (( $RUN < $RANGE[1] )); then; RANGE[1]=$RUN; fi
78 if (( $RUN > $RANGE[2] )); then; RANGE[2]=$RUN; fi
79
80 if [[ -z "$SETUP" ]]; then
81 fatal "Missing setup identifier for run $RUN."
82 fi
83 if [[ -n "$RUNSETUPID" && $RUNSETUPID != $SETUP ]]; then
84 fatal "Inconsistent run setup identifiers $RUNSETUPID != $SETUP $RUN."
85 fi
86
87 set_variable RUNSETUPID $SETUP
88done
89
90
91# data selection
92
93for DAQ_TIMESLICE in JDAQTimesliceL1 JDAQTimeslice; do
94
95 VALUES=(`JPrintTree -f${^INPUT_FILES} -@ "type = ${DAQ_TIMESLICE}" -k number_of_entries`)
96
97 if [[ -n "$VALUES" ]] && (( ${#VALUES} == ${#INPUT_FILES} )); then
98 break
99 fi
100done
101
102if [[ -z "$VALUES" ]] || (( ${#VALUES} != ${#INPUT_FILES} )); then
103 fatal "No valid data in input file(s)."
104fi
105
106
107# PMT threshold
108
109JPMTThreshold \
110 -D $DETECTOR_ID \
111 -r $RANGE[1] \
112 -P $PMT_FILE \
113 --!
114
115
116# PMT TTS function
117
118JPMTTTS \
119 -D $DETECTOR_ID \
120 -P $PMT_FILE \
121 --!
122
123
124# PMT gain and gain spread
125
126set_variable OUTPUT_FILE $WORKDIR/KM3NeT_${(l:8::0::0:)DETECTOR_ID}_${(l:8::0::0:)RANGE[1]}-${(l:8::0::0:)RANGE[2]}_%.root
127
128JCalibrateToT \
129 -a $DETECTOR \
130 -f${^INPUT_FILES} \
131 -o ${OUTPUT_FILE/\%/calibratetot} \
132 -C $DAQ_TIMESLICE \
133 -d $DEBUG --!
134
135CHECK_EXIT_CODE
136
137JMergeCalibrateToT \
138 -f ${OUTPUT_FILE/\%/calibratetot} \
139 -o ${OUTPUT_FILE/\%/mergetot} \
140 -d $DEBUG --!
141
142CHECK_EXIT_CODE
143
144JFitToT \
145 -a $DETECTOR \
146 -f ${OUTPUT_FILE/\%/mergetot} \
147 -o ${OUTPUT_FILE/\%/fittot} \
148 -P $PMT_FILE \
149 -w \
150 -x "$TOT_MIN_NS $TOT_MAX_NS" \
151 -d $DEBUG --!
152
153CHECK_EXIT_CODE
154
155
156# PMT QE
157
158JCalibrateK40 \
159 -a $DETECTOR \
160 -f${^INPUT_FILES} \
161 -o ${OUTPUT_FILE/\%/calibratek40} \
162 -C $DAQ_TIMESLICE \
163 -d $DEBUG --!
164
165CHECK_EXIT_CODE
166
167JMergeCalibrateK40 \
168 -f ${OUTPUT_FILE/\%/calibratek40} \
169 -o ${OUTPUT_FILE/\%/mergek40} \
170 -d $DEBUG --!
171
172CHECK_EXIT_CODE
173
174JFitK40 \
175 -a $DETECTOR \
176 -f ${OUTPUT_FILE/\%/mergek40} \
177 -o ${OUTPUT_FILE/\%/fitk40} \
178 -P $PMT_FILE \
179 -w \
180 $OPTION \
181 $ANGLE_DEPENDENCE \
182 $NOISE_DEPENDENCE \
183 -d $DEBUG --!
184
185CHECK_EXIT_CODE
186
187
188# final corrections.
189
190JEditPMTParameters \
191 -P $PMT_FILE \
192 -E $MU \
193 -T "$TOT_MIN_NS $TOT_MAX_NS" \
194 -Q "0.0 $QE_MAX" \
195 -o $PMT_FILE \
196 -d $DEBUG --!
197