Jpp  17.1.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 if do_usage $*; then
21  usage "$script <detector_file> (input file)+ <PMT parameters file>"
22 fi
23 
24 set_variable: WORKDIR CALIBRATION_WORKDIR ./
25 set_variable: DEBUG CALIBRATION_DEBUG 2
26 set_variable+ OPTION CALIBRATION_OPTION -A
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 gain and gain spread
110 
111 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
112 
113 JCalibrateToT \
114  -a $DETECTOR \
115  -f${^INPUT_FILES} \
116  -o $OUTPUT_FILE \
117  -C $DAQ_TIMESLICE \
118  -d $DEBUG --!
119 
120 CHECK_EXIT_CODE
121 
122 set_variable INPUT_FILE $OUTPUT_FILE
123 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
124 
125 JMergeCalibrateToT \
126  -f $INPUT_FILE \
127  -o $OUTPUT_FILE \
128  -d $DEBUG --!
129 
130 CHECK_EXIT_CODE
131 
132 set_variable INPUT_FILE $OUTPUT_FILE
133 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
134 
135 JFitToT \
136  -a $DETECTOR \
137  -f $INPUT_FILE \
138  -o $OUTPUT_FILE \
139  -P $PMT_FILE \
140  -w \
141  -d $DEBUG --!
142 
143 
144 # PMT QE
145 
146 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
147 
148 timer_start
149 
150 JCalibrateK40 \
151  -a $DETECTOR \
152  -f${^INPUT_FILES} \
153  -o $OUTPUT_FILE \
154  -C $DAQ_TIMESLICE \
155  -d $DEBUG --!
156 
157 CHECK_EXIT_CODE
158 
159 timer_stop
160 timer_print
161 
162 set_variable INPUT_FILE $OUTPUT_FILE
163 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
164 
165 JMergeCalibrateK40 \
166  -f $INPUT_FILE \
167  -o $OUTPUT_FILE \
168  -d $DEBUG --!
169 
170 CHECK_EXIT_CODE
171 
172 set_variable INPUT_FILE $OUTPUT_FILE
173 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
174 
175 JFitK40 \
176  -a $DETECTOR \
177  -f $INPUT_FILE \
178  -o $OUTPUT_FILE \
179  -P $PMT_FILE \
180  -w \
181  $OPTION \
182  -d $DEBUG --!
183 
184 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!JPlot1D f
Definition: JDataQuality.sh:66
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 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 JCalibrateToT a
Definition: JTuneHV.sh:116
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