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_TESTTYPE ${TUNEHV_DB_TESTTYPE:-"HV-TUNING-SEA-GAIN-v1"}
28 set_variable TIMESLICE_SELECTOR ${TUNEHV_TIMESLICE_SELECTOR:-"JDAQTimesliceL0"}
29 
32 
33 if ( do_usage $* ); then
34  usage "$script <detector file> <input files> [output directory] [PMT parameter file]\n"\
35  "Note that if more than one input file is specified, all other arguments must be provided."
36 fi
37 
38 case $# in
41  2) set_array INPUT_FILES $2;
43  *) set_variable DETECTOR_FILE $1
44  set_array INPUT_FILES $argv[2,-3]
45  set_variable WORKDIR $argv[-2]
47 esac
48 
50 
51 
52 # Define directories
53 set_variable PMT_DIR $WORKDIR/PMTfiles
54 set_variable CAL_DIR $WORKDIR/caldata
55 set_variable TOT_DIR $WORKDIR/fitdata
56 
57 # Create directories
58 for DIR in $PMT_DIR $CAL_DIR $TOT_DIR; do
59 
60  if [[ ! -d ${DIR} ]]; then
61  echo "Creating output directory:\t${DIR}"
62  mkdir -p ${DIR}
63  fi
64 done
65 
66 
67 # Retrieve cookie
68 JCookie.sh
69 
70 set_variable COOKIE `cat ~/.km3netdb_cookie`
71 set_variable LOGIN ${${COOKIE#*_}%%_*}
72 
73 
74 # Fit gain-values
75 set_variable RUN_LIST ""
76 
77 for INPUT_FILE in ${INPUT_FILES[@]}; do
78 
79  set_array DAQHEADER `JPrintDAQHeader -f ${INPUT_FILE}`
80  set_variable DETID ${DAQHEADER[1]}
81  set_variable RUNID ${DAQHEADER[2]}
82 
83  if [ -z $RUNID ]; then
84  echo "WARNING: header of ${INPUT_FILE}\n"
85  echo "does not contain run number; skip."
86  continue;
87  fi
88 
90  set_variable OUTPUT_PMT $PMT_DIR/${FILENAME}_PMT.txt
91  set_variable OUTPUT_CALTOT $CAL_DIR/${FILENAME}_calToT.root
92  set_variable OUTPUT_FITTOT $TOT_DIR/${FILENAME}_fitToT.root
93  set_variable LOG_FITTOT $TOT_DIR/${FILENAME}_fitToT.log
94 
95 
96  if [ ! -z $PMT_PARAMETER_FILE ]; then
97  if [ -f $PMT_PARAMETER_FILE ]; then
98  cp $PMT_PARAMETER_FILE $OUTPUT_PMT
99  else
100  echo $PMT_PARAMETER_FILE > $OUTPUT_PMT
101  fi
102  fi
103 
104 
105  if (( 1 )); then
106 
107  JCalibrateToT \
108  -a ${DETECTOR_FILE} \
109  -f ${INPUT_FILE} \
110  -C ${TIMESLICE_SELECTOR} \
111  -o ${OUTPUT_CALTOT} --!
112 
113  fi
114 
115 
116  if (( 1 )); then
117 
118  JFitToT \
119  -w \
120  -a ${DETECTOR_FILE} \
121  -f ${OUTPUT_CALTOT} \
122  -o ${OUTPUT_FITTOT} \
123  -P ${OUTPUT_PMT} \
124  -x ${FIT_RANGE} \
125  -O ${FIT_OPTIONS} \
126  -d ${DEBUG} --! 2>&1 | tee ${LOG_FITTOT}
127  fi
128 
129  RUN_LIST+=" $RUNID $OUTPUT_FITTOT"
130 done
131 
132 
133 # Retrieve high-voltage data
134 if (( 1 )); then
135 
136  JGetInputTuneHV \
137  -f ${RUN_LIST} \
138  -o ${WORKDIR}/${OUTPUT_FILE/\%/.root} \
139  -a ${DETECTOR_FILE} \
140  -d ${DEBUG} --! 2>&1 | tee ${WORKDIR}/${OUTPUT_FILE/\%/.log}
141 fi
142 
143 
144 # Fit high-voltage values
145 if (( 1 )); then
146 
147  JAsciiDB \
148  -q upi \
149  -@pbs="3.4.2.3" \
150  -d ${DEBUG} -- > ${WORKDIR}/upi.txt
151 
152  timer_stop
153 
154  JTuneHV \
155  -f ${WORKDIR}/${OUTPUT_FILE/\%/.root} \
156  -o ${WORKDIR}/${OUTPUT_FILE/\%/.json} \
157  -a ${DETECTOR_FILE} \
158  -b ${WORKDIR}/upi.txt \
159  -#login=${LOGIN} \
160  -#locationID=`$JPP_DIR/software/JDB/getLocationID -L ${LOGIN}` \
161  -#testType=${DB_TESTTYPE} \
162  -#elapsedTime=${TIMER} \
163  -d ${DEBUG} --! 2>&1 | tee -a ${WORKDIR}/${OUTPUT_FILE/\%/.log}
164 
165  rm -f ${WORKDIR}/upi.txt
166 fi
167 
168 
169 # Print summary
170 if (( 1 )); then
171 
172  JPrintTuneHV \
173  -f ${WORKDIR}/${OUTPUT_FILE/\%/.json} \
174  -D ${DETID} \
175  -d ${DEBUG} --!
176 fi
177 
178 
179 
data_type w[N+1][M+1]
Definition: JPolint.hh:741
do echo Generating $dir eval D
Definition: JDrawLED.sh:50
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:35
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:42
set_variable INPUT_FILE
exit
Definition: JPizza.sh:36
do set_array DAQHEADER JPrintDAQHeader f
Definition: JTuneHV.sh:79
do echo Generating $dir eval DIR
Definition: JPlotNPE1D.sh:52
is
Definition: JDAQCHSM.chsm:167
set_variable DETECTOR_FILE
Definition: JTuneHV.sh:42
then echo
static const double C
Physics constants.
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 $
fi set_variable FILENAME
Definition: JTuneHV.sh:89
then JAsciiDB q upi pbs
Definition: JTuneHV.sh:149
do $DIR JTransitTime o
Definition: JTransitTime.sh:44
* usage
then fatal Not enough arguments fi set_variable DETECTOR $argv[1] INPUT_FILES
z range($ZMAX-$ZMIN)< $MINIMAL_DZ." fi fi mv $WORKDIR/fit.root $MODULE_ROOT typeset -Z 4 STRING typeset -Z 2 FLOOR JPlot1D -f $
Definition: module-Z:fit.sh:84
*set_variable DETECTOR $argv[1] set_variable INPUT_FILE $argv[2,-2] set_variable OUTPUT_FILE $argv[-1]
Definition: JDomino.sh:39
&set_variable OUTPUT_FILE
then JMuonMCEvt f $INPUT_FILE o $INTERMEDIATE_FILE d
Definition: JMuonPath.sh:45
then JCalibrateToT a
Definition: JTuneHV.sh:108
then display $WORKDIR
Definition: plot-Domino.sh:127
then cp
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