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