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