Jpp  18.3.1
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 # Retrieve cookie
70 
71 JCookie.sh
72 
73 set_variable LOCATIONID $(getLocationID)
74 
75 # Fit gain-values
76 
77 set_array RUN_NUMBERS ""
78 set_array OUTPUT_FITS ""
79 
80 for INPUT_FILE in ${INPUT_FILES[@]}; do
81 
82  set_array DAQHEADER $(JPrintDAQHeader -f ${INPUT_FILE})
83  set_variable DETID ${DAQHEADER[1]}
84  set_variable RUNID ${DAQHEADER[2]}
85 
86  if [ -z $RUNID ]; then
87  echo "WARNING: header of ${INPUT_FILE}\n"
88  echo "does not contain run number; skip."
89  continue;
90  fi
91 
92  set_array RUN_NUMBERS ${RUN_NUMBERS[@]} ${RUNID}
93 
94  set_variable FILENAME ${${INPUT_FILE##*/}%.*}
95  set_variable OUTPUT_PMT $PMT_DIR/${FILENAME}_PMT.txt
96  set_variable OUTPUT_CALTOT $CAL_DIR/${FILENAME}_calToT.root
97  set_variable OUTPUT_FITTOT $TOT_DIR/${FILENAME}_fitToT.root
98  set_variable LOG_FITTOT $TOT_DIR/${FILENAME}_fitToT.log
99 
100 
101  if [ ! -z $PMT_PARAMETER_FILE ]; then
102  if [ -f $PMT_PARAMETER_FILE ]; then
103  cp $PMT_PARAMETER_FILE $OUTPUT_PMT
104  else
105  echo $PMT_PARAMETER_FILE > $OUTPUT_PMT
106  fi
107  fi
108 
109 
110  if (( 1 )); then
111 
112  JCalibrateToT \
114  -f ${INPUT_FILE} \
115  -C ${TIMESLICE_SELECTOR} \
116  -o ${OUTPUT_CALTOT} --!
117  fi
118 
119 
120  if (( 1 )); then
121 
122  JFitToT \
123  -w \
124  -a ${DETECTOR_FILE} \
125  -f ${OUTPUT_CALTOT} \
126  -o ${OUTPUT_FITTOT} \
127  -P ${OUTPUT_PMT} \
128  -x "${FIT_RANGE}" \
129  -O ${FIT_OPTIONS} \
130  -d ${DEBUG} --! 2>&1 | tee ${LOG_FITTOT}
131  fi
132 
133  set_array OUTPUT_FITS ${OUTPUT_FITS[@]} ${RUNID} ${OUTPUT_FITTOT}
134 done
135 
136 
137 # Retrieve high-voltage data
138 
139 if (( 1 )); then
140 
141  JGetInputTuneHV \
142  -f "${OUTPUT_FITS[*]}" \
143  -o ${WORKDIR}/${OUTPUT_FILE/\%/.root} \
144  -a ${DETECTOR_FILE} \
145  -d ${DEBUG} --! 2>&1 | tee ${WORKDIR}/${OUTPUT_FILE/\%/.log}
146 fi
147 
148 
149 # Fit high-voltage values
150 
151 if (( 1 )); then
152 
153  JAsciiDB \
154  -q upi \
155  -@ "pbs = 3.4.2.3" \
156  -d ${DEBUG} -- > ${WORKDIR}/upi.txt
157 
158  let "TIMER = $(date +%s) - $TIMER"
159 
160  JTuneHV \
161  -f ${WORKDIR}/${OUTPUT_FILE/\%/.root} \
162  -o ${WORKDIR}/${OUTPUT_FILE/\%/.json} \
163  -a ${DETECTOR_FILE} \
164  -b ${WORKDIR}/upi.txt \
165  -# "APIversion = ${DB_APIVERSION}" \
166  -# "testType = ${DB_TESTTYPE}" \
167  -# "login = ${LOGIN}" \
168  -# "locationID = ${LOCATIONID}" \
169  -# "runNumbers = ${RUN_NUMBERS[*]}" \
170  -# "elapsedTime = ${TIMER}" \
171  -d ${DEBUG} --! 2>&1 | tee -a ${WORKDIR}/${OUTPUT_FILE/\%/.log}
172 
173  rm -f ${WORKDIR}/upi.txt
174 fi
175 
176 
177 # Print summary
178 
179 if (( 1 )); then
180 
181  JPrintTuneHV \
182  -f ${WORKDIR}/${OUTPUT_FILE/\%/.json} \
183  -a ${DETECTOR_FILE} \
184  -d ${DEBUG} --!
185 fi
186 
187 
188 
then usage $script< input file > nFor possible input see
Definition: JMechanics.sh:23
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
version
Definition: JEditTuneHV.sh:5
TFitResultPtr Fit(TH1D *h)
Definition: JNanobeacon.hh:14
fi set_array RUN_NUMBERS
Definition: JTuneHV.sh:92
o $QUALITY_ROOT d $DEBUG!CHECK_EXIT_CODE JPlot1D f
Definition: JDataQuality.sh:76
usr share Modules init zsh export TMPDIR
exit
Definition: JPizza.sh:36
then warning Cannot perform comparison test for histogram
is
Definition: JDAQCHSM.chsm:167
then
Definition: datalogs.sh:31
then fatal Wrong number of arguments fi 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 echo Variable JPP_DIR undefined exit fi source $JPP_DIR setenv sh $JPP_DIR &dev null set_variable
Definition: JAcoustics.sh:21
then JCalibrateToT a
Definition: JTuneHV.sh:113
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
do sput $STRING $FLOOR sget MODULE INPUT_FILES
Definition: JCanberra.sh:79
z range($ZMAX-$ZMIN)< $MINIMAL_DZ." fi fi typeset -Z 4 STRING typeset -Z 2 FLOOR JPlot1D -f $
then $JPP_DIR examples JDetector JToT o $OUTPUT_FILE n N $NPE P gain
Definition: JToT.sh:47
fi set_variable FILENAME $WORKDIR
Definition: datalogs.sh:34
then JMuonMCEvt f $INPUT_FILE o $INTERMEDIATE_FILE d
Definition: JMuonPath.sh:47
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:48
then cp
possible values
then echo
Definition: JQAQC.sh:90
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