Jpp  19.0.0
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
JTuneHV.sh
Go to the documentation of this file.
1 #!/bin/zsh
2 #
3 # \author bjung
4 #
5 version=1.0
6 script=${0##*/}
7 
8 # ------------------------------------------------------------------------------------------------
9 #
10 # Utility script for finding PMT supply voltages corresponding to the nominal gain setting.
11 #
12 # ------------------------------------------------------------------------------------------------
13 
14 
15 if [ -z $JPP_DIR ]; then
16  echo "Variable JPP_DIR undefined."
17  exit
18 fi
19 
20 
21 source $JPP_DIR/setenv.sh $JPP_DIR
22 
23 set_variable: DEBUG CALIBRATION_DEBUG 2
24 set_variable: FIT_OPTIONS TUNEHV_GAINFIT_OPTIONS "RME"
25 set_variable: FIT_RANGE TUNEHV_GAINFIT_RANGE "0.0 -1.0" # Invalid fit-range such that ToT-fit is conducted around histogram maximum (see JFitToT.hh)
26 set_variable: OUTPUT_FILE TUNEHV_OUTPUT_FILE "HVtuning%"
27 set_variable: DB_APIVERSION TUNEHV_DB_APIVERSION "2.0.0"
28 set_variable: DB_TESTTYPE TUNEHV_DB_TESTTYPE "HV-TUNING-GAIN-v3"
29 set_variable: TIMESLICE_SELECTOR TUNEHV_TIMESLICE_SELECTOR "JDAQTimesliceL0"
30 
31 set_variable WORKDIR ${TMPDIR:-/tmp}
33 
34 if do_usage $*; then
35  usage "$script <detector file> <input files> [output directory] [PMT parameter file]\n"\
36  "Note that if more than one input file is specified, all other arguments must be provided."
37 fi
38 
39 case $# in
42  2) set_array INPUT_FILES $2;
45  set_array INPUT_FILES $argv[2,-3]
48 esac
49 
50 let "TIMER = $(date +%s)"
51 
52 # Define directories
53 
54 set_variable PMT_DIR $WORKDIR/PMTfiles
55 set_variable CAL_DIR $WORKDIR/caldata
56 set_variable TOT_DIR $WORKDIR/fitdata
57 
58 # Create directories
59 
60 for DIR in $PMT_DIR $CAL_DIR $TOT_DIR; do
61 
62  if [[ ! -d ${DIR} ]]; then
63  echo "Creating output directory:\t${DIR}"
64  mkdir -p ${DIR}
65  fi
66 done
67 
68 
69 # Fit gain-values
70 
71 set_array RUN_NUMBERS ""
72 set_array OUTPUT_FITS ""
73 
74 for INPUT_FILE in ${INPUT_FILES[@]}; do
75 
76  set_array DAQHEADER $(JPrintDAQHeader -f ${INPUT_FILE})
77  set_variable DETID ${DAQHEADER[1]}
78  set_variable RUNID ${DAQHEADER[2]}
79 
80  if [ -z $RUNID ]; then
81  echo "WARNING: header of ${INPUT_FILE}\n"
82  echo "does not contain run number; skip."
83  continue;
84  fi
85 
86  set_array RUN_NUMBERS ${RUN_NUMBERS[@]} ${RUNID}
87 
88  set_variable FILENAME ${${INPUT_FILE##*/}%.*}
89  set_variable OUTPUT_PMT $PMT_DIR/${FILENAME}_PMT.txt
90  set_variable OUTPUT_CALTOT $CAL_DIR/${FILENAME}_calToT.root
91  set_variable OUTPUT_FITTOT $TOT_DIR/${FILENAME}_fitToT.root
92  set_variable LOG_FITTOT $TOT_DIR/${FILENAME}_fitToT.log
93 
94 
95  if [ ! -z $PMT_PARAMETER_FILE ]; then
96  if [ -f $PMT_PARAMETER_FILE ]; then
97  cp $PMT_PARAMETER_FILE $OUTPUT_PMT
98  else
99  echo $PMT_PARAMETER_FILE > $OUTPUT_PMT
100  fi
101  fi
102 
103 
104  if (( 1 )); then
105 
106  JCalibrateToT \
108  -f ${INPUT_FILE} \
109  -C ${TIMESLICE_SELECTOR} \
110  -o ${OUTPUT_CALTOT} --!
111  fi
112 
113 
114  if (( 1 )); then
115 
116  JFitToT \
117  -w \
118  -a ${DETECTOR_FILE} \
119  -f ${OUTPUT_CALTOT} \
120  -o ${OUTPUT_FITTOT} \
121  -P ${OUTPUT_PMT} \
122  -x "${FIT_RANGE}" \
123  -O ${FIT_OPTIONS} \
124  -d ${DEBUG} --! 2>&1 | tee ${LOG_FITTOT}
125  fi
126 
127  set_array OUTPUT_FITS ${OUTPUT_FITS[@]} ${RUNID} ${OUTPUT_FITTOT}
128 done
129 
130 
131 # Retrieve high-voltage data
132 
133 if (( 1 )); then
134 
135  JGetInputTuneHV \
136  -f "${OUTPUT_FITS[*]}" \
137  -o ${WORKDIR}/${OUTPUT_FILE/\%/.root} \
138  -a ${DETECTOR_FILE} \
139  -d ${DEBUG} --! 2>&1 | tee ${WORKDIR}/${OUTPUT_FILE/\%/.log}
140 fi
141 
142 
143 # Fit high-voltage values
144 
145 if (( 1 )); then
146 
147 # Retrieve cookie
148 
149  JCookie.sh
150 
151  set_variable LOCATIONID $(getLocationID)
152  set_variable USER $(getUserID)
153 
154  JAsciiDB \
155  -q upi \
156  -@ "pbs = 3.4.2.3" \
157  -d 0 -- > ${WORKDIR}/upi.txt
158 
159  let "TIMER = $(date +%s) - $TIMER"
160 
161  JTuneHV \
162  -f ${WORKDIR}/${OUTPUT_FILE/\%/.root} \
163  -o ${WORKDIR}/${OUTPUT_FILE/\%/.json} \
164  -a ${DETECTOR_FILE} \
165  -b ${WORKDIR}/upi.txt \
166  -# "APIversion = ${DB_APIVERSION}" \
167  -# "testType = ${DB_TESTTYPE}" \
168  -# "login = ${USER}" \
169  -# "locationID = ${LOCATIONID}" \
170  -# "runNumbers = ${RUN_NUMBERS[*]}" \
171  -# "elapsedTime = ${TIMER}" \
172  -d ${DEBUG} --! 2>&1 | tee -a ${WORKDIR}/${OUTPUT_FILE/\%/.log}
173 
174  rm -f ${WORKDIR}/upi.txt
175 fi
176 
177 
178 # Print summary
179 
180 if (( 1 )); then
181 
182  JPrintTuneHV \
183  -f ${WORKDIR}/${OUTPUT_FILE/\%/.json} \
184  -a ${DETECTOR_FILE} \
185  -d ${DEBUG} --!
186 fi
187 
188 
189 
then usage $script< input file > nFor possible input see
Definition: JMechanics.sh:24
data_type w[N+1][M+1]
Definition: JPolint.hh:867
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
then usage $script< detector file >< inputfiles > n Note that if more than one input file is all other arguments must be provided fi case set_variable PMT_PARAMETER_FILE
Definition: JTuneHV.sh:36
set_variable LOCATIONID(getLocationID-L ${LOGIN}) if(($
Definition: JEditTuneHV.sh:80
set_variable USER
Definition: test-tuna.sh:26
version
Definition: JEditTuneHV.sh:5
fi set_array RUN_NUMBERS
Definition: JTuneHV.sh:86
exit
Definition: JPizza.sh:36
then warning Cannot perform comparison test for histogram
then FILENAME
Definition: getLs.sh:62
is
Definition: JDAQCHSM.chsm:167
then
Definition: datalogs.sh:34
then echo Variable JPP_DIR undefined exit fi source $JPP_DIR setenv sh $JPP_DIR &dev null set_variable DETECTOR_ID set_array RUNS if do_usage *then usage $script< source directory > nThe source directory corresponds to a pre calibrated D0ARCA009 detector fi case set_variable DIR
then fatal Wrong number of arguments fi JConvertDetectorFormat a o
set_variable DETECTOR_FILE
Definition: JTuneHV.sh:43
static const double C
Physics constants.
then set_variable DETID
Definition: JEditTuneHV.sh:63
then rm
Definition: sftpput.zsh:30
then JCalibrateToT a
Definition: JTuneHV.sh:107
then echo Variable JPP_DIR undefined exit fi source $JPP_DIR setenv sh $JPP_DIR if do_usage *then usage $script[(input file)+] fi set_variable DEBUG set_variable WORKDIR TMPDIR
then echo Variable JPP_DIR undefined exit fi source $JPP_DIR setenv sh $JPP_DIR &dev null set_variable
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
* usage
&set_variable OUTPUT_FILE
set_variable INPUT_FILE
then set_variable RUNID
Definition: JEditTuneHV.sh:67
z range($ZMAX-$ZMIN)< $MINIMAL_DZ." fi fi typeset -Z 4 STRING typeset -Z 2 FLOOR JPlot1D -f $
then JMuonMCEvt f $INPUT_FILE o $INTERMEDIATE_FILE d
Definition: JMuonStart.sh:47
then usage $script[energy[distance[z of PMT]]] fi case set_variable z
Definition: JDrawPDF.sh:45
then fatal The output file must have the wildcard in the e g root fi 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
then JHobbit a $DETECTOR f
do sput $STRING $FLOOR sget MODULE INPUT_FILES
then cp
then echo
Definition: JQAQC.sh:92
then getFile sh $JPP_ARCHIVE $DETECTOR_ID $RUNS[1] $KEY $VERSION $WORKDIR
then $DIR JPlotNPE PDG P
Definition: JPlotNPE-PDG.sh:62
esac done
Definition: JAddHDE.sh:21
#define DEBUG(A)
Message macros.
Definition: JMessage.hh:62