Jpp
 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 
24 set_variable NPE 1
25 set_variable FIT_RANGE 0.0 -1.0 # Invalid fit-range such that ToT-fit is conducted around histogram maximum (see JFitToT.hh)
27 set_variable OUTPUT_JSON $OUTPUT_DIR/HVtuning.json
28 set_variable OUTPUT_ROOT $OUTPUT_DIR/HVtuning.root
29 set_variable FIT_OPTIONS "RME"
30 set_variable PMT_DEFAULT "%.gain=0.25"
31 set_variable SELECTOR "JDAQTimesliceL0"
32 set_variable TESTTYPE "HV-TUNING-SEA-GAIN-v1"
33 set_variable TESTPRODUCT ""
34 
35 
36 if ( do_usage $* ); then
37  usage "$script <detector file> <input files> [output directory] [json output] [root output] [test type] [test product] [timeslice selector] [default PMT parameter file]"
38 fi
39 
40 case $# in
41  9) set_variable PMT_DEFAULT $9;&
42  8) set_variable SELECTOR $8;&
43  7) set_variable TESTPRODUCT $7;&
44  6) set_variable TESTTYPE $6;&
45  5) set_variable OUTPUT_ROOT $5;&
46  4) set_variable OUTPUT_JSON $4;&
47  3) set_variable OUTPUT_DIR $3;&
50  *) fatal "Wrong number of arguments.";;
51 esac
52 
53 
54 # Define directories
55 set_variable PMT_DIR $OUTPUT_DIR/PMTfiles
56 set_variable K40_DIR $OUTPUT_DIR/caldata
57 set_variable TOT_DIR $OUTPUT_DIR/fitdata
58 
59 # Create directories
60 OUTPUT_DIRS=( $PMT_DIR $K40_DIR $TOT_DIR )
61 for DIR in $OUTPUT_DIRS; do
62  if [[ ! -d ${DIR} ]]; then
63  echo "Creating output directory: ${DIR}"
64  mkdir -p ${DIR}
65  fi
66 done
67 
68 # Fit gain-values
69 HVTUNING_INPUT=""
70 FILEPATHS=($(echo $INPUT_FILES))
71 for FILEPATH in "${FILEPATHS[@]}"; do
72 
73  set_variable FILENAME ${FILEPATH##*/}
74  set_variable PREFIX ${FILENAME%.*}
75  set_variable DETID ${${PREFIX#*_}%_*}
76  set_variable RUNID ${PREFIX##*_}
77  if [ -z $PREFIX ] || [ -z $DETID ] || [ -z $RUNID ]; then
78  echo "WARNING: $FILEPATH does not contain correct prefix (i.e. KM3NeT_{DETID}_{RUNID}); skip."
79  continue;
80  fi
81 
82  set_variable OUTPUT_PMT $PMT_DIR/${PREFIX}_PMT.txt
83  set_variable OUTPUT_CALTOT $K40_DIR/${PREFIX}_calToT.root
84  set_variable OUTPUT_FITTOT $TOT_DIR/${PREFIX}_fitToT.root
85 
86  if ( ! reuse_file $OUTPUT_PMT ); then
87 
88  echo "Removing ${OUTPUT_PMT}"
89  rm $OUTPUT_PMT
90 
91  if [ ! -z $PMT_DEFAULT ]; then
92  if [ -f $PMT_DEFAULT ]; then
93  cp $PMT_DEFAULT $OUTPUT_PMT
94  else
95  echo $PMT_DEFAULT > $OUTPUT_PMT
96  fi
97  fi
98  fi
99 
100  if (( 1 )); then
101 
102  JCalibrateToT \
103  -a ${DETECTOR_FILE} \
104  -f ${FILEPATH} \
105  -C ${SELECTOR} \
106  -o ${OUTPUT_CALTOT} --!
107 
108  fi
109 
110 
111  if (( 1 )); then
112 
113  JFitToT \
114  -w \
115  -a ${DETECTOR_FILE} \
116  -f ${OUTPUT_CALTOT} \
117  -o ${OUTPUT_FITTOT} \
118  -P ${OUTPUT_PMT} \
119  -x ${FIT_RANGE} \
120  -O "${FIT_OPTIONS}" \
121  -d ${DEBUG} --!
122  fi
123 
124  HVTUNING_INPUT+="$RUNID $OUTPUT_FITTOT "
125 done
126 
127 
128 # Fit high-voltage values
129 if (( 1 )); then
130 
131  set_variable OUTPUT_LOG "${OUTPUT_DIR}/${OUTPUT_JSON%.*}.log"
132 
133  JTuneHV \
134  -f ${HVTUNING_INPUT} \
135  -O "${OUTPUT_DIR}/${OUTPUT_JSON}" \
136  -o "${OUTPUT_DIR}/${OUTPUT_ROOT}" \
137  -D ${DETID} \
138  -T "${TESTTYPE}" \
139  -P "${TESTPRODUCT}" \
140  -d ${DEBUG} --! 2>&1 | tee ${OUTPUT_LOG}
141 fi
142 
143 
144 # Create transfer file
145 if (( 0 )); then
146 
147  echo "Creating transfer file..."
148  set_variable OUTPUT_TRANSFER "${OUTPUT_DIR}/${OUTPUT_JSON%.*}.transfer"
149 
150  if ( ! reuse_file $OUTPUT_TRANSFER ); then
151 
152  if [ -f $OUTPUT_TRANSFER ]; then
153  rm $OUTPUT_TRANSFER
154  fi
155 
156  set_variable CONTENT_STRING "Content-Disposition: form-data; name="
157  set_variable SEPARATOR "--BLOBLO123"
158 
159  echo "Username:"
160  read USRNAME
161 
162  echo "Password:"
163  read PASSWRD
164 
165  echo "${SEPARATOR}\n${CONTENT_STRING}\"usr\"\n\n${USRNAME}" >> $OUTPUT_TRANSFER
166  echo "${SEPARATOR}\n${CONTENT_STRING}\"pwd\"\n\n${PASSWRD}" >> $OUTPUT_TRANSFER
167  echo "${SEPARATOR}\n${CONTENT_STRING}\"mode\"\n\nsrv" >> $OUTPUT_TRANSFER
168  echo "${SEPARATOR}\n${CONTENT_STRING}\"jsonfile\"; filename=\"data.json\"\n" >> $OUTPUT_TRANSFER
169 
170  cat "${OUTPUT_DIR}/${OUTPUT_JSON}" >> $OUTPUT_TRANSFER
171  echo "\n${SEPARATOR}" >> $OUTPUT_TRANSFER
172 
173  unix2dos $OUTPUT_TRANSFER
174  fi
175 fi
176 
177 
178 
179 
data_type w[N+1][M+1]
Definition: JPolint.hh:708
do echo Generating $dir eval D
Definition: JDrawLED.sh:50
void set_variable(const std::string &name, const std::string &value)
Set environment variable.
bool read(Vec &v, std::istream &is)
Read a Vec(tor) from a stream.
Definition: io_ascii.hh:139
then usage for INPUT_FILE in $INPUT_FILES[*]
then JPlot1D f $WORKDIR postfit[prefit\] root
esac print_variable DETECTOR INPUT_FILE OUTPUT_FILE CDF for TYPE in
Definition: JSirene.sh:45
exit
Definition: JPizza.sh:36
fi set_variable OUTPUT_PMT $PMT_DIR
Definition: JTuneHV.sh:82
do echo Generating $dir eval DIR
Definition: JPlotNPE1D.sh:52
fi JEventTimesliceWriter a
is
Definition: JDAQCHSM.chsm:167
DETECTOR_FILE
Definition: JHistHDE.sh:15
*fatal Wrong number of arguments esac if[!-d ${OUTPUT_DIR}]
then JPizza f
Definition: JPizza.sh:46
then echo Variable JPP_DIR undefined exit fi source $JPP_DIR setenv sh $JPP_DIR set_variable DEBUG set_variable NPE set_variable FIT_RANGE set_variable OUTPUT_DIR tmp set_variable OUTPUT_JSON $OUTPUT_DIR HVtuning json set_variable OUTPUT_ROOT $OUTPUT_DIR HVtuning root set_variable FIT_OPTIONS RME set_variable PMT_DEFAULT gain
Definition: JTuneHV.sh:30
then echo
then usage $script(input file)+" fi if (( $ fatal "Invalid number of arguments." fi JCookie.sh set_array INPUT_FILES $argv[1
do montage tile geometry tmp
do set_variable OUTPUT_DIRECTORY $WORKDIR T
then print_variable DETECTOR INPUT_FILE INTERMEDIATE_FILE check_input_file $DETECTOR $INPUT_FILE check_output_file $INTERMEDIATE_FILE $OUTPUT_FILE JMCEvt f $INPUT_FILE o $INTERMEDIATE_FILE d
Definition: JPath.sh:52
&set_variable SELECTOR
* usage
then fatal Not enough arguments fi set_variable DETECTOR $argv[1] INPUT_FILES
JDAQPMTIdentifier PMT
Command line options.
nlohmann::json json
static const double C
Speed of light in vacuum [m/ns].
Definition: JConstants.hh:22
version
Definition: JCalibratePMT.sh:7
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
&set_variable OUTPUT_DIR