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