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