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 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 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!CHECK_EXIT_CODE JPlot1D f
usr share Modules init zsh export TMPDIR
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 &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 usage $script< input file >[option[primary[working directory]]] nWhere option can be N
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