8 # ------------------------------------------------------------------------------------------
10 # Utility script to evaluate gSeaGen reweightings
12 # ------------------------------------------------------------------------------------------
15 if [ -z $JPP_DIR ];
then
16 echo "Variable JPP_DIR undefined."
20 source $JPP_DIR/setenv.sh $JPP_DIR
21 source $JPP_DIR/software/scripts/qlib.sh
28 set_variable+ BATCH_PROCESSING REWEIGHTING_BATCH_PROCESSING 1
35 set_variable: TEST_TYPE1D_PARAMETERS REWEIGHTING_TEST_TYPE1D_PARAMETERS 0.05
36 set_variable: TEST_TYPE2D REWEIGHTING_TEST_TYPE2D 2
37 set_variable: TEST_TYPE2D_PARAMETERS REWEIGHTING_TEST_TYPE2D_PARAMETERS 0.05
39 set_variable: SCRATCHDIR REWEIGHTING_SCRATCHDIR ${
TMPDIR:-/tmp}
41 set_variable: N_TRIGGERED_HITS_RANGE REWEIGHTING_N_TRIGGERED_HITS_RANGE
"20 $((2**31))"
42 set_variable: COSTH_RANGE REWEIGHTING_COSTH_RANGE
"-1.0 1.0"
43 set_variable: ENERGY_RANGE REWEIGHTING_ENERGY_RANGE
"0.0 $((2.0**31))"
52 usage "$script <detector file> <input file>+ <particle PDG code <reweighting formula <parameter file>>>+ <oscillation probability table> [oscillation parameter file [working directory]]\n" \
53 "Note that if more than one input file is given all optional parameters need to be specified."
69 while [[ -
f ${argv[
$i]} ]];
do
75 while ((
i < $# - 2 ));
do
103 # Initialise local batch processor
105 if [[ ${BATCH_PROCESSING} == 1 ]];
then
107 if ( is_CCNikhef );
then
109 echo "Submitting reweighting and histogram comparison jobs to nikhef-stbc batch queue: ${QUEUE_NAME}..."
111 if [[ ${SCRATCHDIR} ==
"${TMPDIR:-/tmp}" ]];
then
112 fatal
"Please specify a valid directory for local \'scratch\' files other than \"${TMPDIR:-/tmp}\""
117 fatal
"No batch-processing option available yet for CC-Lyon."
121 echo "Submitting reweighting and histogram comparison jobs to local batch queue: ${QUEUE_NAME}..."
125 $JPP_DIR/examples/scripts/mkqueue.sh ${QUEUE_NAME} ${QUEUE_SIZE}
"start"
136 echo "----------------------------"
138 echo "----------------------------"
140 echo "Remove the above regular files? (y/n)"
142 read REMOVE_MC_MERGE_FILES
144 if [[ ${REMOVE_MC_MERGE_FILES} ==
"y" || ${REMOVE_MC_MERGE_FILES} ==
"Y" ||
145 ${REMOVE_MC_MERGE_FILES} ==
"yes" || ${REMOVE_MC_MERGE_FILES} ==
"Yes" || ${REMOVE_MC_MERGE_FILES} ==
"YES" ]];
then
152 # Divide into DAQ- and MC-files
154 echo "Dividing into DAQ- and MC-files..."
158 if [[
"$(JPrintHeader -f ${INPUT_FILE} -k simul --)" !=
" 0" ]];
then # MC-
file
161 set_array INPUT_DAQ_FILES ${INPUT_DAQ_FILES[@]} ${
INPUT_FILE}
166 fatal
"No MC input files specified!"
174 $JPP_DIR/examples/JAAnet/JSortEvt \
175 -
f "${INPUT_MC_FILES[*]}" \
183 # Process reference
files
187 if ( ! reuse_file ${REFERENCE_POSTFIT_FILE} );
then
189 if (( ${#INPUT_DAQ_FILES} > 0 ));
then
190 set_array INPUT_REFERENCE_FILES ${INPUT_DAQ_FILES[@]}
196 ${SCRATCHDIR}/${REFERENCE_POSTFIT_FILE:t:
r}.\%.sh 1
198 cat >> ${EXEC_FILE} <<EOF
201 if [ -z \${JPP_DIR} ];
then echo \
"Variable JPP_DIR undefined.\"; exit; fi
203 source \${JPP_DIR}/setenv.sh \${JPP_DIR}
208 -f "${INPUT_REFERENCE_FILES[*]}
" \\
209 -o ${REFERENCE_POSTFIT_FILE} \\
211 -#energyRange="${ENERGY_RANGE}
" \\
212 -#coszenithRange="${COSTH_RANGE}
" \\
213 -#triggeredHitsRange="${N_TRIGGERED_HITS_RANGE}
" \\
215 -d ${DEBUG} --! ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
224 ${EXEC_FILE} ${BATCH_PROCESSING:+${QUEUE_NAME} ${SCRATCHDIR}}
230 # Create histogram comparison ASCII steering file
232 set_array NAMES $(JPrintName -f ${REFERENCE_POSTFIT_FILE}:.)
234 set_variable STEERING_FILE ${WORKDIR}/steeringfile.txt
236 rm -f ${STEERING_FILE}
241 for NAME in ${NAMES[@]}; do
243 set_variable BINFRAC $(JPrintResult \
244 -f ${REFERENCE_POSTFIT_FILE}:^${NAME}\$ \
245 -F "GetNcells / ((GetNbinsX+2)*(GetNbinsY+2))
" \
248 if [[ ${NAME} != "META
" && ${NAME} != "TObject" ]]; then
250 if (( BINFRAC > 1.0 )); then
251 warning "Cannot perform comparison test
for histogram ${NAME} with >2 dimensions; skip.
"
252 elif (( BINFRAC < 1.0 )); then
253 echo "${NAME}\$ ${TEST_TYPE1D} ${TEST_TYPE1D_PARAMETERS}
" >> ${STEERING_FILE}
254 set_array HISTOGRAMS1D ${HISTOGRAMS1D[@]} ${NAME}
256 echo "${NAME}\$ ${TEST_TYPE2D} ${TEST_TYPE2D_PARAMETERS}
" >> ${STEERING_FILE}
257 set_array HISTOGRAMS2D ${HISTOGRAMS2D[@]} ${NAME}
263 # Process MC-files with standard weights
265 for (( i=1; i<=${#MC_MERGE_FILES}; ++i)); do
267 set_variable MC_MERGE_FILE ${MC_MERGE_FILES[$i]}
268 set_variable POSTFIT_FILE ${MC_MERGE_FILE:r}.postfit.root
269 set_variable COMPARISON_FILE ${POSTFIT_FILE:r}.comparison.root
271 echo "Submitting histogram comparison job
for ${
MC_MERGE_FILE:t}
"
274 ${SCRATCHDIR}/${COMPARISON_FILE:t:r}.job\%.sh ${JOB_SIZE}
276 cat >> ${EXEC_FILE} <<EOF
277 ${START_JOB+#!/bin/zsh}
279 ${START_JOB+"if [ -z \${JPP_DIR} ];
then echo \
"Variable JPP_DIR undefined.\"; exit; fi"}
281 ${START_JOB+
"source \${JPP_DIR}/setenv.sh \${JPP_DIR}"}
287 -
o ${POSTFIT_FILE} \\
289 -@energyRange=
"${ENERGY_RANGE}" \\
290 -@coszenithRange=
"${COSTH_RANGE}" \\
291 -@triggeredHitsRange=
"${N_TRIGGERED_HITS_RANGE}" \\
293 -
d ${
DEBUG} --! ${BATCH_LOGGING:+&> ${LOG_FILE}}
296 timer_print ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
301 -
a ${REFERENCE_POSTFIT_FILE} \\
302 -b ${POSTFIT_FILE} \\
303 -s ${STEERING_FILE} \\
304 -
o ${COMPARISON_FILE} \\
305 -t ${COMPARISON_FILE:
r}.txt \\
306 -
d ${
DEBUG} --! ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
309 timer_print ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
311 ${SUBMIT_JOB+
rm -
f ${EXEC_FILE}}
316 ${EXEC_FILE} ${BATCH_PROCESSING:+${QUEUE_NAME} ${SCRATCHDIR} ${JOBIDS[1]}}
323 # Process MC-files with redefined weights
334 echo "Submitting reweighting job for ${MC_MERGE_FILE:t}"
340 set_array PRIMARIES \
343 set_array PRIMARIES \
347 while IFS=
"$PARDELIM" read -
r PARAMETERSETS;
do
351 if [[ ${PARAMETERSETS:0:1} == \# ]];
then continue;
fi
355 # Read formula and corresponding parameter set
359 set_array PARAMETERS $(
echo $PARAMETERSETS | cut -
d"$PARDELIM" -
f$j)
366 fatal
"Number of input parameters (= ${N_PARS}) is incompatible with given formula: ${FORMULA}"
371 for ((
k=0;
k<${#PARAMETERS}; ++
k ));
do
373 ${
PAREQS[@]}
"p${k}=${PARAMETERS[$((k+1))]};"
378 if (( $PRIMARY == $NUTYPE ));
then
381 ${
PARINPUTS[@]}
"${NULABELS[${NUTYPE}]}=\"${FORMULA}; ${PAREQS[@]}\""
391 set_variable COMPARISON_FILE ${POSTFIT_FILE:
r}.comparison.root
394 ${SCRATCHDIR}/${COMPARISON_FILE:t:
r}.job\%.sh ${JOB_SIZE}
396 cat >> ${EXEC_FILE} <<EOF
397 ${START_JOB+#!/bin/zsh}
399 ${START_JOB+
"if [ -z \${JPP_DIR} ]; then echo \"Variable JPP_DIR undefined.\"; exit; fi"}
401 ${START_JOB+
"source \${JPP_DIR}/setenv.sh \${JPP_DIR}"}
405 JEvtReweightGSeaGen \\
409 $(printf
'-#%s\n' "${PARINPUTS[*]}") \\
411 -
d ${
DEBUG} --! ${BATCH_LOGGING:+&> ${LOG_FILE} 2>&1}
414 timer_print ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
420 -
o ${POSTFIT_FILE} \\
422 -#energyRange=
"${ENERGY_RANGE}" \\
423 -#coszenithRange=
"${COSTH_RANGE}" \\
424 -#triggeredHitsRange=
"${N_TRIGGERED_HITS_RANGE}" \\
426 -
d ${
DEBUG} --! ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
429 timer_print ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
434 -
a ${REFERENCE_POSTFIT_FILE} \\
435 -b ${POSTFIT_FILE} \\
436 -s ${STEERING_FILE} \\
437 -
o ${COMPARISON_FILE} \\
438 -t ${COMPARISON_FILE:
r}.txt \\
439 -
d ${
DEBUG} --! ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
442 timer_print ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
445 ${SUBMIT_JOB+
rm -
f ${EXEC_FILE}}
450 ${EXEC_FILE} ${BATCH_PROCESSING:+${QUEUE_NAME} ${SCRATCHDIR} ${JOBIDS[1]}}
453 echo "${COMPARISON_FILE:r}.txt; ${PARINPUTS[*]}" >> ${
WORKDIR}/comparisonResults.meta.txt
455 done < ${PARSET_LIST}
458 if (( ${+JOBIDS} ));
then
459 rm -
f ${SCRATCHDIR}/reweighting.jobIDs.txt
460 printf
'%s\n' ${JOBIDS[@]} > ${SCRATCHDIR}/reweighting.jobIDs.txt
esac set_variable N_FPAR(echo-n ${FORMULA}|grep-oP"(^|[^x])\[[0-9]*\]"|cut-d'['-f2-|sort-u|wc-l) set_variable N_PARS $(($(wc-w< $
then fatal No hydrophone data file $HYDROPHONE_TXT fi sort gr k
std::istream & read(std::istream &in, JTestSummary &summary, const char delimiter= ' ')
Read test summary.
then usage $script[< detector identifier >< run range >]< QA/QCfile > nExample script to produce data quality plots nWhen a detector identifier and run range are data are downloaded from the database nand subsequently stored in the given QA QC file
&set_variable OSCPROBTABLE
fi set_variable REWEIGHTED_FILE
then JLigier sh continue fi cat
then echo Enter input within $TIMEOUT_S seconds echo n User name
o $QUALITY_ROOT d $DEBUG!CHECK_EXIT_CODE JPlot1D f
usr share Modules init zsh export TMPDIR
&set_variable OSCPARAMETERS
then usage $script< input file > nFor possible input files
then fatal Wrong number of arguments fi JConvertDetectorFormat a o
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
then echo Variable JPP_DIR undefined exit fi source $JPP_DIR setenv sh $JPP_DIR &dev null set_variable DEBUG set_variable WORKDIR
set_array PARAMETER_FILES
then echo Variable JPP_DIR undefined exit fi source $JPP_DIR setenv sh $JPP_DIR source $JPP_DIR software scripts qlib sh set_variable IFS0
skip elif((BINFRAC< 1.0))
do sput $STRING $FLOOR sget MODULE INPUT_FILES
then JCookie sh JDataQuality D $DETECTOR_ID R
then set_array INPUT_MC_FILES
do grep(chi2\[.\]\|gradient\)" $INPUT_FILE > $WORKDIR/stage.txt awk 'BEGIN
then JMuonMCEvt f $INPUT_FILE o $INTERMEDIATE_FILE d
then echo Submitting reweighting and histogram comparison jobs to nikhef stbc batch queue
double f3(const double x, const double y, const double z)
3D function.
fi set_array MC_MERGE_FILES(find ${WORKDIR}-maxdepth 1-name"*.merge.root") if(($
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
source $JPP_DIR setenv csh $JPP_DIR &dev null eval JShellParser o a A
do set_variable MC_MERGE_FILE
#define DEBUG(A)
Message macros.