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
27 set_variable+ BATCH_PROCESSING REWEIGHT_MUPAGE_BATCH_PROCESSING 1
28 set_variable+ BATCH_LOGGING REWEIGHT_MUPAGE_BATCH_LOGGING 1
34 set_variable: TEST_TYPE1D_PARAMETERS REWEIGHT_MUPAGE_TEST_TYPE1D_PARAMETERS 0.05
35 set_variable: TEST_TYPE2D REWEIGHT_MUPAGE_TEST_TYPE2D 2
36 set_variable: TEST_TYPE2D_PARAMETERS REWEIGHT_MUPAGE_TEST_TYPE2D_PARAMETERS 0.05
38 set_variable: SCRATCHDIR REWEIGHT_MUPAGE_SCRATCHDIR ${
TMPDIR:-/tmp}
40 set_variable: N_TRIGGERED_HITS_RANGE REWEIGHT_MUPAGE_N_TRIGGERED_HITS_RANGE
"20 $((2**31))"
41 set_variable: COSTH_RANGE REWEIGHT_MUPAGE_COSTH_RANGE
"-1.0 1.0"
42 set_variable: ENERGY_RANGE REWEIGHT_MUPAGE_ENERGY_RANGE
"0.0 $((2.0**31))"
46 set_array PARAMETERS
"1.0"
49 usage "$script <detector file> <input file>+ [working directory [reweighting formula [parameter setting]+]]"
66 # Determine number of parameters in given formula
77 fatal
"Number of input parameters (= ${N_PARS}) is incompatible with given formula: ${FORMULA}"
84 echo "----------------------------"
86 echo "----------------------------"
88 echo "Remove the above regular files? (y/n)"
90 read REMOVE_MC_MERGE_FILES
92 if [[ ${REMOVE_MC_MERGE_FILES} ==
"y" || ${REMOVE_MC_MERGE_FILES} ==
"Y" ||
93 ${REMOVE_MC_MERGE_FILES} ==
"yes" || ${REMOVE_MC_MERGE_FILES} ==
"Yes" || ${REMOVE_MC_MERGE_FILES} ==
"YES" ]];
then
100 # Initialise local batch processor
102 if [[ ${BATCH_PROCESSING} == 1 ]];
then
104 if ( is_CCNikhef );
then
106 echo "Submitting reweighting and histogram comparison jobs to nikhef-stbc batch queue: ${QUEUE_NAME}..."
108 if [[ ${SCRATCHDIR} ==
"${TMPDIR:-/tmp}" ]];
then
109 fatal
"Please specify a valid directory for local \'scratch\' files other than \"${TMPDIR:-/tmp}\""
114 fatal
"No batch-processing option available yet for CC-Lyon."
118 echo "Submitting reweighting and histogram comparison jobs to local batch queue: ${QUEUE_NAME}..."
122 $JPP_DIR/examples/scripts/mkqueue.sh ${QUEUE_NAME} ${QUEUE_SIZE}
"start"
127 # Divide into DAQ- and MC-files
129 echo "Dividing into DAQ- and MC-files..."
133 if [[
"$(JPrintHeader -f ${INPUT_FILE} -k simul --)" !=
" 0" ]];
then # MC-file
136 set_array INPUT_DAQ_FILES ${INPUT_DAQ_FILES[@]} ${
INPUT_FILE}
141 fatal
"No MC input files specified!"
144 if (( ${#INPUT_DAQ_FILES} <= 0 ));
then
145 fatal
"No DAQ input files specified!"
160 -
f "${INPUT_DAQ_FILES[*]}" \
163 -@energyRange=
"${ENERGY_RANGE}" \
164 -@coszenithRange=
"${COSTH_RANGE}" \
165 -@triggeredHitsRange=
"${N_TRIGGERED_HITS_RANGE}" \
174 # Create histogram comparison ASCII steering file
180 rm -
f ${STEERING_FILE}
185 for NAME
in ${NAMES[@]};
do
189 -
F "GetNcells / ((GetNbinsX+2)*(GetNbinsY+2))" \
192 if [[ ${NAME} !=
"META" && ${NAME} !=
"TObject" ]];
then
194 if (( BINFRAC > 1.0 ));
then
195 warning
"Cannot perform comparison test for histogram ${NAME} with >2 dimensions; skip."
197 echo "${NAME}\$ ${TEST_TYPE1D} ${TEST_TYPE1D_PARAMETERS}" >> ${STEERING_FILE}
198 set_array HISTOGRAMS1D ${HISTOGRAMS1D[@]} ${NAME}
200 echo "${NAME}\$ ${TEST_TYPE2D} ${TEST_TYPE2D_PARAMETERS}" >> ${STEERING_FILE}
201 set_array HISTOGRAMS2D ${HISTOGRAMS2D[@]} ${NAME}
214 -
f "${INPUT_MC_FILES[*]}" \
215 -
o ${MC_MERGE_FILE} \
224 unset STANDARD_OUTPUT
228 echo "Submitting histogram comparison job for ${MC_MERGE_FILE:t}"
241 -
f ${MC_MERGE_FILE} \\
242 -
o ${MC_MERGE_FILE:
r}.postfit.root \\
244 -@energyRange=
"${ENERGY_RANGE}" \\
245 -@coszenithRange=
"${COSTH_RANGE}" \\
246 -@triggeredHitsRange=
"${N_TRIGGERED_HITS_RANGE}" \\
248 -
d ${
DEBUG} --! ${BATCH_LOGGING:+&> ${LOG_FILE}}
251 timer_print ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
257 -b ${MC_MERGE_FILE:
r}.postfit.root \\
258 -s ${STEERING_FILE} \\
259 -
o ${MC_MERGE_FILE:
r}.postfit.comparison.root \\
260 -t ${MC_MERGE_FILE:
r}.postfit.comparison.txt \\
261 -
d ${
DEBUG} --! ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
264 timer_print ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
271 if [[ ${BATCH_PROCESSING} == 1 ]];
then
273 if ( is_CCNikhef );
then
294 set_array STANDARD_OUTPUT ${MC_MERGE_FILE:
r}.postfit.comparison.root
298 # Process MC-files with redefined weights
300 unset REWEIGHTED_OUTPUT
301 typeset -
A REWEIGHTED_OUTPUT
308 if [[ -
f ${MC_MERGE_FILE:
r}.reweighting.comparison.meta.txt ]];
then
309 rm -i ${MC_MERGE_FILE:
r}.reweighting.comparison.meta.txt
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 if (( i % JOB_SIZE == 1 ));
then
345 echo "Submitting reweighting jobs ${JOBRANGE[1]} to ${JOBRANGE[2]} for ${MC_MERGE_FILE:t}"
359 ${START_JOB:+#!/bin/zsh}
361 ${START_JOB:+
"if [ -z ${JPP_DIR} ]; then echo \"Variable JPP_DIR undefined.\"; exit; fi"}
363 ${START_JOB:+
"source ${JPP_DIR}/setenv.sh ${JPP_DIR}"}
367 JEvtReweightMupage \\
368 -
f ${MC_MERGE_FILE} \\
372 -
d ${
DEBUG} --! ${BATCH_LOGGING:+&> ${LOG_FILE} 2>&1}
375 timer_print ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
383 -@energyRange=
"${ENERGY_RANGE}" \\
384 -@coszenithRange=
"${COSTH_RANGE}" \\
385 -@triggeredHitsRange=
"${N_TRIGGERED_HITS_RANGE}" \\
387 -
d ${
DEBUG} --! ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
390 timer_print ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
397 -s ${STEERING_FILE} \\
400 -
d ${
DEBUG} --! ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
403 timer_print ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
409 if (( ${+SUBMIT_JOB} ));
then
411 if [[ ${BATCH_PROCESSING} == 1 ]];
then
415 if ( is_CCNikhef );
then
437 echo "${OUTPUT_FILE:r}.postfit.comparison.txt; ${FORMULA}; ${PARSET}" >> ${
WORKDIR}/comparisonResults.meta.txt
445 rm -
f ${SCRATCHDIR}/reweighting.jobIDs.txt
446 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 JLigier sh continue fi cat
then echo Submitting reweighting and histogram comparison jobs to nikhef stbc batch queue
grep set_variable N_PARSETS(($(wc-l< ${PARAMETER_FILE})-$(grep"#"${PARAMETER_FILE}|wc-l))) if((N_PARS%N_FPAR!=0))
then echo Enter input within $TIMEOUT_S seconds echo n User name
o $QUALITY_ROOT d $DEBUG!JPlot1D f
then JShowerPostfit f $INPUT_FILE o $OUTPUT_FILE N
then usage $script< input file > nFor possible input files
then fatal Wrong number of arguments fi JConvertDetectorFormat a o
&set_array INPUT_FILES set_variable DETX_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 usage $script< detector file >< inputfile > fi case set_variable PARAMETER_FILE
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 if do_usage *then usage $script[(input file)+] fi set_variable DEBUG set_variable WORKDIR TMPDIR
then echo Variable JPP_DIR undefined exit fi source $JPP_DIR setenv sh $JPP_DIR &dev null set_variable DEBUG set_variable WORKDIR
&set_variable OUTPUT_FILE
skip elif((BINFRAC< 1.0))
do sput $STRING $FLOOR sget MODULE INPUT_FILES
then JMuonMCEvt f $INPUT_FILE o $INTERMEDIATE_FILE d
fi set_array MC_MERGE_FILES(find ${WORKDIR}-maxdepth 1-name"*.merge.root") if(($
then set_variable EXEC_FILE
then echo Variable JPP_DIR undefined exit fi source $JPP_DIR setenv sh $JPP_DIR set_variable IFS0
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
then set_array INPUT_MC_FILES
#define DEBUG(A)
Message macros.
then fatal No DAQ input files specified fi set_variable DAQ_POSTFIT_FILE