Jpp - 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 ${TUNEHV_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 
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;
44  *) set_variable DETECTOR_FILE $1
45  set_array INPUT_FILES $argv[2,-3]
46  set_variable WORKDIR $argv[-2]
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 \
116  -a ${DETECTOR_FILE} \
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 
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:83
void set_variable(const std::string &name, const std::string &value)
Set environment variable.
*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
TFitResultPtr Fit(TH1D *h)
Definition: JNanobeacon.hh:14
set_variable INPUT_FILE
fi set_array RUN_NUMBERS
Definition: JTuneHV.sh:95
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:52
is
Definition: JDAQCHSM.chsm:167
then JPizza f
Definition: JPizza.sh:46
set_variable DETECTOR_FILE
Definition: JTuneHV.sh:43
then echo
static const double C
Physics constants.
then set_variable DETID
Definition: JEditTuneHV.sh:66
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 $
do $DIR JTransitTime o
Definition: JTransitTime.sh:44
* usage
set_array INPUT_FILES
then set_variable RUNID
Definition: JEditTuneHV.sh:70
z range($ZMAX-$ZMIN)< $MINIMAL_DZ." fi fi typeset -Z 4 STRING typeset -Z 2 FLOOR JPlot1D -f $
*set_variable DETECTOR $argv[1] set_variable INPUT_FILE $argv[2,-2] set_variable OUTPUT_FILE $argv[-1]
Definition: JDomino.sh:39
then $JPP_DIR examples JDetector JToT o $OUTPUT_FILE n N $NPE P gain
Definition: JToT.sh:45
&set_variable OUTPUT_FILE
then JMuonMCEvt f $INPUT_FILE o $INTERMEDIATE_FILE d
Definition: JMuonPath.sh:45
then JCalibrateToT a
Definition: JTuneHV.sh:116
then display $WORKDIR
Definition: plot-Domino.sh:127
then cp
possible values
esac timer_start JCookie sh set_variable COOKIE(cat~/.km3netdb_cookie) set_variable LOGIN $
Definition: JEditTuneHV.sh:81
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:38
version
Definition: JCalibratePMT.sh:7
then usage $script< detector file >< inputfile > fi case set_variable WORKDIR
Definition: JLegolas.sh:28
then $DIR JPlotNPE PDG P
Definition: JPlotNPE-PDG.sh:60
esac done
Definition: JAddHDE.sh:21
#define DEBUG(A)
Message macros.
Definition: JMessage.hh:62