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 \"WWCHI2/NDF\""
37 set_variable: TEST_TYPE2D_PARAMETERS REWEIGHTING_TEST_TYPE2D_PARAMETERS
"0.05 0.05"
41 set_variable: N_TRIGGERED_HITS_RANGE REWEIGHTING_N_TRIGGERED_HITS_RANGE
"20 $((2**31))"
42 set_variable: CONTAINMENT_VOLUME REWEIGHTING_CONTAINMENT_VOLUME
"0.0 0.0 $((2**31)) -$((2**31)) $((2**31))"
43 set_variable: COSTH_RANGE REWEIGHTING_COSTH_RANGE
"-1.0 1.0"
44 set_variable: ENERGY_RANGE REWEIGHTING_ENERGY_RANGE
"0.0 $((2.0**31))"
54 usage "$script <detector file> <input file>+ <reweighting file> <oscillation probability table> [default oscillation parameter file [oscillation parameter grid file [working directory]]]\n" \
55 "Note that if more than one input file is given all optional parameters need to be specified."
76 # Recursive function to process parameter files
78 # \param prefix prefix
79 # \param label neutrino label
80 # \param formula reweighting formula
81 # \param parameters_file parameter file
83 process_parameters() {
88 local parameters_file=$4
94 if [[ ${line:0:1} == \# ]];
then continue;
fi
96 pars=( $(
echo $line | cut -
d' ' -
f1-) )
100 for ((
i=1;
i<=${#pars}; ++
i ));
do
101 local parstr=
"${parstr} p$((i-1))=${pars[$i]};"
104 local reweighting_input=$(printf
"\t%s=\"${formula};${parstr}\"" ${(z)labels})
107 process_parameters
"${prefix}${reweighting_input}" "$@"
109 printf
'%b\n' "${prefix}${reweighting_input}"
111 done < ${parameters_file}
115 # Function to write job identifier to file
117 # \param output_file output file
123 if (( ${+BATCH_PROCESSING} ));
then
125 if [[ -z $EXEC_FILE ]];
then fatal
"write_jobID(): Variable EXEC_FILE undefined";
fi
127 if ( is_CCNikhef );
then
128 local jobid=$(qstat -
u $USER -
f |
grep -B1
"${EXEC_FILE:t:r}.${USER}" |
grep -oP
"Job Id: [0-9]+" | tail -1 | cut -
d' ' -
f3)
130 local jobid=$(ps |
grep "${EXEC_FILE:t:r}" | tail -1 | tr -s
' ' | cut -
d' ' -f2)
133 echo ${jobid} >> ${output_file}
138 # Set neutrino labels
150 # Initialise local batch processor
152 if [[ ${BATCH_PROCESSING} == 1 ]];
then
154 if ( is_CCNikhef );
then
156 echo "Submitting reweighting and histogram comparison jobs to nikhef-stbc batch queue: ${QUEUE_NAME}..."
158 if [[ ${SCRATCHDIR} ==
"/tmp" ]];
then
159 fatal
"Please specify a valid directory for local \'scratch\' files other than \"${TMPDIR:-/tmp}\""
164 fatal
"No batch-processing option available yet for CC-Lyon."
168 echo "Submitting reweighting and histogram comparison jobs to local batch queue: ${QUEUE_NAME}..."
170 $JPP_DIR/examples/scripts/mkqueue.sh ${QUEUE_NAME} ${QUEUE_SIZE}
"start"
182 echo "----------------------------"
184 echo "----------------------------"
186 echo "Remove the above regular files? (y/n)"
188 read REMOVE_MC_MERGE_FILES
190 if [[ ${REMOVE_MC_MERGE_FILES} ==
"y" || ${REMOVE_MC_MERGE_FILES} ==
"Y" ||
191 ${REMOVE_MC_MERGE_FILES} ==
"yes" || ${REMOVE_MC_MERGE_FILES} ==
"Yes" || ${REMOVE_MC_MERGE_FILES} ==
"YES" ]];
then
200 # Divide into DAQ- and MC-files
202 echo "Dividing into DAQ- and MC-files..."
207 rm -
f ${INPUT_MC_FILELIST} ${INPUT_DAQ_FILELIST}
208 touch ${INPUT_MC_FILELIST} ${INPUT_DAQ_FILELIST}
212 if [[
"$(JPrintHeader -f ${INPUT_FILE} -k simul --)" !=
" 0" ]];
then # MC-
file
228 if (( $N_MC_FILES == 0 ));
then
233 # Initialize job ID file
246 $JPP_DIR/examples/JAAnet/JSortEvt \
247 -
f ${INPUT_MC_FILELIST} \
249 -
d ${
DEBUG} --! ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
252 timer_print ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
258 if (( N_DAQ_FILES > 0 ));
then
265 ${SCRATCHDIR}/split_events.job\%.sh 1
272 source ${JPP_DIR}/setenv.sh ${JPP_DIR} > /dev/
null
293 \${JPP_DIR}/examples/JAAnet/JSplitEvt \
295 -
o "${INPUT_REFERENCE_FILE} ${INPUT_REWEIGHTING_FILE}" \
300 timer_print ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
302 ${SUBMIT_JOB+
rm -
f ${EXEC_FILE}}
307 set_array INPUT_REWEIGHTING_FILES \
314 ${EXEC_FILE} ${(z)${BATCH_PROCESSING:+${QUEUE_NAME} ${SCRATCHDIR}}}
322 # Process reference files and create histogram comparison steering file
327 if ( ! reuse_file ${REFERENCE_POSTFIT_FILE} );
then
335 ${SCRATCHDIR}/${REFERENCE_POSTFIT_FILE:t:
r}.job\%.sh 1
342 source ${JPP_DIR}/setenv.sh ${JPP_DIR} > /dev/
null
347 -
f "${INPUT_REFERENCE_FILES[*]}" \\
348 -
o ${REFERENCE_POSTFIT_FILE} \\
352 -@atmospheric=
"${(k)NULABELS}" \\
353 -%energyRange=
"${ENERGY_RANGE}" \\
354 -%coszenithRange=
"${COSTH_RANGE}" \\
355 -%containmentVolume=
"${CONTAINMENT_VOLUME}" \\
356 -%triggeredHitsRange=
"${N_TRIGGERED_HITS_RANGE}" \\
358 -
d ${
DEBUG} --! ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
361 timer_print ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
363 set_array NAMES \$(JPrintName -
f ${REFERENCE_POSTFIT_FILE}:.)
365 for NAME
in \${NAMES[@]};
do
369 -
f ${REFERENCE_POSTFIT_FILE}:^\${NAME}\$ \
370 -
F "GetNcells / ((GetNbinsX+2)*(GetNbinsY+2))" \
373 if [[ \${NAME} !=
"META" && \${NAME} !=
"TObject" ]];
then
376 warning
"Cannot perform comparison test for histogram \${NAME} with >2 dimensions; skip."
378 echo "\${NAME}\$ ${TEST_TYPE1D} ${TEST_TYPE1D_PARAMETERS}" >> ${STEERING_FILE}
380 echo "\${NAME}\$ ${TEST_TYPE2D} ${TEST_TYPE2D_PARAMETERS}" >> ${STEERING_FILE}
391 ${EXEC_FILE} ${(z)${BATCH_PROCESSING:+${QUEUE_NAME} ${SCRATCHDIR} $PREREQUISITES[@]}}
399 # Process MC-files with standard weights
402 set_variable DEFAULT_COMPARISON_FILE ${DEFAULT_POSTFIT_FILE:
r}.comparison.root
404 if ( ! reuse_file ${DEFAULT_COMPARISON_FILE} );
then
406 echo "Submitting default histogram comparison jobs"
409 ${SCRATCHDIR}/${DEFAULT_COMPARISON_FILE:t:
r}.job\%.sh 1
416 source ${JPP_DIR}/setenv.sh ${JPP_DIR} > /dev/
null
420 unset DEFAULT_POSTFIT_FILES
422 for ((
i=1;
i<=${#INPUT_REWEIGHTING_FILES}; ++
i ));
do
427 rm -
f ${POSTFIT_FILE} ${COMPARISON_FILE}
434 -
o ${POSTFIT_FILE} \\
438 -@atmospheric=
"${(k)NULABELS}" \\
439 -%energyRange=
"${ENERGY_RANGE}" \\
440 -%coszenithRange=
"${COSTH_RANGE}" \\
441 -%containmentVolume=
"${CONTAINMENT_VOLUME}" \\
442 -%triggeredHitsRange=
"${N_TRIGGERED_HITS_RANGE}" \\
444 -
d ${
DEBUG} --! ${BATCH_LOGGING:+&>> ${LOG_FILE}}
447 timer_print ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
450 set_array DEFAULT_POSTFIT_FILES \
451 ${DEFAULT_POSTFIT_FILES[@]} ${POSTFIT_FILE}
456 hadd -
v 0 -
f ${DEFAULT_POSTFIT_FILE} ${DEFAULT_POSTFIT_FILES[@]}
461 -
a ${REFERENCE_POSTFIT_FILE} \\
462 -b ${DEFAULT_POSTFIT_FILE} \\
463 -s ${STEERING_FILE} \\
464 -
o ${DEFAULT_COMPARISON_FILE} \\
465 -t ${DEFAULT_COMPARISON_FILE:
r}.txt \\
466 -
d ${
DEBUG} --! ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
469 timer_print ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
477 ${EXEC_FILE} ${(z)${BATCH_PROCESSING:+${QUEUE_NAME} ${SCRATCHDIR} ${REFERENCE_POSTFIT_JOBID}}}
487 # Parse reweighting inputs
494 for TYPE
in ${(z)TYPES};
do
496 ${LABELS[@]} ${NULABELS[$TYPE]}
500 ${NUTYPES[@]} ${TYPES[@]}
502 set_array PARINPUTS \
503 ${PARINPUTS[@]}
"${LABELS}" "${FORMULA}" "${PARAMETER_FILE}"
507 set_variable PARINPUTS_FILE ${SCRATCHDIR}/parametersets.${RANDOM}.txt
509 process_parameters
' ' ${PARINPUTS[@]} > ${PARINPUTS_FILE}
512 # Compile oscillation parameters files
514 if [[ ! -z $OSCPARAMETERS_GRID_FILE ]];
then
516 $JPP_DIR/examples/JOscProb/JWriteOscParametersGrid \
518 -
o ${
WORKDIR}/oscillation_parameters.\%.txt \
526 ls ${
WORKDIR}/oscillation_parameters.*.txt >> ${OSCPARAMETERS_FILE_LIST}
529 # Process MC-files with redefined weights
542 echo "Submitting reweighting job ${n}"
544 IFS=$
'\t' read -
r -
A PARINPUTS <<<
"${LINE}"
546 while read -
u 4 OSCPARAMETERS_FILE;
do
549 set_variable REWEIGHTED_COMPARISON_FILE ${REWEIGHTED_POSTFIT_FILE:
r}.comparison.root
552 ${SCRATCHDIR}/reweighting.job\%.sh ${JOB_SIZE}
554 if (( ${+START_JOB} ));
then
561 source ${JPP_DIR}/setenv.sh ${JPP_DIR} > /dev/
null
565 for ((
j=1;
j<=${#INPUT_REWEIGHTING_FILES}; ++
j ));
do
571 set_array POSTFIT_FILES \
572 ${POSTFIT_FILES[@]} ${POSTFIT_FILE}
576 set_array PRIMARIES \\
577 \$(JPrintHeader -
f ${
INPUT_FILE} -
k primary -- | cut -
d'=' -f2)
579 set_array PRIMARIES \\
586 if [[
"${NUTYPES[@]}" =~
"\${PRIMARY}" ]];
then
592 if (( \${+DO_REWEIGHTING} ));
then
596 JEvtReweightGSeaGen \\
598 -
o ${REWEIGHTED_FILE} \\
600 -@ ${OSCPARAMETERS_FILE} \\
601 $(printf
' -#%s \\\n' ${PARINPUTS[@]})
602 -
d ${
DEBUG} --! ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
605 timer_print ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
610 -
f ${REWEIGHTED_FILE} \\
611 -
o ${POSTFIT_FILE} \\
613 -%energyRange=
"${ENERGY_RANGE}" \\
614 -%coszenithRange=
"${COSTH_RANGE}" \\
615 -%containmentVolume=
"${CONTAINMENT_VOLUME}" \\
616 -%triggeredHitsRange=
"${N_TRIGGERED_HITS_RANGE}" \\
618 -
d ${
DEBUG} --! ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
621 timer_print ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
623 else # This
file does not correspond to any of the given primaries
626 ln -fv ${
INPUT_FILE:
r}.postfit.root ${POSTFIT_FILE}
629 rm -
f ${REWEIGHTED_FILE}
635 hadd -
v 0 -
f ${REWEIGHTED_POSTFIT_FILE} ${POSTFIT_FILES[@]}
640 -
a ${REFERENCE_POSTFIT_FILE} \\
641 -b ${REWEIGHTED_POSTFIT_FILE} \\
642 -s ${STEERING_FILE} \\
643 -
o ${REWEIGHTED_COMPARISON_FILE} \\
644 -t ${REWEIGHTED_COMPARISON_FILE:
r}.txt \\
645 -
d ${
DEBUG} --! ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
648 timer_print ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
650 ${SUBMIT_JOB+#
rm -
f ${EXEC_FILE}}
653 if (( ${+SUBMIT_JOB} ));
then
658 ${EXEC_FILE} ${(z)${BATCH_PROCESSING:+${QUEUE_NAME} ${SCRATCHDIR} ${
PREREQUISITES[@]}}}
665 echo "${REWEIGHTED_COMPARISON_FILE:r}.txt\t${OSCPARAMETERS_FILE}\t${PARINPUTS[*]}" >> ${META_FILE}
669 done 4< ${OSCPARAMETERS_FILE_LIST}
671 done 3< ${PARINPUTS_FILE}
673 rm -
f ${PARINPUTS_FILE}
then rm f $STEERING_FILE touch $STEERING_FILE set_array PREREQUISITES(cat $JOBID_FILE) configure_job $
then fatal No hydrophone data file $HYDROPHONE_TXT fi sort gr k
then usage $script< detector file >< inputfiles > n Note that if more than one input file is specified
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
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
then usage $script< input file > nFor possible input files
&set_variable PARAMETER_FILE
do set_variable MC_MERGE_FILE
&set_variable DEFAULT_OSCPARAMETERS_FILE
then fatal Wrong number of arguments fi JConvertDetectorFormat a o
const JPolynome f1(1.0, 2.0, 3.0)
Function.
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 set_array INPUT_REFERENCE_FILES(cat ${INPUT_DAQ_FILELIST}) set_array INPUT_REWEIGHTING_FILES $
do set_variable BINFRAC(JPrintResult-f ${REFERENCE_POSTFIT_FILE}:^\${NAME}\$-F"GetNcells / ((GetNbinsX+2)*(GetNbinsY+2))"-O"%f"--) if[[\$
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
do set_variable N_EVENTS(JPrintTree-f ${MC_MERGE_FILE}-d ${DEBUG}--|tr-s ' '|grep"E Evt"|cut-d' '-f3) set_variable N1 $((N_EVENTS/2)) set_variable N2 $((N_EVENTS-N1)) set_variable INPUT_REFERENCE_FILE $
then fatal No MC input files specified fi set_variable JOBID_FILE
&set_variable OUTPUT_FILE
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))
then usage $script< input file >[option[primary[working directory]]] nWhere option can be LINE
do sput $STRING $FLOOR sget MODULE INPUT_FILES
part1 root set_variable INPUT_REWEIGHTING_FILE
then JCookie sh JDataQuality D $DETECTOR_ID R
do grep(chi2\[.\]\|gradient\)" $INPUT_FILE > $WORKDIR/stage.txt awk 'BEGIN
then JMuonMCEvt f $INPUT_FILE o $INTERMEDIATE_FILE d
&set_variable OSCPARAMETERS_GRID_FILE
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(($
static JNullStream null
Null I/O stream.
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
set_variable REWEIGHTING_INPUTS_FILE
#define DEBUG(A)
Message macros.