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 
  171         set_array INPUT_REFERENCE_FILES   ${INPUT_DAQ_FILES[@]}
 
  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 
  227         if   (( BINFRAC > 1.0 )); 
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 \\
 
  347     -
d  ${
DEBUG} --! ${BATCH_LOGGING:+&> ${LOG_FILE} 2>&1}
 
  350 timer_print ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
 
  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}
 
  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
 
fi set_variable REWEIGHTED_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
 
then fatal Wrong number of arguments fi JConvertDetectorFormat a o
 
&set_variable PARAMETER_FILE
 
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 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
 
then set_array INPUT_MC_FILES
 
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
 
do set_variable MC_MERGE_FILE
 
#define DEBUG(A)
Message macros.