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
 
then JShowerPostfit f $INPUT_FILE o $OUTPUT_FILE N
 
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 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