Jpp  15.0.3
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 
51 
52 
53 # Define directories
54 
55 set_variable PMT_DIR $WORKDIR/PMTfiles
56 set_variable CAL_DIR $WORKDIR/caldata
57 set_variable TOT_DIR $WORKDIR/fitdata
58 
59 # Create directories
60 
61 for DIR in $PMT_DIR $CAL_DIR $TOT_DIR; do
62 
63  if [[ ! -d ${DIR} ]]; then
64  echo "Creating output directory:\t${DIR}"
65  mkdir -p ${DIR}
66  fi
67 done
68 
69 
70 # Retrieve cookie
71 
72 JCookie.sh
73 
74 set_variable COOKIE $(cat ~/.km3netdb_cookie)
75 set_variable LOGIN ${${COOKIE#*_}%%_*}
76 set_variable LOCATIONID $(getLocationID -L ${LOGIN})
77 
78 # Fit gain-values
79 
80 set_array RUN_NUMBERS ""
81 set_array OUTPUT_FITS ""
82 
83 for INPUT_FILE in ${INPUT_FILES[@]}; do
84 
85  set_array DAQHEADER $(JPrintDAQHeader -f ${INPUT_FILE})
88 
89  if [ -z $RUNID ]; then
90  echo "WARNING: header of ${INPUT_FILE}\n"
91  echo "does not contain run number; skip."
92  continue;
93  fi
94 
95  set_array RUN_NUMBERS ${RUN_NUMBERS[@]} ${RUNID}
96 
97  set_variable FILENAME ${${INPUT_FILE##*/}%.*}
98  set_variable OUTPUT_PMT $PMT_DIR/${FILENAME}_PMT.txt
99  set_variable OUTPUT_CALTOT $CAL_DIR/${FILENAME}_calToT.root
100  set_variable OUTPUT_FITTOT $TOT_DIR/${FILENAME}_fitToT.root
101  set_variable LOG_FITTOT $TOT_DIR/${FILENAME}_fitToT.log
102 
103 
104  if [ ! -z $PMT_PARAMETER_FILE ]; then
105  if [ -f $PMT_PARAMETER_FILE ]; then
106  cp $PMT_PARAMETER_FILE $OUTPUT_PMT
107  else
108  echo $PMT_PARAMETER_FILE > $OUTPUT_PMT
109  fi
110  fi
111 
112 
113  if (( 1 )); then
114 
115  JCalibrateToT \
117  -f ${INPUT_FILE} \
118  -C ${TIMESLICE_SELECTOR} \
119  -o ${OUTPUT_CALTOT} --!
120  fi
121 
122 
123  if (( 1 )); then
124 
125  JFitToT \
126  -w \
127  -a ${DETECTOR_FILE} \
128  -f ${OUTPUT_CALTOT} \
129  -o ${OUTPUT_FITTOT} \
130  -P ${OUTPUT_PMT} \
131  -x "${FIT_RANGE}" \
132  -O ${FIT_OPTIONS} \
133  -d ${DEBUG} --! 2>&1 | tee ${LOG_FITTOT}
134  fi
135 
136  set_array OUTPUT_FITS ${OUTPUT_FITS[@]} ${RUNID} ${OUTPUT_FITTOT}
137 done
138 
139 
140 # Retrieve high-voltage data
141 
142 if (( 1 )); then
143 
144  JGetInputTuneHV \
145  -f "${OUTPUT_FITS[*]}" \
146  -o ${WORKDIR}/${OUTPUT_FILE/\%/.root} \
147  -a ${DETECTOR_FILE} \
148  -d ${DEBUG} --! 2>&1 | tee ${WORKDIR}/${OUTPUT_FILE/\%/.log}
149 fi
150 
151 
152 # Fit high-voltage values
153 
154 if (( 1 )); then
155 
156  JAsciiDB \
157  -q upi \
158  -@ "pbs = 3.4.2.3" \
159  -d ${DEBUG} -- > ${WORKDIR}/upi.txt
160 
161  timer_stop
162 
163  JTuneHV \
164  -f ${WORKDIR}/${OUTPUT_FILE/\%/.root} \
165  -o ${WORKDIR}/${OUTPUT_FILE/\%/.json} \
166  -a ${DETECTOR_FILE} \
167  -b ${WORKDIR}/upi.txt \
168  -# "APIversion = ${DB_APIVERSION}" \
169  -# "testType = ${DB_TESTTYPE}" \
170  -# "login = ${LOGIN}" \
171  -# "locationID = ${LOCATIONID}" \
172  -# "runNumbers = ${RUN_NUMBERS[*]}" \
173  -# "elapsedTime = ${TIMER}" \
174  -d ${DEBUG} --! 2>&1 | tee -a ${WORKDIR}/${OUTPUT_FILE/\%/.log}
175 
176  rm -f ${WORKDIR}/upi.txt
177 fi
178 
179 
180 # Print summary
181 
182 if (( 1 )); then
183 
184  JPrintTuneHV \
185  -f ${WORKDIR}/${OUTPUT_FILE/\%/.json} \
186  -a ${DETECTOR_FILE} \
187  -d ${DEBUG} --!
188 fi
189 
190 
191 
then usage $script< detector file >< detectorfile > nIf the range of floors is the first detector file is aligned to the second before the comparison nIn only modules within the given range of floors are used fi case set_variable RANGE $argv[3]
data_type w[N+1][M+1]
Definition: JPolint.hh:741
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 DETECTOR_FILE set_array INPUT_FILES $argv[2,-3] set_variable WORKDIR $argv[-2] set_variable PMT_PARAMETER_FILE $argv[-1] esac timer_start set_variable PMT_DIR $WORKDIR PMTfiles set_variable CAL_DIR $WORKDIR caldata set_variable TOT_DIR $WORKDIR fitdata for DIR in $PMT_DIR $CAL_DIR $TOT_DIR
Definition: JTuneHV.sh:43
then JLigier sh continue fi cat
Definition: JDAQDriver.sh:51
TFitResultPtr Fit(TH1D *h)
Definition: JNanobeacon.hh:14
set_variable INPUT_FILE
fi set_array RUN_NUMBERS
Definition: JTuneHV.sh:95
o $QUALITY_ROOT d $DEBUG!JPlot1D f
Definition: JDataQuality.sh:66
exit
Definition: JPizza.sh:36
do set_array DAQHEADER(JPrintDAQHeader-f ${INPUT_FILE}) set_variable DETID $
Definition: JTuneHV.sh:85
do echo Generating $dir eval DIR
Definition: JPlotNPE1D.sh:54
is
Definition: JDAQCHSM.chsm:167
set_variable DETECTOR_FILE
Definition: JTuneHV.sh:43
then echo
static const double C
Physics constants.
then set_variable DETID
Definition: JEditTuneHV.sh:63
then timer_start(JRandomTimesliceWriter-a ${DETECTOR}-o ${PIPE}-n ${NUMBER_OF_SLICES}-P ${PMT_FILE}-d ${DEBUG}-S ${SEED}-B"$BACKGROUND_HZ"-N"$RECYCLING"--!&&for((i=0;$i!=10;++i));do;echo 'EOF' > $PIPE;usleep 100000;done &&rm-f $PIPE)&JTimesliceReprocessor-a $
then echo Variable JPP_DIR undefined exit fi source $JPP_DIR setenv sh $JPP_DIR &dev null set_variable
Definition: JAcoustics.sh:20
set_variable NUMBER_OF_ITERATIONS set_variable EPSILON cat acoustics_fit_parameters txt<< EOF $CONFIGURATION[*]Nmin=3;sigma_s=100.0e-6;stdev=10.0;mestimator=0;fixStrings=0;EOF for STRING in $STRINGS[*];do#fit stretching and(z) position of given string set_variable DETECTOR_TMP ${TMPDIR:-/tmp}/detector_A.datx JEditDetector-a $DETECTOR-o $DETECTOR_TMP-r $STRING JEditDetector-a $DETECTOR-o $DETECTOR-k $STRING for MUL in 0.005 0.001;do DX_M=0.2 for((N=0;$N< $NUMBER_OF_ITERATIONS;++N));do CHI2[3]=$CHI2[1] fitPositionOfString $STRING Z $DX_M fitStretchingOfString $STRING $MUL if(($CHI2[3]-$CHI2[1]< $EPSILON));then break fi done if(($N >=$NUMBER_OF_ITERATIONS));then printf"warning: reached maximum number of iterations %d - converenge %7.3f\n"$N $(($CHI2[3]-$CHI2[1])) fi done JMergeDetector-a $DETECTOR-a $DETECTOR_TMP-o $DETECTOR rm-f $DETECTOR_TMP JConvertDetectorFormat-a $DETECTOR-o $DETECTOR-r-d 0 > &dev null done
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 DEBUG set_variable WORKDIR
Definition: JLegolas.sh:20
* usage
then JConvertDetectorFormat a $DETECTOR[1] o
then set_variable RUNID
Definition: JEditTuneHV.sh:67
do sput $STRING $FLOOR sget MODULE INPUT_FILES
Definition: JCanberra.sh:73
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
&set_variable OUTPUT_FILE
then JMuonMCEvt f $INPUT_FILE o $INTERMEDIATE_FILE d
Definition: JMuonPath.sh:47
then JCalibrateToT a
Definition: JTuneHV.sh:116
then usage $script< input_file >< detector_file > fi set_variable OUTPUT_DIR set_variable SELECTOR JDAQTimesliceL1 set_variable DEBUG case set_variable DEBUG
then display $WORKDIR
Definition: plot-Domino.sh:128
then cp
possible values
esac timer_start JCookie sh set_variable COOKIE(cat~/.km3netdb_cookie) set_variable LOGIN $
Definition: JEditTuneHV.sh:78
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 source JAcoustics sh $DETECTOR_ID CHECK_EXIT_CODE typeset A TRIPODS get_tripods $WORKDIR tripod txt TRIPODS for EMITTER in
Definition: JCanberra.sh:42
version
Definition: JCalibratePMT.sh:7
then $DIR JPlotNPE PDG P
Definition: JPlotNPE-PDG.sh:62