Jpp  18.3.0-rc.1
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
JCalibratePMT.sh
Go to the documentation of this file.
1 #!/bin/zsh
2 #
3 # \author rgruiz, mdejong
4 #
5 script=${0##*/}
6 
7 # ------------------------------------------------------------------------------------------
8 #
9 # Script to run complete PMT calibration.
10 #
11 # ------------------------------------------------------------------------------------------
12 
13 if [ -z $JPP_DIR ]; then
14  echo "Variable JPP_DIR undefined."
15  exit
16 fi
17 
18 source $JPP_DIR/setenv.sh $JPP_DIR
19 
20 set_variable: WORKDIR CALIBRATION_WORKDIR ./
21 set_variable: DEBUG CALIBRATION_DEBUG 2
22 set_variable+ OPTION CALIBRATION_OPTION -A
23 set_variable+ ANGLE_DEPENDENCE CALIBRATION_ANGLE_DEPENDENCE -D
24 set_variable+ NOISE_DEPENDENCE CALIBRATION_NOISE_DEPENDENCE -B
25 set_variable: QE_MAX CALIBRATION_QEMAX 2.0
26 set_variable: MU CALIBRATION_MU 0.25
27 set_variable: TOT_MIN_NS CALIBRATION_TOT_MIN_NS 0.0
28 set_variable: TOT_MAX_NS CALIBRATION_TOT_MAX_NS 35.0
29 
30 if do_usage $*; then
31  usage "$script <detector_file> (input file)+ <PMT parameters file>"
32 fi
33 
34 if (( $# < 3 )); then
35  fatal "Wrong number of arguments."
36 fi
37 
39 set_array INPUT_FILES $argv[2,-2]
40 set_variable PMT_FILE $argv[-1]
41 
42 if [[ ! -d $WORKDIR ]]; then
43  mkdir -p $WORKDIR
44 fi
45 
46 JCookie.sh
47 
48 eval `JPrintDetector -a $DETECTOR -O IDENTIFIER`
49 eval `JPrintDetector -a $DETECTOR -O SUMMARY`
50 
51 debug "$DETECTOR $DETECTOR_ID"
52 
53 if [[ "$DETECTOR_ID" != [1-9][0-9]* ]]; then
54  fatal "Invalid detector identifier \"$DETECTOR_ID\"."
55 fi
56 
57 # evaluate inputs
58 
59 set_variable RUNSETUPID
60 typeset -a RANGE
61 
62 RANGE[1]=99999999
63 RANGE[2]=0
64 
65 for 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
88 done
89 
90 
91 # data selection
92 
93 for DAQ_TIMESLICE in JDAQTimesliceL1 JDAQTimeslice; do
94 
95  JPrintTree -f${^INPUT_FILES} |& eval awk \'\{ if \( \$2 \~ \"${DAQ_TIMESLICE}$\" \) \{ printf \" %d\", \$3 \}\}\' | read -A VALUES
96 
97  if [[ -n "$VALUES" ]] && (( ${#VALUES} == ${#INPUT_FILES} )); then
98  break
99  fi
100 done
101 
102 if [[ -z "$VALUES" ]] || (( ${#VALUES} != ${#INPUT_FILES} )); then
103  fatal "No valid data in input file(s)."
104 fi
105 
106 
107 # PMT threshold
108 
109 JPMTThreshold \
110  -D $DETECTOR_ID \
111  -r $RANGE[1] \
112  -P $PMT_FILE \
113  --!
114 
115 
116 # PMT TTS function
117 
118 JPMTTTS \
119  -D $DETECTOR_ID \
120  -P $PMT_FILE \
121  --!
122 
123 
124 # PMT gain and gain spread
125 
126 set_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 
128 JCalibrateToT \
129  -a $DETECTOR \
130  -f${^INPUT_FILES} \
131  -o ${OUTPUT_FILE/\%/calibratetot} \
132  -C $DAQ_TIMESLICE \
133  -d $DEBUG --!
134 
135 CHECK_EXIT_CODE
136 
137 JMergeCalibrateToT \
138  -f ${OUTPUT_FILE/\%/calibratetot} \
139  -o ${OUTPUT_FILE/\%/mergetot} \
140  -d $DEBUG --!
141 
142 CHECK_EXIT_CODE
143 
144 JFitToT \
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 
153 CHECK_EXIT_CODE
154 
155 
156 # PMT QE
157 
158 JCalibrateK40 \
159  -a $DETECTOR \
160  -f${^INPUT_FILES} \
161  -o ${OUTPUT_FILE/\%/calibratek40} \
162  -C $DAQ_TIMESLICE \
163  -d $DEBUG --!
164 
165 CHECK_EXIT_CODE
166 
167 JMergeCalibrateK40 \
168  -f ${OUTPUT_FILE/\%/calibratek40} \
169  -o ${OUTPUT_FILE/\%/mergek40} \
170  -d $DEBUG --!
171 
172 CHECK_EXIT_CODE
173 
174 JFitK40 \
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 
185 CHECK_EXIT_CODE
186 
187 
188 # final corrections.
189 
190 JEditPMTParameters \
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 
&set_variable DAQ_TIMESLICE
Definition: JLegolas.sh:32
then usage $script< detector >< run >< outputfile > fi case set_variable OPTION
Definition: JTuna.sh:26
then usage $script< detector identifier >< startdate\"YYYY-MM-DDHH:MM:SS\"><finaldate\"YYYY-MM-DDHH:MM:SS\"><QA/QCfile> fi case set_variable QAQC_TXT $argv[4]
Definition: JDataMonitor.sh:24
std::istream & read(std::istream &in, JTestSummary &summary, const char delimiter= ' ')
Read test summary.
o $QUALITY_ROOT d $DEBUG!CHECK_EXIT_CODE JPlot1D f
Definition: JDataQuality.sh:76
exit
Definition: JPizza.sh:36
then
Definition: datalogs.sh:31
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable TRIPOD $argv[2] set_array INPUT_FILES $argv[3,-1] eval JPrintDetector a $DETECTOR O IDENTIFIER eval JPrintDetector a $DETECTOR O CAN JAcoustics sh $DETECTOR_ID
Definition: footprint.sh:38
const int n
Definition: JPolint.hh:786
then echo Variable JPP_DIR undefined exit fi source $JPP_DIR setenv sh $JPP_DIR &dev null set_variable
Definition: JAcoustics.sh:21
do set_variable STRING_TXT awk
then JCalibrateToT a
Definition: JTuneHV.sh:113
then rm i $OUTPUT_FILE fi let RUN
then echo Variable JPP_DIR undefined exit fi source $JPP_DIR setenv sh $JPP_DIR set_variable DEBUG set_variable WORKDIR if do_usage *then usage for INPUT_FILE in $INPUT_FILES[*]
then echo Variable JPP_DIR undefined exit fi source $JPP_DIR setenv sh $JPP_DIR &dev null set_variable DEBUG set_variable WORKDIR
Definition: JLegolas.sh:20
then awk F
* usage
then JFileTuna f $INPUT_FILE
Definition: file-Tuna.sh:66
set_variable INPUT_FILE
do sput $STRING $FLOOR sget MODULE INPUT_FILES
Definition: JCanberra.sh:79
then ls $DIR $ID
Definition: getArchive.sh:85
fi set_variable FILENAME $WORKDIR
Definition: datalogs.sh:34
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
set_variable DETECTOR
then echo
Definition: JQAQC.sh:90
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 JAcoustics sh $DETECTOR_ID source JAcousticsToolkit sh CHECK_EXIT_CODE typeset A EMITTERS get_tripods $WORKDIR tripod txt EMITTERS get_transmitters $WORKDIR transmitter txt EMITTERS for EMITTER in
Definition: JCanberra.sh:48
source $JPP_DIR setenv csh $JPP_DIR &dev null eval JShellParser o a A
script
Definition: JAcoustics.sh:2
do echo Generating $dir eval D
Definition: JDrawLED.sh:53
int debug
debug level
then fatal Invalid detector identifier $DETECTOR_ID fi set_variable RUNSETUPID typeset a RANGE RANGE[1]
esac done
Definition: JAddHDE.sh:21
#define DEBUG(A)
Message macros.
Definition: JMessage.hh:62