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
o $QUALITY_ROOT d $DEBUG!CHECK_EXIT_CODE JPlot1D f
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 if do_usage *then usage $script[(input file)+] fi set_variable DEBUG set_variable WORKDIR TMPDIR
do grep(chi2\[.\]\|gradient\|string:\)" $INPUT_FILE > $WORKDIR/stage.txt awk 'BEGIN
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 fatal The output file must have the wildcard in the name
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
then JCookie sh JDataQuality D $DETECTOR_ID R
then JMuonMCEvt f $INPUT_FILE o $INTERMEDIATE_FILE d
then fatal The output file must have the wildcard in the e g root fi 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 echo Submitting reweighting and histogram comparison jobs to nikhef stbc batch queue
do sput $STRING $FLOOR sget MODULE INPUT_FILES
fi set_array MC_MERGE_FILES(find ${WORKDIR}-maxdepth 1-name"*.merge.root") if(($
then elif[["$OPTION"=="count"]]
then set_array INPUT_MC_FILES
#define DEBUG(A)
Message macros.