8 # ------------------------------------------------------------------------------------------
10 # Utility script to evaluate MUPAGE 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
29 set_variable+ BATCH_PROCESSING REWEIGHT_MUPAGE_BATCH_PROCESSING 1
30 set_variable+ BATCH_LOGGING REWEIGHT_MUPAGE_BATCH_LOGGING 1
36 set_variable: TEST_TYPE1D_PARAMETERS REWEIGHT_MUPAGE_TEST_TYPE1D_PARAMETERS 0.05
37 set_variable: TEST_TYPE2D REWEIGHT_MUPAGE_TEST_TYPE2D 2
38 set_variable: TEST_TYPE2D_PARAMETERS REWEIGHT_MUPAGE_TEST_TYPE2D_PARAMETERS 0.05
40 set_variable: SCRATCHDIR REWEIGHT_MUPAGE_SCRATCHDIR ${
TMPDIR:-/tmp}
42 set_variable: N_TRIGGERED_HITS_RANGE REWEIGHT_MUPAGE_N_TRIGGERED_HITS_RANGE
"20 $((2**31))"
43 set_variable: COSTH_RANGE REWEIGHT_MUPAGE_COSTH_RANGE
"-1.0 1.0"
44 set_variable: ENERGY_RANGE REWEIGHT_MUPAGE_ENERGY_RANGE
"0.0 $((2.0**31))"
54 usage "$script <detector file> <input file>+ [reweighting formula [parameter file [working directory]]]"
71 # Determine number of parameters in given formula
80 # Initialise local batch processor
82 if [[ ${BATCH_PROCESSING} == 1 ]];
then
84 if ( is_CCNikhef );
then
86 echo "Submitting reweighting and histogram comparison jobs to nikhef-stbc batch queue: ${QUEUE_NAME}..."
88 if [[ ${SCRATCHDIR} ==
"${TMPDIR:-/tmp}" ]];
then
89 fatal
"Please specify a valid directory for local \'scratch\' files other than \"${TMPDIR:-/tmp}\""
94 fatal
"No batch-processing option available yet for CC-Lyon."
98 echo "Submitting reweighting and histogram comparison jobs to local batch queue: ${QUEUE_NAME}..."
102 $JPP_DIR/examples/scripts/mkqueue.sh ${QUEUE_NAME} ${QUEUE_SIZE}
"start"
107 # Check input and retrieve MC files
110 fatal
"Number of input parameters (= ${N_PARS}) is incompatible with given formula: ${FORMULA}"
117 echo "----------------------------"
119 echo "----------------------------"
121 echo "Remove the above regular files? (y/n)"
123 read REMOVE_MC_MERGE_FILES
125 if [[ ${REMOVE_MC_MERGE_FILES} ==
"y" || ${REMOVE_MC_MERGE_FILES} ==
"Y" ||
126 ${REMOVE_MC_MERGE_FILES} ==
"yes" || ${REMOVE_MC_MERGE_FILES} ==
"Yes" || ${REMOVE_MC_MERGE_FILES} ==
"YES" ]];
then
133 # Divide into DAQ- and MC-files
135 echo "Dividing into DAQ- and MC-files..."
139 if [[
"$(JPrintHeader -f ${INPUT_FILE} -k simul --)" !=
" 0" ]];
then # MC-
file
142 set_array INPUT_DAQ_FILES ${INPUT_DAQ_FILES[@]} ${
INPUT_FILE}
147 fatal
"No MC input files specified!"
155 $JPP_DIR/examples/JAAnet/JSortEvt \
156 -
f "${INPUT_MC_FILES[*]}" \
164 # Process reference
files
168 if ( ! reuse_file ${REFERENCE_POSTFIT_FILE} );
then
170 if (( ${#INPUT_DAQ_FILES} > 0 ));
then
177 ${SCRATCHDIR}/${REFERENCE_POSTFIT_FILE:t:
r}.\%.sh 1
179 cat >> ${EXEC_FILE} <<EOF
185 -
f "${INPUT_REFERENCE_FILES[*]}" \\
186 -
o ${REFERENCE_POSTFIT_FILE} \\
188 -#energyRange=
"${ENERGY_RANGE}" \\
189 -#coszenithRange=
"${COSTH_RANGE}" \\
190 -#triggeredHitsRange=
"${N_TRIGGERED_HITS_RANGE}" \\
192 -
d ${
DEBUG} --! ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
201 ${EXEC_FILE} ${BATCH_PROCESSING:+${QUEUE_NAME} ${SCRATCHDIR}}
207 # Create histogram comparison ASCII steering file
209 set_array NAMES $(JPrintName -
f ${REFERENCE_POSTFIT_FILE}:.)
213 rm -
f ${STEERING_FILE}
218 for NAME
in ${NAMES[@]};
do
221 -
f ${REFERENCE_POSTFIT_FILE}:^${NAME}\$ \
222 -
F "GetNcells / ((GetNbinsX+2)*(GetNbinsY+2))" \
225 if [[ ${NAME} !=
"META" && ${NAME} !=
"TObject" ]];
then
228 warning
"Cannot perform comparison test for histogram ${NAME} with >2 dimensions; skip."
230 echo "${NAME}\$ ${TEST_TYPE1D} ${TEST_TYPE1D_PARAMETERS}" >> ${STEERING_FILE}
231 set_array HISTOGRAMS1D ${HISTOGRAMS1D[@]} ${NAME}
233 echo "${NAME}\$ ${TEST_TYPE2D} ${TEST_TYPE2D_PARAMETERS}" >> ${STEERING_FILE}
234 set_array HISTOGRAMS2D ${HISTOGRAMS2D[@]} ${NAME}
240 # Process MC-files with standard weights
246 set_variable COMPARISON_FILE ${POSTFIT_FILE:
r}.comparison.root
248 echo "Submitting histogram comparison job for ${MC_MERGE_FILE:t}"
251 ${SCRATCHDIR}/${COMPARISON_FILE:t:
r}.job\%.sh ${JOB_SIZE}
253 cat >> ${EXEC_FILE} <<EOF
254 ${START_JOB+#!/bin/zsh}
256 ${START_JOB+
"if [ -z \${JPP_DIR} ]; then echo \"Variable JPP_DIR undefined.\"; exit; fi"}
258 ${START_JOB+
"source \${JPP_DIR}/setenv.sh \${JPP_DIR}"}
264 -
o ${POSTFIT_FILE} \\
266 -@energyRange=
"${ENERGY_RANGE}" \\
267 -@coszenithRange=
"${COSTH_RANGE}" \\
268 -@triggeredHitsRange=
"${N_TRIGGERED_HITS_RANGE}" \\
270 -
d ${
DEBUG} --! ${BATCH_LOGGING:+&> ${LOG_FILE}}
273 timer_print ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
278 -
a ${REFERENCE_POSTFIT_FILE} \\
279 -b ${POSTFIT_FILE} \\
280 -s ${STEERING_FILE} \\
281 -
o ${COMPARISON_FILE} \\
282 -t ${COMPARISON_FILE:
r}.txt \\
283 -
d ${
DEBUG} --! ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
286 timer_print ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
288 ${SUBMIT_JOB+
rm -
f ${EXEC_FILE}}
293 ${EXEC_FILE} ${BATCH_PROCESSING:+${QUEUE_NAME} ${SCRATCHDIR} ${JOBIDS[1]}}
300 # Process MC-files with redefined weights
306 echo "Submitting reweighting job for ${MC_MERGE_FILE:t}"
312 while read PARAMETERS;
do
314 if [[ ${${(z)PARAMETERS}[1]} ==
"#" ]];
then continue;
fi # skip comments
317 fatal
"Parameterset (${PARAMETERS}) is incompatible with given formula (${FORMULA})"
323 PARSET+=
" p${j}=$(printf '%.2e' ${${(z)PARAMETERS}[$((j+1))]});"
328 set_variable COMPARISON_FILE ${POSTFIT_FILE:
r}.comparison.root
331 ${SCRATCHDIR}/${COMPARISON_FILE:t:
r}.job\%.sh ${JOB_SIZE}
333 cat >> ${EXEC_FILE} <<EOF
334 ${START_JOB+#!/bin/zsh}
336 ${START_JOB+
"if [ -z \${JPP_DIR} ]; then echo \"Variable JPP_DIR undefined.\"; exit; fi"}
338 ${START_JOB+
"source \${JPP_DIR}/setenv.sh \${JPP_DIR}"}
342 JEvtReweightMupage \\
344 -
o ${REWEIGHTED_FILE} \\
347 -
d ${
DEBUG} --! ${BATCH_LOGGING:+&> ${LOG_FILE} 2>&1}
350 timer_print ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
355 -
f ${REWEIGHTED_FILE} \\
356 -
o ${POSTFIT_FILE} \\
358 -@energyRange=
"${ENERGY_RANGE}" \\
359 -@coszenithRange=
"${COSTH_RANGE}" \\
360 -@triggeredHitsRange=
"${N_TRIGGERED_HITS_RANGE}" \\
362 -
d ${
DEBUG} --! ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
365 timer_print ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
370 -
a ${REFERENCE_POSTFIT_FILE} \\
371 -b ${POSTFIT_FILE} \\
372 -s ${STEERING_FILE} \\
373 -
o ${COMPARISON_FILE} \\
374 -t ${COMPARISON_FILE:
r}.txt \\
375 -
d ${
DEBUG} --! ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
378 timer_print ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
380 rm -
f ${REWEIGHTED_FILE}
381 ${SUBMIT_JOB+
rm -
f ${EXEC_FILE}}
386 ${EXEC_FILE} ${BATCH_PROCESSING:+${QUEUE_NAME} ${SCRATCHDIR} ${JOBIDS[1]}}
389 echo "${COMPARISON_FILE:r}.txt; ${FORMULA}; ${PARSET}" >> ${
WORKDIR}/comparisonResults.meta.txt
394 if (( ${+JOBIDS} ));
then
395 rm -
f ${SCRATCHDIR}/reweighting.jobIDs.txt
396 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< $
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
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
then fatal Wrong number of arguments fi JConvertDetectorFormat a o
grep set_variable N_PARSETS(($(wc-l< ${PARAMETER_FILE})-$(grep"#"${PARAMETER_FILE}|wc-l))) if[[$
&set_variable PARAMETERS_FILE
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
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
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
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
then set_array INPUT_MC_FILES
#define DEBUG(A)
Message macros.