8 # ------------------------------------------------------------------------------------------ 
   10 #                         Utility script to evaluate gSeaGen 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
 
   28 set_variable+    BATCH_PROCESSING         REWEIGHTING_BATCH_PROCESSING                1
 
   35 set_variable:    TEST_TYPE1D_PARAMETERS   REWEIGHTING_TEST_TYPE1D_PARAMETERS          
"0.05 \"WWCHI2/NDF\"" 
   37 set_variable:    TEST_TYPE2D_PARAMETERS   REWEIGHTING_TEST_TYPE2D_PARAMETERS          
"0.05 0.05" 
   41 set_variable:    N_TRIGGERED_HITS_RANGE   REWEIGHTING_N_TRIGGERED_HITS_RANGE          
"20 $((2**31))" 
   42 set_variable:    CONTAINMENT_VOLUME       REWEIGHTING_CONTAINMENT_VOLUME              
"0.0 0.0 $((2**31)) -$((2**31)) $((2**31))"  
   43 set_variable:    COSTH_RANGE              REWEIGHTING_COSTH_RANGE                     
"-1.0 1.0" 
   44 set_variable:    ENERGY_RANGE             REWEIGHTING_ENERGY_RANGE                    
"0.0 $((2.0**31))" 
   54     usage "$script <detector file> <input file>+ <reweighting file> <oscillation probability table> [default oscillation parameter file [oscillation parameter grid file [working directory]]]\n" \
 
   55           "Note that if more than one input file is given all optional parameters need to be specified." 
   76 # Recursive function to process parameter files 
   78 # \param  prefix                   prefix 
   79 # \param  label                    neutrino label 
   80 # \param  formula                  reweighting formula 
   81 # \param  parameters_file          parameter file 
   83 process_parameters() {
 
   88     local parameters_file=$4
 
   94         if [[ ${line:0:1} == \# ]]; 
then continue; 
fi 
   96         pars=( $(
echo $line | cut -
d' ' -
f1-) )
 
  100         for (( 
i=1; 
i<=${#pars}; ++
i )); 
do 
  101             local parstr=
"${parstr} p$((i-1))=${pars[$i]};" 
  104         local reweighting_input=$(printf 
"\t%s=\"${formula};${parstr}\"" ${(z)labels})
 
  107             process_parameters 
"${prefix}${reweighting_input}" "$@" 
  109             printf 
'%b\n'      "${prefix}${reweighting_input}" 
  111     done < ${parameters_file}
 
  115 # Function to write job identifier to file 
  117 # \param  output_file    output file 
  123     if (( ${+BATCH_PROCESSING} )); 
then 
  125         if [[ -z $EXEC_FILE ]]; 
then fatal 
"write_jobID(): Variable EXEC_FILE undefined"; 
fi 
  127         if ( is_CCNikhef ); 
then 
  128             local jobid=$(qstat -
u $USER -
f | 
grep -B1 
"${EXEC_FILE:t:r}.${USER}" | 
grep -oP 
"Job Id: [0-9]+" | tail -1 | cut -
d' ' -
f3)
 
  130             local jobid=$(ps | 
grep "${EXEC_FILE:t:r}" | tail -1 | tr -s 
' ' | cut -
d' ' -f2)
 
  133         echo ${jobid} >> ${output_file}
 
  138 # Set neutrino labels 
  150 # Initialise local batch processor 
  152 if [[ ${BATCH_PROCESSING} == 1 ]]; 
then 
  154     if   ( is_CCNikhef ); 
then 
  156         echo "Submitting reweighting and histogram comparison jobs to nikhef-stbc batch queue: ${QUEUE_NAME}..." 
  158         if [[ ${SCRATCHDIR} == 
"/tmp" ]]; 
then 
  159             fatal 
"Please specify a valid directory for local \'scratch\' files other than \"${TMPDIR:-/tmp}\"" 
  164         fatal 
"No batch-processing option available yet for CC-Lyon." 
  168         echo "Submitting reweighting and histogram comparison jobs to local batch queue: ${QUEUE_NAME}..." 
  170         $JPP_DIR/examples/scripts/mkqueue.sh  ${QUEUE_NAME}  ${QUEUE_SIZE}  
"start" 
  182     echo  "----------------------------"     
  184     echo  "----------------------------" 
  186     echo  "Remove the above regular files? (y/n)" 
  188     read   REMOVE_MC_MERGE_FILES
 
  190     if [[ ${REMOVE_MC_MERGE_FILES} == 
"y"   || ${REMOVE_MC_MERGE_FILES} == 
"Y"   ||
 
  191           ${REMOVE_MC_MERGE_FILES} == 
"yes" || ${REMOVE_MC_MERGE_FILES} == 
"Yes" || ${REMOVE_MC_MERGE_FILES} == 
"YES" ]]; 
then 
  200 # Divide into DAQ- and MC-files 
  202 echo "Dividing into DAQ- and MC-files..." 
  207 rm -
f ${INPUT_MC_FILELIST} ${INPUT_DAQ_FILELIST}
 
  208 touch ${INPUT_MC_FILELIST} ${INPUT_DAQ_FILELIST}
 
  212     if [[ 
"$(JPrintHeader -f ${INPUT_FILE} -k simul --)" != 
" 0" ]]; 
then # MC-
file 
  228 if (( $N_MC_FILES == 0 )); 
then 
  233 # Initialize job ID file 
  246     $JPP_DIR/examples/JAAnet/JSortEvt \
 
  247         -
f ${INPUT_MC_FILELIST}                                                            \
 
  249         -
d ${
DEBUG} --! ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
 
  252     timer_print ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
 
  258 if (( N_DAQ_FILES > 0 )); 
then 
  265         ${SCRATCHDIR}/split_events.job\%.sh 1
 
  272 source ${JPP_DIR}/setenv.sh ${JPP_DIR} > /dev/
null 
  293     \${JPP_DIR}/examples/JAAnet/JSplitEvt \
 
  295         -
o "${INPUT_REFERENCE_FILE} ${INPUT_REWEIGHTING_FILE}"  \
 
  300 timer_print ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
 
  302 ${SUBMIT_JOB+
rm -
f ${EXEC_FILE}}
 
  307         set_array INPUT_REWEIGHTING_FILES \
 
  314         ${EXEC_FILE} ${(z)${BATCH_PROCESSING:+${QUEUE_NAME} ${SCRATCHDIR}}}
 
  322 # Process reference files and create histogram comparison steering file 
  327 if ( ! reuse_file ${REFERENCE_POSTFIT_FILE} ); 
then 
  335         ${SCRATCHDIR}/${REFERENCE_POSTFIT_FILE:t:
r}.job\%.sh 1
 
  342 source ${JPP_DIR}/setenv.sh ${JPP_DIR} > /dev/
null 
  347     -
f "${INPUT_REFERENCE_FILES[*]}"                                                   \\
 
  348     -
o  ${REFERENCE_POSTFIT_FILE}                                                      \\
 
  352     -@atmospheric=
"${(k)NULABELS}"                                                     \\
 
  353     -%energyRange=
"${ENERGY_RANGE}"                                                    \\
 
  354     -%coszenithRange=
"${COSTH_RANGE}"                                                  \\
 
  355     -%containmentVolume=
"${CONTAINMENT_VOLUME}"                                        \\
 
  356     -%triggeredHitsRange=
"${N_TRIGGERED_HITS_RANGE}"                                   \\
 
  358     -
d  ${
DEBUG} --! ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
 
  361 timer_print ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
 
  363 set_array NAMES  \$(JPrintName -
f ${REFERENCE_POSTFIT_FILE}:.)
 
  365 for NAME 
in \${NAMES[@]}; 
do 
  369         -
f ${REFERENCE_POSTFIT_FILE}:^\${NAME}\$        \
 
  370         -
F "GetNcells / ((GetNbinsX+2)*(GetNbinsY+2))" \
 
  373     if [[ \${NAME} != 
"META" && \${NAME} != 
"TObject" ]]; 
then 
  376             warning 
"Cannot perform comparison test for histogram \${NAME} with >2 dimensions; skip." 
  378             echo "\${NAME}\$   ${TEST_TYPE1D}   ${TEST_TYPE1D_PARAMETERS}" >> ${STEERING_FILE}
 
  380             echo "\${NAME}\$   ${TEST_TYPE2D}   ${TEST_TYPE2D_PARAMETERS}" >> ${STEERING_FILE}
 
  391         ${EXEC_FILE} ${(z)${BATCH_PROCESSING:+${QUEUE_NAME} ${SCRATCHDIR} $PREREQUISITES[@]}}
 
  399 # Process MC-files with standard weights 
  402 set_variable DEFAULT_COMPARISON_FILE ${DEFAULT_POSTFIT_FILE:
r}.comparison.root
 
  404 if ( ! reuse_file ${DEFAULT_COMPARISON_FILE} ); 
then 
  406     echo "Submitting default histogram comparison jobs"  
  409         ${SCRATCHDIR}/${DEFAULT_COMPARISON_FILE:t:
r}.job\%.sh 1
 
  416 source ${JPP_DIR}/setenv.sh ${JPP_DIR} > /dev/
null 
  420     unset DEFAULT_POSTFIT_FILES
 
  422     for (( 
i=1; 
i<=${#INPUT_REWEIGHTING_FILES}; ++
i )); 
do 
  427         rm -
f ${POSTFIT_FILE} ${COMPARISON_FILE}
 
  434     -
o ${POSTFIT_FILE}                                                                     \\
 
  438     -@atmospheric=
"${(k)NULABELS}"                                                         \\
 
  439     -%energyRange=
"${ENERGY_RANGE}"                                                        \\
 
  440     -%coszenithRange=
"${COSTH_RANGE}"                                                      \\
 
  441     -%containmentVolume=
"${CONTAINMENT_VOLUME}"                                            \\
 
  442     -%triggeredHitsRange=
"${N_TRIGGERED_HITS_RANGE}"                                       \\
 
  444     -
d ${
DEBUG} --! ${BATCH_LOGGING:+&>> ${LOG_FILE}}
 
  447 timer_print ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
 
  450         set_array DEFAULT_POSTFIT_FILES \
 
  451             ${DEFAULT_POSTFIT_FILES[@]} ${POSTFIT_FILE}
 
  456 hadd -
v 0 -
f ${DEFAULT_POSTFIT_FILE} ${DEFAULT_POSTFIT_FILES[@]}
 
  461     -
a ${REFERENCE_POSTFIT_FILE}                                                           \\
 
  462     -b ${DEFAULT_POSTFIT_FILE}                                                             \\
 
  463     -s ${STEERING_FILE}                                                                    \\
 
  464     -
o ${DEFAULT_COMPARISON_FILE}                                                          \\
 
  465     -t ${DEFAULT_COMPARISON_FILE:
r}.txt                                                    \\
 
  466     -
d ${
DEBUG} --! ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
 
  469 timer_print ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
 
  477         ${EXEC_FILE} ${(z)${BATCH_PROCESSING:+${QUEUE_NAME} ${SCRATCHDIR} ${REFERENCE_POSTFIT_JOBID}}}
 
  487 # Parse reweighting inputs 
  494     for TYPE 
in ${(z)TYPES}; 
do 
  496                   ${LABELS[@]} ${NULABELS[$TYPE]}
 
  500               ${NUTYPES[@]} ${TYPES[@]}
 
  502     set_array PARINPUTS \
 
  503               ${PARINPUTS[@]} 
"${LABELS}" "${FORMULA}" "${PARAMETER_FILE}" 
  507 set_variable PARINPUTS_FILE  ${SCRATCHDIR}/parametersets.${RANDOM}.txt
 
  509 process_parameters 
' ' ${PARINPUTS[@]} > ${PARINPUTS_FILE}
 
  512 # Compile oscillation parameters files 
  514 if [[ ! -z $OSCPARAMETERS_GRID_FILE ]]; 
then 
  516     $JPP_DIR/examples/JOscProb/JWriteOscParametersGrid \
 
  518         -
o ${
WORKDIR}/oscillation_parameters.\%.txt \
 
  526 ls ${
WORKDIR}/oscillation_parameters.*.txt >> ${OSCPARAMETERS_FILE_LIST}
 
  529 # Process MC-files with redefined weights 
  542     echo "Submitting reweighting job ${n}"       
  544     IFS=$
'\t' read -
r -
A PARINPUTS <<< 
"${LINE}" 
  546     while read -
u 4 OSCPARAMETERS_FILE; 
do 
  549         set_variable REWEIGHTED_COMPARISON_FILE   ${REWEIGHTED_POSTFIT_FILE:
r}.comparison.root
 
  552             ${SCRATCHDIR}/reweighting.job\%.sh ${JOB_SIZE}
 
  554         if (( ${+START_JOB} )); 
then 
  561 source ${JPP_DIR}/setenv.sh ${JPP_DIR} > /dev/
null 
  565         for (( 
j=1; 
j<=${#INPUT_REWEIGHTING_FILES}; ++
j )); 
do 
  571             set_array POSTFIT_FILES \
 
  572                       ${POSTFIT_FILES[@]} ${POSTFIT_FILE}
 
  576 set_array PRIMARIES \\
 
  577     \$(JPrintHeader -
f ${
INPUT_FILE} -
k primary -- | cut -
d'=' -f2)
 
  579 set_array PRIMARIES  \\
 
  586     if [[ 
"${NUTYPES[@]}" =~ 
"\${PRIMARY}" ]]; 
then 
  592 if (( \${+DO_REWEIGHTING} )); 
then 
  596     JEvtReweightGSeaGen \\
 
  598         -
o  ${REWEIGHTED_FILE}                                                                 \\
 
  600         -@  ${OSCPARAMETERS_FILE}                                                              \\
 
  601 $(printf 
'        -#%s \\\n' ${PARINPUTS[@]})
 
  602         -
d  ${
DEBUG} --! ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
 
  605      timer_print ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
 
  610         -
f ${REWEIGHTED_FILE}                                                                  \\
 
  611         -
o ${POSTFIT_FILE}                                                                     \\
 
  613         -%energyRange=
"${ENERGY_RANGE}"                                                        \\
 
  614         -%coszenithRange=
"${COSTH_RANGE}"                                                      \\
 
  615         -%containmentVolume=
"${CONTAINMENT_VOLUME}"                                            \\
 
  616         -%triggeredHitsRange=
"${N_TRIGGERED_HITS_RANGE}"                                       \\
 
  618         -
d ${
DEBUG} --! ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
 
  621     timer_print ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
 
  623 else # This 
file does not correspond to any of the given primaries
 
  626     ln -fv ${
INPUT_FILE:
r}.postfit.root   ${POSTFIT_FILE}
 
  629 rm -
f ${REWEIGHTED_FILE}
 
  635 hadd -
v 0 -
f ${REWEIGHTED_POSTFIT_FILE} ${POSTFIT_FILES[@]}
 
  640     -
a ${REFERENCE_POSTFIT_FILE}                                                           \\
 
  641     -b ${REWEIGHTED_POSTFIT_FILE}                                                          \\
 
  642     -s ${STEERING_FILE}                                                                    \\
 
  643     -
o ${REWEIGHTED_COMPARISON_FILE}                                                       \\
 
  644     -t ${REWEIGHTED_COMPARISON_FILE:
r}.txt                                                 \\
 
  645     -
d ${
DEBUG} --! ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
 
  648 timer_print ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
 
  650 ${SUBMIT_JOB+#
rm -
f ${EXEC_FILE}}
 
  653         if (( ${+SUBMIT_JOB} )); 
then 
  658                 ${EXEC_FILE} ${(z)${BATCH_PROCESSING:+${QUEUE_NAME} ${SCRATCHDIR} ${
PREREQUISITES[@]}}}
 
  665         echo "${REWEIGHTED_COMPARISON_FILE:r}.txt\t${OSCPARAMETERS_FILE}\t${PARINPUTS[*]}" >> ${META_FILE}
 
  669     done 4< ${OSCPARAMETERS_FILE_LIST}
 
  671 done 3< ${PARINPUTS_FILE}
 
  673 rm -
f ${PARINPUTS_FILE}
 
then rm f $STEERING_FILE touch $STEERING_FILE set_array PREREQUISITES(cat $JOBID_FILE) configure_job $
 
then fatal No hydrophone data file $HYDROPHONE_TXT fi sort gr k
 
then usage $script< detector file >< inputfiles > n Note that if more than one input file is specified
 
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
 
&set_variable OSCPROBTABLE
 
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
 
&set_variable PARAMETER_FILE
 
do set_variable MC_MERGE_FILE
 
&set_variable DEFAULT_OSCPARAMETERS_FILE
 
then fatal Wrong number of arguments fi JConvertDetectorFormat a o
 
const JPolynome f1(1.0, 2.0, 3.0)
Function. 
 
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 &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
 
do set_variable N_EVENTS(JPrintTree-f ${MC_MERGE_FILE}-d ${DEBUG}--|tr-s ' '|grep"E Evt"|cut-d' '-f3) set_variable N1 $((N_EVENTS/2)) set_variable N2 $((N_EVENTS-N1)) set_variable INPUT_REFERENCE_FILE $
 
then fatal No MC input files specified fi set_variable JOBID_FILE
 
&set_variable OUTPUT_FILE
 
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))
 
then usage $script< input file >[option[primary[working directory]]] nWhere option can be LINE
 
do sput $STRING $FLOOR sget MODULE INPUT_FILES
 
part1 root set_variable INPUT_REWEIGHTING_FILE
 
then JCookie sh JDataQuality D $DETECTOR_ID R
 
do grep(chi2\[.\]\|gradient\)" $INPUT_FILE > $WORKDIR/stage.txt awk 'BEGIN 
 
then JMuonMCEvt f $INPUT_FILE o $INTERMEDIATE_FILE d
 
&set_variable OSCPARAMETERS_GRID_FILE
 
then echo Submitting reweighting and histogram comparison jobs to nikhef stbc batch queue
 
double f3(const double x, const double y, const double z)
3D function. 
 
fi set_array MC_MERGE_FILES(find ${WORKDIR}-maxdepth 1-name"*.merge.root") if(($
 
static JNullStream null
Null I/O stream. 
 
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
 
set_variable REWEIGHTING_INPUTS_FILE
 
#define DEBUG(A)
Message macros.